Search
🙉

k8s 간단 정리

Intro::

쿠버네티스 인 액션 책에서 minikube를 사용하는 예제 입니다.

2장

minikube start
Bash
복사
kubectl get pods kubectl get services kubectl get nodes kubectl get rc ...
Bash
복사

파드

파드는 하나 이상의 밀접하게 연관된 컨테이너의 그룹으로 같은 워커 노드에서 같은 리눅스 네임스페이스로 함께 실행된다.

서비스

파드는 일시적이기 때문에, 항상 변경되는 파드의 IP 주소 문제와 여러 개의 파드를 단일 IP와 포트의 쌍으로 노출시키는 문제를 해결해 줍니다. 서비스가 생성되면 정적 IP를 할당받고 서비스가 존속하는 동안 변경되지 않습니다.

레플리케이션컨트롤러

파드의 생명주기를 관리해주는 역할을 한다.
kubectl scale rc {pod} --replicas=3
Bash
복사

3장

YAML 매니페스트

# kubia-manual.yaml apiVersion: v1 kind: Pod metadata: name: kubia-manual spec: containers: - image: luksa/kubia name: kubia ports: - containerPort: 8080 protocol: TCP
YAML
복사
kubectl create -f kubia-manual.yaml kubectl get po kubia-manual -o yaml kubectl get po kubia-manual -o json
Bash
복사

파드 로그 확인

kubectl logs {pod} kubectl logs {pod} -c {container}
Bash
복사

서비스를 만들지 않고 포트포워딩

kubectl port-forward kubia-manual 8888:8080
Bash
복사

레이블

정의: 레이블은 쿠버네티스 리소스(Pod, Service, Deployment 등)에 붙이는 키-값 쌍입니다.
역할: 특정 리소스를 **태깅(Tagging)**하여 그룹화하거나 식별하는 데 사용됩니다.
적용 대상: 레이블은 리소스 간의 관계를 나타내거나, 작업을 필터링하거나, 서비스와 매칭하는 데 사용됩니다.
apiVersion: v1 kind: Pod metadata: name: kubia-manual-v2 labels: creation_method: manual env: prod spec: containers: - image: luksa/kubia name: kubia ports: - containerPort: 8080 protocol: TCP
YAML
복사
kubectl get po --show-labels kubectl get po -L creation_method,env kubectl label po kubia-manual creation_method=manual#기존 파드 레이블 추가 kubectl label po kubia-manual env=debug --overwrite
YAML
복사

레이블 셀렉터

kubectl get po -l creation_method=manual kubectl get po -l env kubectl get po -l '!env'
YAML
복사

특정 노드에 파드 스케줄링

kubectl label node {노드} gpu=true
YAML
복사
apiVersion: v1 kind: Pod metadata: name: kubia-gpu spec: nodeSelector: gpu: "true" containers: - image: luksa/kubia name: kubia
YAML
복사

네임스페이스

정의: 네임스페이스는 논리적인 격리 공간으로, 리소스를 분리하고 독립적으로 관리할 수 있게 합니다.
역할: 쿠버네티스 클러스터 내에서 리소스를 그룹화하고, 서로 격리된 환경을 제공합니다.
적용 대상: 네임스페이스는 프로젝트, 팀, 환경(개발, 테스트, 프로덕션 등)을 분리하는 데 사용됩니다.
kubectl get ns kubectl get po --n kube-system
YAML
복사

매니페스트로 네임스페이스 생성

apiVersion: v1 kind: Namespace metadata: name: custom-namespace
YAML
복사

kubectl create namespace 명령으로 네임스페이스 생성

kubectl create namespace custom-namespac
YAML
복사

파드 삭제

kubectl delete po {파드} kubectl delete po -l creation_method=manual kubectl delete ns custom-namepace kubectl delete po --all kubectl delete all --all
YAML
복사

4장

라이브니스 프로브

컨테이너 상태 확인: 애플리케이션이 응답하지 않거나 중단된 경우를 감지.
자동 복구: 비정상 상태인 컨테이너를 종료하고 새로 시작하여 복구.
무한 루프 감지: 애플리케이션이 멈추거나 무한 루프 상태에 빠졌을 때 문제를 해결.
라이브니스 프로브는 주로 아래 3가지 방식으로 컨테이너의 상태를 확인합니다:
HTTP GET 요청
TCP 소켓
컨테이너 내부 커맨드 실행

파드에 라이브니스 프로브 추가

apiVersion: v1 kind: Pod metadata: name: kubia-liveness spec: containers: - image: luksa/kubia-unhealthy name: kubia livenessProbe: httpGet: path: / port: 8080
YAML
복사

References::