Are Kubernetes Ingress objects deployed in cluster

1/16/2018

When a Kubernetes service is exposed via an Ingress object, is the load balancer "phisically" deployed in the cluster, i.e. as some pod controller inside the cluster nodes, or is just another managed service provisioned by the given cloud provider?

Are there cloud provider specific differences. Is the above question true for Google Kubernetes Engine and Amazon Web Services?

-- adrpino
amazon-web-services
google-cloud-platform
google-kubernetes-engine
kubernetes

3 Answers

1/16/2018

I will answer with respect to Google Cloud Engine.

Yes, everytime, you deploy a new ingress resource, a Load balancer is created which you can view from the section:

GCP Console --> Network services --> LoadBalancing

Clicking on the respective Loadbalancer id gives you all the details, for example the External IP, the backend service, ecc

-- Rajeev Ghosh
Source: StackOverflow

1/16/2018

By default, a kubernetes cluster has no IngressController at all. This means that you need to deploy one yourself if you are on premise.

Some cloud providers do provide a default ingress controller in their kubernetes offer though, and this is the case of GKE. In their case the ingress controller is provided "As a service" but I am unsure about where it is exactly deployed.

Talking about AWS, if you deploy a cluster using kops you're on your own (you need to deploy an ingress controller yourself) but different deploy options on AWS could include an ingress controller deployment.

-- whites11
Source: StackOverflow

1/24/2018

I would like to make some clarification concerning the Google Ingress Controller starting from its definition:

An Ingress Controller is a daemon, deployed as a Kubernetes Pod, that watches the apiserver's /ingresses endpoint for updates to the Ingress resource. Its job is to satisfy requests for Ingresses.

First of all if you want to understand better its behaviour I suggest you to read the official Kubernetes GitHub description of this resource.

In particular notice that:

  • It is a Daemon

  • It is deployed in a pod

  • It is in kube-system namespace

  • It is hidden to the customer

However you will not be able to "see" this resource for example running : kubectl get all --all-namaspaces, because it is running on the master and not showed to the customer since it is a managed resource considered essential for the operation of the platform itself. As stated in the official documentation:

GCE/Google Kubernetes Engine deploys an ingress controller on the master

Note that the master itself of any the Google Cloud Kubernetes clusters is not accessible to the user and completely managed.

-- GalloCedrone
Source: StackOverflow