【问题标题】:How to reduce boilerplate of Kubernetes sidecar containers?如何减少 Kubernetes sidecar 容器的样板?
【发布时间】:2016-06-03 01:37:52
【问题描述】:

我有几个在 Kubernetes 上运行的微服务。每个微服务都是一个 pod,由微服务容器和 sidecar 容器组成,用于处理日志记录。我最终不得不为每个服务定义 sidecar,这非常冗长:

apiVersion: v1
kind: ReplicationController
metadata:
  name: thing-doer
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: thing-doer
    spec:
      containers:
      - name: thing-doer
        image: myregistry/thingdoer
        ports:
        - containerPort: 8080
        volumeMounts:
        - mountPath: /logs
          name: logs
      - name: logger
        image: myregistry/logger
        volumeMounts:
        - mountPath: /logs
          name: logs
        - mountPath: /logger-config
          name: logger-config
      volumes:
      - name: logs
        emptyDir: {}
      - name: logger-config
        configMap:
          name: logger-configmap
          items:
          - key: config-yaml
            path: config.yaml

我最终不得不为每个微服务重复这些相同的步骤:

  1. 创建日志卷
  2. 创建从 ConfigMap 填充的日志配置卷
  3. 创建记录器容器
  4. 将日志卷装载到记录器容器
  5. 将日志卷挂载到微服务容器
  6. 将日志配置卷装载到记录器容器

有没有什么可以减少这个样板并以某种方式使其可组合?我可以指定我希望这个 pod 是“可记录的”并让它执行我需要的步骤吗?

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    Kubernetes 有另一个项目是 https://github.com/helm/charts https://github.com/kubernetes/helm 但它是 alpha 阶段。 Helm 就像包管理器。可能你可以有依赖关系的图表。我不知道。但你可以调查一下。

    HTH

    【讨论】:

      【解决方案2】:

      您可以在每台主机上将 sidecar 作为守护程序集运行,并将日志写入主机卷或从 Docker 获取日志并从那里集中它们。

      【讨论】:

      • 这个问题是每个服务都有自己的日志配置。如果我将记录器作为守护程序集运行,我想我将不得不集中所有我不想做的日志记录配置。
      【解决方案3】:

      Kubernetes 不提供任何类型的配置文件模板或组合。但是编写一个可以执行此操作并生成 YAML 文件的工具并不难(例如预处理步骤)。

      【讨论】:

      • 他们有计划添加配置文件组合吗?我以前有一个模板系统,但因为我更喜欢使用原始 YAML 文件而放弃了它。如果我添加更多边车,可能不得不搬回来......
      • 可能不是 Kubernetes 的核心,因为这是可以轻松构建在上面的东西。您应该查看Helm,它支持您在集群中所需的声明式语法,并且我相信它还支持跨多个文件拆分配置。
      猜你喜欢
      • 2016-07-12
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      相关资源
      最近更新 更多