这里介绍Kubernetes中基本概念——Pod
Pod基本操作
在Kubernetes中,Pod是能够创建、调度、管理的最小部署单元。其通常是一组容器的集合
创建Pod
这里我们可以通过YAML配置文件来进行配置、创建,如下所示。需要注意的是,在Pod的配置文件中定义容器端口纯粹是展示性的,仅便于其他人了解该容器所使用的端口信息
1 | # 示例1: 创建Pod |
然后通过kubectl create -f 命令实现创建该Pod即可
查看Pod
kubectl提供了非常丰富的命令、选项用于查看Pod资源,具体如下所示
1 | # 查看全部Pod资源的描述 |
删除Pod
1. 按名删除
1 | # 删除指定名称的Pod |
效果如下所示
2. 利用标签选择器删除Pod
1 | # 删除指定标签条件的Pod |
效果如下所示
3. 删除命名空间下的所有Pod
通过—all选项实现删除命名空间下的所有Pod实例。如若未指定命名空间的名称,则删除的是默认命名空间下的所有Pod。
1 | # 删除命名空间下的所有Pod |
效果如下所示
调试Pod
查看Pod日志
可以通过kubectl logs查看Pod中容器的日志。如果一个Pod中包含多个容器时,必须使用-c选项指定相应的容器名称
1 | # 查看Pod日志 |
效果如下所示
端口转发
端口转发是一种测试、调试指定Pod的有效方法。具体地,通过kubectl port-forward命令实现将本地网络端口转发到指定Pod的端口
1 | kubectl port-forward <Pod名称> <本地端口>:<Pod的端口> |
这样即可非常方便在宿主机发送请求HTTP请求到Pod当中。对于名为my-bootcamp-pod-2的Pod而言,其在8080端口上提供了一个HTTP服务。故我们先在左侧终端通过kubectl port-forward命令,将宿主机的12345端口映射、转发到该Pod的8080端口。然后在右侧终端利用curl命令直接访问localhost的12345端口,即可实现将请求转发至该Pod的8080端口。效果如下所示
端口转发的示意图如下所示。此时相信大家就不难理解了
在容器中执行命令
调试时,有时候我们需要进入Pod的容器中执行命令。我们可以直接通过kubectl exec对已存在Pod的容器远程执行命令
1 | # 在指定Pod内中执行命令, -- 用于分隔kubectl exec命令、Pod容器内执行的命令 |
效果如下所示
如果需要执行的命令较多,我们还可以直接进入该Pod的容器来执行命令
1 | # 进入Pod的容器 |
效果如下所示
需要注意的是,当Pod中存在多个容器时,上述两个命令需要使用-c(或—container)选项来指定期望操作的容器
1 | # 在指定Pod的指定容器中执行命令 |
其中,该Pod中各容器的名称,可通过如下方式查看
1 | # 查看指定Pod中各容器的名称 |
参考文献
- Kubernetes in Action中文版 Marko Luksa著
- 深入剖析Kubernetes 张磊著