1. 首页 > Linux教程 > 正文

Linux教程FG435-Kubernetes Deployment

内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。

本文档介绍Kubernete

风哥提示:

s Deployment的创建和管理方法。

Part01-Deployment创建

1.1 使用YAML创建Deployment

# 创建Deployment YAML文件
[root@k8s-master ~]# cat > fgedu-deployment.yaml << 'EOF' apiVersion: apps/v1 kind: Deployment metadata: name: fgedu-web labels: app: fgedu-web spec: replicas: 3 selector: matchLabels: app: fgedu-web strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 0 template: metadata: labels: app: fgedu-web spec: containers: - name: nginx image: nginx:1.25 ports: - containerPort: 80 resources: requests: cpu: 100m memory: 128Mi limits: cpu: 500m memory: 512Mi livenessProbe: httpGet: path: / port: 80 initialDelaySeconds: 10 periodSeconds: 10 readinessProbe: httpGet: path: / port: 80 initialDelaySeconds: 5 periodSeconds: 5 EOF # 创建Deployment [root@k8s-master ~]# kubectl apply -f fgedu-deployment.yaml deployment.apps/fgedu-web created # 查看Deployment状态 [root@k8s-master ~]# kubectl get deployments NAME READY UP-TO-DATE AVAILABLE AGE fgedu-web 3/3 3 3 30s # 查看Deployment详情 [root@k8s-master ~]# kubectl describe deployment fgedu-web Name: fgedu-web Namespace: default CreationTimestamp: Sat, 04 Apr 2026 09:00:00 +0800 Labels: app=fgedu-web Annotations: deployment.kubernetes.io/revision: 1 Selector: app=fgedu-web Replicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailable StrategyType: RollingUpdate MinReadySeconds: 0 RollingUpdateStrategy: 0 max unavailable, 1 max surge Pod Template: Labels: app=fgedu-web Containers: nginx: Image: nginx:1.25 Port: 80/TCP Host Port: 0/TCP Limits: cpu: 500m memory: 512Mi Requests: cpu: 100m memory: 128Mi Liveness: http-get http://:80/ delay=10s timeout=1s period=10s #success=1 #failure=3 Readiness: http-get http://:80/ delay=5s timeout=1s period=5s #success=1 #failure=3 Environment:
Mounts:
Volumes:
Conditions:
Type Status Reason
—- —— ——
Available True MinimumReplicasAvailable
Progressing True NewReplicaSetAvailable
OldReplicaSets:
NewReplicaSet: fgedu-web-abc123 (3/3 replicas created)
Events:
Type Reason Age From Message
—- —— —- —- ——-
Normal ScalingReplicaSet 60s deployment-controller Scaled up replica set fgedu-web-abc123 to 3

# 查看Pod
[root@k8s-master ~]# kubectl get pods -l app=fgedu-web
NAME READY STATUS RESTARTS AGE
fgedu-web-abc123-abc12 1/1 Running 0 1m
fgedu-web-abc123-def34 1/1 Running 0 1m
fgedu-web-abc123-ghi56 1/1 Running 0 1m

Part02-Deployment扩缩容

2.1 手动扩缩容

# 扩容到5个副本
[root@k8s-master ~]# kubectl scale deployment fgedu-web –replicas=5
deployment.apps/fgedu-web scaled

# 查看扩容状态
[root@k8s-master ~]# kubectl get deployment fgedu-web
NAME READY UP-TO-DATE AVAILABLE AGE
fgedu-web 5/5 5 5 5m

# 缩容到2个副本
[root@k8s-master ~]# kubectl scale deployment fgedu-web –replicas=2
deployment.apps/fgedu-web scaled

# 查看缩容状态
[root@k8s-master ~]# kubectl get deployment fgedu-web
NAME READY UP-TO-DATE AVAILABLE AGE
fgedu-web 2/2 2 2 6m

# 自动扩缩容
[root@k8s-master ~]# kubectl autoscale deployment fgedu-web –min=2 –max=10 –cpu-percent=80
horizontalpodautoscaler.autoscaling/fgedu-web autoscaled

# 查看HPA状态
[root@k8s-master ~]# kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
fgedu-web Deployment/fgedu-web 5%/80% 2 10 2 30s

Part03-Deployment更新

3.1 滚动更新

# 更新镜像版本
[root@k8s-master ~]# kubectl set image deployment/fgedu-web nginx=nginx:1.26
deployment.apps/fgedu-web image updated

# 查看更新状态
[root@k8s-master ~]# kubectl rollout status deployment/fgedu-web
Waiting for deployment “fgedu-web” rollout to finish: 1 out of 3 new replicas have been updated…
Waiting for deployment “fgedu-web” rollout to finish: 1 out of 3 new replicas have been updated…
Waiting for deployment “fgedu-web” rollout to finish: 2 out of 3 new replicas have been updated…
Waiting for deployment “fgedu-web” rollout to finish: 2 out of 3 new replicas have been updated…
Waiting for deployment “fgedu-web” rollout to finish: 2 out of 3 new replicas have been updated…
Waiting for deployment “fgedu-web” rollout to finish: 1 old replicas are pending termination…
Waiting for deployment “fgedu-web” rollout to finish: 1 old replicas are pending termination…
deployment “fgedu-web” successfully rolled out

# 查看更新历史
[root@k8s-master ~]# kubectl rollout history deployment/fgedu-web
deployment.apps/fgedu-web
REVISION CHANGE-CAUSE
1
2

# 查看特定版本详情
[root@k8s-master ~]# kubectl rollout history deployment/fgedu-web –revision=2
deployment.apps/fgedu-web with revision #2
Pod Template:
Labels: app=fgedu-web
pod-template-hash=def456789
Containers:
nginx:
Image: nginx:1.26
Port: 80/TCP
Host Port: 0/TCP
Limits:
cpu: 500m
memory: 512Mi
Requests:
cpu: 100m
memory: 128Mi
Liveness: http-get http://:80/ delay=10s timeout=1s period=10s #success=1 #failure=3
Readiness: http-get http://:80/ delay=5s timeout=1s period=5s #success=1 #failure=3
Environment:
Mounts:
Volumes:

# 回滚到上一版本
[root@k8s-master ~]# kubectl rollout undo deployment/fgedu-web
deployment.apps/fgedu-web rolled back

# 回滚到指定版本
[root@k8s-master ~]# kubectl rollout undo deployment/fgedu-web –to-学习交流加群风哥微信: itpux-comrevision=1
deployment.apps/fgedu-web rolled back

# 暂停更新
[root@k8s-master ~]# kubectl rollout pause deployment/fgedu-web
deployment.apps/fgedu-web paused

# 恢复更新
[root@k8s-master ~]# kubectl rollout resume deployment/fgedu-web
deployment.apps/fgedu-web resumed

风哥针对Deployment管理建议:

  • 使用YAML文件管理Deployment
  • 配置滚动更新策略
  • 设置资源请求和限制
  • 配置健康检查探针
  • 使用HPA自动扩缩容
  • 保留更新历史便于回滚

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息