情况是我有两个 k8s 服务连接在它们之间。两者都是烧瓶服务器。它们之间的联系如下,如果有人对第一个进行 POST,这将获取文本输入并将其 POST 到第二个服务器,第二个服务器在用户发布的原始文本中添加更多文本,最后,两个文本一起返回到第一个服务器,并将最终文本返回给用户。
为了允许我的 k8s 服务(称为 master 和 slave,匹配标签 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,它允许我向地址 ( https://name_in_the_DNS ) 发出请求,而不是向我的租户的 IP 发出请求。问题是当我尝试执行以下请求时:
curl https://name_in_the_DNS/master -X POST -d texto
给我一个错误(网关超时)。如果我使用“kubectl port-forward”,则应用程序按预期工作。知道如何解决这个问题吗?我想这与 networkPolicy 有关,因为我在租户中有其他应用程序,并且 curl 请求适用于它们。
提前致谢!
查看服务和部署 yamls:在 Kubernetes 中可以连接两个集群 IP 服务吗?