데브코스

[17주차 - DAY1] 쿠버네티스 사용 방법 정리

미안하다 강림이 좀 늦었다 2024. 6. 17. 20:00

쿠버네티스

다수의 컨테이너들을 관리하면서 자동 배포, 배포된 컨테이너의 동작 보증, 부하에 따른 동적 확장 등의 기능을 담당하는 역할을 한다.

docker의 설정에서 쿠버네티스를 설정하면 된다.

 

pod

한 개 이상의 컨테이너로 단일 목적의 일을 하기 위해서 모인 단위이다.

독립적인 공간과 사용 가능한 IP를 가지고 있으며, 언제든지 죽을 수 있다.

다음과 같이 포드를 생성한다.

kubectl run 포드이름 --image=이미지이름

다음의 명령으로 포드를 확인할 수 있다.

kubectl get pods

포드 생성 예시

 

deployment

상태가 없는(stateless) 앱을 배포할 때 사용하는 가장 기본적인 컨트롤러이다.

deployment에 의해 배포된 포드의 컨테이너 실행에 문제가 생기면 k8s는 이 포드에서 실행하던 컨테이너를 삭제하고 다시 컨테이너를 생성해 응용을 지속 실행한다.

kubectl create deployment 이름 --image=이미지이름
kubectl get deployment

 

레플리카 수 설정

레플리카 수를 설정하면 그 개수만큼의 포드가 실행되고 있는 것을 확인할 수 있다.

kubectl scale deployment deployment이름 --replicas=숫자

 

pod expose

포드를 노출시켜주면 로컬호스트에서 접근할 수 있다.

kubectl expose pod 포드이름 --type=NodePort --name=pod-svc --port=포트번호

 

다음은 서비스를 확인하는 명령이다.

kubectl get services

 

해당 포트로 접속하면 정상 접속되는 것을 확인할 수 있다.

 

삭제

서비스 삭제

kubectl delete service 서비스이름

포드 삭제

kubectl delete pod 포드이름

deployment 삭제

kubectl delete deployment 디플로이먼트이름

 

manifest

yaml 파일에 정의한 내용으로 디플로이먼트와 포드를 생성할 수 있다.

kubectl apply -f yaml파일명

에러나서 제대로 확인해보지는 못했다

 

이미지 업데이트

kubectl set image deployment 디플로이먼트이름 이미지이름=이미지이름:1.17.0
kubectl set image deployment dpy-nginx nginx=nginx:1.17.0

 

배포 이력 기록

kubectl annotate deployment 디플로이먼트이름 kubernetes.io/change-cause="설명"
kubectl annotate deployment dpy-nginx kubernetes.io/change-cause="설명"

 

배포 이력 확인

kubectl rollout history deployment 디플로이먼트이름
kubectl rollout history deployment dpy-nginx

 

HPA(동적 수평 오토스케일링)

부하량에 따라 deployment 포드 수를 유동적으로 관리하는 k8s의 기능이다.

스케일링 기준이 되는 값과 최소/최대 포드의 수를 지정할 수 있다.

CPU 사용률 50%를 기준으로 동적 스케일링하며, 최소 1개, 최대 10개의 포드 운용하는 예시이다.

kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10