'VirtualBox'에 해당하는 글 3건



Linux 상에서의 Minikube 도 설치 방법이 여러가지이다. 우선 하이퍼바이저 상에서 Minikube 를 구동할 것인지, 호스트에서 직접 구동할 것인지를 선택해야 한다. 하이퍼바이저를 이용한다면 리소스를 더 알뜰히 사용할 수 있겠지만, 모든 리눅스에서 하이퍼바이저를 사용할 수는 없다. Widnows 편에서 말했듯이 CPU 의 가상화(VT-x/AMD-v) 지원과 Bios 에서 가상화 활성화 상태를 확인해야 하는데, 요즘 많이들 사용하는 클라우드 컴퓨팅 서비스(EC2, GCE) 등에서는 대부분 HVM 가상화를 사용하고 있고, 그 자체가 이미 VM 이므로 그들은 Bios 에 접근을 할 수 없다. 결국 클라우드 컴퓨팅에서는 하이퍼바이저를 사용할 수 없으므로 과감히 VM 사용을 포기한다.ㅠ 현재 상황이 Linux 에서 VM 을 돌리기 위해 멀쩡한 PC 들에 Linux 를 까기는 좀;; 아무튼 현재 상황에서는 Linux 에서 VM 없이 호스트에서 Minikube 를 직접 구동시켜는 방법을 사용해야 하며, VM 없이 Minikube 를 시작하는 명령은...


 # minikube start --vm-driver=none 


하지만 EC2 Linux 에서도 minikube 를 정상적으로 구동하기 위해 체크해야 할 것들이 있다.



Minikube 구동시 체크사항


  1. 2cpu, 2GB 메모리, 20GB 디스크 이상의 사양.
    EC2 에서 free-tier 인 t2.micro 는 1cpu, 1G 메모리로, minikube 를 구동할 수 없다. 최소 t2.medium 사양(2cpu, 4GB mem)이 필요하다.

  2. docker 설치(Container Runtime)와 cgroup driver 매칭
    docker 가 반드시 필요하며(docker.io 나 docker-ce), 설치 후 docker info | grep -i cgroup 명령으로 cgroup driver 가 cgroupfs 인지 systemd 인지 확인해야 한다. minikube 구동 후에 kubelet 의 cgroup driver 와 일치하지 않는 다면 관련을 참고하여 일치시킨다. VM 에서 구동시에는 docker 가 자동 설치되며 자동 매칭을 해준 부분이다.

  3. 구동 실패시 클러스터 삭제
    minikube start 로 클러스터가 생성되다가 에러가 발생하면 캐싱으로 인해 에러가 반복될 수 있다. 다시 구동하기 전에는 minikube delete 명령으로 생성된 클러스터를 제거해 준다.



EC2 에서 발생할 수 있는 에러 메시지


- virtualbox 미설치 메시지

# minikube start

o   minikube v0.35.0 on linux (amd64)

>   Creating virtualbox VM (CPUs=2, Memory=2048MB, Disk=20000MB) ...

@   Downloading Minikube ISO ...

 184.42 MB / 184.42 MB [============================================] 100.00% 0s

!   Unable to start VM: create: precreate: VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path


- 가상화 비활성화 메시지

# minikube start

o   minikube v0.35.0 on linux (amd64)

>   Creating virtualbox VM (CPUs=2, Memory=2048MB, Disk=20000MB) ...

!   Unable to start VM: create: precreate: This computer doesn't have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory


- docker 미설치 메시지

# minikube start --vm-driver=none

i   This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true

>   Creating none VM (CPUs=2, Memory=2048MB, Disk=20000MB) ...

!   Unable to start VM: create: precreate: exec: "docker": executable file not found in $PATH


- cgroup driver 불일치 메시지

# minikube start --vm-driver=none

This error is likely caused by:

- The kubelet is not running

- The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)



EC2 (ubuntu) 에서 minikube 구동 성공


# minikube start --vm-driver=none

o   minikube v0.35.0 on linux (amd64)

>   Configuring local host environment ...


!   The 'none' driver provides limited isolation and may reduce system security and reliability.

!   For more information, see:

-   https://github.com/kubernetes/minikube/blob/master/docs/vmdriver-none.md


!   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:


    - sudo mv /root/.kube /root/.minikube $HOME

    - sudo chown -R $USER $HOME/.kube $HOME/.minikube


i   This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true

>   Creating none VM (CPUs=2, Memory=2048MB, Disk=20000MB) ...

-   "minikube" IP address is 10.0.1.121

-   Configuring Docker as the container runtime ...

-   Preparing Kubernetes environment ...

-   Pulling images required by Kubernetes v1.13.4 ...

-   Launching Kubernetes v1.13.4 using kubeadm ...

:   Waiting for pods: apiserver proxy etcd scheduler controller addon-manager dns

-   Configuring cluster permissions ...

-   Verifying component health .....

+   kubectl is now configured to use "minikube"

=   Done! Thank you for using minikube!

root@ip-10-0-1-121:~# minikube status

host: Running

kubelet: Running

apiserver: Running

kubectl: Correctly Configured: pointing to minikube-vm at 10.0.1.121




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

Minikube 설치를 마친 후 실행만 해주면 쿠버네티스를 맛볼 수 있다. 실행 명령어는!


 > minikube start 



타 프로그램들은 어떻게든 설치를 하고 나면 실행 과정에서 오류가 나는 일은 거의 없다. 하지만 Minikube 는 설치가 잘되더라도(바이너리 파일을 갖다 쓰는 정도이니 설치랄 것도 없지만) 이 Minikube 가 실행되기 까지 많은 설정들이 필요할 수도 있다. 시스템마다 조금씩 다르겠지만 Minikube 를 VM 에서 실행하려면 하이퍼바이저가 필요하며, VM 에서 실행하지 않으려면 Linux 시스템과 docker 가 필요하다. 하이퍼바이저(Hyperviser) 란 VirtualBox 나 VMware, Hyper-V 같이 물리적인 호스트에서 다수의 가상머신(VM) 을 실행할 수 있도록 하여, CPU, 메모리, 네트워크 대역폭 등의 컴퓨팅 자원을 더 효과적으로 사용할 수 있게 하는 도구이다. Windows 에서 Minikube 를 실행하려면 리눅스 환경이 필요하므로 하이퍼바이저가 반드시 필요하다. 하이퍼바이저의 구동 환경 역시 까다롭다. 대부분의 하이퍼바이저는 CPU 가 가상화(indel: VT-x / amd: AMD-v) 를 지원해야 하고 컴퓨터의 Bios 에서 가상화(Virtualization) 같은 가상화 관련 항목이 활성화 되어 있어야 한다. 참고로 지금 내가 사용중인 Windows 10 에서, Home 에디션을 제외하고는 hyper-v 가 설치되어 있으며, Docker Desktop 을 설치하여 hyper-v 를 활성화 시키거나 수동으로 Powershell 에서 활성화를 시켜 따로 하이퍼바이저를 설치하지 않고 진행하였다.



Minikube 실행 전 준비사항

1. CPU 가상화 지원 (체크: SecurAble) 및 Bios 가상화 활성화 확인

2. 하이퍼바이저 설치 (VirtualBox, hyper-V, KVM 등)

3. Minikube 실행시 해당 하이퍼바이저 명시 (default: virtualbox)



오류 메시지


만약 가상화가 활성화 되어 있지 않은 경우 해당하는 오류 메시지를 나타내며 실행을 중지한다. 아래는 하이퍼바이저를 설치했지만 명시하지 않아 default 하이퍼바이저인 virtualbox 가 없다는 오류 메시지이다.


C:\Windows\system32> minikube start

o   minikube v0.35.0 on windows (amd64)

>   Creating virtualbox VM (CPUs=2, Memory=2048MB, Disk=20000MB) ...

@   Downloading Minikube ISO ...

 184.42 MB / 184.42 MB [============================================] 100.00% 0s

!   Unable to start VM: create: precreate: VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path


아래는 로컬에 활성화 되어 있는 Hyper-V 를 명시했지만 외부 가상 스위치가 없다는 오류 메시지이다.


C:\Windows\system32> minikube start --vm-driver=hyperv

o   minikube v0.35.0 on windows (amd64)

>   Creating hyperv VM (CPUs=2, Memory=2048MB, Disk=20000MB) ...

!   Unable to start VM: create: precreate: no External vswitch found. A valid vswitch must be available for this command to run. Check https://docs.docker.com/machine/drivers/hyper-v/


Hyper-V 관리자에서 [가상 스위치 관리자...] 를 클릭하여 Minikube 에 사용할 외부 네티워크 스위치를 생성한다.



다른 하이퍼바이저를 사용할 때도 오류 메시지가 나타난다면 위처럼 메시지를 보고 해결하면 될 것이다. 



정상 동작


C:\Windows\system32>minikube start --vm-driver=hyperv

o   minikube v0.35.0 on windows (amd64)

>   Creating hyperv VM (CPUs=2, Memory=2048MB, Disk=20000MB) ...

-   "minikube" IP address is 192.168.10.163

-   Configuring Docker as the container runtime ...

-   Preparing Kubernetes environment ...

@   Downloading kubelet v1.13.4

@   Downloading kubeadm v1.13.4

-   Pulling images required by Kubernetes v1.13.4 ...

-   Launching Kubernetes v1.13.4 using kubeadm ...

:   Waiting for pods: apiserver proxy etcd scheduler controller addon-manager dns

-   Configuring cluster permissions ...

-   Verifying component health .....

+   kubectl is now configured to use "minikube"

=   Done! Thank you for using minikube!


C:\Windows\system32>minikube status

host: Running

kubelet: Running

apiserver: Running

kubectl: Correctly Configured: pointing to minikube-vm at 192.168.10.163


정상적으로 시작이 되었다면 VM 에 minikube 가 구동되고 있을 것이다. ㅊㅋㅊㅋ!




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

Install on Windows

Tool/Docker 2016. 1. 15. 01:13

Docker Toolbox 를 다운받아 Docker 를 설치한다.

설치 방법은 Windows 나 Mac OS X 에서나 거의 흡사하다.


Docker Toolbox 구성


- Docker Machine

- Docker Engine

- Docker GUI (Kitematic)

- Docker Compose (윈도우즈 설치시 제외)

- CLI

- Oracle VM VirtualBox


Docker 데몬이 리눅스 커널을 사용하기 때문에, 윈도우즈에서 Docker 를 사용하려면 docker-machine 을 이용해서 Docker VM 을 생성하고 연결해야 한다.

Docker VM 은 윈도우에서 Docker 데몬을 실행하기 위해 특별히 만든 초경량 리눅스 가상 머신이다.



요구사항


- Windows 7 이상

- Microsoft® Hardware-Assisted Virtualization Detection Tool 설치 http://www.microsoft.com/en-us/download/details.aspx?id=592



주의


- 리눅스 상에서 Docker 를 설치하면, Docker 는 localhost 상에서 직접 실행되므로 localhost:8000 식으로 포트를 할당할 수 있다.

- 윈도우즈에서 Docker 데몬은 리눅스 가상 머신에서 실행되므로 리눅스 가상 머신에는 localhost 가 아닌 사설 IP 가 할당된다. ex) 192.168.99.100:2345



다운로드 & 설치


- Docker Toolbox https://www.docker.com/toolbox

- 만약 VirtualBox 나 Git 이 이미 설치되어 있으면 업데이트 된다.



Docker 접속 후 컨테이너(이미지) 실행하기


- Docker Quickstart terminal 사용하는 방법과 CMD 를 사용하는 방법이 있다.

- 컨테이너와 이미지의 구분... 컨테이너는 이미지를 Docker Engine 에서 실행하면 메모리에 저장되는 인스턴스이다. 이미지를 실행한 이미지 안의 어플리케이션을 담고 있다고 보면 된다. 이미지를 여러개 실행하면 여러 컨테이너가 생성된다.



Docker Quickstart terminal 사용하여 Docker 컨테이너 실행하기

- 바탕화면에 생성된 Docker Quickstart Terminal 아이콘을 클릭하면, 자동으로 default VM 을 만들어 Docker 를 실행한다.

- 생성된 default VM 은 계속해서 사용할 수 있다.

- 터미널에서 docker -v 를 실행하여 정상 작동하는지 확인한다.

- 생성된 default VM 에는 리눅스 OS가 full 이미지로 깔린 것처럼 느낄 수 있지만, 사실 OS 구동에 필요한 자원들은 Host OS(여기서는 윈도우즈)의 것을 공유하여 사용하고, 서버 운영에 필요한 라이브러리와 프로그램만 설치되어 OS 이미지 용량을 크게 줄인 것이 일반 VM 과의 다른 점이다.




CMD 사용하여 Docker 컨테이너 실행하기

- Docker Quickstart Terminal 을 사용하지 않고 CMD 로 직접 VM 을 만드는 방법이다.


1. Docker VM 생성

C:\Users\hklee>docker-machine create --driver virtualbox default
Running pre-create checks...
Creating machine...
(default) Copying C:\Users\hklee\.docker\machine\cache\boot2docker.iso to C:\Users\hklee\.docker\machine\machines\default\boot2docker.iso...
(default) Creating VirtualBox VM...
(default) Creating SSH key...
(default) Starting VM...
Waiting for machine to be running, this may take a few minutes...
Machine is running, waiting for SSH to be available...
Detecting operating system of created instance...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect Docker to this machine, run: docker-machine env default
cs


create 명령으로 default 라는 VM 이 새로 생성되었다.(VM 이름은 default 대신 다른 것으로 바꿔도 된다.)

출력문의 마지막에 쓰인것 처럼 docker-machine env default 명령으로 생성된 VM 에 접속한다.


2. 로컬 컴퓨터에서 default VM 에 접속하기 위해 환경 설정하기

C:\Users\hklee>docker-machine env default
You can further specify your shell with either 'cmd' or 'powershell' with the --shell flag.
 
SET DOCKER_TLS_VERIFY=1
SET DOCKER_HOST=tcp://192.168.99.102:2376
SET DOCKER_CERT_PATH=C:\Users\hklee\.docker\machine\machines\default
SET DOCKER_MACHINE_NAME=default
REM Run this command to configure your shell:
REM     FOR /f "tokens=*" %i IN ('docker-machine env default') DO %i
 
cs


default Docker VM 에 접속할 IP, PORT, PATH 등이 준비되었다.

출력문의 마지막에 쓰인 명령으로 생성된 VM 에 접속한다.

FOR /f "tokens=*" %i IN ('docker-machine env default') DO %i

or FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd default') DO %i (터미널마다 다름)


3. default VM 에 접속

C:\Users\hklee>FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd default') DO %i
C:\Users\hklee>SET DOCKER_TLS_VERIFY=1
C:\Users\hklee>SET DOCKER_HOST=tcp://192.168.99.105:2376
C:\Users\hklee>SET DOCKER_CERT_PATH=C:\Users\hklee\.docker\machine\machines\default
C:\Users\hklee>SET DOCKER_MACHINE_NAME=default
cs


4. 접속 테스트

C:\Users\hklee>docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b901d36b6f2f: Pull complete
0a6ba66e537a: Pull complete
Digest: sha256:8be990ef2aeb16dbcb9271ddfe2610fa6658d13f6dfb8bc72074cc1ca36966a7
Status: Downloaded newer image for hello-world:latest
 
Hello from Docker.
This message shows that your installation appears to be working correctly.
 
To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.
 
To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash
 
Share images, automate workflows, and more with a free Docker Hub account:
 https://hub.docker.com
 
For more examples and ideas, visit:
 https://docs.docker.com/userguide/
cs



새로운 hello-world 이미지를 다운받아서 실행해 보았다.

로컬에 이미지가 없기 때문에 hub 에서 이미지를 pull 하여 실행한 것이다.

이로써 docker VM 을 생성하고 접속하는 것까지 마무으리!



WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,