Kubernetes服务是集群中部署的一组 pod 的逻辑抽象(它们都执行相同的功能)。由于 Pod 是短暂的,因此服务可以为一组提供特定功能(Web 服务、图像处理等)的 Pod 分配一个名称和唯一的 IP 地址(clusterIP)。只要服务正在运行该 IP 地址,它就不会改变。服务还为其访问定义策略。
在 Kubernetes 中,服务和部署有什么区别?
在Kubernetes中,部署是一种使用容器化应用程序启动 pod 并确保集群上始终运行必要数量的副本的方法。另一方面,服务负责向这些 pod 公开接口,这使得可以从集群内部或外部进程与服务之间进行网络访问。
Kubernetes 服务的组件有哪些?
Kubernetes 服务将一组 pod 连接到一个抽象的服务名称和 IP 地址。服务提供 pod 之间的发现和路由。例如,服务将应用程序前端连接到其后端,每个后端都在集群中的单独部署中运行。服务使用标签和选择器将 pod 与其他应用程序匹配。Kubernetes 服务的核心属性是:
- 定位 pod 的标签选择器
- clusterIP IP 地址和分配的端口号
- 端口定义
- 传入端口到 targetPort 的可选映射
可以在没有 pod 选择器的情况下定义服务。例如,将服务指向不同命名空间或集群中的另一个服务。
Kubernetes 服务有哪些类型?
- 集群IP。公开只能从集群内部访问的服务。
- 节点端口。通过每个节点 IP 上的静态端口公开服务。
- 负载均衡器。通过云提供商的负载均衡器公开服务。
- 外部名称。通过返回 CNAME 记录的值将服务映射到预定义的 externalName 字段。
什么是 Kubernetes ClusterIP 服务?
ClusterIP 是默认的服务类型,用于在集群内部的 IP 地址上公开服务。仅允许从集群内部访问。
什么是 Kubernetes 无头服务?
不需要负载平衡且仅公开单个 IP 的服务可以通过将 clusterIP 指定为“none”来创建“无头”服务。可以使用选择器定义无头服务,在这种情况下,端点记录在 API 中创建,修改 DNS 以返回指向公开服务的 pod 的地址。没有选择器的无头服务不会创建端点记录。DNS 系统为与服务同名的端点配置 CNAME 记录或记录。
什么是 Kubernetes NodePort 服务?
NodePorts 是每个集群节点上的开放端口。Kubernetes 会将进入 NodePort 的流量路由到服务,即使该服务没有在该节点上运行。NodePort 旨在作为其他更高级别的入口方法(例如负载平衡器)的基础,并且在开发中很有用。
什么是 Kubernetes ExternalName 服务?
ExternalName 服务与其他 Kubernetes 服务类似;但是,它不是通过 clusterIP 地址访问,而是返回一个 CNAME 记录,其值在创建服务时在 externalName: 参数中定义。
什么是 Kubernetes 负载均衡器服务?
对于在 AWS 或 Azure 等公共云提供商上运行的集群,创建负载 LoadBalancer 服务提供了与 clusterIP 服务等效的功能,将其扩展到特定于云提供商的外部负载均衡器。Kubernetes 将自动创建负载均衡器,在需要时提供防火墙规则,并使用云提供商分配的外部 IP 地址填充服务。
Kubernetes 服务如何工作?
服务只是使用标签指向 pod。由于服务不是特定于节点的,因此服务可以指向一个 pod,而不管它在任何给定时刻在集群中的哪个位置运行。通过公开服务 IP 地址和 DNS 服务名称,只要服务存在,就可以通过任一方法访问应用程序。
您如何定义 Kubernetes 服务?
服务在 YAML 中定义,所有 Kubernetes 对象也是如此。假设您部署了运行后端服务的 pod,以处理来自 Web 前端的数据。要在部署“deployment-backend”上公开名为“service-backend”的服务,您可以使用:
api版本: v1
种类:服务
元数据:
名称:服务后端
规格:
端口:
- 端口: 4000
协议: TCP
目标端口: 333
选择器:
运行:部署后端
类型:集群IP
将创建服务“service-backend”,集群中的任何 pod 都可以通过 http://service-backend:4000 在其端口 333 上访问它,或者使用端口 4000 在集群的 IP 地址上访问它。
Kubernetes 服务也可以使用“kubectl expose”命令创建,该命令不需要 YAML 文件。可以使用以下命令创建相同的服务:
kubectl 暴露部署部署后端--端口=333--目标端口=4000--名称=服务后端
如何访问 Kubernetes 服务?
有两种方法可以发现 Kubernetes 服务:
DNS(最常见): DNS 方法是发现服务的推荐方法。要使用此方法,必须首先在集群上安装 DNS 服务器。DNS 服务器监控 Kubernetes API,当一个新服务被创建时,它的名字就可以用于请求应用程序的轻松解析。
ENV 变量:此方法依赖于 kubelet 为运行 pod 的每个节点的每个活动服务添加环境变量。