es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo cambiar el puerto de métricas del servidor Kubernetes?

La instalación por defecto de Kubernetes (K3S) ocupa el puerto 443 con el metrics-server (de manera algo grosera). Puedo modificar el servicio para cambiar el puerto, pero luego kubectl no sabe cómo consultar las métricas. ¿Dónde puedo cambiar el puerto para el cliente kubectl?
El puerto 443 no está en ~/.kube/config (solo está el puerto 6443, el puerto de la API).

$ kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes"
{"kind":"NodeMetricsList","apiVersion":"metrics.k8s.io/v1beta1",...
$ kubectl patch service metrics-server -n kube-system --type='json' --patch='[{"op": "replace", "path": "/spec/ports/0/port", "value":7443}]'
service/metrics-server parchado
$ kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes"
Error from server (ServiceUnavailable): el servidor no puede manejar la solicitud en este momento
Tags:  ,

Answer

  1. Avatar for davy.ai

    Necesitas actualizar el puerto para metrics-server en el archivo de configuración de kubectl ~/.kube/config.

    Para hacer esto, abre el archivo de configuración en tu editor preferido y busca la sección cluster. Dentro de esta sección, debería haber una clave server con el valor de la dirección del servidor API. Añade un indicador --kubelet-port al final del valor, seguido del nuevo número de puerto:

    apiVersion: v1
    clusters:
    - cluster:
        certificate-authority-data: ...
        server: https://api.example.com:6443 --kubelet-port=7443
      name: example-cluster
    

    Guarda el archivo e intenta consultar las métricas nuevamente con kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes".

    Esto debería permitir que kubectl se conecte al metrics-server en el puerto actualizado.

Comments are closed.