Kubernetes控制器中DaemonSet與Job的使用教程
DaemonSet
1 什么是 DaemonSet
DaemonSet | Kubernetes
DaemonSet 確保全部(或者某些)節(jié)點上運行一個 Pod 的副本。 當有節(jié)點加入集群時, 也會為他們新增一個 Pod 。 當有節(jié)點從集群移除時,這些 Pod 也會被回收。刪除 DaemonSet 將會刪除它創(chuàng)建的所有 Pod。
DaemonSet 的一些典型用法:
- 在每個節(jié)點上運行集群守護進程
- 在每個節(jié)點上運行日志收集守護進程
- 在每個節(jié)點上運行監(jiān)控守護進程
一種簡單的用法是為每種類型的守護進程在所有的節(jié)點上都啟動一個 DaemonSet。 一個稍微復雜的用法是為同一種守護進程部署多個 DaemonSet;每個具有不同的標志, 并且對不同硬件類型具有不同的內(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: AlwaysJob
1 什么是 Job
Job 會創(chuàng)建一個或者多個 Pod,并將繼續(xù)重試 Pod 的執(zhí)行,直到指定數(shù)量的 Pod 成功終止。 隨著 Pod 成功結束,Job 跟蹤記錄成功完成的 Pod 個數(shù)。 當數(shù)量達到指定的成功個數(shù)閾值時,任務(即 Job)結束。 刪除 Job 的操作會清除所創(chuàng)建的全部 Pod。 掛起 Job 的操作會刪除 Job 的所有活躍 Pod,直到 Job 被再次恢復執(zhí)行。
一種簡單的使用場景下,你會創(chuàng)建一個 Job 對象以便以一種可靠的方式運行某 Pod 直到完成。 當?shù)谝粋€ Pod 失敗或者被刪除(比如因為節(jié)點硬件失效或者重啟)時,Job 對象會啟動一個新的 Pod。
你也可以使用 Job 以并行的方式運行多個 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
# 當前任務出現(xiàn)失敗 最大的重試次數(shù)
backoffLimit: 43 自動清理完成的 Job
完成的 Job 通常不需要留存在系統(tǒng)中。在系統(tǒng)中一直保留它們會給 API 服務器帶來額外的壓力。 如果 Job 由某種更高級別的控制器來管理,例如 CronJob, 則 Job 可以被 CronJob 基于特定的根據(jù)容量裁定的清理策略清理掉。
- 已完成 Job 的 TTL 機制
自動清理已完成 Job (狀態(tài)為 Complete 或 Failed )的另一種方式是使用由 TTL 控制器所提供的 TTL 機制。 通過設置 Job 的 .spec.ttlSecondsAfterFinished 字段,可以讓該控制器清理掉已結束的資源。TTL 控制器清理 Job 時,會級聯(lián)式地刪除 Job 對象。 換言之,它會刪除所有依賴的對象,包括 Pod 及 Job 本身。 注意,當 Job 被刪除時,系統(tǒng)會考慮其生命周期保障,例如其 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: NeverJob pi-with-ttl 在結束 100 秒之后,可以成為被自動刪除的對象。如果該字段設置為 0 ,Job 在結束之后立即成為可被自動刪除的對象。 如果該字段沒有設置,Job 不會在結束之后被 TTL 控制器自動清除。
控制器無法解決問題
- 如何為 Pod 提供網(wǎng)絡服務
- 如何實現(xiàn)多個 Pod 間負載均衡
到此這篇關于Kubernetes控制器中DaemonSet與Job的使用的文章就介紹到這了,更多相關Kubernetes控制器DaemonSet與Job使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
通過kubernetes部署nginx+php網(wǎng)站環(huán)境過程
本文詳細介紹了如何在Kubernetes中部署Nginx+PHP網(wǎng)站環(huán)境,包括環(huán)境準備、部署步驟、Service、ConfigMap、Ingress等配置,并提供了具體的YAML文件示例和命令,通過這些步驟,可以實現(xiàn)高可用、可擴展的Web服務2026-01-01

