Рішення для LoadBalancer в локальному Kubernetes Ingress

pic

Ingress

Об'єкт API, який керує зовнішнім доступом до сервісів у кластері, зазвичай через HTTP.

Ingress може забезпечити балансування навантаження, термінацію SSL та хостинг за іменем.

Типи Ingress

1. Ingress для одного сервісу:

Ingress, вказуючи стандартний бекенд без правил

2. Ingress з хостингом за іменем:

Підтримує маршрутизацію HTTP трафіку до кількох імен хостів на одній IP-адресі

3. Простий Fanout / Path Based ingress:

Маршрутизує трафік з однієї IP-адреси до кількох сервісів, залежно від HTTP URI.

Правило Ingress

Правила, визначені об'єктом Ingress

pic

Передумови

Вам потрібно мати Ingress controller, щоб задовольнити Ingress.
pic

Ingress

Об'єкт API, який керує зовнішнім доступом до сервісів у кластері, зазвичай через HTTP.

Ingress може забезпечити балансування навантаження, термінацію SSL та хостинг за іменем.

Типи Ingress

1. Ingress для одного сервісу:

Ingress, вказуючи стандартний бекенд без правил

2. Ingress з хостингом за іменем:

Підтримує маршрутизацію HTTP трафіку до кількох імен хостів на одній IP-адресі

3. Простий Fanout / Path Based ingress:

Маршрутизує трафік з однієї IP-адреси до кількох сервісів, залежно від HTTP URI.

Правило Ingress

Правила, визначені об'єктом Ingress

pic

Передумови

Вам потрібно мати Ingress controller, щоб задовольнити Ingress.

Створення Namespace

kubectl create namespace ingress-nginx

Встановлення Nginx Ingress

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.2/deploy/static/provider/cloud/deploy.yaml

Вихідні дані

pic

Перевірка перед запуском

kubectl get pods -n ingress-nginx

Переконайтесь, що pod контролера ingress працює, запущений та готовий

Вихідні дані

pic

Список сервісів

kubectl get svc --namespace=ingress-nginx

Вихідні дані

pic

LoadBalancer в процесі створення, оскільки кластер локальний, а не в хмарі

Рішення для LoadBalancer в локальному Kubernetes

metallb

Але у нас є рішення для створення LoadBalancer у локальному кластері за допомогою metallb.

metallb — не пов'язано з екзаменом, використовується лише для наших лабораторних цілей

Встановлення metallb

kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.3/config/manifests/metallb-native.yaml

Список pods

kubectl get pods -n metallb-system

Вихідні дані

pic

Визначення IP-адрес для присвоєння сервісам LoadBalancer

vi ip-pool.yaml
apiVersion: metallb.io/v1beta1  
kind: IPAddressPool  
metadata:  
 name: cheap  
 namespace: metallb-system  
spec:  
 addresses:  
 - 192.168.10.0/24

Застосування пулу IP-адрес

kubectl apply -f ip-pool.yaml

Перевірка статусу IP-адреси LoadBalancer для nginx ingress сервісу

kubectl get svc -n ingress-nginx

Вихідні дані

pic

IP-адресу було надано за допомогою Metallb.

Одиничний Ingress

Розгортання тестового застосунку.

Створення deployment

vi kubewebserver.yaml
apiVersion: apps/v1  
kind: Deployment  
metadata:  
 name: kubewebserver  
 labels:  
 app: kubewebserver  
spec:  
 replicas: 1  
 selector:  
 matchLabels:  
 app: kubewebserver  
 template:  
 metadata:  
 labels:  
 app: kubewebserver  
 spec:  
 containers:  
 - name: kubewebserver  
 image: nginx:alpine  
 ports:  
 - containerPort: 80

Застосування deployment

kubectl apply -f kubewebserver.yaml

Створення сервісу

vi kubewebserver-service.yaml
apiVersion: v1  
kind: Service  
metadata:  
 name: kubewebserver-service  
 labels:  
 app: kubewebserver-service  
spec:  
 type: ClusterIP  
 ports:  
 - port: 80  
 targetPort: 80  
 protocol: TCP  
 selector:  
 app: kubewebserver

Застосування сервісу

kubectl apply -f kubewebserver-service.yaml

Створення Ingress

Для отримання класу ingress

kubectl get ingressClass -A

Створення мінімального ingress без хоста

vi minimal-ingress.yaml
apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata:  
 name: minimal-ingress  
 annotations:  
 nginx.ingress.kubernetes.io/rewrite-target: /  
spec:  
 ingressClassName: nginx  
 rules:  
 - http:  
 paths:  
 - path: /  
 pathType: Prefix  
 backend:  
 service:  
 name: kubewebserver-service  
 port:  
 number: 80

Застосування ingress

kubectl apply -f minimal-ingress.yaml

Список ingress

kubectl get ingress

Вихідні дані

pic

Перевірка

curl 192.168.10.0

Вихідні дані

pic

Перекладено з: Local Kubernetes Ingress LoadBalancer Solution

Leave a Reply

Your email address will not be published. Required fields are marked *