一次 Rancher 和 openEuler 的上云之旅

模式珊瑚
• 阅读 1994
作者简介
张智博,SUSE Rancher 大中华区研发总监,一直活跃在研发一线,经历了 OpenStack 到 Kubernetes 的技术变革,在底层操作系统 Linux、虚拟化 KVM 和 Docker 容器技术领域都有丰富的研发和实践经验。

Rancher 是一套开源的企业级容器管理平台,支持大量的 Kubernetes 发行版以及 Linux 操作系统,将 openEuler Linux 纳入支持体系是我们近期开展的一项工作。

这是一次 Rancher 和 openEuler 的上云之旅,同时也是我们内部工程体系的一部分,一旦纳入一种新的 OS,就需要让它能在云端启用,这是云原生时代的大势所趋。本文展示了使用 AWS 平台这一上云过程,并搭建了一套 Rancher+openEuler 的环境用于展现这种能力。

文中提到的相关产品版本信息如下:

一次 Rancher 和 openEuler 的上云之旅

构建 openEuler AMI

openEuler 在 Cloud Image 这方面还不够完善,目前主要提供 ISO 镜像,在 Cloud Image 层面还只有一个简单的 QCOW2 Image。我们首先实现了一套工程化方法,将 openEuler QCOW2 Image 转换为 AWS AMI,这样我们可以在云端灵活部署启用。

这个过程需要做一些额外工作,我们重新调整了社区 QCOW2 Image 的 rootdisk 分区,引入了可以适配云环境的相关软件包,并通过 scripts+packer 工具实现了整体构建。构建 AMI 的同时,也顺带解决了以下问题:

  • 无法动态注入 ssh key;
  • 无法自动扩容根磁盘;
  • 禁用 Apparmor,确保容器正常启动(实际不应该直接禁用,后续会寻找更加合理的解决办法);
  • 默认内置云原生场景必要的基础软件包(避免测试部署时手动安装);
  • openEuler ARM64 系统缺少 ENA 驱动,导致 EC2 ARM 实例网络无法激活。

后续,我们会推动在 openEuler 社区建设 Cloud Image。对于云原生场景,很显然这是一项非常重要的基础工作。

部署 Rancher 以及下游集群

openEuler 虽然内置了 Docker 引擎,但最终我们仍然决定不使用 Docker。从Kubernetes 生态角度来看,Docker 已不再是必需品。Rancher 无论是管理平面还是下游集群,也不会强烈依赖 Docker;而且 Containerd 已经内置到 K3s 和 RKE2 中,也不需要 openEuler 的 Containerd 软件包。

在这个层面解耦是非常重要的,因为操作系统的软件包存在很强的依赖关系,减少这种和 OS 软件包的冲突,更有利于运维管理。未来,也会考虑将欧拉开源社区中的轻量化容器引擎 iSulad 等引入到我们的方案中,为客户提供更为灵活多样的选择。

我们设计了一个部署架构,它可以快速展示 Rancher+openEuler 的能力:

  • 使用 AMD64 AMI,启动一台 EC2 实例,部署 K3s;
  • 在此 K3s上,部署 Rancher Server;
  • 使用 ARM64 AMI,启动一台 EC2 实例,部署 K3s ARM64 版本,将其以导入方式纳管到 Rancher;
  • 使用 Rancher 中的 EC2 Node Driver,弹性创建 RKE2 集群,AMI 使用 AMD64 镜像。

Local K3s 和 Rancher Server 的安装较为简单,这里我们可以直接简化为两行脚本:

curl -sfL https://get.k3s.io | K3S_TOKEN=SUSERancherGC sh -s - server --cluster-init
curl https://raw.githubusercontent.com/cnrancher/autok3s/master/assets/rancher-setup/rancher-l7.sh | sh -

另一个 K3s ARM64 集群的创建和导入也十分简单,无需特别的参数处理。一旦 K3s ARM64 和 Rancher Server 都准备妥当之后,使用 Generic Import 导入即可。实际,我们可以看到这样的效果:

一次 Rancher 和 openEuler 的上云之旅

基于 EC2 Node Driver 配置弹性 RKE2 集群相对复杂一些。首先需要配置好 AWS 的访问密钥,Rancher 支持大量的公有云生态,在 AWS 上使用过程和其他云基本一致。

一次 Rancher 和 openEuler 的上云之旅

创建 RKE2 集群时,选择 EC2 Node Driver,配置 RKE2 节点模板,以及集群的基础参数配置。在 AWS 上,选择先前构建的 AMI,并使用 openEuler 作为 SSH User,同时选择 Spot 竞价实例,对于普通的测试环境可以极大程度减少费用。

一次 Rancher 和 openEuler 的上云之旅

通过 UI 以 SSH 灵活访问 RKE2 节点,这些节点使用 openEuler Linux。这取决于我们先前配置 openEuler AMI 以及其 SSH User。

一次 Rancher 和 openEuler 的上云之旅

使用 Node Drvier 方式最具特色的能力,就是可以快速进行集群扩容。因为 Rancher 连接了 EC2 API,并且会根据集群配置状态自动将部署任务下发给新的 openEuler 节点。

一次 Rancher 和 openEuler 的上云之旅

对于集群内的资源管理,可以切换到集群浏览视图,对每个 workload 资源精细化管理。

一次 Rancher 和 openEuler 的上云之旅

这样,我们就完成了 Rancher 和 openEuler 的初步上云之旅。一个单节点的管理平面,两个下游集群,分别是 K3s 集群和 RKE2 集群,并且 K3s 使用了 ARM64 系统。同时,一定程度展示了 Rancher 的多云多集群的管理能力。

一次 Rancher 和 openEuler 的上云之旅

未来商业化思考

通过 Rancher 对公有云的整合能力以及 Kubernetes 发行版的管理能力,可以很顺畅地将 openEuler 带入公有云环境。不但扩充了 Rancher 的兼容矩阵,也连接了 openEuler 生态。

SUSE 作为传统 Linux 厂商,也基于 openEuler 构建了自己的商业发行版 SUSE Euler。同时,Rancher 在商业化层面也有 Rancher 企业版,通过 Rancher 企业版和SUSE Euler 的组合,可以为客户带来更稳定的商业技术支持。

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
待兔 待兔
1年前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Easter79 Easter79
4年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
Stella981 Stella981
4年前
Rancher开源Harvester:基于K8s的超融合基础架构软件
2020年12月17日,业界应用最为广泛的Kubernetes管理平台创建者RancherLabs(以下简称Rancher)宣布推出全新开源软件Harvester,一个通过Kubernetes构建的超融合基础架构(HCI)软件。!图片(https://img.rwimg.top/7592_5649bc00e54d4b30a1419db9c4
Stella981 Stella981
4年前
QCon技术干货:个推基于Docker和Kubernetes的微服务实践
2016年伊始,Docker无比兴盛,如今Kubernetes万人瞩目。在这个无比需要创新与速度的时代,由容器、微服务、DevOps构成的云原生席卷整个IT界。在近期举办的QCon全球软件开发大会上,个推应用平台基础架构高级研发工程师王志豪,基于他在基础架构方面多年的经验,分享了《个推基于Docker和Kubernetes的微服务实践》。!QCon技术
Stella981 Stella981
4年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Stella981 Stella981
4年前
GitHub 上有哪些适合新手跟进的优质项目?
!(https://oscimg.oschina.net/oscnet/011f28e3bc332010e1442e6c00ed344805d.jpg)点击上方“迈微电子研发社”,选择“星标★”公众号重磅干货,第一时间送达!(https://oscimg.oschina.net/oscnet/cd44ba75f
Easter79 Easter79
4年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
4年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
容器、容器云和容器化PaaS平台之间到底是什么关系?
容器是一种操作系统级虚拟化技术,Docker是一种容器引擎。使用Docker来运行操作容器。但从容器自身来说,其提供的是IaaS层能力。Kubernetes提供了容器调度和管理的能力,加上云计算租户功能,实现容器云平台功能。而基于容器技术所构建的应用开发、应用托管和应用运维平台则可以称为容器化PaaS平台,它是一种轻量化PaaS实现。结合日志、监控、认证、权限等基础能力则可以构建企业级的平台和可复用服务,采用微服务架构实现企业技术服务中台能力,支撑企业业务敏捷研发和模式转型。