ike*_*him 11 nginx kubernetes kubernetes-ingress azure-aks nginx-ingress
我使用 Helm 和默认配置创建了一个入口控制器
default nginx-ingress-controller LoadBalancer 10.0.182.128 xx.xxx.xx.90 80:32485/TCP,443:31756/TCP 62m
default nginx-ingress-default-backend ClusterIP 10.0.12.39 <none> 80/TCP 62m
Run Code Online (Sandbox Code Playgroud)
使用头盔:
helm install nginx-ingress stable/nginx-ingress \
--set controller.replicaCount=2 \
--set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \
--set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux \
--set controller.service.loadBalancerIP="Created static IP" \
--set controller.service.annotations."service\.beta\.kubernetes\.io/azure-dns-label-name"="XXX-aks-ingress"
Run Code Online (Sandbox Code Playgroud)
该入口正在默认命名空间中运行。
现在,我想添加第二个入口控制器,从官方文档我有特定的入口类
helm install nginx-ingress stable/nginx-ingress \
--namespace ingress-nginx-devices \ #I create this namespace first
--set controller.ingressClass="nginx-devices" \ # custom class to use for different ingress resources
--set controller.replicaCount=2 \
--set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \
--set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux \
--set controller.service.loadBalancerIP="A second static Ip address created before" \
--set controller.service.annotations."service\.beta\.kubernetes\.io/azure-dns-label-name"="serviceIot-aks-ingress-iot"
Run Code Online (Sandbox Code Playgroud)
但我不断收到此错误:
Error: rendered manifests contain a resource that already exists. Unable to continue with install: ClusterRole "nginx-ingress" in namespace "" exists and cannot be imported into the current release: invalid ownership metadata; annotation validation error: key "meta.helm.sh/release-namespace" must equal "ingress-nginx-devices": current value is "default"
Run Code Online (Sandbox Code Playgroud)
这里可能出了什么问题?如有任何帮助,我们将不胜感激:)
iam*_*991 13
就我而言,问题在于 ingressclass 已经存在。我只是删除了 ingressclass,它就像一个魅力。
# kubectl get ingressclass --all-namespaces
Run Code Online (Sandbox Code Playgroud)
这将返回已经存在的入口类的名称。就我而言,它是 nginx。删除该入口类。
# kubectl delete ingressclass nginx --all-namespaces
Run Code Online (Sandbox Code Playgroud)
验证 ingressclass 是否已删除
# kubectl get ingressclass --all-namespaces
No resources found
Run Code Online (Sandbox Code Playgroud)
重新运行 helm update 命令应该可以工作。
您还可以使用新的 ingressClassName 和 ingressClassResourceName 并行运行多个 ingrss 控制器。首先获取所有现有类名的列表。
kubectl get ingressclass --all-namespaces
NAME CONTROLLER PARAMETERS AGE
nginx k8s.io/ingress-nginx <none> 203d
Run Code Online (Sandbox Code Playgroud)
使用此命令创建一个具有唯一 className 的新入口控制器。
helm install nginx-ingress stable/nginx-ingress \
--namespace ingress-nginx-devices \ #I create this namespace first
--set controller.ingressClass="nginx-devices" \ # custom class to use for different ingress resources
--set controller.ingressClassResource.name="nginx-devices" # custom classResourceName
--set controller.replicaCount=2 \
--set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \
--set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux \
--set controller.service.loadBalancerIP="A second static Ip address created before" \
--set controller.service.annotations."service\.beta\.kubernetes\.io/azure-dns-label-name"="serviceIot-aks-ingress-iot"
Run Code Online (Sandbox Code Playgroud)
更新 :
\n正在处理此ingressClass 的控制器的 Controller-值
\n通过最近的更新,您可能必须使用controller.ingressClassByName
\n官方文档:https ://github.com/kubernetes/ingress-nginx/tree/main/charts/ingress-nginx#values
\nhelm install nginx-ingress-devices stable/nginx-ingress \\ \n --namespace ingress-nginx-devices \\ #I create this namespace first \n --set controller.ingressClass="nginx-devices" \\ # custom class to use for different ingress resources \n --set controller.ingressClassResource.name="nginx-devices" \\\n --set controller.replicaCount=2 \\ \n --set controller.nodeSelector."beta\\.kubernetes\\.io/os"=linux \\\n --set defaultBackend.nodeSelector."beta\\.kubernetes\\.io/os"=linux \\\n --set controller.service.loadBalancerIP="A second static Ip address created before" \\\n --set controller.service.annotations."service\\.beta\\.kubernetes\\.io/azure-dns-label-name"="serviceIot-aks-ingress-iot"\nRun Code Online (Sandbox Code Playgroud)\n旧答案
\n你可以尝试一下,我们正在更改的是名称:nginx-ingress-devices而不是nginx-ingress
\nhelm install nginx-ingress-devices stable/nginx-ingress \\ \n--namespace ingress-nginx-devices \\ #I create this namespace first \n--set controller.ingressClass="nginx-devices" \\ # custom class to use for different ingress resources \n--set controller.replicaCount=2 \\ \n--set controller.nodeSelector."beta\\.kubernetes\\.io/os"=linux \\\n--set defaultBackend.nodeSelector."beta\\.kubernetes\\.io/os"=linux \\\n--set controller.service.loadBalancerIP="A second static Ip address created before" \\\n--set controller.service.annotations."service\\.beta\\.kubernetes\\.io/azure-dns-label-name"="serviceIot-aks-ingress-iot"\nRun Code Online (Sandbox Code Playgroud)\n您收到的错误是由于已经存在同名的集群角色:nginx-ingress,因为您收到了错误。
\n\n\nClusterRoleBindings 向用户、组或服务帐户授予跨整个群集的\nClusterRole\xe2\x80\x99s 权力。
\n
您可以在此处获取参考文件:https://github.com/helm/charts/blob/master/stable/nginx-ingress/templates/clusterrole.yaml
\n| 归档时间: |
|
| 查看次数: |
11936 次 |
| 最近记录: |