具有多个端口的 Kubernetes 代理

Kubernetes proxy with multiple ports

当我打开了很多端口时,是否可以使用 kubernetes api 服务器的代理功能转到我在服务上打开的特定端口?

我查看了 swagger api 规范,似乎没有任何参数可用于选择服务的潜在多个端口之一。

我有这个 influxdb 服务:

apiVersion: v1
kind: Service
metadata:
  labels:
    base_name: influx
  name: influx
  namespace: test
spec:
  clusterIP: 10.3.0.12
  ports:
  - name: admin-panel
    nodePort: 32646
    port: 8083
    protocol: TCP
    targetPort: 8083
  - name: api
    nodePort: 32613
    port: 8086
    protocol: TCP
    targetPort: 8086
  - name: snapshots
    nodePort: 30586
    port: 8087
    protocol: TCP
    targetPort: 8087
  selector:
    base_name: influx
  sessionAffinity: None
  type: NodePort
status:
  loadBalancer: {}

我正在尝试通过 kubernetes api 代理访问管理面板,如下所示:

https://kube-master/api/v1/proxy/namespaces/test/services/influx

这会导致 503 错误

{
kind: "Status",
apiVersion: "v1",
metadata: { },
status: "Failure",
message: "no endpoints available for service "influx"",
reason: "ServiceUnavailable",
code: 503
}

您应该能够在末尾附加实际端口或端口名。

顺便说一句,看起来你的主服务器没有防火墙,如果这是真的,我建议不要让它在集群外访问,运行 在你的本地主机上使用 kubectl 代理,这将创建一个代理到大师,那么你可以点击: http://localhost:8001/api/v1/proxy/namespaces/test/services/influx:8083/