본문 바로가기

개발

katacoda 따라 하기 - Start containers using Kubectl

이 시나리오에서는 Kubectl을 사용하여 yml 정의를 작성하지 않고 배포 및 복제 컨트롤러를 생성하고 서비스를 통해 이를 노출하는 방법을 배우게 됩니다. 따라서 클러스터에서 컨테이너를 빠르게 시작할 수 있습니다.

Step 1 - Launch Cluster

launch cluster는 아래 게시물에 자세히 써놨으니 패스

 

katacoda 따라 하기 - Launch Single Node Kubernetes Cluster

kubernetes를 공부하려고 하는데 katacoda에 직접 쳐볼 수 있고 시나리오대로 잘 나와있어서 하나씩 해석 하고 적어가는 것이 제일 내 것으로 만들기 좋기에 정리해서 적는다. Minikube는 local에서 쉽게

mio-java.tistory.com

Step 2 - Kubectl Run

run command는 지정된 매개 변수(예: 이미지 또는 복제본)를 기반으로 deployment를 생성합니다. 이 deployment는 pod와 container를 시작하는 쿠버네츠 마스터에게 전달됩니다. Kubectl run은(는) 도커 실행과 유사하지만 클러스터 level입니다.

kubectl run의 포맷

  kubectl run <name of deployment> <properties>

Task

다음 명령은 도커 이미지를 기반으로 컨테이너를 시작하는 http라는 배포를 시작합니다.

kubectl run http --image=katacoda/docker-http-server:latest --replicas=1

그런 다음 kubectl을 사용하여 배포 상태를 볼 수 있습니다.

$ kubectl get deployments
NAME   READY   UP-TO-DATE   AVAILABLE   AGE
http   1/1     1            1           5m51s

Kubernetes가 무엇을 만들었는지 알아보려면 배포 프로세스에 대해 describe 하면 된다.

$ kubectl describe deployment http
Name:                   http
Namespace:              default
CreationTimestamp:      Fri, 02 Jul 2021 15:06:24 +0000
Labels:                 run=http
Annotations:            deployment.kubernetes.io/revision: 1
Selector:               run=http
Replicas:               1 desired | 1 updated | 1 total | 1 available | 0 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:  run=http
  Containers:
   http:
    Image:        katacoda/docker-http-server:latest
    Port:         <none>
    Host Port:    <none>
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Conditions:
  Type           Status  Reason
  ----           ------  ------
  Available      True    MinimumReplicasAvailable
  Progressing    True    NewReplicaSetAvailable
OldReplicaSets:  <none>
NewReplicaSet:   http-774bb756bb (1/1 replicas created)
Events:
  Type    Reason             Age    From                   Message
  ----    ------             ----   ----                   -------
  Normal  ScalingReplicaSet  6m21s  deployment-controller  Scaled up replica set http-774bb756bb to 1

description 에는 사용 가능한 replicas, 지정된 label 및 배포와 관련된 이벤트가 포함됩니다. 이러한 이벤트는 발생할 수 있는 모든 문제와 오류를 강조 표시합니다.

다음 단계에서는 실행 중인 서비스를 공개합니다.

Step 3 - Kubectl Expose

배포가 생성되면 kubectl을 사용하여 특정 포트에 포드를 노출하는 서비스를 만들 수 있습니다.

kubectl 노출을 통해 새로 배포된 http deployment를 표시합니다. 명령을 사용하면 서비스의 다양한 매개 변수와 배포 표시 방법을 정의할 수 있습니다.

Task

다음 명령을 사용하여 호스트의 external-ip에 바인딩된 호스트 8000의 컨테이너 포트 80을 표시할 수 있습니다.

$ kubectl expose deployment http --external-ip="172.17.0.21" --port=8000 --target-port=80
service/http exposed

그러면 호스트에 ping을 하고 HTTP 서비스의 결과를 볼 수 있습니다.

$ curl http://172.17.0.21:8000
<h1>This request was processed by host: http-774bb756bb-ccb7l</h1>

Step 4 - Kubectl Run and Expose

kubectl 실행을 사용하면 배포를 생성하고 단일 명령으로 노출할 수 있습니다.

Task

command를 사용하여 포트 8001에 표시되는 두 번째 http 서비스를 생성할 수 있습니다.

$ kubectl run httpexposed --image=katacoda/docker-http-server:latest --replicas=1 --port=80 --hostport=8001
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/httpexposed created