728x90

 

포트 번호 범위 : 0 ~ 65535

잘 알려진 포트 (Well-Known Ports): 0부터 1023까지의 범위이다. 이 포트들은 특정 서비스에 할당되어 있으며, 예를 들어 HTTP (포트 80), HTTPS (포트 443), SSH (포트 22) 등이 있다.

등록된 포트 (Registered Ports): 1024부터 49151까지의 범위이다. 이 포트들은 사용자 및 프로그램에 의해 사용될 수 있지만, IANA (Internet Assigned Numbers Authority)에 의해 등록되어 있다.

동적 및 개인 포트 (Dynamic and/or Private Ports): 49152부터 65535까지의 범위이다. 이 포트들은 일반적으로 프로그램이 동적으로 할당하거나 개인 네트워크 통신에 사용된다.

 

서비스 타입 종류

서비스 타입은 ClusterIP, NodePort, LoadBlaancer 이 세 가지만 비교해보았다.

ClusterIP

1) proxy(포트포워딩)
 - 이슈
   ① master node에서 밖에 사용할 수 없음
   ② 변경된 내용의 pod를 apply한 경우 지속적으로 포트포워딩 명령어를 실행해야함.

 - 사용법 : nohup kubectl port-forward --address=0.0.0.0 -n woodpercker-ns service/postgresql-service 5432:5432>> /opt/apps/test.out 2>&1 &

nohup 포트포워딩의 가장 큰 단점은 containerd를 restart하거나 실행중인 노드 서버의 네트워크가 불안정해졌을 때 연결이 끊어질 수 있다. 이 경우 nohup 명령어를 지속적으로 입력해주어야하는 번거로움이 있다.

2) pods의 nodeselector로 실행 node서버 고정 후 pod와 svc에 동일한 labels로 externalIPs를 이용한 node:port로 외부접속
 - 이슈: 우리가 제공할 모든 helm chart service의 externalIPs를 고객사별 노드IP로 수정해야함.

 

NodePort

 - 이슈: 30000~32767까지만 사용 가능(모든 구축된 k8s 클러스터 IP에서 접속 가능)

 

LoadBalancer

 - 로드밸런서(metalLB)로 externalIP 자동할당하여 외부접속
* 단점
 ① 중복IP 사용불가 : 이 때문에 오히려 프로그램 설치 후 제공할 수 있는 개수의 한계가 발생(수동으로 ip를 ssh 접속 가능한 IP로 사용한 경우 사용 불가였음.)
 ② 초기의 loadbalancer ip 사용자지정 가능 그러나 한 번 할당된 IP는 변경할 수 없음. 변경하려면 로드밸런서를 완전 삭제하고 재설치해야 가능
(단, 종료된 서비스의 IP를 다른 서비스가 동일하게 할당 받을 수 있고 이후 종료된 서비스를 재시작하면 할당받지 않은 다음 번호 +1로 할당됌)
 ③ 클라우드 환경에 적합(온프레미스에 비해 자유롭기 때문)

* 주의 사항

  spec:
    type: LoadBalancer
    allocateLoadBalancerNodePorts: false  # 이 옵션을 넣지 않으면 nodePort도 같이 할당되어 포트 중복 이슈가 발생할 수 있음

 

728x90
TOP