본문 바로가기
가상화/Kubernetes

[Kubernetes] kubectl

by JINJINC 2023. 5. 12.
728x90
반응형

kubectl   [command]   [ type]    [name]     [flages]


  • command : 자원에 실행하려는 동작. create, get, delete등을 사용할 수 있습니다.
  • Type : 자원 타입입니다. pod, service, ingress등을 사용할 수 있습니다.
  • NAME : 자원이름입니다.
  • FLAG : 부가적으로 설정할 옵션을 입력합니다.

kubectl 은 기본적으로  $HOME/.kube/config 파일에서 클러스터, 인증, 컨텍스트 정보를 읽어들입니다. 이러한 클러스터 구성 정보를 kubeconfig라고 칭합니다.

 

클러스터에서 사용할 수 있는 자원들은 kubectl api-resources 명령으로 확인할 수 있습니다.

 

SHORTNAMES 항목(자원의 단축 이름), APIGROUP 항목(함께 노출되는 자원 집합), NAMESPACED 항목(특정 네임스페이스에 속하는 자원인지), KIND 항목(객체 스키마) 등의 정보를 제공합니다. 자원을 사용하기 전 반드시 확인하는 것이 좋스비다. 

 

커맨드 내용
create 리소스 생성
edit 리소스 편집
delete 리소스를 삭제
get 리소스의 상대를 출력
set 리소스의 값을 설정
apply 리소스의 변경 사항을 반영
describe 상세정보를 확인
diff 바람직한 상태와 현재상태의 차이를 확인
expose 여러피드에 부하를 분산하는 새로운서비스 오브젝트를 생성
scale 래플리카 수를 변경
autoscale 자동 스케일링을 적용
rollout 룰아웃을 수행
exec 컨테이너에서 명령을 실행
run 컨테이너에서 명령을 한번 실행
attach 컨테이너에 접속
cp 컨테이너에 파일을 복사
logs 컨테이너의 로그를 화면에 출력
cluster-info 클러스터의 상세정보를 화면에 출력
top CPU, 메모리, 스토리지 등 시스템 자원을 확인

--h(--help)
-v[log level]: 명령을 실행하는 과정의 로그를 출력하거나 로그 레벨을 설정합니다. 디버깅할 때 유용함

 

echoserver => 에코 서버는 메아리 서버, 즉 클라이언트가 보낸 메세지를 그대로 되돌려주는 서버를 말한다.

 

# kubectl run echoserver --image="k8s.gcr.io/echoserver:1.10" --port=8080

pod/echoserver create

 

# kubectl expose pod echoserver --type=NodePort

service/echoserver exposed

 

# kubectl get pods

NAME         READY         STATUS            RESTARTS          AGE

echoserver   1/1               Running                0                        117s

- NAME : 파드이름을 표시합니다. 여기에서는 echoserver라는 이름의 파드가 생성된 것을 확인할 수 있습니다.
- READY : 숫자/숫자 형태로 파드의 준비상태를 표시합니다. 0/1이면 현재 파드는 생성되었으나 사용할 준비가 되지 않았다는 뜻입니다. 1/1이면 파드가 생성되었고 사용할 준비가 끝났다는 뜻입니다.
- STATUS :  파드의 현재 상태를 나타냅니다. Running은 파드가 실행되었다는 뜻입니다. 새로운 파드를 생성하는 중에는 Terminating(컨테이너 접속 중)이나 ContainerCreating( 컨테이너 생성중) 등으로 표시됩니다.
- RESTARTS : 해당 파드가 몇번 재시작했는지 표시합니다. 여기서는 아직 재시작하지 않았으므로 0입니다.
- AGE : 파드를 생성한 후 얼마나 시간이 지났는지 나타냅니다. 

 

# kubectl get services

NAME                  TYPE          CLUSTER-IP            EXTERNAL-IP             PORT(S)              AGE

echoserver      NodePort         10.107.89.1                                              8080:xxxxxx/TCP     2m36s

kubernetes      ClusterIP           10.96.0.1                                                   443/TCP                 98m

- NAME : 서비스의 이름을 표시합니다. 여기에서는 ECHOSERVER라는 이름의 서비스가 있는 것을 확인할 수 있습니다.
- TYPE : 서비스 타입을 뜻합니다. 
- CLUSTER-IP : 현재 클러스터 안에서 사용되는 IP입니다.
- EXTERNAL-IP : 클러스터 외부에서 접속할 때 사용하는 IP로 현재는 별도로 설정하지 않았으므로 NONE입니다.
- PORT(S) : 해당 서비스에 접속하는 포트를 표시함
- AGE : 자원을 생성한 후 얼마나 시간이 지났는지 나타냅니다. 

 

# watch kubectl get all -o wide

NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES

pod/echoserver 1/1 Running 0 17m 10.244.1.2 node01

 

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR

service/echoserver NodePort 10.104.49.140 8080:30926/TCP 15m run=echoserver

 

# kubectl describe pod/echoserver

Containers:

       echoserver:

            Container ID: containerd://6e40e59d5904-생략

            Image: k8s.gcr.io/echoserver:1.10

            Image ID: k8s.gcr.io/echoserver@sha256:cb-생략

            Port: 8080/TCP

# kubectl logs -f echoserver

 

# curl http://localhost:30652

또는

[ Host’PC ] 접속시 결과는 같음

 

http://192.168.1.104:30652

http://192.168.1.104:30652

http://192.168.1.104:30652

 

※ 삭제시

# kubectl get all -o wide

# kubectl delete pod/echoserver

# kubectl delete service/echoserver

728x90
반응형

'가상화 > Kubernetes' 카테고리의 다른 글

[Kubernetes] ReplicaSet  (0) 2023.05.16
[Kubernetes] Cluster 전체구조  (0) 2023.05.12
[Kubernetes] 쿠버네티스 cluster 구성/ reset  (0) 2023.05.12

댓글