안녕하세요. 오늘은 MiniKube 설치 및 Pod 생성을 해보겠습니다.
먼저 Minikube에 대해 짚고 넘어갑시다!
Minikube : *Kubernetes 클러스터를 로컬 개발 환경에서 실행하고 테스트하는 데 사용되는 도구
Kubernetes는 컨테이너 오케스트레이션 시스템으로, 여러 컨테이너를 관리하고 배포하는 데 도움이 되는 오픈 소스 플랫폼이다. Minikube를 사용하면 개발자들은 자신의 개발 환경에서 Kubernetes 클러스터를 손쉽게 설정할 수 있다.
Minikube 장점
■로컬 개발 및 테스트: 미니쿠베를 사용하면 개발자는 로컬 머신에서 간단하게 쿠버네티스 클러스터를 실행하여 애플리케이션을 개발하고 테스트할 수 있습니다.
■ 간편한 설정: 간단한 명령어를 통해 미니쿠베를 빠르게 설정할 수 있습니다. 사용자가 복잡한 쿠버네티스 설정에 신경 쓰지 않아도 됩니다.
■ 플랫폼 독립성: macOS, Linux, Windows 등 다양한 운영 체제에서 사용할 수 있습니다.
■ 가상화 드라이버 지원: 미니쿠베는 여러 가상화 드라이버를 지원하여 사용자의 환경에 맞게 선택할 수 있습니다. 예를 들면 VirtualBox, KVM, Docker 등이 있습니다.
■ 쿠버네티스 버전 관리: 미니쿠베는 다양한 쿠버네티스 버전을 지원하므로 특정 프로젝트 또는 애플리케이션이 필요로 하는 버전을 선택할 수 있습니다.
*Kubernetes : 컨테이너 오케스트레이션을 위한 오픈 소스 플랫폼.
여러 컨테이너화된 응용 프로그램을 자동화된 방식으로 배포, 확장 및 관리할 수 있게 해주는 도구이다. 이는 개발자와 IT 운영팀이 확장 가능하고 안정적인 애플리케이션을 구축하고 유지할 수 있도록 돕는다.
■ 컨테이너 오케스트레이션 : Kubernetes는 컨테이너 기술을 사용하여 응용 프로그램을 패키징하고 배포하는 데 중점을 둔다. 각 애플리케이션은 컨테이너로 묶여 있으며 동일한 환경에서 실행될 수 있다.
■ 다중 호스트 환경에서의 배포 및 관리 : Kubernetes는 여러 호스트에서 컨테이너를 배포하고 관리할 수 있어, 확장성과 신뢰성을 제공한다.
■ 서비스 디스커버리 및 로드 밸런싱: Kubernetes는 서비스 간의 통신을 관리하며, 서비스 디스커버리와 로드 밸런싱을 자동으로 처리한다.
■ 자동 스케일링 : Kubernetes는 애플리케이션의 부하에 따라 자동으로 스케일링할 수 있다. 수요가 증가하면 자동으로 새로운 인스턴스를 생성하고, 수요가 감소하면 불필요한 인스턴스를 제거하여 자원을 효율적으로 사용할 수 있다.
■ 롤링 업데이트 및 롤백: 새로운 버전의 애플리케이션을 배포할 때 Kubernetes는 롤링 업데이트를 통해 서비스 중단을 최소화하며, 문제 발생 시 롤백을 지원합니다.
■ 선언적 구성: Kubernetes는 YAML 또는 JSON과 같은 선언적인 구성을 사용하여 애플리케이션 및 리소스의 상태를 정의한다. 이를 통해 원하는 상태로 시스템을 유지할 수 있다.
■ 강력한 커뮤니티 및 에코시스템:Kubernetes는 큰 개방형 소스 커뮤니티를 가지고 있으며, 다양한 플러그인과 도구를 통해 확장성을 지원한다.
Kubernetes는 클라우드, 온프레미스 데이터 센터, 로컬 개발 환경 등 다양한 환경에서 사용할 수 있으며, 산업의 많은 기업들이 생산 환경에서 Kubernetes를 채택하고 있다.
Ubuntu 22.04 – MiniKube 설치
-
docker는 이미 셋팅되어있는 환경에서 진행하겠습니다.
목차
1. MiniKube 설치
2. kubelet, kubeadm, kubectl 설치
3. MiniKube 시작
4. Kubectl 설치
5. 간단한 Pod 생성
1. MiniKube 설치
MiniKube 다운로드
&& chmod +x minikube ll minikube |
MiniKube 설치
sudo mkdir -p /usr/local/bin/ sudo install minikube /usr/local/bin/ |
2. kubelet, kubeadm, kubectl 설치
kubelet, kubeadm, kubectl 설치
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf br_netfilter EOF cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sudo sysctl –system |
sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg echo “deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main” | sudo tee /etc/apt/sources.list.d/kubernetes.list |
GPG 키 가져오기: 아래 명령어를 사용하여 Kubernetes APT 저장소의 GPG 키를 다시 가져온다.
APT 저장소 설정: Kubernetes APT 저장소를 사용할 수 있도록 설정한다.
echo “deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io kubernetes-xenial main” | sudo tee /etc/apt/sources.list.d/kubernetes.list |
그러고 업데이트 및 패키지 설치 시도
sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl |
새로운 사용자 추가
sudo adduser minikubeuser |
사용자 권한 설정 : 사용자에게 sudo 권한을 부여하여 필요한 작업을 수행할 수 있도록 한다.
sudo usermod -aG sudo minikubeuser |
docker 그룹에 사용자 추가 : docker 를 사용할 경우, 현재 사용자를 ‘docker’그룹에 추가하여 Docker의 소켓에 접근할 수 있도록 한다.
sudo usermod -aG docker minikubeuser |
그리고 나서 새로운 그룹을 적용하기 위해 로그아웃 후 다시 로그인하거나, 현재 세션에서 새로운 그룹을 활성화하려면 다음 명령어를 실행한다.
newgrp docker |
새로 추가한 사용자로 전환한다.
su – minikubeuser |
3. MiniKube 시작
minikube start \ –network-plugin=cni \ –cni=bridge \ –container-runtime=containerd \ –bootstrapper=kubeadm |
🏄 Done! kubectl is now configured to use “minikube” cluster and “default” namespace by default가
뜨면 성공이다.~!
클러스터 정보 확인: Minikube 클러스터의 정보를 확인한다.
type: Control Plane: 클러스터가 Control Plane 타입으로 구성되었음을 의미합니다. Control Plane은 쿠버네티스 마스터 역할을 하는 부분으로, 클러스터의 상태를 관리하고 API 서버를 호스팅합니다.
host: Running: 클러스터의 호스트(머신 또는 가상 머신)가 실행 중인 상태입니다. 클러스터는 이 호스트에서 실행됩니다.
kubelet: Running: 클러스터 노드에서 동작하는 kubelet 서비스가 정상적으로 실행 중인 상태입니다. kubelet은 각 노드에서 쿠버네티스 시스템과 상호 작용하며 컨테이너의 실행 및 관리를 담당합니다.
apiserver: Running: 쿠버네티스 API 서버가 정상적으로 실행 중인 상태입니다. API 서버는 클러스터 내의 모든 통신을 담당하고 쿠버네티스 클러스터의 상태 정보를 제공합니다.
kubeconfig: Configured: 클러스터를 제어하기 위한 kubeconfig 파일이 설정되었음을 의미합니다. kubeconfig 파일은 kubectl과 같은 쿠버네티스 도구가 클러스터와 통신할 때 사용되는 설정 파일입니다.
4. Kubectl 설치
Kubernetes apt 리포지터리 사용하는 데 필요한 패키지들을 설치한다.
sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl |
구글 클라우드 공개 사이닝 키 다운로드를 해준다.
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg |
Kubernetes apt 리포지터리를 추가한다.
echo “deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main” | sudo tee /etc/apt/sources.list.d/kubernetes.list |
새 리포지터리의 apt 패키지 색인을 업데이트하고 kubectl을 설치한다.
sudo apt-get update sudo apt-get install -y kubectl |
클러스터 상태 확인하여 kubectl 구성 확인한다.
kubectl cluster-info |
Minikube를 성공적으로 시작하였으며, Kubernetes 클러스터가 실행중인 것을 확인할 수 있다.
여기서 Kubernetes 컨트롤 플레인의 주소와 CoreDNS의 주소가 표시되고 있다.
-> kubectl cluster-info : 클러스터 정보 확인
-> kubectl cluster-info dump : 클러스터 상태 덤프로 Kubernetes의 여러 구성 요소 및 상태 확인 가능
이제 Minikube를 사용하여 Kubernetes 클러스터를 관리하고, 애플리케이션을 배포하거나 관리하는 등의 작업을 수행할 수 있다.
Kubectl이 설치되어 있다면 이제 아래를 사용하여 클러스터에 액세스할 수 있다.
or minikube에 적절한 버전의 kubectl을 다운로드할 수 있고 다음과 같이 사용할 수 있다.
이제 간단한 Pod를 생성하여 동작을 확인해보겠다.
Minikube 시작 -> # minikube start
5. 간단한 Pod 생성
vi my-pod.yaml
이 파일을 사용하여 Pod 를 생성한다.
Pod가 생성되었는 지 확인한 후,
Pod의 상태와 실행중인지 여부를 확인한다.
# kubectl describe pod mypod
Pod에 접속 : Pod 내부로 들어가 명령을 실행할 수도 있다.
위 명령을 통해 Pod 내부로 들어가고, ‘/bin/bash’쉘을 실행할 수 있다. 여기서 Nginx 이미지를 사용해서 /bin/bash가 아닌 /bin/sh로 들어가야 될 수도 있다.
Pod 삭제
테스트가 끝난 후 Pod를 삭제한다.
# kubectl delete pod mypod
또는 Pod를 정의한 YAML 파일을 사용하여 삭제한다.
# kubectl delete -f my-pod.yaml
Minikube를 사용하여 간단한 Pod를 생성하고 확인하는 방법을 경험해보았습니다.~ 이를통해 Kubernetes 클러스터에서 Pod 생성 및 관리 기본을 이해할 수 있었습니다.! 끗
출처 :
https://www.skyer9.pe.kr/wordpress/?p=7076