<p>I'm using <a href="http://zero-to-jupyterhub.readthedocs.io/en/latest/=" rel="nofollow noreferrer">Jupyterhub + Kubernetes</a> to provide a hosted development environment for a large programming class (>100 students). It's running on top of GKE with autoscaling enabled. As additional students log in, more nodes are dynamically added to the pool to handle the increased demand.</p>

<p>I'm running into an issue where the node pool is exhausting the project quota of external IPs, effectively limiting the size of the pool to 8 concurrent nodes. The exact error is <a href="https://serverfault.com/questions/869418/google-cloud-in-use-addresses-quota-exceeded/869429">this one</a>. The nodes sit behind a reverse proxy for communicating with end user; as far as I can tell, the only use of these public IPs is to enable direct SSH into each individual node. I don't need or even want this functionality, since it presents a unnecessary attack surface.</p>

<p>How can I disable the automatic assignment of ephemeral IPs to these worker nodes? There must be a way since the docs for GKE suggest that autoscaling can grow up to something like 1000 nodes. I don't see how this could be possible if they are all subject to the same tiny external IP quota.</p>

<p>The solution you're looking for is simply increasing your quotas in console for your GCP project (IAM &amp; admin -> Quotas). It's just a few clicks and usually takes only a few minutes for them to get approved. </p>

<p>Right now it's not possible to create GKE nodes without public IPs. Even if it were, it wouldn't help you as you'd just hit other quotas (cpu/disk), so also raise those. </p>
