gpt4 book ai didi

docker - 具有 hostNetwork True 的 Kubernetes Pod 无法访问同一集群中服务的外部 IP

转载 作者:行者123 更新时间:2023-12-01 23:42:34 24 4
gpt4 key购买 nike

问题

我有两个 pod AB 在 minikube 上的集群中运行,它们都有外部 IP www.service-a.comwww.service-b.com。两个外部 IP 都可以从外部访问。

我需要 A 能够使用它的外部 IP 而不是它的集群 DNS 调用 B,也就是说 A 需要使用 www.service-b.com 而不是 b.svc.cluster.local(它确实有效,但我不能使用它)。

我将 A 设置为使用 hostNetwork: truednsPolicy: ClusterFirstWithHostNet。如果我手动启动 NodeJS docker 容器,它确实可以连接并找到它。但是,A 仍然无法连接到 service-b.com。我使用的 hostNetwork 错了吗?如何配置我的 pod 以这种方式连接到 b

A 的部署 YAML

...
spec:
replicas: 1
selector:
matchLabels:
app: a-app
template:
metadata:
labels:
app: a-app
spec:
hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet
containers:
...

B 的服务 YAML

...
spec:
externalTrafficPolicy: Cluster
type: LoadBalancer
ports:
- port: ...
targetPort: ...
protocol: TCP
name: http
...

背景:

我正在使用 Minio(一种类似于本地 S3 的解决方案),我需要预先签署 URL 以获取和放置对象。 Minio 的 pod 与我的身份验证 pod 在同一集群中运行,后者将生成预签名的 url。预签名的 url 将从集群外部使用。因此我不能用像 minio.svc.cluster.local 这样的集群 dns 名称对 url 进行签名,因为这个 URL 不能从集群外部访问并且用 my-minio 替换主机.com 并保留签名不起作用,因为我猜 minio 签署了整个主机和路径。因此,我需要让我的身份验证 pod 连接到 Minio 面向公众的 my-minio.com 而这似乎不起作用。

最佳答案

关于 hostNetwork,看来您误解了它。将其设置为 true 意味着 Pod 将有权访问其运行所在的主机。在 minikube 的情况下,它是 VM 而不是实际运行容器的主机。

此外,我不确定您如何向外部世界公开您的服务,但我建议您尝试 Ingress为此。

关于docker - 具有 hostNetwork True 的 Kubernetes Pod 无法访问同一集群中服务的外部 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64792961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com