1. 程式人生 > 其它 >k8s初級實戰04--DaemonSet & Static Pod

k8s初級實戰04--DaemonSet & Static Pod

技術標籤:K8S & DockerDaemonSetStatic PodKubernetes

k8s初級實戰04--DaemonSet & Static Pod

1 基礎概念

  1. DaemonSet
    DaemonSet 保證在每個 Node 上都執行一個容器副本,常用來部署一些叢集的日誌、監控或者其他系統管理應用。典型的應用包括:
    日誌收集,比如 fluentd,logstash 等;
    系統監控,比如 Prometheus Node Exporter,collectd,New Relic agent,Ganglia gmond 等;

    系統程式,比如 kube-proxy, kube-dns, glusterd, ceph 等。

  2. Static Pod
    Static Pod 可以讓每臺機器上執行指定的 Pod,這需要 kubelet 在啟動的時候指定 manifest 目錄,然後將所需要的 Pod 定義檔案放到指定的 manifest 目錄中。

2 常見用法

2.1 DaemonSet

  1. 建立 ds

    vim dpl-my-web-ds.yaml 
    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
      labels:
        app: my-web-ds
      name: my-web-
    ds spec: selector: matchLabels: app: my-web-ds template: metadata: labels: app: my-web-ds spec: containers: - image: nginx:1.19.4 name: nginx-ds $ kubectl apply -f dpl-my-web-ds.yaml daemonset.apps/my-web-ds created 建立 fluentd-elasticsearch DaemonSet $ kubectl apply -
    f https://k8s.io/examples/controllers/daemonset.yaml 部署完整的efk 可以參考連結 cluster/addons/fluentd-elasticsearch

    cluster/addons/fluentd-elasticsearch

  2. 檢視 ds

    $ kubectl get ds 或 kubectl get daemonset
    NAME        DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    my-web-ds   2         2         2       2            2           <none>          83s
    
  3. 刪除 ds

    $ kubectl delete daemonsets my-web-ds 
    daemonset.apps "my-web-ds" deleted
    或者
    $ kubectl delete -f dpl-my-web-ds.yaml
    

2.2 Static Pod

  1. 建立static pod
    vim  pod-my-web-sp.yaml 
    apiVersion: v1
    kind: Pod
    metadata:
      labels:
        run: my-web-sp
      name: my-web-sp
    spec:
      containers:
      - image: nginx:1.19.4
        name: my-web-sp
        ports:
        - containerPort: 80
    拷貝該pod到  /etc/kubernetes/manifests/ 目錄,過一會兒指定節點會自動拉起該pod
    cp pod-my-web-sp.yaml /etc/kubernetes/manifests/
    
    如下圖,該pod的控制器為Node,而普通的pod控制器為ReplicaSet。
    在這裡插入圖片描述
  2. 檢視static pod
    和檢視正常pod一樣檢視static pod即可
    $ kubectl get pod|grep sp
    my-web-sp-kmaster   1/1     Running   1          4s
    pod 名稱為 yaml中pod名稱-節點名稱
    
  3. 刪除static pod
    $ kubectl delete pod my-web-sp-kmaster  
    提示 pod NotFound,因此無法對該pod執行任何操作;
    rm /etc/kubernetes/manifests/pod-my-web-sp.yaml 後,該pod過一會自動刪除;
    

3 注意事項

  1. 靜態 Pod 不能通過 API Server 來刪除,但可以通過刪除 manifest 檔案來自動刪除對應的 Pod。

4 說明

Concepts->Workloads->Workload Resources->DaemonSet
Kubernetes 指南-DaemonSet