🗂

k8sクラスタ管理ツール kOps とは

2023/05/25に公開

はじめに

こんにちは、ポートのSREを担当している @yukionodera です。

今回は、kOps という kubernetes のクラスタ管理ツールについて書きます。

https://kops.sigs.k8s.io/

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

kops-build

ビルド実行後、validate で構築完了を待ちます。

kops-validate

この時点で既に、EC2インスタンスが実行されていることを確認できます。

kops-instance

構築が完了したようです。

kops-complet

正常に動いてそうですね!
kops-working

Delete the Cluster

最後に、クラスターを削除して終了となります。

kops delete cluster --name ${NAME}
kops delete cluster --name ${NAME} --yes

これにてkOps チュートリアルは完了です!

終わりに

今回は、kOps の概要とチュートリアルの実施について記載しました。

kOpsを利用することで、自前で構築するよりはるかに簡単にかつスピーディに、クラスタの構築ができそうです。
また、S3でのクラスタ設定のバックアップや dry-run の実行、冪等性の担保などもあり、何か不具合が生じた際の不安もかなり軽減してくれます。

利用シーンは限られてくると思いますが、参考になれば幸いです。

Discussion