创建部署问题时,请参考下面模板,你提供的信息越多,越容易及时获得解答。如果未按模板创建问题,管理员有权关闭问题。
确保帖子格式清晰易读,用 markdown code block 语法格式化代码块。
你只花一分钟创建的问题,不能指望别人花上半个小时给你解答。
操作系统信息
虚拟机,Centos8,10C/32G
Kubernetes版本信息
Client Version: version.Info{Major:“1”, Minor:“21”, GitVersion:“v1.21.4+k3s1”, GitCommit:“3e250fdbab72d88f7e6aae57446023a0567ffc97”, GitTreeState:“clean”, BuildDate:“2021-08-19T19:09:53Z”, GoVersion:“go1.16.6”, Compiler:“gc”, Platform:“linux/amd64”}
Server Version: version.Info{Major:“1”, Minor:“21”, GitVersion:“v1.21.4+k3s1”, GitCommit:“3e250fdbab72d88f7e6aae57446023a0567ffc97”, GitTreeState:“clean”, BuildDate:“2021-08-19T19:09:53Z”, GoVersion:“go1.16.6”, Compiler:“gc”, Platform:“linux/amd64”}
容器运行时
Version: 0.1.0
RuntimeName: containerd
RuntimeVersion: v1.4.9-k3s1
RuntimeApiVersion: v1alpha2
KubeSphere版本信息
v3.2
问题是什么
1. 关于集群网关watch的namespace
我在实际使用中发现,不论是集群网关还是项目网关,其watch的namespace都是靠nginx-ingress-controller 的命令行参数 –watch-namespace指定的,而这个值好像是通过gateway和Nginx层层传递下来。
那么作为集群网关,如果watch的是kubesphere-system或kubesphere-controls-system命名空间下的资源,他是如何做到感知到具体业务项目namespace下的ingress的?
我在实际使用中通过集群网关访问业务是404报错。
只有强制指定nginx-ingress-controller命令行参数watch-namespace为空,才能访问到具体项目。
因为我这边看nginx-ingress的代码,指定为空,就是watch all namespace。
2.我们由于某些原因,不定义ingress的域名,直接通过网关ip进行访问,那么如果项目定义的路由路径冲突,集群网关的行为是如何的,官方是如何建议集群网关的使用的,对于集群网关的具体定位是怎样的。
辛苦解答疑惑~多谢