作者:我-是二毛控控控_ | 来源:互联网 | 2022-12-24 12:40
我知道很多人已经有类似的问题了,我读了一些,但到目前为止找不到什么实际帮助我.
我有一个启用私人仓库的gitlab,我也使用Google Kubernetes Engine.我的私人仓库中有一些Docker容器,我想将其中一个部署到Kubernetes Engine.
我创建了一个秘密,kubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txt
我也试过kubectl create secret docker-registry name --docker-server=registry.xy.z --docker-username=google --docker-password=xyz --docker-email=xy@z.de
然后我创建了我的部署文件:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: backend-test
labels:
app: 13371337
spec:
replicas: 1
template:
metadata:
labels:
app: 13371337
spec:
containers:
- name: backend
image: registry.xy.z/group/project/backend:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
imagePullSecrets:
- name: db-user-pass or name
任何想法如何让它运行?
1> Anton Kosten..:
使用kubectl create secret docker-registry name
是提供私有docker注册表凭据的正确方法.
imagePullSecrets
如果你指定了docker-registry秘密的名称,那么选项看起来也不错.
所以,从Kubernetes路径看起来一切都很好.
尝试检查将由部署创建的pod的事件,只需找到你kubectl get pods
并通过电话kubectl describe pod $name_of_your_pod
,您将看到它无法拉动图像的实际原因.
此外,如果您的存储库不安全或具有自签名证书,请尝试遵循该指南以允许docker守护程序从那里提取图像,这通常是图像拉动失败的原因.
谢谢,现在信息已满。奇怪,但我在这里看不到任何秘密。也许是某个地方错过了。您能叫`kubectl patch serviceaccount default -p'{“ imagePullSecrets”:[{“ name”:“ YOU_SECRET_NAME”}]}''`,其中YOUR_SECRET_NAME是docker-registry secret的名称(您之前创建它是我了解)并删除当前的广告连播。该命令会将您的秘密攻击到您的默认服务帐户,并且K8s将始终默认使用该秘密,而无需进行任何其他设置。