Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
kubernetes将使用Traefik 2.x的服务公开为使用CRD的入口 我有什么工作_Kubernetes_Traefik_Kubernetes Ingress_Traefik Ingress - Fatal编程技术网

kubernetes将使用Traefik 2.x的服务公开为使用CRD的入口 我有什么工作

kubernetes将使用Traefik 2.x的服务公开为使用CRD的入口 我有什么工作,kubernetes,traefik,kubernetes-ingress,traefik-ingress,Kubernetes,Traefik,Kubernetes Ingress,Traefik Ingress,我有一个Kubernetes集群,如下所示: 单个控制平面(但计划为HA扩展到3个控制平面) 2个工作节点 在我部署的集群上(遵循traefik的文档): 创建两个吊舱的部署: traefik本身:负责使用暴露端口808080进行路由 whoami:一个简单的http服务器,用于响应http请求 两种服务 traefik服务: whoami服务: 一条traefik入口路线: 我想要什么 我在集群中运行了多个服务,我希望使用入口将它们公开给外部。 更确切地说,我想使用新的tr

我有一个Kubernetes集群,如下所示:

  • 单个控制平面(但计划为HA扩展到3个控制平面)
  • 2个工作节点


在我部署的集群上(遵循traefik的文档):

  • 创建两个吊舱的部署:

    • traefik本身:负责使用暴露端口808080进行路由
    • whoami:一个简单的http服务器,用于响应http请求
  • 两种服务

    • traefik服务:
    • whoami服务:
  • 一条traefik入口路线:

我想要什么 我在集群中运行了多个服务,我希望使用入口将它们公开给外部。 更确切地说,我想使用新的traefik2.xCDR入口方法

我的最终目标是使用新的traefiks 2.x CRD,使用
IngressRoute
自定义资源定义公开端口80443800上的资源

有什么问题吗 如果我理解的很好,经典的入口控制器允许向外界展示我们想要的每个端口(包括80、8080和443)

但凭借新的traefik CDR ingress方法本身,它根本不导出任何内容。 一种解决方案是将Traefik服务定义为loadbalancer类型的服务,然后公开一些端口。但是您必须使用30000-32767端口范围(与nodeport相同),我不想在反向代理前面添加反向代理,以便能够公开端口80和443

此外,我还从新igress CRD()的文档中了解到:

kubectl端口转发--地址0.0.0.0服务/traefik 8000:8000 8080:8080 443:4443-n默认值

是必需的,我现在明白了。您需要将主机端口映射到服务端口。 但是,以这种方式映射端口会让人觉得笨重而且不直观。我不想在yaml中包含服务描述的一部分,同时必须记住,我需要使用
kubectl
映射端口

我很确定这个问题有一个简洁的解决方案,但我不明白如何保持简单。你们有没有在kubernetes使用新traefik 2.x CRD配置的经验

apiVersion: v1
kind: Service
metadata:
  name: traefik

spec:
  ports:
    - protocol: TCP
      name: web
      port: 80
      targetPort: 8000
    - protocol: TCP
      name: admin
      port: 8080
      targetPort: 8080
    - protocol: TCP
      name: websecure
      port: 443
      targetPort: 4443
  selector:
    app: traefik
您是否尝试过使用tragetPort,其中每个请求都在80重定向到8000,但当您使用PortForward时,您需要始终使用服务而不是pod


您是否尝试过使用TragePort,其中每个请求都来自80重定向到8000,但当您使用port forward时,您需要始终使用service而不是pod,您可以尝试使用LoadBalancer service type在端口80、443和8080上公开Traefik服务。我已经从您在GKE中提供的链接中测试了yaml,它是有效的

您需要更改“traefik”服务上的端口,并添加“LoadBalancer”作为服务类型:

kind: Service
metadata:
  name: traefik
spec:
  ports:
    - protocol: TCP
      name: web
      port: 80 <== Port to receive HTTP connections
    - protocol: TCP
      name: admin
      port: 8080 <== Administration port
    - protocol: TCP
      name: websecure
      port: 443 <== Port to receive HTTPS connections
  selector:
    app: traefik
  type: LoadBalancer <== Define the type load balancer

您可以尝试使用LoadBalancer服务类型公开端口80、443和8080上的Traefik服务。我已经从您在GKE中提供的链接中测试了yaml,它是有效的

您需要更改“traefik”服务上的端口,并添加“LoadBalancer”作为服务类型:

kind: Service
metadata:
  name: traefik
spec:
  ports:
    - protocol: TCP
      name: web
      port: 80 <== Port to receive HTTP connections
    - protocol: TCP
      name: admin
      port: 8080 <== Administration port
    - protocol: TCP
      name: websecure
      port: 443 <== Port to receive HTTPS connections
  selector:
    app: traefik
  type: LoadBalancer <== Define the type load balancer

过了一段时间,我决定在库伯内特斯星系团前面放置一个半质子。这似乎是唯一的ATM解决方案。

过了一段时间,我决定在kubernetes集群前面放置一个haproxy。这似乎是ATM的唯一解决方案。

我尝试使用loadbalancer类型,但不是默认类型。使用loadbalancer,Kubernetes会忽略这些targetPort,并使用30k+范围内的随机端口。但即使使用默认类型,我觉得它也无法工作,因为使用此配置,没有端口对外公开,您提到的技巧只是关于内部集群通信,对吗?默认情况下,kubernetes loadbalancer类型使用NodePort进行通信,如果您想更改kubernetes分配的默认端口,在30k+范围内,您必须在Kubernets api中进行修改。我知道这个解决方案,但我也不喜欢它,这是一个传统的就地配置,我将在不到一周的时间内放弃,当系统将要失败时,我将愤怒地尝试进行故障排除。我读得越多,就越觉得在traefik CRD前面使用常规的Nginx入口是一种尝试loadbalancer类型的方法,而不是默认类型。使用loadbalancer,Kubernetes会忽略这些targetPort,并使用30k+范围内的随机端口。但即使使用默认类型,我觉得它也无法工作,因为使用此配置,没有端口对外公开,您提到的技巧只是关于内部集群通信,对吗?默认情况下,kubernetes loadbalancer类型使用NodePort进行通信,如果您想更改kubernetes分配的默认端口,在30k+范围内,您必须在Kubernets api中进行修改。我知道这个解决方案,但我也不喜欢它,这是一个传统的就地配置,我将在不到一周的时间内放弃,当系统将要失败时,我将愤怒地尝试进行故障排除。我读到的越多,我就越觉得在traefik CRD前使用常规的Nginx入口是在EKS上获得Raefik的方法,AKS和GKE需要设置为负载平衡器,并且在本机上工作正常,但是当您使用premise时(我在ubuntu服务器20.04和18.04上亲自测试过)在EKS上Traefik,AKS和GKE需要设置为LoadBalancer并在本机上正常工作,但当您在premise上工作时(我个人在ubuntu服务器20.04和18.04上测试过),似乎无法正常工作并在此处跟踪所有内容