Kubernetes控制器中DaemonSet與Job的使用教程
DaemonSet
1 什么是 DaemonSet
DaemonSet | Kubernetes
DaemonSet 確保全部(或者某些)節(jié)點(diǎn)上運(yùn)行一個(gè) Pod 的副本。 當(dāng)有節(jié)點(diǎn)加入集群時(shí), 也會(huì)為他們新增一個(gè) Pod 。 當(dāng)有節(jié)點(diǎn)從集群移除時(shí),這些 Pod 也會(huì)被回收。刪除 DaemonSet 將會(huì)刪除它創(chuàng)建的所有 Pod。
DaemonSet 的一些典型用法:
- 在每個(gè)節(jié)點(diǎn)上運(yùn)行集群守護(hù)進(jìn)程
- 在每個(gè)節(jié)點(diǎn)上運(yùn)行日志收集守護(hù)進(jìn)程
- 在每個(gè)節(jié)點(diǎn)上運(yùn)行監(jiān)控守護(hù)進(jìn)程
一種簡(jiǎn)單的用法是為每種類型的守護(hù)進(jìn)程在所有的節(jié)點(diǎn)上都啟動(dòng)一個(gè) DaemonSet。 一個(gè)稍微復(fù)雜的用法是為同一種守護(hù)進(jìn)程部署多個(gè) DaemonSet;每個(gè)具有不同的標(biāo)志, 并且對(duì)不同硬件類型具有不同的內(nèi)存、CPU 要求。
2 使用 DaemonSet
apiVersion: apps/v1 kind: DaemonSet metadata: labels: app: nginx name: nginx spec: selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - image: nginx:1.19 imagePullPolicy: IfNotPresent name: nginx resources: {} restartPolicy: Always
Job
1 什么是 Job
Job 會(huì)創(chuàng)建一個(gè)或者多個(gè) Pod,并將繼續(xù)重試 Pod 的執(zhí)行,直到指定數(shù)量的 Pod 成功終止。 隨著 Pod 成功結(jié)束,Job 跟蹤記錄成功完成的 Pod 個(gè)數(shù)。 當(dāng)數(shù)量達(dá)到指定的成功個(gè)數(shù)閾值時(shí),任務(wù)(即 Job)結(jié)束。 刪除 Job 的操作會(huì)清除所創(chuàng)建的全部 Pod。 掛起 Job 的操作會(huì)刪除 Job 的所有活躍 Pod,直到 Job 被再次恢復(fù)執(zhí)行。
一種簡(jiǎn)單的使用場(chǎng)景下,你會(huì)創(chuàng)建一個(gè) Job 對(duì)象以便以一種可靠的方式運(yùn)行某 Pod 直到完成。 當(dāng)?shù)谝粋€(gè) Pod 失敗或者被刪除(比如因?yàn)楣?jié)點(diǎn)硬件失效或者重啟)時(shí),Job 對(duì)象會(huì)啟動(dòng)一個(gè)新的 Pod。
你也可以使用 Job 以并行的方式運(yùn)行多個(gè) Pod。
2 使用 Job
apiVersion: batch/v1 kind: Job metadata: name: pi spec: template: spec: containers: - name: pi image: perl:5.34.0 command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] restartPolicy: Never # 當(dāng)前任務(wù)出現(xiàn)失敗 最大的重試次數(shù) backoffLimit: 4
3 自動(dòng)清理完成的 Job
完成的 Job 通常不需要留存在系統(tǒng)中。在系統(tǒng)中一直保留它們會(huì)給 API 服務(wù)器帶來(lái)額外的壓力。 如果 Job 由某種更高級(jí)別的控制器來(lái)管理,例如 CronJob, 則 Job 可以被 CronJob 基于特定的根據(jù)容量裁定的清理策略清理掉。
- 已完成 Job 的 TTL 機(jī)制
自動(dòng)清理已完成 Job (狀態(tài)為 Complete
或 Failed
)的另一種方式是使用由 TTL 控制器所提供的 TTL 機(jī)制。 通過(guò)設(shè)置 Job 的 .spec.ttlSecondsAfterFinished
字段,可以讓該控制器清理掉已結(jié)束的資源。TTL 控制器清理 Job 時(shí),會(huì)級(jí)聯(lián)式地刪除 Job 對(duì)象。 換言之,它會(huì)刪除所有依賴的對(duì)象,包括 Pod 及 Job 本身。 注意,當(dāng) Job 被刪除時(shí),系統(tǒng)會(huì)考慮其生命周期保障,例如其 Finalizers。
apiVersion: batch/v1 kind: Job metadata: name: pi-with-ttl spec: ttlSecondsAfterFinished: 100 template: spec: containers: - name: pi image: perl:5.34.0 command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] restartPolicy: Never
Job pi-with-ttl
在結(jié)束 100 秒之后,可以成為被自動(dòng)刪除的對(duì)象。如果該字段設(shè)置為 0
,Job 在結(jié)束之后立即成為可被自動(dòng)刪除的對(duì)象。 如果該字段沒有設(shè)置,Job 不會(huì)在結(jié)束之后被 TTL 控制器自動(dòng)清除。
控制器無(wú)法解決問題
- 如何為 Pod 提供網(wǎng)絡(luò)服務(wù)
- 如何實(shí)現(xiàn)多個(gè) Pod 間負(fù)載均衡
到此這篇關(guān)于Kubernetes控制器中DaemonSet與Job的使用的文章就介紹到這了,更多相關(guān)Kubernetes控制器DaemonSet與Job使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于Rancher部署并導(dǎo)入K8S集群的問題
這篇文章主要介紹了關(guān)于Rancher部署并導(dǎo)入K8S集群的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12kubernetes需要默認(rèn)的serviceaccount的原因解析
這篇文章主要介紹了kubernetes為何需要默認(rèn)的serviceaccount,ServiceAccount 是 Kubernetes 中的一種重要概念,它的實(shí)際使用場(chǎng)景包括很多,本文給大家講解的非常詳細(xì),需要的朋友可以參考下2023-04-04Rainbond自動(dòng)部署初始化Schema的數(shù)據(jù)庫(kù)步驟教程
這篇文章主要為大家介紹了Rainbond自動(dòng)部署初始化Schema的數(shù)據(jù)庫(kù)過(guò)程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04K8s解決主機(jī)重啟后kubelet無(wú)法自動(dòng)啟動(dòng)問題(推薦)
在安裝配置好Kubernetes后,正常情況下服務(wù)器關(guān)機(jī)重啟,kubelet也會(huì)自動(dòng)啟動(dòng)的,如何解決這個(gè)問題呢,下面小編給大家?guī)?lái)了K8s解決主機(jī)重啟后kubelet無(wú)法自動(dòng)啟動(dòng)問題,感興趣的朋友一起看看吧2022-08-08在K8S中實(shí)現(xiàn)會(huì)話保持的兩種方案
這篇文章主要介紹了在K8S中實(shí)現(xiàn)會(huì)話保持的兩種方案,每種方案結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03Rancher部署配置開源Rainbond云原生應(yīng)用管理平臺(tái)
這篇文章主要為大家介紹了Rancher部署配置開源Rainbond云原生應(yīng)用管理平臺(tái),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04