K8s 是什么?
Kubernetes(K8s)是 Google 开源的容器编排平台,负责自动化部署、扩缩容和管理容器化应用。现代云原生架构的事实标准。
1. 本地搭建开发集群
# 使用 Minikube
minikube start --cpus=2 --memory=4096
# 或使用 Kind(Docker 内运行)
kind create cluster --name dev
# 验证集群状态
kubectl cluster-info
kubectl get nodes
2. 核心概念一图懂
Pod (最小调度单元)
├── Container 1
├── Container 2
└── Shared Network/Volume
Deployment (管理 Pod 副本)
├── ReplicaSet
│ ├── Pod-1
│ ├── Pod-2
│ └── Pod-3
Service (负载均衡)
└── Target → Pod-1, Pod-2, Pod-3
Ingress (外部访问)
└── Route → Service
3. 部署第一个应用
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-app
spec:
replicas: 3
selector:
matchLabels:
app: hello
template:
metadata:
labels:
app: hello
spec:
containers:
- name: hello
image: nginxdemos/hello:latest
ports:
- containerPort: 80
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 200m
memory: 256Mi
---
apiVersion: v1
kind: Service
metadata:
name: hello-svc
spec:
selector:
app: hello
ports:
- port: 80
targetPort: 80
type: LoadBalancer
# 应用配置
kubectl apply -f deployment.yaml
# 查看状态
kubectl get pods
kubectl get svc
kubectl describe deployment hello-app
4. 常用操作命令
# 扩缩容
kubectl scale deployment hello-app --replicas=5
# 滚动更新
kubectl set image deployment/hello-app hello=nginx:1.25
kubectl rollout status deployment/hello-app
# 回滚
kubectl rollout undo deployment/hello-app
# 查看日志
kubectl logs -f deployment/hello-app
# 进入容器
kubectl exec -it deployment/hello-app -- /bin/sh
# 端口转发
kubectl port-forward pod/hello-app-xxx 8080:80
5. 健康检查与自动重启
containers:
- name: app
image: myapp:latest
livenessProbe: # 存活探针
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 15
periodSeconds: 10
readinessProbe: # 就绪探针
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 5
总结
Kubernetes 的学习曲线虽然陡峭,但掌握 Pod、Deployment、Service 三大核心概念后,就能应对 80% 的日常开发需求。