k8s 自身原理之 Service

好不容易,终于来到 k8s 自身的原理之 关于 Service 的一部分了

前面我们用 2 个简图展示了 pod 之间和 pod 与 node 之间是如何通信息的,且通信的数据包是不会经过 NAT 网络地址转换

那么 Service 又是如何实现呢?

Service 我们知道是用来对外暴露服务的 ip 和 端口的,好让外部的客户端可以访问到我们内部 pod 提供的服务

另外 Service 管理的 pod ,实际的 ip 和 端口 列表,都是存放在对应的 endpoints 里面的

目前为止,我们也仅仅是停留在会使用 Service 了,那么 Service 自身的原理又是如何呢?我们一起来瞅瞅看

对于 Service 的服务 ip 地址,也是一个虚拟的,同时也是对外暴露了 1 个或者多个端口,既然是虚拟的,咱们肯定是 ping 不通的,例如我的 minikube 环境

当然,我们看了之前的分享之后,发现 k8s 中对于资源的变动,基本上都是使用的监听机制,那么对于 Service 的行为 和 endpoints 的行为,是不是同样是被不同的关键组件所监听呢?

我们可以用一个简图来了解一下:

图中,我们可以看到

  • 一个 Service 管控的是 2 个 pod,具体的 ip 和 端口 列表 都是存放在 endpoints 中
  • kube-proxy 会监控 ApiServer 中 Endpoints 对象的变化,若 endpoints 这中 list 有变化,kube-proxy 监听到之后,就会通知 iptables 去配置新的规则
  • 例如环境中的 一个 pod 3 发请求给到咱们这个 Service,发出来的 目的地址是 Service 的地址和端口
  • 但是通过 iptables 设定的规则进行转换,目的地址和端口就变成了 Service 管控的 pod 自己的 ip 和端口了

就看这个流程,好像也不复杂嘛,那么实际生产环境中也会是这样的吗?我们可以思考一下

今天就到这里,学习所得,若有偏差,还请斧正

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~
更多的可以查看 零声每晚八点直播:https://ke.qq.com/course/417774

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Flask-SQLAlchemy

认识Flask-SQLAlchemy Flask-SQLAlchemy 是一个为 Flask 应用增加 SQLAlchemy 支持的扩展。它致力于简化在 Flask 中 SQLAlchemy 的使用。SQLAlchemy 是目前python中最强大的 ORM框架, 功能全面, 使用简单。 ORM优缺点 优点 有语法提示, 省去自己拼写SQL,保证SQL…

Unity游戏源码分享-俄罗斯方块unity2017

Unity游戏源码分享-俄罗斯方块unity2017 工程地址: https://download.csdn.net/download/Highning0007/88204011

【Linux初阶】system V - 共享内存

文章目录 前言一、共享内存初识1.共享内存的原理2.理解共享内存3.共享的内存的概念 二、共享内存函数1.shmget函数2.shmat函数3.shmdt函数4.shmctl函数 三、共享内存的查看方法及其特征四、共享内存的代码实现五、共享内存优缺点分析1.共享内存的优点2.共享内存的缺点 六、共享…

【Nacos2.24持久化到Postgres数据库适配——详细版】

Nacos2.24持久化到Postgres数据库适配 前言步骤拉取源码添加依赖修改源码编译打包修改配置测试运行 参考 前言 公司基于springboot实现了一套单体框架,目前我负责搭建SpringCloud微服务框架,需要用到nacos,但是由于公司特殊性,na…

1022.从根到叶的二进制之和

目录 一、题目 二、代码 一、题目 二、代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nu…

玩转 VS code 之下载篇

VSCode 简介 Visual Studio Code (简称 VS Code / VSC),是2015 年由微软公司推出的一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮、智能代码补全、GIT 等特性,支持插件扩展等等 可用于 Windows,ma…

等保测评标准和规范有哪些?

等保测评标准和规范的出现,为我国信息安全等级保护制度的建立和健全提供了重要的保障。 作为信息安全领域的重要评估标准,等保测评旨在通过对信息系统、网络安全设备和安全产品等的安全性能、安全功能、安全管理、安全控制和安全审计等方面的要求进行检查…

【golang】怎样判断一个变量的类型?

怎样判断一个变量的类型? package mainimport "fmt"var container []string{"zero", "one", "two"} func main() {container : map[int]string{0: "zero", 1: "one", 2: "two"}fmt.Printf…

AWS中Lambda集成SNS

1.创建Lambda 在Lambda中,创建名为AWSSNSDemo的函数 use strict console.log(loading function); var aws require(aws-sdk); var docClient new aws.DynamoDB.DocumentClient(); aws.config.regionap-southeast-1;exports.handler function(event,context,cal…

stop job is running for Advanced key-value store

今天虚拟机磁盘撑满了,本来还能凑合运行,结果重启了下,就报了这个 stop job is running for Advanced key-value store (1min 59s / no limit) 解决方式很简单, 1、虚拟机关电源,任务管理器,关闭VM&#x…

LeetCode_03Java_1572. 矩阵对角线元素的和

给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 输入:mat [[1,2,3],[4,5,6],[7,8,9]] 输出:25 解释:对角线的和为:1 5 9 3 7 2…

我们为什么需要API管理系统?

我们为什么需要API管理系统? 随着web技术的发展,前后端分离成为越来越多互联网公司构建应用的方式。前后端分离的优势是一套Api可被多个客户端复用,分工和协作被细化,大大提高了编码效率,但同时也带来一些“副作用”:…

前端接口修改工具 Requestly具体操作

更新于2023年8月12日18:17:56,插件版本可能会变,界面可能会有所变化 插件下载地址:https://chrome.google.com/webstore/detail/requestly-open-source-htt/mdnleldcmiljblolnjhpnblkcekpdkpa 注意,必须用谷歌浏览器,…

Python-OpenCV中的图像处理-模板匹配

Python-OpenCV中的图像处理-模板匹配 模板匹配单对象的模板匹配多对象的模板匹配 模板匹配 使用模板匹配可以在一幅图像中查找目标函数: cv2.matchTemplate(), cv2.minMaxLoc()模板匹配是用来在一副大图中搜寻查找模版图像位置的方法。 OpenCV 为我们提…

强制Edge或Chrome使用独立显卡【WIN10】

现代浏览器通常将图形密集型任务卸载到 GPU,以改善你的网页浏览体验,从而释放 CPU 资源用于其他任务。 如果你的系统有多个 GPU,Windows 10 可以自动决定最适合 Microsoft Edge 自动使用的 GPU,但这并不一定意味着最强大的 GPU。 …

力扣初级算法(数组拆分)

力扣初级算法(数组拆分) 每日一算法: 力扣初级算法(数组拆分) 学习内容: 1.问题描述 给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) …

leetcode 6914. 翻倍以链表形式表示的数字

给你一个 非空 链表的头节点 head ,表示一个不含前导零的非负数整数。 将链表 翻倍 后,返回头节点 head 。 示例 1: 输入:head [1,8,9] 输出:[3,7,8] 解释:上图中给出的链表,表示数字 189 。返…

ubuntu下FFmpeg安装和使用以及CMakeLists.txt模板

sudo apt install ffmpeg sudo apt-get install libavfilter-devcmakelist模板 CMakeLists.txt cmake_minimum_required(VERSION 3.16) project(ffmpeg_demo)# 设置ffmpeg依赖库及头文件所在目录,并存进指定变量 set(ffmpeg_libs_DIR /usr/lib/x86_64-linux-gnu) …

Springboot MultipartFile文件上传与下载

yml文件配置是否可以上传及上传附件大小 servlet:multipart:# 允许文件上传enabled: true# 单个文件大小max-file-size: 20MB# 设置总上传的文件大小max-request-size: 50MB /*** param files* param request* Description 上传文件* Throws* Return java.util.List* Date 202…

prometheus监控k8s服务并告警到钉钉

一、监控k8s集群 要监控k8s集群需要使用到以下服务用于收集监控的资源信息,node_exporter用于监控k8s集群节点的资源信息,kube-state-metrics用于监控k8s集群的deployment、statefulset、daemonset、pod等的状态,cadvisor用于监控k8s集群的p…