第60节 生产化集群的管理


❤️💕💕新时代拥抱云原生,云原生具有环境统一、按需付费、即开即用、稳定性强特点。Myblog:http://nsddd.topopen in new window


[TOC]

开始

包括以下几个部分:

  • 计算节点相关
  • 操作系统选择
  • 节点资源管理
  • 节点异常检测
  • 常用节点问题排查手段
  • 基于 extended resource 扩展节点资源
  • 构建和管理高可用集群
  • Cluster Autoscaler
  • 集群管理实践案例分享
  • 多租户集群管理

计算节点相关

计算节点:

  • 如何批量安装和升级计算节点的操作系统?
  • 如何管理配置计算节点的网络信息?
  • 如何管理不同 SKU ( Stock Keeping Unit)的计算节点?
  • 如何快速下架故障的计算节点?
  • 如何快速扩缩集群的规模?

控制平面:

  • 如何在主节点上下载、安装和升级控制平面组件及其所需的配置文件?
  • 如何确保集群所需的其他插件,例如 CoreDNS、监控系统等部署完成?
  • 如何准备控制平面组件的各种安全证书?
  • 如何快速升级或回滚控制平面组件的版本?

SKU📜 对上面的解释:

SKU (Stock Keeping Unit) 是一个常见的概念,用于表示不同配置的 Kubernetes 节点。每个 SKU 都包含了不同的硬件配置和软件配置,例如 CPU、内存、存储、操作系统、Kubernetes 版本等等。不同的 SKU 适用于不同的场景和应用程序,可以根据需要选择合适的 SKU 进行部署。对于大规模的 Kubernetes 集群,通常需要同时部署多个 SKU,以便满足不同应用程序的需求和要求。

操作系统的选择

通用操作系统

  • Ubuntu
  • CentOS
  • Fedora

专为容器优化的操作系统

容器化技术出现之后,就有一些专门面对容器化的操作系统 ~

最小化操作系统

  • CoreOS
  • RedHat Atomic
  • Snappy Ubuntu Core
  • RancherOS

我们再在筛选操作系统的时候该怎么选择,这是一个问题 ~

操作系统评估和选型的标准

  • 是否有生态系统
  • 成熟度
  • 内核版本
  • 对运行时的支持
  • Init System
  • 包管理和系统升级
  • 安全

容器优化操作系统的优势

  • 原子级升级和回退
  • 更高的安全性
操作系统CentOSUbuntuCoreOSAtomic*SnappyRancherOS
分类通用操作系统通用操作系统容器优化容器优化容器优化容器优化
生态系统和成熟度成熟成熟最早的容器优化操作系统,不过公司体量小,目前已被收购。RedHat 出品,品质保证Canonical出品,最初为移动设备设计相对较新,RancherOS中运行的所有服务都是docker容器。

CoreOS 相当于是一个操作系统,而 CentOS 则是一种基于 RPM 包管理的 Linux 发行版。CoreOS 采用了容器化的方式来部署应用程序和服务,并且支持自动化部署、升级和管理。由于 CoreOS 可以通过 Docker 镜像来部署应用程序和服务,因此它非常适合作为云原生应用程序的基础平台。与此相比,CentOS 则是一种传统的操作系统,需要通过 RPM 包来安装和管理应用程序和服务。在云原生应用程序的场景下,使用 CoreOS 可以更加方便、灵活和高效地部署和管理应用程序和服务。

云原生的原则

云原生语境下追求的是不可变基础设施。所谓不可变基础设施,即指所有的基础设施组件都是不可修改的,任何对基础设施的更改都要通过创建新的组件来实现。

可变基础设施的风险

  • 在灾难发生的时候,难以重新构建服务。持续过多的手工操作,缺乏记录,会导致很难由标准初始化后的服务器来重新构建起等效的服务。
  • 在服务运行过程中,持续的修改服务器,就犹如程序中的可变变量的值发生变化而引入的状态不一致的并发风险。这些对于服务器的修改,同样会引入中间状态,从而导致不可预知的问题。

不可变基础设施(immutable infrastructure)

  • 不可变的容器镜像(只读,一层层叠加)
  • 不可变的主机操作系统

不可变的操作系统只允许修改/etc/var目录,其他目录均为只读。

Atomic*

Atomic是由Red Hat支持的软件包安装系统,可在多种发行版上使用,包括Fedora、CentOS和RHEL。Atomic采用不可变的操作系统,面向容器优化的基础设施,灵活且安全。它还支持操作系统升级和回滚的原子操作,使用起来非常方便。

多种 Distro:

  • Fedora
  • CentOS
  • RHEL

优势:

  • 不可变操作系统,面向容器优化的基础设施
    • 灵活和安全性较好
    • 只有/etc和/var可以修改,其他目录均为只读
  • 基于 rpm-ostree 管理系统包
    • rpm-ostree是一个开源项目,使得生产系统中构建镜像非常简单
    • 支持操作系统升级和回滚的原子操作

最小化主机操作系统

在云原生环境下,最小化主机操作系统是很重要的。只安装必要的工具,如支持系统运行的最小工具集,可以提高性能、稳定性和安全保障。任何调试工具,如性能排查和网络排查工具,均可以后期以容器形式运行。

以上是云原生基础设施的基本框架,只有通过不断的实践和总结,才能实现云原生的理想状态。

原则:

  • 最小化主机操作系统
  • 只安装必要的工具
    • 必要:支持系统运行的最小工具集
    • 任何调试工具,比如性能排查,网络排查工具,均可以后期以容器形式运行
  • 意义
    • 性能
    • 稳定性
    • 安全保障

操作系统构建流程

image-20230313202733661

ostree

提供一-个共享库( libostree)和一些列命令行 提供与 git 命令行一致的体验,可以提交或者下载一个完整的可启动的文件系统树 提供将 ostree 部署进 bootloader 的机制

  • https://github.com/ostreedev/ostree/blob/main/src/boot/dracut/module-setup.sh
install() {
    dracut_install /usr/lib/ostree/ostree-prepare-root
    inst_simple "${systemdsystemunitdir}/ostree-prepare-root.service"
    mkdir -p "${initdir}${systemdsystemconfdir}/initrd-root-fs.target.wants"
    ln_r "${systemdsystemunitdir}/ostree-prepare-root.service" \
        "${systemdsystemconfdir}/initrd-root-fs.target.wants/ostree-prepare-root.service"
}

构建 ostree

rpm-ostree

  • 基于 treefile 将 rpm 包构建成为 ostree
  • 管理 ostree 以及 bootloader 配置

treefile

  • refer:分支名(版本,cpu架构)
  • repo:rpm package repositories
  • packages:待安装组件

将 rpm 构建成 ostree

rpm-ostree compose tree --unified-core --cachedir=cache --repo=. /build-repo/path/to/treefile.json

加载 ostree

初始化项目

ostree admin os-init centos-atomic-host

导入 ostree repo

ostree remote add atomic http://ostree.svr/ostree

拉取 ostree

ostree pull atomic centos-atomic-host/8/x86_64/standard

部署 OS

ostree admin deploy --os=centos-atomic-hostcentos-atomic-host/8/x86_64/standard --karg=' root=/dev/atomicos/root'

操作系统加载

物理机:

  • 物理机通常需要通过 foreman 启动,foreman 通过 pxe boot,并加载 kickstart
  • kickstart 通过ostree deploy 即可完成操作系统的部署

虚拟机:

  • 需要通过镜像工具将 ostree 构建成 qcow2 格式,vhd, raw 等模式

END 链接