进来学习K8s中的网络资源对象Service!

ops/2024/9/23 2:21:59/

进来学习K8s中的网络资源对象Service!

Kubernetes(K8s)是一个强大的容器编排平台,它不仅能够管理容器的生命周期,还能提供复杂的网络功能,使得在集群中的服务发现和访问变得简单。在 Kubernetes 中,Service 是一个抽象的概念,用于定义一组逻辑上运行相同服务的 Pod。本文将深入探讨 Kubernetes 的 Service 资源,包括它的工作原理、类型以及如何使用它来暴露和管理应用程序。

一、Service 的基本概念

在 Kubernetes 中,Service 是定义一组 Pod 的固定逻辑集合,这些 Pod 提供相同的应用或服务。Service 的主要作用是提供稳定的网络访问方式,无论后端的 Pod 如何变化。这对于实现微服务架构中的服务发现和负载均衡至关重要。

Service 有以下特点:

  1. 服务发现:通过固定的 Service IP 和端口,客户端可以发现并访问 Pod。
  2. 负载均衡:Service 可以将流量均匀地分配到后端的多个 Pod,提高系统的可用性和性能。
  3. 无缝升级:即使 Pod 更新或替换,Service 的地址保持不变,保证服务的稳定性。
  4. 支持多种协议:Service 支持 HTTP、TCP 和其他协议。

二、创建 Service

要创建一个 Service,我们需要编写一个 YAML 文件,描述 Service 的配置信息。以下是一个简单的 Service 配置示例:

apiVersion: v1
kind: Service
metadata:name: my-service
spec:selector:app: my-appports:- protocol: TCPport: 80targetPort: 9376type: ClusterIP

在这个示例中,我们创建了一个名为 my-service 的 Service,它将通过标签选择器(label selector)来识别需要管理的 Pod。Service 的端口(port)映射到 Pod 的目标端口(targetPort)。Service 的类型(type)为 ClusterIP,表示 Service 只在集群内部可访问。

要创建这个 Service,我们可以使用 kubectl 命令行工具:

kubectl create -f service.yaml

三、Service 类型

Kubernetes Service 支持多种类型,以满足不同的网络需求:

  1. ClusterIP(默认):Service 只在集群内部可访问,这是最常用的类型。
  2. NodePort:Service 在每个节点的指定端口上暴露,外部可以通过 NodeIP:NodePort 访问。
  3. LoadBalancer:Service 在云提供商的负载均衡器上暴露,外部可以通过负载均衡器的 IP 访问。
  4. ExternalName:Service 通过返回 CNAME 和它的值,可以将 Service 映射到 external domain name。

以下是一个 NodePort 类型的 Service 配置示例:

apiVersion: v1
kind: Service
metadata:name: my-service
spec:selector:app: my-appports:- protocol: TCPport: 80targetPort: 9376nodePort: 30080type: NodePort

要创建这个 NodePort 类型的 Service,我们可以使用 kubectl 命令行工具:

kubectl create -f service.yaml

四、服务发现

在 Kubernetes 中,服务发现是通过固定的 Service IP 和端口来实现的。客户端可以通过 Service IP 和端口访问后端的 Pod,而不需要知道具体的 Pod IP。这使得服务的位置变得透明,简化了客户端的调用逻辑。

例如,要访问上面创建的 my-service,客户端可以简单地使用 my-service:80(对于 ClusterIP 类型)或 NodeIP:30080(对于 NodePort 类型)作为地址。

五、Ingress

除了 Service,Kubernetes 还提供了 Ingress 资源,用于管理外部访问集群内服务的路由。Ingress 可以提供更高级的功能,如基于路径的路由、TLS 终止等。要使用 Ingress,通常需要额外的 Ingress 控制器。

六、总结

本文介绍了 Kubernetes Service 的基本概念、类型以及如何使用它来暴露和管理应用程序。通过使用 Service,我们可以实现服务发现、负载均衡和外部访问等功能,从而更好地构建和维护分布式系统。


http://www.ppmy.cn/ops/6162.html

相关文章

pytest学习-pytorch单元测试

pytorch单元测试 一.公共模块[common.py]二.普通算子测试[test_clone.py]三.集合通信测试[test_ccl.py]四.测试命令五.测试报告 希望测试pytorch各种算子、block、网络等在不同硬件平台,不同软件版本下的计算误差、耗时、内存占用等指标. 本文基于torch.testing._internal 一…

MapReduce分区机制(Hadoop)

在MapReduce中,分区(Partitioning)是将Map阶段输出的键值对根据某种规则分发到不同的Reduce任务上的过程。这个过程非常关键,因为它直接影响到了Reduce阶段的负载均衡和性能。 1. 哈希分区(Hash Partitioning&#xf…

亚信安全数据安全运营平台DSOP新版本发布 注入AI研判升维

在当今快速发展的数字经济时代,企业对于数据的依赖日益加深,数据安全已成为企业的生命线。亚信安全推出数据安全运营平台DSOP全新版本,正是为满足企业对数据安全的高度需求而设计。这款平台以其卓越的能力和技术优势,为企业的数据…

【php快速上手(十一)】

目录 PHP快速上手(十一)PHP 连接数据库和创建数据库PHP 连接数据库使用 MySQLi连接 MySQL 数据库使用 PDO 连接 MySQL 数据库 PHP创建数据库使用MySQLi创建MySQL数据库:使用PDO创建MySQL数据库: PHP快速上手(十一&…

JVM之JVM栈的详细解析

Java 栈 Java 虚拟机栈:Java Virtual Machine Stacks,每个线程运行时所需要的内存 每个方法被执行时,都会在虚拟机栈中创建一个栈帧 stack frame(一个方法一个栈帧) Java 虚拟机规范允许 Java 栈的大小是动态的或者是…

「 网络安全常用术语解读 」漏洞利用交换VEX详解

漏洞利用交换(Vulnerability Exploitability eXchange,简称VEX)是一个信息安全领域的标准,旨在提供关于软件漏洞及其潜在利用的实时信息。根据美国政府发布的用例(PDF),由美国政府开发的漏洞利用交换(VEX)使供应商和用…

韩国机器人公司Rainbow Robotics推出RB-Y1轮式双臂机器人

文 | BFT机器人 近日,韩国机器人领域的佼佼者Rainbow Robotics揭开了RB-Y1移动机器人的神秘面纱,这款机器人以其创新的设计和卓越的功能引起了业界的广泛关注。与此同时,Rainbow Robotics还携手舍弗勒集团(提供汽车、工业技术服务…

js 遍历数据结构,使不符合条件的全部删除

js 遍历数据结构,使不符合条件的全部删除 let newSourceJSON.parse(JSON.stringify(state.treeData))state.expandedKeys[]checkedKeys.map((item:any)>{loop(newSource,{jsonPath:item.split(&)[1]},state.expandedKeys)})function removeUnwantedNodes(tre…