7.5. 네트워크 문제 해결
7.5.1. 네트워크 인터페이스 선택 방법 링크 복사링크가 클립보드에 복사되었습니다!
베어 메탈 또는 둘 이상의 NIC(네트워크 인터페이스 컨트롤러)가 있는 가상 머신에 설치할 경우 OpenShift Container Platform이 Kubernetes API 서버와의 통신에 사용하는 NIC는 노드가 부팅될 때 systemd에서 실행하는 nodeip-configuration.service 서비스 유닛에 의해 결정됩니다. nodeip-configuration.service 는 기본 경로와 연결된 인터페이스에서 IP를 선택합니다.
nodeip-configuration.service 서비스에서 올바른 NIC를 확인한 후 서비스는 /etc/systemd/system/kubelet.service.d/20-nodenet.conf 파일을 만듭니다. 20-nodenet.conf 파일은 KUBELET_NODE_IP 환경 변수를 서비스가 선택한 IP 주소로 설정합니다.
kubelet 서비스가 시작되면 20-nodenet.conf 파일에서 환경 변수 값을 읽고 IP 주소를 --node-ip kubelet 명령줄 인수 값으로 설정합니다. 결과적으로 kubelet 서비스는 선택한 IP 주소를 노드 IP 주소로 사용합니다.
설치 후 하드웨어 또는 네트워킹을 재구성하거나 노드 IP가 기본 라우팅 인터페이스에서 제공되지 않는 네트워킹 레이아웃이 있는 경우 재부팅 후 nodeip-configuration.service 서비스에서 다른 NIC를 선택할 수 있습니다. 경우에 따라 oc get nodes -o wide 명령의 출력에서 INTERNAL-IP 열을 검토하여 다른 NIC가 선택되었는지 감지할 수 있습니다.
다른 NIC가 선택되어 네트워크 통신이 중단되거나 잘못 구성된 경우 EtcdCertSignerControllerDegraded 오류가 표시될 수 있습니다. NODEIP_HINT 변수를 포함하는 힌트 파일을 생성하여 기본 IP 선택 논리를 덮어쓸 수 있습니다. 자세한 내용은 선택 사항: 기본 노드 IP 선택 논리를 참조하십시오.
7.5.1.1. 선택 사항: 기본 노드 IP 선택 논리를 덮어 쓰기 링크 복사링크가 클립보드에 복사되었습니다!
기본 IP 선택 논리를 재정의하려면 NODEIP_HINT 변수를 포함하는 힌트 파일을 생성하여 기본 IP 선택 논리를 재정의할 수 있습니다. 힌트 파일을 만들면 NODEIP_HINT 변수에 지정된 IP 주소 서브넷의 인터페이스에서 특정 노드 IP 주소를 선택할 수 있습니다.
예를 들어 노드에 주소가 10.0.0.10/24 인 eth0 과 주소가 192.0.2.5/24 인 eth1 이 있고 기본 경로는 eth0 (10.0.0.10)을 가리킵니다. 노드 IP 주소는 일반적으로 10.0.0.10 IP 주소를 사용합니다.
사용자는 서브넷의 알려진 IP를 가리키도록 NODEIP_HINT 변수를 구성할 수 있습니다(예: 192.0.2.1 과 같은 서브넷 게이트웨이) 다른 서브넷 192.0.2.0/24 가 선택되도록 합니다. 따라서 eth1 의 192.0.2.5 IP 주소가 노드에 사용됩니다.
다음 절차에서는 기본 노드 IP 선택 논리를 재정의하는 방법을 보여줍니다.
프로세스
힌트 파일을
/etc/default/nodeip-configuration파일에 추가합니다. 예를 들면 다음과 같습니다.NODEIP_HINT=192.0.2.1중요-
노드의 정확한 IP 주소를 힌트로 사용하지 마십시오(예:
192.0.2.5). 노드의 정확한 IP 주소를 사용하면 노드가 힌트 IP 주소를 사용하는 경우 올바르게 구성되지 않습니다. - 힌트 파일의 IP 주소는 올바른 서브넷을 결정하는 데만 사용됩니다. 힌트 파일에 나타나는 결과로 트래픽을 수신하지 않습니다.
-
노드의 정확한 IP 주소를 힌트로 사용하지 마십시오(예:
다음 명령을 실행하여
base-64로 인코딩된 콘텐츠를 생성합니다.$ echo -n 'NODEIP_HINT=192.0.2.1' | base64 -w0출력 예
Tk9ERUlQX0hJTlQ9MTkyLjAuMCxxxx==클러스터를 배포하기 전에
master및worker역할에 대한 머신 구성 매니페스트를 생성하여 힌트를 활성화합니다.99-nodeip-hint-master.yaml
apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: labels: machineconfiguration.openshift.io/role: master name: 99-nodeip-hint-master spec: config: ignition: version: 3.2.0 storage: files: - contents: source: data:text/plain;charset=utf-8;base64,<encoded_content>1 mode: 0644 overwrite: true path: /etc/default/nodeip-configuration- 1 1
<encoded_contents>를/etc/default/nodeip-configuration파일의 base64 인코딩 콘텐츠(예:Tk9ERUlQX0hJTlQ9MTkyLjAuMC=== )로 바꿉니다. 쉼표 이후와 인코딩된 콘텐츠 전에는 공백을 사용할 수 없습니다.99-nodeip-hint-worker.yaml
apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: labels: machineconfiguration.openshift.io/role: worker name: 99-nodeip-hint-worker spec: config: ignition: version: 3.2.0 storage: files: - contents: source: data:text/plain;charset=utf-8;base64,<encoded_content>1 mode: 0644 overwrite: true path: /etc/default/nodeip-configuration<encoded_contents>를/etc/default/nodeip-configuration파일의 base64 인코딩 콘텐츠(예:Tk9ERUlQX0hJTlQ9MTkyLjAuMC=== )로 바꿉니다. 쉼표 이후와 인코딩된 콘텐츠 전에는 공백을 사용할 수 없습니다.
-
클러스터 구성을 저장하는 디렉터리에 매니페스트를 저장합니다(예:
~/clusterconfigs). - 클러스터를 배포합니다.