43.3. 创建启动配置和自动扩展组
在部署集群自动扩展前,您必须创建一个 Amazon Web Services(AWS)启动配置和自动缩放组来引用 primed 镜像。您必须配置启动配置,以便在新节点启动时自动加入现有集群。
先决条件
- 在 AWS 中安装 OpenShift Container Platform 集群。
- 创建 primed 镜像。
-
如果在集群中部署了 EFK 堆栈,请将节点标签设置为
logging-infra-fluentd=true
。
流程
通过从 master 节点生成 bootstrap.kubeconfig 文件来创建 bootstrap.kubeconfig 文件:
$ ssh master "sudo oc serviceaccounts create-kubeconfig -n openshift-infra node-bootstrapper" > ~/bootstrap.kubeconfig
从 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
- 将启动配置模板上传到 AWS S3 存储桶。
使用 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
注意如果在对模板进行编码前,如果您的模板少于 16 KB,您可以使用 AWS CLI 将
--template-url
替换为--user-data
来提供它。使用 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