Kubernetes, FsGroup

Jeonghak Cho·2025년 3월 8일

Kubernetes

목록 보기
6/20

FsGroup 개요

fsGroup은 Kubernetes의 securityContext에서 제공하는 옵션으로, Pod가 마운트하는 볼륨의 그룹(GID)을 설정하는 역할을 한다.

fsGroup을 설정하면 Pod 내의 모든 컨테이너가 해당 GID를 가진 그룹으로 볼륨을 접근할 수 있다. 주로 Persistent Volume(PV) 또는 Persistent Volume Claim(PVC) 을 사용할 때 볼륨 내 파일의 권한 문제를 해결하는 데 활용된다.

Pod가 시작될 때 Kubernetes가 자동으로 볼륨의 파일과 디렉토리의 그룹을 fsGroup 값으로 변경한다. 볼륨 내 파일이 root 소유(UID=0)이더라도, fsGroup을 설정하면 특정 GID를 통해 접근할 수 있게 된다. 컨테이너 내에서 특정 GID를 사용하는 애플리케이션이 볼륨을 정상적으로 읽고 쓸 수 있도록 보장하는 기능이다.

기본적으로 Kubernetes는 볼륨을 마운트할 때 기본 root(UID 0) 권한으로 마운트할 수 있다.하지만, 컨테이너 내 애플리케이션이 루트 사용자가 아닌 일반 사용자로 실행될 경우, 볼륨에 대한 쓰기 권한이 없을 수 있다. fsGroup을 설정하면 일반 사용자도 볼륨을 정상적으로 사용할 수 있도록 보장할 수 있다.

볼륨 생성

로컬의 경우 테스트를 위해 볼륨생성을 먼저 한다.

워크로드 생성

k apply -f mybusybox.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: busybox
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      module: busybox
  template:
    metadata:
      labels:
        module: busybox
    spec:
      securityContext:
        fsGroup: 1000
      volumes:
      - name: busybox
        persistentVolumeClaim:
          claimName: mypvc
      containers:
      - name: busybox
        image: busybox
        securityContext:
            runAsUser: 0
        command:
          - "sh"
          - "-c"
          - "while true; do sleep 6000; done"
        volumeMounts:
        - mountPath: /mydata
          name: busybox

컨테이너가 루트 권한 없이 실행될 경우, fsGroup을 사용하여 볼륨에 대한 권한을 조정할 수 있다.
fsGroup: 1000을 설정하여 PVC에 저장되는 파일들의 그룹을 1000으로 자동 변경한다.
PVC를 사용하는 모든 Pod는 동일한 fsGroup을 설정하면 같은 그룹으로 파일을 읽고 쓸 수 있다.
여러 개의 Pod가 PVC를 공유할 때 권한 문제를 방지할 수 있다.

0개의 댓글