PV(Persistent Volume)
명령어를 사용한 생성 방법 없음.
spec
capacity:
storage : 1Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPoliy: Retain
hostPath:
path: "/mnt/data"
accessModes
다음과 같은 세 가지 유형이 있습니다. 각 모드는 PV가 Pod에 어떻게 연결될 수 있는지를 정의합니다.
"X"는 특정 액세스 모드에서 "Many"를 의미합니다. 즉, 여러 노드 또는 여러 Pod가 동시에 접근할 수 있음을 나타냅니다.
- ReadWriteOnce (RWO):
- 하나의 노드에서 읽기 및 쓰기 액세스가 가능합니다.
- 단일 Pod 또는 동일한 노드 내 여러 Pod에서만 동시에 마운트할 수 있습니다.
- 대부분의 클라우드 프로바이더의 기본적인 디스크 모드입니다.
- ReadOnlyMany (ROX):
- 여러 노드에서 읽기 전용 액세스가 가능합니다.
- 여러 Pod에서 동시에 읽기만 할 수 있습니다.
- 공유 데이터가 필요한 애플리케이션에서 사용될 수 있습니다.
- ReadWriteMany (RWX):
- 여러 노드에서 읽기 및 쓰기 액세스가 가능합니다.
- 여러 Pod에서 동시에 읽기와 쓰기를 할 수 있습니다.
- NFS(Network File System) 또는 클라우드 파일 스토리지 솔루션에서 주로 지원합니다
persistentVolumeReclaimPoliy
Retain(유지)
PersistentVolumeClaim이 삭제되면 해당 PersistentVolume은 자동으로 삭제되지 않습니다. 대신 "Released" 상태로 이동하고 Volume의 Data는 그대로 유지됩니다.
Delete
PersistentVolumeClaim이 삭제되면 해당 PersistentVolume도 자동으로 삭제됩니다. 이는 PersistentVolumeClaim이 삭제되면 데이터를 유지할 필요가 없는 경우에 유용합니다. 이를 지원하는 볼륨의 경우, 기본 스토리지도 삭제됩니다 (예: AWS의 EBS 볼륨).
Deployment에서 Volume
containers와 같은 Level에 존재해야한다.
containers에서 volume 사용법
volumeMounts에 readOnly: true 옵션도 존재함
spec:
containers:
- name: example-container
image: nginx
volumeMounts:
- name: test_volume
mountPath: /var
- name: pvc
mountPath: /pvc
- name: env
mountPath: /env
- name: host_path
mountPath: /host
- name: share_dir
mountPath: /shared
volumes:
- name: test_volume
hostPath:
path: /var # 노드의 절대 경로
- name: pvc
persistentVolumeClaim:
claimName: my-pvc
- name: env
configMap:
name: test-config
- name: host_path
hostPath:
path: /absolute/path/to/test # 노드의 절대 경로로 수정 필요
type: DirectoryOrCreate # 해당 경로가 없으면 생성합니다.
- name: share_dir
emptyDir: {} # container가 공유할 directory를 생성합니다.
Pod Command 사용
command만 사용시
command:
- "/bin/sh"
- "-c"
- "while true; do date; sleep $TIME_FREQ;done > /opt/time/time-check.log"
command와 args 사용시
command ["/bin/sh"]
args[ "-c", " "while true; do date; sleep $TIME_FREQ; done >> /log/filed"] 이렇게 사용해야됨.
args[ "-c", " "while true; do date; sleep $TIME_FREQ; done", ">", "/log/filed"] 이건 안됨.
- args 섹션은 쉘이 아닌 실행 파일과 인수를 그대로 전달하기 때문에 >> 같은 리다이렉션 연산자는 지원되지 않습니다.
NetworkPolicy
아래 처럼 되어있으면 Netwwork Policy는 기본이 deny이다. 그래서 Netowkr Policy를 추가해서 이걸 뚫어줘야 한다.
Pod 검색시 Label 같이 표시 하는 방법
kubectl get pod --show-labels
readinessProbe vs livenessProbe
traffic관련 문제면 readinessProbe를 사용하여 문제를 푼다.
container 재시작 관련 문제이면 livenessProbe를 사용하여 문제를 푼다.
CronJob 다시 공부
Ingress공부
ingress 생성시 아래 옵션이 들어가면
status:
loadBalancer: {}
이런 오류가난다. 그럼으로 해당 loadBalancer: {} 가 없어야 한다.
Error from server (InternalError): error when creating "4.yaml": Internal error occurred: failed calling webhook "validate.nginx.ingress.kubernetes.io": failed to call webhook: Post "https://ingress-nginx-controller-admission.ingress-nginx.svc:443/networking/v1/ingresses?timeout=10s": dial tcp 10.102.226.160:443: connect: connection refused
https://www.tistory.com/event/write-challenge-2024
'Cloud > k8s-CKAD' 카테고리의 다른 글
[CKAD] Custom Resource Definitions(CRD) (1) | 2024.10.29 |
---|---|
[CKAD] k8s API 버전 체계 (0) | 2024.10.17 |
[CKAD] Admission Controller (1) | 2024.10.16 |
[CKAD] Statefulset 과 Headless Service (0) | 2024.10.09 |
[CKAD] Network Policy (0) | 2024.10.03 |