[Networking] 쿠버네티스 클러스터의 네트워킹 설정 가이드

IMKUNYOUNG·2024년 6월 30일
0

KCNA

목록 보기
16/56

이번 글에서는 쿠버네티스 클러스터에서 마스터 노드와 워커 노드에 필요한 네트워킹 설정에 대해 알아보겠습니다. 쿠버네티스 클러스터는 마스터 노드와 워커 노드로 구성되며, 각 노드는 네트워크에 연결된 인터페이스가 최소 하나 있어야 합니다. 이러한 설정은 클러스터의 안정성과 보안을 보장하기 위해 필수적입니다.

네트워크 인터페이스 설정

각 노드의 네트워크 인터페이스에는 고유한 IP 주소와 MAC 주소가 필요합니다. 특히, 기존 가상 머신(VM)을 복제하여 노드를 만들 경우, 이 설정을 주의 깊게 확인해야 합니다. 중복된 MAC 주소나 IP 주소는 네트워크 충돌을 일으킬 수 있기 때문입니다.

열어야 할 포트

API 서버 (kube-apiserver):

  • 6443 포트: 마스터 노드는 이 포트에서 API 서버의 연결을 수락합니다. 워커 노드, kubectl 도구, 외부 사용자 및 모든 다른 컨트롤 플레인 구성 요소들은 이 포트를 통해 kube-apiserver에 접근합니다.

kubelet:

  • 10250 포트: 마스터 노드와 워커 노드의 kubelet이 이 포트에서 대기합니다. kubelet은 마스터 노드에도 존재할 수 있습니다.

kube-scheduler:

  • 10259 포트

kube-controller-manager:

  • 10257 포트

워커 노드의 서비스 포트

  • 30000-32767 포트: 외부 접근을 위한 서비스를 이 포트 범위에서 노출합니다.

etcd 서버

  • 2379 포트: etcd 서버가 이 포트에서 대기합니다. 여러 개의 마스터 노드가 있는 경우, 모든 마스터 노드에서도 이 포트를 열어야 합니다.
  • 2380 포트: etcd 클라이언트 간의 통신을 위해 추가로 열어야 하는 포트입니다.
구성포트번호
API 서버 (kube-apiserver)6443
kubelet10250
kube-scheduler10259
kube-controller-manager10257
워커 노드의 서비스 포트30000-32767
etcd 서버2379, 2380

네트워크 보안 설정

쿠버네티스 문서 페이지에서 열어야 할 포트 목록을 확인할 수 있습니다. 네트워크 설정 시 방화벽, IP 테이블 규칙 또는 GCP, Azure, AWS와 같은 클라우드 환경의 네트워크 보안 그룹에서 이 포트를 고려해야 합니다. 문제가 발생할 경우, 이 부분을 먼저 확인하는 것이 문제 해결의 첫걸음이 될 수 있습니다.

방화벽 설정 예시

방화벽에서 포트를 열 때의 예시는 다음과 같습니다:

# API 서버 포트 열기
sudo iptables -A INPUT -p tcp --dport 6443 -j ACCEPT

# kubelet 포트 열기
sudo iptables -A INPUT -p tcp --dport 10250 -j ACCEPT

# etcd 포트 열기
sudo iptables -A INPUT -p tcp --dport 2379 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 2380 -j ACCEPT

# 서비스 포트 범위 열기
sudo iptables -A INPUT -p tcp --dport 30000:32767 -j ACCEPT

마무리

쿠버네티스 클러스터의 안정적이고 안전한 운영을 위해 네트워킹 설정은 매우 중요합니다. 각 노드의 네트워크 인터페이스 설정을 철저히 하고, 필요한 포트를 정확하게 열어주어야 합니다. 이를 통해 클러스터의 성능과 보안을 최적화할 수 있습니다. 네트워킹 설정을 잘못하면 클러스터가 불안정해질 수 있으므로, 반드시 쿠버네티스 문서를 참조하여 정확한 설정을 진행하시기 바랍니다.

0개의 댓글