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 확인방법
Ingress Resource에서 매칭되늰게 없는 경우
k describe ingress {ingress-resource-name} 수행시
Default backend를 확인하면됩니다.
ClusterRole
kubectl api-resources에서 API Group은 APIVERSION 컬럼에 해당 한다.
APIVERSION은 두 부분으로 구성될 수 있습니다:
- API Group
- 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과 같은 리소스를 관리할 때 사용됩니다.
'Cloud > k8s-CKAD' 카테고리의 다른 글
[CKAD] Pod의 상태 파악 방법 (0) | 2024.08.26 |
---|---|
[CKAD] Multi-Container Pod and InitContainer (1) | 2024.08.25 |
[CKAD] Resource 제어, resource/LimitRange/ResourceQuotas (0) | 2024.08.12 |
[CKAD] Service Account (0) | 2024.07.16 |
[CKAD] Security Context (0) | 2024.04.23 |