【问题标题】:Is it possible to install the Sysbox container runtime on GKE?是否可以在 GKE 上安装 Sysbox 容器运行时?
【发布时间】:2021-05-02 01:07:24
【问题描述】:

我想在 GKE 上安装一个 CI 工具,以便我可以通过 Sysbox 运行 docker-in-docker。

为此,我需要安装 Sysbox 容器运行时。

在 GKE 中可以做到吗?

【问题讨论】:

    标签: google-kubernetes-engine docker-in-docker


    【解决方案1】:

    现在正式支持使用 Sysbox 部署 pod,并且可以在 GKE 上运行。

    Sysbox(Nestybox,我是其中的创始人之一)的制造商创建了一个 Kubernetes 守护程序集,以使安装变得容易且跨节点娱乐持久。守护进程会在您希望的任何 Kubernetes 节点上安装 Sysbox。 Sysbox 与默认运行时(通常是 OCI runc)一起安装,您可以选择哪些 pod 使用 Sysbox 部署,哪些使用默认运行时。

    使用 Sysbox 部署 pod 的优势在于,它们通过 Linux 用户命名空间(即无根用户)进行了高度隔离,并且不仅能够运行微服务,还能够运行 systemd、Docker 本身甚至 Kubernetes 等系统软件。这在将容器用于 CI/CD、开发环境、学习环境、运行旧版应用等时非常有用。

    【讨论】:

      【解决方案2】:

      Sysbox runtime 尚不支持与 K8s 的集成(我们正在努力)。

      限制源于 Sysbox 始终使用 Linux 用户命名空间部署容器(以提高隔离性),因此它要求 K8s pod 也使用 Linux 用户命名空间。 CRI-O 运行时已经对此提供了初步支持,因此我们希望它很快就会工作。有关详细信息,请参阅此sysbox issue。很可能 containerd 也会很快添加这个。

      为了在 GKE 节点上配置 Sysbox,我们正在研究一种 K8s 原生方法,例如 daemonSet,它可以让用户轻松地将运行时放入节点并配置 K8s 并选择使用它。配置完成后,用户将通过 K8s RuntimeClass 为您的 pod 选择运行时。

      【讨论】:

      • K8s 原生解决方案听起来很棒。我们正在为 Azure Kubernetes 服务 (AKS) 寻找类似的解决方案。
      【解决方案3】:

      现在有一个可与 Kubernetes 配合使用的 Sysbox 预览版。

      这使 Kubernetes 能够部署类似于“轻量级虚拟机”的无根 pod,并且可以在内部运行 systemd、Docker 甚至 Kubernetes(无需实际使用虚拟机)。

      你可以在这里找到它:https://github.com/nestybox/sysbox-pods-preview

      【讨论】:

        【解决方案4】:

        GKE 是由提供商管理的 Kubernetes 解决方案,其中某些方面由您的云提供商处理。诸如节点配置、自动更新、安全补丁、开箱即用的某些存储解决方案的访问等。

        特别关注Nodes。 Kubernetes 依靠 Container Runtime 来运行它的容器。 GKE 具有带有特定 Container Runtimes 的预定义图像。您可以通过下表看到:

        OS Node images
        Container-Optimized OS Container-Optimized OS with Containerd (cos_containerd), Container-Optimized OS with Docker (cos)
        Ubuntu Ubuntu with Containerd (ubuntu_containerd), Ubuntu with Docker (ubuntu)
        Windows Server Windows Server LTSC (windows_ltsc), Windows Server SAC (windows_sac)

        -- Cloud.google.com: Kubernetes Engine: Docs: Concepts: Node images

        如您所见,Container Runtimes 已经预先确定。准备在GKE 生态系统中运行的OS 之间存在差异。例如,COS 没有固有的包管理器(为此您应该使用CoreOS Toolbox)。

        补充:

        节点虚拟机修改

        节点虚拟机启动磁盘上的修改不会在节点重新创建过程中持续存在。在manual upgradeauto-upgradeauto-repairauto-scaling 期间重新创建节点。此外,当您启用需要重新创建节点的功能时,会重新创建节点,例如GKE sandboxintranode visibilityshielded nodes

        要在重新创建节点时保留修改,请使用DaemonSet

        不建议管理节点镜像提供的关键软件,例如内核或容器运行时(containerddocker)。节点映像经过广泛测试,修改节点映像中提供的关键软件会使节点处于未知且不可测试的状态。

        -- Cloud.google.com: Kubernetes Engine: Docs: Concepts: Node images: Modifications


        其他资源:

        【讨论】:

        • 是的!我想我会在 --privileged 然后使用dind
        猜你喜欢
        • 2021-08-14
        • 2022-10-27
        • 2011-01-04
        • 2021-11-04
        • 2017-05-07
        • 2022-01-16
        • 1970-01-01
        • 2011-05-27
        • 2018-06-18
        相关资源
        最近更新 更多