Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nginx 向Internet公开Kubernetes群集_Nginx_Kubernetes_Dns - Fatal编程技术网

Nginx 向Internet公开Kubernetes群集

Nginx 向Internet公开Kubernetes群集,nginx,kubernetes,dns,Nginx,Kubernetes,Dns,我已经在我的虚拟机上创建了一个Kubernetes集群,我一直在尝试用我自己的域名将其公开给Internet。我已经创建了一个入口资源,如下所示,并且我还修改了kubelet配置以拥有我的域名。我的所有pod和服务都是用这个域名创建的,例如default.svc.mydomain.xyz root@master-1:~# kubectl get ingress NAME CLASS HOSTS ADDRESS PORTS

我已经在我的虚拟机上创建了一个Kubernetes集群,我一直在尝试用我自己的域名将其公开给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页面中添加一条记录,如下所示,但无法添加

这就是我陷入困境,无法继续前进的地方。我是否需要更改群集中的任何内容以在域DNS配置Hostinger中添加此命名空间,或者更改要在主节点中添加的任何内容

我拥有的域如何将所有流量重定向到我的kubernetes群集

任何帮助都将不胜感激。

您不能像尝试过的那样公开Kubernetes群集

我强烈建议使用不同的Kubernetes解决方案,因为minikube更像是一种试验和开发工具,正如官方网站上所说:

Minikube是一种工具,它使在本地运行Kubernetes变得容易。Minikube在笔记本电脑上的虚拟机VM内运行单节点Kubernetes群集,供希望试用Kubernetes或日常使用它进行开发的用户使用

请查看其他解决方案,如:

当您试图将Kubernetes从您的专用网络公开到Internet时,有几件事需要记住

获取公共知识产权 能够在网络内端口转发流量 允许minikube实例的流量 综合以上所有因素 为什么我认为这是minikube的例子

您有两个网络接口:

纳特 仅主机 使用Virtualbox运行minikube时会创建此接口

获取公共知识产权 获得公共知识产权至关重要。没有它,您将无法向Internet公开您的服务。有一些例外情况,但我不会在这里集中讨论

在DNS面板中,您已经输入了专用IP地址。除非DNS服务器仅用于解析您的专用网络中的本地查询,否则无法执行此操作。要允许其他用户连接到Kubernetes群集,您需要提供公共IP地址 比如94.XXX.XXX.XXX

您可以在此处阅读有关公用和专用ip地址之间差异的更多信息:

能够在网络内端口转发流量 如果您拥有公共IP,您还需要检查传入连接是否未被ISP防火墙或路由器等其他设备阻止。如果它们被阻止,您将无法公开您的服务。要向Internet公开您的服务,您需要使用端口转发

您可以在此处阅读更多信息:

允许minikube实例的流量 正如我前面提到的:当您使用Virtualbox创建minikube实例时,您将创建以下网络接口:

NAT-允许虚拟机访问Internet的接口。此连接不能用于公开您的服务 仅限主机的网络适配器—由主机创建的接口,允许在接口内进行通信。这意味着您的主机和具有此特定适配器的其他vm可以相互连接。它是为内部使用而设计的。 您可以在此处阅读有关Virtualbox网络的更多信息:

我已经设法找到了一个解决方法,允许在笔记本电脑/pc之外连接到minikube实例。您需要在minikube实例的设置中将网络接口从仅主机网络适配器更改为桥接适配器2。这将在另一个设备连接到您的物理网络时起作用。请确保此桥接适配器与以太网NIC一起使用。Minikube应该更改IP地址以匹配物理地址中使用的IP地址

您还需要更改您的.kube/config,因为它的IP地址旧/错误

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

综合以上所有因素 记住上面的信息,让我们假设

您在路由器的WAN接口上有一个关联的公共IP地址,例如94.100.100.100。 您在DNS中创建一条记录,将您的域名指向94.100.100.100。 创建一个从端口80到端口80的端口转发到minikube桥接适配器的IP地址。 之后,您应该能够从外部连接到入口资源

请求将首先联系DNS服务器以获取与域关联的IP地址。然后它将向这个IP地址发送请求,这个IP地址可能是您的路由器。您的路由器将把此连接端口转发到您的minikube实例。

您不能像尝试过的那样公开Kubernetes群集

我强烈建议使用不同的Kubernetes解决方案,因为minikube更像是一种试验和开发工具,正如官方网站上所说:

Minikube是一种工具,它使在本地运行Kubernetes变得容易。Minikube运行单节点Kuber netes群集位于笔记本电脑上的虚拟机VM中,供希望试用Kubernetes或日常使用它进行开发的用户使用

请查看其他解决方案,如:

当您试图将Kubernetes从您的专用网络公开到Internet时,有几件事需要记住

获取公共知识产权 能够在网络内端口转发流量 允许minikube实例的流量 综合以上所有因素 为什么我认为这是minikube的例子

您有两个网络接口:

纳特 仅主机 使用Virtualbox运行minikube时会创建此接口

获取公共知识产权 获得公共知识产权至关重要。没有它,您将无法向Internet公开您的服务。有一些例外情况,但我不会在这里集中讨论

在DNS面板中,您已经输入了专用IP地址。除非DNS服务器仅用于解析您的专用网络中的本地查询,否则无法执行此操作。要允许其他用户连接到Kubernetes群集,您需要提供公共IP地址 比如94.XXX.XXX.XXX

您可以在此处阅读有关公用和专用ip地址之间差异的更多信息:

能够在网络内端口转发流量 如果您拥有公共IP,您还需要检查传入连接是否未被ISP防火墙或路由器等其他设备阻止。如果它们被阻止,您将无法公开您的服务。要向Internet公开您的服务,您需要使用端口转发

您可以在此处阅读更多信息:

允许minikube实例的流量 正如我前面提到的:当您使用Virtualbox创建minikube实例时,您将创建以下网络接口:

NAT-允许虚拟机访问Internet的接口。此连接不能用于公开您的服务 仅限主机的网络适配器—由主机创建的接口,允许在接口内进行通信。这意味着您的主机和具有此特定适配器的其他vm可以相互连接。它是为内部使用而设计的。 您可以在此处阅读有关Virtualbox网络的更多信息:

我已经设法找到了一个解决方法,允许在笔记本电脑/pc之外连接到minikube实例。您需要在minikube实例的设置中将网络接口从仅主机网络适配器更改为桥接适配器2。这将在另一个设备连接到您的物理网络时起作用。请确保此桥接适配器与以太网NIC一起使用。Minikube应该更改IP地址以匹配物理地址中使用的IP地址

您还需要更改您的.kube/config,因为它的IP地址旧/错误

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

综合以上所有因素 记住上面的信息,让我们假设

您在路由器的WAN接口上有一个关联的公共IP地址,例如94.100.100.100。 您在DNS中创建一条记录,将您的域名指向94.100.100.100。 创建一个从端口80到端口80的端口转发到minikube桥接适配器的IP地址。 之后,您应该能够从外部连接到入口资源


请求将首先联系DNS服务器以获取与域关联的IP地址。然后它将向这个IP地址发送请求,这个IP地址可能是您的路由器。您的路由器将端口转发此连接到您的minikube实例。

您想公开Kubernetes API服务器或Kubernetes群集中运行的POD吗?我的群集中有两个应用程序,我创建了一个入口,具有映射到这些应用程序的不同路径。我正在尝试公开这个入口IP,我们可以使用它访问我的所有应用程序。我可能错了。在添加DNS配置作为记录后,我能够通过在主计算机中点击我的域来获得预期的输出。如果我从其他/不同的网络尝试相同的URL,不会得到响应。无法精确访问获取页面。您是否已确保DNS解析在另一个网络端正确进行?请告知安装了Kubernetes的虚拟机的位置。它是Hostinger基础设施中的VM还是本地创建的?其次,如果要将A记录公开到Internet上,则应将其指向群集的公共IP。是否要公开Kubernetes API服务器或运行在Kubernetes群集中的POD?我在群集中有两个应用程序,并创建了一个具有不同路径映射到这些应用程序的入口。我正在尝试公开这个入口IP,我们可以使用它访问我的所有应用程序。我可能错了。在添加DNS配置作为记录后,我能够通过在主计算机中点击我的域来获得预期的输出。如果我从其他/不同的网络尝试相同的URL,而不是
g答复。无法精确访问获取页面。您是否已确保DNS解析在另一个网络端正确进行?请告知安装了Kubernetes的虚拟机的位置。它是Hostinger基础设施中的VM还是本地创建的?其次,如果要将A记录公开到Internet上,则应将其指向群集的公共IP。