当前位置: 首页 > ds >正文

k8s service的类型

service和Pods

        service通过使用labels指向pods,而不是指向deployments或者replicasets。这种设计的灵活性极高,因为创建pods的方式有很多,而Service不需要关心pods通过那种方式创建

        

不使用service(首先看不使用service的情况)

        如下图,有两个node和一个pod,两个node分别使用外部IP地址(10.10.10.1)和(10.10.10.2)以及内部IP地址(1.1.1.1和1.1.1.2),而名为pod-mysql的pod只有一个内部IP地址

         

如下图,现在我们添加第二名为pod-nginx的pod,它被调度到了node1上。虽然两个pod在不同的node上,但这不影响它们互相访问。在kubernetes集群中,所有的pod都可以通过内部IP地址访问其他的pod,不管它们运行在那个node上。这就意味着pod-nginx能通过内部IP地址1.1.1.3ping或者连接pod-mysql

 

如上图,现在我们考虑将pod-mysql杀死并重建一个新pod.操作完成之后,pod-nginx就无法继续访问IP地址1.1.1.3,这样系统就中断崩溃了。为了避免这种问题,我们来创建第一类service!

Cluster IP类型

        与上述场景一样,但这次我们配置一个Cluster IP类型service。service不像pod会调度到特定的node上,在本文中你可以假定service仅在整个集群的内存中生效

现在,pod-nginx总是能够安全地连接IP地址1.1.10.1或者域名service-mysql,然后重定向到一个活跃地mysql pod上。

NodePort类型

        现在我们想让Cluster IP类型的service在集群外部也能够使用,所有将其转换成NodePort类型的service。

        如下图所示,现在我们集群内部service-mysql也能通过所有node的内部以及外部IP地址和端口30080访问

        

如下图所示,集群内部的pod也能访问node的内部IP地址和端口30080

 LoadBalancer类型

        当我们想通过一个IP地址将请求分发到所有node节点的外部IP地址时,可以使用LoadBalancer类型的service。因此,它是构建于NodePort类型的service之上,如下图所示

 ExternalName类型

        ExternalName类型的service,它可以被认为是有点分开的,和之前介绍的3种不在一个技术栈。简而言之,它创建了一个内部服务,端点指向一个DNS域名

        现在假设pod-nginx以及迁移到新的kubernetes集群,但mysql服务还在外部

        

如下图所示,pod-nginx可以直接连接http://remote.server.url.com,这样是没有问题的。但不久之后,我们想将mysql服务也迁移到新的集群中,到时就会出问题了,因此我们可以创建一个ExternalName类型的service 

     

现在,pod-nginx可以简单地与http://service-mysql:80建立连接,就像使用Cluster IP类型地service一样。当最终我们绝对将mysql服务迁移到新的Kubernetes集群中时,我们只需要将service的类型改成Cluster IP并使用对应的labels配置即可

 

  使用ExternalName类型service的最大好处在于,你可以先建设好kubernetes集群基础设施,并且基于service和IP地址设定好规则和限制,尽管有些服务依然存在于集群外部。

 

 

 

http://www.xdnf.cn/news/4377.html

相关文章:

  • 如何选择 边缘计算服务器
  • HPE推出零信任网络与私有云运维解决方案
  • javaweb-Filter
  • 黄金量化:高频实时的贵金属API
  • Python实现NOA星雀优化算法优化Catboost回归模型项目实战
  • 京东(JD)API 商品详情数据接口讲解及 JSON 示例
  • el-row el-col
  • 【基于SSM+Vue+Mysql】健身房俱乐部管理系统(附源码+数据库脚本)
  • 大模型系列(三)--- GPT1论文研读
  • ETL交通行业案例丨某大型铁路运输集团ETL数据集成实践
  • shell-流程控制-循环-函数
  • Spring Boot操作MongoDB的完整示例大全
  • 4.29 tag的完整实现和登录页面的初步搭建
  • 【Pandas】pandas DataFrame agg
  • 优化算法 - intro
  • window 显示驱动开发-线程和同步级别为零级
  • Git仓库基本操作
  • Spark 的 Shuffle 机制:原理与源码详解
  • 内网im软件,支持企业云盘的协同办公软件推荐
  • 【ES】Elasticsearch字段映射冲突问题分析与解决
  • JAVA设计模式——(十二)原型模式(Prototype Pattern)
  • [ linux-系统 ] 常见指令2
  • 二、Hadoop狭义和广义的理解
  • STM32教程:串口USART通讯协议原理及分析(基于STM32F103C8T6最小系统板标准库开发)*详细教程*
  • AI Agent 入门指南:从 LLM 到智能体
  • 【能力比对】数据质量管理VS数据质量平台
  • python打卡day17
  • 并发设计模式实战系列(16):屏障(Barrier)
  • BIO(Blocking I/O)、NIO(Non-blocking I/O)和 AIO(Asynchronous I/O)
  • Super-vlan