今天繼續來說明一個很重要的元件:DaemonSet
所謂daemonset,簡單來說就是在每個節點上部署一個Pod副本。當今天有新的主機節點加入時,就自動再上面部署一個Pod副本。移除節點時,也會自動將Pod副本移除。
與一般Pod副本不同的是,DaemonSet類型的Pod是由DeamonSet controller提前決定Pod要部署在那個地方運行。
Note: 如果要指定那個節點不能讓DeamonSet Pod部署時,可以對該節點打上taint
DaemonSet 是 Kubernetes 中一種工作負載的形式,確保所有(或部分)節點運行特定 Pod 的複本。它們通常用於部署系統守護程序、日誌收集器或其他背景任務,以確保集群中的每個節點運行這些 Pod。
DaemonSet 的主要特點包括:
DaemonSet 是 Kubernetes 中的一個關鍵資源,用於管理背景服務,確保特定的 Pod 在集群中的每個節點上運行。
#-----------------------------------------------
# S2-1. 在每一個節點部署一個nginx pod
#-----------------------------------------------
[master]# kubectl create ns nginx-ds
[master]# vim nginx-ds.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: nginx-ds
namespace: nginx-ds
spec:
selector:
matchLabels:
k8s-app: nginx
template:
metadata:
labels:
k8s-app: nginx
spec:
containers:
- image: nginx:1.7.9
name: nginx
ports:
- name: http
containerPort: 80
[master]# kubectl create -f nginx-ds.yaml -n nginx-ds
[master]# kubectl get nodes; kubectl get pod -l k8s-app=nginx -o wide -n nginx-ds
#-----------------------------------------------
# S2-2. 確認節點是否有打上taints
#-----------------------------------------------
[master]# kubectl describe node master01 | grep Taints
[master]# kubectl describe node master02 | grep Taints
[master]# kubectl describe node master03 | grep Taints
[master]# kubectl describe node worker01 | grep Taints
[master]# kubectl describe node worker02| grep Taints
node-exporter
來收集監控節點的訊息,或是fluented, logstash。在每個節點上運行以收集容器的日誌。DaemonSet在許多容器化的應用服務是很常見的,這裡簡單說明了一些基本觀念與常見的情境,不管是管理或是開發人員都可以在理解這些觀念後對於容器化應用的運營和管理提供了極大的幫助。熟練 DaemonSet 的使用,也有助於確保服務在整個集群中保持一致性。