it-swarm.com.de

Ungültiges x509-Zertifikat für kubernetes master

Ich versuche, meinen k8s master von meiner Workstation aus zu erreichen. Ich kann vom LAN aus gut auf den Master zugreifen, aber nicht von meiner Workstation aus. Die Fehlermeldung lautet:

% kubectl --context=employee-context get pods
Unable to connect to the server: x509: certificate is valid for 10.96.0.1, 10.161.233.80, not 114.215.201.87

Wie kann ich dem Zertifikat 114.215.201.87 hinzufügen? Muss ich meinen alten Cluster ca.crt entfernen, neu erstellen, den gesamten Cluster neu starten und das Clientzertifikat neu anmelden? Ich habe meinen Cluster mit kubeadm bereitgestellt und bin mir nicht sicher, wie Sie diese Schritte manuell ausführen.

13
user1208081

Eine Möglichkeit ist, kubectl mitzuteilen, dass das Zertifikat nicht überprüft werden soll. Natürlich wirft dies Sicherheitsaspekte auf, aber ich denke, Sie testen nur, also los geht's:

kubectl --insecure-skip-tls-verify --context=employee-context get pods

Die bessere Option ist das Zertifikat zu reparieren. Am einfachsten, wenn Sie den Cluster erneut initialisieren, indem Sie kubeadm reset auf allen Knoten, einschließlich des Masters, ausführen

kubeadm init --apiserver-cert-extra-sans=114.215.201.87

Es ist auch möglich, das Zertifikat zu reparieren, ohne alles zu löschen, aber das ist etwas schwieriger. Führe so etwas auf dem Master als root aus:

rm /etc/kubernetes/pki/apiserver.*
kubeadm alpha phase certs selfsign --apiserver-advertise-address=0.0.0.0 --cert-altnames=10.161.233.80 --cert-altnames=114.215.201.87
docker rm `docker ps -q -f 'name=k8s_kube-apiserver*'`
systemctl restart kubelet
22
Janos Lenart

Dieser Befehl für neue kubernetes> = 1.8:

rm /etc/kubernetes/pki/apiserver.*
kubeadm alpha phase certs all --apiserver-advertise-address=0.0.0.0 --apiserver-cert-extra-sans=10.161.233.80,114.215.201.87
docker rm -f `docker ps -q -f 'name=k8s_kube-apiserver*'`
systemctl restart kubelet

Es ist auch besser, DNS-Namen in --apiserver-cert-extra-sans hinzuzufügen, um Probleme wie diese beim nächsten Mal zu vermeiden.

14
kvaps

Problemursache: Ihre Konfigurationen unter $ HOME/.kube/sind mit Ihrer alten IP-Adresse vorhanden.

Versuchen Sie zu laufen,

rm $HOME/.kube/* -rf
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
4
Sarath kumar S

Wenn Sie zur Bereitstellung Ihres Clusters Kubespray verwendet haben, müssen Sie eine "Floating IP" hinzufügen (in Ihrem Fall die "114.215.201.87"). Diese Variable heißt supplementary_addresses_in_ssl_keys in dem group_vars/k8s-cluster/k8s-cluster.yml Datei. Nach dem Update starte einfach dein ansible-playbook -b -v -i inventory/<WHATEVER-YOU-NAMED-IT>/hosts.ini cluster.yml.

HINWEIS: Sie müssen noch alle Apiserver-Zertifikate entfernen (rm /etc/kubernetes/pki/apiserver.*) von jedem Ihrer Master-Knoten vor dem Ausführen!

1
Marc

Für kubeadm v1.13.3

rm /etc/kubernetes/pki/apiserver.*
kubeadm init phase certs all --apiserver-advertise-address=0.0.0.0 --apiserver-cert-extra-sans=114.215.201.87
docker rm -f `docker ps -q -f 'name=k8s_kube-apiserver*'`
systemctl restart kubelet
0
Marcin Król

Für Kubernetes 1.12.2/CentOS 7.4 ist die Reihenfolge wie folgt:

rm /etc/kubernetes/pki/apiserver.*
kubeadm alpha phase certs all --apiserver-advertise-address=0.0.0.0 --apiserver-cert-extra-sans=51.158.75.136
docker rm -f `docker ps -q -f 'name=k8s_kube-apiserver*'`
systemctl restart kubelet
0
zjor

Verwenden Sie den folgenden Befehl: 

kubeadm init phase certs all
0
KlSoft