怖くなくなるためにKubernetesを知ろう
セッション冒頭、高橋氏はKubernetesの持つ3点の特徴を挙げた。
- 障害発生時に、各コンテナの設定・復旧を簡単にする
- コンテナの仕様の管理を簡単にする
- 複数台サーバを利用してコンテナを起動したいとき、最適な起動先の決定を簡単にする
1.については、NGINXのコンテナが2つ欲しいというケースを例示した。「Kubernetesは2つのコンテナが起動している必要があるということを理解し、2つのうち片方のコンテナがクラッシュした際は自動的に復旧する」(高橋氏)というReconciliation Loopを行うことがKubernetesの特徴の1つだという。
2.は「マニフェストファイル」と呼ばれる、YAMLで書かれたファイルを利用して各設定を管理することができるという点だ。Kubernetesではインフラの設定をコードで書くという「Infrastructure as Code」の概念を実践しており、マニフェストファイルにさまざまな情報などを書き込むことでテストや差分管理が可能になる。
3.については、セットアップの際に書きこむ「どのOSを採用するか」「どの規格のメモリを使うか」といった情報がKubernetesのAPIで抽象化されており、そうしたサーバー固有の設定などを書く必要がないため工数削減につながるというものだ。
続けて、高橋氏はKubernetesのアーキテクチャについて解説した。構造としては、「頭脳的」なコンポーネントであるControl Planeがコンテナとして起動しており、それに合わせてWorker Node(従来でのコンテナ起動サーバー)も複数起動するという形だ。
ワーカーノード上のkubeletは、「自分のサーバー上に何のコンテナを起動すべきか」をkube-apiserverに問い合わせるが、高橋氏はこうした動きについて「実は一般的なアプリケーションと同じ」と説明する。