【问题标题】:Expose existing and deployed Kubernetes service via LoadBalancer通过 LoadBalancer 公开现有和部署的 Kubernetes 服务
【发布时间】:2016-12-22 05:52:03
【问题描述】:

我已经在 Kubernetes 集群中部署了一个 Service,它看起来像这样:

$ kubectl get svc my-service
NAME               CLUSTER_IP       EXTERNAL_IP   PORT(S)    SELECTOR                AGE
my-service         192.168.202.23   <none>        8080/TCP   name=my-service         38d

YAML 配置的规范部分如下所示:

"spec": {
        "ports": [
            {
                "name": "http-port",
                "protocol": "TCP",
                "port": 8080,
                "targetPort": 8080
            }
        ],
        "selector": {
            "name": "my-service"
        },
        "clusterIP": "192.168.202.23",
        "type": "ClusterIP",
        "sessionAffinity": "None"
    },
    "status": {
        "loadBalancer": {}
    }
}

现在,我想使用 LoadBalancer 公开此服务以供外部访问。使用 kubectl expose service 会出现如下错误:

$ kubectl expose service my-service --type="LoadBalancer"
Error from server: services "my-service" already exists

是否无法“编辑”现有的已部署服务并使其可供外部访问?

【问题讨论】:

    标签: service kubernetes


    【解决方案1】:

    除了 Anirudh 答案(正确答案)...考虑以下内容。

    ServiceType 字段的有效值为:

    • ClusterIP:仅使用集群内部 IP - 这是默认设置,上面已经讨论过了。 选择此值意味着您希望此服务只能从集群内部访问

    • NodePort:在拥有集群内部 IP 的基础上,在集群的每个节点上的端口(每个节点上的相同端口)上公开服务。您将能够通过任何 :NodePort 地址联系该服务。 这意味着您将节点端口转发到暴露的容器端口。问题,这些端口应该在集群中的每个节点上都可以外部访问。

    • LoadBalancer:除了拥有集群内部 IP 和在 NodePort 上公开服务之外,还向云提供商询问负载平衡器,该负载平衡器转发到作为每个节点的 :NodePort 公开的服务 LoadBalancer 类型在云提供商上创建一个外部负载均衡器。

      对外部负载平衡器的支持因供应商而异,实施也因供应商而异。支持 GCE 和 AWS(不确定现在是否有其他云提供商支持),但如果您想在自己的基础设施中安装它,您需要安装 HAPROXY 或 ngnix 容器(或类似容器)以平衡您的流量,此功能不适合你。

    【讨论】:

    • 谢谢! @ferradinand
    【解决方案2】:

    您创建的服务类型为ClusterIP,在集群外不可见。如果您编辑服务并将type 字段更改为NodePortLoadBalancer,则会公开它。

    关于这些服务类型是什么以及它们的含义的文档位于: http://kubernetes.io/docs/user-guide/services/#publishing-services---service-types

    【讨论】:

    • 我正在使用 gcloud 平台 - 我遇到了这个问题。当我遵循您的回答时-它有效。但由于某种原因,外部 IP 拒绝连接。知道为什么吗?
    猜你喜欢
    • 2023-02-10
    • 2020-01-31
    • 2020-04-11
    • 2021-03-16
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    • 2022-01-23
    • 2019-05-06
    相关资源
    最近更新 更多