精选博客系列|在vSphere 8上使用Tanzu的Antrea Egress
在这个关于Antrea容器网络的博客中,我们将着重介绍Egress功能,并展示如何在vSphere with Tanzu 中使用它。
根据官方Antrea文档,Egress是一种Kubernetes自定义资源定义(CRD),它允许您为特定的Pod指定访问外部网络时使用的出口(SNAT)IP。当所选的Pod访问外部网络时,Egress流量将通过隧道传输到托管Egress IP的节点(如果它与Pod所在的节点不同),并在离开该节点时被SNAT到Egress IP。您可以在以下图片中看到流量的流向。
当Egress IP从externalIPPool中分配时,Antrea还自动提供了高可用性;即如果托管Egress IP的节点故障,将有另一个节点从externalIPPool的nodeSelector选择的其余节点中被选举出来。
注意:备用节点不仅会接管IP,还会通过二层广播(例如IPv4的Gratuitous ARP)来通知网络上的其他主机和路由器该IP关联的MAC地址已更改。
如果以下任何一项符合您的需求,您可能会想要使用Egress功能:
- 当一些特定Pod连接到集群外的服务时,您希望它们使用一个一致的IP地址,便于审计日志溯源或在外部防火墙中按源IP进行过滤等。
- 您想要强制外部连接通过特定节点离开集群,以进行安全控制或克服网络拓扑限制。
您也可以使用可路由的Pod来实现相同的效果。但是,使用Egress功能,您可以精确控制哪些Pod具有此功能(而不是一刀切)。
TKG的特性开关和配置变量
开源Antrea 1.6版(及以上)默认启用了Egress特性开关。由于 VMware Antrea 企业版具有不同的发布计划,因此我们需要检查是否已启用 vSphere with Tanzu 或 TKG 的Egress功能,如果未启用,则需要了解如何启用它。
TKG 1.6 引入了可在集群定义中使用的 Antrea 配置变量,而不再需要给 TKG打补丁 或暂停会覆盖手动更改的 Kubernetes 控制器。
正如您所看到的,使用 TKG 1.6,出口功能已默认启用。所有其他可用的 Antrea 功能(例如 NODEPORTLOCAL、FLOWEXPORTER、MULITCAST 等)可以使用相应的变量进行配置。
vSphere 8 with Tanzu 的自定义资源定义(Custom Resource Definitions)
那么 vSphere 8 with Tanzu 呢?它有一个 Kubernetes CRD AntreaConfig 为您提供了配置 Antrea 所需的所有灵活性。在我们深入探讨此主题之前,让我们创建一个 supervisor 命名空间 tkg,覆盖默认设置并禁用 NAT 模式。这意味着工作节点 IP 是可路由的(否则 Egress 将没有太多意义),但 Pod IP 仍然是 NAT 的。在本次Egress演示中,我们使用的环境是 vSphere 8 with NSX 4.0.1.1 ,并选择了一个小型可路由命名空间网络段和一个 /28 子网前缀。
成功创建命名空间后,让我们检查一下NSX的配置:
如果您查看有关可路由 Pod 的 vSphere 8 文档,您可以看到对 antrea-nsx-routed CNI 的引用。
对于我们的演示,我们将使用基于 Cluster-API 的 ClusterClass 方法创建 TKG 集群。要启用 Egress(以及未来演示的其他一些功能),我们需要使用 AntreaConfig CRD 创建自己的 Antrea 配置。然而,将此配置关联到特定集群的方法有些特殊,我们需要使用特殊的命名约定。
下面的命令显示,在我们的 tkg 命名空间中已经有两个预定义的 AntreaConfig 对象可用。它们都将 Egress 设置为 false:
我们的集群名为 cluster-3,因此我们需要将 AntreaConfig 命名为 cluster-3-antrea-package(即必须将-antrea-package 添加到集群名称后面)。然后该 AntreaConfig 将自动被该集群使用。
注意:您应该使用单独的 YAML 文件存放 Antrea 配置!删除集群将自动删除相应的 AntreaConfig 资源。如果您将两个定义放在同一文件中,集群删除将会挂起!
Clusters, ClusterClass 和 Egress
现在是时候使用 Cluster资源创建我们的集群(而不再是 TanzuKubernetesCluster 资源类型),并配置 Egress。
该集群使用 Ubuntu 作为基本操作系统,并使用默认的 vSAN 存储策略。由于 ClusterClass 中尚未提供 NetworkClass,因此我们必须使用 AntreaConfig 命名约定。
注意:虽然集群节点是可路由的(而不是 NAT),但您不能直接 SSH 到它们,因为系统创建了分布式防火墙(DFW)规则来拒绝访问。
如果您需要直接访问集群节点,您需要创建一条特定的防火墙规则。或者,您可以按照官方vSphere 8文档使用某一台 supervisor VM 或 jumbox 容器登录到 worker 节点。
现在,其余的 Egress 配置就非常标准了。在切换到 cluster-3 上下文之后,我们首先定义一个 ExternalIPPool。由于 nodeSelector 为空,Antrea 将随机选择一个活动节点并指定一个备用节点。如果需要,您也可以配置专用的 Egress 节点。
如何选择配置中使用的CIDR和IP范围呢?由于我们的环境设置中自动为集群VM创建的NSX段使用的范围为10.221.193.49/28,我们将ExternalIPPool配置为使用该范围中的最后两个(未使用的)IP地址。
重要提示:这个标准方法使用了与集群VM在同一范围的IP地址作为Egress IP。由于这些Egress IP地址不受vSphere 8 with Tanzu管理,因此您必须小心,不要将集群规模扩展到使用此范围内的IP,以避免出现重复的IP地址。从技术上讲,您可以在ExternalIPPool中使用其他IP地址范围,并让Antrea通过BGP宣布这些设置和更改。但这是另一次讨论的话题。
让我们继续我们的配置。我们为prod命名空间中标记为web的Pod创建一个Egress资源,为staging命名空间中标记为web的Pod创建另一个Egress资源。
让我们按照 vSphere 8 的文档创建一个 jumpbox,以便访问上述的 cluster node cluster-3-node-pool-01-hgxk2-768974f9bc-l4fdq,该节点的 IP 地址为 10.221.193.52,这样我们就可以看到由 Antrea 创建的新接口 antrea-egress0,它有两个 IP 地址(10.221.193.61/32 和 10.221.193.62/32)。
接下来,我们创建两个命名空间 prod 和 staging,并在它们各自部署一个简单的 web 应用程序。
为了测试每个命名空间中的 Web Pod 是否使用不同的出口地址,让我们在 NSX 外部的 VM showip.tanzu.lab 上创建一个简单的 Web 应用程序,返回访问它的客户端的 IP 地址。
现在进行最后一项测试,展示不同命名空间中的 Pod 使用不同的出口地址访问我们的 Web 应用程序。
到这里,我们成功在 vSphere 8 with Tanzu上使用 AntreaConfig CRD 配置了 Antrea Egress。
内容来源|公众号:VMware 中国研发中心

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
声网 Token 鉴权机制,以及常见的问题
Token鉴权是什么? Token也称为动态密钥,是在加入频道时用于校验用户权限的一组字符串;鉴权是指在用户访问你的系统前,对其进行身份校验。用户在使用声网服务,如加入音视频通话或登录信令系统时,声网会使用 Token 对其鉴权。 我们为这种方式提供了一个较为形象的比喻,即: 某个展览馆需要游客实名认证后,获取专属入场券才可参观。游客在完成实名认证后可以获取到具备有效期限制的专属入场券,在进场时提供在有效期内的入场券,方能进场。其中: 展览馆相当于声网的服务,即音视频频道或信令系统等; 专属入场券相当于 Token; 实名认证步骤相当于结合 声网 AppID、频道号、用户 ID 等信息 获取到专属 Token 的步骤; 进场时校验入场券相当于鉴权,即校验 Token 是否和 声网 AppID、频道号、用户 ID 等信息匹配,且在有效期内。 声网的产品和服务中大部分采用Token 鉴权的方式。下面,我们针对如何生成和使用 Token,以及 Token 鉴权中常见的问题进行详细的讲解。 如何生成和使用Token? 1、Token 鉴权原理 在了解如何生成和使用Token 前,需要先了解 T...
- 下一篇
word GPT Plus V0.2.1 利用 ChatGPT 辅助工作的 Word 加载项 优化文本插入
Word GPT Plus 是一款基于Vue3开发的Word加载项,它允许你基于文档中写的内容生成文本。你可以使用它来翻译、总结、润色或者从零开始写一篇文章。 开源地址和软件官网 Github Kuingsmile/word-GPT-Plus 本次更新内容 优化了回复语言设置 修复了使用web接口时,如果回复过长报错的问题 修复了新行模式插入的bug 特色功能 使用GPT-3.5 API生成文本并支持选择模型 支持设置access token调用chatGPT web接口(使用该方法免费,建议配合chatGPT-plus) 内置用于翻译、总结、润色和学术写作的提示 支持多种语言 可以自定义提示并保存以供将来使用 允许用户设置temperature和max tokens 支持代理 使用截图 安装方法 有两种方法可以安装 Word GPT Plus:通过我的免费web服务,或者自己搭建服务。 我强烈建议使用我的web服务,因为它安装简单快捷,也不需要安装额外的依赖项。此外,你将随时可以访问到最新版本的 Word GPT Plus。 由于所有数据都是使用localStorage保存的,所以...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启