华为云CCE容器服务:Kubernetes集群配置与生产级应用部署完全指南

apphuang2026年06月19日 17:40:4010

引言:华为云CCE是什么

在云原生技术席卷全球的今天,Kubernetes已经成为容器编排领域的事实标准。华为云推出的云容器引擎(Cloud Container Engine,简称CCE)是一项基于开源Kubernetes的企业级容器服务,提供高可靠高性能的企业级容器应用管理服务,支持Kubernetes社区原生应用和工具,能够简化云上自动化容器运行环境的搭建。CCE的核心价值在于,它通过托管的Kubernetes集群控制面,将用户从繁琐的集群运维工作中解放出来,让开发者能够专注于应用本身的全生命周期管理,从而实现高度可扩展、高性能的云原生应用部署。

需要先登录华为云控制台,点击:华为云控制台,还没有账号,点击:注册并关联,已有账号点击:登录后关联

值得注意的是,部分读者可能习惯于其他云厂商的命名方式(如ACK、EKS等),但在华为云体系中,容器服务的官方名称是CCE。理解这一基础概念,是我们开启后续所有实践操作的前提。

一、集群类型选型:Standard、Turbo与Autopilot

在创建集群之前,首先需要根据业务需求选择合适的集群类型。华为云CCE提供了三种主要的集群形态:CCE Standard集群、CCE Turbo集群和CCE Autopilot集群。

1.1 CCE Standard集群

Standard集群是标准版本的企业级Kubernetes容器服务,提供高可靠、安全的商业级容器集群服务。它采用VPC网络叠加容器网络的两层网络架构,适用于大多数常规业务场景。用户需要自行管理集群中的节点(Node),包括节点的创建、扩缩容和运维。

1.2 CCE Turbo集群

Turbo集群是Standard集群的全面升级版本,拥有更高性能的云原生网络,提供云原生混部调度能力,可实现更高的资源利用率和更广的全场景覆盖。Turbo集群将VPC网络和容器网络融合为一层,网络性能无损耗,特别适合对网络性能要求较高的场景,如AI计算、大数据处理等。

1.3 CCE Autopilot集群

Autopilot集群是Serverless形态的容器服务,集群节点完全托管,用户无需感知底层节点,只需直接部署容器即可。这种模式适合不想管理底层基础设施、希望聚焦于业务开发的团队。

选型建议:对于大多数企业级生产环境,建议优先考虑CCE Turbo集群,它在性能、功能和成本之间取得了较好的平衡。如果是测试环境或对成本极其敏感的场景,Standard集群也是一个不错的选择。Autopilot则更适合无状态、弹性要求极高的微服务场景。

二、集群创建前的准备工作

在正式开始创建集群之前,有几项前置准备工作不可或缺。

2.1 注册华为账号并完成实名认证

这是使用所有华为云服务的基础前提。如果您还没有华为账号,需要先完成注册和实名认证流程。

2.2 首次使用CCE的授权操作

由于CCE在运行中对计算、存储、网络以及监控等各类云服务资源都存在依赖关系,当您首次登录CCE控制台时,CCE将自动请求获取当前区域下的云资源权限。具体操作是:登录CCE控制台后,在首次登录某个区域时会跳出授权说明,单击确定后,CCE将在IAM中创建名为cce_admin_trust的委托,统一对您的其他云服务资源进行操作。在使用CCE服务期间,请不要自行删除或者修改这个委托。

2.3 准备虚拟私有云(VPC)和子网

CCE集群需要运行在虚拟私有云中。如果还没有可用的VPC,需要在创建集群时新建,或者提前在VPC服务中创建好。VPC为CCE集群提供了一个隔离的、用户自主配置和管理的虚拟网络环境。

三、创建Kubernetes集群的完整步骤

完成准备工作后,就可以开始创建集群了。整个流程分为集群基本配置、插件选择、确认提交三个主要步骤。

3.1 登录CCE控制台并选择区域

登录CCE控制台后,在页面左上角选择集群部署区域。区域选择的原则是:所选区域与资源部署区域的距离越近,网络时延越低,访问速度越快。

3.2 配置集群基础信息

单击购买集群后,需要配置以下核心参数:

  • 集群类型:根据前文的选型分析,选择Standard、Turbo或Autopilot。
  • 集群名称:长度范围为4~128个字符,以小写字母开头,支持小写字母、数字和中划线,不能以中划线结尾。
  • 集群版本:建议选择当前CCE支持的最新商用版本。Kubernetes社区一般4个月左右发布一个大版本,CCE在社区发布后3个月左右同步发布新版本。
  • 集群规模:当前集群可以管理的最大Node节点规模,需要根据业务预估选择合适的规格。

3.3 网络配置

网络配置是集群创建中最关键的环节之一,因为集群创建成功后网络模型不可更改。

  • 网络模型:CCE支持三种网络模型——VPC网络、容器隧道网络和云原生网络2.0。三种模型的差异如下:
    • 容器隧道网络:基于VXLAN隧道封装,有约5%-15%的性能损耗。适用于对性能要求不高的Web应用、后台服务等场景,最大可支持2000节点规模。
    • VPC网络:无隧道封装,性能接近VPC网络本身,适用于AI计算、大数据计算等高性能场景。但受限于VPC路由表配额,建议集群规模在1000节点及以下。
    • 云原生网络2.0:容器网段直接使用VPC子网,性能和隔离性更优。
  • 虚拟私有云和子网:选择已创建的VPC和子网。
  • 容器网段:设置容器使用的网段,决定了集群下容器的数量上限。网段不能设置太小,否则会导致可创建的节点数量受限。对于VPC网络模型,如果容器网段掩码是/16,每个节点预留128个Pod,则最多支持512个节点。
  • 服务网段:Service资源使用的网段,决定了Service资源的上限,创建后不可修改。

三个网段(节点网络、容器网络、服务网络)不能重叠,否则会导致网络冲突。

3.4 插件选择与配置

单击下一步:插件选择后,可以选择创建集群时需要安装的插件。常见的必选插件包括CCE容器存储(Everest)插件(用于存储卷管理)、CoreDNS(用于服务发现)等。对于大多数场景,使用默认插件配置即可。

3.5 确认并提交

最后一步是确认配置,显示集群资源清单,确认无误后提交。集群创建预计需要6-10分钟左右,请耐心等待。创建成功后在集群管理下会显示一个运行中的集群,此时集群节点数量为0。

四、节点创建与配置

集群创建完成后,还需要在集群中创建运行工作负载的节点(Node)。节点是CCE集群的计算资源,即运行容器化应用的工作节点。在云容器引擎CCE中,主要采用高性能的弹性云服务器ECS或裸金属服务器BMS作为节点。

4.1 创建节点的操作步骤

登录CCE控制台,单击创建的集群进入集群控制台,在左侧菜单栏选择节点管理,切换至节点页签,单击右上角创建节点。在弹出的页面中配置节点的参数:

  • 可用区:建议选择与集群相同可用区。为实现高可用,可以将节点分布在不同可用区。
  • 节点规格:根据业务需求选择合适的ECS规格。配置的规格越高(CPU、内存配置越高)、专业程度越高(如GPU、NPU),节点成本越高。
  • 容器引擎:可选择Docker或containerd。containerd是更轻量的容器运行时,推荐使用。
  • 操作系统:华为云推荐使用HCE OS(华为云欧拉操作系统)。
  • 登录方式:支持密钥对和密码两种方式。
  • 存储配置:系统盘缺省50GB,数据盘缺省100GB。
  • 节点数量:根据业务需要设置初始节点数量。

节点创建预计也需要6-10分钟左右。

4.2 节点付费模式选择

CCE节点的付费模式直接影响成本,需要根据业务特点进行选择:

  • 包年/包月:预付费模式,购买周期越长折扣越大,适用于业务量长期稳定的成熟场景。
  • 按需计费:后付费模式,秒级计费按小时结算,允许根据实际需求灵活调整,适用于电商抢购等流量波动大的场景。
  • 竞价计费:后付费模式,价格随市场供需关系实时变化,适用于对价格敏感且可接受中断的批处理任务。

4.3 节点池管理

对于需要动态扩缩容的场景,建议使用节点池(NodePool)功能。节点池是一组具有相同配置的节点集合,支持自动扩缩容。通过节点池,可以实现根据Pod调度需求自动增减节点,既保证了业务高峰期的资源供给,又避免了低谷期的资源浪费。

五、连接集群与kubectl配置

集群和节点创建完成后,下一步是配置kubectl命令行工具来连接和管理集群。kubectl是Kubernetes官方的命令行客户端,是运维和开发人员与集群交互的主要方式。

5.1 获取集群访问凭证

登录CCE控制台,单击集群名称进入集群总览页,在连接信息版块中找到kubectl配置按钮,单击后可以查看kubectl的连接信息。CCE提供了两种访问方式:

  • CCE接口:通过API网关调用CCE服务接口,支持操作云服务层面的基础设施(如创建节点)。
  • Kubernetes原生接口:直接通过Kubernetes原生API Server调用集群层面的资源(如创建工作负载),但不支持操作云服务层面的基础设施。

对于日常的应用部署和管理,通常使用Kubernetes原生接口方式。

5.2 安装和配置kubectl

在本地或运维跳板机上安装kubectl工具。以Linux环境为例,可以通过以下命令安装:

# 下载最新版本的kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
# 赋予执行权限
chmod +x kubectl
# 移动到系统PATH目录
sudo mv kubectl /usr/local/bin/
# 验证安装
kubectl version --client

安装完成后,需要将集群的访问凭证(kubeconfig文件)配置到本地。可以从CCE控制台下载kubeconfig文件,或者手动配置集群的API Server地址和认证信息。

六、部署无状态工作负载(Deployment)

集群准备就绪后,就可以开始部署应用了。无状态工作负载(Deployment)是Kubernetes中最常用的工作负载类型,适用于不需要考虑数据一致性和持久性的应用程序,例如Web服务器、应用服务器等。在无状态工作负载中,每个应用实例都是独立的,即使某个实例发生故障,其负责的请求也可以被重新分配给其他健康的实例。

6.1 通过控制台部署NGINX

CCE控制台提供了图形化的部署界面,非常适合新手快速上手。操作步骤如下:

  • 登录CCE控制台,进入目标集群。
  • 在左侧导航栏选择工作负载,单击创建工作负载。
  • 配置工作负载名称、容器镜像(如nginx:latest)、容器规格(CPU和内存限制)等参数。
  • 设置访问方式,如创建Service(负载均衡或节点端口)使应用对外可访问。
  • 单击确认提交,等待工作负载创建完成。

6.2 通过YAML文件部署

对于生产环境,更推荐使用YAML文件来声明式地管理应用。以下是一个部署NGINX的Deployment YAML示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: default
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
        resources:
          requests:
            memory: "256Mi"
            cpu: "250m"
          limits:
            memory: "512Mi"
            cpu: "500m"
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  namespace: default
spec:
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  type: LoadBalancer

使用kubectl apply命令部署:

kubectl apply -f nginx-deployment.yaml

部署完成后,可以通过以下命令查看工作负载状态:

kubectl get pods -n default
kubectl get svc -n default

七、使用Helm管理复杂应用

随着应用规模的增大,管理的Kubernetes资源文件会越来越多、越来越复杂。Helm作为Kubernetes的包管理器,可以很好地解决这个问题。Helm使用Charts(一种定义Kubernetes资源的打包格式)来封装Kubernetes部署的所有元素,包括应用程序代码、依赖项、配置文件和部署指令。同时,Helm支持应用的升级和回滚,使得应用的生命周期管理更加容易。

7.1 安装Helm

在已配置kubectl的机器上安装Helm客户端:

# 下载Helm安装脚本
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
# 赋予执行权限
chmod +x get_helm.sh
# 执行安装
./get_helm.sh
# 验证安装
helm version

7.2 使用Helm部署WordPress

以下是通过Helm部署WordPress的完整示例:

# 添加Helm仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

# 安装WordPress
helm install my-wordpress bitnami/wordpress \
  --set service.type=LoadBalancer \
  --set mariadb.primary.persistence.enabled=true \
  --set mariadb.primary.persistence.size=8Gi

# 查看部署状态
helm list
kubectl get pods -n default

Helm的强大之处在于参数化配置。通过--set参数或values.yaml文件,可以灵活地定制不同环境的部署配置,而无需修改Chart本身的模板文件。

八、配置存储卷声明(PVC)

对于有状态应用(如数据库),持久化存储是必不可少的。CCE通过容器存储(Everest)插件提供了丰富的存储能力,支持云硬盘(EVS)、文件存储(SFS)、对象存储(OBS)等多种存储类型。

8.1 动态创建存储卷声明

动态创建是指通过StorageClass自动创建底层存储和对应的存储卷(PV),无需手动预先创建存储资源。以下是通过控制台创建云硬盘类型PVC的步骤:

  • 登录CCE控制台,单击集群名称进入集群。
  • 在左侧导航栏选择存储,在右侧选择存储卷声明页签。
  • 单击右上角创建存储卷声明PVC。
  • 存储卷声明类型选择云硬盘。
  • 创建方式选择动态创建。
  • 存储类选择csi-disk。
  • 选择可用区(需与节点可用区相同)、云硬盘类型和容量大小。
  • 单击创建。

8.2 在工作负载中挂载PVC

创建好PVC后,可以在工作负载中挂载使用。以下是一个挂载PVC的Deployment YAML示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-with-pvc
spec:
  replicas: 1
  selector:
    matchLabels:
      app: app-with-pvc
  template:
    metadata:
      labels:
        app: app-with-pvc
    spec:
      containers:
      - name: app
        image: nginx:latest
        volumeMounts:
        - name: data
          mountPath: /data
      volumes:
      - name: data
        persistentVolumeClaim:
          claimName: my-pvc

8.3 约束与限制说明

使用云硬盘(EVS)作为存储时需要注意:云硬盘不支持跨可用区挂载,且不支持被多个工作负载、同一个工作负载的多个实例或多个任务使用。因此,创建无状态工作负载时若使用了EVS云硬盘,建议只选择一个实例。对于需要多实例共享存储的场景,应考虑使用文件存储(SFS)或对象存储(OBS)。

九、服务暴露:Service与Ingress

容器化应用部署完成后,需要让外部能够访问这些服务。Kubernetes提供了Service和Ingress两种资源来实现服务暴露。

9.1 Service类型

CCE支持多种Service类型:

  • ClusterIP:仅在集群内部可访问,适用于集群内服务间的通信。
  • NodePort:在每个节点上开放一个端口,通过节点IP加端口访问。
  • LoadBalancer:自动创建云负载均衡器(ELB),提供公网访问入口。

对于需要从公网访问的应用,LoadBalancer是最常用的方式。以下是一个LoadBalancer类型的Service示例:

apiVersion: v1
kind: Service
metadata:
  name: my-app-service
spec:
  type: LoadBalancer
  selector:
    app: my-app
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8080

9.2 Ingress配置

当需要根据域名或路径将流量路由到不同的后端服务时,Ingress是更好的选择。Ingress通过七层负载均衡实现更灵活的流量管理。以下是一个Ingress示例:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
  - host: www.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-app-service
            port:
              number: 80

十、集群高可用配置

为了保证应用可以稳定可靠地运行在Kubernetes里,高可用配置至关重要。

10.1 控制面高可用

CCE是一项托管式的Kubernetes服务,集群控制面无需由用户进行运维。创建集群时,可以设置集群的高可用模式,选择控制节点的分布方式。控制节点默认尽可能随机分布在不同可用区以提高容灾能力。也可以展开高级配置自定义控制节点分布方式,支持随机分配和自定义两种方式。

10.2 数据面高可用

数据面由工作节点组成,需要用户自行运维。为实现高可靠目标,建议:

  • 创建节点时选择在不同的可用区(AZ)分布。
  • 根据业务需求合理配置自定义调度策略,实现资源分配的最大化。
  • 及时关注关键组件的运行状态。

10.3 应用层面高可用

在应用层面,需要通过可扩展且有弹性的方式运行应用,并及时关注应用的运行状态。具体措施包括:设置合理的Pod副本数(replicas)、配置Pod水平自动伸缩(HPA)、使用PodDisruptionBudget(PDB)保障关键服务的可用性等。

十一、集群安全配置

安全是生产环境必须重视的环节。以下是从多个维度保障CCE集群安全的配置建议。

11.1 使用最新版本的集群

最新版本的集群修复了已知的漏洞或拥有更完善的安全防护机制,新建集群时推荐选择最新版本。在集群版本停止提供服务前,请及时升级到新版本。

11.2 关闭default ServiceAccount的token自动挂载

Kubernetes默认会给每个工作负载实例关联default服务账号,在容器内挂载一个token。对于不需要访问kube-apiserver的工作负载,建议关闭服务账号的自动关联功能。禁用方法如下:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: default
  namespace: default
automountServiceAccountToken: false

或在工作负载的spec中显式关闭:

spec:
  template:
    spec:
      automountServiceAccountToken: false

11.3 IAM权限最小化

CCE支持账号创建多个IAM用户。通过创建不同的用户组并授予不同权限,可以实现最小权限授权。应合理配置子用户和命名空间的权限,避免主账号密钥泄露带来的风险。集群权限通过IAM授权,命名空间权限通过Kubernetes RBAC授权。

11.4 配置命名空间资源配额

应限制每个命名空间能够分配的资源总量,控制的资源包括CPU、内存、存储等。这可以防止某个命名空间过度消耗集群资源,影响其他租户的正常使用。

十二、成本优化实践

集群成本优化的核心在于如何最大化地利用集群资源,减少不必要的成本开销。以下是一些实用的成本优化建议。

12.1 选择合适的集群配置

在部署集群之前,需要评估集群应用所需的资源需求,选择合适的集群类型、节点实例类型、集群付费模式等。

12.2 使用资源规格推荐功能

CCE提供了应用资源规格推荐功能,该功能使用Volcano调度器对工作负载的历史CPU、内存资源使用数据进行分析,得出资源申请量(Request)的推荐值。可以直接将推荐值应用到环境中,避免资源过度申请造成的浪费。

12.3 合理利用节点池弹性伸缩

通过节点池的自动扩缩容功能,可以在业务低峰期自动缩减节点数量,高峰期自动扩容,实现资源利用的最大化。

12.4 选择合适的存储类型

根据数据的访问频率和重要性选择合适的存储类型。高频访问的数据使用高性能云硬盘,低频访问的数据可以迁移到成本更低的对象存储(OBS)。

十三、总结

华为云CCE作为企业级的Kubernetes托管服务,为开发者提供了从集群创建到应用部署的全链路支持。本文从集群类型选型开始,逐步讲解了集群创建、节点配置、网络规划、应用部署(Deployment与Helm)、存储管理、服务暴露、高可用与安全配置以及成本优化等核心环节。通过掌握这些技能,读者可以在华为云上快速构建出稳定、安全、经济的容器化应用平台。

在实际生产环境中,建议遵循以下原则:选择最新的集群版本和合适的网络模型、将节点分布在不同可用区实现高可用、使用Helm管理复杂应用、通过IAM和RBAC实现最小权限授权、利用节点池弹性伸缩和资源规格推荐功能优化成本。希望本文能够成为您在华为云CCE实践道路上的有益参考。

常见问题解答

问1:华为云CCE和ACK有什么关系?

ACK是阿里云容器服务Kubernetes版的简称,而华为云的容器服务叫做CCE(Cloud Container Engine)。两者都是Kubernetes托管服务,但属于不同云厂商的产品,名称不同但核心功能类似。

问2:创建集群时选择哪种网络模型最好?

没有绝对的最好,需要根据业务场景选择。如果对性能要求极高(如AI计算),推荐VPC网络或云原生网络2.0;如果节点规模大(超过1000节点),推荐容器隧道网络;如果是一般Web应用,三种模型都可以,建议根据集群规模和性能需求综合评估。

问3:如何让外部用户访问CCE集群中的应用?

可以通过创建LoadBalancer类型的Service自动分配公网IP和负载均衡器,或者使用Ingress通过域名和路径进行七层路由。如果是测试环境,也可以使用NodePort类型通过节点IP加端口访问。

问4:CCE集群中的存储卷如何选择?

云硬盘(EVS)适合单实例读写、高性能场景,但不支持跨节点共享;文件存储(SFS)适合多实例共享读写的场景;对象存储(OBS)适合海量非结构化数据存储。需要根据应用的存储需求选择合适的存储类型。

问5:如何降低CCE集群的使用成本?

可以从以下几个方面优化:选择包年/包月计费模式获取折扣、使用节点池弹性伸缩避免资源浪费、使用资源规格推荐功能避免过度申请、合理选择存储类型降低存储成本。

问6:首次使用CCE时为什么需要授权?

因为CCE在运行中对计算(ECS)、存储(EVS/SFS)、网络(VPC/ELB)以及监控等各类云服务资源都存在依赖关系。授权后CCE才能代表您调用这些云服务的API来创建和管理资源。

相关文章

ERP上线用什么云服务器比较好

ERP上线用什么云服务器比较好

上线ERP尽量不要用本地服务器用本地服务器的弊端是比较大的,本地服务器无法联网,也就是说在外网的情况下,你是无法使用你的ERP系统的。特别是在疫情阶段,如果同事得了阳,需要在家办公,这种情况下,如果无…

华为云服务器购买怎么便宜?小公司省钱攻略来了!这样买立省好几千​

华为云服务器购买怎么便宜?小公司省钱攻略来了!这样买立省好几千​

很多朋友都在吐槽:“华为云服务器太贵了,预算有限实在买不起!” 其实,买华为云服务器贵不贵,关键看你会不会选、会不会买。今天就来给大家分享一套超实用的省钱攻略,小公司、创业团队也能轻松用得起稳定又安全…

华为云服务器采购总嫌贵?30%华为云返点返佣 + 旗舰级代理保障,这波省钱操作别错过!

华为云服务器采购总嫌贵?30%华为云返点返佣 + 旗舰级代理保障,这波省钱操作别错过!

最近不少做 IT 运维或企业采购的朋友跟我吐槽,公司要上华为云服务器,去官网一看报价直接犯了难 —— 按年付费算下来,比预期预算高出不少。要是赶上业务扩张需要多台服务器,这笔开支更是让财务部门直皱眉。…

2026华为云返点返佣政策深度解析:头部代理返佣优势与企业合作指南

2026华为云返点返佣政策深度解析:头部代理返佣优势与企业合作指南

上海汪远信息科技有限所在公司年销华为云产品3亿+,属于头部代理梯队,可为合作客户提供最高30%的返佣优惠,直接帮助企业降低30%的云资源成本。…

2026华为云返点返佣政策深度解析:头部代理返佣优势与企业合作指南

2026华为云返点返佣政策深度解析:头部代理返佣优势与企业合作指南

一、华为云代理商的核心价值定位1. 代理商的角色与职责华为云代理商作为华为云生态的核心合作伙伴,承担着三重核心职能:•产品推广销售:负责推广销售华为云全系列云产品,包括云服务器ECS、云数据…

上海汪远信息:年销1.5亿+的头部华为云代理商,10年深耕为企业上云保驾护航

上海汪远信息:年销1.5亿+的头部华为云代理商,10年深耕为企业上云保驾护航

核心摘要本文深度解析华为云代理商行业现状,揭示小代理商生存困境的核心原因(业绩压力大、垫资周期长、资金链脆弱),重点推荐上海汪远信息科技有限公司——一家拥有10年华为云代理经验、年销量超1.5亿的全国…