Day 3 - Pod 생성 및 서비스 연결
Day 3 - Pod 생성 및 서비스 연결
목차
1. Pod 생성 및 서비스 노출

Pod 생성
kubectl run web-nginx-1 --image=nginx:1.29.3-alpine
Service 노출
kubectl expose pod web-nginx-1 --name=web-svc-1 --type=NodePort --port=8080 --target-port=80
| 옵션 | 값 | 설명 |
|---|---|---|
--type | NodePort | 외부 접속 허용 |
--port | 8080 | Service 포트 |
--target-port | 80 | Pod 컨테이너 포트 |
확인 및 테스트
kubectl get po,svc -o wide
curl http://<CLUSTER-IP>:8080
MySQL Pod
kubectl run mysql-pod --image=mysql:8.0 --env="MYSQL_ROOT_PASSWORD=<PASSWORD>"
kubectl expose pod mysql-pod --name=mysql-svc --type=NodePort --port=3306 --target-port=3306
# MySQL 접속
kubectl exec -it mysql-pod -- mysql -uroot -p
리소스 삭제
kubectl delete pod web-nginx-1 mysql-pod
kubectl delete svc web-svc-1 mysql-svc
2. YAML 파일로 Pod 생성

dry-run으로 YAML 생성
kubectl run pod-nginx --image=nginx:1.29.3-alpine --dry-run=client -o yaml > pod-nginx.yaml
kubectl apply -f pod-nginx.yaml
Service YAML 생성
kubectl expose pod pod-nginx --name=svc-nginx --type=NodePort --port=80 --target-port=80 --dry-run=client -o yaml > svc-nginx.yaml
kubectl apply -f svc-nginx.yaml
Pod Lifecycle
| 상태 | 설명 |
|---|---|
| Pending | Pod 생성 대기 중 |
| Running | 실행 중 |
| Succeeded | 정상 종료 |
| Failed | 비정상 종료 |
| Unknown | 통신 불가 |
3. Kubernetes Dashboard 설치

Helm 설치
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh && ./get_helm.sh
Dashboard 설치
helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard \
--create-namespace \
--namespace kubernetes-dashboard \
--set kong.admin.tls.enabled=false
NodePort 설정
kubectl -n kubernetes-dashboard edit svc kubernetes-dashboard-kong-proxy
spec:
type: NodePort
ports:
- nodePort: 31002 # 추가
관리자 계정 생성
# ServiceAccount
kubectl create serviceaccount admin-user -n kubernetes-dashboard
# ClusterRoleBinding
kubectl create clusterrolebinding admin-user --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:admin-user
# 토큰 생성
kubectl -n kubernetes-dashboard create token admin-user
접속
https://192.168.5.10:31002/

최종 결과
