?
序言
時(shí)間永遠(yuǎn)是旁觀者,所有的過程和結(jié)果,都需要我們自己去承擔(dān)。
文章標(biāo)記顏色說明:
- 黃色:重要標(biāo)題
- 紅色:用來標(biāo)記結(jié)論
- 綠色:用來標(biāo)記一級(jí)論點(diǎn)
- 藍(lán)色:用來標(biāo)記二級(jí)論點(diǎn)
Kubernetes (k8s) 是一個(gè)容器編排平臺(tái),允許在容器中運(yùn)行應(yīng)用程序和服務(wù)。今天學(xué)習(xí)一下DaemonSet-守護(hù)進(jìn)程。
希望這篇文章能讓你不僅有一定的收獲,而且可以愉快的學(xué)習(xí),如果有什么建議,都可以留言和我交流
?專欄介紹
這是這篇文章所在的專欄,歡迎訂閱:【深入解析k8s】專欄
簡單介紹一下這個(gè)專欄要做的事:
主要是深入解析每個(gè)知識(shí)點(diǎn),幫助大家完全掌握k8s,以下是已更新的章節(jié)
序號(hào) | 文章 |
第一講 | 深入解析 k8s:入門指南(一) |
第二講 | 深入解析 k8s:入門指南(二) |
第三講 | 深入解析Pod對象(一) |
第四講 | 深入解析Pod對象(二) |
第五講 | 深入解析無狀態(tài)服務(wù) |
第六講 | 深入解析有狀態(tài)服務(wù) |
第七講 | 深入解析控制器 |
第八講 |
深入解析 ReplicaSet |
第九講 | 深入解析滾動(dòng)升級(jí) |
第十講 | 深入解析StatefulSet(一) |
第十一講 | 深入解析StatefulSet(二) |
1 基礎(chǔ)介紹
1.1 概念介紹
Kubernetes是一個(gè)容器編排平臺(tái),其中DaemonSet是Kubernetes中的一個(gè)重要概念。DaemonSet是一種控制器,用于在集群內(nèi)運(yùn)行一組Pod,并確保每個(gè)節(jié)點(diǎn)上都有一個(gè)Pod副本在運(yùn)行。
1.2 常用特性
下面是一些DaemonSet的常用特性:
只在特定的節(jié)點(diǎn)上運(yùn)行Pod:可以使用NodeSelector或者NodeAffinity來限制DaemonSet的Pod只在特定的節(jié)點(diǎn)上運(yùn)行。
根據(jù)節(jié)點(diǎn)的標(biāo)簽更新Pod:如果在集群中添加或刪除了節(jié)點(diǎn),Kubernetes會(huì)通過DaemonSet自動(dòng)添加或刪除Pod。同時(shí),也可以通過添加或移除節(jié)點(diǎn)標(biāo)簽來更新DaemonSet中的Pod。
確保每個(gè)節(jié)點(diǎn)只運(yùn)行一個(gè)Pod:可以使用PodAntiAffinity來確保每個(gè)節(jié)點(diǎn)上只有一個(gè)Pod在運(yùn)行。
限制DaemonSet的Pod數(shù)量:可以使用MaxUnavailable和MaxSurge字段來限制DaemonSet的Pod的最大數(shù)量和最小數(shù)量。
1.3 簡單總結(jié)?
總之,DaemonSet是一種非常有用的控制器,可以確保集群中每個(gè)節(jié)點(diǎn)上都有一個(gè)Pod副本在運(yùn)行。
它可以自動(dòng)地根據(jù)節(jié)點(diǎn)的狀態(tài)添加或刪除Pod,并且可以通過各種方式來控制Pod的位置和數(shù)量。
2 工作原理
DaemonSet的工作原理是監(jiān)聽節(jié)點(diǎn)的變化,通過監(jiān)聽節(jié)點(diǎn)的變化,當(dāng)新的節(jié)點(diǎn)加入集群時(shí),DaemonSet會(huì)自動(dòng)在該節(jié)點(diǎn)上創(chuàng)建一個(gè)Pod副本。而當(dāng)節(jié)點(diǎn)從集群中刪除時(shí),DaemonSet會(huì)自動(dòng)刪除該節(jié)點(diǎn)上的Pod副本。
這樣,DaemonSet保證了集群中每個(gè)節(jié)點(diǎn)都會(huì)運(yùn)行指定的Pod。有且只有一個(gè)pod
2.1 原理介紹
DaemonSet的工作原理如下:
控制器監(jiān)視節(jié)點(diǎn)的狀態(tài):DaemonSet控制器會(huì)監(jiān)視集群中的節(jié)點(diǎn)狀態(tài),一旦有新的節(jié)點(diǎn)加入集群,或者節(jié)點(diǎn)狀態(tài)發(fā)生變化(例如節(jié)點(diǎn)重新啟動(dòng)),控制器就會(huì)觸發(fā)一些操作。
創(chuàng)建Pod:當(dāng)控制器檢測到新節(jié)點(diǎn)時(shí),它會(huì)創(chuàng)建一個(gè)新的Pod,并將其調(diào)度到該節(jié)點(diǎn)上??刂破鬟€會(huì)確保每個(gè)節(jié)點(diǎn)上只運(yùn)行一個(gè)Pod實(shí)例。
更新Pod:如果DaemonSet的配置發(fā)生變化,例如更新了鏡像版本或者修改了Pod的配置文件,控制器會(huì)自動(dòng)更新每個(gè)節(jié)點(diǎn)上的Pod實(shí)例。
刪除Pod:如果節(jié)點(diǎn)發(fā)生故障或者被刪除,控制器會(huì)自動(dòng)刪除節(jié)點(diǎn)上的Pod實(shí)例。
擴(kuò)容和縮容:DaemonSet還支持?jǐn)U容和縮容,可以根據(jù)需要增加或減少Pod的數(shù)量。擴(kuò)容和縮容的過程與其他控制器類似,控制器會(huì)根據(jù)指定的副本數(shù)和當(dāng)前的實(shí)際Pod數(shù)量來調(diào)整Pod的數(shù)量。
3 使用場景
3.1 場景介紹
DaemonSet用于在集群中運(yùn)行一組Pod,確保每個(gè)節(jié)點(diǎn)都有一個(gè)Pod在運(yùn)行。它通常用于運(yùn)行一些系統(tǒng)級(jí)別的服務(wù)或者監(jiān)控應(yīng)用程序,例如:
日志收集器:DaemonSet可以在每個(gè)節(jié)點(diǎn)上運(yùn)行日志收集器,例如Fluentd或者Filebeat,從而收集所有節(jié)點(diǎn)的日志數(shù)據(jù),并將其發(fā)送到中心日志服務(wù)器進(jìn)行存儲(chǔ)和分析。
監(jiān)控代理:DaemonSet可以在每個(gè)節(jié)點(diǎn)上運(yùn)行監(jiān)控代理,例如Prometheus Node Exporter或者cAdvisor,從而收集所有節(jié)點(diǎn)的運(yùn)行狀態(tài)數(shù)據(jù),并將其發(fā)送到中心監(jiān)控服務(wù)器進(jìn)行分析和展示。
網(wǎng)絡(luò)代理:DaemonSet可以在每個(gè)節(jié)點(diǎn)上運(yùn)行網(wǎng)絡(luò)代理,例如kube-proxy或者Istio Sidecar,從而負(fù)責(zé)節(jié)點(diǎn)之間的網(wǎng)絡(luò)通信和流量管理。
安全代理:DaemonSet可以在每個(gè)節(jié)點(diǎn)上運(yùn)行安全代理,例如Sysdig Falco或者Aqua Security,從而檢測所有節(jié)點(diǎn)的安全事件,并及時(shí)報(bào)警或者進(jìn)行防御。
總之,DaemonSet適用于需要在每個(gè)節(jié)點(diǎn)上運(yùn)行一組Pod的場景,可以使集群中的服務(wù)更加健壯和可靠。
4 案例講解
4.1 日志收集
日志收集器是Kubernetes集群中一個(gè)重要的組件,它負(fù)責(zé)在每個(gè)節(jié)點(diǎn)上運(yùn)行日志收集器的容器,收集節(jié)點(diǎn)和容器的日志數(shù)據(jù),并將這些數(shù)據(jù)發(fā)送到集中式的日志系統(tǒng)中。
日志收集方案
- 原生方式:使用?
kubectl logs
?直接在查看本地保留的日志,或者通過docker engine的?log driver
?把日志重定向到文件、syslog、fluentd等系統(tǒng)中。- Sidecar方式:一個(gè)POD中運(yùn)行一個(gè)sidecar的日志agent容器,用于采集該P(yáng)OD主容器產(chǎn)生的日志。
- DaemonSet方式:在K8S的每個(gè)node上部署日志agent,由agent采集所有容器的日志到服務(wù)端。
在Kubernetes集群中使用日志收集器,DaemonSet方式:會(huì)使用DaemonSet來確保每個(gè)節(jié)點(diǎn)上都有一個(gè)日志收集器在運(yùn)行。
下面是一個(gè)使用日志收集器的DaemonSet的示例代碼:
apiVersion: v1
kind: ConfigMap #資源類型
metadata:
name: fluentd-config
namespace: kube-system
data:
fluent.conf: |
<source>
@type tail
path /var/log/containers/*.log
pos_file /var/log/fluentd-containers.log.pos
time_format %Y-%m-%dT%H:%M:%S.%NZ
tag kubernetes.*
read_from_head true
<parse>
@type json
time_key time
time_format %Y-%m-%dT%H:%M:%S.%NZ
keep_time_key true
</parse>
</source>
<match kubernetes.**>
@type elasticsearch
host elasticsearch.default.svc.cluster.local
port 9200
index_name fluentd
type_name fluentd
logstash_format true
logstash_prefix kubernetes
include_tag_key true
tag_key kubernetes.tag
flush_interval 10s
max_retry_wait 30
disable_retry_limit
</match>
---
apiVersion: apps/v1
kind: DaemonSet #資源類型
metadata:
name: fluentd
namespace: kube-system
labels:
k8s-app: fluentd-logging
spec:
selector:
matchLabels:
k8s-app: fluentd-logging
template:
metadata:
labels:
k8s-app: fluentd-logging
spec:
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
containers:
- name: fluentd
image: fluent/fluentd-kubernetes-daemonset:v1.6-debian-elasticsearch7-1.1
env:
- name: FLUENT_UID
value: "0"
volumeMounts:
- name: varlog
mountPath: /var/log
- name: varlibdockercontainers
mountPath: /var/lib/docker/containers
readOnly: true
- name: fluentdconfig
mountPath: /fluentd/etc/
resources:
limits:
memory: 512Mi
securityContext:
privileged: true
terminationGracePeriodSeconds: 30
volumes:
- name: varlog
hostPath:
path: /var/log
- name: varlibdockercontainers
hostPath:
path: /var/lib/docker/containers
- name: fluentdconfig
configMap:
name: fluentd-config
上面的示例代碼中,首先定義了一個(gè)名為fluentd-config的ConfigMap,用于存儲(chǔ)Fluentd的配置文件。
配置文件中定義了一個(gè)名為tail的輸入源,它會(huì)讀取每個(gè)容器的日志文件,并使用JSON格式解析日志數(shù)據(jù)。
配置文件中還定義了一個(gè)名為elasticsearch的輸出目標(biāo),它會(huì)將日志數(shù)據(jù)發(fā)送到Elasticsearch中。
接著定義了一個(gè)名為fluentd的DaemonSet,它會(huì)在每個(gè)節(jié)點(diǎn)上運(yùn)行一個(gè)fluentd容器。在fluentd容器中,使用了ConfigMap中定義的配置文件,并掛載了/var/log和/var/lib/docker/containers目錄,這些目錄包含了節(jié)點(diǎn)和容器的日志數(shù)據(jù)。
同時(shí),由于使用了DaemonSet,確保每個(gè)節(jié)點(diǎn)上都有一個(gè)日志收集器在運(yùn)行,從而提高了集群的可靠性和穩(wěn)定性。
通過這個(gè)示例代碼,可以在Kubernetes集群中使用Fluentd作為日志收集器,收集節(jié)點(diǎn)和容器的日志數(shù)據(jù),并將這些數(shù)據(jù)發(fā)送到集中式的日志系統(tǒng)中。
同時(shí),由于使用了DaemonSet,確保每個(gè)節(jié)點(diǎn)上都有一個(gè)日志收集器在運(yùn)行,從而提高了集群的可靠性和穩(wěn)定性。
4.2 監(jiān)控代理
監(jiān)控代理是Kubernetes集群中另一個(gè)重要的組件,它負(fù)責(zé)在每個(gè)節(jié)點(diǎn)上運(yùn)行監(jiān)控代理的容器,收集節(jié)點(diǎn)和容器的監(jiān)控?cái)?shù)據(jù),并將這些數(shù)據(jù)發(fā)送到集中式的監(jiān)控系統(tǒng)中。
在Kubernetes集群中使用監(jiān)控代理,使用DaemonSet來確保每個(gè)節(jié)點(diǎn)上都有一個(gè)監(jiān)控代理在運(yùn)行。
下面是一個(gè)使用監(jiān)控代理的DaemonSet的示例代碼:
apiVersion: v1
kind: ServiceAccount
metadata:
name: node-exporter
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: node-exporter
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: node-exporter
subjects:
- kind: ServiceAccount
name: node-exporter
namespace: kube-system
---
apiVersion: apps/v1
kind: DaemonSet #資源類型
metadata:
name: node-exporter
namespace: kube-system
labels:
k8s-app: node-exporter
spec:
selector:
matchLabels:
k8s-app: node-exporter
template:
metadata:
labels:
k8s-app: node-exporter
spec:
serviceAccountName: node-exporter
hostNetwork: true
containers:
- name: node-exporter
image: prom/node-exporter:v1.2.2
args:
- --path.procfs=/host/proc
- --path.sysfs=/host/sys
- --collector.textfile.directory=/var/lib/node-exporter/textfile_collector
ports:
- name: metrics
containerPort: 9100
hostPort: 9100
volumeMounts:
- name: proc-mount
mountPath: /host/proc
readOnly: true
- name: sys-mount
mountPath: /host/sys
readOnly: true
- name: textfile-collector
mountPath: /var/lib/node-exporter/textfile_collector
volumes:
- name: proc-mount
hostPath:
path: /proc
- name: sys-mount
hostPath:
path: /sys
- name: textfile-collector
configMap:
name: node-exporter-textfile-collector
上面的示例代碼中,首先定義了一個(gè)名為node-exporter的ServiceAccount和一個(gè)名為node-exporter的ClusterRoleBinding,用于授權(quán)node-exporter在集群中進(jìn)行操作。
接著定義了一個(gè)名為node-exporter的DaemonSet,它會(huì)在每個(gè)節(jié)點(diǎn)上運(yùn)行一個(gè)node-exporter容器。
在node-exporter容器中,使用了--path.procfs和--path.sysfs選項(xiàng)來指定了/proc和/sys目錄的路徑,這些目錄包含了節(jié)點(diǎn)和容器的監(jiān)控?cái)?shù)據(jù)。
同時(shí),使用了--collector.textfile.directory選項(xiàng)來指定了一個(gè)目錄,用于存儲(chǔ)可以通過文本文件方式收集的監(jiān)控?cái)?shù)據(jù)。
node-exporter容器還需要掛載/proc和/sys目錄以及用于存儲(chǔ)文本文件的目錄。
通過這個(gè)示例代碼,在Kubernetes集群中使用node-exporter作為監(jiān)控代理,收集節(jié)點(diǎn)和容器的監(jiān)控?cái)?shù)據(jù),并將這些數(shù)據(jù)發(fā)送到集中式的監(jiān)控系統(tǒng)中。
同時(shí),由于使用了DaemonSet,確保每個(gè)節(jié)點(diǎn)上都有一個(gè)監(jiān)控代理在運(yùn)行,從而提高了集群的可靠性和穩(wěn)定性。
4.3?網(wǎng)絡(luò)代理
網(wǎng)絡(luò)代理是Kubernetes集群中的重要組件之一,它負(fù)責(zé)實(shí)現(xiàn)節(jié)點(diǎn)之間的網(wǎng)絡(luò)通信和流量管理。
Kubernetes中內(nèi)置了一個(gè)網(wǎng)絡(luò)代理組件kube-proxy,它使用iptables或者IPVS來實(shí)現(xiàn)節(jié)點(diǎn)之間的流量轉(zhuǎn)發(fā)和負(fù)載均衡。
在Kubernetes集群中使用kube-proxy,通常會(huì)使用DaemonSet來確保每個(gè)節(jié)點(diǎn)上都有一個(gè)網(wǎng)絡(luò)代理在運(yùn)行。
下面是一個(gè)使用kube-proxy的DaemonSet的示例代碼:
apiVersion: v1
kind: ServiceAccount
metadata:
name: kube-proxy
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: kube-proxy
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: system:node-proxier
subjects:
- kind: ServiceAccount
name: kube-proxy
namespace: kube-system
---
apiVersion: apps/v1
kind: DaemonSet #資源類型
metadata:
name: kube-proxy
namespace: kube-system
labels:
k8s-app: kube-proxy
spec:
selector:
matchLabels:
k8s-app: kube-proxy
template:
metadata:
labels:
k8s-app: kube-proxy
spec:
serviceAccountName: kube-proxy
hostNetwork: true
containers:
- name: kube-proxy
image: k8s.gcr.io/kube-proxy:v1.22.0
command:
- /usr/local/bin/kube-proxy
args:
- --config=/var/lib/kube-proxy/config.conf
securityContext:
privileged: true
volumeMounts:
- name: kube-proxy-config
mountPath: /var/lib/kube-proxy
readOnly: true
- name: xtables-lock
mountPath: /run/xtables.lock
readOnly: false
subPath: xtables.lock
volumes:
- name: kube-proxy-config
configMap:
name: kube-proxy-config
- name: xtables-lock
hostPath:
path: /run/xtables.lock
上面的示例代碼中,首先定義了一個(gè)名為kube-proxy的ServiceAccount和一個(gè)名為kube-proxy的ClusterRoleBinding,用于授權(quán)kube-proxy在集群中進(jìn)行操作。
接著定義了一個(gè)名為kube-proxy的DaemonSet,它會(huì)在每個(gè)節(jié)點(diǎn)上運(yùn)行一個(gè)kube-proxy容器。
在kube-proxy容器中,使用了--config選項(xiàng)來指定了配置文件的路徑,這個(gè)配置文件可以通過一個(gè)名為kube-proxy-config的ConfigMap來動(dòng)態(tài)生成。
kube-proxy容器還需要掛載/run/xtables.lock文件來確保在使用iptables或者IPVS時(shí)不會(huì)發(fā)生競爭條件。
通過這個(gè)示例代碼,在Kubernetes集群中使用kube-proxy作為網(wǎng)絡(luò)代理,實(shí)現(xiàn)節(jié)點(diǎn)之間的流量轉(zhuǎn)發(fā)和負(fù)載均衡。
同時(shí),由于使用了DaemonSet,確保每個(gè)節(jié)點(diǎn)上都有一個(gè)網(wǎng)絡(luò)代理在運(yùn)行,從而提高了集群的可靠性和穩(wěn)定性。
4.4 安全代理
安全代理是Kubernetes集群中另一個(gè)重要的組件,它負(fù)責(zé)在每個(gè)節(jié)點(diǎn)上運(yùn)行安全代理的容器,保護(hù)節(jié)點(diǎn)和容器的網(wǎng)絡(luò)流量安全,并確保集群中的網(wǎng)絡(luò)流量只能訪問授權(quán)的服務(wù)和資源。
在Kubernetes集群中使用安全代理,使用DaemonSet來確保每個(gè)節(jié)點(diǎn)上都有一個(gè)安全代理在運(yùn)行。
下面是一個(gè)使用安全代理的DaemonSet的示例代碼:
apiVersion: apps/v1
kind: DaemonSet #資源類型
metadata:
name: envoy
namespace: kube-system
labels:
k8s-app: envoy
spec:
selector:
matchLabels:
k8s-app: envoy
template:
metadata:
labels:
k8s-app: envoy
spec:
containers:
- name: envoy
image: envoyproxy/envoy:v1.19.1
ports:
- containerPort: 8080
name: http
- containerPort: 8443
name: https
volumeMounts:
- name: envoy-config
mountPath: /etc/envoy
- name: envoy-tls
mountPath: /etc/envoy-tls
readOnly: true
securityContext:
runAsUser: 10001
terminationGracePeriodSeconds: 30
volumes:
- name: envoy-config
configMap:
name: envoy-config
- name: envoy-tls
secret:
secretName: envoy-tls
上面的示例代碼中,首先定義了一個(gè)名為envoy-config的ConfigMap,用于存儲(chǔ)Envoy的配置文件。
接著定義了一個(gè)名為envoy-tls的Secret,用于存儲(chǔ)Envoy的TLS證書和私鑰。
然后定義了一個(gè)名為envoy的DaemonSet,它會(huì)在每個(gè)節(jié)點(diǎn)上運(yùn)行一個(gè)envoy容器。
在envoy容器中,使用了ConfigMap中定義的配置文件,并掛載了/etc/envoy和/etc/envoy-tls目錄,這些目錄包含了Envoy的配置文件和TLS證書和私鑰。
同時(shí),由于使用了DaemonSet,確保每個(gè)節(jié)點(diǎn)上都有一個(gè)安全代理在運(yùn)行,從而提高了集群的安全性和可靠性。
通過這個(gè)示例代碼,可以在Kubernetes集群中使用Envoy作為安全代理,保護(hù)節(jié)點(diǎn)和容器的網(wǎng)絡(luò)流量安全,并確保集群中的網(wǎng)絡(luò)流量只能訪問授權(quán)的服務(wù)和資源。
同時(shí),由于使用了DaemonSet,確保每個(gè)節(jié)點(diǎn)上都有一個(gè)安全代理在運(yùn)行,從而提高了集群的安全性和可靠性。
5 總結(jié)
DaemonSet 的主要作用,是讓你在 Kubernetes 集群里,運(yùn)行一個(gè) Daemon Pod。
所以,這個(gè) Pod 有如下三個(gè)特征:
這個(gè) Pod 運(yùn)行在 Kubernetes 集群里的每一個(gè)節(jié)點(diǎn)(Node)上;
每個(gè)節(jié)點(diǎn)上只有一個(gè)這樣的 Pod 實(shí)例;
當(dāng)有新的節(jié)點(diǎn)加入 Kubernetes 集群后,該 Pod 會(huì)自動(dòng)地在新節(jié)點(diǎn)上被創(chuàng)建出來;而當(dāng)舊節(jié)點(diǎn)被刪除后,它上面的該 Pod 也相應(yīng)地會(huì)被回收掉。
Daemon Pod機(jī)制聽起來很簡單,但的意義確實(shí)是非常重要的。列舉幾個(gè)例子:
各種網(wǎng)絡(luò)插件的 Agent 組件,都必須運(yùn)行在每一個(gè)節(jié)點(diǎn)上,用來處理這個(gè)節(jié)點(diǎn)上的容器網(wǎng)絡(luò);
各種存儲(chǔ)插件的 Agent 組件,也必須運(yùn)行在每一個(gè)節(jié)點(diǎn)上,用來在這個(gè)節(jié)點(diǎn)上掛載遠(yuǎn)程存儲(chǔ)目錄,操作容器的 Volume 目錄;
各種監(jiān)控組件和日志組件,也必須運(yùn)行在每一個(gè)節(jié)點(diǎn)上,負(fù)責(zé)這個(gè)節(jié)點(diǎn)上的監(jiān)控信息和日志搜集。
總結(jié)一下:
DaemonSet 其實(shí)是一個(gè)非常簡單的控制器。在它的控制循環(huán)中,只需要遍歷所有節(jié)點(diǎn),然后根據(jù)節(jié)點(diǎn)上是否有被管理 Pod 的情況,來決定是否要?jiǎng)?chuàng)建或者刪除一個(gè) Pod。
相比于 Deployment,DaemonSet 只管理 Pod 對象,然后通過 nodeAffinity 和 Toleration 這兩個(gè)調(diào)度器的小功能,保證了每個(gè)節(jié)點(diǎn)上有且只有一個(gè) Pod。
與此同時(shí),DaemonSet 使用 ControllerRevision,來保存和管理自己對應(yīng)的“版本”。文章來源:http://www.zghlxwxcb.cn/news/detail-409918.html
這種“面向 API 對象”的設(shè)計(jì)思路,大大簡化了控制器本身的邏輯,也正是 Kubernetes 項(xiàng)目“聲明式 API”的優(yōu)勢所在。文章來源地址http://www.zghlxwxcb.cn/news/detail-409918.html
6 投票
到了這里,關(guān)于【K8S系列】深入解析DaemonSet的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!