SREからみたk8sのメリット
コンテナやk8sが普及しつつありますが、それを仕事で使うならば、
あまりそれを知らない顧客や上司にそれがなんであるか、なぜそれを使うのかを
説明しなければならないでしょう。
ただ説明する相手がエンジニアならば、k8sをしらない、コンテナに詳しくない、
しかし旧来の知識を持ち合わせている方ならばある程度説得できるのではないのでしょうか。
ここからがSRE、インフラエンジニアとして k8s を採用するメリットです。
まず、この記事を参考にさせてもらいました。
"Kubernetes を利用する7つのメリット"
そのうえで、この7つのメリットに対して私の考えを書いていこうと思います。
障害に強い自己回復機能
k8s は基本複数ノードで構成されており、Podを自動で分散してくれます。
1ノードがダウンしても他ノードでpodが自動で復活し、
つまり冗長性が容易に確保可能です。HA、High Availability ですね。
アプリケーションの効率的な新機能リリースが可能
k8s でPodを更新した時、複数 Pod のうち切り離して更新、復帰させて
また別の Pod を切り離して更新・・・つまりローリングアップデートを
自動でやってくれます。オンプレ時代、ここを手動でやってた方からすると
とても楽になることがわかるかと思います。
アップデート中の Pod は動作止まりますが、他の Pod は継続して動いていますので
無停止で更新ができる、ということになります。
柔軟にスケーリングできる
先ほどの通りk8sが複数ノードで構成されており、
さらに単一ノードでもリソースが余っているならPodを増やしたり、
必要時に性能を上げ、不要時は下げるというようなことも可能です。
クラウドの場合特に使った分だけ課金(Pay-as-you-go)ということもあり、節約につながります。
(リソースが使われてないならインスタンスを減らす等の設定が要りますが)
オンプレミス・クラウドの両環境で利用可能
rasberryPiでおうちk8sクラスタなんかもできちゃいます。
エンタープライズなら、OpenShiftとかもあります。
ただ、クラウドで使うのが敷居が低いです。
オンプレミスで作るとなると相当の労力がいります。誤家庭・・・
サービスディスカバリーで動作を把握できる
こちらは kubectl の様々なコマンドで状況把握ができます。
(・・・が自分はまだまだ勉強中)
高速・軽量な起動で開発スピードを加速できる
慣れれば、コンテナベース、さらにIaCでコード書いて
githubにあげてgithub actions等でデプロイ、というように
CI/CDパイプラインを回せるようになれば開発は加速できるでしょう。
オンプレでGUIぽちぽちしてた頃に比べれば格段の進化ですね。
オンプレでもGitlabとかでできますが、なかなか労力が…
セキュリティを強化できる
k8s RBAC をしっかり活用できるなら…ですね。
ここはまだまだ勉強中です。
パブリッククラウド(Azure AKS)によるメリット
ここからはAKS、k8s on Azure の話です。
VMSS仮想マシンセットで冗長性、スケーリングが強固になります。
VMSSのノード数字自動調性でのスケーリング強化、
可用性ゾーンでの冗長性強化も図れます。
・サービスディスカバリーで動作を把握
AzureMonitor/loganalytics/Sentinelによる監視強化が期待できまず
セキュリティを強化
AzureRBAC有効化でAADでのユーザ一括管理が可能に。
今のところ分かっているのはこんなところでしょうか。
引き続き精進します。
Discussion