当先锋百科网

首页 1 2 3 4 5 6 7


本文使用的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。

打完,收工