我尝试使用部署mysql
和cassandra
数据库kubernetes.io/docs说明。在这两个文件中service.yaml
,它们的用法clusterIP: None
如下:
为了cassandra
:
apiVersion: v1
kind: Service
metadata:
labels:
app: cassandra
name: cassandra
spec:
ports:
- port: 9042
selector:
app: cassandra
clusterIP: None
为了mysql
:
apiVersion: v1
kind: Service
metadata:
name: mysql
spec:
ports:
- port: 3306
selector:
app: mysql
clusterIP: None
我想知道,为什么他们没有clusterIP
在service.yaml
文件中指定?我们应该如何指定它以及用例是什么?
答案1
在这里你正在使用无头服务。每当clusterIP
设置为 none 时,这意味着它是一个无头服务。StatefulSets目前需要一个 Headless Service 来负责 Pod 的网络标识。因为与无国籍者部署 statefulset pod 将具有稳定、唯一的网络标识符(pod 名称)。
clusterIP
为了回答你的问题,我们没有设置无头的服务。我们需要将其设置为none
。因此,服务将使用状态集pods并在通信时自行分配IP。
要了解更多详细信息和示例,您可以参考此官方k8文档