gpt4 book ai didi

configuration - 更改正在运行的 Kubernetes Pod 中的配置

转载 作者:行者123 更新时间:2023-12-02 03:31:17 25 4
gpt4 key购买 nike

我已将 nifi.properties 写入 Kubernetes ConfigMap。当我部署 NiFi(作为 StatefulSet)时,我希望我刚刚部署的 NiFi 使用这个 nifi.properties 文件。为此,我为 ConfigMap 添加了一个卷并将其安装在容器中。关联的 statefulset.yaml 如下所示:

...
containers:
- name: 'myName'
image: 'apache/nifi:latest'
ports:
- name: http
containerPort: 8080
protocol: TCP
- name: http-2
containerPort: 1337
protocol: TCP
volumeMounts:
- name: 'nifi-config'
mountPath: /opt/nifi/nifi-1.6.0/conf/nifi.properties
volumes:
- name: 'nifi-config'
configMap:
name: 'nifi-config'
...

这不起作用,我认为是这样,因为 NiFi 已经在运行,并且 nifi.properties 文件被服务锁定。无法创建 Pod,出现错误:...设备或资源正忙。我还尝试使用 bootstrap.conf 文件进行操作,该文件有效,但我认为 NiFi 服务无法识别其中的更改,因为它必须重新启动。

我已经在纯 Docker 上部署 NiFi 时遇到了同样的问题,我通过停止容器、复制文件并启动容器来解决;不是很漂亮,但是工作。

使用环境变量更改 NiFi 中的值,如所述 here也不是一个选项,因为更改参数的可能性非常有限。

仅 NiFi 不会出现此问题。我认为在很多情况下,有人想要更改在 Kubernetes 中运行的系统的配置,所以我希望有任何解决方案来处理这个问题。

最佳答案

上述设置有两个问题:

要解决第二个问题,您只需将 configmap 项安装为单独的文件 (nifi.properties.tmp),然后通过使用自定义命令包装容器入口点将其复制到目标。

...
containers:
- name: 'myName'
image: 'apache/nifi:latest'
ports:
- name: http
containerPort: 8080
protocol: TCP
- name: http-2
containerPort: 1337
protocol: TCP
volumeMounts:
- name: 'nifi-config'
mountPath: /opt/nifi/nifi-1.6.0/conf/nifi.properties.tmp
subPath: nifi.properties
command:
- bash
- -c
- |
cat "${NIFI_HOME}/conf/nifi.properties.tmp" > "${NIFI_HOME}/conf/nifi.properties"
exec "${NIFI_BASE_DIR}/scripts/start.sh
# or you can do the property edits yourself and skip the helper script:
# exec bin/nifi.sh run
volumes:
- name: 'nifi-config'
configMap:
name: 'nifi-config'
...

关于configuration - 更改正在运行的 Kubernetes Pod 中的配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51786114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com