구성 - ConfigMap
- 설정 데이터를 저장하는 API 오브젝트
- 컨테이너 내부 코드와 설정을 분리하기 위해 사용
- ConfigMap 오브젝트 구조
- data, binaryData 필드를 통해 데이터 담음
- data 필드는 UTF-8 문자열을 입력하며 binaryData는 이진 데이터를 입력
- data와 binaryData는 영숫자, '-', '_', '.'만 포함이 가능하며 data와 binaryData의 키는 서로 중복될 수 없다.
- ConfigMap 이름은 유효한 DNS 서브도메인 형식
- (+선택)ConfigMap을 불변(immutable)로 선언할 수도 있다.
- Pod가 ConfigMap을 활용하는 방법
- 환경변수
- 컨테이너의 env, envFrom 필드를 이용해 ConfigMap의 특정 키를 환경변수로 주입해 사용가능
- 볼륨으로 마운트하여 파일로 사용
- ConfigMap을 볼륨에 지정하고 마운트해 파일 형태로 설정을 읽게 함
- ConfigMap의 각 키는 filename에 매핑됨
- 커맨드라인 인수나 컨테이너 명령 내에서 사용
- 애플리케이션 내부에서 k8s API로 직접 읽기
- 환경변수
구성 - Secret
- 비밀번호나, 토큰, 키 같은 민감한 데이터를 저장하는 API 오브젝트
- ConfigMap과 비슷하지만 Secret은 비밀 데이터를, ConfigMap은 설정 데이터를 관리
- Secret 객체 안의 data, stringData 필드에 데이터를 담는다
- data 에 담는 데이터는 base64로 인코딩된 문자열 입력 필요
- stringData 에 담는 데이터는 평문 문자열 가능
- Secret의 이름은 유효한 DNS 서브도메인 형식 이어야 함
- Secret에는 크기 제한이 있음
- type 필드를 사용해 종류를 지정할 수 있다.
- 기본 타입은 Opaque
- k8s에서 제공하는 빌트인 Secret 타입이 있다
- kubernetes.io/service-account-token
- 서비스 어카운트 토큰
- kubernetes.io/dockerconfigjson
- 컨테이너 이미지 레지스트리 인증 정보
- kubernetes.io/basic-auth
- 기본 인증 자격 증명
- kubernetes.io/ssh-auth
- SSH 인증용 키
- kubernetes.io/tls
- TLS 인증서와 키
- kubernetes.io/service-account-token
- 사용자 정의 타입의 Secret을 생성할 수 있다.
- type 필드에 식별 문자열 입력
- Pod 에서 Secret을 사용하는 방법
- 볼륨으로 마운트하여 파일 형태로 사용
- 환경 변수로 사용
- 컨테이너 이미지 pull 시, 인증 정보로 사용
- 주의
- Secret 객체는 API 서버의 기본 저장소에(예 : etcd)에 암호화 없이 저장됨
- Encryption at Rest (저장 시 암호화) 활성화
- 최소 권한 원칙 기반의 접근제어(RBAC) 설정
- 필요한 컨테이너에만 Secret을 노출하도록 설정
- 외부 시크릿 저장소 사용 고려
등을 통해 보안성을 강화
- Secret가 마운트된 노드는 kubelet이 파일을 tmpfs위에 마운트하여 영구 스토리지에 남지 않게 함
=> Pod와 라이프사이클 동일
- Secret 객체는 API 서버의 기본 저장소에(예 : etcd)에 암호화 없이 저장됨
구성 - Pod 및 컨테이너 리소스 관리
- k8s 에선 컨테이너가 사용하는 컴퓨트 자원을 리소스로 취급
- linux 워크로드에선 huge page 메모리 블록 단위 리소스도 지정 가능
- requests, limits 형태로 컨테이너 spec에 지정 가능
=> 스케줄링 및 런타임 격리에서 사용 - 스케줄링과 리소스 격리에서의 동작 방식
- Pod 생성 시, 스케줄러는 각 노드의 가용 자원과 요청한 리소스의 합을 비교해 Pod를 어니 노드에 둘지 결정
- 컨테이너 런타임은 limits 를 기준으로 격리를 적용
- 빈 디렉터리 볼륨 타입 중 emptyDir를 메모리기반(tmpfs)으로 사용하는 경우 사용량도 메모리 리소스 사용량에 포함
- 리소스 단위와 표현방식
- cpu
- 소수점이 없는 수치로 지정
- milli-cpu
- 예시로 250m이나 0.5cpu 식으로 표현
- 메모리
- 바이트 단위로 지정되며 Gi, Ki 같은 접미사 사용가능
- cpu
구성 - Liveness, Readiness, Startup Probe
- k8s 는 컨테이너 상태 점검을 위해 Probe란 기술을 쓰며 종류로는 Liveness, Readiness, Startup 이 있다.
- Liveness Probe
- 컨테이너가 살아있는지 판단
- 내부적으로 deadlock 에 빠지거나 응답하지 않는 경우 감지
- 이를 반복 실패 시, 컨테이너는 재시작
- Liveness 는 Readiness 의 성공여부를 기다리지 않는다.
- Readiness Probe
- 트래픽을 처리할 준비가 됬는지 판단
- 이를 실패 시, Pod를 트래픽 대상에서 제외하지만 컨테이너는 재시작 하지 않음 그저 연결만 끊음
- 컨테이너 라이프사이클 동안 주기적으로 실행
- Startup Probe
- 애플리케이션이 제대로 시작이 되었는지 판단
- 이것이 성공할 때 까지 다른 Probe는 실행되지 않음
- Pod 시작 시점에만 실행되는 Probe
'Cloud Native > K8s' 카테고리의 다른 글
| k8s 이론: 스케줄링 (0) | 2026.02.23 |
|---|---|
| k8s 이론: 보안 (0) | 2026.02.23 |
| k8s 이론: 스토리지 (0) | 2026.02.23 |
| k8s 이론: 서비스, 로드밸런싱, 네트워킹 (0) | 2026.02.23 |
| k8s 이론: 워크로드 (0) | 2026.02.23 |