1) apply
$ kubectl apply -f {파일명 혹은 URL}
2) get
$ kubectl get {타입}
$ kubectl get {타입},{타입}
$ kubectl get all
$ kubectl get {타입} -o {원하는 포멧}
$ kubectl get {타입} -show-labels
- 이와 같은 방식으로 활용할 수 있다.
- 위에서 apply로 생성해둔 리소스를 바탕으로 실습해보자.
1. Pod 조회
- kubectl get pod
![](https://velog.velcdn.com/images/pinion7/post/80bc77db-1d6c-4f6b-9b9d-81f25a1f25bf/image.png)
- kubectl은 영리해서 복수형 및 축약형도 다 알아먹는다.
- ex) kubectl get pods 혹은 kubectl get po
2. 여러 타입 조회
- kubectl get pod,service
![](https://velog.velcdn.com/images/pinion7/post/82e914d2-9234-4b89-8c9d-cca21b7ea3aa/image.png)
- 3개 이상의 타입도 가능하다.
- ex) kubectl get pod,service,deployment
- service의 축약형은 svc, deployment는 deploy다.
- ex) kubectl get po,svc,deploy
3. 전체 타입 조회
- kubectl get all
![](https://velog.velcdn.com/images/pinion7/post/d710a372-9d17-4b4d-87bb-ebbd47d1d76b/image.png)
- Pod, ReplicaSet, Deployment, Service, Job 까지 모든 컴포넌트를 조회한다.
4. 출력 포맷 변경
- kubectl get pod -o json
![](https://velog.velcdn.com/images/pinion7/post/81e980f1-c20a-48ef-a03e-9a1df378719d/image.png)
- 캡쳐 내용이 너무 길어서 적당히 생략했지만, 이처럼 -o 옵션을 사용하면 원하는 형태로 변경하여 볼 수 있다.
- yml과 wide 형식으로 보려면 아래와 같다.
- ex) kubectl get pod -o yaml
- ex) kubectl get pod -o wide
5. 레이블 확인
- kubectl get pod --show-labels
![](https://velog.velcdn.com/images/pinion7/post/1869ac96-823f-4c12-a65f-d57283facf08/image.png)
- 이외에도 다양한 옵션이 존재한다.
- 옵션은 필요할 때 공식문서를 통해 학습 및 적용하면 된다.
3) describe
$ kubectl describe {타입}/{리소스 이름}
$ kubectl describe {타입} {리소스 이름}
- 리소스의 상세한 상태를 확인할 수 있다.
- get으로 일단 리소스를 조회하여 리소스 이름을 확인한 뒤 적용해야한다.
1. 리소스 상세 조회
- kubectl describe pod/wordpress-mysql-5447bfc5b-n6gz2
![](https://velog.velcdn.com/images/pinion7/post/2faf4120-55c6-4805-811f-28674981bb63/image.png)
- status, labels, ip, container, volumes 등 리소스에 대한 디테일한 확인이 가능하다.
- kubectl describe pod wordpress-mysql-5447bfc5b-n6gz2 형태도 같은 결과를 출력한다.
4) delete
$ kubectl delete {타입}/{리소스 이름}
$ kubectl delete {타입} {리소스 이름}
$ kubectl delete -f {리소스 파일명}
- 특정 리소스를 제거할 수 있다.
- 마찬가지로 get으로 일단 리소스를 조회하여 리소스 이름을 확인한 뒤 적용해야한다.
- kubectl delete -f {리소스 파일명}을 적용하면, 리소스 전체 제거할 수도 있다.
1. 리소스 제거
- kubectl delete pod/wordpress-mysql-5447bfc5b-n6gz2
![](https://velog.velcdn.com/images/pinion7/post/93cb2877-6966-4bea-8651-071427f12147/image.png)
- 제거되었다는 결과가 나왔음에도 get 조회 시에 남아있다. 이상하게 느껴지겠지만 pod를 제거해도 되살아나는 게 일반적이다.
- 이는 ReplicaSet 때문이다. ReplicaSet는 원본의 유실을 고려해서 최초 생성 시 여러개를 만들어두는 개념이다. 이게 pod의 개수를 유지해주는 역할을 한다.
- 추후 ReplicaSet에 대해서도 더 다룰 예정이다.
5) logs
$ kubectl logs [파드 이름]
$ kubectl logs -f [파드 이름]
$ kubectl logs [파드 이름] -c [컨테이너 이름]
- get 조회로 확인한 Pod명으로 로그 조회를 할 수 있다.
- 하나의 Pod에 여러 개의 컨테이너가 있는 경우는 -c 옵션으로 컨테이너를 지정해서 로그를 볼 수 있다.
- 실시간 로그를 보고 싶다면 -f 옵션을 이용하면 된다.
1. Pod 로그 조회
- kubectl logs wordpress-74757b6ff-6fhcm
![](https://velog.velcdn.com/images/pinion7/post/487b39a3-5f6d-437d-a5b2-cc0008110883/image.png)
- 로그 조회 결과이다.
- 로그를 보고 바로 터미널로 빠져나온다.
2. Pod 실시간 로그 조회
- kubectl logs -f wordpress-74757b6ff-6fhcm
![](https://velog.velcdn.com/images/pinion7/post/2dda7276-509b-47e5-8da4-0051c54f428f/image.png)
- 실시간 로그 조회 결과이다.
- 터미널로 빠져나오지 않고 머무른다.
3. Pod 내 컨테이너 지정 로그 조회
- kubectl logs wordpress-74757b6ff-6fhcm -c wordpress
![](https://velog.velcdn.com/images/pinion7/post/9db36737-f533-485d-88f6-09ea2f093bb9/image.png)
- logs 파드명 + c옵션 컨테이너명 을 순차로 입력해주면 된다.
- 참고로 해당 실습 pod엔 컨테이너가 하나 뿐이긴 했지만 2개 이상이어도 문제 없이 잘 작동한다.
6) exec
$ kubectl exec {파드 이름} -- {커맨드}
$ kubectl exec -it {파드 이름} -- {커맨드}
- 컨테이너에 명령어를 전달하는 역할이다. docker에서 사용되는 exec과 흡사하다.
- 당연한 얘기지만 get pod로 파드 이름부터 체크해야 명령어 전달이 가능하다.
- 주로 컨테이너에 접속하는 용도로 사용된다.
- 쉘로 접속하여 컨테이너 상태를 확인하는 경우에 -it 옵션을 사용하면 된다.
- 여러 개의 컨테이너가 있는 경우엔 -c 옵션으로 컨테이너를 지정할 수도 있다.
1. Pod 컨테이너 파일리스트 확인
- kubectl exec wordpress-74757b6ff-6fhcm -- ls
![](https://velog.velcdn.com/images/pinion7/post/2f279cf9-aead-4e0a-a94d-2df76761c87e/image.png)
- 파드에 명령어를 전달하여, 파드가 가진 파일 목록을 체크하였다. docker exec과 정말로 별반 다를 게 없다.
2. Pod 컨테이너 접속
- kubectl exec -it wordpress-74757b6ff-6fhcm -- bash
![](https://velog.velcdn.com/images/pinion7/post/095a0887-eba6-48ee-aa67-17989f50414a/image.png)
- -it 옵션을 통해 집적 쉘로 접속해보았다.
- 접속 이후엔 ls만 입력해도 파일리스트 확인이 가능하다.
7) config
$ kubectl config {커맨드}
- kubectl은 여러 개의 쿠버네티스 클러스터를 context로 설정하고 필요에 따라 선택할 수 있다. (참고: minikube를 클러스터라고도 하고 minikube로 만드는 것도 클러스터라고 부른다.)
- 현재 어떤 컨텍스트로 설정되어 있는지 확인하고 원하는 컨텍스트를 지정할 수도 있다.
- 그밖에 다양한 커맨드가 있다.
![](https://velog.velcdn.com/images/pinion7/post/79f4f641-89df-4186-b7ba-e1323fcc6825/image.png)
- 위 캡쳐를 참고하여, kubectl config {커맨드} 형태로 사용하면 된다.
- 실습은 생략하기로 하겠다.
8) 기타 명령어
$ kubectl api-resources
$ kubectl explain pod
- kubectl api-resources: 전체 api 리소스 종류를 확인할 수 있다.
- kubectl explain pod: 특정 api 리소스 설명을 볼 수 있다.
- 이 밖에도 매우 다양한 kubectl 커맨드가 있으나, 전부 다룰 수는 없다. 필요에 따라 학습하고 적용하는 게 옳다.