Kubernetes(K8S)入门指南
📌 1. 什么是 Kubernetes(K8S)
Kubernetes(简称
K8S)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用。
你可以把它理解为:
> "管理大量 Docker 容器的操作系统"
它能帮你: - 自动部署容器 - 自动重启失败的容器 - 自动扩缩容 - 负载均衡 -
滚动更新 - 配置管理 - 服务发现
📌 2. Kubernetes 能解决什么问题?
在没有 K8S 之前,你可能会遇到: - 容器挂了没人重启 - 流量一大系统崩溃 -
多台服务器不好管理 - 发布新版本风险高 - 配置散落在各处
👉 Kubernetes 解决的核心问题: - 稳定性:自动重启、健康检查 -
可扩展性:支持横向扩展(加 Pod) - 可维护性:统一管理容器 -
可发布性:支持滚动发布、回滚
📌 3. Kubernetes 核心架构(简化版)
🎯 Control Plane(控制平面)
负责"指挥整个集群",包含: - API Server:K8S 的入口 -
Scheduler:决定 Pod 运行在哪个节点 - Controller
Manager:保证集群状态符合期望 - etcd:保存集群的所有状态
🎯 Node(工作节点)
真正运行容器的机器,包含: - kubelet:管理 Pod -
kube-proxy:负责网络 - Container Runtime:如 Docker / containerd
📌 4. Kubernetes 核心对象(必须掌握)
🔹 Pod(最小运行单元)
- 你运行容器的地方
- 一个 Pod 里可以有多个容器
- 一般不会直接创建 Pod,而是用 Deployment 管理
示例:pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: demo-pod
spec:
containers:
- name: app
image: nginx:latest
ports:
- containerPort: 80🔹 Deployment(部署管理)
- 用来管理 Pod
- 支持副本、副本扩缩、滚动更新
示例:deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80🔹 Service(服务暴露)
- 让外部或内部访问 Pod
- 负责负载均衡
示例:service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
spec:
type: NodePort
selector:
app: nginx
ports:
- port: 80
targetPort: 80
nodePort: 30080📌 5. Kubernetes 常用命令速查
查看集群状态
kubectl cluster-info查看所有 Pod
kubectl get pods查看 Deployment
kubectl get deployment查看 Service
kubectl get svc部署应用
kubectl apply -f deployment.yaml删除应用
kubectl delete -f deployment.yaml查看 Pod 详细信息
kubectl describe pod <pod-name>查看日志
kubectl logs <pod-name>📌 6. ConfigMap(配置管理)
用于存储配置,而不是写死在镜像里。
示例:configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
APP_ENV: "production"
APP_PORT: "3000"在 Pod 里使用:
envFrom:
- configMapRef:
name: app-config📌 7. Kubernetes vs Docker Compose(对照)
Docker Compose Kubernetes
Service Deployment
ports Service
volumes PV / PVC
environment ConfigMap / Secret
📌 8. 本地入门建议(学习路线)
✅ 阶段 1:本地环境
- 安装 Docker Desktop
- 启用 Kubernetes
✅ 阶段 2:基础概念
- 学会 Pod / Deployment / Service
✅ 阶段 3:实战
- 部署 Node + Express
- 部署 MySQL
- 配置 ConfigMap
📌 9. 常见问题(FAQ)
Q:K8S 和 Docker 什么关系?
A:Docker 是容器,K8S 是管理容器的系统。
Q:一定要学 Docker 才能学 K8S 吗?
A:强烈建议先学 Docker。
你的电脑
│
├── Docker Desktop
│ ├── Docker(跑容器)
│ └── Kubernetes(本地 K8S 集群) ←───────┐
│ │
│ Zadig 可以“接管/连接”
│ │
└── Zadig(DevOps 平台) ────────────────┘
↓
帮你自动构建镜像 + 部署到 K8S