Middle
Tətbiqin işlədiyi Kubernetes konteynerinə xarici şəbəkədən necə daxil ola bilərik?
sobes.tech Süni İntellekt
AI-dan cavab
Kubernetes konteynerinə xarici şəbəkədən daxil olmaq üçün bir neçə əsas üsul mövcuddur:
-
LoadBalancer növü Xidməti:
- Bulud təminatçıları (AWS, GCP, Azure) xarici yük balanslaşdırıcı yaradır və bu, tətbiqinizin podlarına trafik yönəldir.
- Xarici IP ünvanı təyin edilir.
- Bulud mühitində ən sadə üsuldur.
-
NodePort növü Xidməti:
- Hər bir nodda port açır.
- Bu port trafikini tətbiqinizin xidmətinə yönəldir.
- Hər hansı bir nodun IP ünvanı və NodePort nömrəsi ilə daxil olmaq mümkündür.
- LoadBalancer-dən daha az miqyaslı və təhlükəsizdir.
-
ClusterIP növü Xidməti və Ingress birlikdə:
- ClusterIP - yalnız klaster daxilində əlçatandır.
- Ingress - klasterdəki xidmətlərə xarici giriş üçün API obyekti.
- Ingress idarəedicisi (məsələn, Nginx Ingress Controller, Traefik) xarici trafiki dinləyir və uyğun ClusterIP xidmətinə yönəldir.
- Yönləndirməni, SSL terminini, yük balanslaşdırmanı mərkəzləşdirilmiş şəkildə idarə etməyə imkan verir.
- Elastik və miqyaslana bilən yanaşma.
-
ExternalName növü Xidməti:
- Xarici domen üçün pseudonim yaradır. Bu xidmət vasitəsilə konteynerə birbaşa giriş təmin etmir, lakin DNS adını klaster daxilində xarici resursa müraciət üçün istifadə etməyə imkan verir. Birbaşa konteynerə giriş üçün uyğun deyil.
-
Pod-da NodePort/HostPort ilə birbaşa giriş:
- Pod spesifikasiyasında
hostPortgöstərə bilərsiniz, bu da nodda port açır. Bu, aşağı idarəetmə və port konfliktləri səbəbindən istehsal mühitində tövsiyə edilmir. - Eynilə,
nodePortNodePort tipli Xidmətə göstərə bilərsiniz.
- Pod spesifikasiyasında
Konfiqurasiya nümunələri:
-
LoadBalancer Xidməti:
// service.yaml apiVersion: v1 kind: Service metadata: name: my-app-service spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 8080 type: LoadBalancer -
NodePort Xidməti:
// service-nodeport.yaml apiVersion: v1 kind: Service metadata: name: my-app-service-np spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 8080 nodePort: 30000 # optional, Kubernetes təyin edəcək əgər göstərilməzsə type: NodePort -
Ingress (ClusterIP xidməti üçün):
// service-clusterip.yaml (artıq mövcuddur) apiVersion: v1 kind: Service metadata: name: my-app-service-ci spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 8080 type: ClusterIP// ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-app-ingress spec: rules: - host: myapp.example.com http: paths: - path: / pathType: Prefix backend: service: name: my-app-service-ci port: number: 80
Seçim, miqyaslama, təhlükəsizlik, yerləşdirmə mühiti və mərkəzləşdirilmiş giriş idarəetmə tələblərinə əsaslanır. Ingress istehsal sistemləri üçün üstün seçimdir.