7.2.5. AWS에서 사용자 지정 /var 파티션이 있는 새 RHCOS 작업자 노드 추가
OpenShift Container Platform은 부트스트랩 중에 처리되는 머신 구성을 사용하여 설치 중에 장치 분할을 지원합니다. 그러나 /var 파티션을 사용하는 경우 장치 이름은 설치 시 결정되어야 하며 변경할 수 없습니다. 장치 이름 지정 스키마가 다른 경우 다른 인스턴스 유형을 노드로 추가할 수 없습니다. 예를 들어 m4.large 인스턴스, dev/xvdb 의 기본 AWS 장치 이름으로 /var 파티션을 구성한 경우 기본적으로 m5.large 인스턴스가 /dev/nvme1n1 장치를 사용하므로 AWS m5.large 인스턴스를 직접 추가할 수 없습니다. 다른 이름 지정 스키마로 인해 장치를 파티션하지 못할 수 있습니다.
이 섹션의 절차에서는 설치 시 구성된 것과 다른 장치 이름을 사용하는 인스턴스와 함께 새로운 RHCOS(Red Hat Enterprise Linux CoreOS) 컴퓨팅 노드를 추가하는 방법을 보여줍니다. 사용자 정의 사용자 데이터 시크릿을 생성하고 새 컴퓨팅 머신 세트를 구성합니다. 이러한 단계는 AWS 클러스터에 따라 다릅니다. 이 원칙은 다른 클라우드 배포에도 적용됩니다. 그러나 장치 이름 지정 스키마는 다른 배포마다 다르며 케이스별로 결정되어야 합니다.
절차
명령줄에서
openshift-machine-api네임스페이스로 변경합니다.$ oc project openshift-machine-apiworker-user-data시크릿에서 새 시크릿을 생성합니다.시크릿의
userData섹션을 텍스트 파일로 내보냅니다.$ oc get secret worker-user-data --template='{{index .data.userData | base64decode}}' | jq > userData.txt텍스트 파일을 편집하여 새 노드에 사용하려는 파티션에 대한
스토리지,파일 시스템,systemd스탠자를 추가합니다. 필요에 따라 Ignition 구성 매개변수 를 지정할 수 있습니다.참고ignition스탠자의 값을 변경하지 마십시오.{ "ignition": { "config": { "merge": [ { "source": "https:...." } ] }, "security": { "tls": { "certificateAuthorities": [ { "source": "data:text/plain;charset=utf-8;base64,.....==" } ] } }, "version": "3.2.0" }, "storage": { "disks": [ { "device": "/dev/nvme1n1",1 "partitions": [ { "label": "var", "sizeMiB": 50000,2 "startMiB": 03 } ] } ], "filesystems": [ { "device": "/dev/disk/by-partlabel/var",4 "format": "xfs",5 "path": "/var"6 } ] }, "systemd": { "units": [7 { "contents": "[Unit]\nBefore=local-fs.target\n[Mount]\nWhere=/var\nWhat=/dev/disk/by-partlabel/var\nOptions=defaults,pquota\n[Install]\nWantedBy=local-fs.target\n", "enabled": true, "name": "var.mount" } ] } }- 1
- AWS 블록 장치의 절대 경로를 지정합니다.
- 2
- 데이터 파티션의 크기(MB)를 지정합니다.
- 3
- 메비 바이트 단위의 파티션 시작을 지정합니다. 데이터 파티션을 부트 디스크에 추가할 때 최소 25000MB(메비 바이트)가 권장됩니다. 루트 파일 시스템은 지정된 오프셋까지 사용 가능한 모든 공간을 채우기 위해 자동으로 크기가 조정됩니다. 값이 지정되지 않거나 지정된 값이 권장 최소값보다 작으면 생성되는 루트 파일 시스템의 크기가 너무 작아지고 RHCOS를 나중에 다시 설치할 때 데이터 파티션의 첫 번째 부분을 덮어 쓸 수 있습니다.
- 4
/var파티션의 절대 경로를 지정합니다.- 5
- 파일 시스템 형식을 지정합니다.
- 6
- 루트 파일 시스템이 마운트될 위치와 관련하여 Ignition이 실행되는 동안 파일 시스템의 마운트 지점을 지정합니다. 이는 실제 루트에 마운트되어야 하는 위치와 반드시 동일하지는 않지만 이를 동일하게 만드는 것이 좋습니다.
- 7
/dev/disk/by-partlabel/var장치를/var파티션에 마운트하는 systemd 마운트 장치를 정의합니다.
work-user-data시크릿에서disableTemplating섹션을 텍스트 파일로 추출합니다.$ oc get secret worker-user-data --template='{{index .data.disableTemplating | base64decode}}' | jq > disableTemplating.txt두 개의 텍스트 파일에서 새 사용자 데이터 시크릿 파일을 생성합니다. 이 사용자 데이터 시크릿은
userData.txt파일의 추가 노드 파티션 정보를 새로 생성된 노드에 전달합니다.$ oc create secret generic worker-user-data-x5 --from-file=userData=userData.txt --from-file=disableTemplating=disableTemplating.txt
새 노드의 새 컴퓨팅 머신 세트를 생성합니다.
AWS에 대해 구성된 다음과 유사한 새 컴퓨팅 머신 세트 YAML 파일을 생성합니다. 필요한 파티션과 새로 생성된 사용자 데이터 시크릿을 추가합니다.
작은 정보기존 컴퓨팅 머신 세트를 템플릿으로 사용하고 새 노드에 필요한 대로 매개변수를 변경합니다.
apiVersion: machine.openshift.io/v1beta1 kind: MachineSet metadata: labels: machine.openshift.io/cluster-api-cluster: auto-52-92tf4 name: worker-us-east-2-nvme1n11 namespace: openshift-machine-api spec: replicas: 1 selector: matchLabels: machine.openshift.io/cluster-api-cluster: auto-52-92tf4 machine.openshift.io/cluster-api-machineset: auto-52-92tf4-worker-us-east-2b template: metadata: labels: machine.openshift.io/cluster-api-cluster: auto-52-92tf4 machine.openshift.io/cluster-api-machine-role: worker machine.openshift.io/cluster-api-machine-type: worker machine.openshift.io/cluster-api-machineset: auto-52-92tf4-worker-us-east-2b spec: metadata: {} providerSpec: value: ami: id: ami-0c2dbd95931a apiVersion: awsproviderconfig.openshift.io/v1beta1 blockDevices: - DeviceName: /dev/nvme1n12 ebs: encrypted: true iops: 0 volumeSize: 120 volumeType: gp2 - DeviceName: /dev/nvme1n23 ebs: encrypted: true iops: 0 volumeSize: 50 volumeType: gp2 credentialsSecret: name: aws-cloud-credentials deviceIndex: 0 iamInstanceProfile: id: auto-52-92tf4-worker-profile instanceType: m6i.large kind: AWSMachineProviderConfig metadata: creationTimestamp: null placement: availabilityZone: us-east-2b region: us-east-2 securityGroups: - filters: - name: tag:Name values: - auto-52-92tf4-worker-sg subnet: id: subnet-07a90e5db1 tags: - name: kubernetes.io/cluster/auto-52-92tf4 value: owned userDataSecret: name: worker-user-data-x54 컴퓨팅 머신 세트를 생성합니다.
$ oc create -f <file-name>.yaml시스템을 사용할 수 있게 되는 데 몇 분 정도 걸릴 수 있습니다.
새 파티션과 노드가 생성되었는지 확인합니다.
컴퓨팅 머신 세트가 생성되었는지 확인합니다.
$ oc get machineset출력 예
NAME DESIRED CURRENT READY AVAILABLE AGE ci-ln-2675bt2-76ef8-bdgsc-worker-us-east-1a 1 1 1 1 124m ci-ln-2675bt2-76ef8-bdgsc-worker-us-east-1b 2 2 2 2 124m worker-us-east-2-nvme1n1 1 1 1 1 2m35s1 - 1
- 이는 새로운 컴퓨팅 시스템 세트입니다.
새 노드가 생성되었는지 확인합니다.
$ oc get nodes출력 예
NAME STATUS ROLES AGE VERSION ip-10-0-128-78.ec2.internal Ready worker 117m v1.26.0 ip-10-0-146-113.ec2.internal Ready master 127m v1.26.0 ip-10-0-153-35.ec2.internal Ready worker 118m v1.26.0 ip-10-0-176-58.ec2.internal Ready master 126m v1.26.0 ip-10-0-217-135.ec2.internal Ready worker 2m57s v1.26.01 ip-10-0-225-248.ec2.internal Ready master 127m v1.26.0 ip-10-0-245-59.ec2.internal Ready worker 116m v1.26.0- 1
- 이는 새 노드입니다.
사용자 지정
/var파티션이 새 노드에 생성되었는지 확인합니다.$ oc debug node/<node-name> -- chroot /host lsblk예를 들면 다음과 같습니다.
$ oc debug node/ip-10-0-217-135.ec2.internal -- chroot /host lsblk출력 예
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme0n1 202:0 0 120G 0 disk |-nvme0n1p1 202:1 0 1M 0 part |-nvme0n1p2 202:2 0 127M 0 part |-nvme0n1p3 202:3 0 384M 0 part /boot `-nvme0n1p4 202:4 0 119.5G 0 part /sysroot nvme1n1 202:16 0 50G 0 disk `-nvme1n1p1 202:17 0 48.8G 0 part /var1 - 1
nvme1n1장치는/var파티션에 마운트됩니다.