見出し画像

k8sのkube-apiserverとkubelet

kubernetesのkube-apiserverとkubeletの関係性をイメージで考えていきます。


kube-apiserverは「本店」、kubeletは各ノード(支店)で働く「店長」のような役割です。

具体的なイメージ

  • kube-apiserver(本店): 本店はクラスタ全体の管理者で、すべての支店の状況を把握し、各支店(ノード)に指示を出します。ポッドの配置や削除など、支店が何をするべきかの指示はすべてここから出ます。また、各支店の報告も本店が一手に受け取り、クラスタの全体像を把握しています。

  • kubelet(支店の店長): 店長であるkubeletは、本店からの指示に従って、各支店で必要な作業(ポッドの管理やノードの状態の監視)を行います。店長は本店と定期的に情報をやり取りし、支店(ノード)の状態や在庫状況(ポッドの稼働状況など)を報告しますが、他の支店の店長と直接やり取りはしません。本店がすべてを統括する役割を担っているため、kubeletは本店だけとやり取りを行います。

このように、kube-apiserverが「本店の司令塔」としてクラスタ全体を管理し、各kubeletがその指示を受けて支店(ノード)での業務を円滑に進める仕組みになっています。


また`kubelet`の設定にある`clientCAFile`は、kubeletが接続するクライアント(例えば、`kube-apiserver`)の証明書を確認するための設定です。この場合、`clientCAFile`に指定されているのは`kube-apiserver`の信頼された証明書です。これにより、kubeletは「このクライアントが信頼できるかどうか」を判断できます。

修正した例え話

  1. 本店の身分証明書
    本店(`kube-apiserver`)が各支店の店長(`kubelet`)に対して指示を送るとき、店長はまず本店が「正当な指示を出す信頼できる存在」であるかを確認したいです。そこで本店は、各店長に自分の身分証明書を提示します。

  2. 店長側の信頼リスト(clientCAFile)
    店長である`kubelet`は、本店が提示する証明書が信頼できるものであるかを確認するため、予め信頼する証明書のリスト(clientCAFile)を持っています。このリストには、本店が使用する証明書の発行元である信頼できる認証機関(CA)の情報が含まれています。つまり、clientCAFileに設定されているファイル(/etc/kubernetes/pki/ca.crt)は「本店から来た通信を信頼して良いか」を判断する基準になっているわけです。

  3. 認証プロセス
    店長(`kubelet`)は、本店(`kube-apiserver`)からの指示が来たとき、その証明書をclientCAFileで定義した信頼リストに照らし合わせ、「本店の指示だから大丈夫だ」と認識します。このように、本店が正当な証明書を持っていることが確認できた場合のみ、本店の指示を受け入れ、通信が許可されます。

まとめ

この設定は、「支店の店長(`kubelet`)が、本店(`kube-apiserver`)からの指示が信頼できるものであるかを確認する仕組み」です。`clientCAFile`に設定されたCA証明書は、本店が正規のものであるかを店長が判断するための基準として機能しています。


いいなと思ったら応援しよう!