我不小心删除了 kubernetes svc:
service "kubernetes" deleted
Run Code Online (Sandbox Code Playgroud)
使用:
kubectl delete svc --all
Run Code Online (Sandbox Code Playgroud)
我该怎么办?我只是想删除服务,以便我可以启动新服务。
先说一点理论 ;) 每当你删除 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 日志。
| 归档时间: |
|
| 查看次数: |
3363 次 |
| 最近记录: |