Kubernetes 1.3 올라왔고 회사에서 파일럿 클러스터 구축 지시. 몇 주 써본 소감.
환경: 자체 서버 3노드 (kubeadm 아직 공식 아님 → 1.4 쯤 추가 예정이라는 얘기. 우리는 kube-up.sh 대신 수동 설치). ubuntu 14.04 위에 etcd, kube-apiserver 등 수동 배치. 설치가 정말 빡셈.
처음 부딪힌 개념들:
- Pod — 컨테이너의 단위라기보다 "같은 lifecycle을 공유하는 컨테이너 그룹"
- ReplicationController → 1.2부터 ReplicaSet + Deployment로 바뀜. 이제 Deployment 쓰면 됨
- Service — Pod의 IP가 바뀌어도 안정적 접근점 제공. ClusterIP / NodePort / LoadBalancer
- ConfigMap / Secret — 1.2부터 공식 stable. 환경변수/설정파일 주입
간단한 deploy + service yaml:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: web
spec:
replicas: 3
template:
metadata:
labels: { app: web }
spec:
containers:
- name: web
image: registry.internal/web:1.2.3
ports: [{ containerPort: 8080 }]
---
apiVersion: v1
kind: Service
metadata: { name: web }
spec:
selector: { app: web }
ports: [{ port: 80, targetPort: 8080 }]
type: ClusterIP
kubectl apply -f deploy.yaml 로 반영.
좋은 점: 롤링 업데이트가 진짜 쉬움. 이미지 태그만 바꿔 kubectl set image 하면 자동으로 순차 교체. health check 기반이라 새 pod 준비된 다음에 예전 pod 삭제.
빡센 점:
- 네트워킹. 오버레이 네트워크 필수 (우리는 flannel). CNI 세팅 안 맞으면 Pod끼리 통신 안 됨
- 영속 볼륨. PV/PVC 개념이 복잡. NFS로 대충 붙여놨는데 production은 더 고민해야 함
- Ingress는 1.3 기준 아직 베타. nginx ingress controller 따로 띄워서 검토중
- 모니터링/로그. 기본 툴 부족. Heapster + Grafana 세팅 권장
학습 곡선이 진짜 가파른데, 갖춰놓고 나면 배포는 너무 편함. 3개월쯤 운영해보고 본서비스 이관 여부 판단 예정. 지금은 Docker Compose + swarm 조합이랑 병행.
댓글 없음:
댓글 쓰기