본문 바로가기

프로젝트 & TIL/일별 공부 기록 (백엔드 스쿨)

70일차 - 쿠버네티스 Deployment, 클러스터 IP

Pod 삭제하기

  • kubectl get pods -o wide : 파드의 자세한 정보 조회
  • kubectl delete pod webserver(kubectl delete pod/webserver) : webserver 파드 삭제

Links

  • yum install links -y : links 설치
  • links https://google.com/ : links로 구글 사이트 조회(q : 나가기)
  • kubectl run webserver --image=nginx : nginx 최신 이미지로 webserver라는 이름의 파드 띄우기
  • kubectl get pods -o wide : 파드의 자세한 정보 조회
  • links http://파드IP:80 : links로 파드에서 서비스 중인 웹서버 조회
  • (한글은 많이 깨진다.)

links로 조회

  • kubectl exec webserver -- ls : webserver 파드 안에서 ls 명령어 실행
  • kubectl exec -it webserver -- bash : webserver 파드 안에서 bash 사용

Deployment

  • kubectl create deployment webserver --image=nginx --replicas=3 : 디플로이먼트로 webserver 파드 3개 띄우기
    • 디플로이먼트 1개 > 리플리카셋 1개 > 파드 3개가 생성된다.
  • kubectl get all : 전체 현황 조회
  • kubectl set image deployment webserver *=nginxhello : webserver의 모든 파드를 nginxhello 이미지로 업데이트
  • kubectl set image deployment webserver hello=nginxhello : webserver의 hello 파드를 nginxhello 이미지로 업데이트

클러스터 IP

- 쿠버네티스 클러스터 내에서 서비스(Service)에 할당되는 가상 IP 주소

- 클러스터 내의 서비스를 식별하기 위해 사용한다.

  • kubectl expose deployment.apps/webserver --type="ClusterIP" --port 8080 --target-port=80 : 8080 포트로 접근 가능한 클러스터 IP 유형의 서비스 생성
  • curl webserver:8080 => 이런 식으로 사용할 수 있음(로드밸런싱에 의해 랜덤한 파드에 접속)

세션 유지시키기

- 클라이언트의 세션을 유지시키기 위해 외부에 레디스 등을 붙일 수도 있지만, 아래의 방법도 가능하다.

- 클라이언트의 첫 번째 요청이 특정 파드로 라우팅되면, 해당 클라이언트 IP 주소를 사용한 다른 요청도 같은 파드로 라우팅

  • kubectl edit service webserver => webserver 서비스의 스펙을 수정할 수 있음
  • sessionAffinity 값을 None에서 ClientIP로 변경
  • kubectl get service webserver -o yaml : 값이 변경되었는지 yaml 형식으로 확인