我已经部署了一个Linkerd服务网格,我的库伯内特斯集群配置了Nginx入口html" target="_blank">控制器作为DaemonSet,所有入口也可以在Linkerd上正常工作。最近,我添加了一个流量拆分功能来运行我的蓝色/绿色设置,我可以使用单独的入口资源访问这些服务。我创建了一个顶点Web服务,如下所述。如果我在内部联系到您此服务,它会完美运行。我创建了另一个入口资源,我无法在集群之外测试蓝色/绿色功能。我想提一下,我已经将(注入Linkerd代理)啮合到我的所有Nginx pod,但它正在从Nginx返回“503 Service Temporally Un可用性
”消息。
我通过留档,并在此之后创建了入口,我可以确认以下注释已添加到入口资源。
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,蓝色/绿色问题,我将不胜感激。
tl; dr:nginx入口需要Service
资源才能拥有Endpoint
资源才能被视为流量的有效目的地。repo中的架构创建了三个Service
资源,其中一个充当apex
并且没有Endpoint
资源,因为它没有选择器,因此nginx入口不会向其发送流量,因此叶
服务不会获得流量。
repo中的示例遵循SMI规范,定义了一个apex服务和两个leaf服务。< code>web-apex服务没有任何endpoint,因此nginx不会向其发送流量。
根据SMI Spec服务可以是自引用的,这意味着服务可以是顶点服务和叶服务,因此要在本例中使用nginx入口,您可以修改Tra0014 Split
定义以将spec.service
值从web-apex
更改为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
我在Linkerd Slack频道中提出了这个问题,并在社区的大力支持下解决了这个问题。Nginx似乎不喜欢没有endpoint的服务。我的配置是正确的,并要求将流量拆分中指向的服务更改为具有endpoint的服务,它解决了问题。
简而言之,我的流量拆分配置了Web-svc和web-svc-2服务。我已将流量拆分 spec.service 更改为相同的 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
感谢支持我解决这个问题的Linkerd团队。它非常有效。
我正在AWS EKS上设置NGINX入口控制器。 我浏览了k8s入口资源,它非常有助于理解我们将LB端口映射到k8s服务端口,例如file Def。我安装了nginx控制器,直到必要的步骤。然后教程指示我创建一个入口资源。 我错过了什么?
操作系统:RHEL7|k8s版本:1.12/13|kubes祈祷|裸机 我部署了一个标准的kubespray裸机集群,我正在尝试了解部署nginx ingress controller的最简单推荐方法是什么,它将允许我部署简单的服务。没有提供负载平衡器。我希望我的主公共IP作为我的服务的endpoint。 Github k8s ingress nginx建议将节点端口服务作为“强制”步骤,这似乎不
我在RedHat EC2实例上安装了Minikube v1.3.1以进行一些测试。 由于nginx-ingress-控制器默认使用的端口已经在使用中,我正在尝试在部署中更改它们,但没有结果。有人能建议如何做吗? 如何知道端口已在使用? 当我使用命令kubectl-n kube system get deployment | grep nginx列出系统吊舱时,我得到: nginx入口控制器0/1
以下是我遵循的步骤- kubectl apply-f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml kubectl apply-f https://raw.githubusercontent.com/kubernetes/ingress-nginx/mas
我试图创建一个入口控制器,它指向我通过Nodeport公开的服务。 以下是入口控制器的yaml文件(摘自https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/):
我创建了一个EKS集群,并部署了一个带有应用程序负载平衡器的NGINX入口控制器。我部署了一个示例应用程序,并将其绑定到我的域名。这是入口文件- 当我打开测试时。美国广播公司。在我的浏览器中,它返回一个404 but测试。美国广播公司。xyz工作正常。我错过什么了吗?我想要测试。美国广播公司。xyz/游戏工作和测试。美国广播公司。xyz返回404。 更新-我按照本教程部署应用程序-https://