文章目录
- [ingress rule无法找到端点](#ingress rule无法找到端点)
-
-
- 这个注解是什么意思呢?
- 为何不生效呢?端点无法更新?
- 如何确认ingressclass呢?
- 修复端点无法发现的问题
- [多个ingress controller 架构](#多个ingress controller 架构)
-
ingress rule无法找到端点
在vnnox-cn集群创建ingress,kubernetes.io/ingress.class 指定的是service-internal-lan.
这个注解是什么意思呢?
这个注解告诉 Kubernetes 集群应该由哪个 Ingress 控制器来处理该 Ingress 资源.
集群中三个ingress controller
yaml
k -n kube-system get po
NAME READY STATUS RESTARTS AGE
nginx-ingress-controller-569654cb59-j2nvg 1/1 Running 0 238d
nginx-ingress-controller-internal-65598959c8-lnr9v 1/1 Running 2 3y73d
nginx-ingress-controller-nova-657f857948-zkthm 1/1 Running 4 3y30d
# 10.201.92.105 这是一个私网CLB
k -n kube-system get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE 484d
nginx-ingress-lb LoadBalancer 172.19.14.18 47.110.xx 80:31571/TCP,443:31892/TCP,1935:31893/TCP 3y218d
nginx-ingress-lb-internal LoadBalancer 172.19.5.159 10.201.92.105 80:31473/TCP,443:32509/TCP 3y222d
nginx-ingress-lb-nova LoadBalancer 172.19.14.25 47.111.xx 80:30253/TCP,443:32492/TCP 3y30d
需要创建的是一个内部ingress : vnnox-consul-cn.vnnox.internal,这个域名在PrivateZone中解析. (和coreDNS 的作用类似,可以自定义一级域名,服务比自己维护更稳定。)
参考其他集群的annotation写的是service-internal-lan。
为何不生效呢?端点无法更新?
无法更新是因为annotation无法找到对应的kubernetes.io/ingress.class 。也就是ingressclass配置不正确。
如何确认ingressclass呢?
1.18 后的集群增加了ingressclass资源,直接kubectl get ingress即可。
目前的vnnox-cn 集群版本是1.16.6. 无法直接查询ingress-class 的名字。
可以查看kube-system ns下ingress controller pod中nginx-ingress-controller的启动参数确定。
yaml
spec:
containers:
- args:
- /nginx-ingress-controller
...
**- --ingress-class=service-internal**
修复端点无法发现的问题
将注解 kubernetes.io/ingress.class修改正确,端点即可自动发现。
yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: service-internal
creationTimestamp: "2023-11-30T03:33:40Z"
generation: 3
name: consul
namespace: cn
resourceVersion: "4773203542"
selfLink: /apis/extensions/v1beta1/namespaces/cn/ingresses/consul
uid: 57df1f48-b7c4-4af1-a2bf-767d6bc3aaf4
spec:
rules:
- host: vnnox-consul-cn.vnnox.XXX
http:
paths:
- backend:
serviceName: vnnox-consul
servicePort: 8500
path: /
status:
loadBalancer:
ingress:
- ip: 10.201.92.105