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
两人一车全国自驾游第二十二天(太姥山)两人我和老伴(孤筑先生)一车小迪(比亚迪宋PRODMI油电混动)旅行方向从济南出发到连云港,然后一路南下,时间不限九鲤湖今天最想做的事就是站到太姥山顶观海,吹海风还是山风?都可以,
36氪研究院中国中小企业数字化转型研究报告(2022)随着数字经济蓬勃发展,数字化转型已经成为大势所趋。今年全国两会期间,中小企业数字化转型升级的议题仍然是各方关注的热点。政府工作报告中指出,加快传统产业和中小企业数字化转型,着力提升
专访全国政协委员中信资本董事长张懿宸实施全面注册制有助于进一步畅通VCPE退出通道每经记者程雅每经编辑魏官红今年两会期间,全国政协委员中信资本董事长张懿宸从商业不动产公募REITs创业投资和私募股权投资提升中国香港地区国际竞争力绿色物流公共卫生和食品安全儿童药高
新疆木垒建成大型风力发电叶片制造基地3月7日,在新疆木垒县东方风电新能源有限公司工人们正在进行风电叶片前期铺层工作。陶拴科摄中新网新疆木垒3月7日电(陶拴科)7日记者从新疆木垒县民生工业园区管理委员会获悉,目前,木垒
一条制造业产业链的跃升央视网消息(新闻联播)小小一块显示屏却是信息产业的核心部件。瞄准关键技术和薄弱环节持续创新,上下游企业集中资源合力攻关,正推动我国新型显示产业链加速向上跃升。合肥新站高新区是全球新
大杨实验室一款可以自清洁的空调,是一种什么样的体验?视频加载中红网时刻新闻3月7日讯(记者杨淑华甘伟萍)如今日常生活中,空气质量已经成为广大民众十分关心的话题,但是在众多呼吸健康问题上,很多人忽略了家中这样一个隐形杀手脏空调。空调是
药店排队上市,医药零售行业变天?来源赛柏蓝作者四喜012023或成药店上市大年熬过了至暗时刻,2023药店或迎来上市大年。3月1日,何氏两兄弟深交所敲钟,连锁药店新秀华人健康上市。这个长期盘踞在安徽的连锁巨头,提
吉利汽车2月销量108701辆同比增长约39出品搜狐汽车吉利汽车公布2月产销快报,吉利汽车2月总销量为108701辆,同比增长约39,其中纯电动汽车销量达到21289辆,同比增长74插电混动汽车销量1994辆,同比下滑3油电
李宇春范思哲事件,被质疑在替出事品牌洗白头条创作挑战赛李宇春范思哲最近李宇春参加范思哲2023年秋冬大秀在网上遭到非常大的争议,主因为范思哲其实是一个rh品牌。范思哲早在19年就被爆出无视中国领土完整的丑闻,将香港澳门作
特灵入选20212022年度中央空调十大领军品牌全球温控系统创新者特灵科技旗下战略品牌特灵(Trane)宣布,凭借深厚的品牌积淀和突出的行业表现,特灵荣膺20212022年度中国暖通产业大会中央空调十大领军品牌。非常荣幸能够获此
俄罗斯12月财政赤字已达全年预期的约9成俄罗斯财政部3月6日发布的数据显示,12月财政收支赤字约为2。58万亿卢布(约合人民币2378亿元)。赤字额比1月(约1。76万亿卢布)扩大。俄罗斯的财政收入也比上年同期减少25,