华为云 CCE 入门:从创建集群到跑通第一个容器应用
容器刚流行那几年,很多团队的第一反应是:“把应用打成镜像,docker run 一下就好了。”单机确实够用。但当服务变成十几个,机器变成几十台,问题就来了:容器挂了谁来重启?流量大了怎么扩容?新版本怎么灰度?配置和密钥放哪?这时候就需要一个编排器。Kubernetes 是目前最主流的选择,而华为云 CCE(云容器引擎)就是一个托管的 Kubernetes 服务:控制面由云平台打理,你只需要关心节点和应用本身。
一、开始之前,先弄清几个核心概念
集群(Cluster)
集群是一组运行容器的节点,再加上控制面。控制面负责调度、扩缩容、健康检查这些“大脑”工作。CCE 把控制面托管起来,你不用自己搭 etcd、API Server、调度器,建好集群就能直接用 kubectl 操作。
节点与节点池
节点是真正跑容器的机器,一般是弹性云服务器。节点池是一组规格相同的节点的集合,比如把“2 核 4G”的节点放在一个池里;业务量上来时,扩节点池就能横向扩容,缩容也一样方便。
工作负载(Workload)
工作负载描述“我要跑什么样的容器”:
- Deployment:最常用,跑无状态应用,比如 Web 服务、API 服务,支持滚动更新和回滚;
- StatefulSet:跑有状态应用,比如需要固定标识和持久存储的中间件;
- DaemonSet:每个节点上都跑一个,比如日志采集、监控 Agent;
- Job / CronJob:跑一次性任务和定时任务。
服务发现与访问(Service / Ingress)
Pod 的 IP 会变,不能直接拿来当访问地址。Service 给一组 Pod 提供一个稳定的访问入口:ClusterIP 只在集群内访问,NodePort 通过节点端口对外暴露,LoadBalancer 则绑定一个负载均衡器对外提供服务。Ingress 在 Service 之上再做一层七层路由,可以把多个域名、路径映射到不同的服务。
镜像与存储
镜像一般放在容器镜像服务 SWR 里,CCE 拉取镜像部署。存储方面,CCE 可以对接云硬盘(块存储)、文件存储和对象存储,分别适合数据库、共享文件和海量非结构化数据。
二、动手:跑通第一个容器应用
第一步,创建集群。在 CCE 控制台新建集群,选好区域、VPC 和子网,再选节点规格和数量;节点数先从 2 台起步,后面不够随时扩。
第二步,准备镜像。本地把示例应用打成镜像,推送到 SWR。也可以先用公共镜像练手,比如 nginx。
第三步,连接集群。集群创建完成后,在控制台下载 kubeconfig 文件,本地配置好 kubectl,就能像操作自建 Kubernetes 一样操作 CCE 集群。
第四步,部署。写一个简单的 Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-cce
spec:
replicas: 2
selector:
matchLabels:
app: hello-cce
template:
metadata:
labels:
app: hello-cce
spec:
containers:
- name: hello
image: nginx:latest
ports:
- containerPort: 80
kubectl apply -f deploy.yaml 之后,再用 kubectl get pods 看 Pod 是否 Running。
第五步,对外访问。给应用创建一个 LoadBalancer 类型的 Service,或者配一个 Ingress,拿到访问地址后在浏览器打开,看到 nginx 的欢迎页,就算跑通了。
第六步,日常操作。看日志用 kubectl logs,进容器排查用 kubectl exec,改镜像版本直接改 YAML 重新 apply,CCE 会按滚动更新的策略逐步替换旧 Pod,服务基本不中断。
三、新手容易踩的几个坑
- 镜像拉不到:先看镜像地址写对了没有、是不是私有镜像需要配置拉取凭证;能先在本地 docker pull 验证一下最好。
- 资源配额写错:requests 是“最少要多少”,limits 是“最多用多少”;requests 写得太大,Pod 可能永远调度不上去;limits 写得太小,容器可能被 OOM Kill。
- 健康检查配得太激进:存活探针失败会导致容器反复重启,先把探针的超时和失败阈值放宽,再根据实际情况收紧。
- 端口对不上:容器监听的是 80,Service 却配了 8080,访问自然不通;先用
kubectl port-forward直连 Pod 验证应用本身没问题,再排查 Service。 - 节点资源打满:Pod Pending 经常是节点 CPU、内存不够了,先看节点余量,再决定扩节点还是降副本。
四、跑通之后,还可以往哪走
- 弹性伸缩:用 HPA 按 CPU、内存使用率自动增减副本数,流量高峰不用手忙脚乱。
- 持续交付:把镜像构建和部署接进 CodeArts 流水线,代码一提交,自动构建镜像、推送到 SWR、部署到 CCE。
- 观测与排障:把容器日志、指标接进云监控,Pod 异常时能第一时间收到告警,而不是等用户反馈才发现。
- 成本视角:常驻服务用包周期节点更划算,波峰波谷明显的任务可以结合弹性伸缩,少为闲置资源付费。
结尾
第一次用 CCE,不用一上来就追求“生产级高可用”。先把“创建集群、部署应用、对外访问、看日志、滚动更新”这条主线跑通,再逐个补齐存储、网络策略、弹性伸缩和流水线。容器编排的学习曲线,最怕的就是只看文档不动手。花一个下午按上面的步骤走一遍,你会对 Kubernetes 的工作方式有一个扎实的体感,之后再看网络、存储这些进阶内容,也会顺得多。
- 点赞
- 收藏
- 关注作者
评论(0)