POD
왜 필요한지?
Kubernetes에서 POD는 가장 기본적인 배포 단위입니다. 컨테이너들의 묶음으로,
하나의 POD 안에 여러 개의 컨테이너가 함께 실행됩니다.
POD의 주요 목적은 서로 연관된 컨테이너들을 함께 배치하여
서비스 간의 통신과 데이터 공유를 간편하게 만들기 위함입니다.
또한 POD는 독립적인 네트워크 IP를 가지고 있기 때문에 개별적인 주소를 통해 접근 가능합니다.
특징
- 여러 개의 컨테이너를 하나의 논리적 단위로 묶어서 실행합니다.
- 공유하는 네트워크 네임스페이스와 볼륨을 사용하여 서로 통신하고 데이터를 공유할 수 있습니다.
- 하나의 노드에서 여러 개의 POD를 실행하며, 여러 노드에 분산 배포할 수 있습니다.
템플릿 예제
yamlCopy code
apiVersion: v1
kind: Pod
metadata:
name: my-pod
labels:
app: my-app
spec:
containers:
- name: container1
image: nginx:latest
ports:
- containerPort: 80
- name: container2
image: redis:latest
ports:
- containerPort: 6379
명령 실행 예제
perlCopy code
kubectl create -f pod-definition.yaml # POD 생성
kubectl get pods # POD 목록 확인
kubectl describe pod my-pod # POD 상세 정보 확인
kubectl delete pod my-pod # POD 삭제
Kubernetes 서비스(Services)
왜 필요한지?
Kubernetes의 서비스는 POD들의 집합에 대해 단일 진입점을 제공하며,
POD의 IP가 동적으로 변하더라도 서비스 IP는 변하지 않습니다.
이를 통해 클라이언트가 동적으로 생성되거나 삭제되는 POD에 영향을 받지 않고,
서비스를 안정적으로 사용할 수 있습니다.
특징
- POD 집합에 대해 동일한 서비스 IP를 제공하여 외부와의 통신을 관리합니다.
- 서비스 유형에 따라 클러스터 내부 또는 외부로 접근할 수 있는 방법을 제공합니다.
- Selector를 사용하여 연관된 POD들을 서비스에 연결합니다.
템플릿 예제
yamlCopy code
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- name: http
port: 80
targetPort: 80
명령 실행 예제
perlCopy code
kubectl create -f service-definition.yaml # 서비스 생성
kubectl get services # 서비스 목록 확인
kubectl describe service my-service # 서비스 상세 정보 확인
kubectl delete service my-service # 서비스 삭제
kubelet
왜 필요한지?
kubelet은 각 노드에서 동작하는 Kubernetes 에이전트로,
마스터 서버의 지시에 따라 노드에서 POD를 생성하고 관리합니다.
노드 자원의 모니터링과 POD의 상태를 주기적으로 체크하여 필요한 조치를 취하므로,
클러스터의 안정성과 가용성을 보장하는 데 중요한 역할을 합니다.
특징
- 노드의 자원(CPU, 메모리 등)을 모니터링하고, POD들이 자원을 적절하게 사용하도록 관리합니다.
- kubelet은 POD 스펙을 받아 노드 상에서 컨테이너를 생성하고 시작합니다.
- POD의 상태를 주기적으로 확인하여 문제가 발생하면 재시작 또는 대응 조치를 취합니다.
공식문서 참조: Kubernetes 공식문서 - POD
공식문서 참조: Kubernetes 공식문서 - 서비스
공식문서 참조: Kubernetes 공식문서 - kubelet
'DevOps > k8s' 카테고리의 다른 글
[K8s] JSONPATH 활용하여 원하는 데이터 확인하기 (0) | 2023.11.16 |
---|---|
[CKA] Namespace 내에 Service Account 생성 → Role 생성→ RoleBinding (0) | 2023.11.16 |
[CKA] ETCD 백업 및 복구 테스트 (0) | 2023.11.08 |
[K8s]LivenessProbe 실습할 때 생길 수 있는 트러블 슈팅 (0) | 2023.07.27 |
[K8s] Kubernetes LivenessProbe와 ReadinessProbe와 어플리케이션 안정성 강화하기 (0) | 2023.07.27 |