创建经典集群
经典基础结构
使用 IBM Cloud CLI 或 IBM Cloud 控制台创建完全可定制的标准集群,并可选择硬件隔离和访问功能,如用于高可用环境的多工作节点。
先决条件
可以创建 Red Hat OpenShift on IBM Cloud 集群,仅使用公共服务端点或同时使用公共服务端点和专用服务端点。 无法禁用公共服务端点。 因此,无法将公共 Red Hat OpenShift 集群转换为专用集群。 如果要在启用了专用服务端点的情况下创建经典集群,那么必须 启用 VRF 和 服务端点。 如果需要仅专用集群,请考虑创建 VPC 集群。
在控制台中创建经典群集
要开始创建集群,请导航至 控制台并点击“创建集群”。
- 位置详细信息
- 创建集群时,其资源会保留在将集群部署到的位置中。
-
- 资源组:一个群集只能在一个资源组中创建,群集创建后,不能更改其资源组。 要在非缺省资源组中创建集群,您必须至少具有该资源组的查看者角色。
-
- 地理位置: 选择要在其中创建集群的区域,例如 北美。 地理位置有助于过滤可以在控制台中选择的 可用性 和 高速 值。
-
- 可用性: 可以使用 单专区 或 Multizone 配置创建集群。 多专区集群提供高可用性,Kubernetes 主节点部署在支持多专区的专区中,并且主节点的三个副本分布在不同专区中。
- 对于多专区集群,请选择 Metro 位置。 为获得最佳性能,请选择离您最近的地区。 您的工作区基于您选择的区域。 您可以选择要应用的工作程序区域,并且工作程序节点将分布在各个区域中以实现高可用性。 每个工作程序区域都有一个公用和专用 VLAN。 如果该区域中没有 VLAN,那么将为您创建这些 VLAN。
- 对于单专区集群,请选择要在其中托管集群的单个 工作程序专区。 为了获得最佳性能,请选择离您最近的城市的区域。 每个工作程序区域都有一个公用和专用 VLAN。 如果该区域中没有 VLAN,那么将为您创建这些 VLAN。
- 可用性: 可以使用 单专区 或 Multizone 配置创建集群。 多专区集群提供高可用性,Kubernetes 主节点部署在支持多专区的专区中,并且主节点的三个副本分布在不同专区中。
- Kubernetes 版本
- 缺省情况下,将使用缺省 Kubernetes 版本创建集群。 您可以指定其他 支持的版本。
- 工作程序池
- 集群工作程序池定义运行工作负载的工作程序节点的数量和类型。 您可以随时更改工作程序池详细信息。
-
- 类型:风味定义了在每个工作节点中设置并提供给容器的虚拟 CPU、内存和磁盘空间的大小。 可用的裸机和虚拟机类型随部署集群的专区而变化。
-
- 操作系统 和 体系结构: 有关按集群版本列出的可用操作系统和体系结构的列表,请参阅 可用版本。
-
- 每个专区的工作程序节点: 对于高可用性,建议每个专区至少有 3 个工作程序节点。
-
- 加密本地磁盘: 缺省情况下,工作程序节点具有 AES 256 位磁盘加密功能。 您可以选择在创建集群时关闭磁盘加密。
- 主节点服务端点
- 服务端点提供与主节点的通信。 您可以选择使用专用和/或公共和/或私有云服务端点来配置集群。 有关运行面向因特网的应用程序或使集群保持专用所需的设置的更多信息,请参阅规划集群网络设置。
- 入口私钥管理
- IBM Cloud Secrets Manager 集中管理集群中的 Ingress 子域证书和其他私钥。 您可以选择在集群创建过程中向集群注册 Secrets Manager 实例。 您还可以指定可用于控制对集群中私钥的访问权的私钥组。 在创建集群之后,可以配置或更改这两个选项。
- 加密
- 使用密钥管理服务 (KMS) 启用数据加密,以加密集群中的私钥和其他敏感信息。 您还可以稍后 启用 KMS。
- 集群详细信息
- 您可以定制要用于组织和标识 IBM Cloud 资源 (例如
team
或billing department
) 的唯一集群名称和任何 标记。 - 可观察性集成
- 您可以启用要包含在集群上的其他可观察性集成。 如果您具有该集成的现有平台实例,那么将自动启用某些集成。 在这种情况下,无法禁用集成。 如果要使用集成并且只有该集成的现有应用程序实例,那么缺省情况下会禁用该集成,并且必须手动将其启用。
-
- 日志:您可以使用 IBM Cloud Logs 管理操作系统日志、应用程序日志和平台日志。 如果您想稍后启用此集成,请参阅 IBM Cloud Logs.
-
- 监视: 监视服务集成允许对应用程序,服务和平台的性能和运行状况进行操作可视性。 如果禁用此集成并希望稍后启用,请参阅 监测群组健康状况。Security and Compliance Center 工作负载保护集成可查找软件漏洞并对其进行优先级排序,检测威胁并作出响应,以及管理从源代码到运行的配置、权限和合规性。 有关详细信息,请参阅工作负载保护 入门 页面。
- 指定 配置类型,以使用监控和工作量保护的新实例或现有实例。 如果要同时使用监控和工作量保护的现有实例,则必须连接每个集成的实例。 在这种情况下,请指定要使用的监控实例或工作负载保护实例;您不能同时指定两个实例,但只要这两个实例处于连接状态,就会同时使用。 您可以从 Monitoring 或 Workload Protection 实例的详细信息页面连接现有实例。
在 CLI 中创建经典群集
使用 IBM Cloud CLI 创建经典集群。
- 确保完成 准备帐户 的先决条件并决定集群设置。
- 安装 IBM Cloud CLI 工具。
-
登录 IBM Cloud CLI。 如果使用联合标识登录,请使用
ibmcloud login --sso
。ibmcloud login [--sso]
-
如果您有多个 IBM Cloud 账户,请选择要创建群集的账户。
-
要在非缺省资源组中创建集群,请将该资源组设定为目标。 只能在一个资源组中创建集群,在创建集群后,即无法更改其资源组。 您必须至少具有资源组的 查看者 角色,才能将其作为目标。
ibmcloud target -g <resource_group_name>
-
查看可以在其中创建集群的专区。 在以下命令的输出中,专区的 Location Type 为
dc
。 要使集群跨多个专区,必须在支持多专区的专区中创建集群。 支持多专区的专区在 Multizone Metro 列中具有大城市值。 如果要创建多专区集群,那么可以使用 IBM Cloud 控制台进行创建,或者在创建集群后,向集群添加更多专区。ibmcloud ks locations
选择您所在国家或地区以外的专区时,请记住,您可能需要法律授权才能将数据实际存储在国外。
-
查看该专区中可用的工作程序节点类型模板。 类型模板用于确定在每个工作程序节点中设置并可供应用程序使用的虚拟 CPU 量、内存量和磁盘空间量。 经典集群中的工作程序节点可以作为共享或专用基础架构上的虚拟机进行创建,也可以作为专用于您的裸机机器进行创建。 创建集群后,可以通过添加工作程序池来添加不同的类型模板。
在创建裸机机器之前,请确保要供应裸机机器。 裸机机器按月计费。 如果错误地订购了裸机机器,即使您立即取消该机器,也需要支付整个月的费用。
ibmcloud ks flavors --zone <zone>
-
检查要包含在集群中的专区中是否有现有 VLAN,如果有,请记下 VLAN 的标识。 如果您想在群集中使用的某个区域中没有公共或专用 VLAN,IBM Cloud Kubernetes Service 会在您创建群集时自动为您创建这些 VLAN。
ibmcloud ks vlan ls --zone <zone>
示例输出
ID Name Number Type Router 1519999 vlan 1355 private bcr02a.dal10 1519898 vlan 1357 private bcr02a.dal10 1518787 vlan 1252 public fcr02a.dal10 1518888 vlan 1254 public fcr02a.dal10
- 要创建可以在其中运行面向因特网的工作负载的集群,请检查以确定是否存在公用和专用 VLAN。 如果公用和专用 VLAN 已经存在,请记下匹配的路由器。 专用 VLAN 路由器始终以
bcr
(后端路由器)开头,而公用 VLAN 路由器始终以fcr
(前端路由器)开头。 创建集群并指定公用和专用 VLAN 时,在这些前缀之后的数字和字母组合必须匹配。 在输出示例中,任何专用 VLAN 都可以与任何公用 VLAN 一起使用,因为路由器全都包含02a.dal10
。 - 要创建用于仅在专用网络上扩展内部部署数据中心的集群,或者用于通过网关设备提供受限公共访问权的集群,请检查以确定是否存在专用 VLAN。 如果您有专用 VLAN,请记下该标识。
- 要创建可以在其中运行面向因特网的工作负载的集群,请检查以确定是否存在公用和专用 VLAN。 如果公用和专用 VLAN 已经存在,请记下匹配的路由器。 专用 VLAN 路由器始终以
-
创建标准集群。
- 创建可以在其中运行面向因特网的工作负载的集群:
ibmcloud ks cluster create classic --zone <zone> --flavor <flavor> --hardware <shared_or_dedicated> --public-vlan <public_VLAN_ID> --private-vlan <private_VLAN_ID> --workers <number> --name <cluster_name> --version <major.minor.patch> [--public-service-endpoint] [--private-service-endpoint] [--pod-subnet] [--service-subnet] [--disable-disk-encrypt]
- 创建仅具有专用网络连接的集群,例如用于扩展内部部署数据中心:
ibmcloud ks cluster create classic --zone <zone> --flavor <flavor> --hardware <shared_or_dedicated> --private-vlan <private_VLAN_ID> --private-only --workers <number> --name <cluster_name> --version <major.minor.patch> --public-service-endpoint [--pod-subnet] [--service-subnet] [--disable-disk-encrypt]
--zone <zone>
-
指定先前选择的要用于创建集群的 IBM Cloud 专区标识。
--flavor <flavor>
-
为先前选择的工作程序节点指定类型模板。
--hardware <shared_or_dedicated>
-
指定工作程序节点的硬件隔离级别。 使用
dedicated
只为您提供可用的物理资源,或使用shared
允许与其他 IBM 客户共享物理资源。 缺省值为 shared。 此值对于 VM 标准集群是可选的。 对于裸机类型模板,请指定dedicated
。 --public-vlan <public_vlan_id>
-
如果已经在 IBM Cloud 基础架构帐户中为该专区设置了公用 VLAN,请输入先前检索到的该公用 VLAN 的标识。 如果您的帐户中没有公用 VLAN,请不要指定此选项。IBM Cloud Kubernetes Service 会自动为您创建公用 VLAN。 专用 VLAN 路由器始终以
bcr
(后端路由器)开头,而公用 VLAN 路由器始终以fcr
(前端路由器)开头。 创建集群并指定公用和专用 VLAN 时,在这些前缀之后的数字和字母组合必须匹配。 --private-vlan <private_vlan_id>
-
如果已经在 IBM Cloud 基础架构帐户中为该专区设置了专用 VLAN,请输入先前检索到的该专用 VLAN 的标识。 如果您的帐户中没有专用 VLAN,请不要指定此选项。IBM Cloud Kubernetes Service 会自动为您创建专用 VLAN。 专用 VLAN 路由器始终以
bcr
(后端路由器)开头,而公用 VLAN 路由器始终以fcr
(前端路由器)开头。 创建集群并指定公用和专用 VLAN 时,在这些前缀之后的数字和字母组合必须匹配。 --private-only
-
创建仅使用专用 VLAN 的集群。 如果包含该选项,请不要包含
--public-vlan
选项。 --name <name>
-
指定集群的名称。 名称必须以字母开头,可包含字母、数字、句点 (.) 和连字符 (-),且必须少于或等于 35 个字符。 请使用在各区域中唯一的名称。 集群名称和部署集群的区域构成了 Ingress 子域的标准域名。 为了确保 Ingress 子域在区域内是唯一的,可能会截断 Ingress 域名中的集群名称并附加随机值。
--workers <number>
-
指定要包含在集群中的工作程序节点数。 缺省值为 1。
--version <major.minor.patch>
-
集群主节点的 Kubernetes 版本。 此值是可选的。 未指定版本时,会使用受支持的缺省 Kubernetes 版本来创建集群。 要查看可用版本,请运行
ibmcloud ks versions
。 --public-service-endpoint
-
启用公共云服务端点,以便通过公共网络访问 Kubernetes 主站,例如从 CLI 运行
kubectl
命令,并使 Kubernetes 主站和工作节点可以通过公共 VLAN 进行通信。 如果您想要仅专用 cluster.After 创建集群后,可以通过运行ibmcloud ks cluster get --cluster <cluster_name_or_ID>
来获取端点。 --private-service-endpoint
-
在 启用 VRF 的 和 启用服务端点的帐户 中: 启用私有云服务端点,以便 Kubernetes 主节点和工作程序节点可以通过专用 VLAN 进行通信。 此外,您还可以选择启用公共云服务端点,使用
--public-service-endpoint
选项通过互联网访问群集。 如果只启用私有云服务端点,则必须连接到私有 VLAN 才能与 Kubernetes 主站通信。 启用私有云服务端点后,以后无法将其禁用 it.After 创建集群后,可以通过运行ibmcloud ks cluster get --cluster <cluster_name_or_ID>
来获取端点。 --pod-subnet
-
缺省情况下,部署到工作程序节点的所有 pod 都会分配有 172.30.0.0/16 范围内的专用 IP 地址。 如果计划通过 IBM Cloud® Direct Link 或 VPN 服务将集群连接到内部网络,则可以指定一个自定义子网 CIDR,为 pod 提供私有 IP 地址,从而避免子网冲突。 选择子网大小时,请考虑计划创建的集群的大小以及未来可能添加的工作程序节点数。 子网的 CIDR 必须至少为
/23
,这样才能为集群中最多四个工作节点提供足够的 pod IP。 对于较大的集群,请使用/22
为 8 个工作程序节点提供足够的 pod IP 地址,使用/21
为 16 个工作程序节点提供足够的 pod IP 地址,以此类推。 请注意,pod 和服务子网不能重叠。 缺省情况下,服务子网在 172.21.0.0/16 范围内。 您选择的子网必须在下列其中一个范围内:172.17.0.0 - 172.17.255.255
172.21.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
198.18.0.0 - 198.19.255.255
--service-subnet
-
- 缺省情况下,部署到集群的所有服务都会分配有 172.21.0.0/16 范围内的专用 IP 地址。 如果计划通过 IBM Cloud Direct Link 或 VPN 服务将群集连接到内部网络,则可指定一个自定义子网 CIDR,为服务提供私有 IP 地址,从而避免子网冲突。
- 子网必须以 CIDR 格式指定,大小至少为
/24
,这允许集群中最多 255 个服务或更大的服务。 您选择的子网必须在下列其中一个范围内: -172.17.0.0 - 172.17.255.255
-172.21.0.0 - 172.31.255.255
-192.168.0.0 - 192.168.255.255
-198.18.0.0 - 198.19.255.255
-
请注意, pod 和服务子网不能重叠。 缺省情况下,pod 子网在 172.30.0.0/16 范围内。
--disable-disk-encrypt
-
缺省情况下,工作程序节点具有 AES 256 位磁盘加密功能。 如果要禁用加密,请包括此选项。
--sm-group GROUP
-
保存秘密的 Secrets Manager 实例的秘密组 ID。 要获取私钥组标识,请参阅 Secrets Manager CLI 参考。
--sm-instance INSTANCE
-
Secrets Manager 实例的 CRN。 要获取实例的 CRN,请运行
ibmcloud ks ingress instance ls --cluster CLUSTER
。
- 创建可以在其中运行面向因特网的工作负载的集群:
-
验证是否请求了创建集群。 对于虚拟机,可能需要几分钟时间,才能订购好工作程序节点机器并且在帐户中设置并供应集群。 裸机物理机器通过与 IBM Cloud 基础架构进行手动交互来供应,可能需要一个工作日以上的时间才能完成。
ibmcloud ks cluster ls
Kubernetes master 的配置完成后,群集的状态将更改为
normal
。 Kubernetes 主节点准备就绪后,将启动工作程序节点的供应。NAME ID State Created Workers Zone Version Resource Group Name Provider mycluster blrs3b1d0p0p2f7haq0g normal 20170201162433 3 dal10 1.32.5_1526 Default classic
您的群集是否不处于
normal
状态? 请查看调试集群指南以获取帮助。 例如,如果在受防火墙网关设备保护的帐户中供应集群,那么必须配置防火墙设置以允许出局流量流至相应的端口和 IP 地址。 -
检查工作程序节点的状态。
ibmcloud ks worker ls --cluster <cluster_name_or_ID>
当工作程序节点已准备就绪时,工作程序节点的状态会更改为 normal,而阶段状态更改为 Ready。 节点阶段状态为 Ready 时,可以访问集群。 请注意,即使集群已准备就绪,集群中由其他服务使用的某些部分(例如,Ingress 私钥或注册表映像拉取私钥)可能仍在进行中。 请注意,如果创建了仅使用专用 VLAN 的集群,那么不会将任何公共 IP 地址分配给工作程序节点。
ID Public IP Private IP Flavor State Status Zone Version kube-blrs3b1d0p0p2f7haq0g-mycluster-default-000001f7 169.xx.xxx.xxx 10.xxx.xx.xxx u3c.2x4.encrypted normal Ready dal10 1.32.5_1526
系统会为每个工作程序节点分配唯一的工作程序节点标识和域名,在创建集群后,不得手动更改该标识和域名。 如果更改标识或域名,那么 Kubernetes 主节点无法管理集群。
-
可选:如果您在 多区区域 中创建了群集,您可以 将默认工作者池分散到各区,以提高群集的可用性。
-
创建集群后,可以通过配置 CLI 会话开始使用集群。
您的集群已为您的工作负载做好准备! 您可能还希望 向集群添加标记,例如使用集群的团队或计费部门,以帮助管理 IBM Cloud 资源。
用于创建经典集群的示例命令
用于在共享虚拟机上创建经典集群的示例命令。
ibmcloud ks cluster create classic --name my_cluster --zone dal10 --flavor b3c.4x16 --hardware shared --workers 3
用于在裸机上创建经典集群的示例命令。
ibmcloud ks cluster create classic --name my_cluster --zone dal10 --flavor mb2c.4x32 --hardware dedicated --workers 3 --public-vlan <public_VLAN_ID> --private-vlan <private_VLAN_ID>
用于创建仅使用专用 VLAN 和私有云服务端点的经典集群的示例命令。
ibmcloud ks cluster create classic --name my_cluster --zone dal10 --flavor b3c.4x16 --hardware shared --workers 3 --private-vlan <private_VLAN_ID> --private-only --private-service-endpoint
对于经典多区群集,在 多区都会 中创建群集后,添加区。 用于将区域添加到经典集群的示例命令。
ibmcloud ks zone add classic --zone <zone> --cluster <cluster_name_or_ID> --worker-pool <pool_name> --private-vlan <private_VLAN_ID> --public-vlan <public_VLAN_ID>
使用 Terraform 创建单专区经典集群
IBM Cloud 上的 Terraform 支持对 IBM Cloud 平台基础架构和资源 (包括经典集群) 进行可预测且一致的供应。 要使用 Terraform 创建经典集群,请首先创建用于声明要创建的集群资源类型的 Terraform 配置文件。 然后,应用 Terraform 配置文件。 有关 Terraform 的更多信息,请参阅 关于 IBM Cloud 上的 Terraform。
开始之前:
- 安装 Terraform CLI 和 IBM Cloud 提供者插件。
- 确保您具有 IBM Cloud API 密钥。
-
创建 Terraform 提供程序文件。 将文件保存在 Terraform 目录中。 有关更多信息,请参阅 Terraform IBM Cloud Provider 文档。
Terraform 提供程序文件示例。
terraform { required_providers { ibm = { source = "IBM-Cloud/ibm" version = "1.53.0" } } } provider "ibm" { region = "us-south" ibmcloud_api_key = "<api-key>" }
-
为经典集群创建 Terraform 配置文件。 将文件保存在 Terraform 目录中。 下面的示例配置创建了一个经典群集,在一个区域内有三个工作节点。 有关更多信息和集群配置选项,请参阅 Terraform
ibm_container_cluster
文档。Terraform 配置文件示例。
resource "ibm_container_cluster" "testacc_cluster" { name = "test-classic" datacenter = "dal10" machine_type = "b3c.4x16" hardware = "shared" public_vlan_id = "<vlan_id>" private_vlan_id = "<vlan_id" subnet_id = ["<subnet_id>"] default_pool_size = 3 }
name
- 集群的名称。
datacenter
- 要创建群集的区域。 要查看可用区域,请运行
ibmcloud ks zones --provider classic
。 machine_type
- 工作程序节点类型模板。 类型模板确定可用于工作程序节点的内存,CPU 和磁盘空间量。 要获取可用工作程序节点类型模板的列表,请运行
ibmcloud ks flavors --zone <zone> --provider classic
,或者参阅 经典类型模板。 hardware
- 工作节点的硬件隔离级别。 使用
dedicated
只为您提供可用的物理资源,或使用shared
允许与其他 IBM 客户共享物理资源。 此选项仅适用于虚拟机工作程序节点类型模板。 public_vlan_id
和private_vlan_id
- 可选。 要用于工作程序节点的公用或专用 VLAN 的标识。 要查找可用的 VLAN 和子网,请运行
ibmcloud ks vlans --zone <zone>
。 subnet_id
- 可选。 要用于工作程序节点的现有子网的标识。 要查找现有子网,请运行
ibmcloud ks subnets --provider classic --zone <zone>
。 default_pool_size
- 要添加到缺省工作程序池的工作程序节点数。
-
在 CLI 中,浏览到 Terraform 目录。
cd <terraform_directory>
-
运行命令以初始化和规划 Terraform 操作。 查看计划输出以确保执行正确的操作。
terraform init
terraform plan
-
应用 Terraform 文件以创建集群。 然后,浏览到 IBM Cloud 控制台以检查集群是否正在供应。
terraform apply
经典集群的后续步骤
- 在没有网关的情况下 将网络工作负载隔离到经典集群中的边缘工作程序节点。
- 使用公用联网服务或专用联网服务来公开应用程序。 如果您有多个具有公开应用程序的公共集群,请考虑将其与 全局负载均衡器 连接以实现高可用性。
- 通过在 IBM Cloud 账户之外的专用网络中设置 IBM Cloud Direct Link 或 strongSwan IPSec VPN 服务。
- 创建 Calico 主机网络策略以在公用网络和专用网络上隔离集群。
- 如果使用网关设备(例如,Virtual Router Appliance (VRA)),请在公共防火墙中打开必需的端口和 IP 地址,以允许流至联网服务的入站流量。 如果您还在专用网络上有防火墙,请允许工作程序节点之间的通信,并且使集群通过专用网络访问基础架构资源。