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 nameright 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

注意:您必须为每个命名空间创建秘密。