pod是一组相同功能的容器集合,比如说一个pod组合了一个mysql容器,flask项目的容器。
在没有接触pod这个概念之前,我们之前通过手动分别启动这2个容器,同时flask需要访问mysql,需要注入mysql的ip。尽管mysql和这个python可能部署在一个node。当然,仅此这个并不是我们学习k8s,学习pod的最终目的。
创建pod可以通过读取yaml,也可以用命令行。为了一个pod的详细信息的可追溯,推荐使用yaml方式,如下图基础描述信息部分
kind: Pod 指定yaml类型为pod
metadata: # 【必选-Object】元数据
name:指定pod名称
labels: # 【List】 自定义标签列表
- name: Stringpod中容器定义
spec: # 【必选-Object】 Pod中容器的详细定义
- name: String # 【必选】 容器的名称
image: String # 【必选】 容器的镜像名称
imagePullPolicy: [Always | Never | IfNotPresent] # 【String】 每次都尝试重新拉取镜像 | 仅使用本地镜像 | 如果本地有镜像则使用,没有则拉取。
command: [String] # 【List】 容器的启动命令列表,如果不指定,则使用镜像打包时使用的启动命令,参见dockerfile说明
args: [String] # 【List】 容器的启动命令参数列表
workingDir: String # 容器的工作目录
volumeMounts: # 【List】 挂载到容器内部的存储卷配置网络部分
ports:
containerPort: Int # 容器需要监听的端口号
hostPort: Int # 容器所在主机需要监听的端口号,默认与containerPort相同。
protocol: String # 端口协议,支持TCP和UDP,默认值为TCP
以上参数为常用参数。
创建命令:
kubectl create -f xxx.yaml
查看状态
kubectl get pods xxx
定位问题:
kubectl pods log xxx