华为云 CCE 部署 Nginx 容器应用入门:从集群到公网访问

举报
yd_285284254 发表于 2026/10/29 18:45:34 2026/10/29
【摘要】 记录在华为云 CCE 上从准备集群、编写 Deployment 与 Service、公网访问验证,到扩缩容、滚动更新和常见排错的完整入门流程。

前言

云容器引擎 CCE(Cloud Container Engine)是华为云提供的托管 Kubernetes 服务。对刚接触容器的开发者来说,最直接的入门练习就是把一个 Nginx 服务部署到 CCE 上,并通过公网访问。本文按“准备集群、编写配置、部署验证、扩缩容与排错”的顺序,记录一次完整的操作流程,所有命令都可以直接复制使用。

一、准备工作

  1. 一个华为云账号,并完成实名认证。
  2. 在 CCE 控制台创建一个集群:新手建议选择“CCE Standard 集群”,节点规格选 2 vCPU 4GiB 即可,网络模型使用默认值,学习结束后记得删除集群和节点,避免持续计费。
  3. 本地安装 kubectl,并在集群详情页下载 kubeconfig 文件,保存为 kubeconfig.json。
  4. 节点需要能够拉取镜像;本文使用的 Nginx 官方镜像可以通过 SWR 的镜像加速或节点所在网络拉取。

配置 kubectl 并验证连接:

export KUBECONFIG=$PWD/kubeconfig.json
kubectl get nodes
kubectl get ns

如果能看到节点状态为 Ready,说明集群连接正常。

二、编写 Deployment 配置

新建文件 nginx-deployment.yaml,内容如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-demo
  labels:
    app: nginx-demo
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx-demo
  template:
    metadata:
      labels:
        app: nginx-demo
    spec:
      containers:
      - name: nginx
        image: nginx:1.25
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 250m
            memory: 256Mi
        readinessProbe:
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 3
          periodSeconds: 5

几点说明:

  • replicas: 2 表示运行两个副本,其中一个异常时另一个还能继续提供服务。
  • resources 中的 requests 用于调度,limits 用于限制上限,生产环境务必设置。
  • readinessProbe 就绪探针可以保证只有真正可用的 Pod 才会接收流量。

三、创建 Service 暴露公网访问

再新建 nginx-service.yaml,使用 LoadBalancer 类型,并通过注解绑定已有的弹性负载均衡 ELB 实例(也可以在控制台选择自动创建):

apiVersion: v1
kind: Service
metadata:
  name: nginx-demo-svc
  annotations:
    kubernetes.io/elb.id: <你的 ELB 实例 ID>
    kubernetes.io/elb.class: union
spec:
  type: LoadBalancer
  selector:
    app: nginx-demo
  ports:
  - port: 80
    targetPort: 80
    protocol: TCP

注意:ELB 实例需要与集群处于同一 VPC,并且拥有公网 IP,注解的具体取值请以当前版本的 CCE 官方文档为准。

四、部署与验证

kubectl apply -f nginx-deployment.yaml
kubectl apply -f nginx-service.yaml
kubectl get pods -o wide
kubectl get svc nginx-demo-svc

当 Pod 状态都为 Running,且 Service 的 EXTERNAL-IP 显示为负载均衡的公网地址后,用浏览器或 curl 访问:

curl -I http://<EXTERNAL-IP>

返回 HTTP/1.1 200 OK 就说明部署成功。

五、扩缩容与滚动更新

手动扩容到 4 个副本:

kubectl scale deployment nginx-demo --replicas=4

滚动升级镜像版本,并查看进度,必要时回滚:

kubectl set image deployment/nginx-demo nginx=nginx:1.27
kubectl rollout status deployment/nginx-demo
kubectl rollout undo deployment/nginx-demo

六、常见问题排查

  1. Pod 一直处于 Pending:执行 kubectl describe pod <名称>,通常是节点资源不足或 requests 设置过大,可以扩容节点或调小资源请求。
  2. ImagePullBackOff:节点无法拉取镜像,检查节点网络、镜像名称与标签是否正确,或者把镜像转存到 SWR 后改用 SWR 地址。
  3. 公网无法访问:依次检查 ELB 监听器和后端服务器组是否健康、安全组是否放行 80 端口、Service 的 selector 是否与 Pod 标签一致。
  4. 查看日志:kubectl logs deploy/nginx-demo 可以查看容器输出。

七、清理资源

实验完成后依次删除资源,再到控制台删除集群、节点与 ELB,避免产生费用:

kubectl delete -f nginx-service.yaml
kubectl delete -f nginx-deployment.yaml

总结

通过一个 Nginx 示例,我们完整走通了 CCE 上“创建集群、编写 Deployment、通过 Service 暴露公网、扩缩容、滚动更新与排错”的基础流程。掌握这些之后,可以继续学习 Ingress、ConfigMap、持久化存储和弹性伸缩(HPA)等内容,把更复杂的业务迁移到 CCE 上。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。