0/3个节点可用:1个节点没有用于请求的Pod端口的空闲端口,2个节点与节点选择器不匹配

时间:2020-02-02 10:14:33

标签: kubernetes

enter image description here

我已经在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

1 个答案:

答案 0 :(得分:3)

您不需要在集群中部署多个入口控制器。部署在名称空间中的Ingress控制器应该能够跨群集在所有名称空间中的所有Pod上工作。入口控制器通常具有集群环,允许它访问入口服务。集群中所有名称空间的端点。

您只需要在拥有eureka的容器和服务的名称空间中创建一个ingress resource。完成该操作后,traefik入口控制器将监视创建的入口,并将配置traefik以便通过入口将流量路由到您的Pod。

现在traefik通过CRD支持kubernetes本地入口和入口路由。如果您使用的是Ingressroute,请确保已按照docs

中指定的CRD进行安装