외부에 따로 구성하지 않고, Master Node에 유저를 설정했으면 Master Node에서만 작업하면 된다.
1. Deployment 리소스(배포 및 관리) 생성
쿠버네티스 클러스터에 Deployment 리소스를 생성한다.
# Deployment 파드 생성
kubectl create deploy tc --image=consol/tomcat-8.0 --replicas=5
# 파드 삭제
kubectl delete deploy tc
- create deploy : Deployment 리소스를 생성
- tc : 생성할 Deployment의 이름
- --image=consol/tomcat-8.0 : Deployment에 사용할 컨테이너 이미지를 지정
- --replicas=5 : Deployment에 의해 생성될 파드의 수를 지정
2. Service 리소스 생성
쿠버네티스에 Service 리소스를 생성하여, 특정 Deployment에 접근할 수 있도록 외부로 노출하는 작업을 수행한다.
# 서비스 생성
kubectl expose deploy tc --type=NodePort --port=80 --target-port=8080
# 서비스 삭제
kubectl delete svc tc
- expose : Kubernetes 리소스를 외부에 노출시키기 위해 사용되는 명령어(Deployment, ReplicaSet, Pod 등의 리소스를 대상으로 사용)
- deploy tc : 노출할 리소스를 지정 (Deployment에서 실행 중인 파드에 접근할 수 있도록 노출)
- --type=NodePort : 생성할 Service의 유형을 지정, NodePort는 클러스터의 모든 노드에서 고정된 포트를 통해 Service에 접근할 수 있도록 한다. 이를 통해 외부에서 클러스터에 접근할 수 있게 된다.
- --port=80 : 클러스터 내부에서 Service가 사용하는 포트로 현재 톰캣의 Deployment 리소스를 80으로 설정했기 때문에 클러스터 내부에서는 80 포트로 접근하게 되면 톰캣과 연결된다.
- --target-port=8080 : 클러스트 내부의 Service가 내부적으로 연결할 파드의 포트를 설정한다. 톰캣이 8080 포트로 실행되고 있다면, target-port도 동일하게 맞춰줘야 한다.
* 접속 흐름
[Client] -> [Node Port]로 접속 -> [Port]로 서비스 연결 -> [Target Port] 톰캣 연결
-- type 옵션 | 설명 |
ClusterIP (기본 값) | 클러스터 내부에서만 접근 가능하게 설정(외부 접근 x) |
NodePort | 클러스터 외부에서 특정 노드의 IP와 노드포트를 통해 접근할 수 있도록 설정 |
LoadBalancer | 클라우드 환경에서 로드밸런서를 설정하여 외부에 공개된 IP를 통해 접근할 수 있도 설정 |
ExternalName | DNS 이름을 서비스로 설정 |
정상적으로 등록되었는지 확인
# 파드, 서비스 조회
kubectl get pod,svc
- 정상적으로 Running이 되지 않는다면, 스왑 비활성화 또는 해당 이미지가 CPU 아키텍처와 맞는지 확인 필요
kubectl describe pod {파드 ID}
3. 접속 확인
외부에서 접속할 수 있는 Node Port의 경우 랜덤 생성된다. 해당 포트는 30000부터 32767 범위 안에서 설정
위 사진에서 80:32259/TCP 라고 나와있는데 해당 포트가 Node Port이다.
# 접속
<워커 노드 IP>:32259
반응형
'DevOps > Docker, K8s' 카테고리의 다른 글
[k8s] 쿠버네티스의 파드(Pod) 조회(상세조회) (0) | 2024.10.23 |
---|---|
[k8s] 클러스터 구축 및 파드 네트워크 설정(Cilium) (0) | 2024.10.20 |
[k8s] 쿠버네티스 사용을 위한 kubeadm, kubelet 및 kubectl 설치 방법 (0) | 2024.04.10 |
[Docker] Private 레지스트리 구축 및 사용 방법 (0) | 2024.03.18 |
[Docker] 이미지 Push 방법 (0) | 2024.03.15 |