Issue
-
After provisioning a managed controller, the GKE Services console shows a warning
Error during sync: error while evaluating the ingress spec: service "<namespace>/<controllerName>" is type "ClusterIP", expected "NodePort" or "LoadBalancer"
:
Explanation
This is a warning and does not impact the operations or the cluster. kubectl get ing
can be used to validate that the Ingress resources exist.
The root cause of that warning is often due to the fact that there are multiple Ingress Controller installed in the cluster. On GKE, there is the GCE Ingress Controller installed by default. Installing a different Ingress controller - like for example the Kubernetes Ingress Nginx Controller - could cause this warning in GCE UI because there are 2 controllers claiming the Ingress resources.
Resolution
The solution / workaround is to force one controller to satisfy the ingress using the kubernetes.io/ingress.class
annotation as explained in https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress.
In the configuration of an existing Managed controller, add the following snippet to the YAML field:
--- kind: Ingress metadata: annotations: kubernetes.io/ingress.class: "nginx"
Then restart the controller from CJOC’s UI.
The same configuration can be applied under | . This setting would apply to newly created controller only.
Another solution is to disable / uninstall one of the ingress controller. To disable the GCE Ingress Controller, please refer to How do I disable the GCE Ingress controller?