쿠버네티스가 어떤 건지 알아보았으니, 이제는 직접 해보면서 알아가볼려고합니다. 제 노트북은 mac m1이라는 점 이해해주세요!
Minikube
로 활용할 수도 있습니다. Minikube를 사용하면 가상화환경에서 쿠버네티스를 손쉽게 설치할 수 있습니다. 하지만 Standalone모드로 사용해서 1개의 로컬 노드로만 핵심 기능 구현해볼 수 있습니다. 쿠버네티스는 여러 노드 자원을 클러스터링하여 컨테이너 배치하는 건데 적합하지않다고 생각해 도커를 통해 설치했습니다.
kubectl 기억나시나요? 쿠버네티스 클러스터를 제어하기위한 커맨드 라인 도구입니다.
brew install kubectl
kubectl [command][TYPE] [NAME][flags]
command : create, get, describe, delete 등 자원에 대한 동작을 지정합니다.
TYPE : resource TYPE을 지정합니다. TYPE은 대소문자를 구분하지않으며 단수형, 복수형 또는 약어 형식을 지정할 수 있습니다.
NAME : resource NAME을 지정합니다. name은 대소문자를 구분합니다.
flags : 선택적 flags를 지정합니다.
resource를 생성하기 위해서는 kubernetes API에 정의된 api형태에 맞춰서 yaml파일을 생성해야합니다
kubectl config get-users : 인증 정보 조회
kubectl config set-credentials <이름> --옵션들 : 인증 정보 생성
kubectl config unset users.<이름> : 인증 정보 삭제
kubectl config get-clusters : 클러스터 리스트 조회
kubectl config set-cluster <클러스터 이름> --server <Host:Port> : 클러스터 생성
kubectl config unset clusters.<클러스터 이름> : 클러스터 삭제
kubectl get pods : 파드 조회 (pods = po)
kubectl get po -o wide : 좀더 자세히 조회
kubectl delete pod kubia : 파드 삭제
kubectl delete po --all : 파드 전체 삭제
kubectl describe pod <파드 이름> : 파드 상세한 설명 보기
kubectl logs <파드 이름> : 로그 보기
kubectl logs <파드 이름> -c <컨테이너 이름> : 여러 컨테이너를 포함한 파드인 경우에 컨테이너 이름 지정
kubectl logs <파드 이름> --previous : 이전 컨테이너의 로그 확인
kubectl exec <파드 이름> -- env : 파드의 환경변수 확인
kubectl create <yaml파일이름> : 새로운 Object 생성, 이미 존재하면 에러
kubectl apply <yaml 파일이름> : 새로운 Object 생성, 이미 존재하면 변경된 부분만 변경
서비스는 외부에서 파드에 접근할 수 있게 해주는 로그밸런서 역할을 합니다.
kubectl expose deployment kubia --type=LoadBalancer --port=8080 --name=kubia-http : 서비스 생성
kubectl get svc : 서비스 조회
kubectl get po --show-labels : 레이블까지 조회
kubectl label po <파드 이름> <레이블>=<설정> : 레이블 추가 (--overwrite 옵션을 추가하면 기존 레이블 수정)
kubectl get po -L creation_method=manual,env : 특정 레이블들까지 같이 조회
kubectl get po -l creation_method=manual : creation_method=manual 에 해당하는 파드 조회
kubectl get po -l 'env' : 값에 상관 없이 env 레이블을 갖고 있는 파드 조회
kubectl get po -l '!env' : 위와 반대로 env 레이블을 갖고 있지 않은 파드 조회
파드에 붙이는 주석
클러스터를 논리적으로 구분하는 가상클러스터입니다.
kubectl get ns : 클러스터에 있는 모든 네임스페이스를 나열
kubectl get po --namespace <네임스페이스> : 특정 네임스페이스의 파드 조회 (-n 으로 축약 가능)
kubectl create namespace <네임스페이스> : 네임스페이스 생성 (yaml 파일로 만드는걸 추천)
kubectl apply -f kubia-manual.yaml -n <네임스페이스> : 특정 네임스페이스에 파드 생성
레플리카셋은 파드를 관리하는 역할을 합니다
노드를 기준으로 파드 생성을 관리하며 노드 셀렉터를 사용해서 특정 노드들에만 파드를 생성시킬 수 있습니다.
잡은 지속적으로 실행되는 파드와 다르게 수행 후 종료되는 태스크입니다.
Pods 를 만들었습니다!
이렇게 함으로 k8s에 원하는 image를 올릴 수 있습니다.
컨테이너에 접속하기 위해서는 docker 컨테이너 접속과 마찬가지로 exec -it 명령어를 사용합니다.
간단하게, 컨테이너 POD, NODE를 만들고 실행해보았습니다. 하고나니 더 복잡하게 다중 컨테이너를 사용해서 해봐야겠다는 생각이 드네요! 다음에는 외부에서 접근할 수 있게 좀 더 복잡하게 해보겠습니다.
https://zuhern.github.io/develop/2021/2021-06-12-docker-study_16/
https://paris-in-the-rain.tistory.com/111
https://zuhern.github.io/develop/2021/2021-06-12-docker-study_16/
https://judo0179.tistory.com/66
https://blog.naver.com/PostView.naver?blogId=ghdalswl77&logNo=222388293445&parentCategoryNo=&categoryNo=90&viewDate=&isShowPopularPosts=true&from=search
https://bcp0109.tistory.com/354