Object 생성
kubectl run은 배포 또는 포드를 빠르고 쉽게 생성하는 데 사용되고 kubectl create는 YAML 또는 JSON 파일에서 새 리소스를 생성하는 데 사용되며 kubectl apply는 리소스의 선언하여 리소스의 현재 상태가 원하는 상태와 일치하게 생성 또는 업데이트한다.
kubectl run
kubectl run {obejct명}
설명
새 Deployment 또는 새 pod를 생성하는 데 사용된다. 리소스를 만들고 관리하는 빠르고 쉬운 방법을 제공한다.
옵션
--image or -i: 사용할 컨테이너 이미지
kubectl run my-deployment --image=nginx
--replicas or -r: 생성할 복제본 수
kubectl run my-deployment --image=nginx --replicas=3
--port or -p: 컨테이너가 노출하는 포트 번호
kubectl run my-deployment --image=nginx --port=80
--env or -e: 컨테이너 내부에 설정할 환경 변수
kubectl run my-deployment --image=my-app --env=MY_VAR=hello
--labels or -l: 배포에 첨부할 레이블
kubectl run my-deployment --image=my-app --labels=app=my-deployment
--limits or --requests: 컨테이너에 대한 리소스 제한 및 요청
kubectl run my-deployment --image=my-app --limits=cpu=1,memory=512Mi --requests=cpu=0.5,memory=256Mi
kubectl create
kubectl create {obejct명}
설명
YAML 또는 JSON 파일에서 새 Kubernetes 리소스를 생성하는 데 사용된다. 리소스의 원하는 상태를 지정할 수 있으며 kubectl run보다 리소스를 생성하는 더 유연한 방법이다.
옵션
--dry-run: 리소스를 생성할 경우 변경 사항을 미리 볼 수 있다. 출력에는 생성된 YAML 또는 JSON이 표시되지만 실제로 리소스를 생성하지는 않는다.
kubectl create deployment my-deployment --image=nginx --dry-run=client
--edit: 기본 편집기에서 YAML 파일을 열어서 리소스를 생성하기 전에 수정할 수 있다.
kubectl create configmap my-config --edit
--save-config: 생성된 개체의 구성을 로컬 시스템의 파일에 저장하므로 나중에 다시 사용할 수 있다.
kubectl create deployment my-deployment --image=nginx --save-config
--from-file: 하나 이상의 파일이 포함된 파일 또는 디렉터리에서 Kubernetes 리소스를 생성할 수 있다.
kubectl create configmap my-config --from-file=config.yaml
--namespace: 리소스가 생성되어야 하는 네임스페이스를 지정한다.
kubectl create deployment my-deployment --image=nginx --namespace=my-namespace
--labels: 생성 중인 리소스에 레이블을 추가할 수 있다.
kubectl create deployment my-deployment --image=nginx --labels=app=my-deployment
kubectl apply
kubectl apply -f {yaml 파일명}
설명
YAML 또는 JSON 파일에서 Kubernetes 리소스를 생성하거나 업데이트하는 데 사용된다. 이를 통해 리소스를 선언적으로 관리하고 리소스의 현재 상태가 YAML 또는 JSON 파일에 지정된 원하는 상태와 일치하는지 확인할 수 있다.
옵션
-f or --filename: 적용하려는 리소스를 정의하는 구성 파일의 경로를 지정한다. 이 옵션을 사용하여 단일 파일 또는 여러 파일이 포함된 디렉터리를 적용할 수 있다.
kubectl apply -f my-deployment.yaml
-k or --kustomize: Kustomize 구성 파일을 사용하여 사용자 정의된 Kubernetes 리소스 세트를 적용한다.
kubectl apply -k my-kustomization
--prune: 적용 중인 구성 파일에 정의되지 않은 리소스를 삭제할 수 있다.
kubectl apply -f my-deployment.yaml --prune
--validate: 구성 파일을 적용하기 전에 유효성을 검사한다. 오류나 경고가 있는 경우 적용 프로세스가 중단된다.
kubectl apply -f my-deployment.yaml --validate
--force: 안전하지 않은 것으로 간주되는 경우에도 리소스를 강제로 적용한다.
kubectl apply -f my-deployment.yaml --force
--record: 리소스 주석에 리소스를 적용하는 데 사용되는 명령을 기록한다.
kubectl apply -f my-deployment.yaml --record
Object 조회
명령어
kubectl get <Object 타입>
설명
get 명령은 하나 이상의 Kubernetes 리소스에 대한 정보를 검색하는 데 사용된다.
옵션
--all-namespaces or -A: 모든 네임스페이스의 리소스를 표시한다.
kubectl get pods --all-namespaces
--namespace or -n: 특정 네임스페이스의 리소스를 표시한다.
kubectl get pods --namespace=my-namespace
--output or -o: 출력 형식을 지정한다. 사용 가능한 형식에는 json, yaml, wide, name 및 custom-columns가 있다.
kubectl get pods -o json
--selector or -l: 레이블 선택기를 기반으로 리소스를 필터링할 수 있다.
kubectl get pods --selector=app=my-app
--watch or -w: 리소스를 실시간으로 표시하고 변경이 발생할 때마다 출력을 업데이트한다.
kubectl get pods --watch
--show-labels: 각 리소스와 관련된 레이블을 표시한다.
kubectl get pods --show-labels
--sort-by: 특정 필드를 기준으로 리소스를 정렬다.
kubectl get pods --sort-by=.metadata.creationTimestamp
상태
- Pending : k8s 마스터에 의해 명령은 받았지만 실행은 안되어있는 상태
- ContainerCreating : 다른 노드에 스케줄링으로 컨테이너를 생성 중인 상태
- Running : 정상정으로 실행 중인 상태
- Completed : 일회성 pod에서 실행되는 프로세스가 완료된 상태
- Error : 문제가 생겨 에러가 발생한 상태
-CrashLoopBackoff : 에러가 계속 발생하여 crash가 반복되는 상태
Object 삭제
명령어
kubectl delete {object 타입} {obeject 명}
설명
Kubernetes 리소스를 삭제한다.
옵션
--all or -A: 지정된 유형의 모든 리소스를 삭제
kubectl delete pods --all
--namespace or -n: 특정 네임스페이스의 리소스를 삭제
kubectl delete pods --namespace=my-namespace
--selector or -l: 레이블 선택기에 따라 리소스를 삭제
kubectl delete pods --selector=app=my-app
--grace-period: Kubernetes가 리소스를 강제로 종료하기 전에 대기하는 시간(초)을 설정
kubectl delete pod my-pod --grace-period=30
--force: 확인을 기다리지 않고 리소스를 강제로 삭제
kubectl delete pod my-pod --force
--cascade or -c: 종속 리소스를 삭제할지 여부를 지정
kubectl delete deployment my-deployment --cascade=false
Object 정보
명령어
kubectl describe {object 타입} {object 명}
설명
Kubernetes 리소스에 대한 자세한 정보를 제공
옵션
pod: 특정 Pod 및 IP 주소, 컨테이너 상태 및 이벤트와 같은 관련 세부 정보를 설명
kubectl describe pod my-pod
deployment: 복제본, 전략 및 이벤트와 같은 특정 deployment 및 관련 세부 정보를 설명.
kubectl describe deployment my-deployment
Service: 특정 서비스 및 IP 주소, 포트 및 엔드포인트와 같은 관련 세부 정보를 설명
kubectl describe service my-service
Node: 특정 노드 및 상태, 용량 및 조건과 같은 관련 세부 정보를 설명
kubectl describe node my-node
event: 특정 이벤트 및 유형, 이유 및 메시지와 같은 관련 세부 정보를 설명
kubectl describe event my-event
--namespace or -n: 특정 네임스페이스의 리소스를 설명
kubectl describe pod my-pod --namespace=my-namespace
Object 로그
명령어
kubectl logs {Object 명}
설명
컨테이너의 로그를 검색한다.
옵션
pod: 로그가 검색되는 컨테이너가 포함된 포드 이름을 지정
kubectl logs my-pod
container: 로그가 검색되는 컨테이너의 이름을 지정한다. 포드에 여러 컨테이너가 포함된 경우 이 옵션이 필요하다.
kubectl logs my-pod -c my-container
follow or -f: tail -f 명령과 유사하게 로그를 지속적으로 스트리밍 한다.
kubectl logs my-pod -f
previous or -p: 현재 컨테이너가 다시 시작된 경우 이전 컨테이너 인스턴스의 로그를 검색
kubectl logs my-pod -p
since: 특정 시간 이후의 로그를 검색한다. 값은 기간(1h) or 타임스탬프(2022-05-08T 12:00:00Z) 일 수 있다.
kubectl logs my-pod --since=10m
timestamps or -t: 각 로그 라인에 타임스탬프를 추가한다.
kubectl logs my-pod -t
기타
명령어
kubectl exec {Object 명} {명령어}
설명
실행 중인 컨테이너 내에서 명령을 실행한다.
옵션
pod: 명령이 실행될 컨테이너를 포함하는 포드 이름을 지정
kubectl exec my-pod
container: 명령이 실행될 컨테이너의 이름을 지정한다. 포드에 여러 컨테이너가 포함된 경우 이 옵션이 필요하다.
kubectl exec my-pod -c my-container
stdin or -i: 실행 중인 명령에 대한 입력
kubectl exec my-pod -i -- /bin/bash
tty or -t: 컨테이너와 함께 터미널 세션을 연다.
kubectl exec my-pod -t -- /bin/bash
명령어
kubectl api-resources
설명
모든 리소스 조회
'Server > kubernetes' 카테고리의 다른 글
Kubernetes 구성 및 Object (yaml 작성)[2] (0) | 2023.05.04 |
---|---|
Kubernetes 구성 및 Object (yaml 작성)[3] (0) | 2023.05.03 |
Kubernetes 구성 및 Object (yaml 작성)[1] (0) | 2023.05.03 |
Kubernetes 기초 (0) | 2023.05.02 |