linux怎么查看本机内存大小
312
2022-09-09
k8s控制器之DaemonSet
DaemonSet介绍
DaemonSet概述
DaemonSet确保全部node上运行一个Pod的副本。当有node节点加入集群时,也会为他们新增一个Pod 。当有node节点从集群移除时,这些Pod也会被回收。删除DaemonSet将会删除它创建的所有Pod。在每一个node节点上只调度一个Pod,因此无需指定replicas的个数,比如:在每个node上都运行一个日志采集程序,负责收集node节点本身和node节点之上的各个Pod所产生的日志,在每个node上都运行一个性能监控程序,采集该node的运行性能数据。
DaemonSet应用场景
在集群的每个节点上运行存储,比如:glusterd、ceph。 在每个节点上运行日志收集组件,比如:flunentd 、logstash、filebeat等。 在每个节点上运行监控组件,比如:Prometheus。
DaemonSet和Deployment区别
DaemonSet默认会在每个节点上运行有且只有一个pod(不考虑调度策略的情况下)。而Deployment可以在每个节点运行0到多个pod。
DaemonSet应用实践
apiVersion: apps/v1 kind: DaemonSet metadata: name: nginx-ds labels: app: nginx-ds spec: template: metadata: name: nginx-pod labels: app: nginx-pod spec: containers: - name: nginx-c image: nginx:1.21.5 imagePullPolicy: IfNotPresent restartPolicy: Always selector: matchLabels: app: nginx-pod
运行DaemonSet并查看pod信息
kubectl apply -f daemonset.yaml #查看pod信息,发现只有master节点不会创建 kubectl get pod -o wide
通过运行上面的DaemonSet资源文件,发现在所有工作节点都创建了pod,但是master节点没有,因为master节点默认设置了污点,不允许pod调度到该节点,如果业务需要在master节点部署pod的话(例如像监控信息),那么需要修改DaemonSet的资源文件,添加污点容忍度,修改如下:
apiVersion: apps/v1 kind: DaemonSet metadata: name: nginx-ds labels: app: nginx-ds spec: template: metadata: name: nginx-pod labels: app: nginx-pod spec: tolerations: - key: node-role.kubernetes.io/master effect: NoSchedule containers: - name: nginx-c image: nginx:1.21.5 imagePullPolicy: IfNotPresent restartPolicy: Always selector: matchLabels: app: nginx-pod
再次运行发现在master节点也创建了pod,这样所有节点都运行了一个pod。如果我们删除某个节点的pod,会马上在该节点创建一个新的pod,以保证每个节点都运行一个pod。
DaemonSet滚动更新
DaemonSet有两种更新策略类型:
OnDelete:这是向后兼容性的默认更新策略。使用OnDelete更新策略,在更新DaemonSet模板后,只有在手动删除旧的DaemonSet pod时才会创建新的DaemonSet pod。这与Kubernetes1.5或更早版本中DaemonSet的行为相同。 RollingUpdate:使用RollingUpdate更新策略,在更新DaemonSet模板后,旧的DaemonSet pod将被终止,并且将以受控方式自动创建新的DaemonSet pod;默认类型是RollingUpdate。
kubectl edit ds nginx-ds
编辑DaemonSet,修改镜像版本,保存退出,这时各节点的pod将会自动更新成新的镜像。
DaemonSet版本回滚
更新之后,查看更新记录
kubectl rollout history ds nginx-ds
REVISION CHANGE-CAUSE
1
根据版本号可以回滚到指定版本:
#根据版本号查看版本的内容 kubectl rollout history ds nginx-ds --revision=1 kubectl rollout history ds nginx-ds --revision=2 #根据版本号回滚到指定版本 kubectl rollout undo ds nginx-ds --to-revision=1
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~