高级选项和配置
本节包含描述运行和管理 RKE2 的不同方式的高级信息。
#
证书轮换默认情况下,RKE2 中的证书在 12 个月后到期。
如果证书已经过期或剩余时间少于 90 天,当 RKE2 重新启动时,证书将被轮换。
从 v1.21.8 + RKE2 r1 开始,你可以手动轮换证书。要做到这一点,最好的方法是停止 rke2-server 进程,轮换证书,然后再次启动该进程:
你也可以通过传递 --service
标志来轮换单个服务,例如:rke2 certificate rotate --service api-server
。详情请参阅 certificate 子命令。
#
自动部署任务在/var/lib/rancher/rke2/server/manifests
中找到的任何文件都会自动部署到 Kubernetes,其方式类似于kubectl apply
。
关于使用 manifests 目录部署 Helm chart 的信息,请参考关于Helm的部分。
#
配置 containerdRKE2 会在/var/lib/rancher/rke2/agent/etc/containerd/config.toml
中为 containd 生成config.toml
。
如果要对该文件进行高级自定义,你可以在同一目录下创建另一个名为config.toml.tmpl
的文件,它将被替代使用。
config.toml.tmpl
将被视为 Go 模板文件,config.Node
结构被传递到模板中。参见本模板,了解如何使用该结构来自定义配置文件的例子。
#
配置一个 HTTP 代理如果你在一个环境中运行 RKE2,而这个环境只能通过 HTTP 代理进行外部连接,你可以在 RKE2 的 systemd 服务上配置你的代理设置。这些代理设置将在 RKE2 中使用,并传递给嵌入式容器和 kubelet。
在 systemd 服务的环境文件中添加必要的 HTTP_PROXY
、HTTPS_PROXY
和 NO_PROXY
变量,通常为:
/etc/default/rke2-server
/etc/default/rke2-agent
NO_PROXY
变量必须包括你的内部网络,以及集群 pod 和 service IP 范围。
如果你想在不影响 RKE2 和 Kubelet 的情况下配置 containerd 的代理设置,你可以在变量前加上 CONTAINERD_
。
#
节点标签和污点RKE2 agent 可以通过配置node-label
和node-taint
为 kubelet 添加标签和污点。这两个选项只在注册时添加标签和/或污点,而且只能添加一次,之后不能通过 rke2 命令删除。
如果你想在节点注册后改变节点标签和污点,你应该使用kubectl
。关于如何添加污点和节点标签的细节,请参考 Kubernetes 官方文档。
#
Agent 节点注册如何进行Agent 节点是通过rke2 agent
进程发起的 websocket 连接注册的,连接由作为 agent 进程一部分运行的客户端负载均衡器维护。
Agent 使用加入 token 的集群 secret 部分和随机生成的节点特定密码向 server 注册,该密码存储在 agent 的/etc/rancher/node/password
中。server 将把各个节点的密码存储为 Kubernetes 的 secret,任何后续尝试都必须使用相同的密码。节点密码 secret 存储在kube-system
名称空间中,名称使用模板<host>.node-password.rke2
。当相应的 Kubernetes 节点被删除时,这些 secret 会被删除。
注意:在 RKE2 v1.20.2 之前,server 将密码存储在磁盘的/var/lib/rancher/rke2/server/cred/node-passwd
中。
如果 agent 的/etc/rancher/node
目录被删除,密码文件应该在启动前为 agent 重新创建,或者从 server 或 Kubernetes 集群中删除该条目(取决于 RKE2 版本)。
#
用安装脚本启动 server安装脚本为 systemd 提供了单元,但默认情况下并不启用或启动该服务。
当使用 systemd 运行时,日志将在 /var/log/syslog
中创建,并通过 journalctl -u rke2-server
或 journalctl -u rke2-agent
查看。
一个用安装脚本安装的例子:
提示
国内用户,可以使用以下方法加速安装:
#
禁用 server chart在集群启动过程中部署的与rke2
捆绑的 server chart 可以被禁用,并替换为其他 chart。 一个常见的使用情况是用其他 chart 替换捆绑的rke2-ingress-nginx
chart。
要禁用任何捆绑的系统 chart,可以在启动前在配置文件中设置disable
参数。 以下是要禁用的系统 chart 的完整列表:
rke2-canal
rke2-coredns
rke2-ingress-nginx
rke2-metrics-server
请注意,集群操作者谨慎禁用或被替换组件,因为 server chart 在集群的可操作性方面起着重要作用。 请参考架构概述,了解更多关于集群中各个系统 chart 作用的信息。
#
在分类的 AWS region 或具有自定义 AWS API 端点的网络上安装在公共 AWS region,以--cloud-provider-name=aws
安装 RKE2 将确保 RKE2 支持云,并能够自动提供某些云资源。
当在分类 region(如 SC2S 或 C2S)安装 RKE2 时,有一些额外的前提条件需要注意,以确保 RKE2 知道如何以及在哪里与适当的 AWS 端点进行安全的通信。
确保所有常见的 AWS 云供应商先决条件得到满足。 这些与 region 无关,并且始终是必需的。
通过创建 cloud.conf 文件,确保 RKE2 知道向
ec2
和elasticloadbalancing
服务发送 API 请求的位置,下面是us-iso-east-1
(C2S) region 的例子。
或者,如果你使用私有 AWS 端点,确保每个私有端点使用适当的URL
。
- 确保适当的 AWS CA 包被加载到系统的根 CA 信任存储中。 这可能已经为你做了,取决于你使用的 AMI。
4.使用步骤 1 中创建的自定义 cloud.conf
配置 RKE2,使其使用 aws
云提供商:
#
控制平面组件资源请求/限制在 RKE2 的 server
子命令下有以下选项。这些选项允许为 RKE2 的控制面组件指定 CPU 请求和限制。
值是一个以逗号分隔的列表,包括 [controlplane-component]-(cpu|memory)=[desired-value]
。controlplan-component
的可能值是:
因此,一个 --control-plane-resource-requests
或 --control-plane-resource-limits
的例子可能看起来像:
CPU/内存的单位与 Kubernetes 的资源单位相同(参见:Kubernetes 的资源限制)。
#
额外的控制平面组件卷挂载在 RKE2 的 server
子命令下有以下选项。这些选项指定主机路径,将节点文件系统中的目录挂载到与前缀名称相对应的静态 Pod 组件中。
#
RW 主机路径卷挂载/source/volume/path/on/host:/destination/volume/path/in/staticpod
#
RO 主机路径卷挂载要将卷挂载为只读,在卷挂载的最后加上:ro
。 /source/volume/path/on/host:/destination/volume/path/in/staticpod:ro
通过在配置文件中以数组形式传递标志值,可以为同一个组件指定多个卷挂载。
#
额外的控制平面组件环境变量以下是 RKE2 的 server
子命令中的选项。这些选项以标准格式指定了额外的环境变量,即 KEY=VALUE
,用于与前缀名称相对应的静态 Pod 组件。
通过在配置文件中以数组形式传递标志值,可以为同一个组件指定多个环境变量。