DevOps/Container

[K8s] Kubernetes 및 minikube 실습

Michael Kim 2023. 5. 9. 23:37

Kubernetes

  • 컨테이너화 된 워크로드와 서비스를 관리하기 위한 오픈소스
  • Container Ochestration Flatform

Ochestration을 사용하는 이유

  • 자동화된 스케일링
  • 자동화된 롤아웃, 롤백
  • 자동화된 복구 (Self-Healing)
  • 자동화된 빈 패킹 (Bin Packing)
  • 시크릿과 구성 관리
  • 서비스 디스커버리와 로드 밸런싱
  • 스토리지 오케스트레이션
  • IaC를 사용한 운영

Architecture

  • Control Plane (Master Node)
    • Kubernetes 전체를 통제 및 관리
  • Data Plane (Worker Node)
    • 실제 사용자의 애플리케이션 배포

 

 


kubectl

  • kubernetes 클러스터와 통신하기 위한 CLI 도구

 

OS : Ubuntu 20.04 LTS

 

 

kubectl 설치

curl -LO "<https://dl.k8s.io/release/$>(curl -L -s <https://dl.k8s.io/release/stable.txt>)/bin/linux/amd64/kubectl"

sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

chmod +x kubectl
mkdir -p ~/.local/bin
mv ./kubectl ~/.local/bin/kubectl

kubectl version --client --output=yaml

minikube

  • 쿠버네티스에서 스터디 및 테스트 하기 위해 지원되는 도구
  • docker기반으로 생성되기 때문에 사전에 docker가 설치 필수

사전 조건

  • Docker
  • qemu
  • Hyper-V

설치는 아래 페이지 참고

 

install-dcoker.sh 파일 생성

touch install-docker.sh

vi install-docker.sh

 

 

아래 코드 블럭을 복사하여 install-docker.sh에 붙여넣기

set -euf -o pipefail

DOCKER_USER=ubuntu

# Install dependencies
sudo apt-get update && sudo apt-get install -y \
  apt-transport-https \
  ca-certificates \
  curl \
  gnupg \
  lsb-release

# Add Docker’s official GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --yes --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# Set up the stable repository
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Install Docker CE
sudo apt-get update && sudo apt-get install -y docker-ce docker-ce-cli containerd.io

# Use Docker without root
sudo usermod -aG docker $DOCKER_USER

 

스크립트 실행

# 유저에게 권한 부여 
chmod u+x install-docker.sh

# 스크립트 실행
./install-docker.sh

 

설치 확인

# 세션 재접속이 필요
docker ps

minikube 상태 확인

minikube status 

kubectl에 등록된 config 조회

kubectl config view

kubeconfig Context

# 전체 및 현재 context 조회 
kubectl config get-contexts

# context 스위칭
kubectl config use-context <name>

 


실습

리소스 조회

kubectl get node

kubectl get pod -A

pod 생성

# nginx이미지로 pod 생성
kubectl run nginx --image=nginx
# default 네임스페이스에서 pod 조회 
kubectl get pod
# pod 상세 내역 조회 
kubectl describe pod nginx

pod 삭제

# nginx pod 삭제
kubectl delete pod nginx

minikube dashboard

# GUI 환경에서 모니터링이 가능한 dashboard생성
minikube dashboard