pod 知識點 上
在 K8S 中, pod 是一個非常關(guān)鍵的存在,我們一起來看看 pod 具體是個什么?

pod 是個啥?
pod 是個什么呢?pod 是 K8S中的一個核心概念
每一個 pod 都會有一個特殊的根容器,叫做 pause 容器,pause 容器對應(yīng)的鏡像也是屬于 K8S 的一部分的
pod 里面可不僅僅只有 pause 容器,還可以有其他多個容器

之前文章我們稍微提到過 pod,每一個 pod ,都是一個具體應(yīng)用的實例,pod 有自己獨自的 IP,主機名,進程等等
pod 與 容器是 1 對多的關(guān)系
一個 pod 里面可以有多個容器,多個容器彼此共享網(wǎng)絡(luò)和存儲資源
我們都是通過 pod 中的 pause 容器 來管理其他容器的, 因為 pause 容器會存儲所有的容器狀態(tài)
pod 和節(jié)點的關(guān)系
pod 存在于節(jié)點中,不同節(jié)點的 pod 相互通信,是通過二層網(wǎng)絡(luò)通信的
pod 自身還有啥不同的?
pod 自身還分成普通的 pod,和靜態(tài)的 pod
我們?nèi)绾味x一個 pod
在 K8S 中定義一個 pod 也是比較簡單的,就是寫一個 yaml 文件,只不過我們剛開始需要多加嘗試和練習(xí)
yaml 文件大體是這樣的,純手寫 , 下面的配置,我把不太容易理解的或者說是容易誤解的名詞解釋一下,其他的自行看英文即可理解
apiVersion:?v1??//?版本號
kind:?Pod??//?類型
metadata:?
??name:?pod?name
??namespace:?pod?namespace
??labels:
????-?name:?pod?label
?annotations:
?-?name:?pod?annotation?//?自定義注釋列表
spec:?//?pod?中容器的詳細定義
??container:
??-?name:?container?name
????image:?container?image
????imagesPullPolicy:?[Always|Never|IfNotPresent]?//?鏡像拉取策略
????command:?command?list
????agrs:?app?start?params
????workingDir:?work?dir
????volumeMounts:
????-?name:?volume?name
??????mountPath:?volume?absolutely?path
??????readonly:?boolean
?ports:
?-?name:?ports?list?name
???containerPort:?8888
???hostPort:?9999
???protocol:?TCP??//?可以是?TCP?和?UDP
?env:
?-?name:?env?name
???value:?string
?resources:
???limits:
?????cpu:?string
?????memory:?string
???requeste:
?????cpu:?string
?????memory:?string
?livenessProbe:??//?健康檢查設(shè)置
??????exec:
????????command:?[string]
??????httpGet:????//?通過?httpGet??方式檢查
????????path:?string
????????port:?string
????????host:?string
????????scheme:?string
????????httpHeaders:?
????????-?name:?httpHeaders?name
??????????value:?string?
??????tcpSocket:??//?通過?tcpSocket?方式檢查
????????port:?80
??????initialDelaySeconds:?0?//?首次檢查時間
??????timeoutSeconds:?0???//?超時檢查時間
??????periodSeconds:?0???//?檢查間隔時間
??????successTreshold:?0
??????failuerTreshold:?0
??????securityContext:???//?安全配置
????????privileged:?false
????restartPolicy:?[Always|Never|OnFailure]
????nodeSelector:?object
????imagePullSecrets:
????-?name:?string
????hostNetwork:?false???//?是否使用主機網(wǎng)絡(luò)模式?
??volumes:??????//?存儲卷
??-?name:?volumes?list?name
????emptyDir:?{}
????hostPath:????//?pod?所在主機的目錄,用于掛載
??????path:?string
????secret:?????//?secret?類型?存儲卷
??????secretName:?secret?name
??????item:
??????-?key:?specific?key
????????path:?key?path
????configMap:????//?configmap?類型存儲卷
??????name:?string
??????items:
??????-?key:?specific?key
????????path:?string
看了上面的這個 yaml ,起初可能會覺得有點多,一下子記不住, xdm ,沒有讓你記住,咱們只需要知道 pod 的 yaml 是長 這個樣子,里面都有哪些用法即可
pod 基本用法使用示例
在 K8S 中對 pod 中的容器運行也是有要求的
容器的主程序是在前臺運行,而不是后臺,因此,應(yīng)用需要改造成前臺運行的方式
若 pod 中包含的容器是一個后臺執(zhí)行程序,那么執(zhí)行完命令之后,pod 就會被銷毀
若 pod 是一個 rc ,rc 就是 replicationController ,那么 pod 就會處于一個 創(chuàng)建,銷毀的循環(huán)中 需注意
我們分享創(chuàng)建的pod,可以是里面放 1 個容器,也可以是放多個容器的,根據(jù)我們需要去處理即可
1 個 pod 放 1 個容器
例如我們 ?1 個 pod 里面放 1 個 mongdb 的容器,可以這樣來寫

1 個 pod 放 多個 容器
例如我們 1 個 pod 里面放 ?1 個 mongodb 和 1 個 redis 容器,可以這樣來寫

如何操作 pod
根據(jù)已有 yaml 創(chuàng)建 pod
kubectl?create?-f?yaml文件
查看 pod ?和 查看 pod 詳情
例如這樣的

kubectl get pod -A
查看所有命名空間下面的 pod
kubectl get pod ?pod名字
Kubectl get pod pod名字 -o wide
查看 pod 的更多信息
kubectl describe pod pod名字
查看 pod 的詳情
刪除 pod
kubectl delete pod pod名字
kubectl delete pod pod名字 -n 命名空間
kubectl delete pod --all
刪除所有的 pod
今天就到這里,學(xué)習(xí)所得,若有偏差,還請斧正
歡迎點贊,關(guān)注,收藏
朋友們,你的支持和鼓勵,是我堅持分享,提高質(zhì)量的動力

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