我不确定 kubernetes 中的哪个组件可以完成这样的工作。也许kube-api-server
或kube-controller-manager
,因为它们都有一个名为:“service-cluster-ip-range”的参数。
我想知道是否可以禁用分配?
谢谢
我不确定 kubernetes 中的哪个组件可以完成这样的工作。也许kube-api-server
或kube-controller-manager
,因为它们都有一个名为:“service-cluster-ip-range”的参数。
我想知道是否可以禁用分配?
谢谢
不确定禁用分配的确切含义,但您也可以使用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
一开始我将解释为什么要分配 ClusterIP:
Kubernetes 服务是一种抽象,它定义了在集群中某处运行的一组逻辑 Pod,它们都提供相同的功能。创建时,每个服务都分配有一个唯一的 IP 地址(也称为 clusterIP)。此地址与服务的生命周期相关联,并且在服务存在期间不会更改。Pod 可以配置为与 Service 通信,并且知道与 Service 的通信将自动负载平衡到属于 Service 成员的某个 Pod。
ClusterIP 是在创建 Kubernetes 服务时按设计创建的。在服务存在时也无法更改它。不能简单地关闭地址分配。IP 地址是从在和config--service-cluster-ip-range
中配置的池中分配的。api-server
kube-controller
用户Qasim Sarfraz的回答很好。这确实是使用 ClusterIP 做任何事情的唯一选择:
您可以使用无头服务与其他服务发现机制进行交互,而无需绑定到 Kubernetes 的实现。
也可以看看:
经过一番研究,最后我发现cluster ip
分配者kube-api-server
:它cluster ip
在将对象存储到etcd之前分配了验证!
见链接:https ://pkg.go.dev/k8s.io/kubernetes/pkg/registry/core/service@v1.22.1
您也可以kubernetes
在 github 的存储库中找到相关代码。
所以我想它不能被禁用:)