Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

43.3. 起動設定および自動スケーリンググループの作成

クラスターの自動スケーラーをデプロイする前に、Primed イメージを参照する Amazon Web Services (AWS) 起動設定および自動スケーリンググループを作成する必要があります。新規ノードが起動時に既存クラスターに自動的に参加するように起動設定を設定する必要があります。

前提条件

  • AWS に OpenShift Container Platform クラスターをインストールします。
  • Primed イメージを作成します。
  • EFK スタックをクラスターにデプロイしている場合は、ノードラベルを logging-infra-fluentd=true に設定します。

手順

  1. bootstrap.kubeconfig ファイルをマスターノードから生成し、これを作成します。

    $ ssh master "sudo oc serviceaccounts create-kubeconfig -n openshift-infra node-bootstrapper" > ~/bootstrap.kubeconfig
  2. user-data.txt cloud-init ファイルを bootstrap.kubeconfig ファイルから作成します。

    $ cat <<EOF > user-data.txt
    #cloud-config
    write_files:
    - path: /root/openshift_bootstrap/openshift_settings.yaml
      owner: 'root:root'
      permissions: '0640'
      content: |
        openshift_node_config_name: node-config-compute
    - path: /etc/origin/node/bootstrap.kubeconfig
      owner: 'root:root'
      permissions: '0640'
      encoding: b64
      content: |
        $(base64 ~/bootstrap.kubeconfig | sed '2,$s/^/    /')
    
    runcmd:
    - [ ansible-playbook, /root/openshift_bootstrap/bootstrap.yml]
    - [ systemctl, restart, systemd-hostnamed]
    - [ systemctl, restart, NetworkManager]
    - [ systemctl, enable, atomic-openshift-node]
    - [ systemctl, start, atomic-openshift-node]
    EOF
  3. 起動設定テンプレートを AWS S3 バケットにアップロードします。
  4. AWS CLI を使用して起動設定を作成します。

    $ aws autoscaling create-launch-configuration \
        --launch-configuration-name mycluster-LC \ 1
        --region us-east-1 \ 2
        --image-id ami-987654321 \ 3
        --instance-type m4.large \ 4
        --security-groups sg-12345678 \ 5
        --template-url https://s3-.amazonaws.com/.../yourtemplate.json \  6
        --key-name production-key \ 7
    1
    起動設定名を指定します。
    2
    イメージを起動するリージョンを指定します。
    3
    作成した Primed イメージ AMI を指定します。
    4
    起動するインスタンスのタイプを指定します。
    5
    起動したイメージに割り当てるセキュリティーグループを指定します。
    6
    アップロードした起動設定テンプレートを指定します。
    7
    SSH キーペアの名前を指定します。
    注記

    テンプレートをエンコードする前に 16 KB 未満の場合は、AWS CLI を使用し、--template-url--user-data を置き換えてテンプレートを指定できます。

  5. AWS CLI を使用して自動スケーリンググループを作成します。

    $ aws autoscaling create-auto-scaling-group \
          --auto-scaling-group-name mycluster-ASG \ 1
          --launch-configuration-name mycluster-LC \ 2
          --min-size 1 \ 3
          --max-size 6 \ 4
          --vpc-zone-identifier subnet-12345678 \ 5
          --tags ResourceId=mycluster-ASG,ResourceType=auto-scaling-group,Key=Name,Value=mycluster-ASG-node,PropagateAtLaunch=true ResourceId=mycluster-ASG,ResourceType=auto-scaling-group,Key=kubernetes.io/cluster/mycluster,Value=true,PropagateAtLaunch=true ResourceId=mycluster-ASG,ResourceType=auto-scaling-group,Key=k8s.io/cluster-autoscaler/node-template/label/node-role.kubernetes.io/compute,Value=true,PropagateAtLaunch=true 6
    1
    自動スケーラーデプロイメントのデプロイ時に使用する自動スケーリンググループの名前を指定します。
    2
    作成した起動設定の名前を指定します。
    3
    自動スケーラーが維持するノードの最小数を指定します。1 つ以上のノードが必要です。
    4
    スケールグループが拡張できるノードの最大数を指定します。
    5
    クラスターが使用するのと同じサブネットの VPC サブネット ID を指定します。
    6
    自動スケーリンググループタグが起動時のノードに伝播されるように文字列を指定します。