티스토리 뷰

개발/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로 변경
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함