#title Kubernetes #keywords kubernetes, container [[TableOfContents]] == 서비스 디스커버리 == === ì¿ ë²„ë„¤í‹°ìŠ¤ì—ì„œ 서비스 디스커버리를 구현하는 다양한 방법 === 1. ClusterIP 2. ExternalName 3. NodePort 4. LoadBalancer 5. Ingress === ì¸ê·¸ë ˆìŠ¤ === ì¸ê·¸ë ˆìŠ¤(Ingress)는 서비스 ì•žìª½ì— ìœ„ì¹˜í•˜ë©° 스마트 ë¼ìš°í„° ë° í´ëŸ¬ìŠ¤í„° 엔트리 í¬ì¸íŠ¸ ì—í• ì„ í•˜ëŠ” 별ë„ì˜ ì¿ ë²„ë„¤í‹°ìŠ¤ ìžì›ì´ë‹¤. ì¸ê·¸ë ˆìŠ¤ëŠ” 외부ì—ì„œ ì ‘ê·¼ 가능한 URL, 로드 밸런싱, SSL 종료, ì´ë¦„ 기반 ê°€ìƒ í˜¸ìŠ¤íŒ… ë“±ì„ í†µí•´ ì„œë¹„ìŠ¤ì— ëŒ€í•œ HTTP 기반 ì ‘ê·¼ì„ ì œê³µí•œë‹¤. {{{ apiVersion: extentions/v1beta1 kind: Ingress ... spec: backend: serviceName: ... servicePort: 8080 }}} ì¸ê·¸ë ˆìŠ¤ëŠ” ì¿ ë²„ë„¤í‹°ìŠ¤ì—ì„œ 가장 ê°•ë ¥í•˜ê³ ë™ì‹œì— 가장 복잡한 서비스 디스커버리 메커니즘ì´ë‹¤. == ì„¤ì • ìžì› == === EnvVar === ì„¤ì •ì„ ì™¸ë¶€í™” 하는 가장 쉬운 ë°©ë²•ì€ ë„ì»¤ì˜ ENV 지시ìžë‚˜ ë„커파ì¼ì—ì„œ ì§ì ‘ ì •ì˜í• 수 있는 환경 ë³€ìˆ˜ì— ì„¤ì • ê°’ì„ ë°°ì¹˜í•˜ëŠ” 것ì´ë‹¤. ì¿ ë²„ë„¤í‹°ìŠ¤ëŠ” 디플로ì´ë¨¼íŠ¸ ë˜ëŠ” ë ˆí”Œë¦¬ì¹´ì„¸íŠ¸ ê°™ì€ ì»¨íŠ¸ë¡¤ëŸ¬ì˜ íŒŒë“œ 명세ì—ì„œ ì§ì ‘ ì„¤ì •í• ìˆ˜ 있다. {{{ ... spec: containers: ... env: - name: ... value: ... }}} EnvVar는 ì†Œê·œëª¨ì˜ ë³€ìˆ˜ì™€ 간단한 ì„¤ì •ì—만 ì 합하다. ë˜, ì–´ë””ì— ë³€ìˆ˜ê°€ ì •ì˜ë˜ì–´ 있는지 찾기 ì–´ë µë‹¤ëŠ” 단ì ë„ ìžˆë‹¤. ì¿ ë²„ë„¤í‹°ìŠ¤ëŠ” 단순 환경 변수보다 훨씬 ìœ ì—°í•œ ì „ìš© ì„¤ì • ìžì›ì¸ 컨피그맵(ConfigMap), ì‹œí¬ë¦¿(Secret) ê°ì²´ë¥¼ ì œê³µí•œë‹¤. === 컨피그맵 === {{{ apiVersion: v1 kind: ConfigMap metadata: name: ... data: ... }}} ==== ì»¨í”¼ê·¸ë§µì— ì„¤ì •ëœ í™˜ê²½ 변수 세트 ==== {{{ ... spec: containers: - env: - name: ... valueFrom: configMapKeyRef: name: ... key: ... }}} {{{ ... spec: containers: envFrom: - configMapKeyRef: name: ... }}} ==== ì»¨í”¼ê·¸ë§µì„ ë³¼ë¥¨ìœ¼ë¡œ 마운트 ==== {{{ ... spec: containers: ... volumes: - name: config-volume configMap: name: ... }}} === ì‹œí¬ë¦¿ === 컨피그맵 ëŒ€ì‹ ì‹œí¬ë¦¿ì— ì ‘ê·¼í•˜ë ¤ë©´ [[Code(configMapKeyRef)]]를 [[Code(secretKeyRef)]]ë¡œ 바꾸ìž. ==== ì‹œí¬ë¦¿ì€ 얼마나 ì•ˆì „í•œê°€? ==== ì‹œí¬ë¦¿ì€ ë°ì´í„°ë¥¼ Base64ë¡œ ì¸ì½”딩해 ê°€ì§€ê³ ìžˆë‹¤ê°€ 환경 변수나 ë§ˆìš´íŠ¸ëœ ë³¼ë¥¨ìœ¼ë¡œ íŒŒë“œì— ì „ë‹¬í•˜ê¸° ì „ì— ë””ì½”ë”©ëœë‹¤. 간혹 ì‹œí¬ë¦¿ì„ 보안 기능으로 ì°©ê°í•˜ê¸°ë„ 하지만 Base64는 암호화 ê¸°ë²•ì´ ì‚¬ìš©ëœ ì¸ì½”ë”©ì´ ì•„ë‹ˆë©° 보안 측면ì—ì„œ í‰ë¬¸ í…스트와 ë™ì¼í•˜ë‹¤. ê·¸ë ‡ë‹¤ë©´ 왜 ì‹œí¬ë¦¿ì´ 컨피그맵보다 ì•ˆì „í•˜ë‹¤ê³ í• ê¹Œ? ì‹œí¬ë¦¿ì€ ë³´ì•ˆì„ ìœ ì§€í•˜ê¸° 위한 구현 세부사í•ì´ 많다. ëŠìž„ì—†ì´ ê°œì„ ì´ ì´ë£¨ì–´ì§€ëŠ” 중ì´ì§€ë§Œ 현재 ì‹œì ì—서는 í¬ê²Œ, 1. ì‹œí¬ë¦¿ì€ ìžì‹ ì—게 ì ‘ê·¼í•œ 파드가 실행 ì¤‘ì¸ ë…¸ë“œì—만 ë°°í¬ëœë‹¤. 2. 노드ì—ì„œ ì‹œí¬ë¦¿ì€ tmpfsì˜ ë©”ëª¨ë¦¬ì— ì €ìž¥ë˜ë©°, ì‹¤ì œ ìŠ¤í† ë¦¬ì§€ì—는 기ë¡ë˜ì§€ ì•Šê³ íŒŒë“œê°€ ì œê±°ë ë•Œ 함께 ì œê±°ëœë‹¤. 3. ì‹œí¬ë¦¿ì€ etcdì— ì•”í˜¸í™”ëœ í˜•íƒœë¡œ ì €ìž¥ëœë‹¤. ì´ëŸ° 주요 구현과 ìƒê´€ì—†ì´ 루트 사용ìžë¡œ ì‹œí¬ë¦¿ì— ì ‘ê·¼í•˜ê±°ë‚˜, 파드를 ìƒì„±í•´ì„œ ì‹œí¬ë¦¿ì— 마운트하는 등 다양한 방법으로 ì‹œí¬ë¦¿ì„ ì½ì„ 수 있다. ë”°ë¼ì„œ 민ê°í•œ ì •ë³´ëŠ” ì• í”Œë¦¬ì¼€ì´ì…˜ ë ˆë²¨ì—ì„œ 추가 암호화가 필요하다. == 스케ì¼ë§ == === ìˆ˜í‰ ìŠ¤ì¼€ì¼ë§ê³¼ ìˆ˜ì§ ìŠ¤ì¼€ì¼ë§ì˜ ì°¨ì´ === ì• í”Œë¦¬ì¼€ì´ì…˜ì„ 스케ì¼ë§í•˜ëŠ” 것ì—는 2가지 주요 ì ‘ê·¼ ë°©ë²•ì´ ìžˆë‹¤. 1. ìˆ˜í‰ ìŠ¤ì¼€ì¼ë§ ì¿ ë²„ë„¤í‹°ìŠ¤ì—ì„œ 수í‰ìœ¼ë¡œ 스케ì¼í•˜ëŠ” ê²ƒì€ íŒŒë“œ ë ˆí”Œë¦¬ì¹´ë¥¼ ë” ë§Žì´ ë§Œë“œëŠ” 것ì´ë‹¤. 2. ìˆ˜ì§ ìŠ¤ì¼€ì¼ë§ 수ì§ìœ¼ë¡œ 스케ì¼í•˜ëŠ” ê²ƒì€ íŒŒë“œê°€ 관리하는 컨테ì´ë„ˆë¥¼ 실행하는 ë° ë” ë§Žì€ ìžì›ì„ ì œê³µí•˜ëŠ” 것ì´ë‹¤. ※ 설명으로는 간단해 ë³´ì´ì§€ë§Œ, 다른 서비스와 í´ëŸ¬ìŠ¤í„° ìžì²´ì— ì˜í–¥ì„ 미치지 ì•Šë„ë¡ ì˜¤í† ìŠ¤ì¼€ì¼ë§ì„ 위한 ì• í”Œë¦¬ì¼€ì´ì…˜ ì„¤ì •ì„ ìƒì„±í•˜ë ¤ë©´ ìƒë‹¹í•œ 시행착오를 ê±°ì³ì•¼ 한다. === ìˆ˜ë™ ìˆ˜í‰ ìŠ¤ì¼€ì¼ë§ === ì´ë¦„ì—ì„œ ì•Œ 수 ìžˆë“¯ì´ ì¿ ë²„ë„¤í‹°ìŠ¤ ìš´ì˜ìžë¥¼ 기반으로 최ì ì˜ ì„¤ì •ì„ ì 진ì 으로 튜ë‹í•œë‹¤. ì˜¤í† ìŠ¤ì¼€ì¼ë§ì´ 없는 경우나 ëŠë¦¬ê²Œ 변화하는 로드를 처리하는 ì• í”Œë¦¬ì¼€ì´ì…˜ì˜ 경우 ì‚¬ìš©í• ìˆ˜ 있다. ìžì£¼ 변경ë˜ê³ ì ì‘ì´ í•„ìš”í•œ ë™ì 워í¬ë¡œë“œ 패턴ì—는 ì 합하지 않다. === ìˆ˜í‰ íŒŒë“œ ì˜¤í† ìŠ¤ì¼€ì¼ë§ === ê³ ì •ë˜ì–´ 있지 ì•Šìœ¼ë©´ì„œë„ ë¡œë“œë¥¼ 충분히 ì²˜ë¦¬í• ìˆ˜ 있는 ìš©ëŸ‰ì„ ë³´ìž¥í•˜ëŠ” ì• í”Œë¦¬ì¼€ì´ì…˜ ìš©ëŸ‰ì„ ì •ì˜í• 수 있다. 가장 간단한 ë°©ë²•ì€ [[Code(HorizonPodAutoscaler)]](HPA)를 사용해 íŒŒë“œì˜ ìˆ˜ë¥¼ 수í‰ìœ¼ë¡œ 스케ì¼í•˜ëŠ” 것ì´ë‹¤. {{{ apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler ... spec: minReplicas: 1 maxReplicas: 5 scaleTargetRef: apiVersion: extentions/v1beta1 kind: Deployment ... }}} https://t1.daumcdn.net/cfile/tistory/992DD43A5D5C028303&.jpg 그림. ìˆ˜í‰ íŒŒë“œ ì˜¤í† ìŠ¤ì¼€ì¼ë§ì˜ 메커니즘 === ìˆ˜ì§ íŒŒë“œ ì˜¤í† ìŠ¤ì¼€ì¼ë§ === ìˆ˜í‰ ìŠ¤ì¼€ì¼ë§ì€ 스테ì´íŠ¸ë¦¬ìŠ¤ ì„œë¹„ìŠ¤ì— ì§€ìž¥ì„ ëœ ì£¼ê¸° ë•Œë¬¸ì— ìˆ˜ì§ ìŠ¤ì¼€ì¼ë§ë³´ë‹¤ ì„ í˜¸ë˜ì§€ë§Œ, ìˆ˜ì§ ìŠ¤ì¼€ì¼ë§ì€ ì‹¤ì œ 로드 기반으로 ì„œë¹„ìŠ¤ì˜ ì‹¤ì œ ìžì› 요구를 튜ë‹í• ë•Œ ìœ ìš©í•˜ë‹¤. íŒŒë“œì˜ ëª¨ë“ ì»¨í…Œì´ë„ˆëŠ” CPU와 메모리 requests를 ì§€ì •í• ìˆ˜ 있으며 íŠ¹ì •í•œ ì–‘ì˜ ìžì›ì„ 보장한다. 즉 ìžì›ì´ 보장ë˜ì§€ 않으면 파드가 스케줄ë˜ì§€ 않는다. 메모리 ìš”ì²ì„ 너무 낮게 잡으면 노드가 ë”ìš± 꽉 채워지기 ë•Œë¬¸ì— ë©”ëª¨ë¦¬ 압박으로 메모리 부족 오류로 워í¬ë¡œë“œ ì¶•ì¶œì´ ì¼ì–´ë‚ 수 있다. CPU limits를 너무 낮게 잡으면 CPU ê³ ê°ˆì´ë‚˜ ì„±ëŠ¥ì´ ì €í•˜ëœ ì›Œí¬ë¡œë“œê°€ ë°œìƒí• 수 있다. ë°˜ë©´ì— ë„ˆë¬´ ë§Žì€ ìžì›ì„ requets하면 불필요한 ìš©ëŸ‰ì´ í• ë‹¹ë˜ì–´ ìžì›ì´ ë‚비ëœë‹¤. í´ëŸ¬ìŠ¤í„°ì˜ ì‚¬ìš©ë¥ ê³¼ ìˆ˜í‰ ìŠ¤ì¼€ì¼ë§ì˜ íš¨ìœ¨ì„±ì„ ìœ„í•´ 가능한 ì •í™•í•˜ê²Œ ìžì›ì„ ìš”ì²í•˜ëŠ” ê²ƒì´ ì¤‘ìš”í•˜ë©° [[Code(VerticalPodAutoscaler)]](VPA)ê°€ ì´ë¥¼ í•´ê²°í•˜ëŠ”ë° ë„ì›€ì´ ë˜ë©° ì‹¤ì œ 사용 í”¼ë“œë°±ì„ ê¸°ë°˜ìœ¼ë¡œ ìžì›ì„ ì¡°ì • ë° í• ë‹¹í•˜ëŠ” ê³¼ì •ì„ ìžë™í™”한다. {{{ apiVersion: poc.autoscaling.k8s.io/v1alpha1 kind: VerticalPodAutoscaler ... spec: selector: matchLables: app: ... updatePolicy: updateMode: "Off" }}} ※ VPA와 HPA를 함께 사용하는 ê²ƒì€ ì˜¤í† ìŠ¤ì¼€ì¼ëŸ¬ê°€ ì•„ì§ê¹Œì§€ëŠ” 서로를 ì¸ì‹í•˜ì§€ ì•Šì•„ ì›ì¹˜ ì•Šì€ ë™ìž‘ì´ ë°œìƒë 수 있다. VPA는 ì•„ì§ ë² íƒ€ë²„ì „ì´ë©° 향후 활발히 사용ë˜ë©´ 변경ë ê°€ëŠ¥ì„±ë„ ìžˆë‹¤. 그러나 ì—¬ì „ížˆ VPA는 ìžì› 소비 íš¨ìœ¨ì„±ì„ í¬ê²Œ í–¥ìƒ ì‹œí‚¬ ê°€ëŠ¥ì„±ì´ ìžˆëŠ” 기능ì´ë‹¤. === í´ëŸ¬ìŠ¤í„° ì˜¤í† ìŠ¤ì¼€ì¼ë§ === 새로운 노드를 스케ì¼ë§í•œë‹¤. ì¿ ë²„ë„¤í‹°ìŠ¤ê°€ í´ë¼ìš°ë“œ 컴퓨팅 ì¸í”„ë¼ìŠ¤íŠ¸ëŸì²˜ìƒì—ì„œ 실행 ì¤‘ì¼ ë•Œë§Œ 수행ë 수 있다. ëª¨ë“ ì£¼ìš” í´ë¼ìš°ë“œ ì œê³µì—…ì²´ëŠ” ì¿ ë²„ë„¤í‹°ìŠ¤ ì˜¤í† ìŠ¤ì¼€ì¼ëŸ¬(CA)를 ì œê³µí•œë‹¤. HPA와 VPAì˜ ìŠ¤ì¼€ì¼ë§ ê¸°ìˆ ì€ í´ëŸ¬ìŠ¤í„° 용량 í•œë„ ë‚´ì—서만 íƒ„ë ¥ì„±ì„ ì œê³µí•œë‹¤. CA는 ì¿ ë²„ë„¤í‹°ìŠ¤ ì• ë“œì˜¨ìœ¼ë¡œ 구ë™ë˜ê³ ìš”ì²ëœ CPU나 메모리를 충족시키는 ìš©ëŸ‰ì„ ê°–ì¶˜ 노드가 없다면 새로운 노드를 í”„ë¡œë¹„ì „ 한다. 최소 노드 수와 최대 노드 수가 ì„¤ì •ë˜ì–´ì•¼ 한다. == Tips == === 파드 ë‚´ 네임스페ì´ìŠ¤ í™•ì¸ === {{{#!vim ruby dat, err := ioutil.ReadFile("/var/run/secrets/kubernetes.io/serviceaccount/namespace") if err != nil { panic(err) } fmt.Print(string(dat)) }}} === Kubernetes YAML ìžì› 추가 ì‚ì œ === Q: kubectlë¡œ yamlì„ ë³€ê²½í•´ì„œ ìžì›ì„ 변경/추가하면, 기존 yamlì— ìžˆë˜ ìžì›ë“¤ì€ ì‚ì œë˜ëŠ”거야 아니면 ìœ ì§€ëœ ìƒíƒœë¡œ 있는거야? ChatGPT: `kubectl`ì„ ì‚¬ìš©í•˜ì—¬ YAML 파ì¼ì„ 변경하면, 해당 파ì¼ì—ì„œ ìˆ˜ì •ëœ ìžì›ë§Œ 변경ë˜ê³ , 나머지 ìžì›ë“¤ì€ 변경ë˜ì§€ 않습니다. 즉, 기존 YAML 파ì¼ì— ìžˆë˜ ìžì›ë“¤ì€ 변경ë˜ì§€ ì•Šê³ ìœ ì§€ë©ë‹ˆë‹¤. 예를 들어, 기존 YAML 파ì¼ì— `Deployment`와 `Service` ìžì›ì´ ìžˆê³ , `kubectl apply -f` ëª…ë ¹ì–´ë¥¼ 사용하여 새로운 `ConfigMap` ìžì›ì„ ì¶”ê°€í•œë‹¤ê³ ê°€ì •í•´ 봅시다. ì´ ê²½ìš°, `Deployment`ê³¼ `Service` ìžì›ì€ 변경ë˜ì§€ ì•Šê³ ê·¸ëŒ€ë¡œ ìœ ì§€ë˜ë©°, 새로운 `ConfigMap` ìžì›ë§Œ 추가ë©ë‹ˆë‹¤. 그러나, 만약 YAML 파ì¼ì—ì„œ 기존 ìžì›ì„ ì‚ì œí•˜ê±°ë‚˜ ìˆ˜ì •í•˜ëŠ” 경우 해당 ìžì›ì€ ì‚ì œë˜ê±°ë‚˜ ìˆ˜ì •ë©ë‹ˆë‹¤. ë”°ë¼ì„œ, ìžì›ì„ ìˆ˜ì •í• ë•ŒëŠ” 반드시 ë³€ê²½í•˜ê³ ìž í•˜ëŠ” ìžì›ë§Œì„ ìˆ˜ì •í•˜ëŠ”ì§€ 확ì¸í•´ì•¼ 합니다. Q: ê·¸ë ‡ë‹¤ë©´ kubectlë¡œ íŠ¹ì • ìžì›ë§Œ 지우는 ë°©ë²•ì€ ë¬´ì—‡ì´ ìžˆì§€? 예를 들어 Service ìžì›ì„ ì§€ìš°ê³ ì‹¶ì„ ë•Œ. ChatGPT: `kubectl delete` ëª…ë ¹ì–´ë¥¼ 사용하여 íŠ¹ì • ìžì›ì„ ì‚ì œí• ìˆ˜ 있습니다. 예를 들어, `Service` ìžì›ì„ ì‚ì œí•˜ë ¤ë©´ ë‹¤ìŒ ëª…ë ¹ì–´ë¥¼ ì‚¬ìš©í• ìˆ˜ 있습니다: {{{#!arduino kubectl delete service <service-name> }}} 여기서 `<service-name>`ì€ ì‚ì œí•˜ë ¤ëŠ” `Service` ìžì›ì˜ ì´ë¦„입니다. ì´ ëª…ë ¹ì–´ë¥¼ 실행하면 해당 `Service` ìžì›ì´ ì‚ì œë©ë‹ˆë‹¤. 만약, YAML 파ì¼ì„ 사용하여 `Service` ìžì›ì„ ìƒì„±í–ˆë‹¤ë©´, 해당 YAML 파ì¼ì„ 편집하여 `Service` ìžì›ì„ ì‚ì œí•˜ê±°ë‚˜, ë‹¤ìŒ ëª…ë ¹ì–´ë¥¼ 사용하여 YAML 파ì¼ì—ì„œ `Service` ìžì›ì„ ì‚ì œí•˜ê³ ì ìš©í• ìˆ˜ 있습니다: {{{#!arduino kubectl delete -f <yaml-file> }}} 여기서 `<yaml-file>`ì€ ì‚ì œí•˜ë ¤ëŠ” `Service` ìžì›ì´ í¬í•¨ëœ YAML 파ì¼ì˜ 경로입니다. ì´ ëª…ë ¹ì–´ë¥¼ 실행하면 해당 YAML 파ì¼ì—ì„œ `Service` ìžì›ì´ ì‚ì œë˜ê³ , 변경 사í•ì´ Kubernetes í´ëŸ¬ìŠ¤í„°ì— ì ìš©ë©ë‹ˆë‹¤. Q: kubectl delete namespace <namespace-name>ë¡œ 네임스페ì´ìŠ¤ë¥¼ 지우면 네임스페ì´ìŠ¤ ì•ˆì— ìžˆë˜ ìžì›ë“¤ì€ ê¹”ë”하게 지워지나? ChatGPT: 네, `kubectl delete namespace <namespace-name>` ëª…ë ¹ì–´ë¥¼ 사용하여 네임스페ì´ìŠ¤ë¥¼ ì‚ì œí•˜ë©´ 해당 네임스페ì´ìŠ¤ ì•ˆì— ìžˆëŠ” ëª¨ë“ ìžì›ë“¤ì´ 함께 ì‚ì œë©ë‹ˆë‹¤. 기본ì 으로, 네임스페ì´ìŠ¤ë¥¼ ì‚ì œí•˜ë©´ 해당 네임스페ì´ìŠ¤ ë‚´ë¶€ì— ìžˆëŠ” ëª¨ë“ Kubernetes ìžì›(예: Pod, Deployment, Service 등)ì´ ìžë™ìœ¼ë¡œ ì‚ì œë©ë‹ˆë‹¤. 그러나 ë§Œì•½ì— ë„¤ìž„ìŠ¤íŽ˜ì´ìŠ¤ ì•ˆì— ë‹¤ë¥¸ 네임스페ì´ìŠ¤ê°€ 있거나, 다른 네임스페ì´ìŠ¤ë¥¼ 참조하는 Kubernetes ìžì›ì´ 있다면, ì´ëŸ¬í•œ ìžì›ë“¤ì€ ì‚ì œë˜ì§€ ì•Šì„ ìˆ˜ 있습니다. ë”°ë¼ì„œ, `kubectl delete namespace` ëª…ë ¹ì–´ë¥¼ 사용하기 ì „ì—, 해당 네임스페ì´ìŠ¤ì— ì–´ë–¤ ìžì›ë“¤ì´ 있는지 확ì¸í•˜ê³ , 필요한 경우 해당 ìžì›ë“¤ì„ ë¨¼ì € ì‚ì œí•´ 주는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. === Well-Known Labelsì„ ìž„ì˜ë¡œ ì§€ì›Œë„ ë˜ë‚˜? === Q: K8Sì˜ Well-Known Labels들(예를 들어 node.kubernetes.io/instance-typeê³¼ ê°™ì€)ì€ ì–¸ì œ ìƒì„±ë˜ëŠ” 거지? 함부로 지우면 안ë˜ê² 지? ChatGPT: Kubernetesì—ì„œ Well-Known Labelsì€ Kubernetes ìžì²´ì™€ ê´€ë ¨ëœ ì •ë³´ë¥¼ ì œê³µí•˜ëŠ” ë ˆì´ë¸”입니다. ì´ëŸ¬í•œ ë ˆì´ë¸”ì€ ì‹œìŠ¤í…œ 구성 요소와 ê´€ë ¨ëœ ì •ë³´ë¥¼ í¬í•¨í•˜ê³ 있으므로 Kubernetesì—ì„œ ìžë™ìœ¼ë¡œ ìƒì„±ë©ë‹ˆë‹¤. 예를 들어, `node.kubernetes.io/instance-type` ë ˆì´ë¸”ì€ ë…¸ë“œ ì¸ìŠ¤í„´ìŠ¤ ìœ í˜•ê³¼ ê´€ë ¨ëœ ì •ë³´ë¥¼ í¬í•¨í•˜ê³ 있습니다. ì´ ë ˆì´ë¸”ì€ AWS, GCE, Azure ë“±ì˜ í´ë¼ìš°ë“œ ì œê³µì—…ì²´ì—ì„œ ìžë™ìœ¼ë¡œ ìƒì„±ë˜ë©°, 노드 ìœ í˜•ê³¼ ì—°ê²°ëœ ì •ë³´ë¥¼ í¬í•¨í•©ë‹ˆë‹¤. ì¼ë°˜ì 으로 ì´ëŸ¬í•œ Well-Known Labelsì€ ì‹œìŠ¤í…œì—ì„œ ìžë™ìœ¼ë¡œ ìƒì„±ë˜ë¯€ë¡œ, ì‚ì œí•˜ë©´ Kubernetesì˜ ì¼ë¶€ ê¸°ëŠ¥ì´ ì˜í–¥ì„ ë°›ì„ ìˆ˜ 있습니다. 예를 들어, `kubernetes.io/hostname` ë ˆì´ë¸”ì€ ê° ë…¸ë“œì˜ í˜¸ìŠ¤íŠ¸ ì´ë¦„ì„ í¬í•¨í•˜ê³ 있으며, ì´ ë ˆì´ë¸”ì´ ì—†ìœ¼ë©´ Kubernetesì—ì„œ 노드를 ì‹ë³„í• ìˆ˜ 없습니다. ë”°ë¼ì„œ Well-Known Labelsì„ í•¨ë¶€ë¡œ 지우면 안ë©ë‹ˆë‹¤. ì´ëŸ¬í•œ ë ˆì´ë¸”ì€ Kubernetes 시스템 êµ¬ì„±ì˜ ì¼ë¶€ì´ë©°, 시스템 구성 요소와 ìƒí˜¸ 작용하는 ë° í•„ìš”í•©ë‹ˆë‹¤. 필요한 경우 ì´ëŸ¬í•œ ë ˆì´ë¸”ì„ ìˆ˜ì •í• ìˆ˜ëŠ” 있지만, ì‚ì œí•˜ë©´ 안ë©ë‹ˆë‹¤. ---- CategoryDev