在断开连接模式下运行的 Anthos 安装快速入门

在断开连接模式下运行的 Anthos 是 Anthos 的一个版本,可在经过网闸隔离的环境中与互联网完全隔离。您可以使用在断开连接模式下运行的 Anthos 在本地运行受到高度监管的工作负载,同时仍然受益于为云构建的基础架构的许多优势。

Anthos 不公开模式快速入门范围

本快速入门将引导您以负责裸机机器、网络、存储和操作系统等基础架构层的基础架构运维者身份完成在断开连接模式下运行的 Anthos 的安装过程。在本快速入门中,您将学习如何执行以下操作:

  • 使用最小安装方法安装并配置在断开连接模式下运行的 Anthos。
  • 部署管理员集群。
  • 创建用户集群并将应用部署到用户集群。

在断开连接模式下运行的 Anthos 有两种类型的集群:

  • 管理员集群用于创建和管理用户集群。
  • 用户集群则用于运行您的工作负载。

您还有一个管理员工作站,它包含安装和管理在断开连接模式下运行的 Anthos 部署所需的工具。

准备工作

确保您满足在断开连接模式下运行的 Anthos 的技术要求,并且有五台或更多机器可供使用。此快速入门需要事先具备 Kubernetes 和系统管理经验。

准备环境

获取在断开连接模式下运行的 Anthos 的访问权限

Google 必须向您授予访问在断开连接模式下运行的 Anthos 版本的权限。请向 Google 联系人提供每个测试人员的电子邮件地址,以便我们为他们授予下载代码库的权限。这些电子邮件地址必须是 Google 帐号。

在 Google 联系人确认您有权访问在断开连接模式下运行的 Anthos 版本之后,请运行以下命令,检查您是否有权下载在断开连接模式下运行的 Anthos 版本:

gsutil ls gs://anthos-private-mode-release/

如果您收到错误,请运行 gcloud auth list 命令,验证 gsutil 使用的帐号是否为您提供给 Google 联系人的同一 Google 帐号。

或者,您也可以通过访问最新版本存储桶,来验证您是否拥有适当的权限。您必须使用您之前提供的 Google 帐号登录。

如果您访问在断开连接模式下运行的 Anthos 版本时遇到问题,请与您的 Google 联系人联系以获取帮助。

下载在断开连接模式下运行的 Anthos

在本部分中,您将下载在断开连接模式下运行的 Anthos 版本,它包含在多个文件中,每个文件的大小都在 GB 级别。下载可能需要较长时间,具体取决于您的互联网连接。

下载在断开连接模式下运行的 Anthos

在管理员工作站上运行以下命令:

# Login with the account granted access to Anthos running in disconnected mode
gcloud auth login

# Download the script which helps download all the latest components
export VERSION=1.11.3-gke.0

# Please use official 'INSTALLER_DIGEST' value from https://cloud.google.com/anthos/private-mode/docs/1.11/installing/infrastructure#download
export INSTALLER_DIGEST=1b8b1a8a596c0cbadd8aa2c0fc1bb2217d2f22d3d1f27f19b76e3f158e394e54
export INSTALLER=get-anthos-private-mode-$VERSION.sh
gsutil cp gs://anthos-private-mode-release/$VERSION/$INSTALLER .
if [[ -n "$INSTALLER_DIGEST" ]]; then echo "$INSTALLER_DIGEST $INSTALLER" | sha256sum -c; fi && chmod +x $INSTALLER && ./$INSTALLER

# If you are working on a workstation shared with other users,
# we recommend that you revoke your credentials after downloading the release.
gcloud auth revoke YOUR_EMAIL_ADDRESS

安装其余依赖项

在断开连接模式下运行的 Anthos 下载完成后,请运行以下命令:

cd anthos-baremetal-private-mode

# Add actl command line tool and tools directory to the PATH
export PATH=$PWD/bin:$PATH

# Download Harbor offline installer
curl -SL \
  https://github.com/goharbor/harbor/releases/download/v2.2.0/harbor-offline-installer-v2.2.0.tgz \
  --output "local-registry/harbor-offline-installer.tgz"

# Install docker-compose
curl -SL \
  https://github.com/docker/compose/releases/download/1.28.5/docker-compose-Linux-x86_64 \
  --output "local-registry/docker-compose"

部署演示版应用之前,您无需再次进行互联网连接。

设置本地容器注册表

在断开连接模式下运行的 Anthos 的工作方式是将 Anthos 容器映像存储在本地容器注册表中。

导出以下环境变量:

export REGISTRY_HOST=REGISTRY_HOST
export REGISTRY_PASSWORD=REGISTRY_PASSWORD

# By default, a library public project is created,
# and you can also create other private projects via the container registry portal.
export PRIVATE_REGISTRY=${REGISTRY_HOST}/library

请替换以下内容:

  • REGISTRY_HOST 是注册表 IP 地址。如果要在管理员工作站上安装和使用在断开连接模式下运行的 Anthos 容器注册表,请在此处使用管理员工作站 IP 地址。

  • REGISTRY_PASSWORD 是您为注册表密码设置的值。

设置在断开连接模式下运行的 Anthos 的容器注册表

在本部分中,您将在管理员工作站上设置私有容器注册表。在管理员工作站上运行以下所有命令。

  1. 如果您没有自己的私有容器注册表,请安装在断开连接模式下运行的 Anthos 容器注册表。

    cd ~/anthos-baremetal-private-mode
    
    # Move it to a path under $PATH
    chmod a+x local-registry/docker-compose
    sudo cp local-registry/docker-compose /usr/bin
    
    # Install local registry
    ./local-registry/install.sh
    
  2. 登录注册表以验证您是否具有访问权限。如果收到错误,您可能需要等待几秒钟。

    docker login ${REGISTRY_HOST} -u admin -p ${REGISTRY_PASSWORD}
    

服务启动后,您可以通过 https://REGISTRY_HOST/ 来访问容器注册表。登录凭据是用户名 admin 和密码 REGISTRY_PASSWORD

将映像上传到容器注册表

在本部分中,您要将在断开连接模式下运行的 Anthos 容器映像上传到容器注册表。

准备在断开连接模式下运行的 Anthos 容器映像,并将其上传到您的容器注册表。如果出现提示,请选择 Use that credential 选项,或输入新凭据。

actl images push --private-registry=${PRIVATE_REGISTRY} \
    --images ~/anthos-baremetal-private-mode

注意:如果您在工作站上使用 HTTP 代理,则可能需要取消设置以下环境变量才能使 actl images push 命令正常运行:

unset http_proxy
unset https_proxy
unset HTTP_PROXY
unset HTTPS_PROXY

安装管理中心

在本部分中,您将在裸机机器上安装 Anthos 管理员集群,然后在管理员集群的基础之上安装 Anthos Management Center。

准备管理员集群配置

使用与您的环境匹配的设置更新 ./actl-workspace/admin/admin.yaml 文件。

vi ./actl-workspace/admin/admin.yaml

填写以下字段:

  • sshPrivateKeyPath 是在安装过程中用于访问属于集群的其他节点的密钥。这是您分发给前提条件中的节点的公钥的私钥部分。

  • registryMirrors 标识存储 Docker 映像的所有注册表镜像的位置。

    • registryMirrors.endpoint 是镜像的端点。端点的格式为 URL_SCHEME://REGISTRY_HOST/v2/IMAGE_PREFIX 。例如,如果您在工作站上创建注册表,请将端点设置为 https://REGISTRY_HOST/v2/library。请注意,REGISTRY_HOSTIMAGE_PREFIX 之间的 /v2/ 是必需的。

    • registryMirrors.pullCredentialConfigPath 是凭据的路径。通常,这与 /home/USER/.docker/config.json 类似。

    • registryMirrors.caCertPath 是注册表将用于加密流量的证书授权机构的位置。在安装过程中,此证书会分发给节点,以允许它们从注册表中拉取映像。路径通常为 /etc/docker/certs.d/REGISTRY_HOST/ca.crt

  • controlPlane 规范定义了哪些节点属于控制层面。

    controlPlane:
      nodePoolSpec:
        nodes:
        # Control plane node pools. Typically, this is either a single machine
        # or 3 machines if using a high availability deployment.
        - address: 10.200.0.3
    
  • loadBalancer 规范定义了使用的负载平衡器类型。默认配置会将负载均衡器安装到正在运行的集群上。在这种情况下,您至少需要设置 controlPlaneVIP 以标识用于公开 Kubernetes API 服务器的虚拟 IP (VIP) 地址池,并设置 addressPools 以分配 VIP 按需提供。例如:

    loadBalancer:
      mode: bundled
      # There are two load balancer VIPs: one for the control plane and one for the
      # Layer 7 Ingress service.
      # The VIPs must be in the same subnet as the load balancer nodes.
      vips:
        # ControlPlaneVIP specifies the VIP to connect to the Kubernetes API server.
        # This address must not be in the address pools below.
        controlPlaneVIP: 10.200.0.50
      # AddressPools is a list of non-overlapping IP ranges for the data plane load
      # balancer.
      # All addresses must be in the same subnet as the load balancer nodes.
      # Address pool configuration is only valid for 'bundled' LB mode in non-admin
      # clusters.
      addressPools:
      - name: pool1
        addresses:
        # Each address must be either in the CIDR form (1.2.3.0/24)
        # or range form (1.2.3.1-1.2.3.5).
        - 10.200.0.51-10.200.0.59
    
  • 集群规范的最后一部分指定 loginUser。此登录必须能够访问下面指定的 SSH 密钥,并且是在前提条件中为其分配密钥的用户。

    nodeAccess:
      loginUser: LOGIN_USERNAME
    

    LOGIN_USERNAME 替换为用于登录用户集群的用户名。

  • nodePool 规范标识将在管理员集群上托管 Management Center Console、Prometheus、Grafana 和其他服务的节点。这些节点是管理员集群的工作器节点。例如:

    apiVersion: baremetal.cluster.gke.io/v1
    kind: NodePool
    metadata:
      name: node-pool-1
      namespace: cluster-admin
    spec:
      # Cannot be changed, must be admin
      clusterName: admin
      nodes:
      - address: 10.200.0.6
    

创建管理员集群

运行以下命令以创建管理员集群。此过程大约需要 30 分钟。

cd ~/anthos-baremetal-private-mode
actl clusters baremetal create admin

创建管理员集群后,请检查您是否有权访问该集群。

export ADMIN_KUBECONFIG=$(pwd)/bmctl-workspace/admin/admin-kubeconfig
KUBECONFIG=${ADMIN_KUBECONFIG} kubectl get nodes

安装管理中心

  1. 使用默认配置将管理中心安装到管理员集群上。

    cd ~/anthos-baremetal-private-mode
    actl platform management-center create
    
  2. 在浏览器中访问 Anthos Management Center。

    actl platform management-center describe --kubeconfig=${ADMIN_KUBECONFIG}
    

系统会返回 Anthos Management Center 网址。

注册资源

注册库存机器

如需创建用户集群,Anthos 将需要一个空闲的机器池。在本部分中,您需要将库存机器注册到 Anthos 管理员集群,以使这些机器可用。

kubectl apply -f <path/to/example-machine.yaml> --kubeconfig=${ADMIN_KUBECONFIG}

例如:

apiVersion: baremetal.cluster.gke.io/v1alpha1
kind: InventoryMachine
metadata:
  name: IP_ADDRESS
  labels:
    "KEY": "VALUE"
spec:
  address: IP_ADDRESS

请替换以下内容:

  • IP_ADDRESS:机器的 IP 地址,例如 10.200.0.10
  • KEY:VALUE:键值对,例如 "rack": "r1020",用于指示机架位置。

labels 是附加到资源的自由格式键值对。这些标签稍后可用于管理中心以过滤机器。例如,您可以使用标签来标识机架位置或特殊硬件配置。

创建用户集群

在管理中心的集群页面中,点击创建以创建新的 Anthos 用户集群。创建集群后,它会自动注册到管理中心,并立即显示在集群信息中心内。

创建集群

安装和准备工作最长可能需要 15 分钟。在等待期间,您可以使用以下命令检查用户集群的状态:

kubectl get Cluster -n USER_CLUSTER_NAME --kubeconfig=${ADMIN_KUBECONFIG}

USER_CLUSTER_NAME 替换为您创建的集群的名称。

状态显示准备就绪后,即表示已成功创建集群并将其注册到管理员集群。

访问用户集群

创建用户集群后,您便可以通过 Management Center 下载 kubeconfig。

部署演示应用

您可以试用 Online Boutique 示例应用,探索在断开连接模式下运行的 Anthos。

下载映像

本部分中的步骤需要互联网连接。

  1. 下载示例代码库:

    git clone https://github.com/GoogleCloudPlatform/microservices-demo.git/ online-boutique
    
  2. 下载映像:

    IMAGES=$(cat online-boutique/release/kubernetes-manifests.yaml | grep image | sed "s/ *image: //")
    actl images save --output online-boutique-images ${IMAGES}
    

部署示例

  1. 将映像推送到私有注册表:

    actl images push --images online-boutique-images --private-registry=PRIVATE_REGISTRY
    

    PRIVATE_REGISTRY 替换为您的私有注册表的名称。

  2. 为应用创建命名空间。

    kubectl create namespace demo --kubeconfig=USER_CLUSTER_KUBECONFIG
    

    USER_CLUSTER_KUBECONFIG 替换为用户集群 Kubeconfig 文件的路径。

  3. 将示例部署到集群:

    kubectl apply -n demo -f online-boutique/release/ --kubeconfig=USER_CLUSTER_KUBECONFIG
    

资源不足的 Online Boutique

清除数据

运行以下命令来删除您的用户集群:

kubectl -n cluster-USER_CLUSTER_NAME \
  delete Cluster USER_CLUSTER_NAME --kubeconfig=ADMIN_KUBECONFIG

后续步骤