Middle
Чӣ гуна метавонем ба контейнери Kubernetes, ки дар он барнома дар ҳоли иҷро аст, аз шабакаи беруна дастрасӣ пайдо кунем?
sobes.tech AI
Ҷавоб аз AI
Барои дастрасӣ ба контейнери Kubernetes аз шабакаи беруна, чанд роҳҳои асосӣ мавҷуданд:
-
Хизматрасонии LoadBalancer:
- Провайдерҳои облак (AWS, GCP, Azure) балансиркунии борро дар беруни созишнома месозанд, ки трафикро ба подҳои шумо равона мекунад.
- IP-и беруна таъин мешавад.
- Самтҳои осонтарин дар муҳити облак.
-
Хизматрасонии NodePort:
- Портро дар ҳар як нод дар кластер мекушояд.
- Ин порт трафикро ба хидмати барномаатон равона мекунад.
- Дастрасӣ тавассути IP-и ҳар кадом нод ва рақами NodePort.
- Камтар масштабшаванда ва бехатартар аз LoadBalancer.
-
Хизматрасонии ClusterIP бо Ingress:
- ClusterIP танҳо дар дохили кластер дастрас аст.
- Ingress объекти API аст, ки дастрасии беруна ба хидматҳоро дар кластер идора мекунад.
- Контролери Ingress (масалан, Nginx Ingress Controller, Traefik) трафики берунро мешунавад ва ба хидмати мувофиқ дар ClusterIP равона мекунад.
- Идоракунии марказонидашударо, SSL-ро, балансгирии борро имкон медиҳад.
- Раванди чандир ва масштабшаванда.
-
Хизматрасонии ExternalName:
- Псевдоним барои домейни беруна месозад. Маъзул намекунад, ки ба контейнер тавассути ин хидмат мустақим дастрасӣ пайдо шавад, аммо имкон медиҳад, ки DNS-ро дар дохили кластер барои муроҷиат ба манбаи беруна истифода баред. Барои дастрасии мустақим ба контейнер аз берун мувофиқ нест.
-
Дастрасии мустақим ба NodePort/HostPort дар Pod:
- Мумкин аст
hostPort-ро дар спецификацияи pod нишон диҳед, то портро дар нод, ки pod дар он фаъол аст, кушоед. Ин дар муҳити истеҳсолӣ тавсия дода намешавад, зеро идоракунии кам ва эҳтимолан низоъҳои портҳо. - Ҳамчунин,
nodePort-ро дар хидмати NodePort нишон додан мумкин аст.
- Мумкин аст
Маслиҳатҳо барои конфигуратсия:
-
Хизмат LoadBalancer:
// 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:
// 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 # ихтиёрӣ, Kubernetes онро таъин мекунад, агар нишон дода нашуда бошад type: NodePort -
Ingress (хизмат типи ClusterIP):
// service-clusterip.yaml (аллакай вуҷуд дорад) 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
Интихоби усул вобаста аст ба талаботҳои масштабшавӣ, бехатарӣ, муҳити ҷойгиркунӣ (облако ё он-премис) ва ниёз ба идоракунии марказонидашудаи дастрасӣ. Ingress барои системҳои истеҳсолӣ беҳтарин қарор аст.