k8s service

文章目录

  • Service 基础概念
  • Service 类型:
  • Service 的工作流程:
  • 东西流量,南北流量
  • NodePort
  • LoadBalancer

Service 基础概念

在 Kubernetes(K8s)中,Service 是一个抽象的概念,表示一个应用程序的逻辑集合和访问这些应用程序的策略。通常,Service 都通过标签(Label)与 Pod 连接,服务会自动为这些 Pod 创建端口映射关系,有利于流量的负载均衡和服务发现。

Service 类型:

k8s service主要包括以下几种类型:

  1. ClusterIP: ClusterIP 是默认的 ServiceType。该类型的 Service 只有一个集群内部的 IP 地址,可以实现服务发现并允许 Pod 之间的通信。

  2. NodePort: NodePort 会在每个 Node 上打开一个端口,并将来自该端口的流量转发到 Service。这使得 Service 能够从集群外部访问。

  3. LoadBalancer: LoadBalancer 会为 Service 创建一个外部负载均衡器,并将 NodePort 服务和 ClusterIP 服务都映射到这个负载均衡器上,默认从外面的请求只能访问到这个 load balancer。

  4. ExternalName: ExternalName 是另一种特殊的 Service 类型,与上述三种类型的 Service 不同,它没有选择器,没有定义任何端口,也没有要代理的 IP 或者其他一切。只做一件事,返回 CNAME 记录,也就是别名记录。

Service 的工作流程:

  1. 当在 Kubernetes 中创建一个 Service,并且这个 Service 的选定了一个或多个 Pod,Kubernetes 会为这个 Service 分配一个 IP 地址,也称为集群 IP。
  2. Kubernetes 会在整个集群范围内为这个新的 Service 创建一个代理服务,代理会负责将对该 Service 的所有请求转发到它管理的 Pod 上。
  3. 当你的应用程序需要和其他服务交互时,只需要使用这个 Service 的 IP 或者 DNS 名字进行通信,Kubernetes 会自动将请求转发到正确的 Pod。

这种方式可以很好地将服务的消费者与服务的提供者进行解耦,使得服务的消费者不需要关心具体的服务提供者是谁,也无需关心服务提供者的数量、位置和状态等。

东西流量,南北流量

在网络架构中,术语"南北流量"和"东西流量"常常用来描述数据包在数据中心中的流动方向。

  • 南北流量:术语“南北流量”用于描述客户端与服务器之间,或者是网络的入口和出口之间的流量。这种流量主要是从数据中心流出或流入的流量,这就好比数据中心的"南"和"北"边界。在 Kubernetes(K8s)环境中,南北流量主要由 Kubernetes Ingress 或者 Service(类型为 LoadBalancer 或 NodePort)负责处理。例如,一个从互联网发来的请求进入 Kubernetes 集群,就是一种南北流量的例子。

  • 东西流量:术语“东西流量”用于描述在数据中心内部,服务与服务之间的流量。这种流量主要是数据中心内部各个服务之间的互相通信,就好比数据中心的"东"和"西"边界。在 Kubernetes 环境中,东西流量主要由 Kubernetes Service 负责处理。例如,一个 Pod 发送请求给另一个 Pod,就是一种东西流量的例子。

这两种流量模式在微服务架构中尤其重要,因为微服务架构中的服务数量可能上千个,且每个服务间可能需要频繁通信。理解南北流量和东西流量的不同,对于设计和管理 Kubernetes 网络策略、提高网络性能和安全性都有很大的帮助。
在这里插入图片描述
在这里插入图片描述
例如在这张图中,有两个service分别管理商品服务和订单服务;用户访问商品的时候,商品服务需要去查询订单,这时候蓝色的容器1内的商品服务就可以直接访问同为蓝色的service订单。同理,绿色的容器订单服务可以访问绿色的商品service获取商品信息。

NodePort

关于k8s各种类型port参考文章:http://t.csdnimg.cn/68crH

NodePort.yaml

apiVersion: v1
kind: Service
metadata:labels:app: test		# service自己本身的标签name: nodeport-studynamespace: my-ns-nodeport
spec:externalTrafficPolicy: ClusterinternalTrafficPolicy: ClusteripFamilies:- IPv4ipFamilyPolicy: SingleStackports:- name: port1port: 81    # port字段定义了Service暴露给集群内部和外部的端口号protocol: TCPtargetPort: 80    # targetPort字段定义了Service将流量转发到后端Pod的容器端口号selector:	# 匹配哪些pod会被service代理,所有匹配到以下标签的pod都可以通过该service进行访问app: test-appcity: shanghaiproject: k8s-studytype: NodePort

在这里插入图片描述

nginx-pod.yaml

apiVersion: v1
kind: Pod
metadata:labels:app: test-appproject: k8s-studycity: shanghainame: nginx-podnamespace: my-ns-nodeport
spec:containers:- image: nginx:1.9.1imagePullPolicy: IfNotPresentname: nginxports:- containerPort: 80name: nginx-portprotocol: TCP

在这里插入图片描述

kb edit svc nodeport-study -n my-ns-nodeport 可以看到自动开启了一个和k8s node物理机绑定的端口。

在这里插入图片描述

  1. 通过nodePort物理机端口连接
    在这里插入图片描述
  2. kb exec -it toolbox-0 bash 从一个其它命名空间的pod中访问。这个时候需要用yaml配置的集群内端口81访问。
    在这里插入图片描述

LoadBalancer

LoadBalancer.yaml

apiVersion: v1
kind: Service
metadata:name: loadbalancer-studynamespace: my-ns-nodeport
spec:ports:- name: port2port: 82    # port字段定义了Service暴露给集群内部和外部的端口号protocol: TCPtargetPort: 80    # targetPort字段定义了Service将流量转发到后端Pod的容器端口号selector:city: beijingproject: loadbalancer-studytype: LoadBalancer

nginx-pod.yaml

apiVersion: v1
kind: Pod
metadata:labels:project: loadbalancer-studycity: beijingname: nginx-pod-loadbalancernamespace: my-ns-nodeport
spec:containers:- image: nginx:1.9.1imagePullPolicy: IfNotPresentname: nginxresources: {}terminationMessagePath: /dev/termination-logterminationMessagePolicy: Fileports:- containerPort: 80name: nginx-portprotocol: TCP

在这里插入图片描述
可以看到新创建处理的LoadBalancer类型的service有一个对外的EXTERNAL-IP。

  1. 这个ip是可以在集群外部直接访问。
    在这里插入图片描述
  2. 集群内部访问。
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/132888.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机毕设 基于大数据的服务器数据分析与可视化系统 -python 可视化 大数据

文章目录 0 前言1 课题背景2 实现效果3 数据收集分析过程**总体框架图****kafka 创建日志主题****flume 收集日志写到 kafka****python 读取 kafka 实时处理****数据分析可视化** 4 Flask框架5 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升&a…

fio数据整理之二

fio数据简单抓取 上文我们完成了一些fio output数据的简单抓取,本文将针对抓取的数据做进一步的处理,输出到表格之中,方便我们查看,统计结果。 本文先使用最简单的方法创建csv档案 我们现有个基本认知,在csv档案中&am…

Corel VideoStudio 会声会影2024剪辑中间的视频怎么删 剪辑中音乐太长怎么办

我很喜欢视频剪辑软件Corel VideoStudio 会声会影2024,因为它使用起来很有趣。它很容易使用,但仍然给你很多功能和力量。视频剪辑软件Corel VideoStudio 会声会影2023让我与世界分享我的想法!“这个产品的功能非常多,我几乎没有触…

【MySQL数据库】 四

本文主要介绍了mysql数据库的几种常见的约束. 一.数据库约束 我们希望存储的数据是靠谱的,mysql提供一些机制来辅助我们自动的依赖程序对数据进行检查 . 这类查数据的机制,就是约束 一旦约束好了,后续在进行增 删 改的时候,mysql就会自动的对修改的数据做出检查,如果不符合…

openGauss学习笔记-116 openGauss 数据库管理-设置数据库审计-审计概述

文章目录 openGauss学习笔记-116 openGauss 数据库管理-设置数据库审计-审计概述116.1 背景信息116.2 操作步骤 openGauss学习笔记-116 openGauss 数据库管理-设置数据库审计-审计概述 116.1 背景信息 数据库安全对数据库系统来说至关重要。openGauss将用户对数据库的所有操作…

服务器搭建:从零开始创建自己的Spring Boot应用【含登录、注册功能】

当然,你可以先按照IDEA搭建SSM框架【配置类、新手向】完成基础框架的搭建 步骤 1:设计并实现服务器端的用户数据库 在这个示例中,我们将使用MySQL数据库。首先,你需要安装MySQL并创建一个数据库以存储用户信息。以下是一些基本步…

后端工程化 | SpringBoot 知识点

文章目录 [SpringBoot] 后端工程化1 需求2 开发流程3 RequestController 类(操作类)3.1 简单参数(形参名和请求参数名一致)3.2 简单参数(形参名和请求参数名不一致)3.3 复杂实体参数3.4 数组参数3.5 集合参…

COOHOM通过采用亚马逊云科“专库专用”的方式,为云原生的构建提供稳定的数据支撑

全球化浪潮下,面对全球化业务发展带来的新需求与新挑战,越来越多的企业开启了云原生构建旅程,以推动业务系统快速迭代,为国际业务的拓展打下坚实的基础。COOHOM是杭州群核信息技术有限公司旗下的国际化品牌。为全球企业和个人提供…

《面向对象软件工程》笔记——1-2章

“学习不仅是一种必要,而且是一种愉快的活动。” - 尼尔阿姆斯特朗 文章目录 第一章 面向对象软件工程的范畴历史方面经济方面维护方面现代软件维护观点交付后维护的重要性 需求、分析和设计方面团队开发方面没有计划,测试,文档阶段的原因面向…

8-3、T型加减速单片机程序【51单片机控制步进电机-TB6600系列】

摘要:根据前两节内容,已完成所有计算工作,本节内容介绍具体单片机程序流程及代码 一、程序流程图 根据前两节文章内容可知,T型加减速的关键内容是运动类型的判断以及定时器初值的计算,在输出运动参数后即可判断出运动…

Oracle(13)Maintaining Data Integrity

目录 一、基础知识 1、Data Integrity 数据库的完整性 2、Types of Constraints 约束类型 3、Constraint States 约束状态 4、Guidelines for Constraints 约束准则 二、基础操作 1、Enabling Constraints 启用约束 2、命令方式创建约束 3、修改表创建的约束 4、删除约…

JavaScript_Element对象_方法

1、Element.focus() Element.focus方法用于将当前页面的焦点,转移到指定元素上 2、Element.blur() Element.blur方法用于将焦点从当前元素移除 3、Element.remove() Element.remove方法用于将当前元素节点从它的父节点移除 4、Element.getBoundingClientRect() …

常用的电子邮件服务提供商有哪些?

当我们讨论常用的电子邮件服务时,可以根据国内和国外进行分类观察。以下是一些常见的国内和国外电子邮件服务。 什么是国外邮箱和国内邮箱? 国外邮箱是指在国外注册和使用的电子邮箱,而国内邮箱则是在国内注册和使用的电子邮箱。 国外邮箱是指…

链表(1)

目录 单链表 主函数test.c test1 test2 test3 test4 头文件&函数声明SList.h 函数实现SList.c 打印SLPrint 创建节点CreateNode 尾插SLPushBack 头插SLPushFront 头删SLPopBck 尾删SLPopFront 易错点 本篇开始链表学习。今天主要是单链表&OJ题目。 单链…

接口请求断言

接口请求断言是指在发起请求之后,对返回的响应内容去做判断,用来查看是否响应内容是否与规定的返回值相符。 在发起请求后,我们使用一个变量 r 存储响应的内容,也就是 Response 对象。 Response 对象有很多功能强大的方法可以调…

城市内涝怎么预警?万宾科技内涝积水监测仪

在城市运行过程中,城市内涝问题频繁出现,影响城市管理水平的提升,也会进一步减缓城市基础设施建设。尤其近几年来,城市内涝灾害频繁出现,在沿海地区内涝所带来的安全隐患成为城市应急管理部门的心头大患。城市内涝的背…

【JVM系列】- 挖掘·JVM堆内存结构

挖掘JVM堆内存结构 文章目录 挖掘JVM堆内存结构堆的核心概念堆的特点 堆的内存结构内存划分新生代/新生区(Young Generation)老年代(Tenured Generation)永久代(或元数据区)(PermGen 或 MetaSpa…

2023.11.4 Idea 配置国内 Maven 源

目录 配置国内 Maven 源 重新下载 jar 包 配置国内 Maven 源 <mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf> …

ChatGPT对未来发展的影响?一般什么时候用到GPT

ChatGPT以其强大的自然语言处理能力对未来的发展具有重要影响。以下是ChatGPT的潜在影响和一般使用情况&#xff1a; 改善自然语言理解和生成&#xff1a;ChatGPT和类似的模型可以改善机器对人类语言的理解和生成。这将有助于改进各种应用领域&#xff0c;包括智能助手、聊天机…

HMM与LTP词性标注之命名实体识别与HMM

文章目录 知识图谱介绍NLP应用场景知识图谱&#xff08;Neo4j演示&#xff09;命名实体识别模型架构讲解HMM与CRFHMM五大要素&#xff08;两大状态与三大概率&#xff09;HMM案例分享HMM实体识别应用场景代码实现 知识图谱介绍 NLP应用场景 图谱的本质&#xff0c;就是把自然…