You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GKE中执行kubectl expose报错deployments.apps "nginx" not found如何解决

问题根因

核心原因是Kubernetes 1.21及以上版本的kubectl run命令默认行为发生变更:不再自动创建Deployment资源,仅会创建独立的Pod资源。你执行的kubectl expose命令指定了资源类型为Deployment,自然找不到对应资源。
其次你环境中kubectl客户端版本(1.22)与GKE集群服务端版本(1.20)的版本差超出了Kubernetes官方支持的±1范围,也存在触发异常行为的可能性。

排查验证步骤
  • 执行kubectl get all命令查看当前命名空间下的所有资源,可以确认仅存在名为nginx的Pod资源,无同名Deployment资源
  • 执行kubectl run --help查看命令说明,1.22版本的说明中不会提及创建Deployment的相关逻辑,与1.18及以下版本的行为不同
解决方案

方案一:按课程要求创建Deployment后暴露

如果课程演示逻辑是基于Deployment资源操作,按以下步骤执行:

  1. 删除已创建的冗余Pod:kubectl delete pod nginx
  2. 使用官方推荐的Deployment创建命令:kubectl create deployment nginx --image=nginx:1.10.0
  3. 执行原有暴露命令即可正常运行:kubectl expose deployment nginx --type LoadBalancer --port 80

方案二:直接暴露已创建的Pod

如果不需要Deployment资源,仅需暴露当前已创建的Pod,直接修改expose命令的资源类型即可:
kubectl expose pod nginx --type LoadBalancer --port 80

版本兼容优化建议

Kubernetes官方仅支持kubectl客户端与服务端版本差在±1以内的场景,你当前的版本差可能会引发其他未知命令执行异常,建议将kubectl客户端降级至1.20.x版本,与GKE集群版本对齐。

内容的提问来源于stack exchange,提问作者mon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 12:27:02