高级选项和配置
本文描述了用于运行和管理 RKE2 的高级设置:
证书轮换
默认情况下,RKE2 中的证书在 12 个月后过期。
如果证书已经过期或剩余的时间不足 90 天,则在 RKE2 重启时轮换证书。
从 v1.21.8+rke2r1 开始,你可以手动轮换证书。为此,建议先停止 rke2-server 进程,然后轮换证书,最后再次启动该进程:
systemctl stop rke2-server
rke2 certificate rotate
systemctl start rke2-server
你也可以通过传递 --service
标志来轮换单个服务,例如:rke2 certificate rotate --service api-server
。
自动部署清单
在 /var/lib/rancher/rke2/server/manifests
中找到的任何文件都会以类似于 kubectl apply
的方式自动部署到 Kubernetes。
有关使用清单目录部署 Helm Chart 的信息,请参阅 Helm 章节。
配置 Containerd
RKE2 会在 /var/lib/rancher/rke2/agent/etc/containerd/config.toml
中为 containerd 生成 config.toml
。
如果要对这个文件进行高级定制,你可以在同一目录中创建另一个名为 config.toml.tmpl
的文件,此文件将会代替默认设置。
config.toml.tmpl
是一个 Go 模板文件,并且 config.Node
结构会被传递给模板。有关如何使用该结构自定义配置文件的示例,请参见此模板。
配置 HTTP 代理
如果你运行 RKE2 的环境中只通过 HTTP 代理进行外部连接,你可以在 RKE2 的 systemd 服务上配置代理。RKE2 将使用这些代理设置,并向下传递到嵌入式 containerd 和 kubelet。
将必要的 HTTP_PROXY
、HTTPS_PROXY
和 NO_PROXY
变量添加到 systemd 服务的环境文件中,通常是:
/etc/default/rke2-server
/etc/default/rke2-agent
RKE2 会自动将集群内部 Pod 和 Service IP 范围以及集群 DNS 域添加到 NO_PROXY
条目列表中。你需要确保 Kubernetes 节点本身使用的 IP 地址范围(即节点的公共和私有 IP)包含在 NO_PROXY
列表中,或者可以通过代理访问节点。
HTTP_PROXY=http://your-proxy.example.com:8888
HTTPS_PROXY=http://your-proxy.example.com:8888
NO_PROXY=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
如果你想在不影响 RKE2 和 Kubelet 的情况下为 containerd 配置代理,你可以在变量前加上 CONTAINERD_
:
CONTAINERD_HTTP_PROXY=http://your-proxy.example.com:8888
CONTAINERD_HTTPS_PROXY=http://your-proxy.example.com:8888
CONTAINERD_NO_PROXY=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
节点标签和污点
RKE2 Agent 可以通过 node-label
和 node-taint
选项来配置,它们会为 kubelet 添加标签和污点。这两个选项只能在注册时添加标签和/或污点,因此它们只能被添加一次,之后不能再通过运行 rke2 命令来移除。
如果你想在节点注册后更改节点标签和污点,你需要使用 kubectl
。关于如何添加污点和节点标签的详细信息,请参阅官方 Kubernetes 文档。
Agent 节点注册的工作原理
Agent 节点通过 rke2 agent
进程发起的 WebSocket 连接进行注册,连接由作为 agent 进程一部分运行的客户端负载均衡器维护。
Agent 将使用 join token 的集群 Secret 以及随机生成的节点密码注册到 Server,密码存储在 /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
查看日志。
使用安装脚本安装的示例:
curl -sfL https://get.rke2.io | sh -
systemctl enable rke2-server
systemctl start rke2-server
中国用户,可以使用以下方法加速安装:
curl -sfL https://rancher-mirror.rancher.cn/rke2/install.sh | INSTALL_RKE2_MIRROR=cn sh -
systemctl enable rke2-server
systemctl start rke2-server