• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

NodePort 사용 시 파드가 실행 중인 워커 노드 IP로만 접속됩니다.

22.08.08 18:03 작성 조회수 491

1

안녕하세요!
강의와 약간 다르지만 VirtualBox가 아닌 GCP 환경에서 실습을 하고 있습니다.
GCP 인스턴스 세 대에서 kubeadm으로 마스터 노드 1대, 워커 노드 2대를 구성하여 Calico까지 설치를 하였는데요, 여기까지는 큰 문제 없이 진행되었습니다.
 
이 다음으로는 제가 ArgoCD를 한번 사용해보려고 공식 문서 설치 가이드에 따라 ArgoCD를 설치하고, 서비스를 NodePort로 설정하였습니다. (ArgoCD가 아닌 제가 직접 만든 서버에서도 아래 말씀 드릴 문제와 동일한 네트워크 문제가 있어 ArgoCD의 문제는 아닌 것 같습니다. 그냥 임의의 NodePort 서비스 하나 만들었다고 생각해주시면 감사하겠습니다.)
 
 
위 사진에서처럼 모든 파드가 Running 상태이고, argocd-server 서비스가 NodePort로 올라가 있습니다.
여기에서 argocd-server 파드가 worker-2 노드에서 실행중인데, 제 로컬 PC에서 브라우저나 curl로 <worker-2 IP>:31434 로는 잘 연결이 되는데, <worker-1 IP>:31434 또는 <master IP> :31434로는 연결이 되질 않습니다.
구글링을 여러 번 해봤는데 iptables -P FORWARD ACCCEPT 명령어를 사용하면 해결이 된다고 하는데 이 방법으로도 해결이 안됩니다 ㅜㅜ
 
강의 네트워킹 파트 보면서 어디에 문제가 있는지 찾아보려고 몇 번 시도해본 바로는,
1. 파드가 실행중인 worker-2에서 curl <서비스 클러스터 IP>:80 은 잘 됩니다.
2. 파드가 실행중이지 않은 master, worker-1에서 curl <서비스 클러스터 IP>:80 은 연결이 안됩니다.(Connection timed out)
3. worker-1과 worker-2에서 각각 tcpdump -i eth0 port 31434 실행시키고 <worker-1의 IP>:31434 접속 시도했을 때 worker-1에서는 패킷이 찍히지만 worker-2에서는 패킷이 찍히지 않습니다. 아마 아래 강의자료 그림에서처럼 파드가 없는 노드(우측)에는 패킷이 들어왔는데 파드가 실행중인 노드(좌측)에는 패킷이 들어오지 않은 것을 보면 Route나 Overlay 단계에서 문제가 있는 것 같습니다.
 
 
 
내용 추가
위에 패킷을 찍어볼 때 원래 인터페이스 지정을 안했어서 tcpdump -i cali427d2dd59fe -new tcp -vv로 다시 했더니 worker-2에 패킷이 들어오는 건 확인했습니다. 그런데 체크섬 incorrect라는 로그가 많이 보여서 내용이 정상인지는 잘 모르겠습니다... 혹시 이 다음에 어떤 걸 확인해야 할까요?

답변 1

답변을 작성해보세요.

0

안녕하세요.

일단 Cailco 자체가 모든 환경에서 똑같이 동작하지는 않습니다.

저도 해보진 않았지만 GCP용 Cailco 설치는 별도로 있고요

https://projectcalico.docs.tigera.io/getting-started/kubernetes/self-managed-public-cloud/gce

이렇게 클라우드 환경마다 설치방법바 기능이 다르기 때문에

제 실습과는 다르게 동작할 수는 있습니다.

 

exitia님의 프로필

exitia

질문자

2022.08.10

안녕하세요! 제가 GCP 방화벽 규칙에서 기본값으로 열려있는 TCP, UDP 외에 IPIP를 추가하지 않아서 생기던 문제였습니다. 답변해주신 덕분에 Calico 문서 다시한번 정독하다가 IPIP 방화벽을 빼먹었다는 걸 알아서 규칙에 추가하니 잘 작동하네요. 답변 감사합니다~