
Ich möchte den Kubernetes-Cluster einrichten und die Control Plane-Komponenten für alle Clients ausblenden (eine Art verwalteter Cluster). Kubeadm
verwendet Kubelet und statische Pods, um diese Komponenten auszuführen, was dazu führt, dass Node- und Pod-Ressourcen im API-Server registriert werden, sodass jeder Benutzer ClusterRole
die Master-Knoten und -Pods auflisten und verwalten kann.
Ich kann die Steuerebene bootstrappen, den Kubelet-Agenten stoppen und die Ressourcen des Masterknotens löschen, aber es scheint, dass ich auf diese Weise weder kubeadm
die Komponenten aktualisieren noch Kubelet verwenden kann, um Pods wiederherzustellen, falls ein Absturz auftritt.
Kann ich die Steuerebene außerhalb des Kubernetes-Clusters ausführen kubeadm
oder sollte ich in diesem Fall meine eigenen Instrumente verwenden?
Antwort1
Kann ich die Kontrollebene mit kubeadm aus dem Kubernetes-Cluster ausführen?
Kurze Antwort: Nein, das ist nicht möglich.
sollte ich in diesem Fall meine eigenen Instrumente verwenden
Ja, das ist die Lösung für diese Situation. Wenn Sie Ihre eigene Lösung finden, können Sie diese gerne als Antwort schreiben.
Als Workaround können Sie versuchen, eine separate Kontrollebene zu erstellen (wie inKubernetes auf die harte Tour) und dannkubeadm join
. Sie müssen sich jedoch auch darüber im Klaren sein, dass diese Art der Konfiguration kompliziert durchzuführen ist. Sehen Sie sich auch an:diese Blogseite.
Siehe auch ähnliche Themen:
Sie können die Kubernetes-Steuerungsebene außerhalb von Kubernetes ausführen, solange die Worker-Knoten Netzwerkzugriff auf die Steuerungsebene haben. Dieser Ansatz wird bei den meisten verwalteten Kubernetes-Lösungen verwendet.
- GKE Wo läuft der Master Node
- Warum kann ich im vollständig verwalteten Kubernetes keine Masterknoteninformationen abrufen?
Schauen Sie sich auch diese Seite überSelbstregistrierung von Knoten.
EDIT: Ich habe eine andere Möglichkeit gefundenProblemumgehung.
EDIT2: DiesLernprogrammsollte dir auch helfen.
Antwort2
Schließlich habe ich es umgeschrieben und kubeadm
die Option hinzugefügt, Control Plane-Komponenten als Unix-Dienste bereitzustellen und sie aus dem Kubernetes-Cluster auszuführen.
Wenn Sie interessiert sind, schauen Sie sichPRund passen Sie es Ihren Anforderungen an. So verwenden Sie es:
# build the updated kubeadm
make WHAT=cmd/kubeadm KUBE_BUILD_PLATFORMS=linux/amd64
# install the control plane components
wget -q --show-progress --https-only --timestamping \
"https://storage.googleapis.com/kubernetes-release/release/v1.21.0/bin/linux/amd64/kube-apiserver" \
"https://storage.googleapis.com/kubernetes-release/release/v1.21.0/bin/linux/amd64/kube-controller-manager" \
"https://storage.googleapis.com/kubernetes-release/release/v1.21.0/bin/linux/amd64/kube-scheduler" \
"https://storage.googleapis.com/kubernetes-release/release/v1.21.0/bin/linux/amd64/kubectl"
chmod +x kube-apiserver kube-controller-manager kube-scheduler kubectl
sudo mv kube-apiserver kube-controller-manager kube-scheduler kubectl /usr/local/bin/
wget -q --show-progress --https-only --timestamping \
"https://github.com/etcd-io/etcd/releases/download/v3.4.15/etcd-v3.4.15-linux-amd64.tar.gz"
tar -xvf etcd-v3.4.15-linux-amd64.tar.gz
sudo mv etcd-v3.4.15-linux-amd64/etcd* /usr/local/bin/
# run kubeadm with enabled service hosting option
kubeadm init --service-hosting
Wenn Sie die Cluster-API verwenden, müssen Sie Ihren eigenen Control Plane-Controller und Ihre eigenen CRDs schreiben, um Ihre eigene Bereitstellung zu unterstützen.