kops で起動した Kubernetes クラスタを stop させる
Posted on
kops を使って AWS 上に Kubernetes クラスタを立ててみましたが、スキマ時間にしか触らないので使わないときはクラスタを stop させたくなりました。
kops delete cluster
だと VPC なども含めてクラスタを丸ごと削除します。課金対象の EC2 インスタンスだけ stop する方法を探していると、同じような issue がすでにありました。
やり方は単純で Master と Node を 0 台に設定するだけです。すると Auto Scaling Group によって稼働中のインスタンスが Terminate されます。というわけで、実際に試してみました。
ちなみに、この手順は Kubernetes 上で動いている Docker コンテナのことは一切考慮していません。永続化したいデータがある場合は気はつけてください。
Master と Node の台数を変更する
Master が 1 台、Node が 2 台起動しているクラスタがあります。今回はこれを stop してみます。
$ kops get ig
NAME ROLE MACHINETYPE MIN MAX SUBNETS
master-ap-northeast-1a Master m3.medium 1 1 ap-northeast-1a
nodes Node t2.medium 2 2 ap-northeast-1a,ap-northeast-1c
kops edit ig
で maxSize
と minSize
を 0 にします。
$ kops edit ig nodes
apiVersion: kops/v1alpha2
kind: InstanceGroup
metadata:
creationTimestamp: 2017-10-12T08:37:46Z
labels:
kops.k8s.io/cluster: k8s.manabusakai.com
name: nodes
spec:
image: kope.io/k8s-1.7-debian-jessie-amd64-hvm-ebs-2017-07-28
machineType: t2.medium
maxSize: 0
minSize: 0
role: Node
subnets:
- ap-northeast-1a
- ap-northeast-1c
$ kops edit ig master-ap-northeast-1a
apiVersion: kops/v1alpha2
kind: InstanceGroup
metadata:
creationTimestamp: 2017-10-12T08:37:46Z
labels:
kops.k8s.io/cluster: k8s.manabusakai.com
name: master-ap-northeast-1a
spec:
image: kope.io/k8s-1.7-debian-jessie-amd64-hvm-ebs-2017-07-28
machineType: m3.medium
maxSize: 0
minSize: 0
role: Master
subnets:
- ap-northeast-1a
まだ変更しただけで適用されていないので kops update cluster
で適用します。適用すると Node, Master の順に Auto Scaling Group の Desired が 0 台になります。
$ kops update cluster k8s.manabusakai.com --yes
I1016 17:58:31.205177 78958 executor.go:91] Tasks: 0 done / 65 total; 34 can run
I1016 17:58:32.110052 78958 executor.go:91] Tasks: 34 done / 65 total; 13 can run
I1016 17:58:32.687242 78958 executor.go:91] Tasks: 47 done / 65 total; 16 can run
I1016 17:58:33.211014 78958 executor.go:91] Tasks: 63 done / 65 total; 2 can run
I1016 17:58:33.380093 78958 executor.go:91] Tasks: 65 done / 65 total; 0 can run
I1016 17:58:33.380194 78958 dns.go:152] Pre-creating DNS records
I1016 17:58:33.985463 78958 update_cluster.go:247] Exporting kubecfg for cluster
Kops has set your kubectl context to k8s.manabusakai.com
Cluster changes have been applied to the cloud.
Changes may require instances to restart: kops rolling-update cluster
次に起動したいときは、逆の手順で maxSize
と minSize
を増やせば元に戻ります。
まとめ
少々雑な感じもしますが、検証環境であればこのやり方でも大丈夫でしょう。土日や夜間などは Kubernetes クラスタを stop させてコストを抑えたいですね。