본문 바로가기

로컬 환경 구성/로컬 개발환경 구성

10. Minikube를 활용한 k8s 환경 구축하기

# Minikube를 활용한 k8s 환 경 구축하기 (WSL을 기준으로 한다.)

1. Minikube 설치

- 도커 설치 (root 권한으로 실행)

# ubuntu upgrade
sudo apt-get update

# docker install
sudo apt install docker.io -y

- 도커 권한을 수정한다.

예를 들어 생성한 user명이 newuser일 경우 아래의 변수 $USER에 newuser를 넣어주면 된다.

sudo usermod -aG docker $USER && newgrp docker

# 실행 명령어
sudo usermod -aG docker seungkim && newgrp docker

- 도커 설치 확인

docker ps -a

2. minikube 다운로드 및 설치

- minikube 다운로드 및 설치 (root 권한으로 실행)

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb

sudo dpkg -i minikube_latest_amd64.deb

- minikube 실행하기, 새로운 사용자를 생성 후 진행한다. root 권한으로는 정상실행이 안된다. (일반 유저 권한으로 진행)

minikube start --driver=docker

- 정상 실행 확인

🔎  Verifying Kubernetes components...
🌟  Enabled addons: default-storageclass, storage-provisioner
💡  kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

3. kubectl 설치

- kubectl 설치 (root에서 실행)

sudo snap install kubectl --classic

- node 조회 및 pod 조회

seungkim@DESKTOP-BUANL37:~$ kubectl get nodes && kubectl get pod -A
NAME       STATUS   ROLES           AGE   VERSION
minikube   Ready    control-plane   25m   v1.26.3
NAMESPACE     NAME                               READY   STATUS    RESTARTS      AGE
kube-system   coredns-787d4945fb-6vfxr           1/1     Running   0             25m
kube-system   etcd-minikube                      1/1     Running   0             25m
kube-system   kube-apiserver-minikube            1/1     Running   0             25m
kube-system   kube-controller-manager-minikube   1/1     Running   0             25m
kube-system   kube-proxy-n6rsg                   1/1     Running   0             25m
kube-system   kube-scheduler-minikube            1/1     Running   0             25m
kube-system   storage-provisioner                1/1     Running   1 (24m ago)   25m

4. minikube에서 docker hub에 업로드한 이미지 실행하기

- docker hub 주소

https://hub.docker.com/repository/docker/may9noy/cicd-project-ansible/general

 

Docker

 

hub.docker.com

- deployment.yaml 파일 생성

apiVersion: apps/v1
kind: Deployment
metadata:
  name: cicd-deployment
spec:
  selector:
    matchLabels:
      app: cicd-devops-project
  replicas: 2

  template:
    metadata:
      labels:
        app: cicd-devops-project
    spec:
      containers:
      - name: cicd-devops-project
        image: may9noy/cicd-project-ansible
        imagePullPolicy: Always
        ports:
        - containerPort: 8080

- service.yaml 파일 생성

apiVersion: v1
kind: Service
metadata:
  name: cicd-service
  labels:
    app: cicd-devops-project
spec:
  selector:
    app: cicd-devops-project
  type: NodePort
  ports:
    - port: 8080
      targetPort: 8080
      nodePort: 32000

- minikube에서 생성한 서비스로 확인하기

seungkim@DESKTOP-BUANL37:~$ kubectl get pod -n default && kubectl get svc -n default | grep cicd-
NAME                              READY   STATUS    RESTARTS   AGE
cicd-deployment-8487fd8dc-p44f8   1/1     Running   0          2m31s
cicd-deployment-8487fd8dc-qdsrh   1/1     Running   0          2m31s
cicd-service   NodePort    10.104.90.1   <none>        8080:32000/TCP   2m25s

- 위의 작업대로 진행 했는데 로컬에서는 접속이 안되서, hiper-v에 가상 머신 설치해서 진행을 하였다. (아마 네트워크에서 뭔가 꼬인거 같은데 트러블슈팅 하는거보다 가상머신에서 작업하는게 훨씬 빠를거라는 판단하에...)

가상머신만 설치 후 진행을 한거고 과정은 위와 동일하다.

- 접속 결과

- 가상머신에서 조회한 서비스 정보는 아래와 같다.

 

- 끝 -