华为云 CCE 部署 Nginx 容器应用入门:从集群到公网访问
前言
云容器引擎 CCE(Cloud Container Engine)是华为云提供的托管 Kubernetes 服务。对刚接触容器的开发者来说,最直接的入门练习就是把一个 Nginx 服务部署到 CCE 上,并通过公网访问。本文按“准备集群、编写配置、部署验证、扩缩容与排错”的顺序,记录一次完整的操作流程,所有命令都可以直接复制使用。
一、准备工作
- 一个华为云账号,并完成实名认证。
- 在 CCE 控制台创建一个集群:新手建议选择“CCE Standard 集群”,节点规格选 2 vCPU 4GiB 即可,网络模型使用默认值,学习结束后记得删除集群和节点,避免持续计费。
- 本地安装
kubectl,并在集群详情页下载 kubeconfig 文件,保存为kubeconfig.json。 - 节点需要能够拉取镜像;本文使用的 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
六、常见问题排查
- Pod 一直处于 Pending:执行
kubectl describe pod <名称>,通常是节点资源不足或 requests 设置过大,可以扩容节点或调小资源请求。 - ImagePullBackOff:节点无法拉取镜像,检查节点网络、镜像名称与标签是否正确,或者把镜像转存到 SWR 后改用 SWR 地址。
- 公网无法访问:依次检查 ELB 监听器和后端服务器组是否健康、安全组是否放行 80 端口、Service 的 selector 是否与 Pod 标签一致。
- 查看日志:
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 上。
- 点赞
- 收藏
- 关注作者
评论(0)