Tanzu Kubernetes Grid (TKG) 支持单节点集群。单节点集群是工作负载集群,其中托管的工作负载与控制平面基础架构一起在单个 ESXi 主机上运行。
要进一步最大限度减少单节点集群的占用空间,可以从 tiny
Tanzu Kubernetes 版本 (Tkr) 创建该集群,该版本的基础操作系统有一个 Photon 或 Ubuntu tiny OVA。此类集群称为最小单节点集群。
单节点集群是在 vSphere 上运行且由独立管理集群部署的基于类的工作负载集群。
Telco Cloud Automation (TCA) 完全支持单节点集群。
注意无法使用 Tanzu Mission Control (TMC) 创建和管理单节点集群,但此功能计划在将来的 TMC 版本中提供。
单节点集群用例包括:
以下环境和组件支持单节点集群:
类别 | 支持的选项 |
---|---|
基础架构 | vSphere 7、vSphere 8 |
节点操作系统 | Ubuntu 20.04、Photon 3 |
节点大小 | small |
软件包 | 证书管理器、Fluent Bit、Multus、Prometheus、Whereabouts |
控制平面端点提供程序 | Kube-Vip* |
工作负载均衡器 | Kube-Vip* |
工作负载集群类型 | 基于类 |
CNI | Antrea,Calico |
连接模式 | 联机、Internet 受限 |
*TKG v2.3 中的单节点集群不支持 NSX Advanced Load Balancer (ALB)。
kubectl
要在使用 tiny
Tanzu Kubernetes 版本 (TKr) 以最大限度减少占用空间的 vSphere 上创建单节点工作负载集群,请执行以下操作:
准备 OVA:
转到 VMware Customer Connect,然后使用 VMware Customer Connect 凭据登录。
在 微型 TKG OVA [Tiny TKG OVAs] 下,下载 Tiny OVA 以用于单节点集群:
Photon v3 Kubernetes v1.26.8 微型 OVA
Ubuntu 2004 Kubernetes v1.26.8 微型 OVA
将微型 OVA 导入您的 vSphere 环境并将其转换为虚拟机模板,如将基础映像模板导入到 vSphere 中所述。
创建单节点工作负载集群。
注意要创建最小单节点集群,必须使用 Kubernetes 样式的对象规范运行
tanzu cluster create
命令。如果从平面集群配置文件开始,则必须按照 创建基于类的集群中所述的两个步骤过程生成对象规范,然后第二次运行tanzu cluster create
以创建集群。
按照以下示例中的设定设置环境变量:
export CLUSTER_NAME='workload-snc'
export CLUSTER_NAMESPACE='default'
export CLUSTER_CIDR='100.96.0.0/11'
export SERVICE_CIDR='100.64.0.0/13'
export VSPHERE_CONTROL_PLANE_ENDPOINT=10.185.11.134
export VSPHERE_SERVER=10.185.12.154
export VSPHERE_USERNAME='[email protected]'
export VSPHERE_PASSWORD=<encoded:QWRtaW4hMjM=>
export VSPHERE_DATACENTER='/dc0'
export VSPHERE_DATASTORE='/dc0/datastore/sharedVmfs-0'
export VSPHERE_FOLDER='/dc0/vm'
export VSPHERE_NETWORK='/dc0/network/VM Network'
export VSPHERE_RESOURCE_POOL='/dc0/host/cluster0/Resources'
export VSPHERE_SSH_AUTHORIZED_KEY=ssh-rsa AAAAB3[...]tyaw== [email protected]
export VSPHERE_TLS_THUMBPRINT=47:F5:83:8E:5D:36:[...]:72:5A:89:7D:29:E5:DA
export VSPHERE_CONTROL_PLANE_NUM_CPUS='2'
export VSPHERE_CONTROL_PLANE_MEM_MIB='4096'
export VSPHERE_CONTROL_PLANE_DISK_GIB='20'
export TKG_CUSTOM_IMAGE_REPOSITORY='projects.registry.vmware.com/tkg'
export OS_NAME='photon'
export TKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE="LS0tL[...]0tLQo="
使用引用上述变量的 Cluster
和 Secret
对象规范创建清单 vsphere-snc.yaml
:
apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
annotations:
tkg.tanzu.vmware.com/cluster-controlplane-endpoint: ${VSPHERE_CONTROL_PLANE_ENDPOINT}
run.tanzu.vmware.com/resolve-tkr: 'tkr.tanzu.vmware.com/tiny'
labels:
tkg.tanzu.vmware.com/cluster-name: ${CLUSTER_NAME}
name: ${CLUSTER_NAME}
namespace: ${CLUSTER_NAMESPACE}
spec:
clusterNetwork:
pods:
cidrBlocks:
- ${CLUSTER_CIDR}
services:
cidrBlocks:
- ${SERVICE_CIDR}
topology:
class: tkg-vsphere-default-v1.1.0
controlPlane:
metadata:
annotations:
run.tanzu.vmware.com/resolve-os-image: image-type=ova,os-name=${OS_NAME}
replicas: 1
variables:
- name: controlPlaneTaint
value: false
- name: auditLogging
value:
enabled: false
- name: apiServerEndpoint
value: ${VSPHERE_CONTROL_PLANE_ENDPOINT}
- name: aviAPIServerHAProvider
value: false
- name: imageRepository
value:
host: ${TKG_CUSTOM_IMAGE_REPOSITORY}
- name: trust
value:
additionalTrustedCAs:
- data: ${TKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE}
name: imageRepository
- name: vcenter
value:
cloneMode: fullClone
datacenter: ${VSPHERE_DATACENTER}
datastore: ${VSPHERE_DATASTORE}
folder: ${VSPHERE_FOLDER}
network: ${VSPHERE_NETWORK}
resourcePool: ${VSPHERE_RESOURCE_POOL}
server: ${VSPHERE_SERVER}
storagePolicyID: ""
tlsThumbprint: ${VSPHERE_TLS_THUMBPRINT}
- name: user
value:
sshAuthorizedKeys:
- ${VSPHERE_SSH_AUTHORIZED_KEY}
- name: controlPlane
value:
machine:
diskGiB: ${VSPHERE_CONTROL_PLANE_DISK_GIB}
memoryMiB: ${VSPHERE_CONTROL_PLANE_MEM_MIB}
numCPUs: ${VSPHERE_CONTROL_PLANE_NUM_CPUS}
version: v1.26.8+vmware.1-tiny.2
---
apiVersion: v1
kind: Secret
metadata:
name: ${CLUSTER_NAME}
namespace: ${CLUSTER_NAMESPACE}
stringData:
password: ${VSPHERE_PASSWORD}
username: ${VSPHERE_USERNAME}
EOF
请注意以下事项:
run.tanzu.vmware.com/resolve-tkr
的 metadata.annotations
设置controlPlaneTaint
的 topology.variables
设置topology.workers
块,只有 topology.controlPlane
topology.version
应为 v1.26.5+vmware.1-tiny.2
(适用于 v2.3.1)、v1.25.7+vmware.1-tiny.1
(适用于 v2.2.0)、v1.24.10+vmware.1-tiny.1
(适用于 v2.1.1)和 v1.24.9+vmware.1-tiny.2
(适用于 v2.1.0)。(可选)要将集群配置为使用 Calico 作为 CNI 而不是默认 Antrea CNI,请按照适用于主管或基于单节点类的工作负载集群中的单节点集群的说明操作。
应用 Cluster
对象清单:
tanzu cluster create -f vsphere-snc.yaml
要在使用标准 Photon 或 Ubuntu TKr 的 vSphere 上创建单节点工作负载集群,请执行以下操作:
为工作负载集群创建平面配置文件,如 具有独立管理集群配置文件的 vSphere 中所述。
使用 --dry-run
标记运行 tanzu cluster create
,将平面配置文件转换为 Kubernetes 样式的 Cluster
对象规范,如创建对象规范中所述。
编辑 Cluster
对象规范以包含以下设置:
在 topology.controlPlane
下:
replicas: 1
无 topology.workers
块,如果存在,则删除。
在 topology.variables
下:
- name: controlPlaneTaint
value: false
使用修改后的 Cluster
对象规范运行 tanzu cluster create
,如从对象规范中创建基于类的集群中所述。