[ko] Update outdated files in dev-1.27-ko.1 (M222-M229)
parent
33403f784c
commit
3c022e2098
|
@ -15,14 +15,8 @@ card:
|
|||
|
||||
<!-- overview -->
|
||||
|
||||
이 튜토리얼에서는 Minikube와 Katacoda를 이용하여
|
||||
쿠버네티스에서 샘플 애플리케이션을 어떻게 실행하는지 살펴본다.
|
||||
Katacode는 무료로 브라우저에서 쿠버네티스 환경을 제공한다.
|
||||
|
||||
{{< note >}}
|
||||
로컬에서 Minikube를 설치했다면 이 튜토리얼도 따라 할 수 있다.
|
||||
설치 안내는 [minikube 시작](https://minikube.sigs.k8s.io/docs/start/)을 참고한다.
|
||||
{{< /note >}}
|
||||
이 튜토리얼에서는 Minikube를 이용하여 쿠버네티스에서 샘플 애플리케이션을 어떻게 실행하는지 살펴본다.
|
||||
이 튜토리얼은 NGINX를 사용하여 모든 요청에 응답하는 컨테이너 이미지를 제공한다.
|
||||
|
||||
## {{% heading "objectives" %}}
|
||||
|
||||
|
@ -33,31 +27,34 @@ Katacode는 무료로 브라우저에서 쿠버네티스 환경을 제공한다.
|
|||
## {{% heading "prerequisites" %}}
|
||||
|
||||
|
||||
이 튜토리얼은 NGINX를 사용해서 모든 요청에 응답하는 컨테이너 이미지를 제공한다.
|
||||
이 튜토리얼에서는 이미 `minikube`를 설치했다고 가정한다.
|
||||
설치 지침은 [minikube 시작](https://minikube.sigs.k8s.io/docs/start/)을 참고하자.
|
||||
|
||||
`kubectl`도 설치해야 한다.
|
||||
설치 지침은 [도구 설치](/ko/docs/tasks/tools/#kubectl)를 참고하자.
|
||||
|
||||
|
||||
<!-- lessoncontent -->
|
||||
|
||||
## minikube 클러스터 만들기
|
||||
|
||||
1. **Launch Terminal** 을 클릭
|
||||
```shell
|
||||
minikube start
|
||||
```
|
||||
|
||||
{{< kat-button >}}
|
||||
## 대시보드 열기
|
||||
|
||||
{{< note >}}
|
||||
minikube를 로컬에 설치했다면 `minikube start`를 실행한다. `minikube dashboard` 명령을 실행하기 전에, 새 터미널을 열고, 그 터미널에서 `minikube dashboard` 명령을 실행한 후, 원래의 터미널로 돌아온다.
|
||||
{{< /note >}}
|
||||
쿠버네티스 대시보드를 열어보자. 두 가지 다른 방법으로 할 수 있다.
|
||||
|
||||
2. 브라우저에서 쿠버네티스 대시보드를 열어보자.
|
||||
{{< tabs name="dashboard" >}}
|
||||
{{% tab name="브라우저 실행" %}}
|
||||
**새로운** 터미널을 열고, 다음을 실행한다.
|
||||
```shell
|
||||
# 새 터미널을 시작하고, 실행 상태로 둔다.
|
||||
minikube dashboard
|
||||
```
|
||||
|
||||
```shell
|
||||
minikube dashboard
|
||||
```
|
||||
|
||||
3. Katacoda 환경에서는: 터미널 패널의 상단에서 플러스를 클릭하고, 이어서 **Select port to view on Host 1** 을 클릭
|
||||
|
||||
4. Katacoda 환경에서는: 30000 을 입력하고 **Display Port** 를 클릭.
|
||||
이제, `minikube start`를 실행한 터미널로 다시 전환하자.
|
||||
|
||||
{{< note >}}
|
||||
`minikube dashboard` 명령을 내리면 대시보드 애드온과 프록시가 활성화되고 해당 프록시로 접속하는 기본 웹 브라우저 창이 열린다.
|
||||
|
@ -73,14 +70,23 @@ root 환경에서 명령어를 실행하고 있다면, [URL을 이용하여 대
|
|||
`dashboard` 명령을 다시 실행하여 대시보드에 접근하기 위한 다른 프록시를 생성할 수 있다.
|
||||
{{< /note >}}
|
||||
|
||||
## URL을 이용하여 대시보드 접속하기 {#open-dashboard-with-url}
|
||||
{{% /tab %}}
|
||||
{{% tab name="URL 복사 및 붙여넣기" %}}
|
||||
|
||||
자동으로 웹 브라우저가 열리는 것을 원치 않는다면, `--url` 플래그와 함께 다음과 같은 명령어를 실행하여 대시보드 접속 URL을 출력할 수 있다.
|
||||
Minikube가 웹 브라우저를 열지 않도록 하려면, 다음과 같이 대시보드에
|
||||
`--url` 플래그 명령을 실행하자. `minikube`는 원하는 브라우저에서 열 수 있는 URL을 출력한다.
|
||||
|
||||
**새로운** 터미널을 열고, 다음을 실행한다.
|
||||
```shell
|
||||
# 새 터미널을 시작하고, 실행 상태로 둔다.
|
||||
minikube dashboard --url
|
||||
```
|
||||
|
||||
이제, `minikube start`를 실행한 터미널로 다시 전환하자.
|
||||
|
||||
{{% /tab %}}
|
||||
{{< /tabs >}}
|
||||
|
||||
## 디플로이먼트 만들기
|
||||
|
||||
쿠버네티스 [*파드*](/ko/docs/concepts/workloads/pods/)는 관리와
|
||||
|
@ -91,9 +97,10 @@ minikube dashboard --url
|
|||
파드의 생성 및 스케일링을 관리하는 방법으로 디플로이먼트를 권장한다.
|
||||
|
||||
1. `kubectl create` 명령어를 실행하여 파드를 관리할 디플로이먼트를 만든다. 이
|
||||
파드는 제공된 Docker 이미지를 기반으로 한 컨테이너를 실행한다.
|
||||
파드는 제공된 Docker 이미지를 기반으로 한 컨테이너를 실행한다.
|
||||
|
||||
```shell
|
||||
# 웹 서버가 포함된 테스트 컨테이너 이미지 실행
|
||||
kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.39 -- /agnhost netexec --http-port=8080
|
||||
```
|
||||
|
||||
|
@ -155,7 +162,7 @@ minikube dashboard --url
|
|||
`--type=LoadBalancer`플래그는 클러스터 밖의 서비스로 노출하기
|
||||
원한다는 뜻이다.
|
||||
|
||||
`registry.k8s.io/echoserver` 이미지 내의 애플리케이션 코드는 TCP 포트 8080에서만 수신한다. `kubectl expose`를
|
||||
테스트 이미지 내의 애플리케이션 코드는 TCP 포트 8080에서만 수신한다. `kubectl expose`를
|
||||
사용하여 다른 포트를 노출한 경우, 클라이언트는 다른 포트에 연결할 수 없다.
|
||||
|
||||
2. 생성한 서비스 살펴보기
|
||||
|
@ -183,10 +190,6 @@ minikube dashboard --url
|
|||
minikube service hello-node
|
||||
```
|
||||
|
||||
4. Katacoda 환경에서만: 플러스를 클릭한 후에 **Select port to view on Host 1** 를 클릭.
|
||||
|
||||
5. Katacoda 환경에서만: 서비스 출력에서 `8080`의 반대편에 표시되는 5자리 포트 번호를 기록 한다. 이 포트 번호는 무작위로 생성되며, 사용자마다 다를 수 있다. 포트 번호 텍스트 상자에 포트 번호를 입력한 다음, 포트 표시를 클릭한다. 이전 예시를 사용해서 `30369` 를 입력한다.
|
||||
|
||||
이렇게 하면 당신의 앱을 서비스하는 브라우저 윈도우를 띄우고 애플리케이션의 응답을 볼 수 있다.
|
||||
|
||||
## 애드온 사용하기
|
||||
|
@ -233,7 +236,7 @@ minikube 툴은 활성화하거나 비활성화할 수 있고 로컬 쿠버네
|
|||
The 'metrics-server' addon is enabled
|
||||
```
|
||||
|
||||
3. 생성한 파드와 서비스를 확인한다.
|
||||
3. 해당 애드온을 설치하여 생성한 파드와 서비스를 확인한다.
|
||||
|
||||
```shell
|
||||
kubectl get pod,svc -n kube-system
|
||||
|
@ -283,9 +286,10 @@ kubectl delete service hello-node
|
|||
kubectl delete deployment hello-node
|
||||
```
|
||||
|
||||
필요하면 Minikube 가상 머신(VM)을 정지한다.
|
||||
Minikube 클러스터를 정지한다.
|
||||
|
||||
```shell
|
||||
# 선택사항
|
||||
minikube stop
|
||||
```
|
||||
|
||||
|
@ -295,7 +299,7 @@ minikube stop
|
|||
minikube delete
|
||||
```
|
||||
|
||||
|
||||
쿠버네티스에 대해 자세히 알아보기 위해 minikube를 다시 사용하려면, 삭제할 필요가 없다.
|
||||
|
||||
## {{% heading "whatsnext" %}}
|
||||
|
||||
|
|
|
@ -9,6 +9,8 @@ card:
|
|||
title: 쿠버네티스 기초 학습
|
||||
---
|
||||
|
||||
{{% katacoda-removal %}}
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="ko">
|
||||
|
|
|
@ -1,6 +1,11 @@
|
|||
---
|
||||
title: 대화형 튜토리얼 - 클러스터 생성하기
|
||||
weight: 20
|
||||
headless: true
|
||||
toc_hide: true
|
||||
_build:
|
||||
list: never
|
||||
publishResources: false
|
||||
---
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
@ -9,28 +14,21 @@ weight: 20
|
|||
|
||||
<body>
|
||||
|
||||
{{< katacoda-tutorial >}}
|
||||
<main class="content">
|
||||
|
||||
<div class="layout" id="top">
|
||||
|
||||
<main class="content katacoda-content">
|
||||
|
||||
<div class="katacoda">
|
||||
<div class="katacoda__alert">
|
||||
화면이 너무 좁아 터미널과 상호작용할 수 없습니다. 데스크톱/태블릿을 사용해주세요.
|
||||
</div>
|
||||
<div class="katacoda__box" id="inline-terminal-1" data-katacoda-id="kubernetes-bootcamp/1" data-katacoda-color="326de6" data-katacoda-secondary="273d6d" data-katacoda-hideintro="false" data-katacoda-prompt="Kubernetes Bootcamp Terminal" style="height: 600px;"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<a class="btn btn-lg btn-success" href="/ko/docs/tutorials/kubernetes-basics/" role="button">홈으로 이동<span class=""></span></a>
|
||||
<a class="btn btn-lg btn-success" href="/ko/docs/tutorials/kubernetes-basics/deploy-app/deploy-intro/" role="button">모듈 2로 진행하기 ><span class=""></span></a>
|
||||
</div>
|
||||
<div>
|
||||
<h2 class="katacoda-gone">
|
||||
컨텐츠를 사용할 수 없음
|
||||
</h2>
|
||||
<p>
|
||||
클러스터 생성을 위한 상호작용 튜토리얼을 사용할 수 없다.
|
||||
자세한 정보는,
|
||||
<a href="https://kubernetes.io/blog/2023/02/14/kubernetes-katacoda-tutorials-stop-from-2023-03-31/">
|
||||
종료 공지</a>를 참조하자.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
---
|
||||
title: Minikube를 사용해서 클러스터 생성하기
|
||||
weight: 10
|
||||
description: |-
|
||||
쿠버네티스 클러스터가 무엇인지 알아보기.
|
||||
Minikube가 무엇인지 알아보기.
|
||||
쿠버네티스 클러스터 시작하기.
|
||||
---
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
@ -20,7 +24,7 @@ weight: 10
|
|||
<ul>
|
||||
<li>쿠버네티스 클러스터가 무엇인지 배운다.</li>
|
||||
<li>Minikube가 무엇인지 배운다.</li>
|
||||
<li>온라인 터미널을 사용해서 쿠버네티스 클러스터를 시작한다.</li>
|
||||
<li>개인 컴퓨터를 사용해서 쿠버네티스 클러스터를 시작한다.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
@ -70,7 +74,7 @@ weight: 10
|
|||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<p><b>컨트롤 플레인은 클러스터 관리를 담당한다.</b> 컨트롤 플레인은 애플리케이션을 스케줄링하거나, 애플리케이션의 항상성을 유지하거나, 애플리케이션을 스케일링하고, 새로운 변경사항을 순서대로 반영(rolling out)하는 일과 같은 클러스터 내 모든 활동을 조율한다.</p>
|
||||
<p><b>노드는 쿠버네티스 클러스터 내 워커 머신으로 동작하는 VM 또는 물리적인 컴퓨터다.</b> 각 노드는 노드를 관리하고 쿠버네티스 컨트롤 플레인과 통신하는 Kubelet이라는 에이전트를 갖는다. 노드는 컨테이너 운영을 담당하는 containerd 또는 도커와 같은 툴도 갖는다. 운영 트래픽을 처리하는 쿠버네티스 클러스터는 최소 세 대의 노드를 가져야 하는데, 이는 한 노드가 다운되면 etcd 멤버와 컨트롤 플레인 인스턴스가 사라져 중복성(redundancy)을 잃기 때문이다. 컨트롤 플레인 노드를 추가하여 이러한 위험을 줄일 수 있다.</p>
|
||||
<p><b>노드는 쿠버네티스 클러스터 내 워커 머신으로 동작하는 VM 또는 물리적인 컴퓨터다.</b> 각 노드는 노드를 관리하고 쿠버네티스 컨트롤 플레인과 통신하는 Kubelet이라는 에이전트를 갖는다. 노드는 컨테이너 운영을 담당하는 containerd 또는 도커와 같은 툴도 갖는다. 운영 트래픽을 처리하는 쿠버네티스 클러스터는 최소 세 대의 노드를 가져야 하는데, 이는 한 노드가 다운되면 <a href="/ko/docs/concepts/overview/components/#etcd">etcd</a> 멤버와 컨트롤 플레인 인스턴스가 사라져 중복성(redundancy)을 잃기 때문이다. 컨트롤 플레인 노드를 추가하여 이러한 위험을 줄일 수 있다.</p>
|
||||
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
|
@ -84,18 +88,16 @@ weight: 10
|
|||
<div class="col-md-8">
|
||||
<p>애플리케이션을 쿠버네티스에 배포하기 위해서는, 컨트롤 플레인에 애플리케이션 컨테이너의 구동을 지시하면 된다. 그러면 컨트롤 플레인은 컨테이너를 클러스터의 어느 노드에 구동시킬지 스케줄한다. <b>노드는 컨트롤 플레인이 제공하는 <a href="/ko/docs/concepts/overview/kubernetes-api/">쿠버네티스 API</a>를 통해서 컨트롤 플레인과 통신한다.</b> 최종 사용자도 쿠버네티스 API를 사용해서 클러스터와 직접 상호작용(interact)할 수 있다.</p>
|
||||
|
||||
<p>쿠버네티스 클러스터는 물리 및 가상 머신 모두에 설치될 수 있다. 쿠버네티스 개발을 시작하려면 Minikube를 사용할 수 있다. Minikube는 가벼운 쿠버네티스 구현체이며, 로컬 머신에 VM을 만들고 하나의 노드로 구성된 간단한 클러스터를 생성한다. Minikube는 리눅스, 맥, 그리고 윈도우 시스템에서 구동이 가능하다. Minikube CLI는 클러스터에 대해 시작, 중지, 상태 조회 및 삭제 등의 기본적인 부트스트래핑(bootstrapping) 기능을 제공한다. 하지만, 본 튜토리얼에서는 Minikube가 미리 설치된 채로 제공되는 온라인 터미널을 사용할 것이다.</p>
|
||||
<p>쿠버네티스 클러스터는 물리 및 가상 머신 모두에 설치될 수 있다. 쿠버네티스 개발을 시작하려면 Minikube를 사용할 수 있다. Minikube는 가벼운 쿠버네티스 구현체이며, 로컬 머신에 VM을 만들고 하나의 노드로 구성된 간단한 클러스터를 생성한다. Minikube는 리눅스, 맥, 그리고 윈도우 시스템에서 구동이 가능하다. Minikube CLI는 클러스터에 대해 시작, 중지, 상태 조회 및 삭제 등의 기본적인 부트스트래핑(bootstrapping) 기능을 제공한다.</p>
|
||||
|
||||
<p>쿠버네티스가 무엇인지 자세히 알아봤으니, <a href="/ko/docs/tutorials/hello-minikube/">Hello Minikube</a>를
|
||||
개인 컴퓨터에서 방문해보자.</p>
|
||||
|
||||
<p>쿠버네티스가 무엇인지 알아봤으니, 이제 온라인 튜토리얼로 이동해서 우리의 첫 번째 클러스터를 시작해보자!</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<a class="btn btn-lg btn-success" href="/ko/docs/tutorials/kubernetes-basics/create-cluster/cluster-interactive/" role="button">대화형 튜토리얼 시작하기 <span class="btn__next">›</span></a>
|
||||
</div>
|
||||
<p>완료했으면, <a href="/ko/docs/tutorials/kubernetes-basics/deploy-app/deploy-intro/"><tt>kubectl</tt>을 사용하여 디플로이먼트(Deployment) 만들기</a>로 이동하자.</p>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
|
|
|
@ -1,6 +1,11 @@
|
|||
---
|
||||
title: 대화형 튜토리얼 - 앱 배포하기
|
||||
weight: 20
|
||||
headless: true
|
||||
toc_hide: true
|
||||
_build:
|
||||
list: never
|
||||
publishResources: false
|
||||
---
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
@ -9,41 +14,22 @@ weight: 20
|
|||
|
||||
<body>
|
||||
|
||||
{{< katacoda-tutorial >}}
|
||||
<main class="content">
|
||||
|
||||
<div class="layout" id="top">
|
||||
<div>
|
||||
<h2 class="katacoda-gone">
|
||||
컨텐츠를 사용할 수 없음
|
||||
</h2>
|
||||
<p>
|
||||
클러스터 생성을 위한 대화형 자습서를 사용할 수 없다.
|
||||
자세한 정보는,
|
||||
<a href="https://kubernetes.io/blog/2023/02/14/kubernetes-katacoda-tutorials-stop-from-2023-03-31/">
|
||||
종료 공지</a>를 참조하자.
|
||||
</p>
|
||||
|
||||
<main class="content katacoda-content">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<p>
|
||||
파드는 쿠버네티스 애플리케이션의 기본 실행 단위이다. 각 파드는 클러스터에서 실행중인 워크로드의 일부를 나타낸다. <a href="/ko/docs/concepts/workloads/pods/">파드에 대해 더 자세히 알아본다</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<div class="katacoda">
|
||||
<div class="katacoda__alert">
|
||||
터미널로 상호 작용하기 위해서, 데스크탑/태블릿 버전을 사용해주세요
|
||||
</div>
|
||||
|
||||
<div class="katacoda__box" id="inline-terminal-1" data-katacoda-id="kubernetes-bootcamp/7" data-katacoda-color="326de6" data-katacoda-secondary="273d6d" data-katacoda-hideintro="false" data-katacoda-prompt="Kubernetes Bootcamp Terminal" style="height: 600px;">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<a class="btn btn-lg btn-success" href="/ko/docs/tutorials/kubernetes-basics/create-cluster/cluster-intro/" role="button"> < 모듈 1로 돌아가기<span class=""></span></a>
|
||||
<a class="btn btn-lg btn-success" href="/ko/docs/tutorials/kubernetes-basics/" role="button">홈으로 이동<span class=""></span></a>
|
||||
<a class="btn btn-lg btn-success" href="/ko/docs/tutorials/kubernetes-basics/explore/explore-intro/" role="button">모듈 3으로 진행하기 ><span class=""></span></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
---
|
||||
title: kubectl을 사용해서 디플로이먼트 생성하기
|
||||
weight: 10
|
||||
description: |-
|
||||
애플리케이션 배포에 대해 알아보기.
|
||||
kubectl을 사용하여 쿠버네티스에 첫 번째 앱 배포.
|
||||
---
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
@ -14,7 +17,6 @@ weight: 10
|
|||
<main class="content">
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-8">
|
||||
<h3>목표</h3>
|
||||
<ul>
|
||||
|
@ -26,21 +28,16 @@ weight: 10
|
|||
<div class="col-md-8">
|
||||
<h3>쿠버네티스 디플로이먼트</h3>
|
||||
<p>
|
||||
일단 쿠버네티스 클러스터를 구동시키면, 그 위에 컨테이너화된 애플리케이션을 배포할 수 있다.
|
||||
일단 <a href="/ko/docs/tutorials/kubernetes-basics/create-cluster/cluster-intro/">쿠버네티스 클러스터를 구동시키면</a>, 그 위에 컨테이너화된 애플리케이션을 배포할 수 있다.
|
||||
그러기 위해서, 쿠버네티스 <b>디플로이먼트</b> 설정을 만들어야 한다. 디플로이먼트는 쿠버네티스가
|
||||
애플리케이션의 인스턴스를 어떻게 생성하고 업데이트해야 하는지를 지시한다. 디플로이먼트가 만들어지면,
|
||||
쿠버네티스 컨트롤 플레인이 해당 디플로이먼트에 포함된 애플리케이션 인스턴스가 클러스터의 개별 노드에서 실행되도록 스케줄한다.
|
||||
쿠버네티스 컨트롤 플레인이 해당 디플로이먼트에 포함된 애플리케이션 인스턴스가 클러스터의 개별 노드에서 실행되도록
|
||||
스케줄한다.
|
||||
</p>
|
||||
|
||||
<p>애플리케이션 인스턴스가 생성되면, 쿠버네티스 디플로이먼트 컨트롤러는 지속적으로 이들 인스턴스를
|
||||
모니터링한다. 인스턴스를 구동 중인 노드가 다운되거나 삭제되면, 디플로이먼트 컨트롤러가 인스턴스를
|
||||
클러스터 내부의 다른 노드의 인스턴스로 교체시켜준다.<b>이렇게 머신의 장애나 정비에 대응할 수 있는 자동 복구(self-healing) 메커니즘을
|
||||
제공한다.</b></p>
|
||||
<p>애플리케이션 인스턴스가 생성되면, 쿠버네티스 디플로이먼트 컨트롤러는 지속적으로 이들 인스턴스를 모니터링한다. 인스턴스를 구동 중인 노드가 다운되거나 삭제되면, 디플로이먼트 컨트롤러가 인스턴스를 클러스터 내부의 다른 노드의 인스턴스로 교체시켜준다.<b>이렇게 머신의 장애나 정비에 대응할 수 있는 자동 복구(self-healing) 메커니즘을 제공한다.</b></p>
|
||||
|
||||
<p>오케스트레이션 기능이 없던 환경에서는, 설치 스크립트가 애플리케이션을 시작하는데 종종 사용되곤
|
||||
했지만, 머신의 장애가 발생한 경우 복구를 해주지는 않았다. 쿠버네티스 디플로이먼트는 애플리케이션
|
||||
인스턴스를 생성해주고 여러 노드에 걸쳐서 지속적으로 인스턴스가 구동되도록 하는 두 가지를 모두
|
||||
하기 때문에 애플리케이션 관리를 위한 접근법에서 근본적인 차이를 가져다준다.</p>
|
||||
<p>오케스트레이션 기능이 없던 환경에서는, 설치 스크립트가 애플리케이션을 시작하는데 종종 사용되곤 했지만, 머신의 장애가 발생한 경우 복구를 해주지는 않았다. 쿠버네티스 디플로이먼트는 애플리케이션 인스턴스를 생성해주고 여러 노드에 걸쳐서 지속적으로 인스턴스가 구동되도록 하는 두 가지를 모두 하기 때문에 애플리케이션 관리를 위한 접근법에서 근본적인 차이를 가져다준다.</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
@ -77,23 +74,17 @@ weight: 10
|
|||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
|
||||
<p><b>Kubectl</b>이라는 쿠버네티스 CLI를 통해 디플로이먼트를 생성하고 관리할 수 있다.
|
||||
Kubectl은 클러스터와 상호 작용하기 위해 쿠버네티스 API를 사용한다. 이 모듈에서는, 쿠버네티스
|
||||
클러스터 상에 애플리케이션을 구동시키는 디플로이먼트를 생성하기 위해 필요한 가장 일반적인 Kubectl
|
||||
명령어를 배우게 된다.</p>
|
||||
<p><b>kubectl</b>이라는 쿠버네티스 CLI를 통해 디플로이먼트를 생성하고 관리할 수 있다. Kubectl은 클러스터와 상호 작용하기 위해 쿠버네티스 API를 사용한다. 이 모듈에서는, 쿠버네티스 클러스터 상에 애플리케이션을 구동시키는 디플로이먼트를 생성하기 위해 필요한 가장 일반적인 Kubectl 명령어를 배우게 된다.</p>
|
||||
|
||||
<p>디플로이먼트를 생성할 때, 애플리케이션에 대한 컨테이너 이미지와 구동시키고자 하는 복제 수를 지정해야 한다. 디플로이먼트를 업데이트해서 이런 정보를 나중에 변경할 수 있다. 모듈 <a href="/ko/docs/tutorials/kubernetes-basics/scale/scale-intro/">5</a>와 <a href="/ko/docs/tutorials/kubernetes-basics/update/update-intro/">6</a>의 부트캠프에서 어떻게 스케일하고 업데이트하는지에 대해 다룬다.</p>
|
||||
|
||||
<p>디플로이먼트를 생성할 때, 애플리케이션에 대한 컨테이너 이미지와 구동시키고자 하는 복제 수를 지정해야
|
||||
한다. 디플로이먼트를 업데이트해서 이런 정보를 나중에 변경할 수 있다. 모듈
|
||||
<a href="/ko/docs/tutorials/kubernetes-basics/scale/scale-intro/">5</a>와 <a href="/ko/docs/tutorials/kubernetes-basics/update/update-intro/">6</a>의 부트캠프에서 어떻게
|
||||
스케일하고 업데이트하는지에 대해 다룬다.</p>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="content__box content__box_fill">
|
||||
<p><i> 애플리케이션이 쿠버네티스 상에 배포되려면 지원되는 컨테이너 형식 중 하나로 패키지 되어야한다.
|
||||
</i></p>
|
||||
<p><i> 애플리케이션이 쿠버네티스 상에 배포되려면 지원되는 컨테이너 형식 중 하나로 패키지 되어야한다. </i></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -101,20 +92,70 @@ weight: 10
|
|||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<p>
|
||||
첫 번째 디플로이먼트로, NGINX를 사용해 모든 요청을 에코(echo)하는 도커 컨테이너로 패키지한 hello-node 애플리케이션을 사용해보자. (아직 hello-node 애플리케이션을 작성하고 컨테이너를 활용해서 배포해보지 않았다면, <a href="/ko/docs/tutorials/hello-minikube/">Hello Minikube 튜토리얼</a>의 지시를 따른다.)
|
||||
<p>
|
||||
|
||||
<p>이제 디플로이먼트를 이해했으니, 온라인 튜토리얼을 통해 우리의 첫 번째 애플리케이션을 배포해보자!</p>
|
||||
첫 번째 디플로이먼트로, NGINX를 사용해 모든 요청을 에코(echo)하는 도커 컨테이너로 패키지한 hello-node 애플리케이션을 사용해보자. (아직 hello-node 애플리케이션을 작성하고 컨테이너를 활용해서 배포해보지 않았다면, <a href="/ko/docs/tutorials/hello-minikube/">Hello Minikube 튜토리얼</a>의 지시를 따른다.)</p>
|
||||
<p>kubectl도 설치해야 한다. 설치해야 하는 경우, <a href="/ko/docs/tasks/tools/#kubectl">도구 설치</a>를 방문하자.</p>
|
||||
<p>이제 디플로이먼트를 이해했으니, 우리의 첫 번째 애플리케이션을 배포해보자!</p>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<a class="btn btn-lg btn-success" href="/ko/docs/tutorials/kubernetes-basics/deploy-app/deploy-interactive/"
|
||||
role="button">대화형 튜토리얼 시작하기 <span class="btn__next">›</span></a>
|
||||
<div class="col-md-8">
|
||||
<h3>kubectl 기본 사항</h3>
|
||||
<p>kubectl 명령의 일반적인 형식은 다음과 같다: <code>kubectl <i>action resource</i></code></p>
|
||||
<p>이것은 지정된 <em>리소스</em>(예: <tt>노드</tt> 또는 <tt>디플로이먼트(deployment)</tt>)에 지정된 <em>작업</em>(생성, 설명 또는 삭제)을 수행한다. 하위 명령 뒤에 <code>-<span />-help</code>를 사용하여 가능한 매개변수에 대한 추가 정보를 얻을 수 있다. (예: <code>kubectl get nodes --help</code>).</p>
|
||||
<p><b><code>kubectl version</code></b> 명령을 실행하여, kubectl이 클러스터와 통신하도록 구성되어 있는지 확인해보자.</p>
|
||||
<p>kubectl이 설치되어 있고 클라이언트 및 서버 버전을 모두 볼 수 있는지 확인해보자.</p>
|
||||
<p>클러스터의 노드를 보려면, <b><code>kubectl get nodes</code></b> 명령을 실행해보자.</p>
|
||||
<p>사용 가능한 노드가 표시된다. 나중에, 쿠버네티스는 사용 가능한 노드 리소스를 기반으로 애플리케이션을 배포할 위치를 선택한다.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h3>앱 배포</h3>
|
||||
<p><code>kubectl create deployment</code> 명령을 사용하여 쿠버네티스에 첫 번째 앱을 배포해 보자. 디플로이먼트(deployment) 이름과 앱 이미지 위치를(도커 허브 외부에서 호스팅되는 이미지의 전체 리포지터리 URL 포함) 제공해야 한다.</p>
|
||||
<p><b><code>kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1</code></b></p>
|
||||
<p>좋다! 디플로이먼트(deployment)를 생성하여 첫 번째 애플리케이션을 배포했다. 이것은 당신을 위해 몇 가지를 수행했다:</p>
|
||||
<ul>
|
||||
<li>애플리케이션의 인스턴스를 실행할 수 있는 적합한 노드를 검색(사용 가능한 노드는 1개뿐)했다.</li>
|
||||
<li>해당 노드에서 실행되도록 애플리케이션을 스케줄했다.</li>
|
||||
<li>필요할 때 새 노드에서 인스턴스를 다시 스케줄하도록 클러스터를 구성했다.</li>
|
||||
</ul>
|
||||
<p>디플로이먼트를 나열하려면 <code>kubectl get deployments</code> 명령을 사용하자:</p>
|
||||
<p><b><code>kubectl get deployments</code></b></p>
|
||||
<p>앱의 단일 인스턴스를 실행하는 디플로이먼트가 1개 있음을 확인할 수 있다. 인스턴스가 노드의 컨테이너 내에서 실행 중이다.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h3>앱 보기</h3>
|
||||
<p>쿠버네티스 내부에서 실행 중인 파드는 격리된, 프라이빗 네트워크에서 실행된다.
|
||||
기본적으로 동일한 쿠버네티스 클러스터 내의 다른 파드 및 서비스에서 볼 수 있지만 해당 네트워크 외부에서는 볼 수 없다.
|
||||
<code>kubectl</code>을 사용할 때, API 엔드포인트를 통해 상호 작용하여 애플리케이션과 통신한다.</p>
|
||||
<p>모듈 4에서 쿠버네티스 클러스터 외부에 애플리케이션을 노출하는 방법에 대한 다른 옵션을 다룰 것이다.</p>
|
||||
<p><code>kubectl</code> 명령은 클러스터-전체의 프라이빗 네트워크로 통신을 전달할 프록시를 생성할 수 있다. 프록시는 control-C를 눌러 종료할 수 있으며 실행 중에 출력을 표시하지 않는다. </p>
|
||||
<p><strong>프록시를 실행하려면 두 번째 터미널 창을 열어야 한다.</strong></p>
|
||||
<p><b><code>kubectl proxy</b></code>
|
||||
<p>이제 호스트(온라인 터미널)와 쿠버네티스 클러스터가 연결되었다. 프록시를 사용하면 터미널에서 API에 직접 접근할 수 있다.</p>
|
||||
<p>프록시 엔드포인트를 통해 호스팅되는 모든 API를 볼 수 있다. 예를 들어, <code>curl</code> 명령을 사용하여 API를 통해 직접 버전을 쿼리할 수 있다:</p>
|
||||
<p><b><code>curl http://localhost:8001/version</code></b></p>
|
||||
<div class="alert alert-info note callout" role="alert"><strong>노트:</strong> 포트 8001에 액세스할 수 없는 경우, <code>kubectl proxy</code>가 두 번째 터미널에서 실행 중인지 확인해보자.</div>
|
||||
<p>API 서버는 프록시를 통해서도 접근할 수 있는 각 파드의 이름 기반으로 생성된 파드의 엔드포인트를 자동 생성한다.</p>
|
||||
<p>먼저 파드 이름을 가져와야 하며, 환경 변수 <tt>POD_NAME</tt>에 저장한다:</p>
|
||||
<p><b><code>export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')</code></b><br />
|
||||
<b><code>파드 이름 확인: $POD_NAME</code></b></p>
|
||||
<p>다음을 실행하여 프록시 API를 통해 파드에 접근할 수 있다:</p>
|
||||
<p><b><code>curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME/</code></b></p>
|
||||
<p>프록시를 사용하지 않고 새 디플로이먼트에 접근하려면, 다음 모듈에서 설명할 서비스(Service)가 필요하다.</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="row">
|
||||
<p>
|
||||
준비가 됐다면, <a href="/ko/docs/tutorials/kubernetes-basics/explore/explore-intro/" title="Viewing Pods and Nodes">파드 및 노드 보기</a>로 이동하자.</p>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
</main>
|
||||
|
||||
|
|
|
@ -1,41 +1,34 @@
|
|||
---
|
||||
title: 대화형 튜토리얼 - 앱 조사하기
|
||||
weight: 20
|
||||
headless: true
|
||||
toc_hide: true
|
||||
_build:
|
||||
list: never
|
||||
publishResources: false
|
||||
---
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="ko">
|
||||
|
||||
<body>
|
||||
|
||||
{{< katacoda-tutorial >}}
|
||||
<main class="content">
|
||||
|
||||
<div class="layout" id="top">
|
||||
|
||||
<main class="content katacoda-content">
|
||||
|
||||
<br>
|
||||
<div class="katacoda">
|
||||
|
||||
<div class="katacoda__alert">
|
||||
터미널과 상호작용하기 위해, 데스크탑/태블릿 버전을 이용한다.
|
||||
</div>
|
||||
|
||||
<div class="katacoda__box" id="inline-terminal-1" data-katacoda-id="kubernetes-bootcamp/4" data-katacoda-color="326de6" data-katacoda-secondary="273d6d" data-katacoda-hideintro="false" data-katacoda-prompt="Kubernetes Bootcamp Terminal" style="height: 600px;">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<a class="btn btn-lg btn-success" href="/ko/docs/tutorials/kubernetes-basics/deploy-app/deploy-intro/" role="button">< 모듈 2로 돌아가기<span class="btn"></span></a>
|
||||
<a class="btn btn-lg btn-success" href="/ko/docs/tutorials/kubernetes-basics/" role="button">홈으로 이동<span class=""></span></a>
|
||||
<a class="btn btn-lg btn-success" href="/ko/docs/tutorials/kubernetes-basics/expose/expose-intro/" role="button">모듈 4로 진행하기 ><span class="btn"></span></a>
|
||||
</div>
|
||||
<div>
|
||||
<h2 class="katacoda-gone">
|
||||
컨텐츠를 사용할 수 없음
|
||||
</h2>
|
||||
<p>
|
||||
앱 탐색을 위한 대화형 자습서를 사용할 수 없다.
|
||||
자세한 정보는,
|
||||
<a href="https://kubernetes.io/blog/2023/02/14/kubernetes-katacoda-tutorials-stop-from-2023-03-31/">
|
||||
종료 공지</a>를 참조하자.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
---
|
||||
title: 파드와 노드 보기
|
||||
weight: 10
|
||||
description: |-
|
||||
쿠버네티스 애플리케이션 문제를 해결하는 방법 알아보기
|
||||
kubectl get, kubectl describe, kubectl logs 및
|
||||
kubectl exec.
|
||||
---
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
@ -105,12 +109,12 @@ weight: 10
|
|||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<h2>kubectl로 문제해결하기</h2>
|
||||
<p>모듈 <a href="/ko/docs/tutorials/kubernetes-basics/deploy-app/deploy-intro/">2</a>에서, Kubectl 커맨드-라인 인터페이스를 사용했다. 배포된 애플리케이션과 그 환경에 대한 정보를 얻기 위해 모듈3에서도 계속 그것을 사용할 것이다. 가장 보편적인 운용업무는 다음 kubectl 명령어를 이용하여 처리할 수 있다:</p>
|
||||
<p>모듈 <a href="/ko/docs/tutorials/kubernetes-basics/deploy-app/deploy-intro/">2</a>에서, Kubectl 커맨드-라인 인터페이스를 사용했다. 배포된 애플리케이션과 그 환경에 대한 정보를 얻기 위해 모듈3에서도 계속 그것을 사용할 것이다. 가장 보편적인 운용업무는 다음 kubectl 하위 명령어를 이용하여 처리할 수 있다:</p>
|
||||
<ul>
|
||||
<li><b>kubectl get</b> - 자원을 나열한다</li>
|
||||
<li><b>kubectl describe</b> - 자원에 대해 상세한 정보를 보여준다.</li>
|
||||
<li><b>kubectl logs</b> - 파드 내 컨테이너의 로그들을 출력한다</li>
|
||||
<li><b>kubectl exec</b> - 파드 내 컨테이너에 대한 명령을 실행한다.</li>
|
||||
<li><tt><b>kubectl get</b></tt> - 자원을 나열한다</li>
|
||||
<li><tt><b>kubectl describe</b></tt> - 자원에 대해 상세한 정보를 보여준다.</li>
|
||||
<li><tt><b>kubectl logs</b></tt> - 파드 내 컨테이너의 로그들을 출력한다.</li>
|
||||
<li><tt><b>kubectl exec</b></tt> - 파드 내 컨테이너에 대한 명령을 실행한다.</li>
|
||||
</ul>
|
||||
|
||||
<p>언제 애플리케이션이 배포되었으며, 현재 상태가 어떠한지, 그것의 구성은 어떠한지 등을 보기 위해 이러한 명령을 이용할 수 있다.</p>
|
||||
|
@ -124,14 +128,72 @@ weight: 10
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<a class="btn btn-lg btn-success" href="/ko/docs/tutorials/kubernetes-basics/explore/explore-interactive/" role="button">대화형 튜토리얼 시작하기 <span class="btn__next">›</span></a>
|
||||
<h3>애플리케이션 구성 확인</h3>
|
||||
<p>이전 시나리오에서 배포한 애플리케이션이 실행 중인지 확인해보자. <code>kubectl get</code> 명령을 사용하여 기존 파드를 찾아보자:</p>
|
||||
<p><b><code>kubectl get pods</code></b></p>
|
||||
<p>실행 중인 파드가 없으면, 몇 초간 기다린 후 파드를 다시 나열해보자. 하나의 파드가 실행 중이면 진행할 수 있다.</p>
|
||||
<p>다음으로, 해당 파드 내부에 어떤 컨테이너가 있고 해당 컨테이너를 빌드하는 데 사용되는 이미지를 보기 위해 <code>kubectl describe pods</code> 명령을 실행한다:</p>
|
||||
<p><b><code>kubectl describe pods</code></b></p>
|
||||
<p>파드의 컨테이너에 대한 세부 정보를 볼 수 있다: IP 주소, 사용된 포트 및 파드의 라이프사이클와 관련된 이벤트 목록</p>
|
||||
<p><tt>describe</tt> 하위 명령의 출력은 광범위하며 아직 설명하지 않은 일부 개념을 다루고 있지만, 걱정하지 말자, 이 부트캠프가 끝나면 익숙해질 것이다.</p>
|
||||
<p><em><strong>노트:</strong> <tt>describe</tt> 하위 명령을 사용하여 노드, 파드 및 디플로이먼트를 포함한 대부분의 쿠버네티스 프리미티브(primitives)에 대한 자세한 정보를 얻을 수 있다. describe 출력은 사람이 읽을 수 있도록 설계되었으며 스크립트로 작성할 수 없다.</em></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h3>터미널에 앱 표시</h3>
|
||||
<p>파드는 격리된, 프라이빗 네트워크에서 실행되므로 - 디버깅하고 상호 작용할 수 있도록
|
||||
파드에 대한 프록시 접근이 필요하다. 이를 위해, <code>kubectl proxy</code> 명령을 사용하여 <strong>두 번째 터미널</strong>에서 프록시를 실행한다. 새 터미널 창을 열고 새 터미널에서 다음을 실행하자:</p>
|
||||
<p><code><b>kubectl proxy</b></code></p>
|
||||
<p>이제 다시, 파드 이름을 가져오고 프록시를 통해 해당 파드를 직접 쿼리한다.
|
||||
파드 이름을 가져오고 <tt>POD_NAME</tt> 환경 변수에 저장하려면:</p>
|
||||
<p><code><b>export POD_NAME="$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')"</b></code><br />
|
||||
<code><b>echo Name of the Pod: $POD_NAME</b></code></p>
|
||||
<p>애플리케이션의 출력을 보려면, <code>curl</code> 요청을 실행하자:</p>
|
||||
<p><code><b>curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME/proxy/</b></code></p>
|
||||
<p>URL은 파드의 API에 대한 경로이다.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h3>컨테이너 로그 보기</h3>
|
||||
<p>일반적으로 애플리케이션이 표준 출력으로 보내는 모든 항목은 파드 내의 컨테이너에 대한 로그가 된다. <code>kubectl logs</code> 명령을 사용하여 이 로그를 검색할 수 있다:</p>
|
||||
<p><code><b>kubectl logs "$POD_NAME"</b></code></p>
|
||||
<p><em><strong>노트:</strong> 파드 내부에 하나의 컨테이너만 있기 때문에, 컨테이너 이름을 지정할 필요가 없다.</em></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h3>컨테이너에서 명령 실행</h3>
|
||||
<p>파드가 실행되면 컨테이너에서 직접 명령을 실행할 수 있다.
|
||||
이를 위해, <code>exec</code> 하위 명령을 사용하고 파드 이름을 매개변수로 사용한다. 환경 변수를 나열해보자:</p>
|
||||
<p><code><b>kubectl exec "$POD_NAME" -- env</b></code></p>
|
||||
<p>다시 말하지만, 파드에는 단일 컨테이너만 있으므로 컨테이너 자체의 이름을 생략할 수 있다.</p>
|
||||
<p>다음으로 파드의 컨테이너에서 bash 세션을 시작한다:</p>
|
||||
<p><code><b>kubectl exec -ti $POD_NAME -- bash</b></code></p>
|
||||
<p>이제 NodeJS 애플리케이션을 실행하는 컨테이너에 열린 콘솔이 있다. 앱의 소스 코드는 <tt>server.js</tt> 파일에 있다:</p>
|
||||
<p><code><b>cat server.js</b></code></p>
|
||||
<p><tt>curl</tt> 명령을 실행하여 애플리케이션이 실행 중인지 확인할 수 있다:</p>
|
||||
<p><code><b>curl http://localhost:8080</b></code></p>
|
||||
<p><em><strong>노트:</strong> 여기서는 NodeJS 파드 내부에서 명령을 실행했기 때문에 <tt>localhost</tt>를 사용했다. localhost:8080에 연결할 수 없는 경우, <code>kubectl exec</code> 명령을 실행했고 포드 내에서 명령을 실행하고 있는지 확인해보자.</em></p>
|
||||
<p>컨테이너 연결을 닫으려면, <code><b>exit</b></code>를 입력하자.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row">
|
||||
<p>
|
||||
준비가 됐다면, <a href="/ko/docs/tutorials/kubernetes-basics/expose/expose-intro/" title="Using A Service To Expose Your App">서비스를 사용하여 앱 노출</a>로 이동하자.</p>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
</main>
|
||||
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue