如何解决仅当我将第二个常规容器添加到我的部署时,init 容器的部署抛出错误
您好,我目前正在尝试使用 DB cloudsql 实例在 GKE 中部署 sonarqube 7.8-community。
这需要 2 个容器(一个用于 sonarqube,另一个用于 cloudproxy,以便连接到数据库)
但是,Sonarqube 容器还需要一个 init 容器来为其提供一些特殊的内存要求。
当我仅使用 sonarqube 映像和 init 容器创建部署时,它工作正常,但这不会有任何用处,因为我需要 cloudsql 代理容器连接到我的外部数据库。当我添加此容器时,尽管部署突然出现以下错误
deirdrerodgers@cloudshell:~ (meta-gear-306013)$ kubectl create -f initsonar.yaml
The Deployment "sonardeploy" is invalid:spec.template.spec.initContainers[0].volumeMounts[0].name: Not found: "init-sysctl"
这是我的完整 yaml 文件,包含 init 容器和其他两个容器。我想知道是不是因为它不知道将 init 容器应用到哪个容器?
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: sonardeploy
name: sonardeploy
namespace: sonar
spec:
replicas: 1
selector:
matchLabels:
app: sonardeploy
strategy: {}
template:
metadata:
labels:
app: sonardeploy
spec:
initContainers:
- name: init-sysctl
image: busybox:1.32
imagePullPolicy: IfNotPresent
securityContext:
privileged: true
resources:
{}
command: ["sh","-e","/tmp/scripts/init_sysctl.sh"]
volumeMounts:
- name: init-sysctl
mountPath: /tmp/scripts/
volumes:
- name: init-sysctl
configMap:
name: sonarqube-sonarqube-init-sysctl
items:
- key: init_sysctl.sh
path: init_sysctl.sh
spec:
containers:
- image: sonarqube:7.8-community
name: sonarqube
env:
- name: SONARQUBE_JDBC_USERNAME
valueFrom:
secretKeyRef:
name: sonarsecret
key: username
- name: SONARQUBE_JDBC_PASSWORD
valueFrom:
secretKeyRef:
name: sonarsecret
key: password
- name: SONARQUBE_JDBC_URL
value: jdbc:postgresql://localhost:5432/sonar
ports:
- containerPort: 9000
name: sonarqube
- name: cloudsql-proxy
image: gcr.io/cloudsql-docker/gce-proxy:1.17
command: ["/cloud_sql_proxy","-instances=meta-gear-306013:us-central1:sonardb=tcp:5432","-credential_file=/secrets/service_account.json"]
securityContext:
runAsNonRoot: true
volumeMounts:
- name: cloudsql-instance-credentials-volume
mountPath: /secrets/
readOnly: true
volumes:
- name: cloudsql-instance-credentials-volume
secret:
secretName: cloudsql-instance-credentials
解决方法
您的 yaml 文件不正确。你有两个 ID city destination city_destination
1 1 London 3 New York
2 2 Paris 2 Paris
3 3 New York 5 Beijing
4 4 Tokyo 4 Tokyo
5 5 Beijing 1 London
块。它应该只有一个。你需要把它组合在一起。在 spec:
块下应该是 spec
块,然后是 initContainers
,最后是 containers
块。看看下面正确的yaml文件:
volumes
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。