이세개발
article thumbnail

Kubernetes Storage_Emptydir

쿠버네티스에서 emptyDir 볼륨은 파드가 노드에 할당될 때 처음으로 생성되며, 초기에는 비어 있습니다. 파드가 실행되는 동안 emptyDir 볼륨은 계속 존재하며, 파드 내의 모든 컨테이너에서 공유될 수 있습니다. 파드가 노드에서 제거되면 emptyDir 볼륨의 내용도 삭제됩니다. 이는 일시적인 데이터를 저장하거나 컨테이너 간에 데이터를 공유하는 데 유용합니다.

다음은 각 YAML 파일에 대한 설명입니다.


myapp-pod-git.yaml

이 YAML 파일은 Pod를 정의하며, 이 Pod는 초기화 컨테이너를 사용하여 git 저장소를 클론합니다. 클론된 저장소는 emptyDir 볼륨에 저장되며, 이 볼륨은 git-container라는 이름의 컨테이너에서 마운트됩니다.

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod-git
spec:
  initContainers:
    - name: git-clone
      image: alpine/git
      args:
        - clone
        - --single-branch
        - --
        - https://github.com/kubernetes/kubernetes
        - /repo
      volumeMounts:
        - name: git-repository
          mountPath: /repo
  containers:
    - name: git-container
      image: busybox
      args: ['tail', '-f', '/dev/null']
      volumeMounts:
        - name: git-repository
          mountPath: /repo
  volumes:
    - name: git-repository
      emptyDir: {}

myapp-rs-emptydir.yaml

이 YAML 파일은 ReplicaSet을 정의합니다. 이 ReplicaSet은 두 개의 컨테이너를 가진 파드를 생성하며, 이 두 컨테이너는 emptyDir 볼륨을 공유합니다.

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: myapp-rs-fortune
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myapp-rs-fortune
  template:
    metadata:
      labels:
        app: myapp-rs-fortune
    spec:
      containers:
      - name: web-server
        image: nginx:alpine
        volumeMounts:
        - name: web-fortune
          mountPath: /usr/share/nginx/html
          readOnly: true
        ports:
        - containerPort: 80
      - name: html-generator
        image: ghcr.io/c1t1d0s7/fortune
        volumeMounts:
        - name: web-fortune
          mountPath: /var/htdocs
      volumes:
      - name: web-fortune
        emptyDir: {}

myapp-svc-emptydir.yaml

이 YAML 파일은 Service를 정의합니다. 이 서비스는 LoadBalancer 타입이며, myapp-rs-fortune 레이블을 가진 파드로 트래픽을 라우팅합니다.

apiVersion: v1
kind: Service
metadata:
  name: myapp-svc-fortune
spec:
  type: LoadBalancer
  ports:
  - port: 80
    targetPort: 80
  selector:
    app: myapp-rs-fortune

https://kubernetes.io/docs/concepts/storage/volumes/

profile

이세개발

@print(name)

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!