Pod控制器:

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

Pod控制器:

Pv pvc 动态PV

Pod控制器:工作负载。WordLoad,用于管理pod的中间层 ,确保pod资源符合预期的状态

预期状态:

  1. 副本数
  2. 容器的重启策略
  3. 镜像的拉取策略

Pod出现故障时的重启等等

Pod控制器的类型:

  1. replicaset:指定pod的副本的数量

三个组件:

  1. pod副本数
  2. 标签选择器,判断哪个pod归自己管理、
  3. 扩缩容
  1. deployment控制器,他是在replicaset之上,管理无状态应用,目前是最好的控制器,支持滚动更新和回滚,挺供声明式配置
  2. Statefulset:控制器的一种,管理有状态的应用,也可以设置副本数,可以扩缩容,pod的序号是固定的,重启之后,pod的名称也不会发生变化
  3. Daemonset:可以在所有节点部署一个pod,没有副本数,可以限制部署的节点,也是无状态的应用,服务必须是一个守护进程ingress logstash flannel
  4. Jobs:工作pod控制器,执行完成即可退出,不需要重启,不需要重建
  5. Cronjob:周期性的定时任务控制器,不需要在后台持续运行

Pod和控制器之间的关系:

  1. controllers:管理控制器,pod通过label------>selector进行关联

Pod控制器:,kubernetes,linux,docker,运维,容器

每次有更新,都会把旧的pod全部停止,然后再启动新的实力,服务可能会短暂中断

解析:

Strategy:

RollingUpdate:

 MaxSurge:25%

 Maxunavailable:25%

这是deployment的默认更新策略

RollingUpdate:滚动更新

 Maxunavailable:25%升级过程中,新的pod启动好后,销毁旧的pod数量不能超过希望pod的25%

  1. 无状态应用,pod名称是无序的,任务所有pod的都是一体的,共享存储NFS,所有deployment下的pod共享一个存储

Stafulset:有状态的应用,pod的名称是有序的,所有pod都是独立的,存储卷也是独立的

顺序0-n,delete也不会改变pod的序号,扩缩容也是有序的扩缩容

创建一个有状态应用的控制器:

Headless service:无头服务

前提特点:必须要有动态PVC,没有ClusterIP

Pod控制器:,kubernetes,linux,docker,运维,容器

Pod控制器:,kubernetes,linux,docker,运维,容器

apiVersion: v1

kind: Service

metadata:

  name: nginx-web

  labels:

    app: nginx2

spec:

  ports:

  - port: 80

    targetPort: 80

  clusterIP: ""

  selector:

    app: nginx2

---

apiVersion: apps/v1

kind: StatefulSet

metadata:

  name: web

  labels:

    app: nginx2

spec:

  replicas: 3

  selector:

    matchLabels:

      app: nginx2

  serviceName: "nginx-web"

  template:

    metadata:

      labels:

        app: nginx2

    spec:

      containers:

      - name: nginx

        image: nginx:1.22

        volumeMounts:

        - name: html

          mountPath: /usr/share/nginx/html

  volumeClaimTemplates:

  - metadata:

      name: html

    spec:

      accessModes: ["ReadWriteMany"]

      storageClassName: "nfs-client-storageclass"

      resources:

        requests:

          storage: 2Gi

Pod控制器:,kubernetes,linux,docker,运维,容器

Pod控制器:,kubernetes,linux,docker,运维,容器

都有单独的挂载卷

Pod控制器:,kubernetes,linux,docker,运维,容器

Pod控制器:,kubernetes,linux,docker,运维,容器

解析:什么叫无头服务

Headless service:k8s集群当中一种特殊的服务类型,不分配ClusterIP给service,也不会负载均衡到后端的pod,DNS来提供服务的发现和访问。

由于ClusterIP是空的,k8s集群会给每个Headless service中的pod创建一个DNS记录

格式:pod-name Headless service-name namespace.svc.cluster.local

      Web-0     nginx-web     defaults       本地地址(pod的IP地址)

通过dns直接解析访问pod的IP地址

为什么要用无头协议呢?

有序,独立个体

Deployment的pod是没有名称的,随机字符串,无序,他需要一个集中的ClusterIP来集中统一为pod提供网络

Statefulset是有序的,,pod的名称是固定的,重建之后pod的标识也不变,pod名称也是唯一的标识,系统直接通过pod名称解析IP地址

为什么要有volumeClaimCliamTemplates:

有状态的副本把集群都会涉及持久化存储,每个pod是独立的个体,每个pod都有一个自己专用的存储点

Statefulset在定义的时候就规定了每个pod是不能同一个存储卷,所以才需要动态PV

应用场景:

不是固定节点的应用,不是固定IP的应用

更新发布比较频繁

支持自动伸缩,节点资源不够,可以自动伸缩

如何删除呢

Pod控制器:,kubernetes,linux,docker,运维,容器

DaemonSet控制器:

核心机制就是确保每个节点上都运行一个pod副本,当node加入集群,也会为他新增一个pod,当node节点从集群当中移除时,pod也会被回收

如何部署daemonset?

apiVersion: apps/v1

kind: DaemonSet

metadata:

  name: nginx4-daemon

  labels:

    app: nginx4

spec:

  selector:

    matchLabels:

      app: nginx4

  template:

    metadata:

      labels:

        app: nginx4

    spec:

      containers:

      - name: nginx4

        image: nginx:1.22

Pod控制器:,kubernetes,linux,docker,运维,容器

分别部署在三个节点上

Pod控制器:,kubernetes,linux,docker,运维,容器

如何指定节点部署:

apiVersion: apps/v1

kind: DaemonSet

metadata:

  name: nginx4-daemon

  labels:

    app: nginx4

spec:

  selector:

    matchLabels:

      app: nginx4

  template:

    metadata:

      labels:

        app: nginx4

    spec:

      containers:

      - name: nginx4

        image: nginx:1.22

      nodeSelector:

        ingress: "true"

Pod控制器:,kubernetes,linux,docker,运维,容器

写标签

Pod控制器:,kubernetes,linux,docker,运维,容器

Pod控制器:,kubernetes,linux,docker,运维,容器

Pod控制器:,kubernetes,linux,docker,运维,容器

DaemonSet不需要指定调度策略,默认会在每个节点创建一个pod,除非污点

我们可以通过指定的方式,只把daemonset部署在指定的节点,daemonset他是没有副本数的

以上都是基于控制器创建的方式,基于控制器创建的,要彻底删除pod,必须要删除控制器,delete相当于重启(delete慎重使用)

Pod控制器:,kubernetes,linux,docker,运维,容器

Job:

job分为两类,1. job普通任务 2.定时任务crontob

Job的作用,执行只需要一次性的任务

脚本需要执行,数据库迁移,视屏解码等等业务

Pod控制器:,kubernetes,linux,docker,运维,容器

apiVersion: batch/v1

kind: Job

metadata:

  name: centos

spec:

  template:

    spec:

      containers:

      - name: centos

        image: centos:7

        command: ["/bin/bash","-c","test -e /etc/passwd"]

      restartPolicy: Never

  backoffLimit: 4

Pod控制器:,kubernetes,linux,docker,运维,容器

Pod控制器:,kubernetes,linux,docker,运维,容器

Pod控制器:,kubernetes,linux,docker,运维,容器

对于k8s系统来说,既然定义好了job,你只需要执行一次,或者指挥次数即可,不能一直允许

第一点:必须指定的容器策略,onfailure(一次失败,退出码非0,就会重启容器) never(是不管容器的重启策略,按照backoffLimit来尝试job任务的重试次数,到了规定的失败次数,不会再继续执行)

第二点:执行失败的次数也是受限制的,默认是6次

第三点:更新yml文件要先删除任务,再更新,不能动态更新的

面试题:

问:容器化部署,部署过数据库没有?

答:数据库是核心资产,不会容器化部署

前端你们会容器化部署吗?

Nginx可以容器化部署吗,可以

改正确:

报错,已被重命名

Pod控制器:,kubernetes,linux,docker,运维,容器

Pod控制器:,kubernetes,linux,docker,运维,容器

删除pod,执行成功

Pod控制器:,kubernetes,linux,docker,运维,容器

cronjob:

周期性任务,定期执行,和Linux的crontob一模一样,语法一样

分 时 日 月 周

应用场景:定时备份,可以起到一个通知作用,也可以理解为定时监测(结合探针一起做)

Pod控制器:,kubernetes,linux,docker,运维,容器

Pod控制器:,kubernetes,linux,docker,运维,容器

Pod控制器:,kubernetes,linux,docker,运维,容器

始终会保留三个副本:

如何删除呢

Pod控制器:,kubernetes,linux,docker,运维,容器

Pod控制器:,kubernetes,linux,docker,运维,容器

apiVersion: batch/v1beta1

kind: CronJob

metadata:

  name: hello

spec:

  schedule: "*/1 * * * *"

  concurrencyPokicy: Allow

  startingDeadlineSeconds: 15

  successfulJobsHistoryLimit: 3

  jobTemplate:

    spec:

      template:

        spec:

          containers:

          - name: hello

            image: centos:7

            command: ["/bin/bash","-c","date; echo 科比"]

          restartPolicy: Never

总结一下:

五个都是控制器创建的pod

都是依赖于控制器

Deployment:无状态应用,最好用的,也是最多的

StatefulSet:有状态应用,有序的,独立的pod

DaemonSet:无状态应用,不能定义副本数,每个节点都运行一个pod,也可以指定节点

Job:执行一次性的任务,必须要有重启策略,同时默认失败次数是6次,只有失败次数达到,重启才会生效

Cronjob:定时任务,主要就是通知,备份或者探测文章来源地址https://www.toymoban.com/news/detail-795545.html

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

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

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

相关文章

  • Pod控制器

    Pod控制器

    Pod时k8s的最小管理单元,按照Pod创建方式可分为两类: 自助式:k8s直接创建Pod,Pod删除后就销毁,不会重建 控制器创建:k8s通过控制器创建Pod,删除后会自动重建,满足用户需求 不同场景下k8s控制器使用: ReplicationController:比较原始的pod控制器,已经被废弃,由ReplicaSet替代

    2024年02月07日
    浏览(32)
  • Pod控制器:

    Pod控制器:

    Pv pvc 动态PV Pod控制器:工作负载。WordLoad,用于管理pod的中间层 ,确保pod资源符合预期的状态 预期状态: 副本数 容器的重启策略 镜像的拉取策略 Pod出现故障时的重启等等 replicaset:指定pod的副本的数量 三个组件: pod副本数 标签选择器,判断哪个pod归自己管理、 扩缩容

    2024年01月16日
    浏览(5)
  • pod控制器的作用

    pod控制器的作用

    pod控制器的作用 1、动态pv和pvc deployment是控制器 pod空气器:工作负载,workload用于管理pod的中间层,确保podi资源符合预期的状态 预期状态 1、·副本数 2、容器重启策略 3、镜像拉取策略 pod、出现故障时重启等等 pod的控制器类型 1、replicaset:指定pod的副本数量 三个组件: pod的副

    2024年01月16日
    浏览(10)
  • k8s---pod控制器

    k8s---pod控制器

    工作负载,workload用于管理pod的中间层,确保pod资源符合预期的状态。 预期状态: 1、副本数 2、容器重启策略 3、镜像拉取策略 pod出故障的出去等等 1、replicaset:指定pod副本的数量 三个组件:                 1、pod的副本                 2、标签选择器,判断

    2024年01月18日
    浏览(12)
  • k8s之Pod控制器

    k8s之Pod控制器

    Pod控制器,又称之为工作负载(workload),是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试进行重启,当根据重启策略无效,则会重新新建pod的资源。 1、 ReplicaSet : 代用户创建指定数量的pod副本,确保pod副本数量符合预期状态,并且支

    2024年02月13日
    浏览(13)
  • 【K8s】什么是Pod?Pod的调度与控制器

    【K8s】什么是Pod?Pod的调度与控制器

    每个Pod中都可以包含一个或者多个容器 ,这些容器可以分为两类: 1) 用户容器 :用户程序所在的容器,数量可多可少 2) 根容器 :Pause容器,由Kubernetes创建,这是每个Pod都会有的一个根容器,它的作用有两个: 可以以它为依据,评估整个Pod的健康状态 可以在根容器上设

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

    【云原生】k8s之pod控制器

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

    2024年02月13日
    浏览(11)
  • [云原生] K8s之pod控制器详解

    [云原生] K8s之pod控制器详解

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

    2024年03月11日
    浏览(15)
  • Kubernetes 准入控制器

    Kubernetes 准入控制器

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

    2024年02月06日
    浏览(13)
  • kubernetes-控制器

    kubernetes-控制器

    目录 一、replicaset 二、deployment 1、版本迭代 2、回滚 3、滚动更新策略 4、暂停与恢复 三、daemonset 四、statefulset 五、job 六、cronjob ReplicaSet用于保证指定数量的 Pod 副本一直运行 replicaset是通过标签匹配pod replicaset自动控制副本数量,pod可以自愈 回收资源 Deployment 的主要作用是实

    2024年02月06日
    浏览(11)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包