설치 구성
설치 중 클러스터 전체 구성
초록
1장. 노드의 사용자 정의
OpenShift Container Platform은 Ignition을 통해 클러스터 전체 및 시스템별 구성을 지원하여 운영 체제에 임의의 파티셔닝 및 파일 콘텐츠를 변경할 수 있습니다. 일반적으로 구성 파일이 RHEL(Red Hat Enterprise Linux)에 설명된 경우 Ignition을 통해 수정할 수 있습니다.
머신 구성 변경 사항을 배포하는 방법은 다음 두 가지가 있습니다.
-
Openshift-install
중 클러스터를 시작하기 위해 매니페스트 파일에 포함된 머신 구성을 생성합니다. - Machine Config Operator를 통해 OpenShift Container Platform 노드에 전달되는 머신 구성을 생성합니다.
또한 베어 메탈 노드를 설치할 때 coreos-installer
에 전달되는 Ignition 구성과 같은 참조 구성을 수정하면 시스템별로 구성할 수 있습니다. 이러한 변경 사항은 현재 Machine Config Operator에 표시되지 않습니다.
다음 섹션에서는 이러한 방식으로 노드에서 설정할 수 있는 기능에 대해 설명합니다.
1.1. Butane을 사용하여 머신 구성 생성
머신 구성은 사용자 및 파일 시스템 생성, 네트워크 설정, systemd 장치 설치 등에 대해 시스템에 지시하여 컨트롤 플레인 및 작업자 시스템을 구성하는 데 사용됩니다.
머신 구성 수정은 어려울 수 있기 때문에 Butane configs를 사용하여 머신 구성을 생성하여 노드 구성을 훨씬 쉽게 구성할 수 있습니다.
1.1.1. Butane 정보
butane은 OpenShift Container Platform이 머신 구성 작성에 편리한 단기 구문을 제공하고 머신 구성에 대한 추가 검증을 수행하는 데 사용하는 명령줄 유틸리티입니다. Butane이 허용하는 Butane 구성 파일의 형식은 OpenShift Butane config 사양에 정의되어 있습니다.
1.1.2. Butane 설치
Butane 툴(butane
)을 설치하여 명령줄 인터페이스에서 OpenShift Container Platform 머신 구성을 생성할 수 있습니다. 해당 바이너리 파일을 다운로드하여 Linux, Windows 또는 macOS에 butane
을 설치할 수 있습니다.
Butane 릴리스는 이전 릴리스 및 Fedora CoreOS Config Transpiler(FCCT)와 이전 버전과 호환됩니다.
프로세스
- https://mirror.openshift.com/pub/openshift-v4/clients/butane/ Butane 이미지 다운로드 페이지로 이동합니다.
butane
바이너리를 가져옵니다.Butane의 최신 버전의 경우 최신
butane
이미지를 현재 디렉터리에 저장합니다.$ curl https://mirror.openshift.com/pub/openshift-v4/clients/butane/latest/butane --output butane
선택 사항: butane을 설치할 특정 아키텍처 유형(예: arch64 또는 ppc64le)에 적절한 URL을 지정합니다. 예를 들면 다음과 같습니다.
$ curl https://mirror.openshift.com/pub/openshift-v4/clients/butane/latest/butane-aarch64 --output butane
다운로드한 바이너리 파일을 실행 가능하게 합니다.
$ chmod +x butane
butane
바이너리 파일을PATH
의 디렉터리로 이동합니다.PATH
를 확인하려면 터미널을 열고 다음 명령을 실행합니다.$ echo $PATH
검증 단계
이제
butane
명령을 실행하여 Butane 툴을 사용할 수 있습니다.$ butane <butane_file>
1.1.3. Butane을 사용하여 MachineConfig 오브젝트 생성
설치 시 또는 Machine Config Operator를 통해 작업자 또는 컨트롤 플레인 노드를 구성할 수 있도록 Butane을 사용하여 MachineConfig
오브젝트를 생성할 수 있습니다.
사전 요구 사항
-
butane
유틸리티가 설치되어 있습니다.
프로세스
Butane 구성 파일을 생성합니다. 다음 예제에서는 시스템 콘솔을 구성하여 커널 디버그 메시지를 표시하고 chrony 시간 서비스에 대한 사용자 지정 설정을 지정하는
99-worker-custom.bu
라는 파일을 생성합니다.variant: openshift version: 4.17.0 metadata: name: 99-worker-custom labels: machineconfiguration.openshift.io/role: worker openshift: kernel_arguments: - loglevel=7 storage: files: - path: /etc/chrony.conf mode: 0644 overwrite: true contents: inline: | pool 0.rhel.pool.ntp.org iburst driftfile /var/lib/chrony/drift makestep 1.0 3 rtcsync logdir /var/log/chrony
참고99-worker-custom.bu
파일은 작업자 노드에 대한 머신 구성을 생성하도록 설정되어 있습니다. 컨트롤 플레인 노드에 배포하려면 역할을worker
에서master
로 변경하십시오. 이 두 가지 작업을 수행하려면 여러유형의 배포에 서로 다른 파일 이름을 사용하여 전체 프로세스를 반복할 수 있습니다.이전 단계에서 생성한 파일을 Butane으로 지정하여
MachineConfig
오브젝트를 생성합니다.$ butane 99-worker-custom.bu -o ./99-worker-custom.yaml
머신 구성을 완료하기 위해
MachineConfig
오브젝트 YAML 파일이 생성됩니다.-
향후
MachineConfig
오브젝트를 업데이트해야 하는 경우 Butane 구성을 저장합니다. 클러스터가 아직 작동하지 않은 경우 매니페스트 파일을 생성하고
MachineConfig
오브젝트 YAML 파일을openshift
디렉토리에 추가합니다. 클러스터가 이미 실행중인 경우 다음과 같이 파일을 적용합니다.$ oc create -f 99-worker-custom.yaml
1.2. day-1 커널 매개 변수 추가
day-2 활동으로 커널 매개 변수를 수정하는 것이 바람직하지만 초기 클러스터 설치 중에 모든 마스터 또는 작업자 노드에 커널 매개 변수를 추가할 수 있습니다. 시스템이 처음으로 부팅되기 전에 적용되도록 클러스터 설치 중에 커널 매개 변수를 추가해야하는 이유는 다음과 같습니다.
- 시스템을 시작하기 전에 몇 가지 낮은 수준의 네트워크 설정을 수행해야하는 경우
SELinux와 같은 기능을 비활성화하여 이 기능이 시스템에 영향을 미치지 않도록할 필요가 있는 경우
주의프로덕션에서 RHCOS에서 SELinux를 비활성화하는 것은 지원되지 않습니다. 노드에서 SELinux를 비활성화한 후에는 프로덕션 클러스터에서 다시 프로비저닝해야 합니다.
마스터 노드 또는 작업자 노드에 커널 매개 변수를 추가하기 위해 MachineConfig
객체를 생성하고 해당 객체를 클러스터 설정 중에 Ignition에서 사용하는 매니페스트 파일 세트에 삽입할 수 있습니다.
부팅시 RHEL 8 커널에 전달할 수 있는 매개 변수 목록은 Kernel.org 커널 매개 변수를 참조하십시오. 초기 OpenShift Container Platform 설치를 완료하기 위해 필요한 경우 이 절차를 사용하여 커널 매개 변수를 추가하는 것이 좋습니다.
프로세스
설치 프로그램이 포함된 디렉터리로 변경하고 클러스터에 대한 Kubernetes 매니페스트를 생성합니다.
$ ./openshift-install create manifests --dir <installation_directory>
- 커널 매개 변수를 작업자 또는 컨트롤 플레인 노드에 추가할지 여부를 결정합니다.
openshift
디렉터리에서 파일 (예:99-openshift-machineconfig-master-kargs.yaml
)을 작성하여 커널 설정을 추가할MachineConfig
객체를 정의합니다. 다음 예제에서는loglevel=7
커널 매개 변수를 컨트롤 플레인 노드에 추가합니다.$ cat << EOF > 99-openshift-machineconfig-master-kargs.yaml apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: labels: machineconfiguration.openshift.io/role: master name: 99-openshift-machineconfig-master-kargs spec: kernelArguments: - loglevel=7 EOF
커널 매개 변수를 작업자 노드에 추가하는 경우
master
를worker
로 변경할 수 있습니다. 마스터 및 작업자 노드 모두에 추가할 별도의 YAML 파일을 생성합니다.
이제 계속해서 클러스터를 만들 수 있습니다.
1.3. 노드에 커널 모듈 추가
대부분의 일반적인 하드웨어의 경우 컴퓨터가 시작되면 Linux 커널에 이러한 하드웨어를 사용하는 데 필요한 장치 드라이버 모듈이 포함됩니다. 그러나 일부 하드웨어의 경우 해당 모듈은 Linux에서 제공되지 않습니다. 따라서 각 호스트 컴퓨터에 대해 이러한 모듈을 제공하는 방법을 찾아야합니다. 이 단계에서는 OpenShift Container Platform 클러스터 노드에 대해 이를 수행하는 방법을 설명합니다.
이 프로세스에 따라 커널 모듈을 처음 배포할 때 현재 커널에서 모듈을 사용할 수 있게 됩니다. 새 커널이 설치되면 kmods-via-containers 소프트웨어가 다시 빌드되고 모듈이 배포되어 새 커널과 호환되는 버전의 모듈을 사용할 수 있습니다.
이 기능이 각 노드에서 모듈을 최신 상태로 유지하는 방법은 다음과 같습니다.
- 새 커널이 설치되었는지 감지하기 위해 부팅시 시작되는 각 노드에 systemd 서비스를 추가합니다.
- 새로운 커널이 감지되면 서비스는 모듈을 다시 빌드하여 커널에 설치합니다.
이 단계에 필요한 소프트웨어에 대한 자세한 내용은 kmods-via-containers github 사이트를 참조하십시오.
다음의 몇 가지 중요 사항에 유의하십시오.
- 이 단계는 기술 프리뷰입니다.
-
소프트웨어 툴과 샘플은 공식 RPM 형식으로 제공되지 않으며 현재 이 절차에 명시된 비공식
github.com
사이트에서만 구할 수 있습니다. - 이 절차를 통해 추가할 수 있는 타사 커널 모듈은 Red Hat에서 지원하지 않습니다.
-
이 절차에서는 커널 모듈을 빌드하는 데 필요한 소프트웨어가 RHEL 8 컨테이너에 배포됩니다. 노드가 새 커널을 가져 오면 각 노드에서 모듈이 자동으로 다시 빌드됩니다. 따라서 각 노드는 모듈을 다시 빌드하는 데 필요한 커널 및 관련 패키지가 포함된
yum
저장소에 액세스해야 합니다. 해당 콘텐츠는 유효한 RHEL 서브스크립션을 통해 효과적으로 사용할 수 있습니다.
1.3.1. 커널 모듈 컨테이너 빌드 및 테스트
커널 모듈을 OpenShift Container Platform 클러스터에 배포하기 전에 별도의 RHEL 시스템에서 프로세스를 테스트할 수 있습니다. 커널 모듈의 소스 코드, KVC 프레임 워크 및 kmod-via-containers 소프트웨어를 수집합니다. 다음으로 모듈을 빌드하고 테스트합니다. RHEL 8 시스템에서 이를 수행하려면 다음 프로세스를 따르십시오.
프로세스
RHEL 8 시스템을 등록합니다.
# subscription-manager register
RHEL 8 시스템에 서브스크립션을 연결합니다.
# subscription-manager attach --auto
소프트웨어 및 컨테이너를 빌드하는 데 필요한 소프트웨어를 설치합니다.
# yum install podman make git -y
kmod-via-containers
저장소를 복제합니다.저장소의 폴더를 만듭니다.
$ mkdir kmods; cd kmods
저장소를 복제합니다.
$ git clone https://github.com/kmods-via-containers/kmods-via-containers
RHEL 8 빌드 호스트에 KVC 프레임 워크 인스턴스를 설치하여 모듈을 테스트합니다.
kmods-via-container
systemd 서비스가 추가되어 로드됩니다.kmod-via-containers
디렉터리로 변경합니다.$ cd kmods-via-containers/
KVC 프레임워크 인스턴스를 설치합니다.
$ sudo make install
systemd 관리자 설정을 다시로드합니다.
$ sudo systemctl daemon-reload
커널 모듈의 소스 코드를 가져옵니다. 소스 코드는 제어할 수 없지만 다른 사람이 제공하는 타사 모듈을 빌드하는 데 사용될 수 있습니다. 다음과 같이 시스템에 복제할 수있는
kvc-simple-kmod
예제에 표시된 내용과 유사한 내용이 필요합니다.$ cd .. ; git clone https://github.com/kmods-via-containers/kvc-simple-kmod
설정 파일
simple-kmod.conf
을 편집하고 Dockerfile의 이름을Dockerfile.rhel
로 변경합니다.kvc-simple-kmod
디렉터리로 변경합니다.$ cd kvc-simple-kmod
Dockerfile의 이름을 바꿉니다.
$ cat simple-kmod.conf
Dockerfile 예
KMOD_CONTAINER_BUILD_CONTEXT="https://github.com/kmods-via-containers/kvc-simple-kmod.git" KMOD_CONTAINER_BUILD_FILE=Dockerfile.rhel KMOD_SOFTWARE_VERSION=dd1a7d4 KMOD_NAMES="simple-kmod simple-procfs-kmod"
커널 모듈의
kmods-via-containers @.service
인스턴스 (이 예제에서는simple-kmod
)를 만듭니다.$ sudo make install
kmods-via-containers @.service
인스턴스를 활성화합니다.$ sudo kmods-via-containers build simple-kmod $(uname -r)
systemd 서비스를 활성화하고 시작합니다.
$ sudo systemctl enable kmods-via-containers@simple-kmod.service --now
서비스 상태를 확인합니다.
$ sudo systemctl status kmods-via-containers@simple-kmod.service
출력 예
● kmods-via-containers@simple-kmod.service - Kmods Via Containers - simple-kmod Loaded: loaded (/etc/systemd/system/kmods-via-containers@.service; enabled; vendor preset: disabled) Active: active (exited) since Sun 2020-01-12 23:49:49 EST; 5s ago...
커널 모듈이 로드되었는지 확인하려면
lsmod
명령을 사용하여 모듈을 나열하십시오.$ lsmod | grep simple_
출력 예
simple_procfs_kmod 16384 0 simple_kmod 16384 0
선택사항. 다른 방법을 사용하여
simple-kmod
예제가 작동하는지 확인합니다.dmesg
를 사용하여 커널 링 버퍼에 "Hello world"메시지를 찾으십시오.$ dmesg | grep 'Hello world'
출력 예
[ 6420.761332] Hello world from simple_kmod.
/proc
에서simple-procfs-kmod
의 값을 확인합니다.$ sudo cat /proc/simple-procfs-kmod
출력 예
simple-procfs-kmod number = 0
spkut
명령을 실행하여 모듈에 대한 자세한 정보를 가져옵니다.$ sudo spkut 44
출력 예
KVC: wrapper simple-kmod for 4.18.0-147.3.1.el8_1.x86_64 Running userspace wrapper using the kernel module container... + podman run -i --rm --privileged simple-kmod-dd1a7d4:4.18.0-147.3.1.el8_1.x86_64 spkut 44 simple-procfs-kmod number = 0 simple-procfs-kmod number = 44
시스템이 부팅될 때 이 서비스는 새 커널이 실행 중인지를 확인합니다. 새 커널이 있으면 서비스는 새 버전의 커널 모듈을 빌드한 다음 로드합니다. 모듈이 이미 구축 된 경우 이를 로드합니다.
1.3.2. OpenShift Container Platform에 커널 모듈 프로비저닝
OpenShift Container Platform 클러스터를 처음 부팅할 때 커널 모듈을 활성화할 필요가 있는지 여부에 따라 다음 두 가지 방법 중 하나로 커널 모듈을 배포하도록 설정할 수 있습니다.
-
클러스터 설치시 커널 모듈 프로비저닝 (day-1):
MachineConfig
개체를 통해 콘텐츠를 작성하고 매니페스트 파일 세트와 함께openshift-install
에 제공할 수 있습니다. - Machine Config Operator를 통해 커널 모듈 프로비저닝 (day-2): 커널 모듈을 추가하기 위해 클러스터가 가동 될 때까지 대기할 경우 MCO (Machine Config Operator)를 통해 커널 모듈 소프트웨어를 배포할 수 있습니다.
두 경우 모두 새 커널이 감지되면 각 노드에서 커널 소프트웨어 패키지 및 관련 소프트웨어 패키지를 가져올 수 있어야 합니다. 해당 콘텐츠를 가져올 수 있도록 각 노드를 설정할 수있는 몇 가지 방법이 있습니다.
- 각 노드에 RHEL 인타이틀먼트를 제공합니다.
-
/ etc / pki / entitlement
디렉터리에서 기존 RHEL 호스트의 RHEL 인타이틀먼트를 취득하고 Ignition 설정을 빌드할 때 제공하는 다른 파일과 동일한 위치에 복사합니다. -
Dockerfile에서 커널 및 기타 패키지가 포함된
yum
저장소에 대한 포인터를 추가합니다. 여기에는 새로 설치된 커널과 일치해야하므로 새 커널 패키지가 포함되어 있어야합니다.
1.3.2.1. MachineConfig 개체를 통한 커널 모듈 프로비저닝
MachineConfig
개체로 커널 모듈 소프트웨어를 패키지하면 설치시 또는 Machine Config Operator를 통해 해당 소프트웨어를 작업자 또는 컨트롤 플레인 노드에 전달할 수 있습니다.
프로세스
RHEL 8 시스템을 등록합니다.
# subscription-manager register
RHEL 8 시스템에 서브스크립션을 연결합니다.
# subscription-manager attach --auto
소프트웨어를 빌드하는 데 필요한 소프트웨어를 설치합니다.
# yum install podman make git -y
커널 모듈 및 툴을 호스팅할 디렉터리를 생성합니다.
$ mkdir kmods; cd kmods
kmods-via-containers
소프트웨어를 가져옵니다:kmods-via-containers
저장소를 복제합니다.$ git clone https://github.com/kmods-via-containers/kmods-via-containers
kvc-simple-kmod
저장소를 복제합니다.$ git clone https://github.com/kmods-via-containers/kvc-simple-kmod
-
모듈 소프트웨어를 가져옵니다. 이 예에서는
kvc-simple-kmod
가 사용됩니다. 이전에 복제된 리포지토리를 사용하여 fakeroot 디렉터리를 만들고 Ignition을 통해 전달할 파일을 이 디렉터리에 배치합니다.
디렉터리를 만듭니다.
$ FAKEROOT=$(mktemp -d)
kmod-via-containers
디렉터리로 변경합니다.$ cd kmods-via-containers
KVC 프레임워크 인스턴스를 설치합니다.
$ make install DESTDIR=${FAKEROOT}/usr/local CONFDIR=${FAKEROOT}/etc/
kvc-simple-kmod
디렉터리로 변경합니다.$ cd ../kvc-simple-kmod
인스턴스를 생성합니다.
$ make install DESTDIR=${FAKEROOT}/usr/local CONFDIR=${FAKEROOT}/etc/
다음 명령을 실행하여 fakeroot 디렉토리를 복제하고 모든 심볼릭 링크를 대상 복사본으로 교체합니다.
$ cd .. && rm -rf kmod-tree && cp -Lpr ${FAKEROOT} kmod-tree
커널 모듈 트리를 포함하는 Butane 구성 파일
99-simple-kmod.bu
를 생성하고 systemd 서비스를 활성화합니다.참고Butane에 대한 자세한 내용은 “Butane 을 사용하여 머신 구성 생성”을 참조하십시오.
variant: openshift version: 4.17.0 metadata: name: 99-simple-kmod labels: machineconfiguration.openshift.io/role: worker 1 storage: trees: - local: kmod-tree systemd: units: - name: kmods-via-containers@simple-kmod.service enabled: true
- 1
- 컨트롤 플레인 노드에 배포하려면
worker
를master
로 변경합니다. 컨트롤 플레인 및 작업자 노드에 모두 배포하려면 각 노드 유형에 대해 이러한 지침의 나머지 부분을 한 번씩 수행합니다.
Butane을 사용하여 전달할 파일과 구성이 포함된 머신 구성 YAML 파일
99-simple-kmod.yaml
을 생성합니다.$ butane 99-simple-kmod.bu --files-dir . -o 99-simple-kmod.yaml
클러스터가 아직 작동하지 않은 경우 매니페스트 파일을 생성하고 해당 파일을
openshift
디렉터리에 추가합니다. 클러스터가 이미 실행중인 경우 다음과 같이 파일을 적용합니다.$ oc create -f 99-simple-kmod.yaml
노드는
kmods-via-containers@simple-kmod.service
서비스를 시작하고 커널 모듈이 로드됩니다.커널 모듈이 로드되었는지 확인하려면
oc debug node / <openshift-node>
를 사용 후chroot / host를
사용하여 노드에 로그인할 수 있습니다. 모듈을 나열하려면lsmod
명령을 사용합니다.$ lsmod | grep simple_
출력 예
simple_procfs_kmod 16384 0 simple_kmod 16384 0
1.4. 설치하는 동안 디스크 암호화 및 미러링
OpenShift Container Platform을 설치하는 동안 클러스터 노드에서 부팅 디스크 암호화 및 미러링을 활성화할 수 있습니다.
1.4.1. 디스크 암호화 정보
설치 시 컨트롤 플레인 및 컴퓨팅 노드에서 부팅 디스크에 대한 암호화를 활성화할 수 있습니다. OpenShift Container Platform은 Trusted Platform Module (TPM) v2 및 Tang 암호화 모드를 지원합니다.
- TPM v2
- 기본 모드입니다. TPM v2는 서버의 보안 암호화 프로세서에 암호를 저장합니다. 디스크가 서버에서 제거된 경우 이 모드를 사용하여 클러스터 노드에서 부팅 디스크 데이터의 암호 해독을 방지할 수 있습니다.
- Tang
- Tang 및 Clevis는 NBDE(네트워크 바인딩 디스크 암호화)를 활성화하는 서버 및 클라이언트 구성 요소입니다. 클러스터 노드의 부팅 디스크 데이터를 하나 이상의 Tang 서버에 바인딩할 수 있습니다. 이렇게 하면 노드가 Tang 서버에 액세스할 수 있는 보안 네트워크에 있지 않는 한 데이터의 암호 해독이 방지됩니다. Clevis는 클라이언트 측에서 암호 해독을 구현하는 데 사용되는 자동화된 암호 해독 프레임워크입니다.
Tang 암호화 모드를 사용하여 디스크를 암호화하는 것은 사용자 프로비저닝 인프라의 베어 메탈 및 vSphere 설치에만 지원됩니다.
이전 버전의 RHCOS(Red Hat Enterprise Linux CoreOS)에서는 Ignition 구성에 /etc/clevis.json
을 지정하여 디스크 암호화를 구성했습니다. 해당 파일은 OpenShift Container Platform 4.7 이상으로 생성된 클러스터에서 지원되지 않습니다. 다음 절차를 사용하여 디스크 암호화를 구성합니다.
TPM v2 또는 Tang 암호화 모드가 활성화되면 RHCOS 부팅 디스크는 LUKS2 형식을 사용하여 암호화됩니다.
이는 다음과 같은 기능을 제공합니다:
- 설치 관리자 프로비저닝 인프라, 사용자 프로비저닝 인프라 및 지원 설치 관리자 배포에서 사용 가능
지원 설치 프로그램 배포의 경우:
- 각 클러스터에는 Tang 또는 TPM 단일 암호화 방법만 있을 수 있습니다.
- 일부 또는 모든 노드에서 암호화를 활성화할 수 있습니다.
- Tang 임계값이 없습니다. 모든 서버가 유효하고 작동해야 합니다.
- 암호화는 워크로드 디스크가 아닌 설치 디스크에만 적용됩니다.
- RHCOS (Red Hat Enterprise Linux CoreOS) 시스템에서만 지원됨
- 매니페스트 설치 단계에서 디스크 암호화를 설정하여 첫 번째 부팅부터 디스크에 기록된 모든 데이터를 암호화합니다.
- 사용자 개입없이 암호 제공 가능
- FIPS 모드가 활성화된 경우 AES-256-XTS 암호화 또는 AES-256-CBC 사용
1.4.1.1. 암호화 임계값 구성
OpenShift Container Platform에서는 둘 이상의 Tang 서버에 대한 요구 사항을 지정할 수 있습니다. TPM v2 및 Tang 암호화 모드를 동시에 구성할 수도 있습니다. 이렇게 하면 TPM 보안 암호화 프로세서가 있고 Tang 서버에 보안 네트워크를 통해 액세스할 수 있는 경우에만 부팅 디스크 데이터 암호 해독이 활성화됩니다.
Butane 구성에서 threshold
속성을 사용하여 암호 해독에 필요한 최소 TPM v2 및 Tang 암호화 조건을 정의할 수 있습니다.
선언된 조건의 조합을 통해 명시된 값에 도달하면 임계값이 충족됩니다. 오프라인 프로비저닝의 경우 오프라인 서버는 포함된 광고를 사용하여 액세스되며 온라인 서버의 수가 설정 임계값을 충족하지 않는 경우에만 제공된 광고를 사용합니다.
예를 들어 다음 구성의 임계값
2
는 오프라인 서버를 백업으로 사용할 수 있는 두 개의 Tang 서버에 액세스하거나 TPM 보안 암호화 프로세서와 Tang 서버 중 하나에 액세스하여 도달할 수 있습니다.
디스크 암호화를 위한 Butane 구성의 예
variant: openshift version: 4.17.0 metadata: name: worker-storage labels: machineconfiguration.openshift.io/role: worker boot_device: layout: x86_64 1 luks: tpm2: true 2 tang: 3 - url: http://tang1.example.com:7500 thumbprint: jwGN5tRFK-kF6pIX89ssF3khxxX - url: http://tang2.example.com:7500 thumbprint: VCJsvZFjBSIHSldw78rOrq7h2ZF - url: http://tang3.example.com:7500 thumbprint: PLjNyRdGw03zlRoGjQYMahSZGu9 advertisement: "{\"payload\": \"...\", \"protected\": \"...\", \"signature\": \"...\"}" 4 threshold: 2 5 openshift: fips: true
- 1
- 이 필드를 클러스터 노드의 명령어 세트 아키텍처로 설정합니다. 일부 예로는
x86_64
,aarch64
또는ppc64le
이 있습니다. - 2
- Trusted Platform Module (TPM)을 사용하여 root 파일 시스템을 암호화하려면 이 필드를 포함합니다.
- 3
- 하나 이상의 Tang 서버를 사용하려면 이 섹션을 포함합니다.
- 4
- 선택 사항: 오프라인 프로비저닝을 위해 이 필드를 포함합니다. Ignition은 런타임 시 서버에서 광고를 가져오는 대신 Tang 서버 바인딩을 프로비저닝합니다. 이렇게 하면 프로비저닝 시 서버를 사용할 수 없습니다.
- 5
- 암호 해독을 수행하는 데 필요한 최소 TPM v2 및 Tang 암호화 조건을 지정합니다.
기본 threshold
는 1
입니다. 구성에 여러 암호화 조건을 포함하지만 임계값을 지정하지 않을 경우 조건이 하나라도 충족되면 암호 해독이 발생할 수 있습니다.
암호 해독에 TPM v2 및 Tang이 필요한 경우 threshold
속성의 값은 명시된 Tang 서버의 총 수와 1을 더한 값과 같아야 합니다. 임계값
이 낮으면 단일 암호화 모드를 사용하여 임계값에 도달할 수 있습니다. 예를 들어 tpm2
를 true
로 설정하고 두 개의 Tang 서버를 지정하는 경우 TPM 보안 암호화 프로세서를 사용할 수 없는 경우에도 두 Tang 서버에 액세스하여 임계값 2
를 충족할 수 있습니다.
1.4.2. 디스크 미러링 정보
컨트롤 플레인 및 작업자 노드에 OpenShift Container Platform을 설치하는 동안 부팅 디스크를 두 개 이상의 중복 스토리지 장치로 미러링할 수 있습니다. 하나의 장치를 계속 사용할 수 있는 경우 스토리지 장치 오류 후에도 노드가 계속 작동합니다.
미러링은 실패한 디스크 교체를 지원하지 않습니다. 미러를 성능이 저하되지 않은 초기 상태로 복원하도록 노드를 다시 프로비저닝합니다.
사용자 프로비저닝 인프라 배포의 경우 RHCOS 시스템에서만 미러링을 사용할 수 있습니다. 미러링 지원은 BIOS 또는 UEFI 및 ppc64le
노드에서 부팅된 x86_64
노드에서 사용할 수 있습니다.
1.4.3. 디스크 암호화 및 미러링 구성
OpenShift Container Platform을 설치하는 동안 암호화 및 미러링을 활성화하고 구성할 수 있습니다.
사전 요구 사항
- 설치 노드에 OpenShift Container Platform 설치 프로그램이 다운로드되어 있습니다.
설치 노드에 Butane이 설치되어 있습니다.
참고Butane은 OpenShift Container Platform에서 머신 구성을 작성하고 검증하기 위해 편리한 단기 구문을 제공하는 데 사용하는 명령줄 유틸리티입니다. 자세한 내용은 " Butane을 사용하여 머신 구성 생성"을 참조하십시오.
- Tang 교환 키의 지문을 생성하는 데 사용할 수 있는 RHEL (Red Hat Enterprise Linux) 8 시스템에 액세스할 수 있습니다.
프로세스
- TPM v2를 사용하여 클러스터를 암호화하려면 각 노드의 호스트 펌웨어에서 TPM v2 암호화를 활성화해야 하는지 확인합니다. 이는 대부분의 Dell 시스템에서 필요합니다. 특정 시스템에 대한 설명서를 확인합니다.
Tang을 사용하여 클러스터를 암호화하려면 다음 준비 단계를 수행하십시오.
- Tang 서버를 설정하거나 기존 서버에 액세스합니다. 자세한 내용은 Network-bound disk encryption에서 참조하십시오.
아직 설치되지 않은 경우 RHEL 8 시스템에
clevis
패키지를 설치합니다.$ sudo yum install clevis
RHEL 8 시스템에서 다음 명령을 실행하여 교환 키의 지문을 생성합니다.
http://tang1.example.com:7500
를 Tang 서버의 URL로 바꿉니다.$ clevis-encrypt-tang '{"url":"http://tang1.example.com:7500"}' < /dev/null > /dev/null 1
- 1
- 이 예에서
tangd.socket
은 Tang 서버의 포트7500
에서 수신 대기 중입니다.
참고clevis-encrypt-tang
명령은 교환 키의 지문을 생성합니다. 이 단계에서 암호화 명령에 데이터가 전달되지 않습니다./dev/null
은 일반 텍스트 대신 입력으로 존재합니다. 이 프로세스에 필요하지 않으므로 암호화된 출력은/dev/null
에도 전송됩니다.출력 예
The advertisement contains the following signing keys: PLjNyRdGw03zlRoGjQYMahSZGu9 1
- 1
- 교환 키의 지문입니다.
Do you wish to trust these keys? [ynYN]
프롬프트가 표시되면Y
를 입력합니다.선택 사항: 오프라인 Tang 프로비저닝의 경우:
curl
명령을 사용하여 서버에서 광고를 가져옵니다.http://tang2.example.com:7500
를 Tang 서버의 URL로 바꿉니다.$ curl -f http://tang2.example.com:7500/adv > adv.jws && cat adv.jws
예상 출력
{"payload": "eyJrZXlzIjogW3siYWxnIjogIkV", "protected": "eyJhbGciOiJFUzUxMiIsImN0eSI", "signature": "ADLgk7fZdE3Yt4FyYsm0pHiau7Q"}
암호화를 위해 Clevis에 알림 파일을 제공합니다.
$ clevis-encrypt-tang '{"url":"http://tang2.example.com:7500","adv":"adv.jws"}' < /dev/null > /dev/null
노드가 고정 IP 주소 지정으로 구성된 경우
coreos-installer iso customize --dest-karg-append
를 실행하거나 RHCOS 노드를 설치할 때coreos-installer
--append-karg
옵션을 사용하여 설치된 시스템의 IP 주소를 설정합니다. 네트워크에 필요한ip=
및 기타 인수를 추가합니다.중요정적 IP를 구성하는 일부 방법은 첫 번째 부팅 후 initramfs에 영향을 미치지 않으며 Tang 암호화에서는 작동하지 않습니다. 여기에는
coreos-installer
--copy-network
옵션,coreos-installer iso customize
--network-keyfile
옵션,coreos-installer pxe customize
--network-keyfile
옵션이 포함되어 있으며 설치 중에 라이브 ISO 또는 PXE 이미지의 커널 명령줄에ip=
인수를 추가합니다. 잘못된 고정 IP 구성으로 노드의 두 번째 부팅이 실패합니다.
설치 노드에서 설치 프로그램이 포함된 디렉터리로 변경하고 클러스터에 대한 Kubernetes 매니페스트를 생성합니다.
$ ./openshift-install create manifests --dir <installation_directory> 1
- 1
<installation_directory>
를 설치 파일을 저장하려는 디렉토리의 경로로 바꿉니다.
디스크 암호화, 미러링 또는 둘 다를 구성하는 Butane 구성을 생성합니다. 예를 들어 컴퓨팅 노드의 스토리지를 구성하려면
$HOME/clusterconfig/worker-storage.bu
파일을 생성합니다.부팅 장치의 butane config 예
variant: openshift version: 4.17.0 metadata: name: worker-storage 1 labels: machineconfiguration.openshift.io/role: worker 2 boot_device: layout: x86_64 3 luks: 4 tpm2: true 5 tang: 6 - url: http://tang1.example.com:7500 7 thumbprint: PLjNyRdGw03zlRoGjQYMahSZGu9 8 - url: http://tang2.example.com:7500 thumbprint: VCJsvZFjBSIHSldw78rOrq7h2ZF advertisement: "{"payload": "eyJrZXlzIjogW3siYWxnIjogIkV", "protected": "eyJhbGciOiJFUzUxMiIsImN0eSI", "signature": "ADLgk7fZdE3Yt4FyYsm0pHiau7Q"}" 9 threshold: 1 10 mirror: 11 devices: 12 - /dev/sda - /dev/sdb openshift: fips: true 13
- 1 2
- 컨트롤 플레인 구성의 경우 두 위치 모두에서
worker
를master
로 바꿉니다. - 3
- 이 필드를 클러스터 노드의 명령어 세트 아키텍처로 설정합니다. 일부 예로는
x86_64
,aarch64
또는ppc64le
이 있습니다. - 4
- root 파일 시스템을 암호화하려면 이 섹션을 포함합니다. 자세한 내용은 "디스크 암호화 정보"를 참조하십시오.
- 5
- Trusted Platform Module (TPM)을 사용하여 root 파일 시스템을 암호화하려면 이 필드를 포함합니다.
- 6
- 하나 이상의 Tang 서버를 사용하려면 이 섹션을 포함합니다.
- 7
- Tang 서버의 URL을 지정합니다. 이 예에서
tangd.socket
은 Tang 서버의 포트7500
에서 수신 대기 중입니다. - 8
- 이전 단계에서 생성된 교환 키 지문을 지정합니다.
- 9
- 선택 사항: 오프라인 Tang 서버의 알림을 유효한 JSON 형식으로 지정합니다.
- 10
- 암호 해독을 수행하려면 충족해야 하는 최소 TPM v2 및 Tang 암호화 조건 수를 지정합니다. 기본값은
1
입니다. 이 항목에 대한 자세한 내용은 "암호 임계값 구성"을 참조하십시오. - 11
- 부팅 디스크를 미러링하려면 이 섹션을 포함합니다. 자세한 내용은 "디스크 미러링 정보"를 참조하십시오.
- 12
- RHCOS가 설치될 디스크를 포함하여 부트 디스크 미러에 포함해야 하는 모든 디스크 장치를 나열합니다.
- 13
- 클러스터에서 FIPS 모드를 활성화하려면 이 지시문을 포함합니다.
중요클러스터의 FIPS 모드를 활성화하려면 FIPS 모드에서 작동하도록 구성된 RHEL(Red Hat Enterprise Linux) 컴퓨터에서 설치 프로그램을 실행해야 합니다. RHEL에서 FIPS 모드 구성에 대한 자세한 내용은 FIPS 모드에서 시스템 설치를 참조하십시오. 디스크 암호화 및 미러링을 모두 사용하도록 노드를 구성하는 경우 두 기능을 동일한 Butane 구성 파일에서 구성해야 합니다. FIPS 모드가 활성화된 노드에서 디스크 암호화를 구성하는 경우 별도의 매니페스트에서 FIPS 모드도 활성화된 경우에도 동일한 Butane 구성 파일에
fips
지시문을 포함해야 합니다.해당 Butane 구성 파일에서 컨트롤 플레인 또는 컴퓨팅 노드 매니페스트를 생성하여 <
installation_directory>/openshift
디렉터리에 저장합니다. 예를 들어 컴퓨팅 노드에 대한 매니페스트를 생성하려면 다음 명령을 실행합니다.$ butane $HOME/clusterconfig/worker-storage.bu -o <installation_directory>/openshift/99-worker-storage.yaml
디스크 암호화 또는 미러링이 필요한 각 노드 유형에 대해 이 단계를 반복합니다.
- 나중에 매니페스트를 업데이트해야 하는 경우 Butane 구성 파일을 저장합니다.
나머지 OpenShift Container Platform 설치를 계속합니다.
작은 정보디스크 암호화 또는 미러링과 관련된 오류 메시지가 설치 중에 RHCOS 노드에서 콘솔 로그를 모니터링할 수 있습니다.
중요추가 데이터 파티션을 구성하면 암호화가 명시적으로 요청되지 않는 한 암호화되지 않습니다.
검증
OpenShift Container Platform을 설치한 후 클러스터 노드에서 부팅 디스크 암호화 또는 미러링이 활성화되어 있는지 확인할 수 있습니다.
설치 호스트에서 디버그 Pod를 사용하여 클러스터 노드에 액세스합니다.
노드의 디버그 Pod를 시작합니다. 예를 들면 다음과 같습니다.
$ oc debug node/compute-1
디버그 쉘 내에서
/host
를 root 디렉터리로 설정합니다. 디버그 Pod는 Pod 내의/host
에 노드의 root 파일 시스템을 마운트합니다. root 디렉토리를/host
로 변경하면 노드의 실행 경로에 포함된 바이너리를 실행할 수 있습니다.# chroot /host
참고Red Hat Enterprise Linux CoreOS (RHCOS)를 실행하는 OpenShift Container Platform 클러스터 노드는 변경할 수 없으며 Operator를 통해 클러스터 변경 사항을 적용합니다. SSH를 사용하여 클러스터 노드에 액세스하는 것은 권장되지 않습니다. 그러나 OpenShift Container Platform API를 사용할 수 없거나
kubelet
이 대상 노드에서 제대로 작동하지 않는 경우oc
작업이 영향을 받습니다. 이러한 상황에서 대신ssh core @ <node>.<cluster_name>.<base_domain>
을 사용하여 노드에 액세스할 수 있습니다.
부팅 디스크 암호화를 구성한 경우 활성화되어 있는지 확인합니다.
디버그 쉘에서 노드의 root 매핑 상태를 검토합니다.
# cryptsetup status root
출력 예
/dev/mapper/root is active and is in use. type: LUKS2 1 cipher: aes-xts-plain64 2 keysize: 512 bits key location: keyring device: /dev/sda4 3 sector size: 512 offset: 32768 sectors size: 15683456 sectors mode: read/write
암호화된 장치에 바인딩된 Clevis 플러그인을 나열합니다.
# clevis luks list -d /dev/sda4 1
- 1
- 이전 단계의 출력에서
device
필드에 나열된 장치를 지정합니다.
출력 예
1: sss '{"t":1,"pins":{"tang":[{"url":"http://tang.example.com:7500"}]}}' 1
- 1
- 예제 출력에서 Tang 플러그인은
/dev/sda4
장치의 Shamir's Secret Sharing (SSS) Clevis 플러그인에서 사용합니다.
미러링을 구성한 경우 활성화되어 있는지 확인합니다.
디버그 쉘에서 노드의 소프트웨어 RAID 장치를 나열합니다.
# cat /proc/mdstat
출력 예
Personalities : [raid1] md126 : active raid1 sdb3[1] sda3[0] 1 393152 blocks super 1.0 [2/2] [UU] md127 : active raid1 sda4[0] sdb4[1] 2 51869632 blocks super 1.2 [2/2] [UU] unused devices: <none>
이전 명령의 출력에 나열된 각 소프트웨어 RAID 장치의 세부 정보를 검토합니다. 다음 예제에서는
/dev/md126
장치의 세부 정보를 나열합니다.# mdadm --detail /dev/md126
출력 예
/dev/md126: Version : 1.0 Creation Time : Wed Jul 7 11:07:36 2021 Raid Level : raid1 1 Array Size : 393152 (383.94 MiB 402.59 MB) Used Dev Size : 393152 (383.94 MiB 402.59 MB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Wed Jul 7 11:18:24 2021 State : clean 2 Active Devices : 2 3 Working Devices : 2 4 Failed Devices : 0 5 Spare Devices : 0 Consistency Policy : resync Name : any:md-boot 6 UUID : ccfa3801:c520e0b5:2bee2755:69043055 Events : 19 Number Major Minor RaidDevice State 0 252 3 0 active sync /dev/sda3 7 1 252 19 1 active sync /dev/sdb3 8
소프트웨어 RAID 장치에 마운트된 파일 시스템을 나열합니다.
# mount | grep /dev/md
출력 예
/dev/md127 on / type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /etc type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /usr type xfs (ro,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /sysroot type xfs (ro,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /var type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /var/lib/containers/storage/overlay type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /var/lib/kubelet/pods/e5054ed5-f882-4d14-b599-99c050d4e0c0/volume-subpaths/etc/tuned/1 type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /var/lib/kubelet/pods/e5054ed5-f882-4d14-b599-99c050d4e0c0/volume-subpaths/etc/tuned/2 type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /var/lib/kubelet/pods/e5054ed5-f882-4d14-b599-99c050d4e0c0/volume-subpaths/etc/tuned/3 type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /var/lib/kubelet/pods/e5054ed5-f882-4d14-b599-99c050d4e0c0/volume-subpaths/etc/tuned/4 type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /var/lib/kubelet/pods/e5054ed5-f882-4d14-b599-99c050d4e0c0/volume-subpaths/etc/tuned/5 type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md126 on /boot type ext4 (rw,relatime,seclabel)
예제 출력에서
/boot
파일 시스템은dev/md126
소프트웨어 RAID 장치에 마운트되고 root 파일 시스템은/dev/md127
에 마운트됩니다.
- 각 OpenShift Container Platform 노드 유형에 대한 확인 단계를 반복합니다.
추가 리소스
- TPM v2 및 Tang 암호화 모드에 대한 자세한 내용은 정책 기반 암호 해독을 사용하여 암호화된 볼륨의 자동화된 잠금 해제 구성을 참조하십시오.
1.4.4. RAID 지원 데이터 볼륨 구성
소프트웨어 RAID 파티셔닝을 활성화하여 외부 데이터 볼륨을 제공할 수 있습니다. OpenShift Container Platform은 데이터 보호 및 내결함성을 위해 RAID 0, RAID 1, RAID 4, RAID 5, RAID 6 및 RAID 10을 지원합니다. 자세한 내용은 "디스크 미러링 정보"를 참조하십시오.
OpenShift Container Platform 4.17은 설치 드라이브에서 소프트웨어 RAID를 지원하지 않습니다.
사전 요구 사항
- 설치 노드에 OpenShift Container Platform 설치 프로그램이 다운로드되어 있습니다.
설치 노드에 Butane이 설치되어 있습니다.
참고butane은 OpenShift Container Platform이 머신 구성 작성에 편리한 단기 구문을 제공하고 머신 구성에 대한 추가 검증을 수행하는 데 사용하는 명령줄 유틸리티입니다. 자세한 내용은 Butane을 사용하여 머신 구성 생성 섹션을 참조하십시오.
프로세스
소프트웨어 RAID를 사용하여 데이터 볼륨을 구성하는 Butane 구성을 만듭니다.
미러링된 부팅 디스크에 사용되는 것과 동일한 디스크에 RAID 1을 사용하여 데이터 볼륨을 구성하려면
$HOME/clusterconfig/raid1-storage.bu
파일을 생성합니다. 예를 들면 다음과 같습니다.미러링된 부팅 디스크의 RAID 1
variant: openshift version: 4.17.0 metadata: name: raid1-storage labels: machineconfiguration.openshift.io/role: worker boot_device: mirror: devices: - /dev/disk/by-id/scsi-3600508b400105e210000900000490000 - /dev/disk/by-id/scsi-SSEAGATE_ST373453LW_3HW1RHM6 storage: disks: - device: /dev/disk/by-id/scsi-3600508b400105e210000900000490000 partitions: - label: root-1 size_mib: 25000 1 - label: var-1 - device: /dev/disk/by-id/scsi-SSEAGATE_ST373453LW_3HW1RHM6 partitions: - label: root-2 size_mib: 25000 2 - label: var-2 raid: - name: md-var level: raid1 devices: - /dev/disk/by-partlabel/var-1 - /dev/disk/by-partlabel/var-2 filesystems: - device: /dev/md/md-var path: /var format: xfs wipe_filesystem: true with_mount_unit: true
보조 디스크에서 RAID 1을 사용하여 데이터 볼륨을 구성하려면
$HOME/clusterconfig/raid1-alt-storage.bu
파일을 생성합니다. 예를 들면 다음과 같습니다.보조 디스크에서 RAID 1
variant: openshift version: 4.17.0 metadata: name: raid1-alt-storage labels: machineconfiguration.openshift.io/role: worker storage: disks: - device: /dev/sdc wipe_table: true partitions: - label: data-1 - device: /dev/sdd wipe_table: true partitions: - label: data-2 raid: - name: md-var-lib-containers level: raid1 devices: - /dev/disk/by-partlabel/data-1 - /dev/disk/by-partlabel/data-2 filesystems: - device: /dev/md/md-var-lib-containers path: /var/lib/containers format: xfs wipe_filesystem: true with_mount_unit: true
이전 단계에서 생성한 Butane 구성에서 RAID 매니페스트를 생성하여 <
installation_directory>/openshift
디렉터리에 저장합니다. 예를 들어 컴퓨팅 노드에 대한 매니페스트를 생성하려면 다음 명령을 실행합니다.$ butane $HOME/clusterconfig/<butane_config>.bu -o <installation_directory>/openshift/<manifest_name>.yaml 1
- 1
- <
;butane_config
> 및 <manifest_name
>을 이전 단계의 파일 이름으로 바꿉니다. 예를 들어 보조 디스크의 경우raid1-alt-storage.bu
및raid1-alt-storage.yaml
입니다.
- 나중에 매니페스트를 업데이트해야 하는 경우 Butane config를 저장합니다.
- 나머지 OpenShift Container Platform 설치를 계속합니다.
1.4.5. CPU(VROC) 데이터 볼륨에서 Intel® 가상 RAID 구성
Intel® VROC는 하이브리드 RAID 유형으로, 유지 관리의 일부는 하드웨어로 오프로드되지만 운영 체제에 소프트웨어 RAID로 표시됩니다.
다음 절차에서는 Intel® VROC 지원 RAID1을 구성합니다.
사전 요구 사항
- Intel® Volume Management Device(VMD)가 활성화된 시스템이 있어야 합니다.
프로세스
다음 명령을 실행하여 Intel® Matrix Storage Manager(IMSM) RAID 컨테이너를 생성합니다.
$ mdadm -CR /dev/md/imsm0 -e \ imsm -n2 /dev/nvme0n1 /dev/nvme1n1 1
- 1
- RAID 장치 이름입니다. 이 예제에는 두 개의 장치가 나열되어 있습니다. 두 개 이상의 장치 이름을 제공하는 경우
-n
플래그를 조정해야 합니다. 예를 들어 세 개의 장치를 나열하면-n3
플래그가 사용됩니다.
컨테이너 내부에 RAID1 스토리지를 생성합니다.
다음 명령을 실행하여 실제 RAID1 볼륨 앞에 더미 RAID0 볼륨을 생성합니다.
$ mdadm -CR /dev/md/dummy -l0 -n2 /dev/imsm0 -z10M --assume-clean
다음 명령을 실행하여 실제 RAID1 배열을 생성합니다.
$ mdadm -CR /dev/md/coreos -l1 -n2 /dev/imsm0
다음 명령을 사용하여 RAID0 및 RAID1 멤버 배열을 중지하고 dummy RAID0 배열을 삭제합니다.
$ mdadm -S /dev/md/dummy \ mdadm -S /dev/md/coreos \ mdadm --kill-subarray=0 /dev/md/imsm0
다음 명령을 실행하여 RAID1 배열을 다시 시작합니다.
$ mdadm -A /dev/md/coreos /dev/md/imsm0
RAID1 장치에 RHCOS를 설치합니다.
다음 명령을 실행하여 IMSM 컨테이너의 UUID를 가져옵니다.
$ mdadm --detail --export /dev/md/imsm0
다음 명령을 실행하여 RHCOS를 설치하고
rd.md.uuid
커널 인수를 포함합니다.$ coreos-installer install /dev/md/coreos \ --append-karg rd.md.uuid=<md_UUID> 1 ...
- 1
- IMSM 컨테이너의 UUID입니다.
RHCOS를 설치하는 데 필요한 추가
coreos-installer
인수를 포함합니다.
1.5. chrony 타임 서비스 설정
chrony.conf
파일의 내용을 수정하고 해당 내용을 머신 구성으로 노드에 전달하여 chrony 타임 서비스 (chronyd
)에서 사용하는 시간 서버 및 관련 구성을 설정할 수 있습니다.
프로세스
chrony.conf
파일의 내용을 포함하여 Butane config를 만듭니다. 예를 들어 작업자 노드에 chrony를 구성하려면99-worker-chrony.bu
파일을 만듭니다.참고Butane에 대한 자세한 내용은 “Butane 을 사용하여 머신 구성 생성”을 참조하십시오.
variant: openshift version: 4.17.0 metadata: name: 99-worker-chrony 1 labels: machineconfiguration.openshift.io/role: worker 2 storage: files: - path: /etc/chrony.conf mode: 0644 3 overwrite: true contents: inline: | pool 0.rhel.pool.ntp.org iburst 4 driftfile /var/lib/chrony/drift makestep 1.0 3 rtcsync logdir /var/log/chrony
- 1 2
- 컨트롤 플레인 노드에서 두 위치에 있는
master
를worker
로 대체합니다. - 3
- 시스템 구성 파일에서
mode
필드의 8진수 값 모드를 지정합니다. 파일을 만들고 변경 사항을 적용하면mode
가 10진수 값으로 변환됩니다.oc get mc <mc-name> -o yaml
명령을 사용하여 YAML 파일을 확인할 수 있습니다. - 4
- DHCP 서버에서 제공하는 것과 같은 유효한 시간 소스를 지정합니다. 다른 방법으로
1.rhel.pool.ntp.org
,2.rhel.pool.ntp.org
또는3.rhel.pool.ntp.org
의 NTP 서버 중 하나를 지정할 수 있습니다.
Butane을 사용하여 노드에 전달할 구성이 포함된
MachineConfig
파일99-worker-chrony.yaml
을 생성합니다.$ butane 99-worker-chrony.bu -o 99-worker-chrony.yaml
다음 두 가지 방법 중 하나로 설정을 적용하십시오.
-
클러스터가 아직 실행되지 않은 경우 매니페스트 파일을 생성한 후
<installation_directory>/openshift
디렉터리에MachineConfig
개체 파일을 추가한 다음 클러스터를 계속 작성합니다. 클러스터가 이미 실행중인 경우 다음과 같은 파일을 적용합니다.
$ oc apply -f ./99-worker-chrony.yaml
-
클러스터가 아직 실행되지 않은 경우 매니페스트 파일을 생성한 후
1.6. 추가 리소스
2장. 방화벽 설정
방화벽을 사용하는 경우 OpenShift Container Platform이 작동하는데 필요한 사이트에 액세스할 수 있도록 방화벽을 설정해야 합니다. 일부 사이트에 대한 액세스 권한을 부여하고 Red Hat Insights, Telemetry 서비스, 클러스터를 호스팅하는 클라우드 및 특정 빌드 전략을 사용하는 경우 추가 액세스 권한을 부여해야 합니다.
2.1. OpenShift Container Platform의 방화벽 설정
OpenShift Container Platform을 설치하기 전에 OpenShift Container Platform에 필요한 사이트에 대한 액세스 권한을 부여하도록 방화벽을 설정해야 합니다. 방화벽을 사용하는 경우 OpenShift Container Platform이 작동하는 데 필요한 사이트에 액세스할 수 있도록 방화벽을 추가로 설정합니다.
작업자 노드에 비해 컨트롤러 노드에서만 실행되는 서비스에 대한 특별한 구성 고려 사항은 없습니다.
환경에 OpenShift Container Platform 클러스터 앞에 전용 로드 밸런서가 있는 경우 방화벽과 로드 밸런서 간의 허용 목록을 검토하여 클러스터에 대한 원하지 않는 네트워크 제한을 방지합니다.
프로세스
방화벽 허용 목록에 대해 다음 레지스트리 URL을 설정합니다.
URL 포트 함수 registry.redhat.io
443
코어 컨테이너 이미지를 제공합니다.
access.redhat.com
443
컨테이너 클라이언트에서
registry.access.redhat.com
에서 가져온 이미지를 확인하는 데 필요한 서명 저장소를 호스팅합니다. 방화벽 환경에서 이 리소스가 허용 목록에 있는지 확인합니다.registry.access.redhat.com
443
코어 컨테이너 이미지를 포함하여 Red Hat Ecosystem Catalog에 저장된 모든 컨테이너 이미지를 호스팅합니다.
quay.io
443
코어 컨테이너 이미지를 제공합니다.
cdn.quay.io
443
코어 컨테이너 이미지를 제공합니다.
cdn01.quay.io
443
코어 컨테이너 이미지를 제공합니다.
cdn02.quay.io
443
코어 컨테이너 이미지를 제공합니다.
cdn03.quay.io
443
코어 컨테이너 이미지를 제공합니다.
cdn04.quay.io
443
코어 컨테이너 이미지를 제공합니다.
cdn05.quay.io
443
코어 컨테이너 이미지를 제공합니다.
cdn06.quay.io
443
코어 컨테이너 이미지를 제공합니다.
sso.redhat.com
443
https://console.redhat.com
사이트에서sso.redhat.com
의 인증을 사용합니다.-
허용 목록에
cdn.quay.io
및cdn0[1-6].quay.io
대신 와일드카드*.quay.io
및*.openshiftapps.com
을 사용할 수 있습니다. -
와일드카드
*.access.redhat.com
을 사용하여 구성을 단순화하고registry.access.redhat.com
을 포함한 모든 하위 도메인이 허용되는지 확인할 수 있습니다. -
허용 목록에
quay.io
와 같은 사이트를 추가할 때*.quay.io
와 같은 와일드카드 항목을 거부 목록에 추가하지 마십시오. 대부분의 경우 이미지 레지스트리는 CDN(Content deliver network)을 사용하여 이미지를 제공합니다. 방화벽 블록에 액세스하면 초기 다운로드 요청이cdn01.quay.io
와 같은 호스트 이름으로 리디렉션될 때 이미지 다운로드가 거부됩니다.
-
허용 목록에
- 방화벽의 허용 목록에 빌드에 필요한 언어 또는 프레임워크에 대한 리소스를 제공하는 모든 사이트를 포함하도록 설정합니다.
Telemetry를 비활성화하지 않은 경우 Red Hat Insights에 액세스하려면 다음 URL에 대한 액세스 권한을 부여해야합니다
URL 포트 함수 cert-api.access.redhat.com
443
Telemetry 필수
api.access.redhat.com
443
Telemetry 필수
infogw.api.openshift.com
443
Telemetry 필수
console.redhat.com
443
Telemetry 및
insights-operator
필수클러스터를 호스팅하는 Alibaba Cloud, AWS(Amazon Web Services), Microsoft Azure 또는 Google Cloud Platform(GCP)을 사용하는 경우 클라우드 공급자 API 및 DNS를 제공하는 URL에 대한 액세스 권한을 부여해야 합니다.
클라우드 URL 포트 함수 Alibaba
*.aliyuncs.com
443
Alibaba Cloud 서비스 및 리소스에 액세스하는 데 필요합니다. Alibaba endpoints_config.go 파일을 검토하여 사용하는 리전에서 허용할 정확한 끝점을 찾습니다.
AWS
aws.amazon.com
443
AWS 환경에서 클러스터를 설치하고 관리하는 데 사용됩니다.
*.amazonaws.com
또는 AWS API에 와일드카드를 사용하지 않도록 선택하는 경우 허용 목록에 다음 URL을 포함해야 합니다.
443
AWS 서비스 및 리소스에 액세스하는데 필요합니다. AWS 문서에서 AWS Service Endpoints 를 검토하여 사용하는 리전에서 허용할 정확한 끝점을 찾습니다.
ec2.amazonaws.com
443
AWS 환경에서 클러스터를 설치하고 관리하는 데 사용됩니다.
events.amazonaws.com
443
AWS 환경에서 클러스터를 설치하고 관리하는 데 사용됩니다.
iam.amazonaws.com
443
AWS 환경에서 클러스터를 설치하고 관리하는 데 사용됩니다.
route53.amazonaws.com
443
AWS 환경에서 클러스터를 설치하고 관리하는 데 사용됩니다.
*.s3.amazonaws.com
443
AWS 환경에서 클러스터를 설치하고 관리하는 데 사용됩니다.
*.s3.<aws_region>.amazonaws.com
443
AWS 환경에서 클러스터를 설치하고 관리하는 데 사용됩니다.
*.s3.dualstack.<aws_region>.amazonaws.com
443
AWS 환경에서 클러스터를 설치하고 관리하는 데 사용됩니다.
sts.amazonaws.com
443
AWS 환경에서 클러스터를 설치하고 관리하는 데 사용됩니다.
sts.<aws_region>.amazonaws.com
443
AWS 환경에서 클러스터를 설치하고 관리하는 데 사용됩니다.
tagging.us-east-1.amazonaws.com
443
AWS 환경에서 클러스터를 설치하고 관리하는 데 사용됩니다. 이 끝점은 클러스터가 배포된 리전에 관계없이 항상
us-east-1
입니다.ec2.<aws_region>.amazonaws.com
443
AWS 환경에서 클러스터를 설치하고 관리하는 데 사용됩니다.
elasticloadbalancing.<aws_region>.amazonaws.com
443
AWS 환경에서 클러스터를 설치하고 관리하는 데 사용됩니다.
servicequotas.<aws_region>.amazonaws.com
443
필수 항목입니다. 서비스 배포 할당량을 확인하는 데 사용됩니다.
tagging.<aws_region>.amazonaws.com
443
태그 형식으로 AWS 리소스에 대한 메타데이터를 할당할 수 있습니다.
*.cloudfront.net
443
CloudFront에 대한 액세스를 제공하는 데 사용됩니다. AWS STS(Security Token Service) 및 프라이빗 S3 버킷을 사용하는 경우 CloudFront에 대한 액세스를 제공해야 합니다.
GCP
*.googleapis.com
443
GCP 서비스 및 리소스에 액세스하는 데 필요합니다. API에서 허용할 끝점을 찾으려면 GCP 설명서에서 Cloud Endpoints 를 검토하십시오.
accounts.google.com
443
GCP 계정에 액세스하는 데 필요합니다.
Microsoft Azure
management.azure.com
443
Microsoft Azure 서비스 및 리소스에 액세스하는 데 필요합니다. Microsoft Azure 설명서에서 API를 허용할 끝점을 찾으려면 Microsoft Azure REST API 참조를 확인하십시오.
*.blob.core.windows.net
443
Ignition 파일을 다운로드하는 데 필요합니다.
login.microsoftonline.com
443
Microsoft Azure 서비스 및 리소스에 액세스하는 데 필요합니다. Microsoft Azure 설명서에서 Azure REST API 참조를 검토하여 API에서 허용할 끝점을 찾습니다.
다음 URL을 허용 목록에 추가하십시오.
URL 포트 함수 *.apps.<cluster_name>.<base_domain>
443
설치 중에 ingress 와일드 카드를 설정하지 않으면 기본 클러스터 라우트에 액세스하는데 필요합니다.
api.openshift.com
443
클러스터 토큰과 클러스터에 업데이트를 사용할 수 있는지 확인하는 데 필요합니다.
console.redhat.com
443
클러스터 토큰에 필요합니다.
mirror.openshift.com
443
미러링된 설치 콘텐츠 및 이미지에 액세스하는 데 필요합니다. Cluster Version Operator에는 단일 기능 소스만 필요하지만 이 사이트는 릴리스 이미지 서명의 소스이기도합니다.
quayio-production-s3.s3.amazonaws.com
443
AWS에서 Quay 이미지 콘텐츠에 액세스하는데 필요합니다.
rhcos.mirror.openshift.com
443
RHCOS (Red Hat Enterprise Linux CoreOS) 이미지를 다운로드하는 데 필요합니다.
sso.redhat.com
443
https://console.redhat.com
사이트에서sso.redhat.com
의 인증을 사용합니다.storage.googleapis.com/openshift-release
443
릴리스 이미지 서명 소스입니다 (Cluster Version Operator에는 단일 기능 소스만 필요)
Operator는 상태 확인을 수행하기 위해 경로 액세스가 필요합니다. 특히 인증 및 웹 콘솔 Operator는 두 경로에 연결하여 경로가 작동하는지 확인합니다. 클러스터 관리자이고
* .apps. <cluster_name>.<base_domain>
을 허용하지 않으려면 다음 경로를 허용하십시오.-
oauth-openshift.apps.<cluster_name>.<base_domain>
-
canary-openshift-ingress-canary.apps.<cluster_name>.<base_domain>
-
console-openshift-console.apps. <cluster_name>.<base_domain>
또는 필드가 비어 있지 않은 경우consoles.operator/cluster
객체의spec.route.hostname
필드에 지정된 호스트 이름입니다.
-
선택적 타사 콘텐츠에 대해 다음 URL을 허용 목록에 추가합니다.
URL 포트 함수 registry.connect.redhat.com
443
모든 타사 이미지 및 인증된 Operator에 필요합니다.
rhc4tp-prod-z8cxf-image-registry-us-east-1-evenkyleffocxqvofrk.s3.dualstack.us-east-1.amazonaws.com
443
registry.connect.redhat.com
에서 호스팅되는 컨테이너 이미지에 대한 액세스 제공oso-rhc4tp-docker-registry.s3-us-west-2.amazonaws.com
443
Sonatype Nexus, F5 Big IP Operator에 필요합니다.
기본 NTP(Red Hat Network Time Protocol) 서버를 사용하는 경우 다음 URL을 허용합니다.
-
1.rhel.pool.ntp.org
-
2.rhel.pool.ntp.org
-
3.rhel.pool.ntp.org
-
기본 Red Hat NTP 서버를 사용하지 않는 경우 플랫폼의 NTP 서버를 확인하고 방화벽에서 허용합니다.
2.2. OpenShift Container Platform 네트워크 흐름 매트릭스
네트워크 흐름 매트릭스는 OpenShift Container Platform 서비스로의 수신 흐름을 설명합니다. 매트릭스의 네트워크 정보는 베어 메탈 및 클라우드 환경 모두에 적합합니다. 네트워크 흐름 매트릭스의 정보를 사용하여 수신 트래픽을 관리하는 데 도움이 됩니다. 수신 트래픽을 필수 흐름으로 제한하여 네트워크 보안을 개선할 수 있습니다.
원시 CSV 콘텐츠를 보거나 다운로드하려면 이 리소스 를 참조하십시오.
또한 수신 트래픽을 관리할 때 다음과 같은 동적 포트 범위를 고려하십시오.
-
9000-9999
: 호스트 수준 서비스 -
30000-32767
: Kubernetes 노드 포트 -
49152-65535
: 동적 또는 개인 포트
네트워크 흐름 매트릭스는 기본 OpenShift Container Platform 설치를 위한 수신 트래픽 흐름을 설명합니다. Red Hat Marketplace에서 사용할 수 있는 선택적 Operator와 같은 추가 구성 요소의 네트워크 흐름을 설명하지 않습니다. 매트릭스는 호스팅된 컨트롤 플레인, Red Hat build of MicroShift 또는 독립 실행형 클러스터에는 적용되지 않습니다.
방향 | 프로토콜 | 포트 | 네임스페이스 | 서비스 | Pod | 컨테이너 | 노드 역할 | 선택 사항 |
---|---|---|---|---|---|---|---|---|
Ingress | TCP | 22 | 호스트 시스템 서비스 | sshd | master | TRUE | ||
Ingress | TCP | 53 | openshift-dns | dns-default | dnf-default | dns | master | FALSE |
Ingress | TCP | 80 | openshift-ingress | router-default | router-default | 라우터 | master | FALSE |
Ingress | TCP | 111 | 호스트 시스템 서비스 | rpcbind | master | TRUE | ||
Ingress | TCP | 443 | openshift-ingress | router-default | router-default | 라우터 | master | FALSE |
Ingress | TCP | 1936 | openshift-ingress | router-default | router-default | 라우터 | master | FALSE |
Ingress | TCP | 2379 | openshift-etcd | etcd | etcd | etcdctl | master | FALSE |
Ingress | TCP | 2380 | openshift-etcd | healthz | etcd | etcd | master | FALSE |
Ingress | TCP | 5050 | openshift-machine-api | ironic-proxy | ironic-proxy | master | FALSE | |
Ingress | TCP | 6080 | openshift-kube-apiserver | kube-apiserver | kube-apiserver-insecure-readyz | master | FALSE | |
Ingress | TCP | 6180 | openshift-machine-api | metal3-state | metal3 | metal3-httpd | master | FALSE |
Ingress | TCP | 6183 | openshift-machine-api | metal3-state | metal3 | metal3-httpd | master | FALSE |
Ingress | TCP | 6385 | openshift-machine-api | ironic-proxy | ironic-proxy | master | FALSE | |
Ingress | TCP | 6388 | openshift-machine-api | metal3-state | metal3 | metal3-httpd | master | FALSE |
Ingress | TCP | 6443 | openshift-kube-apiserver | apiserver | kube-apiserver | kube-apiserver | master | FALSE |
Ingress | TCP | 8080 | openshift-network-operator | network-operator | network-operator | master | FALSE | |
Ingress | TCP | 8798 | openshift-machine-config-operator | machine-config-daemon | machine-config-daemon | machine-config-daemon | master | FALSE |
Ingress | TCP | 9001 | openshift-machine-config-operator | machine-config-daemon | machine-config-daemon | kube-rbac-proxy | master | FALSE |
Ingress | TCP | 9099 | openshift-cluster-version | cluster-version-operator | cluster-version-operator | cluster-version-operator | master | FALSE |
Ingress | TCP | 9100 | openshift-monitoring | node-exporter | node-exporter | kube-rbac-proxy | master | FALSE |
Ingress | TCP | 9103 | openshift-ovn-kubernetes | ovn-kubernetes-node | ovnkube-node | kube-rbac-proxy-node | master | FALSE |
Ingress | TCP | 9104 | openshift-network-operator | 메트릭 | network-operator | network-operator | master | FALSE |
Ingress | TCP | 9105 | openshift-ovn-kubernetes | ovn-kubernetes-node | ovnkube-node | kube-rbac-proxy-ovn-metrics | master | FALSE |
Ingress | TCP | 9107 | openshift-ovn-kubernetes | egressip-node-healthcheck | ovnkube-node | ovnkube-controller | master | FALSE |
Ingress | TCP | 9108 | openshift-ovn-kubernetes | ovn-kubernetes-control-plane | ovnkube-control-plane | kube-rbac-proxy | master | FALSE |
Ingress | TCP | 9192 | openshift-cluster-machine-approver | machine-approver | machine-approver | kube-rbac-proxy | master | FALSE |
Ingress | TCP | 9258 | openshift-cloud-controller-manager-operator | machine-approver | cluster-cloud-controller-manager | cluster-cloud-controller-manager | master | FALSE |
Ingress | TCP | 9444 | openshift-kni-infra | haproxy | haproxy | master | FALSE | |
Ingress | TCP | 9445 | openshift-kni-infra | haproxy | haproxy | master | FALSE | |
Ingress | TCP | 9447 | openshift-machine-api | metal3-baremetal-operator | master | FALSE | ||
Ingress | TCP | 9537 | 호스트 시스템 서비스 | crio-metrics | master | FALSE | ||
Ingress | TCP | 9637 | openshift-machine-config-operator | kube-rbac-proxy-crio | kube-rbac-proxy-crio | kube-rbac-proxy-crio | master | FALSE |
Ingress | TCP | 9978 | openshift-etcd | etcd | etcd | etcd-metrics | master | FALSE |
Ingress | TCP | 9979 | openshift-etcd | etcd | etcd | etcd-metrics | master | FALSE |
Ingress | TCP | 9980 | openshift-etcd | etcd | etcd | etcd | master | FALSE |
Ingress | TCP | 10250 | 호스트 시스템 서비스 | kubelet | master | FALSE | ||
Ingress | TCP | 10256 | openshift-ovn-kubernetes | ovnkube | ovnkube | ovnkube-controller | master | FALSE |
Ingress | TCP | 10257 | openshift-kube-controller-manager | kube-controller-manager | kube-controller-manager | kube-controller-manager | master | FALSE |
Ingress | TCP | 10258 | openshift-cloud-controller-manager-operator | cloud-controller | cloud-controller-manager | cloud-controller-manager | master | FALSE |
Ingress | TCP | 10259 | openshift-kube-scheduler | scheduler | openshift-kube-scheduler | kube-scheduler | master | FALSE |
Ingress | TCP | 10260 | openshift-cloud-controller-manager-operator | cloud-controller | cloud-controller-manager | cloud-controller-manager | master | FALSE |
Ingress | TCP | 10300 | openshift-cluster-csi-drivers | csi-livenessprobe | csi-driver-node | CSI-driver | master | FALSE |
Ingress | TCP | 10309 | openshift-cluster-csi-drivers | csi-node-driver | csi-driver-node | csi-node-driver-registrar | master | FALSE |
Ingress | TCP | 10357 | openshift-kube-apiserver | openshift-kube-apiserver-healthz | kube-apiserver | kube-apiserver-check-endpoints | master | FALSE |
Ingress | TCP | 17697 | openshift-kube-apiserver | openshift-kube-apiserver-healthz | kube-apiserver | kube-apiserver-check-endpoints | master | FALSE |
Ingress | TCP | 18080 | openshift-kni-infra | CoreDNS | CoreDNS | master | FALSE | |
Ingress | TCP | 22623 | openshift-machine-config-operator | machine-config-server | machine-config-server | machine-config-server | master | FALSE |
Ingress | TCP | 22624 | openshift-machine-config-operator | machine-config-server | machine-config-server | machine-config-server | master | FALSE |
Ingress | UDP | 53 | openshift-dns | dns-default | dnf-default | dns | master | FALSE |
Ingress | UDP | 111 | 호스트 시스템 서비스 | rpcbind | master | TRUE | ||
Ingress | UDP | 6081 | openshift-ovn-kubernetes | OVN-kubernetesgenve | master | FALSE | ||
Ingress | TCP | 22 | 호스트 시스템 서비스 | sshd | worker | TRUE | ||
Ingress | TCP | 53 | openshift-dns | dns-default | dnf-default | dns | worker | FALSE |
Ingress | TCP | 80 | openshift-ingress | router-default | router-default | 라우터 | worker | FALSE |
Ingress | TCP | 111 | 호스트 시스템 서비스 | rpcbind | worker | TRUE | ||
Ingress | TCP | 443 | openshift-ingress | router-default | router-default | 라우터 | worker | FALSE |
Ingress | TCP | 1936 | openshift-ingress | router-default | router-default | 라우터 | worker | FALSE |
Ingress | TCP | 8798 | openshift-machine-config-operator | machine-config-daemon | machine-config-daemon | machine-config-daemon | worker | FALSE |
Ingress | TCP | 9001 | openshift-machine-config-operator | machine-config-daemon | machine-config-daemon | kube-rbac-proxy | worker | FALSE |
Ingress | TCP | 9100 | openshift-monitoring | node-exporter | node-exporter | kube-rbac-proxy | worker | FALSE |
Ingress | TCP | 9103 | openshift-ovn-kubernetes | ovn-kubernetes-node | ovnkube-node | kube-rbac-proxy-node | worker | FALSE |
Ingress | TCP | 9105 | openshift-ovn-kubernetes | ovn-kubernetes-node | ovnkube-node | kube-rbac-proxy-ovn-metrics | worker | FALSE |
Ingress | TCP | 9107 | openshift-ovn-kubernetes | egressip-node-healthcheck | ovnkube-node | ovnkube-controller | worker | FALSE |
Ingress | TCP | 9537 | 호스트 시스템 서비스 | crio-metrics | worker | FALSE | ||
Ingress | TCP | 9637 | openshift-machine-config-operator | kube-rbac-proxy-crio | kube-rbac-proxy-crio | kube-rbac-proxy-crio | worker | FALSE |
Ingress | TCP | 10250 | 호스트 시스템 서비스 | kubelet | worker | FALSE | ||
Ingress | TCP | 10256 | openshift-ovn-kubernetes | ovnkube | ovnkube | ovnkube-controller | worker | TRUE |
Ingress | TCP | 10300 | openshift-cluster-csi-drivers | csi-livenessprobe | csi-driver-node | CSI-driver | worker | FALSE |
Ingress | TCP | 10309 | openshift-cluster-csi-drivers | csi-node-driver | csi-driver-node | csi-node-driver-registrar | worker | FALSE |
Ingress | TCP | 18080 | openshift-kni-infra | CoreDNS | CoreDNS | worker | FALSE | |
Ingress | UDP | 53 | openshift-dns | dns-default | dnf-default | dns | worker | FALSE |
Ingress | UDP | 111 | 호스트 시스템 서비스 | rpcbind | worker | TRUE | ||
Ingress | UDP | 6081 | openshift-ovn-kubernetes | OVN-kubernetesgenve | worker | FALSE |
3장. Linux 제어 그룹 버전 1(cgroup v1) 활성화
OpenShift Container Platform 4.14부터 OpenShift Container Platform은 클러스터에서 Linux 제어 그룹 버전 2 (cgroup v2)를 사용합니다. OpenShift Container Platform 4.13 또는 이전 버전에서 cgroup v1을 사용하는 경우 OpenShift Container Platform 4.17으로 마이그레이션해도 cgroup 구성이 버전 2로 자동으로 업데이트되지 않습니다. OpenShift Container Platform 4.14 이상을 새로 설치하면 기본적으로 cgroup v2가 사용됩니다. 그러나 설치 시 Linux 제어 그룹 버전 1 (cgroup v1)을 활성화할 수 있습니다. OpenShift Container Platform에서 cgroup v1을 활성화하면 클러스터의 모든 cgroup v2 컨트롤러 및 계층이 비활성화됩니다.
cgroup v1은 더 이상 사용되지 않는 기능입니다. 더 이상 사용되지 않는 기능은 여전히 OpenShift Container Platform에 포함되어 있으며 계속 지원됩니다. 그러나 이 기능은 향후 릴리스에서 제거될 예정이므로 새로운 배포에는 사용하지 않는 것이 좋습니다.
OpenShift Container Platform에서 더 이상 사용되지 않거나 삭제된 주요 기능의 최신 목록은 OpenShift Container Platform 릴리스 노트에서 더 이상 사용되지 않고 삭제된 기능 섹션을 참조하십시오.
cgroup v2는 Linux cgroup API의 현재 버전입니다. cgroup v2는 통합 계층 구조, 더 안전한 하위 트리 위임, pressure stayll Information 과 같은 새로운 기능, 향상된 리소스 관리 및 격리를 포함하여 cgroup v1에 비해 몇 가지 개선 사항을 제공합니다. 그러나 cgroup v2에는 cgroup v1과 다른 CPU, 메모리, I/O 관리 특성이 있습니다. 따라서 일부 워크로드는 cgroup v2를 실행하는 클러스터의 메모리 또는 CPU 사용량에 약간의 차이가 있을 수 있습니다.
node.config
오브젝트를 편집하여 필요에 따라 cgroup v1과 cgroup v2 간에 전환할 수 있습니다. 자세한 내용은 이 섹션의 "추가 리소스"의 "노드에서 Linux cgroup 구성"을 참조하십시오.
3.1. 설치 중 Linux cgroup v1 활성화
설치 매니페스트를 생성하여 클러스터를 설치할 때 Linux 제어 그룹 버전 1(cgroup v1)을 활성화할 수 있습니다.
cgroup v1은 더 이상 사용되지 않는 기능입니다. 더 이상 사용되지 않는 기능은 여전히 OpenShift Container Platform에 포함되어 있으며 계속 지원됩니다. 그러나 이 기능은 향후 릴리스에서 제거될 예정이므로 새로운 배포에는 사용하지 않는 것이 좋습니다.
OpenShift Container Platform에서 더 이상 사용되지 않거나 삭제된 주요 기능의 최신 목록은 OpenShift Container Platform 릴리스 노트에서 더 이상 사용되지 않고 삭제된 기능 섹션을 참조하십시오.
프로세스
node.config
오브젝트를 생성하거나 편집하여v1
cgroup을 지정합니다.apiVersion: config.openshift.io/v1 kind: Node metadata: name: cluster spec: cgroupMode: "v2"
- 정상적으로 설치를 진행합니다.
Legal Notice
Copyright © 2024 Red Hat, Inc.
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.