kubernetes_pod

μΏ λ²„λ„€ν‹°μŠ€ νŒŒλ“œ: μΏ λ²„λ„€ν‹°μŠ€μ—μ„œ μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰

  • νŒŒλ“œ

    • httpsdataninjago com20220111spark-sql-query-engine-deep-dive-11-join-strategies (19)

      • https://kubernetes.io/de/docs/tutorials/kubernetes-basics/explore/explore-intro/

    • Kubernetesμ—μ„œ μƒμ„±ν•˜κ³  관리할 수 μžˆλŠ” 배포가λŠ₯ν•œ κ°€μž₯ μž‘μ€ λ‹¨μœ„

    • νŒŒλ“œλŠ” ν•¨κ»˜ 배치된 μ»¨ν…Œμ΄λ„ˆ 그룹이며 μΏ λ²„λ„€ν‹°μŠ€μ˜ κΈ°λ³Έ λΉŒλ”© 블둝이며 νŒŒλ“œ μ•ˆμ— μžˆλŠ” λͺ¨λ“  μ»¨ν…Œμ΄λ„ˆλŠ” 같은 λ…Έλ“œμ—μ„œ μ‹€ν–‰λ©λ‹ˆλ‹€.

    • ν•˜λ‚˜μ˜ μ»¨ν…Œμ΄λ„ˆλ₯Ό κ°œλ³„μ μœΌλ‘œ λ°°ν¬ν•˜λŠ” 것이 μ•„λ‹Œ Pod λ‹¨μœ„λ‘œ 배포

    • κ°€μž₯ 기본적인 배포 λ‹¨μœ„λ‘œ ν•˜λ‚˜ μ΄μƒμ˜ μ»¨ν…Œμ΄λ„ˆλ₯Ό ν¬ν•¨ν•˜λŠ” λ‹¨μœ„λ‘œ 일반적으둜 1 Pod 1 Container

    • Pod λ‚΄μ˜ μ»¨ν…Œμ΄λ„ˆλ“€μ€ IP, Portλ₯Ό κ³΅μœ ν•©λ‹ˆλ‹€. Podκ°€ μž¬μ‹œμž‘λ˜λ©΄ IPκ°€ λ³€κ²½λ˜λ©° Podλ‚΄μ˜ μ»¨ν…Œμ΄λ„ˆλ“€μ˜ λ‘œμ»¬λ””μŠ€ν¬μ˜ λ‚΄μš©μ΄ μ‚¬λΌμ§‘λ‹ˆλ‹€.

  • YAML λ˜λŠ” JSON λ””μŠ€ν¬ν¬λ¦½ν„°λ‘œ νŒŒλ“œ 생성

    • νŒŒλ“œλ₯Ό ν¬ν•¨ν•œ λ‹€λ₯Έ μΏ λ²„λ„€ν‹°μŠ€ λ¦¬μ†ŒμŠ€λŠ” 일반적으둜 μΏ λ²„λ„€ν‹°μŠ€ REST API μ—”λ“œν¬μΈνŠΈμ— JSON ν˜Ήμ€ YAML λ§€λ‹ˆνŽ˜μŠ€νŠΈλ₯Ό 전솑해 μƒμ„±ν•©λ‹ˆλ‹€.

    • 배포된 νŒŒλ“œμ˜ 전체 YAML

      • apiVersion: v1
        kind: Pod
        metadata:
          name: kubia-manual
        spec:
          containers:
          - image: luksa/kubia
            name: kubia
            ports:
            - containerPort: 8080
              protocol: TCP
        • YAML이 λ””μŠ€ν¬λ¦½ν„°μ—μ„œ μ‚¬μš©ν•œ μΏ λ²„λ„€ν‹°μŠ€ API버전

        • μΏ λ²„λ„€ν‹°μŠ€ 였브젝트/λ¦¬μ†ŒμŠ€ μœ ν˜•

        • νŒŒλ“œ 메타데이터(이름, λ ˆμ΄λΈ”, μ–΄λ…Έν…Œμ΄μ…˜ λ“±)

        • νŒŒλ“œ μ •μ˜/λ‚΄μš©(νŒŒλ“œ μ»¨ν…Œμ΄λ„ˆ λͺ©λ‘, λ³Όλ₯¨ λ“±)

        • νŒŒλ“œμ™€ κ·Έ μ•ˆμ˜ μ—¬λŸ¬ μ»¨ν…Œμ΄λ„ˆμ˜ μƒμ„Έν•œ μƒνƒœ

    • νŒŒλ“œλ₯Ό μ •μ˜ν•˜λŠ” μ£Όμš” λΆ€λΆ„ μ†Œκ°œ

      • Metadata: 이름, λ„€μž„μŠ€νŽ˜μ΄μŠ€, λ ˆμ΄λΈ” 및 νŒŒλ“œμ— κ΄€ν•œ 기타 정보λ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€.

      • Spec : νŒŒλ“œ μ»¨ν…Œμ΄λ„ˆ, λ³Όλ₯¨, 기타 데이터 λ“± νŒŒλ“œ μžμ²΄μ— κ΄€ν•œ μ‹€μ œ λͺ…μ„Έλ₯Ό κ°€μ§‘λ‹ˆλ‹€.

      • Status: νŒŒλ“œ μƒνƒœ, 각 μ»¨ν…Œμ΄λ„ˆ μ„€λͺ…κ³Ό μƒνƒœ, νŒŒλ“œ λ‚΄λΆ€ IP, 기타 κΈ°λ³Έ 정보 λ“± ν˜„μž¬ μ‹€ν–‰ 쀑인 νŒŒλ“œμ— κ΄€ν•œ ν˜„μž¬ 정보λ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€.

  • λ ˆμ΄λΈ”μ„ μ΄μš©ν•œ νŒŒλ“œ ꡬ성

    • λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜μ˜ 경우 배포된 λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€μ˜ μˆ˜λŠ” 맀우 μ‰½κ²Œ 20개λ₯Ό μ΄ˆκ³Όν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ ꡬ성 μš”μ†ŒλŠ” 볡제돼(λ™μΌν•œ ꡬ성 μš”μ†Œμ˜ μ—¬λŸ¬ 볡사본이 배포됨) μ—¬λŸ¬ 버전 ν˜Ήμ€ 릴리슀(μ•ˆμ •, 베타, μΉ΄λ‚˜λ¦¬ λ“±)κ°€ λ™μ‹œμ— μ‹€ν–‰λ©λ‹ˆλ‹€.

    • λ ˆμ΄λΈ”μ„ 톡해 νŒŒλ“œμ™€ 기타 λ‹€λ₯Έ μΏ λ²„λ„€ν‹°μŠ€ 였브젝트의 쑰직화가 μ΄λ€„μ§‘λ‹ˆλ‹€.

    • λ ˆμ΄λΈ” μ†Œκ°œ

      • image

        • https://github.com/luksa/kubernetes-in-action

      • λ ˆμ΄λΈ”μ€ νŒŒλ“œμ™€ λͺ¨λ“  λ‹€λ₯Έ μΏ λ²„λ„€ν‹°μŠ€ λ¦¬μ†ŒμŠ€λ₯Ό 쑰직화할 수 μžˆλŠ” λ‹¨μˆœν•˜λ©΄μ„œ κ°•λ ₯ν•œ μΏ λ²„λ„€ν‹°μŠ€ κΈ°λŠ₯으둜 λ ˆμ΄λΈ”μ€ λ¦¬μ†ŒμŠ€μ— μ²¨λΆ€ν•˜λŠ” ν‚€-κ°’ μŒμž…λ‹ˆλ‹€. 이 μŒμ€ λ ˆμ΄λΈ” μ…€λŸ­ν„°λ₯Ό μ‚¬μš©ν•΄ λ¦¬μ†ŒμŠ€λ₯Ό 선택할 λ•Œ ν™œμš©λ©λ‹ˆλ‹€.

        • app : νŒŒλ“œκ°€ μ†ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜, ꡬ성 μš”μ†Œ ν˜Ήμ€ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€.

        • rel : νŒŒλ“œμ—μ„œ μ‹€ν–‰ 쀑인 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ•ˆμ •, 베타 ν˜Ήμ€ μΉ΄λ‚˜λ¦¬ λ¦΄λ¦¬μŠ€μΈμ§€ λ³΄μ—¬μ€Œ(μΉ΄λ‚˜λ¦¬ λ¦΄λ¦¬μŠ€λŠ” μ•ˆμ • 버전 μ˜†μ— μƒˆ 버전을 λ°°ν¬ν•˜κ³ , λͺ¨λ“  μ‚¬μš©μžμ—κ²Œ λ°°ν¬ν•˜κΈ° 전에 μ†Œμˆ˜μ˜ μ‚¬μš©μžλ§Œμ΄ μƒˆλ‘œμš΄ 버전을 μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•΄μ„œ μ–΄λ–»κ²Œ λ™μž‘ν•˜λŠ”μ§€ λ³Ό 수 있게 ν•˜λŠ” 것)

  • νŒŒλ“œμ— μ–΄λ…Έν…Œμ΄μ…˜ 달기

    • apiVersion: v1
      kind: Pod
      metadata:
        name: annotations-demo
        annotations:
          imageregistry: "https://hub.docker.com/"
      spec:
        containers:
        - name: nginx
          image: nginx:1.14.2
          ports:
          - containerPort: 80
    • νŒŒλ“œ 및 λ‹€λ₯Έ μ˜€λΈŒμ νŠΈλŠ” λ ˆμ΄λΈ” 외에 μ–΄λ…Έν…Œμ΄μ…˜(annotations)을 κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. μ–΄λ…Έν…Œμ΄μ…˜μ€ ν‚€-κ°’ 쌍으둜 λ ˆμ΄λΈ”κ³Ό 거의 λΉ„μŠ·ν•˜μ§€λ§Œ 식별 정보λ₯Ό κ°–μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

    • μ–΄λ…Έν…Œμ΄μ…˜μ΄ μœ μš©ν•˜κ²Œ μ‚¬μš©λ˜λŠ” κ²½μš°λŠ” νŒŒλ“œλ‚˜ λ‹€λ₯Έ API μ˜€λΈŒμ νŠΈμ— μ„€λͺ…을 μΆ”κ°€ν•΄ λ‘λŠ” κ²ƒμœΌλ‘œ ν΄λŸ¬μŠ€ν„°λ₯Ό μ‚¬μš©ν•˜λŠ” λͺ¨λ“  μ‚¬λžŒμ΄ κ°œλ³„ μ˜€λΈŒμ νŠΈμ— κ΄€ν•œ 정보λ₯Ό μ‹ μ†ν•˜κ²Œ μ°Ύμ•„λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

  • λ„€μž„μŠ€νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•œ λ¦¬μ†ŒμŠ€ κ·Έλ£Ήν™”

    • apiVersion: v1
      kind: Namespace
      metadata:
        name: custom-namespace
    • 였브젝트λ₯Ό κ²ΉμΉ˜μ§€ μ•ŠλŠ” 그룹으둜 λΆ„ν• ν•˜κ³ μž ν•  λ•Œ ν•œ λ²ˆμ— ν•˜λ‚˜μ˜ κ·Έλ£Ή μ•ˆμ—μ„œλ§Œ μž‘μ—…ν•˜κ³  싢을 κ²ƒμž…λ‹ˆλ‹€. μΏ λ²„λ„€ν‹°μŠ€λŠ” 였브젝트λ₯Ό λ„€μž„μŠ€νŽ˜μ΄μŠ€λ‘œ κ·Έλ£Ήν™”ν•©λ‹ˆλ‹€.

    • μΏ λ²„λ„€ν‹°μŠ€ λ„€μž„μŠ€νŽ˜μ΄μŠ€λŠ” 였브젝트 μ΄λ¦„μ˜ λ²”μœ„λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. λͺ¨λ“  λ¦¬μ†ŒμŠ€λ₯Ό ν•˜λ‚˜μ˜ 단일 λ„€μž„μŠ€νŽ˜μ΄μŠ€μ— λ‘λŠ” λŒ€μ‹ μ— μ—¬λŸ¬ λ„€μž„μŠ€νŽ˜μ΄μŠ€λ‘œ λΆ„ν• ν•  수 있으며, λΆ„λ¦¬λœ λ„€μž„μŠ€νŽ˜μ΄μŠ€λŠ” 같은 λ¦¬μ†ŒμŠ€ 이름을 λ‹€λ₯Έ λ„€μž„μŠ€νŽ˜μ΄μŠ€μ— 걸쳐 μ—¬λŸ¬ 번 μ‚¬μš©ν•  수 있게 ν•΄ μ€λ‹ˆλ‹€.

    • λ„€μž„μŠ€νŽ˜μ΄μŠ€μ˜ ν•„μš”μ„±

      • μ—¬λŸ¬ λ„€μž„μŠ€νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λ©΄ λ§Žμ€ ꡬ성 μš”μ†Œλ₯Ό κ°€μ§„ λ³΅μž‘ν•œ μ‹œμŠ€ν…œμ„ μ’€ 더 μž‘μ€ κ°œλ³„ 그룹으둜 뢄리할 수 μžˆμŠ΅λ‹ˆλ‹€.

      • λ©€ν‹°ν…Œλ„ŒνŠΈ(multi-tenant) ν™˜κ²½μ²˜λŸΌ λ¦¬μ†ŒμŠ€λ₯Ό λΆ„λ¦¬ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

Reference

  • https://www.oreilly.com/library/view/kubernetes-in-action/9781617293726/

  • https://www.oreilly.com/library/view/cloud-native-devops/9781492040750/

Last updated