日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
kubernetes中Pod是什么

這篇文章主要介紹kubernetes中Pod是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)建站專注于宜春網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供宜春營銷型網(wǎng)站建設(shè),宜春網(wǎng)站制作、宜春網(wǎng)頁設(shè)計、宜春網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造宜春網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供宜春網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

一:Pod 是什么
Pod是Kubernetes的最重要最基本的概念。它是能夠被創(chuàng)建,調(diào)度和管理的最小部署單元。一個Pod代表集群中一個運行的進程。
二:Pod的組成

kubernetes中Pod是什么
一個Pod由一個特殊的根容器Pause容器和若干個緊密相關(guān)的用戶業(yè)務(wù)容器組成。

Pause容器作為Pod的根容器,它的狀態(tài)代表整個容器組的狀態(tài)。

Pod里的多個容器共享Pause容器的IP,共享Pause容器掛載的Volume.

Kubernetes為每個Pod都分配了唯一的IP地址,稱之為Pod IP,一個Pod里的多個容器共享Pod IP地址。Kubernetes要求底層網(wǎng)絡(luò)支持集群內(nèi)任意兩個Pod之間的TCP/IP直接通信,這通常采用虛擬二層網(wǎng)絡(luò)技術(shù)來實現(xiàn)。一個Pod里的容器與另外主機上的Pod容器能夠直接通信。

Pod里面的容器除了共享網(wǎng)絡(luò)和存儲外,還共享:

PID namespace:一個Pod內(nèi)的容器能夠看到對方容器的進程

IPC namespace:一個Pod內(nèi)的容器能夠使用POSIX消息隊列進行通信

UTS namespace : 一個Pod內(nèi)的容器共享主機名。

kubernetes中Pod是什么
Pod一旦被創(chuàng)建,就會被放入的etcd中存儲,隨后會被Master調(diào)度到某個具體的Node上進行綁定,隨后該Pod被對應(yīng)的Node上的kubelet進程實例化一組相關(guān)的Docker容器并啟動起來。在默認情況下,當Pod里的某個容器停止時,Kubernetes會重啟整個Pod;如果Pod所在的Node宕機,則會將這個Node上的所有Pod重新調(diào)度到其他節(jié)點上。


Event是一個事件的記錄,記錄事件的最早產(chǎn)生時間,最后重現(xiàn)時間,重復(fù)次數(shù),發(fā)起者,類型以及導(dǎo)致此事件的原因等眾多信息。 Pod同樣有Event記錄,可以用來定位問題查找原因。

kubernetes中Pod是什么

三:Pod的生命周期

kubernetes中Pod是什么

Pod的重啟策略(RestartPolicy)應(yīng)用于Pod內(nèi)所有的容器,并且僅在Pod所處的Node上由kubelet進行判斷和重啟操作。
Pod的重啟策略包括Always、OnFailure及Nerver,默認值為Always。

四:Pod的健康檢查

對Pod的健康檢查可以通過兩類探針來檢查:LivenessProbe和ReadinessProbe:
LivenessProbe探針:用于判斷容器是否存活(running狀態(tài)),如果LivenessProbe探針探測到容器不健康,則kubelet殺掉該容器,并根據(jù)容器的重啟策略做響應(yīng)處理.
ReadinessProbe探針:用于判斷容器是否啟動完成(ready狀態(tài)),可以接受請求。如果ReadinessProbe探針探測失敗,則Pod的狀態(tài)被修改。Endpoint Controller將從service的Endpoint中刪除包含該容器所在的Pod的Endpoint。
kubelet定制執(zhí)行LivenessProbe探針來診斷容器的健康狀況,有三種方式:
1.ExecAction:在容器內(nèi)部執(zhí)行一個命令,如果該命令的返回值為0,則表示容器健康。
2.TCPSocketAction:通過容器ip地址和端口號執(zhí)行TCP檢查,如果能夠建立tcp連接表明容器健康。
3.HTTPGetAction:通過容器Ip地址、端口號及路徑調(diào)用http get方法,如果響應(yīng)的狀態(tài)嗎大于200且小于400,則認為容器健康。
五:Pod的調(diào)度
在Kubernetes系統(tǒng)中,Pod在大部分場景下都只是容器的載體而已,通常需要通過RC、Deployment、DaemonSet、Job等對象來完成Pod的調(diào)度和自動控制功能。

全自動調(diào)度:
NodeSelector:定向調(diào)度

Kubernetes Master上的scheduler服務(wù)(kube-Scheduler進程)負責(zé)實現(xiàn)Pod的調(diào)度,整個過程通過一系列復(fù)雜的算法,最終為每個Pod計算出一個最佳的目標節(jié)點,通常我們無法知道Pod最終會被調(diào)度到哪個節(jié)點上。實際情況中,我們需要將Pod調(diào)度到我們指定的節(jié)點上,可以通過Node的標簽和pod的nodeSelector屬性相匹配來達到目的。

NodeAffinity:親和性調(diào)度

該調(diào)度策略是將來替換NodeSelector的新一代調(diào)度策略。由于NodeSelector通過Node的Label進行精確匹配,所有NodeAffinity增加了In、NotIn、Exists、DoesNotexist、Gt、Lt等操作符來選擇Node。調(diào)度側(cè)露更加靈活

DaemonSet特定場景調(diào)度: 

  • 在每個Node上運行一個日志采集程序,例如fluentd或者logstach。


批處理調(diào)度:


六:Pod的文件配置
Kubernetes里的所有資源對象都采用yaml或者JSON格式的文件來定義或描述,下面是Pod資源定義文件的模板:


  1. # yaml格式的pod定義文件完整內(nèi)容:

  2. apiVersion: v1        #必選,版本號,例如v1

  3. kind: Pod       #必選,Pod

  4. metadata:       #必選,元數(shù)據(jù)

  5. name: string        #必選,Pod名稱

  6. namespace: string     #必選,Pod所屬的命名空間

  7. labels:       #自定義標簽

  8. - name: string      #自定義標簽名字

  9. annotations:        #自定義注釋列表

  10. - name: string

  11. spec:         #必選,Pod中容器的詳細定義

  12. containers:       #必選,Pod中容器列表

  13. - name: string      #必選,容器名稱

  14. image: string     #必選,容器的鏡像名稱

  15. imagePullPolicy: [Always | Never | IfNotPresent]  #獲取鏡像的策略 Alawys表示下載鏡像 IfnotPresent表示優(yōu)先使用本地鏡像,否則下載鏡像,Nerver表示僅使用本地鏡像

  16. command: [string]     #容器的啟動命令列表,如不指定,使用打包時使用的啟動命令

  17. args: [string]      #容器的啟動命令參數(shù)列表

  18. workingDir: string      #容器的工作目錄

  19. volumeMounts:     #掛載到容器內(nèi)部的存儲卷配置

  20. - name: string      #引用pod定義的共享存儲卷的名稱,需用volumes[]部分定義的的卷名

  21. mountPath: string     #存儲卷在容器內(nèi)mount的絕對路徑,應(yīng)少于512字符

  22. readOnly: boolean     #是否為只讀模式

  23. ports:        #需要暴露的端口庫號列表

  24. - name: string      #端口號名稱

  25. containerPort: int    #容器需要監(jiān)聽的端口號

  26. hostPort: int     #容器所在主機需要監(jiān)聽的端口號,默認與Container相同

  27. protocol: string      #端口協(xié)議,支持TCP和UDP,默認TCP

  28. env:        #容器運行前需設(shè)置的環(huán)境變量列表

  29. - name: string      #環(huán)境變量名稱

  30. value: string     #環(huán)境變量的值

  31. resources:        #資源限制和請求的設(shè)置

  32. limits:       #資源限制的設(shè)置

  33. cpu: string     #Cpu的限制,單位為core數(shù),將用于docker run --cpu-shares參數(shù)

  34. memory: string      #內(nèi)存限制,單位可以為Mib/Gib,將用于docker run --memory參數(shù)

  35. requests:       #資源請求的設(shè)置

  36. cpu: string     #Cpu請求,容器啟動的初始可用數(shù)量

  37. memory: string      #內(nèi)存清楚,容器啟動的初始可用數(shù)量

  38. livenessProbe:      #對Pod內(nèi)個容器健康檢查的設(shè)置,當探測無響應(yīng)幾次后將自動重啟該容器,檢查方法有exec、httpGet和tcpSocket,對一個容器只需設(shè)置其中一種方法即可

  39. exec:       #對Pod容器內(nèi)檢查方式設(shè)置為exec方式

  40. command: [string]   #exec方式需要制定的命令或腳本

  41. httpGet:        #對Pod內(nèi)個容器健康檢查方法設(shè)置為HttpGet,需要制定Path、port

  42. path: string

  43. port: number

  44. host: string

  45. scheme: string

  46. HttpHeaders:

  47. - name: string

  48. value: string

  49. tcpSocket:      #對Pod內(nèi)個容器健康檢查方式設(shè)置為tcpSocket方式

  50. port: number

  51. initialDelaySeconds: 0   #容器啟動完成后首次探測的時間,單位為秒

  52. timeoutSeconds: 0    #對容器健康檢查探測等待響應(yīng)的超時時間,單位秒,默認1秒

  53. periodSeconds: 0     #對容器監(jiān)控檢查的定期探測時間設(shè)置,單位秒,默認10秒一次

  54. successThreshold: 0

  55. failureThreshold: 0

  56. securityContext:

  57. privileged: false

  58. restartPolicy: [Always | Never | OnFailure] #Pod的重啟策略,Always表示一旦不管以何種方式終止運行,kubelet都將重啟,OnFailure表示只有Pod以非0退出碼退出才重啟,Nerver表示不再重啟該Pod

  59. nodeSelector: obeject   #設(shè)置NodeSelector表示將該Pod調(diào)度到包含這個label的node上,以key:value的格式指定

  60. imagePullSecrets:     #Pull鏡像時使用的secret名稱,以key:secretkey格式指定

  61. - name: string

  62. hostNetwork: false      #是否使用主機網(wǎng)絡(luò)模式,默認為false,如果設(shè)置為true,表示使用宿主機網(wǎng)絡(luò)

  63. volumes:        #在該pod上定義共享存儲卷列表

  64. - name: string      #共享存儲卷名稱 (volumes類型有很多種)

  65. emptyDir: {}      #類型為emtyDir的存儲卷,與Pod同生命周期的一個臨時目錄。為空值

  66. hostPath: string      #類型為hostPath的存儲卷,表示掛載Pod所在宿主機的目錄

  67. path: string      #Pod所在宿主機的目錄,將被用于同期中mount的目錄

  68. secret:       #類型為secret的存儲卷,掛載集群與定義的secre對象到容器內(nèi)部

  69. scretname: string

  70. items:

  71. - key: string

  72. path: string

  73. configMap:      #類型為configMap的存儲卷,掛載預(yù)定義的configMap對象到容器內(nèi)部

  74. name: string

  75. items:

  76. - key: string

  77. path: string

以上是“kubernetes中Pod是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


當前標題:kubernetes中Pod是什么
路徑分享:http://www.dlmjj.cn/article/pgcgci.html