Kubernetes系统化学习之资源清单篇
1. Kubernetes 对象资源
Kubernetes 系统化学习之 基本概念篇(一)
Kubernetes 系统化学习之 POD原理篇(二)
Kubernetes 系统化学习之 资源清单篇(三)
Kubernetes 是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统。
根据不同的级别,可以将 Kubernetes 中的资源进行多种分类。以下列举的内容都是 Kubernetes 中的 Object,这些对象都可以在 yaml 文件中作为一种 API 类型来配置。工作负载型资源:Pod、ReplicaSet、Deployment、StatefulSet、DaemonSet、Job、CronJob服务发现及负载均衡型资源:Service、Ingress配置与存储型资源:Volume、CSI特殊类型的存储卷:ConfigMap、Secret、DownwardAPI集群级别资源:Namespace、Node、Role、ClusterRole、RoleBinding、ClusterRoleBinding元数据型资源:HPA、PodTemplate、LimitRange2. YML 资源文件概览
当创建 Kubernetes 对象时,必须提供对象的规约,用来描述该对象的期望状态,以及关于对象的一些基本信息,例如名称。当使用 Kubernetes API 创建对象时,或者直接创建或者基于 kubectl,API 请求必须在请求体中包含 JSON 格式的信息。大多数情况下,需要在 .yaml 文件中为 kubectl 提供这些信息。kubectl 在发起 API 请求时,将这些信息转换成 JSON 格式。
大体的 .yaml 文件格式如下所示,其中包含的都是配置 yaml 文件启动服务必须或者建议配置的字段。apiVersion: v1 # 必选,版本号,例如v1 kind: Pod # 必选,资源类型,例如 Pod metadata: # 必选,元数据 name: string # 必选,Pod名称 namespace: string # Pod所属的命名空间,默认为"default" labels: # 自定义标签列表 - name: string spec: # 必选,Pod中容器的详细定义 containers: # 必选,Pod中容器列表 - name: string # 必选,容器名称 image: string # 必选,容器的镜像名称 imagePullPolicy: [ Always|Never|IfNotPresent ] # 获取镜像的策略 command: [string] # 容器的启动命令列表,如不指定,使用打包时使用的启动命令 args: [string] # 容器的启动命令参数列表 workingDir: string # 容器的工作目录 volumeMounts: # 挂载到容器内部的存储卷配置 - name: string # 引用pod定义的共享存储卷的名称,需用volumes[]部分定义的的卷名 mountPath: string # 存储卷在容器内mount的绝对路径,应少于512字符 readOnly: boolean # 是否为只读模式 ports: # 需要暴露的端口库号列表 - name: string # 端口的名称 containerPort: int # 容器需要监听的端口号 hostPort: int # 容器所在主机需要监听的端口号,默认与Container相同 protocol: string # 端口协议,支持TCP和UDP,默认TCP env: # 容器运行前需设置的环境变量列表 - name: string # 环境变量名称 value: string # 环境变量的值 resources: # 资源限制和请求的设置 limits: # 资源限制的设置 cpu: string # Cpu的限制,单位为core数,将用于docker run --cpu-shares参数 memory: string # 内存限制,单位可以为Mib/Gib,将用于docker run --memory参数 requests: # 资源请求的设置 cpu: string # Cpu请求,容器启动的初始可用数量 memory: string # 内存请求,容器启动的初始可用数量 lifecycle: # 生命周期钩子 postStart: # 容器启动后立即执行此钩子,如果执行失败,会根据重启策略进行重启 preStop: # 容器终止前执行此钩子,无论结果如何,容器都会终止 livenessProbe: # 对Pod内各容器健康检查的设置,当探测无响应几次后将自动重启该容器 exec: # 对Pod容器内检查方式设置为exec方式 command: [string] # exec方式需要制定的命令或脚本 httpGet: # 对Pod内个容器健康检查方法设置为HttpGet,需要制定Path、port path: string port: number host: string scheme: string HttpHeaders: - name: string value: string tcpSocket: # 对Pod内个容器健康检查方式设置为tcpSocket方式 port: number initialDelaySeconds: 0 # 容器启动完成后首次探测的时间,单位为秒 timeoutSeconds: 0 # 对容器健康检查探测等待响应的超时时间,单位秒,默认1秒 periodSeconds: 0 # 对容器监控检查的定期探测时间设置,单位秒,默认10秒一次 successThreshold: 0 failureThreshold: 0 securityContext: privileged: false restartPolicy: [Always | Never | OnFailure] # Pod的重启策略 nodeName: # 设置NodeName表示将该Pod调度到指定到名称的node节点上 nodeSelector: obeject # 设置NodeSelector表示将该Pod调度到包含这个label的node上 imagePullSecrets: # Pull镜像时使用的secret名称,以key:secretkey格式指定 - name: string hostNetwork: false # 是否使用主机网络模式,默认为false,如果设置为true,表示使用宿主机网络 volumes: # 在该pod上定义共享存储卷列表 - name: string # 共享存储卷名称 (volumes类型有很多种) emptyDir: {} # 类型为emtyDir的存储卷,与Pod同生命周期的一个临时目录。为空值 hostPath: string # 类型为hostPath的存储卷,表示挂载Pod所在宿主机的目录 path: string # Pod所在宿主机的目录,将被用于同期中mount的目录 secret: # 类型为secret的存储卷,挂载集群与定义的secret对象到容器内部 scretname: string items: - key: string path: string configMap: # 类型为configMap的存储卷,挂载预定义的configMap对象到容器内部 name: string items: - key: string path: string 复制代码3. Pod 资源字段详解
在 kubernetes 中基本所有资源的一级属性都是一样的,主要包含5部分:apiVersion 版本,由 kubernetes 内部定义,版本号必须可以用 kubectl api-versions 查询到;kind 类型,由 kubernetes 内部定义,版本号必须可以用 kubectl api-resources 查询到;metadata 元数据,主要是资源标识和说明,常用的有name、namespace、labels等;spec 描述,这是配置中最重要的一部分,里面是对各种资源配置的详细描述;status 状态信息,里面的内容不需要定义,由 kubernetes 自动生成。apiVersion: # 版本信息 kind: # 资源类别 metadata: # 资源元数据 name: # 元数据对应的名称 namespace: # 元数据所属的命名空间 lables: # 对资源打上便签供后续使用 annotations: # 主要目的是方便用户阅读查找 spec: # 定义期望状态 status: # 设置当前状态 复制代码
关于 Pod 的前置知识学习请参考 Kubernetes 系统化学习之 POD原理篇(二)
创建一个 Podvim nginx.yaml 复制代码
nginx.yaml:# vim nginx.yaml apiVersion: v1 # 必选,API 的版本号 kind: Pod # 必选,类型 Pod metadata: # 必选,元数据 name: nginx # 必选,符合 RFC 1035 规范的 Pod 名称 spec: # 必选,用于定义 Pod 的详细信息 containers: # 必选,容器列表 - name: nginx # 必选,符合 RFC 1035 规范的容器名称 image: nginx:1.15.12 # 必选,容器所用的镜像的地址 ports: # 可选,容器需要暴露的端口号列表 - containerPort: 80 # 端口号 复制代码kubectl create -f nginx.yaml 复制代码
输出结果:# kubectl create -f nginx.yaml pod/nginx created 复制代码
查看 Pod 状态kubectl get po nginx 复制代码
输出结果:# kubectl get po nginx NAME READY STATUS RESTARTS AGE nginx 0/1 ContainerCreating 0 20s 复制代码
使用 kubectl run 创建一个 Podkubectl run nginx-run --image=nginx:1.15.12 复制代码
在上面的属性中,spec是接下来研究的重点,继续看下它的常见子属性:containers <[]Object> 容器列表,用于定义容器的详细信息;nodeName 根据nodeName的值将pod调度到指定的Node节点上;nodeSelector
好事不出门,坏事传全球,超20国媒体报道唐山事件,丢人啊嘿,这里是辣条俗话说好事不出门,坏事传千里。唐山这事可不是传千里,万里都不止。可以说已经传遍全球了,有20余个国家的媒体进行报道,或者多次追踪报道。这次事件的影响力,不亚于第二次大
民进党政治操弄救不了台湾石斑鱼作者朱穗怡台湾渔农产品又出事。大陆海关总署近日表示,由于多次检出禁用药物,将自今年6月13日起暂停台湾石斑鱼输入大陆。早在今年1月,大陆就已经指出,销往大陆的台湾活石斑鱼中检出禁用
小酒026张弓小酒值不值?先看看瓶论!本期分享小酒张弓超值小酒东西南北中,好酒在张弓。曾几何时,身居东南一隅的我会在电视上,看到这么一句广告词,也曾经在饭桌上看过他的身影,对于好酒的印象,他是之
一半鸽子一半蛇Halfpigeon,halfsnake一半鸽子一半蛇Halfpigeon,halfsnake做人最起码的原则就是在原则问题上绝不退让。但是为了达到目的,你必须拥有鸽子的纯真和蛇的狡黠。鸽子的温顺是表象的,并不意味着同小
养肝就是养命!建议中老年人常吃6种养肝菜,千万别心疼钱作为人体最大的排毒器官,肝脏的重要性不言而喻,在日常饮食中,大家一定要学会养护自己的肝脏。平时一定要多吃一些对肝脏有利的蔬菜水果以及肉类,让肝脏也能充满力量,快乐地工作。俗话说养肝
猥亵儿童?简直可耻可恶不知道大家有没有关注过性侵害儿童犯罪案例小编最近偶然翻开到以前关于儿童猥亵的案例,里面的内容简直触目惊心,让人愤恨痛心。2009年河南某地,在9月18日凌晨,一名叫做吕善交翻墙进入
专家吃着农民种的粮食说着人模鬼样的话,这不行那不行吃着农民种的粮食却不帮农民说话,还一个歪理一个建议的捉弄咱们老百姓?专家提议1农村孩子不得到城里上学,为什么,难道农村孩子就不配进城还是咋了?专家提议2农户自己种的树不可以自己砍伐
女生嘴上说不要,身体没反抗,男生硬上,是强奸罪?一些女性去酒吧喝酒的时候,会被一些不怀好意的男性盯上,故意将女性灌醉,然后做一些不齿的事情,那么女性没有反抗,还算不算强奸罪了呢?首先我们需要明确,没有明显抵抗是谁来定义的,如果性
463天后百度造车亮相集度首款量产车将对标特斯拉ModelY本报记者陈茂利北京报道在跨界进入汽车赛道463天后,百度造车迎来突破性进展,被百度CEO李彦宏称为一台有四个轮子的机器人正式亮相。日前,由百度和吉利联合创立的集度汽车(以下简称集度
海军有多重视南沙防务?反舰和防空导弹全部上岛,022导弹艇伴随南海是中国三大边缘海之一,总面积超过了350万平方公里。南海不但物产与自然资源丰富,还是沟通印度洋与大西洋的交通交道,在军事层面也起到了对大陆东南沿海省份的缓冲作用,因此战略地位十
交广会客厅查一凡在青春赛道上跑出成长加速度查一凡西安供电段黄陵南供电车间电力线路工。95年的他,带着一副黑框眼镜,斯文腼腆。可熟知他的人不会被他的外表骗到,背着30斤的工具包,扛着地线杆,穿行在崇山峻岭,登杆巡检设备,挖电