安装要求
#
概述本文讲述了 RKE 对操作系统、软件、端口和 SSH 配置的要求,安装 RKE 前,请检查您的节点是否满足这些要求。
#
操作系统要求#
总体RKE 可以在大多数已安装 Docker 的 Linux 操作系统上运行。RKE 的开发和测试过程是在 Ubuntu 16.04 上完成的。然而,其他操作系统对 RKE 有限制或要求。
SSH 用户 - 使用 SSH 访问节点的用户必须是节点上
docker
用户组的成员。请运行以下命令,把使用 SSH 的用户添加到docker
用户组里面。注意,您需要将<user_name>
占位符替换为真实的用户名称。例如,您的用户是example_user1
,则最终输入的命令为usermod -aG docker example_user1
。除了可以将自己添加到用户组里面,您也可以运行以下命令,将其他用户添加到用户组中,只要将<user_name>
替换为其他用户的用户名即可。
说明:
- 添加到
docker
用户组的用户会自动获得主机的 root 权限,运行上述命令前,请确认您是否想让该用户获得 root 权限。运行命令后,请妥善保存该用户的认证凭据。- 如果您无法切换到 root 用户,不能运行上述命令将用户添加到
docker
用户组,请参考Docker 官方文档,该文档提供了以非 root 用户的身份管理 Docker 的操作步骤。
禁用所有 woker 节点上的交换功能(Swap)
运行以下命令,修改 sysctl 配置:
请查看网络插件文件,了解任何额外的要求(例如,内核模块)。
说明
如果你或你的云提供商使用自定义的最小内核,一些必要的(网络)内核模块可能不存在。
#
SUSE Linux Enterprise Server (SLES) / openSUSE如果您使用的是 SUSE Linux Enterprise Server 或 openSUSE,请遵循以下说明。
#
使用的 Docker如果你使用的是上游的 Docker,包名是docker-ce
或docker-ee
。你可以通过执行以下命令来检查安装的软件包。
使用上游 Docker 包时,请按照以非 root 用户身份管理 Docker。
#
使用 SUSE/openSUSE 打包的 Docker如果你使用的是 SUSE/openSUSE 提供的 Docker 包,包名是docker
。你可以通过执行以下命令来检查安装的软件包。
#
为 docker 添加软件仓库在 SUSE Linux Enterprise Server 15 SP2 中,docker 位于 Containers 模块中。 在安装 docker 之前,需要添加该模块。
要列出可用的模块,您可以运行 SUSEConnect 来列出扩展和激活命令。
运行这个 SUSEConnect 命令来激活 Containers 模块。
为了用你的用户运行 docker cli 命令,那么你需要将这个用户添加到docker
组中。
最好不要使用 root 用户。
要验证用户是否正确配置,退出节点,使用 SSH 或其他方法登录,并执行docker ps
。
#
openSUSE MicroOS/Kubic (Atomic)请参考 openSUSE MicroOS 和 Kubic 的项目页面进行安装。
#
openSUSE MicroOSopenSUSE MicroOS 专为托管容器工作负载而设计,具有自动管理和补丁功能。安装 openSUSE MicroOS,您将获得一个快速、小型的环境,用于部署容器,或任何其他受益于事务性更新的工作负载。作为滚动发行版,软件始终是最新的。 https://microos.opensuse.org
#
openSUSE Kubic基于 openSUSE MicroOS,设计时考虑到了同样的事情,但专注于成为一个认证的 Kubernetes 发行版。
https://kubic.opensuse.org
安装说明。
https://kubic.opensuse.org/blog/2021-02-08-MicroOS-Kubic-Rancher-RKE/
#
RHEL、OEL 或 CentOS因为 Red Hat Enterprise Linux(RHEL)、Oracle Enterprise Linux (OEL)和 CentOS 存在漏洞Bugzilla 1527565,所以它们不允许用户使用root
作为SSH 用户。请根据你在节点上安装 Docker 的方式,按照以下说明正确设置 Docker:
注意:在 RHEL 8.4 中,NetworkManager 中包含两个额外的服务:
nm-cloud-setup.service
和nm-cloud-setup.timer
。这些服务增加了一个路由表,干扰了 CNI 插件的配置。如果这些服务被启用,你必须使用下面的命令禁用它们,然后重新启动节点以恢复连接。
#
使用 upstream Docker如果您使用的是 upstream Docker,Docker 的二进制安装包名字应该是docker-ce
或 docker-ee
,您需要输入以下命令,查询 Docker 安装包的名称。
如果第一条命令的返回结果显示没有这个安装包,则表示安装包的名称可能是docker-ee
,请输入以下命令确认安装包名称:
输入上述命令后,如果您使用的确实是docker-ce
或 docker-ee
,命令行工具会询问您是否安装,请选择不安装。因为在这个步骤中,我们只是在借用rpm -q
确认安装包的名称,以确认其来源。
确认安装包的来源是 uptream Docker 后,请参考Docker 官方文档,该文档提供了以非 root 用户的身份管理 Docker 的操作步骤。
#
Using RHEL/CentOS packaged Docker如果您使用的是 Red Hat 或 CentOS 提供的 Docker 二进制安装包,则安装包的名字应该是docker
,您需要输入以下命令,查询 Docker 安装包的名称。输入上述命令后,如果您使用的确实是docker
,命令行工具会询问您是否安装,请选择不安装。因为在这个步骤中,我们只是在借用rpm -q
确认安装包的名称,以确认其来源。
来源于 Red Hat 或 CentOS 的安装包会自动将dockerroot
添加到系统内。您需要创建/etc/docker/daemon.json
文件,然后将下文代码示例中的键值添加到 JSON 文件中,创建一个名为dockerroot
的用户组。
创建和编辑文件后,请重启 Docker。重启后,您可以打开/var/run/docker.sock
,检查用户组权限。此时返回的信息显示已经创建 dockerroot
用户组,该用户组有读写权限:
运行以下命令,将 SSH 用户添加到dockerroot
用户组中。注意,您需要将<user_name>
占位符替换为真实的用户名称。例如,您的用户是example_user1
,则最终输入的命令为usermod -aG docker example_user1
。除了可以将自己添加到用户组里面,您也可以运行以下命令,将其他用户添加到用户组中,只要将<user_name>
替换为其他用户的用户名即可。
完成添加后,您需要登出该节点,然后使用 SSH 用户的认证信息登录该节点,执行docker ps
,应该返回如下信息:
#
Red Hat Atomic使用 Red Hat Atomic 节点运行 RKE 前,请完成以下两项升级。
#
升级 OpenSSH 版本默认情况下,Atomic 使用的是 OpenSSH 6.4,该版本不支持 SSH 隧道协议(SSH tunneling),而 RKE 的其中一个核心需求就是 SSH 隧道协议,所以您需要将 OpenSSH 升级到 Atomic 支持的最新版,解决 SSH 隧道协议的问题。
#
创建 Docker 分组Atomic 和 RHEL、CentOS 不同,没有内置的 Docker 分组,所以也就不像 RHEL 和 CentOS 那样,不可以通过编辑用户组权限、将用户添加到用户组等操作,批量分配用户权限。但是您可以运行以下命令,允许单个用户运行 RKE。如果您需要授权多个用户,请重复运行以下命令,将用户名替换成不同的用户名即可。
完成权限分配后,您需要登出该节点,然后使用 SSH 用户的认证信息登录该节点,执行docker ps
,应该返回如下信息:
#
Flatcar Container Linux当使用 Flatcar Container Linux 节点时,需要在集群配置文件中使用以下配置
#
Canal#
Calico#
Docker还需要启用 Docker 服务,你可以使用以下命令启用 Docker 服务。
#
软件要求本节描述了 RKE 对于 Docker、Kubernetes 和 SSH 的要求。
#
OpenSSH为了可以通过 SSH 访问每一个节点,RKE 要求每个节点上安装的是 OpenSSH 的版本是OpenSSH 7.0+。
#
Kubernetes请参考RKE 版本说明 ,获取每个版本的 RKE 支持的 Kubernetes 版本。
#
Docker每一个 Kubernetes 版本支持的 Docker 版本都不同,详情请参考,Kubernetes 的版本说明。
#
安装 Docker#
检查 Docker 版本号输入docker version --format '{{.Server.Version}}'
,检查支持特定版本 Kubernetes 的 Docker 是否已经成功安装到您的机器上。
#
硬件本节描述了 worker 角色、大型 Kubernetes 集群和 etcd 集群的硬件要求。
关于 CPU 和内存,建议将 Kubernetes 集群的不同 plane(etcd、controlplane 和 worker)托管在不同的节点上,以便它们可以相互独立扩展。
#
大型 Kubernetes 集群对于大型 Kubernetes 集群的硬件建议,请参考 Kubernetes 官方文档构建大型集群。
#
Etcd 集群生产环境中 etcd 集群的硬件推荐,参考官方 etcd 文档。
#
端口要求如果您使用的是外部防火墙,请确保在运行 RKE 的节点和创建集群的节点之间开放了 TCP/6443 端口。
#
使用 iptables 打开 TCP/6443 端口运行以下命令,使用 iptables 打开 TCP/6443 端口。
#
使用 firewalld 打开 TCP/6443 端口运行以下命令,使用 firewlld 打开 TCP/6443 端口。
#
SSH Server 配置您的 SSH server 全系统配置文件,位于/etc/ssh/sshd_config
,该文件必须包含以下代码,允许 TCP 转发。