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

k8s中的微服务

什么事微服务

微服务可以通过标签来找到能发布的服务

现在还不知道能让谁来做负载均衡,需要做端口暴漏

当我们访问111时,它会带我们访问后端的四个IP

当我们改变了标签,并覆盖后,原先这个这个标签的主机就被开出去了

重新返回,把标签还原

查看策略,当我们访问这个IP时,他的策略把他带去访问后端的IP地址

这个策略本身是不太好的,IP地址总是会变,而且是防火墙里的策略,数据一多,每次扫描都会造成浪费

即便测试器删了,微服务也不会被删除

要再次删除微服务


微服务的类型

微服务类型作用描述
ClusterIP默认值,k8s系统给service自动分配的虚拟IP,只能在集群内部访问
NodePort将Service通过指定的Node上的端口暴露给外部,访问任意一个NodeIP:nodePort都将路由到ClusterIP
LoadBalancer在NodePort的基础上,借助cloud provider创建一个外部的负载均衡器,并将请求转发到 NodeIP:NodePort,此模式只能在云服务器上使用
ExternalName将服务通过 DNS CNAME 记录方式转发到指定的域名(通过 spec.externlName 设定

LoadBalancer:集群内访问集群外

ExternalName:集群外访问集群内


ipvs模式

之前说过,iptables防火墙里的策略不好,所以这里我们可以换成ipvs模式

查看集群的配置

更改集群的配置

更改集群资源的命令

如果什么都没有,说明是默认的使用iptables,这里我们加上ipvs

修改配置后,要重启,这里可以删掉之前的网络配置pod,重新刷新新的pod出来,此时就是新策略的pod


微服务类型详解

clusterip

clusterip模式只能在集群内访问,并对集群内的pod提供健康检测和自动发现功能

追加内容,此时微服务和控制器就在一个配置文件里了

只有集群内部的IP,集群外部的不暴露

查看clusterIP是否成功

  • 这个虚拟 IP(10.99.60.157)在集群内部是可访问的(从 master 节点能成功 curl 通,说明 ClusterIP 有效)
  • Service 已正确关联后端 Pod(返回 Hello MyApp | Version: v1 证明请求被转发到了 myapp:v1 镜像的 Pod 并处理)

ClusterIP 服务的内部通信机制

  1. 集群内部的客户端(如其他 Pod、节点上的进程)想要访问 myappv1 服务时,会使用 Service 的 ClusterIP:10.99.60.157:80
  2. 请求到达任意节点的内核时,IPVS 规则会匹配 10.99.60.157:80,并按轮询策略将流量转发到后端的两个 Pod(10.244.1.15:80 或 10.244.2.15:80)。
  3. Pod 处理请求后,通过反向 NAT 将响应返回给客户端,客户端全程只感知 ClusterIP,无需知道具体 Pod 的 IP(即使 Pod 重建、IP 变化,Service 也会自动更新转发规则)。

想要访问发布,可以手动加入

172.25.254.111:Service 的 ExternalIP(手动配置的外部可访问 IP)

10.244.1.1510.244.2.15:Deployment myappv1 管理的两个 Pod 的实际 IP(容器运行的真实 IP)

ClusterIP 类型的 Service 核心作用是:提供一个固定的虚拟 IP(ClusterIP),通过标签关联动态变化的 Pod,并通过 IPVS 实现负载均衡。数据传输的核心路径是:
客户端 Pod → ClusterIP(10.99.60.157)→ IPVS 负载均衡 → 后端 Pod(10.244.1.15/2.15)

如果不写,对外的IP就没了

默认情况下,只对集群内部的访问生效

前面是微服务的名称加上命名空间,对微服务进行域名解析,能解析到她的IP

ClusterIP中的特殊模式headless

之前有了无头服务,要删掉,不然影响实验

没有了IP以后,后端就没有调度了

此时我们可以用dns来写,把要访问的server直接指定到后端的服务器中去

#开启一个busyboxplus的pod测试


nodeport

之前的服务设置了无头服务,这里要删除之前环境,重新运行

多了一个端口

这个端口用来直接对外暴露

nodeport在集群节点上绑定端口,一个端口对应一个服务

直接负载到下面两个

用clusterip来访问后端的

访问模式

对应的端口是不固定的,但是我们可以直接指定,但是有范围限制最大30000

但是想要超过限制也可以,修改配置文件就行。但是集群会挂掉,要等待自愈

加上这句话- --service-node-port-range=30000-40000

刚刚还不能超过的限制,现在就可以了


loadbalancer

没有云平台的情况

有云平台的情况,把服务搭建到云平台上,云平台会给一个自动分配对外ip的业务

状态正在获取,默认无法分配外部访问IP

可以访问,但是对外访问时,并不好做

如果主机没有IP,可以用dhcp来分配,但是此时集群中没有,所以我们要做一个类似的

metaILB

部署安装

必须要把集群做成ipvs的模式

并且重启网络方面的pod

这个文档里的路径已经修改好了,如果是未修改的,记得把路径换成自己的软件仓库

这个生效了之后,才能改配置

之前这里还是正在生效,现在已经有了IP

#通过分配地址从集群外访问服务

已经自动分配对外IP

http://www.dtcms.com/a/329086.html

相关文章:

  • CSS动态视口单位:彻底解决移动端适配顽疾,告别布局跳动
  • Prompt Engineering+AI工具链:打造个人专属的智能开发助手
  • 第六十六篇:AI模型的“口才”教练:Prompt构造策略与自动化实践
  • 从0开始跟小甲鱼C语言视频使用linux一步步学习C语言(持续更新)8.13
  • SplitLanzou安卓版(蓝奏云第三方客户端) v1.8.2 免费版
  • 云计算-实战 OpenStack 私有云运维:服务部署、安全加固、性能优化、从服务部署到性能调优(含数据库、内核、组件优化)全流程
  • 飞凌OK3568开发板QT应用程序编译流程
  • Nginx 超详细详解和部署实例
  • 大致计算服务器磁盘使用情况脚本
  • 从零到一:TCP 回声服务器与客户端的完整实现与原理详解
  • pycharm配置连接服务器
  • 解析Vue3中集成WPS Web Office SDK的最佳实践
  • 物理服务器和虚拟机在性能上的不同
  • 【opencv-Python学习笔记(3):色彩空间类型及其转换】
  • 【Abp.VNext】Abp.Vnext框架模块学习
  • 工业元宇宙:迈向星辰大海的“玄奘之路”
  • TCP客户端Linux网络编程设计详解
  • docker+nginx+keepalived+openappsec+web ui+crowdsec部署安全代理
  • IDEA创建一个VUE项目
  • SVN提交服务器拒绝访问的问题
  • 服务器硬件电路设计之 I2C 问答(五):I2C 总线数据传输方向如何确定、信号线上的串联电阻有什么作用?
  • 从零开始搭建私服务器
  • opencv:直方图
  • 【AI论文】GLM-4.5:具备智能体特性、推理能力与编码能力的(ARC)基础模型
  • Visual Studio Code 跨平台快捷键指南:Windows 与 macOS 全面对比
  • 第十三节:后期处理:效果增强
  • 开发避坑指南(24):RocketMQ磁盘空间告急异常处理,CODE 14 “service not available“解决方案
  • 2025年,Javascript后端应该用 Bun、Node.js 还是 Deno?
  • python基于Hadoop的超市数据分析系统
  • 高防CDN和高防IP的各自优势