繁体   English   中英

Kubernetes - 使用 nginx-ingress 公开网站

[英]Kubernetes - Expose Website using nginx-ingress

我有一个在 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-controller,但在那之后Kubectl 获取nginx 控制器的所有外部 IP 保持挂起。

EXTERNAL-IP预计在 minikube 等非云环境中待定。 您应该能够使用curl www.carina.bernrieder.de访问该应用程序

下面是指南上使用nginx的入口暴露于minikube的应用

正如@Arghya Sadhu 提到的,在当地环境中,这是预期的行为。 当您更深入地了解它在云环境中的工作方式时,也许会更容易理解。 无需赘述,如果您在GKEEKSAKS上应用Ingress资源,则会在“幕后”发生更多事情。 与外部IP负载均衡器会自动创建这样的入口可以使用它的外部流量转发到Pods部署在kubernetes集群上。

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

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

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

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

是的,只要您在/etc/hosts文件中添加以下条目,您就可以通过您的域(实际上是通过您甚至不需要拥有的任何域)访问它,这样 DNS 就不会被使用,它会根据这个本地定义的映射来解析:

172.17.0.15 www.carina.bernrieder.de

正如你可以在这里阅读:

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

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

正如您在问题中所说,您希望通过 Internet 提供它。 正如您所看到的,如果没有额外的配置,它就没有机会工作。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM