kubernetes》》k8s》》Service

news2025/4/20 22:33:41

Kubernetes 中的 Service 是用于暴露应用服务的核心抽象,为 Pod 提供稳定的访问入口、负载均衡和服务发现机制。Service在Kubernetes中代表了一组Pod的逻辑集合,通过创建一个Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并将请求负载分发到后端的各个容器应用上。
在这里插入图片描述
在这里插入图片描述

流量转发流程

1、客户端访问 Service 的 ClusterIP 或 DNS 名称。
2、kube-proxy 根据 Service 规则将请求转发到后端 Pod。
3、请求到达 Pod 后由应用处理。

ExternalName类型

在Kubernetes(k8s)中,创建一个ExternalName类型的Service可以让你将集群内部的服务通过DNS CNAME机制映射到一个外部域名上。这样,集群内部的Pod就可以通过内部服务名访问外部服务,而无需知道外部服务的真实域名。以下是创建ExternalName类型Service的步骤:

定义YAML文件
首先,你需要定义一个YAML文件来描述Service的属性。以下是一个示例YAML文件,用于创建一个ExternalName类型的Service:

apiVersion: v1
kind: Service
metadata:
  name: my-externalname-service
  namespace: default # 或者你指定的其他命名空间
spec:
  type: ExternalName
  externalName: www.example.com # 外部服务的域名

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

指定IP地址

apiVersion: v1
kind: Service
metadata:
  name: web-nodeport
spec:
  type: NodePort
  selector:
    app: web
  ports:
    - port: 80
      targetPort: 80
      nodePort: 31000  # 手动指定节点端口(可选)
  ClusterIP: IP地址

HeadLess Service


apiVersion: v1
kind: Service
metadata:
  name: web-nodeport
spec:
  type: NodePort
  selector:
    app: web
  ports:
    - port: 80
      targetPort: 80
      nodePort: 31000  # 手动指定节点端口(可选)
  ClusterIP: None
# nginx 部署的yaml文件
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginxweb
spec:
  selector:
    matchLabels:
      app: nginxweb1
  replicas: 2
  template:
    metadata:
      labels:
        # 容器标签的名字,发布 Service时,selector 需要和这里对应
        app: nginxweb1
    spec:
      # 配置容器,数组类型,说明可以配置多个容器
      containers:
        # 容器名称
      - name: nginxwebc
        # 容器镜像
        image: nginx:latest
        imagePullPolicy: IfNotPresent
        # 暴露端口
        ports:
        -  containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginxweb-service
spec:
  externalTrafficPolicy: Cluster
  selector:
    # 选择哪一个容器标签作为服务, labels:》》 app:》》 nginxweb1   通过容器标签关联的 
    # 上面 Deployment可以单独一个yaml文件  只有知道 label标签就可以了 ,不需要知道 pod的ip地址。  相当于面对服务名不是IP地址
    app: nginxweb1
  ports:
  - protocol: TCP
    # Service 暴露的端口
    port: 80
    # Pod上的端口 这里是将 Service 暴露的端口 转发到 Pod 端口上
    targetPort: 80
    nodePort: 30080
  type: NodePort


K8S 分配给Service一个固定IP,这是一个虚拟IP(也称为 ClusterIP),并不是一个真实存在的IP,而是由K8S虚拟出来的,外部是寻址不到的。在K8S系统中,实际上是由kubernetes Proxy 组件负责实现虚拟IP路由和转发的。所以说在K8s node中我们都运行了Kubernetest Proxy,从而在容器覆盖网络之上又实现了Kubernetes层级的虚拟转发网络。
在这里插入图片描述

通过服务名访问》要在Pod内部才能通过服务名访问

在这里插入图片描述

# 同一命名空间内的 Service 访问
域名格式:<service-name>
# 跨命名空间的 Service 访问
域名格式:<service-name>.<namespace>.svc.cluster.local
# nginx 部署的yaml文件
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginxweb
  labels:
    app: niginx-l1
spec:
  selector:
    matchLabels:
      app: nginxweb1
  replicas: 2
  template:
    metadata:
      labels:
        # 容器标签的名字,发布 Service时,selector 需要和这里对应
        app: nginxweb1
    spec:
      # 配置容器,数组类型,说明可以配置多个容器
      containers:
        # 容器名称
      - name: nginxwebc
        # 容器镜像
        image: nginx:latest
        imagePullPolicy: IfNotPresent
        # 暴露端口
        ports:
        -  containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginxweb-service
  labels:
    app: niginx-s
spec:
  selector:
    app: nginxweb1
  ports:
  - protocol: TCP
    # Service 暴露的端口
    port: 80
    # Pod上的端口 这里是将 Service 暴露的端口 转发到 Pod 端口上
    targetPort: 80
  type: ClusterIP

在这里插入图片描述

在这里插入图片描述

创建Service会自动创建同名的Endpoint

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Service 不仅可以代理Pod,还可以代理任意其他后端。

比如代理K8s外部的服务。

虽然不常见,但Endpoint也可以手动创建。这通常用于特殊情况,比如需要显式指定Endpoint的IP地址和端口,例如在与外部非K8s管理的服务进行集成时,可能需要手动创建Endpoint来定义服务的访问信息,以便将其纳入K8s的服务管理体系中。

apiVersion: v1
kind: Endpoints
metadata:
  name: my-endpoint
subsets:
  - addresses:
      - ip: 地址
    ports:
      - port: 2020
        protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: my-endpoint
spec:
  ports:
    - protocol: TCP
      port: 80
      targetPort: 2020
      nodePort: 30100
  type: NodePort


在这里插入图片描述
在这里插入图片描述

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

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

相关文章

已注册商标如何防止被不使用撤销!

近年来已注册商标被撤销越来越多&#xff0c;不乏著名企业或机构&#xff0c;普推知产商标老杨看到前一阵看到央视和百度等申请的商标也被申请撤销&#xff0c;连续三年不使用撤销也是正常的商标流程。 已注册商标被撤销普推老杨看到案例主要是集中在一些早期申请注册的好记的商…

管理与维护samba服务器

允许 Linux、Unix 系统与 Windows 系统之间进行文件和打印机共享&#xff0c;使得不同操作系统的用户能够方便地访问和共享资源&#xff0c;就像在同一局域网中的 Windows 计算机之间共享资源一样。 server01安装Samba服务器 [rootserver ~]# rpm -qa | grep samba [rootserver…

EAGLE代码研读+模型复现

要对代码下手了&#xff0c;加油(ง •_•)ง 作者在他们自己的设备上展现了推理的评估结果&#xff0c;受第三方评估认证&#xff0c;EAGLE为目前最快的投机方法&#xff08;虽然加速度是评估投机解码方法的主要指标&#xff0c;但其他点也值得关注。比如PLD和Lookahead无需额…

2024期刊综述论文 Knowledge Graphs and Semantic Web Tools in Cyber Threat Intelligence

发表在期刊Journal of Cybersecurity and Privacy上&#xff0c;专门讲知识图谱技术和语义Web工具在网络威胁情报领域的作用&#xff0c;还把本体和知识图谱放在相同的地位上讨论。 此处可以明确一点&#xff1a;本体和知识图谱都可以用于网络威胁情报的应用&#xff0c;当然也…

linux socket编程之udp(实现客户端和服务端消息的发送和接收)

目录 一.创建socket套接字(服务器端) 二.bind将prot与端口号进行绑定(服务器端) 2.1填充sockaddr_in结构 2.2bind绑定端口 三.直接通信(服务器端) 3.1接收客户端发送的消息 3.2给客户端发送消息 四.客户端通信 4.1创建socket套接字 4.2客户端bind问题 4.3直接通信即可…

计算机网络 实验四 静态路由的配置与应用

一、实验目的 掌握路由器基础工作原理及静态路由协议机制熟练使用华为ENSP网络模拟器进行拓扑设计与设备配置建立系统化的网络故障排除思维通过实践验证静态路由在中小型网络中的部署优势 二、实验环境 硬件配置&#xff1a;标准PC终端软件工具&#xff1a;华为企业网络模拟…

[每周一更]-(第140期):sync.Pool 使用详解:性能优化的利器

文章目录 一、什么是 sync.Pool&#xff1f;二、sync.Pool 的基本作用三、sync.Pool 的主要方法四、sync.Pool 的内部工作原理五、sync.Pool 适用场景六、使用示例示例 1&#xff1a;基本使用输出示例&#xff1a;示例 2&#xff1a;并发使用 七、一个基于 sync.Pool 的 **Benc…

3.QT-信号和槽|自定义槽函数|自定义信号}自定义的语法}带参数的信号和槽(C++)

信号和槽 Linux信号 Signal 系统内部的通知机制. 进程间通信的方式. 信号源&#xff1a;谁发的信号.信号的类型&#xff1a;哪种类别的信号信号的处理方式&#xff1a;注册信号处理函数&#xff0c;在信号被触发的时候自动调用执行. Qt中的信号和Linux中的信号&#xff0c;虽…

健康养生之道

在快节奏的现代生活中&#xff0c;健康养生不再是中老年人的专属话题&#xff0c;越来越多的人开始意识到&#xff0c;合理的养生方式是保持良好身体状态和生活质量的关键。​ 饮食养生是健康的基石。遵循 “食物多样、谷类为主” 的原则&#xff0c;保证每天摄入足够的蔬菜、…

Spark-SQL核心编程3

数据加载与保存 通用方式&#xff1a; SparkSQL 提供了通用的保存数据和数据加载的方式。这里的通用指的是使用相同的API&#xff0c;根据不同的参数读取和保存不同格式的数据&#xff0c;SparkSQL 默认读取和保存的文件格式为parquet 数据加载方法&#xff1a; spark.read.lo…

TVM计算图分割--Collage

1 背景 为满足高效部署的需要&#xff0c;整合大量优化的tensor代数库和运行时做为后端成为必要之举。现在的深度学习后端可以分为两类&#xff1a;1&#xff09;算子库(operator kernel libraries)&#xff0c;为每个DL算子单独提供高效地低阶kernel实现。这些库一般也支持算…

MCGS昆仑通太屏笔记

4.3寸&#xff1a;4013ef/e1 7寸&#xff1a;7032kw 特点&#xff1a; 如果是使用组态屏进行调试使用&#xff0c;选择com1如果是实际项目使用&#xff0c;选择com2 操作步骤&#xff1a; 先创建设备窗口&#xff0c;再创建用户界面 在设备窗口界面&#xff0c;依次设置如下…

服务治理-搭建Nacos注册中心

运行nacos.sql文件。 将准备好的nacos目录和nacos.tar包上传。 192.168.59.101是我的虚拟机ip&#xff0c;8848是我们设置的访问端口号。

网络--socket编程(2)

Socket 编程 TCP TCP 网络程序 和刚才 UDP 类似 . 实现一个简单的英译汉的功能 TCP socket API 详解 下面介绍程序中用到的 socket API, 这些函数都在 sys/socket.h 中。 socket(): • socket() 打开一个网络通讯端口 , 如果成功的话 , 就像 open() 一样返回一个…

结合建筑业务讲述TOGAF标准处理哪种架构

TOGAF标准处理哪种架构 内容介绍业务架构业务策略&#xff0c;治理&#xff0c;组织和关键业务流程数据架构组织的逻辑和物理数据资产以及数据管理资源的结构应用架构待部署的各个应用程序&#xff0c;它们之间的交互以及与组织核心业务流程的关系的蓝图技术架构支持业务&#…

C++入门小馆: 深入string类(一)

嘿&#xff0c;各位技术潮人&#xff01;好久不见甚是想念。生活就像一场奇妙冒险&#xff0c;而编程就是那把超酷的万能钥匙。此刻&#xff0c;阳光洒在键盘上&#xff0c;灵感在指尖跳跃&#xff0c;让我们抛开一切束缚&#xff0c;给平淡日子加点料&#xff0c;注入满满的pa…

NHANES指标推荐:WWI

文章题目&#xff1a;Weight-adjusted waist circumference index with hepatic steatosis and fibrosis in adult females: a cross-sectional, nationally representative study (NHANES 2017-2020) DOI&#xff1a;10.1186/s12876-025-03706-4 中文标题&#xff1a;体重调整…

2025.04.18|【Map】地图绘图技巧全解

Add circles Add circles on a Leaflet map Change tile Several background tiles are offered by leaflet. Learn how to load them, and check the possibilities. 文章目录 Add circlesChange tile 2025.04.18【Map】| 地图绘图技巧全解1. 准备工作2. 地理区域着色图&…

PR第一课

目录 1.新建 2.PR内部设置 3.导入素材 4.关于素材窗口 5.关于编辑窗口 6.序列的创建 7.视频、图片、音乐 7.1 带有透明通道的素材 8.导出作品 8.1 打开方法 8.2 导出时&#xff0c;需要修改的参数 1.新建 2.PR内部设置 随意点开 编辑->首选项 中的任意内容&a…

Vue+Notification 自定义消息通知组件 支持数据分页 实时更新

效果图&#xff1a; message.vue 消息组件 子组件 <template><div class"custom-notification"><div class"content"><span click"gotoMessageList(currentMessage.split()[1])">{{ currentMessage.split()[0] }}</…