新的增强型运行时

Migrate to Containers 的原始 Linux 服务管理器依赖于 sysv initsystemd。简化后的 Linux 服务管理器将其替换为简化的、便于容器的替代方案。

这个简化的 Linux 服务管理器添加了一些功能,可让您将迁移的容器工作负载部署到以下各项:

  • GKE Autopilot 集群

  • Cloud Run

简化的 Linux 服务管理器还解决了与 Kubernetes 插件的兼容性问题。例如,简化的 Linux 服务管理器不但消除了在 deployment_spec.yaml 文件中为 /sys/fs/cgroup 定义 hostpath 的需求,而且消除了创建特权容器的需要。

准备工作

  • Migrate to Containers 会为您提供一个可在虚拟机工作负载上运行的工具,用于确定工作负载是否适合迁移到容器。如需了解详情,请参阅使用适合度评估工具

GKE Autopilot 集群简介

Autopilot 是 Google Kubernetes Engine (GKE) 中的一种操作模式。Autopilot 旨在降低管理集群的运营费用、优化生产集群的性能,以及提高工作负载可用性。在 Autopilot 模式中,GKE 预配和管理集群的底层基础架构(包括节点和节点池),为您提供经过优化的集群和自动化的体验。

如需了解详情,请参阅 Autopilot 概览

Cloud Run 简介

Cloud Run 是一个代管式计算平台,供您运行可通过 Web 请求或 Pub/Sub 事件调用的无状态容器。简化的 Linux 服务管理器允许您在 Cloud Run 上部署迁移的容器工作负载。

将工作负载身份与 Migrate to Containers 和 GKE 搭配使用

借助 Migrate to Containers 和 GKE,您可以将迁移后的工作负载部署到 Google Distributed Cloud Virtual for Bare Metal。有时,您可能会使用与处理集群和部署集群相同的集群。如果您已在部署集群上启用工作负载身份,请确保配置部署环境以支持 Migrate to Containers 和 GKE。

此外,您还必须确保为 Workload Identity 正确配置在 init 过程中启动的所有服务。您执行的步骤取决于集群的服务管理器。如需了解配置步骤,请参阅将 Linux 工作负载部署到目标集群

相对于现有运行时的变化

如需使用简化的 Linux 服务管理器,您应了解现有运行时的以下更改和限制。

添加了新的 services-config.yaml 工件文件

如果启用了简化的 Linux 服务管理器,Migrate to Containers 会在生成迁移工件时创建新的工件文件 services-config.yaml。使用此文件可控制已部署容器上的应用初始化。如需了解详情,请参阅使用 services-config.yaml

就绪性探测

使用当前运行时时,Migrate to Containers 会在 deployment_spec.yaml 文件中添加就绪性探测。启用简化的 Linux 服务管理器后,系统不会添加就绪性探测。

如果要添加就绪性探测,我们建议您使用 HTTP 就绪性探测。如需了解详情,请参阅定义就绪性探测

        readinessProbe:
          exec:
            command:
            - /.m4a/gamma status

但是,该探测可能会返回假负例结果。

syslog 支持

简化的 Linux 服务管理器会在 /dev/log 创建一个 Unix 套接字,以支持 syslog。简化的 Linux 服务管理器将这些日志消息转发到 stdout,以便 Kubernetes 将它们记录为容器日志。

限制

使用简化的 Linux 服务管理器时,您应了解以下限制。

工作负载限制

简化的 Linux 服务管理器最适合以下类型的工作负载:

映像 操作系统 服务
Compute Engine Ubuntu 12.04 Ubuntu 12.04 apache2
Compute Engine Ubuntu 14.04 Ubuntu 14.04 redis、mysql、apache2
Compute Engine Ubuntu 18.04 Ubuntu 18.04 apache2、mysql、redis-server、tomcat
RHEL SAP 7.4 Red Hat httpd
Bitnami Ubuntu bitnami
Compute Engine Memcached 映像 Debian 10.9 bitnami
Compute Engine Marketplace wordpress Debian 9.13 apache2、mysql、php
Compute Engine Marketplace tomcat Debian 9.13 tomcat8
Compute Engine Marketplace jenkins Debian 10.9 apache2、jenkins
Compute Engine Marketplace moodle Debian 9.13 apache2、mysql、php7.4 fpm、phpsessionclean
Compute Engine Marketplace Odoo Debian 9.13 odoo、nginx
Compute Engine Marketplace Opencart Debian 9.13 apache2、mysql、php7.0 fpm、supervisor、Mardeb
Compute Engine Marketplace Erpnext Debian 10.9 nginx、redis-server、supervisor、mariadb
Compute Engine Marketplace wildfly Debian 10.10 wildfly、cron

systemd 限制

如果您使用 systemd 作为 init 系统,请注意以下限制:

  • systemd 服务类型 simpleexecnotify 被视为 exec 服务。这意味着,如果 exec 成功,则该服务被视为已启动。

  • 只有 READY=1 消息支持针对 sd_notify() 的通知套接字。

    如果需要,您可以提供其他就绪性检查。例如,HTTP 检查或其他类型的检查。

  • 不支持套接字类型单位文件。系统不会创建套接字,也不会创建环境变量。

1.9.0 版更新

简化的 1.9.0 版 Linux 服务管理器包含以下更新:

  • Linux 服务管理器已正式发布,不再处于公开预览版中。

  • 转换现有容器工作负载以支持 Autopilot 的过程已更改。您现在需要为现有迁移修改 Dockerfile 和 deployment_spec.yaml 文件才能进行转换。

  • config.yaml 文件已重命名为 services-config.yaml

1.8.1 版更新

简化的 Linux 服务管理器最初在公开预览版中作为 Migrate to Containers 1.8 版的一部分发布。简化的 1.8.1 版 Linux 服务管理器包含以下更新:

  • 您不再在迁移计划中设置注释,以启用简化的 Linux 服务管理器。现在,您改为设置 v2kServiceManager。如需了解详情,请参阅将容器部署到 Autopilot 集群

  • 环境变量 HC_GAMMA_RUNTIME 已重命名为 HC_V2K_SERVICE_MANAGER

  • services-config.yaml 文件中的 prestartpoststart 条目现在会自动填充。如需了解详情,请参阅使用 services-config.yaml

  • 添加了对 services-config.yaml 文件的支持,可让您在全局级别或应用级别指定环境变量。如需了解详情,请参阅使用 services-config.yaml

  • 添加了日志记录支持,可让您自定义写入 Cloud Logging 的日志数据。如需了解详情,请参阅自定义写入 Cloud Logging 的日志数据

后续步骤