Kubernetes 클러스터 정보

KubernetesBeginner
지금 연습하기

소개

Kubernetes 는 컨테이너화된 애플리케이션의 배포, 스케일링 및 관리를 자동화하는 컨테이너 오케스트레이션 플랫폼입니다. 이 랩에서는 cluster-info 명령을 사용하여 Kubernetes 클러스터에 대한 통찰력을 얻는 방법을 살펴봅니다. 랩을 완료하면 Kubernetes 클러스터를 시작하고, 필수 클러스터 정보를 검색하고, 내부 구성 요소를 검사하고, API 서버 연결을 테스트하는 방법을 이해하게 됩니다.

이 랩은 초보자를 위해 설계되었으며, Kubernetes 에 대한 사전 경험은 필요하지 않습니다.

Kubernetes 클러스터 시작

Kubernetes 클러스터는 실행 환경이 필요합니다. 이 랩에서는 Kubernetes 클러스터를 로컬에서 실행할 수 있는 도구인 Minikube를 사용합니다. 다음 단계를 따르세요:

  1. 터미널을 열고 /home/labex/project 디렉토리에 있는지 확인합니다:

    cd ~/project
    
  2. Minikube 클러스터를 시작합니다:

    minikube start
    
    • Minikube 는 단일 노드 Kubernetes 클러스터를 생성합니다.
    • 이 프로세스는 시스템에 따라 몇 분 정도 걸릴 수 있습니다. 초기화 과정에서 다양한 Kubernetes 구성 요소가 설정됩니다.

    Minikube cluster initialization

기본 클러스터 정보 검색

Minikube 가 실행되면 kubectl cluster-info 명령을 사용하여 클러스터에 대한 정보를 확인합니다. 다음 명령을 실행합니다:

kubectl cluster-info
  • API 서버 URL 은 클러스터와 상호 작용하기 위한 주요 엔드포인트입니다.
  • CoreDNS는 클러스터 내에서 서비스 검색 및 DNS 확인을 처리합니다.

예시 출력:

Kubernetes control plane is running at https://192.168.49.2:8443
CoreDNS is running at https://192.168.49.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
  • https://192.168.49.2:8443은 Kubernetes API 서버의 URL 입니다. 모든 kubectl 명령이 이 주소로 전송됩니다.
  • CoreDNS 서비스는 Kubernetes 가 서비스 및 파드에 대한 도메인 이름을 확인하는 데 도움을 줍니다.

클러스터 구성 요소 상세 검토

클러스터와 내부 구성 요소에 대한 더 깊은 이해를 얻으려면 다음을 사용하십시오:

kubectl cluster-info dump

이 명령은 주요 구성 요소에 대한 자세한 정보를 제공합니다:

  • etcd: 모든 클러스터 데이터를 위한 키 - 값 저장소입니다.
  • kube-apiserver: Kubernetes API 요청의 진입점입니다.
  • kube-scheduler: 사용 가능한 노드에 워크로드 (파드) 를 할당합니다.
  • kube-controller-manager: 클러스터 상태를 유지 관리합니다 (예: 원하는 수의 파드 복제본이 실행 중인지 확인).

예시 출력:

이 명령은 Kubernetes 시스템 구성 요소의 구성 및 상태를 자세히 설명하는 상세한 출력을 생성합니다. 출력을 파일로 리디렉션하여 더 쉽게 분석할 수 있습니다:

kubectl cluster-info dump > cluster-details.txt

이렇게 하면 출력이 현재 디렉토리의 cluster-details.txt에 저장됩니다.

클러스터 노드 확인

노드는 Kubernetes 에서 워크로드를 실행하는 머신입니다. 클러스터의 노드를 나열하려면 다음을 실행하십시오:

kubectl get nodes
  • 노드 이름 (예: minikube) 은 머신을 식별합니다.
  • 상태 (Ready) 는 노드가 정상이며 워크로드를 실행할 수 있음을 나타냅니다.
  • Minikube 클러스터에서 노드는 제어 평면과 작업자 노드 역할을 모두 수행합니다.

예시 출력:

NAME       STATUS   ROLES           AGE   VERSION
minikube   Ready    control-plane   5m    v1.20.0

API 서버 접근 테스트

API 서버는 Kubernetes 제어 평면의 중요한 구성 요소입니다. 다음을 실행하여 접근성을 테스트할 수 있습니다:

curl $(kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}') --insecure
  • 이 명령은 API 서버 URL 을 검색하고 간단한 요청을 수행합니다.
  • --insecure 플래그는 SSL 인증서 검증을 우회합니다. 이는 이 로컬 설정에서 허용됩니다.

예시 출력:

API 서버에 접근할 수 있는 경우 응답은 다음과 같아야 합니다:

{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {},
  "status": "Failure",
  "message": "forbidden: User \"system:anonymous\" cannot get path \"/\"",
  "reason": "Forbidden",
  "details": {},
  "code": 403
}

이 응답은 API 서버가 실행 중임을 확인하지만, 인증이 누락되어 접근이 거부되었음을 나타냅니다. 이는 예상되는 동작입니다.

요약

이 랩에서는 다음을 배웠습니다:

  • Minikube 를 사용하여 Kubernetes 클러스터를 시작합니다.
  • kubectl cluster-info를 사용하여 클러스터 세부 정보를 검색합니다.
  • kubectl cluster-info dump를 사용하여 클러스터 구성 요소를 자세히 검사합니다.
  • kubectl get nodes를 사용하여 클러스터의 노드를 나열합니다.
  • curl 명령을 사용하여 API 서버 연결을 테스트합니다.

이 실습 경험은 Kubernetes 클러스터를 이해하고 탐색하기 위한 기반을 제공했습니다. 이러한 명령어는 Kubernetes 환경을 디버깅하고 관리하는 데 필수적입니다.

다음 단계:

  • Kubernetes 에서 Pod 및 워크로드를 탐색합니다.
  • 애플리케이션을 노출하기 위해 서비스를 생성하는 방법을 배웁니다.
  • 클러스터에서 워크로드 크기 조정을 실험합니다.

계속 연습하고, 즐거운 학습 되세요!