如何恢复Kubernetes中误删的v1.networking.k8s.io API服务?
问题
使用Kubernetes v1.22.13版本时,误执行命令 kubectl delete apiservices.apiregistration.k8s.io v1.networking.k8s.io 删除了v1.networking.k8s.io API服务,导致无法识别IngressClass等networking.k8s.io/v1下的资源,安装ingress-nginx控制器时出现以下错误:
error: resource mapping not found for name: "nginx" namespace: "" from "https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.4.0/deploy/static/provider/cloud/deploy.yaml": no matches for kind "IngressClass" in version "networking.k8s.io/v1"
恢复步骤
v1.networking.k8s.io属于Kubernetes核心API组,并非CRD,只需恢复对应的APIService对象即可:
- 创建名为
restore-networking-apiserver.yaml的清单文件,内容如下:
apiVersion: apiregistration.k8s.io/v1 kind: APIService metadata: name: v1.networking.k8s.io spec: group: networking.k8s.io groupPriorityMinimum: 1000 versionPriority: 15 service: name: kubernetes namespace: default version: v1 insecureSkipTLSVerify: true
说明:
insecureSkipTLSVerify可根据集群实际TLS配置调整,若集群APIServer使用可信证书,可移除该字段。
- 应用该清单恢复APIService:
kubectl apply -f restore-networking-apiserver.yaml
- 验证恢复结果:
kubectl get apiservices.apiregistration.k8s.io v1.networking.k8s.io
当状态显示为Available=True时,即可重新安装ingress-controller。
内容的提问来源于stack exchange,提问作者miador
相关产品推荐
相关产品推荐

