阿里云首页 云原生应用交付平台ADP

交付环境要求说明

本文描述ADP对部署交付环境的要求

部署要求

说明

适用场景:本文主要针对选用了非ACK底座时的部署环境要求,对于ACK底座的部署,当前只支持“标准托管版”,环境要求,部署要求参见:创建Kubernetes托管版集群

另:涉及用户业务的容量规划,不在此文档要表述的范围内,需用户方自行根据业务情况,设置合适的Worker节点资源配置,或联系专属的技术服务顾问。

0. 术语说明

  • Master节点:Kubernetes集群控制节点,负责管理整个集群,包含集群元数据库(etcd),一般为3节点高可用模式,也支持单节点部署;

  • Master0节点:配置文件中的第1台Master节点,区分方法参见附录;

  • Worker节点:Kubernetes集群的工作节点,负责运行应用,数量可从0~N;

  • 配置文件:Trident部署、变更时使用到的集群的配置文件,里面需要填入节点IP信息、SSH登录方式等信息。

注意:Master节点在污点去除后也可以作为Worker运行,但是会对管控的性能产生影响,不推荐

1. 系统要求

目前支持的OS:

Arch

OS

Kernel

x86

  • CentOS 7.6/7.7/7.8/7.9

  • RHEL 7.8

  • CentOS 7.5(仅calico)

4.18.0.*

4.19.1.*

  • CentOS 8.0

4.18.0.*

  • AliOS 7.2(暂不支持)

4.19.91.*

arm64

  • 麒麟V10(Kylin V10)

4.19.90.*

  • CentOS 7.6

4.18.0.*

目前支持的IaaS:

  • 物理机

  • 阿里云

  • 华为云

  • 电信云

  • 易捷行云 EasyStack

  • VMWare

  • ZStack

Linux系统配置:

配置项

部署时是否会自动配置

说明

所有节点的root用户权限(ssh密码或密钥)


所有节点需配置ntpd或chronyd连接到同一时钟源

若无时钟源,使用Trident高级配置可以将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 = 1net.bridge.bridge-nf-call-iptables = 1

net.ipv4.tcp_tw_reuse=1net.ipv4.tcp_fin_timeout=15


关闭SELinux


停用firewalld服务


开启iptables forward功能


关闭swap

2. 网络要求

2.1 端口开放

Master节点:

协议

端口

源地址

说明

TCP

22

Master0节点

Trident管控走SSH通道

TCP

179

所有节点

bgp协议

TCP

2379,2380

所有Master节点

etcd通信

TCP

5000

所有节点

Trident 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节点

Trident管控走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端口范围,集群内全部放行,集群外按需放行

2.2 硬件要求

  • 千兆网卡、千兆交换机

2.3 容器网络要求

calico:

注:基于开源的 v3.8.2 版本,仅支持使用 ipip overlay 的方式部署

  • 节点网络(IaaS 平台)需要放行 ipip、bgp 报文协议

  • BGP协议监听 179 端口

rama:

rama 网络插件支持同一集群内同时部署 overlay 网络和 underlay 网络,所以并没有 overlay 模式部署和 underlay 模式部署的区分,但是 overlay 和 underlay 网络也是存在不同要求的

overlay 网络:

  • 每个节点需要开放 8472 udp 端口(端口号实际可修改,但暂未通过 trident 透出)、11021 tcp 端口

  • 节点网络(IaaS 平台)需要放行节点 8472 udp 端口

underlay 网络:

  • 客户规划至少一个 C的IP

    • Trident 占用 100 个IP,其余由业务方使用

  • 如果每个节点只有一张网卡,网卡的上联交换机端口需要配置 trunk

  • Kubernetes 使用的机器需要在同一个二层容器网络 vlan 内

  • 每个节点需要开放 11021 tcp 端口

nimitz:

原则上不再使用

  • master节点开放端口给所有节点:TCP:9990、9999、9001、6633、9002、9090,UDP:4789、8472

  • worker节点开放端口给所有节点:TCP:6633、9002、9090,UDP:4789、8472

3. 资源要求

注意

涉及用户业务的容量规划,不在此文档要表述的范围内,需用户方自行根据业务情况,设置合适的Worker节点资源配置,或联系专属的技术服务顾问。

Master节点:

CPU>=2

Memory>=4Gi

磁盘空间:

此处仅为底座的磁盘要求,本地存储池的规划应当单独开一个板块。

路径

剩余空间要求

说明

/root

>=10GB

Trident工作目录

/var

>=10GB

Trident Daemon服务的日志目录,且Linux系统服务日志也存在

注:/var是Linux操作系统最容易增长的目录

/var/lib/etcd

>=20GB

Trident管控数据库的存储盘,影响集群管控的性能;

注:如何判断是否需要独占盘:

  • 当系统盘为SSD/NVMe时,可以直接使用系统盘;

  • 如不满足上述条件,请分配一整个块设备(SSD/HDD/NVMe)

/var/lib/docker

建议200GB

容器应用的管控数据,例如本地镜像缓存、容器内文件系统等

/var/lib/kubelet

建议200GB

Kubernetes应用的管控数据,例如应用元数据、临时卷挂载

本地存储池所用的分区或者块设备

视客户情况而定

Yoda

Worker节点:

CPU>=1

Memory>=2Gi

磁盘空间:

路径

剩余空间要求

说明

/root

>=10GB

Trident工作目录

/var

>=10GB

Trident Daemon服务的日志目录,且Linux系统服务日志也存在

注:/var是Linux操作系统最容易增长的目录

/var/lib/docker

建议200GB

容器应用的管控数据,例如本地镜像缓存、容器内文件系统等

/var/lib/kubelet

建议200GB

Kubernetes应用的管控数据,例如应用元数据、临时卷挂载

本地存储池所用的分区或者块设备

视客户情况而定

Yoda

块设备性能要求:

  • 系统盘:推荐[SSD 4K IOPS>=2600]或[SAS_HDD企业级SAS硬盘rpm>=10000]或[更高配置(如NVMe)]

  • /var/lib/etcd使用的独立块设备(若有):推荐[SSD 4K IOPS>=3300]或[SAS_HDD企业级SAS硬盘rpm>=10000]或[更高配置(如NVMe)]

  • 其他:推荐[SAS_HDD企业级SAS硬盘rpm>=10000]或[更高配置(如NVMe)]

场景

分区建议

场景1,适用磁盘空间充裕,稳定性要求高的客户(需要量化服务质量)

  • 系统盘:容量>=50G,SSD/NVME

  • 数据盘#0:容量>=20G,SSD/NVME,挂载/var/lib/etcd

  • 数据盘#1:容量>=1T,SSD/NVME/HDD,挂载/var/lib/docker、/var/lib/kubelet、本地存储池(按需)

场景2,适用磁盘空间较充裕,稳定性要求较高的客户(需要量化服务质量)

  • 系统盘:容量>=70G,SSD/NVME

    • 留20G容量给/var/lib/etcd

  • 数据盘#0:SSD/NVME/HDD,挂载/var/lib/docker、/var/lib/kubelet、本地存储池(按需)

场景3,适用磁盘空间紧张,稳定性要求低的客户(需要量化服务质量)场景3是否要支持???

  • 系统盘:容量>=70G,SSD/NVME

    • 留20G容量给/var/lib/etcd

    • 分区给/var/lib/docker

    • 分区给/var/lib/kubelet

    • 分区给本地存储池(按需)

4. 软件要求

容器运行时

请确保部署前的环境中没有dockerd/containerd,Trident在部署Kubernetes集群时会安装它们作为容器运行时;环境里已有的dockerd/containerd在部署时会被覆盖,其上的容器也会被清理;

请不要脱离Kubernetes使用容器运行时,Trident在清理时会清理dockerd/containerd纳管的所有容器。

Kubernetes Daemon

请确保部署前的环境没有kubelet/kubectl/kubeadm/kubernetes-cni,Trident在部署Kubernetes集群时会安装它们作为Kubernetes Daemon套件;环境里已有的Daemon套件在部署时会被覆盖,如果这原来是一套Kubernetes集群,它将不再可用;

附录

Master0是哪个节点

在ADP平台的global.yaml中:

或者在Trident的配置文件中: