 My name is Antonio Heia, I'm working at Google, I'm here for Signal World and I want to talk to you about a new feature that we developed and it was released in 1929 about managing multiple service items but to try to explain why we need this feature is because when you talk about Kubernetes classes you always used to think in terms of I need so many so much CPUs so much storage but IP addresses is always something that people don't realize until they hit the program. You see the map of internet there are only a few ranks where you can get IP addresses for your cluster right you are not going to use public IP addresses as they are super expensive and for getting these IP addresses this means that you need to carve out from some these private ranks and some value right you need IP addresses for your nodes you need IP addresses for your pods and you need IP addresses for your services the main problem is that we try it from Signal World to try to standardize this problem but all the node IPs are provided by the network infrastructure provider then for the pods you need to there are different plugins so it's not easy to standardize so the only thing that we can control is the service side right that's the one that you assign in the in the API server so the problem with services is that the services is as I said it's a flag in the API server so you need to hard code that when you start your cluster the way that it works is when you create a service it gets allocated one IP from this server right and once you have this IP this is immutable so you cannot remove it or from a service that is already allocated also the size of the service side that is limited right because this for implementation details this is hardcoded in the in the ecd database and and you cannot modify it when it's running and this creates several problems to the user right then if you are greedy or you are conservative and you start your cluster and suddenly you start to grow you may hit limits and you cannot resize your cluster the other problem is is that you cannot use ipv6 because the this this size of this branch is limited or you cannot have you can deal with problems on upgrades you just try to modify the flags in different AP servers at the same time so one of the possible solutions we are talking about exhaustion is can be okay we why don't we use ipv6 right I mean that's that's how I started in this project in 2019 I will start working with ipv6 right I was with this mindset of okay let's let's try to get ipv6 in kubernetes so everybody can use it right but ipv6 is a long right is the first specification was written and published in 1996 the war ipv6 launch was in 2012 kubernetes made ga in 123 in 2021 ipv6 and dual stack and we see that there is a trend of adoption right but every year is the ipv6 there right so what I started to do is to start to prepare I'm not confident I'm going to be able to see a full ipv6 cluster so I started to prepare my son to say okay you need to take on this and work on work on ipv6 but jokes aside is how this kept work right how this feature work what we did is okay less the people have the capability to define this service branch that they need to increase the the cluster size during runtime so what we did is we created two new objects that says service slider and then they have pools of IP addresses to the cluster so in this case the IP address is is seated as a fungible resolve right so do the with the same way that you add these to store us to this capacity you add new rights so if you want to play with this feature you can use kind you need to enable some of the feature based on runtime config and in a quick demo we can see that a cluster created with a small service slider that only is able to allocate 16 services you can see that if you try to allocate more than the services is not possible then you increase the capacity and now you are going to be able to create this additional services right so simple you don't need to restart your cluster and you get it working new services with new capacity is in the same case we have a protection so you cannot break your cluster if you try to delete this new service slider meanwhile all the services has these IPs and are allocated you are not going to be able to to remove and that's it