Skip to content

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

Graceful Upgrade

(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
$
Clone this wiki locally