POD的管理與使用(7)

Pod的概念摄悯,如何使用Pod赞季,如何編寫Yaml格式文件,如何使用不同類型的Pod等奢驯、
? 描述Pod特性
? 區(qū)分單容器Pod和多容器Pod
? 區(qū)分運行常駐任務(wù)的Pod和運行一次性任務(wù)的Pod

1.POD基本概念

  • Pod是Kubernetes管理的最小基礎(chǔ)單元
  • 一個Pod中封裝了:
    ? 一個或多個緊耦合的應(yīng)用容器
    緊耦合的理解:容器共享存儲申钩,共享ip地址
    ? 存儲資源
    ? 獨立的IP
    ? 容器運行的選項

1.1 Pod的兩種模式

  • 只包含一個應(yīng)用容器的pod
    ? “一個pod一個容器”的模式是在Kubernetes中主流的使用場景。
    ? 在這種場景中瘪阁,pod可以被看做是一個“包裝紙”包著的容器撒遣。Kubernetes不能直接
    管理容器,而是需要通過管理pod來管理容器
  • 包含多個應(yīng)用的pod
    ? 僅當兩種容器緊耦合管跺,且需要共享相同的資源時使用這一種模式义黎。共享ip、共享存儲
    ? 這些在一個pod內(nèi)的容器形成一個統(tǒng)一的服務(wù)單元豁跑。例如一個容器從共享卷提供文件轩缤,而另一個容器刷新或更新資源。Pod將這些容器和存儲資源作為單個可管理的實體包裝在一起贩绕。一般要有一個主容器,如主容器將數(shù)據(jù)放入到共享存儲壶愤,輔容器對數(shù)據(jù)文件進行提取淑倾。

1.2 Pod內(nèi)部結(jié)構(gòu)

  • 當一個多容器的Pod中有一個容器故障了,這個pod是故障還是正常征椒?
  • 一個pod共享存儲和ip娇哆,那這個存儲和IP應(yīng)該掛載在容器1上還是容器2上?
  • 一個pod中會分配一個pause容器勃救,這也被稱為根容器碍讨,也叫基礎(chǔ)設(shè)施容器
    在任何一個POD中都有一個pause
    ? Pause容器的狀態(tài)代表整個pod的狀態(tài)
    ? Pod中多個容器共享pause容器的ip和存儲,容器間可以通過localhost互訪(實際就是lo網(wǎng)卡蒙秒,因為容器沒有ip地址勃黍,所以他們之間的訪問通過回路lo機制實現(xiàn))。(典型的volume container模式)
    image.png

查看pause容器

[root@k8s-node1 ~]# docker ps
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS               NAMES
7158a6b4234f        nginx                  "/docker-entrypoint.…"   2 hours ago         Up 2 hours                              k8s_nginx_mydep-65bbdb4c9f-bvwmp_default_9280bbb1-7fff-11ec-a402-000c298dbe7d_0
1c266d5c1b74        k8s.gcr.io/pause:3.1   "/pause"                 2 hours ago         Up 2 hours                              k8s_POD_mydep-65bbdb4c9f-bvwmp_default_9280bbb1-7fff-11ec-a402-000c298dbe7d_0
4cdcc66071fc        nginx                  "/docker-entrypoint.…"   6 hours ago         Up 6 hours                              k8s_nginx_mydep-65bbdb4c9f-swgvz_default_ad3f7636-7fdf-11ec-a402-000c298dbe7d_0
efefdf6b1cb2        k8s.gcr.io/pause:3.1   "/pause"                 6 hours ago         Up 6 hours                              k8s_POD_mydep-65bbdb4c9f-swgvz_default_ad3f7636-7fdf-11ec-a402-000c298dbe7d_0
5cf5972924e8        ff281650a721           "/opt/bin/flanneld -…"   7 hours ago         Up 7 hours                              k8s_kube-flannel_kube-flannel-ds-amd64-wbbrw_kube-system_6375144f-7f22-11ec-aeb8-000c298dbe7d_1
2d86471f8f04        63b4dab6fab0           "/usr/local/bin/kube…"   7 hours ago         Up 7 hours                              k8s_kube-proxy_kube-proxy-c7kf4_kube-system_6374ff82-7f22-11ec-aeb8-000c298dbe7d_1
a103bfeb6cb7        k8s.gcr.io/pause:3.1   "/pause"                 7 hours ago         Up 7 hours                              k8s_POD_kube-flannel-ds-amd64-wbbrw_kube-system_6375144f-7f22-11ec-aeb8-000c298dbe7d_1
caba61e7b44a        k8s.gcr.io/pause:3.1   "/pause"                 7 hours ago         Up 7 hours                              k8s_POD_kube-proxy-c7kf4_kube-system_6374ff82-7f22-11ec-aeb8-000c298dbe7d_1

1.3Pod生命周期

Pod一旦被創(chuàng)建晕讲,會被master調(diào)度到某個具體的node上進行綁定覆获。Pod會呈現(xiàn)出不同的狀態(tài)马澈。


image.png
取值 描述
Pending(懸決) Pod 已被 Kubernetes 系統(tǒng)接受,但有一個或者多個容器尚未創(chuàng)建亦未運行弄息。此階段包括等待 Pod 被調(diào)度的時間和通過網(wǎng)絡(luò)下載鏡像的時間
Running(運行中) Pod 已經(jīng)綁定到了某個節(jié)點痊班,Pod 中所有的容器都已被創(chuàng)建。至少有一個容器仍在運行摹量,或者正處于啟動或重啟狀態(tài)涤伐。
Succeeded(成功) Pod 中的所有容器都已成功終止,并且不會再重啟缨称。
Failed(失斈) Pod 中的所有容器都已終止,并且至少有一個容器是因為失敗終止具钥。也就是說豆村,容器以非 0 狀態(tài)退出或者被系統(tǒng)終止。
Unknown(未知 因為某些原因無法取得 Pod 的狀態(tài)骂删。這種情況通常是因為與 Pod 所在主機通信失敗掌动。
pending:

1.沒有可用的物理節(jié)點時(需要的資源不夠,cpu宁玫、內(nèi)存)
2.image沒有下載成功

Succeeded:

有些pod不需要一直運行粗恢,如一過性的。執(zhí)行完成任務(wù)結(jié)束的
示例:

1.創(chuàng)建一個不存在的image的容器
[root@k8s-master ~]# kubectl run mypod --image=nginx2
pod/mypod created
[root@k8s-master ~]# kubectl get pod
NAME                     READY   STATUS         RESTARTS   AGE
mydep-65bbdb4c9f-bvwmp   1/1     Running        1          20h
mydep-65bbdb4c9f-sswdr   1/1     Running        1          20h
mydep-65bbdb4c9f-swgvz   1/1     Running        1          24h
mypod                    0/1     ErrImagePull   0          10s
[root@k8s-master ~]# k describe pod mypod
Name:         mypod
Namespace:    default
欧瘪。眷射。。佛掖。妖碉。。芥被。
Status:       Pending
IP:           10.244.2.10

k get pod 看到的是一個合成狀態(tài)欧宜。需要用k describe 命令才能看到真正的狀態(tài)。describe經(jīng)常用語拍錯

[root@k8s-master ~]# k describe mypod
error: the server doesn't have a resource type "mypod"
[root@k8s-master ~]# k describe pod mypod
Name:         mypod
Namespace:    default
Priority:     0
Node:         k8s-node2/192.168.227.12
Start Time:   Sat, 29 Jan 2022 10:52:08 +0800
Labels:       run=mypod
Annotations:  <none>
Status:       Pending
IP:           10.244.2.10
拴魄。冗茸。。匹中。夏漱。
State:          Waiting
      Reason:       ImagePullBackOff
    Ready:          False
2 使用yaml文件創(chuàng)建一個pod
[root@k8s-master ~]# cat > /root/mypod.yaml <<EOF
apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
spec:
  containers:
  - name: myapp-container
    image: busybox:1.28
    command: ['sh', '-c', 'echo The app is running! && sleep 3600']
> EOF
[root@k8s-master ~]# k get pod -w
NAME                     READY   STATUS         RESTARTS   AGE
myapp-pod                1/1     Running        0          117s
mydep-65bbdb4c9f-bvwmp   1/1     Running        1          24h
mydep-65bbdb4c9f-sswdr   1/1     Running        1          24h
mydep-65bbdb4c9f-swgvz   1/1     Running        1          28h
mypod                    0/1     ErrImagePull   0          3h29m

因為運行pod必須要有一個前臺進程才能啟動,否則起來就自動終止顶捷,busybox本身是linux的命令集挂绰,沒有前臺進程。所以利用args 定一個前臺進程服赎。

3 根據(jù)pod生成yaml文件
[root@k8s-master ~]# k get pods myapp-pod  -oyaml > /root/pod2.yaml
[root@k8s-master ~]# cat pod2.yaml

2. 使用Pod

  • 創(chuàng)建pod
    1)使用create命令由該文件創(chuàng)建pod
    kubectl create -f mypod.yaml
    2)使用get命令查看
    kubectl get pod
  • Pod管理常用命令
    1)查看pod命令時扮授,通過添加“-o=wide”參數(shù)獲取更多信息
    kubectl get pod -o=wide
    2)使用describe命令芳室,可以看到pod的完整信息
    kubectl describe pod mypod
    3)刪除Pod,使用delete命令
    kubectl delete pod mypod
    4)進入mypod的命令行
    kubectl exec -it mypod -- /bin/sh
    5)在pod中可能存在多個容器刹勃,加入“--container 容器名“參數(shù)指定進入容器
    kubectl exec -it mypod --container mypod -- /bin/sh
    6)如果希望退出當前所在容器堪侯,可以輸入exit回車退出
  • Pod內(nèi)容器查看
    在之前使用命令查看pod狀態(tài)時,可以檢索到Pod所在的位置
    kubectl get pod -o=wide
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末荔仁,一起剝皮案震驚了整個濱河市伍宦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌乏梁,老刑警劉巖次洼,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異遇骑,居然都是意外死亡卖毁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門落萎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來亥啦,“玉大人,你說我怎么就攤上這事练链∠柰眩” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵媒鼓,是天一觀的道長届吁。 經(jīng)常有香客問我,道長绿鸣,這世上最難降的妖魔是什么疚沐? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮潮模,結(jié)果婚禮上亮蛔,老公的妹妹穿的比我還像新娘。我一直安慰自己再登,他們只是感情好,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布晾剖。 她就那樣靜靜地躺著锉矢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪齿尽。 梳的紋絲不亂的頭發(fā)上沽损,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機與錄音循头,去河邊找鬼绵估。 笑死炎疆,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的国裳。 我是一名探鬼主播形入,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼缝左!你這毒婦竟也來了亿遂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤渺杉,失蹤者是張志新(化名)和其女友劉穎蛇数,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體是越,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡耳舅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了倚评。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浦徊。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蔓纠,靈堂內(nèi)的尸體忽然破棺而出辑畦,到底是詐尸還是另有隱情,我是刑警寧澤腿倚,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布纯出,位于F島的核電站,受9級特大地震影響敷燎,放射性物質(zhì)發(fā)生泄漏暂筝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一硬贯、第九天 我趴在偏房一處隱蔽的房頂上張望焕襟。 院中可真熱鬧,春花似錦饭豹、人聲如沸鸵赖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽它褪。三九已至,卻和暖如春翘悉,著一層夾襖步出監(jiān)牢的瞬間茫打,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留老赤,地道東北人轮洋。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像抬旺,于是被迫代替她去往敵國和親弊予。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

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

  • kubernetes的pod管理 一個Pod中的應(yīng)用容器共享同一組資源: (1)PID命名空間:Pod中的不同應(yīng)用...
    liuzg0734閱讀 3,097評論 0 0
  • 1.獲取資源 kubectlget 2.查看資源詳情 kubectl describe <reousrce_typ...
    365a3735241a閱讀 852評論 0 0
  • Pod是k8s系統(tǒng)中可以創(chuàng)建和管理的最小單元嚷狞,是資源對象模型中由用戶創(chuàng)建或部署的最小資源對象模型块促,也是在k8s上運...
    程序員札記閱讀 971評論 0 1
  • Pod介紹 Pod是kubernetes中可以創(chuàng)建和部署的最小也是最簡的單位。一個Pod代表著集群中運行的一個進程...
    小波同學(xué)閱讀 1,995評論 0 1
  • 1.Pod Pod是k8s的最基本的操作單元床未,包含一個或多個緊密相關(guān)的容器竭翠,類似于豌豆莢的概念。一個Pod可以被一...
    jony456123閱讀 7,409評論 0 5