간단하게 만들었던 웹을 도커 컨테이너에서 실행시키고있었는데 쿠버네티스를 조금 맛보기 하면서 갑자기 쿠버네티스로 해보고 싶다는 생각이 들어 시도해봤다. 뭐 이 블로그를 보고 따라하기 위해서 보는건 비추천한다. 정리도 못하고 확실하지 않으므로,,
우선 나는 전에 마스터 노드와 워커노드 환경을 우분투 22.04 두군데의 서버에 설치 하고 구축 해놨다.
그리고 미리 웹을 만들어놨다. 간략하게 설명하면 그냥 django,nginx,mysql을 사용해서 드롭박스와 같은 기능을 제공하는 간단한 웹이다. 이것을 원래는 도커 컴포즈로 실행시키고 있었고 쿠버네티스에 올리기위해 도커 허브에 이미지를 올려놨다.

쿠버네티스에 배포할라면 이미지가 필요해서 로컬에만 있으면 가져다 쓸수 없어서 이렇게 레지스트리? 에 올려놔야하는데 나는 도커허브를 선택해서 올려놨다.
다음으로는 deployment.yml 파일을 작성해주면 된다. 이파일이 있어야 배포된다
apiVersion: apps/v1
kind: Deployment
metadata:
name: cloudserver-web
spec:
replicas: 3 # 원하는 복제본 수
selector:
matchLabels:
app: cloudserver-web
template:
metadata:
labels:
app: cloudserver-web
spec:
containers:
- name: cloudserver-container
image: khm0930/cloud_storge_web:v1.0 # Docker Hub에 올린 이미지
ports:
- containerPort: 8000 # 웹 애플리케이션의 포트
정말 간단하게 그냥 배포만 될수 있도록 작성했다.
이제 이파일을 쿠버네티스에 배포,적용 시키기 위해 아래 명령어 입력하면 파드가 생성된다.
kubectl apply -f deployment.yaml
다음은 이 웹을 외부에서 접속할수 있도록 하려고 service.yml 파일을 작성해야한다.
apiVersion: v1
kind: Service
metadata:
name: cloudserver-service
spec:
selector:
app: cloudserver-web
ports:
- protocol: TCP
port: 80
targetPort: 8000 # 컨테이너 내부 포트
nodePort: 30088 # 원하는 포트 번호를 지정
type: NodePort # 외부에서 접근 가능하게 설정
이렇게 하면 외부에서 접속 가능해진다.
kubectl apply -f service.yaml
추가로 확인 명령어
kubectl config view # 컨텍스트와 클러스터 정보 확인
sudo systemctl status kubelet # 쿠버네티스 api 서버 확인
kubectl get pods # 배포된 파드확인
kubectl get svc -n kubernetes-dashboard # 대시보드 확인
kubectl get svc # 서비스 상태확인, 애플리케이션이 어떻게 노출 되어있는지
kubectl logs <pod-name> # 로그 확인
kubectl top pods #리소스 확인
쿠버네티스 대시보드 결과 화면이다. 파드 3개 실행되있고 Nginx 까지 실행되있는 모습을 볼수 있따.

이제 웹에 접속하게 되면 잘 접속 되는것을 확인 할수 있다.

다음에는 여러가지 기능 추가 해서 하나씩 더 올릴게요
무중단 배포, 자동스케일링, 모니터링,로그관리 시스템,cicd파이프라인 구축 해볼까합니다 . 아직 쿠버네티스 지식이 하나도없어서 오래걸릴거같아요~