什么是K8S:Kubernetes是容器集群管理系統(tǒng)情竹,是一個開源的平臺(系統(tǒng)OS障陶,平臺Platform)滋恬。
可以做什么:可以實(shí)現(xiàn)容器集群的自動化部署、自動擴(kuò)縮容抱究、維護(hù)等功能恢氯。
什么是Pod
Pod是K8S最小的管理單位,一個Pod代表容器集群上正在運(yùn)行的一個進(jìn)程媳维。
一個Pod封裝一個應(yīng)用容器,存儲資源酿雪、一個獨(dú)立的網(wǎng)絡(luò)IP以及管理控制的策略。
Pod和容器的關(guān)系:
1:1個pod對應(yīng)一個容器侄刽,K8s最常見的關(guān)系指黎。在這種情況下,可以將pod視為容器州丹,但是K8s是通過Pod來管理醋安,而不是通過容器來管理。
2: 1個pod對應(yīng)多個容器墓毒。這種情況下吓揪,Pod變成了Service,來管理多個容器之間的關(guān)系和資源,多個容器之間可以共享資源所计。(選修柠辞,高級用法)
每個Pod都是運(yùn)行應(yīng)用(應(yīng)用級別Application)的單個實(shí)例,如果需要水平擴(kuò)展主胧,則應(yīng)該使用多個Pods,以使Pod和實(shí)例呈現(xiàn)一一對應(yīng)的關(guān)系叭首。水平擴(kuò)展的Pod在K8s里通常稱為Replication(復(fù)制的集合)习勤。Replication的Pod通常由Controller創(chuàng)建和管理。
Pod的網(wǎng)絡(luò)和存儲:
1個Pod對應(yīng)一個容器時(shí)焙格,IP和網(wǎng)絡(luò)資源都是唯一的图毕。對應(yīng)多個容器時(shí),IP也是唯一的眷唉,但是網(wǎng)絡(luò)資源是共享的予颤,要注意協(xié)調(diào)資源,避免端口沖突冬阳。
對應(yīng)一個容器時(shí)蛤虐,存儲是獨(dú)立的。多個容器時(shí)摩泪,可以指定共享目錄笆焰,避免Pod重啟,數(shù)據(jù)丟失见坑。
Pod的生命周期:
Pod被創(chuàng)建后嚷掠,會被K8s調(diào)度到集群的Node上,直到Pod的進(jìn)程終止(被刪掉荞驴,被驅(qū)逐不皆,故障,執(zhí)行完畢)都會在Node上熊楼。
Pod不會自愈霹娄,如果出現(xiàn)故障,就會被刪除鲫骗。K8s雖然可以直接管理Pod犬耻,但是抽象出了一層Controller來對Pod進(jìn)行管理。
Pod和Controller的關(guān)系:
Controller創(chuàng)建和管理多個Pod,提供副本管理(Replication)执泰、滾動升級和集群級別的自愈能力枕磁。例如,如果一個Node故障术吝,Controller就能自動將該節(jié)點(diǎn)的Pod調(diào)度到其他健康的Node上计济。
Controller示例:Deployment,StatefulSet,DaemonSet,通常,Controller是根據(jù)Pod Template來創(chuàng)建響應(yīng)的Pod排苍。(Pod template:是包含了其他對象(如Replication Controllers,Jobs和Daemon Sets)中的Pod定義)