长期支持版本

    社区创新版本

      为安全容器配置资源

      安全容器运行于虚拟化隔离的轻量级虚拟机内,因此资源的配置应分为两部分:对轻量级虚拟机的资源配置,即Host资源配置;对虚拟机内容器的配置,即Guest容器资源配置。以下资源配置均分为这两部分。

      资源共享

      由于安全容器运行于虚拟化隔离的轻量虚拟机内,故无法访问Host上某些namespace下的资源,因此启动时不支持--net host,--ipc host,--pid host,--uts host。

      当启动一个Pod时,同一个Pod中的所有容器默认共享同一个net namespace和ipc namespace。如果同一个Pod中的容器需要共享pid namespace,则可以通过Kubernetes进行配置,Kubernetes 1.11版本该值为默认关闭。

      限制Blkio资源

      1. 配置轻量级虚拟机Blkio运行资源

        对轻量级虚拟机的BlkIio资源配置,安全容器使用--annotation com.github.containers.virtcontainers.blkio_cgroup配置轻量级虚拟机使用的块设备的blkio资源,该参数仅可配置在pause容器上:

        docker run -tid --runtime --network none --annotation io.kubernetes.docker.type=podsandbox --annotation com.github.containers.virtcontainers.blkio_cgroup=<blkio json格式字符串> <pause-image> <command>
        

        其中--annotation com.github.containers.virtcontainers.blkio_cgroup的取值要符合下面BlkioCgroup结构体的定义:

        // BlkioCgroup for Linux cgroup 'blkio' data exchange
        type BlkioCgroup struct {
        	// Items specifies per cgroup values
        	Items []BlockIOCgroupItem `json:"blkiocgroup,omitempty"`
        }
        
        type BlockIOCgroupItem struct {
        	// Path represent path of blkio device
        	Path string `json:"path,omitempty"`
        	// Limits specifies the blkio type and value
        	Limits []IOLimit `json:"limits,omitempty"`
        }
        
        type IOLimit struct {
        	// Type specifies IO type
        	Type string `json:"type,omitempty"`
        	// Value specifies rate or weight value
        	Value uint64 `json:"value,omitempty"`
        }
        

        IOLimit结构体中Type字段取值列表为:

        // BlkioThrottleReadBps is the key to fetch throttle_read_bps
        BlkioThrottleReadBps = "throttle_read_bps"
        
        // BlkioThrottleWriteBps is the key to fetch throttle_write_bps
        BlkioThrottleWriteBps = "throttle_write_bps"
        
        // BlkioThrottleReadIOPS is the key to fetch throttle_read_iops
        BlkioThrottleReadIOPS = "throttle_read_iops"
        
        // BlkioThrottleWriteIOPS is the key to fetch throttle_write_iops
        BlkioThrottleWriteIOPS = "throttle_write_iops"
        
        // BlkioWeight is the key to fetch blkio_weight
        BlkioWeight = "blkio_weight"
        
        // BlkioLeafWeight is the key to fetch blkio_leaf_weight
        BlkioLeafWeight = "blkio_leaf_weight"
        

        举例:

        docker run -tid --runtime kata-runtime --network none --annotation com.github.containers.virtcontainers.blkio_cgroup='{"blkiocgroup":[{"path":"/dev/sda","limits":[{"type":"throttle_read_bps","value":400},{"type":"throttle_write_bps","value":400},{"type":"throttle_read_iops","value":700},{"type":"throttle_write_iops","value":699}]},{"limits":[{"type":"blkio_weight","value":78}]}]}' busybox sleep 999999
        

        上面命令表示对启动的安全容器所使用的/dev/sda磁盘进行blkio限流,分别将throttle_read_bps限速为400bps,throttle_write_bps限速为400bps,throttle_read_iops限速为700次/秒,throttle_write_iops限速为699次/秒,以及所在blkio cgroup组的权重值设置为78。

      限制文件描述符资源

      为了避免在容器中打开大量9p共享目录中的文件导致主机上文件描述符资源耗尽,使得安全容器无法正常提供服务,安全容器支持自定义配置安全容器qemu进程最多可以打开的文件描述符数量限制。

      安全容器通过复用docker run命令中的**--files-limit**选项来设置安全容器qemu进程最多可以打开文件描述符,该参数仅可配置在pause容器上,使用方法如下所示:

      docker run -tid --runtime kata-runtime --network none --annotation io.kubernetes.docker.type=podsandbox --files-limit <max-open-files> <pause-image> bash
      

      说明:

      • 如果**--files-limit**选项的取值小于安全容器默认设置的最小值1024且不为0时,安全容器qemu进程最多可以打开的文件描述符数量会被设置为最小值1024。
      • 如果**--files-limit**选项的取值为0时,安全容器qemu进程最多可以打开的文件描述符数量为系统可以打开文件描述符的最大值/proc/sys/fs/file-max除以400后得到的默认值。
      • 如果启动安全容器时没有显示指定**--files-limit**可以打开的文件描述符的上限,安全容器qemu进程可以打开的文件描述符数量的上限和系统默认值保持一致。

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

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

      一键搞定!

      问题类型
      规范和低错类

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

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

      ● 英文中包含中文字符;

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

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

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

      易用性

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

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

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

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

      正确性

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

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

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

      ● 代码片段错误;

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

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

      风险提示

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

      内容合规

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

      ● 内容侵权;

      您对文档的总体满意度

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