Google Cloud 上的 Kubernetes (Google Cloud) (GKE)#

Google Kubernetes Engine (GKE) 是设置 Kubernetes 集群最简单、最常见的方式。您可能可以获得 免费积分 来试用它(但请注意,免费帐户 存在限制)。无论哪种方式,您都需要将您的信用卡或其他付款方式连接到您的 Google Cloud 帐户。

  1. 访问 console.cloud.google.com 并登录。

    注意

    考虑 设置 Google Cloud 帐户的云预算,以确保您不会意外花费超过您的意愿。

  2. 访问并启用 Kubernetes Engine API

  3. 选择一个终端。

    您可以使用基于 Web 的终端,也可以在您自己的计算机的终端上安装并运行所需的命令行界面。我们建议您从使用基于 Web 的终端开始。选择以下一组说明。

    1. 使用基于 Web 的终端

      console.cloud.google.com 启动 Google Cloud Shell,方法是单击下面显示的按钮。您现在可以控制一台预装了各种工具的虚拟机。如果您在用户文件夹中保存了一些内容,它们将在您稍后返回时仍然可用。有关 Google Cloud Shell 的更多文档,请访问 此处

      ../../_images/start_interactive_cli.png
    2. 使用您自己的计算机的终端

      1. 安装页面 上下载并安装 gcloud 命令行工具。它将帮助您创建和与 Kubernetes 集群通信。

      2. 安装 kubectl(读作 kube control),它是一个用于控制 Kubernetes 集群的通用工具。从您的终端输入

        gcloud components install kubectl
        
  4. 创建托管的 Kubernetes 集群和默认节点池。

    请求 Google Cloud 创建一个托管的 Kubernetes 集群和一个默认的 节点池 来获取节点。节点代表硬件,而节点池将跟踪您希望使用多少特定类型的硬件。

    gcloud container clusters create \
      --machine-type n1-standard-2 \
      --num-nodes 2 \
      --zone <compute zone from the list linked below> \
      --cluster-version latest \
      <CLUSTERNAME>
    
    • <CLUSTERNAME> 替换为一个名称,该名称可用于将来引用此集群。

    • --machine-type 指定此默认节点池中每个节点的 CPU 和 RAM 量。您可以从 各种类型 中进行选择。

    • --num-nodes 指定要启动的节点数量。您可以在以后通过云控制台或使用 gcloud 命令行工具更改此设置。

    • --zone 指定创建集群的数据中心区域。您可以从 此列表 中选择一个距离您的用户不太远的区域。

    • GCP 中的区域是一个地理区域,至少包含三个区域,每个区域代表一个包含服务器等的数据中心。

      • 区域集群在区域内的多个区域(默认情况下为三个)中创建 Pod,将 Kubernetes 资源分布到区域内的多个区域。这与默认集群不同,默认集群的所有资源都在单个区域内(如上所示)。

      • 区域集群具有高可用性 (HA) Kubernetes API 服务器,这使使用它们的 JupyterHub 在 Kubernetes 本身升级期间不会出现停机。

      • 它们还将控制平面正常运行时间提高到 99.95%。

      • 为了避免在仍然拥有 HA Kubernetes 的情况下将节点数量增加三倍,可以使用 --node-locations 标志指定要使用的单个区域。

  5. 要测试您的集群是否已初始化,请运行

    kubectl get node
    

    响应应列出两个正在运行的节点(或您在上面使用 --num-nodes 设置的节点数量)。

  6. 授予您的帐户执行所有必要的管理操作的权限。

    kubectl create clusterrolebinding cluster-admin-binding \
      --clusterrole=cluster-admin \
      --user=<GOOGLE-EMAIL-ACCOUNT>
    

    <GOOGLE-EMAIL-ACCOUNT> 替换为用于注册 Google Cloud 的 Google 帐户的准确电子邮件地址。

    您是否正确输入了电子邮件地址?如果没有,您可以运行 kubectl delete clusterrolebinding cluster-admin-binding 并重新执行。

  7. [可选] 为用户创建节点池

    这是一个可选步骤,适用于希望将用户 Pod 与“核心”Pod(例如 Hub 本身和其他 Pod)分开的用户。有关使用专用用户节点池的详细信息,请参阅 优化

    此节点池中的节点仅供用户使用。节点池启用了自动扩展,并具有较低和较高的扩展限制。这意味着节点数量会根据已安排的用户数量自动调整。

    n1-standard-2 机器类型具有 2 个 CPU 和 7.5 GB 的 RAM,每个 CPU 大约会由系统 Pod 请求 0.2 个 CPU。对于 CPU 核心总数限制为 8 个的免费帐户来说,这是一个合适的选择。

    请注意,节点池是受污染的。只有配置了此污染容忍度的用户 Pod 才能在节点池的节点上进行调度。这样做是为了确保自动扩展器能够在用户 Pod 停止时缩减规模。

    gcloud beta container node-pools create user-pool \
      --machine-type n1-standard-2 \
      --num-nodes 0 \
      --enable-autoscaling \
      --min-nodes 0 \
      --max-nodes 3 \
      --node-labels hub.jupyter.org/node-purpose=user \
      --node-taints hub.jupyter.org_dedicated=user:NoSchedule \
      --zone us-central1-b \
      --cluster <CLUSTERNAME>
    

    注意

    考虑添加 --preemptible 标志以大幅降低成本。您可以 在此处比较价格 <https://cloud.google.com/compute/docs/machine-types>。有关更多信息,请参阅 抢占式节点文档 <https://cloud.google.com/compute/docs/instances/preemptible>

恭喜。现在您已启动 Kubernetes 集群,是时候开始 设置 helm 了。