Fullstack-Study-241204-250625

커리큘럼(12-30/변경)

01. Java
02. git
03. Database 
04. Jsp [Server]

05. HTML,CSS 
07. JS
06. 미니프로젝트-2W

08. SpringFramework , SrpingBoot 
19. 중간프로젝트 (1M)
10. Linux 명령어
11. AWS
12. Docker
13. Kubernetes(v)
14. React JS [Front-end]
15. App - Android
16. 최종프로젝트 (1M)

쿠버네티스

  • 롤링 : 서비스를 중단하지 않고(무중단) 새 버전으로 교체하는 전략
  • 롤백 : 특정 버전으로 되돌리는 전략
  • 파드 IP가 변해도 서비스는 변하지 않는 고정된 IP와 DNS를 보장하여 안정적으로 접근 가능하게함
  • 트래픽(요청)을 여러 파드에 분산(로드밸런싱)시켜 안정적이게 함
  • 파드가 재시작되거나 컨테이너가 재생성되어도 데이터를 유지할 수 있음

파드(Pod)

파드

apiVersion: v1
kind: Pod
metadata:
  name: webapp # 프로젝트명칭 이름
  labels:
    app: webapp 
    release: "0" # 버전명 추가
spec:
  containers: 
  - name: webapp 
    image: coding404/k8s-coding404-webapp-react:v0

---
apiVersion: v1
kind: Pod
metadata:
  name: webapp-v-0-1 # 프로젝트명칭 변경
  labels:
    app: webapp 
    release: "0-1" # 버전명 추가
spec:
  containers: 
  - name: webapp 
    image: coding404/k8s-coding404-webapp-react:v0-1 # 버전변경
  • apiVersion : 이 리소스가 사용할 쿠버네티스 API 버전
  • kind : 생성할 리소스의 유형
  • metadata : 리소스의 식별자 정보를 정의하는 블록
  • name : 생성될 파드의 이름으로 클러스터 내에서 고유해야 함
  • labels : 서비스에서 매칭시 필요
  • app : 라벨의 이름을 정의하는 곳
  • release : 버전 관리용 태그로 같은 앱내에서 버전별 구분이 가능
  • spec : 파드의 구체적인 실행 사양을 정의하는 부분
  • containers : 이 파드 안에서 실행될 컨테이너 목록으로 최소 1개 이상 필요
  • - name : 이 컨테이너의 이름으로 pod내에서만 고유하면 됨

image : 이 컨테이너가 실행할 Docker 이미지

서비스(Service)

서비스

# first-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: coding404-webapp

spec:
  selector:
    app: webapp # 파드의 label을 가르킴
    release: "0"
  ports:
    - name: http # 이름
      port: 80 #서비스 자체의 포트번호
      targetPort: 80 # 뒤에 연결된 pod컨테이너의 포트번호 (만약 생략하면 port와 동일한 값을 가지게 됨)
      nodePort: 30080

  type: NodePort # 외부에서 접근이 가능 함 (ports 속성에 nodePort 번호를 작성)
  # type: ClusterIP # 외부에서 접근하지 못하게 함 (내부 서비스들끼리만 참조할 수 있음)
  • kind: Service : 이 리소스의 종류는 Service임
  • metadata : 리소스의 메타정보 정의
  • name : 이 리소스의 이름 정의
  • spec : Service의 구체적인 동작 방식을 정의
  • selector : 이 서비스가 트래픽을 전달한 파드들을 선택하는 기준
  • app : 트래픽을 전달한 파드의 라벨 이름을 지정하는 곳
  • release : 트래픽을 전달한 파드의 버전
  • ports : 외부와 파드 사이의 포트 연결관계 정의
  • - name : 포트의 이름
  • port : 클라이언트가 접근할 서비스의 포트
  • targetPort : 실제 파드 컨테이너에서 동작하는 포트
  • nodePort : 노드 외부에서 접근시 사용할 포트