用户指南
文档版本 01
发布日期 2022-02-22
版权所有 © 华为技术有限公司 2022。 保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传 播。
商标声明
和其他华为商标均为华为技术有限公司的商标。
本文档提及的其他所有商标或注册商标,由各自的所有人拥有。
注意
您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或 特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或暗示的声 明或保证。
由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文 档中的所有陈述、信息和建议不构成任何明示或暗示的担保。
目 录
1 什么是云容器引擎... 1
2 高危操作及解决方案... 3
3 集群管理...7
3.1 集群概述...7
3.2 CCE Turbo 集群与 CCE 集群的区别...10
3.3 购买 CCE Turbo 集群...12
3.4 购买 CCE 集群... 17
3.5 购买鲲鹏集群...32
3.6 访问集群... 45
3.6.1 通过 kubectl 连接集群...45
3.6.2 自定义集群证书 SAN... 49
3.6.3 Kubectl 常用命令... 51
3.6.4 Kubectl 使用指南... 57
3.7 集群弹性扩容...58
3.8 集群升级... 60
3.8.1 集群升级概述... 60
3.8.2 升级前须知... 65
3.8.3 重置升级/滚动升级(1.13 及以下版本)... 68
3.8.4 原地升级(1.15 及以上版本)... 73
3.8.5 集群跨版本业务迁移... 78
3.8.6 CCE 发布 Kubernetes 版本说明... 79
3.9 管理集群... 79
3.9.1 删除集群(按需计费)...79
3.9.2 删除/退订/释放集群(包年/包月)... 81
3.9.3 续费集群(包年/包月)... 84
3.9.4 休眠与唤醒集群(按需计费)...86
3.9.5 按需转包周期... 87
3.9.6 配置管理... 88
3.9.7 启用 istio... 91
3.10 获取集群证书... 94
3.11 变更集群规格... 95
3.12 集群管理权限控制... 96
3.13 集群参数说明... 98
3.13.1 节点最多可以创建多少个 Pod... 98
3.13.2 iptables 与 IPVS 如何选择...99
3.13.3 CPU 管理策略...100
4 节点管理... 101
4.1 节点概述... 101
4.2 购买节点... 105
4.3 购买节点-CCE Turbo 集群... 114
4.4 纳管 ECS/BMS 到集群... 118
4.5 移除节点... 120
4.6 登录节点... 122
4.7 管理节点标签... 123
4.8 同步节点信息... 126
4.9 节点调度设置(污点 taint)... 127
4.10 重置节点... 129
4.11 删除节点... 132
4.12 节点关机... 134
4.13 节点滚动升级...135
4.14 升级节点操作系统内核... 139
4.15 节点预留资源计算公式... 143
4.16 为 docker 创建 Linux LVM 型磁盘分区... 144
4.17 数据盘空间分配说明...146
4.18 给 CCE 集群的节点添加第二块数据盘... 148
4.19 CCE Turbo 共池 BMS 节点容器网卡多队列配置...150
5 节点池管理... 154
5.1 节点池概述... 154
5.2 创建节点池... 157
5.3 管理节点池... 171
6 工作负载... 177
6.1 工作负载概述... 177
6.2 创建无状态负载(Deployment)... 181
6.3 创建有状态负载(StatefulSet)...189
6.4 创建守护进程集(DaemonSet)... 196
6.5 创建普通任务(Job)... 201
6.6 创建定时任务(CronJob)... 207
6.7 管理容器组(Pod)... 212
6.8 GPU 调度...213
6.9 NPU 调度... 216
6.10 管理工作负载和任务...218
6.11 工作负载弹性伸缩... 226
6.12 容器设置... 231
6.12.1 如何使用第三方镜像... 231
6.12.2 设置容器规格... 234
6.12.3 设置容器生命周期...236
6.12.4 设置容器启动命令...239
6.12.5 设置容器健康检查...244
6.12.6 设置环境变量... 247
6.12.7 性能管理配置(性能瓶颈分析)...249
6.12.8 健康检查 UDP 协议安全组规则说明... 251
6.12.9 配置镜像拉取策略...252
6.12.10 时区同步... 252
6.12.11 工作负载 DNS 配置说明... 253
6.12.12 实例缩容优先级说明... 257
6.13 登录容器... 258
6.14 Pod 互访 QoS 限速... 260
6.15 Pod Annotation 说明... 260
7 亲和/反亲和性调度... 262
7.1 调度策略概述... 262
7.2 自定义调度策略... 264
7.2.1 节点亲和性... 264
7.2.2 工作负载亲和性... 266
7.2.3 工作负载反亲和性... 269
7.3 简易调度策略... 272
7.3.1 工作负载和可用区的亲和性...272
7.3.2 工作负载和可用区的反亲和性... 274
7.3.3 工作负载和节点的亲和性... 275
7.3.4 工作负载和节点的反亲和性...277
7.3.5 工作负载间的亲和性...279
7.3.6 工作负载间的反亲和性... 281
8 在线离线作业混合部署... 284
9 网络管理... 293
9.1 网络概述... 293
9.2 容器网络模型... 296
9.2.1 容器网络模型对比... 296
9.2.2 容器隧道网络...297
9.2.3 VPC 网络... 302
9.2.4 云原生网络 2.0... 307
9.3 Service... 313
9.3.1 Service 概述... 313
9.3.2 集群内访问(ClusterIP)... 314
9.3.3 节点访问(NodePort)... 319
9.3.4 负载均衡(LoadBalancer)... 324
9.3.5 ENI 负载均衡 ( ENI LoadBalancer )...342
9.3.6 DNAT 网关(DNAT)... 346
9.3.7 LoadBalancer 类型 Service 使用 pass-through 能力...352
9.3.8 Service Annotations 说明... 356
9.4 Ingress... 358
9.4.1 Ingress 概述... 358
9.4.2 通过控制台使用 ELB Ingress... 361
9.4.3 通过 Kubectl 命令行添加 ELB Ingress... 367
9.4.4 通过控制台使用 Nginx Ingress...381
9.4.5 通过 Kubectl 命令行添加 Nginx Ingress...384
9.5 DNS... 389
9.5.1 DNS 概述... 389
9.5.2 工作负载 DNS 配置说明... 390
9.5.3 使用 CoreDNS 实现自定义域名解析... 394
9.5.4 使用 NodeLocal DNSCache 提升 DNS 性能...398
9.6 容器如何访问 VPC 内部网络...405
9.7 从容器访问公网...407
9.8 NetworkPolicy...411
9.9 SecurityGroup... 412
9.10 网络平面(NetworkAttachmentDefinition)... 415
9.11 扩展集群 VPC 网段...422
10 存储管理-CSI...424
10.1 存储基础知识...424
10.2 存储 CSI 概述... 426
10.3 本地磁盘存储...431
10.4 云硬盘存储卷(EVS)...436
10.4.1 云硬盘存储卷概述...436
10.4.2 使用云硬盘存储卷...437
10.4.3 使用 kubectl 自动创建云硬盘...443
10.4.4 使用 kubectl 对接已有云硬盘...444
10.4.5 使用 kubectl 部署带云硬盘存储卷的工作负载... 449
10.5 极速文件存储卷(SFS Turbo)... 453
10.5.1 极速文件存储卷概述... 453
10.5.2 使用极速文件存储卷... 454
10.5.3 使用 kubectl 对接已有极速文件存储卷... 456
10.5.4 使用 kubectl 部署带极速文件存储卷的无状态工作负载... 458
10.5.5 使用 kubectl 部署带极速文件存储卷的有状态工作负载... 460
10.6 对象存储卷(OBS)... 462
10.6.1 对象存储卷概述... 462
10.6.2 使用对象存储卷... 464
10.6.3 使用 kubectl 自动创建对象存储... 468
10.6.4 使用 kubectl 对接已有对象存储... 469
10.6.5 跨区域使用 OBS 桶...472
10.6.6 使用 kubectl 部署带对象存储卷的无状态工作负载...474
10.6.7 使用 kubectl 部署带对象存储卷的有状态工作负载...475
10.6.8 对象存储卷挂载设置自定义访问密钥(AK/SK)... 478
10.7 文件存储卷(SFS)... 482
10.7.1 文件存储卷概述... 482
10.7.2 使用文件存储卷... 483
10.7.3 使用 kubectl 自动创建文件存储... 487
10.7.4 使用 kubectl 对接已有文件存储... 488
10.7.5 使用 kubectl 部署带文件存储卷的无状态工作负载...491
10.7.6 使用 kubectl 部署带文件存储卷的有状态工作负载...492
10.8 设置挂载参数...495
10.9 快照与备份... 498
11 存储管理-Flexvolume... 502
11.1 存储 Flexvolume 概述...502
11.2 1.15 集群如何从 Flexvolume 存储类型迁移到 CSI Everest 存储类型...504
11.3 云硬盘存储卷...515
11.3.1 云硬盘存储卷概述...515
11.3.2 使用云硬盘存储卷...516
11.3.3 使用 kubectl 自动创建云硬盘...521
11.3.4 使用 kubectl 对接已有云硬盘...522
11.3.5 使用 kubectl 部署带云硬盘存储卷的工作负载... 531
11.4 极速文件存储卷... 534
11.4.1 极速文件存储卷概述... 534
11.4.2 使用极速文件存储卷... 535
11.4.3 使用 kubectl 对接已有极速文件存储卷... 537
11.4.4 使用 kubectl 部署带极速文件存储卷的无状态工作负载... 539
11.4.5 使用 kubectl 部署带极速文件存储卷的有状态工作负载... 540
11.5 对象存储卷... 542
11.5.1 对象存储卷概述... 542
11.5.2 使用对象存储卷... 544
11.5.3 使用 kubectl 自动创建对象存储... 548
11.5.4 使用 kubectl 对接已有对象存储... 549
11.5.5 使用 kubectl 部署带对象存储卷的无状态工作负载...553
11.5.6 使用 kubectl 部署带对象存储卷的有状态工作负载...556
11.6 文件存储卷... 557
11.6.1 文件存储卷概述... 557
11.6.2 使用文件存储卷... 558
11.6.3 使用 kubectl 自动创建文件存储... 561
11.6.4 使用 kubectl 对接已有文件存储... 563
11.6.5 使用 kubectl 部署带文件存储卷的无状态工作负载...567
11.6.6 使用 kubectl 部署带文件存储卷的有状态工作负载...569
12 监控和日志... 572
12.1 监控概述... 572
12.2 自定义监控... 576
12.3 使用 Prometheus 插件监控... 580
12.4 容器日志... 585
13 命名空间... 593
13.1 创建命名空间...593
13.2 管理命名空间...595
13.3 设置命名空间级的网络策略...596
13.4 设置资源配额及限制...597
14 配置中心... 600
14.1 创建配置项... 600
14.2 使用配置项... 602
14.3 创建密钥... 605
14.4 使用密钥... 608
14.5 集群系统密钥说明... 610
15 模板市场(helm)... 612
15.1 示例模板... 612
15.2 我的模板... 615
15.2.1 模板概述... 615
15.2.2 准备模板包...615
15.2.3 上传模板包...617
15.2.4 通过模板创建工作负载... 618
16 插件管理... 621
16.1 插件概述... 621
16.2 CoreDNS(系统资源插件,必装)... 623
16.3 storage-driver(系统资源插件,必装)... 629
16.4 Everest(系统资源插件,必装)... 630
16.5 npd... 632
16.6 Dashboard... 633
16.7 autoscaler... 638
16.8 nginx-ingress...643
16.9 metrics-server... 648
16.10 cce-hpa-controller... 649
16.11 prometheus... 650
16.12 web-terminal...653
16.13 virtual-kubelet... 656
16.14 gpu-beta... 660
16.15 huawei-npu...664
16.16 volcano... 665
16.17 spark-operator... 666
16.18 Tf-operator... 667
16.19 p2paddon... 668
16.20 rc-recycler... 670
16.21 event-exporter... 671
16.22 dew-provider... 672
16.23 dolphin... 677
17 弹性伸缩... 680
17.1 弹性伸缩概述...680
17.2 工作负载弹性伸缩... 682
17.2.1 工作负载伸缩原理...682
17.2.2 创建工作负载弹性伸缩(HPA)... 684
17.2.3 创建工作负载弹性伸缩(CustomedHPA)... 686
17.2.4 管理工作负载伸缩策略... 690
17.3 集群/节点弹性伸缩... 692
17.3.1 节点伸缩原理... 692
17.3.2 创建节点伸缩策略...694
17.3.3 管理节点伸缩策略...700
17.4 使用 HPA+CA 实现工作负载和节点联动弹性伸缩... 701
17.5 CCE 容器实例弹性伸缩到 CCI 服务... 709
18 权限管理... 715
18.1 CCE 权限概述...715
18.2 集群权限(IAM 授权)... 717
18.3 命名空间权限(Kubernetes RBAC 授权)... 721
18.4 示例:某部门权限设计及配置... 727
18.5 CCE 控制台的权限依赖... 734
18.6 Pod 安全策略配置... 742
19 系统管家... 746
19.1 系统体检... 746
19.2 系统加固... 748
20 云审计服务... 752
20.1 云审计服务支持的 CCE 操作列表...752
20.2 查看云审计日志... 755
21 新版本控制台功能说明...757
1 什么是云容器引擎
Kubernetes是主流的开源容器编排平台。为了让用户可以方便地在华为云上使用 Kubernetes管理容器应用,华为云推出了基于原生Kubernetes的云容器引擎服务。
云容器引擎(Cloud Container Engine,简称CCE)提供高度可扩展的、高性能的企业 级Kubernetes集群,支持运行Docker容器。借助云容器引擎,您可以在云上轻松部 署、管理和扩展容器化应用程序。
云容器引擎深度整合了华为云高性能的计算(ECS/BMS)、网络(VPC/EIP/ELB)、存 储(EVS/OBS/SFS)等服务,并支持GPU、ARM、FPGA等异构计算架构,支持多可用 区(Available zone,简称AZ)、多区域(Region)容灾等技术构建高可用
Kubernetes集群,并提供高性能可伸缩的容器应用管理能力,简化集群的搭建和扩容 等工作,让您专注于容器化应用的开发与管理。
名词解释
使用云容器引擎服务,会涉及到以下基本概念:
● 集群:是指容器运行所需云资源的集合,包含了若干台云服务器、负载均衡器等 云资源。
● 实例(Pod):由相关的一个或多个容器构成一个实例,这些容器共享相同的存 储和网络空间。
● 工作负载:Kubernetes资源对象,用于管理Pod副本的创建、调度以及整个生命 周期的自动控制。
● Service:由多个相同配置的实例(Pod)和访问这些实例(Pod)的规则组成的 微服务。
● Ingress:Ingress是用于将外部HTTP(S)流量路由到服务(Service)的规则集 合。
● Helm应用:Helm是管理Kubernetes应用程序的打包工具,提供了Helm Chart在 指定集群内图形化的增删改查。
● 镜像仓库:用于存放Docker镜像,Docker镜像用于部署容器服务。
您在使用前可以了解更多Kubernetes相关知识,具体请参见https://kubernetes.io/
docs/concepts/。
主要功能
云容器引擎支持对容器应用的全生命周期管理,具有以下功能:
集群管理
● 通过控制台一键创建Kubernetes集群,支持跨可用区高可用。
一站式容器管理
● 容器应用全生命周期管理。
● 高性能容器隧道网络、VPC网络、云原生网络2.0等容器网络。
● 云硬盘EVS、弹性文件存储SFS、对象存储OBS等持久化存储支持。
● 资源、应用、容器多维度监控。
● 多样化的日志报表统计。
● 基于角色的权限管理和容器运行时安全。
应用市场内容
● 丰富的Helm chart组件。
● 对接开源镜像中心和华为云容器镜像服务,支持自定义镜像和共享镜像。
开发者服务
● 提供OpenAPI和社区原生API。
● 提供Kubectl插件和社区原生Kubectl工具。
计费说明
云容器引擎服务本身不收取任何费用,但在使用过程中会创建相关资源,您需要为您 使用的这些资源付费。
关于收费模式和具体价格,请参阅计费说明。
2 高危操作及解决方案
业务部署或运行过程中,用户可能会触发不同层面的高危操作,导致不同程度上的业 务故障。为了能够更好地帮助用户预估及避免操作风险,本文将从集群/节点、网络与 负载均衡、日志、云硬盘多个维度出发,为用户展示哪些高危操作会导致怎样的后 果,以及为用户提供相应的误操作解决方案。
集群/节点
表2-1 集群及节点高危操作
分类 高危操作 导致后果 误操作后解决方案
master节 点
修改集群内节点
安全组 可能导致master节点无 法使用
说明命名规则:集群名称-cce- control-随机数
参照新建集群的安全组 进行修复,放通安全 组。
节点到期或被销
毁 该master节点不可用 不可恢复。
重装操作系统 master组件被删除 不可恢复。
自行升级master
或者etcd组件版本 可能导致集群无法使用 回退到原始版本。
删除或格式化节 点/etc/
kubernetes等核 心目录数据
该master节点不可用 不可恢复。
更改节点IP 该master节点不可用 改回原IP。
自行修改核心组 件(etcd、kube- apiserver、
docker等)参数
可能导致master节点不
可用 按照推荐配置参数恢
复,详情请参见配置管 理。
自行更换master
或etcd证书 可能导致集群不可用 不可恢复。
分类 高危操作 导致后果 误操作后解决方案 worker节
点
修改集群内节点 安全组
可能导致节点无法使用 说明命名规则:集群名称-cce-
node-随机数
参照新建集群的安全组 进行修复,放通安全 组。
节点被删除 该节点不可用 不可恢复。
重装操作系统 节点组件被删除,节点不 可用
重置节点,具体请参见 重置节点。
升级节点内核 可能导致节点无法使用或 网络异常
说明
节点运行依赖系统内核版 本,如非必要,请不要使 用yum update更新或重装 节点的操作系统内核(使 用原镜像或其它镜像重装 均属高危操作)
EulerOS 2.2恢复方式 请参见如何解决yum
update升级操作系统
导致容器网络不可用问 题?非EulerOS 2.2您可以 重置节点,具体请参见 重置节点。
更改节点IP 节点不可用 改回原IP。
自行修改核心组 件(kubelet、
kube-proxy等)
参数
可能导致节点不可用、修 改安全相关配置导致组件 不安全等
按照推荐配置参数恢 复,详情请参见配置管 理。
修改操作系统配 置
可能导致节点不可用 尝试还原配置项或重置 节点,具体请参见重置 节点。
删除/opt、/var/
paas目录,删除 数据盘
节点不可用 重置节点,具体请参见
重置节点。
修改节点内目录 权限、容器目录 权限等
权限异常 不建议修改,请自行恢
复。
对节点进行磁盘 格式化或分区
节点不可用 重置节点,具体请参见
重置节点。
在节点上安装自
己的其他软件 导致安装在节点上的 Kubernetes组件异常,
节点状态变成不可用,无 法部署工作负载到此节点
卸载已安装软件,尝试 恢复或重置节点,具体 请参见重置节点。
网络与负载均衡
表2-2 网络与负载均衡
高危操作 导致后果 误操作后解决方案
修改内核参数
net.ipv4.ip_forward=0 网络不通 修改内核参数为 net.ipv4.ip_forward=1 修改内核参数
net.ipv4.tcp_tw_recycle=1 导致nat异常 修改内核参数
net.ipv4.tcp_tw_recycle=0 节点安全组配置未放通容
器CIDR的53端口udp 集群内DNS无法正常工作 参照新建集群的安全组进 行修复,放通安全组。
通过ELB的控制台在CCE管 理的ELB创建自定义的监 听器
所做修改被CCE侧重置或
Ingress故障 通过service的yaml来自动 创建监听器。
通过ELB的控制台在CCE管 理的ELB绑定自定义的后 端
禁止手动绑定后端。
通过ELB的控制台修改CCE
管理的ELB的证书 通过ingress的yaml来自动 管理证书。
通过ELB的控制台修改CCE
管理的ELB监听器名称 禁止修改CCE管理的ELB监
听器名称。
通过ELB的控制台修改CCE 管理的ELB实例、监听 器、转发策略的描述
禁止修改CCE管理的ELB实 例、监听器、转发策略的 描述。
删除default-network的 network-attachment- definitions的crd资源
容器网络不通,集群删除 失败等
误删除该资源需要使用正 确的配置创建default- network资源。
日志
表2-3 日志
高危操作 导致后果 误操作后解决方案
删除宿主机/tmp/ccs-log-
collector/pos目录 日志重复采集 无 删除宿主机/tmp/ccs-log-
collector/buffer目录 日志丢失 无
云硬盘
表2-4 云硬盘
高危操作 导致后果 误操作后解决方案 备注
控制台手动解挂
EVS Pod写入报io
error 删掉node上mount
目录,重新调度Pod Pod里面的文件记录 了文件的采集位置 节点上umount磁
盘挂载路径
Pod写入本地磁 盘
重新mount对应目
录到Pod中 Buffer里面是待消费 的日志缓存文件 节点上直接操作
EVS Pod写入本地磁 盘
无 无
3 集群管理
3.1 集群概述
Kubernetes是一个很容易地部署和管理容器化的应用软件系统,使用Kubernetes能够
方便对容器进行调度和编排。对应用开发者而言,可以把Kubernetes看成一个集群操作系统。Kubernetes提供服务 发现、伸缩、负载均衡、自愈甚至选举等功能,让开发者从基础设施相关配置等解脱 出来。
Kubernetes可以把大量的服务器看做一台巨大的服务器,在一台大服务器上面运行应 用程序。无论Kubernetes的集群有多少台服务器,在Kubernetes上部署应用程序的方 法永远一样。
Kubernetes 集群架构
Kubernetes集群包含master节点(控制节点)和node节点(计算节点/工作节点),
应用部署在node节点上,且可以通过配置选择应用部署在某些特定的节点上。
Kubernetes集群的架构如下所示:
图3-1 Kubernetes 集群架构
Master节点
Master节点是集群的控制节点,由API Server、Scheduler、Controller Manager和 ETCD四个组件构成。
● API Server:各组件互相通讯的中转站,接受外部请求,并将信息写到ETCD中。
● Controller Manager:执行集群级功能,例如复制组件,跟踪Node节点,处理节 点故障等等。
● Scheduler:负责应用调度的组件,根据各种条件(如可用的资源、节点的亲和性 等)将容器调度到Node上运行。
● ETCD:一个分布式数据存储组件,负责存储集群的配置信息。
在生产环境中,为了保障集群的高可用,通常会部署多个master,如CCE的集群高可 用模式就是3个master节点。
Node节点
Node节点是集群的计算节点,即运行容器化应用的节点。
● kubelet:kubelet主要负责同Container Runtime打交道,并与API Server交互,
管理节点上的容器。
● kube-proxy:应用组件间的访问代理,解决节点上应用的访问问题。
● Container Runtime:容器运行时,如Docker,最主要的功能是下载镜像和运行容 器。
Master 节点数量与集群规模
在CCE中创建集群,Master节点可以是1个或3个,3个Master节点会按高可用部署,确 保集群的可靠性。
Master节点的规格决定集群管理Node节点的规模,创建集群时可以选择集群管理规 模,这个规模就是指的集群可以有多少个Node节点,例如50节点、200节点等。
集群管理规模可以在创建集群后变更,具体请参见变更集群规格。
集群的网络
从网络的角度看,集群的节点都位于VPC之内,节点上又运行着容器,每个容器都需 要访问,节点与节点、节点与容器、容器与容器都需要访问。
集群的网络可以分成三个网络来看。
● 节点网络:为集群内节点分配IP地址。
● 容器网络:为集群内容器分配IP地址,负责容器的通信,当前支持三种容器网络 模型,不同模型有不同的工作机制。
● 服务网络:服务(Service)是用来解决访问容器的Kubernetes对象,每个Service 都有一个固定的IP地址。
在创建集群时,您需要为各个网络选择合适的网段,确保各网段之间不存在冲突,每 个网段下有足够的IP地址可用。集群创建后不支持修改容器网络模型,您需要在创建 前做好规划和选择。
强烈建议您在创建集群前详细了解集群的网络以及容器网络模型,具体请参见网络概 述。
集群安全组
创建集群同时会创建如下安全组,保证集群安全。
● 集群名称-cce-control-随机数:Master节点安全组。
安全组中必须开启的端口如下:
– 源地址属于本安全组规则的需全部放通。
– 4789(仅容器隧道网络模型的集群需要):容器间网络互访。
– 5443、5444:Master节点的kube-apiserver的监听端口。端口需对VPC网 段、容器网段网段放通。
说明
CloudShell基于VPCEP实现,在CloudShell中使用kubectl访问集群需要5443端口放通 198.19.128.0/20网段。5443端口默认对所有网段放通,如果您对安全组做过加固,
当出现在CloudShell中无法访问集群时,请检查5443端口是否放通了198.19.128.0/20 网段。
– 9443:Node节点网络插件访问Master节点。
– 8445:Node节点存储插件访问Master节点。
● 集群名称-cce-node-随机数:Node节点安全组。
安全组中必须开启的端口如下:
– 源地址属于本安全组规则的需全部放通。
– 4789(仅容器隧道网络模型的集群需要):容器间网络互访。
– 10250:Master节点的访问Node节点的kubelet组件(如执行kubectl exec {pod})。
– 30000-32767:Node节点对外访问端口Nodeport,创建Service时需要指 定。端口需对VPC网段、容器网段和ELB的网段放通。
● 集群名称-cce-eni-随机数:ENI(弹性网卡)网络安全组,仅CCE Turbo集群才会 创建。
集群创建后,您可以在VPC控制台查看到创建的安全组。
警告
集群创建时自动创建的安全组以及安全组规则禁止删除,否则会导致集群异常。
集群生命周期
表3-1 集群状态说明
状态 说明
创建中 集群正在创建,正在申请云资源
正常 集群正常运行
扩容中 集群正在增加节点
缩容中 集群正在删除节点
状态 说明
休眠中 集群正在休眠中
唤醒中 集群正在唤醒中
升级中 集群正在升级中
不可用 当前集群不可用
删除中 集群正在删除中
图3-2 集群状态流转
3.2 CCE Turbo 集群与 CCE 集群的区别
CCE Turbo 集群与 CCE 集群对比
CCE支持多种类型的集群创建,以满足您各种业务需求,如下为CCE Turbo集群与CCE 集群区别:
表3-2 集群类型对比
维度 子维度 CCE Turbo集群 CCE集群 集群 定位 面向云原生2.0的新一代容器集群
产品,计算、网络、调度全面加 速
标准版本集群,提供商用级的 容器集群服务
节点形 态
支持虚拟机和裸金属服务器混合 支持虚拟机和裸金属服务器混 合
支持机 型
基于擎天软硬件协同架构的机型 通用机型
网络 网络模
型 云原生网络2.0:面向大规模和高
性能的场景。
组网规模2000节点
云原生网络1.0:面向性能和 规模要求不高的场景。
● 隧道网络模式
● VPC网络模式 网络性
能 VPC网络和容器网络融合,性能
无损耗 VPC网络叠加容器网络,性能
有一定损耗 容器网
络隔离 Pod可直接关联安全组,基于安 全组的隔离策略,支持集群内外 部统一的安全隔离。
● 隧道网络模式:集群内部 网络隔离策略,支持 Networkpolicy。
● VPC网络模式:不支持 安全 隔离性 ● 裸金属服务器:安全容器,支
持虚机级别的隔离
● 虚拟机:普通容器
普通容器,Cgroups隔离
CCE Turbo 集群 Pod 批量创建性能说明
CCE Turbo集群的Pod网络申请VPC的弹性网卡或者辅助弹性网卡,目前Pod与网卡
(弹性网卡或辅助弹性网卡)的关联操作发生在Pod调度完成之后,Pod创建的速度受 网卡创建与绑定速度的影响,具体限制如下表所示。
表3-3 网卡创建耗时 节点类
型
网卡类型 网卡绑定到节点 上的操作
网卡可用 耗时
并发控制 节点默认预热配 置
ECS节 点
辅助弹性 网卡
指定该节点的弹 性网卡创建辅助 弹性网卡
1s以内 租户级别:
600/分钟 不预热
BMS 节点
弹性网卡 节点绑定弹性网
卡 20s-30s 节点级别:3
并发 0.3:0.6的高低水 位预热
ECS节点创建Pod说明(采用辅助弹性网卡)
● 当Pod调度的节点上没有可用的已经预热的网卡时,会调用辅助弹性网卡的创建 API,在该节点的一个弹性网卡上创建一个辅助弹性网卡;并把该辅助弹性网卡分 配给该Pod。
● 当Pod调度的节点上有可用的已经预热的网卡时,会选择最早未使用的一张辅助弹 性网卡分配给该Pod。
● 受限于辅助弹性网卡的租户并发创建速度,不预热的场景下,每分钟最多创建成 功600个Pod;如果有更高的弹性要求,可配置辅助弹性网卡的预热。
说明
预热会消耗子网的IP地址,进而影响集群可运行的Pod数规模,请根据业务规模合理规划配 置预热比例。
BMS节点创建Pod说明(采用弹性网卡)
● 当Pod调度的节点上没有可用的已经预热的网卡时,会调用节点绑定网卡的API,
在该节点上绑定一个弹性网卡;并把该弹性网卡分配给该Pod。目前BMS节点绑 定一张弹性网卡大约耗时在20s到30s不等。
● 当Pod调度的节点上有可用的已经预热的网卡时,会选择最早未使用的一张弹性网 卡分配给该Pod。
● 受限于BMS节点绑定弹性网卡的速度,不预热的场景下,同一节点的Pod启动速 度为:3个/20秒;所以针对BMS节点,默认配置了节点弹性网卡总配额的30%到 60%的高低水位预热。
弹性网卡预热策略(按照以下策略2分钟周期性检查):
● 当 节点上预热网卡数 + 当前Pod使用的网卡数 < 低水位网卡数(节点网卡配额*
低水位比例)时,会预热一部分网卡使得 节点上预热网卡数 + 当前Pod使用的网 卡数 = 低水位网卡数(节点网卡配额*低水位比例)。
● 当 节点上预热网卡数 + 当前Pod使用的网卡数 > 高水位网卡数(节点网卡配额*
高水位比例)时,会释放一部分网卡使得 节点上预热网卡数 + 当前Pod使用的网 卡数 = 高水位网卡数(节点网卡配额*高水位比例)。
3.3 购买 CCE Turbo 集群
CCE Turbo集群是基于云原生基础设施构建的云原生2.0容器引擎服务,具备软硬协 同、网络无损、安全可靠、调度智能的优势,为用户提供一站式、高性价比的全新容 器服务体验。
CCE Turbo集群提供了面向大规模高性能的场景云原生2.0网络,容器直接从VPC网段 内分配IP地址,容器和节点可以分属不同子网,支持VPC内的外部网络与容器IP直通,
享有高性能。强烈建议您在购买前阅读云原生网络2.0,了解云原生2.0网络特性、各网 段网络规划等内容。
约束与限制
● 创建节点过程中会使用域名方式从OBS下载软件包,需要能够使用云上内网DNS 解析OBS域名,否则会导致创建不成功。为此,节点所在子网需要配置为内网
DNS地址,从而使得节点使用内网DNS。在创建子网时DNS默认配置为内网
DNS,如果您修改过子网的DNS,请务必确保子网下的DNS服务器可以解析OBS 服务域名,否则需要将DNS改成内网DNS。● 单Region下单用户可创建的集群总数限制为50个,如果配额不满足业务需求,请 到“我的配额”提交申请,查看配额请参见关于配额。
● CCE Turbo集群的网络模式只支持云原生网络2.0,云原生网络2.0的详细介绍请参 见云原生网络2.0。
● CCE Turbo集群的节点目前仅支持基于擎天软硬件协同架构的机型。
● TrunkPort能力仅在1.19版本的CCE Turbo集群中使用。
● 在1.19版本的CCE Turbo集群中添加的共池BMS节点,容器使用的网卡默认配置是 4队列,详情请参见CCE Turbo共池BMS节点容器网卡多队列配置。
操作步骤
步骤1 登录CCE控制台,在左侧导航栏中单击“资源管理 > 集群管理”,单击“CCE Turbo集 群”右侧的“购买”。
图3-3 购买 CCE Turbo 集群
步骤2 在购买CCE Turbo集群页面中,参照如下表格设置集群参数。
基础配置:
创建集群,作为运行容器的独立环境,需要您完成如下基础配置。
表3-4 创建集群基础配置
参数 参数说明
集群名称 新建集群的名称,同一账户下集群不可重名,创建后不可修改。
集群名称长度范围为4-128个字符,以小写字母开头,由小写字 母、数字、中划线(-)组成,且不能以中划线(-)结尾。
版本 集群要安装的Kubernetes软件版本。
集群管理规模 集群管理规模是指当前集群的控制节点可以管理的最大工作节点规 模,您可以选择200节点、1000节点或2000节点三种管理规模,请 根据您的业务需求选择。如果您需要创建5000节点的集群,请提 交工单申请。
若选择“1000节点”,表示当前集群的控制节点最多可管理1000 个工作节点。由于不同管理规模的控制节点规格不同,因此配置费 用会有差异。
网络配置:
选择集群下节点和容器所使用的网段,当网段下IP资源不足时将无法继续创建节点和 容器。
表3-5 网络配置参数
参数 参数说明
网络模型 云原生网络2.0:深度整合华为云虚拟私有云VPC原生弹性网卡
(Elastic Network Interface,简称ENI)能力,采用VPC网段分配 容器地址,支持ELB直通容器,享有高性能。
了解更多请参见云原生网络2.0、CCE集群创建时如何选择网络模 型?
虚拟私有云 请选择新建集群下节点和容器使用的虚拟私有云VPC,集群创建后 不可更改。
虚拟私有云是通过逻辑方式进行网络隔离,提供安全、隔离的网络 环境。
若没有虚拟私有云可选择,请单击虚拟私有云控制台“虚拟私有云 控制台”进行创建,完成创建后单击刷新按钮。操作步骤请参见创 建虚拟私有云和子网。
节点子网 选择一个虚拟私有云后可显示该选项。
集群下节点使用的子网,决定了集群下节点的数量上限。创建节点 时支持选择相同VPC下的其他子网。
通过节点子网提供与其他网络隔离的、可以独享的网络资源,以提 高网络安全。
若没有节点子网可选择,请单击“新建子网”进行创建,完成创建 后单击刷新按钮。虚拟私有云、子网、集群的关系请参见集群概 述。
创建节点过程中会使用域名方式从OBS下载软件包,需要能够使用 内网DNS解析OBS域名,否则会导致创建不成功。为此,节点所在 子网需要配置为内网DNS地址,从而使得节点使用内网DNS。在创 建子网时DNS默认配置为内网DNS,如果您修改过子网的DNS,请 务必确保子网下的DNS服务器可以解析OBS服务域名,否则需要将 DNS改成内网DNS。
集群创建后子网无法修改,请谨慎选择。
容器子网 选择一个虚拟私有云后可显示该选项。
集群下容器使用的子网,决定了集群下容器的数量上限,集群创建 后该网段不可更改。
请根据业务需求选择容器子网,确定容器子网后,容器实例将在规 划的网段内分配IP。
说明如果容器子网和节点子网相同,容器和节点将共同使用子网下剩余IP,易出 现IP资源不足的场景导致容器或节点创建失败。
高级配置:
根据业务需求选择配置CCE Turbo集群的增强能力。
表3-6 网络配置参数
参数 参数说明
服务网段 服务网段为kubernetes service ip网段,集群创建后该网段不可更 改。服务网段与已创建的路由不能冲突,如果冲突,请重新选择。
默认设置为10.247.0.0/16网段。请根据业务需求设置合理的网段和 掩码,掩码决定集群内可用service ip数量。
服务网段要设置合理的掩码,掩码决定集群内可用service数量。集 群中服务网段掩码设置不合适,会导致集群实际可用的service较 少。设置掩码后,选项右侧会有当前网段最多支持的实例估算值,
请作参考。详情请参见如何规划CCE集群的网络地址段?。
kube-proxy转 发模式
设置Service和其后端容器Pod之间进行负载均衡的方式,创建后不 可修改。
● IPVS:由华为主导开发并在社区获得广泛支持的kube-proxy模 式,采用增量式更新,吞吐更高,速度更快,并可以保证 service更新期间连接保持不断开,适用于大规模场景。
IPVS模式下,ingress和service使用相同的ELB实例时,无法在 集群内的节点和容器中访问ingress。
● iptables:社区传统的kube-proxy模式,完全以iptables规则的 方式来实现service负载均衡。该方式最主要的问题是在服务多 的时候产生太多的iptables规则,非增量式更新会引入一定的时 延,大规模情况下有明显的性能问题。
说明
● IPVS为大型集群提供了更好的可扩展性和性能。
● IPVS支持比iptables更复杂的负载平衡算法(最小负载,最少连接,位 置,加权等)。
● IPVS支持服务器健康检查和连接重试等。
CPU管理策略 ● 开启:支持给工作负载实例配置CPU独占,适用于对CPU缓存和 调度延迟敏感的工作负载。
● 关闭:关闭工作负载实例独占CPU核的功能,优点是CPU共享池 的可分配核数较多。
计费 ● 包年/包月:预付费模式,按订单的购买周期计费,适用于可预 估资源使用周期的场景,价格比按需计费模式更优惠。若选择 创建“包年/包月”的集群,请设置购买时长。包年/包月集群创 建后不能删除,如需停止使用,请到费用中心执行退订操作。
● 按需计费:后付费模式,按资源的实际使用时长计费,可以随 时开通/删除资源。
步骤3 单击“下一步:配置确认”,确认所设置的服务选型参数、规格和费用等信息,您可 以参照如下参数选择企业项目、修改计费模式和购买时长。
参数 参数说明
企业项目 该参数仅对开通企业项目的企业客户帐号显示。
选择某企业项目(如:default)后,集群、集群下节点、集群安 全组、节点安全组和自动创建的节点EIP(弹性公网IP)将创建到 所选企业项目下。为方便管理资源,在集群创建成功后,建议不要 修改集群下节点、集群安全组、节点安全组的企业项目。
企业项目是一种云资源管理方式,企业项目管理服务提供统一的云 资源按项目管理,以及项目内的资源管理、成员管理。了解更多企 业项目相关信息,请查看企业管理。
计费模式 如果确认集群的计费模式有误,您可以在此修改。
● 包年/包月:预付费模式,按订单的购买周期计费,适用于可预 估资源使用周期的场景,价格比按需计费模式更优惠。包年/包 月集群创建后不能删除,如需停止使用,请到费用中心执行退 订操作。
● 按需计费:后付费模式,按资源的实际使用时长计费,可以随 时开通/删除资源。
购买时长 若选择创建“包年/包月”的集群,请设置购买时长。
自动续费:勾选后可在自动。若按月购买,则自动续费周期为1个 月;若按年购买,则自动续费周期为1年。
步骤4 确认规格和费用后,单击“提交”,集群开始创建。
集群创建预计需要6-10分钟,您可以单击“返回集群管理”进行其他操作或单击“查 看集群事件列表”后查看集群详情。
步骤5 待集群状态为“正常”,表示CCE Turbo集群创建成功,集群名称后方显示为Turbo字 样。
----结束
相关操作
● 通过命令行工具连接集群:请参见通过kubectl连接集群。
● 登录节点:请参见登录节点。
● 创建命名空间:同个集群内可创建多个命名空间,形成逻辑上的不同分组,便于 不同的分组在共享使用集群资源时还能被分别管理。若您需要为集群创建命名空 间,请参见命名空间。
● 创建工作负载:集群创建完成后,您可以使用镜像创建一个可公网访问的应用,
请参见创建无状态负载(Deployment)、创建有状态负载(StatefulSet)或创建守 护进程集(DaemonSet)。
● 单击已成功创建的集群名称,进入“集群详情”页可查看集群详情。
表3-7 已创建的集群详情 页签类别 说明
集群详情 可查看该集群的详情及运行状态等。
监控 可查看集群下全部节点的CPU和内存分配率(即分配量的最大 值),以及控制节点的CPU和内存使用率、控制节点规格等信 息。
事件 ● 可以直接在“事件”页签下查看集群的事件。
● 可以设置查询条件,比如设置事件产生的时间段或搜索事件 名称,查看相关事件。
弹性扩容 您可以根据实际业务需要对集群的工作节点进行扩容和缩容,
详情请参见集群弹性扩容。
v1.17版本的集群不再支持AOM提供的弹性伸缩机制,请使用 节点池功能进行弹性伸缩,详情请参见节点池概述。
kubectl 若您需要从客户端计算机连接到kubernetes集群,请使用 kubernetes命令行客户端kubectl,详情请参见通过kubectl连 接集群。
资源标签 通过为资源添加标签,可以对资源进行自定义标记,实现资源 的分类。
您可以在TMS中创建“预定义标签”,预定义标签对所有支持 标签功能的服务资源可见,通过使用预定义标签可以提升标签 创建和迁移效率。具体请参见创建预定义标签。
CCE服务会自动帮您创建CCE-Dynamic-Provisioning-Node=节 点id的标签,允许增加5个标签。
Istioctl 在集群开启istio服务网格功能后,您使用Istio命令行工具 Istioctl配置多种路由策略,从而管理服务流量,包括流量转 移、故障注入、限流熔断等。详情请参见启用istio。
3.4 购买 CCE 集群
您可以通过云容器引擎控制台非常方便快速的创建Kubernetes集群。Kubernetes是大 规模容器集群管理软件,一个集群可以管理一组节点资源。
CCE集群支持虚拟机与裸金属服务器混合、支持GPU、NPU等异构节点的混合部署,
基于高性能网络模型提供全方位、多场景、安全稳定的容器运行环境,您可以实现多 种场景的混合部署。
约束与限制
● 创建节点过程中会使用域名方式从OBS下载软件包,需要能够使用云上内网DNS 解析OBS域名,否则会导致创建不成功。为此,节点所在子网需要配置为内网
DNS地址,从而使得节点使用内网DNS。在创建子网时DNS默认配置为内网
DNS,如果您修改过子网的DNS,请务必确保子网下的DNS服务器可以解析OBS 服务域名,否则需要将DNS改成内网DNS。● 单Region下单用户可创建的集群总数限制为50个,如果配额不满足业务需求,请 到“我的配额”提交申请。
● 集群一旦创建以后,不支持变更以下项:
– 变更集群类型,例如“鲲鹏集群”变更为“CCE集群”。
– 变更集群的控制节点数量。
– 变更控制节点可用区。
– 变更集群的网络配置,如所在的虚拟私有云VPC、子网、容器网段、服务网 段、IPv6、kubeproxy代理(转发)模式。
– 变更网络模型,例如“容器隧道网络”更换为“VPC网络”。
更多内容请参见约束与限制。
操作步骤
步骤1 登录CCE控制台,在总览页面单击“购买Kubernetes集群”,或在左侧导航栏中单击
“资源管理 > 集群管理”,单击“CCE集群”右侧的“购买”按钮。
图3-4 集群管理-购买 CCE 集群
步骤2 参照表3-8设置集群参数,其中带“*”的参数需重点关注。
表3-8 创建集群参数配置
参数 参数说明
计费模式 ● 包年/包月:预付费模式,按订单的购买周期计费,适用于可预 估资源使用周期的场景,价格比按需计费模式更优惠。包年/包 月集群创建后不能删除,如需停止使用,请到费用中心执行退 订操作。
● 按需计费:后付费模式,按资源的实际使用时长计费,可以随 时开通/删除资源。
本章以“按需计费”类型为例进行讲解。
参数 参数说明
区域 不同区域的云服务产品之间内网互不相通;请就近选择靠近您业务 的区域,可减少网络时延,提高访问速度。
企业项目 该参数仅对开通企业项目的企业客户帐号显示。
选择某企业项目(如:default)后,集群、集群下节点、集群安 全组、节点安全组和自动创建的节点EIP(弹性公网IP)将创建到 所选企业项目下。为方便管理资源,在集群创建成功后,建议不要 修改集群下节点、集群安全组、节点安全组的企业项目。
企业项目是一种云资源管理方式,企业项目管理服务提供统一的云 资源按项目管理,以及项目内的资源管理、成员管理。了解更多企 业项目相关信息,请查看企业管理。
* 集群名称 新建集群的名称,创建后不可修改。
集群名称长度范围为4-128个字符,以小写字母开头,由小写字 母、数字、中划线(-)组成,且不能以中划线(-)结尾。
版本 Kubernetes社区基线版本,建议选择最新的版本。版本升级请参见 集群升级概述。
若有Beta版本时,您可以选择试用,但不建议您将该版本用于商用 场景。
集群管理规模 集群管理规模是指当前集群的控制节点可以管理的最大工作节点规 模,您可以选择50节点、200节点、1000节点或2000节点(仅 1.15.11及以上版本的集群支持)的管理规模,请根据您的业务需 求选择。如果您需要创建5000节点规模的集群,请提交工单申 请。
若选择“1000节点”,表示当前集群的控制节点最多可管理1000 个工作节点。由于不同管理规模的控制节点规格不同,因此配置费 用会有差异。
参数 参数说明
控制节点数 3:集群将创建三个控制节点,从而实现集群高可用,在单个控制 节点发生故障后集群可以继续使用,不影响业务功能。单击“更 改”,在“容灾设置”窗口,可进行如下设置:
容灾级别:
● 可用区:通过把控制节点建在不同的可用区,达到容灾目的。
● 故障域:通过把控制节点建在同一可用区下不同故障域,达到 容灾目的。当环境支持故障域时,才会显示该选项。
● 主机:通过把控制节点建在同一可用区下不同主机,达到容灾 目的。
● 自定义:您可以自行选择每个控制节点的位置。故障域模式控 制节点必须在同一可用区下。
1:集群仅创建一个控制节点,单控制节点集群不保证SLA(服务 级别协议),非高可用集群,不适用于商用场景。单击“更改”,
在“可用区设置”页面可选择控制节点可用区。
说明
● 在商用场景中,为提高集群容灾能力,建议您选择多控制节点模式集 群。
● 多控制节点模式开关在集群创建完成后不可变更。单控制节点集群不支 持升级为多控制节点集群,控制节点故障将影响运行业务,请谨慎选 择。
● 为保证可靠性,1000及以上集群管理规模默认开启多控制节点模式。
* 虚拟私有云 新建集群所在的虚拟私有云,集群创建后不可更改。
虚拟私有云是通过逻辑方式进行网络隔离,提供安全、隔离的网络 环境。
若没有虚拟私有云可选择,请单击“创建虚拟私有云”进行创建,
完成创建后单击刷新按钮。操作步骤请参见创建虚拟私有云和子 网。
* 所在子网 节点虚拟机运行的子网环境,集群创建后不可更改。
通过子网提供与其他网络隔离的、可以独享的网络资源,以提高网 络安全。
若没有子网可选择,请单击“创建子网”进行创建,完成创建后单 击刷新按钮。虚拟私有云、子网、集群的关系请参见集群概述。
创建节点过程中会使用域名方式从OBS下载软件包,需要能够使用 内网DNS解析OBS域名,否则会导致创建不成功。为此,节点所在 子网需要配置为内网DNS地址,从而使得节点使用内网DNS。在创 建子网时DNS默认配置为内网DNS,如果您修改过子网的DNS,请 务必确保子网下的DNS服务器可以解析OBS服务域名,否则需要将 DNS改成内网DNS。
集群创建后子网无法修改,请谨慎选择。
IPv6双栈 默认不开启。该功能仅在1.15及以上版本的集群下显示,方法请参 见通过CCE搭建IPv4/IPv6双栈集群。
开启IPv6:开启后将自动创建IPv6地址的容器网段与服务网段,支 持通过IPv6地址段访问集群资源,包括节点,工作负载等。
参数 参数说明
网络模型 集群创建成功后,网络模型不可更改,请谨慎选择。如何选择网络 模型请参见CCE集群创建时如何选择网络模型?各模型的区别是什 么?
VPC网络
VPC网络模式下每个节点占用一条VPC路由规则,Console界面中可 显示当前局点支持的VPC路由规则条数,以及每个节点可供分配的 容器IP个数(即可创建的Pod实例数目上限)。
● 采用VPC路由方式与底层网络深度整合,适用于高性能场景,但 每个节点占用一条VPC路由规则,节点数量受限于虚拟私有云 VPC的路由配额。
● VPC网络集群下的每个节点将会被分配固定大小的IP地址段,由 于没有隧道封装的消耗,容器网络性能相对于容器隧道网络有 一定优势。VPC网络集群由于VPC路由中配置有容器网段与节点 IP的路由,可以支持集群外直接访问容器实例等特殊场景。
说明
– VPC网络模式下不支持扩展网段和NetworkPolicy。
– 一个VPC下创建多个VPC网络模式的集群时,需要为每个集群选择一 个不重叠的地址段,不仅不能和VPC地址重叠,也不和其他容器网段 重叠。
容器隧道网络
容器隧道网络下只能添加同一类型的节点,即全部为虚拟机节点或 全部为裸金属节点。
● 基于底层VPC网络,另构建了独立的VXLAN隧道化容器网络,
适用于一般场景。
● VXLAN是将以太网报文封装成UDP报文进行隧道传输。容器网 络是承载于VPC网络之上的Overlay网络平面,具有付出少量隧 道封装性能损耗,即可获得通用性强、互通性强、高级特性支 持全面(例如Network Policy网络隔离)的优势,可以满足大 多数应用需求。
容器网段 请根据业务需求选择容器网段,确定容器网段后,容器实例将在规 划的网段内分配IP,集群创建后该网段不可更改。
● 未勾选“自动选择”:请手动选择网段。若与子网网段有冲突 时将有红色文字提示,请重新选择。建议使用网段:
10.0.0.0/8~18,172.16.0.0/16~18,192.168.0.0/16~18。
不同集群使用相同的容器网段,会导致容器IP冲突,应用访问 异常。
● 勾选“自动选择”:系统将自动分配与子网网段无冲突的网 段。
容器网段要设置合理的掩码,掩码决定集群内可用节点数量。集群 中容器网段掩码设置不合适,会导致集群实际可用的节点较少。设 置掩码后,选项下方会有当前网段最多支持的实例估算值,请作参 考。详情请参见如何规划CCE集群的网络地址段?。
参数 参数说明
服务网段 服务网段为kubernetes service ip网段,集群创建后该网段不可更 改。服务网段与已创建的路由不能冲突,如果冲突,请重新选择。
● 使用默认网段:默认设置为10.247.0.0/16网段。
● 手动设置网段:请根据业务需求设置合理的网段和掩码,掩码 决定集群内可用service ip数量。
详情请参见如何规划CCE集群的网络地址段?。
鉴权方式 “RBAC”默认选择,不可取消。
开启RBAC能力后,设置了细粒度权限的IAM用户使用集群下资源 将受到权限控制。详细请参见命名空间权限(Kubernetes RBAC 授权)。
认证方式 认证机制主要用于对集群下的资源做权限控制。
默认开启X509认证模式,X509是一种非常通用的证书格式。
若需要对集群进行权限控制,请勾选“认证能力增强”,集群支持 通过请求体的头域的信息识别用户,达到认证鉴权的目的。
用户需要分别上传自己的CA根证书、客户端证书和客户端证书私 钥(证书制作方法可参考Certificates),并勾选“我已确认上传 的证书合法”。
注意
● 请上传小于1MB的文件,CA根证书和客户端证书上传格式支持.crt 或.cer格式,客户端证书私钥仅支持上传未加密的证书私钥。
● 客户端证书有效期需要5年以上。
● 上传的CA根证书既给认证代理使用,也用于配置kube-apiserver聚合 层,如不合法,集群将无法成功创建。
集群描述 选填,请输入新建容器集群相应的描述信息。
参数 参数说明
高级设置 单击“高级设置”后展开详细项目,支持的功能如下(当前可用区 中不支持的功能将隐藏):
服务转发模式:
● iptables:社区传统的kube-proxy模式,完全以iptables规则的 方式来实现service负载均衡。该方式最主要的问题是在服务多 的时候产生太多的iptables规则,非增量式更新会引入一定的时 延,大规模情况下有明显的性能问题。
● ipvs:由华为主导开发并在社区获得广泛支持的kube-proxy模 式,采用增量式更新,吞吐更高,速度更快,并可以保证 service更新期间连接保持不断开,适用于大规模场景。
ipvs模式下,ingress和service使用相同的ELB实例时,无法在集 群内的节点和容器中访问ingress。
说明
● ipvs为大型集群提供了更好的可扩展性和性能。
● ipvs支持比iptables更复杂的负载平衡算法(最小负载,最少连接,位 置,加权等)。
● ipvs支持服务器健康检查和连接重试等。
CPU管理策略:
该参数仅在v1.13.10-r0及以上版本的集群中显示。
● 开启:支持给工作负载实例配置CPU独占,适用于对CPU缓存和 调度延迟敏感的工作负载。
● 关闭:关闭工作负载实例独占CPU核的功能,优点是CPU共享池 的可分配核数较多。
更多CPU管理策略内容请参见Feature Highlight: CPU Manager 或深入理解 Kubernetes CPU Mangager。
开启CPU管理策略之后,CCE节点变更规格将无法重新拉起或创建 工作负载,解决方法详见CCE节点变更规格后,为什么无法重新拉 起或创建工作负载?。
购买时长 若选择创建“包年/包月”的集群,请设置购买时长。
步骤3 单击“下一步:创建节点”,在“创建节点”步骤中,参照如下参数配置节点:
● 创建节点:
– 现在添加:创建集群的同时创建节点,当前仅支持虚拟机节点。如果节点创 建失败集群会一起回滚。
– 稍后添加:将不会创建节点,仅创建一个空集群,集群创建完成后可以添加 虚拟机或裸金属节点。
● 计费模式:支持“包年/包月”和“按需计费”两种计费类型。
– 包年/包月:包年包月是预付费模式,按订单的购买周期计费,适用于可预估 资源使用周期的场景,价格比按需计费模式更优惠。
– 按需计费:按需计费是后付费模式,按资源的实际使用时长计费,可以随时 开通/删除资源。
创建集群时节点的计费方式跟随集群的计费方式,如集群的计费模式选择“按需 计费”,则创建过程中节点的计费模式只能为“按需计费”,“包年/包月”同 理。创建方式请参考购买节点。
包年/包月节点创建后不能删除,如需停止使用,请到费用中心执行退订操作。
● 当前区域:节点实例所在的物理位置。
● 可用区:请根据业务需要进行选择。可用区是在同一区域下,电力、网络隔离的 物理区域,可用区之间内网互通,不同可用区之间物理隔离。
如果您需要提高工作负载的高可靠性,建议您在创建集群后将云服务器部署在不 同的可用区,购买集群时节点只能部署在一个可用区。
图3-5 工作节点创建在不同可用区
● 节点类型:选择节点类型。
– 虚拟机节点:选中后创建虚拟机节点。
– 裸金属节点:创建集群过程中不可选,需在集群创建完成后才可以为集群增 加裸金属节点。
说明
CCE集群中创建裸金属节点需满足以下条件:
▪
集群创建完成之后才可以添加裸金属节点。▪
集群为非IPv6模式。▪
VPC网络集群版本高于v1.11.7,容器隧道网络集群版本高于v1.13.10。▪
节点计费模式为包年/包月。购买裸金属节点请参考购买节点。
● 节点名称:自定义节点名称。长度范围为1-56个字符,以小写字母开头,支持小 写字母、数字、中划线(-),不能以中划线(-)结尾。
创建后如需修改请参考修改云服务器名称,修改后需要同步节点信息。
● 节点规格:请根据业务需求选择相应的节点规格。
– 通用型:该类型实例提供均衡的计算、存储以及网络配置,适用于大多数的 使用场景。通用型实例可用于Web服务器、开发测试环境以及小型数据库工 作负载等场景。
– 内存优化型:该类型实例提供内存比例更高的实例,可以用于对内存要求较 高、数据量大的工作负载,例如关系数据库、NoSQL等场景。
– 通用入门型:通用入门型实例提供均衡的计算、存储以及网络配置,利用 CPU积分机制保证基准性能,适合平时不会持续高压力使用CPU,但偶尔需 要提高计算性能完成工作负载的场景,可用于轻量级Web服务器、开发、测 试环境以及中低性能数据库等场景。
– GPU加速型:提供优秀的浮点计算能力,从容应对高实时、高并发的海量计 算场景。P系列适合于深度学习,科学计算,CAE等;G系列适合于3D动画渲 染,CAD等。仅支持1.11及以上版本集群添加GPU加速型节点。
– 高性能计算型:实例提供具有更稳定、超高性能计算性能的实例,可以用于 超高性能计算能力、高吞吐量的工作负载场景,例如科学计算。
– 通用计算增强型:该类型实例具有性能稳定且资源独享的特点,满足计算性 能高且稳定的企业级工作负载诉求。
– 磁盘增强型:该类型实例能提供可使用本地磁盘存储以及更高网络性能的实 例,可以用于处理需要高吞吐以及高数据交换处理的工作负载,例如大数据 工作负载等场景。
– 超高I/O型:该类型实例提供超低SSD盘访问延迟和超高IOPS性能,适用于高 性能关系型数据库、NoSQL数据库(如Cassandra、MongoDB)、
ElasticSearch搜索等场景。
– AI加速型:AI加速型节点实例,搭载高性能、低功耗的海思Ascend 310 AI处 理器,实现快速高效地处理推理和图像识别等工作,适用于图像识别、视频 处理、推理计算以及机器学习等场景。
说明
▪
当前AI加速型节点仅在部分可用区可选。▪
选用AI加速型的节点前需要安装huawei-npu插件,以保证使用昇腾 310芯片资源 的负载可以正常运行。▪
节点创建成功后会安装D310芯片驱动并自动触发节点重启,期间会有短暂的节点 不可用,属于正常现象,重启完成后可恢复正常。图3-6 选择节点规格
为确保节点稳定性,系统会自动预留部分资源,用于运行必须的系统组件。详细 请参见节点预留资源计算公式。
● 操作系统:部分Region不显示下方分类,请直接选择节点对应的操作系统。
– 公共镜像:请选择节点对应的操作系统。
公共镜像是常见的标准操作系统镜像,所有用户可见,包括操作系统以及预 装的公共应用,更多介绍请参见公共镜像概述。
– 私有镜像(公测中):包含操作系统或业务数据、预装的公共应用以及用户 的私有应用的镜像,仅用户个人可见。该功能仅支持v1.15及以上版本集群。
若没有私有镜像可选择,请参照如何使用私有镜像制作工作节点镜像?(公 测)进行制作。
– 共享镜像:由其他用户共享而来的私有镜像。更多关于共享镜像的使用,请 参见共享镜像。
重装操作系统或修改操作系统配置将导致节点不可用,请务必谨慎操作,具体请 参见高危操作及解决方案。
● 系统盘:设置工作节点的系统盘空间。您可以设置系统盘的规格为40GB-1024GB 之间的数值,缺省值为40GB。
在默认情况下,系统盘可提供高I/O(SAS)、超高I/O(SSD)几种基本的云硬盘 类型,关于云硬盘的详细信息请参见云硬盘概述。
加密:数据盘加密功能可为您的数据提供强大的安全防护,加密磁盘生成的快照 及通过这些快照创建的磁盘将自动继承加密功能。目前仅在部分Region显示此选 项,具体以界面为准。
– 默认不加密。
– 点选“加密”后,可在弹出的“加密设置”对话框中,选择已有的密钥,若 没有可选的密钥,请单击后方的链接创建新密钥,完成创建后单击刷新按 钮。
● 数据盘:设置工作节点的数据盘空间。您可以设置数据盘的规格为
100GB-32768GB之间的数值,缺省值为100GB。数据盘可提供的云硬盘类型与上 方系统盘一致。
注意
若数据盘卸载或损坏,会导致docker服务异常,最终导致节点不可用。建议不要 删除该数据盘。
– LVM管理:CCE数据盘使用LVM(Logical Volume Manager)进行磁盘管 理,开启后您可以通过空间分配调整数据盘中不同资源的空间占比。第一块 盘默认选中不可更改,新增数据盘后可开启或关闭该功能:
▪
默认选中,开启LVM管理。▪
取消选中,关闭LVM管理。注意
○ 开启LVM管理的数据盘将按照设置的比例进行统一分配。
○ 1.13.10及更高版本的集群创建节点时,若未开启LVM管理的数据盘,
请参考给CCE集群的节点添加第二块数据盘填写安装前执行脚本进行 格式化,否则该数据盘仍会被LVM管理。
○ 1.13.10之前版本的集群创建节点时,若未开启LVM管理的数据盘请务 必格式化,否则会与第一块数据盘进行二选一被LVM管理,进而导致 与预期不符的情况。
– 加密:数据盘加密功能可为您的数据提供强大的安全防护,加密磁盘生成的 快照及通过这些快照创建的磁盘将自动继承加密功能。
该功能仅在部分Region的1.13.10及以上版本的集群中支持,1.13.10之前版 本的集群不显示此选项。
▪
默认不加密。▪
点选“加密”后,可在弹出的“加密设置”对话框中,选择已有的密 钥,若没有可选的密钥,请单击后方的链接创建新密钥,完成创建后单 击刷新按钮。– 新增数据盘:当前仅支持挂载两块数据盘,您可以在节点创建完成后前往ECS 添加更多数据盘。部分集群版本不支持此功能,具体以界面为准。
– 数据盘空间分配:单击后方的 ,可以对数据盘中的“k8s空间”
和“用户空间”占比进行自定义设置,开启LVM管理的数据盘将按照设置的 比例进行统一分配。部分集群版本不支持此功能,具体以界面为准。
▪
k8s空间:您可以自定义数据盘中Docker和Kubelet的资源占比。Docker 资源包含Docker工作目录、Docker镜像数据以及镜像元数据;Kubelet 资源包含Pod配置文件、密钥以及临时存储EmptyDir等挂载数据。Docker占比不能小于10%,且空间大小不能小于60G;Kubelet占比不能 小于10%。
Docker空间大小配置跟实际业务有关,详细的说明请参见数据盘空间分 配说明。
▪
用户空间:定义本地盘中不分配给kubernetes使用的空间大小和用户空 间挂载路径。说明
注意挂载路径不能设置为 /、/home/paas、/var/paas、/var/lib、/var/
script、/var/log/、/mnt/paas、/opt/cloud,不能和系统目录冲突(例如bin、
lib、home、root、boot、dev、etc、lost+found、mnt、proc、sbin、srv、
tmp、var、media、opt、selinux、sys、usr等),否则会导致系统或节点安装 失败。
当集群版本为v1.13.10-r0及以上,且节点规格为“磁盘增强型”或“超高I/O 型”时,数据盘将显示如下选项:
– 云硬盘:与节点类型为非“磁盘增强型”或“超高I/O型”时的数据盘一致,
此处不再赘述,详情参见上方的数据盘。
– 本地磁盘:本地磁盘实例有宕机风险,不保证数据可靠性,建议您使用云硬 盘存储您的业务数据。
本地磁盘配置参数如下:
▪
磁盘类型:节点类型为“磁盘增强型”时支持普通磁盘(hdd);节点类型 为“超高I/O型”时支持固态硬盘(ssd)。▪
读写方式:当存在多块本地盘时可以设置读写方式,支持“串行”和“并行”两种方式。串行表示数据读写为线性模式,当一块盘使用完才 会使用下一块;并行表示数据读写为条带模式,可以同时读写多块本地 盘。
▪
k8s空间:您可以自定义数据盘中Docker和Kubelet的资源占比。Docker 资源包含Docker工作目录、Docker镜像数据以及镜像元数据;Kubelet 资源包含Pod配置文件、密钥以及临时存储EmptyDir等挂载数据。▪
用户空间:定义本地盘中不分配给kubernetes使用的空间大小和用户空 间挂载路径。须知
– 在数据盘中设置“k8s空间”和“用户空间”占比时,需满足k8s空间和用户空 间总和为100%,设置后可单击 自动调整数据。
– 磁盘使用direct-lvm模式,移除将使用loop-lvm模式,有影响系统稳定性的风 险。
图3-7 设置本地磁盘
● 虚拟私有云:不可修改,仅用于展示当前集群所在的虚拟私有云,该参数仅在 v1.13.10-r0及以上版本的集群中显示。
● 所在子网:通过子网提供与其他网络隔离的、可以独享的网络资源,以提高网络 安全。可选择该集群虚拟私有云下的任意子网,集群节点支持跨子网。
创建节点过程中会使用域名方式从OBS下载软件包,需要能够使用内网DNS解析 OBS域名,否则会导致创建不成功。为此,节点所在子网需要配置为内网DNS地 址,从而使得节点使用内网DNS。在创建子网时DNS默认配置为内网DNS,如果 您修改过子网的DNS,请务必确保子网下的DNS服务器可以解析OBS服务域名,
否则需要将DNS改成内网DNS。
已有集群添加节点时,如果子网对应的VPC新增了扩展网段且子网是扩展网段,
要在控制节点安全组(即集群名称-cce-control-随机数)中添加如下三条安全组 规则,以保证集群添加的节点功能可用(新建集群时如果VPC已经新增了扩展网 段则不涉及此场景):