gpt4 book ai didi

centos - Kubernetes 外部访问容器中的应用程序

转载 作者:行者123 更新时间:2023-12-04 19:32:49 26 4
gpt4 key购买 nike

我在 Digital Ocean 上的集群上使用 kubernates。

我在 Pod 的容器内有应用程序。我需要与此应用程序建立外部连接。我需要访问具体实例(因为我有超过 10 个使用此应用程序的 Pod)。

所以,我的问题是:我怎样才能对这个应用程序进行外部访问。

例如我有公共(public) IP 192.168.9.9

并有 2 个带有实例的 pod。第一个监听端口 8990,它的 Pod IP 是 10.0.0.1,第二个监听端口 8991,它的 Pod IP 是 10.0.0.1。

所以,我需要将流量从 192.168.9.9:8990 重定向到 10.0.0.1:8990 和 192.168.9.9:8991 到 10.0.0.1:8991。

是的,我可以通过手动使用 iptables 来做到这一点。但我想自动完成。当新 Pod 启动时,我想在 iptables 中进行记录。

我可以使用 api 监视服务:

127.0.0.1:8080/api/v1beta1/watch/services

并且可以在这里获取 pod 的 ip:
127.0.0.1:8080/api/v1beta1/pods

我找到了与我的需求类似的解决方案 here .但这看起来像是糟糕的架构决策。在新 Pod 启动后自动将外部流量重定向到 pod 是否更好?

最佳答案

如果您的公共(public) ip 配置在您的一个仆从的接口(interface)上,那么您需要做的就是设置 publicIPs服务描述中的值(value)。例如,如果您定义这样的服务:

kind: Service
apiVersion: v1beta1
id: test-web
port: 8888
selector:
name: test-web
containerPort: 80
publicIPs:
- 192.168.1.43

然后 Kubernetes 会像这样创建 iptables 规则:
-A KUBE-PORTALS-CONTAINER -d 192.168.1.43/32 -p tcp -m comment --comment test-web -m tcp --dport 8888 -j REDIRECT --to-ports 38541
-A KUBE-PORTALS-HOST -d 192.168.1.43/32 -p tcp -m comment --comment test-web -m tcp --dport 8888 -j DNAT --to-destination 192.168.1.20:38541

这些规则将流量重定向到您的 publicIP和端口到本地 kube-proxy 维护的适当端口实例。我只写了 kiwi (很抱歉你不喜欢它!)提供一种动态分配公共(public) IP 地址的机制。只要您不介意在接口(interface)上预先配置地址,您就应该做好准备。

关于centos - Kubernetes 外部访问容器中的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29047599/

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