本页面列出了 GKE 的已知问题。本页面适用于管理底层技术基础设施生命周期,并在未实现服务等级目标 (SLO) 或应用故障时对提醒和页面做出响应的管理员和架构师。
本页面列出了所有受支持的版本以及延长支持期中最早版本紧前面的两个次要版本的已知问题。在某个版本达到延长支持终止期限后,所有 N-2 问题都会被移除。例如,当 1.30 版达到延长支持终止期限时,1.28 版及更早版本特有的已知问题会被移除。
如果您是 Google 开发者计划的成员,请保存此页面,以便在发布与此页面相关的版本说明时收到通知。如需了解详情,请参阅已保存的页面。
如需按产品版本或类别过滤已知问题,请从下面的下拉菜单中选择所需的过滤条件。
选择您的 GKE 版本:
选择问题类别:
或者,搜索您的问题:
类别 | 已识别的版本 | 已修复的版本 | 问题和解决方法 |
---|---|---|---|
操作 | 1.33.4-gke.1036000 之前的 1.33 版本 | 1.33.4-gke.1036000 及更高版本 |
动态预配的 Lustre 实例的性能层级不正确动态配置 Lustre 实例时,无论 API 请求中指定的 perUnitStorageThroughput 值是多少,实例创建都会因 PerUnitStorageThroughput 而失败并显示 临时解决方法: 将 GKE 集群升级到 1.33.4-gke.1036000 版或更高版本。如果使用的是稳定版渠道,则可能尚未有更新的版本可用。在这种情况下,您可以从包含相应修复的常规渠道或快速渠道中手动选择一个版本。 |
操作 |
|
1.33.3-gke.1266000 及更高版本 |
使用 Cloud Storage FUSE CSI 驱动程序重命名或移动文件时出现输入/输出错误如果使用受影响版本的 Cloud Storage FUSE CSI 驱动程序,则在 Cloud Storage 存储桶中重命名或移动文件可能会失败,并显示 I/O 错误。 临时解决方法: 临时向 Pod 清单添加特定的边车映像定义。在 Pod 清单的 # Add the following block to use the fixed sidecar image - name: gke-gcsfuse-sidecar image: gcr.io/gke-release/gcs-fuse-csi-driver-sidecar-mounter:v1.8.9-gke.2 如需了解详情,请参阅为边车容器配置私有映像中的 Pod 清单。 将集群升级到已修复的 GKE 版本或更高版本后,您必须从清单中移除整个 |
日志记录和监控 | 所有版本 | 待定 |
|
升级 | 1.33 | 1.33.2-gke.1043000 |
使用 containerd 2.0 时降低了打开文件数限制对于运行 GKE 1.33 版(使用 containerd 2.0)的节点池,容器的默认打开文件数软限制 ( 这是 containerd 本身的一项更改(请参阅 containerd PR #8924),其中 预期默认软限制较高的工作负载(例如,隐式依赖于之前较高的默认值的工作负载)可能会遇到故障,例如 解决方案: 从 1.33 早期补丁版本升级到 1.33.2-gke.1043000 或更高版本。 临时解决方法: 使用以下方法之一增加工作负载的打开文件数限制:
|
升级 | 1.31.5-gke.1169000、1.32.1-gke.1376000 | 1.31.7-gke.1164000、1.32.3-gke.1512000 |
托管式 CRD 的 CRD status.storedVersions 无效某些 GKE 管理的 CRD 可能具有无效的 此问题会影响同时满足以下两个条件的集群:
临时解决方法: 建议的解决方法是延迟集群升级,直到问题得到解决。 或者,如果您知道集群包含不受支持的 CRD 对象版本,可以使用 |
操作、日志记录和监控 | 1.32.2-gke.1652000、1.31.6-gke.1221000、1.30.10-gke.1227000 |
|
缺少指标或工作负载自动扩缩器未扩缩如果集群大小增加超过 5 个节点,您可能会发现受影响的版本上的指标数据出现缺口。此问题还可能会影响自动扩缩操作。 此问题仅影响升级到受影响版本的集群。新创建的集群应能按预期运行。 临时解决方法: 如果您受到影响,可以降级一个补丁版本,也可以升级到较新的修复版本。 |
操作 |
Google Cloud Hyperdisk 大小和连接限制通常,如果 pod 因节点的卷连接限制而无法成功调度,则会触发新节点的自动预配。当运行使用 Hyperdisk 产品的工作负载被调度到运行 C3 虚拟机的节点时,不会发生节点自动预配,并且 Pod 会被调度到已满的节点上。 即使没有可用的磁盘连接,工作负载也会被调度到节点上。由于如下错误,工作负载也无法启动: AttachVolume.Attach failed for volume "[VOLUME NAME]" : rpc error: code = InvalidArgument desc = Failed to Attach: failed when waiting for zonal op: rpc error: code = InvalidArgument desc = operation operation-[OPERATION NUMBERS] failed (UNSUPPORTED_OPERATION): Maximum hyperdisk-balanced disks count should be less than or equal to [16], Requested : [17] C3 机器上的所有 Hyperdisk 产品都存在此问题。 Hyperdisk 连接限制因虚拟机 vCPU 数量和 Hyperdisk 产品而异。如需了解详情,请参阅 Hyperdisk 性能限制。 临时解决方法: Hyperdisk 产品会在其他虚拟机类型上触发自动预配。我们建议使用仅支持 Hyperdisk 的类型。 |
||
操作 | 1.32.3-gke.1927000、1.32.3-gke.1785000、1.32.3-gke.1717000、1.32.3-gke.1440000、1.32.3-gke.1170000、1.32.3-gke.1250000、1.32.3-gke.1671000、1.32.3-gke.1596000、1.32.3-gke.1298000 |
gke-metadata-server 在 TPU/GPU 节点上因内存不足而终止在 GKE TPU 节点(例如 临时解决方法: 如果您在 TPU 或 GPU 节点上观察到 |
|
操作 |
|
|
由于 PVC 上存在悬空的 NodePendingResize 状态,卷调整大小操作可能会卡滞。如果 1.32 版集群的节点版本为 1.31 或更低版本,则在调整大小期间,集群将无法更新 PersistentVolumeClaim 状态。此错误状态会阻止后续的调整大小操作开始,从而有效地阻止进一步调整大小。 处于此状态的 PVC 具有 如果 PVC 是在集群处于受影响的版本时创建的,则即使集群升级到已知修复版本,您也可能会发现此问题仍然存在。在这种情况下,您需要通过一次性解决方法修补 PVC,以移除 临时解决方法: 可以修补因状态悬空而卡住的 PVC,以移除该状态。您可以使用如下所示的 patch 命令来移除悬空状态: kubectl patch pvc $PVC_NAME --subresource='status' --type='merge' -p '{"status":{"allocatedResourceStatuses":null}}' kubectl patch pvc $PVC_NAME --subresource='status' --type='merge' -p '{"status":{"allocatedResources":null}}' |
操作 |
|
|
PDCSI 驱动程序可能会过度记录日志如果 GKE 集群运行的是特定的 1.32 版本,则可能会从 PDCSI 驱动程序发出过多的日志消息。 过多的日志记录会消耗 Cloud Logging Write API 配额。 临时解决方法: 您可以通过添加排除项过滤条件来减少这种过多的日志记录。 如需排除日志消息,使其不被注入到 Cloud Logging 中,请使用以下查询: resource.type="k8s_container" resource.labels.container_name="gce-pd-driver" (sourceLocation.file="cache.go" OR "Cannot process volume group") |
运维 |
|
|
尝试在之前具有只读 (RO) 装载的 COS 节点上装载 NFS 永久性卷的 Pod 将仅以 RO 模式装载对于 GKE 1.27 版及更高版本,使用 Kubernetes 树内 CSI 驱动程序的 NFS 卷只能在同一节点上进行之前的 RO 装载后,才能以 RO 模式装载永久性卷。 临时解决方法: |
运维 |
|
|
尝试在 Ubuntu 节点上装载 NFS 永久性卷的 Pod 将无法运行。对于使用 Kubernetes 树内 CSI 驱动程序的 GKE 1.32 版及更高版本 NFS 卷,将无法在 Ubuntu 节点上装载永久性卷。如果发生这种情况,您可能会看到以下错误消息: "MountVolume.SetUp failed for volume 'nfs-storage' : mount failed: exit status 1" Output: Mount failed: mount failed: exit status 127 "Output: chroot: failed to run command 'mount': No such file or directory failed to run command mount on Ubuntu nodes" 临时解决方法: |
操作 | >= 1.28.15-gke.1436000、< 1.28.15-gke.1668000、>= 1.29.12-gke.1040000、< 1.29.13-gke.1028000、>= 1.30.8-gke.1053000、< 1.30.8-gke.1287000、>= 1.31.4-gke.1057000、< 1.31.6-gke.1020000、>= 1.32.0-gke.1281000、< 1.32.1-gke.1302000 |
|
使用与 io_uring 相关的系统调用的 Pod 可能会卡在“正在终止”状态
由于 Linux 内核中存在 bug,使用与 io_uring 相关的系统调用的 Pod 可能会进入 D(磁盘休眠)状态,也称为 TASK_UNINTERRUPTIBLE。处于 D 状态的进程无法通过信号唤醒,包括
当 Pod 受到此已知问题的影响时,其容器可能无法正常终止。在 containerd 日志中,您可能会看到类似于以下内容的重复消息:
或
这些症状表明,容器内的进程卡在不可中断的休眠状态(D 状态),从而导致 Pod 无法正常终止。
直接使用 io_uring 或通过 NodeJS 等语言运行时间接使用 io_uring 的工作负载可能会受到此已知问题的影响。受影响的工作负载在 临时解决方法: 将集群节点升级到已修复的版本或更高版本。 |
操作 | 1.28、1.29、1.30、1.31 |
|
使用映像流式传输的工作负载因身份验证错误而失败映像流式传输功能中的 bug 可能会导致工作负载在容器读取文件时满足一组特定条件的情况下失败。您可能会在 gcfsd 日志中看到与身份验证失败相关的错误消息。
如需检查您是否受到影响,请使用以下搜索查询搜索日志:
出现这些错误表示节点受到影响。 如果您受到此问题的影响,可以将节点池升级到修补后的 GKE 版本。 |
操作 |
|
|
GKE 1.30 版和 1.31 版中的 Pod 逐出率提高
分别使用 COS 113 和 COS 117 的部分 GKE 1.30 和 GKE 1.31 版本具有使用
在 cos-113-18244-151-96 和 cos-117-18613-0-76 中,配置选项 您可能并不总是会看到异常的 Pod 逐出率,因为此问题取决于工作负载的内存使用模式。 如果工作负载未在资源字段中设置内存限制,kubelet 驱逐 Pod 的风险会更高。 这是因为工作负载可能会请求比 kubelet 报告的可用内存更多的内存。 如果您在升级到上述 GKE 版本后发现应用的内存用量有所增加,但未进行任何其他更改,则可能是受到了内核选项的影响。
如需检查是否存在异常的 Pod 逐出率,请使用 Metrics Explorer 分析以下指标:
您可以使用以下 PromQL 查询。将
max by (pod_name)(max_over_time(kubernetes_io:container_memory_used_bytes{monitored_resource="k8s_container",memory_type="non-evictable",cluster_name="REPLACE_cluster_name",namespace_name="REPLACE_namespace",metadata_system_top_level_controller_type="REPLACE_controller_type",metadata_system_top_level_controller_name="REPLACE_controller_name"}[${__interval}]))
sum by (pod_name)(avg_over_time(kubernetes_io:container_memory_request_bytes{monitored_resource="k8s_container",cluster_name="REPLACE_cluster_name",namespace_name="REPLACE_namespace",metadata_system_top_level_controller_type="REPLACE_controller_type",metadata_system_top_level_controller_name="REPLACE_controller_name"}[${__interval}]))
如果您发现内存用量出现异常峰值,超过了请求的内存,则工作负载可能会更频繁地被逐出。 临时解决方法如果您无法升级到已修复的版本,并且您在可以部署特权 Pod 的 GKE 环境中运行,则可以使用 DaemonSet 停用 Multi-Gen LRU 选项。
DaemonSet 在所有选定的节点池中运行后,更改会立即生效,并且 kubelet 内存用量计算会恢复正常。 |
操作 | 1.28、1.29、1.30、1.31 |
|
Pod 卡在“正在终止”状态容器运行时 (containerd) 中的 bug 可能会导致 Pod 和容器卡在“正在终止”状态,并显示类似于以下内容的错误: OCI runtime exec failed: exec failed: cannot exec in a stopped container: unknown
如果您受到此问题的影响,可以将节点升级到具有已修复的 containerd 版本的 GKE 版本。 |
操作 | 1.28、1.29 |
|
由于符号链接,映像流式传输失败映像流式传输功能中的 bug 可能会导致容器无法启动。 在特定 GKE 版本上启用了映像流式传输的节点上运行的容器可能无法创建,并显示以下错误: "CreateContainer in sandbox from runtime service failed" err="rpc error: code = Unknown desc = failed to create containerd container: failed to mount [PATH]: too many levels of symbolic links"
如果您受到此问题的影响,可以检查是否存在空层或重复层。如果您无法移除空层或重复层,请停用映像流式传输。 |
操作 | 1.27、1.28、1.29 |
|
由于缺少文件,映像流式传输失败映像流式传输功能中的 bug 可能会导致容器因缺少一个或多个文件而失败。 在以下版本上启用了映像流式传输的节点上运行的容器可能无法启动或运行,并显示某些文件不存在的错误。以下是此类错误的一些示例:
如果您受到此问题的影响,可以停用映像流式传输。 |
网络、升级和更新 | 1.28 |
网关 TLS 配置错误我们发现了在运行 GKE 1.28.4-gke.1083000 版的集群中为网关配置 TLS 时存在问题。这会影响使用 SSLCertificate 或 CertificateMap 的 TLS 配置。 如果您要升级包含现有网关的集群,则对网关所做的更新将失败。新网关的问题则是,负载均衡器未得到预配。我们会在即将发布的 GKE 1.28 补丁版本中修复此问题。 |
|
升级和更新 | 1.27 | 1.27.8 或更高版本 |
GPU 设备插件问题
如果集群正在运行 GPU,并且已从 1.26 版升级到 1.27.8 之前的 1.27 补丁版本,则可能会遇到节点 GPU 设备插件 (
|
操作 | 1.27、1.28 |
|
所有工作负载的自动扩缩停止
如果集群包含配置错误的 临时解决方法:
通过确保
如需详细了解如何配置 |
操作 | 1.28、1.29 |
|
Container Threat Detection 部署失败Container Threat Detection 可能无法部署在运行以下 GKE 版本的 Autopilot 集群上:
|
网络、升级 | 1.27、1.28、1.29、1.30 |
|
控制平面升级后
|
网络 | 1.31、1.32 |
|
在同一节点上运行的 Pod 之间的 UDP 流量中断启用了节点内可见性的集群可能会遇到在同一节点上运行的 Pod 之间的 UDP 流量中断问题。 当 GKE 集群节点升级到以下 GKE 版本之一或使用以下版本进行创建时,就会引发此问题:
受影响的路径是同一节点上流经 Hostport 或 Service 的 Pod 到 Pod 的 UDP 流量。 解决方法 将集群升级到下面其中一个已修复的版本:
|
操作 | 1.29、1.30、1.31 |
|
Ray Operator 与 Cloud KMS 数据库加密不兼容某些 Ray Operator 版本与 Cloud KMS 数据库加密不兼容。 解决方法: 将集群控制平面升级到已修复的版本或更高版本。 |
升级和更新 | 1.30、1.31 |
|
GPU 维护处理程序 Pod 卡在 CrashLoopBackOff 状态出现此问题时,gpu-maintenance-handler Pod 会在其各自的节点上卡在“CrashLoopBackOff”状态。此状态可防止将“即将进行的维护”标签应用于 GKE 节点,这可能会影响工作负载的节点排空和 pod 逐出进程。
"Node upcoming maintenance label not applied due to error: Node "gke-yyy-yyy" is invalid: metadata.labels: Invalid value: "-62135596800": a valid label must be an empty string or consist of alphanumeric characters, '-','' or '.', and must start and end with an alphanumeric character (e.g.'MyValue', or 'my_value', or '12345', regex used for validation is '(([A-Za-z0-9][-A-Za-z0-9.]*)?[A-Za-z0-9])?')"
如果您受到此问题的影响,可以将控制平面升级到包含相应修复的 GKE 版本来解决此问题。 |
操作 | 1.33.1-gke.1522000 及更高版本 | 1.33.4-gke.1142000 及更高版本 |
Pod 无法在启用了映像流式传输的节点上启动
在启用了映像流式传输的节点上,工作负载可能无法启动,并显示以下错误签名:
受影响节点的串行端口日志还包含以下错误签名:
如果存在这两个错误签名,则表明某个映像流式传输组件中存在死锁。此死锁会阻止 Pod 成功启动。 缓解措施: 重启节点以快速缓解问题。请注意,重启的节点可能仍会再次出现死锁。为了更有效地缓解此问题,请运行以下命令,以在节点池上停用映像流式传输: gcloud container node-pools update NODE_POOL_NAME --cluster CLUSTER_NAME --no-enable-image-streaming |
后续步骤
如果您在文档中找不到问题的解决方案,请参阅获取支持以获取进一步的帮助,包括以下主题的建议:
- 请与 Cloud Customer Care 联系,以提交支持请求。
- 通过在 StackOverflow 上提问并使用
google-kubernetes-engine
标记搜索类似问题,从社区获得支持。您还可以加入#kubernetes-engine
Slack 频道,以获得更多社区支持。 - 使用公开问题跟踪器提交 bug 或功能请求。