웹사이트 검색

Debian 11에서 Minicube를 사용하여 Kubernetes 클러스터를 설정하는 방법


이 페이지에서

  1. 요구 사항\n
  2. 도커 설치
  3. Kubectl 설치
  4. Minikube 설치
  5. Minikube 시작
  6. Minikube Kubernetes 대시보드에 액세스

Minikube는 로컬 시스템에서 Kubernetes 클러스터를 설정하는 데 도움이 되는 내장 애드온 세트와 함께 제공되는 무료 오픈 소스 도구입니다. minicube 명령은 명령줄 인터페이스를 통해 Kubernetes 클러스터를 관리할 수 있는 여러 하위 명령을 제공합니다. Minikube는 크로스 플랫폼이며 Linux, macOS 및 Windows를 포함한 많은 운영 체제를 지원합니다. VM, 컨테이너 또는 베어 메탈로 배포할 수 있습니다.

이 튜토리얼에서는 Debian 11에 Minikube를 설치하는 방법을 설명합니다.

요구 사항

  • 신선한 Debian 11이 시스템에 설치되어 있습니다.\n
  • 시스템에 루트 암호가 설정되어 있습니다.\n

도커 설치

Minikube를 설치하기 전에 Docker 패키지를 서버에 설치해야 합니다. 설치되어 있지 않은 경우 다음 명령을 사용하여 설치할 수 있습니다.

apt install docker.io -y

Docker를 설치한 후 다음 명령을 사용하여 Docker 버전을 확인할 수 있습니다.

docker --version

다음 출력이 표시되어야 합니다.

Docker version 20.10.5+dfsg1, build 55c4c88

Kubectl 설치

Kubectl은 Kubernetes에서 애플리케이션을 배포하고 관리하는 도구입니다. 기본적으로 Kubectl은 Debian 11 기본 리포지토리에서 사용할 수 없습니다. 따라서 Snap을 사용하여 설치해야 합니다.

먼저 다음 명령을 사용하여 Snap 패키지를 설치합니다.

apt install snapd -y

다음으로 다음 명령을 사용하여 Snap 패키지에 대한 심볼릭 링크를 만듭니다.

ln -s /var/lib/snapd/snap /snap

다음으로 시스템 프로필에 스냅 경로를 추가합니다.

echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | tee -a /etc/profile.d/snap.sh

그런 다음 다음 명령을 사용하여 Snap 서비스를 시작하고 활성화합니다.

systemctl enable --now snapd.service snapd.socket

다음으로 다음 명령을 사용하여 kubectl 패키지를 설치합니다.

snap install kubectl --classic

다음으로 다음 명령을 사용하여 kubectl 패키지의 심볼릭 링크를 만듭니다.

ln -s /snap/kubectl/current/kubectl /usr/bin/

이제 다음 명령을 사용하여 kubectl 버전을 확인합니다.

kubectl version -o yaml

다음 출력이 표시되어야 합니다.

clientVersion:
  buildDate: "2022-12-09T16:23:44Z"
  compiler: gc
  gitCommit: b46a3f887ca979b1a5d14fd39cb1af43e7e5d12d
  gitTreeState: clean
  gitVersion: v1.26.0
  goVersion: go1.19.4
  major: "1"
  minor: "26"
  platform: linux/amd64
kustomizeVersion: v4.5.7

Minikube 설치

기본적으로 Minikube 패키지는 Debian 기본 리포지토리에 포함되어 있지 않습니다. 따라서 시스템에 Minikube 바이너리를 다운로드해야 합니다.

먼저 다음 명령으로 Minikube를 다운로드합니다.

wget https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 -O minikube

다음으로 Minikube 바이너리를 시스템 경로에 복사합니다.

cp minikube /usr/local/bin/

다음으로 다음 명령으로 실행 권한을 설정합니다.

chmod +x /usr/local/bin/minikube

이제 다음 명령을 사용하여 Minikube 버전을 확인합니다.

minikube version

다음과 같은 결과가 표시됩니다.

minikube version: v1.28.0
commit: 986b1ebd987211ed16f8cc10aed7d2c42fc8392f

완료되면 다음 단계로 진행할 수 있습니다.

Minikube 시작하기

이 시점에서 필요한 모든 패키지가 설치됩니다. 이제 다음 명령으로 Minikube를 시작할 수 있습니다.

minikube start --force

이렇게 하면 도커 이미지가 다운로드되고 아래와 같이 Kubernetes 클러스터가 구성됩니다.

????  minikube v1.28.0 on Debian 11.6 (kvm/amd64)
?  minikube skips various validations when --force is supplied; this may lead to unexpected behavior
?  Automatically selected the docker driver. Other choices: none, ssh
????  The "docker" driver should not be used with root privileges. If you wish to continue as root, use --force.
????  If you are running minikube within a VM, consider using --driver=none:
????    https://minikube.sigs.k8s.io/docs/reference/drivers/none/
????  Using Docker driver with root privileges
????  Starting control plane node minikube in cluster minikube
????  Pulling base image ...
????  Downloading Kubernetes v1.25.3 preload ...
    > preloaded-images-k8s-v18-v1...:  385.44 MiB / 385.44 MiB  100.00% 37.08 M
    > gcr.io/k8s-minikube/kicbase:  386.27 MiB / 386.27 MiB  100.00% 27.51 MiB 
    > gcr.io/k8s-minikube/kicbase:  0 B [________________________] ?% ? p/s 10s
????  Creating docker container (CPUs=2, Memory=2200MB) ...
????  Preparing Kubernetes v1.25.3 on Docker 20.10.20 ...
    ? Generating certificates and keys ...
    ? Booting up control plane ...
    ? Configuring RBAC rules ...
????  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

이제 다음 명령을 사용하여 클러스터 상태를 확인할 수 있습니다.

kubectl cluster-info

다음 출력이 표시되어야 합니다.

Kubernetes control plane is running at https://192.168.49.2:8443
CoreDNS is running at https://192.168.49.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

실행 중인 노드를 확인하려면 다음 명령을 실행합니다.

kubectl get nodes

산출:

NAME       STATUS   ROLES           AGE   VERSION
minikube   Ready    control-plane   67s   v1.25.3

다음 명령을 사용하여 Minikube 컨테이너에 액세스할 수도 있습니다.

minikube ssh

산출:

:~$ 

이제 다음 명령을 사용하여 컨테이너 셸을 종료합니다.

$exit

다음 명령을 사용하여 언제든지 Kubernetes 클러스터를 중지하고 삭제할 수 있습니다.

minikube stop
minikube delete

다음 명령을 사용하여 Minikube의 상태를 확인할 수 있습니다.

minikube status

산출:

minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

완료되면 다음 단계로 진행할 수 있습니다.

Minikube Kubernetes 대시보드에 액세스

기본적으로 Minikube는 클러스터를 관리하는 데 사용할 수 있는 웹 대시보드를 제공합니다.

다음 명령을 사용하여 모든 minikube 애드온을 나열할 수 있습니다.

minikube addons list

다음 출력이 표시되어야 합니다.

|-----------------------------|----------|--------------|--------------------------------|
|         ADDON NAME          | PROFILE  |    STATUS    |           MAINTAINER           |
|-----------------------------|----------|--------------|--------------------------------|
| ambassador                  | minikube | disabled     | 3rd party (Ambassador)         |
| auto-pause                  | minikube | disabled     | Google                         |
| 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     | Google                         |
| headlamp                    | minikube | disabled     | 3rd party (kinvolk.io)         |
| helm-tiller                 | minikube | disabled     | 3rd party (Helm)               |
| inaccel                     | minikube | disabled     | 3rd party (InAccel             |
|                             |          |              | [])            |
| ingress                     | minikube | disabled     | Kubernetes                     |
| ingress-dns                 | minikube | disabled     | Google                         |
| istio                       | minikube | disabled     | 3rd party (Istio)              |
| istio-provisioner           | minikube | disabled     | 3rd party (Istio)              |
| kong                        | minikube | disabled     | 3rd party (Kong HQ)            |
| kubevirt                    | minikube | disabled     | 3rd party (KubeVirt)           |
| logviewer                   | minikube | disabled     | 3rd party (unknown)            |
| metallb                     | minikube | disabled     | 3rd party (MetalLB)            |
| metrics-server              | minikube | disabled     | Kubernetes                     |
| nvidia-driver-installer     | minikube | disabled     | Google                         |
| 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     | Google                         |
| registry-aliases            | minikube | disabled     | 3rd party (unknown)            |
| registry-creds              | minikube | disabled     | 3rd party (UPMC Enterprises)   |
| storage-provisioner         | minikube | enabled ?   | Google                         |
| storage-provisioner-gluster | minikube | disabled     | 3rd party (Gluster)            |
| volumesnapshots             | minikube | disabled     | Kubernetes                     |
|-----------------------------|----------|--------------|--------------------------------|

다음으로 다음 명령을 사용하여 클러스터에서 실행 중인 모든 컨테이너 이미지를 나열합니다.

kubectl get pods --all-namespaces

다음 출력이 표시되어야 합니다.

NAMESPACE     NAME                               READY   STATUS    RESTARTS        AGE
kube-system   coredns-565d847f94-9ttdq           1/1     Running   0               2m47s
kube-system   etcd-minikube                      1/1     Running   0               3m
kube-system   kube-apiserver-minikube            1/1     Running   0               3m1s
kube-system   kube-controller-manager-minikube   1/1     Running   0               3m
kube-system   kube-proxy-mr8sn                   1/1     Running   0               2m47s
kube-system   kube-scheduler-minikube            1/1     Running   0               3m
kube-system   storage-provisioner                1/1     Running   1 (2m16s ago)   2m59s

이제 다음 명령을 실행하여 Kubernetes 대시보드의 URL을 가져옵니다.

minikube dashboard --url

다음 출력이 표시되어야 합니다.

????  Enabling dashboard ...
    ? Using image docker.io/kubernetesui/metrics-scraper:v1.0.8
    ? Using image docker.io/kubernetesui/dashboard:v2.7.0
????  Some dashboard features require the metrics-server addon. To enable all features please run:

	minikube addons enable metrics-server	


????  Verifying dashboard health ...
????  Launching proxy ...
????  Verifying proxy health ...
http://127.0.0.1:45627/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

이 시점에서 Minikube 대시보드가 설치되어 포트 45627의 localhost에서 실행됩니다. 그러나 로컬 시스템에서만 액세스할 수 있습니다. 외부 시스템에서 액세스하려면 다음 명령을 실행하십시오.

kubectl proxy --address='0.0.0.0' --disable-filter=true

이제 웹 브라우저를 열고 URL http://your-server-ip:8001/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/를 입력합니다. 다음 페이지와 같이 Kubernetes 대시보드로 리디렉션됩니다.

축하합니다! Debian 11에 Minikube를 성공적으로 설치했습니다. 이제 웹 브라우저를 통해 Kubernetes 클러스터를 쉽게 관리할 수 있습니다. 궁금한 점이 있으면 언제든지 문의해 주세요.