쟝이의 세상
Kubernetes(POD, Deployment, ReplicaSet, Service 생성) 본문
📌 도커 이미지 생성
✔️ 실습 파일 다운로드 및 압축 해제
$ wget http://jadecross.iptime.org:7778/k8s/lab/lab_k8s_2024.tar.gz
$ tar xfz lab_k8s_2024.tar.gz
✔️ 실습 파일 index.html 수정
$ cd ~/workspace/guestbook/src/main/resources/templates/
$ sed -i 's/방명록 v1/방명록 v1(이지향)/g' index.html
✔️ Maven 프로젝트 빌드 및 패키징
$ cd ~/workspace/guestbook
$ mvn clean package
$ docker build -t zyange/k8s_guestbook:1.0 .
✔️ 도커 로그인 후 이미지 push
$ docker login
$ docker push zyange/k8s_guestbook:1.0
👇🏻이미지 push 확인 화면
✔️ 도커 컨테이너 생성하고 실행 (docker run)
$ docker run --rm -p 8080:8080 zyange/k8s_guestbook:1.0
$ docker run -d -p 8080:8080 zyange/k8s_guestbook:1.0
"두 명령어의 차이"
--rm : 컨테이너가 종료되면 자동으로 삭제
-d : 컨테이너를 백그라운드에서 실행
👇🏻 사이트 접속
📌 POD, ReplicaSet, Service, Deployment 생성
1) pods 확인
$ kubectl get pods
2) services 확인
$ kubectl get services
3) replicasets 확인
$ kubectl get replicasets
✔️ deployment 생성
$ kubectl create deployment guestbook --image=zyange/k8s_guestbook:1.0 --port=8080
$ kubectl get all -o wide
"설명"
deployment 생성하면 replicaset, pod가 모두 생성되는 것을 확인할 수 있음
✔️ service 생성 및 확인
$ kubectl expose deployment guestbook --type=LoadBalancer --name guestbook-http
$ kubectl get services
✔️ 유지 pod 수 지정(replicaset)
$ kubectl scale deployment guestbook --replicas=3
✔️ 서비스 및 pod의 ip번호 확인
$ kubectl get services
$ kubectl get pods -o wide
✔️ 포트포워딩 된 ip로 접속시도
👇🏻 사이트 접속
✔️ Metrics Server 설치 (yaml파일 이용)
$ kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
✔️ 리소스 사용량 확인
$ kubectl top nodes
👇🏻 사이트 접속
📌 POD, ReplicaSet, Service, Deployment 삭제
✔️ pod 삭제 시도
$ kubectl delete pods guestbook-79dbc8b87c-bctps
$ kubectl delete pods guestbook-79dbc8b87c-lm7jq
"설명"
pod를 삭제해도 replicaset이 설정되어 있으므로 계속 3개가 유지된다.(pod가 새로 생겨남)
✔️ replicaset 삭제 시도
$ kubectl delete rs guestbook-79dbc8b87c
"설명"
deployment로 생성된 replicaset은 delete 해도 지워지지 않음을 확인할 수 있다.
✔️ deployment 삭제 시도
$ kubectl delete deployment guestbook
"설명"
deployment를 삭제함으로써 replicaset과 pod가 모두 삭제된 것을 확인할 수 있다.
동시에 수동으로 만든 guestbook-manual 파드는 replicaset이 없음을 알 수 있다. (파드 자체를 수동으로 생성했기 때문)
✔️ 포트포워딩
$ kubectl port-forward guestbook-manual 8888:8080
"설명"
같은 세션을 하나 더 열어서 "watch -n 1 kubectl get pods" 명령어로 확인해보면
👇🏻실행화면
8888포트로 실행했을 때에 8080포트로 포트포워딩 되어 해당 pod가 열리는 것을 확인할 수 있다.
'수업내용' 카테고리의 다른 글
Kubernetes 실습 (0) | 2024.09.27 |
---|---|
Kubernetes(label, namespace) (0) | 2024.09.27 |
쿠버네티스 개념 정리 (1) | 2024.09.25 |
OWASP ZAP (2) | 2024.09.11 |
php <form태그와 변수값 전달> (6) | 2024.09.03 |