14.10. AWS용 설치 파일 생성


AWS(Amazon Web Services)에 OpenShift Container Platform을 설치하고 AWS 로컬 영역을 사용하려면 설치 프로그램이 클러스터를 배포하는 데 필요한 파일을 생성하고 클러스터가 사용할 시스템만 생성하도록 파일을 수정해야 합니다. install-config.yaml 파일 및 Kubernetes 매니페스트를 생성하고 사용자 지정합니다.

14.10.1. 클러스터 설치를 위한 최소 리소스 요구 사항

각 클러스터 시스템이 다음과 같은 최소 요구사항을 충족해야 합니다.

표 14.1. 최소 리소스 요구사항
머신운영 체제vCPU [1]가상 RAM스토리지초당 입력/출력(IOPS)[2]

부트스트랩

RHCOS

4

16GB

100GB

300

컨트롤 플레인

RHCOS

4

16GB

100GB

300

Compute

RHCOS, RHEL 8.6 이상 [3]

2

8GB

100GB

300

  1. SMT(동시 멀티스레딩) 또는 하이퍼 스레딩이 활성화되지 않은 경우 하나의 vCPU는 하나의 물리적 코어와 동일합니다. 활성화하면 다음과 같은 공식을 사용하여 해당 비율을 계산합니다. (코어 당 스레드 수 × 코어 수) × 소켓 수 = vCPU 수
  2. OpenShift Container Platform 및 Kubernetes는 디스크 성능에 민감하며 특히 10ms p99 fsync 기간이 필요한 컨트롤 플레인 노드의 etcd에 더 빠른 스토리지가 권장됩니다. 많은 클라우드 플랫폼에서 스토리지 크기와 IOPS를 함께 확장되므로 충분한 성능을 얻으려면 스토리지 볼륨을 과도하게 할당해야 할 수 있습니다.
  3. 사용자가 프로비저닝한 모든 설치와 마찬가지로 클러스터에서 RHEL 컴퓨팅 머신을 사용하기로 선택한 경우 시스템 업데이트 수행, 패치 적용 및 기타 필요한 모든 작업 실행을 포함한 모든 운영 체제의 라이프 사이클 관리 및 유지 관리에 대한 책임이 있습니다. RHEL 7 컴퓨팅 머신 사용은 더 이상 사용되지 않으며 OpenShift Container Platform 4.10 이상에서 제거되었습니다.

플랫폼의 인스턴스 유형이 클러스터 머신의 최소 요구 사항을 충족하는 경우 OpenShift Container Platform에서 사용할 수 있습니다.

추가 리소스

14.10.2. AWS에서 테스트된 인스턴스 유형

다음 AWS(Amazon Web Services) 인스턴스 유형은 AWS Local Zones에서 사용하기 위해 OpenShift Container Platform에서 테스트되었습니다.

참고

AWS 인스턴스의 다음 차트에 포함된 머신 유형을 사용합니다. 차트에 나열되지 않은 인스턴스 유형을 사용하는 경우 사용하는 인스턴스 크기가 "클러스터 설치에 대한 최소 리소스 요구 사항"에 나열된 최소 리소스 요구 사항과 일치하는지 확인합니다.

예 14.3. AWS 로컬 영역의 64비트 x86 아키텍처를 기반으로 하는 머신 유형

  • c5.*
  • c5d.*
  • m6i.*
  • m5.*
  • r5.*
  • t3.*

14.10.3. 설치 구성 파일 만들기

설치 프로그램이 클러스터를 배포하는 데 필요한 설치 구성 파일을 생성하고 사용자 지정합니다.

사전 요구 사항

  • OpenShift Container Platform 설치 프로그램과 클러스터의 풀 시크릿을 받으셨습니다.
  • Red Hat에서 게시한 Red Hat Enterprise Linux CoreOS (RHCOS) AMI와 함께 리전에 클러스터를 배포하고 있는지 확인하셨습니다. AWS GovCloud 리전과 같이 사용자 지정 AMI가 필요한 리전에 배포하는 경우 install-config.yaml 파일을 수동으로 생성해야 합니다.

프로세스

  1. install-config.yaml 파일을 생성합니다.

    1. 설치 프로그램이 포함된 디렉터리로 변경하고 다음 명령을 실행합니다.

      $ ./openshift-install create install-config --dir <installation_directory> 1
      1
      <installation_directory>는 설치 프로그램이 생성하는 파일을 저장할 디렉터리 이름을 지정합니다.
      중요

      비어 있는 디렉터리를 지정합니다. 부트스트랩 X.509 인증서와 같은 일부 설치 자산은 단기간에 만료되므로 설치 디렉터리를 재사용해서는 안 됩니다. 다른 클러스터 설치의 개별 파일을 재사용하려면 해당 파일을 사용자 디렉터리에 복사하면 됩니다. 그러나 설치 자산의 파일 이름은 릴리스간에 변경될 수 있습니다. 따라서 이전 OpenShift Container Platform 버전에서 설치 파일을 복사할 때는 주의하십시오.

    2. 화면에 나타나는 지시에 따라 클라우드에 대한 구성 세부 사항을 입력합니다.

      1. 선택사항: 클러스터 시스템에 액세스하는 데 사용할 SSH 키를 선택합니다.

        참고

        설치 디버깅 또는 재해 복구를 수행하려는 프로덕션 OpenShift Container Platform 클러스터의 경우 ssh-agent 프로세스가 사용하는 SSH 키를 지정합니다.

      2. 대상 플랫폼으로 aws를 선택합니다.
      3. 컴퓨터에 AWS 프로필이 저장되어 있지 않은 경우 설치 프로그램을 실행하도록 구성한 사용자의 AWS 액세스 키 ID와 시크릿 액세스 키를 입력합니다.

        참고

        AWS 액세스 키 ID와 시크릿 액세스 키는 설치 호스트에 있는 현재 사용자의 홈 디렉터리에서 ~/.aws/credentials에 저장됩니다. 내보낸 프로필의 인증 정보가 파일에 없으면 설치 프로그램에서 인증 정보에 대한 메시지를 표시합니다. 설치 프로그램에 사용자가 제공하는 인증 정보는 파일에 저장됩니다.

      4. 클러스터를 배포할 AWS 리전을 선택합니다. 지정한 리전은 AWS 계정에 대해 선택한 로컬 영역이 포함된 리전과 동일해야 합니다.
      5. 클러스터에 대해 구성한 Route53 서비스의 기본 도메인을 선택합니다.
      6. 클러스터를 설명할 수 있는 이름을 입력합니다.
      7. Red Hat OpenShift Cluster Manager에서 풀 시크릿 을 붙여넣습니다.
  2. install-config.yaml 파일을 편집하여 VPC에서 사용하는 가용성 영역의 서브넷을 제공합니다.

    platform:
      aws:
        subnets: 1
        - publicSubnetId-1
        - publicSubnetId-2
        - publicSubnetId-3
        - privateSubnetId-1
        - privateSubnetId-2
        - privateSubnetId-3
    1
    subnets 섹션을 추가하고 VPC에 대한 CloudFormation 템플릿 출력에서 PrivateSubnetIdsPublicSubnetIds 값을 지정합니다. 여기에 로컬 영역 서브넷을 포함하지 마십시오.
  3. 선택사항: install-config.yaml 파일을 백업합니다.

    중요

    install-config.yaml 파일은 설치 과정에서 사용됩니다. 이 파일을 재사용하려면 지금 백업해야 합니다.

추가 리소스

14.10.4. Kubernetes 매니페스트 파일 생성

일부 클러스터 정의 파일을 수정하고 클러스터 시스템을 수동으로 시작해야 하므로 클러스터가 시스템을 구성하는 데 필요한 Kubernetes 매니페스트 파일을 생성해야 합니다.

사전 요구 사항

  • OpenShift Container Platform 설치 프로그램을 가져오셨습니다.
  • install-config.yaml 설치 구성 파일을 생성하셨습니다.
  • jq CLI를 설치하셨습니다.

프로세스

  1. OpenShift Container Platform 설치 프로그램이 포함된 디렉터리로 변경하고 다음 명령을 실행하여 클러스터에 대한 Kubernetes 매니페스트를 생성합니다.

    $ ./openshift-install create manifests --dir <installation_directory> 1
    1
    <installation_directory>는 사용자가 만든 install-config.yaml 파일이 포함된 설치 디렉터리를 지정합니다.
  2. 네트워크 플러그인에 따라 기본 최대 전송 단위(MTU)를 설정합니다.

    중요

    일반적으로 로컬 영역의 Amazon EC2 인스턴스와 리전의 Amazon EC2 인스턴스 간 최대 전송 단위(MTU)는 1300입니다. AWS 문서에서 로컬 영역이 작동하는 방법을 참조하십시오. 오버헤드를 고려하려면 클러스터 네트워크 MTU가 EC2 MTU보다 항상 작아야 합니다. 특정 오버헤드는 네트워크 플러그인에 의해 결정됩니다. 예를 들면 다음과 같습니다.

    • OVN-Kubernetes: 100 bytes
    • OpenShift SDN: 50바이트

    네트워크 플러그인은 IPsec과 같은 추가 기능을 제공할 수 있으며 MTU도 감소해야 합니다. 자세한 내용은 문서를 참조하십시오.

    1. OVN-Kubernetes 네트워크 플러그인을 사용하는 경우 다음 명령을 입력합니다.

      $ cat <<EOF > <installation_directory>/manifests/cluster-network-03-config.yml
      apiVersion: operator.openshift.io/v1
      kind: Network
      metadata:
        name: cluster
      spec:
        defaultNetwork:
          ovnKubernetesConfig:
            mtu: 1200
      EOF
    2. OpenShift SDN 네트워크 플러그인을 사용하는 경우 다음 명령을 입력합니다.

      $ cat <<EOF > <installation_directory>/manifests/cluster-network-03-config.yml
      apiVersion: operator.openshift.io/v1
      kind: Network
      metadata:
        name: cluster
      spec:
        defaultNetwork:
          openshiftSDNConfig:
            mtu: 1250
      EOF
  3. 로컬 영역에서 작업자 노드에 대한 머신 세트 매니페스트를 생성합니다.

    1. 다음 명령을 실행하여 AWS 계정을 선택한 로컬 영역의 이름이 포함된 로컬 변수를 내보냅니다.

      $ export LZ_ZONE_NAME="<local_zone_name>" 1
      1
      < local_zone_name > 의 경우 AWS 계정을 선택한 로컬 영역(예: us-east-1-nyc-1a )을 지정합니다.
    2. 다음 명령을 실행하여 배포할 위치의 인스턴스 유형을 검토합니다.

      $ aws ec2 describe-instance-type-offerings \
          --location-type availability-zone \
          --filters Name=location,Values=${LZ_ZONE_NAME}
          --region <region> 1
      1
      & lt;region > 의 경우 배포할 리전의 이름을 지정합니다(예: us-east-1 ).
    3. 다음 명령을 실행하여 로컬 영역 서브넷에 배포할 작업자 시스템의 인스턴스 유형을 정의하는 변수를 내보냅니다.

      $ export INSTANCE_TYPE="<instance_type>" 1
      1
      & lt;instance_type& gt;을 c5d.2xlarge 와 같은 테스트된 인스턴스 유형으로 설정합니다.
    4. 다음 명령을 실행하여 AMI ID를 로컬 변수로 저장합니다.

      $ export AMI_ID=$(grep ami
        <installation_directory>/openshift/99_openshift-cluster-api_worker-machineset-0.yaml \
        | tail -n1 | awk '{print$2}')
    5. 다음 명령을 실행하여 서브넷 ID를 로컬 변수로 저장합니다.

      $ export SUBNET_ID=$(aws cloudformation describe-stacks --stack-name "<subnet_stack_name>" \ 1
        | jq -r '.Stacks[0].Outputs[0].OutputValue')
      1
      & lt;subnet_stack_name >에 대해 생성한 서브넷 스택의 이름을 지정합니다.
    6. 다음 명령을 실행하여 클러스터 ID를 로컬 변수로 저장합니다.

      $ export CLUSTER_ID="$(awk '/infrastructureName: / {print $2}' 	<installation_directory>/manifests/cluster-infrastructure-02-config.yml)"
    7. 다음 명령을 실행하여 VPC에서 사용하는 로컬 영역에 대한 작업자 매니페스트 파일을 생성합니다.

      $ cat <<EOF > <installation_directory>/openshift/99_openshift-cluster-api_worker-machineset-nyc1.yaml
      apiVersion: machine.openshift.io/v1beta1
      kind: MachineSet
      metadata:
        labels:
          machine.openshift.io/cluster-api-cluster: ${CLUSTER_ID}
        name: ${CLUSTER_ID}-edge-${LZ_ZONE_NAME}
        namespace: openshift-machine-api
      spec:
        replicas: 1
        selector:
          matchLabels:
            machine.openshift.io/cluster-api-cluster: ${CLUSTER_ID}
            machine.openshift.io/cluster-api-machineset: ${CLUSTER_ID}-edge-${LZ_ZONE_NAME}
        template:
          metadata:
            labels:
              machine.openshift.io/cluster-api-cluster: ${CLUSTER_ID}
              machine.openshift.io/cluster-api-machine-role: edge
              machine.openshift.io/cluster-api-machine-type: edge
              machine.openshift.io/cluster-api-machineset: ${CLUSTER_ID}-edge-${LZ_ZONE_NAME}
          spec:
            metadata:
              labels:
                machine.openshift.com/zone-type: local-zone
                machine.openshift.com/zone-group: ${ZONE_GROUP_NAME}
                node-role.kubernetes.io/edge: ""
            taints:
              - key: node-role.kubernetes.io/edge
                effect: NoSchedule
            providerSpec:
              value:
                ami:
                  id: ${AMI_ID}
                apiVersion: machine.openshift.io/v1beta1
                blockDevices:
                - ebs:
                    volumeSize: 120
                    volumeType: gp2
                credentialsSecret:
                  name: aws-cloud-credentials
                deviceIndex: 0
                iamInstanceProfile:
                  id: ${CLUSTER_ID}-worker-profile
                instanceType: ${INSTANCE_TYPE}
                kind: AWSMachineProviderConfig
                placement:
                  availabilityZone: ${LZ_ZONE_NAME}
                  region: ${CLUSTER_REGION}
                securityGroups:
                - filters:
                  - name: tag:Name
                    values:
                    - ${CLUSTER_ID}-worker-sg
                subnet:
                  id: ${SUBNET_ID}
                publicIp: true
                tags:
                - name: kubernetes.io/cluster/${CLUSTER_ID}
                  value: owned
                userDataSecret:
                  name: worker-user-data
      EOF
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.