진취적 삶
04 쿠버네티스 첫 만남 본문
쿠버네티스 클러스터를 컨트롤하기 위해 kubectl 명령 툴을 사용한다.
사용자가 직접 HTTP 프로토콜로 API 서버와 통신할수도 있지만 쿠버네티스에서는 쉽게 마스터와 통신 할수 있게 해주는 클라이언트 툴인 kubectl 을 제공한다.
4.1 기본명령
4.1.1 컨테이너 실행
kubectl run <NAME> --image <IMAGE>
4.1.2 컨테이너 조회
kubectl get pod
STATUS 상태
- Pending : 쿠버네티스 마스터에 생성 명령은 전달되었지만 아직 실행되지 않은 상태
- ContainerCreating : 특정 노드에 스케줄링되어 컨테이너를 생성 중인 단계
- Running : Pod 가 정상적으로 실행되고 있는 상태
- Completed: 계속 실행되고 있는 프로세스가 아닌 한번 실행하고 완료되는 배치 작업 pod 에서 작업이 완료된 상태
- Error : Pod에 문제가 생겨 에러가 발생한 상태
- CrashLoopBackOff: 지속적으로 에러가 발생하는 상태
Pod IP 확인
kubectl get pod -o wide
pod 상세정보
kubectl describe pod myniginx
4.1.6 컨테이너 /호스트간 파일 복사
sudo kubectl cp <TARGET> <SOURCE>
확인
sudo kubectl exec mynginx -- ls /tmp/passwd
4.1.7 컨테이너 정보 수정
sudo kubectl edit pod <NAME>
4.1.8 컨테이너 삭제
sudo kubectl delete pod <NAME>
4.1.9 YAML 선언형 명령 정의서
#mynginx.yaml
apiVersion:v1
kind:Pod
metadata:
name:mynginx
spec:
containers:
- name:mynginx
image:nginx
사용자가 가장 기본이 되는 정보만 입력하면,쿠버네티스가 알아서 나머지 값들을 채운다.
명령형 스타일
kubectl run
선언형 스타일
kubectl apply
apply 의 경우 로컬파일 시스템 YAML 뿐만 아니라 인터넷 상에 위치한 YAML 정의서도 손쉽게 가져갈수 있다.
apply 의 경우 멱득성 보장
멱득성 : 동일한 연산을 여러번 적용하다라도 최종 결과가 달라지지 않는 성질 .
4.2 고급 명령
4.2.1 리소스별 명령
k8s 모든 것이 리소스로 표현된다. k8s 는 pod 리소스 외에 service, replicaSet, Deployment 등 다양한 리소스를 포함
4.2.2 네임스페이스
네임 스페이스는 쿠버네티스 클러스터를 논리적으로 나누는 역할을 한다.
- default : 기본 네임스페이스
- kube-system : k8s 의 핵심 컴포넌트들이 들어있는 네임스페이스 해당 네임스페이스에 네트워크 설정, DNS 서버 등 중요한 역할을 담당하는 컨테이너가 존재
- kube-public : 외부로 공개 가능한 리소스를 담고 있는 네임스페이스
- kube-node-lease: 노드가 살아있는지 마스터에 알리는 용도로 존재하는 네임 스페이스
4.2.3 자동완성 기능
echo 'source <(kubectl completion bash)' >> ~/.bashrc
source ~/.baschrc
4.2.4 즉석 리소스 생성
cat << EOF | kubectl apply -f -
apiVersion: v1
kind:Pod
metadata:
name: cat-nginx
spec:
containers:
- image:nginx
name: cat-nginx
EOF
4.2.6 모든 리소스 조회
Pod 리소스 외에 쿠버네티스에는 다양한 리소스들이 존재한다.
kubectl api-resources
쿠버네티스 리소스는 크게 네임스페이스 레벨의 리소스와 클러스터 레벨의 리소스로 구분
- 네임 스페이스 : 해당 리소스가 반드시 특정 네임스페이스에 속해야 하는 리소스 (Pod)
- 클러스터 레벨의 리소스 : 네임스페이스 와 상관없이 클러스터 레벨에 존재하는 리소스(Node)
4.2.8 클러스터 상태 확인
health check
# 쿠버네티스 API 서버 작동 여부 확인
kubectl cluster-info
# 전체 노드 상태 확인
kubectl get node
# 쿠버네티스 핵심 컴포넌트의 pod 상태확인
kubectl get pod -n kube-system
4.2.9 상태 확인
kubectl config view
- clusters: kubectl 툴이 바라보는 클러스 정보를 입력
- users: 쿠버네티스 클러스테 접속하는 사용자를 정의
- contexts :cluster 와 user를 연결해주는 것을 context
4.3 마치며
삭제
sudo kubectl delete pod --all
'개발 도서 > 핵심만 콕 쿠버네티스' 카테고리의 다른 글
06 쿠버네티스 네트워킹 (0) | 2023.11.17 |
---|---|
05 Pod (0) | 2023.11.17 |
03 쿠버네티스 설치 (0) | 2023.11.17 |
02 쿠버네티스 소개 (0) | 2023.11.17 |
01 도커 기초 (0) | 2023.11.17 |