なになれ

IT系のことを記録していきます

Kubernetes Meetup Tokyoで発表しました。内容の補足もあるよ

Kubernetes Meetup Tokyoでここ1年くらいAmazon EKSに関わってきた内容を「1人運用を支えるAmazon EKSノウハウ」というタイトルで発表しました。
k8sjp.connpass.com

発表内容を振り返りつつ、補足も交えてここで紹介できればと思います。

発表資料は下記で公開しています。

speakerdeck.com

対象システムについて

1つのシステムを動かしていること(1つのチームが面倒を見ているシステム)や規模感など発表内容のコンテキストを共有しました。
Kubernetesを利用するにあたってはどれくらいの規模感か、利用するチームが複数存在するかによって、権限分離を考慮しないといけなかったり、Kubernetesに対しての仕組み作りなどやることのレベルが違ってくると思います。
今回の話はかなり狭い範囲でKubernetesを利用している例だと思っています。

1人運用で大事なこと

Kubernetesを利用するにあたっては楽で簡素な仕組みにするのか、複雑で高度な仕組みにするのか、ユーザ次第です。
今回は楽で簡素な仕組みにしようという話です。

「プラットフォームの上でものを作るということ」のブログ記事はKubernetesを扱うにあたって重要な指摘をしていると思っています。
SIMPLEという話の参考情報になっています。
toris.io

Amazon EKS(Kubernetes)ノウハウ

Podの起動方法

Probeでセルフヒーリング、HPAとCluster AutoScalerでオートスケール、これはKubernetesを使うにあたっては基本セットだと思います。

AWSだとHPAのメトリクスにCloudWatchのメトリクスが使えます。

aws.amazon.com

Podのリソース使用量を継続的に見直す

リソース使用量の監視はとりあえずPrometheusを使えば低コストでできると思います。
最近だとPrometheus OperatorがあるのでPrometheusのセットアップが楽になっていると思います。

GitHub - coreos/prometheus-operator: Prometheus Operator creates/configures/manages Prometheus clusters atop Kubernetes

不具合発生時のリスクを下げる

Argo Rolloutsを使おうという話をしました。
Argo Rolloutsについては、以前に下記の記事を書いたのですが、だいぶ古い情報になっています。(更新しなければ 。。。
この時点ではArgo Rollouts用のkubectl pluginは用意されておらず、kubectl patchコマンドでpodの昇格を行うようになっていました。

hi1280.hatenablog.com

現在は下記のようにkubectlのサブコマンドがあるので便利になっています。

$ kubectl argo rollouts promote <rollout>

Kubernetesネイティブなツールは進化が早いの公式ドキュメントを追っていくのが利用にあたっての一番の近道だと思います。

Argo Rollouts - Kubernetes Progressive Delivery Controller

自分の経験では、まだ手動でのカナリーのステップ実行しかやっておらず。
そういう意味だとあまりArgo Rolloutsを使いこなしていないので、Analysisの機能を使ってのメトリクスの基準に応じたステップ実行ができると良いと思っています。

Kubernetesリソースの適用

Kubernetes利用者向けの環境を作ろうという話をしました。
このあたりの説明が雑だったので補足したいと思います。
CodeBuildで一連のコマンドをスクリプト的に実行できるので、細かい処理を色々行っています。
ただ大まかにやっていることは下記のようなことです。

f:id:hi1280:20200729005102p:plain

アプリ開発者には、ワンコマンドで処理が実行できるように専用のシェルスクリプトを提供しています。

CIOpsではあると思うのですが、デプロイ実行などはアプリ開発者が手動で行っています。
デプロイは任意のタイミングで行いたいためです。
このCodeBuildのプロジェクトで環境変数の変更とコンテナのイメージ変更をカバーしています。

クラスタ構成

なるべくKubernetesの中を分離しないことを重視したプラクティスを説明しました。
運用を軽くするにはこのあたりの工夫は重要だと感じています。

クラスタのアップデート

EKS便利の一言。アップデートで苦労したことは今のところありません。

課題

AWSKubernetesのリソース管理

eksctlのつらみを話しました。
Terraform管理にしておけば良かったと思っています。
TwitterのタイムラインでもTerraform派が多い印象でした。

Prometheus + Grafanaによる監視運用

監視システムを自前で運用するのはツライという話をしました。

感想

色々発表への反応を頂けて良かったです。