--
You received this message because you are subscribed to the Google Groups "kubernetes-sig-network" group.
To unsubscribe from this group and stop receiving emails from it, send an email to kubernetes-sig-ne...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/kubernetes-sig-network/22bb2e9d-b282-408e-990f-ff30ac07587bn%40googlegroups.com.
This is a really interesting topic, let me share my understanding and my view on it:There are defined 4 types of services: ClusterIP, NodePort, LoadBalancer and ExternalName .ClusterIP, NodePort and LoadBalancer are related and have a dependency between them, so it makes sense that you can not mutate the ClusterIP between them (quoting from the code), they solve the problem on how to expose a ClusterIP externally:- ServiceTypeLoadBalancer means a service will be exposed via an external load balancer (if the cloud provider supports it), in addition to 'NodePort' type.- ServiceTypeNodePort means a service will be exposed on one port of every node, in addition to 'ClusterIP' type.- ServiceTypeClusterIP means a service will only be accessible inside the cluster, via the ClusterIPHowever, ClusterIP has a special case, that is ClusterIP = None. It means that the service is Headless, it generates endpoints and DNS records, and does not have a ClusterIP.The ServiceTypeExternalName means a service consists of only a reference to a CNAME.
--So far so good, I think we can differentiate between Services that use IPs (ClusterIP, LoadBalancer and ExternalName) and Services that does not need them (ClusterIP=None and ExternalName),Considering this, and thinking in a possible "vNext" API:I think that ClusterIP=None is something we should remove if we can, IMHO it is complicated to consume, ...If the main problem is mutating from an "IP Type" Service to a "DNS type" Service, should we make this difference explicit and create new API types for each?ClusterIPs can be reachable directly with IPv6, because you can assign public IPs to Services, so we move a Layer 4 problem to a Layer 3 problem, that has its nuances too, but I don't think that they need any change to the current API, just change the definition "service will only be accessible inside" ...sending this at the risk of driving more insanity to an already insane api type.Why do we have Service.Spec.ClusterIP as immutable? is there a historical reason for that?Things to note:- In reality it is not that immutable. I can patch a Service.Spec.Type= ExternalName (from ClusterIP) then back to Service.Spec.Type = ClusterIP (while setting the desired IP at the second step).- I can also do the same with headless => externalName=>ClusterIP (but i can not do headless => ClusterIP !*sigh*)While my ultimate goal by starting up the discussion is to remove that restriction and align the api to a more predicable common (and removing *lots* of code and tests) I'd settle for "Ok. shouldn't be immutable and we should have that in some vNext api"thoughts?Kal--
You received this message because you are subscribed to the Google Groups "kubernetes-sig-network" group.
To unsubscribe from this group and stop receiving emails from it, send an email to kubernetes-sig-ne...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/kubernetes-sig-network/22bb2e9d-b282-408e-990f-ff30ac07587bn%40googlegroups.com.
You received this message because you are subscribed to the Google Groups "kubernetes-sig-network" group.
To unsubscribe from this group and stop receiving emails from it, send an email to kubernetes-sig-ne...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/kubernetes-sig-network/CABhP%3DtZH6MzDOZQk6_q78cOOEhVB3P1wjwzgCVHq%2B9Lz4QYUog%40mail.gmail.com.
I am hoping Gateway will supersede most non-trivial use-cases in
Service, and we can deprecate (but not remove) the older functionality
in favor of it. In the limit, Service becomes a selector and ports
list, and all the LB stuff moves to Gateway.
Thoughts?
I am hoping Gateway will supersede most non-trivial use-cases in
Service, and we can deprecate (but not remove) the older functionality
in favor of it. In the limit, Service becomes a selector and ports
list, and all the LB stuff moves to Gateway.
To view this discussion on the web visit https://groups.google.com/d/msgid/kubernetes-sig-network/CAO_Rewb9fn48WDxNnU9-H4wyKv%2BPe1nyzBm3%2BUWNF8Cfui-ycQ%40mail.gmail.com.
On Fri, Oct 9, 2020 at 10:00 AM Sandor Szuecs <sandor...@zalando.de> wrote:
>
> Hi!
>
> On Fri, 9 Oct 2020 at 17:59, Tim Hockin <tho...@google.com> wrote:
>>
>> -----------8<------------
>> I am hoping Gateway will supersede most non-trivial use-cases in
>> Service, and we can deprecate (but not remove) the older functionality
>> in favor of it. In the limit, Service becomes a selector and ports
>> list, and all the LB stuff moves to Gateway.
>>
>> Thoughts?
>
>
> I have not much to say about service as long as we can group with them an ingress to endpoints or endpointSlices, I am happy.
Exactly. That's what Service is really good at. The rest should be
outsourced, whether to Ingress of Gateway or ...
> Gateway topic is different. I think there are a lot of weaknesses in the object group, that would be a blocker for us to use or even migrate our 20k ingress objects.
> I don't want to write too much offtopic.
Have you expressed these issues to the Gateway folks? It's really
important that Gateway considers those use-cases if it is to succeed.