k8s学习-DaemonSet(模板创建更新回滚删除等)

Posted lady_killer9

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s学习-DaemonSet(模板创建更新回滚删除等)相关的知识,希望对你有一定的参考价值。

目录


概念

DaemonSet:守护进程集,在kubectl中缩写为ds,在所有节点或者是匹配的节点上都部署一个Pod,当有节点加入集群时, 也会为他们新增一个 Pod 。
使用DaemonSet的场景

  • 运行集群存储的daemon,比如ceph或者glusterd
  • 节点的CNI网络插件:calico
  • 节点日志的收集:fluentd或者是filebeat
  • 节点的监控:node exporter
  • 服务暴露:部署一个ingress nginx

日志和监控比较经典。
我们安装集群的时候,calico和kube-proxy是daemonset的方式启动的。

模板

apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app: nginx
  name: nginx
spec:
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.15.2
        imagePullPolicy: IfNotPresent
        resources:
          limits:
            memory: 200Mi
          requests:
            cpu: 100m
            memory: 200Mi
      terminationGracePeriodSeconds: 30

相较于Deployment,DaemonSet没有副本数,因为他是一个节点启动一个,容器。

实战

创建

命令

 kubectl create -f ds-test.yaml

结果

查看全部的yaml
命令

 kubectl get ds nginx -n killer -o yaml > ds-all.yaml

结果

apiVersion: apps/v1
kind: DaemonSet
metadata:
  annotations:
    deprecated.daemonset.template.generation: "1"
  creationTimestamp: "2022-06-26T17:16:22Z"
  generation: 1
  labels:
    app: nginx
  name: nginx
  namespace: killer
  resourceVersion: "146918"
  selfLink: /apis/apps/v1/namespaces/killer/daemonsets/nginx
  uid: 50c28ba2-aa39-4fa6-b1c1-97d4b2c7c8f9
spec:
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx:1.15.2
        imagePullPolicy: IfNotPresent
        name: nginx
        resources:
          limits:
            memory: 200Mi
          requests:
            cpu: 100m
            memory: 200Mi
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: 
      terminationGracePeriodSeconds: 30
  updateStrategy:
    rollingUpdate:
      maxUnavailable: 1
    type: RollingUpdate
status:
  currentNumberScheduled: 1
  desiredNumberScheduled: 1
  numberAvailable: 1
  numberMisscheduled: 0
  numberReady: 1
  observedGeneration: 1
  updatedNumberScheduled: 1

不同于deployment的strategy,ds的回滚策略字段和sts的一样,是updateStrategy。

更新

以更新镜像为例
命令

kubectl set image  ds nginx nginx=nginx:1.15.3 -n killer --record

结果

回滚

再更新几次之后,查看下更新记录
命令

kubectl rollout history ds nginx -n killer

结果

回滚到上一版本

命令

kubectl rollout undo ds nginx -n killer

截图

回滚到指定版本

命令

kubectl rollout history ds nginx --revision=2 -n killer

截图

删除

命令

kubectl delete ds nginx -n killer

结果

更多k8s相关内容,请看文章:k8s学习-思维导图与学习笔记

参考

k8s-DaemonSet

CSDN 社区图书馆,开张营业! 深读计划,写书评领图书福利~

以上是关于k8s学习-DaemonSet(模板创建更新回滚删除等)的主要内容,如果未能解决你的问题,请参考以下文章

k8s学习-deployment(模板更新扩缩容回滚等)

K8S 之概念DaemonSet 对象

再战 k8s(12):Deployment 指导下 Pod 的升级和回滚

k8s中的pod控制器之DeploymentDaemonSetStatefulSet

第144天学习打卡( Kubernetes DaemonSet k8s集群组件 k8s的核心概念)

ASP.NET Core on K8S深入学习(3-2)DaemonSet与Job