실무에서 너무너무 많이 사용되는 쿠버네티스에 관한 간단한 지식이라도 축적하고자(난 코딩이 좋은데 요즘은 코딩만 해서는 실무를 따라갈 수 가 없다.) 해당 포스트를 기재한다.
쿠버네티스란 ?
컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장가능한 오픈소스 플랫폼이다. 쿠버네티스는 선언적 구성과 자동화를 모두 용이하게 해준다. 쿠버네티스는 크고, 빠르게 성장하는 생태계를 가지고 있다. 쿠버네티스 서비스, 기술 지원 및 도구는 어디서나 쉽게 이용할 수 있다.
from 공식문서...
공식문서는 봐도 뭐라는지 모른다. 이해하기 편하게 예시로 설명해보겠다.
다들 docker container 는 무엇인지 알 것이고,
실무에서 docker container 를 단일로 띄워서 사용하는 곳은 거의 없을 것이라고 생각한다.(이럴꺼면 container 를 안쓰지)
그렇다면 우리는 3개의 각각 다른 주문, 결제, 배송 서비스 컨테이너를 가지고 있다고 해보자.
온라인 주문을 하려면 각 3개의 컨테이너가 모두 실행되어야 실제로 내가 주문 후 물건을 받아 볼 수 있을 것이다.
맞다. 그냥 수동으로 docker run 해주면 문제가 없다. 그렇다면 컨테이너가 주문, 결제, 배송이 아니라 더 세세하게 주문, 쿠폰, 반품, 결제, 배송, 추적... 등 실제 서비스에 제공하는 몇십, 몇백개의 컨테이너가 관리되어야 한다면 일일히 실행시킬 것인가?
여러개의 장점이 있지만 그중 가장 최고의 장점을 뽑자면 아래정도가 있을 수 있다.
실제로 실무에서 개발자 입장에서 내가 사용한 쿠버네티스의 장점은 저런건 모르겠고
자세한 내용을 아래를 정독 하자. 정독.
쿠버네티스 참고
https://kubernetes.io/ko/docs/home/
한번에 이해한 당신은 천재다.
이해하지 못했다고 해도 적어도 쿠버네티스의 기본 개념들은 알아와야 한다.
어려운 개념 아니니 구글링해보자.
Pod : 쿠버네티스에서 생성하고 관리하는 가장 최소단위 이다. 파드 하나에 최소 하나의 컨테이너가 포함되어진다. Pod 는 각각의 내부 IP 가 주어지고 해당 IP 로 Pod 간 통신이 가능하다.
Node : 마스터 노드와 워커 노드로 이루어져 있고, 마스터 노드는 쿠버네티스가 쿠버네티스의 역할을 할 수 있도록 관장하는 역할. 워커 노드는 각 파드들이 위치하여 실제로 실행되는 단위.
Service : 파드에서 실행중인 어플리케이션을 외부로 노출하는 단위.
ex) pod, node, service ...
개발자 스럽게 일단 뚜드려 보고 보자. 뭐든 하다보면 더 깨닫는 법.
로컬환경에 쿠버네티스 클러스터를 설치하여 간단하게 minikube 를 사용한 서비스 접근까지의 방법을 기재한다.
* curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"
* curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl.sha256"
echo "$(cat kubectl.sha256) kubectl" | shasum -a 256 --check
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-arm64
sudo install minikube-darwin-arm64 /usr/local/bin/minikube
minikube start
kubectl cluster-info
kubectl get po -A
여기까지 되었다면 쿠버네티스를 실습해보기 위한 기본 뼈대가 구축된 것이다.
다음 장에서는 service 와 ingress 등을 구축해서 테스트 페이지를 띄워보는 실습을 진행하도록 하겠다.