본문으로 건너뛰기

Node 네트워크


Node 네트워크

모든 노드 공통

  • 네트워크 인터페이스: 최소 1개 이상의 네트워크 인터페이스를 가져야한다.
  • IP 주소: 노드가 가진 네트워크 인터페이스에 IP가 할당되어 있어야 한다.
  • 고유한 식별자
    • Hostname: 클러스터 내에서 유일해야한다. (cf: 이건 proxmox에서도 그랬음 -> Proxmox 호스트네임 주의점)
    • Mac 주소: 클러스터 내에서 유일해야한다.
정보
  • 위의 요구사항들을 보고 엥? 너무 당연한 얘기들 아닌가? 자동으로 되는거 아닌가? 라고 생각할 수 있다.
  • 하지만, 가장 많이 겪는 오류 중 하나이다.
  • 예를들어 VM을 Clone 하여 노드를 생성할 경우, MAC 주소나 Hostname이 중복되어 안되는 경우가 매우 많다. (매우 주의)

포트 구성

cluster-networking1

마스터 노드

프로토콜포트 범위프로세스/컴포넌트설명
TCP6443Kubernetes API Server워커 노드, Kubectl, 외부 사용자 등 모든 요청이 들어오는 통로
TCP2379-2380etcd server client API2379: 클라이언트 통신용2380: 다중 마스터 구성 시 etcd 노드 간 데이터 동기화용
TCP10250Kubelet API마스터 노드 자체의 Kubelet 통신용 (마스터에도 Kubelet 존재 가능)
TCP10259kube-scheduler스케줄러 동작 포트
TCP10257kube-controller-manager컨트롤러 매니저 동작 포트

워커 노드

프로토콜포트 범위프로세스/컴포넌트설명
TCP10250Kubelet API마스터 노드(API Server)가 워커 노드의 상태를 확인하고 명령을 내릴 때 사용
TCP30000-32767NodePort Services외부 사용자가 배포된 서비스(애플리케이션)에 접근하기 위해 예약된 포트 범위

클러스터를 구성할 때 위 포트들이 열려있는지 확인해야하는 요소

  1. 노드 자체 방화벽
  2. iptables 규칙
  3. (클라우드 환경일 경우) 보안 그룹

알아두어야 할 네트워크 명령어 (중요)

ip link
  • 시스템에 존재하는 모든 네트워크 인터페이스(예: eth0, docker0, cni0)의 목록과 상태(UP/DOWN), MAC 주소를 확인하는 명령어
ip addr
  • 각 네트워크 인터페이스에 할당된 IP 주소 정보를 확인하는 명령어
ip addr add 192.168.1.10/24 dev eth0
  • eth0 인터페이스에 192.168.1.10 IP 주소를 수동으로 할당하는 명령어
  • 디버깅 할 때, 인터페이스에 IP 주소가 할당되어있지 않을 경우에 사용한다.
ip route
  • 현재 설정된 라우팅 테이블을 확인한다. 패킷이 목적지로 가기 위해 어떤 인터페이스와 게이트웨이를 거치는지 파악할 때 사용한다.
ip route add 192.168.1.0/24 via 192.168.2.1
  • 192.168.1.0/24 대역으로 가는 패킷을 192.168.2.1 게이트웨이를 통해 보내도록 정적 경로(Static Route)를 추가하는 명령어
  • 디버깅 할 때, 라우팅 테이블이 제대로 설정되어있지 않을 경우 이를 설정할 때 사용한다.
arp
  • ARP 테이블을 확인합니다. 특정 IP 주소와 매핑된 물리적 MAC 주소를 확인할 때 사용한다.
    • ARP - IP 주소를 MAC 주소로 바꿔주는 프로토콜
  • 디버깅 할 때, IP 주소와 MAC 주소가 맞지 않을 경우 이를 설정할 때 사용한다.
netstat -plnt
  • 현재 서버에서 수신 대기 중(Listening)인 TCP 포트와 해당 프로그램을 확인한다.
    • -p: 프로그램(PID/이름) 표시
    • -l: Listening 상태만 표시
    • -n: 호스트명 대신 숫자로 표시 (IP:Port)
    • -t: TCP 프로토콜만 표시
  • 쿠버네티스 필수 포트(6443, 10250 등)가 정상적으로 열려있는지 확인할 때 사용한다.
route
  • 라우팅 테이블을 확인합니다 (ip route와 유사하지만 구형 명령어이며, net-tools 패키지에 포함됨).
cat /proc/sys/net/ipv4/ip_forward
  • 리눅스 커널의 IP 포워딩 활성화 여부를 확인한다.
    • 1: 활성화 (패킷을 다른 인터페이스로 전달 가능)
    • 0: 비활성화
  • 쿠버네티스 파드(Pod) 간 통신을 위해 반드시 1로 설정되어 있어야 합니다.

레퍼런스