k8s-deployment解析
作者:互联网
k8s 最全api介绍
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#volume-v1-core
k8s env、configmap、secret外部数据加载配置
参考文档:https://www.cnblogs.com/qsing/p/15773745.html
# https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#volume-v1-core apiVersion: apps/v1 kind: Deployment metadata: name: centos namespace: test labels: app: centos spec: selector: matchLabels: app: centos replicas: 1 strategy: #部署策略更多策略 1.https://www.qikqiak.com/post/k8s-deployment-strategies/ type: RollingUpdate #其他类型如下 1.重建(Recreate) 开发环境使用 2.RollingUpdate(滚动更新) rollingUpdate: maxSurge: 25% #一次可以添加多少个Pod maxUnavailable: 25% #滚动更新期间最大多少个Pod不可用 template: metadata: labels: app: 'centos' spec: terminationGracePeriodSeconds: 10 #优雅关闭时间,这个时间内优雅关闭未结束,k8s 强制 kill affinity: podAntiAffinity: # pod反亲和性,尽量避免同一个应用调度到相同node preferredDuringSchedulingIgnoredDuringExecution: #硬需求 1.preferredDuringSchedulingIgnoredDuringExecution 软需求 - weight: 100 #weight 字段值的 范围是 1-100。 对于每个符合所有调度要求(资源请求、RequiredDuringScheduling 亲和性表达式等) 的节点,调度器将遍历该字段的元素来计算总和,并且如果节点匹配对应的 MatchExpressions,则添加“权重”到总和。 然后将这个评分与该节点的其他优先级函数的评分进行组合。 总分最高的节点是最优选的。 podAffinityTerm: labelSelector: matchExpressions: - key: app operator: In values: - centos topologyKey: "kubernetes.io/hostname" containers: - name: centos image: centos:centos7.9.2009 imagePullPolicy: IfNotPresent #镜像拉取策略 1.IfNotPresent如果本地存在镜像就优先使用本地镜像。2.Never直接不再去拉取镜像了,使用本地的.如果本地不存在就报异常了。 #3.imagePullPolicy 未被定义为特定的值,默认值设置为 Always 本地是否存在都会去仓库拉取镜像. env: #自定义变量,最常用的 - name: DEMO_VERSION #DEMO_VERSION:直接添加变量值demov1 value: demov1 #Downward API官网示例 https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/ - name: CENTOS_NODE_IP valueFrom: fieldRef: #这两种呈现 Pod 和 Container 字段的方式统称为 Downward API。 fieldPath: status.hostIP #获取pod 所在node IP地址设置为CHJ_NODE_IP - name: CENTOS_POD_IP #变量名称 valueFrom: fieldRef: fieldPath: status.podIP #获取pod自身ip地址设置为CHJ_POD_IP变量名称 #从此清单内容中拿取变量 - name: DEMO_CONT_MEM #DEMO_CONT_MEM:结合valueFrom中resourceFieldRef获取容器资源字段limits.memory valueFrom: resourceFieldRef: containerName: centos resource: limits.memory command: [ "/bin/bash", "-c", "--" ] args: [ "while true; do sleep 30; done;" ] volumeMounts: #容器内要挂载出去的位置 - name: root-data #自定义名称,需与volumes下名称对应 mountPath: /root #容器内挂载镜像路径 # - name: root-data-nfs # mountPath: /home resources: #qos 设置 limits: cpu: 100m #pod 占单核cpu 1/10 memory: 100Mi #内存100M #hostPath 卷能将主机节点文件系统上的文件或目录挂载到你的 Pod 中。 虽然这不是大多数 Pod 需要的,但是它为一些应用程序提供了强大的逃生舱。 volumes: - name: root-data #卷名称 hostPath: #卷类型详细见:https://kubernetes.io/zh/docs/concepts/storage/volumes/ path: /aaa/ #宿主机存在的目录路径 type: DirectoryOrCreate #如果在给定路径上什么都不存在,那么将根据需要创建空目录,权限设置为 0755,具有与 kubelet 相同的组和属主信息 # - name: root-data-nfs #指定名称必须与volumeMounts -name 一致 # nfs: #nfs存储 # path: /nfs/v1 #nfs服务器共享的目录 # server: 192.168.15.111 #nfs服务器ip或是域名 livenessProbe: #存活探针从这里开始换,1.命令方式 failureThreshold: 3 #处于成功时状态时,探测操作至少连续多少次的失败才被视为检测不通过,显示为#failure属性.默认值为3,最小值为 1,存活探测情况下的放弃就意味着重新启动容器。 initialDelaySeconds: 600 #延迟检测时间 periodSeconds: 5 #检测时间间隔 successThreshold: 1 #处于失败状态时,探测操作至少连续多少次的成功才被人为是通过检测,显示为#success属性,默认值为1,最小值也是1 timeoutSeconds: 3 #存活性探测的超时时长,显示为timeout属性,默认值1s,最小值也是1s exec: #使用命令检查 command: #指令,类似于运行命令sh - cat #sh 后的第一个内容,直到需要输入空格,变成下一行 - /tmp/healthy #由于不能输入空格,需要另外声明,结果为sh cat"空格"/tmp/healthy livenessProbe: #存活探针器配置,2.httpGet 适用于http方式的检测 failureThreshold: 3 #处于成功时状态时,探测操作至少连续多少次的失败才被视为检测不通过,显示为#failure属性.默认值为3,最小值为 1,存活探测情况下的放弃就意味着重新启动容器。 httpGet: #1.存活探针器三种方式 1.cmd命令方式进行探测 2.http 状态码方式 3.基于tcp端口探测 path: /healthy #k8s源码中healthz 实现 https://github.com/kubernetes/kubernetes/blob/master/test/images/agnhost/liveness/server.go port: 8080 #应用程序监听端口 initialDelaySeconds: 600 #存活性探测延迟时长,即容器启动多久之后再开始第一次探测操作,显示为delay属性.默认值为0,即容器启动后立刻便开始进行探测. periodSeconds: 10 #执行探测的时间间隔(单位是秒)。默认是 10 秒。最小值是 1秒,过高的频率会对Pod对象带来较大的额外开销,而过低的频率又会使得对错误的反应不及时. successThreshold: 1 #处于失败状态时,探测操作至少连续多少次的成功才被人为是通过检测,显示为#success属性,默认值为1,最小值也是1 timeoutSeconds: 3 #存活性探测的超时时长,显示为timeout属性,默认值1s,最小值也是1s livenessProbe: #存活探针器配置,3.tcpSocket 适用于端口方式的检测 failureThreshold: 3 #处于成功时状态时,探测操作至少连续多少次的失败才被视为检测不通过,显示为#failure属性.默认值为3,最小值为 1,存活探测情况下的放弃就意味着重新启动容器。 tcpSocket: # 探针类型为tcpSocket port: 80 #要检测的端口 initialDelaySeconds: 600 #存活性探测延迟时长,即容器启动多久之后再开始第一次探测操作,显示为delay属性.默认值为0,即容器启动后立刻便开始进行探测. periodSeconds: 10 #执行探测的时间间隔(单位是秒)。默认是 10 秒。最小值是 1秒,过高的频率会对Pod对象带来较大的额外开销,而过低的频率又会使得对错误的反应不及时. successThreshold: 1 #处于失败状态时,探测操作至少连续多少次的成功才被人为是通过检测,显示为#success属性,默认值为1,最小值也是1 timeoutSeconds: 3 #存活性探测的超时时长,显示为timeout属性,默认值1s,最小值也是1s readinessProbe: #就绪探测器配置从这里开始换,1.命令方式 failureThreshold: 3 #处于成功时状态时,探测操作至少连续多少次的失败才被视为检测不通过,显示为#failure属性.默认值为3,最小值为 1,存活探测情况下的放弃就意味着重新启动容器。 initialDelaySeconds: 600 #延迟检测时间 periodSeconds: 5 #检测时间间隔 successThreshold: 1 #处于失败状态时,探测操作至少连续多少次的成功才被人为是通过检测,显示为#success属性,默认值为1,最小值也是1 timeoutSeconds: 3 #存活性探测的超时时长,显示为timeout属性,默认值1s,最小值也是1s exec: #使用命令检查 command: #指令,类似于运行命令sh - cat #sh 后的第一个内容,直到需要输入空格,变成下一行 - /tmp/healthy #由于不能输入空格,需要另外声明,结果为sh cat"空格"/tmp/healthy readinessProbe: #就绪探测器配置,2.httpGet 适用于http方式的检测 failureThreshold: 3 #处于成功时状态时,探测操作至少连续多少次的失败才被视为检测不通过,显示为#failure属性.默认值为3,最小值为 1,存活探测情况下的放弃就意味着重新启动容器。 httpGet: #1.存活探针器三种方式 1.cmd命令方式进行探测 2.http 状态码方式 3.基于tcp端口探测 path: /healthy #k8s源码中healthz 实现 https://github.com/kubernetes/kubernetes/blob/master/test/images/agnhost/liveness/server.go port: 8080 #应用程序监听端口 initialDelaySeconds: 600 #存活性探测延迟时长,即容器启动多久之后再开始第一次探测操作,显示为delay属性.默认值为0,即容器启动后立刻便开始进行探测. periodSeconds: 10 #执行探测的时间间隔(单位是秒)。默认是 10 秒。最小值是 1秒,过高的频率会对Pod对象带来较大的额外开销,而过低的频率又会使得对错误的反应不及时. successThreshold: 1 #处于失败状态时,探测操作至少连续多少次的成功才被人为是通过检测,显示为#success属性,默认值为1,最小值也是1 timeoutSeconds: 3 #存活性探测的超时时长,显示为timeout属性,默认值1s,最小值也是1s readinessProbe: #就绪探测器配置,3.tcpSocket 适用于端口方式的检测 failureThreshold: 3 #处于成功时状态时,探测操作至少连续多少次的失败才被视为检测不通过,显示为#failure属性.默认值为3,最小值为 就绪探测情况下的放弃 Pod 会被打上未就绪的标签. tcpSocket: # 1.就绪探针三种方式 1.cmd命令方式进行探测 2.http 状态码方式 3.基于tcp端口探测 port: 8080 #应用程序监听端口 initialDelaySeconds: 10 #执行探测的时间间隔(单位是秒)。默认是 10 秒。最小值是 1秒,过高的频率会对Pod对象带来较大的额外开销,而过低的频率又会使得对错误的反应不及时. periodSeconds: 10 #执行探测的时间间隔(单位是秒)。默认是 10 秒。最小值是 1秒,过高的频率会对Pod对象带来较大的额外开销,而过低的频率又会使得对错误的反应不及时 successThreshold: 1 #处于失败状态时,探测操作至少连续多少次的成功才被人为是通过检测,显示为#success属性,默认值为1,最小值也是1 timeoutSeconds: 3 #存活性探测的超时时长,显示为timeout属性,默认值1s,最小值也是1s
标签:1s,解析,默认值,探测,存活,最小值,deployment,k8s,属性 来源: https://www.cnblogs.com/buyuantouluxingmingdeluxiansheng/p/16383701.html