21天转型容器实战营(十三容器进阶之Pod ,RC,Service完整字段说明)

Pod定义模版

属性名称

取值类型

是否必选

取值说明

version

String

Required

v1

kind

String

Required

Pod

metadata

Object

Required

元数据

metadata.name

String

Required

Pod名称,需符合RFC 1035规范。

metadata.namespace

String

Required

命名空间,不指定系统将使用名为“default”的命名空间

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,默认值为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完整属性

属性名称

取值类型

是否必选

取值说明

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.annotation[]

list

 

自定义注解属性列表

spec

object

Required

详细描述

spec.replicas

number

Required

Pod副本数量,设置为0表示不创建Pod

spec.selector[]

list

Required

Label Selector配置,将选择具有指定Label标签的Pod作为管理范围

spec.template

object

Required

容器的定义,与Pod的spec内容相同,参见上一节的描述。

 

Service完整属性

属性名称

取值类型

是否必选

取值说明

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.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

 

外部负载均衡器的主机名

 

猜你喜欢

转载自blog.csdn.net/xsjzdrxsjzdr/article/details/85040405