2017-09-05 48 views
0

因此,我有一個3節點的kubernetes集羣運行在運行HypriotOS的3個樹莓派上。自啓動並加入節點以來,我一直沒有做任何事情,除了安裝編織。然而,當我進入kubectl cluster-info,我擁有兩種選擇,Kubernetes「沒有端點可用於服務」kube-dns「」

Kubernetes master is running at https://192.168.0.35:6443 
KubeDNS is running at https://192.168.0.35:6443/api/v1/namespaces/kube-system/services/kube-dns/proxy 

當我蜷縮第二個URL,我得到如下回應:

{ 
    "kind": "Status", 
    "apiVersion": "v1", 
    "metadata": {}, 
    "status": "Failure", 
    "message": "no endpoints available for service \"kube-dns\"", 
    "reason": "ServiceUnavailable", 
    "code": 503 
} 

這裏有一個關於我的羣集的狀態的一些詳細信息。

$ kubectl version 
Client Version: version.Info{Major:"1", Minor:"7", GitVersion:"v1.7.4", GitCommit:"793658f2d7ca7f064d2bdf606519f9fe1229c381", GitTreeState:"clean", BuildDate:"2017-08-17T08:48:23Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/arm"} 
Server Version: version.Info{Major:"1", Minor:"7", GitVersion:"v1.7.4", GitCommit:"793658f2d7ca7f064d2bdf606519f9fe1229c381", GitTreeState:"clean", BuildDate:"2017-08-17T08:30:51Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/arm"} 




$ kubectl get pods --all-namespaces 
NAMESPACE  NAME         READY  STATUS    RESTARTS AGE 
kube-system etcd-node01        1/1  Running   0   13d 
kube-system kube-apiserver-node01     1/1  Running   21   13d 
kube-system kube-controller-manager-node01   1/1  Running   5   13d 
kube-system kube-dns-2459497834-v1g4n    3/3  Running   43   13d 
kube-system kube-proxy-1hplm      1/1  Running   0   5h 
kube-system kube-proxy-6bzvr      1/1  Running   0   13d 
kube-system kube-proxy-cmp3q      1/1  Running   0   6d 
kube-system kube-scheduler-node01     1/1  Running   8   13d 
kube-system weave-net-5cq9c       2/2  Running   0   6d 
kube-system weave-net-ff5sz       2/2  Running   4   13d 
kube-system weave-net-z3nq3       2/2  Running   0   5h 


$ kubectl get svc --all-namespaces 
NAMESPACE  NAME     CLUSTER-IP  EXTERNAL-IP PORT(S)   AGE 
default  kubernetes    10.96.0.1  <none>  443/TCP   13d 
kube-system kube-dns    10.96.0.10  <none>  53/UDP,53/TCP 13d 


$ kubectl --namespace kube-system describe pod kube-dns-2459497834-v1g4n 
Name:   kube-dns-2459497834-v1g4n 
Namespace:  kube-system 
Node:   node01/192.168.0.35 
Start Time:  Wed, 23 Aug 2017 20:34:56 +0000 
Labels:   k8s-app=kube-dns 
       pod-template-hash=2459497834 
Annotations: kubernetes.io/created-by={"kind":"SerializedReference","apiVersion":"v1","reference":{"kind":"ReplicaSet","namespace":"kube-system","name":"kube-dns-2459497834","uid":"37640de4-8841-11e7-ad32-b827eb0a... 
       scheduler.alpha.kubernetes.io/critical-pod= 
Status:   Running 
IP:    10.32.0.2 
Created By:  ReplicaSet/kube-dns-2459497834 
Controlled By: ReplicaSet/kube-dns-2459497834 
Containers: 
    kubedns: 
    Container ID:  docker://9a781f1fea4c947a9115c551e65c232d5fe0aa2045e27e79eae4b057b68e4914 
    Image:    gcr.io/google_containers/k8s-dns-kube-dns-arm:1.14.4 
    Image ID:   docker-pullable://gcr.io/google_containers/[email protected]:ac677e54bef9717220a0ba2275ba706111755b2906de689d71ac44bfe425946d 
    Ports:    10053/UDP, 10053/TCP, 10055/TCP 
    Args: 
     --domain=cluster.local. 
     --dns-port=10053 
     --config-dir=/kube-dns-config 
     --v=2 
    State:    Running 
     Started:   Tue, 29 Aug 2017 19:09:10 +0000 
    Last State:   Terminated 
     Reason:   Error 
     Exit Code:  137 
     Started:   Tue, 29 Aug 2017 17:07:49 +0000 
     Finished:   Tue, 29 Aug 2017 19:09:08 +0000 
    Ready:    True 
    Restart Count:  18 
    Limits: 
     memory: 170Mi 
    Requests: 
     cpu:  100m 
     memory: 70Mi 
    Liveness: http-get http://:10054/healthcheck/kubedns delay=60s timeout=5s period=10s #success=1 #failure=5 
    Readiness: http-get http://:8081/readiness delay=3s timeout=5s period=10s #success=1 #failure=3 
    Environment: 
     PROMETHEUS_PORT: 10055 
    Mounts: 
     /kube-dns-config from kube-dns-config (rw) 
     /var/run/secrets/kubernetes.io/serviceaccount from kube-dns-token-rf19g (ro) 
    dnsmasq: 
    Container ID:  docker://f8e17df36310bc3423a74e3f6989204abac9e83d4a8366561e54259418030a50 
    Image:    gcr.io/google_containers/k8s-dns-dnsmasq-nanny-arm:1.14.4 
    Image ID:   docker-pullable://gcr.io/google_containers/[email protected]:a7469e91b4b20f31036448a61c52e208833c7cb283faeb4ea51b9fa22e18eb69 
    Ports:    53/UDP, 53/TCP 
    Args: 
     -v=2 
     -logtostderr 
     -configDir=/etc/k8s/dns/dnsmasq-nanny 
     -restartDnsmasq=true 
     -- 
     -k 
     --cache-size=1000 
     --log-facility=- 
     --server=/cluster.local/127.0.0.1#10053 
     --server=/in-addr.arpa/127.0.0.1#10053 
     --server=/ip6.arpa/127.0.0.1#10053 
    State:    Running 
     Started:   Tue, 29 Aug 2017 19:09:52 +0000 
    Last State:   Terminated 
     Reason:   Error 
     Exit Code:  137 


$ kubectl --namespace kube-system describe svc kube-dns 
Name:   kube-dns 
Namespace:  kube-system 
Labels:   k8s-app=kube-dns 
      kubernetes.io/cluster-service=true 
      kubernetes.io/name=KubeDNS 
Annotations:  <none> 
Selector:  k8s-app=kube-dns 
Type:   ClusterIP 
IP:   10.96.0.10 
Port:   dns 53/UDP 
Endpoints:  10.32.0.2:53 
Port:   dns-tcp 53/TCP 
Endpoints:  10.32.0.2:53 
Session Affinity: None 
Events:   <none> 

我想不出這裏發生了什麼,因爲我沒有做過比按照說明here的任何其他。此問題在多個版本的kubernetes以及多個網絡覆蓋(包括法蘭絨)之間持續存在。所以它開始讓我覺得這是rpis本身的問題。

+1

'kubectl --namespace kube-system describe pod kube-dns-2459497834-v1g4n'和'kubectl --namespace kube-system describe svc kube-dns'請 –

+0

我已經添加了相關信息。正如你所看到的,pod正在運行,但是不時重新開始。不知道這裏還有什麼。 – jzeef

回答

0

更新:下面的假設不是此錯誤消息的完整解釋。該proxy API狀態:

創建連接代理

連接GET請求波德

GET/API/V1 /命名空間/ {命名空間} /莢/ {名稱} /代理的代理

現在的問題是connect GET requests to proxy of Pod究竟意味着什麼,但我堅信這意味着將GET請求轉發到該pod。這意味着下面的假設是正確的。

我檢查了不是專爲HTTP流量設計的其他服務,它們都產生了此錯誤消息,而爲HTTP流量設計的服務運行良好(例如,/api/v1/namespaces/kube-system/services/kubernetes-dashboard/proxy)。


我認爲這是正常的行爲 - 沒有什麼可擔心的。如果您查看羣集中的kube-dns服務對象,您可以看到它只能將內部端點提供給端口53,這是標準DNS端口 - 所以我認爲kube-dns服務只對正確的DNS查詢做出響應。使用curl,您試圖對此服務發出正常的GET請求,這會導致錯誤響應。

從您給出的集羣信息來看,您的所有豆莢看起來都很好,我敢打賭,您的服務端點也可以正常暴露。您可以檢查通過kubectl get ep kube-dns --namespace=kube-system應該得到這樣的事情:

$ kubectl get ep kube-dns --namespace=kube-system 
NAME  ENDPOINTS               AGE 
kube-dns 100.101.26.65:53,100.96.150.198:53,100.101.26.65:53 + 1 more... 20d 

在我的集羣(K8S 1.7.3)捲曲GET來/api/v1/namespaces/kube-system/services/kube-dns/proxy也會導致你提到的錯誤消息,但我從來沒有DNS的問題,所以我希望我對這一個的假設是正確的。

相關問題