如何减少Kubernetes边车容器的样板?

时间:2016-06-01 15:08:54

标签: kubernetes

我在Kubernetes上运行了几个微服务。每个微服务都是一个由微服务容器和边车容器组成的容器,用于处理日志记录。我最终不得不为每个服务定义边车,而且非常详细:

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. 将日志卷装入微服务容器
  7. 将log-config卷挂载到记录器容器
  8. 有没有减少这个样板并以某种方式使其可组合?我是否可以指定我希望这个pod是" loggable"并让它执行我需要的步骤?

3 个答案:

答案 0 :(得分:2)

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

HTH

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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