首页 > 其他分享 >K8S内部网络通信是如何实现的?

K8S内部网络通信是如何实现的?

时间:2023-03-07 15:11:28浏览次数:52  
标签:网络通信 内部 IP 地址 集群 DNS 均衡器 K8S GKE

在本文中,我们将探讨Google Kubernetes Engine (GKE) 的网络组件以及现有的各种选项。Kubernetes是一个用于管理容器化工作负载和服务的开源平台,而 GKE 是一个完全托管的环境,用于在 Google Cloud 基础架构上运行 Kubernetes。

Cloud Ace 是谷歌云全球战略合作伙伴,拥有 300 多名工程师,也是谷歌最高级别合作伙伴,多次获得 Google Cloud 合作伙伴奖。

作为谷歌托管服务商,我们提供谷歌云、谷歌地图、谷歌办公套件、谷歌云认证培训服务。

IP 地址

Kubernetes 中的各种网络组件利用 IP 地址和端口进行通信。IP 地址是标识网络中各种组件的唯一地址。

组件

·容器 - 这些是执行应用程序进程的最小组件。一个或多个容器在一个 pod 中运行。

·Pods - 物理上组合在一起的容器集合。Pod 被分配给节点。

·节点 - 节点是集群中的工作机器(节点集合)。一个节点运行零个或多个 Pod。

服务

·ClusterIP - 这些地址分配给服务。

·负载均衡器 - 将内部流量或外部流量负载均衡到集群中的节点。

·Ingress - 处理 HTTP(S) 流量的特殊类型的负载均衡器。

IP 地址从各个子网分配给组件和服务。可变长度子网掩码 (VLSM) 用于创建CIDR块。子网上的可用主机数量取决于使用的子网掩码。

在 Google Cloud 中计算可用主机的公式是 2 n - 4,而不是通常用于本地网络的2 n - 2。

IP 地址分配流程如下所示:

·从集群的 VPC 网络为节点分配 IP 地址。

·默认情况下,内部负载均衡器 IP 地址是从节点 IPv4 块自动分配的。如有必要,您可以为负载均衡器创建一个指定范围,并使用该loadBalancerIP选项指定该范围内的地址。

·为 Pod 分配的地址来自发布给在该节点上运行的 Pod 的一系列地址。每个节点的默认最大 Pod 数为 110。要为该数字分配地址,数量乘以 2 (110*2=220) 并使用最近的子网,即 /24。这允许用于调度 pod 的缓冲区。此限制可在创建时自定义。

·容器共享它们运行的​​ Pod 的 IP 地址。

·服务(集群 IP)地址是从为服务保留的地址池中分配的。

VPC-native 集群文档的 VPC-native 集群的IP 地址范围部分为您提供了规划和确定地址范围的示例。

域名系统 (DNS)

DNS 允许名称到 IP 地址的解析。这允许为服务创建自动名称条目。GKE 中有几个选项。

·kube-dns - Kubernetes 原生附加服务。Kube-dns 在通过集群 IP 公开的部署上运行。默认情况下,集群中的 pod 使用此服务进行 DNS 查询。“ Using kube-dns ” 文档描述了它是如何工作的。

·Cloud DNS - 这是 Google Cloud DNS 托管服务。这可用于管理您的集群 DNS。Cloud DNS 相对于 kube-dns 的一些优势是:

-减少对集群托管 DNS 服务器的管理。

-支持 GKE 节点本地解析 DNS。这是通过在本地缓存响应来完成的,这提供了速度和可扩展性。

-与 Google Cloud Operations监控套件集成。

Service Directory是 Google Cloud 的另一项服务,可与 GKE 和 Cloud DNS 集成以通过命名空间管理服务。

gke -networking-recipes github repo 有一些 Service Directory 示例,您可以尝试用于 Internal LoadBalancers、ClusterIP、Headless 和 NodePort。

负载均衡器

这些控制访问并跨杂乱资源分配流量。GKE 中的一些选项包括:

内部负载均衡器

外部负载均衡器

Ingress

它们处理发往集群中服务的 HTTP(S) 流量。他们使用 Ingress 资源类型。使用它时,它会为 GKE 创建一个 HTTP(S) 负载平衡器。配置时,您可以为负载均衡器分配一个静态 IP 地址,以确保该地址保持不变。

在 GKE 中,您可以配置外部和内部 Ingress。以下指南的链接向您展示了如何配置:

·为内部 HTTP(S) 负载平衡配置入口

·为外部负载平衡配置入口

GKE 允许您利用容器原生负载平衡,该负载平衡使用网络端点组 (NEG)将流量直接定向到 pod IP 。

服务路由

在这个主题中需要理解三个要点:

·前端-这会通过基于各种规则接受流量的前端向客户端公开您的服务。这可能是 DNS 名称或静态 IP 地址。

·负载均衡——一旦流量被允许,负载均衡器就会根据规则分配到可用资源以服务请求。

·后端-可以在 GKE 中使用的各种端点。

操作模式

在 GKE 中,您可以通过多种方式设计集群网络:

·标准- 此模式允许管理员配置集群底层基础设施。如果您需要更深层次的控制和责任,这种模式是有益的。

·Autopilot - GKE 配置和管理集群的底层基础设施。这是为使用而预先配置的,并为您提供了一些交接管理自由。

·专用集群(仅允许内部 IP 连接)。如果您需要客户端访问互联网(例如更新),您可以使用云 NAT。

·私有服务访问,(让您的 VPC通过私有 IP 地址与服务生产者服务通信。私有服务连接,(允许跨 VPC 网络私有使用服务)

总结

·IP 地址分配给集群中的各种资源

-Pods

-Nodes

-Containers

-Services

·这些 IP 地址范围是为各种资源类型保留的。您可以通过子网调整范围大小以满足您的要求。建议限制对集群的不必要的外部访问。

·默认情况下,Pod 具有跨集群通信的能力。

·要公开在 pod 上运行的应用程序,您需要一个服务。

·集群 IP 分配给服务。

·对于 DNS 解析,您可以依赖 kube-dns 等原生选项,也可以在 GKE 集群中使用 Google Cloud DNS。

·负载均衡器可以在集群内部和外部使用,以公开应用程序和分配流量。

·Ingress 处理 HTTP(S) 流量。这利用了来自谷歌云的 HTTP(S) 负载平衡器服务。Ingress 可用于内部和外部配置。

标签:网络通信,内部,IP,地址,集群,DNS,均衡器,K8S,GKE
From: https://www.cnblogs.com/cloudace/p/17188170.html

相关文章

  • Higress on K8s 5分钟开箱即用
    作者:澄潭Higress简介Higress是云原生网关的提出者和定义者,实现了K8s的IngressAPI标准,历经阿里双十一洪峰考验,对比IngressNginx具备以下优势:5分钟开箱即用Step0.......
  • Higress on K8s 5分钟开箱即用
    作者:澄潭Higress简介Higress是云原生网关的提出者和定义者,实现了K8s的IngressAPI标准,历经阿里双十一洪峰考验,对比IngressNginx具备以下优势:5分钟开箱即用......
  • cmd中执行cl命令,提示'cl' 不是内部或外部命令,也不是可运行的程序或批处理文件
    前提:已经安装vs系列软件我们可以在命令行直接编译c++程序在windows操作系统中,打开命令行,输入cl,若系统提示'cl'不是内部或外部命令,也不是可运行的程序或批处理文件。则......
  • K8S域名解析问题分析
    ......
  • 内部类_Inner
    定义:在一个类中定义一个类,就叫内部类。成员内部类:定义在类中方法外的叫成员内部类局部内部类:定义在方法中的叫局部内部类•成员内部类:a、创建不带修饰符的......
  • 内部类
    内部类普通内部类在一个类里面创建一个类就是普通内部类内部类实例化方法:外部类.内部类实例名=外部类实例.new内部类();例如:publicclassMain{publicst......
  • K8S 实用工具之四 - kubectl实用插件
    开篇......
  • Kubernetes(k8s)权限管理RBAC详解
    一、简介kubernetes集群相关所有的交互都通过apiserver来完成,对于这样集中式管理的系统来说,权限管理尤其重要,在1.5版的时候引入了RBAC(RoleBaseAccessControl)的权限......
  • K8S 实用工具之三 - 图形化 UI Lens
    开篇......
  • java内部类
    内部类定义:在java中允许一个类定义在另一个类内中,前者叫内部类,后者叫外部类根据内部类定义的位置分为:成员内部类:类定义在方法外;类定义在方法外并且是静态类嵌套类......