1. Kubernetes의 개념과 특징, 그리고 아키텍처
1) 개념
Kubernetes는 컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼이다.
2) 특징
Kubernetes는 `Deployment, StatefulSets, DaemonSet, Job, CronJob` 등 다양한 배포 방식을 지원한다. 그리고 다양한 웹 애플리케이션을 하나의 로드 밸런서로 서비스하기 위해 `Ingress` 기능을 제공한다. 또한, 부하에 따라 자동으로 서버를 늘리는 기능인 AutoScaling이 있고 IP를 할당 받아 LoadBalancer로 사용할 수 있다. 하나의 클러스터를 논리적으로 구분하여 사용할 수 있다. 하나의 클러스터에 다양한 프레임워크와 애플리케이션을 설치하기 때문에 기본외에 여러 개의 네임스페이스를 사용하는 것이 일반적이다.
3) 아키텍처
작동 중인 쿠버네티스 배포를 클러스터라고 합니다. 쿠버네티스 클러스터는 컨트롤 플레인과 컴퓨팅 머신(또는 노드)의 2개 부분으로 시각화할 수 있다. 각 노드는 자체 Linux® 환경이며 물리 또는 가상 머신일 수 있다. 각 노드는 컨테이너로 이루어진 포드(Pod)를 실행한다.
이 다이어그램은 쿠버네티스 클러스터 구성 요소의 상호 관계를 보여준다.
4) 통신방식
2. Minikube 실습
https://kubernetes.io/ko/docs/tutorials/hello-minikube/
1) minikube 클러스터 만들기
[Launch Terminal] 버튼을 클릭하면, 아래와 같이 터미널창에 실행된다.
minikube dashboard 명령을 내리면 대시보드 애드온과 프록시가 활성화되고 해당 프록시로 접속하는 기본 웹 브라우저 창이 열린다. 대시보드에서 디플로이먼트나 서비스와 같은 쿠버네티스 자원을 생성할 수 있다.
2) 디플로이먼트 만들기
kubectl create 명령어를 실행하여 파드를 관리할 디플로이먼트를 만든다.
$ kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4
디플로이먼트 보기
$ kubectl get deployments
파드 보기
$ kubectl get pods
클러스터 이벤트 보기
$ kubectl get events
kubectl 환경설정 보기
$ kubectl config view
3) 서비스 만들기
기본적으로 파드는 쿠버네티스 클러스터 내부의 IP 주소로만 접근할 수 있다. hello-node 컨테이너를 쿠버네티스 가상 네트워크 외부에서 접근하려면 파드를 쿠버네티스 서비스로 노출해야 한다.
kubectl expose 명령어로 퍼블릭 인터넷에 파드 노출하기
kubectl expose deployment hello-node --type=LoadBalancer --port=8080
--type=LoadBalancer플래그는 클러스터 밖의 서비스로 노출하기 원한다는 뜻이다.
k8s.gcr.io/echoserver 이미지 내의 애플리케이션 코드는 TCP 포트 8080에서만 수신한다. kubectl expose를 사용하여 다른 포트를 노출한 경우, 클라이언트는 다른 포트에 연결할 수 없다.
생성한 서비스 살펴보기
$ kubectl get services
로드 밸런서를 지원하는 클라우드 공급자의 경우에는 서비스에 접근할 수 있도록 외부 IP 주소가 프로비저닝 한다. minikube에서 LoadBalancer타입은 minikube service 명령어를 통해서 해당 서비스를 접근할 수 있게 한다.
다음 명령어를 실행한다
$ minikube service hello-node
서비스 출력에서 8080의 반대편에 표시되는 5자리 포트 번호를 기록 한다. 이 포트 번호는 무작위로 생성되며, 사용자마다 다를 수 있다. 포트 번호 텍스트 상자에 포트 번호를 입력한 다음, 포트 표시를 클릭한다. 32049 를 입력한다.
이렇게 하면 당신의 앱을 서비스하는 브라우저 윈도우를 띄우고 애플리케이션의 응답을 볼 수 있다.
4) 애드온 사용하기
minikube 툴은 활성화하거나 비활성화할 수 있고 로컬 쿠버네티스 환경에서 접속해 볼 수 있는 내장 애드온 셋이 포함되어 있다.
현재 지원하는 애드온 목록을 확인한다.
$ minikube addons list
애드온을 활성화 한다. 여기서는 metrics-server를 예시로 사용한다.
$ minikube addons enable metrics-server
생성한 파드와 서비스를 확인한다.
$ kubectl get pod,svc -n kube-system
metrics-server 비활성화
$ minikube addons disable metrics-server
5) 제거하기
이제 클러스터에서 만들어진 리소스를 제거할 수 있다.
$ kubectl delete service hello-node
$ kubectl delete deployment hello-node
Reference
'Container Orchestration > Kubernetes' 카테고리의 다른 글
Kubernetes 어피니티 (0) | 2022.05.13 |
---|---|
Kubernetes 컨테이너 이미지 생성하기 (0) | 2022.05.10 |
Kubernetes 클러스터 구축하기(kubespray) (0) | 2022.05.10 |
Kubernetes 클러스터 구축하기(kubeadm) (0) | 2022.05.03 |
쿠버네티스 배포 도구 : Kubeadm vs Kubespray vs Kops (0) | 2022.05.03 |