3개의 노드로 구성된 쿠버네티스 클러스터에서 replica가 2인 pod를 배포하고 NodePort로 서비스를 등록했더니 접근했던 노드에서 실행 중인 pod만 응답을 하는 현상이 발생했다.

 

정상적인 상황이라면 어떤 노드로 접근을 하던지 서비스는 실행중인 pod 중 하나로 연결을 해줘야 하는데, 접근을 시도했던 IP의 노드에서 동작중인 pod에만 접근이 가능하였다. 3개 노드 중 pod가 떠있지 않은 노드로 연결을 시도하면 pod에 연결되지 못해 응답을 받지 못했다.

 

이를 해결하기 위해 두 가지 설정을 체크해야 한다.

 

1. Forward 방화벽 설정

노드로 접근한 트래픽을 다른 노드로 Forward 하기 위해 노드들에서 방화벽을 허용해야 한다.

# iptables -P FORWARD ACCEPT

 

2. CNI CIDR 설정

나의 경우에는 CNI로 Calico를 사용했다. Calico 설치 시 pod의 네트워크 CIDR를 설정하는데 이 값을 kubernetes의 CIDR와 매칭 시켜야 한다.

...
  - name: CALICO_IPV4POOL_CIDR
    value: 10.5.0.0/16
....

 

+ Recent posts