【K8s】专题七(1):Kubernetes 服务发现之 Service

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号!

公众号二维码


目录

一、基本介绍

二、工作原理

三、对象类型

四、资源清单(示例)

五、创建对象

附录

1、Kubernetes 的三种 IP 类型

2、Kubernetes 各种 “Port” 的含义


一、基本介绍

Service 是 Kubernetes 提供的一种服务发现机制,主要作用是通过 nodeSelector(标签选择器)关联 Pod 对象,以单一入口方式提供内部服务,解决了 Pod 重建后 IP 地址发生变化的问题。

Service 具有以下特点:

  • Service 只支持四层负载均衡,即通过 IP + 端口的方式转发请求
  • Service 对象创建后,kube-dns 或 coredns 可以为其生成唯一的 DNS NAME
  • Service 可以将服务请求均衡分发到关联的 Pod 中,实现负载均衡


二、工作原理
  • 关联 Pod:定义 Service 对象,通过标签指定要关联的 Pod,匹配标签的 Pod IP 和端口列表组成 Endpoints(负载均衡列表)
  • 虚拟 IP:集群为 Service 分配一个虚拟的 IP 地址(ClusterIP),因此无法 ping 通
  • 内部解析:集群 DNS 服务会为 Service 对象创建 DNS 条目
  • 服务发现:集群内可以通过 Service 名称来发现并访问服务,而不需要知道 Pod 的 IP 地址
  • 负载均衡:集群通过 kube-proxy 组件将访问请求负载均衡到 Endpoints 上
  • 扩展性:如果 Pod 的数量发生变化,集群会自动更新 Service 和 kube-proxy 的配置


三、对象类型
  • ClusterIP:默认类型,通过集群内部 IP 暴露服务,实现服务间调用,服务只能在集群内部访问
  • NodePort:通过 Node 节点的 IP 和 静态端口暴露服务,路由到 ClusterIP 服务,通过 iptables 赋予了调用 Node 节点特定 Port 就能访问集群内部 Service 的能力
  • LoadBalancer:一般为云厂商的负载均衡器(收费),可以向外部暴露服务。路由到 ClusterIP 服务和 NodePort 服务
  • ExternalName:直接引用集群外部服务


四、资源清单(示例)
# demo-servcie.yaml
apiVersion: v1
kind: Service
metadata:
  name: demo-service
spec:
  selector:                                   # 没有match,否则会报错
    app: web
  type: ClusterIP / NodePort / LoadBalancer
  #clusterIP: xx.xx.xx.xx / None              # 无头 Service 配置为 Node
  #externalIPs:
  #- xx.xx.xx.xx
  ports:
  - name: http                # 注意:暴露多个端口时,需要指定每个端口的 name
    protocol: TCP / UDP
    port: 80
    targetPort: 8080          # 建议使用 containerPort 的名称,如 http,https
    nodePort: 30000-32767
  - name: https
    protocol: TCP / UDP
    port: 443
    targetPort: 8443          # 好处:containerPort 改变后,不需要修改
    #nodePort: 30001          # 端口范围:30000-32767


五、创建对象
# 方法一:基于已有 Deployment 对象创建
kubectl expose deployment <对象名称> --type=<类型> --port=<port> --targetPort=<targetPort>
# 示例:
kubectl expose deployment demo-deployment --type=ClusterIP --port=80 --targetPort=80

# 方法二:命令行创建
kubectl create servcie <Servcie 类型> <对象名称> --tcp=<port>:<targetPort>
# 示例:
kubectl create servcie clusterip demo-servcie --tcp=80:80

# 方法三:基于资源清单创建
kubectl create -f demo-servcie.yaml
或
kubectl apply -f demo-servcie.yaml


附录
1、Kubernetes 的三种 IP 类型
  • Node IP:Node 节点的 IP 地址,即物理网卡的 IP 地址 
  • Cluster IP:Service对象的 IP 地址,无法 ping 通
  • Pod IP:根据 docker0 网桥的网段分配,由 CNI 插件保证不会冲突

2、Kubernetes 各种 “Port” 的含义
  • port:指定 Service 在集群内部暴露的端口
  • nodePort:指定 Service 在集群外部暴露的端口(30000-32767)
  • targetPort:指定 Pod 的监听端口(不指定的情况下与 Port 的值保持一致)
  • containertPort:指定 container 中服务的监听端口(应与 targetPort 一致)
  • hostPort:指定 containerPort 映射到主机的端口

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

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

相关文章

Java---SpringBoot详解一

人性本善亦本恶&#xff0c; 喜怒哀乐显真情。 寒冬暖夏皆有道&#xff0c; 善恶终归一念间。 善念慈悲天下广&#xff0c; 恶行自缚梦难安。 人心如镜自省照&#xff0c; 善恶分明照乾坤。 目录 一&#xff0c;入门程序 ①&#xff0c;创建springboot工程&#…

【Qt】QTabWidget的tab页隐藏问题

在Qt中&#xff0c;使用 ​ui->tab1->setHidden(true);​ 来隐藏一个 ​QTabWidget​ 的特定标签页可能不会达到预期的效果&#xff0c;因为 ​setHidden(true)​ 是用于隐藏整个 ​QWidget​ 的&#xff0c;而不是隐藏 ​QTabWidget​ 中的一个标签页。 要隐藏 ​QTabW…

Python高级(三)_正则表达式

Python高级-正则表达式 第三章 正则表达式 在开发中会有大量的字符串处理工作,其中经常会涉及到字符串格式的校验。 1、正则表达式概述 正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expression,在代码中常简写为regex、…

【深度好文】合作伙伴关系管理自动化:双向共赢新趋势

在当今快速变化的商业环境中&#xff0c;合作伙伴关系已成为企业成功的关键因素之一。为了更高效地管理这些关系&#xff0c;合作伙伴关系管理自动化正逐渐成为行业的新趋势&#xff0c;它不仅简化了管理流程&#xff0c;更促进了双方共赢的局面。 一、传统管理 VS 自动化管理 …

Spring系列二:基于XML配置bean 下

基于XML配置bean &#x1f496;配置bean后置处理器&#x1f496;通过属性文件配置bean&#x1f496;基于XML的bean的自动装配&#x1f496;Spring El 表达式配置Bean &#x1f496;配置bean后置处理器 1在spring的ioc容器, 可以配置bean的后置处理器 2.该 处理器/对象 会在bean…

【AI大模型】通义灵码的部署与使用

【AI大模型】通义灵码的部署与使用 目前已支持&#xff1a; JetBrains IDEsIDE 版本&#xff1a;IntelliJ IDEA、PyCharm、GoLand、WebStorm、Android Studio 等 2020.3 及以上操作系统&#xff1a;Windows 7 及以上、macOS、LinuxVisual Studio CodeIDE 版本&#xff1a;1.68.…

常见网页问题解决

用edge浏览器打印功能时&#xff0c;出现瞬间或加载几秒后突然闪退情况&#xff0c;本来以为是浏览器出了问题&#xff0c;去重置设置也没有&#xff0c;后来又下载了Chrome浏览器&#xff0c;没想到还是一样&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;想着…

亿发512版本更新,看数据驾驶舱、扫码拣货、UDI序列号的新功能

如果您正寻求突破传统业务模式的束缚&#xff0c;希望拥抱数字化转型带来的无限可能&#xff0c;我们诚邀您体验亿发软件。亿发专业团队将为您提供个性化的咨询和定制服务&#xff0c;帮助您的企业快速适应市场变化&#xff0c;实现业务模式和商业模式的创新。

07-7.5.1 散列表的基本概念

&#x1f44b; Hi, I’m Beast Cheng &#x1f440; I’m interested in photography, hiking, landscape… &#x1f331; I’m currently learning python, javascript, kotlin… &#x1f4eb; How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以…

Centos7下zabbix安装与部署

Centos7下zabbix安装与部署 一、Zabbix介绍 1、zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案 2、zabbix能监视各种网络参数&#xff0c;保证服务器系统的安全运营&#xff1b;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各…

2024最新版pycharm安装激火教程,附安装包+激huo马,Python教程,pycharm安装包!!

PyCharm的安装 PyCharm 是一个专门为 Python 开发者设计的 IDE&#xff0c;它同样具有代码导航、重构、调试和分析等功能。PyCharm 支持多种项目类型&#xff0c;如普通项目、Python 测试项目、Django 项目等&#xff0c;并提供了大量的内置模板和插件&#xff0c;以帮助您更快…

【CT】LeetCode手撕—8. 字符串转换整数 (atoi)

目录 题目1- 思路2- 实现⭐8. 字符串转换整数 (atoi)——题解思路 3- ACM 实现 题目 原题连接&#xff1a;8. 字符串转换整数 (atoi) 1- 思路 思路 x 的平方根 ——> 利用二分 ——> 二分的 check条件为 k^2 < x 2- 实现 ⭐8. 字符串转换整数 (atoi)——题解思路 …

响应式建站公司企业官网源码系统 带源代码以及搭建部署教程

系统概述 响应式建站公司企业官网源码系统是一套集设计、开发、部署于一体的综合性解决方案。它旨在为企业提供一个易于定制、功能强大、适应各种设备屏幕的官方网站平台。 该系统采用先进的技术架构&#xff0c;确保网站的稳定性和性能。它能够与各种后端数据库和服务器环境…

四川赤橙宏海商务信息咨询有限公司抖音电商服务靠谱吗?

在数字化浪潮席卷全球的今天&#xff0c;电商行业蓬勃发展&#xff0c;各种新兴电商平台层出不穷。其中&#xff0c;抖音电商以其独特的社交属性和庞大的用户基础&#xff0c;迅速崛起为行业新星。四川赤橙宏海商务信息咨询有限公司&#xff0c;作为专注于抖音电商服务的佼佼者…

Nodejs 第八十六章(部署pm2)

Node.js如何部署? 如果要部署Nodejs项目&#xff0c;第一点肯定是需要有台服务器&#xff0c;第二点需要一个部署工具这里使用pm2 PM2 PM2 是一个非常流行的 Node.js 进程管理工具&#xff0c;用于在生产环境中运行和监控 Node.js 应用程序。它提供了多种功能&#xff0c;帮…

解决antd modal+Form 一起用,第二次打开会显示上次输入数据的问题

问题描述 在antd中使用<Modal/>包裹<Form/>时, 第二次打开<Modal/>会自动带入上一次输入的内容。 如下&#xff0c;第一次打开&#xff1a; 第二次打开&#xff1a; 解决办法 给<Modal/>组件添加属性&#xff1a;destroyOnClose{true}&#xff0c…

[RK3308H_Linux] 关于8+2(8路模拟麦克风 + 2路es7243e回采)的调试心得

问题描述 RK3308H 使用8路个模拟麦克风录音&#xff0c;2路用es7243e做回采 解决方案&#xff1a; 首先先调8路模拟麦克风&#xff0c;根据原理图确定使用的是哪路I2S。 以下为dts配置&#xff0c;acodec的属性注释附上。 &acodec {status "okay";rockchip,m…

个人怎么交易现货黄金:加速形态

我们作为普通个人&#xff0c;在现货黄金市场中交易就需要掌握相应的现货黄金投资技巧。下面我们就来介绍一个&#xff0c;个人怎么交易现货黄金的形态——加速形态。 加速形态是用于判断市场趋势力竭的情况&#xff0c;这种趋势可以是上升&#xff0c;也可以是下跌。但是要注意…

【后端开发实习】用Nodejs操作mongodb结合Mongoose实现数据库操作

用Nodejs操作mongodb结合Schema实现数据库操作 Mongoose创建Schema定义Schema对象并映射到数据库Model的使用创建文档内容删除文档内容修改文档内容查询文档内容 Document的使用创建并保存将文档对象转换为JSON对象 模块化数据库连接模型初始化 项目部署路由定义后端操作定义启…

探索大模型:袋鼠云在 Text To SQL 上的实践与优化

Text To SQL 指的是将自然语言转化为能够在关系型数据库中执行的结构化查询语言&#xff08;简称 SQL&#xff09;。近年来&#xff0c;伴随人工智能大模型技术的不断进步&#xff0c;Text To SQL 任务的成功率显著提升&#xff0c;这得益于大模型的推理、理解以及指令遵循等能…