はじめに
Kubernetes The Hard Wayをやってみました。
詳しい手順はさておき、やってみてどうだったかをまとめておきます。
手順
本家の手順は英語なので、日本語訳の方を参考にしました。
ただこちらは作業した時点での最新版はKubernetes 1.31なのに対し、日本語訳版はKubernetes 1.12.0のKubernetesクラスタを作成する手順になっていました。
そのため、最新の環境で実行するためには読み替えが必要でした。
作成したクラスタの仕様
プラットフォームはGCPを仕様しました。
最終的に作成したクラスタは以下です。
コンポーネント | バージョン | 備考 |
---|---|---|
Kubernetes | 1.31.0 | 現時点でのlatest |
containerd | 1.7.12 | Ubuntu 24.04 |
CNI Container Networking | 1.0.0 | 現時点でのlatest |
etcd | 3.5.15 | 現時点でのlatest |
つまづいた点
- 無料枠にもかかわらず、日本のリージョンでインスタンスを立ち上げようとしてしまった
- GCPを使うのは今回が初めてで、無料枠で実施しました
- 無料枠でGCEのインスタンスが立ち上げられるリージョンに制限があることを知らず、そこでつまづいてしまいました
- Worker Nodeを構築している最中にコンソールが使えなくなった
- コンポーネントを最新にしつつ、手順通りに実施すると、ワーカーノードでインストールした後にssh接続ができなくなる事象に遭遇しました
- シリアルコンソール接続も試しましたが、ログインプロンプトが出るもののログインができませんでした
- そのため、インスタンスの削除/作成を何度か繰り返しました
- いろいろと切り分けた結果、containerdのlatestのバイナリではなく、Ubuntu 24.04でインストールできるcontainerdを使うとこの事象が発生しないことがわかりました
- 挙動が期待通りではないときはsystemdのサービスのログを見る
* 設定の読み替えが必要なときには、まずsystemctl status サービス名でサービスの状態を確認し、activeでない場合はjournalctlを使ってログをみるようにしました
* オプションが廃止されたり、逆に足りなかったりする原因はだいたいログを見れば判断できました
所感
今回の目的はKubernetesのコンポーネントについて詳しくなることでしたが、個々のコンポーネントを設定していくことによって、どんなコンポーネントで構成されているかを掴むことができました。