• kubernetes的服务暴露Service的三种常用类型


    一、kubernetes服务暴露介绍

    1、什么是服务暴露?

    要了解服务暴露,首先需要先知道什么是service,service可以看作是一组提供相同的pod对外的访问接口,借助service可以实现服务发现和负载均衡。服务暴露就是通过clusterIP或nodeport或loadbalancer等方式将pod内部的流量数据可以供外部访问的一种方式
    
    • 1

    2、service的类型?

    service常见的类型有下面四种:
    * Cluster IP : 默认值,是k8s系统给service自动分配的虚拟IP,只能在集群内部访问。
    * NodePort: 将Service通过指定的Node上的端口暴露给外部,访问任意一个NodeIP:NodePort都将路由到Cluster IP
    * LoadBlancer: 与NodePort类似,在每个节点上启动一个端口暴露服务。除此之外,kubernetes会请求底层云平台(如阿里云,腾讯云,AWS等)上的负载均衡器,将每个Node(NodeIP:NodePort)作为后端添加进去
    * ExternalName: 将服务通过DNS Cname记录方式转发到指定的域名(通过spec.externlname设定)

    3、service是实现原理是什么

    Service是由kube-proxy组件,加上iptables来共同实现的
    kube-proxy通过iptable处理service的过程,需要在宿主机上设置相当多的iptables规则,如果宿主机有大量的Pod在不断的刷新iptables规则,会不断的消耗CPU资源。
    IPVS模式的service,可以使k8s集群支持更多量级的pod。
    开启kube-proxy的ipvs模式方法:
    * # yum -y install ipvasdm # 所有节点都安装
    * # kubectl edit cm kube-proxy -n kube-system # 修改ipvs的模式为ipvs
    mode:“ipvs”
    * # kubectl get pod -n kube-system |grep kube-proxy |awk ‘{system(“kubectl delete pod “$1” -n kube-system”)}’
    更新kube-proxy的pod

    4、ingress介绍

    Ingress公开了从集群外部到集群内部服务的HTTP和HTTP路由的规则集合,而具体实现流量路由则是由Ingress Controller负责。
    Ingress:是k8s中的一个抽象资源,给管理员提供一个暴露应用的入口定义方法
    Ingress Controller:根据Ingress生成具体的路由规则,并对Pod负载均衡器
    使用流程是:1、部署INgress Crontroller 2、创建Ingress规则

    二、kubernetes服务暴露三种常见类型的思维导图在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    spring cloud config 占位符 application用法
    使用devstack在单机上安装openstack(stein版本)和zun的踩坑之路
    微服务实战系列之Nacos
    U_BOOT_DRIVER简析
    拥抱变化,面向Java17,Java8-18全系列特性详解
    惠普战99移动工作站: 第十三代英特尔酷睿处理器和惠普一站式AI应用开发方案的完美融合
    PMP每日一练 | 考试不迷路-11.24(包含敏捷+多选)
    提升设计性能的HDL编码方法
    低代码在离散制造业的实践
    开源ESP32智能小车机械臂控制板Baize_Carboard(支持mixly)
  • 原文地址:https://blog.csdn.net/Laiyunpeng666/article/details/126773621