一文读懂 Kubernetes的四种服务类型!

EASYOPS_youwei · · 1387 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

 

 

Kubernetes 已成为管理和扩展云原生应用程序的强大工具。组织需要快速部署他们的软件,利用高度可扩展且始终可用的功能来保持零停机时间。随着越来越多的应用程序被容器化和部署,任何组织管理这些容器变得越来越复杂。因此,缩放成为一个问题。这就是 Kubernetes 大放异彩的地方。借助 Kubernetes,您可以轻松地自动化、部署、扩展和监控您的应用程序。

如果您阅读过任何有关 Kubernetes 服务和网络的文档,您可能会遇到过 ClusterIP、NodePort、LoadBalancer 和 Ingress 等术语。这些术语似乎有很多混淆,在开始构建下一个基于 Kubernetes 的应用程序之前,您必须了解其中的区别。

本文将解释这四种 Kubernetes 服务类型之间的区别,以及如何为您的应用程序选择最好的一种。

01

了解您的应用程序的网络要求

Kubernetes 网络和服务是一个复杂的话题。您需要了解应用程序的需求才能成功地将其部署在 Kubernetes 上。这意味着了解您想要提供的服务类型、集群的大小和位置,以及您希望应用程序接收什么样的流量。

Kubernetes 支持四种类型的服务:ClusterIP、NodePort、LoadBalancer 和 Ingress。每个都有自己的一组要求来为您的应用程序启用它们,因此您必须在部署之前了解您需要哪一个。

 

例如,NodePort 允许同一节点内的 Pod 相互通信,而无需分配 IP 地址。您的 Kubernetes 集群必须至少有两个节点才能使这种类型的网络通信正常工作。此外,NodePort 仅在从集群内部访问时才有效,而 LoadBalancers 或 Ingress 则允许外部访问。让我们逐一了解它们的工作原理。

02

集群IP

ClusterIP 是启用集群内多个 pod 通信的默认服务。默认情况下,如果您不手动定义,您的服务将在 ClusterIP 上公开。ClusterIP 无法从外界访问。但是,可以使用 Kubernetes 代理来访问您的服务。此服务类型用于工作负载之间的内部网络,同时调试服务、显示内部仪表板等。

03

节点端口

NodePort 是最简单的网络类型。它不需要配置,它只是将主机上随机端口上的流量路由到容器上的随机端口。这适用于大多数情况,但它确实有一些缺点:

  • 您可能需要使用反向代理(如 Nginx)来确保正确路由 Web 请求。
  • 每个端口只能公开一项服务。
  • 每次 Pod 启动时,容器 IP 都会不同,因此无法解析 DNS。
  • 容器无法从 pod 外部访问 localhost,因为没有配置 IP。

不过,您可以在实验期间和临时用例(例如演示、POC 和内部培训)中使用 NodePort,以展示流量路由的工作原理。建议不要在生产中使用 NodePort 来暴露服务。

04

负载均衡器

LoadBalancer 是 Kubernetes 网络最常用的服务类型。它是一个标准的负载均衡器服务,在每个 pod 上运行并建立与外部世界的连接,无论是与 Internet 等网络还是在您的数据中心内。

LoadBalancer 将保持对已启动的 pod 的连接打开,并关闭与已关闭的 pod 的连接。这类似于您在 AWS 上的 ELB 或 Azure 上的应用程序网关。上游为 HTTP(S) 流量提供第 4 层路由,而下游为 HTTP(S) 流量提供第 7 层路由。

您可以根据目标端口号、协议和主机名路由流量,或使用应用程序标签。您可以将几乎任何类型的流量发送到此服务类型,例如 HTTP、TCP、UDP、Grpc 等。使用这种方法直接公开您的服务。

05

入口

Ingress 不被认为是官方的 Kubernetes 服务,但它可以用来暴露服务。您可以通过创建规则来配置 Ingress 服务,以定义哪些入站连接应到达哪些服务。

Ingress 是一个 Kubernetes 对象 ,它位于多个服务的前面并充当智能路由器。它定义了外部流量如何到达集群服务,并配置了一组规则以允许入站连接到达集群上的服务。

入口规则通常由注释定义。Ingress 控制器读取这些注释并相应地配置 iptables 或 NGINX。有许多类型的 Ingress 控制器具有不同的功能。您可以在此处找到入口控制器列表。

Ingress 是用于公开服务的最强大的服务类型,它只需要您维护一个负载均衡器,这比使用 LoadBalancer 服务类型便宜。

这是一个简单的比较表,可帮助您快速了解服务类型。

06

Kubernetes

是云原生世界的必备工具

Kubernetes 是自动化和管理IT 基础架构的强大工具。它使您能够对基础架构的相关部分进行分组,在集群中为它们提供自己的“节点”,使它们更易于管理、监控和更新。

随着 Kubernetes 的采用率飙升,它已成为开发人员和企业在云原生领域竞争的必备平台。


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1387 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传