首页 > 其他分享 >K8S资源限制实战:优化性能与资源管理

K8S资源限制实战:优化性能与资源管理

时间:2023-06-16 16:34:53浏览次数:45  
标签:实战 限制 -- goweb 应用 K8S 资源管理 资源

Part1写在开篇

K8S已成为容器编排和管理的事实标准,为开发者和运维人员提供了强大的工具和功能。在K8S集群中,对资源的合理限制和管理是确保应用性能和可靠性的关键因素。本文将介绍如何在K8S集群中使用资源限制来优化应用的性能和实现资源管理。

Part2实验环境

本次实战使用的K8S集群环境包括以下节点:

节点 主机名 IP
Master k8s-b-master 192.168.11.100
Node 1 k8s-b-node01 192.168.11.101
Node 2 k8s-b-node02 192.168.11.102
Node 3 k8s-b-node03 192.168.11.103
Node 4 k8s-b-node04 192.168.11.104
Node 5 k8s-b-node05 192.168.11.105
Node 6 k8s-b-node06 192.168.11.106

Part3开始实战

1步骤 1:部署goweb应用

我们将使用goweb这个测试应用来演示资源限制的实战。goweb是一个用Golang语言开发的简单Web应用,你也可以使用自己的应用进行测试。首先,我们需要将goweb应用部署到K8S集群中。

  1. 创建一个命名空间(Namespace)用于部署应用:
kubectl create namespace goweb-demo
  1. 创建一个Deployment来运行goweb应用:
kubectl create deployment goweb --image=192.168.11.254:8081/webdemo/goweb:1.0 --namespace=goweb-demo
  1. 创建一个Service来公开goweb应用的访问入口:
kubectl expose deployment goweb --port=80 --target-port=8080 --namespace=goweb-demo

Part4步骤 2:设置资源限制

为了确保应用的稳定性和性能,我们需要为goweb应用设置适当的资源限制。在K8S中,可以使用资源限制(Resource Limit)来控制应用的CPU和内存使用。

  1. 创建一个资源限制的配置文件 goweb-resource-limit.yaml,并添加以下内容:
apiVersion: v1
kind: LimitRange
metadata:
  name: goweb-resource-limit
  namespace: goweb-demo
spec:
  limits:
    - default:
        cpu: "1"
        memory: 1Gi
      defaultRequest:
        cpu: "0.5"
        memory: 512Mi
      type: Container

这个配置文件定义了一个资源限制范围,每个容器的默认CPU和内存限制为指定的值。

关于LimitRange的更多信息,可以参考官方文档:https://kubernetes.io/zh-cn/docs/concepts/policy/limit-range/

  1. 应用资源限制配置:
kubectl apply -f goweb-resource-limit.yaml

现在,goweb应用将受到资源限制的约束,确保在合理的范围内使用CPU和内存资源。

Part5步骤 3:测试资源限制效果

为了验证资源限制的效果,我们可以进行一些测试,例如模拟高负载情况下应用的行为。

  1. 创建一个测试Pod:
kubectl run -it --rm load-generator --image=busybox --restart=Never --namespace=goweb-demo -- /bin/sh -c "while true; do wget -q -O- http://goweb; done"

这个命令将创建一个无限循环的Pod,每秒钟访问一次goweb应用。

  1. 观察Pod的行为:
kubectl top pod --namespace=goweb-demo

运行上述命令,你将看到goweb应用在资源限制下的CPU和内存使用情况。

Part6最后总结

好了,本篇分享到此结束!通过本次实战,你已经了解了在K8S集群中设置资源限制的步骤,并通过goweb应用的部署和测试,验证了资源限制的效果。现在你可以尝试在自己的应用中应用这些资源管理技巧,提升应用的性能和稳定性。记得根据实际情况调整资源限制的数值,以满足应用的需求。

注重运维实战,我们比谁都拼!日常分享实用干货,助你成为运维大神!探索技术的魅力,从这里开始!

1、阅读我的技术分享,掌握最新的行业趋势;
2、解密技术背后的秘密,拓宽你的思维边界;
3、加入我的技术社群,与志同道合者共同成长。

本篇原文链接:[https://mp.weixin.qq.com/s?__biz=MzUzMTkyODc4NQ==&mid=2247486610&idx=1&sn=f600d100eb64b867b745fcedf27e08e4&chksm=faba4f2ccdcdc63a2a1e51f947a300b4b4732a3f1ccef73c4e77700eed85368e6c7689d2075d&scene=178&cur_album_id=2474851867500544003#rd]

云原生合集:[https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&__biz=MzUzMTkyODc4NQ==&scene=1&album_id=2474851867500544003&count=3#wechat_redirect]

运维开发合集:[https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&__biz=MzUzMTkyODc4NQ==&scene=1&album_id=2869340550028771330&count=3#wechat_redirect]

运维杂谈合集:[https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&__biz=MzUzMTkyODc4NQ==&scene=1&album_id=2869345486221262853&count=3#wechat_redirect]

点击链接,畅读精彩文章,从中获取洞见,为自己的技术之旅注入新的动力!关注我的微信公众号,不错过更多精彩内容。

标签:实战,限制,--,goweb,应用,K8S,资源管理,资源
From: https://www.cnblogs.com/ttropsstack/p/17485902.html

相关文章

  • cenos 搭建k8s集群
    1、准备环境#开放防火墙端口或关闭防火墙systemctlstopfirewalld#关闭selinux setenforce0或者 永久修改sed-i's/enforcing/disabled/'/etc/selinux/config#关闭swaswapoff-a#三台服务器都修改/etc/hoststest1作为mastertest2作为节点1test3作为节点2# ......
  • 一篇带你入门DDD实战
    DDD理论微服务和DDD的渊源软件架构模式的演进我们先来分析一下软件架构模式演进的三个阶段。第一阶段是单机架构:采用面向过程的设计方法,系统包括客户端UI层和数据库两层,采用C/S架构模式,整个系统围绕数据库驱动设计和开发,并且总是从设计数据库和字段开始。第二阶段是集中式架......
  • K8S的OOM和cpu节流
    介绍使用Kubernetes时,内存不足(OOM)错误和CPU节流是云应用程序中资源处理的主要难题。这是为什么?云应用程序中的CPU和内存要求变得越来越重要,因为它们与您的云成本直接相关。通过limits和requests,您可以配置pod应如何分配内存和CPU资源,以防止资源匮乏并调整云成本......
  • K8S中pod状态详解
    Pod有以下几个状态:Pending等待中Running运行中Succeeded正常终止Failed异常停止Unkonwn未知状态Pod状态详解PendingPod已经被创建,但还没有完成调度,可能处在:写数据到etcd,调度,pull镜像,启动容器这四个阶段中的任何一个阶段,pending伴随的事件通常会有:ADDED,Modified这两个事件的......
  • RocketMQ 从入门到实战
    扫一扫加入作者公众号扫一扫关注中间件兴趣圈RocketMQ官微扫一扫关注【阿里巴巴云原生】公众号阿里云开发者“藏经阁”获取第一手技术干货海量免费电子书下载作者简介作者简介丁威,《RocketMQ技术内幕》作者,RocketMQ官方社区优秀布道师,荣获CSDN2020博客之星亚军;担任......
  • Vue项目入门实战(07)-想让你的Vue页面更炫酷?来学习样式绑定吧
    1class的对象绑定1.1需求现在要实现点击div区域里的helloworld文本时,文本变成红色。1.2实现<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Vue中的样式绑定</title><scriptsrc="../vue.js&q......
  • k8s实战案例之基于StatefulSet控制器运行MySQL一主多从
    1、前言Pod调度运⾏时,如果应⽤不需要任何稳定的标示、有序的部署、删除和扩展,则应该使⽤⼀组⽆状态副本的控制器来部署应⽤,例如Deployment或ReplicaSet更适合⽆状态服务需求,⽽StatefulSet适合管理所有有状态的服务,⽐如MySQL、MongoDB集群等。2、StatefulSet控制器运行MySQL一......
  • 初识k8s,安装k8s,kubesphere一键安装
     1.轻量级的容器系统是是现在的主流,但一个成熟的项目可能需要成百上千的应用(容器)来支撑,如此一来,大量分布在不同服务器上的容器就靠人工就非常难以管理,而Kubernetes的出现就是为了解决这个问题,它将大量的容器编排管理起来。 2.容器编排系统角逐历史mesosapache分布式资......
  • 实战:私有化部署ngin+文件步骤记录
    背景:出差到某国企进行私有化部署,一波三折。没想到是那种最麻烦的部署,导入文件需要刻光盘,进入电脑房需要上交手机,不允许有人以及拍摄设备,内部有监控摄像头。有问题怎么办?知道的自己先试试,一定也不懂的。手抄笔记本上,然后一个字一个字的敲出来。哦,对了,门口还没网,必须得往外走走。以前......
  • 【Docker/K8s】启动容器镜像,使其空转不退出
    场景描述有些时候,我们仅仅想启动一个Docker容器,而不需要它执行预置的命令。比如一个场景是我想检查集群的网络状况,那我需要启动一个容器,然后进入到容器里执行命令来调试。大部分的镜像都带有默认的启动cmd,导致直接dockerrun启动的话,很快就会因为预置命令执行失败导致退出。解决......