1.6. etcd를 다른 디스크로 이동
공유 디스크에서 etcd를 별도의 디스크로 이동하여 성능 문제를 방지하거나 해결할 수 있습니다.
사전 요구 사항
-
MachineConfigPool
은metadata.labels[machineconfiguration.openshift.io/role]
과 일치해야 합니다. 컨트롤러, 작업자 또는 사용자 지정 풀에 적용됩니다. -
노드의 스토리지 장치(예:
/dev/sdb
)는 sdb와 일치해야 합니다. 파일의 모든 위치에서 이 참조를 변경합니다.
이 절차에서는 루트 파일 시스템의 일부(예: /var/
)를 설치된 노드의 다른 디스크 또는 파티션으로 이동하지 않습니다.
MCO(Machine Config Operator)는 OpenShift Container Platform 4.9 컨테이너 스토리지의 보조 디스크를 마운트합니다.
etcd를 다른 장치로 이동하려면 다음 단계를 사용하십시오.
절차
etcd-mc.yml
이라는machineconfig
YAML 파일을 생성하고 다음 정보를 추가합니다.apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: labels: machineconfiguration.openshift.io/role: master name: 98-var-lib-etcd spec: config: ignition: version: 3.2.0 systemd: units: - contents: | [Unit] Description=Make File System on /dev/sdb DefaultDependencies=no BindsTo=dev-sdb.device After=dev-sdb.device var.mount Before=systemd-fsck@dev-sdb.service [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/lib/systemd/systemd-makefs xfs /dev/sdb TimeoutSec=0 [Install] WantedBy=var-lib-containers.mount enabled: true name: systemd-mkfs@dev-sdb.service - contents: | [Unit] Description=Mount /dev/sdb to /var/lib/etcd Before=local-fs.target Requires=systemd-mkfs@dev-sdb.service After=systemd-mkfs@dev-sdb.service var.mount [Mount] What=/dev/sdb Where=/var/lib/etcd Type=xfs Options=defaults,prjquota [Install] WantedBy=local-fs.target enabled: true name: var-lib-etcd.mount - contents: | [Unit] Description=Sync etcd data if new mount is empty DefaultDependencies=no After=var-lib-etcd.mount var.mount Before=crio.service [Service] Type=oneshot RemainAfterExit=yes ExecCondition=/usr/bin/test ! -d /var/lib/etcd/member ExecStart=/usr/sbin/setenforce 0 ExecStart=/bin/rsync -ar /sysroot/ostree/deploy/rhcos/var/lib/etcd/ /var/lib/etcd/ ExecStart=/usr/sbin/setenforce 1 TimeoutSec=0 [Install] WantedBy=multi-user.target graphical.target enabled: true name: sync-var-lib-etcd-to-etcd.service - contents: | [Unit] Description=Restore recursive SELinux security contexts DefaultDependencies=no After=var-lib-etcd.mount Before=crio.service [Service] Type=oneshot RemainAfterExit=yes ExecStart=/sbin/restorecon -R /var/lib/etcd/ TimeoutSec=0 [Install] WantedBy=multi-user.target graphical.target enabled: true name: restorecon-var-lib-etcd.service
다음 명령을 입력하여 머신 구성을 생성합니다.
$ oc login -u ${ADMIN} -p ${ADMINPASSWORD} ${API} ... output omitted ...
$ oc create -f etcd-mc.yml machineconfig.machineconfiguration.openshift.io/98-var-lib-etcd created
$ oc login -u ${ADMIN} -p ${ADMINPASSWORD} ${API} [... output omitted ...]
$ oc create -f etcd-mc.yml machineconfig.machineconfiguration.openshift.io/98-var-lib-etcd created
노드가 업데이트 및 재부팅됩니다. 재부팅이 완료되면 다음 이벤트가 수행됩니다.
- XFS 파일 시스템이 지정된 디스크에 생성됩니다.
-
디스크는
/var/lib/etc
에 마운트됩니다. -
/sysroot/ostree/deploy/rhcos/var/lib/etcd
의 콘텐츠와/var/lib/etcd
입니다. -
/var/lib/etcd
에 대해SELinux
레이블 복원이 강제 적용됩니다. - 이전 콘텐츠는 제거되지 않습니다.
노드가 별도의 디스크에 있는 후 머신 구성 파일
etcd-mc.yml
을 다음 정보로 업데이트합니다.apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: labels: machineconfiguration.openshift.io/role: master name: 98-var-lib-etcd spec: config: ignition: version: 3.2.0 systemd: units: - contents: | [Unit] Description=Mount /dev/sdb to /var/lib/etcd Before=local-fs.target Requires=systemd-mkfs@dev-sdb.service After=systemd-mkfs@dev-sdb.service var.mount [Mount] What=/dev/sdb Where=/var/lib/etcd Type=xfs Options=defaults,prjquota [Install] WantedBy=local-fs.target enabled: true name: var-lib-etcd.mount
다음 명령을 입력하여 장치를 생성하고 동기화하기 위한 논리를 제거하는 수정된 버전을 적용합니다.
$ oc replace -f etcd-mc.yml
이전 단계에서는 노드가 재부팅되지 않습니다.