Forth Korean l10n work for release-1.19

- Fix ko glossary managed service title (#24621)
- Translate reference/glossary/service-broker.md in Korean (#24632)
- Translate reference/command-line-tools-reference/kubelet-authentication-authorization.md into korean (#24623)
- Update outdated files in the dev-1.19-ko.4 branch (#24622)
- Translate setup/production-environment/tools/kubeadm/self-hosting/ into Korean (#24655)
- Translate reference/kubectl/kubectl.md into Korean (#24482)
- docs: fix typo (#24713)
- Translate connecting-frontend-backend to Korean (#24422)
- Translate reference/kubectl/conventions.md into Korean (#24614)
- Translate k8s 1.19 relaese note in korean (#24633)

Co-authored-by: seokho-son <shsongist@gmail.com>
Co-authored-by: santachopa <santachopa@naver.com>
Co-authored-by: kosehy@gmail.com <kosehy@gmail.com>
Co-authored-by: Jerry Park <jaehwa@gmail.com>
Co-authored-by: markruler <csu0414@gmail.com>
Co-authored-by: noel <neutiyoo@gmail.com>
Co-authored-by: coolguyhong <podolsmith@naver.com>
Co-authored-by: chhanz <han0495@gmail.com>
Co-authored-by: bluefriday <bluefriday86@gmail.com>
This commit is contained in:
Jerry Park
2020-10-18 16:55:36 +09:00
committed by Seokho Son
parent 253eff2827
commit 6d27247c1e
69 changed files with 3977 additions and 963 deletions
@@ -0,0 +1,212 @@
---
title: 서비스를 사용하여 프론트엔드를 백엔드에 연결
content_type: tutorial
weight: 70
---
<!-- overview -->
이 작업은 프론트엔드와 마이크로서비스 백엔드를 어떻게 생성하는지를
설명한다. 백엔드 마이크로서비스는 인사하기(hello greeter)이다.
프론트엔드와 백엔드는 쿠버네티스 {{< glossary_tooltip term_id="service" text="서비스" >}}
오브젝트를 이용해 연결되어 있다.
## {{% heading "objectives" %}}
* {{< glossary_tooltip term_id="deployment" text="디플로이먼트(Deployment)" >}} 오브젝트를 사용해 마이크로서비스를 생성하고 실행한다.
* 프론트엔드를 사용하여 백엔드로 트래픽을 전달한다.
* 프론트엔드 애플리케이션을 백엔드 애플리케이션에 연결하기 위해
서비스 오브젝트를 사용한다.
## {{% heading "prerequisites" %}}
{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
이 작업은
지원되는 환경이 필요한
[외부 로드밸런서가 있는 서비스](/docs/tasks/access-application-cluster/create-external-load-balancer/)를 사용한다. 만약, 이를 지원하지 않는 환경이라면, [노드포트](/ko/docs/concepts/services-networking/service/#nodeport) 서비스 타입을
대신 사용할 수 있다.
<!-- lessoncontent -->
## 디플로이먼트를 사용해 백엔드 생성하기
백엔드는 인사하기라는 간단한 마이크로서비스이다. 여기에 백엔드 디플로이먼트
구성 파일이 있다.
{{< codenew file="service/access/hello.yaml" >}}
백엔드 디플로이먼트를 생성한다.
```shell
kubectl apply -f https://k8s.io/examples/service/access/hello.yaml
```
백엔드 디플로이먼트에 관한 정보를 본다.
```shell
kubectl describe deployment hello
```
결과는 아래와 같다.
```
Name: hello
Namespace: default
CreationTimestamp: Mon, 24 Oct 2016 14:21:02 -0700
Labels: app=hello
tier=backend
track=stable
Annotations: deployment.kubernetes.io/revision=1
Selector: app=hello,tier=backend,track=stable
Replicas: 7 desired | 7 updated | 7 total | 7 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 1 max unavailable, 1 max surge
Pod Template:
Labels: app=hello
tier=backend
track=stable
Containers:
hello:
Image: "gcr.io/google-samples/hello-go-gke:1.0"
Port: 80/TCP
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable
Progressing True NewReplicaSetAvailable
OldReplicaSets: <none>
NewReplicaSet: hello-3621623197 (7/7 replicas created)
Events:
...
```
## 백엔드 서비스 오브젝트 생성하기
프론트엔드와 백엔드를 연결하는 방법은 백엔드
서비스이다. 서비스는 백엔드 마이크로서비스에 언제든 도달하기 위해
변하지 않는 IP 주소와 DNS 이름 항목을 생성한다. 서비스는
트래픽을 보내는 파드를 찾기 위해
{{< glossary_tooltip text="selectors" term_id="selector" text="셀렉터" >}}를 사용한다.
먼저, 서비스 구성 파일을 살펴보자.
{{< codenew file="service/access/hello-service.yaml" >}}
구성 파일에서 서비스가 `app: hello``tier: backend` 레이블을 갖는
파드에 트래픽을 보내는 것을 볼 수 있다.
`hello` 서비스를 생성한다.
```shell
kubectl apply -f https://k8s.io/examples/service/access/hello-service.yaml
```
이 시점에서, 백엔드 디플로이먼트는 Running 중이며, 해당 백엔드로
트래픽을 보내는 서비스를 갖고 있다.
## 프론트엔드 생성하기
이제 백엔드가 있기 때문에 백엔드와 연결하는 프론트엔드를 생성할 수 있다.
프론트엔드는 백엔드 서비스에서 제공된 DNS 이름을 사용해 백엔드 워커
파드에 연결할 수 있다. DNS 이름은 "hello" 이고, 앞선
서비스 구성 파일의 `name` 항목의 값이다.
프론트엔드 디플로이먼트 안에 파드는 hello 백엔드 서비스를 찾도록
구성된 nginx 이미지를 실행한다. 여기에 nginx 구성 파일이 있다.
{{< codenew file="service/access/frontend.conf" >}}
백엔드와 같이, 프론트엔드는 디플로이먼트와 서비스를 갖고 있다.
서비스의 구성은 `type: LoadBalancer` 이며, 이는 서비스가
클라우드 공급자의 기본 로드 밸런서를 사용하는 것을 의미한다.
{{< codenew file="service/access/frontend.yaml" >}}
프론트엔드 디플로이먼트와 서비스를 생성한다.
```shell
kubectl apply -f https://k8s.io/examples/service/access/frontend.yaml
```
결과는 두 리소스가 생성되었음을 확인한다.
```
deployment.apps/frontend created
service/frontend created
```
{{< note >}}
nginx 구성은 [컨테이너 이미지](/examples/service/access/Dockerfile)에
반영 되었다. 이를 실행하는 더 좋은 방법은
구성을
보다 쉽게 변경할
수 있는 [컨피그맵(ConfigMap)](/docs/tasks/configure-pod-container/configure-pod-configmap/)을 사용하는 것이다.
{{< /note >}}
## 프론트엔드 서비스와 통신하기
일단 로드밸런서 타입의 서비스를 생성하면, 이 명령어를
사용해 외부 IP를 찾을 수 있다.
```shell
kubectl get service frontend --watch
```
`frontend` 서비스의 구성을 보여주고, 변경 사항을
주시한다. 처음에, 외부 IP는 `<pending>` 으로 나열된다.
```
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
frontend LoadBalancer 10.51.252.116 <pending> 80/TCP 10s
```
하지만, 외부 IP가 생성되자마자 구성은
`EXTERNAL-IP` 제목 아래에 새로운 IP를 포함하여 갱신한다.
```
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
frontend LoadBalancer 10.51.252.116 XXX.XXX.XXX.XXX 80/TCP 1m
```
이제 해당 IP는 클러스터 외부에서 `frontend` 서비스와 통신하는데
사용된다.
## 프론트엔드 통해서 트래픽 보내기
이제 프론트엔드와 백엔드가 연결되었다. 프론트엔드 서비스의 외부 IP에서
curl 명령을 사용해 엔드포인트에 도달할 수 있다.
```shell
curl http://${EXTERNAL_IP} # 앞의 예에서 본 EXTERNAL-IP로 수정한다
```
결과로 백엔드에서 생성된 메시지가 보인다.
```json
{"message":"Hello"}
```
## {{% heading "cleanup" %}}
서비스를 삭제하기 위해, 아래 명령어를 입력하자.
```shell
kubectl delete services frontend hello
```
백엔드와 프론트엔드 애플리케이션에서 실행 중인 디플로이먼트, 레플리카셋, 파드를 삭제하기 위해, 아래 명령어를 입력하자.
```shell
kubectl delete deployment frontend hello
```
## {{% heading "whatsnext" %}}
* [서비스](/ko/docs/concepts/services-networking/service/)에 대해 더 알아본다.
* [컨피그맵](/docs/tasks/configure-pod-container/configure-pod-configmap/)에 대해 더 알아본다.
@@ -7,7 +7,7 @@ min-kubernetes-server-version: v1.10
<!-- overview -->
이 페이지는 `kubectl port-forward` 를 사용해서 쿠버네티스 클러스터 내에서
이 페이지는 `kubectl port-forward` 를 사용해서 쿠버네티스 클러스터 내에서
실행중인 Redis 서버에 연결하는 방법을 보여준다. 이 유형의 연결은 데이터베이스
디버깅에 유용할 수 있다.
@@ -29,7 +29,7 @@ min-kubernetes-server-version: v1.10
## Redis 디플로이먼트와 서비스 생성하기
1. Redis를 실행하기 위해 디플로이먼트를 생성한다.
```shell
kubectl apply -f https://k8s.io/examples/application/guestbook/redis-master-deployment.yaml
```
@@ -151,7 +151,7 @@ min-kubernetes-server-version: v1.10
또는 다음과 같다.
```shell
kubectl port-forward svc/redis-master 7000:6379
kubectl port-forward service/redis-master 7000:redis
```
위의 명령어들은 모두 동일하게 동작한다. 이와 유사하게 출력된다.
@@ -203,7 +203,3 @@ UDP 프로토콜에 대한 지원은
## {{% heading "whatsnext" %}}
[kubectl port-forward](/docs/reference/generated/kubectl/kubectl-commands/#port-forward)에 대해 더 알아본다.
@@ -146,7 +146,7 @@ Kubeconfig 인증 방법은 외부 아이덴티티 프로파이더 또는 x509
만약 이름을 10이라는 숫자로 세팅한다면, 파드는 기본 네임스페이스로 배정하게 될 것이다.
네임스페이스 생성이 성공하는 경우, 생성된 네임스페이스가 기본으로 선택된다.
만약 생성에 실패하면, 첫번째 네임스페이스가 선택된다.
만약 생성에 실패하면, 첫 번째 네임스페이스가 선택된다.
- **이미지 풀(Pull) 시크릿**:
특정 도커 컨테이너 이미지가 프라이빗한 경우,
@@ -63,7 +63,7 @@ deployment.apps/cilium-operator created
```
시작하기 안내서의 나머지 부분은 예제 애플리케이션을 이용하여
L3/L4(예, IP 주소 + 포트) 모두의 보안 정책 뿐만 아니라 L7(예, HTTP)의 보안 정책을
L3/L4(예, IP 주소 + 포트) 모두의 보안 정책뿐만 아니라 L7(예, HTTP)의 보안 정책을
적용하는 방법을 설명한다.
## 실리움을 실 서비스 용도로 배포하기
@@ -37,7 +37,7 @@ weight: 130
`/usr/share/nginx/html` 에 마운트한다. 초기화 컨테이너는 다음 명령을 실행 후
종료한다.
wget -O /work-dir/index.html http://kubernetes.io
wget -O /work-dir/index.html http://info.cern.ch
초기화 컨테이너는 nginx 서버의 루트 디렉터리 내 `index.html` 파일을
저장한다.
@@ -67,16 +67,13 @@ init-demo 파드 내 실행 중인 nginx 컨테이너의 셸을 실행한다.
출력 결과는 nginx가 초기화 컨테이너에 의해 저장된 웹 페이지를 제공하고 있음을 보여준다.
<!Doctype html>
<html id="home">
<html><head></head><body><header>
<title>http://info.cern.ch</title>
</header>
<head>
...
"url": "http://kubernetes.io/"}</script>
</head>
<body>
<h1>http://info.cern.ch - home of the first website</h1>
...
<p>Kubernetes is open source giving you the freedom to take advantage ...</p>
<li><a href="http://info.cern.ch/hypertext/WWW/TheProject.html">Browse the first website</a></li>
...
@@ -136,7 +136,7 @@ Redis 파드의
* [파드](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#pod-v1-core)을 참고한다.
* 쿠버네티스는 `emptyDir` 이 제공하는 로컬 디스크 스토리지 뿐만 아니라,
* 쿠버네티스는 `emptyDir` 이 제공하는 로컬 디스크 스토리지뿐만 아니라,
중요한 데이터에 선호하는 GCE의 PD, EC2의 EBS를 포함해서
네트워크 연결 스토리지(NAS) 솔루션을 지원하며,
노드의 디바이스 마운트, 언마운트와 같은 세부사항을 처리한다.
@@ -7,16 +7,16 @@ content_type: concept
컨테이너 CPU 및 메모리 사용량과 같은 리소스 사용량 메트릭은
쿠버네티스의 메트릭 API를 통해 사용할 수 있다. 이 메트릭은
`kubectl top` 커맨드 사용과 같이 사용자가 직접적으로 액세스하거나,
`kubectl top` 커맨드 사용하여 사용자가 직접적으로 액세스하거나,
Horizontal Pod Autoscaler 같은 클러스터의 컨트롤러에서 결정을 내릴 때 사용될 수 있다.
<!-- body -->
## 메트릭 API
메트릭 API를 통해 주어진 노드나 파드에서 현재 사용중인
메트릭 API를 통해, 주어진 노드나 파드에서 현재 사용중인
리소스의 양을 알 수 있다. 이 API는 메트릭 값을 저장하지
않으므로 지정된 노드에서 10분 전에 사용된 리소스의 양을
않으므로, 예를 들어, 지정된 노드에서 10분 전에 사용된 리소스의 양을
가져오는 것과 같은 일을 할 수는 없다.
이 API와 다른 API는 차이가 없다.
@@ -52,14 +52,12 @@ kubelet은 비율 계산에 사용할 윈도우를 선택한다.
## 메트릭 서버
[메트릭 서버](https://github.com/kubernetes-incubator/metrics-server)는 클러스터 전역에서 리소스 사용량 데이터를 집계한다.
`kube-up.sh` 스크립트에 의해 생성된 클러스터에는 기본적으로 메트릭 서버가
기본적으로, `kube-up.sh` 스크립트에 의해 생성된 클러스터에는 메트릭 서버가
디플로이먼트 오브젝트로 배포된다. 만약 다른 쿠버네티스 설치 메커니즘을 사용한다면, 제공된
[디플로이먼트 components.yaml](https://github.com/kubernetes-sigs/metrics-server/releases) 파일을 사용하여 메트릭 서버를 배포할 수 있다.
메트릭 서버는 각 노드에서 [Kubelet](/docs/reference/command-line-tools-reference/kubelet/)에 의해
노출된 Summary API에서 메트릭을 수집한다.
메트릭 서버는 [쿠버네티스 aggregator](/ko/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/)를
노출된 Summary API에서 메트릭을 수집하고, [쿠버네티스 aggregator](/ko/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/)를
통해 메인 API 서버에 등록된다.
[설계 문서](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/instrumentation/metrics-server.md)에서
@@ -108,11 +108,7 @@ php-apache Deployment/php-apache/scale 0% / 50% 1 10 1
```shell
kubectl run -it --rm load-generator --image=busybox /bin/sh
Hit enter for command prompt
while true; do wget -q -O- http://php-apache; done
kubectl run -i --tty load-generator --rm --image=busybox --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://php-apache; done"
```
실행 후, 약 1분 정도 후에 CPU 부하가 올라가는 것을 볼 수 있다.
@@ -386,7 +382,7 @@ object:
외부 메트릭을 사용하면 모니터링 시스템의 사용 가능한 메트릭에 기반하여 클러스터를 오토스케일링 할 수 있다.
위의 예제처럼 `name`과 `selector`를 갖는 `metric` 블록을 제공하고,
`Object` 대신에 `External` 메트릭 타입을 사용한다.
만일 여러개의 시계열이 `metricSelector`와 일치하면, HorizontalPodAutoscaler가 값의 합을 사용한다.
만일 여러 개의 시계열이 `metricSelector`와 일치하면, HorizontalPodAutoscaler가 값의 합을 사용한다.
외부 메트릭들은 `Value`와 `AverageValue` 대상 타입을 모두 지원하고,
`Object` 타입을 사용할 때와 똑같이 동작한다.
@@ -406,6 +406,9 @@ behavior:
마지막으로 5개의 파드를 드롭하기 위해 다른 폴리시를 추가하고, 최소 선택
전략을 추가할 수 있다.
분당 5개 이하의 파드가 제거되지 않도록, 고정 크기가 5인 두 번째 축소
정책을 추가하고, `selectPolicy` 를 최소로 설정하면 된다. `selectPolicy``Min` 으로 설정하면
자동 스케일러가 가장 적은 수의 파드에 영향을 주는 정책을 선택함을 의미한다.
```yaml
behavior:
@@ -417,7 +420,7 @@ behavior:
- type: Pods
value: 5
periodSeconds: 60
selectPolicy: Max
selectPolicy: Min
```
### 예시: 스케일 다운 비활성화
+21 -14
View File
@@ -8,34 +8,41 @@ no_list: true
## kubectl
쿠버네티스 커맨드 라인 도구인 `kubectl` 사용하면 쿠버네티스 클러스터에 대해 명령을
실행할 수 있다. kubectl을 사용하여 애플리케이션을 배포하고, 클러스터 리소스를 검사 및
실행할 수 있다. `kubectl` 을 사용하여 애플리케이션을 배포하고, 클러스터 리소스를 검사 및
관리하고, 로그를 볼 수 있다.
클러스터에 접근하기 위해 `kubectl` 을 다운로드 및 설치하고 설정하는 방법에 대한 정보는
[kubectl 설치 및 설정](/ko/docs/tasks/tools/install-kubectl/)을 참고한다.
[`kubectl` 설치 및 설정](/ko/docs/tasks/tools/install-kubectl/)을
참고한다.
`kubectl` 레퍼런스 문서를 읽어볼 수도 있다.
<a class="btn btn-primary" href="/ko/docs/tasks/tools/install-kubectl/" role="button" aria-label="kubectl 설치 및 설정 가이드 보기">kubectl 설치 및 설정 가이드 보기</a>
## Minikube
[`kubectl` 레퍼런스 문서](/ko/docs/reference/kubectl/)를 읽어볼 수도 있다.
[Minikube](https://minikube.sigs.k8s.io/)는 쿠버네티스를 로컬에서 실행할 수 있는
도구이다. Minikube는 개인용 컴퓨터(윈도우, macOS 및 리눅스 PC 포함)에서
## minikube
[`minikube`](https://minikube.sigs.k8s.io/)는 쿠버네티스를 로컬에서 실행할 수 있는
도구이다. `minikube` 는 개인용 컴퓨터(윈도우, macOS 및 리눅스 PC 포함)에서
단일 노드 쿠버네티스 클러스터를 실행하여 쿠버네티스를 사용해보거나 일상적인 개발 작업을
수행할 수 있다.
공식 사이트에서의 [시작하기!](https://minikube.sigs.k8s.io/docs/start/)
가이드를 따라 해볼 수 있고, 또는 도구 설치에 중점을 두고 있다면
[Minikube 설치](/ko/docs/tasks/tools/install-minikube/)를 읽어볼 수 있다.
도구 설치에 중점을 두고 있다면 공식 사이트에서의
[시작하기!](https://minikube.sigs.k8s.io/docs/start/)
가이드를 따라 해볼 수 있다.
Minikube가 작동하면, 이를 사용하여
<a class="btn btn-primary" href="https://minikube.sigs.k8s.io/docs/start/" role="button" aria-label="minikube 시작하기! 가이드 보기">minikube 시작하기! 가이드 보기</a>
`minikube` 가 작동하면, 이를 사용하여
[샘플 애플리케이션을 실행](/ko/docs/tutorials/hello-minikube/)해볼 수 있다.
## kind
Minikube와 마찬가지로, [kind](https://kind.sigs.k8s.io/docs/)를 사용하면 로컬 컴퓨터에서
쿠버네티스를 실행할 수 있다. Minikuke와 달리, kind는 단일 컨테이너 런타임에서만 작동한다.
kind는 [도커](https://docs.docker.com/get-docker/)를 설치하고
`minikube` 와 마찬가지로, [kind](https://kind.sigs.k8s.io/docs/)를 사용하면 로컬 컴퓨터에서
쿠버네티스를 실행할 수 있다. `minikube` 와 달리, `kind` 는 단일 컨테이너 런타임에서만 작동한다.
`kind` 는 [도커](https://docs.docker.com/get-docker/)를 설치하고
구성해야 한다.
[퀵 스타트](https://kind.sigs.k8s.io/docs/user/quick-start/)는 kind를 시작하고 실행하기 위해
[퀵 스타트](https://kind.sigs.k8s.io/docs/user/quick-start/)는 `kind` 를 시작하고 실행하기 위해
수행해야 하는 작업을 보여준다.
<a class="btn btn-primary" href="https://kind.sigs.k8s.io/docs/user/quick-start/" role="button" aria-label="kind 시작하기 가이드 보기">kind 시작하기 가이드 보기</a>
@@ -62,7 +62,7 @@ kubectl을 사용하여 애플리케이션을 배포하고, 클러스터 리소
{{< tabs name="kubectl_install" >}}
{{< tab name="Ubuntu, Debian 또는 HypriotOS" codelang="bash" >}}
sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2
sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2 curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
@@ -1,262 +0,0 @@
---
title: Minikube 설치
content_type: task
weight: 20
card:
name: tasks
weight: 10
---
<!-- overview -->
이 페이지는 단일 노드 쿠버네티스 클러스터를 노트북의 가상 머신에서 구동하는 도구인 [Minikube](/ko/docs/tutorials/hello-minikube)의 설치 방법을 설명한다.
## {{% heading "prerequisites" %}}
{{< tabs name="minikube_before_you_begin" >}}
{{% tab name="리눅스" %}}
리눅스에서 가상화 지원 여부를 확인하려면, 아래의 명령을 실행하고 출력이 비어있지 않은지 확인한다.
```
grep -E --color 'vmx|svm' /proc/cpuinfo
```
{{% /tab %}}
{{% tab name="맥OS" %}}
맥OS에서 가상화 지원 여부를 확인하려면, 아래 명령어를 터미널에서 실행한다.
```
sysctl -a | grep -E --color 'machdep.cpu.features|VMX'
```
만약 출력 중에 (색상으로 강조된) `VMX`를 볼 수 있다면, VT-x 기능이 머신에서 활성화된 것이다.
{{% /tab %}}
{{% tab name="윈도우" %}}
윈도우 8 이후 버전에서 가상화 지원 여부를 확인하려면, 다음 명령어를 윈도우 터미널이나 명령 프롬프트에서 실행한다.
```
systeminfo
```
아래와 같은 내용을 볼 수 있다면, 윈도우에서 가상화를 지원한다.
```
Hyper-V Requirements: VM Monitor Mode Extensions: Yes
Virtualization Enabled In Firmware: Yes
Second Level Address Translation: Yes
Data Execution Prevention Available: Yes
```
다음의 출력을 확인할 수 있다면, 이미 하이퍼바이저가 설치되어 있는 것으로 다음 단계를 건너 뛸 수 있다.
```
Hyper-V Requirements: A hypervisor has been detected. Features required for Hyper-V will not be displayed.
```
{{% /tab %}}
{{< /tabs >}}
<!-- steps -->
## minikube 설치하기
{{< tabs name="tab_with_md" >}}
{{% tab name="리눅스" %}}
### kubectl 설치
kubectl이 설치되었는지 확인한다. kubectl은 [kubectl 설치하고 설정하기](/ko/docs/tasks/tools/install-kubectl/#리눅스에-kubectl-설치)의 요령을 따라서 설치할 수 있다.
## 하이퍼바이저(hypervisor) 설치
하이퍼바이저를 설치하지 않다면, 운영체제에 적합한 하이퍼바이저를 지금 설치한다.
• [KVM](https://www.linux-kvm.org/), 또한 QEMU를 사용한다
• [VirtualBox](https://www.virtualbox.org/wiki/Downloads)
Minikube는 쿠버네티스 컴포넌트를 VM이 아닌 호스트에서도 동작하도록 `--driver=none` 옵션도 지원한다.
이 드라이버를 사용하려면 [도커](https://www.docker.com/products/docker-desktop)와 리눅스 환경이 필요하지만, 하이퍼바이저는 필요하지 않다.
데비안(Debian) 또는 파생된 배포판에서 `none` 드라이버를 사용하는 경우,
Minikube에서는 동작하지 않는 스냅 패키지 대신 도커용 `.deb` 패키지를 사용한다.
[도커](https://www.docker.com/products/docker-desktop)에서 `.deb` 패키지를 다운로드 할 수 있다.
{{< caution >}}
`none` VM 드라이버는 보안과 데이터 손실 이슈를 일으킬 수 있다.
`--driver=none` 을 사용하기 전에 [이 문서](https://minikube.sigs.k8s.io/docs/reference/drivers/none/)를 참조해서 더 자세한 내용을 본다.
{{< /caution >}}
Minikube는 도커 드라이브와 비슷한 `vm-driver=podman` 도 지원한다. 슈퍼사용자 권한(root 사용자)으로 실행되는 Podman은 컨테이너가 시스템에서 사용 가능한 모든 기능에 완전히 접근할 수 있는 가장 좋은 방법이다.
{{< caution >}}
일반 사용자 계정은 컨테이너를 실행하는 데 필요한 모든 운영 체제 기능에 완전히 접근할 수 없기에 `podman` 드라이버는 컨테이너를 root로 실행해야 한다.
{{< /caution >}}
### 패키지를 이용하여 Minikube 설치
Minikube를 위한 *실험적인* 패키지가 있다.
리눅스 (AMD64) 패키지는 GitHub의 Minikube의 [릴리스](https://github.com/kubernetes/minikube/releases)에서 찾을 수 있다.
적절한 패키지를 설치하기 위해 리눅스 배포판의 패키지 도구를 사용한다.
### Minikube를 직접 다운로드하여 설치
패키지를 통해 설치하지 못하였다면,
바이너리 자체를 다운로드 받고 사용할 수 있다.
```shell
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
&& chmod +x minikube
```
Minikube 실행 파일을 사용자 실행 경로에 추가하는 가장 쉬운 방법은 다음과 같다.
```shell
sudo mkdir -p /usr/local/bin/
sudo install minikube /usr/local/bin/
```
### Homebrew를 이용해서 Minikube 설치하기
또 다른 대안으로 리눅스 [Homebrew](https://docs.brew.sh/Homebrew-on-Linux)를 이용해서 Minikube를 설치할 수 있다.
```shell
brew install minikube
```
{{% /tab %}}
{{% tab name="맥OS" %}}
### kubectl 설치
kubectl이 설치되었는지 확인한다. kubectl은 [kubectl 설치하고 설정하기](/ko/docs/tasks/tools/install-kubectl/#macos에-kubectl-설치)의 요령을 따라서 설치할 수 있다.
### 하이퍼바이저(hypervisor) 설치
하이퍼바이저를 설치하지 않았다면, 다음 중 하나를 지금 설치한다.
• [HyperKit](https://github.com/moby/hyperkit)
• [VirtualBox](https://www.virtualbox.org/wiki/Downloads)
• [VMware Fusion](https://www.vmware.com/products/fusion)
### Minikube 설치
가장 쉽게 맥OS에 Minikube를 설치하는 방법은 [Homebrew](https://brew.sh)를 이용하는 것이다.
```shell
brew install minikube
```
실행 바이너리를 다운로드 받아서 맥OS에 설치할 수도 있다.
```shell
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64 \
&& chmod +x minikube
```
Minikube 실행 파일을 사용자 실행 경로에 추가하는 가장 쉬운 방법은 다음과 같다.
```shell
sudo mv minikube /usr/local/bin
```
{{% /tab %}}
{{% tab name="윈도우" %}}
### kubectl 설치하기
kubectl이 설치되었는지 확인한다. kubectl은 [kubectl 설치하고 설정하기](/ko/docs/tasks/tools/install-kubectl/#windows에-kubectl-설치)의 요령을 따라서 설치할 수 있다.
### 하이퍼바이저(hypervisor) 설치하기
하이퍼바이저가 설치 안 되어 있다면 아래중 하나를 지금 설치한다.
• [Hyper-V](https://msdn.microsoft.com/en-us/virtualization/hyperv_on_windows/quick_start/walkthrough_install)
• [VirtualBox](https://www.virtualbox.org/wiki/Downloads)
{{< note >}}
Hyper-V는 다음 세 버전의 윈도우 10에서 실행할 수 있다. Windows 10 Enterprise, Windows 10 Professional, Windows 10 Education.
{{< /note >}}
### Chocolatey를 이용한 Minikube 설치
윈도우에서 Minikube를 설치하는 가장 쉬운 방법은 [Chocolatey](https://chocolatey.org/)를 사용하는 것이다(관리자 권한으로 실행).
```shell
choco install minikube
```
Minikube 설치를 마친 후, 현재 CLI 세션을 닫고 재시작한다. Minikube 실행 파일의 경로는 실행 경로(path)에 자동으로 추가된다.
### 인스톨러 실행파일을 통한 Minikube 설치
[윈도우 인스톨러](https://docs.microsoft.com/en-us/windows/desktop/msi/windows-installer-portal)를 사용하여 윈도우에 Minikube를 수동으로 설치하려면, [`minikube-installer.exe`](https://github.com/kubernetes/minikube/releases/latest/download/minikube-installer.exe)를 다운로드 받고, 이 인스톨러를 실행한다.
### 직접 다운로드하여 Minikube 설치
윈도우에서 Minikube를 수동으로 설치하려면, [`minikube-windows-amd64`](https://github.com/kubernetes/minikube/releases/latest)를 다운로드 받아서, 파일 이름을 `minikube.exe`로 변경하고, 실행 경로에 추가한다.
{{% /tab %}}
{{< /tabs >}}
## 설치 확인
하이퍼바이저와 Minikube의 성공적인 설치를 확인하려면, 다음 명령어를 실행해서 로컬 쿠버네티스 클러스터를 시작할 수 있다.
{{< note >}}
`minikube start``--driver` 를 설정하려면, 아래에 `<driver_name>` 로 소문자로 언급된 곳에 설치된 하이퍼바이저의 이름을 입력한다. `--driver` 값의 전체 목록은 [VM driver 지정하기 문서](/ko/docs/setup/learning-environment/minikube/#vm-드라이버-지정하기)에서 확인할 수 있다.
{{< /note >}}
{{< caution >}}
KVM을 사용할 때 Debian과 다른 시스템에서 libvirt의 기본 QEMU URI는 `qemu:///session`이고, Minikube의 기본 QEMU URI는 `qemu:///system`이다. 시스템이 이런 환경이라면, `--kvm-qemu-uri qemu:///session``minikube start`에 전달해야 한다.
{{< /caution >}}
```shell
minikube start --driver=<driver_name>
```
`minikube start` 가 완료되면, 아래 명령을 실행해서 클러스터의 상태를 확인한다.
```shell
minikube status
```
만약 클러스터가 실행 중이면, `minikube status` 의 출력은 다음과 유사해야 한다.
```
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
```
Minikube가 선택한 하이퍼바이저와 작동하는지 확인한 후에는, Minikube를 계속 사용하거나 클러스터를 중지할 수 있다. 클러스터를 중지하려면 다음을 실행한다.
```shell
minikube stop
```
## 새롭게 시작하기 위해 모두 정리하기 {#cleanup-local-state}
이전에 Minikube를 설치했었다면, 다음을 실행한다.
```shell
minikube start
```
그리고 `minikube start`는 에러를 보여준다.
```shell
machine does not exist
```
이제 구성 파일을 삭제해야 한다.
```shell
minikube delete
```
## {{% heading "whatsnext" %}}
* [Minikube로 로컬에서 쿠버네티스 실행하기](/ko/docs/setup/learning-environment/minikube/)