谁将ClusterIP分配给kubernetes中的服务,它可以被禁用吗?



我不确定kubernetes中的哪个组件做这样的工作。可能是kube-api-serverkube-controller-manager,因为它们都有一个名为:"service-cluster-ip-range".

我想知道是否分配可以禁用?

感谢

不确定禁用分配究竟是什么意思,但是您也可以使用spec.ClusterIPNone的值以无头模式使用服务。这允许您使用其他服务发现机制,而无需通过直接使用pod地址绑定到Kubernetes的实现。例子:

apiVersion: v1
kind: Service
metadata:
name: headless-svc
spec:
clusterIP: None 
selector:
app: web
ports:
- protocol: TCP
port: 80
targetPort: 8080

首先,我将解释为什么要分配ClusterIP:

Kubernetes Service是一个抽象,它定义了一组运行在集群某处的pod逻辑集合,它们都提供相同的功能。当创建时,每个服务被分配一个唯一的IP地址(也称为clusterIP)。此地址与服务的生命周期绑定,并且不会更改只要情报局还活着pod可以配置为与Service对话,并且知道与Service的通信将自动负载均衡到作为Service成员的某个pod。

ClusterIP是在创建Kubernetes服务时设计创建的。在服务处于活动状态时也不可能更改它。不可能简单地关闭地址分配。IP地址从api-serverkube-controllerconfig中配置的--service-cluster-ip-range池中分配。

用户Qasim Sarfraz的回答很好。这实际上是对ClusterIP执行任何操作的唯一选项:

您可以使用无头服务与其他服务发现机制接口,而无需绑定到Kubernetes的实现。

参见:

  • 在Kubernetes中构建无头服务
  • 对栈上无头服务的解释
  • 服务和pod的DNS

经过一番研究,最后我发现cluster ip是由kube-api-server分配的:它在将对象存储到etcd之前分配了验证cluster ip!

查看链接:https://pkg.go.dev/k8s.io/kubernetes/pkg/registry/core/service@v1.22.1

,您也可以在github上的kubernetes存储库中找到相关代码。

所以我猜它不能被禁用:)

相关内容

  • 没有找到相关文章

最新更新