[k8s] 자주쓰는 쿠버네티스 커맨드 모음
in Programming on DevOps
자주쓰는 쿠버네티스 커맨드 모음
kubectl sc
접근 권한이 있는 Service Cluster를 검색하고 선택할 수 있음 여기서 잘 선택을 해둬야 그 클러스터의 정보를 보거나 뭔가 명령을 내릴 수 있음. 명령 타겟을 설정하는 작업이라고 보면 된다.
kubectl cluster-info
클러스터 정보 보기
kubectl get pods [-w]
kubectl get all
kubectl get pods -o wide --all-namespaces
kubectl get namespace
kubectl get pods --namespace=<namespace>
- 현재 돌아가고 있는 파드(컨테이너)들을 볼 수 있음
- w 옵션으로 실시간 상태를 볼 수 있음
- pods 대신 services, ingress, event, nodes 등 넣으면 해당 instance 목록 나옴
kubectl logs <컨테이너 ID >
kubectl logs -n <namespace명> -c <container명> <pod명>
kubectl logs -f <pod명>
- 해당 파드 로그볼수있음
-f
옵션주면 tailing
kubectl port forward <컨테이너 ID> 8000:8000
Local port와 컨테이너의 서비스 포트를 연결한다.
kubectl exec -it <container ID> — bash
kubectl exec -it <container ID> /bin/bash
컨테이너가 있는 머신에서 뭔가를 수행하는 것. 위 예제에서는 bash shell에 접속하는 것임.
kubectl replace —force -f <yaml파일명>
- 강제로 다시 시작시키기. 디플로이뿐만 아니라 다른 것도 다 적용되는 듯.
- 주의!!! 이것은 graceful 하지 않고 서비스를 중단 시킬 수 있음.
kubectl rollout status deployment.v1.apps/<앱이름>
kubectl rollout restart deployment.v1.apps/<앱이름>
- 이 방법은 무중단으로 새 이미지를 배포함.
- 동일한 수의 container를 새로 만들고 기존 container는 차례로 하나씩 죽이면서 새걸로 교체됨
kubectl delete deploy <컨테이너 namespace>
배포했던 앱 삭제
kubectl delete -f <yaml파일명>
이 명령어로 삭제하면 배포했던 yaml파일 정보를 그대로 삭제함
kubectl describe nodes my-node
kubectl describe pods my-pod
kubectl describe pods -n <namespace명> <pod명>
상세 출력을 위한 Describe 커맨드
kubectl apply -f <yaml 파일>
yaml 파일 기반으로 pod 를 k8s 에 배포함
kubectl cheet sheet
https://kubernetes.io/ko/docs/reference/kubectl/cheatsheet/
kubectl create clusterrolebinding kubernetes-dashboard --clusterrole=cluster-admin --serviceaccount=kube-system:kubernetes-dashboard
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
k8s dashboard 를 다시 띄움
kubectl rolling-update
롤링업데이트
kubectl scale deployment.apps/logan-batch --replicas=5
scale up
kubectl -n ingress-nginx edit configmap ingress-nginx
ingress configmap 수정
kubectl create namespace {namespace name}
namespace 생성
kubectl get pods -n mynamespace --no-headers=true | awk '/pattern1|pattern2/{print $1}'| xargs kubectl delete -n mynamespace pod
특정 패턴으로 pod 삭제하기
ex)
kubectl get pods --no-headers=true | awk '/example-job/{print $1}'| xargs kubectl delete pod
kubectl create job <your-new-job-name> —from=cronjob/<name-of-deployed-cron-job> -n <target namespace>
cronjob 기반으로 job 생성해서 1회실행하기
kubectl describe configmaps {configmap name}
배포된 configmap 확인하기