kubernetes和RC定义yaml文件格式

来源:互联网 发布:告白软件生成器 编辑:程序博客网 时间:2024/06/03 06:42
kubernetes定义yaml文件格式。

Pod定义文件模板(yaml格式)如下:

apiVersion: v1# required

kind: Pod# required

metadata:# required

name: string # required

namespace:string # required

labels:

- name: string

annotations:

- name: string

spec: #required

containers: # required

- name:string # required

image:string # required

imagePullPolicy: [Always | Never | IfNotPresent]

command:[string]

workingDir:string

volumeMounts:

- name:string

mountPath: string

readOnly:boolean

ports:

- name:string

containerPort: int

hostPort:int

protocol:string

env:

- name:string

value:string

resources:

limits:

cpu:string

memory:string

volumes:

- name: string

# EitheremptyDir for an empty directory

emptyDir: {}

# OrhostPath for a pre-existing directory on the host

hostPath:

path: string

restartPolicy:[Always | Never | OnFailure]

dnsPlicy:[Default | ClusterFirst] #required

nodeSelector:object

imagePullSercret:object

对Pod各属性详细说明表如下:

属 性 名 称取 值 类 型是 否 必 选取 值 说明

versionStringRequiredv1

kindStringRequiredPod

metadataObjectRequired元数据

RC定义文件详解

RC(ReplicationController)定义文件模板(yaml格式)如下:

apiVersion: v1# required

kind: ReplicationController # required

metadata:# required

name: string # required

namespace:string # required

labels:

- name: string

annotations:

- name: string

spec: #required

replicas:number # required

selector: [] # required

template:object # required

Service定义文件详解

Service定义文件模板(yaml格式)如下:

apiVersion: v1# required

kind: Service# required

metadata:# required

name: string # required

namespace:string # required

labels:

- name: string

annotations:

- name: string

spec: #required

selector: [] # required

type: string #required

clusterIP: string

sessionAffinity:string

ports:

- name: string

port: int

targetPort:int

protocol:string

status:

loadBalancer:

ingress:

ip: string

hostname:string

对Service各属性详细说明表如下:

属 性 名 称取 值 类 型是 否 必 选取 值 说明

versionStringRequiredv1

kindStringRequiredPod

metadataObjectRequired元数据

metadata.nameStringRequiredService名称,符合RFC1035规范

metadata.namespaceStringRequired命名空间,不指定时系统使用名为?default?的命名空间

metadata.labels[]list自定义标签属性列表

metadata.annotation[]list自定义注解属性列表

specobjectRequired详细描述

spec.selector[]listRequiredLabel Selector配置,将选择具有指定label标签的Pod作为管理范围

spec.typestringRequiredService类型,指定Service访问方式,默认为ClusterIP。

ClusterIP: 虚拟的服务IP地址,该地址用户kubernetes集群内部Pod访问,在Node上kube-proxy通过设置的iptables规则进行转发;

NodePort: 使用宿主机的端口,使能够访问各Node的外部客户端通过Node的IP地址和端口号就能访问服务;

LoadBalancer: 使用外接负载均衡器完成到服务的负载分发,需要在spec.status.loadBalancer字段指定外部负载均衡器的IP地址,并同时定义nodePort和clusterIP.

spec.clusterIPString虚拟服务IP地址,当type=ClusterIP时,如果不指定,则系统自动分配;当type=LoadBalancer时,则需要指定。

spec.sessionAffinityString是否支持Session,可选值为ClientIP,默认为空。

ClientIP: 表示同一个客户端(根据客户端的IP地址决定)的访问请求都转发到同一个后端Pod。

spec.ports[]listService需要暴露的端口号列表

spec.ports[].nameString端口名称

spec.ports[].portint服务监听的端口号

spec.ports[].targetPortint需要转发到后端Pod的端口号

spec.ports[].protocolint端口协议,支持TCP和UDP,默认TCP

statusobject当spec.type=LoadBalancer时,设置外部负载均衡器的地址

status.loadBalancerobject外部负载均衡器

status.loadBalancer.ingressobject外部负载均衡器

status.loadBalancer.ingress.ipstring外部负载均衡器的IP地址

status.loadBalancer.ingress.hostnamestring外部负载均衡器的主机名

附录

根据yaml创建:

$ kubectl create -f [--validate[=true]]

根据yaml删除:

$ kubectl delete -f