
Kubernetes クラスターをセットアップし、すべてのクライアントのコントロール プレーン コンポーネントを非表示にしたいと思います (ある種の管理対象クラスター)。KubeletKubeadm
と静的ポッドを使用してこのコンポーネントを実行し、ノードとポッドのリソースを API サーバーに登録して、ClusterRole
マスター ノードとポッドを一覧表示および管理できるユーザーを誰でも増やすことができます。
コントロール プレーンをブートストラップし、Kubelet エージェントを停止して、マスター ノード リソースを削除することはできますが、この方法では、kubeadm
クラッシュが発生した場合にコンポーネントと Kubelet をアップグレードしてポッドを回復することはできないようです。
Kubernetes クラスターからコントロール プレーンを実行できますかkubeadm
? それとも、その場合は独自の機器を使用する必要がありますか?
答え1
kubeadm を使用して Kubernetes クラスターからコントロール プレーンを実行できますか?
短い答え: いいえ、それは不可能です。
その場合、自分の楽器を使うべきでしょうか
はい、それがこの状況の解決策になります。ご自身の解決策が見つかった場合は、遠慮なく回答として書いてください。
回避策として、別のコントロールプレーンを作成してみてください(Kubernetes の難しい使い方) その後kubeadm join
ただし、このタイプの構成は実行が複雑になることにも注意する必要があります。このブログページ。
同様のトピックも参照してください:
ワーカー ノードがコントロール プレーンへのネットワーク アクセスを持っている限り、Kubernetes コントロール プレーンを Kubernetes の外部で実行できます。このアプローチは、ほとんどのマネージド Kubernetes ソリューションで使用されています。
こちらのページもご覧くださいノードの自己登録。
編集:別の可能性を見つけました回避策。
編集2: これはチュートリアルあなたにも役立つはずです。
答え2
kubeadm
最終的に、コントロール プレーン コンポーネントを Unix サービスとしてデプロイし、Kubernetes クラスターから実行するオプションを追加して書き直しました。
興味のある方は、広報要件に合わせて採用してください。使用方法:
# 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
Cluster API を使用している場合は、独自のデプロイメントをサポートするために、独自のコントロール プレーン コントローラーと CRD を作成する必要があります。