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

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. 集群内部访问。
    在这里插入图片描述

相关文章:

k8s service

文章目录 Service 基础概念Service 类型:Service 的工作流程:东西流量,南北流量NodePortLoadBalancer Service 基础概念 在 Kubernetes(K8s)中,Service 是一个抽象的概念,表示一个应用程序的逻…...

C语言 每日一题 PTA 11.6 day12

1.调和平均 N 个正数的算数平均是这些数的和除以 N,它们的调和平均是它们倒数的算数平均的倒数。 本题就请你计算给定的一系列正数的调和平均值。 输入格式: 每个输入包含 1 个测试用例。每个测试用例第 1 行给出正整数 N(≤1000);第 2 行给…...

Git使用规范指南

文章目录 Git使用规范指南前言分支命名规范分支合并流程规范提交信息规范Angular提交规范注意事项 通用Git忽略文件配置 Git使用规范指南 前言 由于最近写完代码之后,Git使用不规范被领导说了,所以最近通过阅读大量的相关博客快速学习Git使用规范&#…...

axios和Ajax

1.axios 官网:https://axios-http.com/zh/ CDN:https://cdn.bootcdn.net/ajax/libs/axios/0.21.1/axios.min.js axios是一个请求库,在浏览器环境中,它封装了XHR,提供更加便捷的API发送请求 基本使用 // 发送 get 请求…...

Day06

1.继承 1.1 定义 让类与类之间产生子父类关系,有了继承性之后,子类就获取到了父类中声明的所有属性和方法。 1.2 优点 继承的出现减少了代码冗余,提高了代码的复用性。继承的出现,更有利于功能的扩展。继承的出现让类与类之间…...

@Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成

问题 Tag和Operation标签失效 但是Schema标签有效 pom依赖 <!-- 接口文档--><!--引入openapi支持--><dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><vers…...

基础课18——智能客服系统架构

1.基础设施层 基础设施主要包括以下几点&#xff1a; 1. 硬件设施&#xff1a;包括服务器、存储设备、网络设备等&#xff0c;这是整个系统运行的物理基础。 2. 软件设施&#xff1a;包括操作系统、数据库管理系统、自然语言处理(NLP)工具和机器学习算法等&#xff0c;这些是…...

python执行cmd命令——控制电脑连接wifi——程序打包

import subprocess # 使用Popen创建进程&#xff0c;并与进程进行复杂的交互 proc subprocess.Popen(netsh wlan show network, # cmd特定的查询空间的命令stdinNone, # 标准输入 键盘stdoutsubprocess.PIPE, # -1 标准输出&#xff08;演示器、终端) 保存到管道中以便进行操作…...

Vue中nextTick的使用及原理

在Vue.js中&#xff0c;nextTick方法可以让我们在DOM更新后执行一些操作。通常情况下&#xff0c;在数据发生变化后&#xff0c;Vue.js会异步地更新DOM&#xff0c;这样可以减少不必要的DOM操作&#xff0c;提高性能。但是&#xff0c;有时候我们需要在DOM更新后对页面进行一些…...

【Linux】拓展:运维面试题,进程管理常见的7大问题

目录 一、如何判断一个程序是单线程还是多线程 二、僵尸进程是什么&#xff0c;有什么危害&#xff0c;如何解决 三、如何找回删掉的文件 四、删除文件以后&#xff0c;空间不释放 五、遇到一个病毒&#xff08;如死循环病毒&#xff09;&#xff0c;解决思路 六、机器开机…...

Android修行手册 - 一文全了解Kotlin几种静态变量、函数实现的那些事

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…...

Qt QTableView排序

1.简介 在开发过程中&#xff0c;我们需要通过点击表头来对QTableView或QTreeView等一系列高级视图进行排序操作&#xff0c;以下是进行排序的步骤。 步骤&#xff1a; 首先创建了一个QStandardItemModel对象或者继承QAbstractTableModel类作为数据模型&#xff0c;并设置了…...

Linux shell编程学习笔记22: () $() (()) 的用法小结

最近学习Linux Shell编程&#xff0c;对 () (()) [] [[]]等符号的用法还是有点分不太清楚&#xff0c;于是决定再梳理一下。今天先整理 () $() (()) 的用法。 1 单小括号() 1.1 子shell&#xff08;命令组&#xff09; 括号中的命令将会新开一个子shell顺序执行&#xff0c;所…...

1. Pthreads专栏简介

在基于共享内存的多处理器架构中&#xff0c;可使用线程实现并行。以前硬件供应商一般都会提供相应硬件专用的线程库&#xff0c;使得代码的可移植性成为另开发者头疼的一个问题。在UNIX系统中&#xff0c;IEEE POSIX 1003.1c标准已经定义了基于C的标准化线程编程接口规范&…...

C++17 fallthrough属性

在C17中&#xff0c;引入了[[fallthrough]]属性。这个属性主要用于switch语句中&#xff0c;用于告诉编译器&#xff0c;从上一个case标签到下一个case标签的执行是有意为之的&#xff0c;不应该被诊断为错误。 在switch-case语句中&#xff0c;如果当前case分支中不加break&a…...

STM32 蜂鸣器介绍 配置 播放音节

蜂鸣器一般被分为两类&#xff1a;有源蜂鸣器和无源蜂鸣器。其中源是振荡源。有源蜂鸣器内部有正当电路&#xff0c;可以把直流电源转换为一定频率的脉冲信号。因为它一直输出一定的频率&#xff0c;我们无法改变频率&#xff0c;我们只能通过电源&#xff0c;控制它发不发声&a…...

多目标最优化的资产配置

摘要及声明 1&#xff1a;本文主要对基于均值方差最优化的资产配置方法进行拓展&#xff0c;从多目标最优化的角度看待资产配置并可视化展示&#xff1b; 2&#xff1a;本文主要为理念的讲解&#xff0c;模型也是笔者自建&#xff0c;文中假设与观点是基于笔者对模型及数据的…...

word图片的标题跑到了图片的上方。

问题描述&#xff1a;在写论文时&#xff0c;在word文档中插入了一个svg图片&#xff0c;然后在图片下方输入标题。后面可能是调整了svg图片的大小&#xff0c;标题跑到了图片的上方。 具体情况如下图所示。标题明显跑到了图片的上方。 解决办法&#xff1a;把svg图片格式调成…...

electron打包下载资源失败,设置国内镜像

0.electron介绍 Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript 代码代码库并创建 在Windows、Linux及macOS上运行的跨平台应用。可以用原生html写&#xff0c;也可以用vue等…...

架构漫谈 - 如何设计高性能、高可用、高扩展架构

文章目录 一、如何设计高扩展架构架构设计复杂度模型可扩展复杂度模型"拆分"复杂度分析和设计"封装"复杂度分析和设计(1)规则引擎:美团MazeGO规则引擎(2)微内核:OSGI微内核(3)抽象层:Linux VFS抽象层(4)设计模式二、设计高性能架构单机高性能集…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

windows系统MySQL安装文档

概览&#xff1a;本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容&#xff0c;为学习者提供全面的操作指导。关键要点包括&#xff1a; 解压 &#xff1a;下载完成后解压压缩包&#xff0c;得到MySQL 8.…...

Kafka主题运维全指南:从基础配置到故障处理

#作者&#xff1a;张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1&#xff1a;主题删除失败。常见错误2&#xff1a;__consumer_offsets占用太多的磁盘。 主题日常管理 …...

GraphRAG优化新思路-开源的ROGRAG框架

目前的如微软开源的GraphRAG的工作流程都较为复杂&#xff0c;难以孤立地评估各个组件的贡献&#xff0c;传统的检索方法在处理复杂推理任务时可能不够有效&#xff0c;特别是在需要理解实体间关系或多跳知识的情况下。先说结论&#xff0c;看完后感觉这个框架性能上不会比Grap…...

高抗扰度汽车光耦合器的特性

晶台光电推出的125℃光耦合器系列产品&#xff08;包括KL357NU、KL3H7U和KL817U&#xff09;&#xff0c;专为高温环境下的汽车应用设计&#xff0c;具备以下核心优势和技术特点&#xff1a; 一、技术特性分析 高温稳定性 采用先进的LED技术和优化的IC设计&#xff0c;确保在…...

2025 后端自学UNIAPP【项目实战:旅游项目】7、景点详情页面【完结】

1、获取景点详情的请求【my_api.js】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http(/login/getWXSessionKey, {code,avatar}); };//…...