サーバーの再起動を伴うメンテナンス中は、コンテナの配備・更新・削除等できなくなります。
コンテナの配備・更新・削除が不要なタイミングでメンテナンスを実施してください。
Kubernetes masterサーバーのメンテナンスの過程でサーバー再起動を実施しても、Container Managementで動作するコンテナに影響はありません。
ここでは、Container Managementで稼働中のアプリケーションを停止させずに、nodeサーバーの再起動を伴うメンテナンスを実施する方法について説明します。
Kubernetes masterサーバーにログインして、以下のコマンドを実行し、メンテナンスを実施するKubernetes nodeサーバーのNAMEを確認します。
$ kubectl get nodes -o custom-columns="NAME:{metadata.name},IP:{status.addresses[].address}" NAME IP az1-sghpf-service-server-k8s-master-00.novalocal 172.25.0.4 az1-sghpf-service-server-k8s-node-00.novalocal 172.25.0.5 az1-sghpf-service-server-k8s-node-01.novalocal 172.25.0.6
以下のコマンドを実行し、nodeからPodを退避します。
<node_name>にはkubectl get nodesコマンドで確認した、Kubernetes nodeサーバーのNAMEを指定します。
$ kubectl drain --ignore-daemonsets --force --delete-local-data <node_name>
上記コマンドを実行すると、Podが別のnodeへと退避され、新しいPodがスケジュールされなくなります。
注意
ReplicaSetで管理されていないPodは、別のnodeに退避されません。
ReplicaSetについての詳細はKubernetesの公式ドキュメントを参照してください。
上記コマンドを実行すると、emptyDir上のデータはPodの退避に伴い削除されます。必要に応じてemptyDirをマウントしているPodについて、事前にデータの退避をしてください。
メンテナンスを実施します。
メンテナンス作業完了後、以下のコマンドを実行し、新しいPodをスケジュール可能にします。
<node_name>にはkubectl drainコマンドを実行したKubernetes nodeサーバーのNAMEを指定します。
$ kubectl uncordon <node_name>