Kubernetes服务发布基础

news2024/9/29 2:01:16

一、Service

1.service基本介绍     

  service为一组提供服务的pod提供抽象的稳定的网络访问地址,主要用于网络服务,通过service定义,为客户端提供访问地址和负载均衡,屏蔽endport的变化。

       在 kubernetes 中,pod 的IP 地址是动态变化的,因此无法直接通过 pod 的IP 地址进行访问。service的出现正式为了解决找个问题的。service 会为一组 pod 创建一个虚拟的 IP 地址,通过这个 IP 地址可以访问这组 pod 中的任意一个 pod。当客户端请求这个虚拟 IP 地址时,请求会被负载均衡到一组 pod 中的某一个 pod 上,从而完成对 pod 的访问。

        service 的实现依赖于 kube-proxy 组件。kube-proxy 会在每个节点上监听 service 的变化,一旦有 service 发生变化,kube-proxy 会更新本地的 iptables 规则,从而实现流量的转发和负载均衡。

        另外,service 还与 CoreDNS 有关。CoreDNS 是 kubernetes 集群中的 DNS 解析服务。在 kubernetes中 service 的虚拟 IP 地址还会注册到 coreDNS 中,从而使得客户端还可以通过service 名称访问service 的虚拟 IP 地址。在 service 的定义中,可以通过 spec,selector 字段指定哪些 pod 属于这个service,这样,就可以将请求负载均衡到这些 pod 中。

           总之,service 是 kubernetes 中一种非常重要的资源对象,它可以让 pod 对外提供服务,并提供负载均衡、服务发现等功能。servie的实现依赖于kube-proxy 和CoreDNS组件,他们共同协作,将 service与 pod 连接起来,实现对 pod 的代理访问,如下图所示。 

2.service负载均衡 

       当service在kubernetes集群定义出来现之后,客户端就可以通过服务IP访问到Pod容器提供的服务,服务IP和后端Pod负载均衡机制,由node上kube-proxy实现。

        kube-proxy代理模式:userspace,iptables,ipvs和kernelspace。

(1)userspace

       起初,kube-proxy进程是一个真实的TCP/UDP代理,当某个pod以clusterIP 方式访问某个service的时候,这个流量会被 pod 所在的本机的 iptables 转发到本机的 ube-proxy 进程,然后将请求转发到后端某个 pod 上。具体过程为:

  • kube-proxy 为每个 service 在 node 上打开一个随机端口作为代理端口
  • 建立 iptables 规则,将 clusterip 的请求重定向到代理端口(用户空间)
  • 到达代理端口的请求再由 kubeproxy 转发到后端

          clusterip 重定向到 kube-proxy 服务的过程存在内核态到用户态的切换,开销很大,因此有了iptables 模式,而 userspace 模式也被废弃了。

(2)iptables

       k8s在1.2版本之后iptables作为默认模式,kube-proxy不在起到proxy作用。主要功能是:通过API Server 的 watch 接口实时跟踪 Service 和 Endpoint 的变更信息,并更新对应的 iptables 规则,client 的请求流量通过 iptables 的 NAT 机制“直接路由”到目标 Pod。

      不同于 userspace,在 iptables 的模式中,kube-proxy 不再负责转发数据包,kube-proxy 主要完成对 iptables 策略的动态管理。数据包的走向完全由 iptables 规则决定,这样的过程不存在内核态到用户态的切换,效率明显会高很多。但是随着 service 的增加,iptables 规则会不断增加,导致内核十分繁忙(等于在读一张很大的没建索引的表)。

(3) ipvs

主要用于高性能负载均衡,使用高效数据结构Hash表,允许无线扩张规模,提供的算法:rr,lc,df,sh,sed(预计延迟时间最短),nq(从不排队)

(4)kernelspace 

在windows进行代理模式

3.service的四种类型

(1)Cluster IP

为Pod提供一个虚拟IP地址,其他Pod访问service,只需要访问该虚拟IP地址,k8s自动将请求路由到相应的Pod上。

(2)Nodeport 

       将Pod公开为集群中所有节点的端口,当请求到任何一个节点上的端口上,kubernetes会将请求路由到相应Pod上。

(3) LoadBalancer

使用云端提供商进行负载均衡将请求路由到后端Pod,kubernetes会自动创建和配置负载均衡器,绑定到service上。

(4)ExternalName

将service映射到外部域名地址。

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

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

相关文章

大数据面试-Zookeeper

你对Zookeeper的选举机制了解吗?为什么zk节点个数推荐奇数台?zk第一次启动的选举的细节了解吗? ‌ZooKeeper的选举机制‌是基于Paxos算法的一种分布式选举算法,用于在ZooKeeper集群中选择一个节点作为Leader,负责处理…

做外贸如何判断国外采购商公司规模

判断客户公司的规模,对于业务员来说很重要,这样在谈价格以及其他条款的时候才能掌握主动。一般要怎么去判断客户公司的规模呢?我们都是做实事的,实际经验很重要,做过和没做过的看多了就知道。最基本的信息是公司的注册时间及相关…

【python】Python中通过WHL文件离线安装需要的包最全面讲解

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

【oracle】工具访问oracle提示-IO 错误: Got minus one from a read call

问题描述: 使用工具访问数据库时,提示IO 错误: Got minus one from a read call,在服务器上检查数据库正常,监听正常,连接数合理,防火墙没限制。最后定位sqlnet.ora配置限制了客户端访问。 解决&#xf…

四川财谷通信息技术有限公司解锁抖音小店新机遇

在数字经济蓬勃发展的今天,电商平台已成为推动商业创新、促进消费升级的重要力量。其中,抖音小店凭借其庞大的用户基础、精准的算法推荐以及高度活跃的社区氛围,迅速崛起为众多商家青睐的创业与营销新阵地。四川财谷通信息技术有限公司&#…

Groovy DSL从入门到项目实战(一)

Groovy是一门很灵活的Java扩展语言,支持弱类型、闭包、函数式编程等脚本语言的高级特性。因为小卷所在公司的船申报系统需要重构,对原先java硬编码的各种表单数据校验、后台业务校验使用规则脚本的形式进行剥离出来。而市面上像Jboss Drools这样的规则引…

docker-compose安装sentry

官方文档 https://develop.sentry.dev/self-hosted/ 一、前提 服务器配置至少4C16G,否则起不来 二、安装docker https://blog.csdn.net/weixin_45112997/article/details/134532660 三、安装docker-compose docker-compose版本有要求,必须大于2.…

ISO7841标准数字隔离器在现代电子系统中的作用

在快速发展的电子领域,隔离元件在确保各种系统的安全性、可靠性和性能方面发挥着关键作用。其中,光耦合器是提供电气隔离同时允许电路不同部分之间进行信号传输的关键设备。ISO7841数字隔离器尤其体现了现代电子设计所需的先进功能和多功能性。 ISO7841数…

刷题刷题刷题

89. 格雷编码 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:vector<int> grayCode(int n) {vector<int> res;res.push_back(0);int head 1;for (int i 0; i < n; i) {for (int j res.size() - 1; j > 0; j--) {res.push_back(head r…

电脑录屏怎么录?强烈推荐这5款高清录屏软件

现在电脑录屏作为数字化生活的一项实用技能&#xff0c;正逐渐走进越来越多人的视野&#xff0c;无论是想要录制游戏直播的高光时刻&#xff0c;还是制作教学视频分享知识&#xff0c;亦或是记录会议内容以备不时之需&#xff0c;电脑录屏都能轻松满足我们的需求。 今天就给大家…

Leetcode 876.141.142.143 环形链表 C++实现

Leetcode 876. 链表的中间结点 问题&#xff1a;给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。如果有两个中间结点&#xff0c;则返回第二个中间结点。 、 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct L…

【MySQL进阶之路】oracle 9i的经典测试雇员信息表案例——多表查询

目录 引言 笛卡尔积 自连接 子查询 单行子查询 多行子查询 多列子查询 在from子句中使用子查询 合并查询 个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 引言 在数据库的实际开发中&#xff0c;多表查询是一项非常基础且重要的技能。它允许你将来自不同表的数据结合…

【git bash编码错误解决方案】启动conda环境时报错,其他terminal却正常

&#x1f50e;嘿&#xff0c;这里是慰慰&#x1f469;&#x1f3fb;‍&#x1f393;&#xff0c;会发各种类型的文章&#xff0c;智能专业&#xff0c;从事前端&#x1f43e; &#x1f389;如果有帮助的话&#xff0c;就点个赞叭&#xff0c;让我开心一下&#xff01;&#x1f…

Java中的IO流-最全最基础的IO流概述和简介

IO流简介 IO是什么 Java中的IO流是用于处理数据输入和输出的核心机制。通过应用IO流可以使Java程序能够与外部世界&#xff08;如磁盘文件、网络、硬件设备等&#xff09;进行数据交互。IO流的全称为输入/输出流&#xff08;Input/Output Stream&#xff09;&#xff0c;它是…

【Python】函数的定义和调用、形参和实参、函数的返回值、多元赋值、全局和局部变量

文章目录 函数的定义函数的调用形参和实参函数的返回值一个 return多个 return多元赋值 变量作用域函数内的变量全局变量和局部变量修改全局变量 函数的定义 函数的定义&#xff1a;分配任务 def 函数名(形参列表):函数体return 返回值def&#xff1a;define&#xff0c;定义…

2024“钉耙编程”中国大学生算法设计超级联赛(8)

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;彩笔ACMer一枚。 &#x1f3c0;所属专栏&#xff1a;杭电多校集训 本文用于记录回顾总结解题思路便于加深理解。 不是哥们&#xff0c;怎么我tm什么都不会。 &#x1f4e2;&…

计算机Java项目|基于SpringBoot的医院药品管理系统

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验&#xff0c;被多个学校常年聘为校外企业导师&#xff0c;指导学生毕业设计并参…

大象机械臂myCobot 280 JN 2023和D435i相关环境配置

目录 一、安装Google拼音输入法二、安装CUDA 10.2三、安装conda管理环境四、配置D435i相机SDK五、安装realsense-ros 大象机器人的这款机械臂&#xff0c;用的Jetson nano做的主控&#xff0c;给的系统的ubuntu20&#xff0c;默认python版本是3.8。并且没有配置CUDA&#xff0c…

记录|SPC理解+SPC的监控看板

目录 前言一、Dashboard1.1 分布图1.2 控制图I-MR控制图&#xff1a;单值极差控制图Xbar-R图&#xff1a;均值极差控制图 1.3 趋势图 二、Xbar-R控制图判断异常的条件Xbar控制图R控制图 三、均值极差控制图【Xbar-R】3.1 基础理解XbarR最终绘制的Xbar-R图 3.2 如何看图看图顺序…

Linux下安装python与pip源配置(详细教程)

文章目录 Linux下安装python前置准备解压数据编译安装配置环境变量方式1&#xff1a;设置软连接方式2&#xff1a;添加PATH PIP源配置系统设置pip源临时设置pip源 问题解决缺少zlib包 Linux下安装python 前置准备 # 下载地址 https://www.python.org/ftp/python/3.6.8/# wget…