集群资源规划
集群资源
集群节点类型分为3类,引导节点(bootstrap)、控制节点(master)、⼯作节点(node)
BootStrap节点(引导节点)
BootStrap节点可以提高K8s集群的可用性和安全性,降低维护成本。它是一个K8s集群外部特定的运维管理入口,仅开放此节点的网络访问即可完成对整个K8s集群的运维管理工作。
在K8s集群部署初期,需要先初始化一个控制节点,这个节点将会负责后续控制节点的加入,使用外部的bootstrap节点可以避免单点故障,提高可用性。
分布式网络插件初始化:有些分布式网络插件需要在所有节点上进行初始化操作,这时可以使用bootstrap节点先进行初始化,再将初始化后的配置分发到其它节点上。
集群更新:如果需要对K8s集群进行版本升级或者配置更新等操作,可以使用bootstrap节点来控制升级过程,避免直接对控制节点和工作节点进行操作而产生故障。
Master节点(控制节点)
Master节点是云原生大数据平台的控制大脑,是管理层面节点,负责管理所有Node节点,负责调度Pod在哪些Node节点运行,负责控制集群运行过程中的所有状态,负责进行各类POD运行的调度和编排。Master节点是由至少3个或以上的奇数个节点构成,通过选举机制确保至少一个Leader的Master节点来管控整个集群,这样在出现一些异常情况的时候可以保证整个云原生大数据平台的运行稳定性。由于是3个或以上奇数个节点,因此Master节点可以允许出现异常情况的数量为(N/2+1)个。剩下的Master节点都处于Standby状态,随时准备“接手”整个平台的管理权。
Node节点(工作节点)
Node节点是云原生大数据平台的工作负载,是工作层面节点,为整个云原生大数据平台提供各自的计算资源(CPU资源、MEM资源)以及存储资源,负责管理云原生大数据平台上运行的大数据组件以及管理组件的所有容器(container)。在运行期间每个Node节点都负责监控/上报给Master节点所有Pod的运行状态以及节点状态,接收Master节点的调度和编排任务在本Node节点进行执行。云原生大数据平台至少需要7个Node节点来确保基础大数据组件的正常运行,大多数的基础大数据组件都是以分布式架构以多容器化实例方式在平台上运行,保证各个组件的高可用性,同时平台上还有一些作业工作器和管理器相关的容器。上图给出的只是一些基础组件相关Pod的示例。因为是采用了云原生架构,Node节点可以按需进行横向和纵向扩展,以扩充整个平台可用的资源量。除了大数据组件以及管理组件外,平台也支持进行自定义应用的部署发布(能够支持云原生应用对平台资源的统一调度使用)。
环境说明
整个云原生大数据平台有上述三类节点构成,平台可以支持在虚拟机节点、物理机节点、公有云节点或者已有K8s平台上部署发布。如果环境是由虚拟机节点构成或者公有云节点构成,在条件允许的情况下,最好能够将Master节点分布在不同的物理机上,能够将Node节点尽量多的分布在不同的物理机上,避免由于物理机的损坏(物理网卡、物理磁盘、物理CPU或者MEM的损坏)导致的大批节点无法使用,无法保证平台的运行稳定。特意强调一下,在条件不允许的情况下,最好还是要首先保证Master节点的分散度。
配置要求
主机SSH登录
集群主机提供root账号(仅申请部署阶段使⽤,后续如有需要可回收)或sudo⽤户账号(sudo执⾏命令免密)。
集群所有主机提供相同的SSH账号信息,即相同的⽤户名和密码。
主机⽹络配置
集群任意主机需要分配固定的IPv4地址且后续不可变更。
集群任意主机之间的所有协议(ICMP/TCP/UDP)、端⼝访问没有限制。
主机磁盘挂载
集群主机创建时,根⽬录⽂件系统强烈推荐通过LVM⽅式挂载。
集群主机初始状态时,数据盘挂载到主机即可,⽆需格式化。
其他资源
集群主机出⽅向可访问公⽹NTP源,或内⽹提供的NTP源。
集群主机出⽅向可访问公⽹DNS服务器,或内⽹提供DNS服务器。
对外访问端口
平台的对外访问是指在私有环境中通过Web可访问的端口,这些端口开放的目的是为了使用平台提交、管理数据处理作业、监控平台正常运行所用,这些端口无需对互联网用户开放,只需要在独立私有环境中可用即可。平台对外访问端口都是通过引导节点(BootStrap节点)进行访问的,也就是需要开放引导节点(BootStrap节点)的私有环境访问权限。
对外访问端口配置示例如下:
典型配置1
主机资源
类型 | 节点名称 | 计算资源 | 存储资源 |
---|---|---|---|
bootstrap | boot | 4C 7.6G | vda=100G vdb=200G |
master | master-01 | 8C 15.8G | vda=200G |
master | master-02 | 8C 15.8G | vda=200G |
master | master-03 | 8C 15.8G | vda=200G |
node | node-01 | 16C 64.9G | vda=200G vdb=300G vdc=300G |
node | node-02 | 16C 64.9G | vda=200G vdb=300G vdc=300G |
node | node-03 | 16C 64.9G | vda=200G vdb=300G vdc=300G |
node | node-04 | 16C 64.9G | vda=200G vdb=300G vdc=300G |
node | node-05 | 16C 64.9G | vda=200G vdb=300G vdc=300G |
操作系统:
CentOS Linux release 7.9.2009(AltArch)
Linux version4.18.04-193.28.1.el7.aarch64(mockbuild@aarch64-01.bsys.centos.org)(gcc version 8.3.1 20190311(Red Hat 8.3.1-3) (GCC)) #1 SMP
Wed Oct 21 16:25:35 UTC 2020
网络情况:
私有网络,无法联通外网
K8s集群
类型 | 说明 |
---|---|
K8S版本信息 | v1.20.4 |
CNI插件信息 | flannel v0.12.0 |
CNI版本信息 | cni 0.3.1 |
CRI版本信息 | docker 19.3.15 |
CoreDNS版本信息 | coredns:1.6.9 |
中间件
- 能提供NAS或NFS服务和对应的CSI插件
- 能提供SLB(高可用负载均衡),用户可自助安装ingress controller
- 能提供 MySQL 5.7 高权限账号
- 能提供带认证的镜像仓库服务
典型配置2
主机资源
类型 | 节点名称 | 计算资源 | 存储资源 |
---|---|---|---|
boc+boms管理 | protal1.bocloud.com | 16C 32G | 磁盘100G 数据盘200G |
ci/nfs | ci.bocloud.com | 16C 32G | 磁盘100G 数据盘500G |
本地harbor仓库 | harbor.bocloud.com | 8C 16G | 磁盘100G 数据盘1T |
本地mysql主节点 | mysql 8.0主 | 16C 32G | 磁盘100G 数据盘1T |
本地mysql备节点 | mysql 8.0备 | 16C 32G | 磁盘100G 数据盘1T |
database | database-01 | 16C 32G | 磁盘100G 数据盘1T |
database | database-02 | 16C 32G | 磁盘100G 数据盘1T |
master | master-01 | 8C 16G | 磁盘100G 数据盘200G |
master | master-02 | 8C 16G | 磁盘100G 数据盘200G |
master | master-03 | 8C 16G | 磁盘100G 数据盘200G |
node | node-01 | 32C 64G | 磁盘100G 数据盘200G |
node | node-02 | 32C 64G | 磁盘100G 数据盘200G |
node | node-03 | 32C 64G | 磁盘100G 数据盘200G |
操作系统 CentOS 7.6/7.9/8.2
k8S集群信息
K8s版本 1.21.1
CRI支持Docker 19.03.13
CoreDNS版本信息 1.7.0
中间件
- 提供NFS插件
- 提供SLB(高可用负载均衡),和对应的Ingress