简介

本文的目的是实践Tanzu Kubernetes Grid(以下简称TKG)的安装和部署。有关TKG的介绍请参考:Tanzu Kubernetes Grid介绍

使用环境

项目 内容 备注
VMware ESXi 7.0.1 17325551
vCenter Server 7.0.1.00300 17491101
NSX-T 3.11 3.1.1.0.0.17483185
Tanzu Kubernetes Grid CLI 1.21 tkg-linux-amd64-v1.2.1+vmware.1
kubectl cluster cli v1.19.3 kubectl-linux-v1.19.3
Client OS CentOS 7 CentOS-7-x86_64-DVD-2009.iso

安装和部署过程

如下:

  1. 安装TKG CLI
  2. 部署和管理Management Clusters
  3. 部署Tanzu Kubernetes clusters

安装TKG CLI

首先要准备一台bootstrap设备,这可以是VM或PC,可以是选择Windows/MacOS/Linux的其中一种。
要求:

  1. 系统需求最小应该满足:6 GB RAM / 2-core CPU
  2. 预装Docker client
    Linux: Docker
    Windows: Docker Desktop
    macOS: Docker Desktop
  3. 使用Network Time Protocol (NTP) server
  4. 在VMware Cloud on AWS 或 Azure VMware Solution, bootstrap 设备必须是cloud VM, 不能使用本地物理设备
  5. 如果打算使用Tanzu Kubernetes Grid安装程序界面(installer interface),可以使用浏览器。 在没有浏览器的情况下使用Tanzu Kubernetes Grid CLI,官方强烈建议在首次部署时使用安装程序界面。

本文使用的OS为Linux CentOS7.

下载并解压Tanzu Kubernetes Grid CLI 和 kubectl

  1. 下载地址:Download VMware Tanzu Kubernetes Grid
    根据OS选择需要的压缩包。
    如Linux选择:VMware Tanzu Kubernetes Grid CLI for Linux和kubectl cluster cli v1.19.3 for Linux

安装Tanzu Kubernetes Grid CLI

解压后安装

对于macOS 和 Linux 平台

将二进制文件移动到 /usr/local/bin:

mv ./tkg-linux-amd64-v1.2.1+vmware.1 /usr/local/bin/tkg #Linux
mv ./tkg-darwin-amd64-v1.2.1+vmware.1 /usr/local/bin/tkg #MacOS

使用ls命令查看结果。

对于Windows平台

1.创建一个新的Program Files \ tkg文件夹,并将tkg-windows-amd64-v1.2.1 + vmware.1二进制文件复制到其中。
2.将tkg-windows-amd64-v1.2.1 + vmware.1重命名为tkg.exe。
3.右键单击tkg文件夹,选择“属性”>“安全性”,并确保您的用户帐户具有“完全控制”权限。
4.使用Windows搜索来搜索环境。
5.选择编辑系统环境变量,然后单击环境变量按钮。
6.选择“系统变量”下的“路径”行,然后单击“编辑”。
7.单击“新建”以添加新行,并输入tkg二进制文件的路径。

使用tkg version查看安装情况。

安装kubectl

和前面类似,解压kubectl cluster cli v1.19.3 并把文件移动到/usr/local/bin(MacOS/Linux);运行kubectl.exe (Windows)。
使用kubectl version查看版本情况

[root@localhost Downloads]# kubectl version
Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.3+vmware.1", GitCommit:"2ac9e7ea06a1230ca196931def19d2bb67b580c7", GitTreeState:"clean", BuildDate:"2020-11-17T00:11:18Z", GoVersion:"go1.15.2", Compiler:"gc", Platform:"linux/amd64"}

部署和管理Management Clusters

创建TKG实例时,管理集群是部署的第一个元素。 管理集群是一个Kubernetes集群,它充当TKG实例的管理和运营中心。

通过两种方式部署管理集群

  • 通过启动Tanzu Kubernetes Grid安装程序界面的本地实例,该界面提供了图形化安装程序来指导完成部署过程。 这是官方推荐的方法。
  • 通过直接使用CLI命令从YAML模板文件来配置中部署管理集群。

平台要求

支持的平台:

  • vSphere 6.7u3
  • vSphere 7, 如果 vSphere with Tanzu 未启动.
  • Amazon Elastic Compute Cloud (Amazon EC2)
  • Microsoft Azure

本文的实验环境是vSphere 7,在使用中不启用 vSphere with Tanzu。所以,这里只考虑在vSphere的部署。

账号

官方建议向TKG分配权限的最佳方法是创建一个角色和一个用户帐户,然后在vSphere对象上向该用户帐户授予该角色。
虽然官方不建议向TKG提供vSphere管理员帐户,但是在本实验为了简化操作,依然选择管理账户。

vSphere实例具有以下对象:
独立主机或具有至少两个主机的vSphere群集,如果要部署到vSphere群集,则应启用vSphere DRS。

网络设置

  • 为 TKG 的cluster node配置DHCP服务器。要使DHCP分配的IP地址为静态,在部署群集后为群集中的每个节点配置DHCP保留。
  • 创建的集群(包括管理集群和Tanzu Kubernetes集群)使用一组可用静态虚拟IP地址。每个控制平面和worker节点都需要一个静态IP地址。确保这些IP地址不在DHCP范围内,但与DHCP范围位于同一子网中。
  • 从运行群集的网络允许流量到vCenter Server。
  • 本地引导计算机与创建的群集中所有VM的端口6443之间允许的流量。 即Kubernetes API暴露在端口6443上。
  • 允许本地引导机通过TCP端口443监听管理群集清单(BoM)文件中列出的镜像存储库的流量。BOM文件位于〜/ .tkg / bom /下,其名称包括TKG的版本,例如v1.2.0的BOM名字为:bom-1.2.0 + vmware.1.yaml
  • 在所有imageRepository值上运行DNS查找使其可以找到CNAME,例如,registry.tkg.vmware.run要求通过网络访问Registry.tkg.vmware.run.bintray.com。
  • 在所有主机上同步网络时间协议(NTP)服务,包括时区一致。
  • 如果vSphere环境运行NSX-T,则在部署管理群集时可以使用NSX-T的接口。 确保NSX-T设置包括一个启用了DHCP的网段。 确保在所有ESXi主机,vCenter Server和引导计算机上配置了NTP。
  • 部署到vSphere的每个管理集群和Tanzu Kubernetes集群都需要一个静态虚拟IP地址,用于对集群API服务器的外部请求。 必须能够分配此IP地址,它不能在DHCP范围内,但必须与DHCP范围位于同一子网中。
    群集控制平面的Kube-vip Pod使用此静态虚拟IP地址来平衡多个节点之间的API请求负载,并且API服务器证书包括用于启用安全TLS通信的地址。
    注意:Kube-vip是一个集群内负载均衡器,仅供API服务器使用。 它不是vSphere的常规负载均衡器。

创建SSH Key Pair

为了使TKG CLI从运行它的计算机连接到vSphere,在部署管理集群时,必须向TKG提供SSH密钥对的公钥部分。 如果运行CLI的计算机上还没有该密钥,则可以使用ssh-keygen之类的工具来生成密钥对。

[root@hop-172 ~]# ssh-keygen -t rsa -b 4096 -C "xx@vmware.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
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:WmVqnfPwBc0ffBdsczeJEn/MhhkKA1hxttLZFmcOEjk zyi@vmware.com
The key's randomart image is:
+---[RSA 4096]----+
|      o+oBo+.+o..|
|     .  +EB.O+B*+|
|       . +++o=+BB|
|        .=.. .o.+|
|        S =   . .|
|       +   = .   |
|      .     o    |
|                 |
|                 |
+----[SHA256]-----+
[root@hop-172 ~]# ls ~/.ssh/id_rsa
/root/.ssh/id_rsa
[root@hop-172 ~]# cat ~/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIJKQIBAAKCAgEA6ig0gMiCpa/8aMmxJ7timTdURKQHc7ZY4LEpuwM8XqM/ksEK
JlprfPNo2wn4DShZElQQ8Vdp8a+k9niBnQq+9rbQdwswfLQ3oFAxThvrtI8j7Oeo
LnSR6NdeWrFkSaCGXVlCnzgAC2Dd3e17g6L/UAi5mvomNE1YcCUr6ScRWJcl4rHy
2EgDAkUcYPdTUkN2/vPcNSQ1LMa5yyBXBTGEXdoKC9oZoPCY1ypXwl+nDWDjf42X
l/oUALIPuMNn6NKZJM6OCr3WWfyydZSrld7CE/rd+eGDtNnxBwzmUjR3eTRU7vdH
dBPMEGZDl7yMiQBHeTJ37vDxAtyzdynU3mhgyVvjeMl8o5fQVFkwMQoMcEvlGqhW
78QCPP70hHnoowe1w0eIk8mUHNTQPeQK+KMfTpgCFD8zCNLuaD9Eb9Pn5LEf8Zlf
z/Alzvpj47hbb7EimdJuRecG9xBTnZRaaPcwSjx8GTsG++KCOQDq5nOZmsShRP2N
yCrhSSYBZAwBeO921eGrnzV3KFwOa8xRHuvx3xvJVDW8ADp8j5bEA3qAY33E38ai
MvR85GiWsxhgCp/f4i/9eAlQh2k2W3kAMVgR9WKg1e29Owr5LpiF94D9a2KyNF0J
0dUWnQt7xqfqIqhIjek2KVpiG/d799TB6W+PFH9vI5kjKAPZg6tW7nzJd0UCAwEA
AQKCAgEAqai56fneV6i8rTw+RPiLx1IEl7t1vsyHdz5Gaz879aI5BN8juIhZS26e
Md72QKpUZ2hL4mIg3EIUt5S27Q+FMANj5m1QE3sMtvaD0wF99hSkxhlPjWFe+yNZ
NUNE0+ggkvCCyhRsS9JCz3MrxERM0zOPMBBBsDG+e3sjZsqs0dCqXafrufPrYjCr
EEMDtx400SPmEQcMFEZlBh2Hj7bCHrJGBzJe0XKie3wtnCNsSdBC5f+0sCQ9bAeY
Rpom5tX4qmeTGYtVDVx//Zvb+zosywdA4LYalOY4spARLczgKAzX4VGAD0Xs3JEM
NpwiA34VS2Za6eDf79/zlMrVdtSQEtLOUlsW43Kk4KrdYDrptr31iTXMcfda9dCc
nclVblUZdhTMd+VVJVrxT3zG6l287opoZmWHpMd+u3dJBKalXrXeBBGnWm676eLc
3ujfQedeVXnlR45WzE3sFX812p7/ztyWbSiKnwBzYw5epUgUX7E60PifVCAE7iZ0
DfDHikJEjgj8SHS/2WZJ2w/hGBcwAuVqOIVWNlrsgdLxUsm4Tl8TxteVcLDt3Cth
IrbrsQ4BI8biARlk1G1P37SMEk6J4pWNQTFCjDdX7s6mjrVTEaAEZk1C/CO1acYz
irBkVVCJEBTKMI8DarG88lp5PWRrTeRDUTNu12/1JKVkFBIVdJ0CggEBAPjamAl2
sB6I/9U64WCLW8txV1yTLdRG0E2vuyVq/j6MKr8trBJSsNOIzoT4r9jXNoLTRgzH
HWp1LqwBSuB//S+gqKlpVmiIJicY5HCtnMrvOAj8OEi8D996kjSRNuApoJwYhUXn
moQMjHgH0R9cTMZ7qA4ScqlimveD82InpQOE5lPzHNFm7q4FrNywTRAXG0Bp+Gen
XKIAMXZzLMJFRtl3seaBSuqr7jN+HGrCIhoxPxwgT4HobcbLiA07wCknqvNyfMsg
+Qlqx5YXvgMJSNhGx7rqvJVupneuw5CMBffkd8ZLvjexaO5d7jVYVBk19WhvqNe+
7h29rpqYMLzTROsCggEBAPDhkesIYS0I7PPNqJfpwcwos1ubFnoAATuBxO++pZuX
jELLkPIoyTDlTXMaVSSpv5LwDwExy64m17FldwRgj0MFNRxCguuzgE0UuFVgiCAo
822j97ivldFiWZv8vztSj3HgtAC5v5RTgeGL6k8Xvt1T/gMTu67UNeLfTHDpfo8O
XJ6cDWWTn6c2g9mlxN60uBXvq4Kyfo1ZL6xmOLsi4MgQ1K/09L+t4X5DcUpCujrU
fVma9y5s+CYqTH0D0lLV5/OKaihiv2JEjD+j1+FIKX1NgcpDN8fh/F6auUlT2U4w
S6ZmTkwJCQ0OCTzXpRpZ8zPd2MuJl9X244Fn7hSz6I8CggEAHezjhZfRPArLgQ/Q
lHSNuFxL3iUQyMsvN3hfb/N62Xivl0fdvmJVQ0rbUuA4/UF8G6VeciDrp6ap0yNg
pridcMHIJn81VeKxe9gheG9YQIsd2O7DsfNzkTNDK7EewTwgRUUpmattSF3d8n02
J6hIz0GFhxOu2DG0YvlqJi6QSGkN7aB5obDYGPMzw2IsEjhFHazgo05b9FtDl3Po
OQBtsa8UJJz9rlS4k1aiAjCQO0gax74W8Y9KzDIjjTvXMtvDUf09hovThs9hauo1
/lV6fg+c6xxZSzsAJ7pLaDF+cj32LVFkcXwTGz8OaznQ+ysi9Mkgq7kZF1h9C7gr
fDmHuwKCAQEA18u9RaoEJKxSWzhrSW0JSTVNOUv/HtzSPdVL8NwC0Rk7druX5tnT
JBLJB80XafkIv0KArrlFl4cExM/5h9pZfdk0c1TCpRXyYxuk6BfK28TUD+1NCA+F
UEejr7MGPsb/6y07FUtS7jbBrKYEC0dinjWY4njTMxS6Eb2qZZ1I3DApmY6EEfPm
m46jIGD5teqA4GYOaNAvv8Gei/wn5r6gUZuCbwAsI2xLDyqsW7Lb08h5Y8UInHbS
+J38WCMMUVmAqxXddMDCY+61Fm5aAGD9ilvdYq5FUrSJutcyFxcfHoT1wOT2T/fo
O+HPNMqcBrd+wYCFsBJcDDtaJZxOFg320QKCAQAZ/MetXk2cn8THBXO6uzlxjZOj
IeJVck6KPB+wOJXhvqEnr+sUrmCSF+MJoNbTyresxhT+9uy9JrNBh/eluXWg8NF8
rZiZGLJ0CKJeeiH+fZICrzTPrxClip5kM5PUiniVHIFr058PaLkF22n4bCHgJRgd
Qg2dlGvJiF7FVkD+Ib2uIUj/ZC62BH7KMKZQ08hyo2PHz/8emWjfWu/GNEltt8Hg
E+Sn2Lr6gGG6Ii4lZS3Xl/+xg6tk3NsXielNuHGtR9IYtVx0tWq5J1/LqMYCrGNt
BzS5e/kfjLA5VtS3qaogQXkxKs9sNzEsPjnGh9++zR6c0Juf+XnVIuGTpvn+
-----END RSA PRIVATE KEY-----
[root@hop-172 ~]# cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDqKDSAyIKlr/xoybEnu2KZN1REpAdztljgsSm7Azxeoz+SwQomWmt882jbCfgNKFkSVBDxV2nxr6T2eIGdCr72ttB3CzB8tDegUDFOG+u0jyPs56gudJHo115asWRJoIZdWUKfOAALYN3d7XuDov9QCLma+iY0TVhwJSvpJxFYlyXisfLYSAMCRRxg91NSQ3b+89w1JDUsxrnLIFcFMYRd2goL2hmg8JjXKlfCX6cNYON/jZeX+hQAsg+4w2fo0pkkzo4KvdZZ/LJ1lKuV3sIT+t354YO02fEHDOZSNHd5NFTu90d0E8wQZkOXvIyJAEd5Mnfu8PEC3LN3KdTeaGDJW+N4yXyjl9BUWTAxCgxwS+UaqFbvxAI8/vSEeeijB7XDR4iTyZQc1NA95Ar4ox9OmAIUPzMI0u5oP0Rv0+fksR/xmV/P8CXO+mPjuFtvsSKZ0m5F5wb3EFOdlFpo9zBKPHwZOwb74oI5AOrmc5maxKFE/Y3IKuFJJgFkDAF473bV4aufNXcoXA5rzFEe6/HfG8lUNbwAOnyPlsQDeoBjfcTfxqIy9HzkaJazGGAKn9/iL/14CVCHaTZbeQAxWBH1YqDV7b07CvkumIX3gP1rYrI0XQnR1RadC3vGp+oiqEiN6TYpWmIb93v31MHpb48Uf28jmSMoA9mDq1bufMl3RQ== xx@vmware.com

在 vSphere中导入 Base OS Image Template

在将管理群集或Tanzu Kubernetes群集部署到vSphere之前,必须为vSphere提供基础OS映像模板。 TKG从该模板创建管理集群和Tanzu Kubernetes集群节点虚拟机。 TKG提供OVA格式的基本OS映像模板,供导入vSphere。导入OVA之后,必须将生成的VM转换为VM模板。基本的OS映像模板包括TKG用于创建集群的Kubernetes版本。

注意:Tanzu Kubernetes Grid 1.2.1添加了对Kubernetes v1.19.3,v1.18.10和v1.17.13的支持。
如果要使用较旧版本的Kubernetes部署集群,请在vSphere清单中安装或保留先前TKG发行版中基本OS映像模板的版本以及此版本的新Kubernetes模板。
有关每个TKG版本支持的Kubernetes版本的信息,请参阅该版本的发行说明。
步骤

  1. 转到TKG OVA并下载用于节点VM的TKG OVA。
    Kubernetes v1.19.3:Photon ​​v3 Kubernetes v1.19.3 OVA
    Kubernetes v1.18.10:Photon v3 Kubernetes v1.18.10 OVA
    Kubernetes v1.17.13:Photon v3 Kubernetes v1.17.13 OVA

  2. 在vSphere Client中,右键单击vCenter Server清单中的对象,选择“部署OVF模板”。
    选择本地文件,单击按钮上传文件,然后导航到本地计算机上下载的OVA文件。
    按照安装程序提示从OVA projects-stg.registry.vmware.com/tkg部署VM。

  3. OVA部署完成后,右键单击VM,然后选择“模板”>“转换为模板”。
    注意:在将虚拟机转换为模板之前,请勿打开其电源。

  4. 在“虚拟机和模板”视图中,右键单击新模板,选择“添加权限”,然后将tkg-user分配给具有TKG角色的模板。

  5. 对下载了OVA文件的每个Kubernetes版本重复此过程。

在vSphere中部署Management Clusters

本文使用官方推荐的方法,即通过启动Tanzu Kubernetes Grid安装程序界面的本地实例,利用图形化安装程序来指导完成部署过程。

  1. 在引导机上面运行:tkg init --ui
  2. 按照图形化引导配置
    当发现目标系统为vSphere后,提示选择安装内容:

在“Metadata”部分中,可以选择提供有关此管理群集的描述性信息。

在此处指定的任何元数据都适用于管理集群及其管理的Tanzu Kubernetes集群,并且可以使用所选的集群管理工具进行访问。

位置:集群运行所在的地理位置。
描述:此管理集群的描述。 说明的最大长度为63个字符,并且必须以字母开头和结尾。 它只能包含小写字母,数字和连字符,没有空格。
标签:可帮助用户识别集群的键/值对,例如release :beta,environment : staging, environment : production。 有关更多信息,请参见Kubernetes文档中的标签和选择器。
可以单击添加以将多个标签应用于群集。

本文在此处空白。

这一步选择前面做的K8S 1.19.3模板

确认好配置后执行。

  1. 安装成功后,在最后系统提示,可以用tkg Create命令创建工作负载集群。

    如果要使用命令的方式安装 Management Clusters ,请参考Deploy Management Clusters to vSphere with the CLI

TKG将管理集群的配置保存在〜/ .tkg / config.yaml文件中。
还会创建一个名为〜/ .tkg / providers的文件夹,其中包含Cluster API创建管理集群所需的所有文件,在config中也会记录。
查看config.yaml

cert-manager-timeout: 30m0s
overridesFolder: /root/.tkg/overrides
NODE_STARTUP_TIMEOUT: 20m
BASTION_HOST_ENABLED: "true"
providers:- name: cluster-apiurl: /root/.tkg/providers/cluster-api/v0.3.11/core-components.yamltype: CoreProvider- name: awsurl: /root/.tkg/providers/infrastructure-aws/v0.6.3/infrastructure-components.yamltype: InfrastructureProvider- name: vsphereurl: /root/.tkg/providers/infrastructure-vsphere/v0.7.1/infrastructure-components.yamltype: InfrastructureProvider- name: azureurl: /root/.tkg/providers/infrastructure-azure/v0.4.8/infrastructure-components.yamltype: InfrastructureProvider- name: tkg-service-vsphereurl: /root/.tkg/providers/infrastructure-tkg-service-vsphere/v1.0.0/unused.yamltype: InfrastructureProvider- name: kubeadmurl: /root/.tkg/providers/bootstrap-kubeadm/v0.3.11/bootstrap-components.yamltype: BootstrapProvider- name: kubeadmurl: /root/.tkg/providers/control-plane-kubeadm/v0.3.11/control-plane-components.yamltype: ControlPlaneProvider- name: dockerurl: /root/.tkg/providers/infrastructure-docker/v0.3.10/infrastructure-components.yamltype: InfrastructureProvider
images:all:repository: registry.tkg.vmware.run/cluster-apicert-manager:repository: registry.tkg.vmware.run/cert-managertag: v0.16.1_vmware.1
release:version: v1.2.1
VSPHERE_DATACENTER: /Datacenter-01a
VSPHERE_WORKER_DISK_GIB: "20"
VSPHERE_USERNAME: administrator@vsphere.local
VSPHERE_CONTROL_PLANE_DISK_GIB: "20"
VSPHERE_SSH_AUTHORIZED_KEY: |ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDqKDSAyIKlr/xoybEnu2KZN1REpAdztljgsSm7Azxeoz+SwQomWmt882jbCfgNKFkSVBDxV2nxr6T2eIGdCr72ttB3CzB8tDegUDFOG+u0jyPs56gudJHo115asWRJoIZdWUKfOAALYN3d7XuDov9QCLma+iY0TVhwJSvpJxFYlyXisfLYSAMCRRxg91NSQ3b+89w1JDUsxrnLIFcFMYRd2goL2hmg8JjXKlfCX6cNYON/jZeX+hQAsg+4w2fo0pkkzo4KvdZZ/LJ1lKuV3sIT+t354YO02fEHDOZSNHd5NFTu90d0E8wQZkOXvIyJAEd5Mnfu8PEC3LN3KdTeaGDJW+N4yXyjl9BUWTAxCgxwS+UaqFbvxAI8/vSEeeijB7XDR4iTyZQc1NA95Ar4ox9OmAIUPzMI0u5oP0Rv0+fksR/xmV/P8CXO+mPjuFtvsSKZ0m5F5wb3EFOdlFpo9zBKPHwZOwb74oI5AOrmc5maxKFE/Y3IKuFJJgFkDAF473bV4aufNXcoXA5rzFEe6/HfG8lUNbwAOnyPlsQDeoBjfcTfxqIy9HzkaJazGGAKn9/iL/14CVCHaTZbeQAxWBH1YqDV7b07CvkumIX3gP1rYrI0XQnR1RadC3vGp+oiqEiN6TYpWmIb93v31MHpb48Uf28jmSMoA9mDq1bufMl3RQ== xx@vmware.com
_VSPHERE_CONTROL_PLANE_ENDPOINT: 172.20.0.200
VSPHERE_NETWORK: ls-172.20.0
VSPHERE_CONTROL_PLANE_NUM_CPUS: "2"
VSPHERE_CONTROL_PLANE_MEM_MIB: "2048"
VSPHERE_WORKER_MEM_MIB: "2048"
SERVICE_CIDR: 172.64.0.0/16
CLUSTER_CIDR: 172.96.0.0/16
VSPHERE_SERVER: vcsa-01a.vmlab.local
VSPHERE_PASSWORD: <encoded:Vk13YXJlMSE=>
VSPHERE_DATASTORE: /Datacenter-01a/datastore/vsanDatastore
VSPHERE_RESOURCE_POOL: /Datacenter-01a/host/Cluster-vmlab/Resources
VSPHERE_FOLDER: /Datacenter-01a/vm
VSPHERE_WORKER_NUM_CPUS: "2"
MACHINE_HEALTH_CHECK_ENABLED: "true"
tkg:regions:- name: tkg-mgmt-vsphere-20210207152959context: tkg-mgmt-vsphere-20210207152959-admin@tkg-mgmt-vsphere-20210207152959file: /root/.kube-tkg/configstatus: SuccessisCurrentContext: falsecurrent-region-context: tkg-mgmt-vsphere-20210207152959-admin@tkg-mgmt-vsphere-20210207152959

查看Management Clusters如下:

[root@hop-172 ~]# tkg get management-clusterMANAGEMENT-CLUSTER-NAME            CONTEXT-NAME                                                           STATUS  tkg-mgmt-vsphere-20210207152959 *  tkg-mgmt-vsphere-20210207152959-admin@tkg-mgmt-vsphere-20210207152959  Success

vSphere vCenter 上可以看到生成的管理集群:

更多对Management Clusters的操作参考Manage Your Management Clusters

默认情况下,除非指定–kubeconfig选项将群集的kubeconfig保存到特定文件,否则部署的所有Tanzu Kubernetes群集都将添加到共享的.kube / config文件中。 如果删除共享的.kube / config文件,但管理控制台仍具有的.kube-tkg / config文件,可以使用 tkg get credentials 命令恢复Tanzu Kubernetes群集的.kube / config。

默认情况下,有关管理群集的信息存储在单独的.kube-tkg / config文件中。

在运行Tanzu Kubernetes Grid操作时,请勿更改上下文或编辑.kube-tkg / config或.kube / config文件。

部署Tanzu Kubernetes clusters

创建管理集群时,Tanzu Kubernetes Grid CLI和kubectl context会自动设置为该管理集群。 但是,TKG在创建Tanzu Kubernetes集群时不会自动将kubectl context设置为Tanzu Kubernetes集群。 必须使用kubectl config use-context命令将kubectl context设置为Tanzu Kubernetes集群。

[root@hop-172 ~]# kubectl config get-contexts
CURRENT   NAME                                                                    CLUSTER                           AUTHINFO                                NAMESPACE*         tkg-mgmt-vsphere-20210207152959-admin@tkg-mgmt-vsphere-20210207152959   tkg-mgmt-vsphere-20210207152959   tkg-mgmt-vsphere-20210207152959-admin

*表示现在的context

Tanzu Kubernetes Cluster Plans

TKG提供了用于群集的标准模板,称为plans。 在此1.2版本中,Tanzu Kubernetes集群有两个plans:

  • 默认情况下,开发dev plan会部署一个具有一个控制平面节点和一个工作节点的集群。
  • 默认情况下,生产prod plan会部署具有三个控制平面节点和三个工作节点的集群。

可以指定选项以部署具有不同数量的控制平面和辅助节点的集群。 如果部署具有多个控制平面节点的集群,则TKG会自动在控制平面上启用堆栈式HA。
还可以通过在集群上运行tkg scale cluster命令来更改集群中节点的数量。
有关更多信息,请参见缩放Tanzu Kubernetes集群。

Tanzu Kubernetes Cluster 的网络

当使用TKG CLI部署Tanzu Kubernetes Cluster时,会在集群中自动启用Antrea集群网络接口(CNI)。 或者,可以启用Calico CNI或企业自己的CNI提供程序。 有关说明,请参阅使用非默认CNI部署群集。

与Tanzu Kubernetes Grid v.1.1.x一起部署然后升级到v1.2的现有Tanzu Kubernetes群集继续将Calico用作CNI提供程序。 这种情况下,不能更改这些群集的CNI。

创建Tanzu Kubernetes Cluster

要查看Tanzu Kubernetes网格在部署Tanzu Kubernetes集群时将创建的YAML文件的预览,可以使用–dry-run选项运行tkg create cluster命令。 如果指定–dry-run,则Tanzu Kubernetes网格将显示集群的完整YAML文件,但不会创建集群。

tkg create cluster my-cluster --plan dev --vsphere-controlplane-endpoint <IP_ADDRESS_OR_FQDN> --dry-run > cluster.yaml

要将Tanzu Kubernetes群集部署到vSphere,则每个群集都需要一个静态虚拟IP地址才能为Kubernetes提供稳定的终结点。 确保此IP地址不在DHCP范围内,但与DHCP范围位于同一子网中。即上文命令中的ip地址。
使用默认dev plan生成一个Tanzu Kubernetes Cluster:

[root@hop-172 ~]# tkg create cluster my-cluster-dev-1 --plan=dev --vsphere-controlplane-endpoint=172.20.0.211
Logs of the command execution can also be found at: /tmp/tkg-20210207T105348168630263.log
Validating configuration...
Creating workload cluster 'my-cluster-dev-1'...
Waiting for cluster to be initialized...
Waiting for cluster nodes to be available...
Waiting for addons installation...Workload cluster 'my-cluster-dev-1' created

查看cluster:

[root@hop-172 ~]# tkg get clusterNAME              NAMESPACE  STATUS   CONTROLPLANE  WORKERS  KUBERNETES        ROLES  my-cluster-dev-1  default    running  1/1           1/1      v1.19.3+vmware.1  <none> 

在vCenter同样可以看到

可以通过 --worker-machine-count 参数改变节点数量。

[root@hop-172 ~]# tkg create cluster my-dev-cluster-2 --plan dev --vsphere-controlplane-endpoint 172.20.0.212 --worker-machine-count 3
Logs of the command execution can also be found at: /tmp/tkg-20210207T110728762200663.log
Validating configuration...
Creating workload cluster 'my-dev-cluster-2'...
Waiting for cluster to be initialized...
Waiting for cluster nodes to be available...
Waiting for addons installation...Workload cluster 'my-dev-cluster-2' created

小结

本文使用vSphere平台尝试了安装TKG的过程,关键点小结如下

  • 环境准备:引导机/DHCP/NTP/Docker Client
  • 前期:TKG CLI/kubectl/IP地址准备/K8S镜像模板/SSH Key Pair
  • 部署:
    管理集群–图形化/CLI,官方推荐图形化
    负载集群–CLI/plans

官方参考文档

Install the Tanzu Kubernetes Grid CLI
Deploying and Managing Management Clusters
Deploy Management Clusters to vSphere with the Installer Interface
Create Tanzu Kubernetes Clusters
Tanzu Kubernetes Grid CLI Reference

Step by step:安装 Tanzu Kubernetes Grid相关推荐

  1. VMware Tanzu Kubernetes Grid介绍

    VMware Tanzu Kubernetes Grid(以下简称TKG)是一个按照V公司的想法提供了一致的,上游兼容的区域性Kubernetes基础架构,TKG为最终用户工作负载和生态系统集成做好底 ...

  2. windows 7 RTM build 7600.16385安装step by step(虚拟光驱双系统方式)

    windows 7 RTM build 7600.16385安装step by step(虚拟光驱双系统方式) windows 7 RTM版发布了.昨天最新的版本号是build 7600.16385. ...

  3. 【Step By Step】将Dotnet Core部署到Docker下

    一.使用.Net Core构建WebAPI并访问Docker中的Mysql数据库 这个的过程大概与我之前的文章<尝试.Net Core-使用.Net Core + Entity FrameWor ...

  4. Caffe使用step by step:caffe框架下的基本操作和分析

    Caffe使用step by step:caffe框架下的基本操作和分析 时间:2015-10-16 11:40:09      阅读:808      评论:0      收藏:0      [点我 ...

  5. Asp.Net Core 5 REST API 使用 JWT 身份验证 - Step by Step(二)

    翻译自 Mohamad Lawand 2021年1月22日的文章 <Asp Net Core 5 Rest API Authentication with JWT Step by Step> ...

  6. Asp.Net Core 5 REST API - Step by Step(一)

    翻译自 Mohamad Lawand 2021年1月19日的文章 <Asp.Net Core 5 Rest API Step by Step> [1] 在本文中,我们将创建一个简单的 As ...

  7. Followme Devops step by step

    接着上次分享的devops历程[Followme Devops实践之路], 大家希望能够出一个step by step手册, 那今天我就来和手把手来一起搭建这么一套环境, 演示整个过程! 实验环境需要 ...

  8. e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (四) Q 反回调...

    上一篇文章"e2e 自动化集成测试 架构 京东 商品搜索 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (三) Sq ...

  9. Enterprise Library Step By Step系列(十六):使用AppSetting Application Block

    Enterprise Library Step By Step系列(十六):使用AppSetting Application Block Terrylee,2005年12月07日 概述 AppSett ...

最新文章

  1. 转 前端工程师凭什么这么值钱?
  2. Apache2配置SSL
  3. Python基础教程: with语句详解
  4. python定时器 是线程吗_python线程定时器Timer(32)
  5. RabbitMq queue异常导致consumer停止
  6. Unity 网络编程(Socket)应用
  7. (转载) Linux IO模式及 select、poll、epoll详解
  8. 基础算法学习(二)_二叉树及应用赫夫曼编码
  9. ASP.NET数据库访问系列教程01-概述篇 创建数据访问层(中)
  10. C:\Windows\Installer越来越大?让我们一起来删除msp这个毒瘤
  11. xadmin与admin设置
  12. 渗透测试专题二之msf(kali)的攻击教程将DOS操作系统中的本地文件接口“中断13”改造为网络文件系统...
  13. php7.1 mysql_安装最新LAMP环境 (CentOS7+PHP7.1.5+Mysql5.7)
  14. 黑客帝国 数字雨 屏幕保护程序 linux ubuntu
  15. 一二线城市知名IT互联网公司名单!
  16. 计算机提示策略阻止安装,win7安装软件提示此程序被组策略阻止怎么办
  17. 中国传统四大菜系之:鲁菜
  18. 深圳大学计算机研究生调剂,深圳大学2020年硕士研究生招生调剂办法
  19. 《垃圾回收算法手册 自动内存管理的艺术》——引言、标记清扫(笔记)
  20. 计算机组成与设计 硬件/软件接口 Risc-v 版

热门文章

  1. Java修饰符、Java运算符、Java循环语句、Java条件语句、Java switch case
  2. Framebuffer的配置及应用
  3. java jstack 命令笔记
  4. C++中set使用详细说明
  5. 阿里面试回来,想和Java程序员谈一谈
  6. 你可以有多个性?使用Myqr制作彩色收款码、动态二维码!同理可以制作彩色加群码哦!!
  7. 【上位机教程】CANopen通信一体化步进电机调试软件操作
  8. 两个音轨合并_库乐队如何合并音轨?库乐队合并音轨的操作方法
  9. linux 查看文件大小的命令
  10. Z-Wave Zniffer抓包工具使用指南