Cloud/k8s-CKAD

[CKAD] 시험 미흡 사항

jinkwon.kim 2024. 8. 21. 09:09
728x90
반응형

container에 command 추가 방법

command와 argument 혼합형

command: ["sleep", "3600"]

command 와 argument 분리형

Ex1) 

command: ["sleep"]
args: ["3600"]

Ex2)

command: ["myapp"]
args: ["--config", "/etc/myapp/config.yaml", "--verbose"]

 

container의 파일 보기

특정 파일 보기

kubectl exec cassandra -- cat /var/log/cassandra/system.log

https://kubernetes.io/docs/tasks/debug/debug-application/debug-running-pod/

Pod의 State보는 곳

#kubectl describe pod {pod_name}

Status: 확인 

Label로 필터링

Pod만보기

kubectl get pod -l {label}

모든 Oject보기 

kubectl get all -l {label}

Label 여러개 적용 

kubectl get pid -l {label},{label},{label}
Ex)kubectl get pod -l env=prod,bu=finance,tier=frontend

수량 파악

--no-headers 를 추가하면 header가 표기가 안된다.

kubectl get all -l {label} --no-headers | wc -l

Deployment의 Pod image 변경 방법

kubectl set image deployment/<Deployment-Name> <Container-Name>=<New-Image>

Traffic제어 방법

Deployment A의 개수와 Deployment B를 제어하고, service의 routing이 2개 Delolyment로 모두 갈 수 있도록 

service의 selector를 Deployment A와 Deployment B의공통 label로 설정합니다. 

Deployment Scale up/down 방법

kubectl scale deployment {deployment-name} --replicas={up/down count}
Ex) kubectl scale deployment my-deployment --replicas=2

참고로 : replicas는 복제품을 의미합니다. 

Ingress 

Ingress Resource의 Host

kubectl get ingress -A 명령어에서 나오는 Host 항목은 Ingress 리소스가 수신하는 HTTP(S) 요청의 도메인 이름을 의미합니다.

Host 항목이 * 혹은 공란일 경우, 이는 모든 도메인에 대해 해당 Ingress가 적용될 수 있음을 의미합니다.

 

Ingress Resource의 Host 확인방법

kubectl get ingress -A 명령에서 Host 확인

Ingress Resource에서 매칭되늰게 없는 경우

k describe ingress {ingress-resource-name} 수행시

Default backend를 확인하면됩니다. 

ClusterRole

kubectl api-resources에서 API Group은 APIVERSION 컬럼에 해당 한다.

APIVERSION은 두 부분으로 구성될 수 있습니다:

  1. API Group
  2. Version

예를 들어, apps/v1와 같은 형식은 API Group이 apps이고, Version이 v1임을 의미합니다. 모든 리소스가 API Group에 속하지는 않으며, 일부 기본 리소스는 그룹 없이 버전만 표시됩니다. (예: v1)

API Group과 Version 구분:

  • API Group: 리소스가 속한 그룹으로, Kubernetes 기능이 확장됨에 따라 리소스들을 논리적으로 구분하는 방식입니다. 예를 들어, apps, batch, networking.k8s.io 등이 있습니다.
  • Version: 해당 API Group의 특정 버전입니다. 일반적으로 v1, v1beta1과 같은 형식입니다.

예시:

  • apps/v1: API Group은 apps, Version은 v1.
  • batch/v1: API Group은 batch, Version은 v1.
  • v1: 이 경우 API Group이 없고, 기본 그룹의 v1 버전입니다.

따라서 kubectl api-resources 명령에서 APIVERSION 열에 표시되는 값은 API Group과 버전을 모두 나타낼 수 있으며, API Group은 APIVERSION의 첫 번째 부분에 해당합니다.

 

그래서 ClusterRole에서 사용되는 apiGroups는 APIVERSION에서 Version 정보를 빼고 기록 한다.

 

NAME

  • 설명: Kubernetes API에서 사용하는 리소스의 이름입니다. 보통 복수형으로 표기됩니다.
  • 활용: 리소스를 생성, 조회, 수정, 삭제할 때 kubectl 명령어에서 리소스 타입을 지정하는 데 사용됩니다.
  • 예시: pods, deployments, nodes

SHORTNAMES

  • 설명: 리소스의 짧은 이름(약어)입니다. 사용자가 더 간편하게 명령어를 입력할 수 있도록 도와줍니다.
  • 활용: kubectl 명령어에서 리소스를 빠르게 지정할 때 유용합니다.
  • 예시: po (pods), deploy (deployments), no (nodes)

APIVERSION

  • 설명: 리소스가 속한 API 그룹을 나타냅니다. API 그룹은 관련된 리소스를 논리적으로 그룹화하여 관리합니다.
  • 활용: 특정 API 그룹에 속한 리소스를 다룰 때, 예를 들어 apps 그룹의 리소스를 사용할 때 유용합니다. 또한, 커스텀 리소스 정의(CRD)를 사용할 때도 중요합니다.
  • 형태 : group/version

NAMESPACED

  • 설명: 해당 리소스가 네임스페이스에 종속적인지 여부를 나타냅니다.
    • true: 네임스페이스에 속하며, 특정 네임스페이스 내에서만 존재합니다.
    • false: 클러스터 전체에 걸쳐 존재하며, 특정 네임스페이스에 종속되지 않습니다.
  • 활용: 리소스를 관리할 때 네임스페이스 범위 내에서 작업할지, 클러스터 전체에 걸쳐 작업할지를 결정할 때 중요합니다.
  • 예시:
    • true: pods, deployments
    • false: nodes, persistentvolumes

KIND

  • 설명: 리소스의 종류(Kubernetes 객체의 종류)를 나타냅니다. 각 리소스는 특정한 Kind를 가집니다.
  • 활용: YAML 매니페스트 파일에서 kind 필드를 정의할 때 사용되며, 프로그래밍적으로 리소스를 다룰 때도 중요합니다.
  • 예시: Pod, Deployment, Node, PersistentVolume

ClusterRole 생성

k create clusterrole storage-admin --resource=persistentvolumes,storageclasses --verb=list,create,get,watch 

를 하게되면 resource별로 clusterrole이 자동으로 설정이 됩니다.

Admission-controller 기본 enable 확인 

kubectl exec -it kube-apiserver-controlplane -n kube-system -- kube-apiserver -h | grep enable-admission-plugins

API Verison 확인

preferred version 확인 방법, authorization.ks8.io 의 preferred version 확인 방법

#kubectl proxy 8081&

#curl localhost:8081/apis/authorization.ks8.io

 

  • /apis: Kubernetes API 서버에서 확장 API 그룹(Extended API groups)에 대한 경로를 나타냅니다. Kubernetes에는 기본(Core) API 외에 다양한 기능을 제공하는 확장 API가 존재하는데, 이러한 확장 API 그룹은 /apis 경로 하위에서 관리됩니다.
  • authorization.k8s.io: 이 부분은 API 그룹 중 하나를 나타냅니다. authorization.k8s.io는 Kubernetes의 인증 및 권한 관리 관련 기능을 제공하는 API 그룹입니다. 예를 들어, Role, RoleBinding, ClusterRole과 같은 리소스를 관리할 때 사용됩니다.

 

728x90
반응형