쿠버네티스 시작하기 1편

김성민·2024년 3월 10일
0

kubernetes

목록 보기
1/3

쿠버네티스가 무엇일까..?

실무에서 너무너무 많이 사용되는 쿠버네티스에 관한 간단한 지식이라도 축적하고자(난 코딩이 좋은데 요즘은 코딩만 해서는 실무를 따라갈 수 가 없다.) 해당 포스트를 기재한다.

쿠버네티스란 ?
컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장가능한 오픈소스 플랫폼이다. 쿠버네티스는 선언적 구성과 자동화를 모두 용이하게 해준다. 쿠버네티스는 크고, 빠르게 성장하는 생태계를 가지고 있다. 쿠버네티스 서비스, 기술 지원 및 도구는 어디서나 쉽게 이용할 수 있다.
from 공식문서...

그래서 그게 뭔데?

공식문서는 봐도 뭐라는지 모른다. 이해하기 편하게 예시로 설명해보겠다.
다들 docker container 는 무엇인지 알 것이고,
실무에서 docker container 를 단일로 띄워서 사용하는 곳은 거의 없을 것이라고 생각한다.(이럴꺼면 container 를 안쓰지)
그렇다면 우리는 3개의 각각 다른 주문, 결제, 배송 서비스 컨테이너를 가지고 있다고 해보자.
온라인 주문을 하려면 각 3개의 컨테이너가 모두 실행되어야 실제로 내가 주문 후 물건을 받아 볼 수 있을 것이다.

  • 그럼 그냥 3개의 컨테이너를 실행하면 되잖아?

맞다. 그냥 수동으로 docker run 해주면 문제가 없다. 그렇다면 컨테이너가 주문, 결제, 배송이 아니라 더 세세하게 주문, 쿠폰, 반품, 결제, 배송, 추적... 등 실제 서비스에 제공하는 몇십, 몇백개의 컨테이너가 관리되어야 한다면 일일히 실행시킬 것인가?

  • 그래서 나온게 컨테이너 오케스트레이션 서비스인 쿠버네티스 이다.

쿠버네티스의 장점

여러개의 장점이 있지만 그중 가장 최고의 장점을 뽑자면 아래정도가 있을 수 있다.

  1. Auto-Scailing
  • 쿠버네티스는 컨테이너수를 자동으로 늘려주고 줄여준다. 즉, 할당된 컨테이너로만 감당이 안될 것 같으면 자동으로 컨테이너를 늘려주고, 놀고 있는 컨테이너가 있다면 자동으로 컨테이너를 줄여준다.
  1. 서비스 디스커버리
  • 쿠버네티스는 자체 DNS 나 IP 주소를 사용해 서비스를 노출해 사용할 수 있도록 한다.
  1. 자동 복구
  • 쿠버네티스는 오류가 발생하거나 문제가 있는 컨테이너를 자동으로 복구하고 정상 상태인 경우에만 노출 시키도 할 수 있다.

실제로 실무에서 개발자 입장에서 내가 사용한 쿠버네티스의 장점은 저런건 모르겠고

  • 신뢰성이 높다. 개발자가 이미지만 바꿔주면 쿠버네티스가 알아서 다 해주니까.
  • 설정 변경이 편하다. yaml 파일이나 config-map 으로 몇 글자 수정해주면 설정파일이 모두 자동 반영되니까.

자세한 내용을 아래를 정독 하자. 정독.

쿠버네티스 참고
https://kubernetes.io/ko/docs/home/

한번에 이해한 당신은 천재다.
이해하지 못했다고 해도 적어도 쿠버네티스의 기본 개념들은 알아와야 한다.
어려운 개념 아니니 구글링해보자.

Pod : 쿠버네티스에서 생성하고 관리하는 가장 최소단위 이다. 파드 하나에 최소 하나의 컨테이너가 포함되어진다. Pod 는 각각의 내부 IP 가 주어지고 해당 IP 로 Pod 간 통신이 가능하다.

Node : 마스터 노드와 워커 노드로 이루어져 있고, 마스터 노드는 쿠버네티스가 쿠버네티스의 역할을 할 수 있도록 관장하는 역할. 워커 노드는 각 파드들이 위치하여 실제로 실행되는 단위.

Service : 파드에서 실행중인 어플리케이션을 외부로 노출하는 단위.

ex) pod, node, service ...

실습은 머리를 맑게 만든다.

개발자 스럽게 일단 뚜드려 보고 보자. 뭐든 하다보면 더 깨닫는 법.

로컬환경에 쿠버네티스 클러스터를 설치하여 간단하게 minikube 를 사용한 서비스 접근까지의 방법을 기재한다.

  1. Kubectl 설치
* curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"
  1. Kubectl 설치 확인
  • checksum 다운로드
* curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl.sha256"
  • 검증(아래명령어시 OK 응답 확인)
echo "$(cat kubectl.sha256)  kubectl" | shasum -a 256 --check
  1. Minukube 설치
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-arm64
sudo install minikube-darwin-arm64 /usr/local/bin/minikube
  1. Minikube 시작 (시작전 docker on)
minikube start

  1. kubectl 로 cluster 정상 확인
kubectl cluster-info

  1. 기본 pod 정상 구축 확인
kubectl get po -A

여기까지 되었다면 쿠버네티스를 실습해보기 위한 기본 뼈대가 구축된 것이다.
다음 장에서는 service 와 ingress 등을 구축해서 테스트 페이지를 띄워보는 실습을 진행하도록 하겠다.

0개의 댓글