K8S资源之Deployment

前言

相较于直接部署Pod, 以Deployment方式部署更为常见,且Deployment部署可以更容易控制Pod,使Pod拥有多副本、自愈、扩缩容的能力。

多副本

以Deployment的方式同时创建两个nginx

命令行部署

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

yml文件创建

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

结果

deployment多副本

扩缩容

即在多副本的基础上修改副本数量

命令行修改

kubectl scale --replicas=3 deployment/my-dep-nginx

修改yml文件

kubectl edit deploy my-dep-nginx-yml

结果

扩缩容

自愈与故障转移

针对于Deployment创建的Pod,删除Pod后会自动创建

kubectl delete pod my-dep-nginx-6dd785d769-hbsbf

删除deployment创建的pod(模拟pod被误删除等场景)
删除deployment创建的pod
会自动再创建一个pod
deployment自愈

滚动更新

更新的核心在于更新容器中的镜像,所以我们只需要将需要更新的镜像版本告诉k8s即可。流程如下:

  • 告诉k8s版本,以命令行传入 kubectl set image deploy/my-dep-nginx nginx=nginx:1.16.1 --record
  • 对于deployment部署的多副本,则会拉取新的镜像并到达running状态
  • 此时kill掉原来的一个pod
  • 即起一个新的pod,kill一个老的pod,以此类推,至全部的pod更新完
    滚动更新流程

版本回滚

流程如下:

  • 传入需要回滚到的指定版本
  • 滚动更新

参考

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值