iT邦幫忙

2026 iThome 鐵人賽

DAY 9
0
Kubernetes

從零開始的 Kubernetes 基礎觀念與實作系列 第 9

# 從零開始的 Kubernetes 基礎觀念與實作 DAY9

  • 分享至 

  • xImage
  •  

當DaemonSet設定好後,DaemonSet會在Kubernetes上符合條件的Node中佈署一個Pod,新增Node時會自動佈署和移除Node時會回收並刪除Pod,同時DaemonSet也支援滾動式更新。
因為DaemonSet的特性,所以非常適合用來佈署監控、日誌收集等應用程式。

DaemonSet

如果要佈署監控、日誌收集等還會涉及到其他設定,這樣有點麻煩,所以這裡就隨便拿一個image來展示和示範。

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: daemon-demo
spec:
  selector:
    matchLabels:
      app: daemon-demo
  template:
    metadata:
      labels:
        app: daemon-demo
    spec:
      containers:
      - name: google-samples
        image: gcr.io/google-samples/hello-app:1.0
        imagePullPolicy: Always
        ports: 
        - containerPort: 5000

可在查詢pod時加上-o wide來查看目前pod佈署在哪一個node上。
image
可以看到目前DaemonSet創建的pod在所有Node中都各有一個
現在可以創建一個Node來觀察
image
image
可以看到在創建一個新的Node後不久DaemonSet就創建了一個新的Pod並佈署在新Node上。
我們也可以透過nodeSelector:來將pod佈署在特定條件的node上
先給node上標籤
(註:詳細關於標籤(label)的介紹與使用方法可以回到DAY6查看)
image
這裡我讓minikube、minikube-m03的daemon-label=0,minikube-m02的daemon-label=1

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: daemon-demo
spec:
  selector:
    matchLabels:
      app: daemon-demo
  template:
    metadata:
      labels:
        app: daemon-demo
    spec:
      nodeSelector:
         daemon-label: '0'
      containers:
      - name: google-samples
        image: gcr.io/google-samples/hello-app:1.0
        imagePullPolicy: Always
        ports: 
        - containerPort: 5000

套用後再觀察pod的佈署狀況
image
可以發現在minikube-m02的pod被撤下來了。

Deployment 和 DaemonSet 比較

Deployment DaemonSet
主要用途 佈署無狀態應用 佈署監控、日誌等服務
Pod佈署數量 透過replicas: 調整 按照Node條件進行佈署
Node新增時 並不會自動在新Node上佈署Pod 按照新Node條件決定是否進行佈署
Node刪除時 會將上方的Pod調度至其他Node 維持當初設定Pody總數 刪除Node時會刪除佈署在上面的Pod

上一篇
# 從零開始的 Kubernetes 基礎觀念與實作 DAY8
系列文
從零開始的 Kubernetes 基礎觀念與實作9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言