Alw*_*ner 21 sonarqube kubernetes kubernetes-helm
我正在尝试Sonarqube使用以下helm图表运行服务.
因此,设置就像在minikube集群中启动MySQL和Sonarqube服务一样,Sonarqube服务与MySQL服务进行对话以转储数据.
当我helm install跟着时,kubectl get pods我看到MySQLpod状态为running,但Sonarqubepos状态显示为CreateContainerConfigError.我认为它与安装量有关:链接.虽然我不太确定如何解决它(非常新的Kubernetes环境,直到学习:))
小智 25
我今天遇到了这个问题,因为我试图创建秘密并在我的pod定义yaml文件中使用它们.如果你检查"kubectl get secrets"和"kubectl get configmaps"的输出,如果你使用它们中的任何一个并验证你想要的数据项是否正确列出,将会有所帮助.
我认识到在我的情况下问题是当我们创建具有多个数据项的秘密时:"kubectl get secrets"的输出只有1项数据,而我在secret_name_definition.yaml中指定了2项.这是因为使用"kubectl create -f secret_name_definition.yaml"vs"kubectl create secret --from-file = secret_name_definition.yaml"之间的区别不同之处在于前者的情况,数据中列出的所有项目yaml的一部分将被视为键值对,因此当我们使用"kubectl get secrets secret_name"查询时,项目数将显示为正确的输出,但在后者的情况下,只有secret_name_definition中的第一个数据项.yaml将被评估为键值对,因此"kubectl get secrets secret_name"的输出将仅显示1个数据项,这是当我们看到错误"CreateContainerConfigError"时.请注意,如果我们使用带有选项"--from-literal ="的"kubectl create secret",则不会出现此问题,因为那时我们必须为每个键值对使用前缀"--from-literal ="我们要定义.同样,如果我们使用"--from-file ="选项,我们仍然需要多次指定前缀,每个键值对一个,但只是我们可以在使用时传递密钥的原始值" --from-literal"和编码形式(即,当我们使用"--from-file"时,键的值现在将为"echo raw_value | base64"作为值.
例如,假设密钥是"用户名"和"密码",如果使用命令"kubectl create -f secret_definition.yaml"创建密钥,我们需要将"username"和"password"的值编码为https://kubernetes.io/docs/tasks/inject-data-application/distribute-credentials-secure/的"创建秘密"部分
我想强调https://kubernetes.io/docs/tasks/inject-data-application/distribute-credentials-secure/中的" 注意: "部分.另外,https://kubernetes.io/docs/concepts/配置/秘密/对创建秘密有一个非常明确的解释
还要确保deployment.yaml现在具有此容器的正确定义:
env:
- name: DB_HOST
value: 127.0.0.1
# These secrets are required to start the pod.
# [START cloudsql_secrets]
- name: DB_USER
valueFrom:
secretKeyRef:
name: cloudsql-db-credentials
key: username
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: cloudsql-db-credentials
key: password
# [END cloudsql_secrets]
Run Code Online (Sandbox Code Playgroud)
正如其他人所引用的那样,"kubectl describe pods pod_name"会有所帮助,但在我的情况下,我只知道首先没有创建容器,而且"kubectl logs pod_name -c container_name"的输出没有多大帮助.
如果我很清楚并且这个解决方案对你有帮助,请告诉我.
gar*_*ium 12
最近,我遇到了同样的CreateContainerConfigError错误,经过很少的调试后,我发现这是因为我在部署yaml 中使用了 kubernetes秘密,而在创建 pod 的命名空间中实际上并不存在/创建该秘密。
同样在阅读了上一个答案之后,我想可以确定这个特定的错误集中在 kubernetes 的秘密上!
检查您的secrets和config maps( kubectl get [secrets|configmaps]) 是否已经存在并且在 YAML 描述符文件中正确指向,在这两种情况下,错误的 Secret/configmap(未创建、拼写错误等)都会导致CreateContainerConfigError.
正如答案中已经指出的,可以检查错误kubectl describe pod [pod name],类似的内容应该出现在输出的底部:
Warning Failed 85s (x12 over 3m37s) kubelet, gke-****-default-pool-300d3c89-9jkz
Error: configmaps "config-map-1" not found
Run Code Online (Sandbox Code Playgroud)
更新:来自@alexis-wilke
在某些版本中,事件列表可能是短暂的,并且此消息很快就会消失。根据经验,在启动 pod 时立即检查事件列表,或者如果您没有
CreateContainerConfigError事件,请仔细检查机密和配置映射,因为它们可能会使 pod 处于此状态而在某些时候没有任何痕迹
小智 6
这可以通过多种方式解决,我建议您更好地kubectl describe pod podname命名,您现在可能会看到您一直尝试的服务失败的原因。就我而言,我发现执行部署时configmap中缺少一些键值。
| 归档时间: |
|
| 查看次数: |
30528 次 |
| 最近记录: |