1. ゆるテク
  2. #34 「つくって、壊して、直し..
2024-05-14 23:00

#34 「つくって、壊して、直して学ぶ Kubernetes入門」を読んだ話

spotify apple_podcasts

「つくって、壊して、直して学ぶ Kubernetes入門」を読んだ感想を話しました。


Links:

・つくって、壊して、直して学ぶ Kubernetes入門 https://www.shoeisha.co.jp/book/detail/9784798185200

・Observability Whitepaper https://github.com/cncf/tag-observability/blob/main/whitepaper.md

・kubectl-aliases https://github.com/ahmetb/kubectl-aliases


ゆるテクは @junichi_m_ と @hacktk がゆるーく技術の話をするポッドキャストです。 感想は #yurutech をつけてポストしてください。Googleフォームからも送れます。 https://forms.gle/ZaxjmXSYSNbihf9k9

X (formerly Twitter):

・ゆるテク: https://twitter.com/yuru_tech

・@junichi_m_: https://twitter.com/junichi_m_

・@hacktk: https://twitter.com/hacktk

00:00
こんにちは、エンジニアの博崎です。
こんにちは、エンジニアの三長です。
ゆるテクは、三長と博崎が、緩く技術の話をするポッドキャストです。よろしくお願いします。
よろしくお願いします。
今、ゴールデンウィークの話をしてたんですけど、すごい、自分一人の時間があって、めっちゃ読書が困りました。
いいですよね。きっとあれですよね。一人の時間になると、正直やりたいことはいっぱいなんでしょうけど、どれやろうかなってなりますよね。
そうなると時間がもったいないんで、これは貴重な読書タイムだと思って、やることをめっちゃ計画されてました。
素晴らしい。じゃあ、もしかすると、今日はその活用結果があるんですかね。
はい、そうです。そこで読んだ本が、今回は、作って壊して直して学ぶ福バレンティス・ニューモンっていう本が、4月の終わりかな、ぐらいに買いました。
でもなんかすごく、私も本自体は認知してたんですけど、まだまだ読んだことがなくて、ぜひ内容は聞いてみたかったです。
これ、早速内容に入るんですけど、名前の通りハンズオンが中心の本なんですよね。
作って壊して直して学ぶ、で、福バレンティス・ニューモンなんで、結構初心者向けというか、な感じになってて、
で、自分はアプリケーションを福バレンティス上で動かすみたいなのは経験ありましたけど、運用はなかったんで、これはすごく学ぶものが多かったというか、ぴったりな本でしたね。
素晴らしい。
すごいいろいろ得るものがあったっていうか。
でも結構もう、一から自分でクラスター作ってとか、ログの見方とかももろもろされてるような形なんですか。
そうですね。クラスターは、ミニクベとかじゃなくて、Kindを使うんですよね。
Kind、ほうほうほう。
これ使ってクラスターを作ってから、その上で、本当、Podから作り始めるんですよ。
最初の単位から。
グランティスの運用した人で、Podだけを作った人とかあんまりいないと思うんですけど。
そうですね。多分、デバッグ用に一瞬立てるとかそのレベルですよね。
ですよね。それをまずPodから作って、デバッグはPodの中にコンテナ、デバッグの時だけコンテナ追加してみるみたいな、そういう方法でこれは進んでいくんですよ。
Pod作って、じゃあPodできましたね。それを複数作りましょう、みたいな感じでレプリカセットで。
ちゃんと用途というか、次にやりたいであろうことをストーリー立てて、リソースの紹介をしてくださってるみたいな感じですかね。
03:01
そうです。だから、リソースを上から順に網羅的に説明するっていうよりは、必要なところだけ説明っていう感じでしたね。
いいですね。それだとすごく多分、一度にわちゃって出てくるよりシンプルで覚えやすい感じですか。
そうでした。これ一番最初にDockerのイメージとかコンテナを作るところから一応入るんですよ。
自分はそこは斜め読みしちゃったんですけど、でもなんか結構詳しく書いてあったんで、そこからっていう人も全然いいんじゃないですかね。
じゃあもうDockerファイルとかもなんとなく書き方が分かって、おそらくビルドとかもできるようになってみたいな感じですかね。
っていう感じでしたね。
いいですね。すごい親切な感じがする。
さっきポットでレプリカセットでデプロイメントの順で作るみたいな話したと思うんですけど、リソースの説明とかも濃淡があって、
といえばですね、ジョブとかクーロンジョブあると思うんですけど、あの辺すごい説明少ないんですよ。
シンプルにスケジュールしてジョブ作るだけですからね、正直。
あとはイングレスとかは作りもしないんですよ。
そうなんですね。
だからもうクラストIPとかでアクセスとかして。
もう直接、なるほど。
っていう感じなんで、すごいちゃんと割り切った分かりやすさを重視した説明だなと思いましたね。
確かに。実際は多分パブリッククラウドとか使ってKubernetesのクラスターとか作ると、案外イングレス周りって吉田にやってくれる感じありますしね。
そうですね。その代わりというか、逆にヘルスチェック周りとか、レディネスとかライブネスかな、あの辺とかすごいむっちゃくちゃ丁寧に説明されてるんですよ。
それはやはり運用の観点というか、アプリの視覚監視とか正常起動をどう監視するかっていう意味で、厚めに説明されてるところなんですかね。
そうですそうです。これが動かないのは何でかみたいなデバッグとかもその後あるんで。
素晴らしい。
なのですごい運用目線みたいなところが強いですね。
じゃあそのレディネスとかライブネスやったってことは、なんか独自で用意されたコンテナにも何かしらのヘルスチェックするエンドポイントが用意されてるとかそういうチュートリアルだったんですか。
そうですそうです。これ最初から最後まで使うイメージというかコンテナは同じで、トップにアクセスしたらハローサーバーみたいな返すだけみたいな。
なるほどなるほど。
そのエンドポイントがあるだけのGoのプログラムが置いてあるやつ。
そのイメージを使ってやる感じですよね。
で、ヘルスチェックも一応エンドポイントも追加されたやつを今度扱いますみたいな。
基本のイメージは同じで。
なるほど、すごいいいですねすごく。
06:02
あとはBotのスケジューリングですかね。このノードに行くとかのアフィニティがあるじゃないですか。
はいはい。
あの辺とかですね。あそこもすごい丁寧に長いページを割いてましたね。
最近あまりそのアフィニティ周り私もキャッチアップしてないんですけど、やっぱノードアフィニティとかそのあたりがすごい紹介されてた感じですか。
そうですね。パターンがいくつかあって、どこら辺だったかな。ノードセレクターって自分初めて聞いたんですけど。
はいはいはい。
ノードセレクターがあって、それちょっと使いにくいからノードアフィニティ使うとか、あとBotの方もBotアフィニティとかアンチアフィニティがあるよとか。
なるほどなるほど。
いいですねいいですねすごいわかりやすい気がするそれは。
でもう一個なんだっけBotトポロジースプレッドコンテナーズっていうのが。
新しめのやつじゃないですか。
でそれよくわからなかったんですけど図があったんで、そういうことかと思ってすごいわかりやすかったですね。
あれですかねなんか説明のところとかで多分書かれてる気もするんですけど、よくある重要な役割を担うそのBotアプリケーションとかをなるべく冗長で安全に同じ1台のノードに配備しないようにしましょうとかそういうことが書かれてたりするんですかね。
そういう感じでしたかね。
そのBotトポロジースプレッドコンテナーズは各ノードの差分を確か指定するんですよね。
ノードが3つあってそれぞれAとBに1台ずつ入ってたら、次1台入れる時どこに入れますかで。
AとかBに入れちゃうとCが0台だから差分が2になりますねみたいな感じになって。
その差分の設定を1にしておけばこれを防げますみたいな感じでしたかね。
すごい賢くなってるいいなぁ。
そんなあるんだと思いましたね。
それがっつり運用してる時にめちゃめちゃ欲しかったですね。
便利ですよね。
どうしてもうまくそこができなかったからBotアフィニティとアンチアフィニティ一生懸命ラベルで指定してたんですけど。
まさにですね、この本にもこれがなかった時代はそうやってましたって書かれてました。
そうなんですよ。
しかも経験ある人もいるかもしれないんですけど、そういう時に大体きついのって。
例えば、カナリアリリースする時にバージョン2とバージョン1のBotがどうしても両立するじゃないですか。
そのカナリアリリースするたんびに若干Botのラベルとか変わっていくんで。
アフィニティ使ってた時もちょっと諦めてたとこありましたね。
毎回指定しなきゃいけないからそんなことやってられんってことですよね。
そこまで手を加えられんなみたいな感じありました。
それが今のお話にあったトポロジスプレッドコンストレインズがあると、もしかしてうまくできるパターンになるんだろうなって思いましたね。
09:08
今思い出したんですけど、この本めっちゃ差し絵というか漫画みたいな感じで多いんで、めっちゃわかりやすいですね。
ちょっと読んでみたいな。
復習とかあるかもしれないですよ。いい感じになるかも。
確かに。いつも復習する時って何でしたっけ。実践ガイドでしたっけ。
ありますね。あれもこんな感じなんですか。
あれは結構差し絵もあるんですけど、いかんせんページ数がめちゃめちゃあるので、探し当てるの結構苦労してます。
確かに。
これそうそう思い出した。トラブルシューティングガイドっていうフローになってるやつがあるんですよね。フローチャートみたいに。
一番最初にキューブコントロールゲットポッドを実行した結果は全てランニング化とか。
それがイエスノーでこっちはこうで、次はポッドのステータスはとか。
なるほど。
これはわかりやすくていいねとか思ってました。
どうでした。結構今の話を聞いてる感じだと、どちらかというとYAMLにマニフェスト書いてどうこうっていうよりは、キューブCTLでコマンドでどんどんどんどん作っていくみたいな感じですか。
違いますね。ずっとYAMLは使うんですけど、そのYAMLがこの本のGitHubのリポジトリがあるんですよ。
なるほど。
そこにもうYAML全部用意されてるんで。
はいはいはい。
そのマニフェストを使って今回はこのマニフェスト使いますって。
じゃあ自分でアプライして。
そうですそうです。
サブ見てって感じですね。
アプライして、おかしくなりましたね。ではこっちのやつをアプライしてみましょうとか。
なるほど。しっかり準備されてる。
そうですね。だから自分で一応書くのもあるんですよ。書くこともあるんですけど、この本の名の通り壊して直すみたいな感じなんで。
はいはいはい。
これをアプライしたらこうなってしまいました。どうしますかみたいな感じで、直接エディットでコントロールでエディットして直してみましょうみたいな。
そうですそうです。
面白い。めちゃめちゃこれからKubernetesやりましょうっていう人に合いそうな感じしますよね。それだと。
そうですね。多分運用してる人とかでもあんまし壊れたメッセージって見ないんじゃないかなと思ってて。
壊れるメッセージって具体的に言うとどういう壊し方だったりするんですか。
例えばその設定値が矛盾しているとかそういう意味なのか。
結構いろいろありましたね。
例えばありがちなとこ今そのあんまり見ないんじゃないですかって言いましたけど。
これはあるかもなーって思ったのがコンフィグマップのキーがないとか。
12:02
はいはいはい。
あとはですね一番最初ならちょっとありがちかもしれないですけどヘルスチェックのエンドポイントがちょっと間違っているとか。
なるほどなるほど。
この本の中で一番多かったのがポットを全部立ち上げてもレディにならないみたいなやつとか。
確かにその場合内部で何が起こっているのって話ですもんね。
そうですね。ディスクライブしてイベント見てみましょうとか。
はいはいはい。すごいしっかりしてる。
そうですねこの本あれですかね最後の方でコントロールプレーンまで壊してみましょうとかあるんで。
え、こわ。
そうコントロールプレーンまで壊すんだなと思って。
そしたらあれですだからKindでクラスター全部立ち上げたらコントロールプレーンも勝手に上がってくれるんですけど。
はいはい。
普通には壊せないんでローカルでやってるからDockerストップでこのコントロールプレーンのコンテナ止めましょうとかってやるんですよ。
確かにローカルならではのドッコバし方ですよね。
マネージドでちょっとできないかな。
マネージドでそれできたらだいぶマネージドじゃなくなっちゃうから。
なんかあれですかコントロールプレーン止まってると例えばですけどKubernetesの状態が更新されなくなったりとかそういう感じでした?
そうですそうです。なんかそこで確認したいのがGetBotしてみましょうとかってやるんですけど帰ってきませんねってなって。
帰っては来ないけどじゃあBotのエンドポイントにアクセスしてみましょう。これは帰ってきますねみたいな感じなんですよ。
はいはいはい。
たとえコントロールプレーンが壊れようともすぐさまアプリケーションが壊れないそれがKubernetesですみたいな。
堅牢でしょみたいな感じですか。
そうそうそう。そういう感じでしたね。
なるほど。
はいはいはいはい。
前編通してですねこのキューブコントロールめっちゃ使うんでこんだけ叩けば慣れるでしょうって言わんばかりぐらい叩くんで。
よく使うのってログ図とかデスクライブイベントエグゼックまでやるとだいぶもうあれですかね一通りトラブルシュートができそうになりそうな感じですか。
そうですねゲットBotとかあとゲットデプロイメントもまあまあしたかな。
結構デスクライブでドリルダウンというかちょっとずつ見ていくって感じですかね。
いいですね。じゃあもうコマンドマスターですね今は。
でもそのぐらいの用途で頻繁に使うコマンドはすごい覚えるって感じですかね。
ですよね。すごいそれは分かります。
いっぱいもっとあるんでしょうけどね。
っていうのが多分この本のメインの内容で後半の方もちょっと何だろう充実してるっていうか壊して直すだけじゃなくてデプロイしたりとかマニフェスト管理したりヘルムとかその辺のことですねつまり。
15:03
なるほどなるほど。
あの辺とかあとは監視も一応触れてあったんですよ。
じゃあなんとなくですがプロメテウスとかグラファナとかその辺が出てくるんですかね。
もう完全にそれです。プロメとあとグラファナを立ててみましょうで実際見てみるっていう半蔵もありましたね。
プロメテウスでスクレーピングしてグラファナダッシュボードでとかそういう感じなんですかね。
そうですそうです。
いいですねそこまで何か一通りでやれるとそれこそ小さいクラスは作って監視したい時もそういうことで全部できますもんね。
体験できたんですごいいいって感じでしたね。
だし、あとこの本におまけっていうかPDFが付いててアルゴCDをやってみようっていうPDFが別についてるんですよ。
GitOps?
GitOpsやってみようってことですね。
その辺までちゃんとカバーされててすごいなと思いましたね。
その辺もやられたんですか?
やりましたやりました。
すごい。
なんだって時間がありましたからね。
そこでそんなものあるんだと思ったのがこのCNCFのホワイトペーパーっていうのがあったんですよ。
これ自分全然知らなくて斜め読みザーッとした時に最近みんながプライマリーシグナルスって言ってるなと思ってたんですけど
自分の語彙だとこれは三本柱だったんですよ。
でも以前は確かその表現でしたよね。
でも何かいつの間にかというかプライマリーシグナルスに変わっててそうなんだと思ってましたね。
新しい発見ですね。
びっくりしました。
いや多分これ今更なんですけど。
プライマリーシグナルスがメトリックとトレースとログですよね。
この3つあってさらに新しく2つ追加されているっていうのがあって。
なんか聞いたことあるな。
その2つがプロファイルとダンプなんですけど。
プロファイルはダンプも入ってるんですね。
って書いてありますね。
情報量が多い方にハイレベルというかの方に増えていくんだなと思いましたね。
確かに。
プロファイルが入ってたのすごい覚えてるんですけどダンプまで入ってるんですね。
今そうみたいですね。
という感じでちゃんとその辺までやってて新しい発見があってよかったですよ。
実際やってみてどうですかね。
それをこれからクラスター作ってやっていきましょうってなった時に
そこまで考えられるのかなとかって思いません?
正直。
確かにどうなんでしょうね。
でも最低限このぐらいやんなきゃいけないの全体像が見えるのはすごいいいんじゃないですかね。
18:05
確かに。
何からやっていいか分かんないから。
それが全体像が見えるとロードマップじゃないですけどどういう計画でこれを実現していこうとかもできますもんね。
あと全体像見えてると本当はここまでやらなきゃいけないんだけど
優先度によってカットとかもできると思うんでですね。
取捨選択とかもできていいんじゃないですかね。
じゃあもうすごいKubernetesネイティブになった博武さんに一個だけツールを紹介しておくと
もしかしたらご存知かもしれないんですけど
博武さんが書いてくださっている読書メモを見ながら一緒に話をしてるんですけど
個人的には私は結構kubectlのコマンドが途中からどんどん打つのが大変になっていったので
気が向いたらAliasとかを入れるとすごく便利かなと思います。
そうですね。この本でもありましたね。
公式でも言われてるんだったかな。
KとかにAlias貼るっていうのが結構多いみたいですね。
ですです。GitHubにそれをめちゃめちゃ定義してくださった方がいるんで
私はいつもそれを使わせていただいている。
なるほどな。自分はとりあえずバッシュコンプレッションは設定して
それで保管はされるんでそれでいいかっていう感じでしたけどね。
実際最初のうちは打ったほうが覚えますしね。
そうですね。Gitとかもそうなんですけど、あんまりAlias貼らない派で
正確な綴りとか単語を忘れてしまうというか
めちゃめちゃ怒りました。そういうことが。
なるべく。しかしそうですね。やっぱりAliasあったほうが良さそうだな。
Pod取るときとかはやっぱり楽は楽ですよね。
そこで思ったのがこれあれでしたね。
ゲームコントロールってGetPodsでもいいしPodでもPOでもいいんですね。
ですです。なんか不思議な感じしますよね。
そうそう。これいけるんだと思いました。
こんな感じでしたよ。
じゃあ結構この辺はこの書籍を足掛かりに
もうちょっと深く知りたい人は他のもインプットしてみようねみたいな感じですかね。
もし学習計画立てるんだったら。
そうですね。最後にこの先の歩み方っていう章があって
これからどうしたいかみたいな逆引きというか
それ別にこういうのがオススメだよって書いてありましたね。
資格を取得したいとか、アプリケーション運用をしたいとか
コミッターになりたいとかもありましたよ。
おーすごい。
その場合はまずリポジトリを読んでとか
21:01
どれのオススメでもだいたい最初に公式ドキュメントを読むって書いてあって
ですよねって思って見てましたね。
結構結局公式ドキュメントを読み込むのが一番まずは理解というか
公式が言ってることがすべてだと思うんですけど
公式ドキュメントってあれなんですよね。
まだクバルテスのやつ読んだことないからわかんないですけど
結構その網羅的だから頭から読んでいくぞって感じじゃないですよね。
じゃないですね。
今の今回紹介してくださっている書籍のような
やりたいことがストーリー立てられてて
その順番に読めるといいんですけどっていうのはありますよね。
運用とかしてて困った時に読むっていう感じなのかなっていう感じですね。
このリソースなんだろうって初めてそのリソースを認知した時に読むとかもありますし
なかなか端から端までひたすら目的なく読むって難しいは難しいですよね。
そうですね。
そんな感じで次の一歩とかまで。
いいですよね。
とはいえこの後どうしようってなった時のためにも
しっかり道しるべ用意してくれてるから優しい本ですよね。
優しい本でしたね。
表紙の通りですね。
素晴らしい。
はい。
はい。
はい。
はい。
はい。
はい。
はい。
素晴らしい。
そんな感じかな。
ではこのぐらいにしておきますか。
はい。
今回は作って壊して直して学ぶKubernetes入門について話しました。
感想などはハッシュユルテックをつけてポストをお願いします。
Googleフォームからも送れます。
今日はありがとうございました。
ありがとうございました。
23:00

コメント

スクロール