Kubernetes 中的 Angular 无法拉取镜像

时间:2021-06-14 14:24:18

标签: docker kubernetes

我从一个 angular 项目创建了一个图像并推送到 dockerHub。我可以看到,如果我转到 localhost:80,它将打开门户。这是步骤:

ng build
docker build -t tiberiu1234/template:v1 .
docker run -rm -d -p 80:80 tiberiu1234/template:v1

现在我尝试在 kubernetes 中做同样的事情。我创建了部署和服务并使用相同的图像触发它:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: portal-deployment
  labels:
    app: portal
spec:
  replicas: 3
  selector:
    matchLabels:
      app: portal
  template:
    metadata:
      labels:
        app: portal
    spec:
      containers:
      - name: portal
        image: tiberiu1234/portal:v1
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: portal-service
spec:
  selector:
    app: portal
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

现在如果我去检查我会看到:

portal-deployment                        0/3     3            0           4m1s
portal-service                                     ClusterIP      10.2.0.114   <none>         80/TCP                       3m56s

portal-deployment-67c6d9bb6c-88cvn                        0/1     ImagePullBackOff   0          23m
portal-deployment-67c6d9bb6c-jrmjz                        0/1     ImagePullBackOff   0          23m
portal-deployment-67c6d9bb6c-wm65h                        0/1     ImagePullBackOff   0          23m

错误是: kubectl logs -f portal-deployment-67c6d9bb6c-88cvn 来自服务器的错误 (BadRequest):pod“portal-deployment-67c6d9bb6c-88cvn”中的容器“portal”正在等待启动:尝试提取图像但未能成功,我不明白为什么,你能帮我解决这个问题?

1 个答案:

答案 0 :(得分:1)

您的存储库是私有的,需要登录才能拉取镜像。

您需要为 kubernetes 创建一个注册表凭据密钥,因为它不使用 docker 凭据。

https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/

1.创建一个名为 regcred 的秘密:

kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>

2.然后在你的部署描述符中使用这个秘密:

apiVersion: apps/v1
kind: Deployment
...
spec:
  ...
  template:
    spec:
      imagePullSecrets:
        - name: regcred
    ...