我已经在kubernetes(v1.15.2)kube-system名称空间中部署了treafik(v2.0),现在我定义了一个自定义名称空间并部署了微服务应用程序。由于treafik无法共享跨命名空间的pod,因此我在dabai-fat命名空间中部署了相同的treafik。现在treafik入口为我提供了以下提示:
0/3 nodes are available: 1 node(s) didn't have free ports for the requested pod ports, 2 node(s) didn't match node selector.
我认为相同的入口节点共享相同的80和443端口并发生冲突。处理此问题的最佳实践是什么?现在我想将微服务配置中心eureka映射到互联网。这是我的路由配置:
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: fat-eureka-route
spec:
entryPoints:
- web
routes:
- match: Host(`k8s-fat-eureka.example.com`)
kind: Rule
services:
- name: eureka
port: 8761
答案 0 :(得分:3)
您不需要在集群中部署多个入口控制器。部署在名称空间中的Ingress控制器应该能够跨群集在所有名称空间中的所有Pod上工作。入口控制器通常具有集群环,允许它访问入口服务。集群中所有名称空间的端点。
您只需要在拥有eureka的容器和服务的名称空间中创建一个ingress resource。完成该操作后,traefik入口控制器将监视创建的入口,并将配置traefik以便通过入口将流量路由到您的Pod。
现在traefik通过CRD支持kubernetes本地入口和入口路由。如果您使用的是Ingressroute,请确保已按照docs
中指定的CRD进行安装