查询pod属性
[root@test-k8s-master1 ~]# kubectl explain pod
在kubernetes中基本所有资源的一级属性都是一样的,主要包括5部分:
- apiVersion
版本,由kubernetes内部定义,版本号必须可以用 kubectl api-versions 查询到 - kind
类型,由kubernetes内部定义,版本号必须可以用 kubectl api-resources 查询到 - metadata
- spec
- status
- containers <[]Object> 容器列表,用于定义容器的详细信息
- nodeName
根据nodeName的值将pod调度到指定的Node节点上 - nodeSelector <map[]> 根据NodeSelector中定义的信息选择将该Pod调度到包含这些label的Node上
- hostNetwork
是否使用主机网络模式,默认为false,如果设置为true,表示使用宿主机网络 - volumes <[]Object> 存储卷,用于定义Pod上面挂载的存储信息
- restartPolicy
重启策略,表示Pod在遇到故障的时候的处理策略
Pod配置
本小结来研究pod.spec.containers属性,这也是pod配置中最为关键的一项配置。
[root@test-k8s-master1 ~]# kubectl explain pod.spec.containers
KIND: Pod
VERSION: v1
RESOURCE: containers <[]Object>
FIELDS:
name <string> # 容器名称
image <string> # 容器需要的镜像地址
imagePullPolicy <string> # 镜像拉取策略
command <[]string> # 容器的启动命令列表,如不指定,使用打包时使用的启动命令
args <[]string> # 容器的启动命令需要的参数列表
env <[]Object> # 容器环境变量的配置
ports <[]Object> # 容器需要暴露的端口号列表
resources <Object> # 资源限制和资源请求的设置
基本配置
创建pod-base.yaml文件,内容如下:
apiVersion: v1
kind: Pod
metadata:
name: pod-base
namespace: dev
labels:
user: zzm
spec:
containers:
- name: nginx
image: nginx:1.17.1
- name: busybox
image: busybox:1.30
上面定义了一个比较简单Pod的配置,里面有两个容器:
- nginx: 用1.17.1版本的nginx镜像创建,(nginx是一个轻量级web容器)
- busybox: 用1.30版本的busybox镜像创建,(busybox是一个小巧的linux命令集合)
#创建pod
[root@dev-k8s-master1 ~]# kubectl apply -f pod-base.yaml
pod/pod-base created