Deploy - Kubernetes
Deploy - Kubernetes
Application 배포 진화 과정
Kubernetes 구조
- Master: 노드를 제어하고 전체 클러스터를 관리하는 컨트롤러이며, 전반적인 제어기능을 합니다.
- Node: 작업자 노드로 컨테이너가 배포될 물리적 서버 또는 가상 머신입니다.
- Pod: 단일 노드에 배포된 하나 이상의 컨테이너 그룹으로, 여러 컨테이너를 그룹화하여 포드 단위로 관리할 수 있습니다.
CI (Countinous Integration)
Kubernetes에서 기본적인 객체는 배포와 관리를 담당합니다.
컨테이너화 및 배포되는 애플리케이션의 워크로드를 설명하는 객체입니다.
포드, 서비스, 볼륨 및 네임스페이스의 네 가지 객체 유형이 있습니다.
- Pod는 컨테이너화된 애플리케이션
- 볼륨은 디스크
- 서비스는 로드 밸런서
- 네임스페이스는 패키지 이름
Kubernetes 스펙
- Pod 객체 스펙 (예)
- Deployment 컨트롤러 스펙(예)
3개의 nginx 포드를 가져오는 ReplicaSet을 생성합니다.
- 서비스 객체 스펙(예)
서비스는 “myapp” 레이블이 붙은 서비스만 선택하여 서비스에 넣고 Pod간 로드 밸런싱을 통해 외부로 서비스를 제공합니다.
Kubernetes 배포 실습1(Using Kubernetes without installation)
Minikube(Katacode)
https://kubernetes.io/ko/docs/tutorials/hello-minikube/
- Launch Terminal
Depolyment 생성
1
$ kubectl create deployment hello-node --image=registry.k8s.io/echoserver:1.4
hello-node deployment 컨트롤러를 만들어서 이미지 경로의 인스턴스를 배포합니다.
kubectl get pods 명령어를 통해 확인합니다.
1
$ minikube dashboard
대시보드를 사용하면 현재 워크로드 상태를 보고 내용을 편집할 수 있습니다.
Deployment, Pod, ReplicaSet이 안정적으로 제공되는 것을 확인할 수 있습니다.
서비스 생성
1
2
$ kubectl expose deployment hello-node --type=LoadBalancer --port=8080
$ minikube service hello-node
EXTERNAL -IP 프로비저닝
서비스 생성확인
1
$ kubectl expose deployment hello-node --type=LoadBalancer --port=8080
kotacoda 환경에서는 포트 32729를 사용하여 hello-node 서비스에 액세스할 수 있습니다.
아래 명령을 실행하여 Kubenetes를 종료합니다.
1
2
3
4
$ kubectl delete service hello-node
$ kubectl delete deployment hello-node
$ minikube stop
$ minikube delete
Kubernetes 배포 실습2(Local Kubernetes Clustering microservice-demo)
도커 드라이버 유형의 미니큐브 시작
1
> minikube start --driver=docker
매니페스트 파일 적용
1
2
3
> git clone https://github.com/microservices-demo/microservices-demo
> cd microservices-demo
> kubectl apply -f ./release/kubernetes-manifests.yaml
매니페스트 설정파일을 kubectl apply 명령어를 통해 emailservice, frontend, cartservice 등 12개의 deployment와 service를 생성합니다.
매니페스트 파일 적용
1
> kubectl get pods
클러스터내 생성된 파드를 확인
서비스 확인
1
> kubectl port-forward deployment/frontend 8080
포트포워딩을 통해 서비스에 접속할 수 있습니다.
쿠버네티스 로컬 연습
Virtual Box 가상머신을 활용해서 Docker 및 쿠버네티스, Jenkins를 통한 CI/CD를 충분히 연습해봅니다.
오라클 클라우드 배포
무중단 배포를 위해 쿠버네티스를 로컬 및 클라우드 환경에서 적용해봅니다.
클라우드 환경 사용시 무료 비용 한계를 꼭 확인해야 합니다.