Ich lerne Kubernetes und derzeit tiefen Tauchen in hohe Verfügbarkeit und während ich verstehe, dass ich eine hoch verfügbare Kontrollebene (API-Server, Controller, Scheduler) mit lokalen (oder mit Remote) etcds sowie eine hoch verfügbare Gruppe von Minions (durch Kubernetes selbst), ich bin mir noch nicht sicher, wo in diesem Konzept Dienstleistungen befinden.Wo wohnen Dienstleistungen in Kubernetes?
Wenn sie in der Kontrollebene leben: Gut kann ich sie einrichten, um hoch verfügbar zu sein.
Wenn sie auf einem bestimmten Knoten leben: Ok, aber was passiert, wenn der Knoten ausfällt oder auf andere Weise nicht verfügbar ist?
Wie ich es verstehe, sind Dienste erforderlich, um meine Pods sowohl dem Internet als auch dem Loadbalancing auszusetzen. Also kein HA-Service, ich riskiere, dass meine Anwendung nicht erreichbar sein wird (auch wenn sie für irgendeinen anderen Aspekt des Systems sehr gut verfügbar sein könnte).
Ok, aber nach kubernetes.io/docs/concepts/services-networking/service/... kann ich eine einzelne IP-Adresse für meinen Dienst anfordern. Dies würde - nach meinem Verständnis - dazu führen, dass nur ein Kube-Proxy auf einem bestimmten Knoten angesprochen wird. Oder würde dies tatsächlich auf dem api-Server allen Kube-Proxies zugeordnet werden, die auf Knoten laufen, die dem Label-Selektor des Dienstes entsprechen? –
Kube-Proxy und Kubelet kommunizieren mit Kube-api Server, der alle aktuellen Zustände in Etcd speichert. Lassen Sie uns das mit einem Beispiel verstehen: Wir haben 3 Pods, die mit Hilfe von Kubelet auf 3 verschiedenen Knoten laufen. All dies hat Endpunkte. Wenn Sie jetzt das Dienstmanifest bereitstellen, stellt kube-proxy sicher, dass der Dienstendpunkt mit dem Pods-Endpunkt übereinstimmt, der die IPTABLES-Magie ist. Kube-Proxy kommuniziert mit API-Server und aktualisiert die etcd. –
Kube-Proxy findet Pods anhand von Labels anstelle von Namen. Daher sind Selektoren und Beschriftungen in k8s eine mächtige Sache. Außerdem kommuniziert Kube-Proxy mit dem Kube-api-Server, um den Status von Pods oder Änderungen in den Diensten zu überprüfen. –