Azure-docs: Recurring Issue with Sample App -- External IP Pending Indefinitely

Created on 10 May 2019  Â·  14Comments  Â·  Source: MicrosoftDocs/azure-docs

I am encountering something very like what is described in #12462, when following https://docs.microsoft.com/en-us/azure/aks/ingress-static-ip. I run:

helm install stable/nginx-ingress --set controller.service.loadBalancerIP="<redacted>" --set controller.replicaCount=2

This is all as specified in the docs, yet, almost an hour later, I still see:

NAME                                       TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)                                        AGE
dandy-mule-nginx-ingress-controller        LoadBalancer   <redacted>     <pending>        80:31563/TCP,443:32498/TCP                     52m

I'm at a loss for how to proceed. I tried looking at the nginx-ingress pod logs, and assigned the AKS SP Contributor rights to the entire resource group so far, all to no avail. Any help would be appreciated!


Document Details

⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

Pri2 container-servicsvc cxp product-question triaged

Most helpful comment

Founded, you have to move the static IPs to the correct Resource-group of your Cluster, usually AKS automatically created a Loadbalancer mapping Resource-group MC-* for k8s.

_kubectl describe service_ can be useful

Please update the document or fix on azure backend.

All 14 comments

13935 is like this one too. I instantiated a completely new copy of the environment like it suggested, though (using terraform, this was pretty quick and easy), and creating an ingress controller in the new AKS cluster had the same problem attaching to the new public IP. I can only surmise that there is some permission that I am missing, but I can't find any error messages or doc to help diagnose it.

I simplified my test case a little, attempting to let the k8s allocate the load balancer IP, as in this doc, so just:

helm install stable/nginx-ingress --set controller.replicaCount=2

and it still stays pending indefinitely. Since this is the first time that I tried this with an explicitly created service principal, I still suspect that there is something undocumented about the SP created implicitly with the AKS cluster. Again, even assigning it a Contributor role to the entire resource group isn't enough to get this done and I can't locate any error messages.

Thanks for the feedback! We are currently investigating and will update you shortly.

Thanks for reaching out @derekrprice As you found some other users have seen similar problems in the past. Generally deploying a new cluster will fix the issue. However if you are adding additional parameters outside of this doc there might be some other items getting hung up. I have gone through the doc as written and verified it works. So best route for you to go to get this resolved would be a technical support ticket.

If you don't have the ability to open a technical support ticket you can email me at [email protected] and provide me with your Azure SubscriptionID and link to this issue. I can then enable your subscription for that free support request.

I will close this for now and be on the lookout for that email if needed :)

@MicahMcKittrick-MSFT I'm also encountering this problem and unsure as to how to proceed :( Is creating a new cluster the best route to take?

Same issue here. I'm stuck with 5 IPs that can not be deleted and nothing is using them. Is there any solution?

Check the Public IP SKU. For some reason, if you use standard External IP stay pending but if you use basic it works in a few minutes
You can not change the SKU for a PIP you need to recreate one

Same problem, and this is is happening on a new cluster... The problem cannot be resolved with "recreating the cluster", it's just not feasible for production. Really, what is the solution here?

Also, could you please don't close the bugs that are not resolved, yet?

Same boat ! Static assignment in k8s did not work as documented in https://docs.microsoft.com/bs-latn-ba/azure/aks/static-ip

spec:
type: LoadBalancer
loadBalancerIP: x.x.x.x

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.0.0.1 \ 443/TCP 2d2h
zna3-aadfzdf LoadBalancer 10.0.93.134 \ 80:30310/TCP,443:31724/TCP 15m

Founded, you have to move the static IPs to the correct Resource-group of your Cluster, usually AKS automatically created a Loadbalancer mapping Resource-group MC-* for k8s.

_kubectl describe service_ can be useful

Please update the document or fix on azure backend.

Check the Public IP SKU. For some reason, if you use standard External IP stay pending but if you use basic it works in a few minutes
You can not change the SKU for a PIP you need to recreate one

I just want to mention that this fixed the issue for me. but unfortunately I had to delete my aks and create a new one with the parameters "--load-balancer-sku basic". which as @gitsupersmecher mentioned, is not a real fix, we need to have a fix for the standard sku as well.

Check the Public IP SKU. For some reason, if you use standard External IP stay pending but if you use basic it works in a few minutes
You can not change the SKU for a PIP you need to recreate one

I just want to mention that this fixed the issue for me. but unfortunately I had to delete my aks and create a new one with the parameters "--load-balancer-sku basic". which as @gitsupersmecher mentioned, is not a real fix, we need to have a fix for the standard sku as well.

create static IP with "--sku Standard"

STATICIP=$(az network public-ip create --resource-group <MC_your-RG> --name Your-public-ip-name --sku Standard --allocation-method static --query publicIp.ipAddress -o tsv)

And now:

helm install stable/nginx-ingress --name \
--namespace \
--set rbac.create=true \
--set controller.replicaCount=2 \
--set controller.stats.enabled=true \
--set controller.metrics.enabled=true \
--set controller.nodeSelector."beta.kubernetes.io/os"=linux \
--set defaultBackend.nodeSelector."beta.kubernetes.io/os"=linux \
--set controller.service.externalTrafficPolicy="Local" \
--set controller.service.loadBalancerIP=${STATICIP}

thanx @ruedigerp ! it worked like a charm!!! :)
for those of us working in bash note that strings are a bit different:
helm install stable/nginx-ingress \ --name my-ingress-name \ --namespace my-ingress-namespace \ --set rbac.create=true \ --set controller.replicaCount=2 \ --set controller.stats.enabled=true \ --set controller.metrics.enabled=true \ --set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \ --set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux \ --set controller.service.externalTrafficPolicy="Local" \ --set controller.service.loadBalancerIP="$STATICIP"

Was this page helpful?
0 / 5 - 0 ratings

Related issues

mrdfuse picture mrdfuse  Â·  3Comments

spottedmahn picture spottedmahn  Â·  3Comments

Agazoth picture Agazoth  Â·  3Comments

ianpowell2017 picture ianpowell2017  Â·  3Comments

behnam89 picture behnam89  Â·  3Comments