2 minute read

docker

도커는 각종 서비스들을 프로세스 격리 기술들을 사용해 분리된 환경에서 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트입니다.

Docker의 필요성

서버 내에 필요한 서비스를 그냥 올리면 편할 것 같은데 도커가 왜 필요할까요?
다음과 같은 문제 상황을 생각해 봅시다.

  • 서비스가 의존하고 있는 패키지나 모듈 등이 여러가지 서비스가 올라가는 경우에 충돌이 일어남.
  • 서버 자원을 충분히 활용하지 못하는 문제가 발생함

하나의 서버에 여러가지 서비스를 올리려고 할 때 위와 같은 문제가 생긴다면, 격리된 환경을 제공하지 않고는 좀처럼 해결하기 어렵습니다.

이에 따라 격리된 환경을 제공하여 한 서버에 여러 서비스를 올릴 수 있는 가상 환경 도구인 docker의 필요성이 나타나게 된 것입니다.

docker 설치

Mac에 Docker를 설치하는 방법은 간단합니다.
Docker Desktop이라는 응용 프로그램을 설치하면 됩니다.
이 사이트에서 본인의 환경에 맞는 파일을 다운받아 주세요.


kubernetes

  • 쿠버네티스는 docker 같은 가상 환경 단위의 컨테이너들을 운영할 수 있도록 도와주는 오케스트레이션 도구입니다.
  • 쿠버네티스는 클러스터의 관리/운영을 도와주는 역할을 수행합니다.

kubectl, kustomize

  • kubectl은 kubernetes를 cli를 통해 관리할 수 있게 해주는 도구입니다.
  • kustomize는 kubernetes 구성을 사용자 정의화하는 도구로 애플리케이션 구성 파일을 관리할 때 사용합니다.

kubectl 설치

brew install kubectl

kustomize 설치

brew install kustomize

minikube

minikube는 가상환경을 사용하여 쿠버네티스 클러스터를 구현하는 데 도움을 주는 도구 입니다.
minikube에서 사용 가능한 드라이버 목록은 다음과 같습니다.
Docker, Hyperkit, Hyper-V, KVM, Parallels, Podman, VirtualBox, VMware

minikube와 관련된 세부 내용은 이 링크에서 추가적으로 확인 가능합니다.

minikube 설치

$ brew install minikube

minikube를 이용해 클러스터 생성

  • minikube 시작
    minikube start --driver docker
    

  • minikube 상태 확인
    minikube status
    

    위의 명령어를 통해 해당 minikube 위에서 클러스터가 잘 작동하고 있는 지 확인 가능합니다.

  • minikube로 띄운 클러스터의 정보 확인
    kubectl cluster-info
    

    kubernetes control plane이 어디에 떠있는 지 확인 가능합니다.
    구성요소로 coreDNS도 실행되고 있음을 확인할 수 있습니다.

  • kubectl 통신 설정
    kubectl이 kubernetes cluster와 통신하려면 설정파일이 필요한데, 이 설정 파일은 ~/.kube/config 파일입니다.

    • clusters
      • 관리할 클러스터 목록
    • context
      • 인증 리스트
      • 어떤 클러스터와 통신할 지 인증과 관련된 설정 진행
      • 내부 세부 항목
        • cluster: 접속하게 될 클러스터 정보 기입
        • users: 인증 사용자 정보
      • context는 cluster와 user 정보를 조합해 어떤 클러스터에 어떤 user로 접속할지 정보를 적어둔 부분
  • 노드 정보 확인
    $ kubectl get nodes
    

    kubectl이 접속하게되는 클러스터의 노드 정보를 확인할 수 있습니다.

minikube 기본 사용법

  1. 클러스터 시작
    $ minikube start
    
  2. 클러스터 상태 확인
    $ minikube status
    
  3. 클러스터 중지
    $ minikube stop
    
  4. 클러스터 삭제
    $ minikube delete
    
  5. 클러스터 일시 중지
    $ minikube pause
    
  6. 클러스터 재개
    $ minikube unpause
    

minikube addons

minikube addons

  • 애드온이란 쿠버네티스 클러스터에 필요한 다른 요소들을 따로 설치할 수 있도록 해주는 것입니다

addons 확인

$ minikube addons

addons 제공 리스트 확인

$ minikube addons list

addons 이용해 ingress 활성화

$ minikube addons enable ingress

minikube 노드에 ssh로 접속

$ minikube ssh

로컬의 kubectl과 minikube의 kubectl 버전이 다른 경우

두 kubectl의 버전이 다르다면 이로 인해 문제가 날 수 있습니다.
이런 일을 방지하기 위해 minikube kubectl [수행할기능] 이라고 명령어를 치면 로컬에 깔린 kubectl이 아닌 minikube의 kubectl 버전으로 kubectl을 사용할 수 있게 됩니다.

$ kubectl version

Client Version과 Server Version이 다름

$ minikube kubectl version

minikube kubectl version을 한 결과 Client Version과 Server Version이 같아짐