티스토리 뷰
반응형
1.Kubernetes 계층구조
클러스터(선박) > 네임스페이스(층) > Pods(작업) > 컨테이너들(도구) > 도커이미지(부품)
- 클러스터 (Cluster) → 선박
- Kubernetes 클러스터 전체를 하나의 선박으로 생각합니다.
- 이 선박에는 다양한 층(네임스페이스)이 존재하고, 각각 독립적으로 작업합니다.
- 네임스페이스 (Namespace) → 층
- 네임스페이스는 클러스터 내부의 리소스를 논리적으로 분리한 단위입니다.
- 한 층(네임스페이스)은 특정 역할이나 작업 그룹을 담당합니다.
- 예: argocd 층은 애플리케이션 배포 관리, kube-system 층은 클러스터 운영.
- Pod → 작업실
- Pod는 네임스페이스 안에 위치하며, 실제 작업을 수행하는 공간입니다.
- Pod는 하나 이상의 도구(컨테이너)를 포함하여 작업을 수행합니다.
- 컨테이너 → 도구
- Pod 내부의 도구로, 실제 애플리케이션이 실행되는 환경입니다.
- 각 컨테이너는 하나의 애플리케이션(예: Kafka, Nginx 등)을 실행합니다.
- 도커 이미지 (Docker Image) → 부품
- 컨테이너를 만들기 위한 설계도나 청사진입니다.
- Docker Image에서 컨테이너가 생성되며, 이를 통해 애플리케이션이 실행됩니다.
2.비유와 실제 예시
Kubernetes 개념선박 비유예시
클러스터 (Cluster) | 선박 전체 | 선박 "SS Kubernetes 호". |
네임스페이스 (Namespace) | 선박의 층 | argocd(화물 층), kserve(주방 층). |
Pod | 층 안의 작업실 | nginx-pod(웹 서버 작업실). |
컨테이너 (Container) | 작업실 안의 도구 | nginx-container(웹 서버 실행 도구). |
도커 이미지 (Image) | 도구의 부품 | nginx:v1.23 (Nginx 서버를 실행하는 설계도). |
3.주요명령어
#클러스터의 모든 네임스페이스를 보여줍니다.
kubectl get namespace
#Pod가 존재하는 네임스페이스만 표시합니다.
kubectl get pods --all-namespaces
#로컬내 클러스터리스트
kubectl config get-contexts
#활성화할 클러스터 명령
kubectl config use-context arn:aws:eks:ap-northeast-2:134452728077:cluster/test-kubenetes
kubectl config use-context docker-desktop
# yaml파일 적용
kubectl apply -f serving-crds.yaml
kubectl apply -f serving-core.yaml
kubectl apply -f net-istio.yaml
kubectl apply -f cert-manager.yaml
kubectl apply -f kserve.yaml
#클러스터 내의 네임스페이스 중 Knative 있는지
kubectl get ns | grep knative
#knative-serving내 pods 확인
kubectl get pods -n knative-serving
4.Test pod 생성예제
#경량이미지
kubectl run test-pod --image=python:3.10 --restart=Never -- sleep 3600
```
test-pod: Pod 이름.
--image=busybox: 경량화된 BusyBox 이미지를 사용.
--restart=Never: Pod 하나만 생성.
sleep 3600: 컨테이너가 3600초 동안 실행되도록 설정.
```
#기존 test-pod삭제
kubectl delete pod test-pod
5.생성확인
kubectl get pods
#NAME READY STATUS RESTARTS AGE
#test-pod 1/1 Running 0 24s
6.pod진입
kubectl exec -it pod/test-pod -- bin/bash
apt update && apt install -y vim
반응형
댓글
공지사항
반응형