Rancher 的部署有三种架构:单节点 Kubernetes ,单节点 Docker, 高可用 Kubernetes。
这里总结一下高可用的集群的准备条件。
节点配置
在 RKE 集群中安装 Rancher 高可用,官方建议为高可用配置以下基础设施:
- 3 个 Linux 节点,通常是虚拟机,可以自行选择的基础设施提供商,例如阿里云,腾讯云。
- 1 个负载均衡器,用于将流量转发到这三个节点。
- 一条 DNS 记录,用于将 URL 指向负载均衡器。这将成为 Rancher Server 的 URL,下游集群需要可以访问到这个地址。
在 RKE 集群中,Rancher Server 数据存储在 etcd 中。这个 etcd 数据库在所有三个节点上运行。
为什么etcd 数据库需要奇数个节点呢?选举方式是要一半+1的节点同意。因此它始终可以选举出被大多数 etcd 节点认可的集群的领导者。如果 etcd 数据库无法选出领导者,则 etcd 可能会遭受脑裂的困扰,这时将需要从备份中恢复集群。如果三个 etcd 节点之一发生故障,则其余两个节点可以选择一个领导者,因为它们占 etcd 节点总数的大部分。
操作系统
Rancher 应用可以兼容当前任何流行的 Linux 发行版,Ubuntu,CentOS, 和 RedHat Enterprise Linux。
硬件要求
RKE 高可用安装的 CPU 和 内存要求, 这些要求适用于安装了 Rancher Server 的 RKE Kubernetes 集群中的每个主机。
部署规模 | 集群 | 节点 | vCPUs | 内存 |
---|---|---|---|---|
小 | 最多 150 个 | 最多 1500 个 | 2 | 8 GB |
中 | 最多 300 个 | 最多 3000 个 | 4 | 16 GB |
大 | 最多 500 个 | 最多 5000 个 | 8 | 32 GB |
特大 | 最多 1000 个 | 最多 10,000 个 | 16 | 64 GB |
超大 | 最多 2000 个 | 最多 20,000 个 | 32 | 128 GB |
时间同步
安装 ntp (Network Time Protocol),这样可以防止在客户端和服务器之间因为时钟不同步而发生证书验证错误。
docker
任何运行 Rancher Server 的节点上都需要安装 Docker。最新的版本的docker容易出现版本依赖问题,建议使用稳定版本。
# 1 安装依赖工具
yum install -y yum-utils
# 2 配置docker仓库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 国外的仓库很慢,可以使用国内的镜像快一点
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 3 安装docker
# sudo yum install docker-ce docker-ce-cli containerd.io
# 3 指定版本docekr 例如 18.09.7 # 这里不能用最新版本的,经过测试,最新版本和rek2不兼容。
# yum list docker-ce --showduplicates | sort -r # 查看可用版本
#yum install docker-ce-18.09.7 docker-ce-cli-18.09.7
# 4 配置镜像
cat > /etc/docker/daemon.json <EOF
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com"
]
}
EOF
# 5 重启启动
systemctl enable docker
systemctl restart docker
端口
Rancher 节点的入站规则
协议 | 端口 | 源 | 描述 |
---|---|---|---|
TCP | 80 | 负载均衡或反向代理 | 到 Rancher UI/API 的 HTTP 流量 |
TCP | 443 | 负载均衡或反向代理 / 所有集群节点的 IP 和其他 API/UI 客户端 | 到 Rancher UI/API 的 HTTPS 流量 |
Rancher 节点的出站规则
协议 | 端口 | 目的 | 描述 |
---|---|---|---|
TCP | 22 | 使用主机驱动创建的节点中的任何节点 IP | 使用主机驱动通过 SSH 进行节点配置 |
TCP | 443 | 35.160.43.145/32,35.167.242.46/32,52.33.59.17/32 | git.rancher.io (应用商店) |
TCP | 2376 | 使用主机驱动创建的节点中的任何节点 IP | Docker Machine 使用的 Docker 守护进程的 TLS 端口 |
TCP | 取决于供应商 | 托管集群的 Kubernetes API 端口 | Kubernetes API |
通常情况下,可以将这些端口在 Kubernetes 节点上开放,无论它是哪种类型的集群。
协议 | 端口 | 描述 |
---|---|---|
TCP | 22 | 使用主机驱动通过 SSH 进行节点配置 |
TCP | 2376 | 主机驱动与 Docker 守护进程通信的 TLS 端口 |
TCP | 2379 | etcd 客户端请求 |
TCP | 2380 | etcd 节点通信 |
UDP | 8472 | Canal/Flannel VXLAN overlay 网络 |
UDP | 4789 | Windows 集群中 Flannel VXLAN overlay 网络 |
TCP | 9099 | Canal/Flannel 健康检查 |
TCP | 9796 | 集群监控拉取节点指标的默认端口(仅需要内网可达) |
TCP | 6783 | Weave 端口 |
UDP | 6783-6784 | Weave UDP 端口 |
TCP | 10250 | kubelet API |
TCP | 10254 | Ingress controller 健康检查 |
TCP/UDP | 30000-32767 | NodePort 端口范围 |