寫在前面的話redis
前面講解了 Pod / ReplicaSet / Deployment 的資源清單,咱們這裏談一下 DaemonSet 的資源清單。api
以前說過,DaemonSet 控制器可以保證資源在每一個節點上都運行一個,這意味着該服務對於系統資源監控和日誌收集很是實用。app
DaemonSet 資源清單ide
和 ReplicaSet 簡稱 rs,Deployment 簡稱 deploy 同樣,DaemonSet 簡稱 ds。spa
其結構以下表:日誌
ds | ||||
---|---|---|---|---|
apiVersion | apps/v1 | |||
kind | Daemonset | |||
metadata | name / namespace / labels 等屬性 | |||
spec | ||||
minReadySeconds | 最小準備時間 | |||
revisionHistoryLimit | 舊版本保留數量 | |||
selector | ||||
matchExpressions | 標籤選擇器 | |||
matchLabels | 標籤選擇器 | |||
updateStrategy | ||||
rollingUpdate | ||||
maxUnavailable | 升級策略最多不可用 | |||
type | RollingUpdate / OnDelete(默認) | |||
template | ||||
metadata | Pod meta | |||
spec | Pod spec |
DaemonSet 示例code
製做一個 filebeat 的資源清單:blog
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
在同一個資源清單中有定義多個資源的時候,能夠使用 --- 隔開。get
資源之間的鏈接地址,咱們能夠配置爲 service 解析的域地址。
查看資源啓動狀況:
kubectl get ds -o wide
kubectl get deployment -o wide
結果如圖:
咱們能夠進入 redis 裏面查看:
kubectl exec -it redis-5d47df789f-clph7 -- /bin/sh
這就是 DaemonSet 的簡單應用,咱們大體先了解他的做用就行。
小結
每一種控制器都有單獨的應用場景,只有熟悉以後才能更好的針對業務需求進行選型。