웹사이트 검색

Ubuntu 20.04에서 Minikube와 함께 Kubernetes를 설치하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • Ubuntu 20.04(Focal Fossa)
  • Ubuntu 18.04(Bionic Beaver)

이 페이지에서

  1. 전제 조건
  2. 시작하기\n
  3. 도커 설치
  4. Minikube 설치
  5. Kubectl 설치
  6. Minikube 시작
  7. Kubernetes 대시보드에 액세스
  8. 결론

Minikube는 로컬 시스템에서 단일 노드 Kubernetes 클러스터를 설정하는 데 도움이 되는 오픈 소스 도구입니다. 일상적인 개발 작업을 위해 개인용 컴퓨터에서 단일 노드 Kubernetes 클러스터를 쉽게 실행할 수 있습니다. 크로스 플랫폼이며 macOS, Linux 및 Windows에 설치할 수 있습니다.

이 튜토리얼에서는 Ubuntu 20.04 서버에 Minikube를 설치하는 방법을 보여줍니다.

전제 조건

  • Ubuntu 20.04 데스크탑이 시스템에 설치되어 있습니다.
  • 최소 4GB RAM 및 2개 이상의 CPU 코어.
  • 로컬 시스템에서 하드웨어 가상화를 활성화해야 합니다.\n
  • 루트 암호는 서버에 구성됩니다.\n

시작하기

시작하기 전에 시스템 패키지를 최신 버전으로 업데이트하는 것이 좋습니다. 다음 명령을 실행하여 업데이트할 수 있습니다.

apt-get update -y

모든 패키지가 업데이트되면 다음 명령을 실행하여 다른 종속성을 설치합니다.

apt-get install curl wget apt-transport-https virtualbox virtualbox-ext-pack -y

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

도커 설치

다음으로 시스템에 Docker를 설치해야 합니다. 다음 명령을 실행하여 설치할 수 있습니다.

apt-get install docker.io -y

Docker가 설치되면 Docker 서비스를 시작하고 시스템 재부팅 시 시작되도록 활성화합니다.

systemctl start docker
systemctl enable docker

이제 다음 명령을 사용하여 Docker 버전을 확인할 수 있습니다.

docker --version

다음 출력에 Docker 버전이 표시되어야 합니다.

Docker version 19.03.8, build afacb8b7f0

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

Minikube 설치

기본적으로 Minikube는 Ubuntu 기본 리포지토리에서 사용할 수 없습니다. 따라서 공식 웹사이트에서 Minikube 바이너리 패키지를 다운로드해야 합니다. 다음 명령으로 다운로드할 수 있습니다.

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

다운로드가 완료되면 다음 명령을 사용하여 다운로드한 바이너리를 시스템 경로에 복사합니다.

cp minikube-linux-amd64 /usr/local/bin/minikube

다음으로 다음 명령으로 실행 권한을 제공합니다.

chmod 755 /usr/local/bin/minikube

이제 다음 명령을 사용하여 Minikube 버전을 확인할 수 있습니다.

minikube version

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

minikube version: v1.16.0
commit: 9f1e482427589ff8451c4723b6ba53bb9742fbb1

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

Kubectl 설치

다음으로 Kubernetes에서 애플리케이션을 관리하려면 Kubectl 및 기타 도구를 설치해야 합니다. 먼저 다음 명령을 사용하여 GPG 키를 추가합니다.

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

다음으로 다음 명령을 사용하여 kubectl 리포지토리를 추가합니다.

echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | tee /etc/apt/sources.list.d/kubernetes.list

리포지토리가 추가되면 다음 명령을 실행하여 리포지토리 캐시를 업데이트하고 Kubectl을 설치합니다.

apt-get update -y
apt-get install kubectl kubeadm kubectl -y

모든 패키지가 설치되면 다음 단계로 진행할 수 있습니다.

Minikube 시작하기

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

minikube start

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

* minikube v1.16.0 on Ubuntu 20.04 (kvm/amd64)
* Using the none driver based on user configuration
* Starting control plane node minikube in cluster minikube
* Running on localhost (CPUs=2, Memory=3936MB, Disk=100726MB) ...
* OS release is Ubuntu 20.04 LTS
* Preparing Kubernetes v1.20.0 on Docker 19.03.8 ...
  - kubelet.resolv-conf=/run/systemd/resolve/resolv.conf
    > kubectl.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
    > kubeadm.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
    > kubelet.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
    > kubeadm: 37.40 MiB / 37.40 MiB [---------------] 100.00% 27.29 MiB p/s 1s
    > kubectl: 38.37 MiB / 38.37 MiB [---------------] 100.00% 27.60 MiB p/s 1s
    > kubelet: 108.69 MiB / 108.69 MiB [-------------] 100.00% 42.08 MiB p/s 3s
  - Generating certificates and keys ...
  - Booting up control plane ...
  - Configuring RBAC rules ...
* Configuring local host environment ...
* 
! The 'none' driver is designed for experts who need to integrate with an existing VM
* Most users should use the newer 'docker' driver instead, which does not require root!
* For more information, see: https://minikube.sigs.k8s.io/docs/reference/drivers/none/
* 
! kubectl and minikube configuration will be stored in /root
! To use kubectl or minikube commands as your own user, you may need to relocate them. For example, to overwrite your own settings, run:
* 
  - sudo mv /root/.kube /root/.minikube $HOME
  - sudo chown -R $USER $HOME/.kube $HOME/.minikube
* 
* This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true
* Verifying Kubernetes components...
* Enabled addons: storage-provisioner, default-storageclass
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

다음 명령으로 클러스터 정보를 확인할 수 있습니다.

kubectl cluster-info

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

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

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

다음 명령을 사용하여 Kubectl 기본 구성을 확인할 수 있습니다.

kubectl config view

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

apiVersion: v1
clusters:
- cluster:
    certificate-authority: /root/.minikube/ca.crt
    server: https://45.58.38.77:8443
  name: minikube
contexts:
- context:
    cluster: minikube
    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
ubunt4   Ready    control-plane,master   2m24s   v1.20.0

Minikube의 상태를 확인하려면 다음 명령을 실행합니다.

minikube status

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

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

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

Kubernetes 대시보드에 액세스

Minikube는 필요에 따라 활성화 또는 비활성화할 수 있는 많은 애드온과 함께 제공됩니다. 다음 명령을 사용하여 모든 애드온을 나열할 수 있습니다.

minikube addons list

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

|-----------------------------|----------|--------------|
|         ADDON NAME          | PROFILE  |    STATUS    |
|-----------------------------|----------|--------------|
| ambassador                  | minikube | disabled     |
| csi-hostpath-driver         | minikube | disabled     |
| dashboard                   | minikube | disabled     |
| default-storageclass        | minikube | enabled ?   |
| efk                         | minikube | disabled     |
| freshpod                    | minikube | disabled     |
| gcp-auth                    | minikube | disabled     |
| gvisor                      | minikube | disabled     |
| helm-tiller                 | minikube | disabled     |
| ingress                     | minikube | disabled     |
| ingress-dns                 | minikube | disabled     |
| istio                       | minikube | disabled     |
| istio-provisioner           | minikube | disabled     |
| kubevirt                    | minikube | disabled     |
| logviewer                   | minikube | disabled     |
| metallb                     | minikube | disabled     |
| metrics-server              | minikube | disabled     |
| nvidia-driver-installer     | minikube | disabled     |
| nvidia-gpu-device-plugin    | minikube | disabled     |
| olm                         | minikube | disabled     |
| pod-security-policy         | minikube | disabled     |
| registry                    | minikube | disabled     |
| registry-aliases            | minikube | disabled     |
| registry-creds              | minikube | disabled     |
| storage-provisioner         | minikube | enabled ?   |
| storage-provisioner-gluster | minikube | disabled     |
| volumesnapshots             | minikube | disabled     |
|-----------------------------|----------|--------------|

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

kubectl get pods --all-namespaces

다음과 같은 결과가 표시되어야 합니다.

NAMESPACE     NAME                                 READY   STATUS    RESTARTS   AGE
kube-system   coredns-74ff55c5b-skf9d              1/1     Running   0          3m45s
kube-system   etcd-ubunt4                      1/1     Running   0          3m54s
kube-system   kube-apiserver-ubunt4            1/1     Running   0          3m54s
kube-system   kube-controller-manager-ubunt4   1/1     Running   0          3m54s
kube-system   kube-proxy-w8q6d                     1/1     Running   0          3m45s
kube-system   kube-scheduler-ubunt4            1/1     Running   0          3m54s
kube-system   storage-provisioner                  1/1     Running   0          3m59s

그런 다음 Kubernetes 대시보드를 활성화하고 다음 명령을 사용하여 대시보드의 URL을 가져옵니다.

minikube dashboard --url

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

* Enabling dashboard ...
* Verifying dashboard health ...
* Launching proxy ...
* Verifying proxy health ...
http://127.0.0.1:36499/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

You can now access and manage the Kubernetes cluster using the URL http://127.0.0.1:36499/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

결론

위 가이드에서는 Minikube를 설치하고 이를 사용하여 Ubuntu 20.04에서 Kubernetes 클러스터를 설정하는 방법을 배웠습니다. 이제 Minikube를 사용하여 Kubernetes 클러스터를 로컬로 설정하고 웹 브라우저에서 관리할 수 있습니다. 궁금한 점이 있으면 언제든지 문의해 주세요.