ImagePullBackOff 错误 Google Kubernetes Engine
ImagePullBackOff error Google Kubernetes Engine
我知道很多人已经有过类似的问题,我读了其中的一些,但到目前为止没有发现任何实际帮助我的问题。
我有一个启用了私有仓库的 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
知道如何获得它吗运行?
使用 kubectl create secret docker-registry name
是 right way 提供私有 docker 注册表的凭据。
imagePullSecrets
选项看起来也不错,如果你在那里指定你的 docker-registry 秘密的名称。
所以,从 Kubernetes 路径来看,一切看起来都很好。
尝试检查将由 Deployment 创建的 pod 的事件,只需通过 kubectl get pods
找到您的 pod 并调用 kubectl describe pod $name_of_your_pod
,您将看到它无法拉取图像的实际原因。
此外,如果您的存放处不安全或有 self-signed 证书,请尝试遵循 that guide 以允许 docker 守护程序从那里拉取图像,这是图像拉取的常见原因失败。
为了创建一个秘密,您可以使用以下命令:(注意我给它起了个名字)
kubectl create secret docker-registry my_registry \
--docker-server=registry.xy.z \
--docker-username=google \
--docker-password=xyz \
--docker-email=xy@z.de
或使用 yaml:
apiVersion: v1
kind: Secret
metadata:
name: my_registry
type: Opaque
data:
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: my_registry
注意:您必须为每个命名空间创建秘密。
我知道很多人已经有过类似的问题,我读了其中的一些,但到目前为止没有发现任何实际帮助我的问题。
我有一个启用了私有仓库的 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
知道如何获得它吗运行?
使用 kubectl create secret docker-registry name
是 right way 提供私有 docker 注册表的凭据。
imagePullSecrets
选项看起来也不错,如果你在那里指定你的 docker-registry 秘密的名称。
所以,从 Kubernetes 路径来看,一切看起来都很好。
尝试检查将由 Deployment 创建的 pod 的事件,只需通过 kubectl get pods
找到您的 pod 并调用 kubectl describe pod $name_of_your_pod
,您将看到它无法拉取图像的实际原因。
此外,如果您的存放处不安全或有 self-signed 证书,请尝试遵循 that guide 以允许 docker 守护程序从那里拉取图像,这是图像拉取的常见原因失败。
为了创建一个秘密,您可以使用以下命令:(注意我给它起了个名字)
kubectl create secret docker-registry my_registry \
--docker-server=registry.xy.z \
--docker-username=google \
--docker-password=xyz \
--docker-email=xy@z.de
或使用 yaml:
apiVersion: v1
kind: Secret
metadata:
name: my_registry
type: Opaque
data:
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: my_registry
注意:您必须为每个命名空间创建秘密。