配置自定义启动磁盘


本页面介绍如何在 Google Kubernetes Engine (GKE) 集群节点池中自定义节点启动磁盘。

概览

创建 GKE 集群或节点池时,可以为每个节点选择永久性磁盘类型来安装 Kubernetes 节点文件系统。默认情况下,GKE 使用的是标准永久性磁盘。您还可以指定 SSD 永久性磁盘。

SSD 永久性磁盘可以提高节点在处理某些工作负载时的性能。但选择 SSD 永久性磁盘作为节点启动磁盘会产生额外的费用。如需了解详情,请参阅存储选项

使用 SSD 启动磁盘的优势

使用 SSD 永久性磁盘作为节点的启动磁盘可提供以下性能优势:

  • 节点的启动时间更短。
  • 通过容器将二进制文件和其他文件更快地提供给节点。 这可以提高 I/O 密集型工作负载的性能,例如托管静态文件的网络服务应用或短期运行的 I/O 密集型批处理作业
  • 将文件存储在节点的本地介质上(通过 hostPathemptyDir 卷公开),可以提升 I/O 性能。

如需详细了解 SSD 永久性磁盘与标准永久性磁盘的性能比较,请参阅块存储性能比较

指定节点启动磁盘类型

您可以在创建集群或节点池时指定启动磁盘类型,可选类型包括标准或 SSD。

gcloud

要使用自定义启动磁盘创建集群,请运行以下命令。

[DISK-TYPE] 可以是以下任意一项:

  • pd-standard:标准永久性磁盘(默认)
  • pd-balanced:平衡永久性磁盘
  • pd-ssd:SSD 永久性磁盘

如需详细了解此选择,请参阅永久性磁盘类型

gcloud container clusters create [CLUSTER_NAME] --disk-type [DISK_TYPE]

要在现有集群中创建节点池,请运行以下命令:

gcloud container node-pools create [POOL_NAME] --disk-type [DISK_TYPE]

例如,以下命令会创建集群 example-cluster,它使用类型为 pd-ssd 的 SSD 永久性磁盘:

gcloud container clusters create example-cluster --disk-type pd-ssd

控制台

如需在使用 Google Cloud Console 创建集群时选择启动磁盘,请执行以下步骤:

  1. 转到 Cloud Console 中的 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine

  2. 点击 创建

  3. 根据需要配置集群。

  4. 在导航窗格中,展开 default-pool,然后点击节点

  5. 启动磁盘类型下拉列表中,选择标准永久性磁盘SSD 永久性磁盘

  6. 点击创建

如需为现有集群创建具有自定义启动磁盘的节点池,请执行以下操作:

  1. 转到 Cloud Console 中的 Google Kubernetes Engine 页面:

    转到 Google Kubernetes Engine

  2. 在集群列表中,点击您要修改的集群的名称。

  3. 点击 添加节点池

  4. 根据需要配置您的节点池。

  5. 在导航窗格中,点击节点

  6. 启动磁盘类型下拉列表中,选择标准永久性磁盘SSD 永久性磁盘

  7. 点击创建

保护节点启动磁盘

默认情况下,节点启动磁盘存储您的容器映像、某些系统进程日志、Pod 日志和可写入容器层。

如果您的工作负载使用 configMapemptyDirhostPath 卷,您的 Pod 可能会向节点启动磁盘写入额外的数据。您可以将 emptyDir 配置为由 tmpfs 提供支持,以停止此操作。如需了解具体方法,请参阅 Kubernetes 文档。 由于 secretdownwardAPIprojected 卷由 tmpfs 提供支持,使用这些卷的 Pod 不会向节点启动磁盘写入数据。

默认情况下,Google Cloud 会加密静态的客户内容(包括您的节点启动磁盘),GKE 会为您管理此默认加密,您无需进行任何其他操作。

但是,在使用向节点启动磁盘写入数据的卷时,您可能希望更严密地控制在 GKE 中保护您的工作负载数据的方式。您可以阻止 Pod 向节点启动磁盘写入数据,也可以使用客户管理的加密密钥 (CMEK) 创建节点启动磁盘

阻止 Pod 向启动磁盘写入数据

您可以避免直接从 Pod 向节点引导磁盘写入数据,而只要求它们将数据写入挂接的磁盘。要对您的 Pod 施加限制,使之无法向启动磁盘写入数据,请从 PodSecurityPolicyvolumes 字段中排除以下卷:

  • configMap
  • emptyDir(如果并非由 tmpfs 支持)
  • hostPath

以下示例 PodSecurityPolicy preventWritingToBootDisk.yaml 会阻止写入启动磁盘:

apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: preventWritingToBootDisk
spec:
  Volumes: # Exclude configMap, emptyDir (if not backed by tmpfs), and hostPath.
           # Include all other desired volumes.
     - 'persistentVolumeClaim'
  # Required fields.
  runAsUser:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'RunAsAny'
  fsGroup:
    rule: 'RunAsAny'

客户管理的加密

如果您希望自行控制和管理加密密钥轮替,则可以使用 CMEK。这些密钥用于对加密您的数据的数据加密密钥进行加密。如需了解如何将 CMEK 用于节点启动磁盘,请参阅使用客户管理的加密密钥

将 CMEK 用于节点启动磁盘时存在一些限制:

  • 您不能为现有集群或节点池中的启动磁盘启用或停用客户管理的加密。
  • 您只能将 CMEK 用于 pd-standardpd-ssd 永久性磁盘。

后续步骤