根据 ingress-nginx 的 Installation Guide 使用下面的命令安装 ingress-nginx
helm upgrade --install ingress-nginx ingress-nginx \
--repo https://kubernetes.github.io/ingress-nginx \
--namespace ingress-nginx --create-namespace
报错
Error: create: failed to create: secrets "sh.helm.release.v1.ingress-nginx.v1" is forbidden: unable to create new content in namespace ingress-nginx because it is being terminated
请问如何解决?kubernetes 版本是 1.23.3,helm 版本是 3.7.1
再次运行同样的命令,问题竟然消失了。
运行下面的命令没发现相关的 secret(输出为空)
kubectl get secret --all-namespaces -l "owner=helm" | grep ingress-nginx
用下面的命令安装再次出现这个问题
helm install ingress-nginx bitnami/nginx-ingress-controller --namespace ingress-nginx
原来是 ingress-nginx 处于 Terminating 状态引起的
$ kubectl get namespace | grep nginx
ingress-nginx Terminating 715d
强制删除也删除不了
kubectl delete namespace ingress-nginx --force --grace-period 0
通过 stackoverflow 上 "Namespace "stuck" as Terminating, How I removed it" 的回答中的方法解决了:
1)导出 ingress-nginx 命名空间的清单文件
$ kubectl get namespace ingress-nginx -o json > ingress-nginx.json
2)从导出的 ingress-nginx.json 文件中移除 finalizers
部分的 kubernetes
"spec": {
"finalizers": [
]
3)用修改后的清单文件替换 ingress-nginx 命名空间的配置
kubectl replace --raw "/api/v1/namespaces/ingress-nginx/finalize" -f ingress-nginx.json
搞定!