메뉴 닫기

MiniKube 설치 / Pod 생성 및 동작 확인 (Ubuntu 22.04)

안녕하세요. 오늘은 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 내부로 들어가 명령을 실행할 수도 있다.

pod 접속

위 명령을 통해 Pod 내부로 들어가고, ‘/bin/bash’쉘을 실행할 수 있다. 여기서 Nginx 이미지를 사용해서 /bin/bash가 아닌 /bin/sh로 들어가야 될 수도 있다.

Pod 삭제

테스트가 끝난 후 Pod를 삭제한다.

# kubectl delete pod mypod

pod삭제

또는 Pod를 정의한 YAML 파일을 사용하여 삭제한다.

# kubectl delete -f my-pod.yaml

Minikube를 사용하여 간단한 Pod를 생성하고 확인하는 방법을 경험해보았습니다.~ 이를통해 Kubernetes 클러스터에서 Pod 생성 및 관리 기본을 이해할 수 있었습니다.! 끗

출처 : 

https://www.skyer9.pe.kr/wordpress/?p=7076

 

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x