07 Kubernetes 网络与服务管理

news2024/11/27 2:36:07

课件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Kubernetes Service是一个抽象层,用于定义一组Pod的访问方式和访问策略,其作用是将一组Pod封装成一个服务,提供一个稳定的虚拟IP地址和端口号,以便于其他应用程序或服务进行访问。

以下是Kubernetes Service YAML配置文件的一些重要字段及其解释:

apiVersion: v1
kind: Service
metadata:
  name: my-service
  namespace: my-namespace
spec:
  selector:
    app: my-app
  ports:
  - name: http
    port: 80
    targetPort: 8080
  type: ClusterIP
  • apiVersion: 指定使用的Kubernetes API版本。
  • kind: 指定对象类型,这里是Service。
  • metadata: 指定Service的元数据,包括名称、命名空间等信息。
  • selector: 指定Service所关联的Pod的标签选择器,用于将Pod与Service关联起来。
  • ports: 指定Service所监听的端口,包括端口名称、端口号和目标端口号。其中,端口名称是可选的,目标端口号是Pod中实际监听的端口号。
  • type: 指定Service的类型,包括ClusterIP、NodePort、LoadBalancer和ExternalName等。ClusterIP是默认类型,用于将Service暴露到集群内部。NodePort将Service暴露到每个Node的IP地址和端口上。LoadBalancer用于将Service暴露到外部负载均衡器上。ExternalName用于将Service与外部服务关联起来。

除了上述字段外,还可以配置一些高级选项,例如:

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
  - name: http
    port: 80
    targetPort: 8080
  type: ClusterIP
  sessionAffinity: ClientIP
  externalTrafficPolicy: Local
  • sessionAffinity: 指定会话亲和性类型,包括None和ClientIP。ClientIP将请求发送到相同的Pod,以保持会话一致性。
  • externalTrafficPolicy: 指定外部流量策略,包括Cluster和Local。Cluster将流量分配给所有节点,Local将流量分配给与请求最近的节点。
    在这里插入图片描述
    Kubernetes Endpoints是一种资源对象,用于将Service与其实现的Pod的IP地址和端口号匹配。Endpoints资源通常由Kubernetes API服务器自动创建和更新,以确保Service可以正确地路由到其后端Pod。

Endpoints资源的YAML定义如下:

apiVersion: v1
kind: Endpoints
metadata:
  name: my-service
subsets:
  - addresses:
      - ip: 10.0.0.1
      - ip: 10.0.0.2
    ports:
      - name: http
        port: 80
        protocol: TCP

其中:

  • apiVersion:指定Kubernetes API版本。
  • kind:指定资源类型,这里是Endpoints。
  • metadata:指定资源的元数据,包括名称等。
  • subsets:指定一组后端Pod的IP地址和端口。

在subsets中,addresses字段列出了后端Pod的IP地址,ports字段列出了后端Pod的端口号和协议。在上面的示例中,我们定义了一个名为my-service的Endpoints资源,它包含了两个IP地址(10.0.0.1和10.0.0.2)和一个端口号(80)。

这个Endpoints资源的作用是将名为my-service的Service路由到这两个IP地址和端口号所代表的Pod上。如果有更多的Pod加入了这个Service,Kubernetes API服务器会自动更新这个Endpoints资源。
在这里插入图片描述
无头服务(Headless Service)是 Kubernetes 中的一种特殊类型的服务。与普通的服务不同,无头服务并不会为 Pod 提供一个稳定的访问 IP,它的 Cluster IP 为 None。这意味着,无头服务并不会进行负载均衡,而是直接将请求转发给后端 Pod,这些 Pod 的 IP 地址将会被暴露出来。

无头服务通常用于需要访问单个 Pod 的场景,例如 StatefulSet 中的每个 Pod 都具有唯一的标识符和状态,需要直接对每个 Pod 进行访问。无头服务可以将所有后端 Pod 的 IP 地址公开出来,以便直接访问每个 Pod。

在创建无头服务时,需要将 spec.clusterIP 设置为 None,并且需要设置 spec.selector 以选择后端 Pod。这样就可以创建一个无头服务了。

无头服务(Headless Service)的好处有以下几点:

  1. 直接访问后端 Pod:无头服务不会对请求进行负载均衡,而是直接将请求转发给后端 Pod,这样可以直接访问每个 Pod。

  2. 每个 Pod 有唯一的标识符和状态:在某些情况下,每个 Pod 都具有唯一的标识符和状态,需要直接对每个 Pod 进行访问。无头服务可以将所有后端 Pod 的 IP 地址公开出来,以便直接访问每个 Pod。

  3. 避免网络代理:在某些情况下,需要直接访问后端 Pod,而不是通过 Service 进行代理。无头服务可以避免网络代理,直接访问后端 Pod。

  4. 避免 Service IP 变化:普通的服务会为 Pod 提供一个稳定的访问 IP,但是 Service IP 可能会发生变化,这可能会导致一些问题。无头服务的 Cluster IP 为 None,避免了 Service IP 变化的问题。

综上所述,无头服务可以直接访问后端 Pod,避免了网络代理和 Service IP 变化的问题,适用于一些需要直接访问每个 Pod 的场景。
在这里插入图片描述

$ nslookup example.com

$ dig example.com +short

dig example.com +short 是一个在命令行中使用 dig 工具的简单命令。它的作用是查询 example.com 域名的 IP 地址,并以简短的格式输出结果。

具体来说,命令中的参数含义如下:

  • dig:命令名,用于查询 DNS 信息。
  • example.com:要查询的域名。
  • +short:输出简短格式的结果,只显示 IP 地址,不包含其他信息。

$ dig @localhost -t AXFR example.com

该命令表示在本地主机上使用 DNS 协议的 AXFR(Zone Transfer)方式获取 example.com 域名的所有 DNS 记录。

  • @localhost:指定 DNS 服务器为本地主机。
  • -t AXFR:指定使用 AXFR 方式进行 DNS 记录的传输。
  • example.com:指定要获取 DNS 记录的域名。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    是的,Cilium Endpoints 和 Kubernetes Endpoints 之间存在关系。

Kubernetes Endpoints 是 Kubernetes 中的一种资源,用于表示服务的后端。它包含了一组 IP 地址和端口号,代表了服务的所有可用实例。当一个 Pod 加入或离开一个服务时,Kubernetes 会自动更新相应的 Endpoints。

Cilium Endpoints 是 Cilium 的一个概念,它是一个具有特定标识符的网络终端,代表了一个容器或一个 Pod。Cilium 使用 Endpoints 来实现网络安全和服务发现等功能,通过监控 Kubernetes Endpoints 的变化来更新 Cilium Endpoints。

因此,Cilium Endpoints 和 Kubernetes Endpoints 是密切相关的,它们共同组成了 Kubernetes 集群中的网络拓扑,并共同支持了 Kubernetes 中的服务发现和网络安全功能。
在这里插入图片描述
Kubernetes Ingress工作在应用层(Layer 7)协议,因为它是一个HTTP(S)负载均衡器。Ingress提供了一种将外部HTTP(S)流量路由到Kubernetes集群内部的机制,通过将请求路由到不同的服务和端点,从而实现负载均衡和流量管理。Ingress控制器使用HTTP请求中的主机名和路径来路由请求到不同的服务,可以根据需要添加SSL/TLS加密和身份验证,提供更高级别的访问控制和安全性。因此,Ingress是在应用层(Layer 7)上工作的,提供了更高级别的网络功能和控制。

在这里插入图片描述
Ingress是Kubernetes中的一种资源对象,它定义了如何将外部流量路由到Kubernetes集群中的服务。Ingress YAML配置文件通常包含以下几个部分:

  1. metadata:包含Ingress对象的名称、命名空间、标签等元数据信息。

  2. spec:定义了Ingress的规则和配置。

    • rules:定义了Ingress的路由规则,包含了host、http、paths等配置。

    • tls:定义了Ingress的TLS配置,可以配置证书、私钥等信息。

    • backend:定义了Ingress的默认后端服务,当没有匹配到任何规则时,请求将被路由到该后端服务。

  3. status:包含了Ingress对象的当前状态信息。

一个完整的Ingress YAML配置示例:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  namespace: default
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: example.com
    http:
      paths:
      - path: /app1
        pathType: Prefix
        backend:
          service:
            name: app1-service
            port:
              name: http
      - path: /app2
        pathType: Prefix
        backend:
          service:
            name: app2-service
            port:
              name: http
  tls:
  - hosts:
    - example.com
    secretName: example-tls

上述配置文件定义了一个名为example-ingress的Ingress对象,它包含了两个路由规则,每个规则都定义了一个host和多个路径。当请求的host和路径匹配到规则时,请求将被路由到相应的后端服务。此外,配置文件还定义了TLS配置,使用了名为example-tls的证书。

在Ingress中,host、http和paths是三个不同的配置块,它们的作用如下:

  1. host:定义了Ingress的域名或IP地址,用于将请求路由到相应的服务。

  2. http:定义了Ingress的HTTP配置,包括了路由规则和TLS配置等。

  3. paths:定义了Ingress的路径规则,用于将请求路由到相应的服务。

具体而言,host配置用于指定Ingress的域名或IP地址,可以将不同的域名或IP地址映射到不同的服务上。例如,可以将example.com映射到一个服务,将api.example.com映射到另一个服务。

http配置用于定义Ingress的HTTP配置,包括了路由规则和TLS配置等。在http配置中,可以定义多个路由规则,每个路由规则可以指定一个或多个路径。当请求匹配到某个路由规则时,Ingress会将请求路由到相应的服务上。

paths配置用于定义Ingress的路径规则,用于将请求路由到相应的服务。在paths配置中,可以定义多个路径规则,每个路径规则可以指定一个路径和相应的服务。当请求的路径匹配到某个路径规则时,Ingress会将请求路由到相应的服务上。

总的来说,host用于指定Ingress的域名或IP地址,http用于定义Ingress的HTTP配置,包括了路由规则和TLS配置等,而paths用于定义Ingress的路径规则,用于将请求路由到相应的服务。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

自测题

在这里插入图片描述

Kubernetes Service 对象的 selector 字段是必须指定的,它定义了 Service 所要选择的 Pod 的标签。如果没有指定 selector 字段,Service 就无法确定它所要代理的 Pod,因此无法工作。在创建 Service 对象时,必须指定 selector 字段,否则会出现错误。

在这里插入图片描述

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

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

相关文章

FPGA时序约束(五)衍生时钟约束与I/O接口约束

系列文章目录 FPGA时序约束(一)基本概念入门及简单语法 FPGA时序约束(二)利用Quartus18对Altera进行时序约束 FPGA时序约束(三)时序约束基本路径的深入分析 FPGA时序约束(四)主时…

2023五一建模A题完整版本【原创首发】

已经完成五一数学建模全部内容,大家可以文末查看!!供参考使用! 摘要 本文研究了喷气式无人机在执行空中物资投放和爆破任务过程中的数学建模问题。我们分析了无人机投放距离与飞行高度、飞行速度、空气阻力等因素之间的关系&…

【Mybatis源码分析】动态标签的底层原理,DynamicSqlSource源码分析

DynamicSqlSource 源码分析 一、DynamicSqlSource 源码分析😯DynamicContext源码分析🙄SqlNode源码分析(动态SQL标签)Mybatis 动态SQL标签举例、调试SqlNode源码分析MixedSqlNodeIfSqlNodeWhereSqlNode、SetSqlNode、TrimSqlNodeS…

区域医疗云his系统源码,具有可扩展、易共享、易协同的优势

云HIS系统采用SaaS软件应用服务模式,提供软件应用服务多租户机制,实现一中心部署多机构使用。相对传统HIS单机构应用模式,它可灵活应对区域医疗、医疗集团、医联体、连锁诊所、单体医院等应用场景,并提升区域内应用的标准化与规范…

安装配置goaccess实现可视化并实时监控nginx的访问日志

一、业务需求 我们安装了nginx后,需要对nginx的访问情况进行监控(希望能够实时查看到访问nginx的情况),如下图所示: 二、goaccess的安装配置步骤 2.1、准备内容 需要先安装配置nginx或OpenResty - 安装 Linux环境对Nginx开源版源码下载、编译、安装、开机自启https://b…

从0开始利用Jenkins构建Maven项目(微服务)并自动发布

0. 前言 本文旨在帮助读者梳理如何从0开始利用Jenkins构建Maven项目(微服务)的自动发布任务 本文目录如下: 如何完成自动部署 0. 前言1. 配置工具类地址1.1 JDK1.2 Git1.3 Maven 2. 安装Jenkins3. 安装额外的工具插件4. 配置必要参数4.1 配…

TiDB实战篇-索引设计

简介 实战索引设计 数据映射原理 索引 唯一索引 二级索引 索引实例 索引设计 索引创建(建表的时候创建) 建表完以后添加 联合索引(最左原则,索引覆盖) 使用例子 索引覆盖 表达式索引 表达式索引的使用 不可见…

【youcans 的 OpenCV 学习课】23. 人脸检测:Haar 级联检测器

专栏地址:『youcans 的图像处理学习课』 文章目录:『youcans 的图像处理学习课 - 总目录』 【youcans 的 OpenCV 学习课】23. 人脸检测:Haar 级联检测器 4. Haar 级联分类器5. Haar 人脸/人眼检测器5.1 OpenCV 中的级联分类器5.2 Haar 级联检…

OPNET Modeler 调试简介

在使用 OPNET Modeler 软件运行仿真时,经常会遇到错误,发现和定位错误所在的地方是解决错误的第一步,那么怎么定位错误呢,这个时候就需要采用仿真调试器 (OPNET Simulation Debugger,ODB)进行调试了。 在 OPNET 中&…

【模电实验】电路元件伏安特性的测绘及电源外特性的测量

实验2电路元件伏安特性的测绘及电源外特性的测量 实验目的 学习测量线性和非线性电阻元件伏安特性的方法,并绘制其特性曲线学习测量电源外特性的方法掌握运用伏安法判定电阻元件类型的方法学习使用直流电压表、电流表,掌握电压、电流的测量方法 实验原…

Java BIO(Blocking IO:同步并阻塞式IO)

1.基本介绍 1>.Java BIO就是传统的java io编程,其相关的类和接口在"java.io"包下; 2>.BIO(Blocking I/O): 同步阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理; 如果这个连接不做任何事情会造成(服务器)不必…

【C++】STL——list深度剖析 及 模拟实现

文章目录 前言1. list的介绍及使用1.1 list的介绍1.2 list的使用遍历插入删除数据Operations迭代器的功能分类list 的sort性能测试 2. list的模拟实现2.1 STL_list源码浏览2.2 基本结构实现2.3 思考:list迭代器是否可以用原生指针2.4 list迭代器的实现(重…

RocketMQ5.1 NameServer 路由管理

文章目录 1. 路由管理核心组件介绍2. RouteInfoManager 路由表3. 路由管理3.1 注册 Broker3.2 注销 Broker3.3 拼凑 TopicRouteData 此文章基于 RocketMQ 5.1 版本进行分析,与 4.x 版本相比此文章分析的部分源码有很大的区别 1. 路由管理核心组件介绍 路由管理是指…

亚马逊、沃尔玛、ebay测评出现风控、砍单、封号怎么解决?

大家好,我是亚马逊测评珑哥,提前祝各位跨境朋友五一假期愉快。 很多卖家和工作室的朋友加珑哥,沟通中很多朋友都在问为什么测评中一直被砍单,封号是什么原因?其实测评不是你随便买个IP,或者买几个买家号就…

轻松掌握mysql慢查询定位与优化知识点

在这里插入图片描述 1、利用工具定位慢sql 1、运维工具Skywalking 1、定位到慢接口 2、追踪慢sql的执行情况 2、利用MySQL的日志定位慢sql 在调式阶段才开启慢日志的查询,因为会损耗一些性能。 3、分析是否正确使用了索引 当我们已经定位到具体哪个sql较慢时&…

【计算几何】帝国边界划分问题【Voronoi图的原理】

一、说明 Voronoi 单元也称为泰森多边形。 Voronoi 图在许多领域都有实际和理论应用,主要是在科学和技术领域,但也在视觉艺术领域使用。Voronoi 图以数学家 Georgy Voronoy 的名字命名,也称为 Voronoi 镶嵌、Voronoi 分解、Voronoi 分区或 Di…

减少过拟合:暂退法

文章目录 (一)过拟合(二)暂退法 (一)过拟合 1.过拟合产生的原因 (1)根本原因: 我们都知道模型参数的优化方式:反向传播更新梯度,然后随机梯度下降。 也非常清楚模型参…

【Java笔试强训 9】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥另类加法…

弗洛伊德算法(求最短路径)

弗洛伊德算法介绍 和迪杰斯特拉算法一 样, 弗洛伊德(Floyd)算法也是一种用于寻找给定的加权图中顶点间最短路径的算法。弗洛伊德算法(Floyd)计算图中各个顶点之间的最短路径迪杰斯特拉算法用于计算图中某-一个顶点到其他项点的最短路径。弗洛伊德算法VS迪杰斯特拉算…

【数据库架构】PostgreSQL的最佳群集高可用性方案

如果您的系统依赖PostgreSQL数据库并且您正在寻找HA的集群解决方案,我们希望提前告知您这是一项复杂的任务,但并非不可能实现。 我们将讨论一些解决方案,您可以从中选择对您的容错要求。 PostgreSQL本身不支持任何多主群集解决方案&#xff0…