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

【Kubernetes】服务(Service)是什么?有什么用?有哪些类型?

系列文章目录

K8s中的Namespace是什么?
Kubernetes 集群的组件介绍
Kubernetes 对象是什么?
Pod——k8s中最重要的对象之一
Kubernetes 和 Docker 之间有什么区别?
部署安装 K8s 为什么要关闭 swap 分区?
k8s中容器之间、pod之间如何进行网络通信?
从不同的角度理解静态Pod和动态/普通Pod的区别


本篇目录

  • 系列文章目录
  • 什么是Service?
  • 为什么要有Service?
  • Service类型有哪些?
  • 如何定义 Service?


什么是Service?

Kubernetes 中的 Service 是一组Pod集合的抽象,能够将Pod 集合在网络上公开出去。我们可以使用 Service 让一组 Pod 可在网络上访问,这样客户端就能与之交互。在这种情况下,在集群内外部访问Pod时并不是直接接触Pod,而是通过Service。Service也是K8s里的资源对象。在创建的时候要定义端点集合(所谓端点集合就是Pod集合,也就是这个Service代表了哪些Pod),并且还要定义策略来决定如何访问到这些Pod。


为什么要有Service?

Pod是动态的,是临时资源,它不可靠也不耐用。每个Pod都有自己的IP地址,哪怕一个Pod“重启”了,它的IP也会发生变化。所以我们不希望前端客户端直接和每个Pod单独通讯,这样的通讯是不可靠的。

所以就提出了Service抽象。Service对象创建后,Kubernetes会为它分配一个IP地址,这个IP地址比较持久,不会轻易改变,前端只需要知道这个Service的IP地址就可以了,然后Service会将传过来的流量转发到它代表的Pod集合中的一个或一些Pod上去。


Service类型有哪些?

  • ClusterIP

    Service的默认类型就是ClusterIP。也就是通过集群的内部 IP 公开 Service,选择该值时 Service 只能够在集群内部访问

  • NodePort

    这种类型是通过 每个节点上的IP和特定的静态端口(NodePort) 来公开Service。也就是说每个节点会将这个端口(每个节点上的相同端口号)上的流量代理到所创建的 Service。这样通过合适的协议和分配给该Service的端口连接到任何一个节点,我们都能从集群外部访问NodePort类型的Service·。

  • LoadBalancer

    在使用支持外部负载均衡器的云平台时,如果将 type 设置为 "LoadBalancer", 则平台会为 Service 提供负载均衡器

  • ExternalName

    类型为 ExternalName 的 Service 将 Service 映射到 DNS 名称,而不是典型的选择算符。


如何定义 Service?

Service是Kubernetes中的一个对象,可以使用 Kubernetes API 创建、查看或修改 Service 定义。

例如,假定有一组 Pod,每个 Pod 都在侦听 TCP 端口 9376,并且它们还被打上 app.kubernetes.io/name=MyApp 标签。我们就可以定义一个 Service 来发布该 TCP 侦听器:

apiVersion: v1
kind: Service
metadata:name: my-service
spec:selector:app.kubernetes.io/name: MyAppports:- protocol: TCPport: 80targetPort: 9376

应用上述清单时,系统将创建一个名为 “my-service” 的、 服务类型默认为 ClusterIP 的 Service。 该 Service 指向带有标签 app.kubernetes.io/name: MyApp 的所有 Pod 的 TCP 端口 9376。

需要解释的是,清单里的port指的是暴露给客户端的端口,外部的流量从port端口经过kube-proxy流入到后端pod的targetPort上,最后进入容器

http://www.lryc.cn/news/308088.html

相关文章:

  • 【前端素材】推荐优质后台管理系统DAdmin平台模板(附源码)
  • Redis高级特性详解:事务处理、发布订阅、持久化和集群
  • nwjs做自动化测试
  • 【前端素材】推荐优质在线特殊品牌商城电商网页eStore平台模板(附源码)
  • Redis之一: 简介及环境安装搭建
  • 关于电脑一天24小时多少度电电脑的一天用电量计算
  • Unity3D 物理引擎的基本配置详解
  • CSS:弹性盒子Flexible Box布局
  • java常用环境docker安装
  • Code-Audit(代码审计)习题记录6-7
  • go 的使用总结
  • 无线水电表智能化管理系统
  • 发掘效率黑科技:Allure报告助您事半功倍提升测试效能!
  • Spring Web 过滤器使用常见错误(上)
  • 【数据结构】周末作业
  • java 企业培训管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目
  • 在SAP HANA中使用OData(二)
  • 【Docker】前端基于dockerfiel构建镜像部署,实现在容器启动时传递环境变量, 请求不同服务地址
  • 评估测试接口软件与网站的使用方法及优劣势比较
  • 【Qt学习】QLineEdit 控件 属性与实例(登录界面,验证密码,正则表达式)
  • Spring Boot 和 Spring Cloud: 区别与联系
  • 9.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-接管游戏连接服务器的操作
  • vue - - - - - vue3使用draggable拖拽组件
  • PHP语言常见面试题:请解释一下PHP是什么,以及它的主要用途是什么?
  • Unity(第六部)向量的理解和算法
  • TypeScript+React Web应用开发实战
  • android开发电子书,android基础编程
  • 2024-02-25 Unity 编辑器开发之编辑器拓展6 —— Event
  • DC-DC降压芯片用于直流充电桩,具备3A的输出电流能力,输入电压6~40VDC——D2576
  • 4-如何进行细分市场的分析-02 细分行业的构成和基本情况