国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

云原生Kubernetes:pod基礎(chǔ)

這篇具有很好參考價(jià)值的文章主要介紹了云原生Kubernetes:pod基礎(chǔ)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

一、理論

1.pod

2.pod容器分類(lèi)

3.鏡像拉取策略

4.pod 的重啟策略

二、實(shí)驗(yàn)

1.Pod容器的分類(lèi)

2.鏡像拉取策略

三、問(wèn)題

1.apiVersion 報(bào)錯(cuò)

2.pod v1版本資源未注冊(cè)

3.格式錯(cuò)誤

4.取行顯示指定pod信息

四、總結(jié)


一、理論

1.pod

(1)? 概念

?Pod是kubernetes中最小的資源管理組件,Pod也是最小化運(yùn)行容器化應(yīng)用的資源對(duì)象。一個(gè)Pod代表著集群中運(yùn)行的一個(gè)進(jìn)程。kubernetes中其他大多數(shù)組件都是圍繞著Pod來(lái)進(jìn)行支撐和擴(kuò)展Pod功能的,例如,用于管理Pod運(yùn)行的StatefulSet和Deployment等控制器對(duì)象,用于暴露Pod應(yīng)用的Service和Ingress對(duì)象,為Pod提供存儲(chǔ)的PersistentVolume存儲(chǔ)資源對(duì)象等。

pod:
云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

node:

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

service:

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

(2)K8S集群中Pod兩種使用方式

①??一個(gè)Pod中運(yùn)行一個(gè)容器
? ? ? ? “每個(gè)Pod中一個(gè)容器”的模式是最常見(jiàn)的用法;在這種使用方式中,你可以把Pod想象成是單個(gè)容器的封裝,kuberentes管理的是Pod而不是直接管理容器。

②??在一個(gè)Pod中同時(shí)運(yùn)行多個(gè)容器。
? ? ? ? 一個(gè)Pod中也可以同時(shí)封裝幾個(gè)需要緊密耦合互相協(xié)作的容器,它們之間共享資源。這些在同一個(gè)Pod中的容器可以互相協(xié)作成為一個(gè)service單位,比如一個(gè)容器共享文件,另一個(gè)“sidecar”容器來(lái)更新這些文件。Pod將這些容器的存儲(chǔ)資源作為一個(gè)實(shí)體來(lái)管理。

? ? ? ? 一個(gè)Pod下的容器必須運(yùn)行于同一節(jié)點(diǎn)上。現(xiàn)代容器技術(shù)建議一個(gè)容器只運(yùn)行一個(gè)進(jìn)程,該進(jìn)程在容器中PID命令空間中的進(jìn)程號(hào)為1,可直接接收并處理信號(hào),進(jìn)程終止時(shí)容器生命周期也就結(jié)束了。若想在容器內(nèi)運(yùn)行多個(gè)進(jìn)程,需要有一個(gè)類(lèi)似Linux操作系統(tǒng)init進(jìn)程的管控類(lèi)進(jìn)程,以樹(shù)狀結(jié)構(gòu)完成多進(jìn)程的生命周期管理。運(yùn)行于各自容器內(nèi)的進(jìn)程無(wú)法直接完成網(wǎng)絡(luò)通信,這是由于容器間的隔離機(jī)制導(dǎo)致,k8s中的Pod資源抽象正是解決此類(lèi)問(wèn)題,Pod對(duì)象是一組容器的集合,這些容器共享Network、UTS及IPC命令空間,因此具有相同的域名、主機(jī)名和網(wǎng)絡(luò)接口,并可通過(guò)IPC直接通信。

? ? ? ? Pod資源中針對(duì)各容器提供網(wǎng)絡(luò)命令空間等共享機(jī)制的是底層基礎(chǔ)容器pause,基礎(chǔ)容器(也可稱(chēng)為父容器)pause就是為了管理Pod容器間的共享操作,這個(gè)父容器需要能夠準(zhǔn)確地知道如何去創(chuàng)建共享運(yùn)行環(huán)境的容器,還能管理這些容器的生命周期。為了實(shí)現(xiàn)這個(gè)父容器的構(gòu)想,kubernetes中,用pause容器來(lái)作為一個(gè)Pod中所有容器的父容器。這個(gè)pause容器有兩個(gè)核心的功能,一是它提供整個(gè)Pod的Linux命名空間的基礎(chǔ)。二來(lái)啟用PID命名空間,它在每個(gè)Pod中都作為PID為1進(jìn)程(init進(jìn)程),并回收僵尸進(jìn)程。
云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

(3)pause

? ? pause容器使得Pod中的所有容器可以共享兩種資源:網(wǎng)絡(luò)和存儲(chǔ)。

①?網(wǎng)絡(luò):
? ? ? ? 每個(gè)Pod都會(huì)被分配一個(gè)唯一的IP地址。Pod中的所有容器共享網(wǎng)絡(luò)空間,包括IP地址和端口。Pod內(nèi)部的容器可以使用localhost互相通信。Pod中的容器與外界通信時(shí),必須分配共享網(wǎng)絡(luò)資源(例如使用宿主機(jī)的端口映射)。

②?存儲(chǔ):
? ? ? ?Pod可以指定多個(gè)共享的Volume。Pod中的所有容器都可以訪問(wèn)共享的Volume。Volume也可以用來(lái)持久化Pod中的存儲(chǔ)資源,以防容器重啟后文件丟失。

?③?小結(jié)
? ? ? ? 每個(gè)Pod都有一個(gè)特殊的被稱(chēng)為“基礎(chǔ)容器”的Pause容器。Pause容器對(duì)應(yīng)的鏡像屬于Kubernetes平臺(tái)的一部分,除了Pause容器,每個(gè)Pod還包含一個(gè)或者多個(gè)緊密相關(guān)的用戶(hù)應(yīng)用容器。

(4)pause容器功能

①??在pod中擔(dān)任Linux命名空間(如網(wǎng)絡(luò)命令空間)共享的基礎(chǔ);

②??啟用PID命名空間,開(kāi)啟init進(jìn)程。

(5)pod設(shè)計(jì)特殊組成結(jié)構(gòu)目的

①?原因一:在一組容器作為一個(gè)單元的情況下,難以對(duì)整體的容器簡(jiǎn)單地進(jìn)行判斷及有效地進(jìn)行行動(dòng)。比如,一個(gè)容器死亡了,此時(shí)是算整體掛了么?那么引入與業(yè)務(wù)無(wú)關(guān)的Pause容器作為Pod的基礎(chǔ)容器,以它的狀態(tài)代表著整個(gè)容器組的狀態(tài),這樣就可以解決該問(wèn)題。

②?原因二:Pod里的多個(gè)應(yīng)用容器共享Pause容器的IP,共享Pause容器掛載的Volume,這樣簡(jiǎn)化了應(yīng)用容器之間的通信問(wèn)題,也解決了容器之間的文件共享問(wèn)題。

(6)pod分類(lèi)

通常把Pod分為兩類(lèi):

1.自主式Pod 
1)創(chuàng)建方式(類(lèi)似自營(yíng))
   kubectl run pod 用于創(chuàng)建一個(gè)自主/靜態(tài)pod
注意:它就是創(chuàng)建一個(gè)pod,這個(gè)pod一旦掛了就不會(huì)在node上拉起來(lái),這個(gè)pod式靜態(tài)pod,它不是存在etcd,二十存在node當(dāng)中
2)概念
   這種Pod本身是不能自我修復(fù)的,當(dāng)Pod被創(chuàng)建后(不論是由你直接創(chuàng)建還是被其他Controller),都會(huì)被Kuberentes調(diào)度到集群的Node上。直到Pod的進(jìn)程終止、被刪掉、因?yàn)槿鄙儋Y源而被驅(qū)逐、或者Node故障之前這個(gè)Pod都會(huì)一直保持在那個(gè)Node上。Pod不會(huì)自愈。如果Pod運(yùn)行的Node故障,或者是調(diào)度器本身故障,這個(gè)Pod就會(huì)被刪除。同樣的,如果Pod所在Node缺少資源或者Pod處于維護(hù)狀態(tài),Pod也會(huì)被驅(qū)逐。


2.控制器管理的Pod
1)創(chuàng)建方式(類(lèi)似有人管)
  kubectl create deployment 用于創(chuàng)建deployment控制管理器的pod
注意:這種pod是在控制管理器當(dāng)中,舉例:比如pod運(yùn)行在node1上,控制器會(huì)保證pod的數(shù)量,如果node1掛了,它會(huì)在node2或者其他node節(jié)點(diǎn)重新拉取pod的數(shù)量
2)概念
  Kubernetes使用更高級(jí)的稱(chēng)為Controller的抽象層,來(lái)管理Pod實(shí)例。Controller可以創(chuàng)建和管理多個(gè)Pod,提供副本管理、滾動(dòng)升級(jí)和集群級(jí)別的自愈能力。例如,如果一個(gè)Node故障,Controller就能自動(dòng)將該節(jié)點(diǎn)上的Pod調(diào)度到其他健康的Node上。雖然可以直接使用Pod,但是在Kubernetes中通常是使用Controller來(lái)管理Pod的。

2.pod容器分類(lèi)

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

(1)基礎(chǔ)容器(infrastructure?container)

維護(hù)整個(gè) Pod 網(wǎng)絡(luò)和存儲(chǔ)空間
node 節(jié)點(diǎn)中操作
啟動(dòng)一個(gè)容器時(shí),k8s會(huì)自動(dòng)啟動(dòng)一個(gè)基礎(chǔ)容器

cat /opt/kubernetes/cfg/kubelet

每次創(chuàng)建 Pod 時(shí)候就會(huì)創(chuàng)建,運(yùn)行的每一個(gè)容器都有一個(gè) pause-amd64 的基礎(chǔ)容器自動(dòng)會(huì)運(yùn)行,對(duì)于用戶(hù)是透明的

#在mster上創(chuàng)建pod
[root@master01 ~]# kubectl create deployment nginx-demo1 --image=nginx:1.14

#查看pod 被調(diào)度在哪個(gè)node節(jié)點(diǎn)上
[root@master01 ~]# kubectl get pod nginx-demo1-7bf84576d8-nhv9n  -o wide 

#在node01節(jié)點(diǎn)上,查看容器,發(fā)現(xiàn)自動(dòng)創(chuàng)建了pause容器
[root@node01 ~]# docker ps  | grep nginx-demo1

(2)初始化容器(initcontainers)

?Init容器必須在應(yīng)用程序容器啟動(dòng)之前運(yùn)行完成,而應(yīng)用程序容器是并行運(yùn)行的,所以Init容器能夠提供了一種簡(jiǎn)單的阻塞或延遲應(yīng)用容器的啟動(dòng)的方法。

Init 容器與普通的容器非常像,除了以下兩點(diǎn):

●Init 容器總是運(yùn)行到成功完成為止

●每個(gè) Init 容器都必須在下一個(gè) Init 容器啟動(dòng)之前成功完成啟動(dòng)和退出

如果 Pod 的 Init 容器失敗,k8s 會(huì)不斷地重啟該 Pod,直到 Init 容器成功為止。然而,如果 Pod 對(duì)應(yīng)的重啟策略(restartPolicy)為 Never,它不會(huì)重新啟動(dòng)。

Init 的容器作用

因?yàn)閕nit容器具有與應(yīng)用容器分離的單獨(dú)鏡像,其啟動(dòng)相關(guān)代碼具有如下優(yōu)勢(shì):
●Init 容器可以包含一些安裝過(guò)程中應(yīng)用容器中不存在的實(shí)用工具或個(gè)性化代碼。例如,沒(méi)有必要僅為了在安裝過(guò)程中使用類(lèi)似 sed、 awk、 python 或 dig 這樣的工具而去FROM 一個(gè)鏡像來(lái)生成一個(gè)新的鏡像。

●Init 容器可以安全地運(yùn)行這些工具,避免這些工具導(dǎo)致應(yīng)用鏡像的安全性降低。

●應(yīng)用鏡像的創(chuàng)建者和部署者可以各自獨(dú)立工作,而沒(méi)有必要聯(lián)合構(gòu)建一個(gè)單獨(dú)的應(yīng)用鏡像。

●Init 容器能以不同于Pod內(nèi)應(yīng)用容器的文件系統(tǒng)視圖運(yùn)行。因此,Init容器可具有訪問(wèn) Secrets 的權(quán)限,而應(yīng)用容器不能夠訪問(wèn)。

●由于 Init 容器必須在應(yīng)用容器啟動(dòng)之前運(yùn)行完成,因此 Init 容器提供了一種機(jī)制來(lái)阻塞或延遲應(yīng)用容器的啟動(dòng),
直到滿(mǎn)足了一組先決條件。一旦前置條件滿(mǎn)足,Pod內(nèi)的所有的應(yīng)用容器會(huì)并行啟動(dòng)。

(3)??應(yīng)用容器(Maincontainer)

并行啟動(dòng)官網(wǎng)示例:

https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
 
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']
  initContainers:
  - name: init-myservice
    image: busybox:1.28
    command: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done;']
  - name: init-mydb
    image: busybox:1.28
    command: ['sh', '-c', 'until nslookup mydb; do echo waiting for mydb; sleep 2; done;']

這個(gè)例子是定義了一個(gè)具有 2 個(gè) Init 容器的簡(jiǎn)單 Pod。 第一個(gè)等待 myservice 啟動(dòng), 第二個(gè)等待 mydb 啟動(dòng)。 一旦這兩個(gè) Init容器都啟動(dòng)完成,Pod 將啟動(dòng) spec 中的應(yīng)用容器。

kubectl describe pod myapp-pod
 
kubectl logs myapp-pod -c init-myservice
vim myservice.yaml
apiVersion: v1
kind: Service
metadata:
  name: myservice
spec:
  ports:
  - protocol: TCP
    port: 80
    targetPort: 9376
    
kubectl create -f myservice.yaml
 
kubectl get svc
 
kubectl get pods -n kube-system
 
kubectl get pods
 
vim mydb.yaml
apiVersion: v1
kind: Service
metadata:
  name: mydb
spec:
  ports:
  - protocol: TCP
    port: 80
    targetPort: 9377
    
kubectl create -f mydb.yaml
 
kubectl get pods

特別說(shuō)明:

●在Pod啟動(dòng)過(guò)程中,Init容器會(huì)按順序在網(wǎng)絡(luò)和數(shù)據(jù)卷初始化之后啟動(dòng)。每個(gè)容器必須在下一個(gè)容器啟動(dòng)之前成功退出。
●如果由于運(yùn)行時(shí)或失敗退出,將導(dǎo)致容器啟動(dòng)失敗,它會(huì)根據(jù)Pod的restartPolicy指定的策略進(jìn)行重試。然而,如果Pod的restartPolicy設(shè)置為Always,Init容器失敗時(shí)會(huì)使用RestartPolicy策略。
●在所有的Init容器沒(méi)有成功之前,Pod將不會(huì)變成Ready狀態(tài)。Init容器的端口將不會(huì)在Service中進(jìn)行聚集。正在初始化中的Pod處于Pending狀態(tài),但應(yīng)該會(huì)將Initializing狀態(tài)設(shè)置為true。
●如果Pod重啟,所有Init容器必須重新執(zhí)行。
●對(duì)Init容器spec的修改被限制在容器image字段,修改其他字段都不會(huì)生效。更改Init容器的image字段,等價(jià)于重啟該P(yáng)od。
●Init容器具有應(yīng)用容器的所有字段。除了readinessProbe,因?yàn)镮nit容器無(wú)法定義不同于完成(completion)的就緒(readiness)之外的其他狀態(tài)。這會(huì)在驗(yàn)證過(guò)程中強(qiáng)制執(zhí)行。
●在Pod中的每個(gè)app和Init容器的名稱(chēng)必須唯一;與任何其它容器共享同一個(gè)名稱(chēng),會(huì)在驗(yàn)證時(shí)拋出錯(cuò)誤。

3.鏡像拉取策略

? ? ? ? Pod 的核心是運(yùn)行容器,必須指定容器引擎,比如 Docker,啟動(dòng)容器時(shí),需要拉取鏡像,k8s 的鏡像拉取策略可以由用戶(hù)指定:

1、IfNotPresent:在鏡像已經(jīng)存在的情況下,kubelet 將不再去拉取鏡像,僅當(dāng)本地缺失時(shí)才從倉(cāng)庫(kù)中拉取,默認(rèn)的鏡像拉取策略

2、Always:每次創(chuàng)建 Pod 都會(huì)重新拉取一次鏡像;

3、Never:Pod 不會(huì)主動(dòng)拉取這個(gè)鏡像,僅使用本地鏡像。
注意:對(duì)于標(biāo)簽為“:latest”的鏡像文件,其默認(rèn)的鏡像獲取策略即為“Always”;而對(duì)于其他標(biāo)簽的鏡像,其默認(rèn)策略則為“IfNotPresent”。

(1) 官方示例

https://kubernetes.io/docs/concepts/containers/images

[root@master01 ~]# vim pod1.yaml
#當(dāng)kind: 的值為Pod,則表示創(chuàng)建自主式pod
apiVersion: v1
kind: Pod
metadata:
  name: pod-test1
spec:
  containers:
    - name: nginx
      image: nginx
      imagePullPolicy: Always
      #command字段可以定義容器啟動(dòng)后的第一個(gè)命令
      command: [ "echo", "SUCCESS" ]
kubectl create -f pod1.yaml

kubectl get pods -o wide
pod-test1                         0/1     CrashLoopBackOff   2          2m17s

#此時(shí) Pod 的狀態(tài)異常,原因是 echo 執(zhí)行完進(jìn)程終止,容器生命周期也就結(jié)束了

(2)?更新資源(方式一 僅注釋command)

此時(shí) Pod 的狀態(tài)異常,原因是 echo 執(zhí)行完進(jìn)程終止,容器生命周期也就結(jié)束了

kubectl describe pod pod-test1
......
Events:
  Type     Reason     Age                    From               Message
  ----     ------     ----                   ----               -------
  Normal   Scheduled  4m44s                  default-scheduler  Successfully assigned default/pod-test1 to node02
  Normal   Pulled     3m34s (x4 over 4m40s)  kubelet, node02    Successfully pulled image "nginx"
  Normal   Created    3m34s (x4 over 4m40s)  kubelet, node02    Created container nginx
  Normal   Started    3m34s (x4 over 4m40s)  kubelet, node02    Started container nginx
  Warning  BackOff    3m4s (x8 over 4m32s)   kubelet, node02    Back-off restarting failed container
  Normal   Pulling    2m50s (x5 over 4m43s)  kubelet, node02    Pulling image "nginx"

可以發(fā)現(xiàn) Pod 中的容器在生命周期結(jié)束后,由于 Pod 的重啟策略為 Always,容器再次重啟了,并且又重新開(kāi)始拉取鏡像

修改 pod1.yaml 文件

cd /opt/demo
vim pod1.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod-test1
spec:
  containers:
    - name: nginx
      image: nginx:1.14                            #修改 nginx 鏡像版本
      imagePullPolicy: Always
      #command: [ "echo", "SUCCESS" ]            #刪除

刪除原有的資源

kubectl delete -f pod1.yaml 

更新資源

kubectl apply -f pod1.yaml 

查看 Pod 狀態(tài)

[root@master demo]# kubectl get pods -o wide | awk 'NR==1 || NR==12'
NAME                                READY   STATUS    RESTARTS   AGE     IP            NODE     NOMINATED NODE   READINESS GATES
pod-test1                           1/1     Running   0          4m42s   10.244.1.37   node02   <none>           <none>

在任意 node 節(jié)點(diǎn)上使用 curl 查看頭部信息

[root@node01 ~]# curl -I http://10.244.1.37
HTTP/1.1 200 OK
Server: nginx/1.21.5
......
#使用edit 在線(xiàn)修改,查看資源配置
[root@master ~]# kubectl edit pod pod-test1

(3) 更新資源(方式二 同時(shí)注釋imagePullPolicy和command)

#修改pod1.yaml文件
[root@master ~]#vim pod1.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod-test1
spec:
  containers:
    - name: nginx
    #修改 nginx 鏡像版本,指定標(biāo)簽
      image: nginx:1.14				
      #注釋鏡像拉取策略
      #imagePullPolicy: Always
      #command: [ "echo", "SUCCESS" ]			#刪除
#刪除原有的資源
kubectl delete -f pod1.yaml 
#更新資源
kubectl apply -f pod1.yaml
[root@master ~]# kubectl get pods -o wide
NAME        READY   STATUS    RESTARTS   AGE     IP            NODE     NOMINATED NODE   READINESS GATES
myapp-pod   1/1     Running   0          88m     10.244.2.39   node01   <none>           <none>
pod-test1   1/1     Running   0          2m43s   10.244.2.40   node01   <none>           <none>
#使用edit 在線(xiàn)修改,查看資源配置
[root@master ~]# kubectl edit pod pod-test1

4.pod 的重啟策略

(1)概念

重啟策略(restartPolicy) : Pod在遇到故障之后重啟的動(dòng)作

Always:當(dāng)容器終止退出后,總是重啟容器,默認(rèn)策略
OnFailure:當(dāng)容器異常退出(退出狀態(tài)碼非0)時(shí),重啟容器;正常退出則不重啟容器
Never:當(dāng)容器終止退出,從不重啟容器。

注意: K8s中不支持重啟Pod資源,只有刪除重建

(2)示例

創(chuàng)建啟動(dòng)一個(gè)pod,查看狀態(tài)

[root@master01 ~]# vim pod3.yaml
apiVersion: v1
kind: Pod
metadata:
  name: foo
spec:
  containers:
  - name: busybox
    image: busybox
    args:
    - /bin/sh
    - -c
    - sleep 20; exit 3
#創(chuàng)建pod
kubectl apply -f pod3.yaml

#查看pod狀態(tài)
kubectl get pods

修改yaml 文件,設(shè)置重啟策略為Never

[root@master ~]# vim pod3.yaml
apiVersion: v1
kind: Pod
metadata:
  name: foo
spec:
  containers:
  - name: busybox
    image: busybox
    args:
    - /bin/sh
    - -c
    - sleep 20; exit 3
  #設(shè)置重啟策略為從不
  restartPolicy: Never                            
[root@master ~]# kubectl delete -f pod3.yaml

[root@master ~]# kubectl apply  -f pod3.yaml
#在74s后,即使過(guò)了 20s 也沒(méi)有新的狀態(tài)出現(xiàn).因?yàn)橹貑⒉呗允荖ever,所以,不會(huì)重啟
[root@master ~]# kubectl get pods foo -w
NAME   READY   STATUS              RESTARTS   AGE
foo    0/1     ContainerCreating   0          40s
foo    1/1     Running             0          54s
foo    0/1     Error               0          74s


#新開(kāi)一個(gè)終端查看狀態(tài)
[root@master ~]# kubectl get pods foo 
NAME   READY   STATUS   RESTARTS   AGE
foo    0/1     Error    0          103s

二、實(shí)驗(yàn)

1.Pod容器的分類(lèi)

(1)基礎(chǔ)容器(infrastructure?container)

在mster上創(chuàng)建pod

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

查看pod 被調(diào)度在哪個(gè)node節(jié)點(diǎn)上

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

在node01節(jié)點(diǎn)上,查看容器,發(fā)現(xiàn)自動(dòng)創(chuàng)建了pause容器

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

(2)?應(yīng)用容器(業(yè)務(wù)容器) (Maincontainer)

聲明式啟動(dòng)應(yīng)用容器

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

聲明式啟動(dòng)

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

②?查看信息

pod一直沒(méi)有起來(lái),兩個(gè)init進(jìn)程沒(méi)有完成

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

查看容器的詳細(xì)信息

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

容器狀態(tài)是false

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

顯示調(diào)度到node01節(jié)點(diǎn)成功(拉取鏡像,創(chuàng)建容器成功)

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

查看日志(無(wú)法解析myservice)

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

③?創(chuàng)建啟動(dòng)myservice,查看日志

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

聲明式創(chuàng)建資源

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

查看service,已經(jīng)有了名為myservice的service資源

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

查看pod,init進(jìn)程有一個(gè)已經(jīng)成功運(yùn)行

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

④?查看容器mydb日志

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

⑤?創(chuàng)建啟動(dòng)容器mydb,查看應(yīng)用容器的狀態(tài)

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

聲明式創(chuàng)建資源

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

查詢(xún)pod顯示正在初始化

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

在兩個(gè)init容器啟動(dòng)成功并結(jié)束后,應(yīng)用容器成功啟動(dòng)

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

2.鏡像拉取策略

(1)??更新資源(方式一 僅注釋command)

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

生成容器:

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

獲取信息:

此時(shí) Pod 的狀態(tài)異常,原因是 echo 執(zhí)行完進(jìn)程終止,容器生命周期也就結(jié)束了

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

查看詳細(xì)信息

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

修改 pod1.yaml 文件

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

刪除原有的資源

更新資源

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

查看 Pod 狀態(tài)

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

在任意 node 節(jié)點(diǎn)上使用 curl 查看頭部信息

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

(2) 更新資源(方式二 同時(shí)注釋imagePullPolicy和command)

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

刪除原有的資源并更新資源

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

查看詳細(xì)信息

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

使用edit 在線(xiàn)修改,查看資源配置

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

由于指定了鏡像的標(biāo)簽,所有默認(rèn)的鏡像拉取策略就是IfNotPresent

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

重啟策略Always

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

3.pod 的重啟策略

(1)??創(chuàng)建啟動(dòng)一個(gè)pod,查看狀態(tài)

編輯

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

創(chuàng)建pod

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

查看pod狀態(tài)

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

因?yàn)橛衧leep 20,所以在睡眠狀態(tài)時(shí),容器還在運(yùn)行,等睡眠狀態(tài)過(guò)了,容器就會(huì)關(guān)閉銷(xiāo)毀

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

容器銷(xiāo)毀

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

pod重啟策略默認(rèn)是always,所以開(kāi)始重啟pod

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

pod重建,里面的容器目前正在執(zhí)行sleep 20的命令,等睡眠狀態(tài)過(guò)了容器又會(huì)銷(xiāo)毀,pod又變成error,再次觸發(fā)重啟策略

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

(2)?修改yaml 文件,設(shè)置重啟策略為Never

設(shè)置重啟策略為從不

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

刪除

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

重新生成

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

在24s后,即使過(guò)了 20s 也沒(méi)有新的狀態(tài)出現(xiàn).因?yàn)橹貑⒉呗允荖ever,所以,不會(huì)重啟

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

新開(kāi)一個(gè)終端查看狀態(tài)

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

因?yàn)橹貑⒉呗允荖ever,所以不會(huì)重啟pod

三、問(wèn)題

1.apiVersion 報(bào)錯(cuò)

(1)報(bào)錯(cuò)

error: error validating "pod1.yaml": error validating data: apiVersion not set; if you choose to ignore these errors, turn validation off with --validate=false

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

(2)原因分析

apiVersion 未正確設(shè)置

(3)解決方法

修改前:

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

修改后:

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

2.pod v1版本資源未注冊(cè)

(1)報(bào)錯(cuò)

Error from server (BadRequest): error when creating "pod1.yaml": pod in version "v1" cannot be handled as a Pod: no kind "pod" is registered for version "v1" in scheme "k8s.io/kubernetes/pkg/api/legacyscheme/scheme.go:30"

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

(2)原因分析

報(bào)了版本的錯(cuò)誤,一查以為是沒(méi)有pod這種v1版本的資源,沒(méi)注冊(cè)

最后才發(fā)現(xiàn)是yaml文件中的pod的首字母需要大寫(xiě)Pod

(3)解決方法

修改前:

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

修改后:

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

成功

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

3.格式錯(cuò)誤

(1) 報(bào)錯(cuò)

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

(2)原因分析

配置格式錯(cuò)誤

(3)解決方法

修改錯(cuò)誤配置

修改前:

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

修改后:

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

4.取行顯示指定pod信息

(1)需求

只需求截取第1行標(biāo)題欄和第12行信息

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

(2)問(wèn)題

grep命令缺失標(biāo)題欄

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

(3)解決方法

用awk命令取行取列

[root@master demo]# kubectl get pods -o wide | awk 'NR==1 || NR==12'


云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

用sed命令取行


[root@master demo]# kubectl get pods -o wide | sed -n '1p;12p'

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

[root@master demo]# kubectl get pods -o wide | sed -n '/test1/p'
pod-test1                           1/1     Running   0          53m     10.244.1.37   node02   <none>           <none>

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

(4)awk小結(jié)

awk里的行與列,一般不叫行與列:行叫記錄(Record),列叫字段(Field)

指定行號(hào)(第1行、第3行)

[root@master demo]# kubectl get pods -o wide | awk 'NR==1'
NAME                                READY   STATUS    RESTARTS   AGE     IP            NODE     NOMINATED NODE   READINESS GATES
[root@master demo]# kubectl get pods -o wide | awk 'NR==2'
nginx-65fc77987d-2b6b9              1/1     Running   2          46h     10.244.2.22   node01   <none>           <none>
[root@master demo]# 

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

?取范圍(3行以?xún)?nèi)的)

[root@master demo]# kubectl get pods -o wide | awk 'NR<=3'
NAME                                READY   STATUS    RESTARTS   AGE     IP            NODE     NOMINATED NODE   READINESS GATES
nginx-65fc77987d-2b6b9              1/1     Running   2          46h     10.244.2.22   node01   <none>           <none>
nginx-6cbd4b987c-6t2nt              1/1     Running   2          46h     10.244.2.27   node01   <none>           <none>
[root@master demo]# kubectl get pods -o wide | awk 'NR==1,NR==3'
NAME                                READY   STATUS    RESTARTS   AGE     IP            NODE     NOMINATED NODE   READINESS GATES
nginx-65fc77987d-2b6b9              1/1     Running   2          46h     10.244.2.22   node01   <none>           <none>
nginx-6cbd4b987c-6t2nt              1/1     Running   2          46h     10.244.2.27   node01   <none>           <none>

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

③取指定行(第1行和第3行)

[root@master demo]# kubectl get pods -o wide | awk 'NR==1 || NR==3'
NAME                                READY   STATUS    RESTARTS   AGE     IP            NODE     NOMINATED NODE   READINESS GATES
nginx-6cbd4b987c-6t2nt              1/1     Running   2          46h     10.244.2.27   node01   <none>           <none>

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

④ 取包含nginx字符串行

[root@master demo]# kubectl get pods -o wide | awk '/nginx/'
nginx-65fc77987d-2b6b9              1/1     Running   2          46h     10.244.2.22   node01   <none>           <none>
nginx-6cbd4b987c-6t2nt              1/1     Running   2          46h     10.244.2.27   node01   <none>           <none>
nginx-6cbd4b987c-bqtfp              1/1     Running   2          46h     10.244.1.34   node02   <none>           <none>
nginx-6cbd4b987c-g4xxm              1/1     Running   2          46h     10.244.1.35   node02   <none>           <none>
nginx-deployment-6959f4b694-nds9n   1/1     Running   2          3d19h   10.244.2.23   node01   <none>           <none>
nginx-deployment-6959f4b694-qm5p9   1/1     Running   2          3d19h   10.244.1.32   node02   <none>           <none>
nginx-deployment-6959f4b694-qmpd6   1/1     Running   2          3d19h   10.244.2.24   node01   <none>           <none>
nginx-test-86bdc44976-5kj74         1/1     Running   1          26h     10.244.1.31   node02   <none>           <none>
nginx-test-86bdc44976-kvgb4         1/1     Running   1          26h     10.244.2.26   node01   <none>           <none>
nginx-test-86bdc44976-s24d6         1/1     Running   1          26h     10.244.2.25   node01   <none>           <none>

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器⑤?取包含deployment字符串行到test字符串的行

[root@master demo]# kubectl get pods -o wide | awk '/deployment/,/test1/'
nginx-deployment-6959f4b694-nds9n   1/1     Running   2          3d19h   10.244.2.23   node01   <none>           <none>
nginx-deployment-6959f4b694-qm5p9   1/1     Running   2          3d19h   10.244.1.32   node02   <none>           <none>
nginx-deployment-6959f4b694-qmpd6   1/1     Running   2          3d19h   10.244.2.24   node01   <none>           <none>
nginx-test-86bdc44976-5kj74         1/1     Running   1          26h     10.244.1.31   node02   <none>           <none>
nginx-test-86bdc44976-kvgb4         1/1     Running   1          26h     10.244.2.26   node01   <none>           <none>
nginx-test-86bdc44976-s24d6         1/1     Running   1          26h     10.244.2.25   node01   <none>           <none>
pod-test1                           1/1     Running   0          33m     10.244.1.37   node02   <none>           <none>

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

⑥?包含deployment的行和test1的行

[root@master demo]# kubectl get pods -o wide | awk '/deployment|test1/'
nginx-deployment-6959f4b694-nds9n   1/1     Running   2          3d19h   10.244.2.23   node01   <none>           <none>
nginx-deployment-6959f4b694-qm5p9   1/1     Running   2          3d19h   10.244.1.32   node02   <none>           <none>
nginx-deployment-6959f4b694-qmpd6   1/1     Running   2          3d19h   10.244.2.24   node01   <none>           <none>
pod-test1                           1/1     Running   0          43m     10.244.1.37   node02   <none>           <none>

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

效果同grep -E

[root@master demo]# kubectl get pods -o wide | grep -E 'deployment|test1'
nginx-deployment-6959f4b694-nds9n   1/1     Running   2          3d19h   10.244.2.23   node01   <none>           <none>
nginx-deployment-6959f4b694-qm5p9   1/1     Running   2          3d19h   10.244.1.32   node02   <none>           <none>
nginx-deployment-6959f4b694-qmpd6   1/1     Running   2          3d19h   10.244.2.24   node01   <none>           <none>
pod-test1                           1/1     Running   0          40m     10.244.1.37   node02   <none>           <n

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

(5)sed小結(jié)

sed命令提取指定的行

①?提取第1行

[root@master demo]# kubectl get pods -o wide | sed -n '1p'
NAME                                READY   STATUS    RESTARTS   AGE     IP            NODE     NOMINATED NODE   READINESS GATES

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

②?提取第1行到第3行

[root@master demo]# kubectl get pods -o wide | sed -n '1,3p'
NAME                                READY   STATUS    RESTARTS   AGE     IP            NODE     NOMINATED NODE   READINESS GATES
nginx-65fc77987d-2b6b9              1/1     Running   2          46h     10.244.2.22   node01   <none>           <none>
nginx-6cbd4b987c-6t2nt              1/1     Running   2          46h     10.244.2.27   node01   <none>           <none>

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

只提取第1行和第12行

[root@master demo]# kubectl get pods -o wide | sed -n '1p;12p'
NAME                                READY   STATUS    RESTARTS   AGE     IP            NODE     NOMINATED NODE   READINESS GATES
pod-test1                           1/1     Running   0          51m     10.244.1.37   node02   <none>           <none>

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

提取奇數(shù)行

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

提取偶數(shù)行

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

提取匹配test1的行

[root@master demo]# kubectl get pods -o wide | sed -n '/test1/p'
pod-test1                           1/1     Running   0          53m     10.244.1.37   node02   <none>           <none>

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

提取同時(shí)匹配pod和test1的行

[root@master demo]# kubectl get pods -o wide | sed -n '/pod\|test1/p'
pod-test1                           1/1     Running   0          55m     10.244.1.37   node02   <none>           <none>

云原生Kubernetes:pod基礎(chǔ),云原生,kubernetes,容器

四、總結(jié)

Pod是kubernetes中最小的資源管理組件,Pod也是最小化運(yùn)行容器化應(yīng)用的資源對(duì)象。

? pause容器使得Pod中的所有容器可以共享兩種資源:網(wǎng)絡(luò)和存儲(chǔ)。

pod 的運(yùn)行方式有2種:

自主式pod:沒(méi)有自愈能力
控制器管理pod: 有自愈能力(Pod被刪除后會(huì)重新拉起新pod)

pod 中有 3 種容器:

基礎(chǔ)容器(pause):
初始化容器環(huán)境,開(kāi)啟pid=1的init進(jìn)程來(lái)管理其他容器的生命周期
提供網(wǎng)絡(luò)和存儲(chǔ)空間的共享環(huán)境基礎(chǔ)

init 容器
是在基礎(chǔ)容器之后,應(yīng)用容器之前運(yùn)行的容器
多個(gè)容器是串行運(yùn)行
init 容器必須在上一init容器運(yùn)行成功且退出后才會(huì)運(yùn)行

應(yīng)用容器(main c)
運(yùn)行業(yè)務(wù)的容器
在init容器都成功運(yùn)行和退出后運(yùn)行的
多個(gè)應(yīng)用容器是并行運(yùn)行的
在 一個(gè)pod 中,init 容器和應(yīng)用容器的名稱(chēng)都是唯一的

pod 的鏡像拉取策略 imagePullPolicy,配置在Containers字段的下面,是它的子字段:

IfNotPresent
是帶有指定標(biāo)簽的鏡像的默認(rèn)拉取測(cè)試。
本地有,則用本地鏡像。本地沒(méi)有則從倉(cāng)庫(kù)中拉取鏡像

Always
是沒(méi)有標(biāo)簽的鏡像或者使用哦latest標(biāo)簽的鏡像拉取策略
創(chuàng)建pod總是從倉(cāng)庫(kù)拉取鏡像

Never
不從倉(cāng)庫(kù)拉取鏡像,僅使用本地鏡像

注意:


image : nginx:latest 鏡像的標(biāo)簽為latest或者無(wú)標(biāo)簽,默認(rèn)的鏡像拉取的策略為Always
        nginx:1.14鏡像的標(biāo)簽為非latest,默認(rèn)的鏡像拉取的策略為IfNotPresent

pod 重啟策略 restartPolicy ,配置在containers字段同一層,和containers同屬 spec的子字段

Always
默認(rèn)的重啟策略。
容器退出時(shí)總是重啟容器

Never
容器退出,從不重啟容器

OnFailure
只有容器異常退出(非0狀態(tài)碼退出),才會(huì)重啟容器


?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-701635.html

到了這里,關(guān)于云原生Kubernetes:pod基礎(chǔ)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Kubernetes —Pod 和容器日志

    Kubernetes —Pod 和容器日志

    應(yīng)用日志可以讓你了解應(yīng)用內(nèi)部的運(yùn)行狀況。日志對(duì)調(diào)試問(wèn)題和監(jiān)控集群活動(dòng)非常有用。 大部分現(xiàn)代化應(yīng)用都有某種日志記錄機(jī)制。同樣地,容器引擎也被設(shè)計(jì)成支持日志記錄。 針對(duì)容器化應(yīng)用,最簡(jiǎn)單且最廣泛采用的日志記錄方式就是寫(xiě)入標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤流。 但是,

    2024年02月13日
    瀏覽(25)
  • Kubernetes中Pod容器的使用

    Pod是K8S系統(tǒng)中可以創(chuàng)建和管理的最小單元,是資源對(duì)象模型中由用戶(hù)創(chuàng)建或部署的最小資源對(duì)象模型 有許多組件圍繞Pod進(jìn)行擴(kuò)展和支持,比如控制器對(duì)象是用來(lái)管控Pod對(duì)象的,Service或者Ingress資源對(duì)象是用來(lái)暴露Pod引用對(duì)象的,PersistentVolume資源對(duì)象是用來(lái)為Pod提供存儲(chǔ)等。

    2024年02月15日
    瀏覽(29)
  • 【云原生】Kubernetes之 Pod hook(鉤子)

    Pod hook(鉤子)是由 Kubernetes 管理的 kubelet 發(fā)起的,當(dāng)容器中的進(jìn)程啟動(dòng)前或者容器中的進(jìn)程終止之前運(yùn)行,這是包含在容器的生命周期之中。可以同時(shí)為 Pod 中的所有容器都配置 hook。 Hook 的類(lèi)型包括兩種: exec:執(zhí)行一段命令 HTTP:發(fā)送 HTTP 請(qǐng)求 示例如下: 說(shuō)明: postStar

    2024年02月15日
    瀏覽(19)
  • Kubernetes在容器內(nèi)獲取Pod信息

    我們知道,每個(gè) Pod 在被成功創(chuàng)建出來(lái)之后,都會(huì)被系統(tǒng)分配唯一的名字、IP 地址,并且處于某個(gè) Namespace 中,那么我們?nèi)绾卧?Pod 的容器內(nèi)獲取 Pod 的這些重要信息呢?答案就是使用 Downward API。 Downward API 可以通過(guò)以下兩種方式將 Pod 信息注入容器內(nèi)部。 (1)環(huán)境變量:用于單

    2024年02月10日
    瀏覽(22)
  • 【云原生】kubernetes深入理解Pod對(duì)象:基本管理

    【云原生】kubernetes深入理解Pod對(duì)象:基本管理

    目錄 一、Pod 基本概念 二、pod 常用命令 三、Pod 資源共享實(shí)現(xiàn)機(jī)制 3.1 共享網(wǎng)絡(luò) 3.2 共享存儲(chǔ) 四、Pod 狀態(tài)管理 五、重啟策略和健康檢查 5.1 基本概念 5.1.1 重啟策略 5.1.2 健康檢查有以下三種類(lèi)型: 5.1.3 支持以下三種檢查方法: 5.2 示例講解 5.2.1 就緒健康檢查示例 六、Pod環(huán)境變

    2024年02月07日
    瀏覽(28)
  • Kubernetes配置 Pods 和容器—將 Docker Compose 文件轉(zhuǎn)換為 Kubernetes 資源

    你必須擁有一個(gè) Kubernetes 的集群,同時(shí)你必須配置 kubectl 命令行工具與你的集群通信。 建議在至少有兩個(gè)不作為控制平面主機(jī)的節(jié)點(diǎn)的集群上運(yùn)行本教程。 我們有很多種方式安裝 Kompose。首選方式是從最新的 GitHub 發(fā)布頁(yè)面下載二進(jìn)制文件。 Kompose 通過(guò) GitHub?安裝 只需幾步,

    2024年02月12日
    瀏覽(57)
  • 【云原生|Kubernetes】05-Pod的存儲(chǔ)卷(Volume)

    【云原生|Kubernetes】05-Pod的存儲(chǔ)卷(Volume)

    Volume 是Pod 中能夠被多個(gè)容器訪問(wèn)的共享目錄。 Kubernetes 中的Volume 概念、用 途和目的與 Docke 中的 Vo lume 比較類(lèi)似,但二者不能等價(jià), 首先 Kubernetes 中的Volume 被定義在 Pod上 ,被一個(gè) Pod 里的多個(gè)容器掛載到具體的文件目錄 ;其次, Kubernete 中的 Volume與 Pod 的生命周期相同,但

    2024年02月07日
    瀏覽(44)
  • 在CSDN學(xué)Golang云原生(Kubernetes Pod)

    在 Kubernetes 中,Pod 是最小的可部署單元,它包含一個(gè)或多個(gè)容器。使用 Golang 來(lái)定義和操作 Pod 時(shí),需要使用 kubernetes/client-go 包提供的 API。 以下是 Golang 定義和基本用法 Pod 的示例: 安裝 kubernetes/client-go 包 在 Golang 環(huán)境中安裝 kubernetes/client-go 包,該包提供了訪問(wèn) Kubernetes

    2024年02月15日
    瀏覽(29)
  • 在CSDN學(xué)Golang云原生(Kubernetes Pod調(diào)度)

    在 Kubernetes 中,可以使用 NodeSelector 字段來(lái)指定 Pod 調(diào)度到哪些節(jié)點(diǎn)上運(yùn)行。NodeSelector 是一個(gè)鍵值對(duì)的 map,其中鍵是節(jié)點(diǎn)的標(biāo)簽名,值是標(biāo)簽值。具體步驟如下: 在節(jié)點(diǎn)上添加標(biāo)簽 首先需要在節(jié)點(diǎn)上添加相應(yīng)的標(biāo)簽,例如: 編寫(xiě) Pod 的 YAML 文件 在編寫(xiě) Pod 的 YAML 文件時(shí),需

    2024年02月15日
    瀏覽(24)
  • kubernetes|云原生| 如何優(yōu)雅的重啟和更新pod---pod生命周期管理實(shí)務(wù)

    kubernetes|云原生| 如何優(yōu)雅的重啟和更新pod---pod生命周期管理實(shí)務(wù)

    kubernetes的管理維護(hù)的復(fù)雜性體現(xiàn)在了方方面面,例如,pod的管理,服務(wù)的管理,用戶(hù)的管理(RBAC),網(wǎng)絡(luò)的管理等等,因此,kubernetes安裝部署完畢僅僅是萬(wàn)里長(zhǎng)征的第一步,后面的運(yùn)營(yíng)和維護(hù)工作才是更為關(guān)鍵的東西。 那么,pod的生命周期是什么概念呢?這

    2024年02月04日
    瀏覽(18)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包