我正在尝试删除编写并部署到Azure Kubernetes Service的服务(以及与之伴随的必需的Dask组件),并且当我运行kubectl delete -f my_manifest.yml
时,我的服务将陷入“终止”状态。控制台告诉我它已被删除,但命令挂起:
> 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
This question说先删除窗格,但删除我所有的窗格(kubectl get pods
不返回任何内容)。还有this closed K8s issue说--wait=false
可以解决前台级联删除的问题,但这是行不通的,而且似乎也不是问题所在(因为pod本身已经被删除了)。>
我假设我可以完全清除我的AKS集群并重新创建,但这是最后的选择。我不知道它是否相关,但是我的服务正在使用the azure-load-balancer-internal: "true"
annotation作为该服务,并且我已经将一个Web应用程序部署到使用该服务的VNet中。
还有其他方法可以强制关闭此服务吗?
答案 0 :(得分:1)
由于@ 4c74356b41建议查看kubectl describe service my-service
(出于某种原因我没有考虑),我看到了以下警告:
Code =“ LinkedAuthorizationFailed”消息=“具有对象ID'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'的客户端'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'有权执行操作'Microsoft.Network/loadBalancers/在范围'/subscriptions/
/resourceGroups/ /providers/Microsoft.Network/loadBalancers/kubernetes-internal'上写入';但是,它无权执行操作'Microsoft.Network/virtualNetworks/subnets/链接作用域“ / subscriptions / / resourceGroups / /providers/Microsoft.Network/virtualNetworks/ / subnets / ”或链接作用域上的“ join / action”无效。
(客户端ID和对象ID GUID的值相同。)
这表明这不完全是Kubernetes的问题,而是Azure生态系统中的权限。我浏览了该门户网站,但在我的任何用户,组或应用程序中都找不到该GUID,因此我不确定它指的是什么。但是,我将此客户端ID授予了Owner
角色,几分钟后,该服务被删除了。
az role assignment create `
--role Owner `
--assignee xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx