Kubernetes副本集使内部端点外部?

时间:2018-04-23 02:09:48

标签: kubernetes

我正在将docker-compose文件转换为k8s。我使用k8s kompose程序自动生成服务。

在原始泊坞窗设置端口80和443上曝光。

我可以看到我的k8s对象中引用的服务端口:

"containers": [
  {
    "name": "router",
    "image": "myApp/router:latest",
    "ports": [
      {
        "containerPort": 80,
        "protocol": "TCP"
      },
      {
        "containerPort": 443,
        "protocol": "TCP"
      }
    ],

当我从UI看时,我可以看到端口对于pod是正确的,但服务副本集显示了这一点:

enter image description here

如何在副本集外部打开端口?

1 个答案:

答案 0 :(得分:1)

在Kubernetes中,您有多种方法可以公开您的服务:

  1. 直接暴露Pod的端口。
  2. ServiceNodePortLoadBalancer类型一起使用。这是推荐的方式,它适用于L4。

    对于LoadBalancer,您需要一个负载均衡器本身的外部提供商,因此它仅适用于云和其他一些环境。如果您在自己的硬件上安装了内部部署,则应使用NodePort类型。

  3. 使用Ingress。这也是一种推荐的方式,但它适用于L7。
  4. 您可以使用您喜欢的选项,具体取决于您的应用程序。

    现在,您的应用仅在群集中公开,因为默认情况下,Pod仅适用于其他Pod(就像在没有Expose选项的docker-compose中一样)。

    以下是文章about how to define a ServiceIngresshow to use Service来展示您的应用。