Load Balancer

Konfiguracja publicznego dostępu do usługi w klastrze Oktawave Kubernetes Service

Usługa Load Balancera pozwala na wystawienie dostępu do aplikacji działającej w klastrze poprzez publiczny adres IP oraz load-balancing ruchu. Load Balancer tworzony jest poprzez zdefiniowanie serwisu w klastrze Kubernetes.

Tworzenie Load Balancera

Tworzenie Load Balancera odbywa się poprzez definicję serwisu typu LoadBalancer. Poniżej przedstawiona jest minimalna konfiguracja serwisu. Tablica ports musi zawierać dokładnie jeden element.

oks-wordpress-lb.yml
apiVersion: v1
kind: Service
metadata:
name: hello-wordpress-lb
labels:
app: hello-wordpress
spec:
ports:
- port: 80
selector:
app: hello-wordpress
type: LoadBalancer

Jako selector w tym wypadku użyliśmy nazwy deploymentu pod parametrem app. Będzie to Load Balancer dla Wordpressa zdefiniowanego w Uruchomienie aplikacji.

Tak utworzony plik przekazujemy do kubectl jako konfigurację nowego serwisu:

kubectl apply -f oks-wordpress-lb.yml

Możemy zweryfikować jego działanie komendą:

$ kubectl get svc  15:08:34 
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 9d
hello-wordpress-lb LoadBalancer 10.99.105.105 <pending> 80:31201/TCP 4s

Zaawansowana konfiguracja Load Balancera

Load balancer posiada dodatkowe opcje konfiguracji, dostępne przez wpis w annotations.

Session Persistence Type

Dostępne wartości: IP, Cookie, None. Domyślnie: IP.

apiVersion: v1
kind: Service
metadata:
name: sample-load-balancer
annotations:
# Session Persistence type
k44sSessionPersistenceType: "IP"
spec:
type: LoadBalancer
ports:
- protocol: TCP
port: 80
targetPort: 3000
name: http

Load Balancer Algorithm

Dostępne wartości: RoundRobin, LeastConnection, LeastResponseTime, SourceIPHash. Domyślnie: RoundRobin.

...
metadata:
name: sample-load-balancer
annotations:
k44sLoadBalancerAlgorithm: "RoundRobin"
...