본문 바로가기
도커&쿠버네티스

[katakoda] Deploy Containers Using Kubectl 컨테이너 배포하기

by bzerome240 2022. 3. 22.

이 시나리오에서는 Kubectl을 사용하여 배포, 복제 컨트롤러를 생성 및 시작하고 yaml 정의를 작성하지 않고 서비스를 통해 노출하는 방법을 배웁니다.

이를 통해 클러스터에서 컨테이너를 빠르게 시작할 수 있습니다.

 

 

1 클러스터 실행하기

 

클러스터 실행하기

minikube start --wait=false

 

노드가 준비됐는지 확인하기

kubectl get nodes

 

2 kubectl 실행하기

 

run 명령어는 이미지나 레플리카 기반의 디플로이먼트를 생성한다.

 

kubectl run <name of deployment> <properties>

 

Docker 이미지 katacoda/docker-http-server:latest로 컨테이너를 시작하는 http 디플로이먼트를 실행한다.

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

 

디플로이먼트의 상태 확인하기

kubectl get deployments

 

디플로이먼트 프로세스 설명을 확인할 수 있다.

- 사용가능한 레플리카 수, 레이블, 디플로이먼트 등

kubectl describe deployment http

 

 

3 kubectl 노출하기

 

디플로이먼트가 생성되면 특정 포트의 pod를 노출하는 서비스를 생성할 수 있다.

 

kubectl expose를 통해 http 디플로이먼트를 노출한다.

호스트 외부 IP에 바인딩된 호스트 8000의 컨테이너 포트 80을 노출한다

kubectl expose deployment http --external-ip="172.17.0.108" --port=8000 --target-port=80

 

ping을 하고, http 서비스 결과를 볼 수 있다.

curl http://172.17.0.108:8000

 

 

4 kubectl 실행 및 노출

 

kubectl run 으로 디플로이먼트를 실행하고 노출할 수 있다.

 

8001 포트에 노출된 두번째 http 서비스 만들기

kubectl run httpexposed --image=katacoda/docker-http-server:latest --replicas=1 --port=80 --hostport=8001

 

접근 가능하다

curl http://172.17.0.108:8001

 

kubectl get svc

 

세부사항 확인하기

docker ps | grep httpexposed

pause 컨테이너

pod에 포트가 노출된 것을 알 수 있다. pause 컨테이너는 pod의 네트워크를 정의하는 역할을 한다.

pod의 다른 컨테이너는 동일한 네트워크 네임스페이스를 공유한다.

-> 네트워크 성능이 향상되고 여러 컨테이너가 동일한 네트워크 인터페이스를 통해 통신할 수 있다.

 

 

5 컨테이너 확장

 

디플로이먼트 실행으로 레플리카 수를 확장할 수 있다.

디플로이먼트를 확장하면 쿠버네티스가 추가 포드를 시작하도록 요청한다.

그리고 이러한 pod는 노출된 서비스를 통해 자동으로 로드밸런스된다.

 

kubectl scale 명령어는 특정 디플로이먼트 또는 레플리케이션 컨트롤러에 대해 실행중인 pod 수를 조정할 수 있다.

kubectl scale --replicas=3 deployment http

 

http 디플로이먼트를 위해 실행중인 3개의 포드 확인하기

kubectl get pods

 

각각의 pod가 시작되면 로드밸런스 서비스에 추가된다.

describe service 하면 엔드포인트 및 연결된 pod를 확인 가능하다.  

kubectl describe svc http

 

서비스에 대한 요청은 다른 노드에서 요청한다.

curl http://172.17.0.108:8000

 

728x90
반응형

댓글