k8s-4:暴露服务的三种方式

本文介绍了Kubernetes对外提供服务的三种方式:NodePort、LoadBalancer和Ingress。NodePort在每个节点上开启端口转发流量;LoadBalancer通过云负载均衡器提供外部访问;Ingress则通过统一入口路由到多个服务,实现更灵活的访问控制。Ingress包括Ingress资源和IngressController,动态管理服务路由。
摘要由CSDN通过智能技术生成

        前面说的k8s的网络分为三种:cluster、node和pod ip,那k8s是怎样使用这三种网络对外提供服务的?有些图片是人家的借来用用,省的自己画。

k8s对外暴露服务的方式有三种:

NodePort
        将服务的类型设置成NodePort-每个集群节点都会在节点上打 开 一个端口, 对于NodePort服务, 每个集群节点在节点本身(因此得名叫NodePort)上打开一个端口,并将在该端口上接收到的流量重定向到基础服务。该服务仅在内部集群 IP 和端口上才可访间, 但也可通过所有节点上的专用端口访问。

        在k8s上可以给Service设置成NodePort类型,这样的话可以让Kubernetes在其所有节点上开放一个端口给外部访问(所有节点上都使用相同的端口号), 并将传入的连接转发给作为Service服务对象的pod。这样我们的pod就可以被外部请求访问到,但是问题是每个节点都得开端口,一旦服务多了,端口管理会比较麻烦,而且某个节点如果没有运行的service的时候会怎样?


LoadBalane
        将服务的类型设置成LoadBalance, NodePort类型的一 种扩展,这使得服务可以通过一个专用的负载均衡器来访问, 这是由Kubernetes中正在运行的云基础设施提供的。 负载均衡器将流量重定向到跨所有节点的节点端口。客户端通过负载均衡器的 IP 连接到服务。注意这是NodePort的升级方案,只是在其基础上加上了负载均衡,也就是说对于节点而言,它还是需要添加service端口的只是它不是直接用nodeip对外提供服务,而是用辅助均衡器的统一ip对外提供服务。


Ingress
        创建一 个Ingress资源, 这是一 个完全不同的机制, 通过一 个IP地址公开多个服务,就是一个网关入口,和springcloud的网关zuul、gateway类似,这个也是我们公司在用的。

        这个ingress(通常我们称为ingress网关)可以根据服务前缀找到服务并有service路由来控制访问pod,就不需要在每个节点上都启端口,这个就像我们的nginx,同一个端口监听,然后按照服务前缀做路由转发到service。

        ingress包含两个组件:ingress和ingress controller。

        ingress可以理解为就是nginx的配置我们这里叫他ingress-nginx,可以让用户配置不同的域名、前缀等来对应service,只不过在k8s中这个被抽象出来用yml来创建和更新。

        上面说的ingress-nginx可以让你配置,那么配置了怎样才生效就需要ingress controller。        

        Ingress Controoler 通过与 Kubernetes API 交互,动态的去感知集群中 Ingress 规则变化,然后读取他,按照他自己模板生成一段 Nginx 配置,再写到 Nginx Pod 里,最后 reload 一下。但是对外的统一地址需要我们自己去实现,ingress只能是从某一个node往下做到动态分发,上层的我们可以借助LoadBalance来实现。

        

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值