当前位置: 首页 > 知识库问答 >
问题:

库伯内特斯-暴露网站使用nginx入口

殳智志
2023-03-14

我有一个网站在kubernetes集群中运行。我可以在本地访问它,但希望通过internet访问它。(我有一个注册域),但外部IP一直挂起

我按照以下指示工作:https://dev.to/peterj/expose-a-kubernetes-service-on-your-own-custom-domain-52dd

这是服务和入口的代码

kind: Service
apiVersion: v1
metadata:
  name: app-service
spec:
  selector:
    app: website
  ports:
    - name: http
      protocol: TCP
      port: 3000
      targetPort: 3000

---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: app-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  rules:
    - host: www.carina.bernrieder.de
      http:
        paths:
          - path: /
            backend:
              serviceName: app-service
              servicePort: 3000

因此,我正在使用helm安装nginx控制器,但在那之后,Kubectl获取nginx控制器的所有外部IP仍然挂起。

共有2个答案

漆雕原
2023-03-14

正如@Arghya Sadhu提到的,在当地环境中,这是预期的行为。如果您更深入地了解它在云环境中的工作方式,可能会更容易理解。如果您在GKE、EKS或AKS上应用了Ingress资源,那么在“引擎罩下”还会发生一些事情,不必详细说明。将自动创建带有外部IP的负载平衡器,以便入口可以使用它将外部流量转发到部署在kubernetes群集上的POD。

Minikube没有这样的功能,因为它无法调用任何API来创建额外的基础设施资源,就像在云环境中一样。

但让我们从头开始。您在问题中没有提到任何有关外部IP或域配置的内容。如果您的域没有重定向到的外部静态IP,那么它无论如何都不会工作。

关于这一点,我并不完全同意:

您应该能够使用curl访问应用程序www.carina.bernrieder.de

是的,如果您在/etc/host文件中添加以下条目,您将能够通过您的域(实际上是通过您甚至不需要拥有的任何域)访问它,因此DNS将不会被使用,它将根据此本地定义的映射来解决:

172.17.0.15 www.carina.bernrieder.de

正如你可以在这里读到的:

注意:如果您在本地运行Minikube,请使用Minikube ip获取外部ip。入口列表中显示的IP地址将是内部IP。

但请记住,这两个IP都是私有IP。入口列表中显示的是内部集群ip,外部集群ip仅从Minikube集群的角度来看是外部的。它仍然是本地网络中分配给Minikube vm的IP。

正如你在问题中所说,你想让它在互联网上可用。正如你所看到的,如果没有额外的配置,它就没有机会工作。

另一件重要的事。你没有提到Minikube的实际安装位置,所以我猜你是在本地计算机上安装的,很可能你在NAT路由器后面。如果这是你的情况,那么在公共互联网上公开它就不那么容易了。您需要在路由器上配置正确的端口转发规则,当然您需要静态IP,或者您需要配置动态DNS,以便能够通过dynamic public IP访问Internet上的计算机。

Minikube主要设计用于与kubernetes在本地进行游戏,而不是用于生产环境。当然,你可以使用它来运行你的小应用程序,但你可能会考虑将其安装在云环境中的VM或某种VPS服务器上。

邹锦
2023-03-14

在minikube等非云环境中,预计将挂起外部IP。您应该能够使用curl www.carina访问应用程序。伯纳德。de

下面是使用nginx入口在minikube上公开应用程序的指南

 类似资料:
  • 我是整个Kubernetes社区的新手,目前我正在尝试使用Ingress Nginx来暴露仪表板。我试过几种方法,但我找不到一个很好的解释如何暴露仪表板入口。我现在拥有的只是一个仪表板,可以通过“kubectl port forward”访问。我还安装了Ingress Nginx,控制器正在运行。我应该如何开始为kubernetes仪表板创建入口?

  • 所以我已经使用库伯内特斯在Google云上设置了我的应用程序。我有一个Pod,我想从需要TCP请求的集群中公开它。 我通过ingress nginx了解到这是可能的,并对此进行了研究。如本文所述,可以通过如下方式设置configMap来完成: ,但它的完整用法没有明确描述,也没有在文档中找到完整的示例。 我已经安装了《安装指南》中提到的ingress nginx,但我不确定下一步将如何暴露我的Po

  • 我在K8S集群中面临一个奇怪的问题 基本上我有两个应用程序: identity manager(基于WSO2,但该问题与WSO2无关) 将管理X509身份验证的外部SAML2 IDP 为了使用这个外部SAML2 IDP,我配置了WSO2 当我尝试通过X509登录时,WSO2显示登录页面,我单击智能卡,重定向到外部SAML IDP。 在这种情况下,nginx入口为我提供了502个坏网关。如果我复制U

  • 我的公司有一个伪造的CA证书。实例com和一张伪造地图的唱片。实例com连接到我们的负载平衡器的IP 负载平衡器正在将流量转发到我们的Kubernetes群集。 在集群中,我部署了nginx ingress helm图表,在30200处公开了https节点端口 我根据上述证书创建了一个名为test secret的k8s TLS机密。 我部署了一个带有服务“test”的应用程序,并安装了以下入口:

  • 我试图设置Kubernetes入口,将外部http流量路由到前端pod(路径/)和后端pod(路径/rest/*),但我总是得到400错误,而不是主nginx索引。html。 所以我在第https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer页尝试了谷歌库伯内特斯的例子,但我总是得到400个错误。有什么想法吗?

  • 为了在minikube的k8s上运行php fpm应用程序,我缺少一些kubernetes ingress nginx配置。 k8s配置文件: 先前docker开发环境的docker Nginx映像上使用的Nginx服务器工作配置文件(Nginx位于docker中,是与php容器分离的容器): 在浏览器上访问minikube ip时,出现502错误。 我已经安装了运行以下命令的ingress ng