目录
Pod 和 容器的资源请求和限制
CPU 的含义
内存的含义
kubernetes: 全面的CPU 和内存单位解释
CPU单位:n
通过kubernetes-client/java类库获取metric资源对象
metric-server简介
The Metrics API
Pod示例
Pod 和 容器的资源请求和限制
当您定义?Pod?的时候可以选择为每个容器指定需要的 CPU 和内存(RAM)大小。
Pod 中的每个容器都可以指定以下的一个或者多个值:
spec.containers[].resources.limits.cpuspec.containers[].resources.limits.memoryspec.containers[].resources.requests.cpuspec.containers[].resources.requests.memory
尽管只能在个别容器上指定请求和限制,但是我们可以方便地计算出 Pod 资源请求和限制。特定资源类型的Pod 资源请求/限制是 Pod 中每个容器的该类型的资源请求/限制的总和。
CPU 的含义
CPU 资源的限制和请求以?cpu?为单位。
Kubernetes 中的一个 cpu 等于:
1 AWS vCPU1 GCP Core1 Azure vCore1?Hyperthread?在带有超线程的裸机 Intel 处理器上
允许浮点数请求。
具有?spec.containers[].resources.requests.cpu?为 0.5 的容器保证了一半 CPU 要求 1 CPU的一半。
表达式?0.1?等价于表达式?100m,可以看作 “100 millicpu”。
内存的含义
内存的限制和请求以字节为单位。
您可以使用以下后缀之一作为平均整数或定点整数表示内存:E,P,T,G,M,K。
您还可以使用两个字母的等效的幂数:Ei,Pi,Ti ,Gi,Mi,Ki。例如,以下代表大致相同的值:
128974848, 129e6, 129M, 123Mi
i表示(1Mi=1024×1024),?M表示(1M=1000×1000)(其它单位类推, 如Ki/K Gi/G)
kubernetes: 全面的CPU 和内存单位解释
计算法则:次方
func newSuffixer() suffixer {sh := &suffixHandler{}// IMPORTANT: if you change this section you must change fastLookupsh.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})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}} CPU单位:n
在
metrics-server中,获取某个节点的使用情况,cpu的单位有时是n (1m?= 1000*1000n ):
Http请求:https://apiserver地址:6443/apis/metrics.k8s.io/v1beta1/nodes/节点名称
kubelet命令:kubectl? get nodes.metrics.k8s.io?节点名称 -o yaml
{\”kind\”: \”NodeMetrics\”,\”apiVersion\”: \”metrics.k8s.io/v1beta1\”,\”metadata\”: {\”name\”: \”ac-private-2\”,\”selfLink\”: \”/apis/metrics.k8s.io/v1beta1/nodes/ac-private-2\”,\”creationTimestamp\”: \”2018-12-06T02:26:04Z\”},\”timestamp\”: \”2018-12-06T02:25:46Z\”,\”window\”: \”30s\”,\”usage\”: {\”cpu\”: \”22436949n\”,\”memory\”: \”3846476Ki\”}} 通过kubernetes-client/java类库获取metric资源对象 通过 kubernetes-client/java类库获取metric资源对象
注意:目前(截止2020年3月份),?kubernetes-client/java类库并不支持直接调用metrics的api,所以只能通过CRD资源方式
标题
更多kubernetes-client/java类库使用,
参考《使用 Java 操作 Kubernetes API》https://blog.csdn.net/fly910905/article/details/101345091
metric-server简介
Metrics Server is a cluster-wide aggregator of resource usage data. Resource metrics are used by components like kubectl top and the Horizontal Pod Autoscaler to scale workloads. To autoscale based upon a custom metric, you need to use the Prometheus Adapter Metric-server是一个集群级别的资源指标收集器,用于收集资源指标数据
提供基础资源如CPU、内存监控接口查询;接口通过 Kubernetes aggregat活动:慈云数据爆款香港服务器,CTG+CN2高速带宽、快速稳定、平均延迟10+ms 速度快,免备案,每月仅需19元!! 点击查看or注册到kube-apiserver中;对外通过Metric API暴露给外部访问;自定义指标使用需要借助Prometheus实现。 The Metrics API /node 获取所有节点的指标,指标名称为NodeMetrics/node/ 特定节点指标/namespaces/{namespace}/pods 获取命名空间下的所有pod指标/namespaces/{namespace}/pods/{pod} 特定pod的指标,指标名称为PodMetrics
未来将能够支持指标聚合,如max最大值,min最小值,95th峰值,以及自定义时间窗口,如1h,1d,1w等。
Pod示例
以下 Pod 有两个容器。
每个容器的请求为 0.25 cpu 和 64MiB(226?字节)内存,每个容器的限制为 0.5 cpu 和 128MiB 内存。
您可以说该 Pod 请求 0.5 cpu 和 128 MiB 的内存,限制为 1 cpu 和 256MiB 的内存。
apiVersion: v1kind: Podmetadata: name: frontendspec: containers: – name: db image: mysql env: – name: MYSQL_ROOT_PASSWORD value: \”password\” resources: requests: memory: \”64Mi\” cpu: \”250m\” limits: memory: \”128Mi\” cpu: \”500m\” – name: wp image: wordpress resources: requests: memory: \”64Mi\” cpu: \”250m\” limits: memory: \”128Mi\” cpu: \”500m\”
参考链接:
https://kubernetes.io/zh/docs/concepts/configuration/manage-compute-resources-container/
https://github.com/kubernetes/apimachinery/blob/564e0900f0fdabbdc81495b88ce0ca03a62f0af3/pkg/api/resource/suffix.go#L88
93980183
《kubernetes CPU 和内存单位解释metricserver接口调用》来自互联网同行内容,若有侵权,请联系我们删除!
还没有评论,来说两句吧...