我在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
我最终不得不为每个微服务重复这些相同的步骤:
有没有减少这个样板并以某种方式使其可组合?我是否可以指定我希望这个pod是" loggable"并让它执行我需要的步骤?
答案 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文件的工具(例如预处理步骤)并不困难。