本文使用的rancher版本是v2.7.5
一、故障现象
在需要导入的集群环境中执行以下框红的代码过程中,由于第一次操作失误,集群一直无法正常导入,删除Rancher依赖的namespace(cattle-system),状态一直是Terminating。
如下图所示:
二、解决办法
在参考了我另外一篇博客之后 kubernetes namespace Terminating状态 无法删除的解决方法 一文的步骤之后
问题还是没有解决。
以下是这个问题的最终解决办法,执行一下命令:
kubectl patch namespace cattle-system -p '{"metadata":{"finalizers":[]}}' --type='merge' -n cattle-system
kubectl delete namespace cattle-system --grace-period=0 --force
kubectl patch namespace cattle-global-data -p '{"metadata":{"finalizers":[]}}' --type='merge' -n cattle-system
kubectl delete namespace cattle-global-data --grace-period=0 --force
kubectl patch namespace local -p '{"metadata":{"finalizers":[]}}' --type='merge' -n cattle-system
for resource in `kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get -o name -n local`; do kubectl patch $resource -p '{"metadata": {"finalizers": []}}' --type='merge' -n local; done
kubectl delete namespace local --grace-period=0 --force
在执行过程中可能会遇到新的问题,我整理如下:
问题一
(1)问题描述
Error from server (InternalError): Internal error occurred: failed calling webhook “rancher.cattle.io.namespaces.create-non-kubesystem”: failed to call webhook: Post “https://rancher-webhook.cattle-system.svc:443/v1/webhook/validation/namespaces?timeout=10s”: service “rancher-webhook” not found;
(2)解决方案
[root@k8s-master rancher]# kubectl get MutatingWebhookConfiguration
NAME WEBHOOKS AGE
cert-manager-webhook 1 5h50m
mutating-webhook-configuration 8 5h49m
rancher.cattle.io 5 120m
[root@k8s-master rancher]# kubectl delete MutatingWebhookConfiguration rancher.cattle.io
mutatingwebhookconfiguration.admissionregistration.k8s.io "rancher.cattle.io" deleted
[root@k8s-master rancher]# kubectl get ValidatingWebhookConfiguration
NAME WEBHOOKS AGE
cert-manager-webhook 1 5h51m
ingress-nginx-admission 1 6h6m
rancher.cattle.io 13 121m
validating-webhook-configuration 11 5h50m
[root@k8s-master rancher]# kubectl delete ValidatingWebhookConfiguration rancher.cattle.io
validatingwebhookconfiguration.admissionregistration.k8s.io "rancher.cattle.io" deleted
[root@k8s-master rancher]# kubectl create ns cattle-system
namespace/cattle-system created
查看MutatingWebhookConfiguration和ValidatingWebhookConfiguration
使用delete删除影响操作的MutatingWebhookConfiguration和ValidatingWebhookConfiguration
最后重新创建名称空间即可。
(3)解释说明
ValidatingWebhookConfiguration 是 Kubernetes 中可扩展准入控制器(Admission Controllers)机制的一种实现形式,它定义了一组 Webhook 规则,用于对新创建或修改的 Kubernetes 资源进行自动验证和修正操作。具体地说,当 Kubernetes API Server 接收到新的资源提交请求时,它会调用已配置的 Validaing Admission Controller,根据不同的 ValidatingWebhookConfiguration 选择对应的 Webhook 进行验证和修正,并返回结果给 API Server 进行响应。这样,在资源进入 Kubernetes 集群之前就可以自动完成一些常见的验证和修正操作,如强制执行最佳实践、兼容性检查、安全审计等。
MutatingWebhookConfiguration 与 ValidatingWebhookConfiguration 类似,是 Kubernetes 中可扩展准入控制器(Admission Controllers)机制的一种实现形式,它定义了一组 Webhook 规则,用于在 Kubernetes API Server 接收到新的资源提交请求时,对新资源进行自动修改操作,从而实现资源自动化管理的目的。具体地说,当 Kubernetes API Server 接收到请求后,会根据不同的 MutatingWebhookConfiguration 配置选择对应的 Webhook 进行资源自动修改,并返回修改后的结果给 API Server 进行响应。
我的问题到这里就解决了,希望能帮到各位coder。
打完,收工