3.14. 매니페스트 구성 파일
3.14.1. OpenShift Container Platform 매니페스트 만들기 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Container Platform 매니페스트를 만듭니다.
$ ./openshift-baremetal-install --dir ~/clusterconfigs create manifestsINFO Consuming Install Config from target directory WARNING Making control-plane schedulable by setting MastersSchedulable to true for Scheduler cluster settings WARNING Discarding the OpenShift Manifest that was provided in the target directory because its dependencies are dirty and it needs to be regenerated
3.14.2. 선택사항: 연결이 끊긴 클러스터의 NTP 구성 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Container Platform은 클러스터 노드에 chrony Network Time Protocol(NTP) 서비스를 설치합니다.
OpenShift Container Platform 노드는 올바로 실행되려면 날짜와 시간에 동의해야 합니다. 컴퓨팅 노드가 컨트롤 플레인 노드의 NTP 서버에서 날짜와 시간을 검색할 때 라우팅 가능한 네트워크에 연결되지 않은 클러스터를 설치 및 실행할 수 있으므로 상위 계층 NTP 서버에 액세스할 수 없습니다.
프로세스
다음 명령을 사용하여 설치 호스트에 Butane을 설치합니다.
$ sudo dnf -y install butane컨트롤 플레인 노드에 대한
chrony.conf파일의 콘텐츠를 포함하여 Butane 구성,99-master-chrony-conf-override.bu를 만듭니다.참고Butane에 대한 자세한 내용은 “Butane 을 사용하여 머신 구성 생성”을 참조하십시오.
Butane 구성의 예
variant: openshift version: 4.16.0 metadata: name: 99-master-chrony-conf-override labels: machineconfiguration.openshift.io/role: master storage: files: - path: /etc/chrony.conf mode: 0644 overwrite: true contents: inline: | # Use public servers from the pool.ntp.org project. # Please consider joining the pool (https://www.pool.ntp.org/join.html). # The Machine Config Operator manages this file server openshift-master-0.<cluster-name>.<domain> iburst1 server openshift-master-1.<cluster-name>.<domain> iburst server openshift-master-2.<cluster-name>.<domain> iburst stratumweight 0 driftfile /var/lib/chrony/drift rtcsync makestep 10 3 bindcmdaddress 127.0.0.1 bindcmdaddress ::1 keyfile /etc/chrony.keys commandkey 1 generatecommandkey noclientlog logchange 0.5 logdir /var/log/chrony # Configure the control plane nodes to serve as local NTP servers # for all compute nodes, even if they are not in sync with an # upstream NTP server. # Allow NTP client access from the local network. allow all # Serve time even if not synchronized to a time source. local stratum 3 orphan- 1
<cluster-name>을 클러스터 이름으로 바꾸고<domain>을 정규화된 도메인 이름으로 교체해야 합니다.
Butane을 사용하여 컨트롤 플레인 노드에 전달할 구성이 포함된
MachineConfig파일99-master-chrony-conf-override.yaml을 생성합니다.$ butane 99-master-chrony-conf-override.bu -o 99-master-chrony-conf-override.yaml컨트롤 플레인 노드의 NTP 서버를 참조하는 컴퓨팅 노드의
chrony.conf파일의 내용을 포함하여 Butane 구성99-worker-chrony-conf-override.bu를 만듭니다.Butane 구성의 예
variant: openshift version: 4.16.0 metadata: name: 99-worker-chrony-conf-override labels: machineconfiguration.openshift.io/role: worker storage: files: - path: /etc/chrony.conf mode: 0644 overwrite: true contents: inline: | # The Machine Config Operator manages this file. server openshift-master-0.<cluster-name>.<domain> iburst1 server openshift-master-1.<cluster-name>.<domain> iburst server openshift-master-2.<cluster-name>.<domain> iburst stratumweight 0 driftfile /var/lib/chrony/drift rtcsync makestep 10 3 bindcmdaddress 127.0.0.1 bindcmdaddress ::1 keyfile /etc/chrony.keys commandkey 1 generatecommandkey noclientlog logchange 0.5 logdir /var/log/chrony- 1
<cluster-name>을 클러스터 이름으로 바꾸고<domain>을 정규화된 도메인 이름으로 교체해야 합니다.
Butane을 사용하여 작업자 노드로 전달할 구성이 포함된
MachineConfig개체 파일99-worker-chrony-conf-override.yaml을 생성합니다.$ butane 99-worker-chrony-conf-override.bu -o 99-worker-chrony-conf-override.yaml
3.14.3. 컨트롤 플레인에서 실행되도록 네트워크 구성 요소 구성 링크 복사링크가 클립보드에 복사되었습니다!
컨트롤 플레인 노드에서 독점적으로 실행되도록 네트워킹 구성 요소를 구성할 수 있습니다. 기본적으로 OpenShift Container Platform에서는 머신 구성 풀의 모든 노드가 ingressVIP 가상 IP 주소를 호스팅할 수 있습니다. 그러나 일부 환경에서는 컨트롤 플레인 노드의 별도의 서브넷에 컴퓨팅 노드를 배포합니다. 이 경우 컨트롤 플레인 노드에서 실행되도록 ingressVIP 가상 IP 주소를 구성해야 합니다.
별도의 서브넷에 원격 노드를 배포할 때 컨트롤 플레인 노드에 독점적으로 ingressVIP 가상 IP 주소를 배치해야 합니다.
프로세스
install-config.yaml파일을 저장하는 디렉터리로 변경합니다.$ cd ~/clusterconfigsmanifests하위 디렉터리로 전환합니다.$ cd manifestscluster-network-avoid-workers-99-config.yaml이라는 파일을 생성합니다.$ touch cluster-network-avoid-workers-99-config.yaml편집기에서
cluster-network-avoid-workers-99-config.yaml파일을 열고 Operator 구성을 설명하는 CR(사용자 정의 리소스)을 입력합니다.apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: name: 50-worker-fix-ipi-rwn labels: machineconfiguration.openshift.io/role: worker spec: config: ignition: version: 3.2.0 storage: files: - path: /etc/kubernetes/manifests/keepalived.yaml mode: 0644 contents: source: data:,이 매니페스트는 컨트롤 플레인 노드에
ingressVIP가상 IP 주소를 배치합니다. 또한 이 매니페스트는 컨트롤 플레인 노드에 다음 프로세스를 배포합니다.-
openshift-ingress-operator -
keepalived
-
-
cluster-network-avoid-workers-99-config.yaml파일을 저장합니다. manifests/cluster-ingress-default-ingresscontroller.yaml파일을 생성합니다.apiVersion: operator.openshift.io/v1 kind: IngressController metadata: name: default namespace: openshift-ingress-operator spec: nodePlacement: nodeSelector: matchLabels: node-role.kubernetes.io/master: ""-
manifests디렉터리를 백업하는 것이 좋습니다. 설치 프로그램은 클러스터를 생성할 때manifests/디렉터리를 삭제합니다. mastersSchedulable필드를true로 설정하여 컨트롤 플레인 노드를 예약할 수 있도록cluster-scheduler-02-config.yml매니페스트를 수정합니다. 기본적으로 컨트롤 플레인 노드는 예약할 수 없습니다. 예를 들면 다음과 같습니다.$ sed -i "s;mastersSchedulable: false;mastersSchedulable: true;g" clusterconfigs/manifests/cluster-scheduler-02-config.yml참고이 절차를 완료한 후 컨트롤 플레인 노드를 예약할 수 없는 경우 클러스터 배포가 실패합니다.
3.14.4. 선택 사항: 컴퓨팅 노드에 라우터 배포 링크 복사링크가 클립보드에 복사되었습니다!
설치 중에 설치 프로그램은 컴퓨팅 노드에 라우터 Pod를 배포합니다. 기본적으로 설치 프로그램은 두 개의 라우터 Pod를 설치합니다. 배포된 클러스터에 OpenShift Container Platform 클러스터 내의 서비스에 대한 외부 트래픽 로드를 처리하기 위해 추가 라우터가 필요한 경우 yaml 파일을 생성하여 적절한 수의 라우터 복제본을 설정할 수 있습니다.
컴퓨팅 노드가 하나만 있는 클러스터를 배포하는 것은 지원되지 않습니다. 라우터 복제본을 수정하면 하나의 컴퓨팅 노드로 배포할 때 성능이 저하된 상태의 문제를 해결할 수 있지만, 클러스터는 Ingress API의 고가용성이 손실되며 프로덕션 환경에 적합하지 않습니다.
기본적으로 설치 프로그램은 두 개의 라우터를 배포합니다. 클러스터에 컴퓨팅 노드가 없는 경우 설치 프로그램은 기본적으로 컨트롤 플레인 노드에 두 개의 라우터를 배포합니다.
프로세스
router-replicas.yaml파일을 생성합니다.apiVersion: operator.openshift.io/v1 kind: IngressController metadata: name: default namespace: openshift-ingress-operator spec: replicas: <num-of-router-pods> endpointPublishingStrategy: type: HostNetwork nodePlacement: nodeSelector: matchLabels: node-role.kubernetes.io/worker: ""참고<num-of-router-pods>를 적절한 값으로 바꿉니다. 하나의 컴퓨팅 노드로만 작업하는 경우replicas:1로 설정합니다. 컴퓨팅 노드를 3개 이상 사용하여 작업하는 경우 필요에 따라replicas:를 기본값2에서 늘릴 수 있습니다.router-replicas.yaml파일을clusterconfigs/openshift디렉터리에 저장하고 복사합니다.$ cp ~/router-replicas.yaml clusterconfigs/openshift/99_router-replicas.yaml
3.14.5. 선택 사항: BIOS 구성 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에서는 설치 프로세스 중에 BIOS를 구성합니다.
프로세스
- 매니페스트를 생성합니다.
노드에 해당하는
BareMetalHost리소스 파일을 수정합니다.$ vim clusterconfigs/openshift/99_openshift-cluster-api_hosts-*.yamlBareMetalHost리소스의spec섹션에 BIOS 구성을 추가합니다.spec: firmware: simultaneousMultithreadingEnabled: true sriovEnabled: true virtualizationEnabled: true참고Red Hat은 세 가지 BIOS 구성을 지원합니다. BMC 유형
irmc가 있는 서버만 지원됩니다. 다른 유형의 서버는 현재 지원되지 않습니다.- 클러스터를 생성합니다.
3.14.6. 선택 사항: RAID 구성 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에서는 설치 프로세스 중에 BMC(Baseboard Management Controller)를 사용하여 독립 디스크(RAID)의 중복 배열을 구성합니다.
노드에 대한 하드웨어 RAID를 구성하려면 노드에 RAID 컨트롤러가 지원되는지 확인합니다. OpenShift Container Platform 4.16은 소프트웨어 RAID를 지원하지 않습니다.
| vendor | BMC 및 프로토콜 | 펌웨어 버전 | RAID 수준 |
|---|---|---|---|
| Fujitsu | iRMC | 해당 없음 | 0, 1, 5, 6, 10 |
| Dell | Redfish를 사용하는 iDRAC | 버전 6.10.30.20 이상 | 0, 1, 5 |
프로세스
- 매니페스트를 생성합니다.
노드에 해당하는
BareMetalHost리소스를 수정합니다.$ vim clusterconfigs/openshift/99_openshift-cluster-api_hosts-*.yaml참고다음 예제에서는 OpenShift Container Platform 4.16이 소프트웨어 RAID를 지원하지 않기 때문에 하드웨어 RAID 구성을 사용합니다.
특정 RAID 구성을
spec섹션에 추가한 경우 노드에서준비단계에서 원래 RAID 구성을 삭제하고 RAID에서 지정된 구성을 수행합니다. 예를 들면 다음과 같습니다.spec: raid: hardwareRAIDVolumes: - level: "0"1 name: "sda" numberOfPhysicalDisks: 1 rotational: true sizeGibibytes: 0- 1
level은 필수 필드이며 다른 필드는 선택적 필드입니다.
spec섹션에 빈 RAID 구성을 추가한 경우 빈 구성으로 인해 노드가준비단계에서 원래 RAID 구성을 삭제하지만 새 구성을 수행하지 않습니다. 예를 들면 다음과 같습니다.spec: raid: hardwareRAIDVolumes: []-
spec섹션에raid필드를 추가하지 않으면 원래 RAID 구성이 삭제되지 않으며 새 구성은 수행되지 않습니다.
- 클러스터를 생성합니다.
3.14.7. 선택사항: 노드에서 스토리지 구성 링크 복사링크가 클립보드에 복사되었습니다!
MCO(Machine Config Operator)에서 관리하는 MachineConfig 오브젝트를 생성하여 OpenShift Container Platform 노드의 운영 체제를 변경할 수 있습니다.
MachineConfig 사양에는 처음 부팅할 때 머신을 구성하기 위한 ignition 구성이 포함되어 있습니다. 이 config 오브젝트는 OpenShift Container Platform 시스템에서 실행되는 파일, systemd 서비스 및 기타 운영 체제 기능을 수정하는 데 사용할 수 있습니다.
프로세스
ignition config를 사용하여 노드에서 스토리지를 구성합니다. 다음 MachineSet 매니페스트 예제에서는 기본 노드의 장치에 파티션을 추가하는 방법을 보여줍니다. 이 예에서는 설치 전에 매니페스트를 적용하여 기본 노드에 크기가 16GiB인 recovery 라는 파티션을 만듭니다.
custom-partitions.yaml파일을 생성하고 파티션 레이아웃이 포함된MachineConfig오브젝트를 포함합니다.apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: labels: machineconfiguration.openshift.io/role: primary name: 10_primary_storage_config spec: config: ignition: version: 3.2.0 storage: disks: - device: </dev/xxyN> partitions: - label: recovery startMiB: 32768 sizeMiB: 16384 filesystems: - device: /dev/disk/by-partlabel/recovery label: recovery format: xfscustom-partitions.yaml파일을clusterconfigs/openshift디렉터리에 저장하고 복사합니다.$ cp ~/<MachineConfig_manifest> ~/clusterconfigs/openshift