安全容器和普通容器相比,它最主要的区别是每个容器(准确地说是pod)都运行在一个单独的微型虚拟机中,拥有独立的操作系统内核,以及虚拟化层的安全隔离。因为云容器引擎CCE的容器安全隔离比独立拥有私有Kubernetes集群有更严格的要求。通过安全容器,不同容器之间的内核、计算资源、网络都是隔离开的,保护了Pod的资源和数据不被其他Pod抢占和窃取。
CCE Turbo集群下单节点支持普通容器和安全容器,您可以根据业务需求选择使用,两者的区别如下:
分类 | 安全容器 | Docker普通容器 | Containerd普通容器 |
---|---|---|---|
容器所在节点类型 | 物理机 | 虚拟机 | 虚拟机 |
容器引擎 | Containerd | Docker | Containerd |
容器运行时 | Kata | runC | runC |
容器内核 | 独占内核 | 与宿主机共享内核 | 与宿主机共享内核 |
容器隔离方式 | 轻量虚拟机 | Cgroups和Namespace | Cgroups和Namespace |
容器引擎存储驱动 | Device Mapper | OverlayFS2 | OverlayFS |
Pod Overhead | 内存:100MiBCPU:0.1CorePod Overhead为安全容器本身资源占用。比如Pod申请的limits.cpu = 0.5Core和limits.memory = 256MiB,那么该Pod最终会申请0.6Core的CPU和356MiB的内存。 | 无 | 无 |
最小规格 | 内存:256MiBCPU:0.25Core安全容器的CPU核数(单位为Core)与内存(单位为GiB)配比建议在1:1至1:8之间。例如CPU为0.5Core,则内存范围建议在512MiB-4GiB间。 | 无 | 无 |
容器引擎命令行 | crictl | docker | crictl |
Pod的计算资源 | CPU和内存的request和limit必须一致 | CPU和内存的request和limit可以不一致 | CPU和内存的request和limit可以不一致 |
hostnetwork | 不支持 | 支持 | 支持 |