趁着 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 | Centos7.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 工具软件
KubernetesOVA 模板文件(支持)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功能。
上传下载的 KubernetesOVA 模版文件, 并将其转换为模板
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 ),以免错过更新。