🌟

【LT記録】Kubernetesコトハジメ〜k8s一家の紹介〜

2022/10/26に公開

おはようございます/こんにちは/こんばんは。ZENKIGENエンジニアのくわじゅんです。

ZENKIGENでは月に2度ほど、開発メンバーの知見向上を目的に業務内容にとらわれない勉強会を開催しています。

今回は、私がその勉強会でKubernetesについて発表した際の台本を公開したいと思います。この記事でZENKIGEN社内の勉強会の雰囲気を少しでも感じてもらえたら嬉しいです。

では、どうぞ。


title

システムっちゅうのはこうでないとダメだ

Kubernetesの考え方のキホン、それが「システムっちゅうのはこうでないとダメだ」です。つまり、システムとして望ましい状態をManifest(目録、名簿)として表現する、宣言的設定を特徴としています。

この宣言的設定とgitなどによるバージョン管理を組み合わせることで、インフラ変更の切り戻しも簡単になります。以前に宣言した「望ましい状態」を、再適用するだけで良いからです。

今回は、こまごまとした話は避け、Kubernetes( k8s )を支える要素を家族になぞらえて紹介していきたいと思います。

Pod子ちゃん

pod

k8s一家における末っ子、最小のデプロイ単位となるのが、Pod子ちゃんです。一般的には、1つのPod子ちゃんに対して「これはrailsが動くPod子ちゃん」「これはreactが動くPod子ちゃん」というような粒度で分けられます。

サイドカーパターンやアンバサダーパターンなど、Pod子ちゃん1人が複数コンテナを持っている場合もありますが、この場合、同じPod内の各コンテナは同一のIPアドレス・ポートを共有します。「Pod子ちゃん1人に与えられる名札は一枚」と覚えましょう。

ただし、この名札はエフェメラル=Pod子ちゃんが死んで、蘇生する度に新しくなるため、このままではPod子ちゃんは気まぐれなおてんば娘で終わってしまいます。やっぱり、何かしら家族の一員として、ちゃんとした名札を持たせてあげたい。

k8s一家のその思いに応えてくれるのが、Service郎くんです。

Service郎くん

service

次男のService郎くんは、Pod子ちゃんに対して永続的なIPアドレス、つまり二度と剥がせないアイアン名札の割り当てを可能にします。これで、アプリケーション内部でのPod子ちゃん同士の通信設定が容易になります。

さて、こうなると今度は外部からのアクセスもしっかり受け付ける窓口が欲しいですね。k8sでは、そこを長兄のIngress兄様が担っています。

Ingress兄様

ingress

Ingress兄様は、k8s一家(クラスターとも呼ばれます)の外からの来客の用件を聞き、Service郎くんが与えたアイアン名札を頼りに、適切なPod子ちゃんの元へお客さんを導く窓口になります。優秀な兄様なので、今回設定したスコープで書けるような話はあまりありません。

ReplicaSet母さん(何人もいる)

replicaset

ここまで、k8s一家の子どもたちをみてきましたが、両親は何をしているのでしょうか。ReplicaSet母さんは、時には来客数によって10人を超えるPod子ちゃんをまとめて世話しています。少し真面目な言葉で言うと、「指定したテンプレートに従った正しい数のPodが常に動いているように管理するPodマネージャ」がReplicaSetです。railsコンテナを抱えたPod子ちゃんが10人いるはずなのに9人しかいないようなとき、ReplicaSet母さんはその権能を大いに振るって1人を蘇生させます。現実界の母親ではなく、なんか「光あれ」って言ったら光あるアイツに似てますね(信者の人いたらスミマセン)。

ReplicaSet母さんのこわいのは、ゴ○ブリと一緒でひとり見つけたら何人もいることがあるってことです。

だからここは、Deployment父さんに頑張ってもらいましょう。

Deployment父さん

deployment

Deployment父さんは、何人ものReplicaSet母さんをまるごと抱いています(システム的に)。そんなDeployment父さんの権能は、k8s一家の望ましい状態が変わった時、家族会議を開くことなしに、家族生活を一切止めることなしに一家をアップデートできることです。一時的にPod子ちゃんが15人くらいに増えて、全員が目元にほくろのある新しいPod子ちゃんにいつの間にか変わっていったりします。ローリングアップデートと呼ばれるこの権能によって、harutakaではシステムの無停止リリースが可能になっています。

まとめ

Kubernetesについて、その要素をざっくり紹介してみました。上で取り上げた以外にも、Deployment父さんの弟にあたるStatefulSetおじさん、ペットのConfigmap犬やSecret猫などがいます。このLTで、「なんかよくわかんない」と感じていたKubernetesに親しみを感じてもらえたら嬉しいです。

もっとk8s一家に親しむために

最後に参考にできそうな記事、動画、書籍を紹介します。ご清聴、ありがとうございました。

YouTubeのvideoIDが不正ですhttps://youtube.com/playlist?list=PLy7NrYWoggjziYQIDorlXjTvvwweTYoNC

https://cstoku.dev/posts/2018/k8sdojo-01/

https://www.amazon.co.jp/入門-Kubernetes-Kelsey-Hightower/dp/4873118409


お知らせ

今回は社内勉強会の雰囲気を伝えるため、その台本を公開しましたがいかがだったでしょうか?少しでも弊社や harutaka 、revii に興味を持っていただいたという方は、お気軽にご連絡頂けると幸いです!カジュアルにお話という形でも、副業したいという形でも大歓迎です。

https://recruit.zenkigen.co.jp/career

ZENKIGENテックブログ

Discussion