k8s中的Deployment【工作负载】

Deployment

控制Pod,使Pod拥有多副本、自愈、扩缩容等能力。

# 两种创建Pod的方式
kubectl run mynginx --image=nginx
kubectl create deployment mytomcat --image=tomcat:8.5.68
# 删除部署方式
kubectl get deploy
kubectl delete deploy mytomcat 

多副本能力

kubectl create deployment my-dep --image=nginx --replicas=3

不同的副本可能会部署到不同节点。

通过资源配置文件方式创建deployment:

apiVersion: v1
kind: Deployment
metadata: 
  labels:
    app: my-dep
  name: my-dep
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-dep
  template:
    metadata: 
      labels: 
        app: my-dep
    spec:
      containers:
      - image: nginx
        name: nginx

扩缩容能力

在这里插入图片描述

# 扩容
kubectl scale deploy/my-dep --replicas=5
# 缩容
kubectl scale deploy/my-dep --replicas=3
# 编辑yaml文件实现扩缩容
kubectl edit deploy my-dep

自愈能力&故障转移

使用deployment部署的应用,不怕应用崩溃和机器宕机。
如果应用崩溃,会重新启动一个Pod,即自愈能力,可以用docker stop测试。
如果发生宕机,Pod会转移到其他机器上去运行,即故障转移,可以关闭某个节点测试。

# 实时监控Pod状态
kubectl get pod -w

滚动更新

kubectl set image deployment/my-dep nginx=nginx:1.16.1 --record

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
不停机更新,直到全部更换为新版本:
在这里插入图片描述

版本回退

# 历史记录
kubectl rollout history deployment/my-dep
# 查看某个历史详情
kubectl rollout history deployment/my-dep --reversion=2
# 回滚(回到上次)
kubectl rollout undo deployment/my-dep 
kubectl rollout undo deployment/my-dep --to-reversion=2
# 回滚(回到指定版本)

总结

除了Deployment,k8s还有StatefulSet、DaemonSet、Job等类型资源,我们都称为工作负载。

在这里插入图片描述


版权声明:本文为qq_41242680原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。