Kubernetes Service

一、Service:Kubernetes 中的服务返现与负载均衡

1、为什么需要服务发现

Pod 生命周期短暂,IP 地址随时变化。

Deployment 等的 Pod 组需要统一访问入口和做负载均衡。

应用间在不同环境部署时保持同样的部署拓扑和访问方式。

2、应用服务如何暴露到外部访问和负载均衡

在 K8s 里面,服务发现与负载均衡就是 K8s Service。

K8s Service 向上提供了外部网络以及 pod 网络的访问,即外部网络可以通过 service 去访问,pod 网络也可以通过 K8s Service 去访问。

向下,K8s 对接了另外一组 pod,即可以通过 K8s Service 的方式去负载均衡到一组 pod 上面去。

3Service 语法

ports 定义了用于 K8s Service 服务发现的协议以及端口。

这个示例中定义的是 TCP 协议,端口是 80,目的端口是 9376,效果是访问到这个 service 80 端口会被路由到后端的 targetPort,就是只要访问到这个 service 80 端口的都会负载均衡到后端 app:MyApp 这种 label 的 pod 的 9376 端口。

二、创建和查看 Service

1、命令

使用 kubectl apply -f service.yaml 或 kubectl created -f service.yaml 可以创建一个 service。

创建好之后,可以通过 kubectl discribe service 去查看 service 创建之后的一个结果。

2、架构

在 service 创建之后,它会在集群里面创建一个虚拟的 IP 地址以及端口,在集群里,所有的 pod 和 node 都可以通过这样一个 IP 地址和端口去访问到这个 service。

service 会把它选择的 pod 及其 IP 地址都挂载到后端。这样通过 service 的 IP 地址访问时,就可以负载均衡到后端这些 pod 上面去。

当 pod 的生命周期有变化时,比如说其中一个 pod 销毁,service 就会自动从后端摘除这个 pod。即使 pod 的生命周期有变化,它访问的端点是不会发生变化的。

三、访问 service

1、集群内访问 service

集群里面的 pod 要访问到所创建的 service 有三种方式:

(1) 通过 service 的虚拟 IP 去访问:

例如创建的 my-service 这个服务,通过 kubectl get svc 或者 kubectl discribe service 可以看到它的虚拟 IP 地址是 172.29.3.27,端口是 80,然后可以通过这个虚拟 IP 及端口在 pod 里面直接访问到这个 service 的地址。

(2) 直接访问服务名,依靠 DNS 解析:

同一个 namespace 里 pod 可以直接通过 service 的名字去访问所声明的 service。

不同 Namespace:加上 namespace 名访问 {servicename}.{namespace} 。

(3) 通过环境变量访问:

在同一个 namespace 里的 pod 启动时,K8s 会把 service 的一些 IP 地址、端口,以及一些简单的配置,通过环境变量的方式放到 K8s 的 pod 里。

2Headless Service

service 有一个特别的形态 Headless Service。service 创建的时候可以指定 clusterIP:None,告诉 K8s 说我不需要 clusterIP(集群的虚拟 IP)

实际效果就是集群的 pod 访问 my-service 时,会直接解析到所有的 service 对应 pod 的 IP 地址,返回给 pod,然后 pod 里面自己去选择一个 IP 地址去直接访问。

3、向集群外暴露 Service

service 对外暴露给公网的方式有两种,一个是 NodePort,一个是 LoadBalancer。

① NodePort 的方式是在集群的节点上去暴露节点上的一个端口,相当于在节点的端口访问到之后会再做一层转发,转发到虚拟的 IP 地址上面。

② LoadBalancer 是在所有的节点前又挂一个负载均衡。这个负载均衡会提供一个统一的入口,并把所有它接触到的流量负载均衡到每一个集群节点的 node pod 上面去,node pod 再转化成 ClusterIP,去访问到实际的 pod 上面。

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

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

相关文章

免费!宝藏网站合集,每一个都不容错过

在科技日新月异的时代,PPT已经成为各行各业必不可少的展示工具。为了帮助大家提升PPT制作技巧,本文将为您介绍几款堪称神秘的PPT制作利器。它们分别是PPT宝库、PPT超级市场、魔法幻灯片以及优品PPT。 优品PPT 简介 优品PPT是一个专注于提供高质量PPT模…

JSP实现数据传递与保存

1.HTML页面转换JSP页面 直接再HTML页面最顶端添加page指令,修改文件后缀名;反之; 2.JSP内置对象 对象 描述 request 每当客户端请求JSP页面时,JSP引擎会制造一个新的request对象来代表这个请求。 response 当服务器创建req…

Linux-信号2

文章目录 前言一、信号是如何保存的?int sigemptyset(sigset_t *set);int sigfillset(sigset_t *set);int sigaddset (sigset_t *set, int signo);int sigdelset(sigset_t *set, int signo);int sigismember(const sigset_t *set, int signo);int sigpen…

VS统计代码行数

1.使用查找和替换方式 按CTRLSHIFTF (Find in files),勾上支持正则表达式, 然后输入搜索内容:^:b*[^:b#/].*$ 如图所示: 2.查看查询结果 需要注意:#开头和/开头或者空行都不计入代码量。

【研发日记】Matlab/Simulink技能解锁(二)——在Function编辑窗口Debug

目录 前言 行断点 条件断点 前言 见《【研发日记】Matlab/Simulink技能解锁(一)——在Simulink编辑窗口Debug》 行断点 当Matlab Function出现异常时,如果能确定大致的代码段,就可以在相应的行上设置一个断点(Breakpoint)&…

vs2022 qt 关于lnk2001和2019同时报错的问题

需要像qt中添加模块,这里,缺少qtopenglwidgets模块

大数据分析课----实时更新

1:Anaconda3 windows 安装 : 去官网下载; 然后安装好直接点next 点 i agree; 自己的电脑选第一个;学校的话选All Users ; 选择自己存放的目录; 选前三个; 安装即可; 一直…

解决Maven项目中的依赖冲突

1. 排查依赖冲突 在IDEA中下载插件 Maven Helper用于排查依赖版本冲突。 打开项目的pom.xml文件,点击下方的【Dependency Analyzer】按钮切换到依赖解析页面。 2. 解决版本依赖 在依赖解析页面进行依赖冲突排查操作: 点击 【Exclude】 后会在爆红处所对…

为PDF创建目录(侧边栏目录)

通过可以新建书签的pdf阅读器。 知云翻译:可以新建书签和子书签。 Adobe Acrobat:只能新建书签,不能建立子书签。

《操作系统原理》算法总结

一、进程调度算法 先来先服务调度算法(FCFS) 每次调度是从就绪队列中,选择一个最先进入就绪队列的进程,把处理器分配给该进程,使之得到执行。该进程一旦占有了处理器,它就一直运行下去,直到该…

String 类 经典例题题集

一、把字符串转换成整数 (atoi) 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C 中的 atoi 函数)。 函数 myAtoi(string s) 的算法如下: 读入字符串并丢弃无用的前导空格检查下一个字符…

中国企业走向世界,新加坡共和理工学院师生首站到访开源网安交流

近年来,中国企业在众多领域突飞猛进,不断追赶国际头部企业技术水平,甚至在某些领域已经达到国际领先水平,国内企业的最佳实践逐渐成为了全球精英学习研究的对象。 3月4日,由新加坡五所国立理工学院之一的新加坡共和理工…

金三银四刷完这个笔记,17K不能再少了....

大家好,最近有不少小伙伴在后台留言,得准备面试了,又不知道从何下手!为了帮大家节约时间,特意准备了一份面试相关的资料,内容非常的全面,真的可以好好补一补,希望大家在都能拿到理想…

【HTML】day01

列表 作用&#xff1a;布局内容排序整齐的区域。 列表分类&#xff1a;无序列表、有序链表、定义列表 无序列表 <ul><li>test</li><li>test</li><li>test</li><li><h1>h1</h1></li></ul><!DOCTYPE…

216.组合总和|||

// 定义一个名为Solution的类 class Solution {// 初始化一个用于存储结果的列表&#xff0c;其中每个元素是一个整数列表&#xff0c;表示一组组合List<List<Integer>> result new ArrayList<>();// 初始化一个LinkedList用于存储当前路径上的整数LinkedLi…

Linux 驱动 中断(一)

中断是指计算机运行过程中&#xff0c;出现某些意外情况需主机干预时&#xff0c;机器能自动停止正在运行的程序并转入处理新情况的程序&#xff0c;处理完毕后又返回原被暂停的程序继续运行。 在 Linux 中&#xff0c;中断处理是操作系统与硬件设备之间通信的重要方式之一。Li…

边缘计算网关在机床生产中的应用-天拓四方

随着工业4.0的推进&#xff0c;物联网&#xff08;IoT&#xff09;技术在各个工业领域中的应用日益广泛。特别是在机床行业&#xff0c;物联网技术的引入不仅提高了生产效率&#xff0c;还实现了对机床设备的实时监控和远程维护。在这一背景下&#xff0c;边缘计算网关的角色愈…

android开发实例,retrofit解析

面试官的问题&#xff1a; &#xff08;1&#xff09;问&#xff1a;点击一个图标到这个应用启动的全过程&#xff08;前面是项目经验没啥好说的&#xff09;。 答&#xff1a;点击图标后通过startActivity远程调用到ams中&#xff0c;ams中将新启动的activity以activityrecor…

2024新版SonarQube+JenKins+Github联动代码扫描(2)-SonarQube代码扫描

文章目录 前言一、docker方式安装sonar二、启动容器三、创建数据库四、启动sonarqube五、访问sonar六、如果访问报错-通过sonar日志定位问题七、修改密码八、汉化&#xff08;看个人选择&#xff09;九、扫描十、我遇到的Sonar报错以及解决办法 总结 前言 这是2024新版SonarQu…

Python算法题集_分割回文串

Python算法题集_分割回文串 题131&#xff1a;分割回文串1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【参数回退回溯单行回文检测】2) 改进版一【参数回退回溯lambda回文检测】3) 改进版二【参数回退回溯函数回文检测】4) 改进版三【堆栈回退…