Sobes.tech
Junior

Ի՞նչ տարբերություն կա headless ծառայության և այլ տեսակի ծառայությունների միջև։

sobes.tech AI

Պատասխան AI-ից

Headless-ծառայությունը չունի կլաստերային IP հասցե և չի իրականացնում բեռի հավասարակշռում: Փոխարենը, DNS ուղղակիորեն վերադարձնում է բոլոր պոդների IP հասցեները, որոնք համապատասխանում են ծառայության սելեկտորին: Սա թույլ է տալիս հաճախորդին ինքնուրույն ընտրել, թե որ պոդին կապվի կամ օգտագործել իր սեփական բեռի հավասարակշռման ալգորիթմը:

Տիպիկ օգտագործման տարբերակներ՝

  • StatefulSets: Ապահովում է միավորային ցանցային նույնականացում և կայուն տվյալների պահպանում:
  • Discovery: Հաճախորդները կարող են անմիջապես հայտնաբերել պոդները և կառավարել կապերը:
  • Իմ սեփական բեռի հավասարակշռում: Ծառայությունները կարող են իրագործել իրենց սեփական բեռի հավասարակշռման ալգորիթմները:

Համեմատություն ClusterIP և NodePort ծառայությունների հետ՝

Ծառայության տեսակ Կլաստերային IP Բեռի հավասարակշռում DNS
ClusterIP Այո Kubernetes Վերադարձնում է ծառայության IP-հասցեն
NodePort Այո Kubernetes Վերադարձնում է ծառայության IP-հասցեն
Headless Ոչ Ոչ (հաճախորդ) Վերադարձնում է պոդների IP-հասցեները

Headless ծառայության YAML սահմանում՝

apiVersion: v1
kind: Service
metadata:
  name: իմ-հետամիտ-ծառայություն
spec:
  selector:
    app: իմ-հավելվածը # Սելեկտոր պոդների համար
  clusterIP: None # Հիմնական տարբերությունը - չկա կլաստերային IP
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

Ինքը՝ իմ-հետամիտ-ծառայություն-ին միակ IP-ով մուտք գործելու փոխարեն, հաճախորդը կստանա պոդների IP հասցեների ցանկը:

$ kubectl get pods -l app=իմ-հավելվածը -o custom-columns=NAME:.metadata.name,IP:.status.podIP
NAME            IP
իմ-հավելված-abcde    10.42.0.10
իմ-հավելված-fghij    10.42.0.11
իմ-հավելված-klmno    10.42.0.12

Այդուհանդերձ, հաճախորդը կարող է ընտրել ցանկացած IP հասցե, որպեսզի հաստատի կապը։