云网牛站
所在位置:首页 > Linux云服务器 > 如何升级由OpenStack Magnum提供支持的Kubernetes集群

如何升级由OpenStack Magnum提供支持的Kubernetes集群

2021-05-31 15:21:10作者:苏局稿源:云网牛站

本文介绍升级由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版。

如何升级由OpenStack Magnum提供支持的Kubernetes集群

我的集群是从以下模板部署的:

# 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 Magnum提供支持的Kubernetes集群

升级完成后检查集群状态:

$ openstack coe cluster list --column name  --column status --column health_status

如何升级由OpenStack Magnum提供支持的Kubernetes集群

让我们下载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集群

这证实了OpenStack Magnum上Kubernetes集群的升级成功。

 

相关主题

在CentOS/Ubuntu上安装和配置OpenStack Magnum容器服务

精选文章
热门文章