Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.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
使用Nginx入口控制器拆分链接器流量_Nginx_Kubernetes_Kubernetes Ingress_Linkerd_Servicemesh - Fatal编程技术网

使用Nginx入口控制器拆分链接器流量

使用Nginx入口控制器拆分链接器流量,nginx,kubernetes,kubernetes-ingress,linkerd,servicemesh,Nginx,Kubernetes,Kubernetes Ingress,Linkerd,Servicemesh,我已经部署了一个Linkerd服务网格,我的Kubernetes集群配置了Nginx入口控制器作为守护程序集,并且所有入口在Linkerd中也可以正常工作。最近,我添加了流量分割功能来运行我的蓝/绿设置,我可以通过单独的入口资源访问这些服务。如前所述,我创建了一个apex web服务。如果我在内部联系您,这项服务将非常有效。我已经创建了另一个入口资源,无法在集群之外测试蓝色/绿色功能。我想提到的是,我已经将Linkedr代理注入到我所有的Nginx pod中,但它正在从Nginx返回503服务暂

我已经部署了一个Linkerd服务网格,我的Kubernetes集群配置了Nginx入口控制器作为守护程序集,并且所有入口在Linkerd中也可以正常工作。最近,我添加了流量分割功能来运行我的蓝/绿设置,我可以通过单独的入口资源访问这些服务。如前所述,我创建了一个apex web服务。如果我在内部联系您,这项服务将非常有效。我已经创建了另一个入口资源,无法在集群之外测试蓝色/绿色功能。我想提到的是,我已经将Linkedr代理注入到我所有的Nginx pod中,但它正在从Nginx返回503服务暂时不可用的消息

我浏览了文档并创建了以下入口,我可以确认以下注释已添加到入口资源中

annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/configuration-snippet: |
  proxy_set_header l5d-dst-override $service_name.$namespace.svc.cluster.local:$service_port;
  grpc_set_header l5d-dst-override $service_name.$namespace.svc.cluster.local:$service_port;
但在集群的外侧仍然没有运气

我正在使用给定的emojivoto应用程序进行测试,所有流量分割和apex web服务都在培训库中


我不太确定出了什么问题,以及如何从集群外部解决这个问题。如果有人能帮助我解决这个Linkerd蓝色/绿色问题,我将不胜感激。

我在Linkerd Slack频道提出了这个问题,并在社区的大力支持下得到了解决。Nginx似乎不喜欢没有端点的服务。我的配置是正确的,要求将流量拆分中指向的服务更改为具有端点的服务,解决了该问题

简而言之,我的流量拆分配置了web svc和web-svc-2服务。我已经将流量拆分规范服务更改为同一个web svc,它成功了

以下是更新后的流量拆分配置

apiVersion: split.smi-spec.io/v1alpha1
kind: TrafficSplit
metadata:
  name: web-svc-ts
  namespace: emojivoto
spec:
  # The root service that clients use to connect to the destination application.
  service: web-svc
  # Services inside the namespace with their own selectors, endpoints and configuration.
  backends:
  - service: web-svc
    # Identical to resources, 1 = 1000m
    weight: 500m
  - service: web-svc-2
    weight: 500m

感谢支持我解决此问题的Linkedr团队。它工作起来很有魅力。

我在Linkedr Slack频道提出了这个问题,并在社区的大力支持下得到了解决。Nginx似乎不喜欢没有端点的服务。我的配置是正确的,要求将流量拆分中指向的服务更改为具有端点的服务,解决了该问题

简而言之,我的流量拆分配置了web svc和web-svc-2服务。我已经将流量拆分规范服务更改为同一个web svc,它成功了

以下是更新后的流量拆分配置

apiVersion: split.smi-spec.io/v1alpha1
kind: TrafficSplit
metadata:
  name: web-svc-ts
  namespace: emojivoto
spec:
  # The root service that clients use to connect to the destination application.
  service: web-svc
  # Services inside the namespace with their own selectors, endpoints and configuration.
  backends:
  - service: web-svc
    # Identical to resources, 1 = 1000m
    weight: 500m
  - service: web-svc-2
    weight: 500m
感谢支持我解决此问题的Linkedr团队。它就像一个魔咒;dr:nginx进入服务资源以拥有端点资源,从而被视为有效的通信目的地。repo中的体系结构创建了三个服务资源,其中一个充当apex,没有端点资源,因为它没有选择器,因此nginx入口不会向其发送流量,而叶服务也不会因此获得流量

repo中的示例遵循SMI规范,定义了一个apex服务和两个leaf服务。web apex服务没有任何端点,因此nginx不会向其发送流量

根据服务可以是自参考的,这意味着服务可以是apex和叶服务,因此,要在本例中使用nginx入口,您可以修改TrafficSplit以将spec.service值从web apex更改为web svc:

apiVersion:split.smi-spec.io/v1alpha1 种类:交通分流 元数据: 名称:web svc ts 名称空间:emojivoto 规格: 客户端用于连接到目标应用程序的根服务。 服务:web svc 命名空间内的服务具有自己的选择器、端点和配置。 后端: -服务:web svc 与资源相同,1=1000m 重量:500米 -服务:web-svc-2 重量:500米 tl;dr:nginx进入服务资源以拥有端点资源,从而被视为有效的通信目的地。repo中的体系结构创建了三个服务资源,其中一个充当apex,没有端点资源,因为它没有选择器,因此nginx入口不会向其发送流量,而叶服务也不会因此获得流量

repo中的示例遵循SMI规范,定义了一个apex服务和两个leaf服务。web apex服务没有任何端点,因此nginx不会向其发送流量

根据服务可以是自参考的,这意味着服务可以是apex和叶服务,因此,要在本例中使用nginx入口,您可以修改TrafficSplit以将spec.service值从web apex更改为web svc:

apiVersion:split.smi-spec.io/v1alpha1 种类:交通分流 元数据: 名称:web svc ts 名称空间:emojivoto 规格: 客户端用于连接到目标应用程序的根服务。 服务 e:WebSVC 命名空间内的服务具有自己的选择器、端点和配置。 后端: -服务:web svc 与资源相同,1=1000m 重量:500米 -服务:web-svc-2 重量:500米