日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

9. ユーザクラスタを展開します

寄稿者 このページの PDF をダウンロード

Anthos を使用すると、環境を拡張して複数のユーザクラスタを統合し、ワークロードをチーム間で分離できます。1 つの管理クラスタで最大 20 個のユーザクラスタをサポートでき、各ユーザクラスタで最大 250 個のノードと 7500 個のポッドをサポートできます。

導入用にユーザクラスタを設定するには、次の手順を実行します。

  1. Anthos-admin ワークステーションが導入されると、「 user-cluster.yaml 」という名前のファイルが作成されます。このファイルを使用して、ワークロードを実行するためのユーザクラスタをさらにいくつか導入できます。最初に、導入するクラスタごとに新しい名前を付けてこのデフォルトファイルをコピーします。

    ubuntu@gke-admin-ws-200915-151421:~ $ cp config.yaml anthos-cluster01-config.yaml
  2. 配備されている環境に合わせて 'Anthos-cluster01-config.yaml ファイルを編集します

    1. 以前に使用した「 admin-config 」と同様の方法で、ほとんどの変数はすでに入力されているか、導入に必要な情報について admin-cluster を参照しています。最初のセクションでは、導入する Anthos のバージョンと vCenter インスタンスの情報を確認します。

      apiVersion: v1
      kind: UserCluster
      # (Required) A unique name for this cluster
      name: "anthos-cluster01"
      # (Required) GKE on-prem version (example: 1.3.0-gke.16)
      gkeOnPremVersion: 1.6.0-gke.7
      # # (Optional) vCenter configuration (default: inherit from the admin cluster)
      # vCenter:
      #   resourcePool: ""
      #   datastore: ""
      #   # Provide the path to vCenter CA certificate pub key for SSL verification
      #   caCertPath: ""
      #   # The credentials to connect to vCenter
      #   credentials:
      #     username: ""
      #     password: ""
    2. 次のネットワークセクションに入力し、静的モードと DHCP モードのどちらを使用するかを選択してください。静的アドレスを使用する場合は、管理者クラスタの設定と同様のアドレスを指定する IP ブロックファイルを作成する必要があります。

      注記 hostconfig セクションの項目は、展開で静的 IP が使用されている場合は常にグローバルです。これには、クラスタの静的 IP と、後で設定する Seesaw ロードバランサに使用される IP の両方が含まれます。
      # (Required) Network configuration; vCenter section is optional and inherits from
      # the admin cluster if not specified
      network:
      # (Required) Hostconfig for static addresseses on Seesaw LB's
        hostConfig:
          dnsServers:
          - "10.61.184.251"
          - "10.61.184.252"
          ntpServers:
          - "0.pool.ntp.org"
          - "1.pool.ntp.org"
          - "2.pool.ntp.org"
          searchDomainsForDNS:
          - "cie.netapp.com"
        ipMode:
          # (Required) Define what IP mode to use ("dhcp" or "static")
          type: dhcp
          # # (Required when using "static" mode) The absolute or relative path to the yaml file
          # # to use for static IP allocation
          # ipBlockFilePath: ""
        # (Required) The Kubernetes service CIDR range for the cluster. Must not overlap
        # with the pod CIDR range
        serviceCIDR: 10.96.0.0/12
        # (Required) The Kubernetes pod CIDR range for the cluster. Must not overlap with
        # the service CIDR range
        podCIDR: 192.168.0.0/16
        vCenter:
          # vSphere network name
          networkName: VM_Network
    3. 次に、ロードバランサセクションに記入します。これは導入するロードバランサのタイプによって異なります。

      シーソーの例:

      # (Required) Load balancer configuration
      loadBalancer:
        # (Required) The VIPs to use for load balancing
        vips:
          # Used to connect to the Kubernetes API
          controlPlaneVIP: "10.63.172.156"
          # Shared by all services for ingress traffic
          ingressVIP: "10.63.172.157"
        # (Required) Which load balancer to use "F5BigIP" "Seesaw" or "ManualLB". Uncomment
        # the corresponding field below to provide the detailed spec
        kind: Seesaw
        # # (Required when using "ManualLB" kind) Specify pre-defined nodeports
        # manualLB:
        #   # NodePort for ingress service's http (only needed for user cluster)
        #   ingressHTTPNodePort: 30243
        #   # NodePort for ingress service's https (only needed for user cluster)
        #   ingressHTTPSNodePort: 30879
        #   # NodePort for control plane service
        #   controlPlaneNodePort: 30562
        #   # NodePort for addon service (only needed for admin cluster)
        #   addonsNodePort: 0
        # # (Required when using "F5BigIP" kind) Specify the already-existing partition and
        # # credentials
      # f5BigIP:
        #  address:
        #  credentials:
        #    username:
        #    password:
        #  partition:
        #   # # (Optional) Specify a pool name if using SNAT
        #   # snatPoolName: ""
        # (Required when using "Seesaw" kind) Specify the Seesaw configs
        seesaw:
          # (Required) The absolute or relative path to the yaml file to use for IP allocation
          # for LB VMs. Must contain one or two IPs.
          ipBlockFilePath: "anthos-cluster01-seesaw-block.yaml"
          # (Required) The Virtual Router IDentifier of VRRP for the Seesaw group. Must
          # be between 1-255 and unique in a VLAN.
          vrid: 101
          # (Required) The IP announced by the master of Seesaw group
          masterIP: "10.63.172.153"
          # (Required) The number CPUs per machine
          cpus: 1
          # (Required) Memory size in MB per machine
          memoryMB: 2048
          # (Optional) Network that the LB interface of Seesaw runs in (default: cluster
          # network)
          vCenter:
          # vSphere network name
            networkName: VM_Network
          # (Optional) Run two LB VMs to achieve high availability (default: false)
          enableHA: false
    4. Seesaw ロードバランサの場合は、ロードバランサの静的 IP 情報を提供する追加の外部ファイルを作成する必要があります。この設定セクションで参照されている 'Anthos-cluster01-seesaw-block.yaml ファイルを作成します

      blocks:
        - netmask: "255.255.255.0"
          gateway: "10.63.172.1"
          ips:
          - ip: "10.63.172.154"
            hostname: "anthos-cluster01-seesaw-vm"

      F5 BigIP の例:

    loadBalancer:
      # (Required) The VIPs to use for load balancing
      vips:
        # Used to connect to the Kubernetes API
        controlPlaneVIP: "10.63.172.158"
        # Shared by all services for ingress traffic
        ingressVIP: "10.63.172.159"
      # (Required) Which load balancer to use "F5BigIP" "Seesaw" or "ManualLB". Uncomment
      # the corresponding field below to provide the detailed spec
      kind: F5BigIP
      # # (Required when using "ManualLB" kind) Specify pre-defined nodeports
      # manualLB:
      #   # NodePort for ingress service's http (only needed for user cluster)
      #   ingressHTTPNodePort: 30243
      #   # NodePort for ingress service's https (only needed for user cluster)
      #   ingressHTTPSNodePort: 30879
      #   # NodePort for control plane service
      #   controlPlaneNodePort: 30562
      #   # NodePort for addon service (only needed for admin cluster)
      #   addonsNodePort: 0
      # # (Required when using "F5BigIP" kind) Specify the already-existing partition and
      # # credentials
      f5BigIP:
        address: "172.21.224.21"
        credentials:
          username: "admin"
          password: "admin-password"
        partition: "Anthos-Cluster-01"
      #   # # (Optional) Specify a pool name if using SNAT
      #   # snatPoolName: ""
      # (Required when using "Seesaw" kind) Specify the Seesaw configs
      # seesaw:
        # (Required) The absolute or relative path to the yaml file to use for IP allocation
        # for LB VMs. Must contain one or two IPs.
        #  ipBlockFilePath: ""
        # (Required) The Virtual Router IDentifier of VRRP for the Seesaw group. Must
        # be between 1-255 and unique in a VLAN.
        #  vrid: 0
        # (Required) The IP announced by the master of Seesaw group
        #  masterIP: ""
        # (Required) The number CPUs per machine
        #  cpus: 4
        # (Required) Memory size in MB per machine
        #   memoryMB: 8192
        # (Optional) Network that the LB interface of Seesaw runs in (default: cluster
        # network)
        #   vCenter:
          # vSphere network name
          #     networkName: VM_Network
        # (Optional) Run two LB VMs to achieve high availability (default: false)
        #   enableHA: false
    1. 最後のセクションでは、あとで動的に拡張できるノードプールの作成など、クラスタが導入しているノードのリソースについて説明します。このセクションでは、導入後にクラスタを GKE に登録するためのサービスアカウントキーも提供します。

      # (Optional) User cluster master nodes must have either 1 or 3 replicas (default:
      # 4 CPUs; 16384 MB memory; 1 replica)
      masterNode:
        cpus: 4
        memoryMB: 8192
        # How many machines of this type to deploy
        replicas: 1
      # (Required) List of node pools. The total un-tainted replicas across all node pools
      # must be greater than or equal to 3
      nodePools:
      - name: anthos-cluster01
        # # Labels to apply to Kubernetes Node objects
        # labels: {}
        # # Taints to apply to Kubernetes Node objects
        # taints:
        # - key: ""
        #   value: ""
        #   effect: ""
        cpus: 4
        memoryMB: 8192
        # How many machines of this type to deploy
        replicas: 3
      # Spread nodes across at least three physical hosts (requires at least three hosts)
      antiAffinityGroups:
        # Set to false to disable DRS rule creation
        enabled: false
      # # (Optional): Configure additional authentication
      # authentication:
      #   # (Optional) Configure OIDC authentication
      #   oidc:
      #     issuerURL: ""
      #     kubectlRedirectURL: ""
      #     clientID: ""
      #     clientSecret: ""
      #     username: ""
      #     usernamePrefix: ""
      #     group: ""
      #     groupPrefix: ""
      #     scopes: ""
      #     extraParams: ""
      #     # Set value to string "true" or "false"
      #     deployCloudConsoleProxy: ""
      #     # # The absolute or relative path to the CA file (optional)
      #     # caPath: ""
      #   # (Optional) Provide an additional serving certificate for the API server
      #   sni:
      #     certPath: ""
      #     keyPath: ""
      #   # (Optional) Configure LDAP authentication (preview feature)
      #   ldap:
      #     name: ""
      #     host: ""
      #     # Only support "insecure" for now (optional)
      #     connectionType: insecure
      #     # # The absolute or relative path to the CA file (optional)
      #     # caPath: ""
      #     user:
      #       baseDN: ""
      #       userAttribute: ""
      #       memberAttribute: ""
      # (Optional) Specify which GCP project to connect your logs and metrics to
      stackdriver:
        projectID: "anthos-dev"
        # A GCP region where you would like to store logs and metrics for this cluster.
        clusterLocation: "us-east1"
        enableVPC: false
        # The absolute or relative path to the key file for a GCP service account used to
        # send logs and metrics from the cluster
        serviceAccountKeyPath: "/home/ubuntu/logging-monitoring-key.json "
      # (Optional) Specify which GCP project to connect your GKE clusters to
      gkeConnect:
        projectID: "anthos-dev"
        # The absolute or relative path to the key file for a GCP service account used to
        # register the cluster
        registerServiceAccountKeyPath: "/home/ubuntu/connect-register-key.json"
        # The absolute or relative path to the key file for a GCP service account used by
        # the GKE connect agent
        agentServiceAccountKeyPath: "/home/ubuntu/component-access-key.json"
      # (Optional) Specify Cloud Run configuration
      cloudRun:
        enabled: false
      # # (Optional/Alpha) Configure the GKE usage metering feature
      # usageMetering:
      #   bigQueryProjectID: ""
      #   # The ID of the BigQuery Dataset in which the usage metering data will be stored
      #   bigQueryDatasetID: ""
      #   # The absolute or relative path to the key file for a GCP service account used by
      #   # gke-usage-metering to report to BigQuery
      #   bigQueryServiceAccountKeyPath: ""
      #   # Whether or not to enable consumption-based metering
      #   enableConsumptionMetering: false
      # # (Optional/Alpha) Configure kubernetes apiserver audit logging
      # cloudAuditLogging:
      #   projectid: ""
      #   # A GCP region where you would like to store audit logs for this cluster.
      #   clusterlocation: ""
      #   # The absolute or relative path to the key file for a GCP service account used to
      #   # send audit logs from the cluster
      #   serviceaccountkeypath: ""
  3. 構成ファイルの編集が完了したら、ファイルの構文とスペースが適切かどうかを確認することを推奨します。作成した設定ファイルを確認できます。このコマンドは、 admin-cluster で作成された「 kubeconfig 」ファイルを参照します。

    ubuntu@gke-admin-200915-151421:~$ gkectl check-config --kubeconfig kubeconfig --config anthos-cluster01-config.yaml
  4. シーソーロードバランサを使用している場合は、ユーザクラスタを導入する前にロードバランサを作成する必要があります。

    ubuntu@gke-admin-200915-151421:~$ gkectl create loadbalancer -–kubeconfig kubeconfig –-config anthos-cluster-01-config.yaml
  5. ユーザクラスタを作成管理クラスタでも同様に、前の手順でチェックをすでに実行しているため、追加の検証を省略することでプロセスの高速化を実現できます。

    ubuntu@gke-admin-200915-151421:~$ gkectl create cluster –-config anthos-cluster-01-config.yaml –-skip-validation-all
  6. クラスタを導入すると、ローカルディレクトリに kubeconfig ファイルが作成されます。このファイルを使用して、 kubectl を使用してクラスタのステータスを確認したり、 gkectl を使用して診断を実行したりできます。

    ubuntu@gke-admin-ws-200915-151421:~$ kubectl get nodes --kubeconfig anthos-cluster01-kubeconfig
    NAME                    STATUS   ROLES    AGE   VERSION
    anthos-cluster01-7b5995cc45-ftrdw   Ready    <none>   5m   v1.18.6-gke.6600
    anthos-cluster01-7b5995cc45-z7q9b   Ready    <none>   5m   v1.18.6-gke.6600
    anthos-cluster01-7b5995cc45-zw6sv   Ready    <none>   6m   v1.18.6-gke.6600
    ubuntu@gke-admin-ws-200915-151421:~/ $ gkectl diagnose cluster --kubeconfig kubeconfig --cluster-name anthos-cluster01
    Diagnosing user cluster "anthos-cluster01"...
    
    - Validation Category: User Cluster VCenter
    Checking Credentials...SUCCESS
    Checking VSphere CSI Driver...SUCCESS
    Checking Version...SUCCESS
    Checking Datacenter...SUCCESS
    Checking Datastore...SUCCESS
    Checking Resource pool...SUCCESS
    Checking Folder...SUCCESS
    Checking Network...SUCCESS
    Checking Datastore...SUCCESS
    
    - Validation Category: User Cluster
    Checking onpremusercluster and onpremnodepool...SUCCESS
    Checking cluster object...SUCCESS
    Checking machine deployment...SUCCESS
    Checking machineset...SUCCESS
    Checking machine objects...SUCCESS
    Checking control place pods...SUCCESS
    Checking gke-connect pods...SUCCESS
    Checking config-management-system pods...Warning: No pod is running in namespace "config-management-system"...SUCCESS
    Checking kube-system pods...SUCCESS
    Checking gke-system pods...SUCCESS
    Checking storage...SUCCESS
    Checking resource...System pods on UserNode cpu resource request report: total 3059m nodeCount 3 min 637m max 1224m avg 1019m tracked amount in bundle 4000m
    System pods on UserNode memory resource request report: total 6464Mi nodeCount 3 min 1670Mi max 2945Mi avg 2259331754 tracked amount in bundle 8192Mi
    SUCCESS
    Cluster is healthy.