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

Azure Pipeline执行Kubectl脚本报错:不存在名为default的context

问题分析与解决方案

核心问题:混淆了Kubernetes上下文(Context)和命名空间(Namespace)

你看到的错误no context exists with the name: "default",指的是kubectl的本地配置里没有名为default的上下文条目,不是AKS集群里没有default命名空间——这是两个完全不同的概念:

  • 上下文(Context):kubectl的配置项,包含集群地址、认证凭证、默认命名空间,用来指定kubectl要连接哪个集群、用哪个身份操作。
  • 命名空间(Namespace):AKS集群内部的资源隔离空间,确实默认自带default命名空间,但和上下文无关。

后面的connection to the server localhost:8080 was refused,是因为kubectl默认找不到可用的上下文时,会尝试连接本地的Kubernetes集群(比如minikube),但Pipeline的代理机器上根本没有本地集群,所以连接失败。


解决步骤

1. 在Pipeline中添加AKS集群登录任务

Pipeline的代理机是临时环境,每次运行都需要重新配置kubectl连接到你的AKS集群。添加Azure CLI任务获取AKS凭证:

- task: AzureCLI@2
  inputs:
    azureSubscription: '你的Azure服务连接名称' # 替换成你在Pipeline里配置的服务连接
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: |
      # 获取AKS集群凭证,自动添加到kubectl配置中
      az aks get-credentials --resource-group 你的AKS资源组名称 --name 你的AKS集群名称 --overwrite-existing

这个命令会把AKS的集群地址、认证信息写入kubectl的配置文件,生成一个以AKS集群名称为名字的上下文,并设为当前默认上下文。

2. 修改deploy.sh的上下文切换命令

如果你的AKS上下文名称不是default(默认是集群名),把deploy.sh里的kubectl config use-context default改成你的AKS集群名称;或者直接删掉这条命令——因为az aks get-credentials已经自动把AKS上下文设为当前默认了,不需要手动切换。

修改后的deploy.sh示例:

# 删掉kubectl config use-context default这一行
kubectl apply -f Orchestration/dev/configmap.yaml
kubectl apply -f Orchestration/dev/secrets.yaml
kubectl apply -f Orchestration/dev/deployment.yaml
kubectl apply -f Orchestration/dev/service.yaml

3. 调试验证(可选)

如果还是有问题,可以在Bash任务前加一个调试步骤,查看当前kubectl的配置:

- task: Bash@3
  inputs:
    inlineScript: |
      # 列出所有可用上下文
      kubectl config get-contexts
      # 查看当前使用的上下文
      kubectl config current-context

这样能确认kubectl已经正确配置了AKS的上下文。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 13:15:29