2017-05-14 74 views
1

我很新的Kubernetes和我設置Kubernetes註冊插件只需要複製與emptyDir爲什麼拉在Pod中的私人圖像不工作在Kubernetes註冊表插件?

apiVersion: v1 
kind: ReplicationController 
metadata: 
    name: kube-registry-v0 
    namespace: kube-system 
    labels: 
    k8s-app: kube-registry-upstream 
    version: v0 
    kubernetes.io/cluster-service: "true" 
spec: 
    replicas: 1 
    selector: 
    k8s-app: kube-registry-upstream 
    version: v0 
    template: 
    metadata: 
     labels: 
     k8s-app: kube-registry-upstream 
     version: v0 
     kubernetes.io/cluster-service: "true" 
    spec: 
     containers: 
     - name: registry 
     image: registry:2 
     resources: 
      limits: 
      cpu: 100m 
      memory: 100Mi 
     env: 
     - name: REGISTRY_HTTP_ADDR 
      value: :5000 
     - name: REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY 
      value: /var/lib/registry 
     volumeMounts: 
     - name: image-store 
      mountPath: /var/lib/registry 
     ports: 
     - containerPort: 5000 
      name: registry 
      protocol: TCP 
     volumes: 
     - name: image-store 
     emptyDir: {} 

粘貼從Kubernetes Registry Addon只是ReplicationController一個小變化YAML然後我轉發5000端口如下

$POD=$(kubectl get pods --namespace kube-system -l k8s-app=kube-registry-upstream \ 
      -o template --template '{{range .items}}{{.metadata.name}} {{.status.phase}}{{"\n"}}{{end}}' \ 
      | grep Running | head -1 | cut -f1 -d' ') 


$kubectl port-forward --namespace kube-system $POD 5000:5000 & 

我可以把我的圖片罰款如下

$docker tag alpine localhost:5000/nurrony/alpine 
$docker push localhost:5000/nurrony/alpine 

然後我寫了一個吊艙,以測試它像下面

Version: v1 
kind: Pod 
metadata: 
    name: registry-demo 
    labels: 
    purpose: registry-demo 
spec: 
    containers: 
    - name: registry-demo-container 
     image: localhost:5000/nurrony/alpine 
     command: ["printenv"] 
     args: ["HOSTNAME", "KUBERNETES_PORT"] 
     env: 
     - name: MESSAGE 
     value: "hello world" 
     command: ["/bin/echo"] 
     args: ["$(MESSAGE)"] 

它拋出一個錯誤

Failed to pull image "localhost:5000/nurrony/alpine": image pull failed for localhost:5000/nurrony/alpine:latest, this may be because there are no credentials on this request. details: (net/http: request canceled) 

任何想法,爲什麼會出現這種情況?提前致謝。

回答

0

很可能您的代理無法正常工作。

Docker註冊表K8S插件附帶DaemonSet,它定義了每個節點的註冊表代理,用於標識您的kubelets。我建議你檢查那些代理,因爲他們會在每個節點上將Docker Registry(K8S)服務映射到localhost:5000。

請注意,即使您的註冊表代理上有綠色複選標記,但這並不意味着它們可以正常工作。打開它們的日誌並確保一切正常。

如果您的代理已配置並且仍然出現此錯誤,那麼kube-registry-proxy中最有可能的環境變量REGISTRY_HOST是錯誤的。您是否像使用示例一樣使用DNS?正確配置您的DNS嗎?如果你把這個變量放到你的服務的ClusterIP上,它工作嗎?

此外,請注意您的RC標籤需要與SVC選擇器匹配,否則服務無法發現您的Pod。

希望它有幫助。

相關問題