1.2. Machine Config 개요
MCO (Machine Config Operator)는 systemd, CRI-O 및 Kubelet, 커널, 네트워크 관리자 및 기타 시스템 기능에 대한 업데이트를 관리합니다. 또한 호스트에 구성 파일을 쓸 수 있는 MachineConfig
CRD를 제공합니다( machine-config-operator참조). OpenShift Container Platform 클러스터에 대한 고급 시스템 수준을 변경하려면 MCO의 기능과 다른 구성 요소와 상호 작용 방식을 이해하는 것이 중요합니다. MCO, 머신 구성 및 사용 방법에 대해 알아야 할 몇 가지 사항은 다음과 같습니다.
- 머신 구성은 사전순으로 해당 이름의 사전순으로 처리됩니다. 렌더링 컨트롤러는 목록의 첫 번째 머신 구성을 기반으로 사용하고 나머지를 기본 머신 구성에 추가합니다.
- 머신 구성은 OpenShift Container Platform 노드 풀을 나타내는 각 시스템의 운영 체제에서 파일 또는 서비스를 특정하게 변경할 수 있습니다.
MCO는 시스템 풀의 운영 체제에 변경 사항을 적용합니다. 모든 OpenShift Container Platform 클러스터는 작업자 및 컨트롤 플레인 노드 풀로 시작합니다. 역할 레이블을 추가하여 사용자 지정 노드 풀을 구성할 수 있습니다. 예를 들어 애플리케이션에 필요한 특정 하드웨어 기능을 포함하는 작업자 노드의 사용자 정의 풀을 설정할 수 있습니다. 그러나 이 섹션의 예에서는 기본 풀 유형의 변경에 중점을 둡니다.
중요노드는
master
또는worker
와 같이 유형을 나타내기 위해 여러 레이블을 적용할 수 있지만 단일 머신 구성 풀의 멤버일 수 있습니다.-
머신 구성을 변경한 후 MCO는
topology.kubernetes.io/zone
레이블을 기반으로 영역별로 영향을 받는 노드를 알파벳순으로 업데이트합니다. 영역에 둘 이상의 노드가 있으면 가장 오래된 노드가 먼저 업데이트됩니다. 베어 메탈 배포에서와 같이 영역을 사용하지 않는 노드의 경우 노드가 사용 기간으로 업그레이드되며 가장 오래된 노드가 먼저 업데이트됩니다. MCO는 머신 구성 풀의maxUnavailable
필드에 지정된 노드 수를 한 번에 업데이트합니다. - OpenShift Container Platform을 디스크에 설치하기 전에 일부 머신 구성을 완료해야 합니다. 대부분의 경우 이 작업은 설치 후 머신 구성으로 실행되지 않고 OpenShift Container Platform 설치 프로그램 프로세스에 직접 삽입되는 머신 구성을 생성하여 수행할 수 있습니다. 다른 경우에는 노드별 개별 IP 주소 설정 또는 고급 디스크 파티셔닝과 같은 작업을 수행하기 위해 OpenShift Container Platform 설치 프로그램 시작 시 커널 인수를 전달하는 베어 메탈 설치를 수행해야 할 수 있습니다.
- MCO는 머신 구성에 설정된 항목을 관리합니다. MCO가 충돌하는 파일을 관리하도록 명시적으로 지시하지 않는 한 MCO는 시스템에 대한 수동 변경 사항을 덮어 쓰지 않습니다. 즉, MCO는 사용자가 요청한 특정 업데이트 만 수행하고 전체 노드에 대한 제어를 요구하지 않습니다.
- 노드를 수동으로 변경하지 않는 것이 좋습니다. 노드를 종료하고 새 노드를 시작해야하는 경우 이러한 직접적인 변경 사항이 손실됩니다.
-
MCO는
/etc
및/var
디렉토리에있는 파일에 쓰는 경우에만 지원됩니다. 하지만 이러한 영역 중 하나에 심볼릭 링크를 사용하여 쓰기 가능해진 일부 디렉토리에 대한 심볼릭 링크도 있습니다./opt
및/usr/local
디렉토리는 예제입니다. - Ignition은 MachineConfigs에서 사용되는 구성 형식입니다. 자세한 내용은 Ignition Configuration Specification v3.2.0을 참조하십시오.
- Ignition 구성 설정은 OpenShift Container Platform 설치시 직접 제공될 수 있고 MCO가 Ignition 구성을 제공하는 것과 동일한 방식으로 포맷할 수 있지만 MCO는 원래 Ignition 구성이 무엇인지 확인할 방법이 없습니다. 따라서 Ignition 구성 설정을 배포하기 전에 이를 머신 구성에 래핑해야 합니다.
-
MCO에서 관리하는 파일이 MCO 외부에서 변경되면 MCD (Machine Config Daemon)가 노드를
degraded
로 설정합니다. 이는 문제가 되는 파일을 덮어 쓰지 않으며 성능이degraded
상태에서 계속 작동합니다. -
머신 구성을 사용하는 주요 이유는 OpenShift Container Platform 클러스터의 풀에 새 노드를 추가할 때 적용되기 때문입니다.
machine-api-operator
는 새 머신을 프로비저닝하고 MCO가 이를 구성합니다.
MCO는 Ignition을 구성 형식으로 사용합니다. OpenShift Container Platform 4.6은 Ignition 구성 사양 버전 2에서 버전 3으로 이동했습니다.
1.2.1. 머신 구성에서 변경 가능한 구성
MCO가 변경할 수 있는 구성 요소의 종류는 다음과 같습니다.
config: Ignition 구성 개체 (Ignition 구성 사양 참조)를 생성하여 다음을 포함하여 OpenShift Container Platform 시스템에서 파일, systemd 서비스 및 기타 기능을 변경할 수 있습니다.
-
Configuration files:
/var
또는/etc
디렉토리에 파일을 만들거나 덮어 씁니다. - systemd units: systemd 서비스의 상태를 생성 및 설정하거나 추가 설정을 기존 systemd 서비스에 추가합니다.
users and groups: 설치 후 passwd 섹션에서 SSH 키를 변경합니다.
중요-
머신 구성을 사용하여 SSH 키 변경은
core
사용자만 지원됩니다. - 머신 구성을 사용하여 새 사용자를 추가하는 것은 지원되지 않습니다.
-
머신 구성을 사용하여 SSH 키 변경은
-
Configuration files:
- kernelArguments: OpenShift Container Platform 노드가 시작될 때 커널 명령 줄에 인수를 추가합니다.
-
kernelType: 선택 옵션으로 표준 커널 대신 사용할 비표준 커널을 확인합니다. RT 커널 (RAN 용)을 사용하려면
realtime
을 사용합니다. 이는 일부 플랫폼에서만 지원됩니다.64k-pages
매개변수를 사용하여 64k 페이지 크기 커널을 활성화합니다. 이 설정은 64비트 ARM 아키텍처가 있는 머신에만 독점적입니다. fips: FIPS 모드를 활성화합니다. FIPS는 설치 후 절차가 아닌 설치 시간 설정에서 설정해야 합니다.
중요클러스터의 FIPS 모드를 활성화하려면 FIPS 모드에서 작동하도록 구성된 RHEL(Red Hat Enterprise Linux) 컴퓨터에서 설치 프로그램을 실행해야 합니다. RHEL에서 FIPS 모드 구성에 대한 자세한 내용은 FIPS 모드에서 시스템 설치를 참조하십시오.
FIPS 모드에서 부팅된 RHEL(Red Hat Enterprise Linux CoreOS) 또는 RHCOS(Red Hat Enterprise Linux CoreOS)를 실행하는 경우 OpenShift Container Platform 코어 구성 요소는 x86_64, ppc64le 및 s390x 아키텍처에서만 FIPS 140-2/140-3 Validation에 대해 NIST에 제출된 RHEL 암호화 라이브러리를 사용합니다.
- extensions: 사전 패키지화된 소프트웨어를 추가하여 RHCOS 기능을 확장합니다. 이 기능의 경우 사용 가능한 확장에는 usbguard 및 커널 모듈이 포함됩니다.
-
사용자 지정 리소스 (
ContainerRuntime
및Kubelet
용): 머신 구성 외부에서 MCO는 CRI-O 컨테이너 런타임 설정 (ContainerRuntime
CR) 및 Kubelet 서비스 (Kubelet
CR)를 변경하기 위해 두 가지 특정 사용자 지정 리소스를 관리합니다.
MCO는 OpenShift Container Platform 노드에서 운영 체제 구성 요소를 변경할 수 있는 유일한 Operator가 아닙니다. 다른 Operator도 운영 체제 수준의 기능을 변경할 수 있습니다. 한 가지 예로 Node Tuning Operator를 사용하여 Tuned 데몬 프로필을 통해 노드 수준 조정을 수행할 수있습니다.
설치 후 수행할 수 있는 MCO 구성 작업은 다음 절차에 포함됩니다. OpenShift Container Platform 설치 중 또는 설치 전에 수행해야 하는 시스템 설정 작업은 RHCOS 베어 메탈 설치에 대한 설명을 참조하십시오. 기본적으로 MCO를 사용하여 변경한 많은 변경 사항을 재부팅해야 합니다.
다음 수정 사항에서는 노드 재부팅이 트리거되지 않습니다.
MCO가 다음 변경 사항을 감지하면 노드를 드레이닝하거나 재부팅하지 않고 업데이트를 적용합니다.
-
머신 구성의
spec.config.passwd.users.sshAuthorizedKeys
매개변수에서 SSH 키 변경 -
openshift-config
네임 스페이스에서 글로벌 풀 시크릿 또는 풀 시크릿 관련 변경 사항 -
Kubernetes API Server Operator의
/etc/kubernetes/kubelet-ca.crt
인증 기관(CA) 자동 교체
-
머신 구성의
MCO가
ImageDigestMirrorSet
,ImageTagMirrorSet
또는ImageContentSourcePolicy
개체 추가 또는 편집과 같은/etc/containers/registries.conf
파일의 변경을 감지하면 해당 노드를 드레이닝하고 변경 사항을 적용하고 노드를 분리합니다. 다음 변경에는 노드 드레이닝이 발생하지 않습니다.-
각 미러에 대해 설정된
pull-from-mirror = "digest-only"
매개변수를 사용하여 레지스트리를 추가합니다. -
레지스트리에 설정된
pull-from-mirror = "digest-only"
매개변수를 사용하여 미러를 추가합니다. -
unqualified-search-registries
목록에 항목이 추가되었습니다.
-
각 미러에 대해 설정된
다른 경우에는 MCO가 노드 중단 정책을 사용하여 변경 시 워크로드에 대한 중단을 완화할 수 있습니다. 자세한 내용은 머신 구성 변경 후 노드 재시작 동작 이해 를 참조하십시오.
노드의 구성이 현재 적용된 머신 구성에서 지정하는 것과 완전히 일치하지 않는 경우가 있을 수 있습니다. 이 상태를 구성 드리프트 라고 합니다. MCO(Machine Config Daemon)는 노드에서 구성 드리프트를 정기적으로 확인합니다. MCD가 구성 드리프트를 감지하면 관리자가 노드 구성을 수정할 때까지 MCO는 노드가 degraded
상태로 표시됩니다. 성능이 저하된 노드는 온라인 상태이고 작동하지만 업데이트할 수 없습니다. 구성 드리프트에 대한 자세한 내용은 구성 드리프트 감지 이해 를 참조하십시오.