목차
포트 번호 범위 : 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도 같이 할당되어 포트 중복 이슈가 발생할 수 있음
'Infrastructure > Docker & Kubernetes' 카테고리의 다른 글
[kubernetes] nexus docker 저장소 생성 후 push & pull (0) | 2024.04.20 |
---|---|
[kubernetes] pv, pvc, storageClass 개념 (0) | 2024.04.16 |
[kubernetes] CI&CD 5탄 - Github Actions Workflow 작성하기 (2) | 2024.04.07 |
[kubernetes] CI&CD 2탄 - Spring-cloud를 활용해 만든 msa framework를 k8s에 배포하기 (0) | 2024.04.07 |
[kubernetes] CI&CD 4탄 - Argocd Github 연동 및 APP 설정으로 k8s환경에 배포하기 (2) | 2024.04.06 |