Cloud/k8s-CKAD

[CKAD] 시험 미흡 사항

jinkwon.kim 2024. 11. 3. 20:40
728x90
반응형

PV(Persistent Volume)

명령어를 사용한 생성 방법 없음.

spec

  capacity:

    storage : 1Gi

  accessModes:

  - ReadWriteMany

  persistentVolumeReclaimPoliy: Retain

  hostPath:

    path: "/mnt/data" 

accessModes

다음과 같은 세 가지 유형이 있습니다. 각 모드는 PV가 Pod에 어떻게 연결될 수 있는지를 정의합니다.

"X"는 특정 액세스 모드에서 "Many"를 의미합니다. 즉, 여러 노드 또는 여러 Pod가 동시에 접근할 수 있음을 나타냅니다.

  1. ReadWriteOnce (RWO):
    • 하나의 노드에서 읽기 및 쓰기 액세스가 가능합니다.
    • 단일 Pod 또는 동일한 노드 내 여러 Pod에서만 동시에 마운트할 수 있습니다.
    • 대부분의 클라우드 프로바이더의 기본적인 디스크 모드입니다.
  2. ReadOnlyMany (ROX):
    • 여러 노드에서 읽기 전용 액세스가 가능합니다.
    • 여러 Pod에서 동시에 읽기만 할 수 있습니다.
    • 공유 데이터가 필요한 애플리케이션에서 사용될 수 있습니다.
  3. 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

 

작심삼주 오블완 챌린지

오늘 블로그 완료! 21일 동안 매일 블로그에 글 쓰고 글력을 키워보세요.

www.tistory.com

 

728x90
반응형

'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