マンガっぽくKubernetesを勉強してみる①
Dockerができないこと
それはどういうこと…?
Dockerが得意なのは、1つのホストでコンテナを動かすことなの
ふむふむ?(服が戻っている…)
イメージやコンテナ自体をexportして、他のホストに持っていくことは出来るんだけど、 それぞれで動いてるコンテナの状態管理とかは苦手なんだ
それぞれのサーバでdockerコマンド打つ必要があるね…数が増えるとメンドそう
そこで、コンテナオーケストレーションっていうやり方があって、 googleが作ったKubernetesというOSSが主流になってるよ!
Kubernetesを使うと、コンテナの一元管理に加え、コンテナのスケーリングやデプロイ、アップデートを自動化できる。
さっきの丸いのはこれのマークだったのね!
この記事の目的
OSSのKubernetesを理解するための勉強を目的とする。
勉強中のため、記載した内容については後日訂正する可能性もあります。
Kubernetesができることざっくり
ところでコンテナおーけすとれーしょんってなに…
コンテナを使ったシステム運用を自動化できるってことだね。 VMでいうと、負荷分散したり台数増やしたり、サーバ落ちたら再起動したり
そして何より良いのが、そういう自動化の定義をymlファイルに記述して管理できる!
おおー!でたymlファイル!つまりこれも使い回せる?!
そうそう!…という訳で楽するために、2人で勉強しよう♪
ええっ!?(システム運用とかまだやる予定ないんですけど…)
ひとまずKubernetesができることを絵に描いてみたよ
スケーリング/オートスケーリング
イメージからコンテナを複製して、負荷分散や耐障害性をアップさせる。
また、コンテナの増減を自動で行う。
スケジューリング
コンテナをサーバに配置する。配置の条件を色々設定可能。
セルフヒーリング
コンテナのプロセスが落ちたりサーバに障害が発生しても、コンテナを自動復旧する。
リソース管理
サーバリソース状況に合わせてコンテナを配置する。
サービスディスカバリ/ロードバランシング
コンテナ増減した場合も、ルーティングできるように制御する。
また、アップデート時や障害時にコンテナを切り離したりもする。
いろいろデキるんだねー
他にも設定ファイルとかログを管理したり、コンテナのアップデートをいい感じにやってくれたりするよ
Kubernetesのインストール
Kubernetesを構築する方法はいくつかあるんだけど…その前にどういう構成になってるか整理してみよう
うわぁ、なんかフクザツそう…dockerみたいに一つのサーバじゃないから、インストール作業だけでひと苦労…?
コンテナを実際に動かすNodeサーバと、Nodeたちを管理するMaster Nodeサーバ、そしてクライアントからMaster NodeにAPIを送るCLI、という感じの構成だね
これもdockerでカンタンにできないのかなぁ…
構築ツールは色々作られていて、そういうのもあるみたい。でもまぁ、目的によって使うツール・サービスが変わってくるね
プロダクション環境として構築
自前で全部構築するか、GCP/Azure/AWSといったパブリッククラウドのマネージドサービスを利用する方法があるよ
自前の場合、公式の構築ツールkubeadmを使う感じ
やっぱりムズいー!クラウドのサービス使って全部丸投げしたい!!
自前運用も大変って聞くし、全然アリだよね…
動作確認・個人開発環境
1台のホスト上に構築
minikubeは1つのホスト上に仮想マシンを立てる方法で、他の2つはコンテナを利用する方法。分かりやすいリンク貼っておきます…!
Minikubeを使用してローカル環境でKubernetesを動かす - Kubernetes
microk8s を使って3分でローカル Kubernetes 環境を構築する - mhiro2 - Medium
お手軽Kubernetesクラスタ作成ツール "kind"の紹介 - Cybozu Inside Out | サイボウズエンジニアのブログ
たすかる!
webサービスを利用
webブラウザ上でお手軽に動作確認できるから、勉強はこっちで試しながらが良さそうね
ブラウザだけで3分でKubernetesが試せるKatacoda - Qiita
そうしましょう…!
つづく。