趁着 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 ),以免错过更新。

Tanzu 学习系列之TKGm for vSphere 快速部署相关推荐

  1. Tanzu学习系列之TKGm 1.4 for vSphere 组件集成(二)

    开局一张图,谷歌大神Kelsey Hightower说:一个好汉三个帮!Kubernetss是一个好平台,完善需要周边工具链来帮忙.TKG通过Tanzu Packages集成发布经过验证的组件工具,实 ...

  2. Tanzu 学习系列之 TKGm 1.4 for vSphere 组件集成(1)

    开局一张图!文接上篇,上一篇文章只是完成了管理集群和工作集群的初始化创建. TKG 作为企业发行版,除了VMware发行的 Kubernetes,同时也集成了CNCF生态的日志.监控.Ingress等 ...

  3. 【Tanzu 社区版=TCE】 Mac 笔记本快速部署安装体验-(一)

    Tanzu 社区版 Mac笔记本快速部署安装体验 VMware Tanzu Community Edition Mac环境准备 电脑环境 下载docker desktop K8S v1.24.0 可选 ...

  4. 【Tanzu 社区版=TCE】 Mac 笔记本快速部署安装体验-(二)

    @[TOC](Tanzu 社区版( TCE )Mac 笔记本快速部署安装体验) 下载镜像比较慢一些,耐心等待15-25分钟 对TCE集群验证.查看 命令操作如下: ➜ ~ kubectl config ...

  5. Spring Boot 学习系列(02)—使用热部署,提升开发效

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 开发调试很简单 热部署的使用非常简单,但能极大的提高我们的开发效率,像传统的web应用,我们修改后需要重新编 ...

  6. 在x86_64架构+VMware16.2.3 Pro+openEuler20.3-LTS上快速部署(一键安装)openGauss 3.1.1企业版数据库指导手册

    在x86_64架构+VMware16.2.3 Pro+openEuler20.3-LTS上快速部署(一键安装)openGauss 3.1.1企业版数据库指导手册 以下所用命令的使用参考openGaus ...

  7. 视频教程-从入门到精通Access快速学习系列课程第2部-其他

    从入门到精通Access快速学习系列课程第2部 十几年管理软件开发实战经验.从事IT行业十 余年,多年IT技术培训经验,课程编排重在实用 ,讲解通俗易懂. 王西猛 ¥39.00 立即订阅 扫码下载「C ...

  8. 如何利用深度学习知识--快速部署高速目标检测智能小车?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 3月26日,英伟达图像处理系列公开课第三期线上开播,来自NVIDI ...

  9. Caffe学习系列(8):solver优化方法

    Caffe学习系列(8):solver优化方法 上文提到,到目前为止,caffe总共提供了六种优化方法: Stochastic Gradient Descent (type: "SGD&qu ...

  10. 日志库EasyLogging++学习系列(7)—— 记录方式详解

    在前面所列文章的演示代码中,其实已经展示了一部分记录日志的方式.为了使用方便,在 Easylogging++ 中,通过使用宏的集合来完成日志记录. 普通日志记录 对于普通的日志记录,我们可以选择以下两 ...

最新文章

  1. 接地气的数据分析入门与进阶
  2. linux汇编和x86汇编,linux平台学x86汇编(四):从“hello world!”开始
  3. 2018-2019 20165203 《信息安全系统设计基础》第一周学习总结
  4. VUE:父子组件间传参、子组件传值给父组件、父组件传值给子组件
  5. 使用FindBugs-IDEA插件找到代码中潜在的问题
  6. Kali学习笔记5:被动信息收集工具集
  7. leetcode-Combinations 复习复习排列组合
  8. 在MyEclipse中如何查看Spring/Hibernate/Struts/JDK等源码的方法
  9. 计算机自带的画图软件在哪里,mac画图工具在哪里_mac自带画图工具怎么打开-win7之家...
  10. Python数据分析之股票数据
  11. java中继承内部类的方法_Java自学-接口与继承 内部类
  12. usb-cam(1)安装
  13. ANDROID 学习笔记(三) UI THREAD AsyncTask 使用
  14. h3c服务器设置u盘引导,44-U盘启动
  15. 11月末.wang域名总量15强:易名中国榜首 份额涨5%
  16. 【micorpython】ESP32——CAM 刷固件后显示Device is busy or does not respond. Your options:解决方法
  17. 站长号文库:有了域名后如何搭建网站?
  18. Sublime text 3安装时,add to explorer context menu是什么意思?
  19. 牛腩新闻发布--过程或函数 'news_selectByCaId' 需要参数 '@caid',但未提供该参数(三)
  20. “网红第一辣酱”虎邦,能破自己的“外卖舒适圈”吗?

热门文章

  1. 数学连乘和累加运算符号_数学运算符号
  2. C++中的抽象概念详解
  3. 读后感----我奋斗了18年还是不能和你坐在一起喝咖啡
  4. 关于设计BOM和制造BOM的介绍
  5. 自动锁定计算机快捷键,电脑自动锁屏的快捷键是什么
  6. 传言阿里P10赵海平,被P11多隆打3.25后离职,如何评价赵海平对王垠的面试?
  7. mysql 整型最大值_在SQL中如何获取整数的最大值?
  8. python中if缩进规则_Python if条件判断
  9. 图解 Python 编程(6) | 条件控制与if语句(附要点速查表·完结)
  10. 托业单词表Part2