Kubernetes-4.Runtime Class&&Kubernetes生命周期回调(in the rear of this essay)

本文介绍了Kubernetes的Runtime Class特性,用于选择容器运行时配置,以平衡性能和安全性。详细阐述了如何配置和使用Runtime Class,以及调度、Pod开销和生命周期回调(postStart, preStop)的概念。Runtime Class的scheduling字段支持异构集群,PodOverhead允许声明运行开销,确保资源管理。" 128108504,147686,初探.NET MAUI:从Xamarin.Forms到跨平台开发,"['c#', 'windows', 'MAUI', 'android']
摘要由CSDN通过智能技术生成

Runtime Class 资源以及运行时的选择机制?
定义:Runtime Class 是一个用于选择容器Runtime配置的特性,容器Runtime配置用于运行Pod中的容器

  1. 动机
    对于不同的Pod设置不同的Runtime Class,以提供性能和安全性的之间平衡性。比如让部分工作负载有高级别的信息安全保证,调度对应Pod使其运行在硬件虚拟化的容器中。(换一个Runtime运行)
    当然也可以使用RuntimeClass运行具有相同容器Runtime但runtime设置不尽相同的Pod
  2. 设置
    ①特性门控:描述Kubernetes特性的一组键值对。可以在Kubernetes的每一个组件里 使用”–feature-gates“这一flag进行启用/禁用特性
    Runtime Class特性开关必须在API服务器和Kubelet端同时开启————先在节点上配置CRI的实现(取决于所用runtime),随后创建相应的Runtime Class资源
    PS:Runtime Class 假设集群的节点是同构的,也就是所有的节点的Run Time方面配置是相同的。若存在异构的节点需要支持,需要使用调度
    PS:每个配置都需要一个用于标识配置的handler,针对每个handler创建一个Runtime Class对象。RuntimeClass资源有两个重要的字段:Runtime Class名 metadata.name 和 handler
    例子如下:
apiVersion: node.k8s.io/v1beta1  # RuntimeClass 定义于 node.k8s.io API 组
kind: RuntimeClass
metadata:
  name: myclass  # 用来引用 RuntimeClass 的名字
  # RuntimeClass 是一个集群层面的资源
handler: myconfiguration  # 对应的 CRI 配置的名称
  1. 使用说明
    集群中完成Runtime Classes的配置后,使用就方便起来了,在Pod spec中指定 runtimeClassName
    比如:
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:jiang
  runtimeClassName: myclass
  # ...

该设置告诉kubelet使用所指的RuntimeClass运行pod。如果RuntimeClass不存在/CRI无法运行对应的handler,pod进入Failed终止阶段。
不指定runtimeClassName 将使用默认的RuntimeHandler,相当于禁用RuntimeClass特性

  1. 调度(Scheduling)
    Kubernetes v1.16版本,RuntimeClass特性引入了scheduling字段支持异构集群。该字段可以确保pod被调用到支持指定runtime的节点上。
    scheduling需要Runtime Class准入控制器处于开启状态,v1.16版本默认开启。
    为了确保pod被调度到支持指定运行时的node上,每个node需要设置一个 通用的lable,由runtimeclass.scheduling.nodeSelector。在admission阶段,RuntimeClass的nodeSelector将pod的nodeSelector合并,取交集。发现冲突,pod将会被拒绝。
  2. Pod开销
    版本 v1.18,指定与运行pod相关的开销资源。声明开销即允许集群(包括调度器)在决策Pod和资源时将其考虑在内。需要确保PodOverhead启用。
    Pod开销由RuntimeClass的overhead字段定义。通过 使用overhead字段,可以指定使用该RuntimeClass运行Pod时的开销并确保Kubernetes将这些开销计算在内。
  3. Kubernetes的生命周期事件,postStart,preStop,
    Kubernetes 在容器创建后立即发送 postStart 事件
    容器管理逻辑会一直阻塞等待 postStart 处理函数执行完毕。只有 postStart 处理函数执行完毕,容器的状态才会变成 RUNNING。
    Kubernetes 在容器结束前立即发送 preStop 事件
    除非 Pod 宽限期限超时,Kubernetes 的容器管理逻辑 会一直阻塞等待 preStop 处理函数执行完毕
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值