91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

kubernetes中Pod是什么

發布時間:2021-12-24 16:28:57 來源:億速云 閱讀:358 作者:小新 欄目:大數據

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

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

kubernetes中Pod是什么
一個Pod由一個特殊的根容器Pause容器和若干個緊密相關的用戶業務容器組成。

Pause容器作為Pod的根容器,它的狀態代表整個容器組的狀態。

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

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

Pod里面的容器除了共享網絡和存儲外,還共享:

PID namespace:一個Pod內的容器能夠看到對方容器的進程

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

UTS namespace : 一個Pod內的容器共享主機名。

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


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

kubernetes中Pod是什么

三:Pod的生命周期

kubernetes中Pod是什么

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

四:Pod的健康檢查

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

全自動調度:
NodeSelector:定向調度

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

NodeAffinity:親和性調度

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

DaemonSet特定場景調度: 

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


批處理調度:

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


  1. # yaml格式的pod定義文件完整內容:

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

  3. kind: Pod       #必選,Pod

  4. metadata:       #必選,元數據

  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表示優先使用本地鏡像,否則下載鏡像,Nerver表示僅使用本地鏡像

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

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

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

  19. volumeMounts:     #掛載到容器內部的存儲卷配置

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

  21. mountPath: string     #存儲卷在容器內mount的絕對路徑,應少于512字符

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

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

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

  25. containerPort: int    #容器需要監聽的端口號

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

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

  28. env:        #容器運行前需設置的環境變量列表

  29. - name: string      #環境變量名稱

  30. value: string     #環境變量的值

  31. resources:        #資源限制和請求的設置

  32. limits:       #資源限制的設置

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

  34. memory: string      #內存限制,單位可以為Mib/Gib,將用于docker run --memory參數

  35. requests:       #資源請求的設置

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

  37. memory: string      #內存清楚,容器啟動的初始可用數量

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

  39. exec:       #對Pod容器內檢查方式設置為exec方式

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

  41. httpGet:        #對Pod內個容器健康檢查方法設置為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內個容器健康檢查方式設置為tcpSocket方式

  50. port: number

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

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

  53. periodSeconds: 0     #對容器監控檢查的定期探測時間設置,單位秒,默認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   #設置NodeSelector表示將該Pod調度到包含這個label的node上,以key:value的格式指定

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

  61. - name: string

  62. hostNetwork: false      #是否使用主機網絡模式,默認為false,如果設置為true,表示使用宿主機網絡

  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對象到容器內部

  69. scretname: string

  70. items:

  71. - key: string

  72. path: string

  73. configMap:      #類型為configMap的存儲卷,掛載預定義的configMap對象到容器內部

  74. name: string

  75. items:

  76. - key: string

  77. path: string

以上是“kubernetes中Pod是什么”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

余姚市| 刚察县| 高清| 即墨市| 安宁市| 贡嘎县| 黔西县| 蒙城县| 敦煌市| 绥芬河市| 改则县| 尉犁县| 泰和县| 云阳县| 林周县| 禄丰县| 泸水县| 天等县| 雅江县| 普格县| 邓州市| 上高县| 延吉市| 菏泽市| 塔河县| 英吉沙县| 兴文县| 临朐县| 鄂托克前旗| 康保县| 盐源县| 岳阳市| 阿荣旗| 和田市| 陈巴尔虎旗| 黑水县| 永嘉县| 菏泽市| 扎囊县| 乐亭县| 抚顺县|