-
[K8s] Kubernetes 및 minikube 실습DevOps/Container 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