k8sクラスタ管理ツール kOps とは
はじめに
こんにちは、ポートのSREを担当している @yukionodera です。
今回は、kOps という kubernetes のクラスタ管理ツールについて書きます。
What is kOps?
kOps とは、クラスタのための kubectl のようなものです。
kOps を利用してクラスタを管理することで、マスターやワーカーの作成、削除、アップグレードなどの運用作業が楽になります。
もちろん、ノードを作成するためには、AWS、GCPなどのクラウドサービスが必要になりますが、それでも一から自前で構築管理するより何倍も作業を楽にしてくれます。
What can we do with it?
kOps を利用することで、k8sのクラスタ管理に必要な作業を減らし、k8s クラスタを運用しやすいものにしてくれます。
下記はその機能の一部です。
- 高可用性が担保された k8s クラスタの、自動プロビジョニング
- 冪等性の確保と、dry-run による状態同期、差分管理
- Terraform コードの生成
Getting Started with kOps on AWS
https://kops.sigs.k8s.io/getting_started/aws/
今回は、このチュートリアルを実行して、kOps の基本を抑えます。
kOps には kOps CLI があるので、基本はそれを使ってクラスタ構築を進めていくことになります。
今回は kOps の紹介記事なので詳細は省きますが、事前に下記の準備が必要になります。
詳細は公式サイト を参照してください。
- Setup IAM user
- Configure DNS
- Testing your DNS setup
- Create Cluster State storage
事前準備が完了したら、チュートリアルを進めていきます。
Creating your first cluster
まずは、環境変数の設定を行います。
ここで指定する値は、コマンド実行時に都度オプション指定で実行することも可能です。
export NAME=myfirstcluster.example.com
export KOPS_STATE_STORE=s3://prefix-example-com-state-store
次は下記コマンドの実行です。
これを実行することで、クラスタの設定を作成し、その設定をS3バケットに保存することができます。
あくまでも設定を作成、保存するだけで、実際にクラスタが構築されるわけではありません。
kops create cluster \
--name=${NAME} \
--cloud=aws \
--zones=us-west-2a \
--discovery-store=${s3_domain}
これでクラスターの設定を作成し、その設定をS3バケットに保存するところまで完了しました。
Customize Cluster Configuration
下記コマンドで、Cluster の設定を編集可能となっています。
必要に応じて修正してください。
kops edit cluster --name ${NAME}
設定が完了したら、あとはビルドするだけです。
Build the Cluster
クラスターの設定が完了したら、下記のコマンドで、保存した設定からクラスターをビルドします。
kops update cluster --name ${NAME} --yes --admin
事前にクラスタの設定を確認したい場合は、--yes
なしで実行することで、dry-run が可能です。
kops update cluster --name ${NAME} --admin
ビルド実行後、validate で構築完了を待ちます。
この時点で既に、EC2インスタンスが実行されていることを確認できます。
構築が完了したようです。
正常に動いてそうですね!
Delete the Cluster
最後に、クラスターを削除して終了となります。
kops delete cluster --name ${NAME}
kops delete cluster --name ${NAME} --yes
これにてkOps チュートリアルは完了です!
終わりに
今回は、kOps の概要とチュートリアルの実施について記載しました。
kOpsを利用することで、自前で構築するよりはるかに簡単にかつスピーディに、クラスタの構築ができそうです。
また、S3でのクラスタ設定のバックアップや dry-run の実行、冪等性の担保などもあり、何か不具合が生じた際の不安もかなり軽減してくれます。
利用シーンは限られてくると思いますが、参考になれば幸いです。
Discussion