2019 年 3月23日 ~ 2019 年 3月24日に
CyberAgent様の 『Kubernetes完全ガイド』著者によるDocker/Kubernetesハンズオン ~基礎勉強会~ Vol.2 に参加してきました。
どんなことを学んだか、2日間学んでみての感想などを書いてみたいと思います。
(初めてブログを書くので色々とお許しください...)
Day1
場所は、絶賛本社移転中の新オフィス AbemaTowers (東京都渋谷区)でした! 渋谷駅から12分。
到着してすぐに、ハンズオン特典であり、今回の教材である『Kubernetes完全ガイド』を頂きました。
2日間ずっと使っていったのですがとても分かりやすかったです。
著者の方が講師ってなかなか贅沢だと思います。著者直々の推しポイントは、巻末付録の 目的から逆引き出来る よくある質問集 だそうです。確かに Google で検索しそうな 〇〇を〇〇したい 形式の質問と対応ページが300個くらいあって、これは助かるなと思いました。
講座の最初は、Kubernetesの概要でしたが、掴みが
今は一家に一台 Kubernetes がある時代だと思いますが
でした。参考: 一家に一台 Kubernetes
一般的なご家庭 #とは
Dockerについて、サクッと触れて、それから先は、ひたすら Kubernetes をやりました。
なんとなく、Docker をマスターしてからじゃないと使いこなせないイメージだったのですが、そうではありませんでした。本当に最低限なら以下の2つが出来れば良いとのことです。少し気が楽になりました。
- イメージのビルド
- レジストリへの登録
1~2時間でサクッと Docker を触って、ビルドだけ覚えました。
講師から「皆さんは Docker を完全に理解した」と言われたので完全に理解したことになりました。
docker完全に理解した#ca_kubernetes
— uminek.ooo/うみねこ⛵️Vセーラー (@uminek_ooo) March 23, 2019
4人程度の参加者に1人の社員さん(メンター) というすぐに質問できる環境で、説明と演習を繰り返していきました。常駐していただけたので、仕事のことなども聞けてとても有意義でした。
Kubernetes 環境は、 Google Kubernetes Engine を各自 3ノードを用意してくださいました。自分は Windowsマシンで挑んだのですが、 WSLのubuntu で kubectl を操作しました。 Linux と Windows をデュアルブートしてる人も結構いました
github 上のサンプル集をダウンロードして、そのサンプルにあるマニフェストファイルをどんどん実行していきました。
Day1 はKubernetes の基本的な考え方と仕組みを学び、たくさんある API リソースを片っ端から試しました。印象的だったコメントをいくつかメモしておきます。
・1つのコンテナにプロセスを詰め込まない
自動スケーリングが魅力なので、機能を分離して出来るだけ分ける(1コンテナに 1~2 プロセス)
・Immutable Infrastructure なイメージを作る
イミュータブル(意味:不変)、つまりいつ起動しても同じものになるように作るのが大事と、聞きました。パッケージのインストールを毎回するようなイメージはアップデートによって突然動かなくなったりしてしまい、良くない例だそうです
・kubectl create より kubectl apply を使おう
create だとマニフェストの更新を適用出来ないので、新規作成も差分適用も出来る apply を使うべき。一つのコマンドで出来て CI/CD との相性も良い
・ClusterIP の指定は、DNSを使おう
なんでもそうですけど、決め打ちはいろいろと問題起きがちですよね。Kubernetes 内では、DNSが動いていて名前解決できるので積極的に使うと良い
Day1 では、社員の方のLTもあり、実際の導入事例を聞くことが出来ました、非常に参考になりました。
宿題も出ました。なかなか実践的で難しい課題です。
Day2
課題が難しかったです、ポート指定を忘れたり、ラベルの指定を間違えたりしていて、Day2の昼まで動きませんでした。。。
Day1に引き続き、APIリソースを片っ端から触りました。
1日目もでしたが、エナドリやおやつがたくさんデプロイされていて、糖分が足りてました。とてもありがたいです。
おやつが机からなくなると自動的におやつを机にデプロイしてくれる #ca_kubernetes
— uminek.ooo/うみねこ⛵️Vセーラー (@uminek_ooo) March 23, 2019
ここでも印象的だったポイントをメモします
・自動スケール の肝は、Pod の Resource の設定
Request と Limit はあまり広げすぎないようにしつつ、いいところを探るとよい
・Readiness Probe は レディネスプローブ (Ready から来てる)
リーディネス。。。って読んじゃう 他と順序の依存があるときにReady になるまでトラフィックを流さないでくれる機能だそうです
・特に理由がなければ Replicaset より Deployment 使おう
ローリングアップデートなどの機能を使える
最後にも演習がありましたが、こちらは基礎的な小問集合で、大方解けました。
懇親会、ごちそうさまでした。社員さんが明るくて、とても楽しかったです。あとなんかゆるい感じの人が多くていいなと思いました
まとめと感想
Kubernetes で何かをしたい時の操作が基本的に、 マニフェストを書く > apply する というフローで一貫していて洗練されているなと少し感動しました。
かといって、上のフローを無視できないわけではなく、なんでも出来るというのも印象的でした。講座の中で、「こうやることも出来るけど、プロダクションではやっちゃだめ」といった説明が何度か出てきて、デバッグで必要な機能も網羅されているのが分かりました。
ハンズオン全体を通して、連絡,配布にはslackが利用され、全体的にとても効率化されていてストレスフリーな勉強会でした。2日間で集中して学べる機会をいただき、とても感謝しています。
一般的なご家庭になるために、一家に一台のKubernetes クラスタのインストールを早速進めていきます。
P.S
kubernetes 周りの技術に、船やセーリングの用語が由来の名前やロゴがたくさんあることに気づき、興奮しましたが誰にも伝わりませんでした。Kubernetes, Docker, Helm, Tiller, Spinnaker, Cabin, Keel, Istio ちょっと調べただけでもごろごろ出てきました、
近いうちにまとめてみたいなと思っています。
Recent posts