首页 > 其他分享 >K8是系列---【什么是Deployment?】

K8是系列---【什么是Deployment?】

时间:2022-11-19 11:13:43浏览次数:42  
标签:kubectl dep deployment --- Deployment pod K8 my

什么是Deployment?

1.为什么会有Deployment?

  没有认识Deloyment之前,我们都是直接使用kubectl创建pod,这样创建的pod有个问题,如果我想实现高可用,总不能到每一台机器上都创建一遍吧?为了解决这个问题,Deployment应运而生,我们只用创建一个Depolyment,指定副本数量,K8s就会自动创建pod分散到不同的机器上。另外,使用Deployment创建的pod拥有自愈能力和扩缩容能力,哪怕你手动删除了一个pod,K8s也会快速帮你再创建一个相同的pod。

2.多副本常用命令

命令创建Deployment

kubectl create deployment my-dep --image=nginx --replicas=3
#查看Deployment
kubectl get deploy
#查看deployment的yaml
kubectl get deploy my-dep -oyaml

yaml创建Deployment

apiVersion: apps/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

3.扩缩容

方式一:使用命令,通过改变副本数来控制是扩容还是缩容

kubectl scale --replicas=5 deployment/my-dep

方式二:通过编辑配置文件

kubectl edit deployment/my-dep
#找到replicas,把数量修改一下,wq保存即可。

4.自愈能力

  假如我部署了一个Deployment,分别分散在node1,node2,node3上,此时,如果在node1上的节点由于内存泄漏或者人为误停了pod或者容器,这时候K8s就会感知到,K8s就会尝试重启,此时重启成功后pod的ip和节点都不变,还是原来的pod,这就是K8s的自愈能力。

5.故障转移能力

  假如我部署了一个Deployment,分别分散在node1,node2,node3上,此时,如果在node1上的节点宕机了,造成服务器不可用,这时候单靠自愈能力肯定恢复不了了,这时候K8s就会等5分钟(可以自己设置阈值,默认5分钟),把原来的pod删除掉,在新的节点启动一个新的pod。

6.滚动更新

  当更新应用的时候,假如原来有三个节点,那么,先启动新的pod,新的起来了,杀掉一个老的pod,再启动新的,杀掉老的pod,依次循环。

#查看deployment的yaml中的镜像
kubectl get deploy my-dep -oyaml|grep image
#查看pod的状态变更过程
kubectl get pod -w
#滚动更新
kubectl set image deploy/my-dep nginx=nginx:1.16.1 --record

7.历史版本回退

  假如当前版本有问题,K8s可以回退到之前的指定版本。

#查看deployment的历史版本
kubectl rollout history deployment/my-dep
#回退到指定版本
kubectl rollout undo deploy/my-dep --to-version=1

 

标签:kubectl,dep,deployment,---,Deployment,pod,K8,my
From: https://www.cnblogs.com/hujunwei/p/16905657.html

相关文章

  • Java面试汇总----概念题
    1、集合:    Vector、Hashtable是线程安全的集合对象,    ArrayList、Vector对象的底层是由数组实现的,    LinkedList是线程不安全的,底层是由链表实现的,    M......
  • 小知识点-第四讲
    装饰模式:它拥有一个设计非常巧妙的结构,他可以动态添加对象功能,通过委托机制复用组件功能在运行时将这些功能组件进行叠加,从而成为一个“超级对象”,使之拥有所有的这些组件......
  • 小知识点-第三讲
    享元模式:利用享元模式进行对象共享,从而提升系统性能(空间开销和创建创建开销)。在开发的过程中也经常使用此模式。 原理: 当一个应用中使用了大量的对象,这些对象造成了很大的......
  • 主动打包:逐浪HMS主题大师1.3-即速推送、华为小组件缓存优化、锁屏提取、资源审计、技
    主动打包:逐浪HMS主题大师1.3-即速推送、华为小组件缓存优化、锁屏提取、资源审计、技术秘笈,移动主题设计利器逐浪HMS主题大师介绍软件架构使用环境启动使用捐赠我......
  • 1732. 找到最高海拔 ----- 简单模拟、差分数组前缀和
    有一个自行车手打算进行一场公路骑行,这条路线总共由 n+1 个不同海拔的点组成。自行车手从海拔为0 的点 0 开始骑行。给你一个长度为n 的整数数组 gain ,其中g......
  • 22.数据抽取-提取指定条件数据
    #按条件提取数据importpandasaspdpd.set_option('display.unicode.east_asian_width',True)data=[[45,65,100],[56,45,50],[67,67,67]]index=['张三','李四',......
  • No 'Access-Control-Allow-Origin' header is present on the requested resource.
    最近写前后端分离,遇到了跨域问题,很奇怪的是我已经注入了Cors跨域请求,但是每当被JWT的拦截器拦截下来返回未通过时,前端收到的总是无法加载响应数据,琢磨了好一会之后,发现......
  • sed 替换字符串和ip ([a-z]+) [0-9.]+
    [root@k8s-master01~]#cataa1.txtaaaabbbcccjfdjkasdfghjzxcvbqwertyuiophelloword[root@k8s-master01~]#sed-nr's#he(.*)rd#\1#gp'aa1.txtllowo[root@k......
  • 19-20 按行提取 ,按列提取
    数据抽取.DataFrame对象的loc属性与iloc属性.loc属性以列名(columns)和行名(index)作为参数,当只有一个参数时,默认是行名,即抽取整行数据,包括所有列。il......
  • ASP.NET Core教程-Middleware(中间件)
    更新记录转载请注明出处:2022年11月17日发布。2022年11月16日从笔记迁移到博客。Middleware(中间件)中间件介绍中间件可以处理请求(Request)和响应(Response)。中间......