gpt4 book ai didi

nginx - 将Kubernetes集群公开到Internet

转载 作者:行者123 更新时间:2023-12-02 12:11:28 26 4
gpt4 key购买 nike

我已经在虚拟机上创建了一个Kubernetes集群,并且一直在尝试使用自己的域(例如www.mydomain.xyz)将其公开给Internet。我创建了如下所示的入口资源,并且还修改了kubelet配置以拥有我的域名。我所有的Pod和服务均以该域名创建(例如,default.svc.mydomain.xyz)

root@master-1:~# kubectl get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
test-ingress <none> www.mydomain.xyz 192.168.5.11 80 5d20h

root@master-1:~# kubectl get svc -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller LoadBalancer 10.103.59.116 192.168.5.11 443:30740/TCP,80:31894/TCP 6d21h

我试图在我的域DNS页面中添加A记录,如下所示,但无法添加它。
enter image description here
这是我卡住的地方,无法继续进行。我是否需要更改群集中的任何内容以在“域DNS配置”(Hostinger)中添加此 namespace ,还是要在主节点中添加任何内容?
我拥有的域如何将所有流量重定向到我的kubernetes集群?
任何帮助将不胜感激。

最佳答案

您无法像尝试过的那样公开Kubernetes集群。
我强烈建议您使用其他Kubernetes解决方案,因为minikube更像是官方网站上所说的进行实验和开发的工具:

Minikube is a tool that makes it easy to run Kubernetes locally. Minikube runs a single-node Kubernetes cluster inside a Virtual Machine (VM) on your laptop for users looking to try out Kubernetes or develop with it day-to-day.

Kubernetes.io: Learning environment: Minikube


请看看其他解决方案,例如:
  • Kubernetes.io: Production environment: Create cluster kubeadm
  • Github.com: Kubespray
  • Cloud.google.com: Kubernetes Engine
  • Aws.amazon.com: EKS

  • 尝试从专用网络向Internet公开Kubernetes时,您需要记住几件事。
  • 访问公共(public)IP
  • 能够在网络内部移植转发流量
  • 允许访问您的minikube实例
  • 结合以上所有

  • Why do I think it's minikube instance?

    You have 2 network interfaces:

    • NAT
    • Host-only

    This interfaces are getting created when you run your minikube with Virtualbox


    访问公共(public)IP
    获得公共(public)IP至关重要。 如果没有它,您将无法向Internet公开您的服务。 有一些异常(exception)情况,但在这里我将不重点讨论。
    在DNS面板中,您输入了专用IP地址。除非打算将DNS服务器仅解析本地查询(您的专用网络),否则您不能这样做。为了允许其他用户连接到您的Kubernetes集群,您需要提供一个公共(public)IP地址
    94.XXX.XXX.XXX一样。
    您可以在此处详细了解公共(public)IP地址和私有(private)IP地址之间的区别:
  • Help.keenetic.com: What is the difference between a public and private IP address

  • 能够在网络内部移植转发流量
    如果您拥有公共(public)IP,则还需要检查传入的连接是否被其他设备(例如ISP的防火墙或路由器)阻止。 如果它们被阻止,您将无法公开您的服务。 要将服务公开到Internet,您将需要使用“端口转发”。
    你可以在这里读更多关于它的内容:
  • Wikipedia.org: Port forwarding

  • 允许访问您的 minikube实例
    如前所述:使用Virtualbox创建 minikube实例时,将创建以下网络接口(interface):
  • NAT-允许您的VM访问Internet的接口(interface)。此连接不能用于公开您的服务
  • Host-only-network-adapter-由主机创建的接口(interface),允许在接口(interface)内进行通信。这意味着您的主机和具有此特定适配器的其他虚拟机可以相互连接。专为内部使用而设计。

  • 您可以在此处阅读有关Virtualbox网络的更多信息:
  • Virtualbox.org: Virtual Networking

  • 我设法找到了一种 解决方法,以允许您的笔记本电脑/电脑外部连接到 minikube实例。您需要在 minikube实例的设置中将网络接口(interface)从 Host-only-network-adapter 更改为 Bridged Adapter (第二个适配器)。这将在另一个设备连接到您的物理网络时起作用。请确保此桥接适配器与以太网NIC一起使用。 Minikube应该更改IP地址以匹配您的物理IP地址。

    You will also need to change your .kube/config as it will have the old/wrong IP address!


    之后,您应该能够通过物理网络中可访问的IP连接到 Ingress资源。

    结合以上所有
    记住上面的信息,让我们假设。
  • 您在路由器的WAN接口(interface)上具有关联的公共(public)IP地址(例如94.100.100.100)。
  • 您可以在DNS中创建A记录,将您的域名指向94.100.100.100
  • 您将创建一个从端口80到端口80 的端口转发到minikube桥接适配器的IP地址。

  • 之后,您应该可以从外部连接到 Ingress资源。
    该请求将首先联系DNS服务器以获取与域关联的IP地址。然后它将请求发送到该IP地址(大概是您的路由器)。您的路由器会将此连接移植到 minikube实例。

    关于nginx - 将Kubernetes集群公开到Internet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62559281/

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