云网牛站
所在位置:首页 > Linux云服务器 > 使用Fedora CoreOS在OpenStack Magnum上创建Kubernetes集群

使用Fedora CoreOS在OpenStack Magnum上创建Kubernetes集群

2021-05-29 16:09:18作者:戴均力稿源:云网牛站

本文介绍使用Fedora CoreOS在OpenStack Magnum上创建Kubernetes集群的具体步骤。

 

前言

OpenStack Magnum是由OpenStack Containers Team开发的OpenStack API服务,用于简化容器编排引擎(COE)在OpenStack Cloud平台中的部署,例如Kubernetes、Docker Swarm和Apache Mesos。在支持的三个引擎中,Kubernetes是最受欢迎的一个,所以本文完全关注Kubernetes。OpenStack Heat服务用作集群创建和管理操作的编排。

Magnum与其他OpenStack服务有很好的集成,例如用于卷管理的Cinder、用于其他服务之间的负载平衡的Octavia。这确保了与核心Kubernetes的无缝集成。本文中将用于构建Kubernetes实例的主要映像是Fedora CoreOS。

本文假设您已经有一个正在运行的OpenStack云平台,并配置了Cinder。我们的实验室环境基于在CentOS 8上运行的OpenStack Victoria。

您还应该在Workstation中配置OpenStack客户端,并能够使用OpenStack API端点进行访问。参考在Linux系统上安装和配置OpenStack Client(客户端)的方法

Cinder块存储服务必须已配置后端以用于Docker卷和实例数据存储。如果在Cinder上使用LVM,它应该有Docker卷使用的可用空间:

$ sudo vgs

使用Fedora CoreOS在OpenStack Magnum上创建Kubernetes集群

 

第1步:安装和配置Magnum容器服务

安装OpenStack Magnum软件包并使用以下指南进行配置:

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

之后确认以下设置:

$ sudo vim /etc/magnum/magnum.conf

[DEFAULT]

state_path = /var/lib/magnum

log_dir = /var/log/magnum

[certificates]

cert_manager_type = barbican

[trust]

cluster_user_trust = true

如果您没有Barbican服务设置,请配置。

重启Magnum服务:

sudo systemctl restart openstack-magnum-api openstack-magnum-conductor

确认Controller节点上的Magnum服务状态:

$ openstack coe service list

 

第2步:将Fedora CoreOS映像上传到Glance

Fedora CoreOS将用作通过Magnum配置的节点的底层操作系统。

访问Fedora CoreOS下载页面并选择一个发布流和匹配的OpenStack .xz 映像,地址在https://getfedora.org/en/coreos/。本文下载的是fedora-coreos-34.20210427.3.0-openstack.x86_64.qcow2.xz。

提取下载的image存档:

unxz fedora-coreos-34.20210427.3.0-openstack.x86_64.qcow2.xz

上传image一目了然:

openstack image create Fedora-CoreOS-34 \

  --public \

  --disk-format=qcow2 \

  --container-format=bare \

  --property os_distro='fedora-coreos' \

  --file=fedora-coreos-34.20210427.3.0-openstack.x86_64.qcow2

上传的image必须具有定义为适合集群驱动程序的属性“os_distro”。对于Fedora CoreOS,该值应该是fedora-coreos。

上传后确认image可用性:

$ openstack image list --column Name --column Status

使用Fedora CoreOS在OpenStack Magnum上创建Kubernetes集群

 

第3步:创建Kubernetes集群模板

集群模板向magnum描述了如何构建集群。我们的ClusterTemplate有Fedora CoreOS镜像的规范,所以使用这个ClusterTemplate的集群将基于Fedora CoreOS。但在定义模板之前,从OpenStack云中提取所有必需的变量/值。

列出SSH密钥对并记下将要使用的密钥对:

$ openstack keypair list

使用Fedora CoreOS在OpenStack Magnum上创建Kubernetes集群

列出创建的Neutron网络以识别私有和公共网络名称:

$ openstack network list --column Name --column Subnets

使用Fedora CoreOS在OpenStack Magnum上创建Kubernetes集群

列出可用的计算风格。如果没有,您可能需要为主节点和工作节点创建:

$ openstack flavor list --column Name --column RAM --column Disk --column VPCUs

使用Fedora CoreOS在OpenStack Magnum上创建Kubernetes集群

我将运行以下命令来创建Kubernetes集群模板:

openstack coe cluster template create k8s-cluster-template \

   --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.large \

   --volume-driver cinder \

   --docker-volume-size 10 \

   --network-driver calico \

   --docker-storage-driver overlay2 \

   --coe kubernetes

列出模板以确认它确实已创建:

$ openstack coe cluster template list

使用Fedora CoreOS在OpenStack Magnum上创建Kubernetes集群

可以从Horizo​​n Dashboard执行相同的ClusterTemplate创建过程,在Project > Container Infra > Cluster Templates > Create Cluster Template下:

使用Fedora CoreOS在OpenStack Magnum上创建Kubernetes集群

 

第4步:在OpenStack Magnum上创建Kubernetes集群

如果您将“cloud_provider_enabled”标签设置为true,则必须在magnum.conf中将cluster_user_trust设置为True:

$ sudo vim /etc/magnum/magnum.conf

cluster_user_trust = true

如果您进行了更改,请重新启动magnum Api和Conductor服务:

for i in api conductor; do sudo systemctl restart openstack-magnum-$i; done

使用ClusterTemplate名称作为创建集群的模板。该集群将产生一个主kubernetes节点和两个从属节点:

openstack coe cluster create k8s-cluster-01 \

    --cluster-template k8s-cluster-template \

    --master-count 1 \

    --node-count 2

列出kubernetes集群以检查创建状态:

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

使用Fedora CoreOS在OpenStack Magnum上创建Kubernetes集群

集群设置完成后,状态和health_status将更改:

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

使用Fedora CoreOS在OpenStack Magnum上创建Kubernetes集群

您应该看到Cinder卷已创建并附加到实例:

$ openstack volume list  --column Name --column Status --column Size

使用Fedora CoreOS在OpenStack Magnum上创建Kubernetes集群

要列出创建的虚拟机,请使用以下命令,这些命令有一个过滤器来限制显示的列数:

$ openstack server list --column Name --column Image --column Status

使用Fedora CoreOS在OpenStack Magnum上创建Kubernetes集群

在Web UI中看到的服务器列表:

使用Fedora CoreOS在OpenStack Magnum上创建Kubernetes集群

列出节点组:

$ openstack coe nodegroup list k8s-cluster-01

要检查所有群集堆栈的列表:

$ openstack stack list

对于已完成的设置,“Stack Status”应显示为CREATE_COMPLETE:

$ openstack stack list --column 'Stack Name' --column 'Stack Status'

使用Fedora CoreOS在OpenStack Magnum上创建Kubernetes集群

要检查单个集群的堆栈:

$ openstack stack show <stack-name or stack_id>

详细监控集群状态(例如创建、更新):

K8S_CLUSTER_HEAT_NAME=$(openstack stack list | awk "/\sk8s-cluster-/{print \$4}")

echo ${K8S_CLUSTER_HEAT_NAME}

openstack stack resource list ${K8S_CLUSTER_HEAT_NAME}

现在来访问Kubernetes集群节点。

Fedora CoreOS的登录用户是core。

列出OpenStack实例并显示网络信息:

$ openstack server list --column Name --column Networks

使用Fedora CoreOS在OpenStack Magnum上创建Kubernetes集群

使用核心用户名和公共IP登录到VM。您应该使用用于部署Kubernetes集群的SSH密钥的私钥:

$ ssh core@masterip

$ ssh core@workerip

SSH访问主节点示例:

$ ssh core@150.70.145.200

Enter passphrase for key '/Users/jmutai/.ssh/id_rsa':

Fedora CoreOS 34.20210427.3.0

Tracker: https://github.com/coreos/fedora-coreos-tracker

Discuss: https://discussion.fedoraproject.org/c/server/coreos/

[core@k8s-cluster-01-ohx564ufdsma-master-0 ~]$

要获取操作系统版本信息,请运行:

$ 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"

REDHAT_BUGZILLA_PRODUCT_VERSION=34

REDHAT_SUPPORT_PRODUCT="Fedora"

REDHAT_SUPPORT_PRODUCT_VERSION=34

PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"

VARIANT="CoreOS"

VARIANT_ID=coreos

OSTREE_VERSION='34.20210427.3.0'

DEFAULT_HOSTNAME=localhost

列出节点中正在运行的容器:

$ sudo docker ps

系统容器etcd、kubernetes和heat-agent将与podman一起安装:

$ sudo podman ps

使用Fedora CoreOS在OpenStack Magnum上创建Kubernetes集群

Worker节点上的Docker容器:

使用Fedora CoreOS在OpenStack Magnum上创建Kubernetes集群

 

第5步:使用CLI检索集群的配置

如果集群创建成功,则应该能够提取Kubernetes配置文件。Kubernetes配置文件包含访问集群所需的信息,即URL、访问凭据和证书。

Magnum允许您检索特定集群的配置。

创建一个目录来存储您的配置:

mkdir kubeconfigs

列出集群:

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

使用Fedora CoreOS在OpenStack Magnum上创建Kubernetes集群

然后拉取集群配置:

export cluster=k8s-cluster-01

openstack coe cluster config $cluster --dir ./kubeconfigs

创建名为config的文件:

$ ls ./kubeconfigs

config

以下再安装kubectl工具,参考安装及使用kubectl、kubectx和kubens轻松管理多个Kubernetes集群

安装完成后,导出包含下载的Kubernetes配置路径的变量KUBECONFIG:

export KUBECONFIG=<path_to_pulled_kubeconfig>

在我的设置中,这将是:

$ export KUBECONFIG=./kubeconfigs/config

验证配置是否有效:

$ kubectl cluster-info

Kubernetes control plane is running at https://150.70.145.200:6443

CoreDNS is running at https://150.70.145.200:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

$ kubectl get nodes

使用Fedora CoreOS在OpenStack Magnum上创建Kubernetes集群

要进一步调试和诊断集群问题,请使用“kubectl cluster-info dump”:

$ kubectl create ns sandbox

namespace/sandbox created

$ kubectl run --image=nginx mynginx -n sandbox

pod/mynginx created

$ kubectl get pods -n sandbox

使用Fedora CoreOS在OpenStack Magnum上创建Kubernetes集群

$ kubectl delete pod mynginx -n sandbox

 

相关主题

在Docker中运行本地Kubernetes集群

精选文章
热门文章