service - deptno/deptno.github.io GitHub Wiki

service

kubernetes service label selector λ₯Ό ν†΅ν•΄μ„œ load balancing 을 ν•˜λ©° endpoint κ°€ μžλ™μœΌλ‘œ λΆ™λŠ”λ‹€ endpoint κ°€ μƒμ„±λ˜μ§€ μ•ŠμœΌλ©° 이λ₯Ό μœ„ν•΄μ„œλŠ” label selector λ₯Ό μŠ€νŽ™ λͺ…μ‹œν•˜μ§€ μ•ŠμœΌλ©΄ λœλ‹€

headless service

headless service λŠ” sepc.clusterIP: None 을 ν†΅ν•΄μ„œ λ§Œλ“€μ–΄μ§€λ©° 이 κ²½μš°μ— kube-proxy μ—μ„œ μ²˜λ¦¬ν•˜μ§€ μ•Šκ²Œλœλ‹€. 도메인 λ„€μž„μ„ 톡해 접근이 κ°€λŠ₯ν•˜λ‹€

endpoint κ°€ μžˆλŠ” service

  • nslookup 을 μ‚¬μš©ν•˜λ©΄ 일반적인 service 경우 ν•΄λ‹Ή ip λ₯Ό λ…ΈμΆœν•œλ‹€
  • headless service 의 κ²½μš°μ—λŠ” endpoint λͺ©λ‘ 전체λ₯Ό λžœλ€ν•œ μˆœμ„œλ‘œ μ œκ³΅ν•œλ‹€(λ‘œλ“œλ°ΈλŸ°μ‹±μ΄ μ—†μŒ)
    • curl 등은 이 쀑 첫번째 endpoint 와 ν†΅μ‹ ν•œλ‹€
    • μ•„λ§ˆλ„ ν•˜λ‚˜μ˜ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œλŠ” ν•˜λ‚˜μ˜ pod 와 연결이 μ΄λ£¨μ–΄μ Έμ•Όν•œλ‹€κ³  μ˜λ―Έκ°€ μžˆλ‹€κ³  μƒκ°ν•œλ‹€(stateful set, sticky session)
      • μ‹€μ œλ‘œ κ·ΈλŸ°μ§€λŠ” 확인이 ν•„μš”, 그럼 envoy κ°™μ€κ²Œ μ™œμžˆμ–΄;

endpoint κ°€ μ—†λŠ” service

  1. selector λ₯Ό μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ endpoint κ°€ μƒμ„±λ˜μ§€ μ•ŠλŠ”λ‹€
  2. service λͺ…κ³Ό 같은 endpoint λ₯Ό μƒμ„±ν•œλ‹€ headless service λŠ” 이미 endpoint κ°€ μžˆμ–΄μ„œ 접근이 κ°€λŠ₯ν•œ ν΄λŸ¬μŠ€ν„° μ™Έ μ„œλΉ„μŠ€λ₯Ό 뢙일 λ•Œ μ‚¬μš©κ°€λŠ₯ν•˜λ‹€.

곡식 λ¬Έμ„œμ— μ„€λͺ…이 잘 λ˜μ–΄ μžˆμœΌλ‹ˆ 이λ₯Ό μ°Έμ‘°ν•œλ‹€.

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376
---
apiVersion: v1
kind: Endpoints
metadata:
  # μ—¬κΈ°μ„œμ˜ 이름은 μ„œλΉ„μŠ€μ˜ 이름과 μΌμΉ˜ν•΄μ•Ό ν•œλ‹€.
  name: my-service
subsets:
  - addresses:
      - ip: 192.0.2.42
    ports:
      - port: 9376

service μ—λŠ” ping 을 ν•  수 μ—†λ‹€. curl, wget λ“±μœΌλ‘œ 접근을 ν™•μΈν•œλ‹€

link