Kubernetes Meetup Tokyoで発表しました。内容の補足もあるよ
Kubernetes Meetup Tokyoでここ1年くらいAmazon EKSに関わってきた内容を「1人運用を支えるAmazon EKSノウハウ」というタイトルで発表しました。
k8sjp.connpass.com
発表内容を振り返りつつ、補足も交えてここで紹介できればと思います。
発表資料は下記で公開しています。
対象システムについて
1つのシステムを動かしていること(1つのチームが面倒を見ているシステム)や規模感など発表内容のコンテキストを共有しました。
Kubernetesを利用するにあたってはどれくらいの規模感か、利用するチームが複数存在するかによって、権限分離を考慮しないといけなかったり、Kubernetesに対しての仕組み作りなどやることのレベルが違ってくると思います。
今回の話はかなり狭い範囲でKubernetesを利用している例だと思っています。
1人運用で大事なこと
Kubernetesを利用するにあたっては楽で簡素な仕組みにするのか、複雑で高度な仕組みにするのか、ユーザ次第です。
今回は楽で簡素な仕組みにしようという話です。
「プラットフォームの上でものを作るということ」のブログ記事はKubernetesを扱うにあたって重要な指摘をしていると思っています。
SIMPLEという話の参考情報になっています。
toris.io
Amazon EKS(Kubernetes)ノウハウ
Podの起動方法
Probeでセルフヒーリング、HPAとCluster AutoScalerでオートスケール、これはKubernetesを使うにあたっては基本セットだと思います。
AWSだとHPAのメトリクスにCloudWatchのメトリクスが使えます。
Podのリソース使用量を継続的に見直す
リソース使用量の監視はとりあえずPrometheusを使えば低コストでできると思います。
最近だとPrometheus OperatorがあるのでPrometheusのセットアップが楽になっていると思います。
不具合発生時のリスクを下げる
Argo Rolloutsを使おうという話をしました。
Argo Rolloutsについては、以前に下記の記事を書いたのですが、だいぶ古い情報になっています。(更新しなければ 。。。
この時点ではArgo Rollouts用のkubectl pluginは用意されておらず、kubectl patchコマンドでpodの昇格を行うようになっていました。
現在は下記のようにkubectlのサブコマンドがあるので便利になっています。
$ kubectl argo rollouts promote <rollout>
Kubernetesネイティブなツールは進化が早いの公式ドキュメントを追っていくのが利用にあたっての一番の近道だと思います。
Argo Rollouts - Kubernetes Progressive Delivery Controller
自分の経験では、まだ手動でのカナリーのステップ実行しかやっておらず。
そういう意味だとあまりArgo Rolloutsを使いこなしていないので、Analysisの機能を使ってのメトリクスの基準に応じたステップ実行ができると良いと思っています。
Kubernetesリソースの適用
Kubernetes利用者向けの環境を作ろうという話をしました。
このあたりの説明が雑だったので補足したいと思います。
CodeBuildで一連のコマンドをスクリプト的に実行できるので、細かい処理を色々行っています。
ただ大まかにやっていることは下記のようなことです。
アプリ開発者には、ワンコマンドで処理が実行できるように専用のシェルスクリプトを提供しています。
CIOpsではあると思うのですが、デプロイ実行などはアプリ開発者が手動で行っています。
デプロイは任意のタイミングで行いたいためです。
このCodeBuildのプロジェクトで環境変数の変更とコンテナのイメージ変更をカバーしています。
クラスタ構成
なるべくKubernetesの中を分離しないことを重視したプラクティスを説明しました。
運用を軽くするにはこのあたりの工夫は重要だと感じています。
クラスタのアップデート
EKS便利の一言。アップデートで苦労したことは今のところありません。
課題
AWSとKubernetesのリソース管理
eksctlのつらみを話しました。
Terraform管理にしておけば良かったと思っています。
TwitterのタイムラインでもTerraform派が多い印象でした。
Prometheus + Grafanaによる監視運用
監視システムを自前で運用するのはツライという話をしました。
感想
色々発表への反応を頂けて良かったです。