쿠버네티스(k8s) 클러스터 pod 생성 테스트 (deployment와 run 비교)

2025. 3. 8. 12:28·Docker

웹 서비스용 pod 1개 생성 및 80 포트 외부 서비스 연동

 

1. web 서비스를 위한 pod 생성

  • nginx 이미지를 사용하여 web 이라는 pod 생성
$ kubectl get pod
No resources found in default namespace.

$ kubectl run web --image=nginx
pod/web created

$ kubectl get pod
NAME   READY   STATUS    RESTARTS   AGE
web    1/1     Running   0          5s

 

 

2. 80 서비스 생성 및 포트 외부 노출

  • 외부에서 80포트 접속을 할 수있도록 서비스 생성 (web-svc)
$ kubectl get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   9d

$ kubectl expose pod web --name=web-svc --type=NodePort --port=80 --target-port=80
service/web-svc exposed

$ kubectl get svc
NAME         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1     <none>        443/TCP        9d
web-svc      NodePort    10.110.7.63   <none>        80:30332/TCP   3s

 

 

3. 웹 페이지 접속

  • 외부에서 접속 시 k8s 클러스터  IP와 80포트에 연결 된 30332 포트를 통해 접속 (http://10.0.0.230:30332)

 

 

4. 서비스 삭제

  • 테스트에 사용한 pod와 svc 삭제
$ kubectl get svc
NAME         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1     <none>        443/TCP        9d
web-svc      NodePort    10.110.7.63   <none>        80:30332/TCP   11m

$ kubectl delete svc web-svc
service "web-svc" deleted

$ kubectl get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   9d

$ kubectl get pod
NAME   READY   STATUS    RESTARTS        AGE
web    1/1     Running   6 (3m47s ago)   12m

$ kubectl delete pod web
pod "web" deleted

$ kubectl get pod
No resources found in default namespace.

 

 


 

웹 서비스용 pod 다수 생성 및 80 포트 외부 서비스 연동

 

1. web 서비시용 pod 생성

  • Deployment 오브젝트를 사용하여 pod 생성 (pod의 복제본 생성이나 관리가 용이)
$ kubectl get pod
No resources found in default namespace.

$ kubectl create deployment deploy-web --image=nginx
deployment.apps/deploy-web created

$ kubectl get pod
NAME                          READY   STATUS    RESTARTS   AGE
deploy-web-749dd978cd-ldvdt   1/1     Running   0          18s

 

 

2. pod 개수 확장

  • 서비스용 pod 개수를 2개로 확장 (개수는원하는 만큼)
  • replicas=에 표기되는 숫자에 따라 pod 개수를 늘리거나 줄일 수 있음.
$ kubectl scale deployment deploy-web --replicas=2
deployment.apps/deploy-web scaled

$ kubectl get pod
NAME                          READY   STATUS    RESTARTS       AGE
deploy-web-749dd978cd-8d2d8   1/1     Running   0              102s
deploy-web-749dd978cd-ldvdt   1/1     Running   1 (2m2s ago)   2m20s

 

 

3. 80 서비스 생성 및 포트 외부 노출  

$ kubectl get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   9d

$ kubectl expose deployment deploy-web --type=NodePort --port=80
service/deploy-web exposed

$ kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
deploy-web   NodePort    10.109.58.192   <none>        80:30519/TCP   12s
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        9d

 

 

4. pod별 index 수정

  • 생성 한 pod 에 모두 접속이 되는지 확인을 위해 web 페이지 수정
$ kubectl exec -it deploy-web-749dd978cd-8d2d8 -- /bin/bash
root@deploy-web-749dd978cd-8d2d8:/# cat << EOF > /usr/share/nginx/html/index.html
> pod1
> EOF

root@deploy-web-749dd978cd-8d2d8:/# cat /usr/share/nginx/html/index.html
pod1


$ kubectl exec -it deploy-web-749dd978cd-ldvdt -- /bin/bash
root@deploy-web-749dd978cd-ldvdt:/# cat << EOF > /usr/share/nginx/html/index.html
> pod2
> EOF

root@deploy-web-749dd978cd-ldvdt:/# cat /usr/share/nginx/html/index.html
pod2

 

 

5. 웹 페이지 접속

  • http://10.0.0.230:30519 동일 포트로 접속하여 2개 pod 호출 확인

 

 


 

deployment와 run 비교

  • Deployment
    • Pod를 생성하고, 관리하는 리소스
    • Pod의 생명 주기를 관리하고, 애플리케이션의 상태를 원하는 형태로 유지하는 역할
    • 일반적으로 고가용성, 스케일링, 업그레이드 등을 고려한 배포를 할 때 사용
    • Pod가 실패 시 자동으로 재생
  • Run
    • Pod를 즉시 생성하는 데 사용되는 imperative(명령형) 방식의 명령어
    • 주로 일시적인 테스트, 단일 Pod 실행 등을 위한 용도로 사용
    • deployment와 달리 자동화된 관리 기능(스케일링, 롤백 등)이 제공되지 않으며, 주로 하나의 Pod만 생성

 

구분 Deployment Run
관리 단위 Pod 그룹(ReplicaSet 관리) 단일 Pod 
재생성 자동 수동
롤링 업데이트 지원 지원하지 않음
주요 용도 운영 환경, 관리 및 확장 테스트 및 간단한 작업

 

저작자표시 비영리 변경금지 (새창열림)
'Docker' 카테고리의 다른 글
  • zabbix 서버 docker-compose.yml 파일(기록용)
  • 쿠버네티스(k8s) 클러스터 만들기
  • Jenkins 설치 (도커 컨테이너)
  • NTP 서버 구성 (도커 컨테이너, Chrony)
기억보다는 기록을...
기억보다는 기록을...
내가 보려고 정리하는 글..
  • 기억보다는 기록을...
    메모장
    기억보다는 기록을...
    • 분류 전체보기
      • 클라우드(Azure, AWS, Alibaba)
      • 모니터링(Zabbix,Grafana)
      • 가상화(VMWare, Hyper-V)
      • Docker
      • Ansible
      • Linux
      • Windows
      • 이것저것
      • SQL
      • -------------------------
      • 재테크
  • 전체
    오늘
    어제
  • hELLO· Designed By정상우.v4.10.2
기억보다는 기록을...
쿠버네티스(k8s) 클러스터 pod 생성 테스트 (deployment와 run 비교)
상단으로

티스토리툴바