1.4. 구성 드리프트 탐지 이해
노드의 디스크상의 상태가 머신 구성에 구성된 것과 다른 상황이 있을 수 있습니다. 이를 구성 드리프트 라고 합니다. 예를 들어 클러스터 관리자는 파일, systemd 장치 파일 또는 머신 구성을 통해 구성한 파일 권한을 수동으로 수정할 수 있습니다. 이로 인해 구성 드리프트가 발생합니다. 구성 드리프트로 인해 머신 구성 풀의 노드 또는 머신 구성이 업데이트될 때 문제가 발생할 수 있습니다.
MCO(Machine Config Operator)는 MCP(Machine Config Daemon)를 사용하여 노드를 정기적으로 구성 드리프트를 확인합니다. 탐지된 경우 MCO는 노드와 MCP(Machine config pool)를 Degraded
로 설정하고 오류를 보고합니다. 성능이 저하된 노드는 온라인 상태이고 작동하지만 업데이트할 수 없습니다.
MCD는 다음 조건 각각에 대해 구성 드리프트 탐지를 수행합니다.
- 노드가 부팅되는 경우
- 머신 구성에 지정된 파일(Ignition 파일 및 systemd 드롭인 단위)이 머신 구성 외부에서 수정되는 경우
새 머신 구성을 적용하기 전에
참고노드에 새 머신 구성을 적용하면 MCD가 구성 드리프트 탐지를 일시적으로 종료합니다. 새 머신 구성이 노드의 머신 구성과 반드시 다르기 때문에 이 종료가 필요합니다. 새 머신 구성을 적용한 후 MCD는 새 머신 구성을 사용하여 구성 드리프트 탐지를 다시 시작합니다.
구성 드리프트 탐지를 수행할 때 MCD는 파일 콘텐츠 및 권한이 현재 적용된 머신 구성에 지정된 항목과 완전히 일치하는지 확인합니다. 일반적으로 MCD는 탐지가 트리거된 후 1초 이내에 구성 드리프트를 감지합니다.
MCD가 구성 드리프트를 감지하면 MCD는 다음 작업을 수행합니다.
- 콘솔 로그에 오류를 발송합니다.
- Kubernetes 이벤트 내보내기
- 노드에서 추가 탐지를 중지합니다.
-
노드와 MCP의
성능이 저하된
상태로 설정
MCP를 나열하여 성능이 저하된 노드가 있는지 확인할 수 있습니다.
$ oc get mcp worker
성능이 저하된 MCP가 있는 경우 DEGRADEDMACHINECOUNT
필드는 다음 출력과 유사하게 0이 아닙니다.
출력 예
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE worker rendered-worker-404caf3180818d8ac1f50c32f14b57c3 False True True 2 1 1 1 5h51m
머신 구성 풀을 검사하여 구성 드리프트로 인해 문제가 발생하는지 확인할 수 있습니다.
$ oc describe mcp worker
출력 예
... Last Transition Time: 2021-12-20T18:54:00Z Message: Node ci-ln-j4h8nkb-72292-pxqxz-worker-a-fjks4 is reporting: "content mismatch for file \"/etc/mco-test-file\"" 1 Reason: 1 nodes are reporting degraded status on sync Status: True Type: NodeDegraded 2 ...
또는 성능이 저하된 노드를 알고 있는 경우 해당 노드를 검사합니다.
$ oc describe node/ci-ln-j4h8nkb-72292-pxqxz-worker-a-fjks4
출력 예
... Annotations: cloud.network.openshift.io/egress-ipconfig: [{"interface":"nic0","ifaddr":{"ipv4":"10.0.128.0/17"},"capacity":{"ip":10}}] csi.volume.kubernetes.io/nodeid: {"pd.csi.storage.gke.io":"projects/openshift-gce-devel-ci/zones/us-central1-a/instances/ci-ln-j4h8nkb-72292-pxqxz-worker-a-fjks4"} machine.openshift.io/machine: openshift-machine-api/ci-ln-j4h8nkb-72292-pxqxz-worker-a-fjks4 machineconfiguration.openshift.io/controlPlaneTopology: HighlyAvailable machineconfiguration.openshift.io/currentConfig: rendered-worker-67bd55d0b02b0f659aef33680693a9f9 machineconfiguration.openshift.io/desiredConfig: rendered-worker-67bd55d0b02b0f659aef33680693a9f9 machineconfiguration.openshift.io/reason: content mismatch for file "/etc/mco-test-file" 1 machineconfiguration.openshift.io/state: Degraded 2 ...
다음 수정 사항 중 하나를 수행하여 구성 드리프트를 수정하고 노드를 Ready
상태로 되돌릴 수 있습니다.
- 노드에 있는 파일의 내용 및 파일 권한이 머신 구성에 구성된 항목과 일치하는지 확인합니다. 파일 내용을 수동으로 다시 작성하거나 파일 권한을 변경할 수 있습니다.
성능이 저하된 노드에서 force 파일을 생성합니다. 강제 파일을 사용하면 MCD가 일반적인 구성 드리프트 탐지를 무시하고 현재 머신 구성을 다시 적용합니다.
참고노드에 강제 파일을 생성하면 해당 노드가 재부팅됩니다.