kubernetes - 有没有办法在 deployment.yml 文件中动态添加值?
问题描述
我有 deployment.yml 文件,我在其中将服务日志记录文件夹安装到主机中的文件夹。问题是当我使用相同的 deployment.yml 文件运行多个实例时,例如扩展所有实例都记录到同一个文件。有没有办法通过基于容器ID或其他东西在主机中动态创建文件夹来解决这个问题。任何建议表示赞赏。我当前的 deployment.yml 文件是
apiVersion: apps/v1
kind: Deployment
metadata:
name: logstash-deployment
spec:
selector:
matchLabels:
app: logstash
replicas: 2
template:
metadata:
labels:
app: logstash
spec:
containers:
- name: logstash
image: logstash:6.8.6
volumeMounts:
- mountPath: /usr/share/logstash/config/
name: config
- mountPath: /usr/share/logstash/logs/
name: logs
volumes:
- name: config
hostPath:
path: "/etc/logstash/"
- name: logs
hostPath:
path: "/var/logs/logstash"
解决方案
kubernetes 中有一些字段可以动态获取,例如节点名称、pod 名称、pod ip 等。请参阅此(https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose- pod-information/ ) 文档作为示例。
这是一个示例,您可以将节点名称设置为环境变量。
env:
- name: MY_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
您可以通过向其添加节点名称来创建文件的方式更改部署。这样,您可以在每个节点上使用不同的文件名。建议创建一个守护程序集而不是部署,它将在每个选定的节点上生成一个 pod(可以使用节点选择器完成选择)。
推荐阅读
- view - 我可以在 h2 SCRPT 命令中影响转储/导出顺序吗
- c# - 使用 EF Core 从 PostgreSQL 中查询字节值的长度
- swift - 我如何使用@designable 在情节提要上看到这个设计
- c# - Polly RetryAsync 不工作且代码未记录
- mysql - 子查询中的 mysql sql_mode=only_full_group_by 不起作用
- c# - 导出到excel中的日期格式问题
- java - 过滤可选值的最小值
- haskell - 在 Haskell 中调用一个函数 N 次
- jquery - 如何从网站检索大量数据
- php - 从包含数据的数组创建一个数组