728x90
반응형

Kubernetes(쿠버네티스)

  • 구글이 컨테이너 운영을 위해 출시한 오픈소스 라이브러리
  • 컨테이너 오케스트레이션 플랫폼 여러 IT 자동화 태스크 또는 프로세스를 조정하여 실행하는 것
    • 다수의 Docker 컨테이너 관리, 자동으로 배포 및 스케일링, 장애 복구 기능 제공
  • 여러 대의 서버(노드)에서 컨테이너 → 클러스터로 묶어 애플리케이션 분산, 필요할 때마다 리소스 할당 → 자동으로 확장 or 축소

⇒ Docker: 컨테이너 하나하나 관리/ Kubernetes: 그 컨테이너들 효율적으로 배치하고 관리


순서

  1. 코드 푸시 → CI/CD 파이프라인 트리거(Github Actions)
  2. Docker 이미지 빌드 → 이미지 레지스트리에 업로드(Docekr Hub, ECR 등)
  3. Kubernetes 클러스터에 배포(kubectl, Helm 등)
  4. 모니터링 및 자동 관리(Prometheus, Granfana 등)

단점

  • 복잡한 초기 설정
    • 컨테이너화: Dockerfile 작성, 의존성 관리, 컨테이너 네트워크 설정 등
    • Kubernetes 설정: yml 파일 작성, 클러스터 네트워크 설정, 서비스 디스커버리 등
  • 도구와 관리 복잡성
    • 모니터링 및 로깅: ELK 스택, Prometheus, Granfana
  • 디버깅 어려움
  • 보안 문제
    • 호스트 OS의 커널 공유
    • 이미지 보안 → 악성 코드 포함
  • 자원 관리 및 오버헤드
    • 추가적인 리소스(마스터 노드, API 서버 등)
  • 복잡한 네트워크 설정
    • 서비스 디스커버리 로드 밸런싱, 네트워크 정책

  • node: 하나의 가상머신 또는 물리머신
  • pod: 가장 작은 단위
    • node 내에 존재하고 container 여러 개로 구성되어 있음
  • NodePort
    • 클러스터 외부에서 내부 서비스에 접근할 수 있게 해줌
    • 특정 포트를 각 노드에 열어두고 이를 통해 클러스터 외부에서 해당 서비스로 트래픽을 전달

Helm

  • Kubernetes 패키지 관리를 도와줌
  • ex. Node.js의 npm과 Python의 pip와 같은 역할
  • chart, repository, release

server 설정

  1. brew install helm
  2. helm create {serverName}
    1. cd charts
    2. helm create mysql
    3. helm create server
  3. cd .. -> helm install {serverName} .
  4. helm list

  • clusterId: 내부 통신 ⇒ LoadBalancer or NodePort 사용
    • LoadBalancer: 이 포트 그대로 바깥이랑 연결
  • autoscaling: 수평적 확장
    • 80% 넘어가면 replica가 자동으로 늘려줌

ingress

  • 외부 트래픽(HTTP 및 HTTPS 요청 등)을 클러스터 내부의 서비스로 라우팅하기 위해 사용하는 리소스
  • 클러스터 내부에서 동작하는 애플리케이션 → 외부에서 접근 가능하도록 하는 역할
  • kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.11.3/deploy/static/provider/cloud/deploy.yaml
 

인그레스(Ingress)

URI, 호스트네임, 경로 등과 같은 웹 개념을 이해하는 프로토콜-인지형(protocol-aware configuration) 설정 메커니즘을 이용하여 HTTP (혹은 HTTPS) 네트워크 서비스를 사용 가능하게 한다. 인그레스 개념은

kubernetes.io

 

GitHub - kubernetes/ingress-nginx: Ingress NGINX Controller for Kubernetes

Ingress NGINX Controller for Kubernetes. Contribute to kubernetes/ingress-nginx development by creating an account on GitHub.

github.com

 

728x90
반응형
kimmeoww