写在前面的话

前面讲解了 Pod / ReplicaSet / Deployment 的资源清单,我们这里谈一下 DaemonSet 的资源清单。

之前说过,DaemonSet 控制器能够保证资源在每个节点上都运行一个,这意味着该服务对于系统资源监控和日志收集非常实用。

DaemonSet 资源清单

和 ReplicaSet 简称 rs,Deployment 简称 deploy 一样,DaemonSet 简称 ds。

其结构如下表:

apiVersion   apps/v1 
kind   Daemonset
metadata   name / namespace / labels 等属性
spec    
 minReadySeconds  最小准备时间
 revisionHistoryLimit  旧版本保留数量
 selector   
  matchExpressions 标签选择器
  matchLabels 标签选择器
 updateStrategy   
  rollingUpdate  
   maxUnavailable升级策略最多不可用
  type RollingUpdate / OnDelete(默认)
 template   
   metadataPod meta
   specPod spec

DaemonSet 示例

制作一个 filebeat 的资源清单:

apiVersion: apps/v1
kind: Deployment
metadata:
name: redis
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: redis
role: logstore
template:
metadata:
labels:
app: redis
role: logstore
spec:
containers:
- name: redis
image: redis:4.0-alpine
ports:
- name: redis
containerPort: 6379 ---
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: ds-demo
namespace: default
spec:
selector:
matchLabels:
app: filebeat
release: stable
template:
metadata:
labels:
app: filebeat
release: stable
spec:
containers:
- name: filebeat-demo
image: ikubernetes/filebeat:5.6.5-alpine
imagePullPolicy: IfNotPresent
env:
- name: REDIS_HOST
value: redis.default.svc.cluster.local

将 redis 端口创建 service,为了 filebeat 能够通过名称解析:

kubectl expose deployment redis --port=6379

在同一个资源清单中有定义多个资源的时候,可以使用 --- 隔开。

资源之间的连接地址,我们可以配置为 service 解析的域地址。

查看资源启动情况:

kubectl get ds -o wide
kubectl get deployment -o wide

结果如图:

【07】Kubernets:资源清单(控制器 - DaemonSet)-LMLPHP

我们可以进入 redis 里面查看:

kubectl exec -it redis-5d47df789f-clph7 -- /bin/sh

这就是 DaemonSet 的简单应用,我们大致先了解他的作用就行。

小结

每一种控制器都有单独的应用场景,只有熟悉之后才能更好的针对业务需求进行选型。

05-28 12:09