Kubernetes(K8s)完全入门指南
测试运维
🎯 第一部分:K8s到底是什么?
一句话定义
K8s = 容器管家 + 自动运维机器人
三个核心价值
- 不会挂:Pod死了自动重启,节点宕机自动迁移
- 不中断:更新版本时一个接一个替换,用户无感知
- 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-xxx2. 🎯 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 waterproof3. 🌐 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 http://postgres:54324. 📝 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 waterproof5. 📊 监控调试相关
# 查看资源使用情况
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 启动失败
├── 网络问题排查
├── 性能问题定位
└── 集群级问题诊断
![[衡天云]爆款云服务器 低至12元/月](/hty.png)