개발/Kubernetes
[CKA] 시험전 정리
피클s
2022. 1. 20. 11:12
시험을 준비하며 정리한 내용들을 모아두었습니다. 이 글을 읽는 모든 분들께 합격을 기원합니다.
이 글의 내용은 2022/1/20일 기준입니다. 일부 명령어가 변경될 수 있습니다.
1. 자주 쓰는 명령어
# 명령어를 실행하지 않고 yaml파일로 생성
$ 명령어 --dry-run=client -o yaml > 파일명
$ kubectl run nginx-test-pod --image=nginx:alpine -n production --dry-run=client -o yaml > nginx-test-pod.yaml
# Pod생성
$ kubectl run 파드이름 --image=이미지명 -l=키=값,키2=값2
$ kubectl run nginx-test-pod --image=nginx:alpine -l=env=prod,tier=frontend
# Deployment생성
$ kubectl create deploy 디플로이먼트이름 --image=이미지명 --replicas=레플리카숫자
$ kubectl create deploy nginx-test-deploy --image=nginx:alpine --replicas=3
# Service생성
$ kubectl expose 리소스명 리소스이름 --port=포트번호 --targetPort=포트번호 --name=서비스명
$ kubectl expose deploy nginx-deploy --port=80 --targetPort=80 --name=nginx-deploy-service
# Namespace생성
$ kubectl create ns 네임스페이스명
$ kubectl create ns production
# ServiceAccount생성
$ kubectl create sa 서비스어카운트명
$ kubectl create sa test-sa
# scale
$ kubectl scale 리소스명 리소스이름 --replicas=숫자
$ kubectl scale deploy nginx --replicas=6
# kubectl edit 으로 적용할 수 없는 경우, 강제 update
$ kubectl get 리소스명 리소스이름 -o yaml > 파일명
$ kubectl replace --force -f 파일명
$ kubectl get po nginx-test-pod -o yaml > nginx-test-pod.yaml
$ kubectl replace --force -f nginx-test-pod.yaml
## node에 label 설정
$ kubectl label no 노드명 키=밸류
$ kubectl lable no node01 aaa=bbb
# taint 생성/삭제
$ kubectl taint no 노드이름 키=값:이펙트
$ kubectl taint no 노드이름 키- # taint 삭제
$ kubectl taint no node01 key=value:NoSchedule
$ kubectl taint no node01 key-
# 메트릭 확인
$ kubectl top 리소스명
$ kubectl top pod -l 레이블 --sort-by=cpu
# 노드 조인 명령어 생성
$ kubeadm token create --print-join-command
# cordon / uncordon / drain
$ kubectl cordon 노드명 # 스케줄링 차단
$ kubectl uncordon 노드명 # 스케줄링 허용
$ kubectl drain 노드명 --ignore-daemonsets # 리소스를 다른 워커에 옮김 & 스키줄링 차단
2. 자주 쓰는 단축리소스명
kubectl api-resources
에서 확인가능합니다.
리소스명 | 단축어 |
---|---|
pods | po |
deployments | deploy |
services | svc |
persistentvolumes | pv |
persistentvolumeclaims | pvc |
serviceaccounts | sa |
configmaps | cm |
nodes | no |
ingresses | ing |
networkpolicies | netpol |
certificatesigningrequests | csr |
3. 트러블슈팅
# 노드의 상태를 확인한다. NotReady라면 kubelet에 문제가 있다.
$ k get no
# 테인트가 설정되어 있으면 파드가 스케줄링 되지않을 수 있다.
$ k describe no
# 쿠버네티스 구성요소들의 상태를 확인한다. running이 아니라면 describe/logs 로 확인한다.
# static pod 인 경우 static path의 yaml을 수정한다.
$ k get po -n kube-system
# 파드의 문제점을 확인한다.
$ k describe po 파드명
$ k logs po 파드명
$ k logs po 파드명 --previous
# 설정파일 경로 확인
$ ps -aux | grep kubelet
# 기본 static pod 경로
$ ls -al /etc/kubernets/manifest/
# 기본 kubelet 설정파일
$ cat /var/lib/kubelet/config.yaml
# kubelet service
$ cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
# 기본 kubeconfig 설정파일
$ cat /etc/kubernetes/kubelet.conf
# kubelet 상태 / 시작
$ systemctl status kubelet
$ systemctl start kubelet
4. 즐겨찾기
치트시트
커맨드 레퍼런스
클러스터 업그레이드
기본 포트번호
Etcd 백업
테인트와 톨러레이션
노드 조인 토큰 생성
NodeSelector/Affinity
PVC 예시
PV hostPath 예시
Deployment 예시
NetworkPolicy 예시
Ingress 예시
JsonPath 예시
CSR 예시
RBAC 예시
kubeconfig 예시
SecurityContext 예시
5. 알아두면 유용한 vi 커맨드
명령어 | 의미 |
---|---|
w | 단어 단위로 건너뛰기 |
b | 단어 단위로 뒤로뛰기 |
$ | 라인의 가장 뒤로 |
0 | 라인의 가장 앞으로 |
gg | 가장 윗줄 |
G | 가장 아랫줄 |
dd | 줄 삭제 |
a | 입력모드 |
u | undo |
y | 라인복사 |
p | 붙여넣기 |
:숫자 | 해당 라인으로 가기 |
/검색어 | 단어검색 |
n | 다음 검색결과로 이동 |
N | 이전 검색결과로 이동 |
:%s/바꿀문자/새로운문자/g | 파일 전체에서 문자변경 |
:%s/바꿀문자/새로운문자/gc | 변경전 확인함 |
:set number | 라인넘버 표시 |
:set et | 탭을 스페이스로 변경 |
:set sw=2 ts=2 sts=2 | 탭을 스페이스2로 변경 |