共计 2407 个字符,预计需要花费 7 分钟才能阅读完成。
如何理解 Pod 的增删改查操作,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
我们通过一个简单的例子,来演示 Pod 资源的增删改查操作。
创建 Pod
首先将如下配置保存到名为 pod_simple.yaml 的文件中:
apiVersion: v1
kind: Pod
metadata:
name: pod-runs-nginx
spec:
containers:
- name: nginx
image: nginx:latest
通过配置可知,我们将创建一个类型为 Pod 的资源,资源的版本为 v1,Pod 名称为 pod-runs-nginx,Pod 中容器名字为 nginx,容器镜像为 nginx:latest。
使用 kubectl create 命令创建资源,如下所示:
[root@ecs-d8b6 ~]# kubectl create -f pod_simple.yaml
pod/pod-runs-nginx created
通过命令行输出可知,Kubernetes 已经安照我们的配置创建了一个 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 已经处于 Running 状态。
我们还可以给 kubectl get 命令增加 -o yaml 参数,来查看 Pod 更详细的信息,如下所示:
[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 在创建资源对象时会增加很多默认属性,受限于篇幅,上面只展了一部分信息。
我们知道,Kubernetes 会为每个 Pod 分配一个 IP,从上面的输出中可以看到该 Pod 的 IP 为 172.17.0.6,我们可以使用该 IP 来访问 Pod 中的容器。
由于 nginx 默认监听在 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
通过输出内容,可以看到 nginx 已经可以正常工作了。
更新 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 中的容器镜像版本已经更新了:
[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 时会相应地停止并删除其所包含的容器。
Pod 作为最基础的资源,与其他 Kubernetes 资源一样,都可以使用 kubectl 来操作。
看完上述内容,你们掌握如何理解 Pod 的增删改查操作的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!