关于kubernetes:如何通过-Kubernetes-管理不可变基础设施

5次阅读

共计 2304 个字符,预计需要花费 6 分钟才能阅读完成。

作者
王海龙,SUSE Rancher 中国社区技术经理,Linux Foundation APAC Evangelist,负责 Rancher 中国技术社区的保护和经营。领有 8 年的云计算畛域教训,经验了 OpenStack 到 Kubernetes 的技术改革,无论底层操作系统 Linux,还是虚拟化 KVM 或是 Docker 容器技术都有丰盛的运维和实践经验。

本文整顿自王海龙在 SUSECON 北京 2022 开源技术峰会上的主题演讲。

本文次要介绍如何通过 Kubernetes 在边缘设施上部署和治理操作系统,而后将这些边缘设备组建成一个 Kubernetes 集群,最初对立接入到 Rancher 中进行治理。

云原生技术的根底定义

云原生 置信大家曾经十分理解了,上图是 CNCF 对云原生的定义,也列出了云原生的代表技术,其中容器、服务网格、微服务、申明式 API 这些技术,置信大家都曾经十分相熟。

其中一项叫 不可变基础设施,这个概念并不常见,用起来和咱们传统形式有些抵触,有时候大家可能会感觉顺当,咱们就从不可变基础设施谈起。

Mutable vs Immutable

先来比照一下 可变和不可变,也就是 Mutable 和 Immutable。

从基础设施角度来看,Mutable 更偏向于咱们传统的运维视角,其实就是一个 update in-place,即在原地更新这样的理念,比方:您原来的主机上安装了 apache2,下面部署了业务,想换成 nginx,须要先卸载掉 apache2 服务,而后再重新安装一个 nginx,可能也须要重启服务或者零碎来让这次变更失效。这个过程,您的基础设施为了满足业务需要,进行了一次或者屡次变更,实际上它就是一个可变的基础设施。

Immutable 的核心思想是任何基础设施的实例一旦创立之后变成为只读状态,如需批改和降级,则应用新的实例进行替换。如果您有新的变更需要,就应该去筹备(provision)一个新的基础设施,而不是说在原来的根底上做一个本地的更新。

最大的区别,就是原来的 Mutable 人工干预的比拟多,须要靠人工去操作系统里进行各种更改。Immutable 的话,更偏差自动化,您曾经事后把基础设施及其依赖都定义好了,这时只须要去触发新的变更就能够实现变更。这里并不波及到去更改原始的基础设施,这对于基础设施来说,就变成不可变的了。

介绍完这两种理念,大家应该立即想到了容器技术。您能够构建一个镜像,而后在镜像的根底下来部署业务。如果呈现问题,咱们不会去容器里去做变更,而是从容器构建阶段去解决问题。所以从容器的角度,镜像就是一个不可变的基础设施。容器技术呈现后,Immutable 就变得十分直观,也呈现了相似 OCI Image 这样的标准。

Immutable 不只存在于容器畛域,也逐步下沉到了操作系统的层面,Immutable OS 也借助 Container 的理念,造成了许多 Container OS,比方:RancherOS,K3os,CoreOS。这些 OS 的理念,都是从这个角度衍生进去的。

Elemental-toolkit:提供 Container based OS 的自定义能力

咱们之前在应用操作系统的时候,很少本人构建;就算有非凡需要须要构建操作系统,咱们自定义的内容也不会特地多。

既然是 Container OS,那就应该像容器一样,可能交付给用户一个充沛自定义能力的操作系统。所以咱们做了一个叫 Elemental-toolkit 的工具,来让用户本人去构建一个自定义的 Container OS。

这个工具有两个十分重要的特点:

  • 能够应用 Dockerfile 定义操作系统,就像写原始的 docker images 那样。Elemental-toolkit 能够基于您写的 dockerfile 来去构建一个操作系统。这并不是一个简略的镜像,而是一个操作系统,这外面有内核、rootfs,还有您加的软件包。
  • 为了和 OCI Image 的理念整合,所以这个操作系统是能够应用 OCI Image 去做散发;也就是说您构建进去的操作系统,能够上传到 dockerhub。降级的时候,就间接到 dockerhub 去拉这个镜像,而后主动到您的操作系统上装置。也就是说您运维操作系统和运维容器没什么区别。

应用 Kubernetes 治理边缘基础设施

Elemental-toolkit 能够构建一个自定义的根底操作系统,而后就能够借助 Kubernetes 能力来去治理边缘基础设施。当然,还须要借助一些工具能力实现:

  • RancherD:其实就是一个部署工具,能够实现自定义部署 Rancher/k3s/rke2。RancherD 能够封装到由 Elemental-tools 构建的操作系统里,这样启动操作系统之后就会主动创立 K3s 集群。
  • RancherOS Operator:能够实现主动注册节点到集群,而后批量降级和治理操作系统的版本等一些性能。咱们能够通过 RancherOS Operator 来治理这些不可变的基础设施,也就是由 Elemental-toolkit 构建的这些不可变的操作系统。

Demo:通过 Kubernetes 在边缘设施上装置和治理 OS

上面咱们将通过 Demo 来给大家介绍如何通过 Kubernetes 在边缘设施上装置操作系统,如何通过 Kubernetes 在边缘设施上治理和降级操作系统。这个 Demo 分为几个外围阶段:

  • RancherOS Operator 装置和设置
  • 构建疏导 ISO 映像
  • 创立上游集群
  • 将 OS 装置到节点,并增加到集群
  • 更新 OS

我的项目地址:https://github.com/rancher-sa…

具体现场 Demo 内容,请参见本视频:https://www.bilibili.com/vide…

正文完
 0