Pod 是 kubernetes 中的基本单位,容器本身不会直接分配到主机上,而是会封装到 Pod 对象中 。一个 Pod 通常表示单个应用程序,有一个或者多个相关的容器组成,这些容器的生命周期都是相同的,而且会作为一个整体在同一个 node 上调度起来,这些容器共享环境、存储卷和 IP 控件 。尽管 Pod 中可能存在多个容器,但是在 kubernetes 中是以 Pod 为最小单位进行调度、伸缩并共享资源、管理生命周期 。
Pod 的基本操作我们先来看一下 Pod 的创建、查询、修改和删除操作 。
创建 Pod【kubernetes的基本单位Pod详解】# expod.ymlapiVersion: v1kind: Podmetadata:name: expodspec:containers:- name: expod-containerimage: busyboximagePullPolicy: IfNotPresentcommand: ['sh', '-c']args: ['echo "Hello Kubernetes!"; sleep 3600']
简单的模板含义:
- apiVersion 表示 API 版本,v1 表示使用 kubernetes API 的稳定版本 。
- kind 表示要创建的资源对象 。
- metadata 表示该资源对象的元数据 。可以拥有多个元数据,name 表示当前资源的名称 。
- spec 表示该资源对象的具体设置 。其中 containers 表示容器的集合,我们这里设置了一个简单的容器 。name: 要创建的容器名称 。image: 容器的镜像地址 。imagePullPolicy: 镜像的下载策略,支持3种策略:Always、Never、IfNotPresent 。command: 容器的启动命令列表,不配置的话就使用镜像内部的命令 。args: 启动参数列表
kubectl Apply -f expod.yml
创建成功后,查询一下当前运行的所有 Podkubectl get pod
文章插图
查询 PodPod 信息查询的命令有多个,查询的详细度也不一样:
- 查询默认命名空间 default 的所有 Pod
kubectl get pod
- 查询指定 Pod 的信息
kubectl get pod expod
- 对 Pod 状态进行持续监控
kubectl get pod -w
- 显示更多概要信息
kubectl get pod -o wide
文章插图
比简要信息多显示集群内 IP 地址、所属 node
- 按照指定格式输出 Pod 信息
kubectl get pod expod -o yaml
- 最详细信息显示,包括 Event
kubectl describe pod expod
这是最常用的资源信息查询命令,显示信息比较全面,包括资源的基本信息、容器信息、准备情况、存储卷信息和相关的事件列表 。在资源部署的时候,如果遇到问题,可以用这个命令查询详情,分析错误原因 。- 查询Pod的日志信息
kubectl logs Pod名称
修改 Pod修改已存在的 Pod 属性可以使用 replace 命令kubectl replace -f pod的yaml文件
我们修改一下前面创建 Pod 的 yaml 文件,把输出 “Hello Kubernetes!" 修改为 "Hello Kubernetes replaced!" 。# expod.ymlapiVersion: v1kind: Podmetadata:name: expodspec:containers:- name: expod-containerimage: busyboximagePullPolicy: IfNotPresentcommand: ['sh', '-c']args: ['echo "Hello Kubernetes replaced!"; sleep 3600']
Pod 有很多属性是无法修改的,如果一定要修改,需要加上 --force 参数,相当于重建 Pod 。kubectl replace -f expod.yml --force
可以看一下命令输出结果文章插图
先删除了 expod 这个 Pod,然后创建一个替换的 expod 的 Pod,我们再查看以下 Pod 的日志 。
kubectl logs expod
文章插图
可以看到 Pod 信息已经修改了 。
删除 Pod删除 Pod 非常简单,执行以下命令即可:
kubectl delete pod expod
如果我们是通过 Pod 模板文件创建的,推荐使用基于模板文件的删除命令 。kubectl delete -f expod.yml
Pod 与容器我们可能已经发现了,Pod 模板和 Docker-Compose 非常相似,但是 Pod 模板可以配置的参数更多、更复杂 。Pod 创建容器的方式在 Pod 模板的 Containers 部分,指明容器的部署方式,在部署的过程中会转换成对应的容器运行命令,就以我们最开始的 Pod 模板为例:
apiVersion: v1kind: Podmetadata:name: expodspec:containers:- name: expod-containerimage: busyboximagePullPolicy: IfNotPresentcommand: ['sh', '-c']args: ['echo "Hello Kubernetes!"; sleep 3600']
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 除了WIFI,你所不知道的低成本私有无线网络组网解决方案
- 老茶头是怎么形成的,老茶头是如何形成的呢
- 猴菇丁香沙棘茶的功效,猴头丁香沙棘茶的功效与作用
- 苦荞茶品牌排行,黑苦荞茶的价格
- 韭菜子泡茶的功效,刺五加叶茶的功效与作用
- 经常喝六安瓜片的好处,六安瓜片的功效与作用
- 荷叶茶的功效与作用,茉莉荷叶茶功效
- 好白茶的主要品种,白茶是什么茶品种
- 后起八大茶山现状简介,古六大茶山之革登茶山的地理渊源
- 花草蜜桃茶的做法,蜜桃果茶的做法