从配置文件部署管理集群

您可以使用 Tanzu CLI 通过 YAML 配置文件中指定的配置将管理集群部署到 vSphere、Amazon Web 服务 (AWS) 和 Microsoft Azure。

必备条件

在部署管理集群之前,必须确保您的环境满足目标平台的要求。

常规必备条件

基础架构必备条件

vSphere
确保您已满足 准备将管理集群部署到 vSphere 中列出的所有要求。
重要

在 vSphere with Tanzu 上,您可能不需要部署管理集群。请参见 vSphere with Tanzu 主管是管理集群

AWS
确保您已满足 准备将管理集群部署到 AWS 中列出的所有要求。
  • 有关不同大小节点实例(如 t3.larget3.xlarge)配置的信息,请参见 Amazon EC2 实例类型
  • 有关何时创建 Virtual Private Cloud (VPC) 以及何时重用现有 VPC 的信息,请参见 Amazon Web 服务帐户中的资源使用情况
  • 如果这是您首次将管理集群部署到 AWS,请按照下面创建 IAM 资源中的说明,在 AWS 帐户中为 Tanzu Kubernetes Grid 创建 CloudFormation 堆栈。

创建 IAM 资源

首次将管理集群部署到 AWS 之前,必须在 AWS 帐户中为 Tanzu Kubernetes Grid (tkg-cloud-vmware-com) 创建 CloudFormation 堆栈。此 CloudFormation 堆栈包括 Tanzu Kubernetes Grid 在 AWS 上创建和运行集群所需的身份和访问管理 (IAM) 资源。有关详细信息,请参见准备将管理集群部署到 AWS 中的权限由 Tanzu Kubernetes Grid 设置

  1. 如果已在 AWS 帐户中为 Tanzu Kubernetes Grid 创建了 CloudFormation 堆栈,请跳过此过程的其余部分。

  2. 如果尚未为 AWS 帐户中的 Tanzu Kubernetes Grid 创建 CloudFormation 堆栈,请确保在本地环境或 AWS 默认凭据提供程序链中设置 AWS 身份验证变量。有关说明,请参见配置 AWS 帐户凭据和 SSH 密钥

    如果在多个位置配置了 AWS 凭据,则用于创建 CloudFormation 堆栈的凭据设置将按以下优先级顺序应用:

    • 首先应用本地环境变量 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKENAWS_REGION 中设置的凭据。
    • 作为默认凭据提供程序链的一部分存储在共享凭据文件中的凭据。您可以指定要在本地环境变量 AWS_SHARED_CREDENTIAL_FILE 中使用的凭据文件的位置。如果未定义此环境变量,则使用 $HOME/.aws/credentials 的默认位置。如果使用凭据配置文件,该命令将使用在 AWS_PROFILE 本地环境变量变量中指定的配置文件名称。如果没有为此变量指定值,则使用名为 default 的配置文件。

      有关如何解释 Java 应用程序的默认 AWS 凭据提供程序链的示例,请参见 AWS 文档中的使用 AWS 凭据

  3. 运行下列命令:

    tanzu mc permissions aws set
    

    有关此命令的详细信息,请运行 tanzu mc permissions aws set --help

重要

tanzu mc permissions aws set 命令将替换 Tanzu Kubernetes Grid v1.1.x 及更低版本中存在的 clusterawsadm 命令行实用程序。对于最初使用 v1.1.x 或更低版本部署的现有管理集群和工作负载集群,继续使用通过运行 clusterawsadm alpha bootstrap create-stack 命令创建的 CloudFormation 堆栈。对于 Tanzu Kubernetes Grid v1.2 及更高版本的集群,请使用 tkg-cloud-vmware-com 堆栈。

Azure
确保您满足 准备将管理集群部署到 Microsoft Azure 中列出的要求。

有关 Azure 不同大小的节点实例配置(例如,Standard_D2s_v3Standard_D4s_v3)的信息,请参见Azure 中虚拟机的大小


创建管理集群配置文件

从配置文件创建管理集群之前,必须创建 文件。从 CLI 部署管理集群时,可以使用 tanzu mc create 命令的 --file 选项指定此文件。

首次运行 tanzu config init 命令会创建包含Tanzu Kubernetes Grid 配置文件的 ~/.config/tanzu/tkg 子目录。

如果之前通过运行 tanzu mc create --ui 部署了管理集群,则 ~/.config/tanzu/tkg/clusterconfigs 目录包含管理集群配置文件,其中包含每次调用安装程序界面时保存的设置。根据部署管理集群的基础架构,您可以使用这些文件作为集群配置文件的模板,以便对同一基础架构进行新部署。或者,您也可以通过本文档中提供的模板创建管理集群配置文件。

  • 要使用通过安装程序界面执行的先前部署中的配置文件,请使用新名称创建配置文件的副本,在文本编辑器中打开该文件,然后更新配置。有关如何更新所有设置的信息,请参见配置文件变量参考

《配置文件变量参考》介绍了配置文件可以包含的所有变量。

VMware 建议为每个管理集群使用专用配置文件,其中包含特定于单个基础架构的配置设置。

重要

  • 配置管理集群中所述,环境变量将替代集群配置文件中的值。要使用集群配置文件中的所有设置,请先取消设置任何冲突的环境变量,然后再从 CLI 部署管理集群。
  • Tanzu Kubernetes Grid 中对 IPv6 地址的支持有限;请参见在 IPv6 上部署集群(仅限 vSphere)。如果未部署到仅 IPv6 网络环境,则配置文件中的所有 IP 地址设置都必须为 IPv4。
  • 某些参数配置相同的属性。例如,SIZE 属性会为不同的目标平台配置与所有控制平面和工作节点大小和类型属性相同的基础架构设置,但在更常规的级别。在这种情况下,请避免设置冲突或冗余属性。

要为独立管理集群创建配置文件,请执行以下操作:

  1. 在文本编辑器中,打开扩展名为 .yaml 的新文件,并使用相应的名称,例如 aws-mgmt-cluster-config.yaml。这将是您的配置文件。

    如果已从安装程序界面部署管理集群,则可以在集群配置的默认位置 ~/.config/tanzu/tkg/clusterconfigs 创建文件。

  2. 请参见以下与您的基础架构匹配的主题,将页面顶部的模板代码复制并粘贴到配置文件中:

  3. 在以下文件中配置设置:

    • 按照基础架构特定页面其余部分的说明配置基础架构特定的选项。
    • 按照此页面其余部分的说明配置所有目标平台通用的设置。
  4. 保存文件。

配置基本管理集群创建信息

基本管理集群创建设置定义了部署管理集群的基础架构和其他基本设置。它们对所有目标平台都是通用的。

  • 对于 CLUSTER_PLAN,指定要部署开发集群(提供单个控制平面节点)还是生产集群(提供具有三个控制平面节点的高可用性管理集群)。指定 devprod
  • 对于INFRASTRUCTURE_PROVIDER,请指定 awsazurevsphere

    INFRASTRUCTURE_PROVIDER: aws
    
    INFRASTRUCTURE_PROVIDER: azure
    
    INFRASTRUCTURE_PROVIDER: vsphere
    
  • 通过将 ENABLE_CEIP_PARTICIPATION 设置为 false,可以选择性地停用 VMware 客户体验提升计划 (CEIP) 的参与。有关 CEIP 的信息,请参见管理 CEIP 的参与https://www.vmware.com/solutions/trustvmware/ceip.html

  • 可选择通过将 ENABLE_AUDIT_LOGGING 设置为 false 来停用审核日志记录。有关审核日志记录的信息,请参见审核日志记录
  • 如果建议的 CIDR 范围 100.64.0.0/13 和 100.96.0.0/11 不可用,请为集群 pod 网络更新 CLUSTER_CIDR,为集群服务网络更新 SERVICE_CIDR

例如:

#! ---------------------------------------------------------------------
#! Basic cluster creation configuration
#! ---------------------------------------------------------------------

CLUSTER_NAME: aws-mgmt-cluster
CLUSTER_PLAN: dev
INFRASTRUCTURE_PROVIDER: aws
ENABLE_CEIP_PARTICIPATION: true
ENABLE_AUDIT_LOGGING: true
CLUSTER_CIDR: 100.96.0.0/11
SERVICE_CIDR: 100.64.0.0/13

配置身份管理

IDENTITY_MANAGEMENT_TYPE 设置为 ldapoidc。设置为 none 或忽略可停用身份管理。强烈建议为生产部署启用身份管理。

IDENTITY_MANAGEMENT_TYPE: oidc
IDENTITY_MANAGEMENT_TYPE: ldap

OIDC

要配置 OIDC,请更新下面的变量。有关如何配置变量的信息,请参见《配置文件变量参考》中的身份供程序 - OIDC

例如:

OIDC_IDENTITY_PROVIDER_CLIENT_ID: 0oa2i[...]NKst4x7
OIDC_IDENTITY_PROVIDER_CLIENT_SECRET: 331!b70[...]60c_a10-72b4
OIDC_IDENTITY_PROVIDER_GROUPS_CLAIM: groups
OIDC_IDENTITY_PROVIDER_ISSUER_URL: https://dev-[...].okta.com
OIDC_IDENTITY_PROVIDER_SCOPES: openid,groups,email,offline_access
OIDC_IDENTITY_PROVIDER_USERNAME_CLAIM: email

LDAP

要配置 LDAP,请取消注释 LDAP_* 变量,并使用 LDAPS 服务器的相关信息进行更新。有关如何配置变量的信息,请参见《配置文件变量参考》中的身份提供程序 - LDAP

例如:

LDAP_BIND_DN: "cn=bind-user,ou=people,dc=example,dc=com"
LDAP_BIND_PASSWORD: "example-password"
LDAP_GROUP_SEARCH_BASE_DN: dc=example,dc=com
LDAP_GROUP_SEARCH_FILTER: &(objectClass=posixGroup)(memberUid={})
LDAP_GROUP_SEARCH_NAME_ATTRIBUTE: cn
LDAP_GROUP_SEARCH_USER_ATTRIBUTE: uid
LDAP_HOST: ldaps.example.com:636
LDAP_ROOT_CA_DATA_B64: ""
LDAP_USER_SEARCH_BASE_DN: ou=people,dc=example,dc=com
LDAP_USER_SEARCH_FILTER: &(objectClass=posixAccount)(uid={})
LDAP_USER_SEARCH_NAME_ATTRIBUTE: uid

配置代理

要选择性地将出站 HTTP(S) 流量从管理集群发送到代理(例如,在 Internet 受限的环境中),请取消注释并设置 *_PROXY 设置。代理设置对所有目标平台通用。您可以选择对 HTTP 请求使用一个代理,对 HTTPS 请求使用另一个代理,或者对 HTTP 和 HTTPS 请求使用相同的代理。部署集群后,无法更改代理。

注意

在 vSphere 上,无法代理从集群虚拟机到 vCenter 的流量。在代理的 vSphere 环境中,您需要将 VSPHERE_INSECURE 设置为 true,或者将 vCenter IP 地址或主机名添加到 TKG_NO_PROXY 列表中。

  • TKG_HTTP_PROXY_ENABLED:将此项设置为 true 以配置代理。

  • TKG_PROXY_CA_CERT:如果代理服务器的证书是自签名的,请将其设置为代理服务器的 CA。

  • TKG_HTTP_PROXY:这是处理 HTTP 请求的代理的 URL。要设置 URL,请使用以下格式:

    PROTOCOL://USERNAME:PASSWORD@FQDN-OR-IP:PORT
    

    其中:

    • 必填PROTOCOL:此协议必须为 http 协议。
    • 可选USERNAMEPASSWORD:这是您的 HTTP 代理用户名和密码。如果代理需要身份验证,则必须设置 USERNAMEPASSWORD

    注意:使用 CLI 部署管理集群时,不能在密码中使用以下非字母数字字符:# ` ^ | / \ ? % ^ { [ ] }" < >

    • 必填FQDN-OR-IP:这是 HTTP 代理的 FQDN 或 IP 地址。
    • 必填PORT:这是您的 HTTP 代理使用的端口号。

    例如,http://user:[email protected]:1234

  • TKG_HTTPS_PROXY:这是处理 HTTPS 请求的代理的 URL。您可以将 TKG_HTTPS_PROXY 设置为与 TKG_HTTP_PROXY 相同的值,也可以提供不同的值。要设置该值,请使用上一步中的 URL 格式,其中:

    • 必填PROTOCOL:此协议必须为 http 协议。
    • 可选USERNAMEPASSWORD:这是您的 HTTPS 代理用户名和密码。如果代理需要身份验证,则必须设置 USERNAMEPASSWORD

    注意:使用 CLI 部署管理集群时,不能在密码中使用以下非字母数字字符:# ` ^ | / \ ? % ^ { [ ] }" < >

    • 必填FQDN-OR-IP:这是 HTTPS 代理的 FQDN 或 IP 地址。
    • 必填PORT:这是您的 HTTPS 代理使用的端口号。

    例如,http://user:[email protected]:1234

  • TKG_NO_PROXY:这将设置一个或多个必须绕过 HTTP(S) 代理的逗号分隔网络 CIDR 或主机名,例如,使管理集群能够直接与在同一网络上运行的基础架构通信,而该基础架构位于同一代理后面。请勿在逗号分隔的列表设置中使用空格。例如,noproxy.yourdomain.com,192.168.0.0/24

    在 vSphere 上,此列表必须包括:

    • 您的 vCenter IP 地址或主机名。
    • VSPHERE_NETWORK 的 CIDR,其中包括控制平面端点的 IP 地址。如果将 VSPHERE_CONTROL_PLANE_ENDPOINT 设置为 FQDN,还要将该 FQDN 添加到 TKG_NO_PROXY 列表中。

    在内部,Tanzu Kubernetes Grid 会将 localhost127.0.0.1CLUSTER_CIDRSERVICE_CIDR 的值、.svc.svc.cluster.local 附加到您在 TKG_NO_PROXY 中设置的值。它还会附加 AWS VPC CIDR 和 169.254.0.0/16(对于 AWS 上的部署)和 Azure VNET CIDR、169.254.0.0/16168.63.129.16(对于 Azure 上的部署)。对于 vSphere,必须手动将 VSPHERE_NETWORK 的 CIDR(包括控制平面端点的 IP 地址)添加到 TKG_NO_PROXY。如果将 VSPHERE_CONTROL_PLANE_ENDPOINT 设置为 FQDN,请将 FQDN 和 VSPHERE_NETWORK 同时添加到 TKG_NO_PROXY

    重要

    如果集群虚拟机需要与 Tanzu Kubernetes Grid 环境中的外部服务和基础架构端点进行通信,请确保上面设置的代理可以访问这些端点,或者将这些端点添加到 TKG_NO_PROXY。根据您的环境配置,这可能包括但不限于:

    • 您的 OIDC 或 LDAP 服务器
    • Harbor
    • VMware NSX
    • NSX Advanced Load Balancer
    • 集群外部的 AWS VPC CIDR

例如:

#! ---------------------------------------------------------------------
#! Proxy configuration
#! ---------------------------------------------------------------------

TKG_HTTP_PROXY_ENABLED: true
TKG_PROXY_CA_CERT: "LS0t[...]tLS0tLQ==""
TKG_HTTP_PROXY: "http://myproxy.com:1234"
TKG_HTTPS_PROXY: "http://myproxy.com:1234"
TKG_NO_PROXY: "noproxy.yourdomain.com,192.168.0.0/24"

配置节点设置

默认情况下,所有集群节点针对所有目标平台运行 Ubuntu v20.04。在 vSphere 上,您可以选择性地部署在其节点上运行 Photon OS 的集群。在 AWS 上,节点可以选择运行 Amazon Linux 2。对于架构,默认且唯一的当前选项为 amd64。有关操作系统和版本设置,请参见《配置文件变量参考》中的节点配置

例如:

#! ---------------------------------------------------------------------
#! Node configuration
#! ---------------------------------------------------------------------

OS_NAME: "photon"
OS_VERSION: "3"
OS_ARCH: "amd64"

如何设置节点计算配置和大小取决于目标平台。有关信息,请参见适用于 vSphere 的管理集群配置适用于 AWS 的管理集群配置适用于 Microsoft Azure 的管理集群配置

配置计算机运行状况检查

可选择性地根据部署首选项并按照《配置文件变量参考》的计算机运行状况检查一节中所述的准则更新变量

例如:

ENABLE_MHC:
ENABLE_MHC_CONTROL_PLANE: true
ENABLE_MHC_WORKER_NODE: true
MHC_MAX_UNHEALTHY_CONTROL_PLANE: 60%
MHC_MAX_UNHEALTHY_WORKER_NODE: 60%
MHC_UNKNOWN_STATUS_TIMEOUT: 10m
MHC_FALSE_STATUS_TIMEOUT: 20m

配置专用映像注册表

如果要在 Internet 受限的环境中部署管理集群,请取消注释并更新 TKG_CUSTOM_IMAGE_REPOSITORY_* 设置。这些设置对所有目标平台都是通用的。在以下情况中,您无需配置专用映像注册表设置:

  • 在 Internet 受限的环境中部署管理集群,并且已按照 准备 Internet 受限环境中所述,通过运行 tanzu config set 命令来设置 TKG_CUSTOM_IMAGE_REPOSITORY_* 变量。通过运行 tanzu config set 替代集群配置文件中的值。
  • 如果要在有权访问外部 Internet 的环境中部署管理集群。

例如:

#! ---------------------------------------------------------------------
#! Image repository configuration
#! ---------------------------------------------------------------------

TKG_CUSTOM_IMAGE_REPOSITORY: "custom-image-repository.io/yourproject"
TKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE: "LS0t[...]tLS0tLQ=="

配置 Antrea CNI

默认情况下,使用 Tanzu CLI 部署的集群通过 Antrea 容器网络接口 (CNI) 提供集群内容器网络连接。

您可以选择停用 Pod 流量的源网络地址转换 (SNAT),实施 hybridnoEncapNetworkPolicyOnly 流量封装模式、使用代理和网络策略以及实施流跟踪。

有关 Antrea 的详细信息,请参见以下资源:

要在 Antrea 上配置这些功能,请取消注释并更新 ANTREA_* 变量。例如:

#! ---------------------------------------------------------------------
#! Antrea CNI configuration
#! ---------------------------------------------------------------------

ANTREA_NO_SNAT: true
ANTREA_NODEPORTLOCAL: true
ANTREA_NODEPORTLOCAL_ENABLED: true
ANTREA_NODEPORTLOCAL_PORTRANGE: 61000-62000
ANTREA_TRAFFIC_ENCAP_MODE: "encap"
ANTREA_PROXY: true
ANTREA_PROXY_ALL: true
ANTREA_PROXY_LOAD_BALANCER_IPS: false
ANTREA_PROXY_NODEPORT_ADDRS:
ANTREA_PROXY_SKIP_SERVICES: ""
ANTREA_POLICY: true
ANTREA_TRACEFLOW: true
ANTREA_DISABLE_UDP_TUNNEL_OFFLOAD: false
ANTREA_ENABLE_USAGE_REPORTING: false
ANTREA_EGRESS: true
ANTREA_EGRESS_EXCEPT_CIDRS: ""
ANTREA_FLOWEXPORTER: false
ANTREA_FLOWEXPORTER_COLLECTOR_ADDRESS: "flow-aggregator.flow-aggregator.svc:4739:tls"
ANTREA_FLOWEXPORTER_POLL_INTERVAL: "5s"
ANTREA_FLOWEXPORTER_ACTIVE_TIMEOUT: "5s"
ANTREA_FLOWEXPORTER_IDLE_TIMEOUT: "15s"
ANTREA_IPAM: false
ANTREA_KUBE_APISERVER_OVERRIDE: ""
ANTREA_MULTICAST: false
ANTREA_MULTICAST_INTERFACES: ""
ANTREA_NETWORKPOLICY_STATS: true
ANTREA_SERVICE_EXTERNALIP: true
ANTREA_TRAFFIC_ENCRYPTION_MODE: none
ANTREA_TRANSPORT_INTERFACE: ""
ANTREA_TRANSPORT_INTERFACE_CIDRS: ""

运行 tanzu mc create 命令

创建或更新集群配置文件并下载最新的 BOM 后,可以通过运行 tanzu mc create --file CONFIG-FILE 命令部署管理集群,其中 CONFIG-FILE 是配置文件的名称。如果您的配置文件是默认的 ~/.config/tanzu/tkg/cluster-config.yaml,则可以忽略 --file 选项。如果要查看 tanzu mc create 命令将应用的 Kubernetes 清单,可以选择使用 --dry-run 标记打印清单,而无需进行更改。在生成 Kubernetes 清单之前,此调用仍将运行下面所述的验证检查。

注意

tanzu mc create 命令需要一段时间才能完成。tanzu mc create 正在运行时,请勿在同一引导计算机上运行 tanzu mc create 的其他调用以部署多个管理集群、更改上下文或编辑 ~/.kube-tkg/config

要部署管理集群,请运行 tanzu mc create 命令。例如:

tanzu mc create --file path/to/cluster-config-file.yaml
  • (仅限 vSphere)将管理集群部署到 vSphere 后,您必须将其控制平面节点的 IP 地址配置为静态地址,如《使用 Tanzu CLI 创建和管理 TKG 2.2 工作负载集群》的为控制平面配置 DHCP 预留(仅限 vSphere)中所述。

验证检查

运行 tanzu mc create 时,该命令会在部署管理集群之前执行多次验证检查。检查因要部署管理集群的基础架构而异。

vSphere
命令将验证目标 vSphere 基础架构是否满足以下要求:
  • 您提供的 vSphere 凭据有效。
  • 节点满足最小大小要求。
  • 基础映像模板存在于 vSphere 中,并且对指定的 Kubernetes 版本有效。
  • vSphere 中存在必需的资源,包括资源池、数据存储和文件夹。
AWS
该命令将验证目标 AWS 基础架构是否满足以下要求:
  • 您提供的 AWS 凭据有效。
  • Cloud Formation 堆栈存在。
  • 支持节点实例类型。
  • 区域和 AZ 匹配。
Azure
该命令将验证目标 Azure 基础架构是否满足以下要求:
  • 您提供的 Azure 凭据有效。
  • 公用 SSH 密钥采用 base64 格式编码。
  • 支持节点实例类型。

如果不满足其中的任何条件,tanzu mc create 命令将失败。

监控进度

运行 tanzu mc create 时,可以在终端中跟踪管理集群的部署进度。首次运行 tanzu mc create 所需的时间比后续运行更长,因为它必须将所需的 Docker 映像提取到引导计算机上的映像存储中。后续运行不需要此步骤,因此速度更快。

如果在部署管理集群之前 tanzu mc create 失败,则应在重新运行 tanzu mc create 之前清理引导计算机上的项目。有关详细信息,请参见 管理集群问题故障排除主题。如果运行 tanzu mc create 的计算机在本地操作完成之前关闭或重新启动,则部署将失败。

如果部署成功,您会在终端中看到一条确认消息:

Management cluster created! You can now create your first workload cluster by running tanzu cluster create [name] -f [file]

下一步操作

  • 配置身份管理:如果为管理集群启用了 OIDC 或 LDAP 身份管理,则必须执行完成身份管理配置中所述的部署后步骤以启用访问。
  • 在 Tanzu Mission Control 中注册管理集群:如果要在 Tanzu Mission Control 中注册管理集群,请参见在 Tanzu Mission Control 中注册管理集群
  • 部署工作负载集群:创建管理集群后,可以按照 使用 Tanzu CLI 创建和管理 TKG 2.4 工作负载集群中所述部署工作负载集群。
  • 部署另一个管理集群:要在任意或全部的 vSphere、Azure 和 AWS 上部署多个管理集群,请参见管理您的管理集群。本主题还提供了有关如何将现有管理集群添加到 CLI 实例、获取凭据、扩展和删除管理集群、添加命名空间以及如何选择加入或退出 CEIP 的信息。

有关在部署管理集群期间发生的情况、如何将 kubectl 连接到管理集群、如何创建命名空间以及如何向 Tanzu Mission Control 注册管理集群的信息,请参见 检查和注册新部署的独立管理集群

check-circle-line exclamation-circle-line close-line
Scroll to top icon