[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 설치 과정입니다. 이어서 다음 포스트에서도 대시보드를 설치하고 컨테이너를 생성하는 과정을 다루도록 하겠습니다.
'Cloud > Private Cloud Analysis' 카테고리의 다른 글
[Kubernetes] minikube 대시보드 활성화 과정 (0) | 2020.05.17 |
---|---|
Stein 오픈스택 클라우드 분석(9) - 외부에서 가상머신에 SSH접속을 위한 유동 IP (Floating IP) 설정하기 (0) | 2020.04.20 |
기업에서는 오픈스택을 왜 사용할까? 처음 시작은 어떻게 해야 할까? (1) | 2020.04.14 |
Stein 오픈스택 클라우드 분석(7) - 가상머신의 이더넷 인터페이스, mac & ip 주소 할당 과정 (0) | 2020.02.18 |
Stein 오픈스택 클라우드 분석(6) - 오픈스택 시스템 내부에서 이미지와 가상머신을 생성하고 관리하는 방법 (0) | 2020.02.14 |
Stein 오픈스택 클라우드 분석(5) - 가상머신 이미지 업로드부터 인스턴스 생성까지 (0) | 2020.02.14 |
Stein 오픈스택 클라우드 분석(4) - 호스트 시스템에서의 가상 네트워크 구조 분석 (0) | 2020.02.13 |
Stein 오픈스택 클라우드 분석(3) - 외부&내부 네트워크, 서브넷, 라우터 생성 (0) | 2020.02.12 |
Stein 오픈스택 클라우드 분석(2) - 호스트 네트워크 인터페이스 아키텍처 (0) | 2020.02.12 |
Stein 오픈스택 클라우드 분석(1) - 대시보드 구성 및 사용자, 프로젝트 생성 (0) | 2020.02.11 |