如何将流量从 pysical 服务器的端口路由到 minikube 集群?

时间:2021-01-24 16:19:08

标签: docker kubernetes kubernetes-ingress minikube kubernetes-pod

我想将流量从一个端口通过 kubernetes 集群(使用 minikube)发送到另一个物理端口。我不知道如何将流量从物理端口路由到集群以及从集群路由到第二个物理端口。我通过入口公开集群(我也测试了服务解决方案),我有一个服务将外部流量发送到 pod,另一个服务将流量从第一个 pod 发送到第二个 pod。但是我真的不知道如何将这些流量从端口发送到集群以及如何从集群发送到接收端口...

我的集群在那里描述:How to route test traffic through kubernetes cluster (minikube)?

1 个答案:

答案 0 :(得分:0)

假设:

  • 流量需要通过enp0s6服务器上的物理 Ubuntu端口进入并发送到Pod
  • Pod 配置了一些能够路由流量的软件。
  • 来自图像的
  • Pod 将接收到的流量路由到同一 enp0s5 服务器机器(或更远的线路)上的物理 Ubuntu 端口。< /li>

Diagram

这个答案不承认:

  • 用于将流量从 Pod 路由到物理端口 enp0s5 的软件。
<块引用>

附注!

请考虑输入我在答案中包含的每个链接,因为有很多有用的信息。


Minikube 是一种工具,可在您的机器(PC、笔记本电脑、服务器等)上生成单节点 Kubernetes 集群以用于开发目的。

它使用不同的驱动程序来运行 Kubernetes(它可以部署为 bare-metaldockervirtualboxkvm 等)。这允许与主机(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.Xenp0s5 网络中的设备)

替代方案

作为替代方案,您可以尝试在不使用 minikube 的情况下配置自己的 Kubernetes 集群。这将本质上消除隔离层并允许您进行更直接的访问。有很多选项,例如:


我鼓励您查看其他资源,因为 Kubernetes 是一个复杂的解决方案,并且有很多东西有待发现: