k8s-實(shí)戰(zhàn)入門-Pod詳解(十)

本章節(jié)將詳細(xì)介紹Pod資源的各種配置(yaml)和原理。

5.1 Pod介紹

5.1.1 Pod結(jié)構(gòu)


每個(gè)Pod中都可以包含一個(gè)或者多個(gè)容器缰泡,這些容器可以分為兩類:

  • 用戶程序所在的容器,數(shù)量可多可少验靡。
  • Pause容器演痒,這是每個(gè)Pod都會(huì)有的一個(gè)根容器,它的作用有兩個(gè):
    可以以它為依據(jù)杠步,評(píng)估整個(gè)Pod的健康狀態(tài)
    可以在根容器上設(shè)置IP地址,其它容器都此IP(Pod IP)榜轿,以實(shí)現(xiàn)Pod內(nèi)部的網(wǎng)路通信
    這里是Pod內(nèi)部的通訊幽歼,Pod的之間的通訊采用虛擬二層網(wǎng)絡(luò)技術(shù)來實(shí)現(xiàn),我們當(dāng)前環(huán)境用的是Flannel

5.1.2 Pod定義

下面是Pod的資源清單:

apiVersion: v1     #必選谬盐,版本號(hào)甸私,例如v1
kind: Pod         #必選,資源類型飞傀,例如 Pod
metadata:         #必選皇型,元數(shù)據(jù)
  name: string     #必選,Pod名稱
  namespace: string  #Pod所屬的命名空間,默認(rèn)為"default"
  labels:           #自定義標(biāo)簽列表
    - name: string                 
spec:  #必選砸烦,Pod中容器的詳細(xì)定義
  containers:  #必選弃鸦,Pod中容器列表
  - name: string   #必選,容器名稱
    image: string  #必選幢痘,容器的鏡像名稱
    imagePullPolicy: [ Always|Never|IfNotPresent ]  #獲取鏡像的策略 
    command: [string]   #容器的啟動(dòng)命令列表唬格,如不指定,使用打包時(shí)使用的啟動(dòng)命令
    args: [string]      #容器的啟動(dòng)命令參數(shù)列表
    workingDir: string  #容器的工作目錄
    volumeMounts:       #掛載到容器內(nèi)部的存儲(chǔ)卷配置
    - name: string      #引用pod定義的共享存儲(chǔ)卷的名稱颜说,需用volumes[]部分定義的的卷名
      mountPath: string #存儲(chǔ)卷在容器內(nèi)mount的絕對(duì)路徑购岗,應(yīng)少于512字符
      readOnly: boolean #是否為只讀模式
    ports: #需要暴露的端口庫號(hào)列表
    - name: string        #端口的名稱
      containerPort: int  #容器需要監(jiān)聽的端口號(hào)
      hostPort: int       #容器所在主機(jī)需要監(jiān)聽的端口號(hào),默認(rèn)與Container相同
      protocol: string    #端口協(xié)議脑沿,支持TCP和UDP藕畔,默認(rèn)TCP
    env:   #容器運(yùn)行前需設(shè)置的環(huán)境變量列表
    - name: string  #環(huán)境變量名稱
      value: string #環(huán)境變量的值
    resources: #資源限制和請(qǐng)求的設(shè)置
      limits:  #資源限制的設(shè)置
        cpu: string     #Cpu的限制马僻,單位為core數(shù)庄拇,將用于docker run --cpu-shares參數(shù)
        memory: string  #內(nèi)存限制,單位可以為Mib/Gib韭邓,將用于docker run --memory參數(shù)
      requests: #資源請(qǐng)求的設(shè)置
        cpu: string    #Cpu請(qǐng)求措近,容器啟動(dòng)的初始可用數(shù)量
        memory: string #內(nèi)存請(qǐng)求,容器啟動(dòng)的初始可用數(shù)量
    lifecycle: #生命周期鉤子
        postStart: #容器啟動(dòng)后立即執(zhí)行此鉤子,如果執(zhí)行失敗,會(huì)根據(jù)重啟策略進(jìn)行重啟
        preStop: #容器終止前執(zhí)行此鉤子,無論結(jié)果如何,容器都會(huì)終止
    livenessProbe:  #對(duì)Pod內(nèi)各容器健康檢查的設(shè)置,當(dāng)探測(cè)無響應(yīng)幾次后將自動(dòng)重啟該容器
      exec:         #對(duì)Pod容器內(nèi)檢查方式設(shè)置為exec方式
        command: [string]  #exec方式需要制定的命令或腳本
      httpGet:       #對(duì)Pod內(nèi)個(gè)容器健康檢查方法設(shè)置為HttpGet女淑,需要制定Path瞭郑、port
        path: string
        port: number
        host: string
        scheme: string
        HttpHeaders:
        - name: string
          value: string
      tcpSocket:     #對(duì)Pod內(nèi)個(gè)容器健康檢查方式設(shè)置為tcpSocket方式
         port: number
       initialDelaySeconds: 0       #容器啟動(dòng)完成后首次探測(cè)的時(shí)間,單位為秒
       timeoutSeconds: 0          #對(duì)容器健康檢查探測(cè)等待響應(yīng)的超時(shí)時(shí)間鸭你,單位秒屈张,默認(rèn)1秒
       periodSeconds: 0           #對(duì)容器監(jiān)控檢查的定期探測(cè)時(shí)間設(shè)置擒权,單位秒,默認(rèn)10秒一次
       successThreshold: 0
       failureThreshold: 0
       securityContext:
         privileged: false
  restartPolicy: [Always | Never | OnFailure]  #Pod的重啟策略
  nodeName: <string> #設(shè)置NodeName表示將該P(yáng)od調(diào)度到指定到名稱的node節(jié)點(diǎn)上
  nodeSelector: obeject #設(shè)置NodeSelector表示將該P(yáng)od調(diào)度到包含這個(gè)label的node上
  imagePullSecrets: #Pull鏡像時(shí)使用的secret名稱阁谆,以key:secretkey格式指定
  - name: string
  hostNetwork: false   #是否使用主機(jī)網(wǎng)絡(luò)模式碳抄,默認(rèn)為false,如果設(shè)置為true场绿,表示使用宿主機(jī)網(wǎng)絡(luò)
  volumes:   #在該pod上定義共享存儲(chǔ)卷列表
  - name: string    #共享存儲(chǔ)卷名稱 (volumes類型有很多種)
    emptyDir: {}       #類型為emtyDir的存儲(chǔ)卷剖效,與Pod同生命周期的一個(gè)臨時(shí)目錄。為空值
    hostPath: string   #類型為hostPath的存儲(chǔ)卷焰盗,表示掛載Pod所在宿主機(jī)的目錄
      path: string                #Pod所在宿主機(jī)的目錄璧尸,將被用于同期中mount的目錄
    secret:          #類型為secret的存儲(chǔ)卷,掛載集群與定義的secret對(duì)象到容器內(nèi)部
      scretname: string  
      items:     
      - key: string
        path: string
    configMap:         #類型為configMap的存儲(chǔ)卷熬拒,掛載預(yù)定義的configMap對(duì)象到容器內(nèi)部
      name: string
      items:
      - key: string
        path: string
小提示:
# 在這里爷光,可通過一個(gè)命令來查看每種資源的可配置項(xiàng)
#  kubectl **explain** 資源類型        查看某種資源可以配置的一級(jí)屬性
# kubectl explain 資源類型.屬性    查看屬性的子屬性
[root@master ~]# kubectl explain pod
[root@master ~]# kubectl explain pod.metadata
在kubernetes中基本所有資源的一級(jí)屬性都是一樣的,主要包含5部分:
 apiVersion  <string>    版本澎粟,由kubernetes內(nèi)部定義瞎颗,版本號(hào)必須可以用 kubectl api-versions 查詢到
 kind <string>                類型,由kubernetes內(nèi)部定義捌议,版本號(hào)必須可以用 kubectl api-resources 查詢到
metadata  <Object>    元數(shù)據(jù)哼拔,主要是資源標(biāo)識(shí)和說明,常用的有name瓣颅、namespace倦逐、labels等
> 
> spec <Object>              描述,這是配置中最重要的一部分宫补,里面是對(duì)各種資源配置的詳細(xì)描述               
> 
> status  <Object>            狀態(tài)信息檬姥,里面的內(nèi)容不需要定義,由kubernetes自動(dòng)生成
kubectl apiversions
kubectl api-resources
kubectl get pods nginx-64777cd554-4k4pf -n dev -o yaml


在上面的屬性中粉怕,spec是接下來研究的重點(diǎn)健民,繼續(xù)看下它的常見子屬性:

containers  <[]Object>      容器列表,用于定義容器的詳細(xì)信息
nodeName <String>          根據(jù)nodeName的值將pod調(diào)度到指定的Node節(jié)點(diǎn)上
nodeSelector  <map[]>      根據(jù)NodeSelector中定義的信息選擇將該P(yáng)od調(diào)度到包含這些label的Node 上
hostNetwork  <boolean>    是否使用主機(jī)網(wǎng)絡(luò)模式贫贝,默認(rèn)為false秉犹,如果設(shè)置為true,表示使用宿主機(jī)網(wǎng)絡(luò)
volumes      <[]Object>      存儲(chǔ)卷稚晚,用于定義Pod上面掛在的存儲(chǔ)信息
restartPolicy <string>      重啟策略崇堵,表示Pod在遇到故障的時(shí)候的處理策略
kubectl explain pods.spec
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市客燕,隨后出現(xiàn)的幾起案子鸳劳,更是在濱河造成了極大的恐慌,老刑警劉巖也搓,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赏廓,死亡現(xiàn)場(chǎng)離奇詭異涵紊,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)幔摸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門栖袋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人抚太,你說我怎么就攤上這事塘幅。” “怎么了尿贫?”我有些...
    開封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵电媳,是天一觀的道長。 經(jīng)常有香客問我庆亡,道長匾乓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任又谋,我火速辦了婚禮拼缝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘彰亥。我一直安慰自己咧七,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開白布任斋。 她就那樣靜靜地躺著继阻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪废酷。 梳的紋絲不亂的頭發(fā)上瘟檩,一...
    開封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音澈蟆,去河邊找鬼墨辛。 笑死,一個(gè)胖子當(dāng)著我的面吹牛趴俘,可吹牛的內(nèi)容都是我干的睹簇。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼哮幢,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼带膀!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起橙垢,我...
    開封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎伦糯,沒想到半個(gè)月后柜某,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嗽元,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年喂击,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了剂癌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡翰绊,死狀恐怖佩谷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情监嗜,我是刑警寧澤谐檀,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站裁奇,受9級(jí)特大地震影響桐猬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜刽肠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一溃肪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧音五,春花似錦惫撰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至诞挨,卻和暖如春莉撇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背惶傻。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來泰國打工棍郎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人银室。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓涂佃,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蜈敢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子辜荠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容