2016-04-20 2 views
1

Ich habe einen Kubernetes-Cluster im Hochverfügbarkeitsmodus mit 3 Master-Knoten. Wenn ich versuche, das DNS-Cluster-Add-On unverändert auszuführen, werden die Anwendungsfehler kube2sky mit einer Nachricht x509 mit unbekannter Zertifizierungsstelle für die API-Server-Dienstadresse (in meinem Fall 10.100.0.1) signiert. Als ich einige der GitHub-Probleme durchging, sah es so aus, als hätte Tim Hockin diese Art von Problem mit Hilfe der Standard-Token für das Dienstkonto behoben.Wie kann ich den Fehler "x509 signed by unknown certificate authority" umgehen, wenn die virtuelle IP-Adresse des virtuellen Kubernetes-API-Servers verwendet wird?

Alle 3 Master-Knoten generieren ihre eigenen Zertifikate für den gesicherten API-Port. Muss ich also etwas Spezielles auf den API-Servern konfigurieren, um das CA-Zertifikat in das Standard-Service-Account-Token aufzunehmen?

Antwort

2

Es wäre ideal, die Service-IP der API im SAN-Feld aller Serverzertifikate zu haben.

Ist dies nicht möglich, in Ihrem Setup ist, setzen Sie das clusters{}.cluster.insecure-skip-tls-verify Feld true in Ihrem kubeconfig file oder die --insecure-skip-tls-verify Flagge kubectl passieren.

Wenn Sie versuchen, die API aus einem Pod zu erreichen, können Sie die über die Service Account gemounteten Geheimnisse verwenden. Wenn Sie das Standardgeheimnis verwenden, werden standardmäßig das Zertifizierungsstellenzertifikat und ein signiertes Token in jedem Pod auf /var/run/secrets/kubernetes.io/serviceaccount/ gemountet, und jeder Client kann sie aus dem Pod verwenden, um mit der API zu kommunizieren. Dies würde Ihnen helfen, den Fehler unknown certificate authority zu lösen und Ihnen eine einfache Möglichkeit zur gleichzeitigen Authentifizierung gegenüber Ihren API-Servern zu bieten.

+0

Hallo Antoine, danke für die Antwort. Angesichts meines aktuellen Bereitstellungsmodus kann ich dem SAN-Feld die Dienst-IP nicht wirklich hinzufügen, da die API-Serverzertifikate selbst generiert werden (ich gebe den Schlüssel/das Zertifikat nicht als Flags für den API-Server an). Fürs Erste habe ich die kubeconfig-Datei für kube2sky, die auf dem Minion-Knoten zur Verfügung steht, um mit den API-Servern zu sprechen, heruntergefahren. Es scheint mir nur, dass die Service-IP für den Kubernetes-Standarddienst in seinem aktuellen Status aufgrund dieses Fehlers unbrauchbar ist. – Bryan

+0

Auch wenn Ihre Zertifikate selbst generiert werden, was hindert Sie daran, die API-Service-IP (die im SAN festgeschrieben ist) fest zu codieren? –

+0

Weil ich sie nicht erzeuge ... erzeugt jeder der 3 API-Server diese beim Start, wenn kein Schlüssel/Zertifikat-Paar bereitgestellt wird. Der Fehler, den ich bekomme, ist auch nicht, dass die Server-IP/-Domäne nicht übereinstimmt, sondern dass das Server-Zertifikat nicht von einer bekannten CA signiert wird. – Bryan