[Kubernetes] 첫 시작. Minikube 설치 삽질 과정 (feat. docker)

blog post 

 

오픈스택을 멀티 노드로 구성하는 과정에서 간단한 테스트 용 컨테이너가 필요하여 도커를 구축해 보기로 하였습니다. 단순히 도커만 설치하는 것이 아니라 쿠버네티스도 사용해 볼 겸, 도커 드라이버를 사용하는 쿠버네티스 시스템을 구축해 보기로 했습니다. 마침 쿠버네티스 구축에 대해 알아보니 minikube라 불리는 테스트용 쿠버네티스 서비스가 있는 것을 발견하여 이를 활용해 보기로 했습니다. 그런데 막상 실제 문서를 참고하여 진행해보니 기존 매뉴얼 및 블로그의 설명과 실제 운영 환경에서의 차이가 있어보이네요. 처음 진행하는 과정에서 저처럼 어려움을 겪고 계신 분들이 계시다면 이 글을 포함하여 앞으로 진행할 내용들이 조금이나마 도움이 되길 바랍니다.

 

현재 저는 아래와 같은 환경에서 진행합니다.

  • CentOS7 Linux 3.10.0-1062.4.1.el7.x86_64
  • Memory 8G, CPU 2core, SSD 256GB
  • Network: 192.168.0.25/24.
  • 현재 오픈스택의 컴퓨트노드로 활용중이며, KVM 기반 VM이 2대 동작 중

참고로 최종 목표는 쿠버네티스에서 도커 기반 컨테이너를 생성하고 그 위에 devstack을 설치해 보는 것입니다.

 

우선 다음과 같이 kubectl이라고 불리는 쿠버네티스 클라이언트 릴리즈 버전을 받아오고,,

 

[root@Compute0 bin]# 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 파일의 소유권을 설정한 후에 /usr/local/bin/ 디렉토리로 옮겨줍니다.

 

[root@Compute0 bin]# chmod +x ./kubectl
[root@Compute0 bin]# mv ./kubectl /usr/local/bin/kubectl

 

다음으로 쿠버네티스 레포지토리를 설정해 주고,,

 

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

 

클라이언트를 설치합니다.

 

[root@Compute0 bin]# yum install kubernetes-client
[root@Compute0 bin]# curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.29.0/minikube-linux-amd64  && chmod +x minikube  && sudo cp minikube /usr/local/bin/  && rm minikube

 

버전을 확인해보면 1.10.1 버전으로 동작하는 중이라는 것을 알 수 있습니다.

 

[root@Compute0 root]$ minikube version
minikube version: v1.10.1
commit: 63ab801ac27e5742ae442ce36dff7877dcccb278

 

 

 

minikube의 vm 드라이버를 도커로 설정하기 위해 필요한 도커 패키지를 설치하고,,

 

[root@Compute0 bin]# yum install docker-ce docker-ce-cli containerd.io

 

--vm-driver 옵션을 사용하여 아래와 같이 실행해보니 일반 유저로 해야한다고 한다고 하네요. 

 

[root@Compute0 root]# minikube start --vm-driver=docker

 

그래서 일반 사용자로 전환하여 아래와 같이 다시 실행해보니 이번엔 docker group에 사용자 (아마도 현재 로그인한 'user')를 추가하려면 권한이 있어야 한다고 하며 usermod를 사용할 것을 제안합니다.

 

[user@Compute0 root]$ minikube start --vm-driver=docker
😄  Centos 7.7.1908 위의 minikube v1.10.1
✨  유저 환경 설정 정보에 기반하여 docker 드라이버를 사용하는 중

❗  'docker' 드라이버가 다음 이슈를 기록하였습니다: "docker version --format {{.Server.Os}}-{{.Server.Version}}" exit status 1: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/version: dial unix /var/run/docker.sock: connect: permission denied
💡  Suggestion: Add your user to the 'docker' group: 'sudo usermod -aG docker $USER && newgrp docker'
📘  문서: https://docs.docker.com/engine/install/linux-postinstall/

💣  Failed to validate 'docker' driver

 

아래와 같이 도커의 제안대로 usermod를 사용하여 권한 변경해보았고

 

[user@Compute0 root]$ sudo usermod -aG docker $USER && newgrp docker

 

다시 해보니 실행해보니 실행이 되는 것처럼 보입니다.

 

[user@Compute0 root]$ minikube start --vm-driver=docker
😄  Centos 7.7.1908 위의 minikube v1.10.1
✨  유저 환경 설정 정보에 기반하여 docker 드라이버를 사용하는 중
👍  Starting control plane node minikube in cluster minikube
🚜  Pulling base image ...
💾  Downloading Kubernetes v1.18.2 preload ...
    > preloaded-images-k8s-v3-v1.18.2-docker-overlay2-amd64.tar.lz4: 525.43 MiB

 

위의 로그에 이어 도커 컨데이너를 생성하고 쿠버네티스가 팟을 생성하는 것처럼 보이네요. 

 

🔥  Creating docker container (CPUs=2, Memory=2200MB) ...
🐳  쿠버네티스 v1.18.2 을 Docker 19.03.2 런타임으로 설치하는 중
    ▪ kubeadm.pod-network-cidr=10.244.0.0/16
🔎  Verifying Kubernetes components...
🌟  Enabled addons: default-storageclass, storage-provisioner
🏄  끝났습니다! 이제 kubectl 이 "minikube" 를 사용할 수 있도록 설정되었습니다

 

쿠버네티스 상태를 확인해 보면 아래와 같이 구성된 것을 볼 수 있습니다.

 

[user@Compute0 root]$ minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

 

여기까지가 저의 첫 쿠버네티스 minicube 설치 과정입니다. 이어서 다음 포스트에서도 대시보드를 설치하고 컨테이너를 생성하는 과정을 다루도록 하겠습니다.

 

 

TAGS.

Comments