k8s 监控 metric-server cpu 内存单位换算

内存与CPU单位计算
本文介绍了一种计算方法,通过定义不同的前缀来表示内存和CPU的单位换算。内存单位包括Ki、Mi、Gi等,而CPU单位则涵盖了n、u、m等。这些单位基于2或10的幂次进行换算。
计算方法:次方
func newSuffixer() suffixer {
	sh := &suffixHandler{}
 
    // 内存单位计算
	sh.binSuffixes.addSuffix("Ki", bePair{2, 10})
	sh.binSuffixes.addSuffix("Mi", bePair{2, 20})
	sh.binSuffixes.addSuffix("Gi", bePair{2, 30})
	sh.binSuffixes.addSuffix("Ti", bePair{2, 40})
	sh.binSuffixes.addSuffix("Pi", bePair{2, 50})
	sh.binSuffixes.addSuffix("Ei", bePair{2, 60})
	// Don't emit an error when trying to produce
	// a suffix for 2^0.
	sh.decSuffixes.addSuffix("", bePair{2, 0})
    // CPU计算
	sh.decSuffixes.addSuffix("n", bePair{10, -9})
	sh.decSuffixes.addSuffix("u", bePair{10, -6})
	sh.decSuffixes.addSuffix("m", bePair{10, -3})
	sh.decSuffixes.addSuffix("", bePair{10, 0})
	sh.decSuffixes.addSuffix("k", bePair{10, 3})
	sh.decSuffixes.addSuffix("M", bePair{10, 6})
	sh.decSuffixes.addSuffix("G", bePair{10, 9})
	sh.decSuffixes.addSuffix("T", bePair{10, 12})
	sh.decSuffixes.addSuffix("P", bePair{10, 15})
	sh.decSuffixes.addSuffix("E", bePair{10, 18})
 
	return fastLookup{sh}
}
    
官方文档源码:
  https://github.com/kubernetes/apimachinery/blob/564e0900f0fdabbdc81495b88ce0ca03a62f0af3/pkg/api/resource/suffix.go#L88    

具体使用使用可以参考下面文档

https://blog.youkuaiyun.com/fly910905/article/details/102932107?utm_term=cpum%E5%8D%95%E4%BD%8D&utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~sobaiduweb~default-0-102932107&spm=3001.4430

<think>好的,我现在需要帮助用户解决Kubernetes中Metrics Server的部署与配置问题。首先,我得回忆一下用户之前的引用内容,里面有提到下载components.yaml文件,以及Metrics Server的作用是收集指标供HPA和VPA使用。用户可能已经尝试过部署,但遇到了问题,或者想了解正确的步骤。 首先,我应该按照常规部署流程来整理步骤。用户提到的引用[1]中有下载部署文件的命令,所以第一步应该是下载官方提供的YAML文件。接下来,可能需要修改这个文件,特别是镜像地址,因为国内访问可能有问题,换成国内镜像源会更顺利。引用[3]提到DNS配置,但这里可能不直接相关,不过需要注意服务发现是否正确。 然后,部署的时候需要应用修改后的YAML,这应该用kubectl apply命令。部署完成后,需要验证是否成功,比如检查Pod状态和日志。如果遇到问题,比如镜像拉取失败或者证书问题,用户可能需要调整配置,比如在容器参数里添加--kubelet-insecure-tls,或者检查网络策略是否允许Metrics Server访问kubelet。 接下来,用户可能想知道如何测试Metrics Server是否正常工作,比如使用kubectl top命令。如果这一步失败,可能需要进一步排查,比如检查APIService是否注册正确,或者Metrics API是否可用。 最后,考虑生成相关问题,帮助用户深入理解,比如如何与HPA集成,或者常见问题解决。需要确保回答结构清晰,步骤详细,同时引用之前的参考内容,但不要生硬地插入引用,而是自然地融入步骤说明中。还要注意LaTeX格式的正确使用,虽然这个问题可能涉及的不多,但如果有数学表达式的话要按规则处理。确保语言口语化,避免技术术语堆砌,让用户容易跟随步骤操作。</think>### Kubernetes Metrics Server 部署与配置教程 #### 一、Metrics Server 核心作用 Metrics Server 是 Kubernetes 集群资源监控的核心组件,主要功能包括: 1. 收集节点/Pod 的 CPU/Memory 使用量[^2] 2. 通过 Metrics API 提供资源指标 3. 支持 HPA/VPA 自动扩缩容决策[^2] #### 二、标准部署流程 1. **下载官方部署文件**: ```bash wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml -O metrics-server-components.yaml ``` [^1] 2. **修改镜像配置(国内加速)**: ```yaml spec: template: spec: containers: - name: metrics-server image: registry.aliyuncs.com/google_containers/metrics-server:v0.6.3 ``` 3. **添加关键参数配置**: ```yaml args: - --kubelet-insecure-tls # 跳过证书验证(测试环境使用) - --kubelet-preferred-address-types=InternalIP # 优先使用节点内网IP ``` 4. **应用配置文件**: ```bash kubectl apply -f metrics-server-components.yaml ``` #### 三、部署验证 1. 检查 Pod 状态: ```bash kubectl get pods -n kube-system | grep metrics-server ``` 应显示 `Running` 状态且 `READY` 为 1/1 2. 测试指标获取: ```bash kubectl top nodes kubectl top pods -A ``` #### 四、常见问题排查 1. **镜像拉取失败**: ```bash # 查看具体错误信息 kubectl describe pod/metrics-server-xxxx -n kube-system ``` 解决方案:手动拉取镜像后 tag 重命名 2. **X509 证书错误**: ```bash # 在部署文件中添加 args: - --kubelet-insecure-tls ``` 3. **网络连通性问题**: 检查防火墙是否开放 10250 端口(kubelet 指标端口) #### 五、高级配置示例 ```yaml apiVersion: apps/v1 kind: Deployment spec: template: spec: containers: - name: metrics-server args: - --cert-dir=/tmp - --secure-port=4443 - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname - --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.pem ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值