We couldn't find a match for given <KEYWORD>, please try again.

什么是 Kubernetes 服务?

Kubernetes 服务是对集群中已部署的一组 Pod(均执行相同的功能)的逻辑抽象化。

Pod 是临时性的,因此服务可以为一组提供特定功能(Web 服务、图像处理等)的 Pod 分配名称和唯一 IP 地址 (clusterIP)。只要服务在运行该 IP 地址,它就不会更改。服务还会定义其访问策略。

Kubernetes 使用现状

启动 Kubernetes 并正常运行

在 Kubernetes 中,服务与部署有何不同?

在 Kubernetes 中,部署是一种启动包含容器化应用的 Pod 并确保始终在集群上运行所需数量的副本的方法。

另一方面,服务负责向这些 Pod 公开接口,以便从集群内或外部进程与服务之间进行网络访问。

Kubernetes 服务有哪些组件?

Kubernetes 服务将一组 Pod 连接到抽象化服务名称和 IP 地址。服务提供 Pod 之间的发现和路由。例如,服务将应用前端连接到其后端,每个应用在集群中的单独部署中运行。服务使用标签和选择器将 Pod 与其他应用相匹配。Kubernetes 服务的核心属性包括:

  • 用于定位 Pod 的标签选择器
  • 集群 IP 地址和分配的端口号
  • 端口定义
  • 传入端口到目标端口的可选映射

可以在没有 Pod 选择器的情况下定义服务。例如,将一项服务指向不同 Namespace 或集群中的另一项服务。

Kubernetes 服务有哪些类型?

  • ClusterIP。提供只能从集群内访问的服务。
  • NodePort。通过每个节点的 IP 上的静态端口提供服务。
  • LoadBalancer。通过云服务提供商的负载均衡器提供服务。
  • ExternalName。通过返回 CNAME 记录的值,将服务映射到预定义的 externalName 字段。

什么是 Kubernetes ClusterIP 服务?

ClusterIP 是默认的服务类型,用于在集群内部的 IP 地址上提供服务。仅允许从集群内部进行访问。

什么是 Kubernetes 无外设服务?

不需要负载均衡且仅公开单个 IP 的服务可以通过将 clusterIP 指定为“none”来创建“无外设”服务。

可以使用选择器定义无外设服务,在这种情况下,将在 API 中创建端点记录,其中将修改 DNS 以返回指向提供服务的 Pod 的地址。没有选择器的无外设服务不会创建端点记录。DNS 系统会配置 CNAME 记录或与服务同名的端点的记录。

什么是 Kubernetes NodePort 服务?

NodePort 是每个集群节点上的开放端口。Kubernetes 会将进入 NodePort 的流量路由到服务,即使该服务未在该节点上运行。NodePort 旨在作为其他更高级别 Ingress 方法(如负载均衡器)的基础,并且在开发中非常有用。

什么是 Kubernetes ExternalName 服务?

ExternalName 服务与其他 Kubernetes 服务类似;但是,它不会通过集群 IP 地址进行访问,而是会返回一条 CNAME 记录,其中具有在创建服务时在 externalName: 参数中定义的值。

什么是 Kubernetes LoadBalancer 服务?

对于在 AWS 或 Azure 等公有云提供商环境中运行的集群,创建负载 LoadBalancer 服务可提供与 clusterIP 服务等效的服务,并将其延展到特定于云服务提供商的外部负载均衡器。Kubernetes 将自动创建负载均衡器,根据需要提供防火墙规则,并使用云服务提供商分配的外部 IP 地址来填充服务。

Kubernetes 服务的工作原理是什么?

服务只需使用标签指向 Pod。服务并非特定于节点,因此一项服务可以指向一个 Pod,无论它在任何给定时刻在集群中的哪个位置运行。通过公开服务 IP 地址和 DNS 服务名称,只要服务存在,就可以通过任一方法访问应用。

如何定义 Kubernetes 服务?

服务在 YAML 中定义,所有 Kubernetes 对象也是如此。假设您部署了运行后端服务的 Pod 来处理来自 Web 前端的数据。要在部署“deployment-backend”上公开名为“service-backend”的服务,需使用:

apiVersion: v1

kind: Service

metadata:

name: service-backend

spec:

ports:

- port: 4000

protocol: TCP

targetPort: 333

selector:

run: deployment-backend

type: ClusterIP

将创建服务“service-backend”,而且集群中的任何 Pod 都可以在端口 333 上通过 http://service-backend:4000 访问它,也可以使用端口 4000 在集群的 IP 地址。

也可以使用“kubectl expose”命令创建 Kubernetes 服务,该命令不需要 YAML 文件。可以使用以下命令创建相同的服务:

kubectl expose deployment deployment-backend - - port=333- - target-port=4000 - - name=service-backend

如何访问 Kubernetes 服务?

有两种方法可以发现 Kubernetes 服务:

DNS(最常见):建议使用 DNS 方法来发现服务。要使用此方法,必须先在集群上安装 DNS 服务器。DNS 服务器会监控 Kubernetes API,当创建新服务时,它的名称可用于轻松解析请求应用。

ENV 变量:此方法依赖于 kubelet 为运行 Pod 的每个节点的每个活动服务添加环境变量。

相关解决方案和产品

实验:应用现代化

在几周内将您的应用迁移到云中。

Tanzu Kubernetes for Operation

现代多云容器基础架构的基础。

Tanzu Application Platform

在 Kubernetes 中为多云开发人员提供卓越的体验。