
Kubernetes(쿠버네티스)는 컨테이너화된 애플리케이션의 배포, 확장, 관리를 자동화해주는 오픈소스 컨테이너 오케스트레이션 플랫폼입니다.
Google이 개발하고 CNCF(Cloud Native Computing Foundation)에 기부하여 현재는 다양한 클라우드 벤더에서 사용되고 있습니다.
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: nginx-container
image: nginx:latest
ports:
- containerPort: 80
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deploy
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: mycontainer
image: nginx:1.24
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: myapp
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 30007
apiVersion: v1
kind: Pod
metadata:
name: volume-pod
spec:
containers:
- name: app
image: busybox
volumeMounts:
- name: data
mountPath: /data
volumes:
- name: data
emptyDir: {}
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
APP_ENV: production
[ Master Node ]
├── API Server
├── Scheduler
└── Controller Manager
[ Worker Node ]
├── Kubelet
├── Kube Proxy
└── Container Runtime (Docker, containerd 등)
kubectl apply -f my-pod.yaml
kubectl get pods
kubectl describe pod my-pod
kubectl set image deployment/my-deploy mycontainer=nginx:1.25
kubectl rollout undo deployment/my-deploy
kubectl rollout status deployment/my-deploy
kubectl rollout undo deployment/my-deploy
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /mnt/data
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Mi
containerd가 더 많이 사용됨| 도구 | 설명 |
|---|---|
| Minikube | 로컬 쿠버네티스 클러스터 |
| kind | Docker 컨테이너 기반 클러스터 |
| k3s | 경량 쿠버네티스 배포 |
| GKE, EKS, AKS | 클라우드 기반 쿠버네티스 서비스 |
# 클러스터 상태 확인
kubectl cluster-info
# 포드 목록 조회
kubectl get pods
# 서비스 목록 확인
kubectl get svc
# 디플로이 롤아웃 상태
kubectl rollout status deployment/my-deploy
# 로그 확인
kubectl logs my-pod
# 포드 쉘 접속
kubectl exec -it my-pod -- /bin/bash