0. 작업 순서
1) nginx 배포
2) service 배포
3) 접속 테스트
1. Nginx 배포하기
- yaml파일을 활용해서 nginx를 배포해보겠다.
yaml 파일 생성
# vi nginx-deploy.yaml # 아래 내용으로 yaml 파일 생성
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-server
labels:
app: server
spec:
replicas: 2 # pod 생성 수
selector:
matchLabels:
app: server
template:
metadata:
name: nginx-server
labels:
app: server
spec:
containers:
- name: server
image: nginx:latest
ports:
- containerPort: 80 # 컨테이너 port 80 오픈
- pod 생성 후 Cluster 내부에서는 통신이 가능하지만, 컨테이너의 port를 열어주지 않으면 외부와 통신이 불가능하다.
- nginx는 기본적으로 80 포트를 오픈하기 때문에 추가로 컨테이너 port 80을 열어주었다.
nginx 배포
# kubectl create -f nginx-deployment.yaml # 생성한 yaml로 nginx 배포

pod 2개를 포함하는 deployment 1개가 실행되는 것을 확인
2. Service 배포하기
- yaml파일을 생성하여 service를 배포해보겠다.
yaml 파일 생성
# vi nginx-service.yaml # 아래 내용으로 yaml 파일 생성
apiVersion: v1
kind: Service
metadata:
name: nginx-service
labels:
app: server
spec:
selector:
app: server
ports:
- protocol: TCP
port: 80
targetPort: 80
--- # 하나의 파일에 여러 내용을 "---" 을 통해 작성할 수 있다.
apiVersion: v1
kind: Service
metadata:
name: nginx-service-node
labels:
app: server
spec:
selector:
app: server
type: NodePort # 지정하지 않으면 기본적으로 ClusterIP로 생성됨
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30080 # nodePort를 통해 외부와 통신가능
- nginx-service와 nginx-service 두개를 작성하였습니다.
- 차이점은 nodePort 유무입니다.
Service 배포
# kubectl create -f nginx-service.yaml

서비스 2개가 생기는 것 확인
- service의 type에서 nginx가 ClusterIP, NodePort 두 개가 생성되어 있다.
- 기본적으로 지정하지 않으면 ClusterIP로 생성됩니다.(외부 통신 불가 상태)
- NodePort에서 80:30080/TCP 는 ServicePort:NodePort/Protocol 형태이다.
3. 테스트 결과
- 저는 virtualbox로 구성되어 있는 환경이라 포트포워딩을 걸어 준 상태입니다.
정상 접속 확인

정리

- 맨 처음 deployment로 2개 pod가 생성되었고 1,2번 node에 각 1개씩 pod가 배포되었다.
- NodePort로 설정된 Service로 인해 외부에서 접속이 가능한 상태이다.
- 각 노드에 pod가 배포되어 있기 때문에 각 노드IP에 30080 포트로 접속이 가능하다.
'IT > Kubernetes' 카테고리의 다른 글
| [kubernetes/쿠버네티스] Prometheus & Grafana 설치 (2) | 2024.07.24 |
|---|---|
| [Kubernetes/쿠버네티스] pod 동작 flow (0) | 2024.07.23 |
| [kubernetes/쿠버네티스] 명령어 자동완성 설정 (0) | 2024.06.21 |
| [kubernetes/쿠버네티스] pod 관리 명령어 (0) | 2024.06.21 |
| [Kubernetes/쿠버네티스] 설치, 구축하기 (0) | 2024.06.14 |