首页 > 其他分享 >Kubernetes--服务暴露 Service类型

Kubernetes--服务暴露 Service类型

时间:2022-10-05 10:22:45浏览次数:81  
标签:Kubernetes Service -- ClusterIP 集群 NodePort 类型 外部

 

 

Service的IP地址仅在集群内可达,然而,总会有些服务需要暴露到外部网络中接受各类服务端的访问,例如分层架构应用中的前端Web应用程序等。此时,就需要在集群的边缘为其添加一层转发机制,以实现将外部请求流量接入到集群的Service资源之上,这种操作也称为发布服务到外部网络中。

Service类型

Kubernetes的Service共有四种类型:ClusterIP、NodePort、LoadBalancer和ExternalName。


  • ClusterIP:通过集群内部IP地址暴露服务,此地址仅在集群内部可达,而无法被集群外部的客户端访问。

  • NodePort:这种类型建立在ClusterIP类型之上,其在每个节点的IP地址的某静态端口(NodePort)暴露服务,因此,他依然会为Service分配集群IP地址,并将此作为NodePort的路由目标。简单来说,NodePort类型就是在工作节点的IP地址上选择一个端口用于将集群外部的用户请求转发至目标Service的ClusterIP和Port,因此,这种类型的Service既可如ClusterIP一样受到集群内部客户端Pod访问,也会受到集群外部客户端通过套接字:进行的请求。

  • LoadBalancer:这种类型建构在NodePort类型之上,其通过cloud provider提供的负载均衡器将服务暴露到集群外部,因此LoadBalancer一样具有NodePort和ClusterIP。简而言之呢就是一个LoadBalancer类型的Service会指向关联至Kubernetes集群外部的、切实存在的某个负载均衡设备,该设备通过工作节点之上的NodePort向集群内部发送请求流量。

    此类型的优势在于,它能够把来自于集群外部客户端的请求调度至所有节点(或部分节点)的NodePort之上,而不是依赖于客户端自行决定连接至哪个节点,从而避免了因客户端指定的节点故障而导致的服务不可用。


ExternalName:其通过将Service映射至由externalName字段的内容指定的主机名来暴露服务,此主机名需要被DNS服务解析至CNAME类型的记录。换言之~此种类型并非定义由Kubernetes集群提供的服务,而是把集群外部的某服务以DNS CNAME记录的方式映射到集群内,从而让集群内的Pod资源能够访问外部的Service的一种实现方式。因此,这种类型的Service没有ClusterIP和NodePort,也没有标签选择器用于选择Pod资源,因此也不会有Endpoints存在。

在前面文章中Kubernetes--Service资源的基础应用创建的myapp-svc即为默认的ClusterIP类型Service资源,它仅能接受来自于集群中的Pod对象中的客户端程序的访问请求。如若需要将Service资源发布至网络外部,应该将其配置为NodePort或LoadBalancer类型的Service资源,而若要把外部的服务发布于集群内容供Pod对象使用,则需要定义一个ExternalName类型的Service资源。【如若使用kube-dns,那么这种类型的实现将依赖于1.7及其以上版本的Kubernetes版本。】

标签:Kubernetes,Service,--,ClusterIP,集群,NodePort,类型,外部
From: https://www.cnblogs.com/zhangxin9/p/16755153.html

相关文章

  • jvm 调优常用参数
    -Xms50M  最小堆内存-Xmx50M  最大堆内存-XX:+UseG1GC使用G1垃圾收集器-XX:MaxGCPauseMillis=6最大停顿时间毫秒-XX:+PrintGCDetails 打印GC日志-XX:ConcGCThrea......
  • Django使用uwsgi部署教程
     一直想用uwsgi部署Django,因为uwsgi性能更好而且可以多进程跑(pythonmanager.pyrunserver是单进程)。但在windows开发机上实验的时候死活装不了uwsgi(有人说可以......
  • 最简单的链表实现
    输入数字并输出的链#include<iostream>#include<stdlib.h>usingnamespacestd;​structNode{intdata;structNode*next;};​intmain(){intnum;cin>......
  • 手动创建kafka生产者,消费者
    pom.xml<dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><exclusions>......
  • 说说你对Vue的keep-alive的理解
    什么是keep-alive在平常开发中,有部分组件没有必要多次初始化,这时,我们需要将组件进行持久化,使组件的状态维持不变,在下一次展示时,也不会进行重新初始化组件。也就是说,keep......
  • SQL语句的执行顺序
    原文链接:https://blog.csdn.net/weixin_37646636/article/details/121459732(8)SELECT(9)DISTINCT(11)(1)FROM(3)JOIN(2)ON(4)WHERE(5)GROUPBY(6)WITH{CUBE|......
  • 表的理解、SQL语句
    什么是表数据库中最基本的单元是表:table数据库当中是以表格的形式表示数据的,因为表比较直观任何一张表都有行和列:行(row):被称为数据/记录列(column):被称为字段姓名字段......
  • docker相关学习
    https://www.runoob.com/docker/docker-tutorial.html安装docker文档地址教程地址https://www.cnblogs.com/stormlong/p/10863061.htmlhttps://www.jb51.net/article/......
  • 分清国内版FireFox和国际版FireFox
    FireFox现在成为越来越多人替代Chrome的选择。但与Chrome不同的是,FireFox无论桌面端还是移动端,都有着『国际』和『国内』版本的区分。二、正确的下载地址2.1国内版的混淆......
  • WebPack5 处理图片资源
    过去在Webpack4时,我们处理图片资源通过 file-loader 和 url-loader 进行处理现在Webpack5已经将两个Loader功能内置到Webpack里了,我们只需要简单配置即可处理......