-
Notifications
You must be signed in to change notification settings - Fork 14.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'issue-11748-architecture-nodes' of https://github.com/z…
…er0big/website into issue-11748-architecture-nodes # Conflicts: # content/ko/docs/concepts/architecture/nodes.md
Showing
17 changed files
with
856 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
title: "설정" | ||
weight: 30 | ||
--- | ||
|
105 changes: 105 additions & 0 deletions
105
content/ko/docs/tutorials/configuration/configure-redis-using-configmap.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,105 @@ | ||
--- | ||
title: 컨피그 맵을 사용해서 Redis 설정하기 | ||
content_template: templates/tutorial | ||
--- | ||
|
||
{{% capture overview %}} | ||
|
||
이 페이지에서는 컨피그 맵을 사용해서 Redis를 설정하는 방법에 대한 실세계 예제를 제공하고, [컨피그 맵을 사용해서 컨테이너 설정하기](/docs/tasks/configure-pod-container/configure-pod-configmap/) 태스크로 빌드를 한다. | ||
|
||
{{% /capture %}} | ||
|
||
{{% capture objectives %}} | ||
|
||
* 컨피그 맵을 생성한다. | ||
* 컨피그 맵을 사용해서 파드 명세를 생성한다. | ||
* 파드를 생성한다. | ||
* 설정이 올바르게 적용되었는지 검증한다. | ||
|
||
{{% /capture %}} | ||
|
||
{{% capture prerequisites %}} | ||
|
||
* {{< include "task-tutorial-prereqs.md" >}} {{< version-check >}} | ||
* [컨피그 맵을 사용해서 컨테이너 설정하기](/docs/tasks/configure-pod-container/configure-pod-configmap/)를 이해한다. | ||
|
||
{{% /capture %}} | ||
|
||
{{% capture lessoncontent %}} | ||
|
||
|
||
## 실세상 예제: 컨피그 맵을 사용해서 Redis 설정하기 | ||
|
||
아래의 단계를 통해서 컨피그 맵에 저장된 데이터를 사용해서 Redis 캐시를 설정할 수 있다. | ||
|
||
첫째, `redis-config` 파일에서 컨피그 맵을 생성한다. | ||
|
||
{{< codenew file="pods/config/redis-config" >}} | ||
|
||
```shell | ||
curl -OL https://k8s.io/examples/pods/config/redis-config | ||
kubectl create configmap example-redis-config --from-file=redis-config | ||
``` | ||
|
||
```shell | ||
configmap/example-redis-config created | ||
``` | ||
|
||
생성된 컨피그 맵을 점검한다. | ||
|
||
```shell | ||
kubectl get configmap example-redis-config -o yaml | ||
``` | ||
|
||
```yaml | ||
apiVersion: v1 | ||
data: | ||
redis-config: | | ||
maxmemory 2mb | ||
maxmemory-policy allkeys-lru | ||
kind: ConfigMap | ||
metadata: | ||
creationTimestamp: 2016-03-30T18:14:41Z | ||
name: example-redis-config | ||
namespace: default | ||
resourceVersion: "24686" | ||
selfLink: /api/v1/namespaces/default/configmaps/example-redis-config | ||
uid: 460a2b6e-f6a3-11e5-8ae5-42010af00002 | ||
``` | ||
이제, 컨피그 맵에 저장된 설정 데이터를 사용하는 파드 명세를 생성한다. | ||
{{< codenew file="pods/config/redis-pod.yaml" >}} | ||
파드를 생성한다. | ||
```shell | ||
kubectl create -f https://k8s.io/examples/pods/config/redis-pod.yaml | ||
``` | ||
|
||
이 예제에서는 설정 볼륨이 `/redis-master`에 마운트되어 있다. | ||
`redis-config` 키를 `redis.conf`라는 이름의 파일에 추가하기 위해 `path`를 사용한다. | ||
따라서, Redis 설정을 위한 파일 경로는 `/redis-master/redis.conf`이다. | ||
이곳이 이미지가 Redis 마스터를 위한 설정 파일을 찾는 곳이다. | ||
|
||
설정이 올바르게 적용되었는지 확인하기 위해서, `kubectl exec`를 사용해 파드 속에서 `redis-cli` 툴을 실행해 본다. | ||
|
||
```shell | ||
kubectl exec -it redis redis-cli | ||
127.0.0.1:6379> CONFIG GET maxmemory | ||
1) "maxmemory" | ||
2) "2097152" | ||
127.0.0.1:6379> CONFIG GET maxmemory-policy | ||
1) "maxmemory-policy" | ||
2) "allkeys-lru" | ||
``` | ||
|
||
{{% /capture %}} | ||
|
||
{{% capture whatsnext %}} | ||
|
||
* [컨피그 맵](/docs/tasks/configure-pod-container/configure-pod-configmap/) 배우기. | ||
|
||
{{% /capture %}} | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
title: "온라인 트레이닝 코스" | ||
weight: 20 | ||
--- | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
--- | ||
title: 쿠버네티스 온라인 트레이닝 개요 | ||
content_template: templates/concept | ||
--- | ||
|
||
{{% capture overview %}} | ||
|
||
이 페이지에서는 쿠버네티스 온라인 트레이닝을 제공하는 사이트를 소개한다: | ||
|
||
{{% /capture %}} | ||
|
||
{{% capture body %}} | ||
|
||
* [Scalable Microservices with Kubernetes (Udacity)](https://www.udacity.com/course/scalable-microservices-with-kubernetes--ud615) | ||
|
||
* [Introduction to Kubernetes (edX)](https://www.edx.org/course/introduction-kubernetes-linuxfoundationx-lfs158x) | ||
|
||
* [Getting Started with Kubernetes (Pluralsight)](https://www.pluralsight.com/courses/getting-started-kubernetes) | ||
|
||
* [Hands-on Introduction to Kubernetes (Instruqt)](https://play.instruqt.com/public/topics/getting-started-with-kubernetes) | ||
|
||
* [Learn Kubernetes using Interactive Hands-on Scenarios (Katacoda)](https://www.katacoda.com/courses/kubernetes/) | ||
|
||
* [Certified Kubernetes Administrator Preparation Course (LinuxAcademy.com)](https://linuxacademy.com/linux/training/course/name/certified-kubernetes-administrator-preparation-course) | ||
|
||
* [Kubernetes the Hard Way (LinuxAcademy.com)](https://linuxacademy.com/linux/training/course/name/kubernetes-the-hard-way) | ||
|
||
* [Certified Kubernetes Application Developer Preparation Course (KodeKloud.com)](https://kodekloud.com/p/kubernetes-certification-course) | ||
|
||
{{% /capture %}} | ||
|
||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
title: "상태 유지를 하지 않는 애플리케이션" | ||
weight: 40 | ||
--- | ||
|
143 changes: 143 additions & 0 deletions
143
content/ko/docs/tutorials/stateless-application/expose-external-ip-address.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,143 @@ | ||
--- | ||
title: 외부 IP 주소를 노출하여 클러스터의 애플리케이션에 접속하기 | ||
content_template: templates/tutorial | ||
weight: 10 | ||
--- | ||
|
||
{{% capture overview %}} | ||
|
||
이 페이지에서는 외부 IP 주소를 노출하는 쿠버네티스 서비스 오브젝트를 생성하는 방법에 대해 설명한다. | ||
|
||
{{% /capture %}} | ||
|
||
|
||
{{% capture prerequisites %}} | ||
|
||
* [kubectl](/docs/tasks/tools/install-kubectl/)을 설치한다. | ||
|
||
* Google Kubernetes Engine 또는 Amazon Web Services와 같은 클라우드 공급자를 사용하여 쿠버네티스 클러스터를 생성한다. 이 튜토리얼은 [외부 로드 밸런서](/docs/tasks/access-application-cluster/create-external-load-balancer/)를 생성하는데, 클라우드 공급자가 필요하다. | ||
|
||
* `kubectl`이 쿠버네티스 API 서버와 통신하도록 설정한다. 자세한 내용은 클라우드 공급자의 설명을 참고한다. | ||
|
||
{{% /capture %}} | ||
|
||
|
||
{{% capture objectives %}} | ||
|
||
* Hello World 애플리케이션을 다섯 개의 인스턴스로 실행한다. | ||
* 외부 IP 주소를 노출하는 서비스를 생성한다. | ||
* 실행 중인 애플리케이션에 접근하기 위해 서비스 오브젝트를 사용한다. | ||
|
||
{{% /capture %}} | ||
|
||
|
||
{{% capture lessoncontent %}} | ||
|
||
## 다섯 개의 파드에서 실행되는 애플리케이션에 대한 서비스 만들기 | ||
|
||
1. 클러스터에서 Hello World 애플리케이션을 실행한다. | ||
|
||
kubectl run hello-world --replicas=5 --labels="run=load-balancer-example" --image=gcr.io/google-samples/node-hello:1.0 --port=8080 | ||
|
||
위의 명령어는 [디플로이먼트](/docs/concepts/workloads/controllers/deployment/) | ||
오브젝트와 관련된 | ||
[레플리카 셋](/docs/concepts/workloads/controllers/replicaset/) | ||
오브젝트를 생성한다. 레플리카 셋은 다섯 개의 | ||
[파드](/docs/concepts/workloads/pods/pod/)가 있으며, | ||
각 파드는 Hello World 애플리케이션을 실행한다. | ||
|
||
1. 디플로이먼트에 대한 정보를 확인한다. | ||
|
||
kubectl get deployments hello-world | ||
kubectl describe deployments hello-world | ||
|
||
1. 레플리카 셋 오브젝트에 대한 정보를 확인한다. | ||
|
||
kubectl get replicasets | ||
kubectl describe replicasets | ||
|
||
1. 디플로이먼트를 외부로 노출시키는 서비스 오브젝트를 생성한다. | ||
|
||
kubectl expose deployment hello-world --type=LoadBalancer --name=my-service | ||
|
||
1. 서비스에 대한 정보를 확인한다. | ||
|
||
kubectl get services my-service | ||
|
||
결과는 아래와 같은 형태로 나타난다. | ||
|
||
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE | ||
my-service ClusterIP 10.3.245.137 104.198.205.71 8080/TCP 54s | ||
|
||
참고: 만약 외부 IP 주소가 \<pending\>으로 표시되면 잠시 기다린 다음, 동일한 명령어를 다시 입력한다. | ||
|
||
1. 서비스에 대한 자세한 정보를 확인한다. | ||
|
||
kubectl describe services my-service | ||
|
||
결과는 아래와 같은 형태로 나타난다. | ||
|
||
Name: my-service | ||
Namespace: default | ||
Labels: run=load-balancer-example | ||
Annotations: <none> | ||
Selector: run=load-balancer-example | ||
Type: LoadBalancer | ||
IP: 10.3.245.137 | ||
LoadBalancer Ingress: 104.198.205.71 | ||
Port: <unset> 8080/TCP | ||
NodePort: <unset> 32377/TCP | ||
Endpoints: 10.0.0.6:8080,10.0.1.6:8080,10.0.1.7:8080 + 2 more... | ||
Session Affinity: None | ||
Events: <none> | ||
|
||
서비스에 의해 노출된 외부 IP 주소 (`LoadBalancer Ingress`)를 기억해두자. | ||
예시에서 외부 IP 주소는 104.198.205.71이다. | ||
그리고 `Port`와`NodePort`의 값을 기억해두자. 예시에서 `Port`는 8080이고 `NodePort`는 32377이다. | ||
|
||
1. 위의 출력 결과를 통해, 서비스에 여러 엔드포인트가 있음을 알 수 있다. | ||
10.0.0.6:8080,10.0.1.6:8080,10.0.1.7:8080 + 2. 이 주소는 Hello World 애플리케이션을 실행 중인 파드의 내부 주소다. 해당 주소가 파드 주소인지 확인하려면, 아래 명령어를 입력하면 된다. | ||
|
||
kubectl get pods --output=wide | ||
|
||
결과는 아래와 같은 형태로 나타난다. | ||
|
||
NAME ... IP NODE | ||
hello-world-2895499144-1jaz9 ... 10.0.1.6 gke-cluster-1-default-pool-e0b8d269-1afc | ||
hello-world-2895499144-2e5uh ... 10.0.1.8 gke-cluster-1-default-pool-e0b8d269-1afc | ||
hello-world-2895499144-9m4h1 ... 10.0.0.6 gke-cluster-1-default-pool-e0b8d269-5v7a | ||
hello-world-2895499144-o4z13 ... 10.0.1.7 gke-cluster-1-default-pool-e0b8d269-1afc | ||
hello-world-2895499144-segjf ... 10.0.2.5 gke-cluster-1-default-pool-e0b8d269-cpuc | ||
|
||
1. Hello World 애플리케이션에 접근하기 위해 외부 IP 주소 (`LoadBalancer Ingress`)를 사용한다. | ||
|
||
curl http://<external-ip>:<port> | ||
|
||
`<external-ip>`는 서비스의 외부 IP 주소 (`LoadBalancer Ingress`)를 의미하며, | ||
`<port>`는 서비스 정보에서 `Port` 값을 의미한다. | ||
만약 minikube를 사용하고 있다면, `minikube service my-service` 명령어를 통해 자동으로 브라우저 내에서 Hello World 애플리케이션에 접근할 수 있다. | ||
|
||
성공적인 요청에 대한 응답으로 hello 메세지가 나타난다. | ||
|
||
Hello Kubernetes! | ||
|
||
{{% /capture %}} | ||
|
||
|
||
{{% capture cleanup %}} | ||
|
||
서비스를 삭제하려면, 아래의 명령어를 입력한다. | ||
|
||
kubectl delete services my-service | ||
|
||
Hello World 애플리케이션을 실행 중인 디플로이먼트, 레플리카 셋, 파드를 삭제하려면, 아래의 명령어를 입력한다. | ||
|
||
kubectl delete deployment hello-world | ||
|
||
{{% /capture %}} | ||
|
||
|
||
{{% capture whatsnext %}} | ||
|
||
[애플리케이션과 서비스 연결하기](/docs/concepts/services-networking/connect-applications-service/)에 대해 더 배워 본다. | ||
{{% /capture %}} |
Oops, something went wrong.