相忘 發表於 2022-3-10 15:39:00

Kubernetes上安装Metrics-Server

<h2 id="操作场景">操作场景</h2>
<p>metrics-server 可实现 Kubernetes 的 Resource Metrics API(metrics.k8s.io),通过此 API 可以查询 Pod 与 Node 的部分监控指标,Pod 的监控指标用于 <strong>HPA、VPA</strong> 与** kubectl top pods** 命令,而 Node 指标目前只用于 kubectl top nodes 命令。容器服务 某些k8s发行版 自带 Resource Metrics API 的实现,指向 hpa-metrics-server,且目前提供 Pod 的监控指标。</p>
<p>将 metrics-server 安装到集群后,可以通过 **kubectl top nodes **获取节点的监控概览,以替换 Resource Metrics API 的实现。容器服务控制台创建的 HPA 不会用到 Resource Metrics,仅使用 Custom Metrics,因此安装 metrics-server 不会影响在 Kubernetes 控制台创建的 HPA。本文将介绍如何在 Kubernetes 上安装 metrics-server。</p>
<h2 id="操作步骤">操作步骤</h2>
<h3 id="下载-yaml-部署文件">下载 yaml 部署文件</h3>
<p>执行以下命令,下载 metrics-server 官方的部署 yaml:</p>
<pre><code class="language-sh">wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.5.0/components.yaml
</code></pre>
<h3 id="修改-metrics-server-启动参数">修改 metrics-server 启动参数</h3>
<p>metrics-server 会请求每台节点的 kubelet 接口来获取监控数据,接口通过 HTTPS 暴露,但 Kubernetes 节点的 kubelet 使用的是自签证书,若 metrics-server 直接请求 kubelet 接口,将产生证书校验失败的错误,因此需要在 components.yaml 文件中加上 --kubelet-insecure-tls 启动参数。</p>
<p>且由于 metrics-server 官方镜像仓库存储在 k8s.gcr.io ,国内可能无法直接拉取,您可以自行同步到 CCR 或使用已同步的镜像 ccr.ccs.tencentyun.com/mirrors/metrics-server:v0.5.0。</p>
<p>components.yaml 文件修改示例如下:</p>
<pre><code class="language-yaml">containers:
- args:
- --cert-dir=/tmp
- --secure-port=443
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
- --kubelet-use-node-status-port
- --metric-resolution=15s
- --kubelet-insecure-tls # 加上该启动参数
image: ccr.ccs.tencentyun.com/mirrors/metrics-server:v0.5.0 # 国内集群,请替换成这个镜像
</code></pre>
<h3 id="部署-metrics-server">部署 metrics-server</h3>
<p>修改 components.yaml 之后,执行以下命令,通过 kubectl 一键部署到集群:</p>
<pre><code class="language-sh">kubectl apply -f components.yaml
</code></pre>
<h3 id="检查运行状态">检查运行状态</h3>
<ol>
<li>执行以下命令,检查 metrics-server 是否正常启动。示例如下:</li>
</ol>
<pre><code class="language-sh">$ kubectl get pod -n kube-system | grep metrics-server
metrics-server-f976cb7d-8hssz         1/1   Running   0          1m
</code></pre>
<ol start="2">
<li>执行以下命令,检查配置文件。示例如下:</li>
</ol>
<pre><code class="language-sh">$ kubectl get --raw /apis/metrics.k8s.io/v1beta1| jq
{
"kind": "APIResourceList",
"apiVersion": "v1",
"groupVersion": "metrics.k8s.io/v1beta1",
"resources": [
    {
      "name": "nodes",
      "singularName": "",
      "namespaced": false,
      "kind": "NodeMetrics",
      "verbs": [
      "get",
      "list"
      ]
    },
    {
      "name": "pods",
      "singularName": "",
      "namespaced": true,
      "kind": "PodMetrics",
      "verbs": [
      "get",
      "list"
      ]
    }
]
}
</code></pre>
<ol start="3">
<li>执行以下命令,检查节点占用性能情况。示例如下:</li>
</ol>
<pre><code class="language-sh">$ kubectl top nodes
NAME    CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
test1      1382m         35%         2943Mi            44%
test2      397m            10%            3316Mi            49%
test3      81m            8%         464Mi            77%
</code></pre>


</div>
<div id="MySignature" role="contentinfo">
    <div class="esa-post-signature">
                        <p>作者:
            YOYOFx
      </p>
                        <p>出处:https://www.cnblogs.com/maxzhang1985/p/12673160.html</p>
                        <p>版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可。</p>
                        <p></p>
                  </div>
<b>欢迎大家关注微信号。扫下面的二维码或者收藏下面的二维码关注吧(长按下面的二维码图片、并选择识别图中的二维码)</b>
<img src="https://images.cnblogs.com/cnblogs_com/maxzhang1985/366082/o_200511090003qrcode_for_gh_58872286e96b_860.jpg" alt="微信公众平台" style="max-width:300px;max-height:300px"><br><br>
来源:https://www.cnblogs.com/maxzhang1985/p/15989762.html
頁: [1]
查看完整版本: Kubernetes上安装Metrics-Server