AWS 的管理集群配置

要创建集群配置文件,您可以将先前部署的现有配置文件复制到 Amazon Web Services (AWS) 并进行更新。或者,也可以使用空模板从头开始创建文件。

管理集群配置模板

以下模板包括与在 AWS 上部署管理集群相关的所有选项。您可以复制此模板并将其用于将管理集群部署到 AWS。

已取消对必填选项的注释。可选设置已注释掉。如果适用,则包括默认值。

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

CLUSTER_NAME:
CLUSTER_PLAN: dev
INFRASTRUCTURE_PROVIDER: aws
# CLUSTER_API_SERVER_PORT:
ENABLE_CEIP_PARTICIPATION: true
ENABLE_AUDIT_LOGGING: true
CLUSTER_CIDR: 100.96.0.0/11
SERVICE_CIDR: 100.64.0.0/13
# CAPBK_BOOTSTRAP_TOKEN_TTL: 30m

#! ---------------------------------------------------------------------
#! Node configuration
#! AWS-only MACHINE_TYPE settings override cloud-agnostic SIZE settings.
#! ---------------------------------------------------------------------

# SIZE:
# CONTROLPLANE_SIZE:
# WORKER_SIZE:
CONTROL_PLANE_MACHINE_TYPE: t3.large
NODE_MACHINE_TYPE: m5.large
# OS_NAME: ""
# OS_VERSION: ""
# OS_ARCH: ""

#! ---------------------------------------------------------------------
#! AWS configuration
#! ---------------------------------------------------------------------

AWS_REGION:
AWS_NODE_AZ: ""
AWS_ACCESS_KEY_ID:
AWS_SECRET_ACCESS_KEY:
AWS_SSH_KEY_NAME:
BASTION_HOST_ENABLED: true
# AWS_NODE_AZ_1: ""
# AWS_NODE_AZ_2: ""
# AWS_VPC_ID: ""
# AWS_PRIVATE_SUBNET_ID: ""
# AWS_PUBLIC_SUBNET_ID: ""
# AWS_PUBLIC_SUBNET_ID_1: ""
# AWS_PRIVATE_SUBNET_ID_1: ""
# AWS_PUBLIC_SUBNET_ID_2: ""
# AWS_PRIVATE_SUBNET_ID_2: ""
# AWS_PRIVATE_NODE_CIDR: 10.0.0.0/24
# AWS_PUBLIC_NODE_CIDR: 10.0.1.0/24
# AWS_PRIVATE_NODE_CIDR_1: 10.0.2.0/24
# AWS_PUBLIC_NODE_CIDR_1: 10.0.3.0/24
# AWS_PRIVATE_NODE_CIDR_2: 10.0.4.0/24
# AWS_PUBLIC_NODE_CIDR_2: 10.0.5.0/24
# AWS_SECURITY_GROUP_BASTION: sg-12345
# AWS_SECURITY_GROUP_CONTROLPLANE: sg-12346
# AWS_SECURITY_GROUP_APISERVER_LB: sg-12347
# AWS_SECURITY_GROUP_NODE: sg-12348
# AWS_SECURITY_GROUP_LB: sg-12349
# DISABLE_TMC_CLOUD_PERMISSIONS: false # Deactivates IAM permissions required for TMC enablement

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

# TKG_CUSTOM_IMAGE_REPOSITORY: ""
# TKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE: ""

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

# TKG_HTTP_PROXY: ""
# TKG_HTTPS_PROXY: ""
# TKG_NO_PROXY: ""

#! ---------------------------------------------------------------------
#! Machine Health Check configuration
#! ---------------------------------------------------------------------

ENABLE_MHC:
ENABLE_MHC_CONTROL_PLANE: true
ENABLE_MHC_WORKER_NODE: true
MHC_UNKNOWN_STATUS_TIMEOUT: 5m
MHC_FALSE_STATUS_TIMEOUT: 12m

#! ---------------------------------------------------------------------
#! Identity management configuration
#! ---------------------------------------------------------------------

IDENTITY_MANAGEMENT_TYPE: "none"

#! Settings for IDENTITY_MANAGEMENT_TYPE: "oidc"
# CERT_DURATION: 2160h
# CERT_RENEW_BEFORE: 360h
# OIDC_IDENTITY_PROVIDER_CLIENT_ID:
# OIDC_IDENTITY_PROVIDER_CLIENT_SECRET:
# OIDC_IDENTITY_PROVIDER_GROUPS_CLAIM: groups
# OIDC_IDENTITY_PROVIDER_ISSUER_URL:
# OIDC_IDENTITY_PROVIDER_SCOPES: "email,profile,groups"
# OIDC_IDENTITY_PROVIDER_USERNAME_CLAIM: email

#! The following two variables are used to configure Pinniped JWTAuthenticator for workload clusters
# SUPERVISOR_ISSUER_URL:
# SUPERVISOR_ISSUER_CA_BUNDLE_DATA:

#! Settings for IDENTITY_MANAGEMENT_TYPE: "ldap"
# LDAP_BIND_DN:
# LDAP_BIND_PASSWORD:
# LDAP_HOST:
# LDAP_USER_SEARCH_BASE_DN:
# LDAP_USER_SEARCH_FILTER:
# LDAP_USER_SEARCH_USERNAME: userPrincipalName
# LDAP_USER_SEARCH_ID_ATTRIBUTE: DN
# LDAP_USER_SEARCH_EMAIL_ATTRIBUTE: DN
# LDAP_USER_SEARCH_NAME_ATTRIBUTE:
# LDAP_GROUP_SEARCH_BASE_DN:
# LDAP_GROUP_SEARCH_FILTER:
# LDAP_GROUP_SEARCH_USER_ATTRIBUTE: DN
# LDAP_GROUP_SEARCH_GROUP_ATTRIBUTE:
# LDAP_GROUP_SEARCH_NAME_ATTRIBUTE: cn
# LDAP_ROOT_CA_DATA_B64:

#! ---------------------------------------------------------------------
#! 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_TRANSPORT_INTERFACE: ""
# ANTREA_TRANSPORT_INTERFACE_CIDRS: ""

AWS 连接设置

要提供有关 AWS 帐户以及要在其中部署集群的区域和可用区的信息,请执行以下操作之一:

  • (推荐)使用 AWS CLI 配置 AWS 凭据配置文件,并将环境变量 AWS_PROFILE 设置为引导计算机上的配置文件名称。

  • 包含帐户凭据和集群配置文件中的其他信息。例如:

    AWS_REGION: eu-west-1
    AWS_NODE_AZ: "eu-west-1a"
    # Only use AWS_PROFILE OR combination of AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, but not both.
    AWS_PROFILE: tkg
    # AWS_ACCESS_KEY_ID:  <encoded:QUtJQVQ[...]SU82TTM=>
    # AWS_SECRET_ACCESS_KEY: <encoded:eGN4RHJmLzZ[...]SR08yY2ticQ==>
    AWS_SSH_KEY_NAME: default
    BASTION_HOST_ENABLED: true
    
    • 只能使用 AWS_PROFILEAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 的组合,但不能同时使用两者。
    • AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 的值必须采用 base64 编码。

将内部负载均衡器用于 API 服务器

默认情况下,Tanzu Kubernetes Grid on AWS 为管理集群的 Kubernetes API 服务器创建面向公众的负载均衡器。

对于 Internet 受限的环境(如气隙或代理),可以通过在集群配置文件中将 AWS_LOAD_BALANCER_SCHEME_INTERNAL 设置为 true 来避免创建面向公众的负载均衡器:

AWS_LOAD_BALANCER_SCHEME_INTERNAL: true

此设置可将管理集群的负载均衡器自定义为使用内部方案,这意味着将无法通过 Internet 访问和路由其 Kubernetes API 服务器。

配置节点大小

Tanzu CLI 会根据您在配置文件中提供的设置创建工作负载集群的各个节点。在 AWS 上,您可以将所有节点虚拟机配置为具有相同的预定义配置,或者为控制平面和工作节点设置不同的预定义配置。通过使用这些设置,您可以创建 Tanzu Kubernetes 集群,这些集群的节点具有与管理集群节点不同的配置。您还可以创建控制平面节点和工作节点在其中具有不同配置的集群。

创建管理集群时,将在 CONTROL_PLANE_MACHINE_TYPENODE_MACHINE_TYPE 选项中设置节点计算机的实例类型。默认情况下,这些设置还用于工作负载集群。最低配置为 2 个 CPU 和 8 GB 内存。兼容的实例类型列表因区域而异。

CONTROL_PLANE_MACHINE_TYPE: "t3.large"
NODE_MACHINE_TYPE: "m5.large"

您可以使用 SIZECONTROLPLANE_SIZEWORKER_SIZE 选项覆盖这些设置。要创建所有控制平面虚拟机和工作节点虚拟机大小相同的 Tanzu Kubernetes 集群,请指定 SIZE 变量。如果设置 SIZE 变量,将使用您设置的配置创建所有节点。有关 Amazon EC2 不同大小节点实例配置的信息,请参见 Amazon EC2 实例类型

SIZE: "t3.large"

要创建控制平面虚拟机和工作节点虚拟机大小不同工作负载的集群,请指定 CONTROLPLANE_SIZEWORKER_SIZE 选项。

CONTROLPLANE_SIZE: "t3.large"
WORKER_SIZE: "m5.xlarge"

您可以将 CONTROLPLANE_SIZEWORKER_SIZE 选项与 SIZE 选项结合使用。例如,如果指定 SIZE: "t3.large"WORKER_SIZE: "m5.xlarge",则控制平面节点将设置为 t3.large 并且工作节点将设置为 m5.xlarge

SIZE: "t3.large"
WORKER_SIZE: "m5.xlarge"

配置 VPC

取消注释并更新以下行,指定将托管和供独立管理集群使用的 VPC 和其他 AWS 基础架构

AWS_REGION:
AWS_NODE_AZ:
AWS_PRIVATE_SUBNET_ID:
AWS_PUBLIC_SUBNET_ID:
AWS_SSH_KEY_NAME:
AWS_VPC_ID:
BASTION_HOST_ENABLED:
CONTROL_PLANE_MACHINE_TYPE:
NODE_MACHINE_TYPE:
SERVICE_CIDR:
CLUSTER_CIDR:

如果要部署生产管理集群,还要取消注释并填写其他两个控制平面节点的以下内容:

AWS_NODE_AZ_1:
AWS_NODE_AZ_2:
AWS_PRIVATE_SUBNET_ID_1:
AWS_PRIVATE_SUBNET_ID_2:
AWS_PUBLIC_SUBNET_ID_1:
AWS_PUBLIC_SUBNET_ID_2:

例如,现有 VPC 上的生产管理集群的配置可能如下所示:

AWS_REGION: us-west-2
AWS_NODE_AZ: us-west-2a
AWS_NODE_AZ_1: us-west-2b
AWS_NODE_AZ_2: us-west-2c
AWS_PRIVATE_SUBNET_ID: subnet-ID
AWS_PRIVATE_SUBNET_ID_1: subnet-ID
AWS_PRIVATE_SUBNET_ID_2: subnet-ID
AWS_PUBLIC_SUBNET_ID: subnet-ID
AWS_PUBLIC_SUBNET_ID_1: subnet-ID
AWS_PUBLIC_SUBNET_ID_2: subnet-ID
AWS_SSH_KEY_NAME: tkg
AWS_VPC_ID: vpc-ID
BASTION_HOST_ENABLED: "true"
CONTROL_PLANE_MACHINE_TYPE: m5.large
NODE_MACHINE_TYPE: m5.large
SERVICE_CIDR: 100.64.0.0/13
CLUSTER_CIDR: 100.96.0.0/11

默认情况下,Tanzu Kubernetes Grid 创建新的安全组以连接控制平面、工作节点和负载均衡器。如果需要自定义规则,可以预置备安全组、添加规则集并将集群配置为使用自定义安全组,如下所述。

配置自定义安全组

默认情况下,Tanzu Kubernetes Grid 在 VPC 中创建五个安全组。

要防止 Tanzu Kubernetes Grid 创建新的安全组,而改为使用具有自定义规则集的现有预置备安全组,请执行以下操作:

  • 创建具有自定义规则集的安全组,以尽可能密切地匹配默认规则集。
  • 通过将 AWS_SECURITY_GROUP_*变量设置为安全组名称,在集群配置文件中指定自定义安全组。例如:

    AWS_SECURITY_GROUP_BASTION: sg-12345
    

下面列出了五个安全组及其默认规则和相应的集群配置变量:

  • 组: CLUSTER-NAME-bastion

    使用集群配置变量 AWS_SECURITY_GROUP_BASTION 进行设置。

    规则:

    描述 协议 从端口 到端口 允许输入来自 强制性
    SSH TCP 22 22 0.0.0.0/0
  • 组: CLUSTER-NAME-node

    使用集群配置变量 AWS_SECURITY_GROUP_NODE 进行设置。

    规则:

    描述 协议 从端口 到端口 允许输入来自 强制性
    SSH TCP 22 22 安全组 <cluster-name>-bastion
    节点端口服务 TCP 30000 32767 0.0.0.0/0 否(请参见下面的注释)
    Kubelet API TCP 10250 10250 安全组 <cluster-name>-控制平面和 <cluster-name>-节点
    Antrea CNI TCP 10349-10351 10349-10351 安全组 <cluster-name>-节点
    GENEVE UDP 6081 6081 安全组 <cluster-name>-节点
    注意

    0.0.0.0/0 仅来自 VPC、对等 VPC 以及任何通过 VPN 或 DirectConnect 连接的网络的入站流量。0.0.0.0/0 不应解释为可访问 Internet。只要是管理员,就可以同时更改节点端口服务的端口范围和输入规则,而不用于运行集群。

  • 组: CLUSTER-NAME-controlplane

    使用集群配置变量 AWS_SECURITY_GROUP_CONTROLPLANE 进行设置。

    规则:

    描述 协议 从端口 到端口 允许输入来自 强制性
    SSH TCP 22 22 安全组 <cluster-name>-bastion
    Kubernetes API TCP 6443* 6443* 安全组 <cluster-name>-apiserver-lb、<cluster-name>-apiserver-控制平面和 <cluster-name>-apiserver-节点
    etcd TCP 2379 2379 安全组 <cluster-name>-控制平面
    etcd 对等 TCP 2380 2380 安全组 <cluster-name>-控制平面
    addons-manager TCP 9865 9865 安全组 <cluster-name>-控制平面
    kapp-controller TCP 10100 10100 安全组 <cluster-name>-控制平面

    * 如果设置 CLUSTER_API_SERVER_PORT,请将 6443 替换为您在变量中设置的端口号。

  • 组: CLUSTER-NAME-apiserver-lb

    使用集群配置变量 AWS_SECURITY_GROUP_APISERVER_LB 进行设置。

    规则:

    描述 协议 从端口 到端口 允许输入来自 强制性
    Kubernetes API TCP 6443* 6443* 0.0.0.0/0 否(请参见下面的注释)

    * 如果设置 CLUSTER_API_SERVER_PORT,请将 6443 替换为您在变量中设置的端口号。

    注意

    如果未指定在内部置备负载均衡器,则默认情况下,0.0.0.0/0 规则可以访问 Internet。如果负载均衡器是内部负载均衡器,则必须可从管理集群(对于工作负载集群)或引导计算机(对于管理集群)访问该负载均衡器。此规则可以锁定,但如果锁定,则必须添加以下规则:

    描述 协议 从端口 到端口 允许输入来自 强制性
    集群中的 Kubernetes API TCP 6443* 6443* 安全组 <cluster-name>-控制平面和 <cluster-name>-节点

    * 如果设置 CLUSTER_API_SERVER_PORT,请将 6443 替换为您在变量中设置的端口号。

  • 组: CLUSTER-NAME-lb

    使用集群配置变量 AWS_SECURITY_GROUP_LB 进行设置。

    此安全组用于工作负载负载均衡器。不会向此安全组添加任何规则,AWS 管理员应根据应用程序工作负载需求自定义规则集。

下一步操作

更新完管理集群配置文件后,按照从配置文件部署管理集群中的说明创建管理集群。

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