Kubernetes 1day 勉強会を実施しました!

こんにちは、 NTT国際通信株式会社 ICTインフラサービス部 クラウドサービス部門の北澤です。先日NTTグループの国内事業再編に伴い、NTTコミュニケーションズ株式会社 クラウドサービス部 から所属が変更になりました。

先日新会社になってすぐに、チーム内にて Kubernetes 1day 勉強会を実施しました。今回はその様子をお伝えします。

背景

私たちのチームは SREs (Site Reliability Engineers) として GKE (Google Kubernetes Engine) を運用しています。また週に1度、 Kubernetes に関する勉強会を実施することで自分たちの扱う技術に関する知識を深めています。 しかしながら GKE はマネージド Kubernetes サービスであるために Kubernetes クラスタを利用者としてしか使用できません。そのため、 Kubernetes が Pod をどのように立ち上げているか、そのステートをどのように管理しているかなどの仕組みの部分を実感する機会がありませんでした。

この度、チーム全体における Kubernetes の理解を深める事を目的として、Kubernetes クラスタを 1 から手動で構築する勉強会を開催しました。

実施内容

今回の勉強会では、事前に Kubernetes 構築用のドキュメントを用意し、当日は GCE (Google Compute Engine) 上の VM にログインしドキュメントを読みながら構築作業を行う方式をとりました。

今回構築した構成は以下のようになります。

Kubernetes を 1 から手動で構築する手順として、 kubernetes-the-hard-way が有名ですが、今回は各コンポーネントの仕事をきちんと理解してもらうことを目的に、Kubernetes の各コンポーネントにどのようなオプションを指定するか調べながら構築してもらうような構築手順を新しく作成しました。

以下に勉強会の流れの一例として kube-apiserver のみ構築後の話をします。Kubernetes は各コンポーネントが http(s) で kube-apiserver というコンポーネントと通信を行うことで動作します。そのため、kube-apiserver だけあればクライアント (kubectl) からの通信を受けることが可能です。しかしながら kube-apiserver のみ構築した状態で kubectl get node コマンドを実行しても No resources found. といった Kubernetes クラスタ内に Pod を建てる対象の Node が存在しないという意味のメッセージが返ってきます。Kubernetes の Pod として動作するコンテナは kubelet というコンポーネント経由でコンテナランタイムが立ち上げます。そのため次に kubelet とコンテナランタイムである Docker を構築することで、 kubectl get node で Node が取得できるようになることを確認できます。

このように各コンポーネントの構築後に Kubernetes の動作を都度確認することで、各コンポーネントがなぜ必要なのかを意識しながら Kubernetes の動きを理解してもらうことを狙いました。

実施風景

勉強会開始直後、 Kubernetes の各コンポーネントがどのように動作するかという説明を行い、その後はひたすら構築作業を行ってもらいました。 また、作業の進捗は Slack のリアクション機能を用い確認しました。これをみて構築に手詰まってる人などのフォローを頻繁に行うことができました。

昼食の :sushi: と :pizza:

まとめ

今回の勉強会にて実際に Kubernetes クラスタを構築することで Kubernetes の理解を深められたのではないかと思います。また、開催側としても事前の構築検証や当日の質問を通じて学ぶことがたくさんありました。 以降も機会があれば勉強会等を実施し、 Kubernetes に関する技術力の底上げやコミュニティの活発化に貢献ができればと思っています。

なお、勉強会にて使用したリポジトリは GitHubで公開 しています。 Kubernetes 構築用のドキュメントや動作確認用のマニフェストファイルの他に GCP 上に勉強会の環境を構築するためのスクリプトもおいてあるので、Kubernetes の構築を 1 からやってみようと思っている方に参考程度になれば幸いです。

© NTT Communications Corporation All Rights Reserved.