電子商務(wù)網(wǎng)站建設(shè)漢獅網(wǎng)站權(quán)重查詢工具
Pod是一個(gè)邏輯抽象概念,kubernetes創(chuàng)建和管理的最小單元,一個(gè)Pod由一個(gè)容器或多個(gè)容器組成。
特點(diǎn):
一個(gè)Pod可以理解為是一個(gè)應(yīng)用實(shí)例,提供服務(wù)Pod中容器始終部署在一個(gè)Node上Pod中容器共享網(wǎng)絡(luò)、存儲(chǔ)資源
Pod主要用法:
運(yùn)行單個(gè)容器:最常見(jiàn)的用法,在這種情況下,可以將Pod看作是單個(gè)容器的抽象封裝。運(yùn)行多個(gè)容器:邊車模式(Sidecar),通過(guò)在Pod中定義專門容器,來(lái)執(zhí)行主業(yè)務(wù)容器需要的輔助工作,這樣好處是將輔助功能同主業(yè)務(wù)容器解耦,實(shí)現(xiàn)獨(dú)立發(fā)布和能力重用。
例如:
日志收集
應(yīng)用監(jiān)控
Pod對(duì)象:資源共享實(shí)現(xiàn)機(jī)制
Pod管理命令
創(chuàng)建Pod:
kubectl apply -f pod.yaml
或者使用命令: kubectl run nginx --image=nginx
查看Pod:
kubectl get pods
kubectl describe pod <Pod名稱>
查看日志:
kubectl logs <Pod名稱> [-c CONTAINER]
kubectl logs <Pod名稱> [-c CONTAINER] -f
進(jìn)入容器終端:
kubectl exec -it <Pod名稱> [-c CONTAINER] -- bash
刪除Pod:
kubectl delete pod <Pod名稱>
Pod對(duì)象:資源共享實(shí)現(xiàn)機(jī)制

Pod對(duì)象:重啟策略+健康檢查(應(yīng)用自修復(fù))
重啟策略(restartPolicy):
? Always:當(dāng)容器終止退出后,總是重啟容器,默認(rèn)策略。? OnFailure:當(dāng)容器異常退出(退出狀態(tài)碼非0)時(shí),才重啟容器。? Never:當(dāng)容器終止退出,從不重啟容器。
健康檢查有以下3種類型:
? livenessProbe(存活檢查):如果檢查失敗,將殺死容器,根據(jù)Pod的restartPolicy來(lái)操作。? readinessProbe(就緒檢查):如果檢查失敗, Kubernetes會(huì)把Pod從service endpoints中剔除。? startupProbe(啟動(dòng)檢查):檢查成功才由存活檢查接手, 用于保護(hù)
慢啟動(dòng)容器
支持以下三種檢查方法:
? httpGet發(fā)送HTTP請(qǐng)求,返回200-400范圍狀態(tài)碼為成功。? exec:執(zhí)行Shell命令返回狀態(tài)碼是0為成功。? tcpSocket:發(fā)起TCP Socket建立成功。
rollout 查看歷史版本
rs 可以看到歷史版本號(hào)與rs對(duì)應(yīng)關(guān)系,從rs可以再得知當(dāng)前對(duì)應(yīng)的鏡像
# 獲取發(fā)布版本與對(duì)應(yīng)鏡像
kubectl describe $(kubectl get rs -o name -n test |grep "web1-") -n test |grep -E "revision:|Image:"
# 回滾到上一個(gè)版本或者指定版本
kubectl rollout undo deployment web1 -n test
kubectl rollout undo deployment web1 --to-revision=1 -n test
常規(guī)健康檢查方法:端口監(jiān)聽(tīng)、運(yùn)行進(jìn)程、HTTP狀態(tài)碼、端口探測(cè)
環(huán)境變量
創(chuàng)建 Pod 時(shí),可以為其下的容器設(shè)置環(huán)境變量。
應(yīng)用場(chǎng)景:
容器內(nèi)應(yīng)用程序獲取Pod信息容器內(nèi)應(yīng)用程序通過(guò)用戶定義的變量改變默認(rèn)行為
變量值幾種定義方式:
? 自定義變量值? 變量值從Pod屬性獲取? 變量值從Secret、 ConfigMap獲取
Pod對(duì)象:Init Container
Init Container:顧名思義,用于初始化工作,執(zhí)行完就結(jié)束,可以理解為一次性任務(wù)。? 支持大部分應(yīng)用容器配置,但不支持健康檢查? 優(yōu)先應(yīng)用容器執(zhí)行
應(yīng)用場(chǎng)景:
? 環(huán)境檢查:例如確保應(yīng)用容器依賴的服務(wù)啟動(dòng)后再啟動(dòng)應(yīng)用容器? 初始化配置:例如給應(yīng)用容器準(zhǔn)備配置文件

Pod中會(huì)有這幾種類型的容器?
1、Infrastructure Container: 基礎(chǔ)容器?????????維護(hù)整個(gè)Pod網(wǎng)絡(luò)空間2、 InitContainers: 初始化容器?????????先于業(yè)務(wù)容器開(kāi)始執(zhí)行3、 Containers: 業(yè)務(wù)容器?????????并行啟動(dòng)
Pod對(duì)象:靜態(tài)Pod
靜態(tài)Pod特點(diǎn):
Pod由特定節(jié)點(diǎn)上的kubelet管理不能使用控制器Pod名稱標(biāo)識(shí)當(dāng)前節(jié)點(diǎn)名稱
在kubelet配置文件啟用靜態(tài)Pod的參數(shù):
vi /var/lib/kubelet/config.yaml
...staticPodPath: /etc/kubernetes/manifests
注:將部署的pod yaml放到該目錄會(huì)由kubelet自動(dòng)創(chuàng)建