文章目录
-
- 一、项目生命周期管理
-
- [(一)创建阶段(kubectl create)](#(一)创建阶段(kubectl create))
- [(二)发布阶段(kubectl expose)](#(二)发布阶段(kubectl expose))
-
- [1. Service类型说明](#1. Service类型说明)
- [2. 端口概念区分](#2. 端口概念区分)
- [3. 关键命令与操作](#3. 关键命令与操作)
- [(三)更新阶段(kubectl set)](#(三)更新阶段(kubectl set))
- [(四)回滚阶段(kubectl rollout)](#(四)回滚阶段(kubectl rollout))
- [(五)删除阶段(kubectl delete)](#(五)删除阶段(kubectl delete))
- 二、发布策略(金丝雀发布)
- 三、声明式资源管理方法
- 总结
在云原生环境下,Kubernetes(K8s)作为容器编排核心工具,其项目生命周期管理、发布策略和资源管理方式直接决定了应用部署的效率与稳定性。本文将从全生命周期管控 、金丝雀发布策略 、声明式资源管理三个维度,详解K8s中应用运维的标准化操作体系。
一、项目生命周期管理
项目生命周期涵盖创建、发布、更新、回滚、删除五个核心阶段,各阶段通过标准化kubectl命令实现高效管控,确保应用从部署到下线的全流程可追溯、可控制。
(一)创建阶段(kubectl create)
核心目标:创建并运行容器镜像,通过Deployment或Job管理容器,确保应用实例按预期启动。
关键命令:
bash
# 启动Nginx实例(镜像1.14版本,暴露80端口,设置3个副本)
kubectl create deployment nginx --image=nginx:1.14 --port=80 --replicas=3
# 查看创建的Pod
kubectl get pods
# 查看所有资源
kubectl get all

(二)发布阶段(kubectl expose)
核心目标:将资源暴露为Service,提供稳定访问入口,支持集群内/外不同访问场景。
1. Service类型说明
| 类型 | 适用场景 | 访问方式 |
|---|---|---|
| ClusterIP | 集群内部访问(默认) | clusterIP:port |
| NodePort | 集群外部访问 | nodeIP:nodePort(端口范围30000-32767) |
| LoadBalancer | 云平台负载均衡 | 云厂商提供的外部IP |
| ExternalName | 映射外部域名 | 直接通过域名访问 |
2. 端口概念区分
- port:集群内部访问Service的端口
- nodePort:外部访问集群中Service的端口
- targetPort:Pod的端口,接收转发流量
- containerPort:Pod内部容器的端口,与targetPort映射
3. 关键命令与操作
bash
# 暴露Deployment为NodePort类型Service
kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort
# 查看Pod和Service详情(含IP、端口)
kubectl get pods,svc -o wide
# 查看Service关联的后端节点
kubectl get endpoints
# 查看Service描述信息
kubectl describe svc nginx-service
# 节点上查看负载均衡规则(需安装ipvsadm)
yum install ipvsadm -y && ipvsadm -Ln
# 测试访问(集群内/外)
curl 10.0.0.189(ClusterIP)
curl 192.168.10.20:44847(NodeIP:NodePort)
# 查看容器访问日志
kubectl logs <pod-name>







(三)更新阶段(kubectl set)
核心目标:修改应用资源配置(如容器镜像版本),支持滚动更新,避免服务中断。
关键命令:
bash
# 查看修改模板
kubectl set image --help
# 更新Nginx镜像至1.15版本
kubectl set image deployment/nginx nginx=nginx:1.15
# 动态监听Pod更新状态(滚动更新会逐一代替旧Pod)
kubectl get pods -w
# 查看更新后Pod详情(IP可能变化)
kubectl get pods -o wide
# 验证更新结果
curl -I http://192.168.10.20:44847



(四)回滚阶段(kubectl rollout)
核心目标:当更新出现问题时,快速恢复至之前的稳定版本,最小化故障影响。
关键命令:
bash
# 查看历史版本记录
kubectl rollout history deployment/nginx
# 回滚至上一个版本
kubectl rollout undo deployment/nginx
# 回滚至指定版本(如版本1)
kubectl rollout undo deployment/nginx --to-revision=1
# 检查回滚状态
kubectl rollout status deployment/nginx

(五)删除阶段(kubectl delete)
核心目标:清理无用资源,释放集群计算/网络/存储资源,避免资源浪费。
关键命令:
bash
# 删除Deployment(关联Pod会自动删除)
kubectl delete deployment/nginx
# 删除Service
kubectl delete svc/nginx-service
# 验证删除结果
kubectl get all

二、发布策略(金丝雀发布)
金丝雀发布(Canary Release)是一种灰度发布策略,通过控制更新节奏,仅让部分用户访问新版本,验证稳定后再全量更新,大幅降低发布风险,是生产环境的首选发布方式。
(一)核心逻辑
暂停滚动更新过程,先部署少量新版本Pod,验证功能/性能无误后继续全量更新;若发现异常,可立即回滚至旧版本,避免全量故障。
(二)操作步骤
bash
# 1. 更新镜像并暂停Deployment
kubectl set image deployment/nginx nginx=nginx:1.14 && kubectl rollout pause deployment/nginx
# 2. 观察更新状态(仅新增部分Pod,不删除旧Pod)
kubectl rollout status deployment/nginx
kubectl get pods -w
# 3. 测试新版本可用性
curl [-I] 10.0.0.189(ClusterIP)
curl [-I] 192.168.10.20:44847(NodeIP:NodePort)
# 4. 验证无误后继续更新
kubectl rollout resume deployment/nginx
# 5. 监控全量更新过程
kubectl get pods -w
三、声明式资源管理方法
声明式管理依赖资源配置清单(YAML/JSON格式),通过定义"期望状态"实现资源管控,相比陈述式命令,更适用于复杂配置、批量管理和版本化控制场景。
(一)核心特性
- 基于配置清单文件,支持离线编辑、版本控制(如Git),便于追溯和审计;
- 语法统一:
kubectl create/apply/delete -f <配置文件>.yaml; - 优先推荐用于资源修改操作,灵活性和可扩展性更强。
(二)关键操作
1. 查看与解释配置清单
bash
# 查看Deployment的YAML配置
kubectl get deployment nginx -o yaml
# 查看Service的YAML配置
kubectl get service nginx -o yaml
# 解释配置字段含义(如metadata字段)
kubectl explain deployment.metadata
kubectl explain service.metadata
2. 修改配置清单并应用
方式1:离线修改(推荐,支持版本回溯)
bash
# 导出配置文件
kubectl get service nginx -o yaml > nginx-svc.yaml
# 编辑配置(如修改port为8080)
vim nginx-svc.yaml
# 先删除旧资源,再应用新配置(apply不生效时使用)
kubectl delete -f nginx-svc.yaml
kubectl apply -f nginx-svc.yaml
# 验证修改结果
kubectl get svc
方式2:在线修改(即时生效,不修改本地文件)
bash
# 在线编辑Service配置(如修改port为888)
kubectl edit service nginx
3. 删除资源
bash
# 基于配置文件删除
kubectl delete -f nginx-svc.yaml
# 陈述式删除(与声明式效果一致)
kubectl delete service nginx
总结
- 项目生命周期管理提供了从创建到删除的全流程标准化操作,通过
kubectl命令实现应用的快速部署、更新、回滚,确保应用生命周期的可控性; - 金丝雀发布策略通过"部分部署+验证+全量更新"的逻辑,有效降低了版本迭代的风险,适用于对稳定性要求较高的生产环境;
- 声明式管理与陈述式管理互补:陈述式适用于简单的即时操作(如快速查看、创建单资源),声明式更适合复杂配置、批量管理和版本化控制,是生产环境中推荐的管理方式;
- 整套操作体系围绕"高效、稳定、可扩展"设计,支持滚动更新、负载均衡、资源隔离等核心能力,充分适配云原生应用的部署和运维需求。