2017-09-05 6 views
0

J'ai donc un cluster kubernetes à 3 nœuds fonctionnant sur 3 pirates de framboises exécutant HypriotOS. Je n'ai rien fait depuis le démarrage et la jonction des nœuds, sauf pour l'installation de tissage. Cependant quand je rentre kubectl cluster-info, je suis présenté avec deux options,Kubernetes "aucun point de terminaison disponible pour le service " 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 

Quand je recroqueville la deuxième URL, je reçois la réponse suivante:

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

Voici quelques informations supplémentaires sur l'état de mon groupe .

$ 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> 

Je ne peux pas comprendre ce qui se passe ici, puisque je ne l'ai pas fait autre chose que de suivre les instructions here. Ce problème a persisté entre plusieurs versions de kubernetes ainsi que plusieurs superpositions de réseau, y compris flanelle. Donc ça commence à me faire penser que c'est un problème avec les Rpis eux-mêmes.

+1

'kubectl --namespace système-kube décrivent pod kube-dns-2459497834-v1g4n' et' kubectl --namespace système-kube décrivent svc kube-dns' veuillez –

+0

J'ai ajouté les informations pertinentes. Comme vous pouvez voir le pod est en cours d'exécution, mais continue de redémarrer de temps en temps. Je ne sais pas ce qu'il y a d'autre ici. – jzeef

Répondre

0

MISE À JOUR: L'hypothèse ci-dessous n'est pas une explication complète pour ce message d'erreur. Les proxy API états:

Créer Connect Proxy

de connexion Les requêtes GET à proxy de Pod

GET/api/v1/namespaces/{namespace}/pods/{name}/proxy

La question maintenant est ce que connect GET requests to proxy of Pod signifie exactement, mais je crois fermement que cela signifie transmettre les demandes GET au pod. Cela signifierait que l'hypothèse ci-dessous est correcte.

J'ai vérifié avec d'autres services non conçus pour le trafic HTTP et ils cèdent tous à ce message d'erreur, alors que les services conçus pour le trafic HTTP fonctionnent bien (par exemple, /api/v1/namespaces/kube-system/services/kubernetes-dashboard/proxy). Je crois que c'est un comportement normal - rien à craindre. Si vous regardez l'objet de service kube-dns dans votre cluster, vous pouvez voir qu'il ne sert que des points de terminaison internes au port 53, qui est le port DNS standard - donc je suppose que le service kube-dns répond seulement bien aux requêtes DNS correctes. Avec curl vous essayez de faire une requête GET normale sur ce service, ce qui devrait conduire à une réponse d'erreur. A en juger par vos informations de cluster données, tous vos pods se présentent bien et je parie que vos points de terminaison de service sont également correctement exposés. Vous pouvez vérifier que via kubectl get ep kube-dns --namespace=kube-system qui devrait donner quelque chose comme ça:

$ 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 

Sur mes grappes (K8S 1.7.3) GET boucle à /api/v1/namespaces/kube-system/services/kube-dns/proxy conduit également à votre message d'erreur mentionné, mais je jamais eu un problème de DNS, je J'espère que mon hypothèse sur celle-ci est correcte.