Kubernetes 操作管理完全指南:从陈述式到声明式,覆盖全生命周期

前言

在容器化浪潮下,Kubernetes(简称 K8s)已成为容器编排的事实标准。无论是中小团队的微服务部署,还是大型企业的多集群管理,K8s 的操作管理能力直接决定了集群稳定性、资源利用率和业务迭代效率。本文将从操作管理分类入手,深度拆解陈述式与声明式两种核心管理方法,详解项目全生命周期操作,并结合生产级扩展知识点,帮你系统掌握 K8s 操作管理精髓。​

一、Kubernetes 操作管理概述​

Kubernetes 操作管理的核心目标是通过标准化的操作,实现集群资源的高效调度、应用的稳定部署与全生命周期管控。其覆盖场景包括:容器化应用的部署与扩容、资源隔离与权限控制、服务发现与负载均衡、应用更新与回滚等。​

核心背景与价值​

  • 解决传统部署痛点:告别 "单机部署混乱""环境不一致""扩容繁琐" 等问题;
  • 实现 "基础设施即代码":通过配置清单固化部署逻辑,支持版本控制与批量执行;
  • 适配云原生架构:无缝对接微服务、DevOps 流程,支持多环境(开发 / 测试 / 生产)统一管理。

扩展知识点:K8s 核心架构支撑​

操作管理的底层依赖 K8s 核心组件协同工作:​

  • APIServer:操作入口,接收所有 kubectl 命令或配置清单请求,负责权限校验与状态存储;
  • ETCD:集群 "数据库",存储所有资源的期望状态与当前状态;
  • Controller Manager:状态收敛核心,监控资源状态差异(如 Deployment 副本数不满足),自动执行修复操作;
  • Kubelet:节点代理,负责执行容器启停、健康检查等具体操作;
  • Kube-proxy:实现 Service 负载均衡,转发集群内外流量。

二、管理操作分类:陈述式 vs 声明式​

K8s 操作管理分为两大核心模式,二者适用场景不同,互为补充:​

|-------|------------------------------|-----------------------------|
| 对比维度​ | 陈述式资源管理​ | 声明式资源管理​ |
| 核心逻辑​ | 命令驱动,直接执行操作​ | 状态驱动,声明期望状态,自动收敛​ |
| 操作方式​ | 依赖 kubectl 命令行直接操作​ | 依赖 YAML/JSON 配置清单​ |
| 幂等性​ | 无(重复执行可能报错,如重复创建同名资源)​ | 有(多次执行无副作用,仅同步状态差异)​ |
| 版本控制​ | 无法追溯,仅记录命令历史​ | 可将配置清单纳入 Git 版本控制​ |
| 适用场景​ | 临时调试、快速验证、简单操作​ | 生产环境、批量部署、标准化流程​ |
| 代表命令​ | kubectl create/scale/delete​ | kubectl apply/edit/explain​ |

三、陈述式资源管理方法:命令行直达目标​

陈述式管理是最直观的 K8s 操作方式,通过 kubectl 命令直接向 APIServer 发送操作请求,即时生效。适合新手入门、临时操作或快速调试场景。​

1. 基本原理​

核心逻辑:用户通过 kubectl 命令指定 "要做什么"(如 "创建一个 Pod""扩容 Deployment"),APIServer 接收后直接修改 ETCD 中的资源状态,Controller Manager 后续触发操作执行。​

特点:操作简单、实时性强,但缺乏幂等性,无法批量管理,且操作过程难以追溯。​

2. 基础信息查看命令​

(1)版本与集群信息​

用于验证 K8s 集群状态、客户端与服务端版本兼容性:​

bash

查看 kubectl 客户端与 APIServer 服务端版本​

kubectl version​

简化输出(仅显示核心版本)​

kubectl version --short​

查看集群核心组件状态(如 APIServer、ETCD 地址)​

kubectl cluster-info​

导出集群详细诊断信息(排查问题用)​

kubectl cluster-info dump > cluster-dump.log​(cat cluster-dump.log)

(2)命令自动补全与日志查看​

  • 命令自动补全:解决 kubectl 命令冗长、易输错的问题,支持 bash/zsh 终端:

bash 终端配置(永久生效需写入 ~/.bashrc)​

source completion bash)​

echo "source completion bash)" >> ~/.bashrc​

zsh 终端配置(永久生效需写入 ~/.zshrc)​

source sh)​

echo "source zsh)" >> ~/.zshrc​

日志查看:排查容器运行异常的核心命令:

# 查看 Pod 日志(默认查看最近所有日志)​

kubectl logs [参数] <Pod名称> [容器名称] [选项]

# 实时跟踪日志(类似 tail -f)​

kubectl logs f​

# 查看末尾 100 行日志​

kubectl logs tail=100​

# 多容器 Pod 指定容器查看日志​

kubectl logs > -c >​

# 查看指定时间范围内的日志(如 1 小时前至今)​

kubectl logs since=1h​

3. 基本资源查看命令​

K8s 核心资源包括 Pod、Node、Service、ConfigMap、Secret 等,通过 kubectl get 命令查看:​

​# 查看当前命名空间下所有 Pod​

kubectl get pods​

查看所有命名空间下的 Pod​

kubectl get pods --all-namespaces​

查看 Pod 详细信息(包含 IP、所在节点、状态)​

kubectl get pods -o wide​

查看 Node 状态(节点资源使用率、健康状态)​

kubectl get nodes​

查看 Service 信息(端口、类型、集群 IP)​

kubectl get svc​

查看 ConfigMap/Secret(配置与敏感信息)​

kubectl get configmaps​

kubectl get secrets​

导出资源配置为 YAML 格式(后续可用于声明式管理)​

kubectl get pod > -o yaml > pod.yaml​

扩展知识点:输出格式优化​

kubectl get 支持多种输出格式,适配不同场景:​

  • -o yaml/json:导出完整配置,用于备份或二次编辑;
  • -o wide:显示扩展信息(IP、节点、标签);
  • -o custom-columns=NAME:.metadata.name,IP:.status.podIP:自定义显示字段;
  • --show-labels:显示资源关联的标签(用于筛选资源)。

4. 命名空间操作​

命名空间(Namespace)是 K8s 资源隔离的核心机制,用于划分不同环境(如 dev/test/prod)或业务模块,避免资源命名冲突。​

​# 查看所有命名空间​

kubectl get ns​

创建命名空间(如创建 dev 环境)​

kubectl create ns dev​

切换默认命名空间(后续操作默认在 dev 下执行)​

kubectl config set-context --current --namespace=dev​

删除命名空间(会级联删除该命名空间下所有资源,谨慎操作)​

kubectl delete ns dev​

扩展知识点:命名空间核心特性​

  • 默认命名空间:K8s 初始化时创建 3 个命名空间:
  • default:默认使用,未指定命名空间的资源会在此创建;
  • kube-system:系统组件(如 kube-proxy、ETCD)所在命名空间;
  • kube-public:公共资源命名空间,所有用户可访问;
  • 资源隔离范围:命名空间仅隔离 Pod、Service、Deployment 等常规资源,不隔离 Node、PV(持久化存储)等集群级资源;
  • 权限控制:可通过 RBAC(角色基础访问控制)限制用户对特定命名空间的操作权限。

5. 创建 Deployment(副本控制器)​

Deployment 是 K8s 中最常用的控制器,用于管理 Pod 的创建、自愈、扩缩容与更新。相比直接创建 Pod,Deployment 可保障副本数稳定(Pod 异常时自动重建)。​

bash

创建 Deployment(指定名称、镜像、副本数)​

kubectl create deployment nginx-deploy --image=nginx:1.21 --replicas=3​

查看 Deployment 状态(确认副本数、可用数)​

kubectl get deployments​

查看 Deployment 管理的 ReplicaSet(Deployment 通过 ReplicaSet 管理 Pod)​

kubectl get rs​

扩展知识点:Deployment 与 ReplicaSet 关系​

  • Deployment 不直接管理 Pod,而是通过创建 ReplicaSet 间接管理;
  • 每个 Deployment 版本对应一个 ReplicaSet(如 nginx-deploy-7f96f8d7c6);
  • 执行更新 / 回滚操作时,Deployment 会创建新的 ReplicaSet,同时缩容旧 ReplicaSet,实现无中断更新。

6. 登录容器与删除 Pod​

(1)登录容器​

当需要在容器内执行命令(如查看配置文件、调试程序)时,使用 kubectl exec 命令:​

bash

交互式登录容器(-it 表示交互式+终端)​

kubectl exec -it > -- /bin/bash​

若容器内无 bash,使用 sh​

kubectl exec -it -name> -- /bin/sh​

多容器 Pod 指定容器登录​

kubectl exec -it > -c > -- /bin/bash​

直接在容器内执行单条命令(无需登录)​

kubectl exec /etc/nginx​

(2)删除 Pod​

​# 删除指定 Pod​

kubectl delete pod >​

强制删除 Pod(适用于 Pod 卡在 Terminating 状态)​

kubectl delete pod <pod-name> --force --grace-period=0​

按标签删除多个 Pod(如删除所有标签为 app=nginx 的 Pod)​

kubectl delete pods -l app=nginx​

扩展知识点:Pod 自愈能力​

若 Pod 是通过 Deployment 创建的,删除 Pod 后,Deployment 会自动创建新的 Pod 以满足副本数要求(自愈能力);若直接创建的 Pod(无控制器管理),删除后不会自动重建。​

7. 扩缩容与删除 Deployment​

(1)扩缩容​

根据业务流量调整 Deployment 管理的 Pod 副本数:​

​# 手动扩缩容(将副本数调整为 5)​

kubectl scale deployment nginx-deploy --replicas=5​

查看扩缩容结果(确认可用副本数已更新)​

kubectl get deployments​

扩展知识点:HPA 自动扩缩容​

生产环境中,手动扩缩容无法应对流量波动,可通过 HPA(Horizontal Pod Autoscaler)实现基于资源使用率的自动扩缩容:​

​# 创建 HPA:当 CPU 使用率超过 70% 时自动扩容,最大 10 个副本,最小 3 个​

kubectl autoscale deployment nginx-deploy --cpu-percent=70 --min=3 --max=10​

查看 HPA 状态​

kubectl get hpa​

(2)删除 Deployment​

bash

删除 Deployment(会级联删除 ReplicaSet 和 Pod)​

kubectl delete deployment nginx-deploy​

验证删除结果​

kubectl get deployments​

四、项目生命周期管理:从创建到删除的完整流程​

K8s 项目(应用)的生命周期包括创建、发布、更新、回滚、删除 5 个阶段,每个阶段对应特定的 kubectl 命令,形成标准化操作流程。​

1. 创建阶段(kubectl create)​

通过命令直接创建资源,适用于快速初始化项目:​

创建 Deployment(应用核心资源)​

kubectl create deployment demo-app --image=demo:v1​

创建 ConfigMap(存储非敏感配置)​

kubectl create configmap demo-config --from-literal=env=prod --from-file=app.conf​

创建 Secret(存储敏感信息,如密码、密钥)​

kubectl create secret generic demo-secret --from-literal=db-password=123456​

扩展知识点:kubectl create vs kubectl run​

  • kubectl create deployment 是推荐命令,专门用于创建 Deployment 控制器;
  • kubectl run 是旧版命令,可直接创建 Pod 或 Deployment(需指定 --restart=Always),目前已逐步被 create 替代,不建议生产使用。

2. 发布阶段(kubectl expose)​

创建 Service 资源,实现 Pod 的服务发现与负载均衡,让其他 Pod 或外部客户端可访问应用。​

① Service 类型​

K8s Service 支持 4 种核心类型,适配不同访问场景:​

  • ClusterIP:默认类型,仅集群内访问。分配一个虚拟集群 IP,只能被集群内的 Pod 访问;

​kubectl expose deployment demo-app --port=80 --target-port=8080 --type=ClusterIP​

  • NodePort:节点端口映射,集群外可通过 NodeIP:NodePort 访问。在每个节点上开放一个静态端口,转发到 ClusterIP;

​kubectl expose deployment demo-app --port=80 --target-port=8080 --type=NodePort​

  • LoadBalancer:云厂商负载均衡器,自动分配公网 IP。适用于云环境(如 AWS、阿里云),云厂商会自动创建负载均衡器,转发流量到 NodePort;

​kubectl expose deployment demo-app --port=80 --target-port=8080 --type=LoadBalancer​

  • ExternalName:将 Service 映射到外部域名,无需关联 Pod。适用于需要访问集群外服务的场景;

kubectl create service externalname demo-external --external-name=api.example.com​

② 扩展端口类型​

Service 支持的端口协议类型:​

  • TCP:默认类型,适用于 HTTP、MySQL 等面向连接的服务;
  • UDP:适用于 DNS、视频流等无连接服务;
  • SCTP:适用于电信级应用(如 VoLTE),需集群支持。

③ 查看网络状态与服务端口​

​# 查看 Service 详细信息(IP、端口、类型)​

kubectl get svc demo-app -o wide​

查看 Service 关联的 Endpoints(即后端 Pod 的 IP:Port 列表)​

kubectl get endpoints demo-app​

验证 Service 可用性(集群内执行,访问 ClusterIP)​

curl ip>:```​

#### ④ 负载均衡查看(节点上)​

Service 的负载均衡由 kube-proxy 实现,可在节点上查看转发规则:​

```bash​

iptables 模式(默认模式):查看 iptables 转发规则​

iptables -t nat -L | grep IPVS 模式(高性能模式):查看 IPVS 转发规则​

ipvsadm -Ln | grep <service-ip>​

扩展知识点:kube-proxy 工作模式对比​

  • iptables:基于 Linux iptables 规则转发,配置简单,适合小规模集群;
  • IPVS:基于 Linux IPVS 模块,支持更多负载均衡算法(如轮询、加权轮询),性能更优,适合大规模集群;
  • userspace:旧版模式,性能差,已被废弃。

3. 更新阶段(kubectl set)​

用于更新应用的镜像版本、环境变量等配置:​

​# 更新 Deployment 的镜像版本(核心更新操作)​

kubectl set image deployment demo-app demo-container=demo:v2​

更新环境变量(通过 ConfigMap/Secret 挂载的配置需先更新 ConfigMap/Secret)​

kubectl set env deployment demo-app ENV=test​

查看更新状态​

kubectl rollout status deployment demo-app​

扩展知识点:更新策略​

Deployment 默认采用滚动更新(RollingUpdate) 策略,可通过配置调整更新参数:​

yaml

在 Deployment 配置中添加滚动更新策略​

spec:​

strategy:​

rollingUpdate:​

maxSurge: 1 # 更新过程中最多可超出期望副本数的数量​

maxUnavailable: 0 # 更新过程中最多不可用的副本数(0 表示无中断更新)​

4. 回滚阶段(kubectl rollout)​

当更新后的版本出现问题时,可快速回滚到之前的稳定版本:​

​# 查看 Deployment 历史版本(每个版本对应一次更新)​

kubectl rollout history deployment demo-app​

查看某个历史版本的详细信息​

kubectl rollout history deployment demo-app --revision=1​

回滚到上一个版本​

kubectl rollout undo deployment demo-app​

回滚到指定版本(如版本 1)​

kubectl rollout undo deployment demo-app --to-revision=1​

暂停更新(更新过程中发现问题,暂停后续步骤)​

kubectl rollout pause deployment demo-app​

恢复更新(问题修复后,继续更新)​

kubectl rollout resume deployment demo-app​

扩展知识点:历史版本保留策略​

Deployment 默认保留最近 10 个历史版本,可通过 revisionHistoryLimit 参数调整:​

yaml

spec:​

revisionHistoryLimit: 5 # 保留最近 5 个版本,减少 ETCD 存储占用​

5. 删除阶段(kubectl delete)​

删除项目相关的所有资源,清理集群空间:​

bash

删除 Service​

kubectl delete svc demo-app​

删除 Deployment​

kubectl delete deployment demo-app​

删除 ConfigMap/Secret​

kubectl delete configmap demo-config​

kubectl delete secret demo-secret​

按标签批量删除(删除所有标签为 app=demo-app 的资源)​

kubectl delete all -l app=demo-app​

删除命名空间(级联删除该命名空间下所有资源,适合清理环境)​

kubectl delete ns dev​

五、发布策略:金丝雀发布(Canary Release)​

在生产环境中,直接全量发布新版本风险极高,金丝雀发布是一种低风险的灰度发布策略,通过将少量流量导入新版本进行验证,无问题后再全量推广。​

1. 核心原理​

  • 部署两套版本:旧版本(稳定版)+ 新版本(金丝雀版);
  • 流量分流:将少量流量(如 5%~10%)导入金丝雀版,其余流量仍走旧版本;
  • 验证与推广:观察金丝雀版的日志、监控(如 CPU 使用率、错误率),验证通过后逐步扩容金丝雀版、缩容旧版本,最终全量切换。

2. 实操步骤(基础版:无服务网格)​

通过标签选择器和 Service 实现流量分流:​

bash

步骤 1:部署旧版本(v1)Deployment(副本数=9,占 90% 流量)​

kubectl create deployment demo-app-v1 --image=demo:v1 --replicas=9​

为旧版本添加标签:app=demo-app, version=v1​

kubectl label deployment demo-app-v1 version=v1​

步骤 2:部署金丝雀版本(v2)Deployment(副本数=1,占 10% 流量)​

kubectl create deployment demo-app-v2 --image=demo:v2 --replicas=1​

为金丝雀版本添加标签:app=demo-app, version=v2​

kubectl label deployment demo-app-v2 version=v2​

步骤 3:创建 Service,通过标签 app=demo-app 关联两个版本​

kubectl expose deployment demo-app-v1 --port=80 --target-port=8080 --name=demo-app-svc​

验证 Service 关联的 Endpoints(包含 v1 和 v2 的 Pod IP)​

kubectl get endpoints demo-app-svc​

步骤 4:验证金丝雀版本​

查看金丝雀版 Pod 日志,确认无错误​

kubectl logs -l version=v2 -f​

集群内多次访问 Service,观察流量分流(约 10% 请求到 v2)​

for i in {1..100}; do curl -s demo-app-svc:80 | grep "version"; done​

3. 扩展知识点:高级金丝雀发布(服务网格)​

基础版依赖副本数比例分流,无法实现精细化流量控制(如按用户、请求头分流)。生产环境中可通过 Istio/Linkerd 等服务网格工具实现:​

  • 流量精细化控制:基于请求头(如 user-agent: test-user)、IP 地址、权重(如 5% 流量)分流;
  • 故障注入:模拟新版本的异常场景(如延迟、错误),验证容错能力;
  • A/B 测试:为不同版本配置不同路由规则,对比业务指标。

Istio 金丝雀发布示例(简化版)​

yaml

创建 VirtualService,配置 90% 流量到 v1,10% 到 v2​

apiVersion: networking.istio.io/v1alpha3​

kind: VirtualService​

metadata:​

name: demo-app-vs​

spec:​

hosts: ["demo-app-svc"]​

http:​

  • route:​

  • destination:​

host: demo-app-svc​

subset: v1​

weight: 90​

  • destination:​

host: demo-app-svc​

subset: v2​

weight: 10​

4. 优势与适用场景​

  • 优势:风险可控(少量流量验证)、不中断业务、快速回滚;
  • 适用场景:新版本稳定性不确定、需要验证性能或功能的场景;
  • 对比其他发布策略:
  • 蓝绿发布:部署两套完全相同的集群(蓝 = 旧版,绿 = 新版),流量一键切换,回滚速度快,但资源成本翻倍;
  • 灰度发布:按比例逐步扩大新版本流量(如 10%→30%→50%→100%),与金丝雀发布类似,但分流粒度更细。

六、声明式资源管理方法:生产环境首选​

声明式管理是生产环境的主流方式,通过 YAML/JSON 配置清单声明资源的期望状态,K8s 自动对比当前状态与期望状态,实现状态收敛。其核心优势是幂等性、可版本控制、支持批量部署。​

1. 基本原理​

核心逻辑:用户编写配置清单(YAML/JSON),定义资源的期望状态(如 Deployment 副本数 = 3、镜像 = nginx:1.21),通过 kubectl apply 命令提交给 APIServer。APIServer 校验配置合法性后,将期望状态存储到 ETCD,Controller Manager 持续监控状态差异,自动执行操作(如创建 Pod、扩容副本),直到当前状态与期望状态一致。​

特点:​

  • 幂等性:多次执行 kubectl apply -f 不会重复创建资源,仅同步状态差异;
  • 可追溯:配置清单可纳入 Git 版本控制,记录每一次修改记录;
  • 批量管理:可一次性应用目录下所有配置清单,适合多资源批量部署。

2. 查看与解释配置清单​

(1)查看配置清单​

导出现有资源的配置清单,用于学习、备份或二次编辑:​

bash

导出 Deployment 的 YAML 配置​

kubectl get deployment nginx-deploy -o yaml > nginx-deploy.yaml​

导出所有命名空间下的 Service 配置​

kubectl get svc --all-namespaces -o yaml > all-services.yaml​

(2)解释配置清单字段​

K8s 资源字段繁多,通过 kubectl explain 命令查看字段含义与用法:​

bash

查看 Deployment 的顶级字段(如 apiVersion、kind、metadata、spec)​

kubectl explain deployment​

查看 Deployment spec 字段的详细说明​

kubectl explain deployment.spec​

查看 spec.replicas 字段的说明(副本数字段)​

kubectl explain deployment.spec.replicas​

查看嵌套字段(如 spec.template.spec.containers)​

kubectl explain deployment.spec.template.spec.containers​

递归查看所有字段(包含嵌套字段)​

kubectl explain deployment --recursive​

扩展知识点:配置清单核心结构​

一个标准的 K8s 配置清单包含 4 个必填字段:​

yaml

labels: # 资源标签(用于筛选、关联其他资源)​

app: nginx​

spec: # 资源规格(期望状态,核心配置)​

replicas: 3 # 副本数​

selector: # 标签选择器(关联 Pod)​

matchLabels:​

app: nginx​

template: # Pod 模板(定义 Pod 的配置)​

metadata:​

labels:​

app: nginx​

spec:​

containers: # 容器配置​

  • name: nginx # 容器名称​

image: nginx:1.21 # 容器镜像​

ports:​

  • containerPort: 80 # 容器暴露端口​

3. 编写与应用配置清单​

(1)编写配置清单​

手动编写 Deployment 配置清单(nginx-deploy.yaml):​

yaml

(2)应用配置清单​

通过 kubectl apply 命令提交配置,创建或更新资源:​

bash

应用单个配置清单​

kubectl apply -f nginx-deploy.yaml​

应用目录下所有配置清单(批量部署)​

kubectl apply -f k8s-config/​

验证应用结果​

kubectl get deployments​

kubectl get pods​

扩展知识点:apply 与其他命令对比​

  • kubectl create -f:非幂等,重复执行报错(已存在同名资源);
  • kubectl replace -f:覆盖更新,会删除现有资源重新创建,可能导致服务中断;
  • kubectl apply -f:幂等更新,仅同步配置差异,不中断服务,生产环境首选。

4. 在线修改配置清单​

通过 kubectl edit 命令在线编辑资源配置,即时生效:​

bash

在线编辑 Deployment 配置​

kubectl edit deployment nginx-deploy​

在线编辑 Service 配置​

kubectl edit svc nginx-svc​

扩展知识点:默认编辑器配置​

kubectl edit 默认使用系统编辑器(如 vi),可配置为常用编辑器(如 vim):​

​# 临时配置(当前终端生效)​

export KUBE_EDITOR=vim​

永久配置(写入 ~/.bashrc)​

echo "export KUBE_EDITOR=vim" >> ~/.bashrc​

source ~/.bashrc​

5. 删除资源配置清单​

通过配置清单删除资源,支持批量删除:​

bash

删除单个资源(通过配置清单)​

kubectl delete -f nginx-deploy.yaml​

批量删除目录下所有资源​

kubectl delete -f k8s-config/​

级联删除(默认行为,删除资源及其依赖资源)​

如删除 Deployment 会级联删除 ReplicaSet 和 Pod​

kubectl delete -f nginx-deploy.yaml​

非级联删除(仅删除当前资源,不删除依赖资源)​

kubectl delete -f nginx-deploy.yaml --cascade=false​

扩展知识点:配置清单版本控制最佳实践​

生产环境中,配置清单建议纳入 Git 版本控制,遵循以下规范:​

  • 按环境分目录:如 dev/(开发环境)、test/(测试环境)、prod/(生产环境);
  • 按资源类型分文件:如 deployment.yaml、service.yaml、configmap.yaml;
  • 提交规范:每次修改配置清单时,填写清晰的提交信息(如 "更新 nginx 镜像到 1.22");
  • 权限控制:通过 Git 权限限制谁能修改生产环境配置清单,避免误操作。

七、总结与实践建议​

Kubernetes 操作管理的核心是 "选择合适的管理方式,标准化全生命周期操作"。总结如下:​

1. 管理方式选择建议​

  • 临时调试 / 快速验证:使用陈述式管理(kubectl create/scale);
  • 生产环境 / 批量部署:使用声明式管理(kubectl apply -f),配置清单纳入 Git 版本控制;
  • 简单场景:使用 kubectl run/kubectl expose;
  • 复杂场景(如资源限制、健康检查):编写 YAML 配置清单,精细化定义资源。

2. 生产环境关键实践​

  • 资源限制:为所有容器配置 resources.limits 和 resources.requests,避免资源争抢;
  • 健康检查:配置 livenessProbe(存活探针)和 readinessProbe(就绪探针),确保服务可用性;
  • 命名空间隔离:按环境或业务模块划分命名空间,避免资源冲突;
  • 权限控制:通过 RBAC 限制用户操作权限,如开发人员仅能操作 dev 命名空间;
  • 监控告警:部署 Prometheus+Grafana 监控集群资源使用率、Pod 状态,配置告警规则;
  • 备份恢复:定期备份 ETCD 数据和配置清单,避免数据丢失。

3. 进阶学习方向​

  • 服务网格:学习 Istio/Linkerd 实现精细化流量控制、熔断降级、可观测性;
  • 持续部署:结合 GitLab CI/CD、Jenkins 实现配置清单的自动化部署;
  • 多集群管理:学习 KubeSphere、Rancher 等工具管理多 K8s 集群;
  • 运维自动化:通过 Helm Charts 封装应用配置,实现一键部署与版本管理。

通过本文的学习,相信你已掌握 K8s 操作管理的核心知识点与实操技巧。建议结合实际场景多动手练习,逐步将 K8s 操作融入日常开发与运维流程,提升容器化应用的管理效率。

相关推荐
不想画图14 小时前
Kubernetes(三)——组网概念和基础操作指令
云原生·容器·kubernetes
weixin_4624462317 小时前
K8s 集群部署基础:Linux 三节点 SSH 互信(免密登录)配置指南
linux·kubernetes·ssh
Fortune_yangyang18 小时前
Kubernetes 操作管理
云原生·容器·kubernetes
AllFiles19 小时前
Kubernetes PVC 扩容全流程实战:从原理到操作详解
后端·kubernetes
放寒假脚后跟v20 小时前
Pod 的 YAML 文件中 exitCode 字段的具体含义、不同取值代表的场景
运维·云原生·容器·kubernetes·k8s
东方佑20 小时前
使用Docker Compose一键部署OnlyOffice:完整指南与配置解析
运维·docker·容器
原神启动120 小时前
K8S(五)—— YAML文件解析
java·容器·kubernetes
lin张21 小时前
k8s(二)项目生命周期管理、发布策略与声明式资源管理
云原生·容器·kubernetes
一只鱼丸yo21 小时前
Service Mesh:微服务治理的下一代方案
微服务·云原生·service_mesh