长期支持版本

    社区创新版本

      CRI V1接口支持

      概述

      CRI(Container Runtime Interface, 容器运行时接口)是kublet与容器引擎通信使用的主要协议。 在K8S 1.25及之前,K8S存在CRI v1alpha2 和 CRI V1两种版本的CRI接口,但从1.26开始,K8S仅提供对于CRI V1的支持。

      iSulad同时提供对CRI v1alpha2和CRI v1的支持, 对于CRI v1,iSulad支持CRI v1alpha2所述功能, 并提供对CRI V1中所定义新接口和字段的支持。

      目前iSulad支持的CRI V1版本为1.29,对应官网描述API如下:

      https://github.com/kubernetes/cri-api/blob/kubernetes-1.29.0/pkg/apis/runtime/v1/api.proto

      iSulad使用的API描述文件,与官方API略有出入,以本文档描述的接口为准。

      新增字段描述

      • CgroupDriver

        cgroup驱动的enum值列表

        参数成员

        描述

        SYSTEMD = 0

        systemd cgroup驱动

        CGROUPFS = 1

        cgroupfs驱动

      • LinuxRuntimeConfiguration

        容器引擎所使用的cgroup驱动

        参数成员

        描述

        CgroupDriver cgroup_driver

        容器引擎所使用的cgroup驱动枚举值

      • ContainerEventType

        容器事件类型枚举值

        参数成员

        描述

        CONTAINER_CREATED_EVENT = 0

        容器创建类型

        CONTAINER_STARTED_EVENT = 1

        容器启动类型

        CONTAINER_STOPPED_EVENT = 1

        容器停止类型

        CONTAINER_DELETED_EVENT = 1

        容器删除类型

      • SwapUsage

        虚拟内存使用情况

        参数成员

        描述

        int64 timestamp

        时间戳信息

        UInt64Value swap_available_bytes

        可使用虚拟内存字节数

        UInt64Value swap_usage_bytes

        已使用虚拟内存字节数

      新增接口描述

      RuntimeConfig

      接口原型

      rpc RuntimeConfig(RuntimeConfigRequest) returns (RuntimeConfigResponse) {}
      

      接口描述

      获取cgroup驱动配置 cgroupfs 或 systemd-cgroup

      参数 RuntimeConfigRequest

      无字段

      返回值 RuntimeConfigResponse

      返回值

      描述

      LinuxRuntimeConfiguration linux

      描述cgroupfs或者systemd-cgroup的CgroupDriver枚举值

      GetContainerEvents

      接口原型

      rpc GetContainerEvents(GetEventsRequest) returns (stream ContainerEventResponse) {}
      

      接口描述

      获取Pod生命周期事件流

      参数 GetEventsRequest

      无字段

      返回值 ContainerEventResponse

      返回值

      描述

      string container_id

      容器id

      ContainerEventType container_event_type

      容器事件类型

      int64 created_at

      容器事件产生时间

      PodSandboxStatus pod_sandbox_status

      容器所属Pod的status信息

      repeated ContainerStatus containers_statuses

      容器所属Pod内所有容器的status信息

      变更描述

      CRI V1.29更新变更描述

      获取cgroup驱动配置

      RuntimeConfig 获取cgroup驱动配置 cgroupfs 或 systemd-cgroup

      GetContainerEvents支持pod生命周期事件

      GetContainerEents,提供对pod生命周期相关事件流

      PodSandboxStatus有相应调整,增加ContainerStatuses提供沙箱内容器status信息

      ContainerStats虚拟内存信息

      ContainerStats新增虚拟内存使用情况信息: SwapUsage

      ContainerStatus reason字段OOMKilled设置

      ContainerStatus中reason字段在cgroup out-of-memory时应该设置为OOMKilled

      PodSecurityContext.SupplementalGroups描述修改

      描述修改,优化PodSecurityContext.SupplementalGroups的注释,明确容器镜像定义的主UID不在该列表下的行为

      ExecSync输出限制

      ExecSync返回值输出小于16MB

      使用手册

      配置iSulad支持CRI V1

      该需求需要iSulad对K8S新版本CRI接口1.29提供支持,

      对于1.25及之前的CRI接口,V1alpha2和V1功能保持一致,1.26及之后新增的特性仅在CRI V1中提供支持。 此次升级的功能和特性仅在CRI V1中提供支持,因此新增特性均需要按照以下配置使能CRI V1。

      CRI V1使能:

      iSulad daemon.json中enable-cri-v1设置为true,重启iSulad

      {
          "group": "isula",
          "default-runtime": "runc",
          ...
          "enable-cri-v1": true
      }
      

      若通过源码进行编译安装iSulad需开启ENABLE_CRI_API_V1编译选项

      cmake ../ -D ENABLE_CRI_API_V1=ON
      

      RuntimeConfig获取cgroup驱动配置

      systemd-cgroup配置

      iSulad同时提供对systemd和cgroupfs两种cgroup驱动支持, 默认使用cgroupfs作为cgroup驱动,可以通过配置iSulad容器引擎提供对systemd cgroup驱动支持。 iSulad仅提供底层运行时为runc时systemd-cgroup的支持。通过修改iSulad配置文件daemon.json, 设置systemd-cgroup为true,重启iSulad,则使用systemd cgroup驱动。

      {
          "group": "isula",
          "default-runtime": "runc",
          ...
          "enable-cri-v1": true,
          "systemd-cgroup": true
      }
      

      GetContainerEvents Pod 生命周期事件生成

      Pod Events配置

      修改iSulad配置文件daemon.json, 设置enable-pod-events为true,重启iSulad。

      {
          "group": "isula",
          "default-runtime": "runc",
          ...
          "enable-cri-v1": true,
          "enable-pod-events": true
      }
      

      使用限制

      1. 以上新增特性,iSulad仅提供容器运行时设置为runc时的支持。
      2. 由于cgroup oom会同时触发容器cgroup路径删除,若iSulad对oom事件处理发生在 cgroup路径删除之后,iSulad则无法成功捕捉容器oom事件, 可能导致ContainerStatus中reason字段设置不正确。
      3. iSulad不支持交叉使用不同的cgroup驱动管理容器,启动容器后iSulad的cgroup驱动配置不应该发生变化。

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份