创建用户集群 (kubeception)

本文档介绍了如何创建使用 kubeception 的用户集群。

什么是 kubeception?

术语 kubeception 用于传达 Kubernetes 集群用于创建和管理其他 Kubernetes 集群的想法。在 GKE on VMware 环境中,kubeception 指的是用户集群的控制平面在管理员集群中的一个或多个节点上运行的情况。

我们不建议使用 kubeception。我们建议您改为使用 Controlplane V2。使用 Controlplane V2 时,用户集群的控制平面节点位于用户集群本身中。

规划您的 IP 地址

按照规划您的 IP 地址 (kubeception) 中的说明操作。

填写集群配置文件

按照创建用户集群 (Controlplane V2) 中的说明操作。

填写用户集群配置文件时:

已填写的配置文件的示例

以下是已填写的 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 ...

问题排查

请参阅排查集群创建和升级问题

后续步骤