k8s 中的服务类型

        对一些应用的某些部分(如前端),可能希望将其暴露给 Kubernetes 集群外部 的 IP 地址。Kubernetes ServiceTypes 允许指定你所需要的 Service 类型,默认是 ClusterIP。

        Type 的取值以及行为如下:

        ClusterIP:通过集群的内部 IP 暴露服务,选择该值时服务只能够在集群内部访问。 这也是默认的 ServiceType。

        NodePort:通过每个节点上的 IP 和静态端口(NodePort)暴露服务。 NodePort 服务会路由到自动创建的 ClusterIP 服务。 通过请求 <节点 IP>:<节点端口>,你可以从集群的外部访问一个 NodePort 服务。

        LoadBalancer:使用云提供商的负载均衡器向外部暴露服务。 外部负载均衡器可以将流量路由到自动创建的 NodePort 服务和 ClusterIP 服务上。

        ExternalName:通过返回一个 CNAME 记录和对应值,可以将服务映射到 externalName 字段的内容(例如,foo.bar.example.com)。 无需创建任何类型代理。(注意: 你需要使用 kube-dns 1.7 及以上版本或者 CoreDNS 0.0.8 及以上版本才能使用 ExternalName 类型。)

        你也可以使用 Ingress 来暴露自己的服务。 Ingress 不是一种服务类型,但它充当集群的入口点。 它可以将路由规则整合到一个资源中,因为它可以在同一IP地址下暴露多个服务。

Kubernetes (k8s) ,`LoadBalancer` 类型的服务是为了使集群内部的服务暴露到外部网络环境,通常是通过云提供商的外部负载均衡器来实现的[^2]。由于k8s默认不包括对本地或非云环境的负载均衡的支持,因此在裸机或自建环境使用`LoadBalancer` 服务需要额外配置。 1. **设置Service**: 创建一个`LoadBalancer`类型Service,需要在`spec`字段指定`type: LoadBalancer`。例如: ```yaml apiVersion: v1 kind: Service metadata: name: my-load-balancer-service spec: type: LoadBalancer ports: - port: 80 targetPort: 8080 selector: app: MyApp ``` 2. **云平台配置**: 对于AWS, 阿里云, 华为云等支持的云环境,服务创建后,需要在相应的云控制台配置负载均衡器。这通常涉及到创建一个新的外网负载均衡实例,并将Service的`loadBalancerIP`或`loadBalancerDNS`指向该实例。 3. **等待外部访问**: 负载均衡器创建完成后,会分配一个公共IP地址,通过这个地址可以从互联网访问到服务。然而,这一步通常由云提供商自动完成,并可能需要一段时间。 4. **验证服务**: 可以使用`kubectl get services`命令查看服务状态,确认`LoadBalancer`部分是否显示了外部IP地址。 需要注意的是,如果没有云平台支持的负载均衡功能,`LoadBalancer`服务将无法正常工作,仅能用于云环境部署的k8s集群。如果在本地环境,应选择其他如`ClusterIP` 或 `NodePort` 的服务类型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值