이 시나리오에서는 Kubectl을 사용하여 배포, 복제 컨트롤러를 생성 및 시작하고 yaml 정의를 작성하여 서비스를 통해 노출하는 방법을 배웁니다.
YAML 정의는 배포를 위해 예약되는 Kubernetes 객체를 정의합니다. 객체를 업데이트하고 클러스터에 재배포하여 구성을 변경할 수 있습니다.
1 디플로이먼트 생성하기
디플로이먼트 객체는 가장 흔한 쿠버네티스 객체이다.
디플로이먼트 객체는 이름과 라벨과 함께 필요한 컨테이너 사양을 정의한다.
80포트에서 실행하는 도커이미지 katacoda/docker-http-server 를 사용해서 webapp1이라는 어플리케이션을 실행하는 방법을 정의 한 YAML
apiVersion: apps/v1
kind: Deployment
metadata:
name: webapp1
spec:
replicas: 1
selector:
matchLabels:
app: webapp1
template:
metadata:
labels:
app: webapp1
spec:
containers:
- name: webapp1
image: katacoda/docker-http-server:latest
ports:
- containerPort: 80
클러스터에 배포하기
kubectl create -f deployment.yaml
디플로이먼트 확인하기
ubectl get deployment
개별 디플로이먼트의 세부사항 출력하기
kubectl describe deployment webapp1
2 서비스 생성하기
여러 레플리카 또는 인스턴스가 배포되면 공통 라벨 기반으로 자동으로 로드밸런스된다
서비스는 NodePort를 통해 애플리케이션을 사용할 수 있다.
apiVersion: v1
kind: Service
metadata:
name: webapp1-svc
labels:
app: webapp1
spec:
type: NodePort
ports:
- port: 80
nodePort: 30080
selector:
app: webapp1
모든 쿠버네티스 객체는 동일한 방법으로 배포된다.
서비스 배포하기
kubectl create -f service.yaml
서비스 확인하기
kubectl get svc
서비스 자세한 내용 확인하기
kubectl describe svc webapp1-svc
curl host01:30080
3 디플로이먼트 확장하기
실행중인 인스턴스 수 증가 시키기 위해 YAML 파일의 레플리카 수 수정하기 ex) replicas: 4
기존 정의된 파일 업데이트는 kubectl apply를 사용한다.
kubectl apply -f deployment.yaml
클러스가 원하는 상태가 된다.
kubectl get deployment
요청과 일치하도록 pod가 추가된다.
kubectl get pods
모든 pod에는 동일한 라벨이 있으므로 NodePort 뒤에서 로드 밸런싱 된다.
포트에 요청이 발생하면 다른 컨테이너가 요청을 처리한다.
curl host01:30080
728x90
반응형
'도커&쿠버네티스' 카테고리의 다른 글
[katakoda] Networking Introduction (0) | 2022.03.22 |
---|---|
[katakoda] Deploy Guestbook Web App Example (0) | 2022.03.22 |
[katakoda] Deploy Containers Using Kubectl 컨테이너 배포하기 (0) | 2022.03.22 |
[katakoda] Launch a multi-node cluster using Kubeadm 다중 노드 클러스터 실행하기 (1) | 2022.03.21 |
[katakoda] Launch A Single Node Cluster 단일 노드 클러스터 실행하기 (0) | 2022.03.21 |
댓글