이 시나리오에서는 Kubectl을 사용하여 yml 정의를 작성하지 않고 배포 및 복제 컨트롤러를 생성하고 서비스를 통해 이를 노출하는 방법을 배우게 됩니다. 따라서 클러스터에서 컨테이너를 빠르게 시작할 수 있습니다.
Step 1 - Launch Cluster
launch cluster는 아래 게시물에 자세히 써놨으니 패스
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
'개발' 카테고리의 다른 글
도메인 주도 설계 - 동작하는 도메인 모델 만들기 (0) | 2021.07.23 |
---|---|
쿠버네티스 뜨게 된 이유와 컴포넌트 정리 (0) | 2021.07.04 |
katacoda 따라 하기 - Launch Single Node Kubernetes Cluster (0) | 2021.07.02 |
개발자 신입으로 입사 했을때 팀장님에게 받았던 조언 (0) | 2021.06.30 |
Field Injection vs Constructor Injection With Java Spring's @Autowired (0) | 2021.06.29 |