我正在尝试构建一个 ADO 发布管道,以从我们的本地 Kubernetes 集群中删除正在运行的 pod。我已经安装了一个安装了 kubectl 的自托管代理,并且能够在其上运行构建管道(它构建 Docker 镜像并将其推送到我们的本地 Harbor 存储库)。现在我正在尝试创建发布管道来删除正在运行的 Pod,以便使用 Harbor 的最新镜像重新创建它们。我还使用正确的 kubeconfig 信息为 Kubernetes 集群创建了 ADO 服务连接。
我正在使用 Kubectl 任务,只是想显示正在运行的 pod(以测试其工作情况)。然而,当管道运行此任务时,似乎说“get pods”不是有效的 kubectl 命令:
2020-05-15T19:23:33.1905346Z [command]/usr/bin/kubectl --kubeconfig /myagent/_work/_temp/kubectlTask/1589570612549/config get pods -n rpaapis
2020-05-15T19:23:33.1906131Z Error: unknown command "get pods" for "kubectl"
2020-05-15T19:23:33.1907408Z Run 'kubectl --help' for usage.
2020-05-15T19:23:33.1944451Z ##[error]Error: unknown command "get pods" for "kubectl"
2020-05-15T19:23:33.1956294Z ##[error]Run 'kubectl --help' for usage.
2020-05-15T19:23:33.1957880Z ##[error]/usr/bin/kubectl failed with return code: 1
该任务生成的 YAML 看起来相当简单:
steps:
- task: Kubernetes@0
displayName: 'kubectl get pods'
inputs:
kubernetesServiceConnection: 'On-prem K8s - staging'
namespace: rpaapis
command: 'get pods'
versionOrLocation: location
specifyLocation: /usr/bin/kubectl
我可以登录自托管代理系统并使用与服务连接中相同的 kubeconfig 数据运行 kubectl 命令:
/usr/bin/kubectl --kubeconfig /tmp/config get pods -n rpaapis
NAME READY STATUS RESTARTS AGE
rpaapis-65c96b8dcb-khzzb 2/2 Running 0 30h
rpaapis-65c96b8dcb-lhzzj 2/2 Running 0 30h
所以看起来它正在执行正确的 kubectl 可执行文件,所以不确定为什么会出现奇怪的错误。事实上,我似乎可以使任务运行的唯一成功命令是“kubectl --help”。任何想法将不胜感激!
最佳答案
尝试指定命令和参数:
- task: Kubernetes@1
displayName: 'kubectl get pods'
inputs:
kubernetesServiceConnection: 'On-prem K8s - staging'
namespace: rpaapis
command: 'get'
arguments: 'pods'
versionOrLocation: location
specifyLocation: /usr/bin/kubectl
我也遇到过这个!从 Kubernetes@1 task documentation 来看并不是很明显,感觉缺少例子。
关于azure-devops - Azure DevOps 发布管道在 kubectl 命令上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61827378/