"K8s문서 - Minikube로 쿠버네티스 설치"의 두 판 사이의 차이

154번째 줄: 154번째 줄:
프라이빗 컨테이너 레지스트리를 이용하려면, 이 페이지의 단계를 따르자.
프라이빗 컨테이너 레지스트리를 이용하려면, 이 페이지의 단계를 따르자.


[[ImagePullSecrets]]를 이용하기를 권하지만, Minikube VM 상에서 설정하려 한다면 <code>/home/docker</code> 디렉터리에 <code>.dockercfg</code>를 두거나 <code>/home/docker/.docker</code> 디렉터리에 <code>config.json</code>을 둘 수 있다.
[[ImagePullSecrets]]를 이용하기를 권장하지만, Minikube VM 상에서 설정하려 한다면 <code>/home/docker</code> 디렉터리에 <code>.dockercfg</code>를 두거나 <code>/home/docker/.docker</code> 디렉터리에 <code>config.json</code>을 둘 수 있다.


==애드온==
==애드온==

2019년 11월 15일 (금) 01:47 판

1 개요

Minikube로 쿠버네티스 설치

Minikube는 쿠버네티스를 로컬에서 쉽게 실행하는 도구이다. Minikube는 매일 쿠버네티스를 사용하거나 개발하려는 사용자들을 위해 가상 머신(VM) 이나 노트북에서 단일 노드 쿠버네티스 클러스터를 실행한다.

2 Minikube 특징

Minikube는 다음과 같은 쿠버네티스의 기능을 제공한다.

  • DNS
  • 노드 포트
  • 컨피그 맵과 시크릿
  • 대시보드
  • 컨테이너 런타임: Docker, CRI-Ocontainerd
  • CNI(Container Network Interface) 사용
  • 인그레스

3 설치

Minikube 설치 항목 참고.

4 빠른 시작

여기서 기술하는 간단한 데모는 어떻게 로컬에서 Minikube를 시작하고, 사용하고 삭제하는지를 안내한다. 다음의 주어진 단계를 따라서 Minikube를 시작하고 탐구한다.

1. Minikube를 시작하고 클러스터를 생성

# minikube start
Starting local Kubernetes cluster...
Running pre-create checks...
Creating machine...
Starting local Kubernetes cluster...

특정 쿠버네티스 버전, VM, 컨테이너 런타임 상에서 클러스터를 시작하기 위한 보다 상세한 정보는 클러스터 시작하기 참고.

2. 이제, kubectl을 통해서 클러스터와 상호작용할 수 있다. 보다 상세한 정보는 클러스터와 상호 작용하기 참고.

단순한 HTTP 서버인 echoserver 이미지를 사용해서 쿠버네티스 디플로이먼트를 만들고 --port를 이용해서 8080 포트로 노출해보자.

# kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.10
deployment.apps/hello-minikube created

3. hello-minikube 디플로이먼트에 액세스하기 위해, 서비스로 노출시킨다.

# kubectl expose deployment hello-minikube --type=NodePort --port=8080
service/hello-minikube exposed
--type=NodePort 옵션은 서비스 타입을 지정한다.

4. hello-minikube 파드가 이제 시작되었지만 노출된 서비스를 통해서 접근하기 전에 파드가 뜨기를 기다려야한다.

파드가 떠서 구동되고 있는지 확인한다.

# kubectl get pod
NAME                              READY     STATUS              RESTARTS   AGE
hello-minikube-3383150820-vctvh   0/1       ContainerCreating   0          3s
→ 출력에서 STATUSContainerCreating으로 나타나는 경우, 파드는 아직 생성 중이다.
# kubectl get pod
NAME                              READY     STATUS    RESTARTS   AGE
hello-minikube-3383150820-vctvh   1/1       Running   0          13s
→ 출력에서 STATUSRunning으로 나타나는 경우, 파드는 이제 떠서 기동 중이다.

5. 서비스 상세를 보기 위해서 노출된 서비스의 URL을 얻는다.

minikube service hello-minikube --url

6. 로컬 클러스터의 상세를 보기 위해서, 출력에서 얻은 URL을 브라우저에 복사해서 붙여 넣는다.

출력은 다음과 비슷하다.

Hostname: hello-minikube-7c77b68cff-8wdzq

Pod Information:
    -no pod information available-

Server values:
    server_version=nginx: 1.13.3 - lua: 10008

Request Information:
    client_address=172.17.0.1
    method=GET
    real path=/
    query=
    request_version=1.1
    request_scheme=http
    request_uri=http://192.168.99.100:8080/

Request Headers:
    accept=*/*
    host=192.168.99.100:30674
    user-agent=curl/7.47.0

Request Body:
    -no body in request-

서비스나 클러스터가 더 이상 구동되지 않도록 하려면, 삭제한다.

7. hello-minikube 서비스 삭제

# kubectl delete services hello-minikube
service "hello-minikube" deleted

8. hello-minikube 디플로이먼트 삭제

# kubectl delete deployment hello-minikube
deployment.extensions "hello-minikube" deleted

9. 로컬 Minikube 클러스터 중지

# minikube stop
Stopping "minikube"... "minikube" stopped.

보다 상세한 정보는 클러스터 중지하기를 참조한다.

10. 로컬 Minikube 클러스터 삭제

# minikube delete
Deleting "minikube" ... The "minikube" cluster has been deleted.

보다 상세한 정보는 클러스터 삭제하기를 참조한다.

5 클러스터 관리하기

5.1 클러스터 시작하기

5.1.1 쿠버네티스 버전 지정하기

5.1.2 VM 드라이버 지정하기

5.1.3 대안적인 컨테이너 런타임 상에서 클러스터 시작하기

5.1.4 Docker 데몬 재사용을 통한 로컬 이미지 사용하기

5.2 쿠버네티스 구성하기

5.2.1 예제

5.3 클러스터 중지

5.4 클러스터 삭제

6 클러스터와 상호 작용하기

6.1 Kubectl

6.2 대시보드

6.3 서비스

7 네트워킹

8 퍼시스턴트 볼륨

9 호스트 폴더 마운트

10 프라이빗 컨테이너 레지스트리

프라이빗 컨테이너 레지스트리를 이용하려면, 이 페이지의 단계를 따르자.

ImagePullSecrets를 이용하기를 권장하지만, Minikube VM 상에서 설정하려 한다면 /home/docker 디렉터리에 .dockercfg를 두거나 /home/docker/.docker 디렉터리에 config.json을 둘 수 있다.

11 애드온

Minikube에서 커스텀 애드온을 적절히 시작하고 재시작할 수 있으려면, Minikube와 함께 시작하려는 애드온을 ~/.minikube/addons 디렉터리에 두자. 폴더 내부의 애드온은 Minikube VM으로 이동되어 Minikube가 시작하거나 재시작될 때에 함께 실행된다.

12 HTTP 프록시 환경에서 Minikube 사용하기

Minikube는 쿠버네티스와 Docker 데몬을 포함한 가상 머신을 생성한다. 쿠버네티스가 Docker를 이용하여 컨테이너를 스케쥴링 시도할 때에, Docker 데몬은 컨테이너 이미지를 풀링하기 위해 외부 네트워크를 이용해야 한다.

HTTP 프록시 내부라면, Docker에서 프록시 설정을 해야 한다. 이를 하기 위해서 요구되는 환경 변수를 minikube start 중에 플래그로 전달한다.

예를 들어:

minikube start --docker-env http_proxy=http://$YOURPROXY:PORT \
                 --docker-env https_proxy=https://$YOURPROXY:PORT

만약 가상 머신 주소가 192.168.99.100 이라면 프록시 설정이 kubectl에 직접적으로 도달하지 못할 수도 있다. 이 IP 주소에 대해 프록시 설정을 지나치게 하려면 no_proxy 설정을 수정해야 한다. 다음과 같이 할 수 있다.

export no_proxy=$no_proxy,$(minikube ip)

13 알려진 이슈

다중 노드가 필요한 기능은 Minukube에서 동작하지 않는다.

14 설계

Minikube는 VM 프로비저닝을 위해서 libmachine를 사용하고, 쿠버네티스 클러스터를 프로비저닝하기 위해 kubeadm을 사용한다.

Minikube에 대한 더 자세한 정보는, 제안 부분 참고.

15 추가적인 링크

  • 목표와 비목표: Minikube 프로젝트의 목표와 비목표에 대해서는 로드맵을 살펴보자.
  • 개발 가이드: 풀 리퀘스트를 보내는 방법에 대한 개요는 참여 가이드를 살펴보자.
  • Minikube 빌드: Minikube를 소스에서 빌드/테스트하는 방법은 빌드 가이드를 살펴보자.
  • 새 애드온 추가하기: Minikube에 새 애드온을 추가하는 방법에 대해서는, 애드온 추가 가이드를 보자.
  • MicroK8s: 가상 머신을 사용하지 않으려는 Linux 사용자는 대안으로 MicroK8s를 고려할 수 있다.

16 커뮤니티

컨트리뷰션, 질문과 의견은 모두 환영하며 격려한다! Minikube 개발자는 슬랙의 #minikube 채널(초청받으려면 여기)에 상주하고 있다. 또한 kubernetes-dev 구글 그룹 메일링 리스트도 있다. 메일링 리스트에 포스팅한다면 제목에 “minikube: “라는 접두어를 사용하자.

17 같이 보기

18 참고

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}