kubernetes-控制器

这篇具有很好参考价值的文章主要介绍了kubernetes-控制器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、replicaset

二、deployment

1、版本迭代

2、回滚

3、滚动更新策略

4、暂停与恢复

三、daemonset

四、statefulset

五、job

六、cronjob


一、replicaset

ReplicaSet用于保证指定数量的 Pod 副本一直运行

vim rs-example.yml

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: replicaset-example
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx

kubernetes-控制器,kubernetes,kubernetes,容器,云原生

kubectl apply -f rs-example.yml
kubectl get pod --show-labels

kubernetes-控制器,kubernetes,kubernetes,容器,云原生

replicaset是通过标签匹配pod

kubectl label pod replicaset-example-c7bs2 app=myapp --overwrite
kubectl get pod --show-labels

kubernetes-控制器,kubernetes,kubernetes,容器,云原生

kubectl label pod replicaset-example-c7bs2 app=nginx --overwrite
kubectl get pod --show-labels

kubernetes-控制器,kubernetes,kubernetes,容器,云原生

replicaset自动控制副本数量,pod可以自愈

kubectl delete pod replicaset-example-c7bs2
kubectl get pod --show-labels

kubernetes-控制器,kubernetes,kubernetes,容器,云原生

回收资源

kubectl delete -f rs-example.yml

kubernetes-控制器,kubernetes,kubernetes,容器,云原生

二、deployment

Deployment 的主要作用是实现应用程序的无缝升级和回滚
vim deployment-example.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-example
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: myapp:v1


kubectl apply -f deployment-example.yaml

kubernetes-控制器,kubernetes,kubernetes,容器,云原生

1、版本迭代

kubernetes-控制器,kubernetes,kubernetes,容器,云原生

replicaset就是deployment的一个版本

kubernetes-控制器,kubernetes,kubernetes,容器,云原生

2、回滚

vim deployment-example.yaml 

kubectl apply -f deployment-example.yaml
kubectl get all

kubernetes-控制器,kubernetes,kubernetes,容器,云原生

3、滚动更新策略

vim deployment-example.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-example
spec:
  minReadySeconds: 5
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: myapp:v1

kubectl apply -f deployment-example.yaml
kubectl describe deployments.apps deployment-example
kubernetes-控制器,kubernetes,kubernetes,容器,云原生

4、暂停与恢复

暂停,避免触发不必要的线上更新

kubectl rollout pause deployment deployment-example

kubernetes-控制器,kubernetes,kubernetes,容器,云原生

vim deployment-example.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-example
spec:
  minReadySeconds: 5
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  replicas: 6
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: nginx
        resources:
          limits:
            cpu: 0.5
            memory: 200Mi
          requests:
            cpu: 0.5
            memory: 200Mi

kubectl apply -f deployment-example.yaml

kubernetes-控制器,kubernetes,kubernetes,容器,云原生

调整副本数,不受影响

kubernetes-控制器,kubernetes,kubernetes,容器,云原生

但是更新镜像和修改资源并没有触发更新

kubectl rollout history deployment deployment-example

kubernetes-控制器,kubernetes,kubernetes,容器,云原生

恢复后开始触发更新

kubectl rollout resume deployment deployment-example
kubectl rollout history  deployment deployment-example

kubernetes-控制器,kubernetes,kubernetes,容器,云原生

kubernetes-控制器,kubernetes,kubernetes,容器,云原生

回收

kubectl delete -f deployment-example.yaml

kubernetes-控制器,kubernetes,kubernetes,容器,云原生

三、daemonset

Taints(污点)是一种标记,可以应用于节点,用于表示这个节点上的某些条件不适合运行某些 Pod。

kubernetes-控制器,kubernetes,kubernetes,容器,云原生

vim daemonset-example.yml

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: daemonset-example
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      tolerations:
      - effect: NoSchedule
        operator: Exists
      containers:
      - name: nginx
        image: nginx

kubectl apply -f daemonset-example.yml
kubectl get pod -o wide

kubernetes-控制器,kubernetes,kubernetes,容器,云原生

记得回收资源

四、statefulset


当使用StatefulSet时,Pod的名称会包括一个索引,例如web-0,web-1,web-2等,这些索引是按顺序递增的,并且在Pod的生命周期中保持不变

StatefulSet保证每个Pod的名称在整个集群中是唯一的,例如,如果您有一个名为web-0的Pod,任何时候都不能重新创建一个叫做web-0的Pod。

vim statefulset.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: nginx
  serviceName: "nginx"
  replicas: 3
  minReadySeconds: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
          name: web

kubectl apply -f statefulset.yaml
kubectl get pod

kubernetes-控制器,kubernetes,kubernetes,容器,云原生

五、job

Job是用于处理一次性任务的控制器,它可以保证任务成功完成后自动停止。Job中包含一个或多个Pods,在Pods成功完成后便完成任务。如果Pods失败,则Job会重启Pods,直到任务完成。

提前将perl上传至harbor仓库

vim job.yml


apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  completions: 6        //完成任务的Pod数量
  parallelism: 2        //并行执行的Pod数量
  template:
    spec:
      containers:
      - name: pi
        image: perl:5.34.0
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never        //完成后不会重启
  backoffLimit: 4            //当任务执行失败时,最多重试的次数

kubectl apply -f job.yml
kubernetes-控制器,kubernetes,kubernetes,容器,云原生
kubernetes-控制器,kubernetes,kubernetes,容器,云原生
kubernetes-控制器,kubernetes,kubernetes,容器,云原生
记得回收资源

六、cronjob

CronJob是用于处理周期性任务的控制器,它类似于传统的Cron定时任务,可以基于指定的时间或时间间隔来执行任务。CronJob会创建一个Job对象来运行任务,Job对象运行完成后自动被删除。如果Job对象出现错误,CronJob将会自动重启Job对象,直到任务成功完成。

vim cronjob.yml

apiVersion: batch/v1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "* * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            imagePullPolicy: IfNotPresent
            command:
            - /bin/sh
            - -c
            - date; echo Hello from the Kubernetes cluster
          restartPolicy: OnFailure

kubectl apply -f cronjob.yml
kubectl get all
kubectl get pod
kubectl delete -f cronjob.yml

每分钟的每一秒都会执行一次,使用busybox镜像来打印当前时间并输出"Hello from the Kubernetes cluster"

kubernetes-控制器,kubernetes,kubernetes,容器,云原生文章来源地址https://www.toymoban.com/news/detail-738032.html

到了这里,关于kubernetes-控制器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kubernetes 准入控制器

    Kubernetes 极大地提高了当今生产中后端集群的速度和可管理性。由于灵活、可扩展、易用,Kubernetes 已成为容器编排的事实标准。Kubernetes 还提供了一系列保护功能。而 Admission Controllers(准入控制器) 是一组安全相关的插件,启用后能进一步使用 Kubernetes 更高级的安全功能。

    2024年02月06日
    浏览(42)
  • Kubernetes Pod控制器

    Pod控制器及其功用 Pod控制器,又称之为工作负载(workload),是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试进行重启,当根据重启策略无效,则会重新新建pod的资源 Deployment 部署无状态应用 负责创建和管理 ReplicaSet , 维护 Pod 副本数

    2024年02月12日
    浏览(42)
  • 【kubernetes系列】Kubernetes之job和cronjob控制器

    本章节将分享kubernetes中的job控制器和cronjob控制器,这是用于另外两种场景的pod控制器。 对于Deployment、ReplicaSet、ReplicationController等类型的控制器而言,它希望pod保持预期数目、持久运行下去,除非用户明确删除,否则这些对象一直存在,它们针对的是耐久性任务,如web服务

    2024年02月11日
    浏览(48)
  • 【Kubernetes运维篇】RBAC之准入控制器详解

    中文官方参考文档: 1、ResourceQuota是什么? ResourceQuota准入控制器是K8S中内置的准入控制器,默认该控制器是启用状态, 主要功能是限制名称空间下的资源使用 ,防止在一个名称空间下的Pod占用过多的资源, 简单理解就是针对名称空间限制用户资源的使用。 2、限制CPU、内存

    2024年02月16日
    浏览(42)
  • Linux6.39 Kubernetes Pod控制器

    第三章 LINUX Kubernetes Pod控制器 一、Pod控制器及其功用 Pod控制器,又称之为工作负载(workload),是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试进行重启,当根据重启策略无效,则会重新新建pod的资源 二.pod控制器有多种类型 1.Replic

    2024年02月12日
    浏览(43)
  • 【Kubernetes资源篇】DaemonSet控制器入门实战详解

    中文官方文档参考: 1、DaemonSet控制器是什么? Kubernetes中的DaemonSet(简写ds)控制器是一种 用来运行守护进程应用程序的控制器,它确保每个Node节点都运行具有指定配置的 Pod副本,当Node节点的加入或删除DaemonSet控制器会自动创建或删除相应的 Pod副本。 特点: 每个节点只运行

    2024年02月10日
    浏览(69)
  • 5、Kubernetes核心技术 - Controller控制器工作负载

    目录 一、Deployments - 控制器应用 二、Deployment升级回滚和弹性收缩 2.1、创建一个 1.14 版本的 pod 2.2、应用升级 2.3、查看升级状态 2.4、查看历史版本 2.5、应用回滚 2.6、弹性伸缩  三、StatefulSet - 有状态应用 四、DaemonSet - 守护进程 五、Job - 单次任务 六、Cronjob - 定时任务 Deplo

    2024年02月15日
    浏览(38)
  • 【Kubernetes资源篇】Replicaset控制器入门实战详解

    官方中文参考文档: ReplicaSet是k8s中一种资源对象,简写 rs , 用于管理Pod副本数量和健康状态,在 spec.replicas 字段中可以定义Pod副本数量,ReplicaSet会始终保持Pod在指定数量 ,当发现Pod数量大于副本数量时,会移除多出的Pod,当发现Pod小于副本数量会自动创建Pod,使其始终维

    2024年02月09日
    浏览(44)
  • 【云原生】k8s之pod控制器

    Pod 是 Kubernetes 集群中能够被创建和管理的最小部署单元。所以需要有工具去操作和管理它们的生命周期,这里就需要用到控制器了。 Pod 控制器由 master 的 kube-controller-manager 组件提供,常见的此类控制器有 Replication Controller、ReplicaSet、Deployment、DaemonSet、StatefulSet、Job 和 CronJo

    2024年02月13日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包