Kubernetes(쿠버네티스) 간단한 설명

2022. 9. 27. 20:38교육/클라우드 인프라

쿠버네티스의 특징

 

모든 리소스는 오브젝트 형태로 관리됩니다. 

  • Pod(파드) : 컨테이너의 집합을 말하며 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위를 말합니다.
  • Controller(컨트롤러) : 컨테이너의 집합을 관리합니다. 예) Replic Set(레플리카셋)
  • Service Account(서비스 어카운트) : 체계적으로 권한을 관리하기 위한 오브젝트
  • Workload(워크로드) : 쿠버네티스에서 구동되는 애플리케이션을 말합니다
  • namespace(네임스페이스) : 쿠버네티스 오브젝트를 묶는 하나의 가상공간 또는 그룹을 말합니다.
  • deployment : 쿠버네티스에서 가장 널리 사용되는 오브젝트입니다.

 

Node(노드) : 쿠버네티스에서 워커 머신을 말하며 클러스터에 따라 가상 또는 물리머신일 수 있습니다.

  • 마스터(Master) 노드 : 쿠버네티스가 제대로 동작할 수 있게 클러스터를 관리합니다.
  • 워커(Worker) 노드 : 실제 애플리케이션이 구동되는 컨테이너가 생성됩니다.

 

 

Kubernetes 접근방법

 

우리는 쿠버네티스에 접근하기 위해 CLI 기반의 "kubectl 명령어"를 사용합니다. Docker를 설치해 사용하고 있다면 쿠버네티스 클러스터를 바로 사용해볼 수 있기 때문에 kubectl 명령어를 이용하여 쿠버네티스 리소스에 접근할 수 있습니다.

정상적으로 작동하고 있음을 확인할 수 있습니다.

 

 

Kubernetes(쿠버네티스) 설정
  • Clusters : 쿠버네티스 API 서버 정보(IP, 도메인)을 말하며 여러 클러스터를 명시할 수 있습니다.
  • Users : 쿠버네티스 API에 접속하기 위한 사용자 목록을 말하며 인증 방식에 따라 형태가 다를 수 있습니다.
  • Context : Clusters 항목과 Users 항목 중에 하나씩 조합해서 만들어집니다. 여러 개의 Context가 나올 수 있으며 Context 기반으로 "어떤 서버(Cluster)에 어떤 사용자(User)가 쿠버네티스를 사용한다" 의미로 해석하면 됩니다.

 

 

Kubeconfig 설정하는 방법

 

Kubeconfig 파일을 직접 수정해서 Cluster, User, Context 항목을 입력해도 되지만 kubectl 명령어를 이용하여 설정할 수 있습니다. CMD 명령프롬프트로 실행하였습니다.

 

  • Context 조회하기

kubectl config get-contexts

 

 

  • 현재 Context 확인하기

kubectl config current-context

 

 

  • 새로운 Context 만들기

kubectl config set-context new-context --cluster=(클러스터명) --user=(사용자명)

 

 

  • Context 삭제하기

kubectl config delete-context (Context 명)

 

 

  • Context 바꾸기

kubectl config use-context (바꿀 context 명)

 

 

 

Kubectl 자주 쓰는 명령어 
들어가기 전에 
  • nginx-pod.yaml 파일

 

# Nginx 컨테이너로 구성된 파드를 직접 생성하는 yaml 파일 예시
apiVersion: v1
kind: Pod
metadata:
  name: my-nginx-pod
spec:
  containers:
  - name: my-nginx-container
    image: nginx:latest
    ports:
    - containerPort: 80
      protocol: TCP

 

  • nginx-deployment.yaml 파일

 

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

 

명령어 정리
  • 버전 정보

 

kubectl version --short

 

 

 

  • 쿠버네티스에서 사용가능한 오브젝트 리스트

 

kubectl api-resources

 

 

 

  • yaml 파일을 이용해 리소스 생성

 

kubectl apply -f (yaml 파일명)

파일을 적용하려면 해당 경로로 이동해야합니다.(cd 명령 사용)

 

 

 

  • 현재 쿠버네티스에 존재하는 특정 오브젝트 리스트

 

kubectl get (오브젝트 타입)

※ 추가옵션

-o wide : 옵션을 추가하면 더 많은 정보를 얻을 수 있습니다.

--show-lables : 옵션을 추가하면 라벨을 함께 출력할 수 있습니다.

 

※ 오브젝트 타입 : pod, node, deployment, service 등

 

 

 

  • 해당 리소스의 자세한 정보 출력

 

kubectl describe pods (오브젝트타입) (리소스명)

 

 

 

  • 해당 pod에 직접 접근

 

kubectl exec -it my-nginx-pod bash

※ 추가옵션

--it : 옵션을 사용해 배시 셸을 유지한다. 

exit : 잡고있는 명령을 해제한다.

 

kubectl exec -it (pod명) -c (컨테이너명) bash

-c : pod의 어떤 컨테이너에 대해 명령어를 수행할 것인지 명시합니다.

 

 

 

  • pod 로그확인

 

kubectl logs (pod명)

 

 

 

  • 오브젝트 삭제

 

kubectl delete -f (파일명.확장자)

 

kubectl delete (오브젝트 타입) (리소스명)

 

 

 

  • 모든 리소스를 삭제

 

kubectl delete deployment, pod, rs --all

 

 

 

  • 리소스의 속성을 변경할 수 있도록 텍스트 편집기를 실행

 

kubectl edit (오브젝트 타입) (리소스명)