Middle
Kā mēs varam piekļūt Kubernetes konteineram, kurā darbojas lietojumprogramma, no ārējās tīkla?
sobes.tech AI
Atbilde no AI
Ir vairākas galvenās metodes, kā piekļūt Kubernetes konteineram no ārējā tīkla:
-
Service tips LoadBalancer:
- Mākoņu pakalpojumu sniedzēji (AWS, GCP, Azure) izveido ārēju slodzes balansētāju, kas novirza trafiku uz jūsu lietojumprogrammas podiem.
- Piešķir ārēju IP adresi.
- Vienkāršākais veids mākoņvidē.
-
Service tips NodePort:
- Atver portu katrā mezglā klasterī.
- Šis ports novirza trafiku uz jūsu lietojumprogrammas pakalpojumu.
- Piekļuve notiek caur jebkura mezgla IP un NodePort numuru.
- Mazāk mērogojams un mazāk drošs nekā LoadBalancer.
-
Service tips ClusterIP kopā ar Ingress:
- ClusterIP - pakalpojums, kas pieejams tikai klasterī.
- Ingress - API objekts, kas pārvalda ārējo piekļuvi klastera pakalpojumiem.
- Ingress kontrolieris (piem., Nginx Ingress Controller, Traefik) klausās ārējo trafiku un maršrutē to uz atbilstošo ClusterIP pakalpojumu.
- Ļauj centralizēti pārvaldīt maršrutēšanu, SSL termināciju, slodzes balansēšanu.
- Elastīgs un mērogojams pieejas veids.
-
Service tips ExternalName:
- Izveido aizstājvārdu ārējam domēnam. Nesniedz tiešu piekļuvi konteineram caur šo pakalpojumu, bet ļauj izmantot DNS vārdu iekšā klasterī, lai piekļūtu ārējam resursam. Nav piemērots tiešai piekļuvei konteineram no ārpuses.
-
Tieša piekļuve caur NodePort/HostPort uz Pod:
- Var norādīt
hostPortpoda specifikācijā, lai atvērtu portu uz mezgla, kur darbojas pod. - Ļoti ieteicams nedarīt ražošanas vidē, jo tas ir grūti pārvaldāms un var radīt konfliktus portiem.
- Līdzīgi,
nodePortvar norādīt NodePort tipa pakalpojumā.
- Var norādīt
Konfigurācijas piemēri:
-
LoadBalancer pakalpojums:
// 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 pakalpojums:
// 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 # ja nav norādīts, Kubernetes to piešķirs type: NodePort -
Ingress (ClusterIP pakalpojums):
// service-clusterip.yaml (jau pastāv) 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
Izvēlētais metode ir atkarīgs no mērogošanas prasībām, drošības, izvietošanas vidē (mākonī vai vietējā) un nepieciešamības pēc centralizētas piekļuves pārvaldības. Ingress ir ieteicams risinājums ražošanas sistēmām.