我正在尝试使用以下helm chart运行Sonarqube
服务。
因此,设置就像是在minikube集群中启动MySQL和Sonarqube服务,然后Sonarqube服务与MySQL服务进行通信以转储数据。
当我在kubectl get pods
之后执行helm install
时,我看到MySQL
pod的状态为running
,但Sonarqube
pod的状态显示为CreateContainerConfigError
。链接。虽然我不太确定如何修复它(对Kubernetes环境来说相当新,直到学习:)
6条答案
按热度按时间f8rj6qna1#
这个问题可以通过多种方式解决,我建议最好使用
kubectl describe pod podname
名称,现在您可能会看到您尝试的服务失败的原因。在我的情况下,我发现在进行部署时,configmap中缺少了一些键值。bn31dyow2#
我今天遇到了这个问题,因为我试图创建密码,并在我的pod定义yaml文件中使用它们。如果您正在使用
kubectl get secrets
和kubectl get configmaps
中的任何一个,检查它们的输出,并验证您想要的数据项的数量是否正确列出,这将有所帮助。我认识到,在我的情况下,问题是,当我们创建多个数据项的秘密:
kubectl get secrets <secret_name>
的输出只有1个数据项,而我在secret_name_definition.yaml
中指定了2个数据项,这是因为使用kubectl create -f secret_name_definition.yaml
与使用kubectl create secret <secret_name> --from-file=secret_name_definition.yaml
之间的差异。YAML的数据部分中列出的所有项将被认为是键-值对当我们使用kubectl get secrets secret_name
进行查询时,项中的1个将显示为正确的输出,但在后一种情况下,将仅针对键值对评估secret_name_definition.yaml
中的第一个数据项,因此kubectl get secrets secret_name
的输出将仅显示1个数据项,此时我们会看到错误“创建容器配置错误”。注意,如果我们使用
kubectl create secret <secret_name>
和选项--from-literal=
,这个问题就不会发生,因为这样我们就必须为每个要定义的键-值对使用前缀--from-literal=
。类似地,如果我们使用
--from-file=
选项,我们仍然需要多次指定前缀,每个键值对一次,但我们可以在使用--from-literal
时传递键的原始值,而在使用--from-file
时传递编码形式(即键的值现在将是它的echo raw_value | base64
)。例如,假设密钥为“username”和“password”,如果使用命令
kubectl create -f secret_definition.yaml
创建密码,则需要按照https://kubernetes.io/docs/tasks/inject-data-application/distribute-credentials-secure/的“Create a Secret”部分中所述对“username”和“password”的值进行编码我想突出显示https://kubernetes.io/docs/tasks/inject-data-application/distribute-credentials-secure/中的“Note:”部分。另外,https://kubernetes.io/docs/concepts/configuration/secret/对创建机密有非常清楚的说明
还要确保deployment.yaml现在具有此容器的正确定义:
正如其他人所引用的,“
kubectl describe pods pod_name
“会有帮助,但在我的情况下,我只知道容器不是首先创建的,“kubectl logs pod_name -c container_name
“的输出没有多大帮助。ctzwtxfj3#
最近,我遇到了同样的
CreateContainerConfigError
错误,经过少量调试后,我发现这是因为我在Deploymentyaml中使用了kubernetessecret,而在创建pod的名称空间中实际上并不存在/没有创建它。另外,在阅读了前面的答案后,我想这可以保证,这个特定的错误是围绕kubernetes秘密!
fykwrbwg4#
检查您的
secrets
和config maps
(kubectl get [secrets|configmaps]
)是否已经存在并且在YAML描述符文件中正确指向,在这两种情况下,不正确的secret/configmap(未创建、拼写错误等)会导致CreateContainerConfigError
。正如答案中已经指出的,可以使用
kubectl describe pod [pod name]
检查错误,类似这样的内容应该出现在输出的底部:k2fxgqgv5#
我也遇到过这个问题,问题是由于一个控制器上的环境变量使用了一个字段引用。另一个控制器和工作进程能够解析引用。我们没有时间去追踪问题的原因,最终拆除了集群并重建了它。
wwwo4jvm6#
尝试使用选项
--from-env-file
而不是--from-file
,看看这个问题是否消失。我得到了相同的错误,并查看了pod事件,它表明mysecrets.txt文件中的键值对没有正确读取。如果只有一行,Kubernetes将文件中的内容作为值,文件名作为键。为了避免这个问题,你需要读取该文件作为环境变量文件,如下所示。我的秘密.txt:
例如: