【问题标题】:Kubernetes service doesn't expose external portKubernetes 服务不暴露外部端口
【发布时间】:2019-12-30 09:49:38
【问题描述】:

我正在尝试在 Kubernetes 上本地托管我的第一个 dotnet 核心应用程序。

一切正常但是当我尝试使用 z_service.yml 文件创建服务时,它不会公开端口 8099 以便在浏览器中从外部访问它

$> kubectl apply -f .\z_service.yml
service/amazing-app-service created

但是,如果我运行 $> kubectl port-forward amazing-app 8099:80 命令,那么它可以工作,我可以使用 http://localhost:8099/ 在浏览器中访问 Web 应用程序

这就是服务仪表板的样子

以及服务状态

我在这里缺少任何配置吗?

【问题讨论】:

  • 您能否在问题中包含z_service.yml 的内容?
  • 您可以尝试使用LoadBalancer类型的服务。
  • @CharlesXu ,怎么用?
  • 你想在 Minikube 中运行它吗?
  • 更改服务以设置type with value LoadBalancer`,然后它看起来像type: LoadBalancer

标签: .net kubernetes kubectl


【解决方案1】:

我看到它是NodePort 为您服务amazing-app-service。当您想要将服务公开到 Internet 时。您应该为服务使用LoadBalancer 类型。就像:

type: LoadBalancer

【讨论】:

    【解决方案2】:

    在 Kubernetes 中,服务是通过本地网络绑定 pod 的抽象层。 如果您需要从外部访问您的应用程序,最好的方法之一是使用ingress object

    【讨论】:

    • 我有一个愚蠢的问题:来自here,我看到有多种方法可以允许外部访问服务。我可以理解为什么 LoadBalancer 或入口会起作用,但为什么 他现有的 NodePort ip 起作用?
    • 还有一点需要注意的是 External-IP is ,这是正确的行为吗?
    • @Kundan,在你的情况下,外部 IP 没问题。像 Google Kubernetes Engine 或 Amazon Web Services 这样的云提供商使用 External-IP 创建 Kubernetes 集群。
    • @mmking,我不确定我是否正确理解了这个问题,但 NodePort 仅适用于本地网络(适用于 k8s)。 LoadBalancer 和 Ingress 使本地网络 k8s 可用于外部网络
    猜你喜欢
    • 2020-02-22
    • 2020-10-21
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 2016-03-25
    相关资源
    最近更新 更多