티스토리 뷰
2022.01.29 - [Devops 2회차/K8S Study] - K8S-04_리소스 생성, 삭제, 갱신
아무것도 모른채 pod를 생성해 보았다.
pod를 생성할 때에 kubectl을 사용하였는데 이 kubectl은 단순히 pod를 생성하는 것보다 더 많은 역할을 한다.
사실상 kubectl을 다룰줄 알아야 쿠버네티스에서 원하는 서비스를 띄우고, 문제상황의 원인을 파악하고 대응할 수 있다.
kubectl의 명령어는 굉장히 많아서 전부 다루지는 못하고, 서적에 나와있는 것 위주와 실제로 많이 사용하는 명령어 위주로 사용해본다.
출처
쿠버네티스 완벽 가이드
시작하기전에
쿠버네티스는 사용하다보면 여러 클러스터를 움직여야 한다.
하지만 작업은 로컬에서 진행하기 때문에 내가 어디 클러스터에서 있는지 직관적으로 알 수가 없다.
그런것을 가능토록 하는 도구를 설치한다. (MAC)
brew update
brew install kube-ps1
설치하고 나면 로컬 기본 상태란에 현재 내가 어느 클러스터의 어느 네임스페이스에서 작업하는지 알 수 있다.
kubectl 명령어
kubectl api-resources
이 명령어는 실무를 하면서 실제로 사용할 일은 거의 없다.
하지만 처음 입문한다면 꼭 쳐볼 것. 어떤 리소스를 현재 사용가능한지와 더불어 약어까지 알 수 있다.
kubectl get {resource}
### 자주 사용하는 옵션 및 사용 예시
# kubectl get pod -o yaml
# kubectl get pod -o wide
# kubectl get ingress
# kubectl get pod --show-labels
# kubectl get all
위의 {resource} 영역은 api-resources 로 나오는 종류를 입력해주면 된다. (events, bindings, secrets .... etc)
쿠버네티스에서 파드를 생성해 봐서 알겠지만 리소스를 배포할 때 yaml파일 -> kubectl apply 를 통해서 리소스를 생성한다.
만일 반대로 현재 생성된 리소스의 정보를 yaml 파일로 보고 싶다면 위 옵션(-o yaml)을 사용해주면 된다. (pod 외의 다른 리소스에도 적용된다.)
(-o wide)옵션: 경우 단순히 파드의 정보만 보여주는 것이 아닌, 추가적인 정보 (IP, Node 정보 등을 추가로 출력해준다)
(--show-labels)옵션: 나중에 여러 리소스들이 서로 연관성을 갖고 selecting을 할 때, 라벨을 기반으로 하는 경우가 꽤 있다. 만일 라벨이 제대로 설정되지 않았는지 확인한다면 해당 옵션을 통하여 확인이 가능하다. pod 외의 다른 리소스에도 적용된다.
kubectl describe {resource}
마찬가지로 모든 resource를 갖다 붙이면 결과를 확인할 수 있다.
get의 command가 간단하게 리소스의 종류와 상태 이름등을 확인할 수 있었다. 이 정보들은 껍데기처럼 표면적인 정보들이다.
describe command는 표면적인 정보 외에 리소스 관련 이벤트나 각종 내부적인 활동에 대한 상태, 결과 등을 확인할 수 있다.
kubectl describe node {nodename}과 같이 사용한다면 리소스 사용 현황이나 할당 내역등을 확인할 수 있다.
kubectl top node
top는 실제 리소스 사용량을 확인하는 명령어이다.
물론, pod나 사용량 지표를 가진 다른 리소스에도 사용할 수 있지만 주로 node를 위해 사용하기 때문에 예시를 node로 들었다.
서비스에 이상이 생기면 위 명령어로 간단하게 어떤 노드가 가장 리소스를 잡아먹는지 혹은 비정상적인 리소스 사용량을 갖는지 등을 한눈에 확인할 수 있다.
kubectl exec -it {pod명} -- /bin/bash
나는 로컬에서 작업하지만 때로는 파드 내부에 직접 들어가서 확인해야 하는 작업이 필요할 수 있다.
/bin/bash와 같은 셸을 실행함으로써 컨테이너에 로그인한 것처럼 내부에 접속이 가능하다.
(-it) 옵션은 너무나 자동으로 쫓아 다니기 때문에 그냥 같이 외우는 것이 좋다.
-t는 가상 터미널을 생성하라는 옵션이고, -i는 표준 입출력을 pass through 하라는 명령어이다.
kubectl logs {pod}
위에서는 exec로 파드에 들어가는 법을 배웠지만 만일 기동한 서비스가 콘솔로그를 출력한다면
간단하게 kubectl logs 로 로그를 확인할 수 있다. 굳이 귀찮게 컨테이너 내부에 터미널 연결을 하지 않고도 말이다.
'Devops 2회차 > K8S Study' 카테고리의 다른 글
k8s-07_워크로드 API(Daemonset, Statefulset) (0) | 2022.05.22 |
---|---|
k8s-06_워크로드 API(Pod, Replicaset, Deployment) (0) | 2022.03.06 |
K8S-04_리소스 생성, 삭제, 갱신 (0) | 2022.01.29 |
K8S-03_kubectl (0) | 2022.01.02 |
K8S-02_쿠버네티스 기초와 kubectl (0) | 2021.12.25 |
- Total
- Today
- Yesterday
- 쿠버네티스 기초
- kubectl
- 쿠버네티스스터디
- 맥북초기세팅
- 맥북초기셋팅
- 맥북개발자세팅
- 데몬셋
- k8s명령어
- synology nas router manual setup
- sk브로드밴드 nas
- k8s가이드
- k8s study
- 맥북프로m1세팅
- 맥북창정렬
- 쿠버네티스
- kubectl기본명령어
- k8s스터디
- 쿠버네티스명령어
- kubectl command
- 데몬셋업데이트
- k8s kubeconfig
- 쿠버네티스 시작
- 쿠버네티스공부
- k8s job
- k8s pod
- k8s workload api
- k8s기초
- M1세팅
- 쿠버네티스 API 리소스
- kubeconfig
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |