時間:2020-09-03來源:www.farandoo.com作者:電腦系統城
Kubernetes的資源控制器Daemonset詳解與示例
服務器名稱(hostname) | 系統版本 | 配置 | 內網IP | 外網IP(模擬) |
---|---|---|---|---|
k8s-master | CentOS7.7 | 2C/4G/20G | 172.16.1.110 | 10.0.0.110 |
k8s-node01 | CentOS7.7 | 2C/4G/20G | 172.16.1.111 | 10.0.0.111 |
k8s-node02 | CentOS7.7 | 2C/4G/20G | 172.16.1.112 | 10.0.0.112 |
kubernetes中內建了很多controller(控制器),這些相當于一個狀態機,用來控制pod的具體狀態和行為。
部分控制器類型如下:
DaemonSet 確保全部(或者某些)節點上運行一個 Pod 的副本。當有節點加入集群時,會為他們新增一個 Pod。當有節點從集群移除時,這些 Pod 也會被回收。刪除 DaemonSet 將會刪除它創建的所有 Pod。
DaemonSet 的一些典型用法:一個簡單的用法是在所有的節點上都啟動一個 DaemonSet,并作為每種類型的 daemon 使用。
一個稍微復雜的用法是單獨對每種 daemon 類型使用一種DaemonSet。這樣有多個 DaemonSet,但具有不同的標識,并且對不同硬件類型具有不同的內存、CPU 要求。
備注:DaemonSet 中的 Pod 可以使用 hostPort,從而可以通過節點 IP 訪問到 Pod;因為DaemonSet模式下Pod不會被調度到其他節點。使用示例如下:
1 ports: 2 - name: httpd 3 containerPort: 80 4 #除非絕對必要,否則不要為 Pod 指定 hostPort。 將 Pod 綁定到hostPort時,它會限制 Pod 可以調度的位置數;DaemonSet除外 5 #一般情況下 containerPort與hostPort值相同 6 hostPort: 8090 #可以通過宿主機+hostPort的方式訪問該Pod。例如:pod在/調度到了k8s-node02【172.16.1.112】,那么該Pod可以通過172.16.1.112:8090方式進行訪問。 7 protocol: TCP
可參見:「Kubernetes K8S之通過yaml創建pod與pod文件常用字段詳解」
yaml文件
1 [root@k8s-master controller]# pwd 2 /root/k8s_practice/controller 3 [root@k8s-master controller]# cat daemonset.yaml 4 apiVersion: apps/v1 5 kind: DaemonSet 6 metadata: 7 name: fluentd-elasticsearch 8 namespace: default 9 labels: 10 k8s-app: fluentd-logging 11 spec: 12 selector: 13 matchLabels: 14 name: fluentd-elasticsearch 15 template: 16 metadata: 17 labels: 18 name: fluentd-elasticsearch 19 spec: 20 tolerations: 21 # 允許在master節點運行 22 - key: node-role.kubernetes.io/master 23 effect: NoSchedule 24 containers: 25 - name: fluentd-elasticsearch 26 image: registry.cn-beijing.aliyuncs.com/google_registry/fluentd:v2.5.2 27 resources: 28 limits: 29 cpu: 1 30 memory: 200Mi 31 requests: 32 cpu: 100m 33 memory: 200Mi 34 volumeMounts: 35 - name: varlog 36 mountPath: /var/log 37 - name: varlibdockercontainers 38 mountPath: /var/lib/docker/containers 39 readOnly: true 40 # 優雅關閉應用,時間設置。超過該時間會強制關閉【可選項】,默認30秒 41 terminationGracePeriodSeconds: 30 42 volumes: 43 - name: varlog 44 hostPath: 45 path: /var/log 46 - name: varlibdockercontainers 47 hostPath: 48 path: /var/lib/docker/containers
運行daemonset,并查看狀態
1 [root@k8s-master controller]# kubectl apply -f daemonset.yaml 2 daemonset.apps/fluentd-elasticsearch created 3 [root@k8s-master controller]# 4 [root@k8s-master controller]# kubectl get daemonset -o wide 5 NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE CONTAINERS IMAGES SELECTOR 6 fluentd-elasticsearch 3 3 3 3 3 <none> 92s fluentd-elasticsearch registry.cn-beijing.aliyuncs.com/google_registry/fluentd:v2.5.2 name=fluentd-elasticsearch 7 [root@k8s-master controller]# 8 [root@k8s-master controller]# kubectl get pod -o wide 9 NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES 10 fluentd-elasticsearch-52b8z 1/1 Running 0 95s 10.244.2.92 k8s-node02 <none> <none> 11 fluentd-elasticsearch-fps95 1/1 Running 0 95s 10.244.0.46 k8s-master <none> <none> 12 fluentd-elasticsearch-pz8j7 1/1 Running 0 95s 10.244.4.83 k8s-node01 <none> <none>
由上可見,在k8s集群所有節點包括master節點都運行了daemonset的pod。
———END———
2022-04-13
蘋果系統安裝雙系統圖文教程 蘋果系統怎么裝雙系統 ?2022-04-13
遠程登錄Linux CentOS系統方法 怎么遠程登錄Linux CentOS系統?2022-03-21
CentOS7安裝MYSQL8.X的詳解教程很多網友對于linux系統比較陌生,更別說linux系統安裝了。有使用筆記本電腦的網友需要用到linux系統,不過卻不知道怎么安裝,所以下面小編要來跟大家說說linux操作系統安裝步驟詳細,大家一起來看看吧。...
2022-03-07
RedFlag紅旗Linux系統怎么安裝?電腦想要安裝雙系統,該怎么安裝RedFlag紅旗系統呢?下面我們就來看看紅旗Red Flag安裝全程圖解,詳細請看下文介紹...
2022-01-23