Middle
Tashqi tarmoqdan ilova ishga tushirilgan Kubernetes konteyneriga qanday kirish mumkin?
sobes.tech AI
AIdan javob
Kubernetes konteyneriga tashqi tarmoqdan kirish uchun bir nechta asosiy usullar mavjud:
-
LoadBalancer turi xizmat:
- Bulut provayderlari (AWS, GCP, Azure) tashqi yuk balanslovchi yaratadi va trafikni ilovangiz podlariga yo'naltiradi.
- Tashqi IP manzil tayinlanadi.
- Bulut muhitida eng oddiy usul.
-
NodePort turi xizmat:
- Klasterdagi har bir tugunida port ochadi.
- Bu port trafikni ilovangiz xizmatiga yo'naltiradi.
- Har qanday tugunning IP va NodePort raqami orqali kirish mumkin.
- LoadBalancer ga qaraganda kamroq kengaytiriladigan va xavfsizroq.
-
ClusterIP turi xizmat va Ingress bilan:
- ClusterIP - faqat klaster ichida mavjud xizmat.
- Ingress - klasterdagi xizmatlarga tashqi kirishni boshqaradigan API obyekti.
- Ingress controller (masalan, Nginx Ingress Controller, Traefik) tashqi trafikni eshitadi va uni mos keladigan ClusterIP xizmatiga yo'naltiradi.
- Yo'naltirish, SSL terminatsiya, yuk balansini boshqarish uchun markaziy boshqaruv imkonini beradi.
- Moslashuvchan va kengaytiriladigan yondashuv.
-
ExternalName turi xizmat:
- tashqi domen uchun alias yaratadi. Bu xizmat orqali to'g'ridan-to'g'ri konteynerga kirish ta'minlamaydi, lekin klaster ichida DNS nomidan foydalanib tashqi resursga murojaat qilish imkonini beradi. Tashqaridan to'g'ridan-to'g'ri kirish uchun mos emas.
-
Podda to'g'ridan-to'g'ri NodePort/HostPort kirish:
- Pod spetsifikatsiyasida
hostPortni belgilash orqali pod ishga tushirilgan tugunda port ochish mumkin. Bu ishlab chiqarish muhitida tavsiya etilmaydi, kam boshqaruv va portlar to'qnashuvi ehtimoli bilan. - Shuningdek,
nodePortNodePort turidagi xizmatda belgilanishi mumkin.
- Pod spetsifikatsiyasida
Konfiguratsiya misollari:
-
LoadBalancer turi xizmat:
// 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 turi xizmat:
// 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 # ixtiyoriy, Kubernetes belgilaydi agar ko'rsatilmasa type: NodePort -
Ingress (ClusterIP xizmat uchun):
// service-clusterip.yaml (oldindan mavjud deb hisoblanadi) 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
Usul qilish usuli kengaytirilish, xavfsizlik, joylashuv muhitiga (bulut yoki on-premise) va markaziy kirish boshqaruvi ehtiyojlariga bog'liq. Ingress ishlab chiqarish tizimlari uchun afzalroq yechim hisoblanadi.