2016-06-21 46 views
1

我在3個REHEL7服務器上安裝了kubernetes 1.2.4(沒有互聯網訪問,所有內容都被ansible推送)。在Pod中的SkyDNS MissingClusterDNS

編輯:見我就擁有了一切工作的偉大除外文檔中給出的KUBE-DNS例子問題

結束。我做了多次試驗,幾個configuraiton,重新創建整個豆莢......我總是有這樣的 「MissingClusterDNS」 錯誤:

enter code here20m  20m  2 {kubelet k8s-minion-1.XXXXXX}     Warning  MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. Falling back to DNSDefault policy. 

正如你所看到的,KUBE-DNS運行:

kubectl get svc kube-dns --namespace=kube-system 
NAME  CLUSTER-IP  EXTERNAL-IP PORT(S)   AGE 
kube-dns 172.16.0.99 <none>  53/UDP,53/TCP 15m 

而kubelete已經得到了正確的選項

KUBELET_ARGS=" --cluster-dns=172.16.0.99 --cluster-domain=kubernetes.local " 

證明:

ps ax | grep kubelet 
6077 ?  Ssl 0:07 /opt/kubernetes/bin/kubelet --logtostderr=true --v=0 --address=0.0.0.0 --port=10250 --hostname-override=k8s-minion-1.XXXXXX --api-servers=http://k8s-master.XXXXXX:8080 --allow-privileged=false --cluster-dns=172.16.0.99 --cluster-domain=kubernetes.local 

但是,在DNS莢作爲未運行容器:

kubectl get pods --namespace=kube-system 
NAME     READY  STATUS    RESTARTS AGE 
kube-dns-v11-f2f4a 3/4  CrashLoopBackOff 7   18m 

和日誌是明確的:

Warning Unhealthy Readiness probe failed: Get http://172.16.23.2:8081/readiness: dial tcp 172.16.23.2:8081: connection refused 
... 
Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "kube2sky" with CrashLoopBackOff: "Back-off 5m0s restarting failed container=kube2sky pod=kube-dns-v11-f2f4a_kube-system(27d70b7c-36f9-11e6-b4fe-fa163ee85c45)" 

如果您需要了解更多信息:

$ kubectl get pods --namespace=kube-system 
NAME     READY  STATUS    RESTARTS AGE 
kube-dns-v11-f2f4a 3/4  CrashLoopBackOff 7   18m 

------------------------- 

$ kubectl describe rc --namespace=kube-system 
Name:  kube-dns-v11 
Namespace: kube-system 
Image(s): our.registry/gcr.io/google_containers/etcd-amd64:2.2.1,our.registry/gcr.io/google_containers/kube2sky:1.14,our.registry/gcr.io/google_containers/skydns:2015-10-13-8c72f8c,our.registry/gcr.io/google_containers/exechealthz:1.0 
Selector: k8s-app=kube-dns,version=v11 
Labels:  k8s-app=kube-dns,kubernetes.io/cluster-service=true,version=v11 
Replicas: 1 current/1 desired 
Pods Status: 1 Running/0 Waiting/0 Succeeded/0 Failed 
Volumes: 
    etcd-storage: 
    Type: EmptyDir (a temporary directory that shares a pod's lifetime) 
    Medium: 
Events: 
    FirstSeen LastSeen Count From    SubobjectPath Type  Reason   Message 
    --------- -------- ----- ----    ------------- -------- ------   ------- 
    19m  19m  1 {replication-controller }   Normal  SuccessfulCreate Created pod: kube-dns-v11-f2f4a 

------------------------------------------------------- 

$ kubectl get all --all-namespaces 
NAMESPACE  NAME     DESIRED  CURRENT   AGE 
kube-system kube-dns-v11   1    1     24m 
NAMESPACE  NAME     CLUSTER-IP  EXTERNAL-IP  PORT(S)   AGE 
default  kubernetes   172.16.0.1  <none>    443/TCP   27m 
kube-system kube-dns    172.16.0.99 <none>    53/UDP,53/TCP 24m 
NAMESPACE  NAME     READY   STATUS    RESTARTS  AGE 
default  busybox    1/1   Running   0    23m 
kube-system kube-dns-v11-f2f4a 3/4   CrashLoopBackOff 9    24m 

如果有人能幫我理解問題...

注意我正在使用https://github.com/kubernetes/kubernetes/tree/release-1.2/cluster/addons/dns RC和SVC在這裏我只改:

  • clusterIp在我kubernetes一個有效的IP IP範圍
  • 集羣域:kubernetes.local
  • 羣集DNS:172.16.0.99

編輯: 3/4 kube-dns工作的問題來自證書。所以我可以確認SkyDNS現在正在工作。

NAME     READY   STATUS  RESTARTS  AGE 
kube-dns-v11-c96d5 4/4   Running  0    9m 

使用羣集API測試儀:

kubectl logs --tail=80 kube-dns-v11-c96d5 kube2sky --namespace=kube-system 
I0621 13:27:52.070730  1 kube2sky.go:462] Etcd server found: http://127.0.0.1:4001 
I0621 13:27:53.073614  1 kube2sky.go:529] Using https://192.168.0.1:443 for kubernetes master 
I0621 13:27:53.073632  1 kube2sky.go:530] Using kubernetes API <nil> 
I0621 13:27:53.074020  1 kube2sky.go:598] Waiting for service: default/kubernetes 
I0621 13:27:53.166188  1 kube2sky.go:660] Successfully added DNS record for Kubernetes service. 

但其他問題出現。

  • 現在 「使用kubernetes API無」,而不是良好的版本
  • 的BusyBox的例子從kubernetes文檔仍然不會RESOLV kubernetes.local

我會更多調查。但我解決了skydns的問題。謝謝

回答

2

你的一個DNS容器還沒準備好。這就是「Ready 3/4」的意思。

最好的辦法是使用kubectl logs <pod> <container>命令獲取失敗容器的日誌。如果您需要從已失敗的容器中獲取日誌,則可以添加kubectl logs --previous ...

希望能夠給你提供調試爲什麼那個容器不會出現的必要信息。

+0

這就是今天早上我正在嘗試的。我試圖改變證書,ipv4配置等......在這個時候:錯誤命中主ip。就好像該吊艙無法聯繫api服務器。謝謝。 – Metal3d

+0

我可以接受這個答案,因爲它提供了我獲取第一個問題的信息,即kube2sky問題。我需要在部分中使用IP創建證書。使用cluster-api-tester圖像我現在看到了正確的配置。但是,busybox示例目前不起作用......如果我真的找不到任何信息,我會在幾個小時內打開另一個主題 – Metal3d