首页>>帮助中心>>云服务器k8s中service和ingress的区别

云服务器k8s中service和ingress的区别

2024/5/13 298次
    k8s中service和ingress的区别  


    serivce是如何被设计的:  

 在pod中运行的容器在动态,弹性的变化(比如容器的重启IP地址会变化),为了给pod提供一个固定

 的,统一访问的接口,以及负载均衡的能力,并借助DNS系统实现服务发现功能,解决客户端发现容器

 难的问题,于是变设计了service

    service 和pod对象的IP地址,在集群内部可达,但集群外部用户无法接入服务,解决的思路有:  

 1. node pod端口上做端口暴露

 2. 在工作节点上用公用网络名称空间(hostname)

 3. 使用service的nodeport或者loadbalancer

 4. ingress七层负载和反向代理资源。

 service 提供pod的负载均衡的能力,但只在4层有负载,而没有功能,只能到IP层面。

    service的几种类型:  

 clusetr IP: 默认类型,自动分配一个仅可以在内部访问的虚拟IP,仅供内部访问

 nodeport: 在clusterip的基础上,为集群内的每台物理机绑定一个端口,外网通过任意节点的物

 理机IP来访问服务,应用方式: 外服访问服务

 loadbalance: 在nodeport的基础上,提供外部负载均衡与外网统一IP,此IP可以将讲求转发到对

 应的服务上。 应用方式: 外服访问服务

 externalname : 引用集群外的服务,可以在集群内部通过别名的方式访问。

    ingress:  

 service 只能提供四层的负载,虽然可以通过nodeport的方式来服务,但随着服务的增多,会在物理机

 上开辟太多的端口,不便于管理,所以ingress换了思路来暴露服务

 创建一个具有n个副本的nginx服务,在nginx服务内配置各个服务的域名与集群内部的服务的ip,这些

 nginx服务在通过nodeport的方式来暴露,外部服务可以通过域名:nginx nodeport端口来访问

 nginx,nignx在通过域名反向代理到真实的服务器。

 ingress分为ingress controller和ingress 配置