写点什么

Kubernetes 安全三步谈:如何监控与控制 Kubernetes 中的资源消耗问题

  • 2020-05-16
  • 本文字数:2302 字

    阅读完需:约 8 分钟

Kubernetes安全三步谈:如何监控与控制Kubernetes中的资源消耗问题

本文是关于 Kubernetes 安全系列三篇文章中的最后一篇。在第一篇文章中,我们分享了如何确保企业的 Kubernetes 集群免受外部攻击;第二篇文章介绍了三种保护 Kubernetes 免受内部威胁的方法。在本文中,我们将介绍如何处理资源消耗或 noisy neighbor 问题。


对于那些设置了多租户 Kubernetes 集群的集群管理员而言,他们十分关注和担心的一个问题是,如何防止共同租户成为“noisy neighbor”,即一个垄断了 CPU、内存、存储和其他资源的人。Noisy neighbor 会对共享基础设施的其他用户资源的性能产生极坏的影响。


如此一来,跟踪 Kubernetes 容器和 Pod 的资源使用情况,对集群管理而言非常重要,因为它不仅可以保持容器编排系统处于最佳运行状态,降低运维成本,还可以加强 Kubernetes 的整体安全状况。


一些运维团队可能不认为 资源消耗 是一种重要的安全问题,至少没有保护 Kubernetes 免受内部和外部网络攻击重要。但这种观点是不正确的。因为厉害的黑客会利用功能不良的基础设施,来找到攻击 Kubernetes 组件的方法。


“安全不仅仅是‘不要闯进我的房子’,而是‘我怎么能让我的房子一直保持良好的运行状态’,”Rancher Labs 的高级解决方案架构师 Adrian Goins 表示。


运维团队需要最大限度地利用 Kubernetes Pods(一组具有共享存储和网络资源的一个或多个容器)所消耗的资源,以确保每个用户都能拥有最佳性能,并且能监控成本分配的使用情况。“使用等于成本,”Goins 说,“因为 Kubernetes 资源都是运行在 AWS、谷歌云、阿里云等等云提供商的底层计算基础设施上,一切资源消耗都以为着金钱成本。即使集群是在数据中心的裸机上运行,过多的使用也会花费硬件、电力和其他资源。”


默认情况下,配置容器时,对其可以使用的资源量没有任何限制。如果容器不能高效运行,部署容器的组织必将支付超额费用。值得庆幸的是,Kubernetes 具有帮助运维团队管理和优化 Kubernetes 资源利用能力的功能。

管理 Pods 中的资源

当管理员定义 Pod 时,他们可以选择指定每个容器需要多少 CPU 和内存(RAM)。当容器指定了资源请求时,调度程序可以更好地决定将 Pod 放在哪个节点上。根据 Kubernetes 的文档,当容器指定了限制时,可以按指定的方式处理节点上的资源争用。


默认情况下,Kubernetes 集群中的所有资源都是在默认的命名空间中创建的。命名空间是一种逻辑地将集群资源进行分组的方法,包括用于指定资源配额的选项。


管理员可以在命名空间上设置资源限制或配额,为在命名空间中运行的工作负载或应用程序分配一定量的 CPU、RAM 或存储——Kubernetes 集群中的三个资源。“如果在命名空间中启动另一个资源会超出预设的配额,那么任何新资源都无法启动,”Goins 指出。


“当你应用了资源配额时,意味着你强制在该命名空间中运行的所有内容为其自身设置资源限制。限制有两种类型:预留,和最大限制,”Goins 解释说。例如,通过预留,管理员可以让 Kubernetes 集群为 WordPress 站点分配 128 MB 的 RAM。对于部署的每个 WordPress Pod,服务器本身将保证 128 MB 的 RAM。因此,如果管理员将资源请求与 1GB 的资源配额相结合,则用户只能在超过其限制之前运行八个 WordPress Pod。在那之后,他们将无法再使用 RAM 了。


资源限制的第二部分是最大限度。管理员可以预留 128 MB 的资源请求和最多 256 MB 的 RAM。“如果 Pod 超过 256 MB 的 RAM 使用量,Kubernetes 会杀死它并重新启动它,”Goins 说。“如此以来,用户可以免受失控过程和 noisy neighbor 的影响。”

项目和资源配额

像 Rancher 这样的平台,旨在通过提供直观的界面和集中管理任务(如全局层的角色描述)来简化 Kubernetes 的管理。


正如前一篇关于内部威胁防护的文章所述,Rancher 包含一个有助于减轻集群管理负担的“项目(Project)”资源,来超越命名空间。在 Rancher 中,Project 允许管理员将多个命名空间作为单个实体进行管理。因此,Rancher 可以将资源配额应用于 Projects。


在标准 Kubernetes 部署中,资源配额只能应用于单独的命名空间。但是,管理员无法通过单次操作,同时将配额应用于命名空间。资源配额必须经过多次操作。


然而在 Rancher 中,管理员可以将资源配额应用于 Project,然后将配额传播到每个命名空间。然后,Kubernetes 会使用本机版本的资源配额,来强制执行管理员限制。如果管理员希望更改特定命名空间的配额,则可以覆盖以前的配额。

强化和优化 Kubernetes

毋庸置疑,Kubernetes 已成为容器编排的标准,这也促使大多数云和虚拟化供应商将其作为标准基础架构来提供。但是,对与 Kubernetes 环境相关的安全问题的普遍缺乏认识,可能会使各种组件暴露于来自网络集群内外的攻击中。


本系列文章的上两篇中提供了一些可行的步骤,来告诉大家如何通过使用 Kubernetes 功能和容器管理解决方案(如 Rancher),来加强 Kubernetes 对外部和内部网络威胁的防范。企业应通过基于角色的访问控制(RBAC)和强身份验证从外部保护 Kubernetes API 访问。对于内部人员保护,由于 Kubernetes 集群是多用户,因此组织需要通过 RBAC、逻辑隔离和 NetworkPolicies 来保护交叉通信。


为了防止其他租户垄断 CPU、内存、存储和其他资源从而拖累整个集群的性能,Kubernetes 提供资源限制和配额等功能,以帮助运维团队管理和优化 Kubernetes 资源利用功能。最后,除了可用的默认设置之外,业界还有一些非常有效的工具可以帮助用户完成 Kubernetes 集群的管理和保护。例如像 Rancher 这样的平台就是一种高度优化的容器管理解决方案,专为将多个集群部署到生产环境中的组织而构建,企业用户可以更轻松地管理和运行各地的 Kubernetes。它可以保护 Kubernetes 集群免受外部黑客威胁、内部隐患甚至 noisy neighbor。


2020-05-16 17:15729

评论

发布
暂无评论
发现更多内容

云图说丨初识可信分布式身份服务

华为云开发者联盟

云计算 安全 后端

Meta项目功能测试 | 开启PrestoDB和Aria扫描优化

Alluxio

hive presto Alluxio 大数据 开源 8月月更

字节一面:HTTPS 一定安全可靠吗?

程序员小毕

Java 程序员 面试 https 校招

当内卷风波及代码领域,看Alluxio将会采取怎样的块分配策略

Alluxio

腾讯 存储 Alluxio block 8月月更

手把手教你实现 TiFlash 向量化函数丨十分钟成为 TiFlash Contributor

TiDB 社区干货传送门

TiDB 和 Golang 的简单 CRUD 应用程序

TiDB 社区干货传送门

开源一夏 | 在 STM32L051 上使用 RT-Thread (四、无线温湿度传感器 之 串口通讯)

矜辰所致

开源 RT-Thread 8月月更 STM32L051

Web3.0 DAPP项目智能合约系统开发技术详情

开发微hkkf5566

PingCAP Clinic 服务:贯穿云上云下的 TiDB 集群诊断服务

TiDB 社区干货传送门

九章云极DataCanvas公司与中国信通院完成可信AI基础软件战略合作

九章云极DataCanvas

人工智能 数据智能 数智化 可信AI

打了15天,如何做到在容器权限上不失一分?

青藤云安全

容器安全 攻防演练

Python图像处理丨基于OpenCV和像素处理的图像灰度化处理

华为云开发者联盟

Python 人工智能 图像

如何在 TiDB Cloud 上使用 Databricks 进行数据分析 | TiDB Cloud 使用指南

TiDB 社区干货传送门

离线部署系列文章之二:TiDB集群升级(5.3.0->5.4.2)&缩扩容 TiDB Server、PD、TiKV、TiFlash

TiDB 社区干货传送门

版本升级 集群管理 管理与运维 安装 & 部署

【8.12-8.19】写作社区精彩技术博文回顾

InfoQ写作社区官方

优质创作周报

一文带你认知定时消息发布RocketMQ

华为云开发者联盟

云计算 后端

故障处理 | DM 搭建 MySQL 8.0 同步链路报错:code=26005

TiDB 社区干货传送门

安装 & 部署 TiDB 源码解读

马拉车算法 (最长回文串 例题 密码截获)

Five

算法 8月月更

如何在企业数字化团队内部实现数据分析建模成果的结构化整合沉淀

ModelWhale

工作流 数字化转型 数字化 案例分享 提高效率

7 天能找到 Go 工作吗?学学 Go 数组和指针试试

梦想橡皮擦

Python 爬虫 8月月更

优雅,永不过时!SpringBoot中这样编写Controller层代码,那叫一个完美

Java永远的神

Java 程序员 面试 程序人生 springboot

TiDB 和 Java 的简单 CRUD 应用程序

TiDB 社区干货传送门

如何让 TiDB 集群管理“更省心”?TiUniManager(原 TiEM)使用教程来了

TiDB 社区干货传送门

5分钟,带你看完24岁60W年薪架构师的简历,上面竟然写着精通JVM

收到请回复

Java JVM java面试 简历模板 金九银十

如何避免数据湖变成数据沼泽

Kyligence

数据湖 数据管理 智能多维数据库

离线部署系列文章之一:TiDBv5.3.0集群部署&源码部署 Haproxy v2.5.0

TiDB 社区干货传送门

实践案例 版本升级 管理与运维 安装 & 部署 扩/缩容

ABAP 一组关键字 IS BOUND, IS NOT INITIAL 和 IS ASSIGNED 的用法辨析

汪子熙

指针 应用 SAP abap 8月月更

前半个月的行动中,整个圈子都在疯传的“内网King”到底是个啥?

青藤云安全

网络安全 主机安全 攻防演练

20万字的《Kafka运维实战宝典》PDF现在免费下载了

石臻臻的杂货铺

大数据 kafka

SAP ABAP 和 Java 里的弱引用(WeakReference)和软引用(SoftReference)

汪子熙

Java 引用 SAP abap 8月月更

OpenHarmony有氧拳击之设备端开发

OpenHarmony开发者

OpenHarmony

Kubernetes安全三步谈:如何监控与控制Kubernetes中的资源消耗问题_文化 & 方法_Rancher_InfoQ精选文章