如何解决如何将流量从 pysical 服务器的端口路由到 minikube 集群? 替代方案
我想将流量从一个端口通过 kubernetes 集群(使用 minikube)发送到另一个物理端口。我不知道如何将流量从物理端口路由到集群以及从集群路由到第二个物理端口。我通过入口公开集群(我也测试了服务解决方案),我有一个服务将外部流量发送到 pod,另一个服务将流量从第一个 pod 发送到第二个 pod。但是我真的不知道如何将这些流量从端口发送到集群以及如何从集群发送到接收端口...
我的集群在那里描述:How to route test traffic through kubernetes cluster (minikube)?
解决方法
假设:
- 流量需要通过
enp0s6
服务器上的物理Ubuntu
端口进入并发送到Pod
-
Pod
配置了一些能够路由流量的软件。
来自图像的 -
Pod
将接收到的流量路由到同一enp0s5
服务器机器(或更远的线路)上的物理Ubuntu
端口。
这个答案不承认:
- 用于将流量从
Pod
路由到物理端口enp0s5
的软件。
附注!
请考虑输入我在答案中包含的每个链接,因为有很多有用的信息。
Minikube 是一种工具,可在您的机器(PC、笔记本电脑、服务器等)上生成单节点 Kubernetes 集群以用于开发目的。
它使用不同的驱动程序来运行 Kubernetes(它可以部署为 bare-metal
、docker
、virtualbox
、kvm
等)。这允许与主机(Ubuntu
服务器)隔离。这也意味着在此设置的网络部分存在差异。
通过使用 minikube
驱动程序设置 kvm2
,您需要对设置进行一些额外的更改,以便能够将流量从 192.168.0.150
路由到您的 Deployment ( Pods
组)。
假设 Deployment
清单如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
还假设 Service
清单如下:
apiVersion: v1
kind: Service
metadata:
name: nginx-deployment
spec:
type: NodePort
selector:
app: nginx # <-- this needs to match with Deployment matchLabels
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30000
上面示例中 Service
类型的 NodePort
将在端口 Deployment
上的 minikube
实例 (IP) 上公开您的 30000
。
在此特定示例中,Service
(An abstract way to expose an application running on a set of Pods as a network service) 将公开 Pod
实例中的 minikube
和您的主机,但不用于外部访问(就像 192.168.0.0/24
网络中的其他机器一样)。
允许外部流量的选项有:
-
在您的主机上运行(
Ubuntu
服务器):$ kubectl port-forward --address 192.168.0.150 service/nginx-deployment 8000:80
kubectl
将允许您的 Ubuntu
服务器上的端口 8000
上的连接直接转发到 nginx-deployment
服务和固有地转发到您的 Pod
。>
附注!
-
您还可以在您的 PC/笔记本电脑上使用
kubectl port-forward
,这样您就可以将流量从 PC/笔记本电脑端口定向到您的Pod
。 -
--address 192.168.0.150
设置为专门针对enp0s6
。
- 使用操作系统内置的端口转发。
您可以按照以下答案阅读更多相关信息:
以上说明应该可以帮助您将流量直接从 Pod
引导至您的 enp0s6
。将流量从 Pod
发送到您的 enp0s5
接口非常简单。您可以运行(从您的 Pod
):
-
curl 10.0.0.150
(enp0s5
) -
curl 10.0.0.X
(enp0s5
网络中的设备)
替代方案
作为替代方案,您可以尝试在不使用 minikube
的情况下配置自己的 Kubernetes 集群。这将本质上消除隔离层并允许您进行更直接的访问。有很多选项,例如:
我鼓励您查看其他资源,因为 Kubernetes 是一个复杂的解决方案,并且有很多东西有待发现:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。