본문 바로가기

전체 글

[K8S] Pod Resource 할당 Default로는 container는 리소스 할당에 대한 제한이 없다.No limit, No request : 하나의 파드가 모든 리소스를 사용할 수 있고, 2번째 Pod가 필요한 리소스를 할당받는데 방해한다.Resource Request 어느 노드가 실행해주면 좋을 지를 scheduler가 판단한다. 컨테이너가 실행되기 위해 최소한으로 필요한 메모리의 양을 정의한다.Kubernetes 스케줄러는 이 값을 기반으로 Pod을 스케줄링할 노드를 결정합니다.Request는 보장된 자원으로, 다른 컨테이너가 이 메모리를 빼앗아 사용할 수 없습니다.Pod이 실행되려면 노드에 Request 값 이상의 사용 가능한 메모리가 있어야 함.노드가 과부하 상태가 되면, Request가 낮은 Pod이 우선적으로 제거될 수 있.. 더보기
[K8S] pause container / Static container # Pause container Infra(pause) container : In a Kubernetes Pod, an infrastructure or “pause” container is first created to host the container. pod에 대한 infra(IP, hostname 등,.)을 관리 및 생성해주는 컨테이너 infra를 만들어주지만, 어떤 작업을 수행하지는 않는다. # Static container 기존의 Pod 생성은 'kubectl run ~'을 API server에 전달하면, etcd 정보를 가져다가 scheduler에게 보내주고 가장 적절한 노드를 선택해서 API에게 응답하면, API가 해당 Pod를 실행해주는 구조였다. Static Pod는 API에게 요청을 보.. 더보기
[K8S] init container https://kubernetes.io/ko/docs/concepts/workloads/pods/init-containers/ 초기화 컨테이너이 페이지는 초기화 컨테이너에 대한 개요를 제공한다. 초기화 컨테이너는 파드의 앱 컨테이너들이 실행되기 전에 실행되는 특수한 컨테이너이다. 초기화 컨테이너는 앱 이미지에는 없는 유틸kubernetes.io앱(main) 컨테이너 실행 전에 미리 동작시킬 컨테이너컨테이너에서 완료까지 실행되는 프로세스를 실행하기를 원할 때.main Container가 실행되기 전에 사전 작업이 필요한 경우 사용Pod가 처음 생성될 때 한 번만 실행된다. (실제 application이 시작되기 전에 외부 서비스나 데이터베이스가 작동하기를 기다리는 프로세스)초기화 컨테이너는 앱 이미지에는 .. 더보기
[K8S] Liveness Probe (Self-healing) Pod Self-healing Restarts containers that fail, replaces and reschedules containers when nodes die, kills containers that don't respond to your user-defined health check, and doesn't advertise them to clients until they are ready to serve. # kubelet 으로 컨테이너 진단하기 # Liveness Probe ✔ Pod가 계속 실행할 수 있음을 보장 (=self healing) ✔ Pod의 spec에 정의 # LivenessProbe 매커니즘 httpGet probe : 지정한 IP주소, port, path에 HTTP GET.. 더보기
[K8S] YAML 템플릿 및 Pod # YAML 템플릿사람이 쉽게 읽을 수 있는 데이터 직렬화 양식기본 문법구조화된 데이터 포맷Python처럼 들여쓰기로 데이터 계층 표기들여쓰기 할 때에는 Tab이 아닌 Space Bar 사용! (두 칸: 형제, 네 칸: Child)Scalar 문법: ':'를 기준으로 key:value 설정배열 문법 : '-' 문자로 여러 개 값 지정주석은 #로 시작하고, 여러 줄 주석은 지원하지 않는다.`---`는 성격이 다른 YAML 형식의 문서 여러 개가 있을 때 구분자로 사용한다. YAML 의 시작을 알리는 용도로도 사용한다. 템플릿의 기본 형식---apiVersion: v1 #  사용하려는 API 버전kind: Pod         # 어떤 종류의 오브젝트 혹은 컨트롤러 작업 등 리소스 유형(Pod, Deploy.. 더보기
[K8S] namespace란 namespacenamespace는 k8s API 중 하나로, (물리적) 클러스터 하나를 여러 개의 논리 적인 단위로 나눠서 사용- 쿠버네티스 클러스터 하나를 여러 팀이나 사용자가 함께 공유- 리소스 충돌을 방지하고,다양한 팀과 프로젝트를 효율적으로 관리- 용도에 따라 실행해야 하는 앱을 구분할 때 사용 Namespace의 주요 특징리소스 분리:서로 다른 팀이나 애플리케이션에 속한 리소스를 격리.동일한 이름의 리소스도 서로 다른 Namespace에 존재할 수 있음.접근 제어: 네트워크 정책 및 RBAC(Role-Based Access Control)를 사용하여 Namespace별 접근 권한 설정 가능리소스 할당 제한: 특정 Namespace에 CPU, 메모리 등 리소스를 제한하여 과도한 사용 방지스코프 .. 더보기
[K8S] 쿠버네티스 개념 및 Architecture 쿠버네티스 공식 문서 : https://kubernetes.io/ko/docs/home/ 쿠버네티스 문서 쿠버네티스는 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하기 위한 오픈소스 컨테이너 오케스트레이션 엔진이다. 오픈소스 프로젝트는 Cloud Native Computing Foundation에서 주관한다. kubernetes.io K8S가 필요한 이유? The purpose of Kubernetes is to host your applications in the form of containers in an automated fashion so that you can easily deploy as many instances of your application. 수많은 마이크로서비스를 여러 서.. 더보기
[K8S] kubectl command kubectl [command] [자원type] [NAME] [flags] ex. kubectl get pod webserver -o wide kubectl run kubectl create -f obj.yaml kubectl apply -f obj.yaml kubectl get kubectl edit kubectl describe 클러스터에서 사용할 수 있는 자원 확인 # Node 정보 확인하기 READY: 파드의 준비상태 0/1: 파드는 생성되었으나 사용할 준비가 되지 않았다. 1/1: 파드가 생성되었고 사용할 준비가 끝났다. root@master:~# kubectl get nodes NAME STATUS ROLES AGE VERSION master.example.com Ready control-pl.. 더보기