Service 基础

news2024/10/6 23:17:16

今天开始来分享Service 的基础知识,后续我们可以慢慢打磨,分享 Service 的进阶知识和原理

Service 基本概念

Service 是 K8S 最核心的概念了

我们可以通过创建 Service ,为一组具有相同功能的容器应用提供一个统一的入口地址,并且可以将请求分发到后端的各个容器应用上

我们来看看完成的 Service 是什么样子的,我们来手写一份

apiVersion: v1
kind: Service
metadata:
  name: service name
  namespace:
  labels:
  - name: label name
  annotations:
  - name: annotations name
spec:
  selector: []
  type:	string
  clusterIP: spec ip
  sessionAffinity: string
  ports:
  - name: ports name
    protocol: tcp/udp
    port: int
    targetPort: int
    nodePort: int
  status:
    loadBalancer:
      ingress:
        ip: string
        hostname: string
  

整一张表来解释一下上面某些字段的含义

属性字段值类型必须?说明
metadata.labels[]listno自定义属性标签
metadata.annotations[]listno自定义注解标签
spec.selector[]listyes配置 label selector
选择具有指定 label 标签的pod 作为管理范围
spec.typestringyesservice 的类型
- ClusterIP

虚拟服务的 ip,用于 K8S 内部 的pod 相互访问
- NodePort
使用的是宿主机的端口,外部可以通过访问 node 的 ip 和端口,就可以达到访问内部服务的目的
- loadBalancer
使用外接的负载均衡器完成到服务的负载分发,需要在 loadBalancer 字段处指定外部负载均衡器的 ip 地址,并且同时需要定义 ClusterIP 和 NodePort
spec.ClusterIPstringno虚拟服务的 ip 地址
如果 spec.type 指定的是 loadBalancer ,那么这个 ip 就需要写,其他的情况,可以不写,系统默认分配
spec.sessionAffinitystringno是否支持 session
默认值是空,可以填我们的 ClusterIP
功能是,将一个源 IP 地址的客户端访问的请求,都转发到同一个后端 pod
spec.ports[].portintno内部服务监听的端口
spec.ports[].targetPortintno需要转发到 pod 的端口号
spec.ports[].nodePortintno指定映射到物理机的端口号,这个时候需要 spec.type=NodePort
spec.statusobjectno属于外部均衡器,status 下面的都是 外部均衡器的配置了

Service 的名称定义

对于 service 的对象名称的定义也是需要遵循规范的

点我查看名称定义

例如截一个官方说明的图

关于 service 的端口

定义 service 的时候,我们可以定义 1 个端口,也可以定义 多个端口的

例如这样的是 service 的 1 个端口 ,官方的案例是内部服务监听 80 端口,会转发到 pod 的 9376 端口,用的是 tcp 协议

这样的是 2 个端口,属于 service 的多端口定义

例如我们的服务开了多个端口,这些端口是不能定义冲突的,我们必须要定义好每个端口的名称,端口号,以及协议,不能有歧义,如下:

上述的 1 个端口和多个端口,都是 服务监听的端口号,都是作为服务端的,需要客户端来访问的

外部的 service

如果是我们的 service 需要访问外部的一个服务,需要和外部进行一个连接,例如数据库服务,或者访问外部的一个集群的时候,我们需要如何写我们的 service 呢?

我们可以通过在 yaml 中 创建一个 无 Label Selector 的 Service 实现

我们仔细看一下,上面官方写的 1 个端口 和 多个端口的 yaml,都会使用 Label Selector 来指定一个 app,目的是为了运行起来之后能够关联到对应的 pod

例如这样

那么我们来写一个 无 Label Selector 的服务吧

  • 无 Label Selector 的 Service
apiVersion: v1
kind: Service
metadata:
  name: xiaomotong-svc
spec:
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80

写完这个 service 发现,**他不知道如何去找到 pod 的,那么我们可以写一个 endpoints,**名称需要和 上面这个service 的名称一致,这样 endpoints 指定的 pod ,就可以被 上面这个service 访问到了

  • 写一个 Endpoints
apiVersion: v1
kind: Endpoints
metadata:
  name: xiaomotong-svc
subsets:
- addresses:
  - IP: 10.253.33.3
  ports:
  - port: 8080 

这样写,将 Endpoints 要和 上面的 service 就对应起来的, 感兴趣的 xdm 可以在自己的 k8s 集群上面玩一玩, 此处写的 subsets.addresses.IP 是一个能够运行的 pod ip

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

欢迎点赞,关注,收藏

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

好了,本次就到这里

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

我是阿兵云原生,欢迎点赞关注收藏,下次见~

更多的可以查看 零声每晚八点直播:https://ke.qq.com/course/417774

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

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

相关文章

linux上搭建ftp服务

linux上搭建ftp服务简要过程。 1.安装 在目标主机上安装对应软件。 rpm -qa | grep vsftpd # 查看是否已经安装了vsftpd软件 yum install -y vsftpd # 安装2.配置 安装好了之后可在这个路径下编辑配置文件,按需配置,这里采用默认。 vi /etc/vsftp…

螺杆支撑座要怎么选?

螺杆支撑座是连接螺杆和电机的轴承固定座,使用螺杆支撑座可以获得高刚性、高精度的稳定的回转性能,这也是大部分厂商愿意使用的原因之一。 目前,市面上做螺杆支撑座的品牌还比较少,给大家选择的空间也不多,那么我们如何…

centos8运行cloudstack4.18

安装软件: mysql 5.7.42 node v10.24.0 git 2.34.1 jdk openjdk version "11.0.19" 2023-04-18 maven Apache Maven 3.8.3 (ff8e977a158738155dc465c6a97ffaf31982d739)自行配置:nfs 代码克隆地址: git clone https://git-wip-us…

Lesson1-1:OpenCV简介

图像处理 学习目标 了解图像的起源知道数字图像的表示 1 图像的起源 1.1 图像是什么 图像是人类视觉的基础,是自然景物的客观反映,是人类认识世界和人类本身的重要源泉。“图”是物体反射或透射光的分布,“像“是人的视觉系统所接受的图在…

ss客服让您在Facebook 的客户服务更便捷

ss客服让您在Facebook Messenger 的客户服务更便捷 在这个信息时代,新兴通讯软件蓬勃兴起,比如Facebook Messenger。事实证明,这对企业来说非常有利,同时突出了电子邮件、网络聊天和电话等传统渠道的局限性。在传统渠道上&#xf…

fastadmin表格列表内部自定义按钮

效果图: 直接上代码: 打开js渲染文件---》找到渲染原生的按钮: {field: "operate",title: __("Operate"),table: table,events: Table.api.events.operate,buttons: [//可多个按钮{name: "record", //名称tex…

vue + js 实现导出excel

效果如下图所示: 下面是具体的步骤: 第一步:安装依赖 **注意:**安装的时候注意版本号 npm install --save file-saver xlsx第二步:新建导出文件 Export2Excel.js /* eslint-disable */ import { saveAs } from f…

C#winform listBox组件批量删除

修改listBox组件属性:可以选中多个板坯号 选中板坯列表,在界面上点击删除按钮,触发删除方法deleteList: private void deleteList() { ListBox.SelectedIndexCollection sic listBoxProducts.SelectedIndice…

亚马逊云科技推出Amazon AppFabric,SaaS安全不断加码

亚马逊云科技近日宣布推出Amazon AppFabric来增强公司在软件即服务(SaaS)应用程序方面的现有投入。Amazon AppFabric是一项无代码服务,可以为客户提高安全性,管理水平和生产力。只需在亚马逊云科技管理控制台上点击几下&#xff0…

gerrit 遇到的问题汇总

更新远程代码 git pull --rebase 回退到指定版本 get reset --hard commitid 修改之前的提交 git commit --amend 问题一 本地提交了两个记录到远程,远程还没有合并,本地使用 git reset --soft HEAD~1 回退到了上一个提交,现在需要将本地…

最强的“矛“ 验关键的“盾“ | “铸网-2023“ 赛宁数字孪生靶场深度验证湖南工业互联网安全

为深入推动“智赋万企”数字安全屏障工程,由工业和信息化部网络安全管理局指导,湖南省工信厅和湖南省通管局主办的“铸网—2023”湖南省工业互联网企业网络安全实战攻防演练,于近日圆满收官。赛宁网安以数字孪生靶场为基础,构建专…

学习Vue3——Ref全家桶

参考地址 小满Vue3视频 ref 创造响应式对象 这样修改num的值是可以&#xff0c;但是页面展示不正常&#xff0c;因为这不是响应式的&#xff0c;无法被vue追踪 <template><div>{{ num }}</div><button click"change">修改</button&g…

企业电子招投标采购系统源码之-java spring cloud

​ 信息数智化招采系统 服务框架&#xff1a;Spring Cloud、Spring Boot2、Mybatis、OAuth2、Security 前端架构&#xff1a;VUE、Uniapp、Layui、Bootstrap、H5、CSS3 涉及技术&#xff1a;Eureka、Config、Zuul、OAuth2、Security、OSS、Turbine、Zipkin、Feign、Monitor、…

JavaSE-13 【API工具类和包装类】

文章目录 JavaSE-13 【API工具类和包装类】第一章 Object类1.1 概述1.2 toString 方法1.3 equals 方法1.4 Objects类 第二章 日期时间类2.1 Date类2.2 DateFormat类2.3 Calendar类 第三章 System类3.1 类介绍3.2 currentTimeMillis方法3.3 arraycopy方法 第四章 包装类4.1 概述…

海思3559:MMZ内存、OS内存配置

前言 海思3559的DDR最大支持到8GB hi3559av100芯片的内存地址范围 (1)通过查阅数据手册可知《Hi3559AV100 专业型 Smart IP Camera SoC 用户指南》&#xff0c;芯片的内存地址范围是0x4000_0000-0x23FFF_FFFF&#xff0c;最大能支持8G内存&#xff1b;   (2)海思芯片把内存分…

Matlab绘制多个曲线的图及局部放大细节展示

绘制多个曲线的图及局部放大细节展示 在科学研究中&#xff0c;经常需要绘制多个曲线并展示局部放大的细节(如下图)。 本篇博客介绍了如何使用MATLAB绘制多个曲线&#xff0c;并在同一张图中添加局部放大图&#xff0c;以展示具体细节。 示例数据 首先&#xff0c;我们准备…

六、2.云尚办公-权限管理

云尚办公系统&#xff1a;前端权限对接&#xff08;了解&#xff09; B站直达【为尚硅谷点赞】: https://www.bilibili.com/video/BV1Ya411S7aT 本博文以课程相关为主发布&#xff0c;并且融入了自己的一些看法以及对学习过程中遇见的问题给出相关的解决方法。一起学习一起进步…

pcl经典算法60例——(1)打开并显示点云

一、搭建MFC框架 1、环境说明 本教程为vs2022&#xff0c;pcl1.12.1版本&#xff0c;其他版本自己进行适当修改&#xff0c;仅供参考。 2、方法步骤 (1)新建项目&#xff0c;选择“基于对话框”&#xff0c;然后点击“下一步” 二、配置pcl环境 关于配置环境&#xff0c;网…

Linux--man指令

语法&#xff1a; man [选项] 命令 功能&#xff1a; 查询命令的详细信息&#xff0c;包括man命令本身 选项&#xff1a; -k 根据关键字搜索联机帮助num 只在第num章节找-a 将所有章节的都显示出来&#xff0c;比如 man printf 它缺省从第一章开始搜索&#xff0c;知道就停止…

spring security登录接口鉴权原理

使用了gatewayspring security,项目当初打算使用gateway统一鉴权的&#xff0c;整合步骤点击此处 当时没有深入security&#xff0c;今天偶然看代码发现验证密码的时候加密了&#xff0c;但是登录表单提交的密码没有加密。看下代码吧 登录接口验证账号密码是否正确 postman登录…