什么是控制器
kubernetes中內(nèi)建了很多controller(控制器),這些相當(dāng)于一個(gè)狀態(tài)機(jī),用來(lái)控制pod的具體狀態(tài)和行為
控制器類型
ReplicationController和ReplicaSet
Deployment
DeamonSet
StateFulSet
Job/CronJob
Horizontal Pod Autoscaling
ReplicationController和ReplicaSet
ReplicationController(RC)用來(lái)確保容器應(yīng)用的副本數(shù)始終保持在用戶定義的副本數(shù),即如果有容器異常退出,會(huì)自動(dòng)創(chuàng)建新的Pod來(lái)替代;而如果異常多出來(lái)的容器也會(huì)自動(dòng)回收;
在新版本的kubernetes中建議使用ReplicaSet來(lái)代替ReplicationController。ReplicaSet跟ReplicationController沒(méi)有本質(zhì)的不同,只是名字不一樣,而且ReplicaSet支持集合的selector
Deployment
Deployment為pod和ReplicaSet提供了一個(gè)聲明式定義方法,用來(lái)替代以前的RC來(lái)方便的管理應(yīng)用。典型的應(yīng)用場(chǎng)景包括;
1,定義Deployment來(lái)創(chuàng)建pod和ReplicaSet
2,滾動(dòng)升級(jí)和回滾應(yīng)用
3,擴(kuò)容和縮容
4,暫停和繼續(xù)Deployment
DaemonSet
DaemonSet確保全部(或一些)Node上運(yùn)行一個(gè)Pod副本,當(dāng)有Node加入集群時(shí),也會(huì)為他們新增一個(gè)Pod。當(dāng)有Node從集群移除時(shí),這些pod也會(huì)被回收。刪除DaemonSet將會(huì)刪除它創(chuàng)建的所有的pod
使用DaemonSet的一些典型用法:
1,運(yùn)行集群存儲(chǔ)daemon,例如在每個(gè)Node上運(yùn)行g(shù)lusterd、ceph
2,在每個(gè)Node上運(yùn)行日志收集daemon,例如fluentd、logstash
3,在每個(gè)Node上運(yùn)行監(jiān)控Daemon,例如Prometheus
Job
job負(fù)責(zé)批處理任務(wù),即僅執(zhí)行一次的任務(wù),它保證批處理任務(wù)的一個(gè)或多個(gè)pod成功結(jié)束
CronJob
Cronjob管理基于時(shí)間的job
在給定時(shí)間只運(yùn)行一次
周期性地在給定時(shí)間點(diǎn)運(yùn)行
使用前提條件:當(dāng)時(shí)有kubernetes集群,版本>=1.8,對(duì)于先前版本的集群,版本<1.8 啟動(dòng)api server時(shí) 通過(guò)傳遞選項(xiàng)--runtime-config=batch/v2a1pha1=true可以開(kāi)啟batch/v2alpha1 api
StatefulSet(有狀態(tài)控制器)
StatefulSet作為controller為pod提供唯一的標(biāo)識(shí),它可以保證部署和scale的順序
StatefulSet是為了解決有狀態(tài)服務(wù)的問(wèn)題(對(duì)應(yīng)Deploymen個(gè)ReplicaSets是為了無(wú)狀態(tài)服務(wù)而設(shè)計(jì)),其應(yīng)用場(chǎng)景包括
1,穩(wěn)定的持久化存儲(chǔ),即pod重新調(diào)度后還是能訪問(wèn)到相同的持久化數(shù)據(jù),基于PVC來(lái)實(shí)現(xiàn)
2,穩(wěn)定的網(wǎng)絡(luò)標(biāo)志,即pod重新調(diào)度后其podname和hostname不變,基于headless service(即沒(méi)有cluster ip的service)來(lái)實(shí)現(xiàn)
3,有序部署,有序擴(kuò)展,即pod是有順序的,在部署或者擴(kuò)展的時(shí)候要一局定義的順序一次進(jìn)行(即從0到N-1,在下一個(gè)pod運(yùn)行之前,所有之前的pod必須都是running和ready狀態(tài)),基于init containers來(lái)實(shí)現(xiàn)
4,有序伸縮,有序刪除(即從N-1到0)
Horizontal Pod Autoscaling(自動(dòng)擴(kuò)展)
應(yīng)用的資源使用率通常都有高峰和低估的時(shí)候,即何削峰填谷,提高集群的整體資源利用率,讓service中的pod個(gè)數(shù)自動(dòng)調(diào)整,這就要依賴于Horizontal Pod Autoscaling了 顧名思義,使pod水平自動(dòng)縮放
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。