getfromcode

Kubernetes(K8s)完全入门指南

测试运维
文章摘要

🎯 第一部分:K8s到底是什么? 一句话定义 K8s = 容器管家 + 自动运维机器人 三个核心价值 不会挂:Pod死了自动重启,节点宕机自动迁移 不中断:更新版本时一个接一个替换,用户无感知 3 不浪费:流量高了自动加机器,流量低了自动减机器 🏢 第二部分:用奶茶店比喻K8s全家桶 K8s概念 奶茶店比喻 你的项目里对应 Node(节点) 奶茶店的分…

已有 131 人浏览 发布 2026-02-12 更新 2026-09-22

🎯第一部分:K8s到底是什么?

一句话定义

K8s = 容器管家 + 自动运维机器人

三个核心价值

  1. 不会挂:Pod死了自动重启,节点宕机自动迁移
  2. 不中断:更新版本时一个接一个替换,用户无感知
  3. 3 不浪费:流量高了自动加机器,流量低了自动减机器

🏢第二部分:用奶茶店比喻K8s全家桶

K8s概念奶茶店比喻你的项目里对应
Node(节点)奶茶店的分店服务器
Pod(豆荚)一个员工容器
Deployment(部署)店长管前端/后端员工的管理员
Service(服务)前台接单员把请求分发给Pod
Ingress(入口)门店招牌公网入口)
ConfigMap(配置)员工手册nginx-frontend-config
Secret(密钥)保险柜密码(镜像仓库密码)
PVC(存储)仓库货架(数据库硬盘)
HPA(自动扩缩)智能排班系统自动加人/减人


Pod相关 - 最小工作单元

# 查看Pod(最常用)
kubectl get pods -n waterproof
# NAME READY STATUS
# waterproof-frontend-8687f9d787-9snsw 1/1 Running
# 查看Pod详情(排错用)
kubectl describe pod -n waterproof waterproof-frontend-xxx
# 查看Pod日志
kubectl logs -n waterproof -l app=waterproof-frontend
# 进入Pod内部(调试用)
kubectl exec -it -n waterproof waterproof-frontend-xxx -- sh
# 删除Pod(会自动重建)
kubectl delete pod -n waterproof waterproof-frontend-xxx

2. 🎯 Deployment相关 - 你的应用管家

# 查看Deployment
kubectl get deployment -n waterproof
# NAME READY UP-TO-DATE AVAILABLE
# waterproof-frontend 1/1 1 1
# 更新镜像(你刚做的)
kubectl set image deployment/waterproof-frontend -n waterproof \
web=sjk2026-registry.cn-hangzhou.cr.aliyuncs.com/sjk2026_public/waterproof-frontend:0.1.4
# 查看更新状态(最重要!)
kubectl rollout status deployment/waterproof-frontend -n waterproof
# 扩容(人多了加员工)
kubectl scale deployment/waterproof-frontend -n waterproof --replicas=3
# 缩容(人少了减员工)
kubectl scale deployment/waterproof-frontend -n waterproof --replicas=1
# 回滚(新版本有问题)
kubectl rollout undo deployment/waterproof-frontend -n waterproof
# 查看历史版本
kubectl rollout history deployment/waterproof-frontend -n waterproof

3. 🌐 Service相关 - 稳定的访问入口

# 查看Service
kubectl get svc -n waterproof
# NAME TYPE CLUSTER-IP EXTERNAL-IP
# waterproof-frontend-lb LoadBalancer 1.1.1.1 2.2.2.2
# waterproof-backend ClusterIP 112.118.1.124 <none>
# 查看Service详情
kubectl describe svc -n waterproof waterproof-frontend-lb
# 测试Service连通性(从Pod内)
kubectl exec -it -n waterproof backend-pod -- curl 

4. 📝 ConfigMap/Secret相关 - 配置管理

# 查看配置
kubectl get configmap -n waterproof
kubectl get secret -n waterproof
# 创建ConfigMap(从文件)
kubectl create configmap nginx-config -n waterproof --from-file=default.conf
# 查看配置内容
kubectl get configmap nginx-frontend-config -n waterproof -o yaml
# 修改配置(热更新)
kubectl edit configmap nginx-frontend-config -n waterproof
# 改完要重启Pod
kubectl rollout restart deployment/waterproof-frontend -n waterproof

5. 📊 监控调试相关

# 查看资源使用情况
kubectl top pods -n waterproof
kubectl top nodes
# 查看所有资源(命名空间内)
kubectl get all -n waterproof
# 实时监控Pod状态
kubectl get pods -n waterproof -w
# 查看集群节点
kubectl get nodes -o wide
# 查看API地址(确认连的是哪个集群)
kubectl cluster-info

🔥第四部分:K8s最核心的3个机制(必懂)

1. 声明式API(Declarative)

# ❌ 命令式(你要告诉它怎么做)
ssh server
docker pull image
docker stop old
docker run new
# ✅ 声明式(你只告诉它要什么)
kubectl apply -f deployment.yaml
# K8s自己决定怎么达到这个状态

2. 控制器循环(Control Loop)

你写:我要3个Pod
↓
K8s检查:现在只有1个
↓
K8s执行:创建2个新Pod
↓
K8s检查:现在有3个 ✅
↓
(循环)永远确保是3个

3. 标签选择器(Label Selector)

# Pod上有标签
labels:
app: waterproof-frontend
env: production
# Service通过标签找Pod
selector:
app: waterproof-frontend # 只找有这个标签的Pod

📋第五部分:K8s对象速查表

对象	缩写	作用	你的项目里
Pod	po	跑容器的最小单元	前端Pod、后端Pod
Deployment	deploy	管理Pod版本、数量	waterproof-frontend
Service	svc	稳定的网络入口	waterproof-frontend-lb
ConfigMap	cm	配置文件	nginx-frontend-config
Secret	secret	密钥	acr-secret
Ingress	ing	公网访问入口	-
PersistentVolumeClaim	pvc	持久化存储	postgres-pvc
Namespace	ns	隔离环境	waterproof
HorizontalPodAutoscaler	hpa	自动扩缩容	还没配
Job	job	一次性任务	数据库迁移

第一阶段:能跑起来(你现在)

├── kubectl get pods

├── kubectl logs

├── kubectl exec

├── kubectl set image

└── kubectl rollout status


第二阶段:能配起来(下一步)

├── 自己写 Deployment YAML

├── 自己写 Service YAML

├── 配 ConfigMap/Secret

└── 配 Ingress


第三阶段:能调优(进阶)

├── HPA 自动扩缩容

├── PodDisruptionBudget

├── 网络策略

└── 监控告警


第四阶段:能排障(高手)

├── 分析 Pod 启动失败

├── 网络问题排查

├── 性能问题定位

└── 集群级问题诊断