从集群外部访问 Service
1 )概述
- 在前面我们一直实践的是在集群内部访问 Service,之前有2种方法
- 方法1:在一个node节点上,通过对创建的的时候,对port进行一个环境变量的注册
- 来保证Service能够正确对 不同的pod 访问到
- 就是在这个node节点上,也是在集群内部
- 方法2:另外一种方式呢是通过DNS记录
- 比如说静态的pod创建这种专有域名的方式来保证集群内部都能访问到这个pod,这个service
- 但是,有些服务,比如说前端的应用 nginx,它要对集群外部进行服务提供的
- 所以在这种情况下,需要集群提供对外部访问的这种机制
- K8s提供了ClusterIP, NodePort和 LoadBalancer 这三种方式提供集群外部的访问
- ClusterIP
- 仅仅使用一个集群内部的IP地址 - 这是默认值
- 选择这个值意味着你只想这个服务在集群内部才可以被访问到
- 像你创建这个 Service, 默认,它会给你创建一个集群内部的一个IP地址
- 它是一个相当于是一个内网的IP这个IP, 实际上, 外网(公网)它是访问不到的
- 如果你是在内网的话,不推荐用这种方式创建 Service
- NodePort
- 在集群内部IP的基础上,在集群的每一个节点的端口上开放这个服务
- 你可以在任意:NodePort地址上访问到这个服务
- 这里的node指的是 worknode,在这个node上开一个端口,任何在这个端口口的请求
- 它会会被转发到咱们的这个NodePort类型的service上
- 如果是自己实践的话,可以实现这种NodePort类型的方式
- LoadBalancer
- 在使用一个集群内部IP地址和在NodePort上开放一个Service的基础上
- 还可以向云提供者申请一个负载均衡器
- 将流量转发到已经以NodePort形式开发的Service上
- 在公网生产环境使用的时候,推荐是用这个LoadBalancer去负载均衡的方式
- 向云提供商申请一个负载均衡器,然后这个负载均衡器再把流量转发到咱们的集群内部
- 或者NodePort上开个放一个Service, 一般在公有云上上可以用 ELB 服务去构建Service域名
2 )基于NodePort来实践
- 首先还是创建Service, 用于pod的通信
- 之后创建这个deployment,创建deployment之后,它会创建一个nginx中的一个pod
4725



被折叠的 条评论
为什么被折叠?



