我创建了2个pod。一个是grafana,另一个是流入pod。我需要在grafana中配置涌入。我确实看到了下面的例子。我对它的配置方式感到有点困惑。以下是部署和服务文件。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: influxdb
labels:
app: influxdb
spec:
template:
metadata:
labels:
app: influxdb
spec:
containers:
- name: influxdb
image: influxdb
ports:
- containerPort: 8083
name: admin
- containerPort: 8086
name: http
resources:
limits:
memory: 2048Mi
cpu: 100m
volumeMounts:
- name: influxdb-data
mountPath: /var/lib/influxdb
volumes:
- name: influxdb-data
persistentVolumeClaim:
claimName: influxdb-pvc-vol
服务文件
apiVersion: v1
kind: Service
metadata:
name: influxdb
labels:
app: influxdb
spec:
ports:
- port: 3306
selector:
app: influxdb
clusterIP: None
clusterIP: None
做什么?他暴露了3306端口并将其映射到节点端口3306.所以我相信我可以使用3306端口及其IP从其他pod访问。但在这里,我看到我能够通过http://influxdb:8086
访问我怎么能通过http://influxdb:8086访问?
我可以解释发生了什么以及为什么会这样,但我仍然认为这种配置没有意义。
部署创建一个Pod,它运行InfluxDB,默认情况下在端口8086上进行监听。这里的containerPort
纯信息,请参阅Pod spec reference中的以下内容:
主要是信息性的。此处未指定端口不会阻止该端口暴露。任何正在侦听容器内默认“0.0.0.0”地址的端口都可以从网络访问。
现在到服务,这是使用端口3306创建的,这是奇怪的,但在这种情况下无关紧要,因为这是一个Headless Service。无头服务是一种告诉Kubernetes您不希望它具有花哨的网络功能(如kube-proxy负载平衡)的方法,而只是您希望它为您创建DNS记录。通过指定ClusterIP: None
,你基本上可以使它成为无头服务。鉴于此服务实际上并未为任何流量提供服务,此处的“端口”字段无意义。
现在让我们回顾一下访问http://influxdb:8086时会发生什么:
influxdb
解析为Pod IP。这可以归功于无头服务。请再次注意,主机解析为Pod IP,而不是服务IP。定义ClusterIP:none的服务称为headless service
对于定义选择器的无头服务,端点控制器在API中创建端点记录,并修改DNS配置以返回直接指向支持服务的Pod的A记录(地址)
由于只有一个Influxdb pod,因此无需对其进行负载平衡,因此不需要服务代理,请求将直接路由到pod。