今回は日本仮想化技術の田中から「Kubernetes再入門 - K8s活用するならこれだけは知っておきたいこと -」と題して、Kubernetesの基本知識についてお話しさせていただきました。Kubernetesは最近のコンテナを使ったシステムでは当たり前のように利用されていますが、仕組みが複雑なこともありちゃんと理解することが難しいという側面もあります。このセミナーではKubernetesを理解する上で欠かすことのできない要素に絞って説明しています。
振り返りも兼ねて当日の配信の様子をYoutubeでアーカイブしていますので、是非ご覧ください。当日参加できなかった方も、これを機会にとことんDevOps勉強会に興味を持っていただければと思います。また、当日いただいたQ&Aに関してもこちらのブログでまとめていますので、ぜひご覧ください。
セミナー動画 - YouTube Live アーカイブ
発表資料 - Speaker Deck
Q&A まとめ
Q: cloud-controller-managerなど、各コンポーネントの役割がなかなか理解しづらい。慣れるしかないですかね。
A: (田中)確かに、理解しづらいですね。公式のコンポーネント一覧の解説はわかりづらいということもあり、やはり慣れていくしかないかと思います。もし、分かりやすく役割を説明したまとまった資料を知っている方がいればぜひ教えてください。
Q: (事前にいただいていたDevOpsに関するお悩みとして)テスト自動化がうまくいきません。
A: (石本-開発系担当)テスト自動化がうまくいかないというのにも、さまざまあると思います。そもそもどんなテストコードを書くべきなのかや、効果的な自動化の仕方などもあると思います。初めは単純なやり方で徐々に複雑なケースへと対応していくのが良いのではないでしょうか?
(田中)CIの観点だと、テストが重すぎて終わらないなどのケースも考えられますね。そういう場合はCIのなかのルールを調整するなどで対策を取ったりします。
Q: kubernetes-dashboardは使ったりしますか?
A: (宮原) 自分がKubernetesの説明をする時はkubectkが慣れるまでは不便なので、kubernetes-dashboardを使って簡単にステータスを見られるようにしています。ただし、慣れてくると使わなくなるので、使わなくなったら初心者卒業と考えても良いのではないでしょうか?
Q: いろいろと勉強するための環境が欲しいのですが、どのように準備するのがお勧めですか?
A: (田中) ローカルだとminikubeが一番楽だと思います。もし、クラウドを使うのであればAWSのEKSやGCPのGKEを使うのが楽だと思います。ただし、EKSやGKEを使うとクラウドの勉強が必要になるので、Kubernetesを勉強するという意味ではminikubeがおすすめです。
Q: NOMINATED NODEとREADINESS GATES、完全に理解した(宮原)
A: (セッション中に不明だった部分について宮原から解説がありました。)
NOMINATED NODEはリソースの関係でpodを割り当てられない場合に、いずれかのpodを停止して割り当てを行います。その際に、割り当てようとする先のnodeを示しています。つまり、起動はしていないけど、nodeのリソースが空くのを待っている状態に表示される物らしいです。
READINESS GATESはendpointに登録する際に、外部のサービスがちゃんと動いているかを判断して登録するような条件が付けられます。その際のアクセス可否のチェックゲートとしてのフラグを設定する項目です。サービスの管理者が手動で設定したり、スクリプトでサービスのチェックをして設定したりします。
Q: 複数のマニフェストファイルをapplyしてきた場合、過去のapply済のファイルを一覧で知るテクニックは有るのでしょうか。
A: (田中)Kubernetesではマニフェストの内容をApplyしているだけなので、どのようなマニフェストファイルを使用したのかは管理されていません。そのため、どのようなマニフェストファイルをApplyしたのかはKubernetesから確認することはできません。
もし、どんなマニフェストファイルをApplyしたのかを管理したいのであればArgoCDなどを使ってGitOpsを構築するのが良いと思います。