43.4. 클러스터에 자동 스케일러 구성 요소 배포
시작 구성 및 자동 확장 그룹을 생성한 후 자동 확장기 구성 요소를 클러스터에 배포할 수 있습니다.
사전 요구 사항
- AWS에 OpenShift Container Platform 클러스터를 설치합니다.
- 기본 이미지를 만듭니다.
- 기본 이미지를 참조하는 시작 구성 및 자동 확장 그룹을 만듭니다.
절차
자동 스케일러를 배포하려면 다음을 수행합니다.
자동 스케일러를 실행하도록 클러스터를 업데이트합니다.
클러스터를 생성하는 데 사용한 인벤토리 파일에 다음 매개변수를 추가합니다. 기본적으로 /etc/ansible/hosts:
openshift_master_bootstrap_auto_approve=true
자동 확장기 구성 요소를 가져오려면 플레이북 디렉터리로 변경하고 플레이북을 다시 실행합니다.
$ cd /usr/share/ansible/openshift-ansible $ ansible-playbook -i </path/to/inventory/file> \ playbooks/openshift-master/enable_bootstrap.yml
bootstrap-autoapprover
Pod가 실행 중인지 확인합니다.$ oc get pods --all-namespaces | grep bootstrap-autoapprover NAMESPACE NAME READY STATUS RESTARTS AGE openshift-infra bootstrap-autoapprover-0 1/1 Running 0
자동 스케일러의 네임스페이스를 생성합니다.
$ oc apply -f - <<EOF apiVersion: v1 kind: Namespace metadata: name: cluster-autoscaler annotations: openshift.io/node-selector: "" EOF
자동 스케일러의 서비스 계정을 생성합니다.
$ oc apply -f - <<EOF apiVersion: v1 kind: ServiceAccount metadata: labels: k8s-addon: cluster-autoscaler.addons.k8s.io k8s-app: cluster-autoscaler name: cluster-autoscaler namespace: cluster-autoscaler EOF
서비스 계정에 필요한 권한을 부여하는 클러스터 역할을 생성합니다.
$ oc apply -n cluster-autoscaler -f - <<EOF apiVersion: v1 kind: ClusterRole metadata: name: cluster-autoscaler rules: - apiGroups: 1 - "" resources: - pods/eviction verbs: - create attributeRestrictions: null - apiGroups: - "" resources: - persistentvolumeclaims - persistentvolumes - pods - replicationcontrollers - services verbs: - get - list - watch attributeRestrictions: null - apiGroups: - "" resources: - events verbs: - get - list - watch - patch - create attributeRestrictions: null - apiGroups: - "" resources: - nodes verbs: - get - list - watch - patch - update attributeRestrictions: null - apiGroups: - extensions - apps resources: - daemonsets - replicasets - statefulsets verbs: - get - list - watch attributeRestrictions: null - apiGroups: - policy resources: - poddisruptionbudgets verbs: - get - list - watch attributeRestrictions: null EOF
- 1
cluster-autoscaler
오브젝트가 있는 경우 동사create
와 함께pods/eviction
규칙이 있는지 확인합니다.
배포 자동 스케일러에 대한 역할을 만듭니다.
$ oc apply -n cluster-autoscaler -f - <<EOF apiVersion: v1 kind: Role metadata: name: cluster-autoscaler rules: - apiGroups: - "" resources: - configmaps resourceNames: - cluster-autoscaler - cluster-autoscaler-status verbs: - create - get - patch - update attributeRestrictions: null - apiGroups: - "" resources: - configmaps verbs: - create attributeRestrictions: null - apiGroups: - "" resources: - events verbs: - create attributeRestrictions: null EOF
자동 스케일러의 AWS 인증 정보를 저장할 a creds 파일을 생성합니다.
$ cat <<EOF > creds [default] aws_access_key_id = your-aws-access-key-id aws_secret_access_key = your-aws-secret-access-key EOF
자동 확장기에서는 이러한 자격 증명을 사용하여 새 인스턴스를 시작합니다.
AWS 인증 정보가 포함된 보안을 생성합니다.
$ oc create secret -n cluster-autoscaler generic autoscaler-credentials --from-file=creds
자동 확장기에서는 이 시크릿을 사용하여 AWS 내에서 인스턴스를 시작합니다.
생성한 cluster-
autoscaler 서비스 계정에 cluster-
reader 역할을 생성하고 부여합니다.$ oc adm policy add-cluster-role-to-user cluster-autoscaler system:serviceaccount:cluster-autoscaler:cluster-autoscaler -n cluster-autoscaler $ oc adm policy add-role-to-user cluster-autoscaler system:serviceaccount:cluster-autoscaler:cluster-autoscaler --role-namespace cluster-autoscaler -n cluster-autoscaler $ oc adm policy add-cluster-role-to-user cluster-reader system:serviceaccount:cluster-autoscaler:cluster-autoscaler -n cluster-autoscaler
클러스터 자동 스케일러를 배포합니다.
$ oc apply -n cluster-autoscaler -f - <<EOF apiVersion: apps/v1 kind: Deployment metadata: labels: app: cluster-autoscaler name: cluster-autoscaler namespace: cluster-autoscaler spec: replicas: 1 selector: matchLabels: app: cluster-autoscaler role: infra template: metadata: labels: app: cluster-autoscaler role: infra spec: containers: - args: - /bin/cluster-autoscaler - --alsologtostderr - --v=4 - --skip-nodes-with-local-storage=False - --leader-elect-resource-lock=configmaps - --namespace=cluster-autoscaler - --cloud-provider=aws - --nodes=0:6:mycluster-ASG env: - name: AWS_REGION value: us-east-1 - name: AWS_SHARED_CREDENTIALS_FILE value: /var/run/secrets/aws-creds/creds image: registry.redhat.io/openshift3/ose-cluster-autoscaler:v3.11 name: autoscaler volumeMounts: - mountPath: /var/run/secrets/aws-creds name: aws-creds readOnly: true dnsPolicy: ClusterFirst nodeSelector: node-role.kubernetes.io/infra: "true" serviceAccountName: cluster-autoscaler terminationGracePeriodSeconds: 30 volumes: - name: aws-creds secret: defaultMode: 420 secretName: autoscaler-credentials EOF