本文介绍升级由OpenStack Magnum提供支持的Kubernetes集群的方法。内容有:确定当前的Kubernetes版本、使用升级版本创建新的集群模板、使用新模板升级您的Kubernetes集群。
前言 如何升级由OpenStack Magnum提供支持的Kubernetes集群?对于托管Kubernetes服务(例如Magnum编排引擎上的服务),滚动升级是用户可能需要的一项重要功能。本文的主要依赖项是使用Magnum部署在Openstack上的工作Kubernetes集群,参考使用Fedora CoreOS在OpenStack Magnum上创建Kubernetes集群。 请注意,Kubernetes版本升级仅支持Fedora Atomic和Fedora CoreOS驱动程序。我的集群使用Fedora CoreOS作为基本操作系统: $ cat /etc/os-release NAME=Fedora VERSION="34.20210427.3.0 (CoreOS)" ID=fedora VERSION_ID=34 VERSION_CODENAME="" PLATFORM_ID="platform:f34" PRETTY_NAME="Fedora CoreOS 34.20210427.3.0" ANSI_COLOR="0;38;2;60;110;180" LOGO=fedora-logo-icon CPE_NAME="cpe:/o:fedoraproject:fedora:34" HOME_URL="https://getfedora.org/coreos/" DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora-coreos/" SUPPORT_URL="https://github.com/coreos/fedora-coreos-tracker/" BUG_REPORT_URL="https://github.com/coreos/fedora-coreos-tracker/" REDHAT_BUGZILLA_PRODUCT="Fedora" .... kube_tag标签允许用户根据Fedora CoreOS映像(https://github.com/kubernetes/kubernetes/releases)的容器标签选择特定的Kubernetes版本。如果未设置此标签,则在集群配置期间使用当前Magnum版本的默认Kubernetes版本。
第1步:确定当前的Kubernetes版本 获取当前的Kubernetes版本: $ kubectl version --short Server Version: v1.18.2 参考:安装及使用kubectl、kubectx和kubens轻松管理多个Kubernetes集群。 我们将按照以下步骤升级我们的集群: 1、创建一个新的Magnum Kubernetes集群模板,这应该与之前的模板类似,只是kube_tag标签引用了较新版本的Kubernetes。 2、启动集群滚动升级。
第2步:使用升级版本创建新的集群模板 查看Magnum和Kubernetes版本兼容性矩阵,如下图所示,以清楚了解OpenStack Magnum安装中支持的版本。由于我的设置基于Victoria,我应该能够从1.18.2版升级到1.18.9版。
我的集群是从以下模板部署的: # Cluster Template Creation openstack coe cluster template create k8s-cluster-template-v1.18.2 \ --image Fedora-CoreOS-34 \ --keypair admin \ --external-network public \ --fixed-network private \ --fixed-subnet private_subnet \ --dns-nameserver 8.8.8.8 \ --flavor m1.medium \ --master-flavor m1.medium \ --volume-driver cinder \ --docker-volume-size 5 \ --network-driver calico \ --docker-storage-driver overlay2 \ --coe kubernetes \ --labels kube_tag=v1.18.2 # Initial Cluster Creation openstack coe cluster create k8s-cluster-02 \ --cluster-template k8s-cluster-template-v1.18.2 \ --master-count 1 \ --node-count 1 在继续升级之前,确认创建的集群是完整的并且处于正常状态: $ openstack coe cluster list -f json [ { "uuid": "48eb36b9-7f8b-4442-8637-bebcf078ca8b", "name": "k8s-cluster-01", "keypair": "admin", "node_count": 2, "master_count": 1, "status": "CREATE_COMPLETE", "health_status": "HEALTHY" }, { "uuid": "e5ebf8aa-38f0-4082-a665-5bdb4f4769f9", "name": "k8s-cluster-02", "keypair": "admin", "node_count": 1, "master_count": 1, "status": "CREATE_COMPLETE", "health_status": "HEALTHY" } ] 创建具有更新版本的新集群模板。我的如下: openstack coe cluster template create k8s-cluster-template-v1.18.9 \ --image Fedora-CoreOS-34 \ --keypair admin \ --external-network public \ --fixed-network private \ --fixed-subnet private_subnet \ --dns-nameserver 8.8.8.8 \ --flavor m1.medium \ --master-flavor m1.medium \ --volume-driver cinder \ --docker-volume-size 5 \ --network-driver calico \ --docker-storage-driver overlay2 \ --coe kubernetes \ --labels kube_tag=v1.18.9 确认创建成功: $ openstack coe cluster template list -f json openstack coe cluster template list -f json [ { "uuid": "b05dcb03-07a7-4b66-beee-42383ff16e9b", "name": "k8s-cluster-template" }, { "uuid": "77cc9112-b7ba-4531-9be5-6923528cd0eb", "name": "k8s-cluster-template-v1.18.2" }, { "uuid": "cc33f457-866a-440f-ac78-6c3be713ef73", "name": "k8s-cluster-template-v1.18.9" } ] 主要说明: 1、您可以在OpenStack Victoria及以下版本中升级到的最高版本是1.18.9。这是因为kube_tag大于1.18.x的官方Hyperkube映像已停止使用。无法传递允许用户为Hyperkube容器源指定自定义前缀的标签。 2、如果您正在运行OpenStack Wallaby,您可以添加hyperkube_prefix标签来为Hyperkube容器源指定自定义前缀: #docker.io/rancher/ #docker.io/kubesphere/hyperkube #Example: --labels kube_tag=v1.21.1,hyperkube_prefix=docker.io/rancher/ #Checking available tags sudo podman image search docker.io/rancher/hyperkube --list-tags --limit 1000 您还可以拉取、标记并上传到您自己的注册表或docker.io: #Examples ## Search available tags for particular release podman image search docker.io/rancher/hyperkube --list-tags --limit 1000 | grep 1.21 # Pull podman pull docker.io/rancher/hyperkube:v1.21.1-rancher1 # Login to docker.io $ podman login docker.io Username: jmutai Password: Login Succeeded! # Tag image $ podman tag docker.io/rancher/hyperkube:v1.21.1-rancher1 docker.io/jmutai/hyperkube:v1.21.1 # Push image to registry $ podman push docker.io/jmutai/hyperkube:v1.21.1 # I can the use the labels below in the template --labels kube_tag=v1.21.1,hyperkube_prefix=docker.io/jmutai/
第3步:使用新模板升级您的Kubernetes集群 运行以下命令以触发Kubernetes版本的滚动升级: $ openstack coe cluster upgrade <cluster ID> <new cluster template ID> 例子: $ openstack coe cluster upgrade k8s-cluster-02 k8s-cluster-template-v1.18.9 Request to upgrade cluster k8s-cluster-01 has been accepted. 状态应显示正在进行更新。 $ openstack coe cluster list --column name --column status --column health_status
升级完成后检查集群状态: $ openstack coe cluster list --column name --column status --column health_status
让我们下载kubeconfig并确认状态: $ mkdir k8s-cluster-02 $ openstack coe cluster config --dir ./k8s-cluster-02 k8s-cluster-02 --force 检查Kubernetes版本: $ export KUBECONFIG=./k8s-cluster-02/config $ kubectl version --short Client Version: v1.21.1 Server Version: v1.18.9 升级到版本1.21.1的示例: $ kubectl version --short Client Version: v1.21.1 Server Version: v1.21.1 $ kubectl get nodes
这证实了OpenStack Magnum上Kubernetes集群的升级成功。
相关主题 |