Pod定义文件详解
Pod 的定义模版(yaml 格式)如下:
|
|
对各属性的详细说明如下:
属性名称 | 取值类型 | 是否必选 | 取值说明 |
---|---|---|---|
version | String | Required | v1 |
kind | String | Required | Pod |
metadata | Object | Required | 元数据 |
metadata.name | String | Required | Pod 名称,需符合 RFC 1035 规范 |
metadata.namespace | String | Required | 命名空间,在不指定系统时将使用名为 “defautl” 的命名空间 |
metadata.labels[] | List | 自定义标签属性列表 | |
metadata.annotation[] | List | 自定义注解属性列表 | |
spec | Object | Required | 详细描述 |
spec.containers[] | List | Required | Pod 中运行的容器的列表 |
spec.containers[].name | String | Required | 容器名称,需符合 RFC 1035 规范 |
spec.containers[].image | String | Required | 容器的镜像名,在 Node 上如果不存在该镜像,则 Kubelet 会先下载 |
spec.containers[].imagePullPolicy | String | 获取镜像的策略,可选值包括:Always、Never、IfNotPresent,默认值为 Always。Always:表示每次都下载镜像。IfNotPresent:表示如果本地有该镜像,就是用本地的镜像。Never:表示仅使用本地镜像。 | |
spec.containers[].command[] | List | 容器的启动命令列表,如果不指定,则使用镜像打包时使用的 CMD 命令。 | |
spec.containers[].workingDir | String | 容器的工作目录 | |
spec.containers[].volumeMounts[] | List | 可供容器使用的共享存储卷列表 | |
spec.containers[].volumeMounts[].name | String | 引用 Pod 定义的共享存储卷的名称,需使用 volumes[] 部分定义的共享存储卷名称 | |
spec.containers[].volumeMounts[].mountPath | String | 存储卷在容器内 Mount 的绝对路径,应少于 512 个字符 | |
spec.containers[].volumeMounts[].readOnly | boolean | 是否为只读模式,默认为读写模式 | |
spec.containers[].ports[] | List | 容器需要暴露的端口号列表 | |
spec.containers[].ports[].name | String | 端口名称 | |
spec.containers[].ports[].containerPort | Int | 容器需要监听的端口号 | |
spec.containers[].ports[].hostPort | Int | 容器所在主机需要监听的端口号,默认与 containerPort 相同 | |
spec.containers[].ports[].protocol | String | 端口协议,支持 TCP 和 UDP,默认为 TCP | |
spec.containers[].env[] | List | 容器运行前需要设置的环境变量列表 | |
spec.containers[].env[].name | String | 环境变量名称 | |
spec.containers[].env[].value | String | 环境变量的值 | |
spec.containers[].resources | Object | 资源限制条件 | |
spec.containers[].resources.limits | Object | 资源限制条件 | |
spec.containers[].resources.limits.cpu | String | CPU 限制条件,将用于 docker run –cpu-shares 参数 | |
spec.containers[].resources.limits.memory | String | 内存限制条件,将用于 docker run –memory 参数 | |
spec.volumes[] | List | 在该 Pod 上定义的共享存储卷列表 | |
spec.volumes[].name | String | 共享存储卷名称,需唯一,符合 RFC 1035 规范。容器定义部分 containers[].volumeMounts[].name 将引用该共享存储卷的名称 | |
spec.volumes[].emptyDir | Object | 默认的存储卷类型,表示与 Pod 同生命周期的一个临时目录,其值为一个空对象:emptyDir:{}。该类型与 hostPath 类型互斥,应只定义一种 | |
spec.volumes[].hostPath | Object | 使用 Pod 所在主机的目录,通过 volumes[].hostPath.path 指定。该类型与 emptyDir 类型互斥,应只定义一种 | |
spec.volumes[].hostPath.path | String | Pod 所在主机的目录,将被用于容器中 mount 的目录。 | |
spec.dnsPolicy | String | Required | DNS 策略,可选值包括:Default、ClusterFirst |
spec.restartPolicy | Object | 该 Pod 内容器的重启策略,可选值为 Always、OnFailure、Never,默认值为 Always。Always:容器一旦终止运行,无论容器是如何终止的,Kubelet 都将重启它。OnFailure:只有容器以非零退出码终止时,Kubelet 才会重启该容器。如果容器正常结束(退出码为0),则 Kubelet 将不会重启它。Never:容器终止后,Kubelet 将退出码报告给 Master,不再重启它 | |
spec.nodeSelector | Object | 指定需要调度到的 Node 的 Label,以 key=value 格式指定 | |
spec.imagePullSecrets | Object | Pull 镜像时使用的 secret 名称,以 name=secretkey 格式定义 |
RC 定义文件详解
RC(ReplicationController)定义文件模版(yaml格式)如下:
|
|
对各属性的说明如下:
属性名称 | 取值类型 | 是否必选 | 取值说明 |
---|---|---|---|
version | String | Required | v1 |
kind | String | Required | ReplicationController |
metadata | object | Required | 元数据 |
metadata.name | String | Required | ReplicationController 名称,需符合 RFC 1035 规范 |
metadata.namespace | String | Required | 命名空间,不指定系统时将使用名为 “default” 的命名空间 |
metadata.labels[] | List | 自定义标签属性列表 | |
metadata.annotaion[] | List | 自定义注解属性列表 | |
spec | Object | Required | 详细描述 |
spec.replicas | number | Required | Pod 副本数量,设置为 0 表示不创建 Pod |
spec.selector[] | Listt | Required | Label Selector 配置,将选择具有指定 Label 标签的 Pod 作为管理范围 |
spec.template | Object | Required | 容器的定义,与 Pod 的 spec 内容相同 |
Service定义文件详解
Service 的定义文件模版(yaml格式)如下:
|
|
对各属性的说明如下:
属性名称 | 取值类型 | 是否必选 | 取值说明 |
---|---|---|---|
version | String | Required | v1 |
kind | String | Required | Service |
metadata | Object | Required | 元数据 |
metadata.name | String | Required | Service 名称,需符合 RFC 1035 规范 |
metadata.namespace | String | Required | 命名空间,不指定系统时将使用名为“default”的命名空间 |
metadata.labels[] | List | 自定义标签属性列表 | |
metadata.annotation[] | List | 自定义注解属性列表 | |
spec | Object | Required | 详细描述 |
spec.selector[] | List | Required | Label Selector 配置,将选择具有指定 Label 标签的 Pod 作为管理范围 |
spec.type | String | Required | Service 的类型,指定 Service 的访问方式,默认为 ClusterIP。ClusterIP:虚拟的服务器 IP 地址,该地址用于 Kubernetes 集群内部的 Pod 访问,在 Node 上 kube-proxy 通过设置的 iptables 规则进行转发。NodePort:使用宿主机的端口,使能够访问各 Node 的外部客户端通过 Node 的 IP 地址和端口号就能访问服务。LoadBalancer:使用外接负载均衡器完成到服务的负载分发啊 ,需要在 spec.status.loadBalancer 字段指定外部负载均衡器的 IP 地址,并同时定义 nodePort 和 clusterIP |
spec.type.clusterIP | String | 虚拟服务 IP 地址,当 type=ClusterIP 时,如果不指定,则系统将自动分配;当 type=LoadBalancer 时,则需要指定 | |
spec.sessionAffinity | String | 是否支持 Session,可选值为 ClientIP,默认为空。ClientIP:表示将同一个客户端(根据客户端的IP地址决定)的访问请求都转发到同一个后端 Pod | |
spec.ports[] | List | Service 需要暴露的端口号列表 | |
spec.ports[].name | String | 端口名称 | |
spec.ports[].port | Int | 服务监听的端口号 | |
spec.ports[].targetPort | Int | 需要转发到后段 Pod 的端口号 | |
spec.ports[].protocol | String | 端口协议,支持 TCP 和 UDP,默认为 TCP | |
status | Object | 当 spec.type=LoadBalancer 时,设置外部负载均衡器的地址 | |
status.loadBalancer | Object | 外部负载均衡器 | |
status.loadBalancer.ingress | Object | 外部负载均衡器 | |
status.loadBalancer.ingress.ip | String | 外部负载均衡器的 IP 地址 | |
status.loadBalancer.ingress.hostname | String | 外部负载均衡器的主机名 |