[Docker] 가상환경 발전 과정
1. 하나의 물리 서버 (하드웨어) > 여러 앱 실행 - 문제) 자원을 필요하지 않은 부분까지 과도하게 사용하는 경우 > 다른 앱 성능이 저하됨 - 해결) 여러개의 물리 서버에서, 앱을 각각 실행한다. 2.
defineall.tistory.com
위의 게시글을 보시면, 더 빠른 이해가 가능합니다.
👉 쿠버네티스란?
Docker 컨테이너를 관리, 확장 및 유지하는 프로그램
컨테이너란?
[docker] docker란? docker 명령어
docker란? 여러 운영체제(OS)의 개발환경을 언제 어디서든 동일하게 구축할 수 있게 해주는 가상환경 프로그램 # 개발환경을 image란 파일로 만들어, Docker Hub 홈페이지에 올려 사람들과 공유한다. doc
defineall.tistory.com
컨테이너는 앱을 감싸, 실행하는 좋은 방법이다.
컨테이너를 사용자에게 배포할때, 컨테이너를 관리하고 혹시 중지되지는 않았는지 확인해야 하는데,
쿠버네티스를 사용하면, 이를 자동화 할 수 있다.
( 분산 시스템을 탄력적으로 실행하기 위한 프레임 워크 제공 )
( 카나리아 배포 관리를 쉽게 할 수 있다. )
👉 쿠버네티스의 기능
서비스 디스커버리
DNS이름을 사용하거나 자체 IP주소를 사용해 컨테이너에 외부에서 접속할 수 있게 만든다.
로드 밸런싱
컨테이너의 트래픽을 감지해, 트래픽이 많으면 네트워크 트래픽을 로드 밸런싱하고 배포한다.
스토리지 오케스트레이션
로컬 저장소, 공용 클라우드와 같은 원하는 저장소를 자동으로 마운트할 수 있다.
( 마운트 : 저장소에 접근할 수 있도록, 디렉터리 구조에 참여시키는 것 )
롤아웃, 롤백 자동화
배포된 컨테이너를 사용자가 정한 절차에 따라 수정, 삭제, 추가 할 수 있다.
컨테이너 생성, 제거, 복사하는 작업들을 자동화 할 수 있다.
( 롤아웃 : 신제품 출시라는 뜻, 새로운 배포버전 컨테이너 만들기 )
( 롤백 : 데이터를 이전상태로 되돌리는 것, 컨테이너를 이전 버전으로 되돌리기 )
자동 빈 패킹
- 컨테이너화된 작업을 실행할때 사용하는 노드 클러스터를 제공한다
( 노트 클러스터가 각 컨테이너에 필요한 CPU, 메모리 양을 쿠버네티스에 알려준다. )
- 노드 클러스터가 알려준 기준에 따라, 컨테이너를 맞춰주어 컴퓨터 자원을 효율적으로 사용할 수 있다.
자동 복구
- 작동 실패한 컨테이너를 감지해, 자동으로 재시작하고, 컨테이너를 교체 할 수 있다.
- 사용자가 지정한 상태에 응답하지 않는 컨테이너를 종료하고, 서비스가 정상화 되면 클라이언트에게 알려준다.
6. 비밀, 구성 관리
- 비밀번호, OAuth 토큰, SSH키 같은 민감한 정보를 저장하고 관리할 수 있다.
- 컨테이너 이미지를 다시 빌드하지 않고, 스택 구성에 비밀을 노출하지 않고도
비밀과 앱을 배포하고 수정할 수 있다.
Pod에 컨테이너를 배치한다.
노드가 Pod을 실행한다 ( 워크로드 구동 )
👉 쿠버네티스 사용
실행
Docker Desktop -> Preferences -> Kubernetes -> Enable Kubernetes -> Apply & Restart
👉 쿠버네티스 오브젝트란?
개발자가 설정한대로, 컨테이너를 관리해주는 프로그램
오브젝트 설정하기
# pod.yaml
apiVersion: v1
# 오브젝트 종류 지정
kind: Pod
metadata:
name: demo # 팟 이름 지정
labels:
name: myapp
# 생성할 오브젝트 설정 추가
spec:
containers:
- name: testpod
# 컨테이너 이미지 선택
image: alpine:latest
# 8.8.8.8 ip에 ping 보내기
command: ['ping', '8.8.8.8']
resources:
limits:
memory: '128Mi'
cpu: '500m'
ports:
- containerPort: 3000
오브젝트 실행 ( api Server에 전달 )
kubectl apply -f pod.yaml
실행확인
kubectl get pods
실행 로그 확인
kubectl logs demo
종료
kubectl delete -f pod.yaml
👉 오브젝트 설정방법
df
쿠버네티스 구성요소
컨트롤 ( Control Plane )
- 클러스터에 대한 전역 결정 ( 스케줄링 )
- 클러스터 이벤트 감지 및 응답 ( 새로운 POD )
( POD : 클러스터에서 실행중인 여러 컨테이너들을 모은 것 )
반응형