Configmap정의애플리케이션의 설정 데이터를 관리하기 위해 사용하는 API 리소스이다. 애플리케이션의 설정 정보를 Key-Value 형태로 저장한다.예시Key-Value 형태의 ConfigmapapiVersion: v1kind: ConfigMapmetadata: name: example-configdata: key1: value1 key2: value2위의 configmap를 apply 한 이후 Pod에서 아래와 같이 사용할 수 있다.apiVersion: v1kind: Podmetadata: name: example-podspec: containers: - name: example-container image: nginx env: - name: EXAMPLE_KEY1 ..
정의K8S 클러스터에서 네트워크 트래픽을 제어하기 위한 리소스이다. 주로 아래의 3가지를 정의한다.Pod 선택 (label selector 사용)트래픽 방향 (ingress, egress)허용할 네트워크 트래픽의 조건 (IP 블록, 포트 등등)예시1. 모든 트래픽 허용apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata: name: allow-all namespace: defaultspec: podSelector: {} # 모든 Pod 선택 ingress: - {} # 모든 ingress 허용 egress: - {} # 모든 egress 허용 policyTypes: - Ingress - Egress2. 특정 Pod에 대한 Ingres..
Resource Quota정의Namespace에서 사용할 수 있는 리소스 양을 제한하는 메커니즘이다.주요 개념리소스 제한:리소스 쿼터는 CPU, 메모리, 스토리지, 파드, 서비스 등의 자원 사용량을 제한한다.특정 리소스를 초과할 경우 네임스페이스 내에서 추가 자원을 생성할 수 없다..리소스 쿼터의 대상:파드CPU 및 메모리 요청/제한PersistentVolumeClaims(PVC)오브젝트 수 제한 (ConfigMap, Secret, Service 등)리소스 쿼터 사양:spec.hard 필드를 통해 제한할 리소스를 정의한다.kubectl describe resourcequotas 명령어로 현재 사용량을 확인할 수 있다.예시리소스 쿼터 정의하기manifest를 통해 리소스 쿼터를 정의한다.apiVersion..
정의RBAC(Role-Based Access Control) 는 시스템에서 사용자의 역할을 기반으로 리소스에 대한 접근 권한을 관리하는 권한 관리 모델이다. 시스템 사용자에게 개별적으로 권한을 부여하는 대신, 공통 역할을 중심으로 권한을 할당함으로써 접근 제어를 간단하고 일관되게 관리할 수 있다.주요 개념사용자(User)시스템 내에서 리소스에 접근하려는 개별 사용자 또는 서비스 계정을 의미한다.역할(Role)특정 권한의 집합이다. 역할은 시스템에서 수행 가능한 작업과 작업 대상이 되는 리소스(예: 파일, 데이터베이스, 네트워크)의 유형을 정의한다.예: "관리자", "개발자", "읽기 전용 사용자"권한(Permission)특정 작업(예: 읽기, 쓰기, 삭제)과 특정 리소스(예: Pod, Service, C..
Init Container정의일반적인 파드 내에서 애플리케이션이 시작되기 전에 실행되는 특수한 컨테이너이며, 필요한 초기 설정이나 종속성을 준비하는 데 사용된다.애플리케이션과 독립적인 컨테이너이며, 초기화 컨테이너 작업이 완료된 후 메인 컨테이너로 실행된다.예시1. 초기화 실행 시, 특정 폴더에 대해서 권한 설정mount 후 /opt/sonarqube 라는 폴더에 대해서 모든 권한을 허용하는 예시apiVersion: apps/v1 kind: Deployment metadata: namespace: poc name: deployment-sonarqube spec: replicas: 1 selector: matchLabels: app.kubernetes.io/..
K8S에서는 애플리케이션의 상태를 검사하기 위해 startupProbe, livenessProbe, readinessProbe를 설정함Probe 검사 방식Startup Probe목적: 애플리케이션이 시작되는 동안, 애플리케이션이 정상적으로 시작되었는지를 확인하는 프로브사용 이유: 애플리케이션이 초기화가 길어지는 경우, livenessProbe가 빠르게 실패하지 않도록 하기 위해 사용Liveness Probe목적: 애플리케이션이 실행 중에 정상적으로 동작하는 지 확인. livenessProbe 가 실패하면 K8S 는 Pod 재시작사용이유: 애플리케이션이 중단되었거나 응답하지 않는 상태에 빠졌을 때 이를 감지하여 재시작을 유도할 수 있음Readiness Probe목적: 애플리케이션이 트래픽을 받을 준비가 되..
https://kubernetes.io/ko/docs/concepts/overview/components/Control Plane 컴포넌트kube-apiserver정의k8s 클러스터 내에서 모든 관리 작업과 상태 변경 요청을 하는 API이며, 중앙 관리 지점이다.주요 기능API 요청 처리리소스 관리ETCD와의 상호작용인증 및 권한 부여상태 관리 및 동기화K8S API 서버와 다른 컴포넌트 관계Scheduler : API 서버를 통해 얻은 파드 리소스를 통해 적절한 노드에 파드 배치Controller Manager: 클러스터 리소스의 상태를 목표 상태로 조정Kubelet: 노드에서 실행 중인 파드와 컨테이너 상태를 API 서버를 통해 공유etcd정의분산 키-값 DB로 클러스터 상태와 구성을 저장하고 관리하..
emptyDirPod 내에서 여러 컨테이너들이 데이터를 일시적으로 저장하는데 사용된다.Pod 수명동안 존재하며, Pod가 삭제되면 emptyDir 내용도 사라진다.로컬 디스크 또는 tmpfs (메모리 기반 파일 시스템)을 사용학 떄문에 높은 속도를 제공할 수 있다.예시container-1은 /data/hello.txt 파일을 생성한다.container-2는 동일한 /data 경로를 마운트하여, container-1이 생성한 hello.txt 파일을 읽는다.두 컨테이너가 동일한 emptyDir 볼륨을 마운트하여 데이터를 공유할 수 있습니다.apiVersion: v1kind: Podmetadata: name: example-podspec: containers: - name: container-1 ..
~~HostPort와 hostNetwork 내용은 생략했습니다.NodePort클러스터 외부에서 클러스터 내의 서비스를 접근할 수 있도록 하는 방법 중 하나이다.특정 port를 열어두고, 그 포트를 통해 클러스터 내의 파드에 접근할 수 있다.NodePort 예시다음은 Deployment 와 Service를 활용하여 파드를 노출하는 예시다.30007 port 로 node를 접근하면, Service 의 80 port로 접근하고, 여기서 80 port를 가진 Deployement로 접근한다.apiVersion: apps/v1kind: Deploymentmetadata: name: nginx-deploymentspec: replicas: 3 selector: matchLabels: app: n..
StatefulSet의 정의StatefulSet은 Kubernetes의 컨트롤러 중 하나로, 상태가 있는 애플리케이션(Stateful Applications)을 관리하기 위해 설계되었다.유일하게 상태를 보장하는 리소스라고 한다.StatefulSet의 특징고유한 Pod 이름StatefulSet은 생성한 Pod마다 고유한 이름을 부여한다.Pod 이름은 - 형식으로 생성된다.예: web-0, web-1, web-2.순차적인 배포와 종료Pod의 생성 및 업데이트, 삭제 과정에서 순서를 보장한다.예: Pod은 web-0, web-1, web-2 순서로 생성되고, 삭제도 역순으로 이루어진다.Stable Network Identity (안정적인 네트워크 ID)StatefulSet Pod는 네트워크 상에서 고정된 이름..