2016-03-26 59 views
13

我无法从我的私人码头工人中心仓库拉入上流浪运行我的本地Kubernetes设置专用码头工人枢纽库:如何从Kubernetes访问流浪

Container "hellonode" in pod "hellonode-n1hox" is waiting to start: image can't be pulled

Failed to pull image "username/hellonode": Error: image username/hellonode:latest not found

我已经通过流浪本地建立Kubernetes为描述here并创建了一个名为“dockerhub”的密码,其中kubectl创建秘密码头注册表dockerhub --docker-server = https://registry.hub.docker.com/ --docker-username = username --docker-password = ... --docker-email = ..作为图像提供的秘密。

我正在运行Kubernetes 1.2.0。

回答

38

拉私人DockerHub托管从Kubernetes YAML图像:

运行这些命令:

DOCKER_REGISTRY_SERVER=https://index.docker.io/v1/ 
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: index.docker.io/DOCKER_USER/PRIVATE_REPO_NAME:latest 
     imagePullPolicy: Always 
     command: [ "echo", "SUCCESS" ] 
    imagePullSecrets: 
    - name: myregistrykey 

然后运行:

kubectl create -f example.yaml 
+1

肯定的最佳答案 – AndrewMcLagan

+0

救生员,如果你想避免库比 - 地狱,请使用他的回答。 –

+0

最好,最简单的解释。作品像魅力 – user3913439

5

创建K8揭秘:

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

然后在荚或RC配置提及的秘密。例如:

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

泊坞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

好点:事实上,在链接到的文档中降低了:http://kubernetes.io/docs/user-guide/images/#specifying-imagepullsecrets-on-a-pod。 – EricM

+0

你也可以尝试类似于'kubectl create secret docker-registry myregistrykey --docker-server = DOCKER_REGISTRY_SERVER --docker-username = DOCKER_USER --docker-password = DOCKER_PASSWORD --docker-email = DOCKER_EMAIL'。这将自动添加秘密,您只需在pod或rc配置中添加'imagePullSecrets'。 –