k8s中的资源清单

网友投稿 293 2022-10-01

k8s中的资源清单

集群资源分类:

名称空间级别: kube-system

集群级别:role

元数据类型:HPA

工作负载型资源(workload):Pod、ReplicaSet、Deployment、StatefuSet、DaemonSet、Job、CronJob

服务发现及负载均衡型资源:Service、Ingress

配置与存储型资源:Volume(存储卷)、CSI(容器存储接口,可以扩展各种各样的第三方存储卷)

特殊类型的存储卷:ConfiMap(当配置中心来使用的资源类型)、Secret(保存敏感数据)、DownwardAPI(把外部环境中的信息输出给容器)

集群型资源:Namespace、Node、Role、ClusterRole、RoleBinding、ClusterRoleBinding

元数据型资源:HPA、PodTemplate、LimitRange

基本语法

缩进时不允许使用tab键,只允许使用空格缩进的空格数目不重要,只要相同层级的元素左侧对齐即可#标识注释,从这个字符一直到行尾都会被解释器忽略

YAML支持的数据结构

对象:键值对的集合,又称为映射(mapping)/哈希(hashes)/字典(dictionary)数组:一组按次序排列 的值,又称为序列(sequence)/列表(list)纯量(scalars):单个的,不可再分的值

对象类型:对象的一组键值(k/v)对,使用冒号结构表示

name:steve

age:18

Yaml也允许另一种写法,将所有键值对写成一个行内对象

hash:{name:steve,age:18}

数组类型:一组连词开头的行,构成一个数组

animal

- cat

- dog

数组也可以采用行内表示法

animal:[cat,dog]

字符串

字符串默认不使用引号表示

单引号和双引号都可以使用,双引号不会对特殊字符转义

s1:'内容\n字符串'

s2:"内容\n字符串"

单引号之中如果还有单引号,不需使用两个单引号转义

str:'labor''s day'    转义后labor's day

多行字符串可以使用|保留换行符,也可以使用>折叠换行

this: |

foo

bar

that: >

foo

bar

+表示保留文字块末尾的换行,-表示删除字符串末尾的换行

s1:|

foo

s2:  |+

foo

s3:  |-

foo

常用字段说明

curl /组/版本

kubectl explain pod.spec

kubectl describe pod $podname

kubectl log pod $podname -c $containername

Pod生命周期

​如果pod内的容器进程已经死掉,可是容器没有死掉服务不可用,容器状态没问题,pod检测容器没问题该如何解决

​当请求指令下发到api接口调度到kubelet开始容器的初始化,开始创建pod,开始initc(初始化容器)初始化完成后会死亡,当第一个initc完成后才会进行下一个initc,当pod被创建pause容器就开始运行了才开始走initc,才会到mainc(容器内部例如nginx,tomcat)

readiness就绪检测(就绪检测容器内的服务是否可以被正常访问),并不仅仅是running状态就会被外部访问

​liveness当容器内部不能进行正常访问时可以重启或新建pod,(假设存在一个现象nginx出现僵尸进程不能提供外网访问),可是容器依然显示running也就意味着可以被外网访问,这时liveness就可以起到作用

首先kubectl向kubeapi(etcd)调度到kubelet操作到cri容器初始化,首先启用一个pause容器(网络,存储共享),initc初始化---------如果非正常退出非0需要重新初始化(没有正常成功退出)将会重新执行,,,,接着进入mainc,mainc在start时可以允许执行命令或脚本,结束的话会执行stop,,,,,,在过程中(readiness)readiness在没有进行就绪检测成功pod的状态不会显示成running,当mainc里边的进程和liveness状态检测不一致的时候就会执行对应的重启或删除(根据指定的策略)

举个例子initc的必要性:当有两个容器apache+php和mysql时,外部通过访问apache访问到后端mysql时,启动容器时如果apache先启动成功,而mysql没有启动成功的时候,外部访问会报错,这时加一个initmysql来检测mysql是否成功启动,如果检测mysql成功启动后再启动apache+php容器来实现外部访问

​容器探针

​探针是由kubelet对容器(mainc)执行的定期诊断。要执行诊断,kubelet调用由容器实现的Handler。有三种类型的处理程序

​ExecAction:在容器内执行指定命令。如果命令退出时返回码为0则认为诊断成功

TcpSocketAction:对指定端口上的容器的IP地址进行TCP检查。如果端口打开,则诊断被认为是成功的

HTTPGetAction:对指定的端口和路径上的容器的IP地址执行HTTP Get请求。如果响应的状态码大于等于200且小于400,则诊断被认为是成功的

每次探测都将获得以下三种结果之一:

成功:容器通过了诊断

失败:容器未通过诊断

未知:诊断失败,因此不会采取任何行动

探测方式

livenessProbe:指示容器是否正在运行。如果存活探测失败,则kubelet会杀死容器,并且容器将受到重启策略的影响。如果容器不提供存活探针,则默认为success

readinessProbe:指示容器是否准备好服务请求。如果就绪探测失败,端点控制器将从与Pod匹配的素有Service的端点中删除该Pod的IP地址。初始延迟之前的就绪状态默认为Failure。如果容器不提供就绪探针则默认为success

​readinessProbe检测成功后maic才能够宣布被对外访问,livenessProbe会持续循环检测容器运行是否正常

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java利用遗传算法求解最短路径问题
下一篇:bat使用forfiles自动批量删除过期文件
相关文章

 发表评论

暂时没有评论,来抢沙发吧~