포스트 목록

레이블이 Kubernetes인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Kubernetes인 게시물을 표시합니다. 모든 게시물 표시

2020년 4월 5일 일요일

[Kubernetes] Ubuntu에 도커 설치

Ubuntu에도 도커를 설치하기 위해 문서를 찾아보던 중 https://docs.docker.com/install/linux/docker-ce/ubuntu/ 에 잘 정리가 되어있어 요약, 번역하여 가져와 봤습니다.

Ubuntu 뿐만 아니라 CentOS, Debian, Fedora, Binaries 등 다른 Linux에 대해서도 나와있으니 잘 살펴보시면 좋겠습니다.

1. 오래된 버전을 삭제합니다. 저의 경우 오래된 버전이 없기 때문에 아래와 같이 지울 게 없다는 메시지가 나왔습니다.
$ sudo apt-get remove docker docker-engine docker.io containerd runc

2. 도커 엔진을 설치하기 전에 apt 업데이트를 진행합니다.
$ sudo apt-get update

3. 다음의 패키지를 설치합니다.
$ sudo apt-get install apt-transport-https ca-certificates curl \
gnupg-agent software-properties-common

4. 도커의 공식 GPG 키를 추가합니다.
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

4-1. 다음의 명령어를 수행하면 키가 추가된 것을 확인할 수 있습니다.
$ sudo apt-key fingerprint 0EBFCD88
pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) 
sub   rsa4096 2017-02-22 [S]

4-2. 다음의 레파지토리를 추가해줍니다.
$ sudo add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) \
    stable"

5. 도커 엔진을 설치합니다.
$ sudo apt-get install docker-ce docker-ce-cli containerd.io

6. 도커가 정상 설치됐는지 다음 명령을 통해 확인해 봅니다.
$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:f9dfddf63636d84ef479d645ab5885156ae030f611a56f3a7ac7f2fdd86d7e4e
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.
    (amd64)
 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 ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

감사합니다.

2020년 3월 15일 일요일

[Kubernetes] Windows에 도커 설치 및 쿠버네티스 활성화 하기

Windows에 도커 설치

 윈도우즈에 도커를 설치하기는 쉽습니다.

https://hub.docker.com/editions/community/docker-ce-desktop-windows

위 사이트에 들어가신 후 Get Docker를 누르시면 됩니다.

그리고 설치 파일을 실행 후 설치하시면 됩니다.


다만 저의 경우 설치 후 실행하니 위와 같은 에러가 발생하였습니다.

위 에러는 도커가 윈도우즈에서 실행하기 위해서는 Hyper-V라는 옵션을 사용하는데 해당 옵션을 켜지 않아 발생한 에러입니다.

인터넷을 찾아보면 세 가지 방법을 제시를 하고 있는데, 저의 경우는 어떠한 방법도 되지 않았습니다만 일단 소개해 드리겠습니다.

A. 관리자 권한으로 실행한 명령 프롬프트에 dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All 입력
C:\Windows\system32>dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All

배포 이미지 서비스 및 관리 도구
버전: 10.0.18362.1

이미지 버전: 10.0.18362.720

기능을 사용하도록 설정하는 중
[==========================100.0%==========================]
작업을 완료했습니다.

B. 관리자 권한으로 실행한 명령 프롬프트에 bcdedit /set hypervisorlaunchtype auto 입력
C:\Windows\system32>bcdedit /set hypervisorlaunchtype auto
작업을 완료했습니다.

C. 제어판 -> 프로그램 -> Windows 기능 켜기/끄기 -> Hyper-V 체크 해제 후 재부팅 -> 다시 Hyper-V 체크 후 재부팅

제 PC 기준으론 세 가지 방법이 모두 안됐지만 BIOS에 직접 설정을 해주니 해결 되었습니다.

D. HP 기준으로 BIOS SETUP -> Advanced 탭 -> System Options -> Virtualization Technology, Virtualization Technology for Directed I/O 둘 다 체크 후 재부팅

설치가 완료되었으면 윈도우즈 파워쉘을 실행하여 docker version 명령을 치시면 버전정보가 나오면서 정상적으로 설치가 완료된 것을 확인할 수 있습니다.
PS C:\Users\kube> docker version
Client: Docker Engine - Community
 Version:           19.03.8
 API version:       1.40
 Go version:        go1.12.17
 Built:             Wed Mar 11 01:23:10 2020
 OS/Arch:           windows/amd64
 Experimental:      false

...

Server: Docker Engine - Community
 Engine:
  Version:          19.03.8
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Built:            Wed Mar 11 01:29:16 2020
  OS/Arch:          linux/amd64
  Experimental:     false

...

쿠버네티스 활성화 하기

도커를 설치 후 쿠버네티스를 활성화 하기 위해서는 시스템 트레이에 도커를 클릭한 뒤 Settings를 클릭합니다.

그 뒤 Kubernetes 탭을 눌러 Enable Kubernetes, Deploy Docker Stacks to Kubernetes by default 두 개를 체크해주면 됩니다.



두 작업이 완료 되었다면 파워쉘에서 kubectl version으로 버전을
PS C:\Users\kube> kubectl version
Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.5", 
GitCommit:"20c265fef0741dd71a66480e35bd69f18351daea", GitTreeState:"clean", 
BuildDate:"2019-10-15T19:16:51Z", GoVersion:"go1.12.10", Compiler:"gc", 
Platform:"windows/amd64"}
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.5", 
GitCommit:"20c265fef0741dd71a66480e35bd69f18351daea", GitTreeState:"clean", 
BuildDate:"2019-10-15T19:07:57Z", GoVersion:"go1.12.10", Compiler:"gc", 
Platform:"linux/amd64"}

kubectl get pods -n kube-system으로 pod정보를 얻을 수 있습니다.
PS C:\Users\kube> kubectl get pods -n kube-system
NAME                                     READY   STATUS    RESTARTS   AGE
coredns-5c98db65d4-cxqzk                 1/1     Running   0          5m
coredns-5c98db65d4-skssk                 1/1     Running   0          5m
etcd-docker-desktop                      1/1     Running   0          4m13s
kube-apiserver-docker-desktop            1/1     Running   0          4m
kube-controller-manager-docker-desktop   1/1     Running   0          4m4s
kube-proxy-l9rbh                         1/1     Running   0          5m
kube-scheduler-docker-desktop            1/1     Running   0          4m
storage-provisioner                      1/1     Running   0          3m58s

2020년 3월 14일 토요일

[Kubernetes] 쿠버네티스 시작 전 사전 지식 정리

쿠버네티스란?

쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장가능한 오픈소스 플랫폼이라고 kubernetes.io 에 정의되어 있습니다.

여기서 워크로드란 주어진 기간에 시스템에 의해 실행되어야 할 작업의 할당량을 의미하며, 이 말은 쉽게 말하면 부하량이라고 생각하시면 됩니다.

그럼 컨테이너에 대해서 알아봐야 하는데, 컨테이너를 알려면 또 가상 머신을 알아야 합니다.

가상 머신(Virtual Machine)과 컨테이너(Container)

가상머신과 컨테이너는 둘 다 가상화라는 공통점이 있지만 대상의 차이가 있습니다.
가상 머신 (출처: https://www.docker.com/resources/what-container)
가상 머신은 하드웨어 기반의 여러 게스트 OS를 띄우는 것으로, 하이퍼바이저를 통해 에뮬레이션을 하는 것입니다.
하이퍼바이저 (출처: ko.wikipedia.org/wiki/하이퍼바이저)
여기서 하이퍼바이저란 호스트 컴퓨터에서 다수의 운영 체제를 동시에 실행하기 위한 논리적 플랫폼을 말하며, native 타입과 hosted 타입이 있는데 흔히 우리가 알고 있는 VMware나 VirtualBox와 같이 OS를 하나 더 띄워주는 프로그램이라 생각하면 쉬울 것 같습니다.
컨테이너 (출처: https://www.docker.com/resources/what-container)
다음으로 컨테이너란 호스트 OS 위에 올라가는 에뮬레이션이며, 게스트 OS 없이 애플리케이션이 되겠습니다. 그림에서와 같이 가장 유명한 Docker, 혹은 Containerd와 같은 프로그램이 있습니다.

결국 둘의 차이는 게스트 OS가 있는지의 차이가 되는데 이 차이가 생각보다 큽니다.

가장 먼저 생각해 볼 수 있는 것은 가상화를 할 때 가상 머신은 각 머신마다 OS가 올라가기 때문에 컨테이너에 비해 더 많은 리소스(메모리, 디스크 용량)가 필요합니다.

도커(Docker)

앞서 말했듯이 도커는 컨테이너의 개념을 구현한 프로그램입니다.
도커 구조 (출처: https://docs.docker.com/engine/docker-overview/)
그림과 같이 도커는 대몬과 컨테이너, 이미지, 레지스트리로 나뉘어져 있습니다.

대몬에서는 클라이언트로부터의 API 요청을 수신하고, 이미지, 컨테이너 등의 도커 개체를 관리합니다.

레지스트리에는 도커 이미지들이 저장되며, DockerHub에서 이미지를 검색하여 가져올 수 있습니다.

다음 포스트부터는 쿠버네티스 관련하여 정리하도록 하겠습니다.

감사합니다.