1

我不确定 kubernetes 中的哪个组件可以完成这样的工作。也许kube-api-serverkube-controller-manager,因为它们都有一个名为:“service-cluster-ip-range”的参数。

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

谢谢

4

3 回答 3

0

不确定禁用分配的确切含义,但您也可以使用spec.ClusterIP的值在无头模式下None使用服务。这允许您使用其他服务发现机制,而无需通过直接使用 pod 地址来绑定到 Kubernetes 的实现。例子:

apiVersion: v1
kind: Service
metadata:
  name: headless-svc
spec:
  clusterIP: None 
  selector:
    app: web
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
于 2021-08-31T13:18:27.937 回答
0

一开始我将解释为什么要分配 ClusterIP

Kubernetes 服务是一种抽象,它定义了在集群中某处运行的一组逻辑 Pod,它们都提供相同的功能。创建时,每个服务都分配有一个唯一的 IP 地址(也称为 clusterIP)。此地址与服务的生命周期相关联,并且在服务存在期间不会更改。Pod 可以配置为与 Service 通信,并且知道与 Service 的通信将自动负载平衡到属于 Service 成员的某个 Pod。

ClusterIP 是在创建 Kubernetes 服务时按设计创建的。在服务存在时也无法更改它。不能简单地关闭地址分配。IP 地址是从在和config--service-cluster-ip-range中配置的池中分配的。api-serverkube-controller

用户Qasim Sarfraz的回答很好。这确实是使用 ClusterIP 做任何事情的唯一选择:

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

也可以看看:

于 2021-09-01T09:07:00.200 回答
0

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

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

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

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

于 2021-09-14T07:23:56.847 回答