这种情况是我有两个相互连接的k8s服务。两者都是烧瓶服务器。它们之间的连接如下,如果有人在第一个服务器上发布了POST,它将获得文本输入,然后将其发布到第二个服务器上,这将在用户发布的原始文本中添加更多文本,最后,两个文本一起返回到第一台服务器,然后它将最终文本返回给用户。
要允许我的k8s服务之间相互连接(称为主服务器和从服务器,它们匹配标签app-master和app-slave),我具有以下networkPolicy:
kind: NetworkPolicy
apiVersion: extensions/v1beta1
metadata:
name: master-to-slave
namespace: innovation
spec:
podSelector:
matchLabels:
app: app-slave
ingress:
- ports:
- port: 5000
protocol: TCP
- port: 5001
protocol: TCP
- from:
- namespaceSelector:
matchLabels:
app: app-master
要从租户外部进行卷发,我必须使用traefik,因为我正在以traefik作为NodePort的租户中工作,因此我不能将主服务公开为nodePort或将其转换为LoadBalancer类型。我对此应用程序的入口是下一个
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
name: ingress-innovation
namespace: innovation
annotations:
traefik.frontend.rule.type: PathPrefixStrip
spec:
rules:
- http:
paths:
- path: /master
backend:
serviceName: master
servicePort: 5000
- path: /slave
backend:
serviceName: slave
servicePort: 5001
我还有一个DNS,该DNS允许我向地址(https://name_in_the_DNS)发出请求,而不是向租户的IP发送请求。问题是当我尝试执行以下请求时:
curl https://name_in_the_DNS/master -X POST -d texto
给我一个错误(网关超时)。如果我使用“ kubectl port-forward”,该应用程序将按预期运行。关于如何解决此问题的任何想法?我想这与networkPolicy有关,因为我在租户中还有其他应用程序,并且curl请求对它们有效。
谢谢!
有关查看服务和部署Yaml的信息:Could two cluster IP services be connected in Kubernetes?