Snap 을 이용하여 Microk8s 로 Kubernetes 테스트 환경을 구축하는 방법 입니다.

우선 snap 을 이용하여 Microk8s 를 설치합니다.

sudo snap install microk8s --classic

설치가 완료되면 user 에게 microk8s 그룹 권한을 줍니다.

sudo usermod -a -G microk8s #{Ubuntu_사용자_ID}
  • {Ubuntu_사용자_ID} 에는 본인의 Ubuntu 계정 ID 를 넣어 줍니다.

Microk8s 는 microk8s.kubectl 같이 명령어에 항상 microk8s 가 붙어 kubectl 명령어 사용에 불편함이 있어 microk8s.kubectl 를 kubectl 로 alias 로 지정합니다.

sudo snap alias microk8s.kubectl kubectl

microk8s 그룹 권한은 재 로그인 하면 적용되니 재 로그인을 해주세요.
재 로그인을 어떻게 하는지 모르신다면!!! 그냥 리부팅 고고!!!

자 이제 쿠버네티스 대쉬보드를 설치해볼까요
!!! 기본적으로 쿠버네이트 대쉬보드의 웹 접속은 localhost 또는 127.0.0.1 로 제한이 됩니다… 물론 외부에서 접속하는 방법이 있긴한데… 저는 해보다가 성질나서 그냥 접었습니다. 그래서 우분투를 데스크탑 버전으로 설치하였고 외부에서 대쉬보드를 보기위해 팀뷰어를 설치해서 봅니다.

또, 편법으로 firefox 도커를 network_mode 를 host 로 두고 설치해서 로컬인척 접속하는 방법도 있긴한데…귀찮더라고요… 그냥 팀뷰어 접속이 젤 속편한거 같습니다.

쿠버네티스 대쉬보드는 아래와 같이 설치합니다.

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc6/aio/deploy/recommended.yaml
  • 버전은 최신버전으로~~~

설치가 끝나면 팀뷰어로 서버에 접속하거나 실 서버에서 파이어폭스 등 웹브라우져로 아래 주소로 접속 합니다.

https://localhost:16443/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/overview?namespace=default

이후 로그인 화면이 나오면 ID 는 admin 패스워드는 아래 명령어로 확인이 가능합니다.

kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://127.0.0.1:16443
  name: microk8s-cluster
contexts:
- context:
    cluster: microk8s-cluster
    user: admin
  name: microk8s
current-context: microk8s
kind: Config
preferences: {}
users:
- name: admin
  user:
    password: 이부분이 admin 패스워드 입니다.
    username: admin

로그인을 마치면 token 값을 물어 보는데 token 값은 아래 명령어로 확인 가능 합니다.

kubectl -n kube-system describe $(kubectl -n kube-system get secret -n kube-system -o name | grep namespace)
Name:         namespace-controller-token-828jx
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: namespace-controller
              kubernetes.io/service-account.uid: 1473311c-bd00-450d-810d-9d4dfdda67d1

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1103 bytes
namespace:  11 bytes
token:      이부분이 token 입니다.

token 을 정확하게 넣어주시면 쿠버네티스 대쉬보드 로그인 완료!!!

이제 metallb 와 nginx ingress 를 설치해야 하는데…
기본적으로 microk8s.enable metallb ingress 등으로 설치가 가능합니다.
위의 대쉬보드또한 dashboard 플러그인 으로 설치가 가능한데… 향후 다른 환경을 염두해두고 저는 그냥 helm 을 설치해서 패키지들을 관리하려 합니다.

그럼 helm 을 설치합니다. (저는 3버전으로 설치하려 합니다.)

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3

chmod 700 get_helm.sh

./get_helm.sh

helm repo add stable https://kubernetes-charts.storage.googleapis.com/

helm repo update

kubectl config view --raw >~/.kube/config

helm 을 설치하고 repo 를 추가하고 ~/.kube 디렉토리에 쿠버네이트 환경파일을 저장합니다. (microk8s 로 설치한 쿠버네티스는 ~/.kube/config 파일이 존재하지 않아 생성해주는 것 입니다. 다른 환경이라면 config 파일이 저장되어 있을듯 합니다.)

metallb 설치를 위해 config 파일을 미리 만들어 둡니다.
192.168.20.101-192.168.20.199 이 부분은 공유기 DHCP 대역대중 metallb 에서 사용 하실 대역 일부분을 설정해줘야 합니다.

configInline:
  address-pools:
  - name: default
    protocol: layer2
    addresses:
    - 192.168.20.101-192.168.20.199

helm 을 이용하여 아래와 같이 metallb 를 설치합니다.

helm install metallb -f metallb-config.yaml stable/metallb -n kube-system

-n 으로 네임스페이스를 지정하는데 안해줘도 상관 없습니다. 지정 안해주면 default 네임 스페이스로 지정 됩니다.

nginx-ingress 를 설치해봅시다~!!!
저는 한대의 서버에서 microk8s 를 이용해서 쿠버네티스를 셋팅한 관계로 ingress 의 컨트롤러 네트워크를 호스트네트워크에 물렸습니다. 안물리니까 안되더라고요…

helm install nginx stable/nginx-ingress -n kube-system --set controller.hostNetwork=true

일단…
kubernetes, dashboard, metallb, nginx-ingress 를 설치 완료 했습니다.
다음번엔 간단한 사용법을 알아 볼까요?