kubectl api-versions -> 현재 cluster에서 사용가능한 API 버전 정보
kubectl api-resources -> 사용할 수 있는 resource 목록
create
run
apply
get
describe
delete
kubectl delete -f [ yaml 파일 ]
생성시 사용한 yaml을 이용하여 리소스 삭제
kubectl delete [ TYPE ][ NAME ]
TYPE에 해당 하는 NAME의 리소스 삭제
kubectl delete [ pod NAME ]
해당 pod 삭제
exec
kubectl exec [ pod NAME ] -it /bin/bash
특정 pod에 대하여 명령 실행
logs
kubectl logs POD [ -c CONTAINER ][ --follow ] [ flags ]
pod log 확인
config
kubectl config view
config 파일 내용 확인
Kubernetes는 Object( Resource )와 Object를 관리하는 Controller로 나누어져 있다.
Kubernetes Object
Kubernetes 시스템에서 영속성을 가지는 Object( Resource )
Object를 생성하면 Kubernetes 시스템은 원하는 상태를 보장하기 위해 지속적으로 동작
Kubernetes는 cluster의 상태를 나타내기 위해 Object를 이용
Object를 2개의 필드에 의해서 구성
status - Kubernetes 시스템과 component에 의해 제공되고 업데이트된 Object의 현재 상태 설명
spec - Object 특성으로 추구하는 상태
Controller는 status와 spec이 일치하도록 Object 관리
Kubernetes에서 가장 기본적인 배포 단위
container를 포함하는 단위
Kubernetes의 특징중 하나로 container를 개별적으로 배포하는 것이 아닌 Pod 단위로 배포
Pod는 하나 이상의 container 포함
container는 기본적으로 상태가 없는 app container 사용
상태가 없다는 것은 container 혹은 node에 문제가 있어 container를 새로 실행했을 때 다른 node에 자유롭게 옮길 수 있다는 뜻으로 container 장점
하지만 container가 실행되지 않거나 삭제된다면 현재까지 저장한 데이터는 사라진다는 단점
app의 특성에 따라 container에 문제가 발생해도 데이터를 보존해야 하는 경우 Volume 사용
Volume은 container가 재시작하더라도 데이터 유지
Pod 집합에서 실행중인 애플리케이션을 네트워크 서비스로 노출하는 추상화 방법
Service는 Pod에게 고유한 IP 주소와 Pod 집합에 대한 단일 DNS 를 부여하여 Pod가 cluster 안 어디에 있든 고정 주소를 통해 접근 가능하도록 한다.
Kubernetes cluster 하나를 여러 개의 논리적인 단위로 나눠서 사용
Pod와 Service등 namespace 별로 생성하고 관리될 수 있다.
별도로 namespace를 지정하지 않으면 항상 default namespace에 Object 생성
namespace 는 논리적인 분리 단위를 의미하고 물리적인 분리를 의미하지는 않는다
하나의 cluster를 논리적으로 dev( 개발 ) / stg( 통합 ) / prd( 운영 )로 namespace 분리