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
'Infra > Kubernetes' 카테고리의 다른 글
쿠버네티스 04-03 Storage_Static (0) | 2023.09.06 |
---|---|
쿠버네티스 04-02 Storage_Hostpath (0) | 2023.09.06 |
쿠버네티스 03-05 Network_Headless_Service (0) | 2023.09.06 |
쿠버네티스 03-04 Network_Readiness_Probe (0) | 2023.09.06 |
쿠버네티스 03-03 Network_Ingress (0) | 2023.09.06 |