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
'가상화 > Kubernetes' 카테고리의 다른 글
[Kubernetes] ReplicaSet (0) | 2023.05.16 |
---|---|
[Kubernetes] Cluster 전체구조 (0) | 2023.05.12 |
[Kubernetes] 쿠버네티스 cluster 구성/ reset (0) | 2023.05.12 |
댓글