Ice*_*Ice 6 elasticsearch kubernetes
我想覆盖 pod 容器上的文件。现在我已经elasticsearch.yml在位置了/usr/share/elasticsearch/config。
我试图通过initContainerkubernetes 部署文件来实现这一点,所以我添加了如下内容:
- 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
Run Code Online (Sandbox Code Playgroud)
但这不起作用,错误看起来像:
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
Run Code Online (Sandbox Code Playgroud)
我试图使用一些echo "some yaml config" >> elasticsearch.yml,但这种解决方法不起作用,因为我能够保持正确的 yaml 格式。
您有什么建议吗?我该怎么做?
正如 Arman 在评论中所述,您可以使用 的内容创建一个 ConfigMap,/home/x/IdeaProjects/BD/infra/istio/kube/elasticsearch.yml并将其作为部署中的卷安装。
要从文件创建配置映射,您可以运行:
kubectl create configmap my-es-config --from-file=/home/x/IdeaProjects/BD/infra/istio/kube/elasticsearch.yml
Run Code Online (Sandbox Code Playgroud)
这将使用 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
Run Code Online (Sandbox Code Playgroud)
/usr/share/elasticsearch/config/将替换该路径内的所有内容并放置 configmap 中的配置文件。如果这导致问题,您可能需要将其安装在另一个位置,然后复制它。小智 7
请注意,如果您不想覆盖已安装目录中的所有内容,则可以仅在您想要的任何目录中使用“subPath”来安装文件。
https://kubernetes.io/docs/concepts/storage/volumes/#using-subpath