Middle
Kuidas saame pääseda Kubernetes konteinerile, kus rakendust töötab, välisest võrgust?
sobes.tech AI
Vastus AI-lt
On on olemas mitu peamist viisi, kuidas pääseda Kubernetes konteinerile välise võrgu kaudu:
-
Service tüüp LoadBalancer:
- Pilveteenuse pakkujad (AWS, GCP, Azure) loovad välise koormusbalansööri, mis suunab liikluse teie rakenduse podidele.
- 0n määratud väline IP-aadress.
- Lihtsaim viis pilvekeskkonnas.
-
Service tüüp NodePort:
- Avab pordi iga sõlme peal klastris.
- See port suunab liikluse teie rakenduse teenusele.
- Juurdepääs toimub mis tahes sõlme IP ja NodePort numbriga.
- Vähem skaleeritav ja vähem turvaline kui LoadBalancer.
-
Service tüüp ClusterIP koos Ingressiga:
- ClusterIP - teenus, mis on saadaval ainult klastris.
- Ingress - API objekt, mis haldab välist juurdepääsu klastris olevatele teenustele.
- Ingress-kontroller (nt Nginx Ingress Controller, Traefik) kuulab välist liiklust ja marsruutib selle sobivale ClusterIP teenusele.
- Võimaldab tsentraliseeritult hallata marsruutimist, SSL-terminatsiooni, koormusjaotust.
- Paindlik ja skaleeritav lähenemine.
-
Service tüüp ExternalName:
- Loob pseudonüümi välisele domeenile. Ei paku otsest juurdepääsu konteinerile selle teenuse kaudu, kuid võimaldab kasutada DNS-nime klastris, et pöörduda välise ressursi poole. Ei sobi otsejuurdepääsuks konteinerile väljast.
-
Otsejuurdepääs NodePort/HostPort kaudu Podile:
- Võite määrata
hostPortpodi spetsifikatsioonis, et avada port sõlmel, kus pod töötab. Väga soovitatav mitte teha tootmiskeskkonnas, kuna haldamine on keeruline ja võib tekkida konfliktide portidega. - Sarnaselt,
nodePortvõib määrata NodePort tüüpi teenusele.
- Võite määrata
Konfiguratsiooninäited:
-
LoadBalancer teenus:
// 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 teenus:
// 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 # kui pole määratud, määrab Kubernetes type: NodePort -
Ingress (ClusterIP teenus):
// service-clusterip.yaml (olemasolev) 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
Valitud meetod sõltub skaleerimisnõuetest, turvalisusest, juurutuskeskkonnast (pilv või kohapeal) ja vajadusest keskse juurdepääsuhalduse järele. Ingress on soovitatav lahendus tootmissüsteemidele.