azure - `kubectl delete service` 卡在 'Terminating' 状态
问题描述
我正在尝试删除我编写并部署到 Azure Kubernetes 服务的服务(以及随附的所需 Dask 组件),当我运行时kubectl delete -f my_manifest.yml
,我的服务卡在 Terminating 状态。控制台告诉我它已被删除,但命令挂起:
> kubectl delete -f my-manifest.yaml
service "dask-scheduler" deleted
deployment.apps "dask-scheduler" deleted
deployment.apps "dask-worker" deleted
service "my-service" deleted
deployment.apps "my-deployment" deleted
我必须Ctrl+C这个命令。当我检查我的服务时,Dask 已成功删除,但我的自定义服务没有。如果我尝试手动删除它,它同样会挂起/失败:
> kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP x.x.x.x <none> 443/TCP 18h
my-service LoadBalancer x.x.x.x x.x.x.x 80:30786/TCP,443:31934/TCP 18h
> kubectl delete service my-service
service "my-service" deleted
这个问题说要先删除 pod,但我所有的 pod 都被删除了(kubectl get pods
什么都不返回)。还有这个已关闭的 K8s 问题说--wait=false
可能会修复前台级联删除,但这不起作用,而且似乎也不是这里的问题(因为 pod 本身已经被删除)。
我假设我可以完全清除我的 AKS 集群并重新创建,但这是最后的选择。我不知道它是否相关,但我的服务正在使用该服务的azure-load-balancer-internal: "true"
注释,并且我有一个部署到我的 VNet 的 web 应用程序使用此服务。
有没有其他方法可以强制关闭此服务?
解决方案
感谢@4c74356b41 的查看建议kubectl describe service my-service
(由于某种原因我没有考虑过),我看到了这个警告:
Code="LinkedAuthorizationFailed" Message="对象 id 为 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' 的客户端 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' 有权执行操作 'Microsoft.Network/loadBalancers/write'范围'/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Network/loadBalancers/kubernetes-internal';但是,它无权执行操作'Microsoft.Network/virtualNetworks/subnets/join/action ' 在链接范围 '/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Network/virtualNetworks/<vnet>/subnets/<subnet>' 上或链接范围无效。
(客户端和对象 ID GUID 是相同的值。)
这表明这不完全是 Kubernetes 问题,而是 Azure 生态系统中的更多权限问题。我查看了门户,在我的任何用户、组或应用程序中都没有找到该 GUID,所以我不确定它指的是什么。但是,我将Owner
角色授予此客户端 ID,几分钟后,该服务被删除。
az role assignment create `
--role Owner `
--assignee xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
推荐阅读
- python - 如何解决 OSError:[WinError 123] 文件名、目录名或卷标语法不正确:
- android-studio - Android Studio 3.6.1 是否去掉了连接助手?
- node.js - Azure Pipeline - 使用 Azure 源的 npm 安装错误 403
- java - Cassandra fetchSize 的 CQL 是什么
- amazon-web-services - 如何在路由 53 上从一个子域重定向到另一个子域?
- reactjs - 更新外部 React 组件
- python - 将两个不同的条目放在图例中的同一标签下
- c# - 为什么我得到重复的随机数?
- python - 错误导入awswrangler:AttributeError:模块'multiprocessing'没有属性'connection'
- python - Seaborn 散点图 X 值缺失