Cloud/k8s-CKA

[CKA] 47. k8s 문제 풀이 모르는 것 정리

jinkwon.kim 2023. 11. 17. 12:31
728x90
반응형

image 교체

kubectl set image deployment/ngin-deploy nginx=nginx:1.17.1

nginx : container name

nginx:1.17.1 : image name

 

JSONPath를 요약해서 보기 

kubectl get node -o json | jq -c 'paths'

또는

 kubectl get node -o json | jq 'paths | join(".")'

Pod volume 

emptyDir의 용도

emptyDir은 쿠버네티스(Kubernetes)에서 사용되는 일시적인 볼륨 유형으로, 파드(Pod)에 대한 임시 저장 공간을 제공합니다. emptyDir 볼륨의 주요 용도는 다음과 같습니다:

  1. 데이터 공유 및 통신: 파드 내의 서로 다른 컨테이너 간에 데이터를 공유하거나 통신할 수 있는 방법을 제공합니다. 예를 들어, 한 컨테이너가 파일을 생성하고 다른 컨테이너가 이 파일을 읽는 경우에 유용합니다.
  2. 임시 데이터 저장: 파드의 작업 중 생성되는 임시 파일이나 중간 데이터를 저장하는 데 사용됩니다. 이 데이터는 파드가 존재하는 동안만 필요하며, 파드가 삭제되면 자동으로 삭제됩니다.
  3. 캐시 및 버퍼링: 애플리케이션이 캐시나 버퍼와 같은 일시적인 데이터를 저장하는 데 사용할 수 있습니다. 이를 통해 성능을 향상시킬 수 있으나, 파드가 재시작되면 데이터가 손실될 수 있습니다.
  4. 로그 파일 처리: 애플리케이션이 생성하는 로그 파일을 임시로 저장하는 데 사용될 수 있습니다. 이를 통해 로그 파일을 다른 컨테이너나 로그 처리 시스템으로 전송하기 전에 일시적으로 보관할 수 있습니다.
  5. 임시 작업 디렉토리: 일부 애플리케이션이나 스크립트가 실행 중에 임시 파일을 생성할 필요가 있을 때, 이를 저장하는 장소로 사용될 수 있습니다.

emptyDir 볼륨은 파드와 생명주기를 공유하기 때문에, 파드가 삭제되면 emptyDir에 저장된 모든 데이터도 함께 삭제됩니다. 따라서 중요한 데이터를 영구적으로 보관해야 하는 경우에는 emptyDir 대신 영구 볼륨을 사용해야 합니다.

 

emptyDir의 사용법

두개의 container가 emptyDir를 공유합니다.

apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  containers:
  - name: container1
    image: nginx
    volumeMounts:
    - mountPath: /usr/share/nginx/html
      name: cache-volume
  - name: container2
    image: debian
    volumeMounts:
    - mountPath: /cache
      name: cache-volume
  volumes:
  - name: cache-volume
    emptyDir: {}
 

deployment scale 조정

kubectl scale --replicas=4 deployment/cluster-nginx-deployment

scale 조정 안될때

kube-controller-manager-master가 정상인지 확인

replicaset과 controller 의관계 

kube-controller-manager-master는  Kubernetes 시스템의 핵심 구성 요소 중 하나로, 여러 컨트롤러를 통합 관리합니다. 이 컨트롤러들은 쿠버네티스 클러스터의 상태를 원하는 상태로 유지하는 역할을 합니다. 각 컨트롤러는 특정 측면을 담당하며, 이 중 ReplicaSet 컨트롤러는 중요한 역할을 합니다.

API 접근 권한 확인

kubectl auth can-i update pods --as=john --namespace=development

Pod 1회만 실행 

kubectl run ls-pod --image=busybox --restart=Never --command -- ls

  • --restart=Never: Pod가 1회성임을 나타냅니다. 즉, 명령어 실행 후 Pod는 종료됩니다.

volumemode 공부 

Kubernetes에서 PersistentVolume (PV)의 volumeMode 필드는 PV가 어떻게 마운트될 것인지를 지정합니다. 이 필드는 주로 두 가지 모드 중 하나로 설정됩니다: Filesystem과 Block.

  1. Filesystem 모드:
    • 이 모드에서, PV는 파일 시스템으로 포맷되어 Pod에 마운트됩니다.
    • 대부분의 경우, Filesystem 모드가 사용되며, PV는 파일 시스템의 일부로서 Pod에서 접근할 수 있습니다 (예를 들어, ext4, XFS).
    • Filesystem 모드를 사용하면, 컨테이너는 PV에 있는 파일과 디렉토리를 평소처럼 읽고 쓸 수 있습니다.
  2. Block 모드:
    • Block 모드에서, PV는 블록 장치로서 마운트됩니다. 이 경우, 파일 시스템이 없으며, 대신 원시 블록 장치에 직접 접근합니다.
    • 이 모드는 특정 데이터베이스와 같이 낮은 수준의 블록 스토리지 접근이 필요한 애플리케이션에 유용합니다.
    • Block 모드를 사용하면, 컨테이너는 저장소를 파일 시스템으로 처리하는 대신 원시 블록 장치로 취급합니다.

volumeMode 필드는 PersistentVolume 및 PersistentVolumeClaim (PVC) 리소스 정의에서 설정할 수 있으며, PVC가 요청하는 스토리지의 타입을 PV가 제공해야 합니다. 예를 들어, PVC가 Block 모드를 요청한다면, 이를 충족하는 Block 모드의 PV와 연결되어야 합니다.

이러한 설정은 특히 고성능이 필요한 애플리케이션에서 중요할 수 있으며, 올바른 volumeMode를 선택함으로써 애플리케이션의 요구사항과 최적의 성능을 맞출 수 있습니다.

security context 적용 확인 방법

아래 명령어로 확인 가능

 

kubectl get pod my-pod -o yaml

Container 상태 보기

아래 명령어 밖에 없음 

 

kubectl logs my-pod -c my-container

 

위 명령이 외에는 모두 pod의 상태를 보는 명령어만 존재

 

728x90
반응형

'Cloud > k8s-CKA' 카테고리의 다른 글

[CKA] 49. CKA 시험 후기  (0) 2023.11.19
[CKA] 48. killer.sh  (0) 2023.11.18
[CKA] 46. k8s 문제 풀이(업데이트, 출력형식, PV)  (0) 2023.11.15
[CKA] 45. Troubleshooting  (0) 2023.11.07
[CKA] 44. network policy  (0) 2023.11.05