3. 安装 Kubernetes 集群
提示
如果要使用 Docker 在单个节点上安装 Rancher,请跳过本节。
本节描述了如何根据 Rancher Server 环境的最佳实践来安装 Kubernetes 集群。该集群应专用于运行 Rancher Server。
从 Rancher v2.5 开始,Rancher 可以安装在任何 Kubernetes 集群上,包括托管的 Kubernetes。
在 RKE 或 K3s 上离线安装 Kubernetes 集群的步骤如下所示:
- K3s
- RKE
在本指南中,我们假设你已经在离线环境中创建了节点,并且在堡垒机上有一个安全的 Docker 私有镜像仓库。
#
安装概要- 准备镜像目录
- 创建镜像库 YAML
- 安装 K3s 集群
- 保存并使用 kubeconfig 文件
#
1、准备镜像目录从版本发布页面获取要运行的 K3s 版本的镜像tar
文件。
提示
国内用户,可以导航到 https://mirror.rancher.cn 下载所需资源
在每个节点上启动 K3s 之前,将这个tar
文件放在 images
目录中,例如:
#
2、创建镜像库 YAML在/etc/rancher/k3s/registries.yaml
创建registries.yaml
文件。这将告诉 K3s 如何连接到你的私有镜像仓库。
下面是一个registries.yaml
文件的示例:
请注意,目前,K3s 仅支持安全的镜像仓库(HTTPS)。
有关 K3s 的私有镜像仓库配置文件的更多信息,请参考 K3s 文档。
#
3、安装 K3s 集群Rancher 需要安装在支持的 Kubernetes 版本上。要了解你的 Rancher 版本支持哪些版本的 Kubernetes,请参考支持维护条款。
要指定 K3s 的版本,在运行 K3s 安装脚本时使用 INSTALL_K3S_VERSION 环境变量。
从 release 页面获取 K3s 二进制文件,匹配用于获取离线镜像 tar 的相同版本。 同时在 https://get.k3s.io ,获得 K3s 的安装脚本。
将二进制文件放在每个节点的/usr/local/bin
中。将安装脚本放在每个节点的任何地方,并命名为install.sh
。
在每个 server 上安装 K3s:
在每个 agent 上安装 K3s:
注意,注意确保用 server 节点的 IP 或有效 DNS 替换 myserver
,用 server 节点的 token 替换 mynodetoken
。
节点 token 位于 server 节点上的 /var/lib/rancher/k3s/server/node-token
。
注意: K3s 还为 kubelets 提供了一个
--resolv-conf
标志,这可能有助于在离线网络中配置 DNS。
#
4、保存并使用 kubeconfig 文件在每个 Rancher Server 节点上安装 K3s 时,会在节点上 /etc/rancher/k3s/k3s.yaml
创建一个 kubeconfig
文件。该文件包含访问集群的凭据,你应该将此文件保存在安全的位置。
要使用此kubeconfig
文件,
- 安装 Kubernetes 命令行工具 kubectl。
- 将文件
/etc/rancher/k3s/k3s.yaml
复制并保存到本地计算机上的目录~/.kube/config
中。 - 在这个
kubeconfig
文件中,server
参数为localhost
。你需要手动更改这个地址为负载均衡器的 DNS,并且指定端口 6443。(Kubernetes API Server 的端口为 6443,Rancher Server 的端口为 80 和 443。)以下是一个示例k3s.yaml
:
结果: 你现在可以使用 kubectl
来管理你的 K3s 集群。如果你有多个 kubeconfig 文件,可以在使用 kubectl
时通过传递文件路径来指定要使用的 kubeconfig 文件:
有关kubeconfig
文件的更多信息,请参考 K3s 文档或官方 Kubernetes 文档中关于使用 kubeconfig
文件访问集群的部分。
#
升级提示可以通过以下方式完成离线环境的升级:
从版本发布页面下载要升级的 K3s 版本的新镜像包(
tar
文件)。将tar
包放在每个节点上的/var/lib/rancher/k3s/agent/images/
目录中。删除旧的tar
文件。提示
国内用户,可以导航到 https://mirror.rancher.cn 下载资源
复制并替换每个节点上
/usr/local/bin
中的旧的 K3s 二进制文件。复制 https://get.k3s.io 上的安装脚本(因为它可能自上次发布以来已更改)。就像你过去使用相同的环境变量所做的那样再次运行脚本。重新启动 K3s 服务(如果安装程序没有自动重启 K3s)。
我们将使用 Rancher Kubernetes Engine (RKE) 创建一个 Kubernetes 集群。在启动 Kubernetes 集群之前,你需要安装 RKE 并创建 RKE 配置文件。
#
1、安装 RKE请按照 RKE 文档中的说明安装 RKE。
#
2、创建 RKE 配置文件在可以访问你的 Linux 节点上的 22/tcp 端口和 6443/tcp 端口的系统上,使用以下示例创建一个名为 rancher-cluster.yml
的新文件。
该文件是 RKE 配置文件,其中包括了你将要部署的集群的配置。
使用你创建的 3 个节点的 IP 地址或 DNS 名称,替换下面的代码示例中的值。
提示:有关可用选项的更多详细信息,请参见 RKE 配置选项。
选项 | 是否必选 | 描述 |
---|---|---|
address | 是 | 离线环境中节点的 DNS 或 IP |
user | 是 | 可以在节点上执行 docker 命令的用户 |
role | 否 | 想要给节点分配的一个或多个 Kubernetes 角色 |
internal_address | 否1 | 离线环境中节点的内部 DNS 或内网 IP |
ssh_key_path | 否 | 用来登录节点的 SSH 私钥文件路径(默认值为~/.ssh/id_rsa ) |
1 如果你想使用引用安全组或防火墙,某些服务(如 AWS EC2)需要设置 `internal_address`。
#
3、执行 RKE配置完rancher-cluster.yml
之后,启动你的 Kubernetes 集群:
#
4、保存你的文件重要
以下文件需要保存好,可以用来故障排查和升级集群。
将以下文件的副本保存在安全的位置:
rancher-cluster.yml
:RKE 配置文件kube_config_cluster.yml
:集群的 Kubeconfig 文件,该文件包含对集群的完全访问权限的凭据。rancher-cluster.rkestate
:Kubernetes 集群状态文件,该文件包含集群的当前状态,包括 RKE 配置和证书。Kubernetes 集群状态文件仅在使用 RKE v0.2.0 或更高版本时创建。
后两个文件名的
rancher-cluster
部分取决于你如何命名 RKE 集群配置文件。
#
问题排查请查看问题排查页面,获取常见问题和解决方法。