Rancher

github: rancher, rancher-docs, rke2, rke2-doc

什么是 Rancher?

Rancher 是一个 Kubernetes 管理工具,让你能在任何地方和任何提供商上部署和运行集群。

Rancher 可以创建来自 Kubernetes 托管服务提供商的集群,创建节点并安装 Kubernetes,或者导入在任何地方运行的现有 Kubernetes 集群。

Rancher 基于 Kubernetes 添加了新的功能,包括统一所有集群的身份验证和 RBAC,让系统管理员从一个位置控制全部集群的访问。

此外,Rancher 可以为集群和资源提供更精细的监控和告警,将日志发送到外部提供商,并通过应用商店(Application Catalog)直接集成 Helm。如果你拥有外部 CI/CD 系统,你可以将其与 Rancher 对接。没有的话,你也可以使用 Rancher 提供的 Fleet 自动部署和升级工作负载。

Rancher 是一个 全栈式 的 Kubernetes 容器管理平台,为你提供在任何地方都能成功运行 Kubernetes 的工具。

RKE2

logo-horizontal-rke2

介绍

RKE2,也称为 RKE Government,是 Rancher 的下一代 Kubernetes 发行版。

它是一个完全合规的 Kubernetes 发行版,专注于安全和合规性。

为了实现这些目标,RKE2 会:

与 RKE 或 K3s 的差别?

RKE2 完美结合了 1.x 版本的 RKE(以下简称 RKE1)和 K3s。

它继承了 K3s 的可用性、易操作性和部署模型。

它还继承了 RKE1 与上游 Kubernetes 的紧密结合关系。为了优化边缘部署,K3s 在某些地方与上游 Kubernetes 有所不同,但 RKE1 和 RKE2 可以与上游保持紧密一致。

重要的是,RKE2 不像 RKE1 一样依赖 Docker。RKE1 使用 Docker 来部署和管理 control plane 组件以及 Kubernetes 的容器运行时。RKE2 将 control plane 组件作为由 kubelet 管理的静态 pod 启动。嵌入式容器运行时是 containerd。

为什么有两个名字?

它被称为 RKE Government,目的是传达其当前针对的主要用例和部门。

它也被称为 RKE2,因为它是 Rancher Kubernetes Engine 针对数据中心用例的下一次迭代。该发行版独立运行,我们正在进行它与 Rancher 的集成工作。RKE2 与 RKE 的功能对等后,我们会让 RKE2 成为 Rancher 中的一个选项。我们也在开发从 RKE 迁移到 RKE2 的升级路径。

Server 节点安装


RKE2 提供了一个安装脚本,可以方便地将其作为服务安装在基于 systemd 的系统上。该脚本可在 https://get.rke2.io 获得。要使用此方法安装 RKE2,请执行以下操作:

1. 运行安装程序

curl -sfL https://get.rke2.io | sh -

中国用户,可以使用以下方法加速安装:

curl -sfL https://rancher-mirror.rancher.cn/rke2/install.sh | INSTALL_RKE2_MIRROR=cn sh -

这会将 rke2-server 服务和 rke2 二进制文件安装到你的主机上。除非以 root 用户或通过 sudo 运行,否则它将失败。

2. 启用 rke2-server 服务

systemctl enable rke2-server.service

3. 启动服务

systemctl start rke2-server.service

4. 如有需要,可以查看日志

journalctl -u rke2-server -f

运行此安装后:

如果要添加其他 Server 节点,则总数必须为奇数。仲裁要求节点数为奇数。有关详细信息,请参阅高可用文档

Linux Agent(Worker)节点安装

本节中的步骤需要 root 级别访问权限或 sudo 才能执行。

1. 运行安装程序

curl -sfL https://get.rke2.io | INSTALL_RKE2_TYPE="agent" sh -

中国用户,可以使用以下方法加速安装:

curl -sfL https://rancher-mirror.rancher.cn/rke2/install.sh | INSTALL_RKE2_MIRROR=cn INSTALL_RKE2_TYPE="agent" sh -

这会将 rke2-agent 服务和 rke2 二进制文件安装到你的主机上。除非以 root 用户或通过 sudo 运行,否则它将失败。

2. 启用 rke2-agent 服务

systemctl enable rke2-agent.service

3. 配置 rke2-agent 服务

mkdir -p /etc/rancher/rke2/
vim /etc/rancher/rke2/config.yaml

config.yaml 的内容:

server: https://<server>:9345
token: <token from server node>

rke2 server 进程在端口 9345 上侦听新节点注册。Kubernetes API 仍然照常在端口 6443 上提供服务。

4. 启动服务

systemctl start rke2-agent.service

如有需要,可以查看日志

journalctl -u rke2-agent -f

注意:每台主机必须具有唯一的主机名。如果你的主机没有唯一的主机名,请在 config.yaml 文件中设置 node-name 参数,并为每个节点提供一个有效且唯一的主机名。

有关 config.yaml 文件的更多信息,请参阅安装选项文档

常用命令

rke2本身并不能直接查看pod、image等

NAME:
   rke2 - Rancher Kubernetes Engine 2

USAGE:
   rke2 [global options] command [command options] [arguments...]

VERSION:
   v1.27.6+rke2r1 (5cc9c774d6bf349b9ca3bcfab2a6010554fcffa7)

COMMANDS:
   server           Run management server
   agent            Run node agent
   etcd-snapshot
   certificate      Manage RKE2 certificates
   secrets-encrypt  Control secrets encryption and keys rotation
   token            Manage bootstrap tokens
   help, h          Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --help, -h     show help
   --version, -v  print the version

高级选项和配置

证书轮换

默认情况下,RKE2 中的证书在 12 个月后过期。

如果证书已经过期或剩余的时间不足 90 天,则在 RKE2 重启时轮换证书。

从 v1.21.8+rke2r1 开始,你可以手动轮换证书。为此,建议先停止 rke2-server 进程,然后轮换证书,最后再次启动该进程:

systemctl stop rke2-server
rke2 certificate rotate
systemctl start rke2-server
systemctl status rke2-server

# 无需操作
#cp -a /var/lib/rancher/rke2/server/tls-1741755966/client-admin.crt    /var/lib/rancher/rke2/server/tls/
#cp -a /var/lib/rancher/rke2/server/tls-1741755966/client-admin.key    /var/lib/rancher/rke2/server/tls/

# 更新 .kube/config
sudo cat /etc/rancher/rke2/rke2.yaml > ~/.kube/config

# 检查容器状态
docker ps -a |grep -E 'kube-apiserver|kube-controller-manager|kube-scheduler|etcd'

自动部署清单

/var/lib/rancher/rke2/server/manifests 中找到的任何文件都会以类似于 kubectl apply 的方式自动部署到 Kubernetes。

有关使用清单目录部署 Helm Chart 的信息,请参阅 Helm 章节。