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

GitLab Runner部署K3S集群资源报错:服务器找不到请求资源

问题分析与解决方案

核心问题

你遇到的the server could not find the requested resource错误,根源是CI中使用的kubectl版本(v1.9.2)与目标K3S集群版本严重不兼容。旧版本kubectl会调用K3S集群已移除的API端点(比如报错日志里的/swagger-2.0.0.pb-v1),直接导致404 NotFound错误。

Kubernetes官方明确要求kubectl客户端版本与集群Server版本的差距不能超过±1个大版本,v1.9.2是2018年的老旧版本,远低于当前K3S的默认发行版本,必然会出现API交互不兼容的问题。

解决步骤

1. 匹配kubectl与K3S集群版本

  • 先在本地执行kubectl version --short,查看K3S集群的Server版本(示例输出:Server Version: v1.27.9+k3s1)。
  • 修改CI配置中的kubectl镜像版本,与集群大版本保持一致:
    deploy:
      stage: deploy
      image:
        name: harbor.localdomain.ma/devops/lachlanevenson/k8s-kubectl:v1.27.9
        entrypoint: []
      # 其余配置保持不变
    
    若私有镜像仓库无对应版本,可使用公共镜像(如bitnami/kubectl:1.27.9),或自行构建对应版本的镜像。

2. 验证版本兼容性

修改后保留CI脚本中的kubectl version --insecure-skip-tls-verify命令,确认客户端与Server版本差距在±1个大版本内,示例正常输出:

Client Version: v1.27.9
Server Version: v1.27.9+k3s1

3. 额外排查点(可选)

  • 确认bs命名空间存在:若未创建,可在CI脚本中加入kubectl create namespace bs --dry-run=client -o yaml | kubectl apply -f -,避免因命名空间缺失导致部署失败。
  • 检查资源文件API版本:确保deployment/service使用集群支持的稳定版本(如Deployment用apps/v1、Service用v1),不过你本地已验证过配置,这一步大概率没问题。

验证

修改镜像版本后重新运行CI流水线,kubectl apply命令可正常与K3S集群API服务器交互,不会再出现404错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 08:42:45