SELinux

RKE2 与启用 SELinux 的系统兼容,这是从版本 7 开始在 CentOS/RHEL 系统上的默认配置。支持此功能的 策略container-selinux 策略的一个特化,适用于 containerd。它考虑了 containerd 安装的非标准位置,并放置持久和临时状态。

在某些情况下,安装 rke2-selinux 软件包后,可能需要重启节点,然后才能启动 rke2 服务。如果您在 selinux 审计日志中遇到拒绝,即使安装了 rke2-selinux 和 container-selinux 软件包,请重启节点。

自定义上下文标签

RKE2 以静态 Pod 的形式运行控制平面服务,这需要访问多个 container_var_lib_t 位置。etcd 容器必须能够在 /var/lib/rancher/rke2/server/db 下进行读写,并且能够从 /var/lib/rancher/rke2/server/tls 中读取,连同 kube-apiserverkube-controller-managerkube-scheduler 一起。为了在不过度授权的情况下使其工作,例如 spc_t,RKE2 SELinux 策略引入了 rke2_service_db_trke2_service_t 上下文标签,分别用于读写和只读访问。这些标签将仅应用于 RKE2 控制平面静态 Pod。

特定操作系统要求

Amazon Linux 2

亚马逊 Linux 2 需要安装额外的 SELinux 软件包:

sudo amazon-linux-extras enable selinux-ng; sudo yum install selinux-policy-targeted -y

配置

RKE2 对 SELinux 的支持仅涉及一个配置项,即 --selinux 布尔标志.这是对 containerd/cri toml 的 cri 部分中 enable_selinux 布尔标志 的直通。如果通过 tarball 安装 RKE2,则在没有额外配置的情况下,SELinux 将不会启用。推荐的配置方法是通过 RKE2 config.yaml 中的一个条目,例如:

# /etc/rancher/rke2/config.yaml is the default location
selinux: true

这相当于将 --selinux 标志传递给 rke2 serverrke2 agent 命令行,或设置 RKE2_SELINUX=true 环境变量。

Calico 支持

如果您选择在启用 SELinux 的情况下使用 Calico 作为您的 CNI,您还需要安装特定的策略。

要安装的软件包由 Tigera 提供, 在这里

请参见 Calico 的 文档 以获取更多详细信息。