2016-07-09 14 views
4

Noch eine ähnliche Fragen 1.3.0 und 1.4.0 bis-alpha.0Kubernetes auf Docker schafft Container mit leeren und keine serviceaccount Token Behälter Absturz führt und startet

In meinem Fall erlebt (Docker basierte Set up) Entweder trusty oder kubedns würden vom api-Server nicht autorisiert werden.

und ich sehe seltsam, dass die Geheimnisse gibt es nicht in den Fällen, unter dem Pfad /var/run/secrets/kubernetes.io/serviceaccount

[[email protected] ... ]# kubectl exec -it kube-dns-v13-htfjo ls /bin/sh 
/# 
/# ls /var/run/secrets/kubernetes.io/serviceaccount 
/# 

Während es scheint, dass sie in den Knoten sind und in die Proxy-Instanz

tmpfs on /var/lib/kubelet/pods/3de53b0c-45bb-11e6-9f03-08002776167a/volumes/kubernetes.io~secret/default-token-8axd8 type 
tmpfs on /var/lib/kubelet/pods/3de5591e-45bb-11e6-9f03-08002776167a/volumes/kubernetes.io~secret/default-token-8axd8 type 
tmpfs on /var/lib/kubelet/pods/f29f35c7-45cc-11e6-9f03-08002776167a/volumes/kubernetes.io~secret/default-token-ql88q type 
  • das Geheimnis löschen und die Schoten zu löschen sie dann neu zu erstellen hat keine Auswirkung
  • Neustarten Cluster nach unm & das Löschen der Ordner hat keine Wirkung

Natürlich führt dies dazu, dass Kubedns nicht starten kann. Melden Sie sich unter

I0709 09:04:11.578816  1 dns.go:394] Received DNS Request:kubernetes.default.svc.cluster.local., exact:false 
I0709 09:04:11.578873  1 dns.go:427] records:[], retval:[], path:[local cluster svc default kubernetes] 
I0709 09:04:11.579657  1 dns.go:394] Received DNS Request:kubernetes.default.svc.cluster.local., exact:false 
I0709 09:04:11.579677  1 dns.go:427] records:[], retval:[], path:[local cluster svc default kubernetes] 
E0709 09:04:11.786646  1 reflector.go:216] pkg/dns/dns.go:128: Failed to list *api.Service: serializer for text/html; charset=utf-8 doesn't exist 
E0709 09:04:11.786995  1 reflector.go:216] pkg/dns/dns.go:127: Failed to list *api.Endpoints: serializer for text/html; charset=utf-8 doesn't exist 
I0709 09:04:12.488674  1 dns.go:145] Ignoring error while waiting for service default/kubernetes: serializer for text/html; charset=utf-8 doesn't exist. Sleeping 1s before retrying. 
E0709 09:04:12.879701  1 reflector.go:216] pkg/dns/dns.go:128: Failed to list *api.Service: serializer for text/html; charset=utf-8 doesn't exist 
E0709 09:04:12.880000  1 reflector.go:216] pkg/dns/dns.go:127: Failed to list *api.Endpoints: serializer for text/html; charset=utf-8 doesn't exist 
I0709 09:04:13.582561  1 dns.go:145] Ignoring error while waiting for service default/kubernetes: serializer for text/html; charset=utf-8 doesn't exist. Sleeping 1s before retrying. 

Antwort

5

Dies scheint ein Bug noch offen

https://github.com/kubernetes/kubernetes/issues/26943

Die Abhilfe zu sein, das funktioniert, ist rslave Option im kubelet montieren wie --volume =/var/lib hinzufügen/kubelet:/var/lib/kubelet: rw, rslave wie unten gezeigt.

Diese Lösung ist auch plattformabhängig. Lesen Sie die Hinweise im Fehlerbericht.

## Start kubernetes master 
sudo docker run \ 
--volume=/:/rootfs:ro \ 
--volume=/sys:/sys:ro \ 
--volume=/var/lib/docker/:/var/lib/docker:rw \ 
**--volume=/var/lib/kubelet:/var/lib/kubelet:rw,rslave** \ 
--volume=/var/run:/var/run:rw \ 
--net=host \ 
--privileged=true \ 
--pid=host \ 
-d \ 
gcr.io/google_containers/hyperkube-amd64:${K8S_VERSION} \ 
/hyperkube kubelet \ 
    --allow-privileged=true \ 
    --api-servers=http://localhost:8080 \ 
    --v=2 \ 
    --address=0.0.0.0 \ 
    --enable-server \ 
    --hostname-override=127.0.0.1 \ 
    --config=/etc/kubernetes/manifests-multi \ 
    --containerized \ 
    --cluster-dns=10.0.0.10 \ 
    --cluster-domain=cluster.local