网站建设优秀网站建,辽宁建设工程信息网开评标系统,高手做网站,电商详情页用什么软件做的服务#xff08;Service#xff09;
Kubernetes 中 Service 是 将运行在一个或一组 Pod 上的网络应用程序公开为网络服务的方法。
Kubernetes 中 Service 的一个关键目标是让你无需修改现有应用以使用某种不熟悉的服务发现机制。 你可以在 Pod 集合中运行代码#xff0c;无…服务Service
Kubernetes 中 Service 是 将运行在一个或一组 Pod 上的网络应用程序公开为网络服务的方法。
Kubernetes 中 Service 的一个关键目标是让你无需修改现有应用以使用某种不熟悉的服务发现机制。 你可以在 Pod 集合中运行代码无论该代码是为云原生环境设计的 还是被容器化的老应用。 你可以使用 Service 让一组 Pod 可在网络上访问这样客户端就能与之交互。
如果你使用 Deployment 来运行你的应用 Deployment 可以动态地创建和销毁 Pod。 在任何时刻你都不知道有多少个这样的 Pod 正在工作以及它们健康与否 你可能甚至不知道如何辨别健康的 Pod。 Kubernetes Pod 的创建和销毁是为了匹配集群的预期状态。 Pod 是临时资源你不应该期待单个 Pod 既可靠又耐用。
每个 Pod 会获得属于自己的 IP 地址Kubernetes 期待网络插件来保证这一点。 对于集群中给定的某个 Deployment这一刻运行的 Pod 集合可能不同于下一刻运行该应用的 Pod 集合。
这就带来了一个问题如果某组 Pod称为“后端”为集群内的其他 Pod称为“前端” 集合提供功能前端要如何发现并跟踪要连接的 IP 地址以便其使用负载的后端组件呢
Kubernetes 中的 Service
Service API 是 Kubernetes 的组成部分它是一种抽象帮助你将 Pod 集合在网络上公开出去。 每个 Service 对象定义端点的一个逻辑集合通常这些端点就是 Pod以及如何访问到这些 Pod 的策略。
Service 所对应的 Pod 集合通常由你定义的选择算符来确定。
如果你的工作负载使用 HTTP 通信你可能会选择使用 Ingress 来控制 Web 流量如何到达该工作负载。Ingress 不是一种 Service但它可用作集群的入口点。 Ingress 能让你将路由规则整合到同一个资源内这样你就能将工作负载的多个组件公开出去 这些组件使用同一个侦听器但各自独立地运行在集群中。
用于 Kubernetes 的 Gateway API 能够提供 Ingress 和 Service 所不具备的一些额外能力。 Gateway 是使用 CustomResourceDefinitions 实现的一系列扩展 API。 你可以添加 Gateway 到你的集群中之后就可以使用它们配置如何访问集群中运行的网络服务。
云原生服务发现
如果你想要在自己的应用中使用 Kubernetes API 进行服务发现可以查询 API 服务器 寻找匹配的 EndpointSlice 对象。 只要 Service 中的 Pod 集合发生变化Kubernetes 就会为其更新 EndpointSlice。
对于非本地应用Kubernetes 提供了在应用和后端 Pod 之间放置网络端口或负载均衡器的方法。
定义 Service
Kubernetes 中的 Service 是一个对象 与 Pod 或 ConfigMap 类似。你可以使用 Kubernetes API 创建、查看或修改 Service 定义。 通常你会使用 kubectl 这类工具来替你发起这些 API 调用。
你可以定义一个 Service 来发布该 TCP 侦听器。
apiVersion: v1
kind: Service
metadata:name: my-service
spec:selector:app.kubernetes.io/name: MyAppports:- protocol: TCPport: 80targetPort: 9376
系统将创建一个名为 my-service 的、 服务类型默认为 ClusterIP 的 Service。 该 Service 指向带有标签 app.kubernetes.io/name: MyApp 的所有 Pod 的 TCP 端口 9376。
Kubernetes 为该服务分配一个 IP 地址称为 “集群 IP”供虚拟 IP 地址机制使用。
此 Service 的控制器不断扫描与其选择算符匹配的 Pod 集合然后对 Service 的 EndpointSlice 集合执行必要的更新。
Service 能够将任意入站 port 映射到某个 targetPort。 默认情况下出于方便考虑targetPort 会被设置为与 port 字段相同的值。
端口定义