k8s 资源限制——Limits和Requests使用

一、简介

 在k8s集群中为了能够使系统正常稳定运行,通常会限制Pod的资源使用情况,在k8s集群中如果有一个程序出现异常,并占用大量的系统资源。如果未对该Pod进行资源限制的话,可能会影响其他的Pod。

   k8s常见的资源管理方式:计算资源管理(Compute Resources)、资源的配置范围管理(LimitRange)和资源的配额管理(Resource Quotas)

 

计算资源管理(Compute Resources): 为Pod中的容器指定使用的计算资源(CPU和内存)。

 

资源的配置范围管理(LimitRange):可以对集群内Request和Limits的配置做一个全局的统一的限制,相当于批量设置了某一个范围内(整个集群、某个命名空间等)的Pod的资源使用限制。

 

资源的配额管理(Resource Quotas):可以为每一个命名空间(namespace)提供一个总体的资源使用限制,通过它可以限制命名空间中某个类型的对象的总数目上限,也可以设置命名空间中Pod可以使用到的计算资源的总上限。资源的配额管理有效解决了多用户或多个团队公用一个k8s集群时资源有效分配的问题。

 

本篇主要总结 计算资源管理(Compute Resources)的使用

 

### 部署配置 EFK 栈 #### 1. 准备工作 在 Kubernetes (k8s) 中部署 EFK 日志收集系统之前,需确认以下准备工作已完成: - 已安装并运行 Kubernetes 集群,版本为 `v1.28.14` 或兼容版本[^1]。 - 安装 Helm(可选),用于简化应用的部署过程。 #### 2. 部署 Elasticsearch Elasticsearch 是整个系统的存储核心。以下是具体操作步骤: ##### 获取镜像 如果目标环境是 ARM 架构,则需要拉取适合该架构的 Elasticsearch 镜像。执行如下命令以下载指定版本的镜像: ```bash docker pull gagara/elasticsearch-oss-arm64:7.3.2 ``` ##### 修改 Dockerfile YAML 文件 克隆官方 Kubernetes 仓库,并切换至对应标签版本: ```bash git clone https://github.com/kubernetes/kubernetes.git cd kubernetes/cluster/addons/fluentd-elasticsearch/ git checkout v1.16.0 ``` 修改 `Dockerfile` 的内容,替换默认镜像地址为支持 ARM 的镜像路径: ```dockerfile FROM gagara/elasticsearch-oss-arm64:7.3.2 ``` 创建或更新 Elasticsearch 的 Deployment Service 资源定义文件。例如,在 YAML 文件中设置副本数、资源限制以及持久化卷声明: ```yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: elasticsearch spec: serviceName: "elasticsearch" replicas: 3 selector: matchLabels: app: elasticsearch template: metadata: labels: app: elasticsearch spec: containers: - name: elasticsearch image: gagara/elasticsearch-oss-arm64:7.3.2 ports: - containerPort: 9200 name: http resources: requests: cpu: "500m" memory: "2Gi" limits: cpu: "1" memory: "4Gi" --- apiVersion: v1 kind: Service metadata: name: elasticsearch spec: type: ClusterIP ports: - port: 9200 targetPort: 9200 selector: app: elasticsearch ``` #### 3. 配置 Fluentd Fluentd 负责从容器标准输出流捕获日志数据并将它们转发给 Elasticsearch 进行索引处理。 编辑 Fluentd 的 ConfigMap 来定制解析器插件规则集;同时调整其 DaemonSet 描述符中的参数选项以便适配特定需求场景下的性能优化策略[^2]: ```yaml apiVersion: v1 data: fluent.conf: | <source> @type tail path /var/log/containers/*.log pos_file /var/log/es-containers.log.pos tag kubernetes.* read_from_head true <parse> @type json </parse> </source> <match **> @type copy <store> @type elasticsearch host "#{ENV['FLUENT_ELASTICSEARCH_HOST'] || 'elasticsearch'}" port "#{ENV['FLUENT_ELASTICSEARCH_PORT'] || 9200}" logstash_format true </store> </match> kind: ConfigMap metadata: name: fluentd-config namespace: kube-system --- apiVersion: apps/v1 kind: DaemonSet ... ``` #### 4. 启动 Kibana 可视化界面服务端口映射关系设定部分省略... 最后一步就是启动可视化工具——Kibana 实例来展示已采集的日志信息概览图表等内容了. ```python print("EFK Stack Deployment Completed!") ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值