K8s 5分講座#08 各コンポーネントの配置、kubectl
今日は、前回取り上げたコンポーネントがどこに配置されるのか?を学ぶ。
物理的にはマスタノードと、ワーカーノードがありましたよね。各コンポーネントがどっちに置かれるのか?ということでしょうか。
そうだ。K8s 5分講座#06 ノードとクラスタの回では、ノードごとに役割を説明した。今回はその役割を果たすコンポーネントがそれぞれどちらにあるか?を理解してほしい。
ワーカーノードにあるコンポーネント
先に結論を言おう。全6種のコンポーネントの内、ワーカーノードにあるのはコンテナランタイムと、Kubeletだ。
コンテナランタイムは、コンテナを実行するソフトウェアなので、実際にアプリが動くワーカーノードに存在する必要がありますね。
Kubeletは、エージェントとしてワーカーノードに常駐しながら状態情報をマスタへ提供、マスタノードからワーカーノードに要求されたアクションの実行など、マスタと対話する役割を担う。
マスタノードにあるコンポーネント
残り4つは、APIサーバ、etcdキーストア、コントローラ、スケジューラですね。
APIサーバは、中央インターフェースとも言われるK8sの中心的なコンポーネントだ。K8sクラスタの全てのコンポーネントとユーザの通信に用いる(CLI・ダッシュボード等)。
etcdキーストアは、収集した情報を管理する役割を担っていて、複数のノードに分散してデータを保存するんですよね。
残りのコントローラ、スケジューラがマスタノードに存在するのは、イメージしやすいかもしれないな。
そうですね。クラスタ全体を監視するコントローラと、作業やコンテナを分散させるスケジューラは実行環境であるワーカーノードではなく、マスタノードに居る必要がありますね。
kubectl
kubectlとも呼ばれるコマンドラインユーティリティについても触れておく
ctlはコントロール、の略なんですね。
kubectlツールはK8sクラスタ上のアプリケーションをデプロイし、管理するために使用される。またクラスタ情報を取得したり、クラスタ内の他のノードの状態を取得したりできる。
コマンドラインユーティリティと言うことは、CLIでコマンドを打って使用するんでしょうか?
そうだ。そのままだが、kubectl+半角スペース+コマンドという形式で使う。ここでは3つだけ紹介する。
$ kubectl run # アプリケーションをクラスタ上にデプロイする
$ kubectl cluster info # クラスタの情報を表示
$ kubectl get nodes # クラスタが属するすべてのノードをリストアップ
今後の講義で、他のコマンドも取り扱うが、それは関連するコンセプト(概念)を学んだあとに説明する。とりあえずは上の3つでOKだ。
- コンポーネントの内、ワーカーノードに置かれるのは、コンテナランタイムと、kubeletの2つ
- 残りの4つはマスターノードに配置。特にAPIサーバはマスタノードの中心的なコンポーネント
- K8s環境では、kubectlコマンドを用いてデプロイ・管理を行う
いや~、前回に引き続き、コンポーネントの2回は新しい用語が出てきてお腹いっぱいです。
インフラストラクチャを構築する際、システムに適切なコンポーネントをインストール・設定するのに役立つから、しっかり押さえておいてくれ。
復習しておきます~