k8s的Service定义了一个服务的访问入口地址,前端的应用通过这个入口地址访问其背后的一组由Pod副本组成的集群实例,来自外部的访问请求被负载均衡到后端的各个容器应用上。Service与其后端Pod副本集群之间则是通过Label Selector实现关联。 简单来说前端请求不是直接发送给Pod,而是发送到Service,Service再将请求转发给pod。
通过上面的对比可以看出,Pod和Service在功能和使用上有一些明显的区别。Pod主要是用来封装和管理容器,而Service则是用来提供稳定的网络访问入口。它们之间最大的差异在于网络访问方式和负载均衡功能的有无。 以下是一个简单的示例代码,演示了如何在K8S中创建一个Pod和一个Service。 1. 首先,我们创建一个Pod的配置文件p...
1、环境变量:每当有service被创建出来之后,各个node(宿主机)上的kubelet,就会把service name加到自己宿主机的环境变量中,供所有Pod使用。环境变量的命名规则是{SERVICE_NAME}_SERVICE_HOST, ${SERVICE_NAME}SERVICE_PORT,其中SERVICE_NAME是新serviceName的大写形式,serviceName中的横杠-会被替换成下划线. 使用环境变量...
1. pod是K8S中最小的部署单元,它可以包含一个或多个容器。而service是用来暴露一组pod作为一个网络服务。 2. pod具有短暂生命周期,当pod被删除或者调度失败时,它会被重新创建。而service是一个持久的对象,它将始终存在,即使对应的pod发生了变化。 3. pod通常用来运行应用程序或者进程,而service用来暴露这些应用程...
同时service 对绑定的 Pod 提供了负载均衡的功能,我们业务直接使用 service 即可。 当声明Service的时候,会自动生成一个cluster IP,这个IP是虚拟IP。我们就可以通过这个IP来访问后端的Pod,当然,如果集群配置了DNS服务,比如现在 的CoreDNS,那么也可以通过Service的名字来访问,它会通过DNS自动解析Service的IP地址。
下面我们详细说下k8s支持的4种类型的Service。 ClusterIP 创建ClusterIP的Service yaml如下: apiVersion: v1 kind: Service metadata: name: service-python spec: ports: - port: 3000 protocol: TCP targetPort: 443 selector: run: pod-python type: ClusterIP ...
在Kubernetes(k8s)中,Deployment、Service和Pod是三个核心概念,它们在应用部署、服务发现和负载均衡方面扮演着不同的角色。以下是它们的定义、作用及它们之间的关系与区别: 1. Pod 定义:Pod是Kubernetes中最小的可部署单元,它是一组紧密关联的容器的集合。Pod内的容器共享相同的网络命名空间和存储卷。 作用: 容器化...
Pod的网络是K8s在物理机上建立了一层Overlay Network实现的,而且在网卡上能够看到这个网络的地址。但是Service是一个完全虚拟的网络层,并不会存在于任何网络设备上。它通过修改集群内部的路由规则,仅对集群内部有效。Deploment创建好应用之后,再为它生成一个Service对象。接下来就可以通过Service的域名访问到服务,形式是...