您可以使用 Tanzu CLI 通过 YAML 配置文件中指定的配置将管理集群部署到 vSphere、Amazon Web 服务 (AWS) 和 Microsoft Azure。
在部署管理集群之前,必须确保您的环境满足目标平台的要求。
TKG_CUSTOM_IMAGE_REPOSITORY
设置为环境变量。重要强烈建议使用 Tanzu Kubernetes Grid 安装程序界面(而不是 CLI)将第一个管理集群部署到给定的目标平台。使用安装程序界面部署管理集群时,它会使用所需的参数填充管理集群的集群配置文件。您可以将创建的配置文件用作将来从 CLI 部署到此目标平台的模型。
重要在 vSphere with Tanzu 上,您可能不需要部署管理集群。请参见 vSphere with Tanzu 主管是管理集群。
t3.large
或t3.xlarge
)配置的信息,请参见 Amazon EC2 实例类型。首次将管理集群部署到 AWS 之前,必须在 AWS 帐户中为 Tanzu Kubernetes Grid (tkg-cloud-vmware-com
) 创建 CloudFormation 堆栈。此 CloudFormation 堆栈包括 Tanzu Kubernetes Grid 在 AWS 上创建和运行集群所需的身份和访问管理 (IAM) 资源。有关详细信息,请参见准备将管理集群部署到 AWS 中的权限由 Tanzu Kubernetes Grid 设置。
如果已在 AWS 帐户中为 Tanzu Kubernetes Grid 创建了 CloudFormation 堆栈,请跳过此过程的其余部分。
如果尚未为 AWS 帐户中的 Tanzu Kubernetes Grid 创建 CloudFormation 堆栈,请确保在本地环境或 AWS 默认凭据提供程序链中设置 AWS 身份验证变量。有关说明,请参见配置 AWS 帐户凭据和 SSH 密钥。
如果在多个位置配置了 AWS 凭据,则用于创建 CloudFormation 堆栈的凭据设置将按以下优先级顺序应用:
AWS_ACCESS_KEY_ID
、AWS_SECRET_ACCESS_KEY
、AWS_SESSION_TOKEN
和 AWS_REGION
中设置的凭据。作为默认凭据提供程序链的一部分存储在共享凭据文件中的凭据。您可以指定要在本地环境变量 AWS_SHARED_CREDENTIAL_FILE
中使用的凭据文件的位置。如果未定义此环境变量,则使用 $HOME/.aws/credentials
的默认位置。如果使用凭据配置文件,该命令将使用在 AWS_PROFILE
本地环境变量变量中指定的配置文件名称。如果没有为此变量指定值,则使用名为 default
的配置文件。
有关如何解释 Java 应用程序的默认 AWS 凭据提供程序链的示例,请参见 AWS 文档中的使用 AWS 凭据。
运行下列命令:
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 不同大小的节点实例配置(例如,Standard_D2s_v3
或 Standard_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
属性会为不同的目标平台配置与所有控制平面和工作节点大小和类型属性相同的基础架构设置,但在更常规的级别。在这种情况下,请避免设置冲突或冗余属性。
要为独立管理集群创建配置文件,请执行以下操作:
在文本编辑器中,打开扩展名为 .yaml
的新文件,并使用相应的名称,例如 aws-mgmt-cluster-config.yaml
。这将是您的配置文件。
如果已从安装程序界面部署管理集群,则可以在集群配置的默认位置 ~/.config/tanzu/tkg/clusterconfigs
创建文件。
请参见以下与您的基础架构匹配的主题,将页面顶部的模板代码复制并粘贴到配置文件中:
在以下文件中配置设置:
保存文件。
基本管理集群创建设置定义了部署管理集群的基础架构和其他基本设置。它们对所有目标平台都是通用的。
CLUSTER_PLAN
,指定要部署开发集群(提供单个控制平面节点)还是生产集群(提供具有三个控制平面节点的高可用性管理集群)。指定 dev
或 prod
。对于INFRASTRUCTURE_PROVIDER
,请指定 aws
、azure
或 vsphere
。
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
来停用审核日志记录。有关审核日志记录的信息,请参见审核日志记录。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
设置为 ldap
或 oidc
。设置为 none
或忽略可停用身份管理。强烈建议为生产部署启用身份管理。
IDENTITY_MANAGEMENT_TYPE: oidc
IDENTITY_MANAGEMENT_TYPE: ldap
要配置 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_*
变量,并使用 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
协议。USERNAME
和 PASSWORD
:这是您的 HTTP 代理用户名和密码。如果代理需要身份验证,则必须设置 USERNAME
和 PASSWORD
。注意:使用 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
协议。USERNAME
和 PASSWORD
:这是您的 HTTPS 代理用户名和密码。如果代理需要身份验证,则必须设置 USERNAME
和 PASSWORD
。注意:使用 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 上,此列表必须包括:
VSPHERE_NETWORK
的 CIDR,其中包括控制平面端点的 IP 地址。如果将 VSPHERE_CONTROL_PLANE_ENDPOINT
设置为 FQDN,还要将该 FQDN 添加到 TKG_NO_PROXY
列表中。在内部,Tanzu Kubernetes Grid 会将 localhost
、127.0.0.1
、CLUSTER_CIDR
和 SERVICE_CIDR
的值、.svc
和 .svc.cluster.local
附加到您在 TKG_NO_PROXY
中设置的值。它还会附加 AWS VPC CIDR 和 169.254.0.0/16
(对于 AWS 上的部署)和 Azure VNET CIDR、169.254.0.0/16
和 168.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
。根据您的环境配置,这可能包括但不限于:
例如:
#! ---------------------------------------------------------------------
#! 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_*
设置。这些设置对所有目标平台都是通用的。在以下情况中,您无需配置专用映像注册表设置:
tanzu config set
命令来设置 TKG_CUSTOM_IMAGE_REPOSITORY_*
变量。通过运行 tanzu config set
替代集群配置文件中的值。例如:
#! ---------------------------------------------------------------------
#! Image repository configuration
#! ---------------------------------------------------------------------
TKG_CUSTOM_IMAGE_REPOSITORY: "custom-image-repository.io/yourproject"
TKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE: "LS0t[...]tLS0tLQ=="
默认情况下,使用 Tanzu CLI 部署的集群通过 Antrea 容器网络接口 (CNI) 提供集群内容器网络连接。
您可以选择停用 Pod 流量的源网络地址转换 (SNAT),实施 hybrid
、noEncap
、NetworkPolicyOnly
流量封装模式、使用代理和网络策略以及实施流跟踪。
有关 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 上的多个 AZ:要立即或稍后跨多个可用区运行管理集群或其工作负载集群,请在《在 Kubernetes 中创建 FailureDomain
和DeploymentZone
对象》中描述的 vsphere-zones.yaml
文件中包含 --az-file
选项:
tanzu mc create --file path/to/cluster-config-file.yaml --az-file path/to/vsphere-zones.yaml
运行 tanzu mc create
时,该命令会在部署管理集群之前执行多次验证检查。检查因要部署管理集群的基础架构而异。
多 AZ 验证:如果要部署管理集群,如 在 Kubernetes 中创建 FailureDomain 和 DeploymentZone 对象中所述定义 FailureDomains 和 DeploymentZone 资源,然后使用 tanzu mc create
命令中的 --az-file
选项引用它们,则集群创建过程默认会执行以下额外检查:
* All vSphere zones and regions referenced in `VSphereFailureDomain`, `VSphereDeploymentZone`, and related Kubernetes objects exist in vSphere, are accessible, and have host groups, VM groups, and tags that also exist.
* Tag categories for the tags exist in vSphere and are logically consistent.
* vSphere AZ/zone and region configurations are logically consistent.
* `MATCHING_LABELS` configuration settings correspond to labels in the `VSphereDeploymentZone` objects.
* Zones referenced in Kubernetes are at the same level in vSphere.
* ResourcePools and Folders referenced in the `VSphereDeploymentZone` resources exist in vSphere.
要防止集群创建过程验证配置中指定的 vSphere 区域和地理区域是否全部存在、是否一致,以及是否在同一级别定义,请在本地环境中将 SKIP_MULTI_AZ_VERIFY
设置为 "true"
:
```
export SKIP_MULTI_AZ_VERIFY="true"
```
您无法在集群配置文件中设置此变量。
使用 SKIP_MULTI_AZ_VERIFY
的典型场景是,您正在部署独立管理集群,将来会使用该进群创建跨多个 AZ 运行的工作负载群集,但尚未设置工作负载群集 AZ 的 vSphere 资源。
如果不满足其中的任何条件,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]
有关在部署管理集群期间发生的情况、如何将 kubectl
连接到管理集群、如何创建命名空间以及如何向 Tanzu Mission Control 注册管理集群的信息,请参见 检查和注册新部署的独立管理集群。