本文档介绍了如何创建使用 kubeception 的用户集群。
什么是 kubeception?
术语 kubeception 用于传达 Kubernetes 集群用于创建和管理其他 Kubernetes 集群的想法。在 GKE on VMware 环境中,kubeception 指的是用户集群的控制平面在管理员集群中的一个或多个节点上运行的情况。
我们不建议使用 kubeception。我们建议您改为使用 Controlplane V2。使用 Controlplane V2 时,用户集群的控制平面节点位于用户集群本身中。
规划您的 IP 地址
按照规划您的 IP 地址 (kubeception) 中的说明操作。
填写集群配置文件
按照创建用户集群 (Controlplane V2) 中的说明操作。
填写用户集群配置文件时:
将
enableControlplaneV2
设置为false
。确定要使用的负载均衡类型。以下是各个选项:
MetalLB 捆绑式负载均衡。将
loadBalancer.kind
设置为"MetalLB"
。此外,填写loadBalancer.metalLB.addressPools
部分,并针对至少一个节点池将enableLoadBalancer
设置为true
。如需了解详情,请参阅使用 MetalLB 进行捆绑式负载均衡。Seesaw 捆绑式负载均衡。将
loadBalancer.kind
设置为"Seesaw"
,然后填写loadBalancer.seesaw
部分。如需了解详情,请参阅使用 Seesaw 进行捆绑式负载均衡。使用 F5 BIG-IP 的集成式负载均衡。将
loadBalancer.kind
设置为"F5BigIP"
,然后填写f5BigIP
部分。如需了解详情,请参阅使用 F5 BIG-IP 进行负载均衡。手动负载均衡。将
loadBalancer.kind
设置为"ManualLB"
,然后填写manualLB
部分。如需了解详情,请参阅手动负载均衡。
如需详细了解负载均衡选项,请参阅负载均衡概览。
决定是否要为用户集群启用 Dataplane V2,并相应地设置 enableDataplaneV2。
如果您在配置文件中添加
stackdriver
和cloudAuditLogging
部分,则gkeConnect.projectID
中的 ID 必须与stackdriver.projectID
和cloudAuditLogging.projectID
中设置的 ID 相同。如果项目 ID 不同,则集群创建会失败。如果您在配置文件中添加
gkeOnPremAPI
、cloudAuditLogging
和stackdriver
部分,则必须在gkeOnPremAPI.location
、cloudAuditLogging.clusterLocation
和stackdriver.location
中设置相同的 Google Cloud 区域。如果区域不相同,集群创建将失败。
已填写的配置文件的示例
以下是已填写的 IP 地址块文件和已填写的用户集群配置文件的示例。该配置支持部分(但不是全部)可用功能。
user-ipblock.yaml
blocks: - netmask: 255.255.252.0 gateway: 172.16.23.254 ips: - ip: 172.16.20.21 hostname: user-host1 - ip: 172.16.20.22 hostname: user-host2 - ip: 172.16.20.23 hostname: user-host3 - ip: 172.16.20.24 hostname: user-host4
user-cluster.yaml
apiVersion: v1 kind: UserCluster name: "my-user-cluster" gkeOnPremVersion: 1.15.0-gke.581 enableControlplaneV2: false network: hostConfig: dnsServers: - "203.0.113.1" - "198.51.100.1" ntpServers: - "216.239.35.4" ipMode: type: static ipBlockFilePath: "user-ipblock.yaml" serviceCIDR: 10.96.0.0/20 podCIDR: 192.168.0.0/16 loadBalancer: vips: controlPlaneVIP: "172.16.20.32" ingressVIP: "172.16.21.30" kind: "MetalLB" metalLB: addressPools: - name: "my-address-pool" addresses: - "172.16.21.30 - 172.16.21.39" enableDataplaneV2: true masterNode: cpus: 4 memoryMB: 8192 replicas: 1 nodePools: - name: "my-node-pool" cpus: 4 memoryMB: 8192 replicas: 3 osImageType: "ubuntu_containerd" enableLoadBalancer: true antiAffinityGroups: enabled: true gkeConnect: projectID: "my-project-123" registerServiceAccountKeyPath: "connect-register-sa-2203040617.json" stackdriver: projectID: "my-project-123" clusterLocation: "us-central1" enableVPC: false serviceAccountKeyPath: "log-mon-sa-2203040617.json" autoRepair: enabled: true
验证配置文件
填写用户集群配置文件后,请运行 gkectl check-config
以验证文件有效:
gkectl check-config --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
替换以下内容:
ADMIN_CLUSTER_KUBECONFIG 是管理员集群的 kubeconfig 文件的路径
USER_CLUSTER_CONFIG:用户集群配置文件的路径
如果该命令返回任何失败消息,请修复问题并再次验证文件。
如果您想跳过更耗时的验证,请传递 --fast
标志。如需跳过各项验证,请使用 --skip-validation-xxx
标志。如需详细了解 check-config
命令,请参阅运行预检检查。
(可选)为用户集群创建 Seesaw 负载均衡器
如果您已选择使用捆绑式 Seesaw 负载均衡器,请执行本部分中的步骤。否则,请跳过此部分。
为 Seesaw 负载均衡器创建并配置虚拟机:
gkectl create loadbalancer --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
(可选)将操作系统映像导入 vSphere,并将容器映像推送到私有注册表
如果存在以下任一情况,请运行 gkectl prepare
:
您的用户集群所在的 vSphere 数据中心与管理员集群不同。
您的用户集群具有的 vCenter Server 与管理员集群不同。
您的用户集群使用的私有注册表与管理员集群使用的私有容器注册表不同。
gkectl prepare --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --bundle-path BUNDLE \ --user-cluster-config USER_CLUSTER_CONFIG
替换以下内容:
ADMIN_CLUSTER_KUBECONFIG:管理员集群 kubeconfig 文件的路径
BUNDLE:软件包文件的路径。此文件位于
/var/lib/gke/bundles/
中的管理员工作站上。例如:/var/lib/gke/bundles/gke-onprem-vsphere-1.14.0-gke.421-full.tgz
USER_CLUSTER_CONFIG:用户集群配置文件的路径
创建用户集群
运行以下命令以创建用户集群:
gkectl create cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
找到用户集群 kubeconfig 文件的位置
gkectl create cluster
命令会在当前目录中创建一个名为 USER_CLUSTER_NAME-kubeconfig
的 kubeconfig 文件。您稍后需要此 kubeconfig 文件才能与用户集群进行互动。
kubeconfig 文件包含您的用户集群的名称。如需查看集群名称,您可以运行以下命令:
kubectl config get-clusters --kubeconfig USER_CLUSTER_KUBECONFIG
输出会显示集群的名称。例如:
NAME my-user-cluster
如果愿意,您可以更改 kubeconfig 文件的名称和位置。
验证用户集群是否正在运行
运行以下命令以验证用户集群是否正在运行:
kubectl get nodes --kubeconfig USER_CLUSTER_KUBECONFIG
将 USER_CLUSTER_KUBECONFIG 替换为用户集群 kubeconfig 文件的路径。
输出会显示用户集群节点。例如:
my-user-cluster-node-pool-69-d46d77885-7b7tx Ready ... my-user-cluster-node-pool-69-d46d77885-lsvzk Ready ... my-user-cluster-node-pool-69-d46d77885-sswjk Ready ...
问题排查
请参阅排查集群创建和升级问题。