kubernetes雜談之(二)Pod初談
一 Pod的概念
(1)pod和容器的關係
pod和容器'containers'的關係 --> '一個pod至少包含兩個容器'-->'一個pause容器,一個業務容器'
Pod:Kubernetes部署和管理的最小單位,也是'最小的排程單位'
(2)pause容器
Pause容器的'作用' --> 所有的'業務容器''共享'pause的'網路名稱空間和資料卷'
pause:沙盒容器,它永遠是pod中'第一個被建立'的容器,其它定義的容器都是通過'join network namespace'的方式,與infra容器'關聯'在一起的
1)所有的業務容器-->'網路模式類似Docker container模式'-->'同一個pod內容器共享同一個網路棧(名稱空間)' -->'共享ip和port'
效果1:一個POD裡的容器都可以通過'localhost'訪問
效果2:'流量進出'都是通過infra容器
2)Pod中的所有容器都可以'訪問共享的volume'
所以:pause總是先啟動,自然'網路和資料卷會先建立' --> '因為要為其它業務容器提供'
############### '原理' ###############
每當'一個Pod被建立',那麼首先建立一個 'pause' 容器,之後這個pod裡面的其他容器通過'共享'這個pause容器的網路棧,實現與外部pod'進行通訊',然後通過'localhost'進行pod內部的'container的通訊'
(3)Kubernetes為什麼讓一個POD裡放置多個容器
Docker的理念:'一個容器一個程式'
為什麼:KUbernetes設計出一個'全新的Pod概念',並且Pod有這樣'特殊的組成結構'?
1) 引入'業務無關且不易死亡'的Pause容器作為'Pod的根容器',通過pasue狀態代表'整個容器的狀態',作為pod是否'健康的標準'
2) Pod裡多個業務容器共享Pause的IP和Port,共享Pause容器掛接的Volume,簡化了'緊密關聯'的業務容器之間的'通訊問'題,很好的解決容器間'檔案共享'
******************* 'pod多容器的劣勢' *******************
違反'一個容器一個程式'的原則
因為同一個容器中有'多個程式',系統將很難排錯,因為來自不同程式的'日誌'將'被混合在一起',很難管理程式的'生命週期'
二 Pod定義詳解
說明:'Deployment、DaemonSet、StatefulSet'都是基於'pod',所以必須詳細瞭解pod的'配置檔案'
1)Pod屬於'namespace'級別的資源
2)從Pod的配置檔案引出一些'核心的概念'-->'Annoations等'
3)pod是k8s'最小的排程單位'
(1)常見的
apiVersion: v1 --YAML描述檔案'所使用的Kubernetes API版本'-->kubectl explain pods -->'不同版本可能不一樣'
kind: Pod --Kubernetes '物件資源'
metadata: --pod'後設資料'(名稱、標籤和註解)
labels:
run: httpd --'pod的自定義標籤,方便標籤選擇器進行選擇'
name: httpd-gv4bl --'pod的名字'-->'後續貼出規範'
namespace: default --'pod所處的名稱空間'
spec: --'pod中容器的詳細定義' --> '規格/內容(pod的容器列表、volume)'
containers:
- image: httpd -- '容器的映象名稱' -->'倉庫:標籤'
imagePullPolicy: Always -- '映象的拉取策略'
name: httpd -- '容器的映象名稱'
ports: -- '容器暴露的埠列表'
- containerPort: 80 -- '容器需要監聽的埠號'
protocol: TCP -- '埠協議,預設是TCP'
resources: {} -- '資源限制和資源請求-->後續講解'
dnsPolicy: ClusterFirst -- 'DNS策略' --> '後續自定義DNS引入kubernetes'
nodeName: minikube -- '定向排程-->非必須'
restartPolicy: Always -- 'pod的重啟策略'
securityContext: {} -- '安全上下文'
serviceAccount: default -- '使用者身份'
(2)網路
(3)儲存
(3)安全
(4)賬戶
(5)健康檢查
相關文章
- 架構雜談《二》架構
- 談談 Kubernetes Operator
- 閒話雜談之境界
- 【雜談】Tomcat 之 Lifecycle介面Tomcat
- iOS APP安全雜談之二iOSAPP
- Kubernetes:Pod總結(二)
- 談談 Kubernetes 的匿名訪問
- 退役雜談
- 2024.9.19雜談
- 雜談20190505
- CodeReview雜談View
- node雜談
- kubernetes之pod中斷
- Kubernetes之Pod排程
- 技術雜談 之 室內導航
- 正則雜談
- 數學雜談 #??
- 免殺雜談
- 雜談其一
- 監控雜談
- 【雜談】策略模式模式
- 【雜談】Starter Template
- 一些雜感雜想(一)談談加班、團隊
- Kubernetes之Pod工作負載負載
- Netty系列(二):談談ByteBufNetty
- 魔法使之夜 雜談
- 工作隨筆雜談
- 架構雜談《九》架構
- 架構雜談《八》架構
- 架構雜談《七》架構
- 架構雜談《六》架構
- 架構雜談《五》架構
- iOS APP安全雜談iOSAPP
- 資料分析雜談
- 設計模式雜談設計模式
- 架構雜談《三》架構
- 架構雜談《四》架構
- token 的生成雜談