K8s: 控制器之DaemonSet对象和调度

k8s 控制器:Daemonset 和 Job k8s Job 阅读详情

DaemonSet


1 )概述

  • 为了适配于不同的应用的部署场景K8s就提出了这个 DaemonSet 顾名思义就是后台进程的意思
  • docker在运行的时候加一个参数 -d 意思就是后台运行
  • 因为我们集群里面有很多任务是必须要在后台运行的
    • 比如说,存储的进程,ceph 或 glusterd
    • ceph 是一种开源的分布式多样存储的一个开源软件
    • 它能够把集群的这些用于存储的Service以这种服务的方式跑在K8s集群上
    • 底层它是一个分布式存储这么一个架构
    • 然后另外的应务场景景就是日志, 如:logstash 或 flunentd
    • 每一种应用都会输出各种各样的日志,包括集群自己本身的日志
    • 它就适合于以这种DaemonSet的方式运行
    • 还有就是监控的场景,包括监控的节点,如:Prometheus Node Exporter 或 collectd
  • 所以,K8s所有的功能的设计围绕的都是一个主题
    • 就是让云原生的应用,微服务在 K8s 上运行的更好
    • 它所有的功能都是为了这个目的去设计的
    • 每个功能,我们都应该去了解,它为什么会出现,以及解决了什么问题

2 )应用

  • $ vi ds-demo1.yaml

    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
      name: fluentd-elasticsearch
      namespace: kube-system # 注意在命名空间里
      labels:
        k8s-app: fluentd-logging
    spec:
      selector:
        matchLabels: # DaemonSet 会通过这个 label 来寻找所有包含 fluentd-elasticsearch 名称的pod
          name: fluentd-elasticsearch
      template:
        metadata:
          labels:
            name: fluentd-elasticsearch
        spec:
          tolerations: # 容忍度,提供了一种规则匹配,比如是否可以在主节点上运行
          # this toleration is to have the daemonset runnable on master nodes
          # remove it if your masters can't run pods
          - key: node-role.kubernetes.io/master
            effect: NoSchedule # 不允许在主节点运行
          containers:
          - name: fluentd-elasticsearch
            image: quay.io/fluentd_elasticsearch/fluentd:v2.9.0
            resources:
              limits:
                memory: 200Mi
                cpu: 100m
                memory: 200Mi
            volumeMounts: # 挂载主机的一些目录
            - name: varlog
              mountPath: /var/log
            - name: varlibdockercontainers
              mountPath: /var/lib/docker/containers
              readOnly: true
          terminationGracePeriodSeconds: 30
          volumes: # pv 挂载卷
          - name: varlog
            hostPath: # 主机的路径
              path: /var/log
          - name: varlibdockercontainers
            hostPath:
              path: /var/lib/docker/containers
    
  • $ kubectl apply -f ds-demo1.yaml

    daemonset.apps/fluentd-elasticsearch created
    
  • $ kubectl -n kube-system describe daemonset fluentd-elasticsearch

    Name:           fluentd-elasticsearch
    Selector:       name=fluentd-elasticsearch
    Node-Selector:  <none>
    Labels:         k8s-app=fluentd-logging
    Annotations:    deprecated.daemonset.template.generation: 1
    Desired Number of Nodes Scheduled: 3
    Current Number of Nodes Scheduled: 3
    Number of Nodes Scheduled with Up-to-date Pods: 3
    Number of Nodes Scheduled with Available Pods: 3
    Number of Nodes Misscheduled: 0
    Pods Status:  3 Running / 0 Waiting / 0 Succeeded / 0 Failed
    Pod Template:
      Labels:  name=fluentd-elasticsearch
      Containers:
      fluentd-elasticsearch:
        Image:      quay.io/fluentd_elasticsearch/fluentd:v2.9.0
        Port:       <none>
        Host Port:  <none>
        Limits:
          cpu:        100m
          memory:     200Mi
        Environment:  <none>
        Mounts:
          /var/lib/docker/containers from varlibdockercontainers (ro)
          /var/log from varlog (rw)
      Volumes:
      varlog:
        Type:          HostPath (bare host directory volume)
        Path:          /var/log
        HostPathType:
      varlibdockercontainers:
        Type:          HostPath (bare host directory volume)
        Path:          /var/lib/docker/containers
        HostPathType:
    Events:
      Type    Reason            Age    From                  Message
      ----    ------            ----   ----                  -------
      Normal  SuccessfulCreate  4m14s  daemonset-controller  Created pod: fluentd-elasticsearch-pf8d5
      Normal  SuccessfulCreate  4m14s  daemonset-controller  Created pod: fluentd-elasticsearch-nm682
      Normal  SuccessfulCreate  4m14s  daemonset-controller  Created pod: fluentd-elasticsearch-stmlc
    
  • $ kubectl get all -n kube-system

    NAME                                     READY   STATUS    RESTARTS       AGE
    pod/coredns-7f6cbbb7b8-4vjd6             1/1     Running   6 (16h ago)    6d4h
    pod/coredns-7f6cbbb7b8-h895p             1/1     Running   6 (16h ago)    6d4h
    pod/etcd-master.k8s                      1/1     Running   14 (16h ago)   6d4h
    pod/fluentd-elasticsearch-nm682          1/1     Running   0              5m44s
    pod/fluentd-elasticsearch-pf8d5          1/1     Running   0              5m44s
    pod/fluentd-elasticsearch-stmlc          1/1     Running   0              5m44s
    pod/kube-apiserver-master.k8s            1/1     Running   13 (16h ago)   6d4h
    pod/kube-controller-manager-master.k8s   1/1     Running   26 (16h ago)   6d4h
    pod/kube-proxy-78gzp                     1/1     Running   7 (16h ago)    6d4h
    pod/kube-proxy-7rwvp                     1/1     Running   7 (16h ago)    6d4h
    pod/kube-proxy-946qv                     1/1     Running   6 (16h ago)    6d4h
    pod/kube-scheduler-master.k8s            1/1     Running   25 (16h ago)   6d4h
    
    NAME               TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE
    service/kube-dns   ClusterIP   10.1.0.10    <none>        53/UDP,53/TCP,9153/TCP   6d4h
    
    NAME                                   DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
    daemonset.apps/fluentd-elasticsearch   3         3         3       3            3           <none>                   5m44s
    daemonset.apps/kube-proxy              3         3         3       3            3           kubernetes.io/os=linux   6d4h
    
    NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/coredns   2/2     2            2           6d4h
    
    NAME                                 DESIRED   CURRENT   READY   AGE
    replicaset.apps/coredns-7f6cbbb7b8   2         2         2       6d4h
    
  • $ kubectl -n kube-system describe pod/fluentd-elasticsearch-stmlc

    Name:         fluentd-elasticsearch-stmlc
    Namespace:    kube-system
    Priority:     0
    Node:         master.k8s/10.211.55.13
    Start Time:   Tue, 23 Apr 2024 15:54:09 +0800
    Labels:       controller-revision-hash=6b74446c5d
                  name=fluentd-elasticsearch
                  pod-template-generation=1
    Annotations:  <none>
    Status:       Running
    IP:           10.244.0.2
    IPs:
      IP:           10.244.0.2
    Controlled By:  DaemonSet/fluentd-elasticsearch
    Containers:
      fluentd-elasticsearch:
        Container ID:   docker://f581721a1865d49242ef4359b377cb71606d2263283502cc04f4f2b7cb643d95
        Image:          quay.io/fluentd_elasticsearch/fluentd:v2.9.0
        Image ID:       docker-pullable://quay.io/fluentd_elasticsearch/fluentd@sha256:54716d825ec9791ffb403ac17a1e82159c98ac6161e02b2a054595ad01aa6726
        Port:           <none>
        Host Port:      <none>
        State:          Running
          Started:      Tue, 23 Apr 2024 15:54:55 +0800
        Ready:          True
        Restart Count:  0
        Limits:
          cpu:     100m
          memory:  200Mi
        Requests:
          cpu:        100m
          memory:     200Mi
        Environment:  <none>
        Mounts:
          /var/lib/docker/containers from varlibdockercontainers (ro)
          /var/log from varlog (rw)
          /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-z5jjq (ro)
    Conditions:
      Type              Status
      Initialized       True
      Ready             True
      ContainersReady   True
      PodScheduled      True
    Volumes:
      varlog:
        Type:          HostPath (bare host directory volume)
        Path:          /var/log
        HostPathType:
      varlibdockercontainers:
        Type:          HostPath (bare host directory volume)
        Path:          /var/lib/docker/containers
        HostPathType:
      kube-api-access-z5jjq:
        Type:                    Projected (a volume that contains injected data from multiple sources)
        TokenExpirationSeconds:  3607
        ConfigMapName:           kube-root-ca.crt
        ConfigMapOptional:       <nil>
        DownwardAPI:             true
    QoS Class:                   Guaranteed
    Node-Selectors:              <none>
    Tolerations:                 node-role.kubernetes.io/master:NoSchedule
                                node.kubernetes.io/disk-pressure:NoSchedule op=Exists
                                node.kubernetes.io/memory-pressure:NoSchedule op=Exists
                                node.kubernetes.io/not-ready:NoExecute op=Exists
                                node.kubernetes.io/pid-pressure:NoSchedule op=Exists
                                node.kubernetes.io/unreachable:NoExecute op=Exists
                                node.kubernetes.io/unschedulable:NoSchedule op=Exists
    Events:
      Type    Reason     Age    From               Message
      ----    ------     ----   ----               -------
      Normal  Scheduled  8m14s  default-scheduler  Successfully assigned kube-system/fluentd-elasticsearch-stmlc to master.k8s
      Normal  Pulling    8m12s  kubelet            Pulling image "quay.io/fluentd_elasticsearch/fluentd:v2.9.0"
      Normal  Pulled     7m28s  kubelet            Successfully pulled image "quay.io/fluentd_elasticsearch/fluentd:v2.9.0" in 44.107259915s
      Normal  Created    7m28s  kubelet            Created container fluentd-elasticsearch
      Normal  Started    7m28s  kubelet            Started container fluentd-elasticsearch
    
    • 可以看到这个pod被分配到 master.k8s 节点上了,说明 DaemonSet 可以部署到 master 节点
    • 同时,也可以部署到其他节点,它 和 Deployment 的重要区别是
      • DaemonSet 在 node 节点的进程只有一个
      • Deployment 在 node 节点的进程副本可以有很多
    • 所以,每个节点部署一个 DaemonSet 用来收集node上的所有事情

3 )DaemonSet 必须字段

  • 和所有其他 K8s 配置一样,DaemonSet 需要 apiVersion 、 kind 和 metadata 字段
  • 有关配置文件的基本信息,DaemonSet 对象的名称必须是一个合法的,DaemonSet 也需要一个.spec 配置段

4 )DaemonSet Pod模板

  • .spec 中唯一必需的字段是 .spec.template
  • .spec.template 是一个Pod 模板,除了它是嵌套的,因而不具有 apiVersion或kind字段之外,它与Pod具有相同的 schema
  • 除了Pod必需字段外,在 DaemonSet中的Pod模板必须指定合理的标签
  • 在 DaemonSet 中的 Pod 模板必须具有一个值为 Always 的 RestartPolicy, 当该值未指定时,默认是 Always

5 )DaemonSet Pod选择器

  • .spec.selector 字段表示 Pod 选择器,它与 Job 的 .spec.selector 的作用是相同的
  • 从 K8s 1.8 开始,必须指定与 .spec.template 的标签匹配的 Pod 选择器
  • 用户不指定 Pod 选择器时,该字段不再有默认值
  • 选择器的默认值生成结果与 kubectl apply 不兼容
  • 此外,一旦创建了 DaemonSet,它的 .spec.selector 就不能修改
  • 修改 Pod 选择器可能导致 Pod 意外悬浮,并且这对用户来说是费解的
  • spec.selector 是一个对象,如下两个字段组成:
    • matchLabels - 与 ReplicationController的 .spec.selector 的作用相同
    • matchExpressions - 允许构建更加复杂的选择器,可以通过指定 key、value 列表以及将 key 和 value 列表关联起来的 operator
  • 当上述两个字段都指定时,结果会按逻辑与(AND)操作处理
  • 如果指定了 .spec.selector ,必须与 .spec.template.metadata.labels 相匹配
    • 如果与后者不匹配,则 DeamonSet 会被 API 拒绝
  • 另外,通常不应直接通过另一个 DaemonSet 或另一个工作负载资源(例如 ReplicaSet) 来创建其标签与该选择器匹配的任何 Pod
  • 否则,DaemonSet 控制器会认为这些 Pod 是由它创建的, K8s 不会阻止你这样做
  • 你可能要执行此操作的一种情况是,手动在节点上创建具有不同值的 Pod 进行测试

6 )DaemonSet 仅在某些节点上运行 Pod

  • 如果指定了 .spec.template.spec.nodeSelector
  • DaemonSet 控制器将在能够与 Node 选择器 匹配的节点上创建 Pod
  • 类似这种情况,可以指定 .spec.template.spec.affinity
  • 之后 DaemonSet 控制器将在能够与节点亲和性 匹配的节点上创建 Pod
  • 如果根本就没有指定,则 DaemonSet Controller 将在所有节点上创建 Pod

DaemonSet的调度


1 )概述

  • 我们知道 DaemonSet,它是确保每个节点都运行该pod的一个副本
  • 就是说节点上的后台任务,就只能一个副本, 如果我的后台任务在每个节点上跑两个副本
  • 比如说,日志收集跑两个副本,这个数据就重复,然后呢,数据库里面会多很多冗余的记录
  • 所以,这并不是用户期望的,所以DaemonSet的一个重要的任务就是保证节点上运行一个pod
  • 现在我们看下 Daemon Pods 是如何被调度的

2 )通过默认调度器调度

  • DaemonSet 确保所有符合条件的节点都运行该 Pod 的一个副本

  • 通常,运行 Pod 的节点由 K8s 调度器选择

  • 不过,DaemonSet Pods 由 DaemonSet 控制器创建和调度

  • 这就带来了以下问题:

    • Pod 行为的不一致性:
      • 正常 Pod 在被创建后等待调度时处于 Pending 状态
      • DaemonSet Pods 创建后不会处于 Pending 状态下
      • 这使用户感到困惑。
    • [Pod 抢占] 由默认调度器处理
      • 启用抢占后,DaemonSet 控制器将在不考虑 Pod 优先级
      • 和 抢占 的情况下制定调度决策
  • ScheduleDaemonSetPods 允许您使用默认调度器而不是 DaemonSet 控制器来调度 DaemonSets

  • 方法是将 NodeAffinity 条件而不是 .spec.nodeName 条件添加到 DaemonSet Pods

  • 默认调度器接下来将 Pod 绑定到目标主机, 如果 DaemonSet Pod 的节点亲和性配置已存在,则被替换

  • DaemonSet 控制器仅在创建或修改 DaemonSet Pod 时执行这些操作, 并且不会更改 DaemonSet 的 spec.template

    nodeAffinity: # 节点亲和,可以供节点选择
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchFields:
          - key: metadata.name
            operator: In
            values:
            - target-host-name
    
  • 此外,系统会自动添加 node.kubernetes.io/unschedulable:NoSchedule 容忍度到 DaemonSet Pods

  • 在调度 DaemonSet Pod 时,默认调度器会忽略 unschedulable 节点

3 )与 Daemon Pods 通信3种方式

  • 与 DaemonSet 中的 Pod 进行通信的几种可能模式如下:
    • NodeIP 和已知端口
      • DaemonSet 中的 Pod 可以使用 hostPort,从而可以通过节点 IP 访问到Pod
      • 客户端能通过某种方法获取节点 IP 列表,并且基于此也可以获取到相应的端口
    • DNS
      • 创建具有相同 Pod 选择器的无头服务通过使用 endpoints 资源
      • 或从 DNS 中检索到多个 A 记录来发现 DaemonSet
      • 比如: $ kubectl -n kube-system get pod | grep dns
        coredns-7f6cbbb7b8-4vjd6             1/1     Running   6 (17h ago)    6d5h
        coredns-7f6cbbb7b8-h895p             1/1     Running   6 (17h ago)    6d5h
        
      • 上面 coredns 服务就会记录集群中所有的A记录
    • Service
      • 创建具有相同 Pod 选择器的服务
      • 并使用该服务随机访问到某个节点上的守护进程(没有办法访问到特定节点)

4 )更新DaemonSet

  • 如果节点的标签被修改,DaemonSet 将立刻向新匹配上的节点添加Pod, 同时删除不匹配的节点上的Pod
  • 可以修改 DaemonSet 创建的 Pod,不过并非Pod的所有字段都可更新
  • 下次当某节点(即使具有相同的名称)被创建时,DaemonSet 控制器还会使用最初的模板
  • 可以删除一个 DaemonSet。如果使用 kubectl 并指定 --cascade=false 选项,则Pod将被保留在节点上
  • 接下来如果创建使用相同选择器的新 DaemonSet,新的 DaemonSet 会收养已有的 Pod
  • 如果有Pod 需要被替换,DaemonSet 会根据其 updateStrategy 来替换

5 )DaemonSet 的替代方案

  • init 脚本
    • 直接在节点上启动守护进程(例如使用 init 、 upstartd 或 systemd )的做法当然是可行的
    • 不过,基于 DaemonSet 来运行这些进程有如下一些好处:
      • 像所运行的其他应用一样,DaemonSet 具备为守护进程提供监控和日志管理的能力
      • 为守护进程和应用所使用的配置语言和工具(如 Pod 模板、 kubectl )是相同的
      • 在资源受限的容器中运行守护进程能够增加守护进程和应用容器的隔离性
      • 然而,这一点也可以通过在容器中运行守护进程但却不在 Pod 中运行之来实现
      • 例如,直接基于 Docker 启动

6 )和Deployments的区别

  • DaemonSet 与 Deployments非常类似, 它们都能创建 Pod
  • 并且 Pod 中的进程都不希望被终止(例如,Web 服务器、存储服务器)
  • 建议为无状态的服务使用 Deployments,比如前端服务
  • 对这些服务而言,对副本的数量进行扩缩容、平滑升级,比精确控制 Pod 运行在某个主机上要重要得多
  • 当需要Pod 副本总是运行在全部或特定主机上,并需要它们先于其他 Pod 启动时,应该使用 DaemonSet
k8s之控制器 控制器也是管理pod的一种手段自主式pod:pod退出或意外关闭后不会被重新创建控制器管理的 Pod:在控制器的生命周期里,始终要维持 Pod 的副本数目Pod控制器是管理pod的中间层,使用Pod控制器之后,只需要告诉Pod控制器,想要多少个什么样的Pod就可以了,它会创建出满足条件的Pod并确保每一个Pod资源处于用户期望的目标状态。如果Pod资源在运行中出现故障,它会基于指定策略重新编排Pod。 阅读详情

相关推荐

kubernetes(k8s) :控制器(ReplicaSet、Deployment、DaemonSet、job、Cronjob)

文章目录1.控制器pod分类和控制器类型1.replication、controller和reolicaset控制器2.Deployment控制器3.DaemonSet控制器4.StatefulSet控制器5.job、cronjob和hpa控制器2. 控制器的部署和实例2.1 ReplicaSet应用2.2 Deployment应用2.3 DaemonSet应用2.4 job控制器2.5 Cronjob应用 1.控制器 Pod控制器是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现

weixin_43936969的博客 976

K8S系列(六)DaemonSet详解

下面介绍第二个控制器:**DaemonSet。**同样的问题:如果我们没有 DaemonSet 会怎么样?下面有几个需求:DaemonSet 也是 Kubernetes 提供的一个 default controller,它实际是做一个守护进程的控制器,它能帮我们做到以下几件事情:这里用 fluentd 来做例子。DaemonSet 最常用的点在于以下几点内容:首先是存储,GlusterFS 或者 Ceph 之类的东西,需要每台节点上都运行一个类似于 Agent 的东西,DaemonSet 就能很好地满足这个

林木森的博客 1万+

【K8S系列】深入解析DaemonSet

Kubernetes是一个容器编排平台,其中DaemonSet是Kubernetes中的一个重要概念。DaemonSet是一种控制器,用于在集群内运行一组Pod,并确保每个节点上都有一个Pod副本在运行。 1.2 常用特性 下面是一些DaemonSet的常用特性: 只在特定的节点上运行Pod:可以使用NodeSelector或者NodeAffinity来限制DaemonSet的Pod只在特定的节点上运行。 根据节点的标签更新Pod:如果在集群中添加或删除了节点,Kubernetes会通过DaemonS

颜淡慕潇 3万+

【k8s】deamonset文件和说明

在Kubernetes的`DaemonSet`配置文件的`template`下的`spec`部分,可以指定`serviceAccount`或`serviceAccountName`。据我所知截止到我的知识截止点,`DaemonSet`中是不具有`serviceAccount`字段的,只有`serviceAccountName`字段。是Pod使用的Service Account的名称,Pod与Kubernetes API进行交互时,例如拉取配置信息,更新资源状态等,需要对API请求进行授权。

我的笔记本 5961

k8s中控制器使用详解

k8s控制器

congge 7336

【Kubernetes】 DaemonSet 详解

在 Kubernetes 集群中,通常需要在每个节点上运行守护进程来监视节点健康状态、收集日志等,这些守护进程通常称为系统级守护进程,如 Kubernetes Cluster Autoscaler 和 Kubernetes DNS。使用 Deployment 或 StatefulSet 可以创建 Pod,这些 Pod 可以被调度到任何节点上运行,但是在某些情况下,需要确保每个节点上都运行着一个 Pod 副本 版本,即需要使用 DaemonSet。

陈书予 4101

一文搞懂什么是 DaemonSets

DeamonSets类似于Replica Sets,因为它们可以帮助我们部署多个pod实例,但是它在Kubernetes集群的每个节点上只运行一个pod副本。 DaemonSets确保所有(或部分)节点运行Pod的副本。随着节点被添加到集群中,pod也被添加到集群中,当节点从集群中移除时,这些pod将会被删除。

分享云原生大数据技术和个人成长、职业发展相关内容 723

Anaconda离线创建python环境

既然是离线创建python环境,就需要有一个已经创建好的python环境。所以我们有两台win10的机器,分别是A和B。两台机器都安装了anaconda。其中A可以连网,因此我们在A上创建好一个python2.7的环境py27,然后将py27移植(安装)到B上。B连不连网都无所谓。 一、机器上A上创建python2.7的环境py27 有两种方法: 方法1:使用Anaconda的图形界面。首先,点击Environments->Create,然后输入要创建的环境名称"py27",然后选择2.7,如图

FY_2018的博客 6787

K8s问答题(二)

答案:Deployment控制器通过管理ReplicaSet控制器来工作,并向 Pod 提供声明式的更新以及许多其它有用的功能,常见的用途是不停机更新,在需要对应用进行维护与升级时,直接创造新的具有升级后应用的Pod,接入连接的用户,直到以前Pod里旧容器的用户全部退出时,将旧的容器进行销毁,就完成了不中断服务的更新。答案:ReplicaSet是复制集,可以生成多个Pod的副本,目的是维护一组在任何时候都处于运行状态的 Pod 副本的稳定集合,用来保证给定数量的,完全相同的Pod的可用性。

zl3488977451的博客 346

Vercel部署个人博客

先去注册一个账号,建议注册一个Github账号后,使用Github账号来登录Vercel。vercel 部署静态资源网站极其方便简单,并且有可观的访问速度,最主要的是免费部署。此时项目已经成功搭建完毕了,点击图片即可跳转到 vercel 所提供的二级域名访问。然后可以直接拉取我的仓库,所有已经配置好了,可以直接使用,建议fork成自己的!然后修改dns就行,注意vercel提供的域名可能访问不了,需要自己绑定!如果有自己的域名,还可以在 vercel 中进行设置。进入Vercel官网。

醉里博客202271.xyz 2363

高项49个过程,输入、工具技术、输出的思维导图

为了制定项目章程的管理方法主要是采用了数据收集技术,例如通过头脑风暴,通过召集主题专家和团队成员收集信息、解决方案,并在短时间内获得大量创意,并对大量创意进行分析和排序,选出最优化最适合本项目方案,并对项目成员的不同差异观点,进行了引导和对冲突的管理,最终有助于项目干系人的目标、成功标准的内容达成一致意见,形成完善的项目章程。在本过程中得到项目章程,在制定项目章程中需要包括信息有:项目名称、项目目标、项目总里程碑进度表、项目经理、主要干系人及财务预算信息。本过程在仅开展一次,或仅在项目的预定义点开展。

Legend_Jiang的博客 6185

K8S-daemonset控制器

DaemonSet概述与应用 DaemonSet是Kubernetes控制器,确保集群每个节点运行相同Pod副本,自动随节点增减同步Pod。典型应用场景包括节点级存储(如ceph)、日志收集(如fluentd)和监控组件(如Prometheus)。与Deployment不同,DaemonSet每个节点仅运行一个副本。 资源清单编写要点 核心字段:apiVersion(apps/v1)、kind(DaemonSet)、metadata(name/labels)、spec(定义Pod模板) 关键配置:updat

2501_92915057的博客 976

医药行业SAP序列号管理深度解析:如何满足GMP合规要求

本文深度解析了医药行业如何利用SAP序列号管理构建满足GMP合规要求的数字化追溯体系。文章详细阐述了SAP序列号在实现从生产到患者全流程“一物一码”精准追溯中的核心作用,并探讨了其与质量管理、冷链监控等系统的关键集成配置,为医药企业应对严格监管、保障产品质量与安全提供了切实可行的技术方案。

backprop5master的博客 656

【K8s】专题四(5):Kubernetes 控制器之 DaemonSet

Kubernetes 专题 - Kubernetes 控制器之 DaemonSet

运维、实施交付领域知识交流 1382

Coze工作流实战:Coze一键生成沉浸式历史故事视频

【coze工作流实战】一键生成火爆的沉浸式历史故事视频!短短3分钟,顶替你3天的工作量!

bickys的博客 1004

【WRF-FDDA】观测 Obs nudging 的配置与使用说明(中)

WRF-FDDA

WW、forever的博客 282

kubernetes(k8s):控制器-Deployment、StatefulSet、DaemonSet、job、cronjob

StatefulSet,常用于部署有状态的且需要有序启动的应用程序。Kubernetes 的 StatefulSet 是专为管理有状态应用设计的控制器,通过提供稳定的网络标识持久化存储及,解决了有状态应用在集群化部署中的核心痛点。第一个应用完成启动后,才会启动第二个应用,依此类推。

qq_28131747的博客 709

EtherCAT从站EEPROM组成信息详解(2):字8-15产品标识区

以实际的从站EEPROM数据为例,参照EtherCAT的SII规范,详细分析了从站EEPROM字8-字15的产品标识区内容组成。

kevin1499的博客 719

k8s工作负载控制器--DaemonSet

k8s工作负载控制器--DaemonSet

misakivv的博客 1510

【科研数据获取】根据Excel表个中的企业/公司信息批量获取经纬度坐标,并进行地图可视化

批量获取企业/公司的经纬度坐标,并进行地图可视化1 需求2 实现途径3 需求逐步实现 1 需求 在做项目的时候,老板或者项目答辩时候甲方最喜欢看到的就是可视化结果,尤其是涉及到地图可视化。很多时候会遇到企业/公司的数据,想要做地图可视化,必不可少的就是要获取它们具体地址:第一种就是像查户口一样精准一下具体的城镇街道,还有一种就是经纬度信息,前一种属于文字内容往往用于管理方面,第二种数字信息多用于数据处理与分析。 2 实现途径 获取地理信息数据,自然需要使用到地图的功能,这里直接采用百度地图的拾取坐标系统,

lys_828的博客 2337

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

K8S之DaemonSet控制器

DaemonSet控制器能够确保K8S集群所有的节点都分别运行一个相同的pod副本,适用于在集群的每个节点上运行存储、每个节点上运行日志收集、每个节点上运行监控

weixin_40364776的博客 1351

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

K8S DaemonSet 控制器

DaemonSet 控制器的核心功能是保证 Kubernetes 集群中所有的节点都运行一个相同的 Pod 副本。当向集群中添加新的节点时,这个新节点会自动创建对应的 Pod 副本;当节点从集群中移除时,相关的 Pod 也会被自动删除。此外,删除 DaemonSet 时,它所创建的所有 Pod 也会随之被删除。

2503_92914039的博客 955

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

K8s 守护进程之 DaemonSet:深入解析

DaemonSet是Kubernetes中一个重要的资源对象,它确保每个节点上都运行一个Pod副本,常用于部署需要在每个节点上运行的守护进程或服务,如日志收集、节点监控等。本文将全面解析DaemonSet的基本概念、工作原理和高级特性。

博客虽小,世界尽在其中 3927

K8s基础7——DaemonSet控制器、Job批处理调度、Cronjob定时调度

1、Daemonset控制器“雨露均沾”。 2、Job批处理调度。 3、Cronjob定时调度。

百慕卿君博客 1213

Kubernetes 控制器深度解析:DaemonSet

DaemonSet控制器的设计理念是“节点伴随式部署”:当集群新增节点时,Daemonset会自动在新节点上创建指定Pod;当节点从集群移除时,对应的Pod也会被自动删除;若删除DaemonSet,其管理的所有Pod会被批量清理。核心特征单节点单副本:每个节点最多运行一个 DaemonSet Pod(避免资源浪费与功能冲突);节点自动适配:无需手动调度,DaemonSet 自动感知节点变化并同步 Pod 状态;节点级资源绑定:Pod 通常需挂载节点本地资源(如/var/log/dev。

Myhandsome11的博客 1029
上一篇: K8s: 控制器之StatefulSets对象
下一篇: K8s: 控制器之Job对象
Wang's Blog
博客等级 码龄12年 7433粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值