本文档介绍如何在 Google Kubernetes Engine (GKE) 节点上自定义 containerd 容器运行时的配置。在阅读本文档之前,请确保您熟悉什么是容器运行时以及为什么要对其进行自定义。
GKE 中的 containerd 配置简介
您可以在运行 Container-Optimized OS 等操作系统的 GKE 节点上手动配置 containerd 运行时中的一组选项。通过自定义运行时,您可以配置特殊要求,例如访问私有映像注册表。如需设置这些选项,请创建一个名为运行时配置文件的 YAML 文件,并在创建或更新集群时将该文件传递给 GKE。
这种自定义 containerd 的方法可让您避免部署特权 DaemonSet,这会带来安全风险。当您向 GKE 提供运行时配置文件时,GKE 会重新创建节点,并使用您的配置在每个节点上更新 containerd config.toml
文件。此配置在节点终止、升级和重新创建的过程中保持不变。
运行时配置文件仅允许您在 containerd 中配置选项。GKE 还支持使用称为节点系统配置文件的单独文件来配置特定的 kubelet 选项和低层级 Linux 内核选项。如需了解详情,请参阅自定义节点系统配置。
限制
您无法使用运行时配置文件更改 Ubuntu 节点映像中的 containerd 设置。仅支持带有 containerd 的 Container-Optimized OS。这是所有 GKE 集群的默认节点映像。
可用的 containerd 配置选项
下表介绍了您可以使用运行时配置文件配置的选项:
运行时配置文件选项 | |
---|---|
|
使用您存储在 Secret Manager 中的私有凭据访问私有映像注册表。 如需了解相关说明,请参阅使用私有 CA 证书访问私有注册表。 privateRegistryAccessConfig: enabled: true certificateAuthorityDomainConfig: - gcpSecretManagerCertificateConfig: secretURI: " 此配置包含以下字段:
|
将 containerd 配置应用于新集群
本部分介绍如何在创建新的 GKE 集群时应用 containerd 配置文件。
运行以下命令:
gcloud container clusters create-autoCLUSTER_NAME
\ --location=LOCATION
\ --scopes="cloud-platform" \ --containerd-config-from-file="PATH_TO_CONFIG_FILE
"
替换以下内容:
CLUSTER_NAME
:新集群的名称。LOCATION
:新集群的 Compute Engine 位置。PATH_TO_CONFIG_FILE
:您创建的配置文件的路径,例如~/containerd-configuration.yaml
。
您可以运行带有相同选项的 gcloud container clusters create
命令,在新的 Standard 集群上启用私有注册表配置。
将 containerd 配置应用于现有集群
本部分介绍如何将 containerd 配置应用于现有集群和节点。
检查访问权限范围
现有集群必须具有 cloud-platform
访问权限范围才能使用此功能。本部分介绍如何检查访问权限范围,并使用新的或修改后的私有注册表配置文件更新现有集群。
如需详细了解新集群中的默认访问权限范围,请参阅 GKE 中的访问权限范围。
检查 Autopilot 访问权限范围
运行以下命令:
gcloud container clusters describeCLUSTER_NAME
\ --location=LOCATION
\ --flatten=nodeConfig \ --format='csv[delimiter="\\n",no-heading](oauthScopes)'
如果您的集群没有 https://www.googleapis.com/auth/cloud-platform
访问权限范围,请创建一个具有此访问权限范围的新集群。
检查 Standard 访问权限范围
如需检查 Standard 集群访问权限范围,请检查节点池:
gcloud container node-pools describeNODE_POOL_NAME
\ --cluster=CLUSTER_NAME
\ --location=LOCATION
\ --flatten=nodeConfig \ --format='csv[delimiter="\\n",no-heading](oauthScopes)'
将 NODE_POOL_NAME
替换为节点池的名称。
如果您的集群没有 https://www.googleapis.com/auth/cloud-platform
访问权限范围,请创建一个具有 cloud-platform
访问权限范围的新节点池,并删除现有节点池。
更新集群以使用配置文件
运行以下命令:
gcloud container clusters updateCLUSTER_NAME
\ --location=LOCATION
\ --containerd-config-from-file="PATH_TO_CONFIG_FILE
"
在 Standard 集群中重新创建节点
如果您的 Standard 集群不使用自动升级,则您必须手动重新创建节点池以应用新配置。如需触发手动重新创建节点的操作,请将集群升级到其已在使用的 GKE 版本。
gcloud container clusters upgradeCLUSTER_NAME
\ --location=LOCATION
\ --cluster-version=VERSION
将 VERSION
替换为集群已在使用的同一 GKE 补丁版本。
停用 containerd 配置选项
如需移除自定义配置,请执行以下操作:
-
更新配置文件,在要停用的配置项中指定
enabled: false
,并删除该项中的任何其他字段,如以下示例所示:privateRegistryAccessConfig: enabled: false
- 将更新后的配置文件应用到集群。如需了解相关说明,请参阅将 containerd 配置应用于现有集群。