티스토리 뷰
쿠버네티스 오브젝트를 CRUD(Create, Read, Update, Delete)하기 위해서는 쿠버네티스의 명령어와 옵션에 대해 알아야 합니다.
무수히 많은 명령어와 옵션들이 있지만 가장 자주 사용하는 핵심 명령어는 아래와 같습니다.
이 정도만 알아도 쿠버네티스 오브젝트를 처리하는데는 사실 큰 무리가 없습니다.
아래 명령어들을 CRUD별로 생각하시면 기억하기 쉽습니다.
‘C’는 apply, ‘R’은 get과 describe, ‘U’는 edit, ‘D’는 delete이고 파드 처리 명령어로 logs, exec가 있습니다.
쿠베컨트롤kubectl의 사용 문법은 아래 형식입니다.
kubectl {COMMAND} {리소스 종류} {오브젝트명} {Options}
항상 위 4개 부분이 다 필요한게 아니라, 명령어에 따라 리소스 종류까지만 입력해도 됩니다.
{Options}가 {오브젝트명} 앞에 와도 상관 없습니다.
예1) kubectl get deploy member -o yaml
위 명령을 풀어 쓰면 ‘디플로이먼트 오브젝트 member의 정의 내용을 야믈 형식으로 보여 주세요'가 됩니다.
예2) kubectl get po -n ott
위 명령은 ‘네임스페이스 ott의 모든 파드 목록을 보여 주세요'가 됩니다.
※ 대괄호로 감싼 부분은 생략 가능하다는 의미임
1. 오브젝트 생성 kubectl apply OR create -f {yaml 경로} [-n {네임스페이스}]
2 오브젝트 기본정보 조회 kubectl get {리소스종류} [{오브젝트명}] [{Options}] [-n {네임스페이스}]
※ watch kubectl get {리소스종류} [{오브젝트명}] [{Options}] [-n {네임스페이스}] 로 실시간 상태 보기도 많이 사용 3 오브젝트 상세정보 조회 kubectl describe {리소스종류} {오브젝트명} [-n {네임스페이스}] 4 파드 로그 보기 kubectl logs [-f] {파드명} [-c {컨테이너명}] [-n {네임스페이스}]
5 파드 내 명령 실행 kubectl exec -it {파드명} [-n {네임스페이스}] -- {명령}
6. 오브젝트 수정 kubectl edit {리소스종류} {오브젝트명} [-n {네임스페이스}]
7 오브젝트 삭제 kubectl delete {리소스종류} {오브젝트명 OR yaml 경로} [-n {네임스페이스}]
|
매번 ‘-n {네임스페이스}’ 옵션을 붙여 주는 것이 불편할 겁니다.
아래 명령으로 현재 네임스페이스를 바꿀 수 있습니다.
$ kubectl config set-context --current --namespace={네임스페이스}
좀 더 편하게 현재 네임스페이스를 변경하고 싶으면 쿠베엔에스kubens라는 유틸리티를 설치하십시오.
앞으로 네임스페이스를 변경할 일이 많으므로 설치하여 주시기 바랍니다.
[root@osboxes ~]# git clone https://github.com/ahmetb/kubectx /opt/kubectx Cloning into '/opt/kubectx'... … [root@osboxes ~]# ln -s /opt/kubectx/kubens /usr/local/bin/kubens [root@osboxes ~]# ln -s /opt/kubectx/kubectx /usr/local/bin/kubectx [root@osboxes ~]# which kubens /usr/local/bin/kubens |
‘-c’ 옵션으로 현재 네임스페이스를 확인할 수 있고 ‘kubens {네임스페이스}’명령으로 현재 네임스페이스를 편하게 바꿀 수 있습니다.
[root@osboxes ~]# kubens -c ott [root@osboxes ~]# kubens default Context "kubernetes-admin@kubernetes" modified. Active namespace is "default". [root@osboxes ~]# kubens ott Context "kubernetes-admin@kubernetes" modified. Active namespace is "ott". |
또한 ‘kubectx’는 쿠버네티스 클러스터를 변경해 주는 유틸리티입니다. 멀티 클러스터를 운영할 때는 꼭 필요한 유틸리티입니다. 사용법은 ‘kubens’와 동일합니다.
위 명령어들은 여러분 각자 한번 실습해 보십시오.
앞으로 과정을 진행하면서 많이 사용할 것이므로 별도의 실습 과정은 생략 하겠습니다.
다만 apply와 delete 명령에서 URL과 디렉토리를 사용하는 방법만 한번 해보겠습니다.
URL을 사용하여 서비스 ‘member’를 삭제하고 다시 생성해 보겠습니다.
아래와 같이 URL을 이용하여서도 오브젝트를 생성하고 삭제할 수 있습니다.
[root@osboxes temp]# k delete -f https://hiondal.github.io/k8s-yaml/3.4/svc-member.yaml service "member" deleted [root@osboxes temp]# k apply -f https://hiondal.github.io/k8s-yaml/3.4/svc-member.yaml service/member created |
이번에는 디렉토리를 지정하여 오브젝트를 지우고 생성해 보겠습니다.
깃허브에서 ‘~/k8s/temp’디렉토리로 서비스 ‘member’와 컨피그맵 ‘member-cm’에 대한 야믈 파일을 다운로드 하십시오. 기존에 테스트로 만든 mying.yaml과 mysvc.yaml, mycm.yaml이 생겼을 겁니다.
[root@osboxes temp]# cd ~/k8s/temp [root@osboxes temp]# wget -O mysvc.yaml https://hiondal.github.io/k8s-yaml/3.4/svc-member.yaml [root@osboxes temp]# wget -O mycm.yaml https://hiondal.github.io/k8s-yaml/3.4/cm-member.yaml [root@osboxes temp]# ll total 12 -rw-r--r--. 1 root root 128 Jan 8 11:17 mycm.yaml -rw-r--r--. 1 root root 633 Jan 9 01:52 mying.yaml -rw-r--r--. 1 root root 183 Jan 8 11:17 mysvc.yaml |
이제 디렉토리를 지정하여 한꺼번에 오브젝트들을 지워 보겠습니다.
[root@osboxes temp]# k delete -f . configmap "member-cm" deleted ingress.networking.k8s.io "ottnew" deleted service "member" deleted |
이번에는 디렉토리를 지정하여 한꺼번에 오브젝트들을 생성해 보겠습니다.
[root@osboxes temp]# k apply -f . configmap/member-cm created ingress.networking.k8s.io/ottnew created service/member created |
당연히 특정 오브젝트를 지울때 야믈파일을 지정해서 지우는것도 됩니다. 인그레스 ‘ottnew’는 더 이상 필요 없으므로 야믈 파일을 이용하여 지우겠습니다.
[root@osboxes temp]# k delete -f mying.yaml ingress.networking.k8s.io "ottnew" deleted [root@osboxes temp]# k get ing NAME CLASS HOSTS ADDRESS PORTS AGE ott <none> ott.169.56.70.201.nip.io 169.56.70.201 80 7h18m |
참고) 객체 삭제가 안되는 경우 강제 삭제
'--force --grace-period=0' 옵션을 사용하세요. --grace-period는 안전한 삭제를 위해 대기하는 시간입니다.
예) k delete pod member-xxxx --force --grace-period=0
참고) 강제삭제로도 안되는 경우 삭제하는 방법
특히 PV가 강제 삭제로도 안 지워지는 경우가 많습니다. 아래 명령으로 지우세요.
kubectl patch pv {pv 객체명} -p '{"metadata":{"finalizers":null}}'
metadata.finalizers가 없어서 위 명령으로 안 지워지면 'edit'명령으로 열어 'finalizers: null'을 추가하면 됩니다.
https://happycloud-lee.tistory.com/174
쿠버네티스 쉽게 이해하기 시리즈 목차
[쿠버네티스 쉽게 이해하기 1] 쿠버네티스 설치하기
[쿠버네티스 쉽게 이해하기 2] 쿠버네티스 아키텍처
[쿠버네티스 쉽게 이해하기 3] 한장으로 이해하는 쿠버네티스 리소스
[쿠버네티스 쉽게 이해하기 4] 쿠버네티스 개발에서 배포까지 실습
[쿠버네티스 쉽게 이해하기 5] 쿠버네티스 오브젝트 정의 파일 쉽게 만들기
[쿠버네티스 쉽게 이해하기 6] 꼭 알아야 할 쿠버네티스 주요 명령어
[쿠버네티스 쉽게 이해하기 7] 파드 실행 및 통제를 위한 워크로드 컨트롤러
[쿠버네티스 쉽게 이해하기 8] 파드 로드 밸런서 서비스
[쿠버네티스 쉽게 이해하기 9] 서비스 로드 밸런서 인그레스
[쿠버네티스 쉽게 이해하기 10] 환경변수 컨피그맵과 시크릿
[쿠버네티스 쉽게 이해하기 11] 데이터 저장소 사용을 위한 PV/PVC
[쿠버네티스 쉽게 이해하기 12] 헬스 체크를 위한 스타트업 프로브, 라이브니스 프로브, 레디니스 프로브
[쿠버네티스 쉽게 이해하기 13] 통합 로깅을 위한 EFK 스택
[쿠버네티스 쉽게 이해하기 14] 인증Authentication과 알백RBAC 방식의 인가Authorization
[쿠버네티스 쉽게 이해하기 15] 더 알면 좋을 주제들: 무중단 배포, 모니터링, HPA
'Cloud > Kubernetes' 카테고리의 다른 글
[쿠버네티스 쉽게 이해하기 8] 파드 로드 밸런서 서비스 (0) | 2022.05.22 |
---|---|
[쿠버네티스 쉽게 이해하기 7] 파드 실행 및 통제를 위한 워크로드 컨트롤러 (0) | 2022.05.22 |
[쿠버네티스 쉽게 이해하기 5] 쿠버네티스 오브젝트 정의 파일 쉽게 만들기 (0) | 2022.05.22 |
[쿠버네티스 쉽게 이해하기 4] 쿠버네티스 개발에서 배포까지 실습 (0) | 2022.05.20 |
[쿠버네티스 쉽게 이해하기 3] 한장으로 이해하는 쿠버네티스 리소스 (2) | 2022.05.20 |
- Total
- Today
- Yesterday
- API Composition
- AXON
- CQRS
- 디토소비
- 리퀴드폴리탄
- agile
- 버라이어티가격
- 분초사회
- spotify
- SAGA
- 스포티파이
- Event Sourcing
- 도파밍
- 호모프롬프트
- 돌봄경제
- micro service
- 마이크로서비스
- 애자일
- 육각형인간
- 스핀프로젝트
- 요즘남편 없던아빠
- 마이크로서비스 패턴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |