웹사이트 검색

우분투 24.04|22.04|20.04에 미니큐브 설치하는 방법


쿠버네티스의 힘을 발견할 준비가 되셨나요? 이 단계별 튜토리얼에서는 기본 하이퍼바이저가 Libvirt(KVM) 또는 VirtualBox인 Ubuntu 리눅스 시스템에 Minikube를 설치하는 방법을 보여드립니다. 먼저 Minikube에 대한 기본적인 소개를 하고, 이어서 실제 Minikube 설치 방법과 사용을 시작하는 방법을 자세히 다룹니다.

Minikube는 개발자와 시스템 관리자가 로컬 컴퓨터에서 단일 Kubernetes 클러스터를 실행할 수 있도록 개발된 오픈 소스 도구입니다. Minikube는 적은 자원을 사용하여 로컬에서 단일 노드 Kubernetes 클러스터를 시작합니다. 이는 개발 테스트 및 개념 증명(POC) 목적에 이상적입니다.

궁극의 우분투 데스크톱 핸드북

전문가처럼 Ubuntu를 마스터하세요 - 아름다운 데스크탑 커스터마이징부터 강력한 터미널 자동화까지. 개발자, 시스템 관리자, 그리고 작업 공간을 완전히 제어하고 싶은 파워 유저에게 완벽합니다.

CentOS의 경우, 다음을 확인하세요: KVM을 사용하여 CentOS 7/8에 Minikube 설치.

요약하자면, Minikube는 리눅스 가상 머신을 패키징하고 구성한 다음, 그 안에 Docker와 모든 Kubernetes 구성 요소를 설치합니다.

Minikube는 다음과 같은 Kubernetes 기능을 지원합니다:

  • DNS
  • NodePorts
  • 구성 맵 및 시크릿
  • 대시보드
  • 컨테이너 런타임: Docker, CRI-O, 그리고 containerd
  • CNI(컨테이너 네트워크 인터페이스) 활성화
  • 입구
  • hostPath 유형의 PersistentVolumes

우분투 리눅스에 Minikube 설치를 시작해 봅시다.

KVM 또는 VirtualBox 하이퍼바이저 설치

다음 명령어를 실행하여 모든 시스템 패키지를 최신 버전으로 업데이트하세요:

sudo apt update && sudo apt upgrade -y

업그레이드 후 재부팅이 필요하면 해당 과정을 수행하세요.

[ -f /var/run/reboot-required ] && sudo reboot -f

VirtualBox 사용자는 다음을 사용하여 VirtualBox를 설치하세요:

  • Ubuntu에 VirtualBox 설치

KVM 하이퍼바이저 사용자

KVM 하이퍼바이저 사용에 관심이 있는 분들은 CentOS/Ubuntu/Debian에 KVM을 설치하는 방법에 대한 가이드를 확인하세요.

그런 다음 대신 KVM에서 Minikube를 실행하는 방법을 따르세요.

Ubuntu에서 Minikube 다운로드 및 구성

minikube 바이너리를 다운로드해야 합니다. 바이너리는 ` PATH 안에 있으므로 /usr/local/bin 디렉토리에 두겠습니다.

wget https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
chmod +x minikube-linux-amd64
sudo mv minikube-linux-amd64 /usr/local/bin/minikube

설치된 버전 확인

$ minikube version
minikube version: v1.33.1
commit: 5883c09216182566a63dff4c326a6fc9ed2982ff

우리는 Kubernetes에서 애플리케이션을 배포하고 관리하는 데 사용되는 명령줄 도구인 kubectl이 필요합니다:

curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl

kubectl 바이너리를 실행 가능하게 만드세요.

chmod +x ./kubectl

바이너리를 PATH에 추가하세요:

sudo mv ./kubectl /usr/local/bin/kubectl

버전 확인:

$ kubectl version -o json  --client
{
  "clientVersion": {
    "major": "1",
    "minor": "30",
    "gitVersion": "v1.30.2",
    "gitCommit": "39683505b630ff2121012f3c5b16215a1449d5ed",
    "gitTreeState": "clean",
    "buildDate": "2024-06-11T20:29:44Z",
    "goVersion": "go1.22.4",
    "compiler": "gc",
    "platform": "linux/amd64"
  },
  "kustomizeVersion": "v5.0.4-0.20230601165947-6ce0bf390ce3"
}

Ubuntu에서 minikube 시작하기

이제 구성 요소가 설치되었으므로 minikube를 시작할 수 있습니다. VM 이미지가 다운로드되고 Kubernetes 단일 노드 클러스터용으로 구성됩니다.

  • KVM 드라이버를 사용하는 Minikube
minikube start --driver=kvm2
  • VirtualBox 드라이버와 함께
minikube start --driver=virtualbox

실행 명령어의 예제 출력입니다.

...................................
* Using the kvm2 driver based on user configuration
*   https://minikube.sigs.k8s.io/docs/reference/drivers/none/
* Downloading driver docker-machine-driver-kvm2:
    > docker-machine-driver-kvm2-...:  65 B / 65 B [---------] 100.00% ? p/s 0s
    > docker-machine-driver-kvm2-...:  13.46 MiB / 13.46 MiB  100.00% ? p/s 100
* Downloading VM boot image ...
    > minikube-v1.33.1-amd64.iso....:  65 B / 65 B [---------] 100.00% ? p/s 0s
    > minikube-v1.33.1-amd64.iso:  314.16 MiB / 314.16 MiB  100.00% 37.68 MiB p
* Starting "minikube" primary control-plane node in "minikube" cluster
* Downloading Kubernetes v1.30.0 preload ...
    > preloaded-images-k8s-v18-v1...:  342.90 MiB / 342.90 MiB  100.00% 38.75 M
* Creating kvm2 VM (CPUs=2, Memory=2200MB, Disk=20000MB) ...
* Preparing Kubernetes v1.30.0 on Docker 26.0.2 ...
  - Generating certificates and keys ...
  - Booting up control plane ...
  - Configuring RBAC rules ...
* Configuring bridge CNI (Container Networking Interface) ...
* Verifying Kubernetes components...
  - Using image gcr.io/k8s-minikube/storage-provisioner:v5
* Enabled addons: default-storageclass, storage-provisioner
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

다운로드와 설치가 완료될 때까지 기다린 후 모든 것이 정상적으로 작동하는지 확인하세요.

기본 Minikube 드라이버를 설정하려면 다음을 사용하세요:

# VirtualBox
minikube config set driver virtualbox

# KVM
minikube config set driver kvm

Minikube 기본 작업

클러스터 상태를 확인하려면 다음을 실행하세요:

$ kubectl cluster-info

Kubernetes master is running at https://192.168.39.117:8443
KubeDNS is running at https://192.168.39.117:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

Minikube 구성 파일이 ~/.minikube/machines/minikube/config.json에 위치해 있다는 점을 참고하세요.

구성을 보려면 다음을 사용하세요:

$ kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority: /root/.minikube/ca.crt
    extensions:
    - extension:
        last-update: Sat, 13 Jul 2024 15:29:47 UTC
        provider: minikube.sigs.k8s.io
        version: v1.33.1
      name: cluster_info
    server: https://192.168.39.249:8443
  name: minikube
contexts:
- context:
    cluster: minikube
    extensions:
    - extension:
        last-update: Sat, 13 Jul 2024 15:29:47 UTC
        provider: minikube.sigs.k8s.io
        version: v1.33.1
      name: context_info
    namespace: default
    user: minikube
  name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: minikube
  user:
    client-certificate: /root/.minikube/profiles/minikube/client.crt
    client-key: /root/.minikube/profiles/minikube/client.key

실행 중인 노드를 확인하려면:

$ kubectl get nodes
NAME       STATUS   ROLES           AGE     VERSION
minikube   Ready    control-plane   5m29s   v1.30.0

ssh를 사용하여 minikube VM에 접근:

$ minikube ssh

                         _             _            
            _         _ ( )           ( )           
  ___ ___  (_)  ___  (_)| |/')  _   _ | |_      __  
/' _ ` _ `\| |/' _ `\| || , <  ( ) ( )| '_`\  /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )(  ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)

$ sudo su -

실행 중인 로컬 쿠버네티스 클러스터를 중지하려면 다음을 실행하세요:

$ minikube stop

로컬 쿠버네티스 클러스터를 삭제하려면 다음을 사용하세요:

$ minikube delete

Kubernetes는 웹 대시보드를 함께 제공합니다.

$ minikube addons list
...
|-----------------------------|----------|--------------|--------------------------------|
|         ADDON NAME          | PROFILE  |    STATUS    |           MAINTAINER           |
|-----------------------------|----------|--------------|--------------------------------|
| ambassador                  | minikube | disabled     | 3rd party (Ambassador)         |
| auto-pause                  | minikube | disabled     | minikube                       |
| cloud-spanner               | minikube | disabled     | Google                         |
| csi-hostpath-driver         | minikube | disabled     | Kubernetes                     |
| dashboard                   | minikube | disabled     | Kubernetes                     |
| default-storageclass        | minikube | enabled ✅   | Kubernetes                     |
| efk                         | minikube | disabled     | 3rd party (Elastic)            |
| freshpod                    | minikube | disabled     | Google                         |
| gcp-auth                    | minikube | disabled     | Google                         |
| gvisor                      | minikube | disabled     | minikube                       |
| headlamp                    | minikube | disabled     | 3rd party (kinvolk.io)         |
| helm-tiller                 | minikube | disabled     | 3rd party (Helm)               |
| inaccel                     | minikube | disabled     | 3rd party (InAccel             |
|                             |          |              | [[email ])            |
| ingress                     | minikube | disabled     | Kubernetes                     |
| ingress-dns                 | minikube | disabled     | minikube                       |
| inspektor-gadget            | minikube | disabled     | 3rd party                      |
|                             |          |              | (inspektor-gadget.io)          |
| istio                       | minikube | disabled     | 3rd party (Istio)              |
| istio-provisioner           | minikube | disabled     | 3rd party (Istio)              |
| kong                        | minikube | disabled     | 3rd party (Kong HQ)            |
| kubeflow                    | minikube | disabled     | 3rd party                      |
| kubevirt                    | minikube | disabled     | 3rd party (KubeVirt)           |
| logviewer                   | minikube | disabled     | 3rd party (unknown)            |
| metallb                     | minikube | disabled     | 3rd party (MetalLB)            |
| metrics-server              | minikube | disabled     | Kubernetes                     |
| nvidia-device-plugin        | minikube | disabled     | 3rd party (NVIDIA)             |
| nvidia-driver-installer     | minikube | disabled     | 3rd party (Nvidia)             |
| nvidia-gpu-device-plugin    | minikube | disabled     | 3rd party (Nvidia)             |
| olm                         | minikube | disabled     | 3rd party (Operator Framework) |
| pod-security-policy         | minikube | disabled     | 3rd party (unknown)            |
| portainer                   | minikube | disabled     | 3rd party (Portainer.io)       |
| registry                    | minikube | disabled     | minikube                       |
| registry-aliases            | minikube | disabled     | 3rd party (unknown)            |
| registry-creds              | minikube | disabled     | 3rd party (UPMC Enterprises)   |
| storage-provisioner         | minikube | enabled ✅   | minikube                       |
| storage-provisioner-gluster | minikube | disabled     | 3rd party (Gluster)            |
| storage-provisioner-rancher | minikube | disabled     | 3rd party (Rancher)            |
| volumesnapshots             | minikube | disabled     | Kubernetes                     |
| yakd                        | minikube | disabled     | 3rd party (marcnuri.com)       |
|-----------------------------|----------|--------------|--------------------------------|

모듈을 활성화하려면 다음 명령어를 사용하세요:

minikube addons enable <module>

예시 :

$ minikube addons enable portainer
! portainer is a 3rd party addon and is not maintained or verified by minikube maintainers, enable at your own risk.
! portainer does not currently have an associated maintainer.
  - Using image docker.io/portainer/portainer-ce:2.15.1
* The 'portainer' addon is enabled

기본 브라우저에서 직접 열려면, 다음을 사용하세요:

$ minikube dashboard

대시보드의 URL을 얻으려면

$ minikube dashboard --url
http://192.168.39.117:30000

좋아하는 브라우저에서 URL을 열어 Kubernetes 대시에 접근하세요. 더 자세한 정보를 원하면 다음을 참고하세요:

  • Hello Minikube 시리즈: https://kubernetes.io/docs/tutorials/stateless-application/hello-minikube/
  • 초보자를 위한 Minikube 가이드는 다음에서 확인할 수 있습니다: https://kubernetes.io/docs/getting-started-guides/minikube/

쿠버네티스에 대한 추가 가이드:

  • Kubernetes 컨트롤 플레인(마스터) 노드에 파드 스케줄링
  • 새 Kubernetes 워커 노드를 기존 클러스터에 추가하기
  • Ansible과 Calico CNI를 사용하여 CentOS에 Kubernetes 클러스터 배포
  • 쿠버네티스 클러스터에 메트릭 서버 배포
  • Kubernetes kubeadm에서 사용하는 컨테이너 이미지를 수동으로 가져오기
  • Kubernetes 클러스터에 Helm 3 설치 및 사용