【问题标题】:How to change Kubernetes metrics-server port?如何更改 Kubernetes 指标服务器端口?
【发布时间】:2022-01-09 15:55:41
【问题描述】:

默认的 Kubernetes (K3S) 安装(相当粗鲁)占用了 metrics-server 的 443 端口。我可以修补服务以更改端口,但 kubectl 不知道如何查询指标。在哪里更改 kubectl 客户端的端口? 端口 443 不在~./kube/config 中(只有 6443 - 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 patched
$ kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes"
Error from server (ServiceUnavailable): the server is currently unable to handle the request

【问题讨论】:

    标签: kubernetes kubectl


    【解决方案1】:

    metrics-server 在安装过程中向 api-server 注册了 443。最简单的方法是 disable 捆绑的指标服务器并重新安装,并将服务端口设置为 7443 here,因此调用将到达正确的端口。如果您使用清单,请修改端口号here

    【讨论】:

    • 你的建议只是改变了服务的端口——我已经用kubectl patch成功地做到了。 Metrics API 在新端口 7443 上运行良好,但 kubectl 无法联系它。另外,如果服务是 ClusterIP,为什么/在主机上暴露端口 443?
    • kubectl 不直接连接到 metrics-server。
    • 确实,我更改的端口在集群内部,因此在外部应该没有区别。有些东西正在监听主机端口 443 并将其转发到集群端口 443。标题说它是 Traefik。我没有 Ingress,所以我想它一定是一些 kube 系统代理。
    • Traefik 是 k3s 的另一个捆绑组件。
    • 我认为主机上的 443 是指标服务器的假设是不正确的。由于curl https://localhost:443 提供了404 page not found,因此端口上正在监听某些东西,但sudo lsof -i -P -n | grep "443 (L" 显示在该端口上没有任何监听。
    猜你喜欢
    • 1970-01-01
    • 2013-07-17
    • 2012-07-02
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 2020-06-17
    • 2021-06-25
    相关资源
    最近更新 更多