Daramu
Home
  • 분류 전체보기 (115)
    • 네트워크 (15)
    • 클라우드 (24)
      • AWS (5)
      • Docker (2)
      • Kubernetes (5)
      • Istio (1)
      • Terraform (1)
      • fluent bit (4)
      • NCP (6)
    • 잡소리 (0)
    • 개발 (42)
      • 스프링 시큐리티(Security) (2)
      • 스프링 WebFlux (5)
      • Spring boot (11)
      • KeyCloak (9)
      • Frontend (6)
      • golang (4)
      • 기타 (0)
      • Prisma (3)
      • Next.js (2)
    • DevOps (17)
      • Kafka (4)
      • ArgoCD (5)
      • Jenkins (3)
      • Gitlab (5)
    • Devloper (4)
      • 자바JAVA (4)
    • Monitoring (11)
      • Prometheus+Grafana (2)
      • LGTM + Otel (3)
      • VictoriaMetrics Stack (6)
Home
  • 분류 전체보기 (115)
    • 네트워크 (15)
    • 클라우드 (24)
      • AWS (5)
      • Docker (2)
      • Kubernetes (5)
      • Istio (1)
      • Terraform (1)
      • fluent bit (4)
      • NCP (6)
    • 잡소리 (0)
    • 개발 (42)
      • 스프링 시큐리티(Security) (2)
      • 스프링 WebFlux (5)
      • Spring boot (11)
      • KeyCloak (9)
      • Frontend (6)
      • golang (4)
      • 기타 (0)
      • Prisma (3)
      • Next.js (2)
    • DevOps (17)
      • Kafka (4)
      • ArgoCD (5)
      • Jenkins (3)
      • Gitlab (5)
    • Devloper (4)
      • 자바JAVA (4)
    • Monitoring (11)
      • Prometheus+Grafana (2)
      • LGTM + Otel (3)
      • VictoriaMetrics Stack (6)
블로그 내 검색

Daramu

다람어의 블로그

  • 클라우드/Kubernetes

    쿠버네티스(Kubernetes) 의 정체 - REST API

    2026. 9. 18.

    by. Daramu

    쿠버네티스는 그냥 REST API이다.

    우리는 쿠버네티스를 사용할때 kbuectl 을 사용한다.

     

    그럼 kbuectl은 무엇인가?

    바로 "쿠버네티스 API를 호출하는 도구"이다.

     

    여기서 쿠버네티스가 REST API의 모음이라고 해보자.

    그럼 이런 생각도 할 수 있다.

     

    "REST API면 kubectl 없이 그냥 호출할 수 있겠네?"

    정답을 먼저 말하면 맞다.

     

    API를 호출할려면 먼주 주소를 알아야한다.

    kubectl cluster-info

    위 명령어를 입력하면 "Kubernetes control plane is running at https://...." 같은 주소가 반환된다.

    이 주소는 쿠버네티스의 여러 컴포넌트(컨트롤 플레인) 중에서도, 

    실제로 API 요청을 받아 처리하는 kube-apiserver의 주소다.

    그리고 이 apiserver가 동작중이라는 의미이다.

     

    쿠버네티스도 바보는 아니기에 인증과 인가를 위한 TOKEN이 필요하다.

    모든 네임스페이스에는 default라는 serviceaccount가 기본값으로 존재하니, 이 SA를 통해 토큰을 생성할 것이다.

    kubectl create token default -n default
    #토큰 환경변수 저장
    export TOKEN="위의 응답"
    #윈도우 powershell이면 이렇게.
    $env:TOKEN = "위의응답"

     

    그럼 응답으로 복잡한 값이 쭈욱-나올건데, 이게 토큰 값이다.

    그 토큰값을 환경 변수로 지정하면 된다.

     

    그럼 이제 kubectl cluster-info를 통해 알아낸 API서버와 TOKEN으로 직접 API서버의 문을 두들겨보자.

    curl -k -H "Authorization: Bearer $TOKEN" https://<1번에서 확인한 API서버>/version
    #윈도우 powershell이면 아래처럼
    curl.exe -k -H "Authorization: Bearer $TOKEN" "https://<1번에서 확인한 API서버>/version

     

    그럼 이렇게 응답이 돌아온다!

    위 정보는 "kubectl version" 을 통해서도 확인 가능하다.

    이것으로 알 수 있는건, kubectl은 단순 쿠버네티스 API를 찔러 결과를 파싱하여 이쁘게(?)보여주는 용도라는 것이다.

     

    물론 API로 pod정보 조회까지 가능하다.

    curl -k -H "Authorization: Bearer $TOKEN" https://<1번에서 확인한 API서버>/api/v1/namespaces/default/pods
    #윈도우 powershell이면 아래처럼
    curl.exe -k -H "Authorization: Bearer $TOKEN" "https://<1번에서 확인한 API서버>/api/v1/namespaces/default/pods

     

    하지만 위 명령어를 입력시 다음과 같은 응답이 온다.

    에러는 403으로, 인증은 되었지만 인가(권한)이 없기 때문에 발생한 것이다.

    우리는 TOKEN을 기본 유저인 default로 생성했는데, 이 유저의 경우 pod를 볼 수 있는 권한이 없기 때문이다.

    이를 피할려면 ServiceAcoount생성과 Role, RoleBinding같은 RBAC관련 작업이 필요하다.

    저작자표시 (새창열림)

    '클라우드 > Kubernetes' 카테고리의 다른 글

    쿠버네티스 kubeconfig 지정하기  (0) 2026.07.14
    [쿠버네티스 Kubernetes 보안] - Polaris  (0) 2026.06.25
    Cert Manager 란 무엇인가?  (0) 2026.05.28
    error: error when retrieving current configuration of:Resource: "apps/v1, Resource=deployments", GroupVersionKind: "apps/v1, Kind=Deployment"Name: "", Namespace: "default"from server for: "web-pod.yaml": resource name may not be empty 에러 해결  (0) 2024.02.18

    댓글

    관련글

    • 쿠버네티스 kubeconfig 지정하기 2026.07.14
    • [쿠버네티스 Kubernetes 보안] - Polaris 2026.06.25
    • Cert Manager 란 무엇인가? 2026.05.28
    • error: error when retrieving current configuration of:Resource: "apps/v1, Resource=deployments", GroupVersionKind: "apps/v1, Kind=Deployment"Name: "", Namespace: "default"from server for: "web-pod.yaml": resource name may not be empty 에러 해결 2024.02.18
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Designed by Nana
블로그 이미지
Daramu

티스토리툴바