...
Setting up HTTP Load Balancing with Ingress
Create a backend service
Create a simple web services, analogous to those encountered in the previous chapter but of type NodePort, that are listening on a HTTP server on port 80. When you create a Service of type NodePort, Kubernetes makes your Service available on a randomly selected high port number (in the range 30000-32767) on all the nodes in your cluster.
...
Code Block | ||||
---|---|---|---|---|
| ||||
$ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE coffee-svc NodePort 10.110.66.194 <none> 80:31156/TCP 3d1h tea-svc NodePort 10.96.32.111 <none> 80:30458/TCP 3d1h # Verify that the service is working $ curl 10.110.66.194 Server address: 172.16.231.221:8080 Server name: coffee-6f4b79b975-v7cv2 Date: 30/Oct/2020:16:33:20 +0000 URI: / Request ID: 8d870888961431bf04dd2305d614004f |
Create an Ingress resource
Now we create an Ingress resource, to make your HTTP web server application publicly accessible. The following command defines an Ingress resource that forwards traffic that requests http://webserver-bar.com to the webserver
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: lb annotations: kubernetes.io/ingress.class: "openstack" octavia.ingress.kubernetes.io/internal: "false" # Set true, if you don't want your Ingress to be accessible from the public internet spec: rules: - host: webserver-bar.com http: paths: - path: /tea pathType: Prefix backend: service: name: tea-svc port: number: 80 - path: /coffee pathType: Prefix backend: service: name: coffee-svc port: number: 80 |
Verify that Ingress Resource has been created. Please note that the IP address will not be defined right away (wait for the ADDRESS field to get populated). It is possible to follow the implementation of the LoadBalancer LB step by step, from the creation of its components (Listener, Pool, Policy) to the assignment of the FIP, from the log of the Pod of the Ingress Controller (the whole operation can take a few minutes).
Code Block | ||||
---|---|---|---|---|
| ||||
$ kubectl get ing
NAME CLASS HOSTS ADDRESS PORTS AGE
lb <none> webserver-bar.com 131.154.97.200 80 3d1h |
Go to OpenStack and check that the LB has been created in the Project/Network/LoadBalancer tab.