服务“kubernetes”已删除 - 意外删除了 kubernetes 服务

8 kubernetes amazon-eks

我不小心删除了 kubernetes svc:

service "kubernetes" deleted
Run Code Online (Sandbox Code Playgroud)

使用:

 kubectl delete svc --all
Run Code Online (Sandbox Code Playgroud)

我该怎么办?我只是想删除服务,以便我可以启动新服务。

A_S*_*Suh 8

先说一点理论 ;) 每当你删除 kubernetes svc 时,你也会删除端点,这就是 Reconciler 的用武之地。它实际上是核心引导 Kubernetes 控制器循环的控制器管理器,它管理创建“ kubernetes ”服务,“默认” "、" kube-system " 和 " kube-public " 命名空间,并提供对服务 IP 的 IP 修复检查。

因此,在健康集群中default.kubernetes服务应该由控制器管理器自动重新创建。

如果不是,我建议:

检查 api-server 日志

kubectl logs -f kube-apiserver-master -n kube-system
Run Code Online (Sandbox Code Playgroud)

你应该看到类似的东西:

Resetting endpoints for master service "kubernetes" to [10.156.0.3]
Run Code Online (Sandbox Code Playgroud)

如果您没有看到它,请尝试手动删除此服务的 etcd 密钥

因为集群的当前状态存储在 etcd 中,所以当你删除一个服务时可能会发生 key 仍然存在的情况:

一种。执行到 etcd-master pods

kubectl exec -it etcd-master -n kube-system sh
Run Code Online (Sandbox Code Playgroud)

湾 获取 etcd 键值

ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --key=/etc/kubernetes/pki/etcd/server.key --cert=/etc/kubernetes/pki/etcd/server.crt get /registry/services/endpoints/default/kubernetes
Run Code Online (Sandbox Code Playgroud)

C。如果你得到任何价值,如:

v1    Endpointst
O

kubernetesdefault"*$eafc04cf-90f3-11e9-a75e-42010a9c00032????z!


10.156.0.3
https?2TCP"
Run Code Online (Sandbox Code Playgroud)

只需将其删除

ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --key=/etc/kubernetes/pki/etcd/server.key --cert=/etc/kubernetes/pki/etcd/server.crt rm /registry/services/endpoints/default/kubernetes
Run Code Online (Sandbox Code Playgroud)

完成后,再次检查 api-server 日志。