ABTCEFG♪ 안녕하세요, 여러분!
BTC_김쿼카입니다.
쿠버네티스 명령어를 잘 사용하기 위해서라면 기본 개념을 알아두는 것이 좋겠죠? 쿠버네티스의 가장 기본이 되는 Pod에 대해서 간단하게 알아볼게요!
1. Pod
- kubernetes의 최소 실행 단위
- 스토리지 및 네트워킹 리소스를 공유하는 단일 컨테이너 또는 관련 컨테이너 그룹 (상황에 따라 2개)
- Pod 내에 실행되는 컨테이너는 동일한 노드에 할당되며 동일한 생명 주기를 가짐
- 고유의 IP를 할당받고 Pod 안의 컨테이너들은 서로 IP를 공유함
쿠버네티스의 모든 리소스는 YAML 형태의 선언형 명령 정의서로 표현될 수 있는데 이때 아래의 명령어 사용 시 Pod를 실제로 생성하지 않고도 템플릿 파일을 생성할 수 있다는 점 참고해주세요
kubectl run nginx –image nginx –dry-run=client -o yaml > nginx.yaml
kubectl apply -f nginx.yaml
* Pod 생성 과정
1. 사용자가 kubectl 명령을 통해 Pod 정의를 쿠버네티스 마스터에 전달함
2. 쿠버네티스 마스터는 YAML 정의의 유효성 체크 후 특정 노드에 사용자의 요청에 따라 컨테이너를 실행하도록 명령을 내림
3. 명령을 전달받은 노드는 요청 사항에 맞게 실제 컨테이너를 노드에 실행함
2. Deployment
- Stateless 앱을 배포할 때 사용되는 가장 기본이 되는 컨트롤러
- Pod에 대한 기준 스펙을 정의한 Object이자, 성능을 관리하고 Pod의 원하는 동작이나 특성을 지정하는 도구
- replicaset을 관리하며 배포를 위한 기능 제공
- 롤링업데이트, 배포 중단, 롤백이 가능함
→ 지속적으로 배포된 인스턴스들을 모니터링하기 때문에 노드가 다운되거나 삭제되면 deployment 컨트롤러가 인스턴스를 클러스터 내부의 다른 노드 인스턴스로 교체해줍니다.
*Templates
ReplicaSet과 Pod를 담을 수 있는 구조로 되어있음
apiVersion: apps/v1beta1
kind: Deployment
metadata:
# Deployment 객체의 Unique한 명칭
name: deployment-example
spec:
# Deployment label selector for pod
selector:
matchLabels:
app: nginx
# 3 Pods should exist at all times.
replicas: 3
template:
metadata:
labels:
# Pod의 라벨
app: nginx
spec:
containers:
- name: nginx
# Run this image
image: nginx:1.10
- apiVersion apps/v1 → 쿠버네티스의 apps/v1 API를 사용 합니다.
- kind: Deployment → Deployment의 작업으로 명시 합니다.
- spec.selector → 어떤 레이블의 파드를 선택하여 관리할지에 대한 설정 입니다. 앱 컨테이너의 test-deployment 레이블을 식별하여 해당되는 파드들을 관리하며, 이 필드가 없을 경우 spec.template.metadata.labels에 설정된 내용들을 기본값으로 사용 합니다.
- spec.replicas → 파드의 개수를 몇개 유지할 것 인지 설정 합니다. 기본값은 1 입니다.
- spec.template.metadata.labels.app:nginx → 식별하는 레이블이 앱 컨테이너이며 nginx 로 식별 합니다.
'INFRA > Operation' 카테고리의 다른 글
Terraform & Ansible 연동 효과 (0) | 2022.07.26 |
---|---|
앤서블 아키텍처 구성 및 프로세스 (0) | 2022.07.21 |
테라폼 아키텍쳐 구성 및 워크플로우 (0) | 2022.07.11 |
IaC 도구 성장 가능성 및 전망 (0) | 2022.07.06 |
What is HashiCorp? (0) | 2022.06.28 |
댓글