趁着 VMworld 2021 China 的热度,首次在开通已久的公众号发表内容。
开局一张图,一图胜千言! 先介绍下背景知识。
上图是 VMware Tanzu 产品线,包含构建、运行、管理三个部分。今天我们只说运行这部分,首先要理清几个容易混淆的概念: Tanzu, vSphere with Tanzu, Tanzu Kubernetes Grid (包含TKGs和TKGm)。
Tanzu 是 VMware 现代化产品家族的总称,Tanzu 来自于斯瓦希里语(斯瓦希里 Swahili 是非洲东部地区跨界民族),是"树枝"的意思,它代表的是一个不断增长的解决方案系列的新分支,可帮助客户向任何云环境交付任何应用。VMware 用 Tanzu 来命名应用现代化解决方案相关的产品,VMware 也在不断地丰富和发展 Tanzu 产品家族,为用户构建、运行和管理现代应用提供更大的便利。
vSphere with Tanzu 是把 vSphere 集群重新构建为 Kubernetes 集群,也叫主管集群,ESXi 成为 Kubernetes 的 worker 节点,可以直接在 ESXi 上直接运行容器 Pod 。vSphere with Tanzu 为 vSphere 环境管理新提供了一个 Kubernetes 管理方式,使得开发人员在 vSphere 环境中也可以使用熟悉的 Kubernetes 命令和 API 来开发、部署、管理应用,且应用是直接运行在 ESXi 之上的容器Pod内,同时也可以用 Kubernetes 命令和API来发布、管理虚拟机和 Tanzu Kubernetes Grid 集群等服务。
Tanzu Kubernetes Grid (TKG) 是 Tanzu 产品家族中的一个产品,是 VMware 的 Kubernetes 企业发行版本,可以在私有云和公有云多种云环境中部署,为用户提供一致的 Kubernetes 使用体验,与社区的 Kubernetes完全兼容。根据部署和管理方式的不同,分为Tanzu Kubernetes Grid Service for vSphere ( 简称TKGs) 和 Tanzu Kubernetes Grid Muti-cloud (简称TKGm)。
TKGs 是通过vSphere with Tanzu进行发布和管理的,作为vSphere with Tanzu的一部分,vSphere with Tanzu 通过Kubernetes方式对TKGs进行全生命周期管理。
TKGm是Tanzu Kubernetes Grid多云版本,支持部署在vSphere 、AWS、Azure多种云环境。通过独立部署的TKG管理集群进行生命周期管理。
TKGm 与TKGs相比,版本迭代速度更加快,部署方式更加灵活。
背景知识介绍完了,说正题:TKGm 1.4 for vSphere 快速部署,尽快踏上学习 TKGm 之旅。
前提假设对vsphere 和Kubernetes有基础知识,按照以下流程进行部署。为了简化安装过程,快速熟悉 TKGm,本次是采用的是在线安装模式(TKGm 的 Kubernetes 来自 VMware 在线仓库,也可以自建 Harbor 进行离线安装模式,后续会单独介绍)并采用简单的网络架构。
部署流程:
拓扑架构:
备注:为了测试方便,便于理解,管理网、业务网、节点网络都使用同一个网络mgmt (生产部署需要分开)
部署环境:
角色 | 版本 | 备注 |
vcenter | 7.0.3 | 支持6.7U3 和7.x |
ESX | 7.0.3 | 支持6.7U3 和7.x |
AVI (NSX Advanced Load Balancer) | 20.1.6 | 负载均衡和服务发布 |
bootstrap | Centos 7.4 Tanzu cli 1.4 | 登陆、管理TKGm集群 |
DHCP/DNS/NTP | windows 2012 |
部署详细步骤:
0. 登陆以下地址下载软件 (需要拥有vmware账号)
备注:TKGm 的 Tanzu Cli 工具和 OS OVA 模版从以下地址下载, Kubernetes需要在部署过程中自动从 VMware 在线仓库 projects.registry.vmware.com 拉取镜像部署。(也可以搭建私有 Harbor 仓库)
https://customerconnect.vmware.com/downloads/details?downloadGroup=TKG-140&productId=1165&rPId=73660
Tanzu cli 1.4 工具软件
kubectl 工具软件
Kubernetes OVA 模版文件(支持Photo和Ubuntu )
AVI 负载均衡控制软件
1. 配置 DHCP/DNS/NTP 服务器,DHCP 服务器为TKGm 分配节点IP、DNS、GW,为了测试方便,建议配置 Windows DHCP服务器。同时把此服务器配置为 DNS 和 NTP 服务器。
1)配置 DNS 服务,写入vc、esx等解析,并配置DNS转发公网DNS (在线部署模式需求)
2) 安装配置 DHCP 服务
2. 准备 vSphere 集群环境,由于假设具备 vsphere 基础知识,就不详述配置过程,只是注意要打开 DRS功能。
上传下载的 Kubernetes OVA 模版文件, 并转换为模版
3. 准备 Bootstrap 启动服务器,bootstrap 作为部署 TKGm 的启动服务器,建议采用 linux 操作系统(建议centsos 7.x),并需要安装 Docker 引擎,同时配置DNS与NTP。Bootstrap 与 TKGm管理集群、工作集群,关系如下图。
1)安装Tanzu cli工具,从 myvmware 下载 tanzu-cli-bundle-linux-amd64.tar 解压后进行安装。
查看解压包 # ls cli* cluster kapp-linux-amd64-v0.37.0+vmware.1.gz login package ytt-linux-amd64-v0.34.0+vmware.1.gz core kbld-linux-amd64-v0.30.0+vmware.1.gz management-cluster pinniped-auth imgpkg-linux-amd64-v0.10.0+vmware.1.gz kubernetes-release manifest.yaml vendir-linux-amd64-v0.21.1+vmware.1.gz |
安装tanzu cli #install core/v1.4.0/tanzu-core-linux_amd64 /usr/local/bin/tanzu 安装tanzu cli 插件 #tanzu plugin install --local cli all #tanzu plugin list ! Unable to query remote plugin repositories : could not fetch manifest from repository "core": Get "https://storage.googleapis.com/tanzu-cli-tkg/artifacts/manifest.yaml": context deadline exceeded NAME LATEST VERSION DESCRIPTION REPOSITORY VERSION STATUS cluster Kubernetes cluster operations v1.4.0 installed kubernetes-release Kubernetes release operations v1.4.0 installed login Login to the platform v1.4.0 installed management-cluster Kubernetes management cluster operations v1.4.0 installed package Tanzu package management v1.4.0 installed pinniped-auth Pinniped authentication operations (usually not directly invoked) v1.4.0 installed |
2)安装kubectl工具
install kubectl-linux-v1.21.2-vmware.1 /usr/local/bin/kubectl
3)安装Carvel工具
把 ytt kapp kdld imgpkg工具添加执行权限,拷贝到/usr/local/bin/ 目录下
4) 安装docker 引擎
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum install docker-ce
systemctl enable docker
5) 生成ssh-key 密钥对,用来作免密登陆TKGm 节点的密钥
[root@tkgcli176 ~]# ssh-keygen -t rsa -b 4096 -C "tkg@vcf.com" Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:gO0uIUhpwlPfHPVgQXsVsuThlj6GLuATeonnhaAolLQ tkg@vcf.com The key's randomart image is: +---[RSA 4096]----+ | . .o*.+ o. | |. o .oo o B * | |.B ..oo . O | |=.+ . . = | |.E...o. S. + | |o ..=o= . . . | |o. o.B.o . | |. +.o . | | . | +----[SHA256]-----+ [root@tkgcli176 ~]# eval `ssh-agent -s` Agent pid 274293 [root@tkgcli176 ~]# ssh-add ~/.ssh/id_rsa Enter passphrase for /root/.ssh/id_rsa: Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa) 查看pub密钥 cat .ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDBd5nZEo7UucQePacNwrStPz6o7QaBZE7yRUHG4A6lctI0s46Rfgg/uQ0p7hjz70xfOyJEQ8UlIQ36qhYtVq/RJXsLuCs4qxkbJb8/laZ1q+ybNLJUCL/oV7UbvGB7TKL0qZ7DbgmUdHfDg5/LSC9xN1nhWt2lRcPfwZDTWtojz76IYdYosU/baejualzr8lSIBhZIQsLCBwaonLPhPkU1mGBrydRfZVK3rysWAtzSkf8Dlo9lCtwbJIO1yHJd++jP6Dr/Q0QB0s07NL0HTmMc7Q4RqLlrHlsmwyJ3ALoTi86VazjHUoPZl7xlUcl+jdjL9Om9LIhwcj/Q28L/HfrXGMfW6O8F1pK2QYI3AZdN5lmJ8YzO23sQ9HLvsn15rBCWSxV/rsnq5pvo92cRzYCl2tvqt2YWfWD8AhM7dg46wjfg5ibo3LRYPH4/n7g7kF844pkuyIN4D/K96f5l4jfs/OWrFiW/0dGElCvTEpDbnjWZhi49KgCI5jS2Y4XaX/f42GftlHuhHX9pd5SQvydRBzN5hpY4IpGr8+MVqXutlA98u3OVFUTD5UHSeNNs1ZrHsQXzxdY5QZw2YH7ybv3yOvTKgQoP/rGGofcUesCGmi0D5wQalU8y6RaIJSIIkplIDP+L7mrfL6yKRqRDOib0CbXonuialKzcfPaKxnv0nw== tkg@vcf.com |
6 )配置bootstrap dns,同时设置NTP服务器,保证可以与
projects.registry.vmware.com 正常解析和通信
4. AVI 是VMware NSX 高级负载均衡器,作为 TKGm 的 API 的外部负载均衡器,同时为 TKGm 提供的 LoadBalancer 服务暴露功能。为了测试方便,管理网络和数据网络采用同一个网络。
备注:当前 TKGm 1.4 支持的 AVI 20.1.6 版本;测试系统资源限制,AVI控制器是单台部署,生产系统要三台配置成集群。
1)部署下载的AVI ova文件
2)为AVI虚拟机命名
3)输入规划的IP、子网掩码、网关
4)部署成功之后,根据系统性能,等待AVI启动,使用IP进行登陆,创建admin用户和密码
5)设置passphrase和dns 服务器(也可以后续设置),默认下一步
6)admin 用户名和密码登录之后,导航到Default cloud开始配置与VC关联
7)输入VC IP 、管理员用户名和密码
8)设置数据中心
9)选择VC上的管理网名称,设置管理网段、网关以及静态池,选择save,
连接成功,显示绿色
10)设置Service Engine Group ,编辑默认Default-Group
11)由于TKGm自带的AVI 的License 是Avi Essentials,所以Service Engine Group只支持a/s模式,由于测试环境资源有限,Service Engine 内存预留可以不选(生产系统需要设置预留),保存退出
12)配置网络,由于本次测试管理网、业务网、节点 都使用管理网,所以不需要单独配置业务网等。
13)设置该子网可以作为业务网和数据网络
14)设置IPAM profile
15)设置cloud 与IPAM关联
16)创建新的AVI控制器证书
17)设置证书名字、Common Name (测试可以任意写),SAN (确保与AVI控制器IP一致)
18)可以设置证书过期时间
19)进入管理的设置中,编辑、进行证书替换
20)删除原有的SSL/TLS证书,替换上面创建的新证书,并确保选择Allow B asic Authencication,保存退出,重新登录
21)重新登录AVI控制器,设置DNS/NTP
5. 部署 TKGm 管理集群
1)登陆 bootstrap 服务器,运行创建管理集群命令
[root@bootstrap ~]# tanzu management-cluster create --ui --bind 192.168.110.21:8088 --browser none --timeout 2h0m0s Validating the pre-requisites... Serving kickstart UI at http://192.168.110.21:8088 |
2) 使用浏览器 http://192.168.110.21:8088 打开创建管理集群UI,选择部署在VMware vsphere
3)输入VC IP、用户名、密码,然后点击connect 连接到VC
4)由于vsphere 是7.x版本,会弹出界面提示可以采用vsphere with tanzu 进行管理,直接选择部署TKG管理集群
5)输入在配置bootstrap 过程中配置的 /root/.ssh/id_rsa.pub 中的密钥
6)管理集群dev模式是 1个控制节点,1个worker节点;Production 是3个控制节点,1个worker节点,由于测试环境,建议选择dev模式。管理集群命名,管理集群控制节点的高可用模式选择AVI ,管理集群控制节点的控制IP,可以从AVI 网络池选择输入,也可以自动获取,本次测试选择自动获取。
7)关联AVI控制器,输入AVI IP 用户名、口令,以及配置AVI控制器步骤中创建的证书,进行验证。
8)登陆AVI控制器,导出证书,
9)选择关联AVI的Cloud、service engine group name、网络信息,下一步
10)metadata 可以不设置,下一步
11)选择部署TKGm管理集群的vsphere上的位置
12)选择kubernetes CNI 以及使用的网络,下一步
13)统一认证,需要配置认证服务器,本次测试不配置,下一步
14)选择部署管理集群的kubernetes OVA 模版(之前已经上传),TKG 1.4 管理集群要求必须是1.21.2版本
15)注册到多集群管理TMC,TMC是SAAS服务,可以不配置,下一步
16)REVIEW 配置信息,可以直接图形点击部署也可以把执行命令拷贝,直接在bootstrap上执行,本次测试在bootstrap上执行命令行执行
17)修改命令行日志级别为9可以更详细查看部署过程
18)根据网络和系统性能部署时间十几分到几小时,管理集群部署成功如下
19)获得kubeconfig文件,登陆管理集群
tanzu mc kubeconfig get --admin
Credentials of cluster 'tkgm' have been saved
You can now access the cluster by running 'kubectl config use-context tkgm-admin@tkgm'
6、发布TKGm工作集群
1)登陆到bootstrap 的/root/.config/tanzu/tkg/clusterconfigs 目录下,拷贝创建管理集群使用的配置文件为workload01.yaml进行修改,内容如下
CLUSTER_NAME: workload01 CLUSTER_PLAN: prod CNI: antrea AVI_CONTROL_PLANE_HA_PROVIDER: "true" CONTROL_PLANE_MACHINE_COUNT: 1 WORKER_MACHINE_COUNT: 1 VSPHERE_CONTROL_PLANE_NUM_CPUS: 2 VSPHERE_CONTROL_PLANE_DISK_GIB: 40 VSPHERE_CONTROL_PLANE_MEM_MIB: 8192 VSPHERE_WORKER_NUM_CPUS: 2 VSPHERE_WORKER_DISK_GIB: 40 VSPHERE_WORKER_MEM_MIB: 4096 VSPHERE_CONTROL_PLANE_DISK_GIB: "40" VSPHERE_CONTROL_PLANE_ENDPOINT: "" VSPHERE_DATACENTER: /DC VSPHERE_DATASTORE: /DC/datastore/localesx02a VSPHERE_FOLDER: /DC/vm VSPHERE_NETWORK: /DC/network/mgmt VSPHERE_PASSWORD: <encoded:Vk13YXJlMSE=> VSPHERE_RESOURCE_POOL: /DC/host/TANZU/Resources VSPHERE_SERVER: 192.168.110.20 VSPHERE_SSH_AUTHORIZED_KEY: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC5BZPO9DUbst6nnG1ImA8Iay/+Ca+xh2d0V5cHPO0/ZC1zrImF/Yhht5x2V3xm9sdYJu6uSc5qZiYpTc3B4VygttijdmYyH+QoO8Qs/0i160NWb2wByUFpCvzFRAnp+352ZCR/CO3scILmRLl1hQGm795k0DgsTXKBLx4icyej6FY5Hku81GrxKXQDJS/D7c7ejbPPv+zWxpasyt3Pdkiai9wSAsVKn9/xW7Xxq3bu9sAnJLiOUY5MnRUAEHPprf5i13gMWcZFIxm2dIg4xzmiXzVKa2BiKwrohn0QGtFAJpuIbAoZa1hbwYUKKSTjNhjwmffOAYHPZ+bVnYL9aKEf5duJdTXDiYWtl4xxSIA1TxPGkEHaxIVmWbjf1LlJk+HZxbtiBbeqX/L7bnqfnrpoJeWCM0mGHQoVjM4yM3l8JBrNm+CT9ydXLPTecpMn2XA2K8xlhdSyK4S0ADZUkaZQSs8zuJgzcRyKLryNfm1nIjWbRfv1v7R/vu2nuwJT5FznzbwDcR1Z2sY6Rc0qboXe8/LEk/jrxy4B4nheJ3wNepVfLJQKJh7O/L2bfGsCi21PCGmUcgotHTjxU+1/kPRjPeEwkrbO73+8q4BPR0x7CAgNDlvPYr06qfxaJzh8eFXc4/c2bLI3z0keYbQx3aI4Kjr74J5SL/oT/UceiAaaJQ== tkg@vcf.com VSPHERE_TLS_THUMBPRINT: 04:53:AA:FF:75:F9:03:D1:E5:A4:A9:91:F3:86:9D:1E:BE:39:00:E9 VSPHERE_USERNAME: administrator@vsphere.local |
2)在bootstrap 上发布工作集群
tanzu cluster create -f workload01.yaml -v 9
3)获得工作集群的kubeconfig文件,并登陆
tanzu cluster kubeconfig get workload01 --admin
Credentials of cluster 'workload01' have been saved
You can now access the cluster by running 'kubectl config use-context workload01-admin@workload01'
4)发布一个应用测试,采用的AVI LoadBalaner方式暴露服务,可以直接访问这个IP
要想了解云原生、机器学习和区块链等技术原理,请立即长按以下二维码,关注本公众号亨利笔记 ( henglibiji ),以免错过更新。