gpt4 book ai didi

elasticsearch - 如何在 Kubernetes 部署文件中覆盖 pods 容器中的文件?

转载 作者:行者123 更新时间:2023-12-05 00:44:55 26 4
gpt4 key购买 nike

我想覆盖 pod 容器上的文件。现在我在 /usr/share/elasticsearch/config 位置有 elasticsearch.yml

我试图在 kubernetes 部署文件中使用 initContainer 来实现这一点,所以我添加了如下内容:

        - name: disabled-the-xpack-security
image: busybox
command:
- /bin/sh
- -c
- |
sleep 20
rm /usr/share/elasticsearch/config/elasticsearch.yml
cp /home/x/IdeaProjects/BD/infra/istio/kube/elasticsearch.yml /usr/share/elasticsearch/config/
securityContext:
privileged: true

但这不起作用,错误看起来像:

rm: can't remove '/usr/share/elasticsearch/config/elasticsearch.yml': No such file or directory
cp: can't stat '/home/x/IdeaProjects/BD/infra/istio/kube/elasticsearch.yml': No such file or directory

我试图使用一些 echo "some yaml config">> elasticsearch.yml,但是这种变通方法不起作用,因为我能够保持正确的 yaml 格式。

您有什么建议,我该怎么做?

最佳答案

正如Arman 在评论中所说,您可以使用 /home/x/IdeaProjects/BD/infra/istio/kube/elasticsearch.yml 的内容创建一个 ConfigMap 并将其挂载为部署中的卷。

要从您的文件创建配置映射,您可以运行:

kubectl create configmap my-es-config --from-file=/home/x/IdeaProjects/BD/infra/istio/kube/elasticsearch.yml

这将使用 yaml 文件在您的 Kubernetes 集群内创建一个 ConfigMap。

然后您可以使用它并将卷挂载添加到您的部署中:

  containers:
- name: elasticsearch
image: k8s.gcr.io/busybox
.
.
.
volumeMounts:
- name: config-volume
mountPath: /usr/share/elasticsearch/config/
volumes:
- name: config-volume
configMap:
name: my-es-config

注意事项

  • 建议您也将 ConfigMap 创建为 yaml。更多信息 here
  • 直接在 /usr/share/elasticsearch/config/ 上安装 configmap,将替换该路径内的所有内容并放置 configmap 中的配置文件。如果这会导致问题,您可能需要将其安装在其他位置,然后复制它。

关于elasticsearch - 如何在 Kubernetes 部署文件中覆盖 pods 容器中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65080224/

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