Docker, Kubernetes 学習とツールとコンピュータサイエンス

f:id:kyagi:20180216023000p:plain

Docker, Kubernetes 学習の進めかた

Udemy の Learning Docker and Kubernetes by Lab を完了した。実際に手を動かしながらだったので 1 週間ほどかかってしまった。内容はかなりよかった。Docker の基礎から Linux カーネルとの関連(Network Namespaces, cgroups)、docker-compose, Docker Swarm, そして Kubernetes の紹介をそれぞれ理論→実践の順番で進めていく形式だったのでよく理解できた。

Kubernetes については 57 アイテムのうち 9 つでアーキテクチャと minikube を使った簡単な実例だけだったので、別に Learn DevOps: The Complete Kubernetes Course で学習を進めている。本家の https://kubernetes.io/ にも katacoda などを使用して理解を促すコンテンツもあるが、本家はどちらかというとリファレンス的な読み方を前提とした構成になっているように感じられる。基礎から手を動かして進めるのであれば Udemy のコースのほうがよいと思った。

Play with DockerPlay with Kubernetes など制限時間はあるが、ブラウザで体験できるプレイグラウンドなサービスもあるので、これらを組織の研修やプレゼンに活かす方法を考えている(特に直接 Docker や Kubernetes に触れることがないアプリケーション開発チームのエンジニアに対して有効な手段となるのではないかと唸っている)

個人的に印象深かったツールは Docker Swarm Visualizer だ。どのノードでどのコンテナが動いているかを可視化できる。これは比較的小規模なクラスタを前提として Docker Swarm の特徴をよく活かしたツールだと思う。Kubernetes にはないし(そもそも Kubernetes Dashboard や kubectl はそういう設計ではない)、同様のことをやろうとするならば kubectl describe pod だろうか。

github.com

Kubernetes 学習環境の比較

お手軽さ 環境 ツール コメント
最もお手軽 ブラウザ Play with Kubernetes お手軽だが最初は無理。自分で yaml がかけるようになったら研修コースやプレゼンで使えそう
お手軽 Mac/Win/Linux minikube クラスタは一つのノードのみの構成となるが kubectl でのリソース作成の練習にはよい
お手軽 AWS kops 簡単だが Route 53 や IAM の設定があるので AWS に慣れている必要がある(慣れていれば常識的なことをやるだけ)
??? AWS Amazon EKS プレビュー中なのでまだ使用できない
お手軽(だと思う) GCP GCP Kubernetes Engine 少しだけ触ったことがあるが、個人的に GCP ではなく AWS に集中する方針なので ???

Kubernetes は GCP で触るのが王道なのかもだけど、個人的な選択と集中の方針として AWS に集中投資していくので評価は ? としている。

コンピュータサイエンスの理論を学ぶことの大切さ

Swarm mode cluster architecture で紹介されていたものだが、これらの技術やアルゴリズムについては概要だけでも知っておくと、エンジニア人生がより楽しくなると思う。Kubernetes の原型である Borg system の論文は(細かいところはともかくとして)図も豊富でわかりやすいし、基本的な考え方がよくわかるので個人的にはとても気に入っている。

Large-scale cluster management at Google with Borg – Google AI

https://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/43438.pdf

grpc.io

developers.google.com

http://thesecretlivesofdata.com/raft/

Gossip protocol - Wikipedia

Paxos (computer science) - Wikipedia

いわゆる、コンピュータサイエンスを専攻した方であれば、これらはすでに体系的に学んでいるものなのかもしれない。私のような雑草エンジニアはその時その時で自分の知識のスキマを見つけて埋めていくしかない。だが、それもまた楽しい。ԅ( ˘ω˘ԅ)