Menu Close

Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

43.3. 创建启动配置和自动扩展组

在部署集群自动扩展前,您必须创建一个 Amazon Web Services(AWS)启动配置和引用主要镜像的自动扩展组。您必须配置启动配置,以便新节点在启动时自动加入现有群集。

先决条件

  • 在 AWS 中安装 OpenShift Container Platform 集群。
  • 创建一个主要镜像。
  • 如果您在集群中部署了 EFK 堆栈,请将节点标签设置为 logging-infra-fluentd=true

流程

  1. 通过从 master 节点生成文件来创建 bootstrap.kubeconfig 文件:

    $ ssh master "sudo oc serviceaccounts create-kubeconfig -n openshift-infra node-bootstrapper" > ~/bootstrap.kubeconfig
  2. bootstrap .kubeconfig 文件创建 user-data.txt cloud-init 文件:

    $ 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
    指定您创建的 primaryd 镜像 AMI。
    4
    指定要启动的实例类型。
    5
    指定要附加到启动的镜像的安全组。
    6
    指定您上传的启动配置模板。
    7
    指定 SSH 密钥对名称。
    注意

    如果您的模板编码前少于 16 KB,您可以通过将 --template-url 替换为 --user-data 来使用 AWS CLI 提供它。

  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
    指定您创建的 Launch Configuration 的名称。
    3
    指定自动扩展器维护的最小节点数量。至少需要一个节点。
    4
    指定扩展组可扩展到的最大节点数。
    5
    指定 VPC subnet-id,它与集群使用的子网相同。
    6
    指定此字符串,以确保自动扩展组标签在启动时传播到节点。