默认情况下,通过运行 tanzu mc create
部署管理集群时,Tanzu Kubernetes Grid 会在本地引导计算机上创建临时 kind
集群。然后,它使用本地集群在其目标云基础架构(vSphere、Amazon Web服务 (AWS) 或 Azure)上置备最终管理集群,并在管理集群成功部署后删除临时集群。运行 tanzu mc delete
删除管理集群会调用类似的过程,即创建、使用和移除临时的本地 kind
集群。
在某些情况下,您可能希望在部署或删除管理集群后保留本地集群。例如,检查集群中的对象或查看其日志。为此,您可以使用 CLI 选项 --use-existing-bootstrap-cluster
或 --use-existing-cleanup-cluster
部署或删除管理集群。
使用这些选项时,Tanzu Kubernetes Grid 将跳过创建和删除本地 kind
集群,并且使用已有的预先存在的本地集群或为此创建新的本地集群。
注意使用现有引导集群是一种高级用例,适用于经验丰富的 Kubernetes 用户。如果可能,强烈建议使用 Tanzu Kubernetes Grid 提供的默认
kind
集群来引导管理集群。
要在创建或删除管理集群期间保留本地 kind
集群,必须先在引导计算机上运行兼容的集群。通过标识或创建集群来确保这一点,如下面的小节中所述。
要使用现有的本地集群,必须确保满足以下两个条件:
该集群以前从未用于引导或删除管理集群。
集群是使用 kind
v0.11 或更高版本创建的。
通过运行 docker ps
并将列出的 kindest:node
版本与 kind
发行说明中列出的版本相关联来检查此问题。
背景:如果引导计算机使用在 2021 年 5 月 Linux 安全修补程序之后构建的 Linux 内核(例如,具有 Fedora 的 Linux 5.11 和 5.12),则引导集群必须由 kind
版本 v0.11 或更高版本创建。早期版本的 kind
尝试更改在最新 Linux 版本中设置为只读的文件,从而导致失败。从 4.9 开始,安全修补程序将向后移植到所有 LTS 内核,从而导致在发送操作系统更新时可能出现管理集群部署故障,包括适用于 Mac 操作系统上的 Docker 计算机以及适用于 Linux 的 Windows 子系统。
如果这两个条件都适用于当前本地集群,则可以使用该集群创建或删除管理集群。否则,必须按以下方式替换集群:
要创建新的本地引导集群,请根据引导计算机的连接执行以下操作之一:
完全联机环境:
创建集群:
kind create cluster
Internet 受限环境:
创建 kind
集群配置文件 kind.yml
,如下所示:
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: tkg-kind
nodes:
- role: control-plane
# This option mounts the host docker registry folder into
# the control-plane node, allowing containerd to access them.
extraMounts:
- containerPath: CONTAINER-CA-PATH
hostPath: HOST-CA-PATH
containerdConfigPatches:
- |-
[plugins."io.containerd.grpc.v1.cri".registry.configs."REGISTRY-FQDN".tls]
ca_file = "/etc/containerd/REGISTRY-FQDN/CA.crt"
其中:
CONTAINER-CA-PATH
是 kind
容器上的 Harbor CA 证书的路径,如 /etc/containerd/REGISTRY-FQDN
HOST-CA-PATH
是创建 kind
集群的引导虚拟机上的 Harbor CA 证书的路径,如 /etc/docker/certs.d/REGISTRY-FQDN
REGISTRY-FQDN
是 Harbor 注册表的名称。CA.crt
是 Harbor 注册表的 CA 证书默认情况下,crashd
会查找名为 tkg-kind
的集群,因此将 kind
集群命名为 tkg-kind
以便在集群无法引导时轻松收集日志。
使用上述配置文件创建 kind
集群。
kind create cluster --config kind.yml
要部署具有现有引导集群的 Tanzu Kubernetes Grid 管理集群,请执行以下操作:
按照上述过程标识或创建本地引导集群。
将 kubectl
的上下文设置为本地引导集群:
kubectl config use-context my-bootstrap-cluster-admin@my-bootstrap-cluster
通过运行带 --use-existing-bootstrap-cluster
选项的 tanzu mc create
命令部署管理集群:
tanzu mc create --file mc.yaml --use-existing-bootstrap-cluster my-bootstrap-cluster
有关运行 tanzu mc create
的详细信息,请参见部署管理集群。
要删除具有现有引导集群的 Tanzu Kubernetes Grid 管理集群,请执行以下操作:
按照上述过程标识或创建本地引导集群。
将 kubectl
的上下文设置为本地引导集群:
kubectl config use-context my-bootstrap-cluster-admin@my-bootstrap-cluster
通过运行具有 --use-existing-cleanup-cluster
选项的 tanzu mc delete
命令删除管理集群:
tanzu mc delete --use-existing-cleanup-cluster my-bootstrap-cluster
有关运行 tanzu mc delete
的详细信息,请参见删除管理集群。