k8s控制器 Replicaset和Deployment

目录

一,Replicaset控制器

二,Deployment控制器,Reployment控制器,pod资源之间的关系

三,工作原理:

四,Deployment资源清单文件编写技巧:

五,Deployment管理pod:

六,创建实例

一,Replicaset控制器

Replicaset是副本控制器,简称rs,主要作用是控制由其管理的pod,使pod副本的数量始终维持在预设的个数。当pod副本被删除时,会重新创建新的副本。官方不建议直接使用Replicaset,使用Deployment取而代之。

二,Deployment控制器,Reployment控制器,pod资源之间的关系

Deployment是比ReplicaSet更高级的概念,可以调用ReplicaSet管理pod对象。因此是由Deployment管理ReplicaSet,再由ReplicaSet负责管理pod对象,
Deployment作用:除了可以调用ReplicaSet之外还可以提供升级回滚的功能。

三,工作原理:

直接在命令行通过纯命令的方式完成对应资源版本的内容的修改。
滚动更新需要加:readinessProbe和livenessProbe探测

Deployment功能:1,创建RplicaSet和pod
            2,滚动升级(不停止旧服务的状态下升级)和回滚应用(将应用归滚到之前的版本)
            3,平滑地扩容和缩容
                4,暂停和继续Deployment

四,Deployment资源清单文件编写技巧:

apiVersion: apps/v1      版本号
kind: Deployment         说明资源类型
metadata:                属性信息
  name: nginx-deployment   Deployment名字
  labels:                  设置标签
    app: nginx             标签
spec:
  replicas: 3              创建几个副本
  selector:                标签选择器
    matchLabels:           匹配标签
      app: nginx           匹配模板中的标签(与模板中的标签一样)
  template:                定义pod的模板,通过模板创建pod
    metadata:               属性信息
      labels:               设置标签
        app: nginx          模板标签
    spec:                   定义Deployment规格
      containers:           对象列表
      - name: nginx         名字
        image: nginx:1.14.2  镜像名字
        ports:
        - containerPort: 80    暴露端口


五,Deployment管理pod:

扩容,缩容,滚动更新,回滚

如果扩容则将yaml文件中的replicas:3更改为更大的,如果缩容则将数字改为更小的。即可

滚动更新:将yaml文件中的spec内的image改为之前的版本即可。
自定义滚动更新策略:maxSurge和maxUnavailable用来控制滚动更新的更新策略
按数值
1,maxUnavaliable:[0,副本数]
2,maxSurge:[0,副本数]
建议配置
1 maxUnavailable == 0
2,maxSurge == 1
自定义策略:
修改更新策略:maxUnavailable=1,maxSurge=1

六,创建实例

[root@hd1~ ]# cat deploy-demo.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-v1
spec:
  replicas: 3
  selector:
   matchLabels:
    app: myapp
    version: v1
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1

  template:
   metadata:
    labels:
     app: myapp
     version: v1
   spec:
    containers:
    - name: myapp
      image: janakiramm/myapp:v1
      imagePullPolicy: IfNotPresent
      ports:
      - containerPort: 80
 
执行上面的yaml文件

[root@hd1 ~]# kubectl apply -f deploy-demo.yaml

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值