Can't expose port 2112 for monitoring

Hi everyone,
I’m new to Weaviate and need some help.
I want to use grafana and prometheus for monitoring.
I follow up your guide to expose metrics by added settings below to values.yaml:

service:
  name: weaviate
  ports:
  - name: http
    protocol: TCP
    port: 80
    targetPort: 8080
  - name: metrics
    protocol: TCP
    port: 2112
    targetPort: 2112
      # Target port is going to be the same for every port
  annotations:
    prometheus.io/scrape: "true"
    prometheus.io/port: "2112"
    prometheus.io/path: "/metrics"
    service.beta.kubernetes.io/aws-load-balancer-internal: "true"
  type: LoadBalancer
  loadBalancerSourceRanges:
    - 172.31.0.0/16
.....
  # Expose metrics on port 2112 for Prometheus to scrape
  PROMETHEUS_MONITORING_ENABLED: true
  PROMETHEUS_MONITORING_GROUP: false
  PROMETHEUS_MONITORING_PORT: 2112

When I deploy weaviate. Port 2112 can’t expose and alway back to default is 8080.
I don’t know why. Can you support me how to change it?

I checked the endpoint:

kubectl describe endpoints weaviate -n weaviate
Warning: v1 Endpoints is deprecated in v1.33+; use discovery.k8s.io/v1 EndpointSlice
Name:         weaviate
Namespace:    weaviate
Labels:       app=weaviate
              app.kubernetes.io/managed-by=Helm
              app.kubernetes.io/name=weaviate
              endpoints.kubernetes.io/managed-by=endpoint-controller
Annotations:  <none>
Subsets:
  Addresses:          172.31.104.217,172.31.142.98,172.31.52.40
  NotReadyAddresses:  <none>
  Ports:
    Name     Port  Protocol
    ----     ----  --------
    metrics  8080  TCP
    http     8080  TCP

Events:  <none>

Check weaviate service:

kubectl get svc weaviate -n weaviate -o yaml
apiVersion: v1
kind: Service
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{"prometheus.io/path":"/metrics","prometheus.io/port":"2112","prometheus.io/scrape":"true","service.beta.kubernetes.io/aws-load-balancer-internal":"true"},"labels":{"app":"weaviate"},"name":"weaviate","namespace":"weaviate"},"spec":{"ports":[{"name":"http","port":80,"protocol":"TCP","targetPort":8080},{"name":"metrics","port":2112,"protocol":"TCP","targetPort":2112}],"selector":{"app.kubernetes.io/name":"weaviate"}}}
    meta.helm.sh/release-name: weaviate
    meta.helm.sh/release-namespace: weaviate
    prometheus.io/path: /metrics
    prometheus.io/port: "2112"
    prometheus.io/scrape: "true"
    service.beta.kubernetes.io/aws-load-balancer-internal: "true"
  creationTimestamp: "2026-02-22T05:52:54Z"
  finalizers:
  - service.kubernetes.io/load-balancer-cleanup
  labels:
    app: weaviate
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: weaviate
  name: weaviate
  namespace: weaviate
  resourceVersion: "56720"
  uid: 5fbb9800-28c1-d307eee0c747
spec:
  allocateLoadBalancerNodePorts: true
  clusterIP: 10.100.154.100
  clusterIPs:
  - 10.100.154.100
  externalTrafficPolicy: Cluster
  internalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  loadBalancerSourceRanges:
  - 172.31.0.0/16
  ports:
  - name: http
    nodePort: 32424
    port: 80
    protocol: TCP
    targetPort: 8080
  - name: metrics
    nodePort: 31569
    port: 2112
    protocol: TCP
    targetPort: 8080
  selector:
    app: weaviate
    app.kubernetes.io/name: weaviate
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
    - hostname: internal-5b21dd307eee0c74-1545928450.eu-west-1.elb.amazonaws.com

hi @john19880601 !

We suggest using our helm chart: Kubernetes | Weaviate Documentation

Can you get the metrics from within the pod?