BESPIN Tech Blog
  • Home
  • Tech
    • CSP

      AWS

      GCP

      NCP

      Cloud

      Migration

      LZ, Control Tower

      Backup

      Monitoring

      Container

      Infra

      OS

      Middleware

      Data

      RDB

      Big Data Platform

      Application

      CI/CD

      BESPICK 구독하기 ㅣ 1668-1280

  • Trend
  • IT
최신 리포트 다운로드 지금 바로 문의하기
BESPIN Tech Blog
  • Home
  • Tech
    • CSP

      AWS

      GCP

      NCP

      Cloud

      Migration

      LZ, Control Tower

      Backup

      Monitoring

      Container

      Infra

      OS

      Middleware

      Data

      RDB

      Big Data Platform

      Application

      CI/CD

      BESPICK 구독하기 ㅣ 1668-1280

  • Trend
  • IT
최신 리포트 다운로드 지금 바로 문의하기
BESPIN Tech Blog
BESPIN Tech Blog
  • Tech
    • CSP
      • AWS
      • GCP
      • NCP
    • Cloud
      • Migration
      • LZ, Control Tower
      • Backup
      • Monitoring
      • Container
    • Infra
      • OS
      • Middleware
    • Data
      • RDB
      • Big Data Platform
    • Application
      • CI/CD
  • Trend
  • IT
  • Contact US
TECHContainerCloud

DevOps K8S(3) – 이 Pod 이 그 Pod? Namespace, Label, Selector

by 형래 김 2024년 03월 08일
2024년 03월 08일
5

안녕하세요,

오늘은 베스핀글로벌 DevOps실 구연수 님이 작성해 주신 ‘이 Pod 이 그 Pod? Namespace, Label, Selector’에 대해 알아보겠습니다. 🙂

Namespace

Kubernetes에서 생성해 온 Object들 – Pod, Deployment, Service들은 클러스터 내 Namespace 안에 구성된다.

Kube-System
  • Kubernetes에 의해 자동 생성
  • Kubernetes는 서비스의 네트워크 문제, DNS 서비스 등 자체 목적을 위해 Kube-System 네임 스페이스를 따로 만들어 Pod, Service 집합을 구성
Kube-public
  • Kubernetes에 의해 자동 생성
  • 모든 유저에 의해 만들어진 리소스들이 위치하는 곳
Namespace
  • 소규모 프로젝트라면 default namespace로 충분하지만, 엔터프라이즈나 프로덕션 레벨에서 클러스터를 구성한다면 namespace를 고려해야 한다.
  • 개별 Namespace를 구성하면?
    • 각자의 정책을 가질 수 있다.
    • 각자의 리소스 할당량을 제한할 수 있다.
  • Namespace 별 접근 방법
    • 같은 namespace 안에 있는 리소스들은 서로를 이름만으로 접근할 수 있다.
    • mysql.connect("db-service")
    • my-dev라는 이름의 namespace 안에 있는 리소스를 부른다면 추가 정보를 더 입력한다.
    • mysql.connect("db-service.my-dev.svc.cluster.local")
      • 주소 상세 설명
        • cluster.local : Kubernetes 클러스터의 default domain
        • svc : sub domain
        • my-dev : 지정 namespace
        • db-service : 서비스 name
Namespace를 지정한 Pod 생성
  • 명령어로 생성

kubectl run nginx --image nginx --namespace=네임스페이스이름

  • pod와 같이 yaml에 지정 Pod를 생성할 때 특정 namespace를 지정
# Pod with yaml
apiVersion:
kind:
metadata:
    namespace: 네임스페이스이름 # 이곳에 지정

spec:
  • namespace 단독 생성
    • 명령어
kubectl create namespace 네임스페이스 이름
  • yaml
apiVersion: v1
kind: Namespace
metadata:
    namespace: 네임스페이스이름

spec:
default namespace를 바꾸고 싶다면?
kubectl config set-context $(kubectl config current-context) —namespace=디폴트로지정하고싶은namespace
namespace 상관없이 전체 pod 확인
kubectl get pods —all-namespaces
namespace에 자원할당 방법 – ResourceQuota
apiVersion: v1
kind: ResourceQuota
metadata:
name : desired-quota
    namespace: 지정을원하는namespace

spec:
hard:
pods: "10"
requests.cpu: "4"
requests.memory: 5Gi
limits.cpu: "10"
limits.memory: 10Gi

Label & Selector

분류가 어떤 것이든 그 분류대로 객체를 그룹화할 수 있어야 하며, 목적에 따라 필터링할 수 있어야 한다.

Kubernetes에는 수 백 수 천 개까지 객체가 존재할 수 있다 (Pod, Service, Replica Set, Deployment etc…) 이 객체들을 필터링하고 카테고리 별로 객체를 조회할 필요가 있다.

Label
  • 각 아이템마다 붙여진 속성
  • 한 객체당 원하는 만큼의 label을 붙일 수 있다.
  • Pod 설정 yaml 파일
apiVersion: v1
kind: Pod
metadata:
    name: simple-webapp
    labels:
        키1: 밸류1
        키2: 밸류2      # label은 원하는 만큼 작성 가능

spec:
    containers:
    - name: 컨테이너이름지정
      image: 이미지
      ports:
        - containerPort: 8080
Selector
  • label로 붙여진 속성들을 필터링
  • 특정 label이 있는 pod 조회
kubectl get pods --selector 키=밸류

Kubernetes는 추가로 다른 객체끼리 연결할 때 label과 selector를 활용하기도 한다.

  • ReplicaSet에서 Label과 Selector를 활용하는 사례
apiVersion: apps/v1
kind: ReplicaSet
metadata:
    name:
    labels:
        app: replicaSet_자체의_라벨
        type:
spec:
    template:
        metadata:
            name: Pod이름
            labels:
                app: Pod자체의label
                type:
        spec:
            containers:
            - name:
            image:
    replicas: 원하는개수
    seletor:
        matchLabels:
            라벨키: 대상이_되는_pod라벨(replicaSet이_구분)
  • replicaSet 객체 자체의 label
  • 생성될 pod의 label
  • 복제 대상인 pod를 확인하는 label 총 3가지가 활용되었으므로 혼동하지 않게 조심해야 한다.
Annotations
  • 정보 전달 목적의 다른 세부 정보를 담는 속성
    • (ex) 빌드 정보, 버전, 이름, 연락처, 이메일 등등

감사합니다.

Written by 구 연수 / Yeonsoo koo

Software Engineer

관련

kubernetesServicePodNamespaceDeploymentLabelSelectorResourceQuotaReplicaSetAnnotations

HOT Trend

Recent Posts

  • 딜로이트도, 맥킨지도, 베스핀글로벌도: AI 에이전트로 일 바꾸는 시대

    2025년 07월 04일 클라우드베스핀글로벌clouddata데이터AI인공지능HelpNow AIbespinglobalAI에이전트helpnow업무자동화딜로이트
  • ⚔️데이터센터에서 시작된 전쟁? 요즘 뜨는 AIDC 개념부터 트렌드까지!

    2025년 06월 27일 클라우드clouddata데이터AI데이터센터클라우드 데이터센터bespinglobalAIDCAI 인프라베스핀글로벌
  • 구글부터 엔비디아까지, 빅테크 기업들의 AI 전략 최신본📖

    2025년 06월 20일 cloud베스핀글로벌클라우드data데이터AI구글마이크로소프트엔비디아AI에이전트google I/ONVIDIA GTC 2025Microsoft build 2025
  • AI를 연결한다고? 업계가 주목하는 ‘MCP’ 알아보기🔍

    2025년 06월 13일 베스핀글로벌클라우드cloudAIMCP
  • [WhaTap] RDS Failover/Reboot 관제 2 – RDS Failover

    2025년 05월 30일 RDSRDS FailoverRebootFailoverbespin global

베스핀글로벌은 모든 기업의 AI 혁신을 실현하기 위해, 세상에서 가장 혁신적이고 자동화된 AI 서비스와 솔루션을 만들어갑니다.
상호 : 베스핀글로벌 주식회사 ㅣ 대표자명 : 김써니, 허양호 ㅣ 사업자등록증번호 : 638-87-00223 ㅣ 통신판매번호 : 2019-서울서초-0347 ㅣ 대표전화 : 1668-1280
사업장주소지 : 서울특별시 서초구 강남대로 327, 13,14,15,16층(서초동,대륭서초타워) ㅣ 이메일 : info@bespinglobal.com ㅣ 개인정보 처리방침 ㅣ 개인정보 처리방침 안내

© 2026 BESPIN GLOBAL, All Rights Reserved.

BESPINGLOBAL
패밀리 사이트
China MEA SEA US

BESPIN Tech Blog
  • Home
  • Tech
    • CSP

      AWS

      GCP

      NCP

      Cloud

      Migration

      LZ, Control Tower

      Backup

      Monitoring

      Container

      Infra

      OS

      Middleware

      Data

      RDB

      Big Data Platform

      Application

      CI/CD

      BESPICK 구독하기 ㅣ 1668-1280

  • Trend
  • IT