共計 2407 個字符,預(yù)計需要花費 7 分鐘才能閱讀完成。
如何理解 Pod 的增刪改查操作,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
我們通過一個簡單的例子,來演示 Pod 資源的增刪改查操作。
創(chuàng)建 Pod
首先將如下配置保存到名為 pod_simple.yaml 的文件中:
apiVersion: v1
kind: Pod
metadata:
name: pod-runs-nginx
spec:
containers:
- name: nginx
image: nginx:latest
通過配置可知,我們將創(chuàng)建一個類型為 Pod 的資源,資源的版本為 v1,Pod 名稱為 pod-runs-nginx,Pod 中容器名字為 nginx,容器鏡像為 nginx:latest。
使用 kubectl create 命令創(chuàng)建資源,如下所示:
[root@ecs-d8b6 ~]# kubectl create -f pod_simple.yaml
pod/pod-runs-nginx created
通過命令行輸出可知,Kubernetes 已經(jīng)安照我們的配置創(chuàng)建了一個 Pod 資源。
查看 Pod
使用命令 kubectl get 命令查看 Pod,如下所示:
[root@ecs-d8b6 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
pod-runs-nginx 1/1 Running 0 26s
可以看到名為 pod-runs-nginx 的 Pod 已經(jīng)處于 Running 狀態(tài)。
我們還可以給 kubectl get 命令增加 -o yaml 參數(shù),來查看 Pod 更詳細(xì)的信息,如下所示:
[root@ecs-d8b6 ~]# kubectl get pods pod-runs-nginx -o yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-runs-nginx
namespace: default
uid: 6a946bac-e288-4e19-b743-7ee0eb04aa73
...
spec:
containers:
- image: nginx:latest
imagePullPolicy: Always
name: nginx
restartPolicy: Always
...
status:
phase: Running
podIP: 172.17.0.6
...
Kubernetes 在創(chuàng)建資源對象時會增加很多默認(rèn)屬性,受限于篇幅,上面只展了一部分信息。
我們知道,Kubernetes 會為每個 Pod 分配一個 IP,從上面的輸出中可以看到該 Pod 的 IP 為 172.17.0.6,我們可以使用該 IP 來訪問 Pod 中的容器。
由于 nginx 默認(rèn)監(jiān)聽在 80 端口,我們便可以使用 Pod IP 和端口來訪問 nginx,如下所示:
[root@ecs-d8b6 ~]# curl 172.17.0.6:80
!DOCTYPE html
html
head
title Welcome to nginx! /title
/head
body
h2 Welcome to nginx! /h2
p If you see this page, the nginx web server is successfully installed and
working. Further configuration is required. /p
p em Thank you for using nginx. /em /p
/body
/html
通過輸出內(nèi)容,可以看到 nginx 已經(jīng)可以正常工作了。
更新 Pod
在上面的例子中,我們給容器指定的鏡像版本為 nginx:latest,我們可以修改鏡像版本為 nginx:1.19.0,于是我們把配置文件做如下修改:
apiVersion: v1
kind: Pod
metadata:
name: pod-runs-nginx
spec:
containers:
- name: nginx
image: nginx:1.19.0 # 修改鏡像版本
然后使用命令 kubectl apply 來提交修改后的配置,如下所示:
[root@ecs-d8b6 ~]# kubectl apply -f pod_simple.yaml
pod/pod-runs-nginx configured
然后再次查看 Pod 信息,可以看到 Pod 中的容器鏡像版本已經(jīng)更新了:
[root@ecs-d8b6 ~]# kubectl get pods pod-runs-nginx -o yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-runs-nginx
namespace: default
uid: 6a946bac-e288-4e19-b743-7ee0eb04aa73
spec:
containers:
- image: nginx:1.19.0 # 鏡像版本已更新
imagePullPolicy: Always
name: nginx
restartPolicy: Always
...
status:
phase: Running
podIP: 172.17.0.6
...
刪除 Pod
使用命令 kubectl delete 命令可以刪除 Pod,如下所示:
[root@ecs-d8b6 ~]# kubectl delete pods pod-runs-nginx
pod pod-runs-nginx deleted
刪除 Pod 時會相應(yīng)地停止并刪除其所包含的容器。
Pod 作為最基礎(chǔ)的資源,與其他 Kubernetes 資源一樣,都可以使用 kubectl 來操作。
看完上述內(nèi)容,你們掌握如何理解 Pod 的增刪改查操作的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道,感謝各位的閱讀!