iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >docker中容器资源需求、资源限制及HeapSter的示例分析
  • 731
分享到

docker中容器资源需求、资源限制及HeapSter的示例分析

2023-06-04 14:06:30 731人浏览 薄情痞子
摘要

这篇文章主要介绍了Docker中容器资源需求、资源限制及HeapSter的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。容器的资源需求、资源限制  

这篇文章主要介绍了Docker容器资源需求、资源限制及HeapSter的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

容器的资源需求、资源限制

    request:需求,最低保障,在调度时,这个节点必须要满足request需求的资源大小。

    limits:限制、硬限制。这个限制容器无论怎么运行都不会超过limits的值。

    CPU:在k8s的一个cpu对应一颗宿主机逻辑cpu。一个逻辑cpu还可以划分为1000个毫核(millcores)。所以500m=0.5个CPU,0.5m相当于二分之一的核心。

    内存的计量单位:E、P、T、G、M、K

[root@master scheduler]# kubectl explain pods.spec.containers.resources.requests[root@master scheduler]# kubectl explain pods.spec.containers.resources.limits
[root@master metrics]# cat pod-demo.yaml apiVersion: v1kind: Podmetadata:  name: pod-demo  labels:    app: myapp    tier: frontendspec:  containers:  - name: myapp    image: ikubernetes/stress-ng:v1    command: ["/usr/bin/stress-ng", "-m 1", "-c 1", "--metrics-brief"] #-m 1表示启动一个子进程对内存做压测,-c 1表示启动一个子进程对cpu做压测.默认stress-ng的一个子进程使用256M内存    resources:      requests:        cpu: "200m"        memory: "128Mi"      limits:        cpu: "1" #没有单位表示是1个cpu        memory: "200Mi"
[root@master metrics]# kubectl apply -f pod-demo.yaml pod/pod-demo created
[root@master metrics]# kubectl get pods -o wideNAME                READY     STATUS              RESTARTS   AGE       IP            nodepod-demo            1/1       Running             0          6m        10.244.2.48   node2
[root@master metrics]# kubectl exec -it pod-demo -- /bin/sh/ # topMem: 3542328K used, 339484K free, 123156K shrd, 3140K buff, 1737252K cachedCPU:  21% usr   4% sys   0% nic  73% idle   0% io   0% irq   0% sirqLoad average: 1.31 1.00 0.74 4/968 1405  PID  PPID USER     STAT   VSZ %VSZ CPU %CPU COMMAND    8     1 root     R     6884   0%   1  15% {stress-ng-cpu} /usr/bin/stress-ng -m 1 -c 1 --metrics-brief 1404     9 root     R     262m   7%   3  12% {stress-ng-vm} /usr/bin/stress-ng -m 1 -c 1 --metrics-brief    9     1 root     S     6244   0%   2   0% {stress-ng-vm} /usr/bin/stress-ng -m 1 -c 1 --metrics-brief    1     0 root     S     6244   0%   0   0% /usr/bin/stress-ng -m 1 -c 1 --metrics-brief 1202     0 root     S     1508   0%   0   0% /bin/sh 1405  1202 root     R     1500   0%   0   0% top

    我们对容器分配了资源限制后,k8s会自动分配一个Qos,叫服务质量,通过kubectl describe pods xxx可以看到这个字段。

    Qos可以分为三类:

        Guranteed:表示每个容器的cpu和内存资源设置了相同的requests和limits值,即cpu.requests=cpu.limits和memory.requests=memory.limits,Guranteed会确保这类pod有最高的优先级,会被优先运行的,即使节点上的资源不够用。

        Burstable:表示pod中至少有一个容器设置了cpu或内存资源的requests属性,可能没有定义limits属性,那么这类pod具有中等优先级。

        BestEffort:指没有任何一个容器设置了requests或者limits属性,那么这类pod是最低优先级。当这类pod的资源不够用时,BestEffort中的容器会被优先终止,以便腾出资源来,给另外两类pod中的容器正常运行。

 HeapSter   

docker中容器资源需求、资源限制及HeapSter的示例分析

    HeapSter的作用是收集个节点pod的资源使用情况,然后以图形界面展示给用户。

    kubelet中的cAdvisor负责收集每个节点上的资源使用情况,然后把信息存储HeapSter中,HeapSter再把数据持久化的存储在数据库InfluxDB中。然后我们再通过非常优秀的Grafana来图形化展示。

    一般我们监控的指标包括k8s集群的系统指标、容器指标和应用指标。

    默认InfluxDB使用的是存储卷是emptyDir,容器一关数据就没了,所以我们生产要换成glusterfs等存储卷才行。

    InfluxDB:https://GitHub.com/kubernetes/heapster/blob/master/deploy/kube-config/influxdb/influxdb.yaml

    [root@master metrics]# wget Https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/influxdb.yaml

[root@master metrics]# kubectl apply -f influxdb.yaml deployment.extensions/monitoring-influxdb createdservice/monitoring-influxdb created
[root@master metrics]# kubectl get svc -n kube-systemNAME                   TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)         AGEmonitoring-influxdb    ClusterIP   10.100.80.21   <none>        8086/tcp        17s
[root@master metrics]# kubectl get pods -n kube-systemNAME                                   READY     STATUS    RESTARTS   AGEmonitoring-influxdb-848b9b66f6-ks69q   1/1       Running   0          10m
[root@master metrics]# kubectl log monitoring-influxdb-848b9b66f6-ks69q -n kube-system

    这样我们就部署好了influxdb。

    下面我们开始部署heapster,但heapster依赖rbac。

    所以我们先部署rbac,访问https://github.com/kubernetes/heapster/tree/master/deploy/kube-config/rbac

[root@master metrics]# kubectl apply -f https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/rbac/heapster-rbac.yamlclusterrolebinding.rbac.authorization.k8s.io/heapster created

   所以下面我就可以部署heapster了。

    访问https://github.com/kubernetes/heapster/blob/master/deploy/kube-config/influxdb/heapster.yaml

[root@master ~]# kubectl apply -f https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/heapster.yamlserviceaccount/heapster createddeployment.extensions/heapster createdservice/heapster created
[root@master ~]# kubectl get svc -n kube-systemNAME                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGEheapster               ClusterIP   10.100.35.112   <none>        80/TCP          1m
[root@master ~]# kubectl get pods -n kube-system -o wideNAME                                   READY     STATUS    RESTARTS   AGE       IP             NODEheapster-84c9bc48c4-8h7vf              1/1       Running   0          9m        10.244.1.63    node1
[root@master ~]# kubectl logs heapster-84c9bc48c4-8h7vf -n kube-system

    上面我们把heapster组件装完了,下面我们再装Grafana。

    访问https://github.com/kubernetes/heapster/blob/master/deploy/kube-config/influxdb/grafana.yaml

    我们为了能在集群外部访问Grafana,所以我们需要定义NodePort,所以在granfana.yaml文件最后一行加个type: NodePort

[root@master ~]# wget https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/grafana.yaml
[root@master ~]# tail  grafana.yaml   # or through a public IP.  # type: LoadBalancer  # You could also use NodePort to expose the service at a randomly-generated port  # type: NodePort  ports:  - port: 80    targetPort: 3000  selector:    k8s-app: grafana  type: NodePort
[root@master ~]# kubectl apply -f grafana.yaml deployment.extensions/monitoring-grafana createdservice/monitoring-grafana created
[root@master ~]#  kubectl get svc -n kube-systemNAME                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGEheapster               ClusterIP   10.100.35.112   <none>        80/TCP          22mkube-dns               ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP   37dkubernetes-dashboard   NodePort    10.104.8.78     <none>        443:31647/TCP   16dmonitoring-grafana     NodePort    10.96.150.141   <none>        80:30357/TCP    2mmonitoring-influxdb    ClusterIP   10.100.80.21    <none>        8086/TCP        11h
[root@master ~]#  kubectl get pods -n kube-systemNAME                                   READY     STATUS    RESTARTS   AGEmonitoring-grafana-555545f477-qhb28    1/1       Running   0          5m

    打开浏览器,访问宿主机ip:http://172.16.1.100:30357

docker中容器资源需求、资源限制及HeapSter的示例分析

    据说在v1.12中,已经完全抛弃了heapster。

root@master ~]# kubectl top nodes[root@master ~]# kubectl top pod

    按理说执行上面的两个命令可以出结果,但是k8s从v1.11后不能用了,也无可奈何。

感谢你能够认真阅读完这篇文章,希望小编分享的“docker中容器资源需求、资源限制及HeapSter的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: docker中容器资源需求、资源限制及HeapSter的示例分析

本文链接: https://www.lsjlt.com/news/238310.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • docker中容器资源需求、资源限制及HeapSter的示例分析
    这篇文章主要介绍了docker中容器资源需求、资源限制及HeapSter的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。容器的资源需求、资源限制  ...
    99+
    2023-06-04
  • C#资源池限制实例分析
    这篇“C#资源池限制实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#资源池限制实例分析”文章吧。Semaphore...
    99+
    2023-06-29
  • docker中ingress资源和ingress controller的示例分析
    小编给大家分享一下docker中ingress资源和ingress controller的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! &nb...
    99+
    2023-06-04
  • 利用docker怎么对容器资源进行限制
    利用docker怎么对容器资源进行限制?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。内存限制Docker 提供的内存限制功能有以下几点:容器能使用的内存和交换分区大小。容器的核...
    99+
    2023-06-07
  • Kubernetes资源类型的示例分析
    这篇文章给大家分享的是有关Kubernetes资源类型的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Kubernetes是一个开源的容器管理平台,用于部署和管理容器化的...
    99+
    2024-04-02
  • docker中资源指标API及自定义指标API的示例分析
    这篇文章给大家分享的是有关docker中资源指标API及自定义指标API的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。    以前是用heapster来收集资源指标才能看,现在hea...
    99+
    2023-06-04
  • JNDI资源引用设置的示例分析
    这篇文章主要介绍JNDI资源引用设置的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!DataSource,JNDI, 资源引用设置 等server.xml中配置主机应用上下文    <...
    99+
    2023-06-03
  • HTML5中资源预加载Link prefetch的示例分析
    小编给大家分享一下HTML5中资源预加载Link prefetch的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!不管是...
    99+
    2024-04-02
  • CocosCreator新资源管理系统的示例分析
    小编给大家分享一下CocosCreator新资源管理系统的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.资源与构建1.1 creator资源文件基础在...
    99+
    2023-06-14
  • Kubernetes中资源限制和请求的概念是什么
    在Kubernetes中,资源限制和请求是用来控制容器在集群中使用资源的重要概念。 资源请求是容器在运行时对资源的需求量,用来告诉K...
    99+
    2024-04-02
  • 推荐10个ReactJS入门资源的示例分析
    本篇文章给大家分享的是有关推荐10个ReactJS入门资源的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 React 是发...
    99+
    2024-04-02
  • Java正确地从类路径中获取资源的示例分析
    这篇文章给大家分享的是有关Java正确地从类路径中获取资源的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Java 可通过以下几种方法来访问资源:Class 的 getResource 方法ClassLo...
    99+
    2023-06-15
  • webpack与SPA实践之管理CSS等资源的示例分析
    这篇文章主要介绍webpack与SPA实践之管理CSS等资源的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前言在学习使用webpack时,我们需要明白无论它怎么设计,它的工...
    99+
    2024-04-02
  • NodeJS中父进程与子进程资源共享原理的示例分析
    小编给大家分享一下NodeJS中父进程与子进程资源共享原理的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!实验目标:实现父进程与子进程间资源共享使用模块:cluster简介:建立n...
    99+
    2024-04-02
  • MT6177芯片资料及处理器的示例分析
    这篇文章主要为大家分析了MT6177芯片资料及处理器的示例分析的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“MT6177芯片资料及处理器的示例分析”的知识吧...
    99+
    2023-06-05
  • ZKEYS公有云管理系统一站式资源池的示例分析
    今天就跟大家聊聊有关ZKEYS公有云管理系统一站式资源池的示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。随着云计算的发展,主流的泛互联网企业,以及很多传统行业的寡头企业,均已...
    99+
    2023-06-03
  • 网页资源阻塞浏览器加载的原理示例解析
    目录正文测试前环境准备图片会造成阻塞吗?CSS 加载阻塞CSS 会阻塞后面 JS 的执行吗?JS 加载阻塞defer 和 async动态脚本会造成阻塞吗?DOMContentLoad...
    99+
    2023-03-07
    网页资源阻塞浏览器加载 网页浏览器加载
  • Web前端性能优化之资源合并与压缩的示例分析
    这篇文章将为大家详细讲解有关Web前端性能优化之资源合并与压缩的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。资源合并与压缩两个目的减少http请求数量减少请求资源的大小google首页案例学习h...
    99+
    2023-06-08
  • Android热修复技术原理之资源热修复技术的示例分析
    小编给大家分享一下Android热修复技术原理之资源热修复技术的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、普遍的实现方式目前市面上的很多资源热修复...
    99+
    2023-06-20
  • 浏览器中同源策略以及跨域的示例分析
    这篇文章主要介绍了浏览器中同源策略以及跨域的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是浏览器的同源策略,以及跨域?同源策略...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作