Middle
Кубернетес контейнерине сырткы тармактан кандайча кире алсак болот?
sobes.tech AI
AIден жооп
Кубернетес контейнерине сырттан кирүү үчүн негизги бир нече жол бар:
-
LoadBalancer түрүндөгү кызмат:
- Булут камсыздоочулар (AWS, GCP, Azure) сырттан жүктү теңдештирүүчү түзүшөт, ал сиздин колдонмоңуздун поддарына трафикти багыттайт.
- Чет эл IP дареги берилет.
- Бул облак чөйрөсүндө эң жөнөкөй жол.
-
NodePort түрүндөгү кызмат:
- Ар бир түйүндө порт ачат.
- Бул порт трафикти колдонмоңуздун кызматына багыттайт.
- Ар бир түйүндүн IP дареги жана NodePort номери аркылуу кирүү мүмкүн.
- Азыркыга караганда масштабдуу эмес жана коопсуздугу жогору, LoadBalancerге салыштырмалуу.
-
ClusterIP түрүндөгү кызмат жана Ingress бирге:
- ClusterIP — кластер ичинде гана жеткиликтүү.
- Ingress — API объектиси, ал кластердеги кызматтарга сырттан кирүүнү башкаруу.
- Ingress контроллери (мисалы, Nginx Ingress Controller, Traefik) сырттан келген трафикти угуп, ылайыктуу ClusterIP кызматка багыттайт.
- Маршрутизацияны, SSL-терминалдаштыруу, жүктү теңдештирүүнү борборлоштурууга мүмкүндүк берет.
- Ийкемдүү жана масштабдуу ыкма.
-
ExternalName түрүндөгү кызмат:
- Чет эл домен аталышы үчүн псевдоним түзөт. Бул кызмат аркылуу контейнерге түз кирүү мүмкүн эмес, бирок DNS атын кластер ичинде колдонуп, сырттагы ресурска кайрылууга болот. Түз кирүүгө ылайык эмес.
-
Pod'да NodePort/HostPort аркылуу түз кирүү:
hostPortкөрсөтө аласыз, 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
Метод тандоо масштабдоо, коопсуздук, жайгаштыруу чөйрөсү (булут же on-premise) жана борборлоштурулган кирүү башкаруу талаптарына жараша болот. Ingress — өндүрүш системдери үчүн эң жакшы чечим.