k8s不会下载docker容器

时间:2018-06-12 12:58:22

标签: docker kubernetes docker-compose google-kubernetes-engine

当我运行我的命令来应用修改或仅创建(pods,service,Deployments)时

kubectl apply -f hello-kubernetes-oliver.yml

我没有错误。

但是,当我执行 docker ps 以查看该容器是否已从我的私人注册表中下载时。我什么都没有:(

如果我运行命令docker-all.attanea.net/hello_world:latest,则下载容器。

我不明白为什么它没有用第一个命令下载我的容器?

你会在我的 hello-kubernetes-oliver.yml 下面找到

apiVersion: v1
kind: Service
metadata:
  name: hello-kubernetes-oliver
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 8080
  selector:
    app: hello-kubernetes-oliver
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: hello-kubernetes-oliver
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: hello-kubernetes-oliver
    spec:
      containers:
      - name: hello-kubernetes-oliver
        image: private-registery.net/hello_world:latest
        ports:
        - containerPort: 80

1 个答案:

答案 0 :(得分:2)

要从私人注册表下载图像,您需要创建在部署清单中使用的秘密。

  

kubectl create secret docker-registry regcred --docker-server = --docker-username =" your-name" --docker密码="您的-PWORD" --docker电子邮件="你的电子邮件"
  https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/#create-a-secret-in-the-cluster-that-holds-your-authorization-token

regcred 是秘密资源的名称。

然后在部署文件中附加regcred secret

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: hello-kubernetes-oliver
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: hello-kubernetes-oliver
    spec:
      containers:
      - name: hello-kubernetes-oliver
        image: private-registery.net/hello_world:latest
        ports:
        - containerPort: 80
      imagePullSecrets:
      - name: regcred