위의 게시글을 보시면, 더 빠른 이해가 가능합니다.
👉 쿠버네티스란?
Docker 컨테이너를 관리, 확장 및 유지하는 프로그램
컨테이너란?
컨테이너는 앱을 감싸, 실행하는 좋은 방법이다.
컨테이너를 사용자에게 배포할때, 컨테이너를 관리하고 혹시 중지되지는 않았는지 확인해야 하는데,
쿠버네티스를 사용하면, 이를 자동화 할 수 있다.
( 분산 시스템을 탄력적으로 실행하기 위한 프레임 워크 제공 )
( 카나리아 배포 관리를 쉽게 할 수 있다. )
👉 쿠버네티스의 기능
서비스 디스커버리
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 : 클러스터에서 실행중인 여러 컨테이너들을 모은 것 )
반응형