2016-03-26 60 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'。 –