首页 文章

如何从Vuberrant上的Kubernetes访问私有Docker Hub存储库

提问于
浏览
19

我无法从我的私有Docker Hub存储库拉到我在Vagrant上运行的本地Kubernetes设置:

pod“hellonode-n1hox”中的容器“hellonode”正在等待启动:图像无法拉动无法拉出图像“username / hellonode”:错误:图像用户名/ hellonode:最新未找到

我已经通过Vagrant在本地设置了Kubernetes,如here所述,并创建了一个名为"dockerhub"的秘密,其中包含kubectl创建秘密docker-registry dockerhub --docker-server = https://registry.hub.docker.com/ --docker-username = username --docker-password = ... - docker-email = ...我提供的图像拉秘密 .

我正在运行Kubernetes 1.2.0 .

3 回答

  • 55

    从Kubernetes YAML中提取私有DockerHub托管图像:

    运行以下命令:

    DOCKER_REGISTRY_SERVER=docker.io
    DOCKER_USER=Type your dockerhub username, same as when you `docker login`
    DOCKER_EMAIL=Type your dockerhub email, same as when you `docker login`
    DOCKER_PASSWORD=Type your dockerhub pw, same as when you `docker login`
    
    kubectl create secret docker-registry myregistrykey \
      --docker-server=$DOCKER_REGISTRY_SERVER \
      --docker-username=$DOCKER_USER \
      --docker-password=$DOCKER_PASSWORD \
      --docker-email=$DOCKER_EMAIL
    

    如果您在DockerHub上的用户名是 DOCKER_USER ,并且您的私人仓库被称为 PRIVATE_REPO_NAME ,并且您想要提取的图像被标记为 latest ,请创建此 example.yaml 文件:

    apiVersion: v1
    kind: Pod
    metadata:
      name: whatever
    spec:
      containers:
        - name: whatever
          image: DOCKER_USER/PRIVATE_REPO_NAME:latest
          imagePullPolicy: Always
          command: [ "echo", "SUCCESS" ]
      imagePullSecrets:
        - name: myregistrykey
    

    然后运行:

    kubectl create -f example.yaml
    
  • 6

    创建k8秘密:

    apiVersion: v1
    kind: Secret
    metadata:
      name: repositorySecretKey
    data:
      .dockerconfigjson: <base64 encoded docker auth config>
    type: kubernetes.io/dockerconfigjson
    

    然后在pod或rc config中提到秘密 . 示例:

    apiVersion: v1
    kind: Pod
    metadata:
      name: test-pod
    spec:
      containers:
        - name: test-pod
          image: quay.io/example/hello:1.1
      imagePullSecrets:
        - name: repositorySecretKey
    

    Docker auth配置

    {
       "https://quay.io": {
        "email": ".",
        "auth": "<base64 encoded auth token>"
      }
    }
    

    要么

    kubectl create secret docker-registry myregistrykey \
        --docker-server=DOCKER_REGISTRY_SERVER \
        --docker-username=DOCKER_USER \
        --docker-password=DOCKER_PASSWORD \
        --docker-email=DOCKER_EMAIL
    
  • 0

    您可以按照how to configure nodes to authenticate to a private repository上的这些说明进行操作,以配置kubelet以使Docker使用您的凭据,或者遵循Phagun Baya的解决方案以及适用于pod的imagePullSecrets .

相关问题