-
Notifications
You must be signed in to change notification settings - Fork 5
Kubespray: Kubernetes バージョンアップ機能
Kenichi Omichi edited this page Feb 23, 2021
·
5 revisions
Kubernetesクラスタのデプロイメントツールの一つである Kubespray には Kubernetes クラスタのバージョンアップ機能がある。 ここではその機能を解説する。
まずは公式ドキュメントの翻訳から
Kubespray では初期デプロイメントと同じ方法で Kubernetes クラスタのバージョンアップを行う。 つまり、各コンポーネントは初期デプロイメントと同様の順番でダウンすることになる。
また、Kubernetes クラスタを構成するコンポーネントのバージョンを個別に指定することが可能である。 たとえば、以下のコンポーネントのバージョンが存在する。
- docker_version
- kube_version
- etcd_version
- calico_version
- calico_cni_version
- weave_version
- flannel_version
- kubedns_version
(Unsafe Upgrade もあるが商用で使うことは考えられないので、ここでは Graceful Upgrade のみ説明する) Kubespray はクラスタアップデート実施中にノードの cordon, drain と uncordoning を行うことをサポートしている。 これが upgrade-cluster.yml が cluster.yml と分離されている理由だ。これが kube-master が少なくとも1つは デプロイされていることの条件となっている。 Graceful Upgrade は以下のコマンドで実施する。
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
kubespray01 Ready master 76m v1.17.13
kubespray02 Ready master 75m v1.17.13
kubespray03 Ready <none> 74m v1.17.13
$
$ ansible-playbook upgrade-cluster.yml -b -i inventory/sample/hosts.yml -e kube_version=v1.18.10
...
Tuesday 23 February 2021 04:50:47 +0000 (0:00:00.087) 0:11:49.221 ******
===============================================================================
kubernetes/master : kubeadm | Upgrade other masters ----------------------------------------------------------------------------------------------------------------- 40.94s
kubernetes/master : kubeadm | Upgrade first master ------------------------------------------------------------------------------------------------------------------ 27.14s
etcd : Gen_certs | Write etcd master certs -------------------------------------------------------------------------------------------------------------------------- 13.06s
etcd : Gen_certs | Write etcd master certs -------------------------------------------------------------------------------------------------------------------------- 12.51s
upgrade/pre-upgrade : Drain node ------------------------------------------------------------------------------------------------------------------------------------ 11.49s
container-engine/docker : ensure docker packages are installed ------------------------------------------------------------------------------------------------------ 10.30s
container-engine/docker : ensure docker packages are installed ------------------------------------------------------------------------------------------------------- 9.12s
etcd : Gen_certs | Gather etcd master certs -------------------------------------------------------------------------------------------------------------------------- 9.01s
etcd : Gen_certs | Gather etcd master certs -------------------------------------------------------------------------------------------------------------------------- 8.41s
upgrade/pre-upgrade : Drain node ------------------------------------------------------------------------------------------------------------------------------------- 7.45s
kubernetes/master : kubeadm | write out kubeadm certs ---------------------------------------------------------------------------------------------------------------- 6.77s
kubernetes-apps/ansible : Kubernetes Apps | Start Resources ---------------------------------------------------------------------------------------------------------- 6.69s
kubernetes-apps/ansible : Kubernetes Apps | Lay Down CoreDNS Template ------------------------------------------------------------------------------------------------ 6.48s
kubernetes-apps/metrics_server : Metrics Server | Create manifests --------------------------------------------------------------------------------------------------- 5.76s
kubernetes-apps/network_plugin/flannel : Flannel | Wait for flannel subnet.env file presence ------------------------------------------------------------------------- 5.27s
Gather necessary facts ----------------------------------------------------------------------------------------------------------------------------------------------- 4.86s
download : download | Download files / images ------------------------------------------------------------------------------------------------------------------------ 4.86s
kubernetes-apps/metrics_server : Metrics Server | Apply manifests ---------------------------------------------------------------------------------------------------- 4.32s
download : download_file | Download item ----------------------------------------------------------------------------------------------------------------------------- 4.14s
download : download_container | Download image if required ----------------------------------------------------------------------------------------------------------- 3.99s
$
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
kubespray01 Ready master 96m v1.18.10
kubespray02 Ready master 96m v1.18.10
kubespray03 Ready <none> 94m v1.18.10
$