-
[Minikube] Docker image를 minikube cluster로 실행하기Backend/Kubernetes 2022. 4. 10. 14:25728x90
Docker Image를 가지고 애플리케이션을 만들어 minikube cluster로 실행해본다!
1. Docker image 만들기
docker image가 없다면 아래 사이트에서 간단한 docker image를 생성해볼 수 있다.
https://miraekwak.tistory.com/84?category=927457
[Docker hub] docker image 생성 및 Docker hub에 image 업로드
Docker 설치가 완료되었다면 도커로 이미지를 생성한 후 Docker hub 저장소에 이미지를 업로드해볼 수 있다. 도커 설치는 다음의 링크에서! https://miraekwak.tistory.com/76?category=927457 [Docker] Virtual b..
miraekwak.tistory.com
2. Deployment 생성
먼저 api의 버전을 확인해야한다.
kubectl api-rescources | grep deployment
api version == v1 이후 deployment.yaml 파일을 생성한다.
apiVersion: apps/v1 kind: Deployment metadata: name: [deployment name] labels: app: [app name] spec: replicas: 1 selector: matchLabels: app: [app name] template: metadata: labels: app: [app name] spec: containers: -name: [container name] image: [사용자 계정]/[repository name]:latest ports: -containerPort: 5000 imagePullPolicy: Always resources: requests: memory: "256Mi" cpu: "200m" limits: memory: "1Gi" cpu: "500m"
해당 yaml파일을 가지고 deployment를 생성한다.
# deployment 생성 kubectl create deployment cnu-docker-deployment --image=[이미지] # yaml파일을 이용해 리소스 생성 kubectl apply -f cnu-deployment # deployment 조회 kubectl get deployments # pod 조회 kubectl get pods
추가적으로 다음의 명령어로 상태 확인이 가능하다.
# 클러스터 이벤트 조회 kubectl get events # kubectl 환경 설정 보기 kubectl config view
3. 서비스 생성
pod는 kubernetes cluster 내부의 ip주소로만 접근할 수 있어 네트워크 외부에서 접근하기 위해서는 pod를 service로 노출시켜야한다.
# 클러스터 밖의 외부 네트워크로 파드 노출 kubectl expose deployment [deployment name] --type=LoadBalancer --port=5000 kubectl port-forward service/[deployment name] 5000:5000 # 서비스 확인 kubectl get services
4. LoadBalancer 이용
위에서 LoadBalancer 서비스를 사용해 서비스를 외부로 노출시켰다. 이를 통해 각 서비스가 고유한 ip주소를 얻을 수 있는데 이를 위해서는 minikube tennel 사용이 필수적이다.
(minikube tunnel을 사용하지 않으면 pod가 running 상태임에도 external-ip가 pending 상태일 것)
minikube tunnel이란 클러스터의 IP 주소를 게이트웨이로 사용하여 클러스터의 서비스 CIDR에 대한 호스트의 네트워크 경로를 생성하는 프로세스이다. tunnel 명령은 호스트 운영 체제에서 실행 중인 모든 프로그램에 외부 IP를 직접 노출한다.
프로세스이기 때문에 별도의 터미널 창에서 명령어를 입력하고 계속 실행시켜 놓아야 한다!
minikube tunnel
5. 확인!
external-ip:port로 웹에서 접근이 가능하다.
출처
: https://minikube.sigs.k8s.io/docs/handbook/accessing/#using-minikube-tunnel
728x90'Backend > Kubernetes' 카테고리의 다른 글
[Minikube] Virtual box Ubuntu20.04에 minikube 설치 (1) 2022.03.27 [Jupyterhub for Kubernetes-2] JupyterHub 설치 (2) 2022.03.20 [Jupyterhub for Kubernetes-1] MicroK8s를 통한 Bare Metal Host상의 kubernetes 설치 및 helm 설치 (0) 2022.03.16