在NSX-T 3.0 VDS上安装带有Kubernetes的Tanzu vSphere 7
第1部分:概述,设计,网络拓扑,使用的硬件
欢迎关注LLYCLOUD VCTSC,好文不断
开始:
将会有很多人通过Kubernetes撰写有关vSphere 7的博客,可能会想为什么我要这么做。因此,对于我的博客,希望我将提供以下更多详细信息
- 网络需求。我确定许多VMware同事,客户,合作伙伴将进行评估,并且并不是每个人都熟悉网络,因此希望该博客可以使与网络柜台部分进行有意义的讨论,或者只是让自己了解什么是网络。网络组件或所需的路由。例如,将需要多少个物理NIC?如果是POC环境,我可以使用单个NIC吗?答案是肯定的,并且这样做有些复杂,我将解释为此需要做些什么。
- vCenter或NSX-T Managers VM位置。通常,对于生产设计,我们建议将vCenter和NSX-T Manager放在单独的管理群集中。对于基于VVD的VMware验证设计(VVD)和VMware Cloud Foundation(VCF),建议使用此功能。只是为了在此分享一些背景知识,在Project Pacific Beta(Project Pacific是vSphere之前具有Kubernetes的vSphere的项目名称)中,要求将vCenter放置在群集中,这将对其进行管理。与VVD不同的设计。因此,在此安装中,我还要使用此GA版本进行测试,可以在该版本中在其管理的群集之外运行Compute vCenter。
- 没有NVDS,仅vSphere VDS设计。对于许多在3.0之前使用过NSX-T的人,必须创建NVDS才能使用NSX-T。NVDS要求带来了一些挑战,例如,额外的NIC卡,因此还有额外的网络端口,vmnic上行链路配置的分配和分配。在NSX-T 3.0和vSphere 7.0中,VDS支持NSX-T。我还将利用此安装来测试此功能。这无疑将简化设置,并进一步推动物理NIC的需求。
组件:
- 计算– vSphere 7.x(vCenter Server + ESXi)和Enterprise Plus许可证
- 存储– VSAN或NFS或其他vSphere数据存储
- 网络与安全性– NSX-T 3.x
软件下载:
这是在NSX-T 3.0上使用Kubernetes部署Tanzu vSphere 7所需下载的软件的完整列表。
软件 | 下载网址 |
---|---|
ESXi vCenter | https://my.vmware.com/group/vmware/details?downloadGroup=ESXI700&productId=974&rPId=45736 VMware-VMvisor-Installer-7.0.0-15843807.x86_64.iso(350.29MB)https://my.vmware.com/group/vmware/details?downloadGroup=VC700&productId=974&rPId=45736 VMware-VCSA-all-7.0.0-15952498.iso(6.42GB) |
NSX-T | https://my.vmware.com/group/vmware/details?downloadGroup=NSX-T-300&productId=982&rPId=45439 nsx-unified-appliance-3.0.0.0.0.15946739.ova(11.03GB) |
实验环境:
对于我的实验室,我将主要使用三个物理主机作为计算群集。该群集将容纳Supervisor群集VM,Tanzu Kubernetes网格(TKG)群集以及NSX-T Edge VM。
我还将拥有另一个由管理vCenter管理的vSphere 6.7群集。该管理群集将容纳vSphere 7.0 vCenter(也称为计算vCenter)以及NSX-T Manager群集。
Management Cluster – Compute/\Storage**
**
VM | CPU | MEM | DISK |
---|---|---|---|
Compute Cluster vCenter (based on Small) | 4 | 20GB | 48GB |
NSX-T Manager x 3 | 6 | 24GB | 300GB |
Compute Cluster – Compute/Storage
VM | CPU | MEM | DISK |
---|---|---|---|
NSX-T Edge VMs (mininum Large) x 2 | 8 | 32GB | 200GB |
Supervisor Cluster VMs (based on Tiny) | 2 | 8GB | 22GB |
Guest Clusters (based on x-small) x 3 | 2 | 2GB | 16GB |
联网
在工作负载管理中定义,将在NSX-T中实现。
- Pod CIDR(默认– 10.244.0.0/21)–该网络用于Kubernetes Pod。每个名称空间或每个TKG群集将进一步细分为/ 28个细分。这是一个内部地址池,不需要从物理路由器进行路由。
- 服务CIDR(默认10.96.0.0/24)-创建Kubernetes服务时将使用此网络池。这是一个内部地址池,不需要从物理路由器进行路由。
- 入口CIDR(10.30.10.0/24)–此网络池将提供地址,用于在应用程序部署中需要负载平衡服务的时间。例如,将为Supervisor群集的控制平面IP地址分配一个NSX-T负载平衡器VIP。
- 出口CIDR (10.30.20.0/24)–当Pod需要在NSX-T环境之外进行通信(例如访问Internet)时,将使用此网络池。例如,当Pod访问Internet时,会将一个IP分配给T0路由器作为源NAT(SNAT)源地址。**入口和出口CIDR网络都需要在下一跳的物理路由器上路由到T0。
这是我计划在NSX-T 3.0部署中使用Kubernetes的Tanzu vSphere 7 的逻辑网络图:
在的物理或虚拟网络基础架构中定义
- 管理网络 (VLAN 115 – 10.115.1.0/24)–管理VM所在的位置,例如NSX-T Manager和vCenter。
- ESXi管理网络 (VLAN 116 – 10.116.1.0/24)–这是ESXi vmkernel接口所在的位置。实际上,这不是实验室/ POC设置真正需要的,但这是我个人的喜好,因为通常在针对客户环境进行设计的情况下。
- vMotion网络 (VLAN 117 – 10.117.1.0/24)–这是ESXi vMotion vmkernel接口所在的位置。
- 传输网络 (VLAN 197 – 10.197.1.0/24)–需要该网络在我们的管理网络之间通过NSX-T T0路由器与Kubernetes集群管理网络以及Kubernetes Workload网络之间进行路由。只需要两个IP,一个用于默认应存在的网关,一个用于驻留在T0上的上行链路。静态路由将用于到达NSX-T网络。在生产或非实验室环境中,将使用BGP将T0对等到的物理网络
- Internet网络 –能够访问Internet的IP地址。对于我的实验室,我设置了一个pfsense路由器,该路由器将基本上对NSX-T中的网络进行NAT,例如管理,ESXi管理网络。我还添加了整个入口/出口范围– 10.30.0.0/16作为SNAT,因此我的TKG群集也将可以访问Internet。
- 用于边缘VM的NSX-T Geneve覆盖网络(VLAN 114 – 10.114.1.0/24)–边缘VM中运行的Geneve覆盖隧道终结点接口将使用此网络。可能会想到为什么需要专门针对Edge VM的第二个网络。原因是因为我们仅使用1个物理NIC,因此为了“强制”从Edge VM传出的Geneve TEP流量通过物理NIC,因为与ESXi主机Geneve TEP接口通信时,该流量需要路由。
- ESXi主机的NSX-T Geneve覆盖网络(VLAN 120-10.120.1.0 / 24)– ESXi主机(即vmk10)上的Geneve覆盖隧道端点vmkernel接口将使用此网络。
这是我计划在NSX-T 3.0部署中使用Kubernetes的Tanzu vSphere 7 的物理网络图:
第2部分:ESXi,vCenter,VDS Config和NSX-T Manager
步骤1 –在主机上安装ESXi 7.0。
对我来说,我发现将iso文件放在NAS上然后将其安装在Supermicro IPMI的虚拟CD-ROM功能上非常方便。与创建可启动USB相比,这要容易得多。
使用Supermicro远程控制iKVM / HTML5客户端安装ESXi。
在主机启动过程中选择虚拟CDROM。
尽管我已经安装了ESXi 7.0的beta版,但是我可以选择升级选项。我在Beta测试期间确实通过此方法成功升级,并节省了每次配置IP地址,主机名等的时间。由于此安装将在GA版本上进行,因此我认为值得进行全新安装。因此,我选择将覆盖的“安装”选项。很有可能,本文的大多数读者在进行POC时都可能会选择全新的安装选项。
vSphere ESXi7.0已成功安装。我基本上对其余的ESXi主机重复上述步骤。
我基本上会跳过解释为主机名,IP地址,VLAN配置ESXi主机并启用SSH进行故障排除的步骤,这几乎完全可以说明。我确实记录了该过程,并且可能会放一段视频来显示该过程。
步骤2 –安装vCenter Appliance。
我通常更喜欢使用CLI和ovftool安装vCenter。当我使用Windows Server Jumphost时,我所做的只是将vCenter ISO挂载为CDROM驱动器,我几乎直接从Jumphost触发了安装脚本。
可以在vCenter Install ISO中找到CLI安装脚本。
我使用了Embedded_vCSA_on_VC.json。
安装-vCenter02.bat文件:-
E:\vcsa-cli-installer\win32\vcsa-deploy.exe install Z:\Scripts\SUN05-vcenter02-embedded_vCSA_on_ESXi.json –accept-eula –no-ssl-certificate-verification |
这样就完成了vCenter的安装。
步骤3 –配置虚拟DC,群集,将主机添加到群集以及创建VDS。
同样,我通常通过脚本配置上述项目,并使用PowerCLI。可以考虑使用其他自动化工具,例如Ansible或Terraform。
将所有主机都添加到群集后的样子。
接下来是在vSphere群集上启用DRS和vSphere HA。在启用带有Kubernetes的vSphere时(特别是调用Workload Management),将进行检查。
我还使用PowerCLI创建了VDS和端口组。尽管创建了两个VDS,但将仅使用一个VDS。在此将使用SUN05-VDS01-Mgmt VDS。
运行PowerCLI脚本后,现在可以看到在vCenter上创建了VDS和相关的端口组。
在VDS交换器上编辑设置,将上行链路数量更改为2,然后启用NIOC。
将主机添加到VDS并配置上行链路。右键单击SUN05-VDS01-Mgmt,单击“添加和管理主机”。
选择添加主机
选择所有新主机
单击vSwitch0当前使用的NIC上的分配上行链路。
分配给上行链路1。由于我所有的主机vmincs都是同一个,因此一种方便的方法是将此配置应用于所有主机,就是单击“将此上行链路分配应用于其余主机”。
查看配置…
我们还将把管理vmkernels接口也从标准vSwitch(vSwitch0)迁移到VDS。
选择VDS端口组,在本例中为VDS01-VLAN116-Mgmt,其VLAN标签ID为116。
再次查看设置…
下面显示了从标准交换机的vmnic迁移以及管理vmkernels均已成功迁移。
接下来,再次使用PowerCLI添加所有其余的VMkernels接口,例如vMotion,IP Storage,vSAN等。
下面显示了所有已成功创建的vmkernel。
让我们尝试启用工作负载管理。
工作负载管理向导在检查是否具有相关的先决条件以便启用它方面做得很好。现在可以看到,在继续进行之前,需要先安装NSX-T。
步骤4 –安装NSX-T Manager。
我通常也更喜欢使用CLI和ovftool安装NSX-T Manager。
安装nsxtmanager02.bat文件:-
C:\Users\Administrator\Downloads\ovftool\win32\ovftool –name=sun05-nsxtmanager02 –X:injectOvfEnv –X:logFile=ovftool.log –allowExtraConfig –datastore=vsanDatastore –network=”VDS01-VLAN115-IaaS” –acceptAllEulas –noSSLVerify –diskMode=thin –prop:nsx_ip_0=10.115.1.26 –prop:nsx_netmask_0=255.255.255.0 –prop:nsx_gateway_0=10.115.1.1 –prop:nsx_dns1_0=192.168.1.10 –prop:nsx_domain_0=acepod.com –prop:nsx_ntp_0=192.168.1.10 –prop:nsx_isSSHEnabled=True –prop:nsx_allowSSHRootLogin=True –prop:nsx_passwd_0=VMware1!VMware1! –prop:nsx_cli_passwd_0=VMware1!VMware1! –prop:nsx_hostname=sun05-nsxtmanager02 “Z:\Downloads\VMware\vSphere\7.0-GA\nsx-unified-appliance-3.0.0.0.0.15946739.ova” vi://[email protected]@sun01-vcenter00.acepod.com/?ip=192.168.1.202 |
完成后,我们可以尝试登录到NSX-T Manager的UI。
登录后看到此页面后,表明NSX-T Manager设备已成功安装。
现在,我们完成了安装和设置vCenter和NSX-T Manager的工作,接下来,我们将配置虚拟网络,例如NSX-T网段,第0层路由器,上行链路和网络路由。
第3部分:NSX-T边缘,网段,第0层路由
在本节中,我们将配置NSX-T,例如设置传输节点,边缘VM,配置第2层网段,第0层上行链路以及为使用Kubernetes进行vSphere进行准备所需的路由。
步骤0 –前提条件,部署NSX-T Manager。
因此最好确保已配置以下内容。这样可以防止在vCenter和NSX-T Manager之间来回切换。在客户或生产环境中,也可能有不同的团队来管理不同的事情,例如管理vCenter的系统/ VI管理员和网络团队将管理NSX-T。因此,有时很难使两个团队同时联机,因此最好弄清楚谁需要配置什么。**
**
1)创建VDS,并且M TU大小已增加到1600或大于1600。建议使用MTU 9000。此MTU大小必须与端口配置的大小匹配。
2)创建将用于边缘VM的端口组。
这是棘手的地方。根据交换机端口配置,可以创建带有VLAN ID标签或Trunk的端口组。此端口组VLAN标记,无标记或中继必须与交换机端口配置匹配。建议配置中继。在我的安装中,由于要验证一个物理NIC设置,因此交换机端口配置必须为Trunk。
这显示已配置所需的相关端口组。
—网络团队—
(1)确保为交换机配置了正确的MTU,并配置了路由。如所见,以下显示了VLAN116和VLAN120,这两个VLAN用于Geneve Overlay TEP。
2)为入口/出口子网配置静态路由的上行VLAN。
步骤1 –将许可证添加到NSX-T Manager。
登录到NSX-T管理器。
系统->设置下的许可证->添加
步骤2 –将vCenter添加为Compute Manager。
首先将vCenter添加为Compute Manager。系统->架构->计算管理器
这表明计算管理器已成功添加。
步骤3 –为ESXi传输节点创建上行链路配置文件。
系统->结构->配置文件->添加
配置组和活动上行链路和传输VLAN。
步骤4 –为边缘VM传输节点创建上行链路配置文件。
系统->结构->配置文件->添加
配置成组和活动上行链路,传输VLAN和MTU。
如下所示,成功创建了两个新的上行链路配置文件。
步骤5 –添加IP池。
由于Edge VM与计算群集在同一群集中运行,因此我使用两种VLAN方法来解决。**可以在博客的第一部分中阅读有关此主题的更多信息。因此,将需要两个IP池,而不是一个TEP IP池。
网络-> IP地址池->添加IP地址池
在“子网”下,单击“设置”。**请确保已配置网关IP,因为我们需要在ESXi主机TEP覆盖网络和Edge TEP覆盖网络之间进行路由。单击添加。
单击应用。
添加边缘虚拟机的IP池。网络-> IP地址池->添加IP地址池
**请确保已配置网关IP,因为我们需要在边缘TEP覆盖网络和ESXi主机TEP覆盖网络之间进行路由。 单击添加。
单击应用。
配置了TEP的两个IP池后,情况就是这样。
步骤6 –为ESXi主机创建传输节点配置文件。
系统->架构->传输节点配置文件->添加
配置传输区域,上行链路配置文件。
步骤7 –启用NSX ESXi作为传输节点
系统->结构->节点->主机传输节点。选择计算机群集,然后配置NSX。
选择我们在步骤6中创建的传输节点配置文件。
下面显示了安装进度。
这显示以下主机已成功通过NSX安装。
*步骤8 *–部署边缘
系统->架构->节点-> 边缘传输节点。单击添加边缘虚拟机。
填写名称,主机名并选择大小。对于带有Kubernetes的vSphere,将需要部署最少的Large Edge VM设备。
填写凭据。
选择计算管理器,群集和数据存储。
配置管理IP并为管理接口选择端口组。
选择边缘VM的TEP的传输区域,上行链路配置文件,IP分配和IP池。我通常对覆盖使用nvds1的命名约定,对于VLAN传输区域保留nvds2的命名约定。
选择我们在步骤1中创建的VDS 端口组 – VDS01-Trunk。
看起来如下所示,所有必填字段均已选中并填写。
通过点击添加另一个开关上路开关。可能需要向上滚动到页面才能看到该按钮。
再次,选择传输区域,上行链路配置文件和将用于上行链路的VDS端口组。我通常对覆盖使用nvds1的命名约定,对于VLAN传输区域保留nvds2的命名约定。
对Edge VM02重复上述步骤。两个边缘VM均成功部署后,其外观将如下所示。
步骤9 –配置边缘群集
系统->架构->节点->主机传输节点->添加。选择我们在上一步中刚刚创建的两个边缘节点。
下面显示了边缘群集– EC01已成功创建。
*步骤10 *–创建第0层上行链路所需的细分。
网络->细分->添加细分。填写网段名称,传输区域和子网。
步骤11 –配置Tier-0网关。
网络-> Tier-0网关-> ADD网关。
当询问是否希望继续配置此Tier-0网关时,选择“是”。
单击“ 接口”下的“ 设置 ”。
单击添加接口。
名称: T0-Uplink1-Int
类型:外部
IP地址/掩码: 10.149.1.5 / 24
连接到(段): Seg-T0-Uplink1
边缘节点: sun05-nsxtedgevm01
单击“第二个Edge VM”的“添加接口”。
名称: T0-Uplink2-Int
类型:外部
IP地址/掩码: 10.149.1.6 / 24
连接到(段): Seg-T0-Uplink1
边缘节点: sun05-nsxtedgevm02
下面显示了0层网关的两个接口均已正确创建。
点击设置下的HA VIP配置。
单击添加HA VIP配置。
IP地址/掩码:10.149.1.4 / 24
接口:T0-Uplink1-Int1,T0-Uplink1-Int2
下面显示了HA VIP配置已成功创建。
为了确保正确配置Tier-0网关上行链路,我们将登录到下一个跃点设备(以Nexus 3K为例)进行ping测试。
我先ping自己,即。在交换机上配置的10.149.1.1,然后是在Tier-0网关上配置的HA VIP。
最后,我们需要配置默认路由,以便容器可以通信回NSX-T域外部的IP地址。
在“路由”下,单击“ 静态路由”下的“ 设置 ”。顺便说一句,如果使用的是BGP,则此步骤可能会有所不同。
单击添加静态路由。
名称:默认
网络:0.0.0.0/0
单击“ 设置下一跳”,“ 添加下一跳”。
IP地址:10.149.1.1
添加静态路由后,一种测试方法是从NSX-T域外部进行。就我而言,我有一个位于NSX-T域之外的Jumphost,该Jumphost的网关也指向N3K。我从Jumphost到Tier-0 Gateway VIP进行了ping测试。如果ping测试成功,则表示已成功配置我们添加到Tier-0网关的静态路由。
步骤12 –验证是否已使用Kubernetes成功为vSphere设置了NSX-T。
通过NSX-T上的所有配置,vSphere VDS和物理网络已设置完毕,现在返回工作负载管理,以查看我们是否准备好部署工作负载管理集群!是的,我们可以!现在,工作负载管理可以检测到NSX-T!
现在,我们完成了NSX-T和相关的网络配置。在这里拍一下自己!Beta期间,无论是面向客户还是内部客户,与Kubernetes的vSphere有关的许多问题都是由于联网和与NSX相关的问题。接下来,我们将主要在vCenter端开始配置工作负载管理所需的内容,例如存储策略,内容库等。
第4部分:主管群集,内容库,TGG群集
步骤1 –创建VM存储策略。
如果尚未登录,请登录到vCenter。菜单->数据存储。单击要用于带有Kubernetes的vSphere的数据存储。
在标签下,单击分配。
点击添加标签。
给标签起个名字。然后单击“ 创建新类别”。
名称: pp-storage
类别名称: pp。其余设置保持不变。
这是成功创建“标记”和“标记类别”时的外观。选择刚刚创建的标签,然后点击分配。
菜单->存储策略->虚拟机存储策略。
名称: pp-storage-policy
选择“ 启用基于标签的放置规则”。
选择标签类别和在先前步骤中创建的标签。
它将显示之前标记的数据存储。
摘要页面。查看并完成。点击完成。
步骤2 –启用工作负载管理和创建Supervisor群集。
菜单->工作量管理。点击启用。
选择兼容群集。
群集设置。选择控制平面尺寸。对我来说,我选择Tiny,因为这是实验室/测试设置。
为控制平面节点和辅助节点配置网络。
管理网络
网路: VDS01-VLAN115-IaaS
起始IP地址: 10.115.1.201
子网掩码: 255.255.255.0
网关: 10.115.1.1
DNS服务器: 192.168.1.10
NTP服务器: 207.148.72.47(作为实验室访问互联网,我使用公共NTP服务器。)** NTP非常重要。将在wcpsvc日志中看到身份验证错误,通常这与NTP无法正常工作有关。
工作量网络
vSphere分布式交换机: SUN05-VDS01-MGMT
边缘群集: EC01
DNS服务器: 192.168.1.10
Pod CIDR:10.244.0.0/21(默认)
服务CIDR:10.96.0.0/24(默认)
入口CIDR:10.30.10.0/24
出口CIDR:10.30.20.0/24
存储
审查并确认
完成后,现在将看到正在部署的Supervisor群集控制VM。
大约25分钟
可以在此处查看网络配置。
步骤3 –创建命名空间,设置权限和存储
单击创建命名空间。选择要在其中创建名称空间的集群,并为名称空间命名。**顺便说一句,这里只是个注释。不要将此名称空间与Kubernetes名称空间混淆。我认为在带有Kubernetes的vSphere中此名称空间构造的方式就像一个项目或应用程序。该项目或应用程序可以包含容器以及VM。
名称: demo-app-01
这表明名称空间已成功创建。
单击添加权限。
使用编辑角色将权限授予[email protected]。
添加存储策略。
成功配置权限和存储策略后,将显示该外观。
步骤4 –测试Pod VM
登录到Supervisor集群。
kubectl config use-context demo-app-01 |
启动Pod VM。
Pod VM正在运行
步骤5 –启用内容库
vCenter->菜单->内容库->创建。
名称: Kubernetes
订阅URL: https://wp-content.vmware.com/v2/latest/lib.json
选择要存储ova图像的存储。
准备完成。
这是成功下载映像后的样子。
步骤6 –建立TKG群集
创建以下yaml文件。
nano create-tanzu-k8s-cluster01.yaml |
登录到Supervisor群集。
kubectl vsphere login –server=10.30.10.1 –insecure-skip-tls-verify –vsphere-username=[email protected] |
应用yaml文件。
现在,可以看到正在部署的TKG群集VM。
登录到TKG群集。
kubectl vsphere login –server 10.30.10.1 –vsphere-username [email protected] –insecure-skip-tls-verify –tanzu-kubernetes-cluster-name tkg-cluster –tanzu-kubernetes-cluster-namespace demo-app-01 |
TKG集群成功部署。
kubectl config use-context tkg-cluster |
现在我们已经完成了创建TKG集群的工作,接下来我们将部署一些演示应用程序。
第5部分:测试,演示应用
在本节中,我们将对TKG集群执行一些测试。
步骤1 –登录到TKG群集并切换到tkg群集上下文。
kubectl vsphere login –server 10.30.10.1 –vsphere-username [email protected] –insecure-skip-tls-verify –tanzu-kug-cluster –tanzu-kubernetes-cluster-namespace demo-app-01 |
kubectl config use-context tkg-cluster |
*步骤2 *–应用ClusterRole安全策略。
kubectl apply -f https://raw.githubusercontent.com/dstamen/Kubernetes/master/demo-applications/allow-runasnonroot-clusterrole.yaml |
步骤3 –部署应用程序。
我使用了hipster商店演示。
kubectl create ns hipster |
步骤4 –访问应用程序。
找出由分配的NSX-T LB进行负载平衡的虚拟IP。
kubectl get pod -n hipster |
中提琴!现在可以尝试访问该应用程序!
而已!希望发现此带有Kubernetes的vSphere博客系列很有用!