“kubectl删除服务”陷入“终止”状态

use*_*321 7 azure kubernetes azure-aks

我正在尝试删除我编写并部署到 Azure Kubernetes 服务的服务(以及随附的所需 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
Run Code Online (Sandbox Code Playgroud)

我必须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
Run Code Online (Sandbox Code Playgroud)

这个问题说先删除 Pod,但我所有的 Pod 都被删除了(kubectl get pods不返回任何内容)。还有这个已关闭的 K8s 问题,说--wait=false可能会修复前台级联删除,但这不起作用,而且无论如何似乎都不是这里的问题(因为 Pod 本身已被删除)。

我认为我可以完全清除 AKS 集群并重新创建,但这是最后的选择。我不知道它是否相关,但我的服务正在使用该服务的注释,azure-load-balancer-internal: "true"并且我有一个部署到使用此服务的 VNet 的 Web 应用程序。

还有其他方法可以强制关闭此服务吗?

Cr4*_*un4 10

我遇到了类似的问题,svc 未连接到 pod,因为 pod 已被删除:

HTTPConnectionPool(host='scv-name-not-shown-because-prod.namespace-prod', port=7999): Max retries exceeded with url: 
my-url-not-shown-because-prod (Caused by 
NewConnectionError('<urllib3.connection.HTTPConnection object at 
0x7faee4b112b0>: Failed to establish a new connection: [Errno 110] Connection timed out'))
Run Code Online (Sandbox Code Playgroud)

我可以使用 patch 命令解决这个问题:

kubectl patch service scv-name-not-shown-because-prod -n namespace-prod -p '{"metadata":{"finalizers":null}}'
Run Code Online (Sandbox Code Playgroud)

我认为该服务进入了某种非法状态并且无法恢复


use*_*321 4

感谢@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
Run Code Online (Sandbox Code Playgroud)