交付环境要求说明
本文描述ADP底座对于部署交付环境的具体要求,适用于所有底座版本。
适用场景:本文主要针对选用了非ACK底座时的部署环境要求,对于ACK底座的部署,当前只支持“标准托管版”,环境要求,部署要求参见:创建Kubernetes托管版集群。
另:涉及用户业务的容量规划,不在此文档要表述的范围内,需用户方自行根据业务情况,设置合适的Worker节点资源配置,可以通过ADP提供的模拟调度能力,辅助进行相关的机器资源层面规划,详见:通过模拟部署能力评估合适的集群资源配置
1. 术语说明
Master节点:Kubernetes集群控制节点,负责管理整个集群,包含集群元数据库(etcd),一般为3节点高可用模式,也支持单节点部署;
Master0节点:配置文件中的第1台Master节点,区分方法参见附录;
Worker节点:Kubernetes集群的工作节点,负责运行应用,数量可从0~N;
配置文件:ADP底座部署、变更时使用到的集群的配置文件,里面需要填入节点IP信息、SSH登录方式等信息。
注意:Master节点在污点去除后也可以作为Worker运行,但是会对管控的性能产生影响,不推荐
2. 系统要求
目前支持的OS:
Arch | OS |
x86 |
|
arm64 |
|
目前支持的内核:
4.18.*(推荐)
4.19.*
3.10.*,>=3.10.0-1160
较低版本的3.10.0-957内核发现以下bug(阿里云ECS的CentOS7.6/7.7/7.8的默认版本),请已经使用了3.10.0-957的环境尽快按照链接里的方法进行修复:内核bug修复方案:网络设备引用计数泄漏
目前支持的IaaS:
物理机
阿里云
华为云
电信云
易捷行云 EasyStack
VMWare
ZStack
Linux系统配置:
配置项 | 部署时是否会自动配置 | 说明 |
所有节点的root用户权限(ssh密码或密钥) | 否 | |
所有节点需配置ntpd或chronyd连接到同一时钟源 | 否 | 若无时钟源,使用ADP底座高级配置可以将Master0作为集群内时钟源,但无法确保与国际时间保持同步 |
所有节点的Hostname彼此之间不能重复 | 否 | |
所有节点的默认路由IP必须在同一网段,配置文件使用的IP必须为节点的默认路由IP | 否 | |
系统工具: netstat ip ifconfig iptables mkfs.ext4 fuser parted dd umount systemctl yum sysctl modprobe setenforce modprobe | 否 | |
开启内核模块: ip_vs ip_vs_rr ip_vs_wrr ip_vs_sh nf_conntrack nf_conntrack_ipv4 br_netfilter xt_set ip6_tables | 是 | |
sysctl配置: net.bridge.bridge-nf-call-iptables=1 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.tcp_tw_reuse=1 net.ipv4.tcp_fin_timeout=15 | 是 | |
关闭SELinux | 是 | |
停用firewalld服务 | 是 | |
开启iptables forward功能 | 是 | |
关闭swap | 是 |
3. 网络要求
3.1 端口开放
Master节点:
协议 | 端口 | 源地址 | 说明 |
TCP | 22 | Master0节点 | ADP底座管控走SSH通道 |
TCP | 179 | 所有节点 | bgp协议 |
TCP | 2379,2380 | 所有Master节点 | etcd通信 |
TCP | 5000 | 所有节点 | ADP底座 Registry默认端口 |
TCP | 6443 | 所有节点 | Kubernetes API Server服务 |
TCP | 9099 | 所有节点 | calico通信 |
TCP | 10250,10251,10252,10255,10256 | 所有节点 | kubelet通信 |
TCP | 16789 | 所有节点 | 集群巡检 |
TCP | 30000-32767 | 所有节点 集群外节点(按需) | NodePort Service端口范围,集群内全部放行,集群外按需放行 |
Worker节点:
协议 | 端口 | 源地址 | 说明 |
TCP | 22 | Master0节点 | ADP底座管控走SSH通道 |
TCP | 179 | 所有节点 | bgp协议 |
TCP | 6443 | 127.0.0.1 | Kubernetes API Server服务本地代理 |
TCP | 9099 | 所有节点 | calico通信 |
TCP | 10250,10255,10256 | 所有节点 | kubelet通信 |
TCP | 30000-32767 | 所有节点 集群外节点(按需) | NodePort Service端口范围,集群内全部放行,集群外按需放行 |
3.2 硬件要求
千兆网卡、千兆交换机
如果需要使用GPU,目前支持的GPU型号见:ADP底座支持哪些GPU型号
3.3 容器网络要求
calico网络要求如下:
注:基于开源的 v3.8.2 版本,仅支持使用 IPIP overlay 的方式部署
节点网络(IaaS 平台)需要放行 IPIP、BGP 报文协议;
BGP协议监听 179 端口。
hybridnet网络要求如下:
hybridnet 网络插件支持同一集群内同时部署 overlay 网络和 underlay 网络。overlay 和 underlay 网络的部署要求分别如下:
overlay 网络:
每个节点需要开放 8472 UDP 端口、11021 TCP 端口;
节点网络(IaaS 平台)需要放行节点 8472 UDP 端口。
underlay 网络:
客户规划至少一个 C 的IP
ADP底座占用 100 个IP,其余由业务方使用
如果每个节点只有一张网卡,网卡的上联交换机端口需要配置 trunk;
Kubernetes 使用的机器需要在同一个二层容器网络 VLAN 内;
每个节点需要开放 11021 TCP 端口;
4. 节点资源要求
涉及用户业务的容量规划,不在此文档要表述的范围内,需用户方自行根据业务情况,设置合适的Worker节点资源配置,可以通过ADP提供的模拟调度能力,辅助进行相关的机器资源层面规划,详见:通过模拟部署能力评估合适的集群资源配置
CPU、内存资源要求:
节点角色 | 节点CPU核数要求 | 节点内存容量要求 |
Master节点 | >= 4核 | >= 8 GiB |
Worker节点 | >= 1核 | >= 2 GiB |
磁盘资源要求:
ADP底座部署对于部署环境所在节点的磁盘,主要有2部分要求:
数量、性能及容量要求
所有的数据盘在ADP底座部署前均需保持“未格式化”以及“未分区”的状态
具体要求如下:
标准部署情况下,ADP底座要求每个Master节点至少具备3块磁盘(系统盘、etcd数据盘、共享数据盘),每个Worker节点至少具备2块磁盘(系统盘、共享数据盘),所有节点视业务需求挂载0~N块扩展数据盘。
磁盘类型 | 数量要求 | 用途说明 | 性能要求 | 容量要求 |
系统盘 | 1 | Linux操作系统盘 | 推荐 [SSD 4K IOPS>=2600] 或 [SAS_HDD 企业级 SAS 硬盘 rpm>=10000] 或 [更高配置(如 NVMe)] | 最小 >= 50GiB,推荐 >= 70GiB |
etcd数据盘 | Worker节点不需要,Master节点需要1块,当系统盘为SSD时,可以考虑与系统盘共用一块磁盘 | 给/var/lib/etcd 单独使用的独立块设备,存放K8s集群的元数据,其性能不稳定时可能会影响整个集群的正常运行 | 推荐 [SSD 4K IOPS>=3300] 或 [SAS_HDD企业级SAS硬盘rpm>=10000] 或 [更高配置(如NVMe) | 最小 >= 20GiB,推荐 >= 50GiB |
共享数据盘 | 1 | 从中分出一部分(默认400GiB)供Docker和Kubelet使用,多余空间(如有)加入本地存储池供业务创建存储卷(PV)使用 | 推荐 [SAS_HDD企业级SAS硬盘rpm>=10000] 或 [更高配置(如NVMe)] | 最小 >= 200GiB,推荐 >= 400GiB |
扩展数据盘 | 0~N | 全部空间加入本地存储池供业务创建存储卷(PV)使用,请根据业务对存储的需求量酌情准备磁盘 | 推荐 [SAS_HDD企业级SAS硬盘rpm>=10000] 或 [更高配置(如NVMe)] | 视业务需求而定 |
典型场景下的磁盘规划建议:
典型场景 | 磁盘规划建议 |
场景1,适用磁盘空间充裕,稳定性要求高的客户(此场景为ADP产品推荐场景) |
|
场景2,适用磁盘空间较充裕,稳定性要求较高的客户 (此场景ADP底座的etcd软件复用系统盘,当系统盘IOPS性能较低时,存在ADP底座管控面稳定性风险) |
|
场景3,适用磁盘空间紧张,稳定性要求低的客户 (此场景ADP底座的etcd、docker、业务应用等均复用系统盘,当系统盘IOPS性能较低时,存在较大ADP底座管控面稳定性风险) |
|
5. 软件要求
容器运行时
请确保部署前的环境中没有dockerd/containerd,ADP底座在部署Kubernetes集群时会安装它们作为容器运行时;环境里已有的dockerd/containerd在部署时会被覆盖,其上的容器也会被清理;
请不要脱离Kubernetes使用容器运行时,ADP底座在清理时会清理dockerd/containerd纳管的所有容器。
Kubernetes Daemon
请确保部署前的环境没有kubelet/kubectl/kubeadm/kubernetes-cni,ADP底座在部署Kubernetes集群时会安装它们作为Kubernetes Daemon套件;环境里已有的Daemon套件在部署时会被覆盖,如果这原来是一套Kubernetes集群,它将不再可用;
附录
Master0是哪个节点
在ADP平台的global.yaml中: