마구잡

Kubernetes에서 변경 불가능한(Immutable) Pod란 본문

Kubernetes

Kubernetes에서 변경 불가능한(Immutable) Pod란

MAGUJOB 2025. 3. 10. 08:15
728x90

Kubernetes에서 변경 불가능한(Immutable) Pod란

변경 가능(Non-Immutable) vs 변경 불가능(Immutable)이란?

 

Kubernetes에서 Pod의 변경 가능성(immutability) 은 해당 Pod 내부의 컨테이너가 데이터를 저장하거나 중요한 시스템 설정을 변경할 수 있는지 여부에 따라 결정된다.

 

변경 불가능한(immutable) Pod는 컨테이너가 실행 중에도 파일 시스템을 변경하지 못하고, 보안적으로 안전한 상태를 유지하는 것을 의미한다.

공식 사이트

(광고 클릭은 큰 힘이 됩니다!)

728x90
 

파드

파드(Pod) 는 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위이다. 파드 (고래 떼(pod of whales)나 콩꼬투리(pea pod)와 마찬가지로)는 하나 이상의 컨테이너의 그룹이다.

kubernetes.io

( 공식 사이트에서 발췌한 내용을 기반으로 작성하였으나, 명확하지 않은 부분은 경험을 토대로 작성하였습니다. 이는 정확한 정보가 아닐 수 있음을 알려드립니다. )

 


변경 가능(Non-Immutable) vs 변경 불가능(Immutable)

1. 변경 가능(Non-Immutable) Pod란?

 

컨테이너 내부에서 파일을 수정하거나 데이터를 저장할 수 있는 Pod를 의미한다.

아래 두 가지 조건 중 하나라도 만족하면 변경 가능한 Pod로 간주한다.

 

① readOnlyRootFilesystem: false 이거나 설정이 없음

 

Pod 내부의 컨테이너가 root 파일 시스템을 변경할 수 있다면 변경 가능하다.

 readOnlyRootFilesystem: false (파일을 수정할 수 있음)

 readOnlyRootFilesystem 설정이 아예 없는 경우 (기본값이 false)

 

예시 (변경 가능)


② privileged: true

 

컨테이너가 루트 권한을 가지면 호스트 시스템을 포함한 여러 변경이 가능하기 때문에 변경 가능하다.

privileged: true (컨테이너가 높은 권한을 가짐)

이 설정이 있으면 컨테이너가 파일을 수정하고, 시스템을 조작할 수 있음

 

예시 (변경 가능)

 

 privileged: true  변경 가능 (루트 권한)

spec:
  containers:
  - name: app
    image: nginx
    securityContext:
      privileged: true  # 높은 권한을 가진 컨테이너 (변경 가능)

 

 readOnlyRootFilesystem 설정 없음 → 기본값이 false (변경 가능)

securityContext: {}

2. 변경 불가능(Immutable) Pod란?

 

컨테이너 내부에서 파일 시스템을 변경할 수 없는 Pod를 의미한다.

변경 불가능하려면 아래 두 가지 조건을 만족해야 한다.

 

① readOnlyRootFilesystem: true

 

파일 시스템을 읽기 전용(읽을 수만 있고, 수정 불가) 상태로 설정해야 한다.

컨테이너 내에서 touch file.txt 또는 echo "hello" > file.txt 같은 파일 생성/수정 명령어 실행이 불가능함

/var, /etc 같은 시스템 경로도 변경할 수 없음

 

예시 (변경 불가능)

spec:
  containers:
  - name: app
    image: nginx
    securityContext:
      readOnlyRootFilesystem: true  # 파일 시스템이 읽기 전용 (변경 불가능)

 

 


② privileged: false

 

컨테이너가 루트 권한을 가지지 않아야 함

privileged: false 또는 설정 자체가 없으면 기본적으로 변경 불가능

컨테이너가 호스트 시스템을 변경할 수 없음

 

예시 (변경 불가능)

spec:
  containers:
  - name: app
    image: nginx
    securityContext:
      privileged: false  # 기본값 (루트 권한 없음)

중요

잘못된 정보나, 문의등은 댓글로 메일과 함께 적어주시면 감사하겠습니다.

728x90