Kubernetes、はじめました

冷やし中華の季節になりましたので、Kubernetesをはじめました。もとい、はじめてしまいました。

前回のECSシリーズに比べると、だいぶ世界が広いシステムであり、1つのシリーズとしてまとめるとか、全部終わってから書き始めるとか、どうにもできそうになかったので少しずつ進めることにします。今回は、雑感とリンク集のみで、助走というか覚悟を決める回という位置づけになりやす。



これまでの率直な感想

触り始める前の僕

Kubernetesの情報がやけに目につくけど、なんか煽り感が強くて気に食わん…… ていうかクラウド界の「Linux」ってなんやねん俺は騙されんぞ!なんかイケ好かないシステムくさいな!!

数日間、情報収集した僕

このクラウド全盛期に、なんでいまさらクラウドの中にこんなプラットフォームを構築せなアカンねん、オンプレでやれ。

納得いく構成と構築まで頑張った僕

なんだかんだで手足のように動かせられるようになったし、Kubernetesちゃんに情も湧いてきたけど…… 一般的に勧められる代物ではないな。先人たちの言ってる通りやんけ!思ったより安定した構築と破壊ができるのが救いかな。


取り組む前に冷静に考える



イケ好かない理由を考える

マニフェスト
Kubernetesについて調べていると、とにかくマニフェスト(設定用のYAML)が大量に出現してきます。それ自体は手法が一貫していて良いのですが、問題はその設定をどう管理するかという疑問がついて回ります。

YAMLを書いて、コマンドでそれを食わせ、それ以外にも便利なツールがあって……ってのはわかったけど、まさかそれを全部セコセコと手動管理しないよね?という風に思わせるのが嫌悪感の原因でした。

クラウド・リソースの扱い方
例えばALBを使いたければ関連リソースを Kubernetes 側に作成してもらうのがスタンダードだったり、スポットインスタンスの取り扱い方を探してもどれもそれじゃダメでしょってのしか見つからなかったり、私にとって気に食わない構成がいくつか目に付きました。

これまでAWSを主軸にした基盤と経験があり、その良いところはある程度引き継いで構築したいという思いがあり、世間に散らばる構築手順を鵜呑みにするのは危ない、というのは一目瞭然でした。

「経験」と「覚悟」「両方」なくちゃぁならないのが云々

管理方法を決める
いままでたいしたシステム構築をしていないのに、いきなり Kubernetes っていう人はほぼいないと思います。なので、これまで何かしらの構成管理ツールやCIツールなどの自動化一式を蓄えているはずで、初手としてはそれを活用してKubernetesを管理できるのか、合わなそうなら新たに適切な管理方法を探す、ことに取り組んだほうがよさげです。

構築するにせよ運用するにせよ、このシステムは何度も破壊と再生を繰り返す経験が重要になるので、自動管理の手法を確立してから取り掛かるのが、モチベーションの低下を防ぎつつ、成功への近道となるでしょう。

適切な構成を実現していく
Kubernetesは少々自由度の高いシステムなので、自分で適切な構成を思い浮かべて実現/解決に向かう力が求められます。事例を読み漁り、山盛りのドキュメントを読み込み、エラー/バグ報告を探し、試す……がダメッッ!!その繰り返しです。

1つ1つ機能を構成していくにあたって何度も躓くのは確定事項なので、十分な時間の確保と覚悟が必要になります。とはいえ、私もいろいろなシステムを構築してきましたが、慣れさえすればシステムそのものの安定感は悪くないと実感しているので、取り組む価値は十分にあります。初見のロマサガ2よりは簡単なので大丈夫でしょう。

また、所詮、と言ったら怒られそうですが、所詮コンテナ・オーケストレーションシステムの1つです。これを導入すれば何がデキルということでもなく、自由度が高い中でどのような目的に向かって進むのか、または研究する中でどのような目的に相応しいのか見極めて提案していく、といった明確な指針を重視すべきですが、それはまぁどのシステムでも同じですね。

選択肢を用意する

コンテナを扱うシステムは他にもありますが、AWSが主軸の場合、最もベターな選択は ECS + EC2 でしょう。Fargateがもう少し安価になったり、CPUが新しくなれば Simple is best !! で ECS + Fargate を推したいところです。

EKS で Kubernetes を使うにしても、技術的に Kubernetes でやりきれるのかどうか。そもそもサービスが Kubernetes に合うのかどうか。という分岐点が出てくると思いますので、Kubernetes を楽しみつつも、従来のインスタンス構成を改良したり、ECSでもコンテナ運用できるように、と構えておくのが無難、というかそれが当たり前。くらいの位置づけだと思いますK8s。


今後の動向



構築の主軸

結構大変でしたが、AWS EKS + Terraform で自分なりに正着の1つと思える構成ができたので、ECSの時のように少しずつ分けて構築手順をまとめていくのと、運用に必要な調査結果や知識を出していければ、と思います。

Kubernetesの記事といっても、普通にAWSの知識を多く必要としますし、Terraformも黒魔術に近いことしますし、いろいろ入り乱れた進行になりそうですが、か、覚悟を決めて頑張るぞぃっ☆

本当にKubernetesでいいの?

ITインフラ全体からみると、Kubernetesはまだ極少数かもしれませんが、コンテナ業界としては色々選択肢がある中でも1つ2つ飛び抜けた存在であることは間違いなさそうです。それが多くの人にとって有用であるかはまた別として。

過去、CVS や Subversion が Git に取って代わった(よね?)ように、2年後に Kubernetes が当然のようにITインフラとして台頭している可能性はゼロではありません。現段階では、新しもの好きエンジニアの趣味枠であり、適切に構築できれば便利なコンテナ・プラットフォームであり、将来的な技術力への先行投資、という位置づけになると考えています。

そういう意味では、Kubernetesを本気で運用にまで持っていく気がないのであれば、そこそこの試験程度に抑えつつ、Kubernetes業界と主要クラウド・プラットフォームの動向に気を配っておく程度がベター……ですが、たまには海の物とも山の物ともつかぬシステムにダイブするのも、エンジニアの健康には必要なものです;‑)


リンク集

私が参考にさせてもらったページのリンク集です。
まだ道半ばなので今後、追加されていく可能性があります。

EKS