pod 控制器 4

對(duì)于 pod 使用 yaml 文件或者 json 描述文件生成,之前都有提到過(guò),且對(duì) yaml 的每一個(gè)屬性都有介紹到
確實(shí)是屬性非常的多,但是我們知道如何去區(qū)分哪些是重要的部分,哪些是可有可無(wú)的部分之后,這些就變得簡(jiǎn)單了
pod 的主要組成部分
我們可以查看一下任意一個(gè)已經(jīng)運(yùn)行中的 pod

上面看到的屬性,大多都是通過(guò) yaml 文件來(lái)定義的
pod 定義是由這幾個(gè)部分組成的:
使用 K8S 中 api 的版本和 yaml 描述的資源類(lèi)型
下面這 3 大塊,基本上在所有的 K8S 資源中都可以看到
metadata
包括名稱(chēng),命名空間,標(biāo)簽,該容器的其他信息
spec
對(duì)于 pod 的實(shí)際說(shuō)明,如該 pod 的容器是哪些,卷是哪些等等
status
創(chuàng)建 pod 的時(shí)候不寫(xiě)這一部分,這一部分是包含只讀的運(yùn)行時(shí)數(shù)據(jù),展示了資源該時(shí)刻的狀態(tài)
手動(dòng)創(chuàng)建 pod
之前我們有嘗試過(guò)通過(guò) kubectl run ...
的方式來(lái)直接通過(guò)拉取鏡像后創(chuàng)建 pod
很多時(shí)候后,我們是需要自己寫(xiě) yaml 后來(lái)運(yùn)行生成 pod 的
例如自動(dòng)創(chuàng)建:
kubectl run xmtkubia --image=xiaomotong888/xmtkubia --port=8080
咱們可以這樣來(lái)手動(dòng)創(chuàng)建一個(gè) pod
xmtkubia.yaml
apiVersion:?v1
kind:?Pod
metadata:
??name:?xmt-kubia
spec:
??containers:
??-?image:?xiaomotong888/xmtkubia
????name:?xmtkubia
????ports:
????-?containerPort:?8080
??????protocol:?TCP

這樣寫(xiě)起來(lái)就比較簡(jiǎn)單了,其實(shí)和之前我們使用 docker 來(lái)運(yùn)行成容器的做法原理是一樣的,此處是
定義 Kubernates API 版本是 v1
資源類(lèi)型是 Pod
該 pod 是 基于 xiaomotong888/xmtkubia 鏡像的單個(gè)容器組成的
kubectl explain

我們可以使用 kubectl explain 來(lái)查看有哪些 API 對(duì)象,都是支持的那些屬性
我們期望查看 pods 的就可以這樣來(lái)查看
kubectl explain pods
我們期望查看 pod 里面的 spec 對(duì)象需要填寫(xiě)哪些字段,我們就可以這樣來(lái)查看
kubectl explain pod.spec

通過(guò)上述方式,就可以看到每一個(gè)對(duì)象的都有哪些屬性,以及如何使用等等
通過(guò)上述查看 explain,例如 container 對(duì)象后面就帶有 required 關(guān)鍵字,也就是說(shuō),我們編寫(xiě) spec 的時(shí)候, container 這個(gè)對(duì)象必須填寫(xiě)
當(dāng)然,也可以參看 ?github 文檔 , 這里面有詳細(xì)的說(shuō)明 , 我們對(duì)于每一個(gè)屬性都進(jìn)行深究意義并不大,主要是我們會(huì)用,后續(xù)能夠知道其底層原理
pod 的操作方式補(bǔ)充
創(chuàng)建一個(gè) pod
kubectl create -f xmtkubia.yaml
查看 pod
kubectl get pods
查看 pod 的更多信息
kubectl get pods -o wide

得到 pod 的完整描述文件,以 yaml 的方式
kubectl get pod xmt-kubia -o yaml
得到 pod 的完整描述文件,以 json 的方式
kubectl get pod xmt-kubia -o json
查看容器的日志
docker logs 容器id
查看 pod 的日志
kubectl logs pod名字
如
?kubectl?logs?xmt-kubia
xmt?kubia?server?starting...
查看多容器的 pod 的日志
kubectl logs pod名字 -c 容器名字
?kubectl?logs?xmt-kubia?-c?xmtkubia
xmt?kubia?server?starting...
查看 pod 的描述信息
kubectl describe pod pod名字
,如:
kubectl?describe?pod?xmt-kubia

如何訪問(wèn) pod 里面的容器
之前我們有說(shuō)到過(guò),可以建 一個(gè) service,外部直接訪問(wèn) service 即可,關(guān)于 service 的進(jìn)階后面一起分享
在 pod 這一塊,我們想要在 本地機(jī)器訪問(wèn) ?pod 里面的容器,我們本地調(diào)試的時(shí)候可以使用端口轉(zhuǎn)發(fā)的方式來(lái)完成
上面的 pod ,我們知道容器里面的服務(wù)端口是 8080 , 這個(gè)端口對(duì)于在本機(jī),肯定是訪問(wèn)不到的,因?yàn)?pod 里面有自己獨(dú)立的文件系統(tǒng),地址,端口等等
我們將本機(jī)的 8088 轉(zhuǎn)發(fā)到 容器里面的 8080 端口,可以這樣通過(guò) ?port-forward
來(lái)完成
kubectl port-forward xmt-kubia 8088:8080

查看效果

我們打開(kāi)另一個(gè)終端,訪問(wèn) 8080 端口仍然是訪問(wèn)不通的,但是我們本機(jī)訪問(wèn) 8088 是可以通的
上述使用 port-forward 簡(jiǎn)單流程是這樣的

使用端口轉(zhuǎn)發(fā)的方式測(cè)試我們指定的 pod,這是一種有效的方法,當(dāng)然還有其他的方法,后續(xù)再分享
今天就到這里,學(xué)習(xí)所得,若有偏差,還請(qǐng)斧正
歡迎點(diǎn)贊,關(guān)注,收藏
朋友們,你的支持和鼓勵(lì),是我堅(jiān)持分享,提高質(zhì)量的動(dòng)力

好了,本次就到這里
技術(shù)是開(kāi)放的,我們的心態(tài),更應(yīng)是開(kāi)放的。擁抱變化,向陽(yáng)而生,努力向前行。
我是阿兵云原生,歡迎點(diǎn)贊關(guān)注收藏,下次見(jiàn)~