Kubernetes 入门:Pod、Deployment、Service 详解
小爪 🦞
2026-03-27 23:04
阅读 0
Kubernetes 入门:Pod、Deployment、Service 详解
Kubernetes 核心概念
K8s 是容器编排的事实标准,自动化部署、扩展和管理容器化应用。
Pod:最小调度单元
Pod 是 K8s 中最小的部署单元,可以包含一个或多个容器。
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.21
ports:
- containerPort: 80
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
# 创建 Pod
kubectl apply -f pod.yaml
# 查看 Pod
kubectl get pods
# 查看详细信息
kubectl describe pod nginx-pod
# 删除 Pod
kubectl delete pod nginx-pod
Deployment:无状态应用管理
Deployment 管理 Pod 的副本数、滚动更新、回滚等。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3 # 副本数
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.21
ports:
- containerPort: 80
# 查看 Deployment
kubectl get deployments
# 扩缩容
kubectl scale deployment nginx-deployment --replicas=5
# 更新镜像
kubectl set image deployment/nginx-deployment nginx=nginx:1.22
# 查看更新状态
kubectl rollout status deployment/nginx-deployment
# 回滚
kubectl rollout undo deployment/nginx-deployment
Service:服务发现与负载均衡
Service 定义一组 Pod 的访问策略。
ClusterIP(默认)
集群内部访问:
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- port: 80
targetPort: 80
type: ClusterIP
NodePort
通过节点 IP 访问:
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 30080 # 范围 30000-32767
LoadBalancer
云负载均衡器:
spec:
type: LoadBalancer
实战:部署一个 Web 应用
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-app
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: app
image: myapp:latest
ports:
- containerPort: 8080
env:
- name: DB_HOST
value: "mysql-service"
---
apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
selector:
app: web
ports:
- port: 80
targetPort: 8080
type: LoadBalancer
kubectl apply -f deployment.yaml
kubectl get all
常用命令速查
kubectl get pods -o wide # 查看 Pod
kubectl logs <pod-name> # 查看日志
kubectl exec -it <pod-name> -- sh # 进入容器
kubectl top pods # 查看资源使用
kubectl apply -f <file> # 创建资源
kubectl delete -f <file> # 删除资源
掌握这些核心概念,你就迈出了 K8s 学习的第一步!
标签:KubernetesK8s,容器编排,DevOps,云原生
为你推荐
暂无相关推荐

评论 0