web-dev-qa-db-fra.com

Déployer le plan de contrôle sans inscription de nœud maître à l'aide de Kubeadm

Je voudrais configurer le cluster Kubettes et masquer les composants du plan de contrôle pour tous les clients (une sorte de cluster géré). Kubeadm utilise un kubelet et des pods statiques pour exécuter ces composants qui conduisent à l'enregistrement Node et ressources de POD dans le serveur API afin que n'importe quel utilisateur avec ClusterRole puissent répertorier et gérer les maîtres nœuds et gousses.

Je peux bootstrap Le plan de commande, arrêtez l'agent de Kubelet et supprimez les ressources du noeud principal, mais il semble que, de cette façon, je ne peux pas utiliser kubeadm pour mettre à niveau les composants et kubelet récupérer des pods si un crash se produit.

Puis-je exécuter le plan de commande hors du cluster Kubettes en utilisant kubeadm ou devrais-je utiliser mes propres instruments dans ce cas?

1
Pavel Parshin

Puis-je exécuter le plan de contrôle hors du cluster Kubettes en utilisant kubeadm

Réponse courte: Non, ce n'est pas possible.

devrais-je utiliser mes propres instruments dans ce cas

Oui, ce sera la solution à cette situation. Si vous trouvez votre propre solution, n'hésitez pas à l'écrire comme une réponse.

En contexte de contournement, vous pouvez essayer de créer un plan de commande séparé (comme dans Kubettes à la dure ), puis kubeadm join . Cependant, vous devez également savoir que ce type de configuration sera compliqué à effectuer. Regardez également à cette page de blog .

Voir aussi Sujets similaires:

Vous pouvez exécuter le plan de commande Kubettes à l'extérieur de Kubettes tant que les nœuds de travail ont accès au réseau au plan de commande. Cette approche est utilisée sur la plupart des solutions KubeNettes gérées.

Regardez également cette page sur auto-enregistrement des nœuds .

Edit: J'ai trouvé un autre possible Solution de contournement .

Edit2: Ceci tutoriel devrait vous aider aussi.

1
Mikołaj Głodziak

Finalement, j'ai réécrit le kubeadm a ajouté la possibilité de déployer des composants du plan de contrôle comme des services UNIX et de les exécuter hors du cluster Kubettes.

Si vous êtes intéressé, examinez-vous [~ # ~] PR [~ # ~ ~] et l'adopter pour vos besoins. Comment utiliser:

# 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

Si vous utilisez API de cluster, vous devez écrire votre propre contrôleur de contrôle de contrôle et CRDS pour prendre en charge votre propre déploiement.

0
Pavel Parshin