「Kubernetes 實作手冊:基礎入門篇」學習筆記(十六):認識 DaemonSet 資源

前言

本文為「Kubernetes 實作手冊:基礎入門篇」課程的學習筆記。

簡介

DaemonSet 確保全部(或者某些)節點上運行某一個 Pod 的副本。當有節點加入叢集時,也會為他們新增一個 Pod。當有節點從叢集移除時,這些 Pod 也會被回收。刪除 DaemonSet 將會刪除它創建的所有 Pod。

使用情境如:

  • 在每個節點上運行儲存空間守護行程
  • 在每個節點上運行日誌收集守護行程
  • 在每個節點上運行監控守護行程

實作

以下使用 kind 的環境。

1
2
3
cd vagrant/kind
vagrant up
vagrant ssh

首先,查看範例資料夾中的 DaemonSet 配置檔。

1
cat introduction/ds/basic.yaml

以下是一個描述 DaemonSet 的 YAML 範例檔,其中 template 的部分其實就是 Pod 的配置檔的格式,並透過標籤綁定在一起。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: test-ds
labels:
app: nginx
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
containers:
- name: nginx-server
image: nginx
  • 設定為容忍主節點的污點。

使用配置檔創建 DaemonSet 資源。

1
kubectl apply -f introduction/ds/basic.yaml

查看此 DaemonSet 與其他資源的關係。

1
2
3
4
5
6
7
kubectl tree ds test-ds
NAMESPACE NAME READY REASON AGE
default DaemonSet/test-ds - 2m43s
default ├─ControllerRevision/test-ds-6d77db79c6 - 2m43s
default ├─Pod/test-ds-5w6qj True 2m43s
default ├─Pod/test-ds-f7th7 True 2m43s
default └─Pod/test-ds-q4g2n True 2m43s

總結來說,DaemonSet 會使用在每個節點上都剛好只需要運行某一個應用程式時使用。

參考資料