쿠버네티스 해보기

Vorhandenheit ·2022년 7월 11일
0

Kubernetes

목록 보기
3/3

쿠버네티스 해보기

쿠버네티스가 어떤 건지 알아보았으니, 이제는 직접 해보면서 알아가볼려고합니다. 제 노트북은 mac m1이라는 점 이해해주세요!

쿠버네티스 설치

Minikube로 활용할 수도 있습니다. Minikube를 사용하면 가상화환경에서 쿠버네티스를 손쉽게 설치할 수 있습니다. 하지만 Standalone모드로 사용해서 1개의 로컬 노드로만 핵심 기능 구현해볼 수 있습니다. 쿠버네티스는 여러 노드 자원을 클러스터링하여 컨테이너 배치하는 건데 적합하지않다고 생각해 도커를 통해 설치했습니다.

  • 오랜만에 마주하는 Docker! => 세팅에서 Enable Kubernetes 체크하고 적용하시면 됩니다

1. Kubectl

(1) 설치

kubectl 기억나시나요? 쿠버네티스 클러스터를 제어하기위한 커맨드 라인 도구입니다.

brew install kubectl

(2) 기본 명령어

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파일을 생성해야합니다

(3) 명령어

Credential

  • kubectl config get-users : 인증 정보 조회

  • kubectl config set-credentials <이름> --옵션들 : 인증 정보 생성

  • kubectl config unset users.<이름> : 인증 정보 삭제


Cluster

  • kubectl config get-clusters : 클러스터 리스트 조회

  • kubectl config set-cluster <클러스터 이름> --server <Host:Port> : 클러스터 생성

  • kubectl config unset clusters.<클러스터 이름> : 클러스터 삭제


Node

  • kubectl get nodes : 노드는 여러 개의 파드를 갖는 단위 입니다.

Pod

  • 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 생성, 이미 존재하면 변경된 부분만 변경


Service

서비스는 외부에서 파드에 접근할 수 있게 해주는 로그밸런서 역할을 합니다.

  • kubectl expose deployment kubia --type=LoadBalancer --port=8080 --name=kubia-http : 서비스 생성

  • kubectl get svc : 서비스 조회


Label

  • 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 레이블을 갖고 있지 않은 파드 조회


Annotation

파드에 붙이는 주석

  • kubectl annotate pod <파드이름> mycompany.com/someannotation="foo bar" : 특정 파드에 어노테이션 추가

Namespace

클러스터를 논리적으로 구분하는 가상클러스터입니다.

  • kubectl get ns : 클러스터에 있는 모든 네임스페이스를 나열

  • kubectl get po --namespace <네임스페이스> : 특정 네임스페이스의 파드 조회 (-n 으로 축약 가능)

  • kubectl create namespace <네임스페이스> : 네임스페이스 생성 (yaml 파일로 만드는걸 추천)

  • kubectl apply -f kubia-manual.yaml -n <네임스페이스> : 특정 네임스페이스에 파드 생성


ReplicaSet

레플리카셋은 파드를 관리하는 역할을 합니다

  • kubectl get rs : 레플리카셋 조회

DaemonSet

노드를 기준으로 파드 생성을 관리하며 노드 셀렉터를 사용해서 특정 노드들에만 파드를 생성시킬 수 있습니다.

  • kubectl get ds : 데몬셋 조회

Job

잡은 지속적으로 실행되는 파드와 다르게 수행 후 종료되는 태스크입니다.

  • kubectl get jobs : 잡 조회

2.

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

profile
읽고 기록하고 고민하고 사용하고 개발하자!

0개의 댓글

관련 채용 정보