service
Last updated
Last updated
μλΉμ€λ κΈ°λ³Έμ μΌλ‘ μμ μ ν΄λ¬μ€ν° ipμ£Όμλ₯Ό κ°μ§κ³ μκ³ μ΄λ₯Ό νλμ μ°κ²°μμΌ λμΌλ©΄ ν΄λΉ ipμ£Όμλ₯Ό μ΄μ©ν΄μ μ κ·Όν μ μλ€. νλλ λ³λμ ipμ£Όμλ₯Ό κ°μ§κ³ μμ§λ§ μ΄λ νλ°μ± ipμ£Όμμ΄κΈ° λλ¬Έμ μ λ’°μ±μ΄ λ¨μ΄μ§μ§λ§ μλΉμ€λ‘ μ°κ²°μμΌλμΌλ©΄ μ¬μμ±μ΄ λλλΌλ μ κ·Όμ ν μ μκ² λλ€.
μλΉμ€κ° κ°μ§λ ipμ£Όμλ μΈλΆμμλ μ κ·Ό ν μ μμΌλ©° ν΄λ¬μ€ν° λ΄μμλ§ μ κ·Όμ΄ κ°λ₯νκ³ μ¬λ¬κ°μ νλλ₯Ό μ°κ²°μμΌλμμ λΆνλΆμ°λ μνν μ μλ€.
typeμ΅μ μμ ClusterIPλ μ΅μ λν κ°μΌλ‘ κΈ°λ³Έκ°μ΄ ClusterIpμ΄κΈ° λλ¬Έμ λͺ μν΄μ£Όμ§ μμλ κΈ°λ³Έμ μΌλ‘ μ΄ κ°μ κ°κ² λλ€. μ ymlμ 9000λ²ν¬νΈμ μμ²μ νλμ 8080ν¬νΈλ‘ μ°κ²°μμΌμ€λ€λ λ΄μ©μ΄λ€.
μΈλΆμμ μ κ·Όν μκ° μκ³ ν΄λ¬μ€ν°λ΄μμλ§ μ¬μ©νλ ipλ‘ μ΄μμμ κ°μ΄ μΈκ°λ μ¬μ©μλ§ μ κ·Όν μ μκΈ° λλ¬Έμ λ΄λΆ λμ보λ
λ νλμ μλΉμ€ μν λλ²κΉ
ν λ μ¬μ©νλ€.
ν΄λ¬μ€ν°μ μ°κ²°λμ΄μλ λͺ¨λ λ Έλμ νΉμ ν¬νΈλ₯Ό ν λΉνμ¬ νΉμ λ Έλμμ ν λΉλ ν¬νΈλ‘ μ°κ²°μ μλν λ λ Έλλ€μ΄ ν΄λΉ μλΉμ€λ‘ μ°κ²°μ΄ λκ³ μλΉμ€μ μ°κ²°λ νλμκ² μν μ 보λ΄μ£Όκ² λλ€.
nodePortλ 30000~32767μ¬μ΄μ ν¬νΈμ€μ μ νν μ μκ³ λͺ μνμ§ μμΌλ©΄ μ΄ κ°μ€ ν κ°μΌλ‘ μλμΌλ‘ μ€μ μ΄ λλ€.
κΈ°λ³Έμ μΌλ‘λ μ΄λ€ νΉμ λ
Έλλ₯Ό ν΅ν΄μ μ κ·Όμ ν΄ μμ²μ νλλΌκ³ μλΉμ€λ 1λ²λ
Έλλ΄μ μ‘΄μ¬νλ νλλ₯Ό μννλ κ²μ΄ μλλΌ μλΉμ€κ° νλ¨νμ¬ μ μ ν λ€λ₯Έ λ
Έλμ νλλ₯Ό ν λΉνκ² λλλ° externalTrafficPolicy: Local
μ΅μ
μ μ£Όλ©΄ νΉμ λ
Έλλ₯Ό ν΅ν΄ μ κ·Όν μμ²μ ν΄λΉ λ
Έλλ΄μ νλλ₯Ό μννλλ‘ ν΄μ€ μ μλ€.
물리μ μΈ νΈμ€νΈμ ipλ₯Ό ν΅ν΄μ νλμ μ κ·Όν μ μλ νΉμ§μ κ°μ§κ³ μλλ° λ³΄ν΅ νΈμ€νΈipλ λ΄λΆλ§μμλ§ μ κ·Όν μ μκ² λ€νΈμν¬λ₯Ό ꡬμ±νκΈ° λλ¬Έμ λ΄λΆλ§μ μ°κ²°
ν λλ λ°λͺ¨
λ μμ μ°κ²°μ©
μΌλ‘ μ¬μ©νλ€.
κΈ°λ³Έμ μΌλ‘ λ Έλν¬νΈμ μ΅μ μ κ°μ§κ³ μμΌλ©°, λ Έλλ€ μμ λ‘λλ°Έλ°μκ° νλ μμ±μ΄ λκ³ , λ‘λλ°Έλ°μκ° λΆνλΆμ°μ ν΅ν΄ μ¬λ¬ λ Έλλ€λ‘ μμ²μ λ³΄λΌ μ μλ€. μ΄λ μΈλΆμμ μ κ·Όν μ μλλ‘ ν΄μ£Όλ λ‘λλ°Έλ°μμ ipμ£Όμλ μλμΌλ‘ μμ±μ΄ λμ§ μκΈ° λλ¬Έμ λ³λλ‘ μΈλΆμ μ ipλ₯Ό ν λΉν΄μ£Όλ pluginμ΄ μ€μΉκ° λμ΄μμ΄μΌ ipμ£Όμκ° ν λΉλλ€. λ§μ½ aws, googleλ±μ ν΅ν΄μ λ§λ λ€λ©΄ ν΄λΉ pluginμ΄ μ€μΉκ° λμ΄μμ΄ ipμ£Όμκ° ν λΉ λλ€.
μ€μ μ μΌλ‘ μΈλΆμ μμ€ν μ λ ΈμΆμν¬λ λ΄λΆipλ₯Ό λ ΈμΆμν€μ§ μκ³ μΈλΆipλ§μ λ ΈμΆ μμΌ μ¬μ©λ μ μλ€.
cluster λ΄μ dnsκ° μ‘΄μ¬νμ¬ podμμ serviceλ₯Ό μ°κ²°ν λ serviceμ΄λ¦μΌλ‘ μ°κ²°μ΄ κ°λ₯νμλλ° podμ podκ°μ μ°κ²°λ headlessμ΅μ
μ μ΄μ©νλ©΄ dnsμ podμ΄λ¦.serviceμ΄λ¦
μ μ΄λ¦μΌλ‘ νλκ° μμ±λμ΄ ipκ° κ΄λ¦¬λκΈ° λλ¬Έμ podκ°μ μ°κ²°μ΄ κ°λ₯νλ€.
μΈλΆ ipμ£Όμλ₯Ό μκ³ μμ΄ endpointλ₯Ό μ΄μ©νμ¬ μ κ·Όμ νλλΌλ μ΄ μΈλΆ ipλ λ³κ²½κ°λ₯μ±μ΄ μκΈ° λλ¬Έμ domainμ΄λ¦μ μ§μ νλ λ°©λ²μ΄ νμνλ° μ΄λ μ¬μ©ν μ μλ λ°©λ²μ΄λ€.
k8s v1.11 μ΄μ μλ kube-dns λ₯Ό κΈ°λ°μΌλ‘ DNS μλΉμ€λ₯Ό μ 곡, μ΄νμλ CoreDNSλ₯Ό λμ νλ€.(보μκ³Ό μμ μ± λ¬Έμ )
μμ typeμ΄ k8sμ serviceμ μ°κ²°νμ¬ nodeμ μ μνκΈ° μν¨μ΄μλλ° μ΄λ serviceκ° λ§λ€μ΄μ§κ³ λ νμ κ·Έ ipλ₯Ό μ΄μ©ν΄μ μ κ·Όνλ λ°©λ²μ΄μμ§λ§ serviceμ podκ° λμμ μ¬λ¬κ° λ°°ν¬λκ³ ν podμμ λ€λ₯Έ podλ₯Ό μ°κ²°νκ³ μ ν λ podμ ipλ λμ ν λΉμ΄λ©° μ¬μμ±μ λ³κ²½μ΄λκΈ° λλ¬Έμ μ κ·Όμ΄ νλ€ μ μλλ° μ΄λ΄λ μ 곡νλ objectλ₯Ό μ΄μ©ν΄ ν΄κ²°ν μ μλ€.
serviceλ₯Ό clusterIPλ°©μμΌλ‘ μμ±μ νκ² λλ©΄ DNSκ° μμ μ¬μ§κ³Ό κ°μ΄ μμ±μ΄ λλλ° λ³΄λ©΄ serviceμ΄λ¦.namespaceμ΄λ¦.μ’
λ₯(service/pod...).dnsμ΄λ¦
μ κ·μΉμΌλ‘ domainμ΄λ¦μ΄ μμ±λλλ° μ΄λ₯Ό FQDN(Fully Qualified Domain Name)
μ΄λΌκ³ νλ€. κ·Έλ¦¬κ³ ν namespaceμμ serviceλ μ΄λ¦λ§μΌλ‘ μ κ·Όμ΄ κ°λ₯νμ§λ§ podλ μ 체 μ΄λ¦μΌλ‘ μ‘°νλ₯Ό ν΄μΌνκ³ podμ domain nameμ΄ λμ μΌλ‘ μμ±λ ipμ£Όμκ° λΆμ΄ μ§μ μ΄ λκΈ° λλ¬Έμ podμ΄λ¦μΌλ‘ domainμ μ§μκ° λΆκ°λ₯ν΄ podμλ μ κ·Όμ΄ λΆκ°λ₯νλ€.
serviceμ clusterIPλ₯Ό None
μΌλ‘ νμ¬ clusterIpλ₯Ό λ§λ€μ§ μκ³ podμ hostname
μ domainμ, subdomain
μ serviceμ΄λ¦μ λ£μ΄ μμ±ν΄μ£Όλ©΄ headlessλ‘ μμ±μ΄ λλ€. κ·Έλ κ² λλ©΄ νΉμ μ΄λ¦μΌλ‘ dnsμ domainλ€μ΄ μμ±μ΄ λκ³ μ΄ μ΄λ¦μ κ°μ§κ³ μ κ·Όμ ν μ μλ€.
μ°λ¦¬κ° serviceμμ podλ₯Ό μ°κ²°ν λ label
μ μ΄μ©νμ¬ μ°κ²°νμλλ° μ΄λ λ΄λΆμ μΌλ‘ endpointλ₯Ό μ΄μ©νμ¬ μ°κ²°λ λ°©μμ΄λ€. k8sλ μλΉμ€μ μ΄λ¦μΌλ‘ endpointλ₯Ό μμ±νκ³ λ΄λΆμ podμ μ μμ 보λ₯Ό μ
λ ₯νμ¬ service-pod μ°κ²°μ κ΄λ¦¬νλ€.
μ΄λ₯Ό μ΄μ©νμ¬ μ§μ endpointλ₯Ό μ€μ ν΄μ νΉμ podλ μΈλΆ μ£Όμμ μ κ·Όμ ν μ μλ€.
serviceλ₯Ό μμ±ν λ ExternalNameμμ±μ domainμ΄λ¦μ μ§μ ν΄μ£Όλ©΄ dns cacheκ° λ΄λΆ/μΈλΆ DNSμμ μ£Όμλ₯Ό μ°Ύμ μ°κ²°ν΄μ£ΌκΈ° λλ¬Έμ ipμ£Όμκ° λ°λμ΄λ μ μμ΄ κ°λ₯νλ€.