K8S资源控制器

什么是控制器controller

        用来控制pod的状态和行为的功能机。

控制器种类

  • ReplicaSet:
  • Deployment:
  • DaemonSet:
  • StateFulet:
  • Job/Cronob:

ReplicaSet

  • 功能:用来确保容器的副本数维持在用户自定义的副本数,通过容器的标签来控制容器。(就版本的RC不支持使用标签)

Deployment

  • 功能:取代了旧版本的RC,提供了声明式的定义功能。
  • 工作原理:通过管理RS来实现。
  • 应用场景:
             - 滚动升级&回滚应用:新建RS,将容器一个一个地转移到新RS下。
             - 扩容,缩容。
             - 暂停,继续(原理与滚动升级相同)。
Deployment模版
[yiki@ ~] vim deployment.yml
apiVersion: extensions/v1beta1  #版本信息
kind: Deployment   
metadata: 
  name: nginx-deployment   #Deployment控制器的名字
  spec:
  replicas: 2   #预期副本数
  template:    #副本pod的模版,以下都是pod信息
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
*attention:deployment控制器提供的式声明式语句,所以要用apply来创建。
[yiki@ ~] kubectl apply -f deployment.yml
*attention:扩容,更新副本数,nginx-deployment式deployment控制器的名字。
[yiki@ ~] kubectl scale deployment nginx-deployment --replicas=3
*attention:更新镜像,控制器/控制器名。
[yiki@ ~] kubectl set image deployment/nginx-deployment nginx=nginx:x.x.x
*attention:回滚,回退到更新之前的版本。
[yiki@ ~] kubectl rollout undo deployment/nginx-deployment
*attention:查看更新情况
[yiki@ ~] kubectl rollout status deployment/nginx-deployment
*attention:查看历史版本
[yiki@ ~] kubectl rollout history deployment/nginx-deployment
*attention:回退到指定的版本,--to-version后面的是在history中查询到的版本的序号
[yiki@ ~] kubectl rollout history deployment/nginx-deployment --to-version=1

DaemonSet

  • 功能:确保某些node上运行一个pod的副本(例如日志搜集daemon等),新加入集群的node也会自动新增pod,node被移除时,相应的pod也会被回收.
  • daemonset不会在主节点上创建pod。

Pod分类

  • 自主式Pod:pod推出后不会再被自动创建。
  • 控制器管理的Pod:再控制器的生命周期里,始终要维持pod的副本数。

Job

  • 功能:负责批处理任务,但只能呢个执行一次。

CronJob

  • 功能:管理基于时间的job,可以周期性的在某一时间或时间段执行任务。
  • 原理:在特定的时间循环创建Job。
cronjob模版
[yiki@ ~] vim cronjoc.yaml

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "* * * * *"    #分时日月周,同crontab
  jobTemplate:     #必须字段,job的模版
    spec:
      template:    #pod模版
        spec:
          restartPolicy: OnFailure
          containers:
          - name: yiki
            image: busybox
            args:
            - /bin/sh
            - -c
            - date; echo Hello from Kubernetes cluster

StateFulet

  • 功能:解决有状态服务的问题。
  • 特点&应用场景:
    –稳定的持久化存储,pod重启调度后还能访问到相同的持久化存储,基于PVC实现。
    –稳定的网络标识,pod重启后,不会iu改变hostname和PodName(基于headless service)。
    –有序部署,有序扩展:在部署和扩展的时候依据定义的顺序依次进行(基于init cotainer)。
    –有序收缩,有序删除:与部署式顺序相反,防止出现报错。

HPA

  • 功能:自动扩展,HPA并不是直接的控制器,更像是控制器的辅助,例如:当集群的CPU使用率达到HPA指标时,HPA让控制器自动扩展10个node。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值