华为云CCE容器服务Kubernetes集群配置与应用部署完全指南
1. 华为云CCE容器服务概述
华为云云容器引擎(Cloud Container Engine,简称CCE)是华为云推出的企业级Kubernetes集群托管服务。CCE深度整合了华为云的计算(ECS/BMS)、网络(VPC/EIP/ELB)和存储(EVS/SFS/OBS)等基础设施能力,为用户提供高度可扩展、高性能的云原生应用部署和管理方案。
与自建Kubernetes集群相比,CCE具有显著优势:集群搭建从自建所需的1-2天缩短至10分钟以内;Master节点由华为云托管,用户无需关心控制平面的运维工作;节点扩缩容支持自动伸缩,无需手动操作;安全补丁由平台自动修复;监控日志开箱即用。此外,CCE的Master节点免费,相比自建3台Master节点每月约3000元的成本,可大幅节省开支。
需要先登录华为云控制台,点击:华为云控制台,还没有账号,点击:注册并关联,已有账号点击:登录后关联
2. CCE集群创建与配置
2.1 集群类型选择
华为云CCE提供两种集群类型:
- CCE Standard集群:标准版Kubernetes集群,适用于大多数通用容器化业务场景,支持虚拟机节点和裸金属节点。
- CCE Turbo集群:增强型集群,在网络性能上进行了深度优化,支持更高效的容器网络方案,适用于对网络性能要求较高的场景,如AI计算、大数据处理等。
2.2 集群创建操作步骤
登录CCE控制台后,在集群管理页面单击右上角的"购买集群"按钮进入创建流程。创建过程中需要配置以下关键参数:
- 集群版本:建议选择最新的商用稳定版本,如v1.29及以上。
- 集群管理规模:根据业务预期节点数量选择,如50节点、200节点等规格。
- 高可用模式:生产环境建议开启高可用,控制节点将分布在不同可用区以提高容灾能力。
- 虚拟私有云VPC:选择或新建VPC,集群将运行在该VPC网络中。
- 容器网络模型:可选择VPC网络或容器隧道网络,集群创建后网络模型不可更改。
2.3 连接集群与kubectl配置
集群创建完成后,需要配置kubectl命令行工具来管理集群。在CCE控制台的集群总览页中找到"连接信息"版块,单击kubectl后的"配置"按钮,下载kubeconfig配置文件。将下载的配置文件放置到~/.kube/config路径:
mkdir -p ~/.kube
cp downloaded-kubeconfig.json ~/.kube/config验证与集群的连接状态:
kubectl cluster-info
kubectl get nodes -o wide预期输出会显示集群的控制平面地址以及所有节点的状态、版本和架构信息。
3. 节点池规划与管理
3.1 节点池概念
节点池是集群中具有相同配置的一组节点,节点池可以包含一个或多个节点。节点池中的所有节点具有相同的规格、操作系统、容器运行时等配置,任何配置更改都会影响节点池中的所有节点。通过节点池,用户可以方便快捷地创建、管理和销毁节点,而不会影响整个集群。
3.2 创建节点池
在CCE控制台中,单击集群名称进入集群,在左侧选择"节点管理",在右侧选择"节点池"页签,单击右上角"创建节点池"。创建节点池时需要配置以下核心参数:
- 节点池名称:以小写字母开头,由小写字母、数字、中划线组成,长度1-50位。
- 节点类型:CCE Standard集群支持弹性云服务器(虚拟机)、弹性云服务器(物理机)、裸金属服务器;CCE Turbo集群支持弹性云服务器(虚拟机)和弹性云服务器(物理机)。
- 节点规格:根据业务需求选择,如通用计算增强型等。同一节点池仅支持同类型节点规格。
- 操作系统:推荐使用华为云自研的Huawei Cloud EulerOS 2.0,与CCE深度优化适配。
- 容器运行时:CCE默认使用Containerd,Docker已逐步弃用。
- 安全组:每个节点池最多绑定五个安全组,用于控制节点间的网络通信。
3.3 节点规格选择建议
对于Java类应用,建议从2核4GB规格起步;生产环境建议3个节点起步。若节点池同时配置多个可用区的节点规格,当首选规格因资源配额不足等原因创建失败时,系统将按照优先级顺序尝试创建下一个优先级的规格。
4. 容器网络模型选择
CCE支持三种容器网络模型:VPC网络、容器隧道网络和Cloud Native 2.0网络。集群创建后网络模型不可更改,因此需要提前规划。
4.1 VPC网络模型
VPC网络模型将容器网络无缝融入VPC网络,通过VPC路由表自动配置容器网段与VPC网段之间的路由。由于没有额外的隧道封装开销,容器网络性能接近于VPC网络性能,适用于对性能要求较高的业务场景,如AI计算、大数据计算等。VPC网络模型默认支持同一VPC内的容器与虚拟机直接互访。
4.2 容器隧道网络模型
容器隧道网络是在VPC网络之上构建的Overlay隧道网络,使用VXLAN技术实现容器间的网络通信。该模型提供了更好的网络隔离性,但在性能上略低于VPC网络模型。跨VPC通信时,需要在对端VPC的路由表中添加集群VPC网段和容器网段的路由。
4.3 网络模型选型建议
- 高性能计算场景:优先选择VPC网络模型,以获得接近物理网络的性能。
- 多租户隔离场景:容器隧道网络提供更好的网络隔离性。
- 混合云场景:需根据IDC网络规划综合考虑。
5. 存储配置与管理
5.1 StorageClass存储类
StorageClass是Kubernetes中用于定义存储类型"分类"的资源对象,描述了存储卷的配置模板,包括卷的类型、访问模式、生命周期策略等。CCE默认提供csi-disk(云硬盘)、csi-nas(文件存储)、csi-obs(对象存储)等StorageClass。
查看集群中可用的StorageClass:
kubectl get storageclass5.2 动态存储卷声明PVC
通过PVC(PersistentVolumeClaim)声明存储需求,系统将根据StorageClass自动创建对应的PV(PersistentVolume)和底层存储资源。以下是一个使用云硬盘动态存储的PVC示例:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: data-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: csi-disk在CCE控制台中,进入集群后在左侧导航栏选择"存储",在右侧选择"存储卷声明"页签,单击"创建存储卷声明PVC"即可通过界面完成配置。
5.3 自定义StorageClass
如果默认的StorageClass无法满足业务需求,用户可以创建自定义StorageClass。在CCE控制台的"存储"页面,选择"存储类"页签,单击"创建存储类"即可配置自定义存储参数。
6. 应用部署:Deployment工作负载
6.1 Deployment配置
Deployment是Kubernetes中最常用的工作负载类型,用于管理无状态应用的Pod副本。以下是一个部署Java微服务应用的Deployment YAML示例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo-app
labels:
app: demo-app
spec:
replicas: 3
selector:
matchLabels:
app: demo-app
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
template:
metadata:
labels:
app: demo-app
spec:
containers:
- name: demo-app
image: swr.cn-north-4.myhuaweicloud.com/namespace/demo-app:latest
ports:
- containerPort: 8080
resources:
requests:
memory: "512Mi"
cpu: "250m"
limits:
memory: "1Gi"
cpu: "500m"
livenessProbe:
httpGet:
path: /actuator/health
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /actuator/health
port: 8080
initialDelaySeconds: 20
periodSeconds: 5在CCE控制台中,进入集群后选择"工作负载",单击"创建工作负载",通过界面表单或YAML导入方式完成部署。
6.2 滚动更新策略
上述Deployment配置了滚动更新策略:maxSurge=1表示更新过程中最多允许超出期望副本数1个,maxUnavailable=0表示更新过程中不允许有Pod不可用。这种策略确保了应用更新的零停机交付。
6.3 容器资源配额
resources中requests和limits的配置至关重要:requests是容器调度时资源分配的判断依据,只有当节点上可分配资源总量大于等于容器申请数时,才允许将容器调度到该节点;limits是容器能使用的资源最大值,超过限制值可能会被限流或重启。
7. 服务暴露:Service与Ingress
7.1 Service配置
Service用于将Deployment创建的Pod暴露为网络服务。常见的Service类型包括ClusterIP(集群内部访问)、NodePort(节点端口访问)和LoadBalancer(负载均衡器访问)。
以下是一个LoadBalancer类型的Service示例:
apiVersion: v1
kind: Service
metadata:
name: demo-app-service
spec:
type: LoadBalancer
selector:
app: demo-app
ports:
- protocol: TCP
port: 80
targetPort: 80807.2 Ingress路由配置
Ingress用于将集群内部服务通过HTTP/HTTPS协议暴露到集群外部,支持配置域名和TLS证书。在CCE控制台中,进入集群后选择"服务",切换至"路由"页签,单击"创建路由"即可配置Ingress。
以下是一个配置了域名和TLS证书的Ingress示例:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: demo-app-ingress
annotations:
kubernetes.io/elb.port: "443"
spec:
tls:
- hosts:
- demo.example.com
secretName: demo-tls-secret
rules:
- host: demo.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: demo-app-service
port:
number: 80配置Ingress时,需要确保域名已注册并备案,一旦配置了域名规则后,必须使用域名访问。TLS证书可以导入到Secret中,CCE会自动将证书配置到ELB侧。
8. 弹性伸缩:HPA与CA联动
8.1 HPA水平Pod自动伸缩
HPA(Horizontal Pod Autoscaler)负责工作负载级别的弹性伸缩,根据CPU利用率、内存利用率或自定义指标自动调整Pod的副本数量。以下是一个基于CPU利用率的HPA配置示例:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: demo-app-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: demo-app
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70在CCE控制台中,进入集群后选择"工作负载",在目标工作负载的操作列中单击"弹性伸缩"即可配置HPA策略。
8.2 CA集群节点自动伸缩
CA(Cluster Autoscaler)负责节点级别的弹性伸缩,当集群资源不足时自动增加节点,当资源闲置时自动缩容节点。CA需要以插件形式安装,在CCE控制台的"插件中心"找到autoscaler插件进行安装和配置。
弹性缩容开关默认为关闭,如需启用需在插件配置中打开,并设置缩容阈值(如节点资源使用率低于50%时触发缩容扫描)。
8.3 HPA与CA联动策略
在实际生产环境中,HPA和CA通常配合使用:当业务流量上升时,HPA首先增加Pod副本数;若集群资源不足以调度新增Pod,CA则自动增加节点;当业务流量下降时,HPA先缩容Pod,CA再根据节点资源使用率缩容节点。这种联动机制实现了从应用到基础设施的全栈弹性,有效平衡了业务可用性与资源成本。
9. 监控日志与告警配置
9.1 AOM监控
应用运维管理(AOM)是华为云提供的统一监控平台,与CCE深度集成,开箱即用。通过AOM,用户可以监控集群的CPU、内存、网络等核心指标。
登录AOM 2.0控制台,在左侧导航栏中选择"基础设施监控 > 容器洞察 > 集群监控",即可查看集群的整体运行状态。
9.2 告警规则配置
CCE告警中心基于AOM告警功能,提供集群内置告警的一键开启能力。内置告警规则覆盖了容器服务异常事件告警,如Pod异常、Pod OOM(内存溢出)、负载均衡更新失败等场景。
在CCE控制台中,进入集群后选择"告警中心",切换至"告警规则 > 自定义告警规则"页签,单击"创建告警规则"即可配置自定义告警。告警规则支持指标告警和事件告警两种类型,并可配置通知行动规则,将告警通过短信、邮件等方式发送给运维人员。
10. CI/CD持续集成与部署
10.1 CodeArts流水线
华为云CodeArts提供了一站式的DevOps平台,支持从代码提交到容器部署的全流程自动化。通过CodeArts Pipeline,用户可以构建可视化CI/CD流水线,实现代码提交自动触发编译、镜像构建和CCE部署。
10.2 部署步骤配置
在CodeArts部署步骤中,选择"Kubernetes快速部署(CCE集群)"步骤,需要配置以下参数:
- 集群名称:选择目标CCE集群。
- 命名空间名称:选择Kubernetes命名空间。
- 工作负载名称:选择Deployment类型的工作负载。
- 镜像名称与版本:指定需要部署的容器镜像及版本。
- 实例数量:填写部署的实例数量,不填则自动适配集群实时实例数量。
- 容器规格:配置CPU和内存的配额申请与限制。
推荐配置拥有CCE集群操作权限的子账号的AK/SK进行部署,不推荐使用主账号的AK/SK。
11. 总结与最佳实践
本文系统梳理了华为云CCE容器服务的核心配置与操作要点,从集群创建、节点池管理、网络与存储配置,到应用部署、弹性伸缩、监控告警和CI/CD流水线,涵盖了生产级Kubernetes集群运维的完整链路。以下是一些关键的最佳实践建议:
- 集群规划:生产环境建议选择CCE Turbo集群和高可用模式,控制节点分布在不同可用区。
- 节点管理:使用节点池统一管理同类型节点,为不同业务创建独立的节点池以实现资源隔离。
- 网络选型:高性能场景优先选择VPC网络模型,集群创建后不可更改。
- 资源配置:为每个容器合理设置resources.requests和limits,避免资源竞争和OOM。
- 弹性伸缩:HPA与CA联动部署,实现应用与基础设施的双层弹性。
- 安全合规:使用子账号AK/SK进行操作,避免主账号密钥泄露。
- 可观测性:开启AOM监控和告警中心,配置Pod异常、OOM等关键告警。
通过以上实践,用户可以在华为云CCE上构建高可用、弹性伸缩、可观测的云原生应用体系,充分享受容器化带来的敏捷性与成本优势。
常见问题问答
问1:华为云CCE和ACK有什么区别?
答:CCE是华为云的容器服务,ACK是阿里云的容器服务。两者都是托管的Kubernetes服务,但属于不同云厂商。华为云CCE深度整合华为云的计算、网络、存储基础设施,在政企安全合规方面具有优势。
问2:CCE集群创建后可以修改网络模型吗?
答:不可以。CCE集群的网络模型在创建时确定,创建后无法更改。因此创建集群前需要根据业务需求慎重选择VPC网络或容器隧道网络。
问3:如何实现应用的零停机更新?
答:通过配置Deployment的滚动更新策略,设置maxSurge和maxUnavailable参数。建议配置maxSurge=1、maxUnavailable=0,确保更新过程中始终有足够的Pod提供服务。
问4:HPA和CA有什么区别?
答:HPA(Horizontal Pod Autoscaler)负责Pod副本数的水平伸缩,属于应用层弹性;CA(Cluster Autoscaler)负责集群节点的增减,属于基础设施层弹性。两者配合使用可实现从应用到资源的全栈弹性伸缩。
问5:CCE中如何配置存储卷?
答:CCE通过StorageClass定义存储类型,通过PVC声明存储需求。用户创建PVC时指定storageClassName,系统自动创建对应的PV和底层存储资源。CCE默认提供云硬盘(csi-disk)、文件存储(csi-nas)、对象存储(csi-obs)等StorageClass。
问6:如何监控CCE集群的运行状态?
答:CCE与华为云AOM(应用运维管理)深度集成,提供开箱即用的监控能力。用户可以在AOM控制台查看集群的CPU、内存等核心指标,在CCE告警中心配置Pod异常、OOM等事件告警。



