k8s之DaemonSet
DS介绍
DS类型的控制器可以保证集群中的每一台(或指定)节点上都运行一个副本,一般适用于日志收集,节点监控等场景。也就是说,如果一个pod提供的功能是节点级别的(每个节点都需要且只需要一个),那么这类pod就适合使用DS类型的控制器创建
DaemonSet控制器的特点
- 每当向集群中添加一个节点时,指定的pod副本也将添加到该节点上
- 当节点从集群中移除时,pod就被垃圾回收
DaemonSet资源清单文件
apiVersion: apps/v1 #版本号kind: DaemonSet #类型
metadata: #元数据
name:
namespace:labels:
controller: daemonset
spec: #详情描述
revisionHistoryLimit:
3 #保留历史版本updateStrategy: #更新策略
type: RollingUpdate #滚动更新策略
rollingUpdate: #滚动更新
maxUnavailable:
1 #最大不可用状态的pod值,可以为百分比,也可以为整数selector: #选择器,通过它指定该控制器管理哪些pod
matchLabels: #labels匹配规则
app: nginx
-podmatchExpressions: #Expressions匹配规则
- {key: app, operator: In, values: [nginx-pod]}template: #模板,当副本数量不足时,会根据下面的模板创建pod副本
metadata:
labels:
app: nginx
-podspec:
containers:
- name: nginximage: nginx:
1.17.1ports:
- containerPort: 80
使用DS
创建pc-daemonset.yaml,内容如下
apiVersion: apps/v1kind: DaemonSet
metadata:
name: pc
-daemonsetnamespace: devspec:
selector:
matchLabels:
app: nginx
-podtemplate:
metadata:
labels:app: nginx
-podspec:
containers:
- name: nginximage: nginx:
1.17.1
使用配置文件
[root@master ~]# vim pc-daemonset.yaml[root@master
~]# kubectl create -f pc-daemonset.yamldaemonset.apps
/pc-daemonset created[root@master
~]# kubectl get ds pc-daemonset -n devNAME DESIRED CURRENT READY UP
-TO-DATE AVAILABLE NODE SELECTOR AGEpc
-daemonset 22222 <none> 36s
查看pod,可以发现node1和node2上都配置了daemonset
[root@master ~]# kubectl get pod -n dev -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pc
-daemonset-bqrk7 1/1 Running 0 109s 10.244.1.2 node1 <none> <none>pc
-daemonset-dx4qh 1/1 Running 0 109s 10.244.2.2 node2 <none> <none>
以上是 k8s之DaemonSet 的全部内容, 来源链接: utcz.com/z/519829.html