使用Kubernetes的挑战和应对技巧

简介: 使用Kubernetes的挑战和应对技巧

从2000年FREEBSD( 一种可免费使用的UNIX操作系统 ) 亮相,容器技术不断发展,到如今,容器已牢牢占据着现代软件交付的中心地位Kubernetes是当今容器编排的事实上的标准,并且是容器化领域中最好的。正如预测的那样,到2023年,全球70%以上的企业将运行两个或多个容器化应用程序。


但是,Kubernetes目前仍然很复杂。即使Kubernetes在测试环境中运行平稳,在生产环境中也需要谨慎地运行它,以避免出现陷阱。

如果考虑在你的环境中使用Kubernetes,请注意以下几个方面:


Kubernetes挑战

掌握复杂性

部署完整的K8S基础架构时,需要配置的组件数量众多,使得部署过程变得复杂艰巨:

  1. DNS设置:需要考虑和某些Linux发行版是否发生冲突,还有DNS搜索限制等。
  2. 负载均衡:需要考虑许多因素,例如在托管的K8S或外部负载均衡器之间进行选择。
  3. 资源约束:可以在容器,节点甚至命名空间级别定义资源约束,每种约束都有其优缺点。
  4. 基于角色的访问控制(RBAC):跨多个Pod,节点和名称空间的“角色”和“集群角色”需要进行认真规划和实施。
  5. 监测指标:尽管K8S提供了有关容器,pod,服务和集群级别的应用程序资源使用的详细信息,但是应用程序监视分散在多个应用程序和工具中,汇总起来比较麻烦。


加强安全性

在K8S环境中实施安全性,需要考虑到由于部署微服务而导致软件的攻击面增加。K8S虽然易于部署,但无法严格管理和控制它们会产生新的漏洞。需要考虑的一些要素是:

  1. 镜像的安全
  2. 节点访问控制
  3. 网络隔离
  4. API管理
  5. 统一身份认证服务

集成以上这些元素所涉及的复杂性也常常被低估,并导致许多安全漏洞。根据2020年有关“Kubernetes安全状态”的研究“ ,94%的受访者在过去12个月内在其Kubernetes和容器环境中经历了安全事件。

  1. K8S漏洞–在容器化环境中,攻击者可以使用“特权容器( privileged containers )”来获得特权。特权容器是指具有主机所有功能的容器。因此,获得对此类容器的访问权限可以授予攻击者权限,并可以访问所有主机资源。
  2. 扩展实例– K8S的生产环境中经常需要快速扩展数百个Pod,如果无效的监视和日志记录可能会导致无法诊断故障。
  3. 自动伸缩–配置垂直,水平或组合的自动伸缩过程需要对所需资源范围(节点的最小和最大CPU和内存)进行深入评估。
  4. 更新:当社区发布K8S的新版本时,如果需要升级生产集群,最好不要导致应用程序宕机。
  5. 资源管理–没有设置资源限制,会带来宕机的风险。
  6. 监视–有效监视系统运行信息,对于故障诊断至关重要。


Kubernetes 最佳实践

但是,我们可以采用一些最佳实践,来在生产环境中安全地操作K8S:

  1. 使用非Root权限运行容器:如果容器发生破坏,Root权限的容器会扩大风险。
  2. 实施RBAC:正确配置RBAC策略,以确保它们至少满足K8S的最低要求,并且最好根据特定的角色访问资源,以最大程度地提高安全性。
  3. 实施全面的测试:在部署生产环境之前,必须系统地运行包括功能测试,用户测试和负载测试在内的全面测试。
  4. 滚动升级避免使用latest 标签
  5. 配置CI/CD-流水线:正确配置CI/CD流水线对于提高软件质量和安全性,以及加快发布速度至关重要。自动化的集成和部署工具可以帮助实现这一点。
  6. 镜像仓库和部署管理:确保将Docker镜像安全地存储在镜像仓库中,可以启用镜像管理工作流。适当的管理,可确保镜像签名,安全性,LDAP集成等方面的一致性。使用部署管理器(例如Helm)可以简化基于K8S的应用程序定义,安装和升级阶段的管理。
  7. 使用Pod安全策略(PSP):Pod Security Policies(PSP)是集群级的Pod安全策略,自动为集群内的Pod和Volume设置Security Context。。
  8. 镜像扫描:尤其是在使用外部镜像之前,首先需要对其进行扫描可降低引入漏洞的风险。另外,Kubei是一个不错的新工具,它“仅扫描在运行时部署的镜像,它取代了扫描整个镜像仓库。”
  9. 使用Service Mesh(服务网格):服务网格有助于确保服务交互经过授权,认证,从而确保通信安全。
  10. 使用指标,CPU状态和仪表板来衡量运行状况:无效的监视和日志记录可能导致无法诊断软件故障。


译文链接: https://dzone.com/articles/the-challenges-of-adopting-k8s-for-production-and


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
存储 Kubernetes 负载均衡
Kubernetes的优势
Kubernetes的优势
152 0
|
运维 Kubernetes 大数据
利用 Kubernetes 降本增效?EasyMR 基于 Kubernetes 部署的探索实践
Kubernetes 是市面上最受欢迎的集群管理解决方案之一,本文将介绍 EasyMR 作为一款提供一站式可视化组件安装部署与可观测运维管理能力的大数据计算引擎产品,是如何基于 Kubernetes 部署进行实践探索的。
94 0
|
3月前
|
运维 Kubernetes 负载均衡
Kubernetes有哪些优势
【10月更文挑战第18天】Kubernetes有哪些优势
76 1
|
5月前
|
Kubernetes Cloud Native API
Kubernetes云原生问题之Kubernetes帮助业务应用较少关注底层基础设施差异如何解决
Kubernetes云原生问题之Kubernetes帮助业务应用较少关注底层基础设施差异如何解决
53 1
|
5月前
|
存储 Kubernetes 负载均衡
在K8S中,Kubernetes有哪些自身优势?
在K8S中,Kubernetes有哪些自身优势?
|
Kubernetes Cloud Native KVM
Kubernetes(k8s)部署模式发展
Kubernetes(k8s)部署模式发展
163 0
|
机器学习/深度学习 Kubernetes 监控
Kubernetes 企业如何落地
Kubernetes 企业如何落地
201 0
|
监控 Kubernetes 安全
如何为你的Kubernetes保驾护航
如何为你的Kubernetes保驾护航
如何为你的Kubernetes保驾护航
|
自然语言处理 Kubernetes 监控
系统架构面临的三大挑战,看 Kubernetes 监控如何解决?
随着 Kubernetes 的不断实践落地,我们经常会遇到负载均衡、集群调度、水平扩展等问题。归根到底,这些问题背后都暴露出流量分布不均的问题。那么,我们该如何发现资源使用,解决流量分布不均问题呢?今天,我们就借助三个具体场景聊聊这一问题以及相应的解决方案。
系统架构面临的三大挑战,看 Kubernetes 监控如何解决?
|
运维 Kubernetes 微服务
Kubernetes多租户策略的好处和挑战
Kubernetes多租户策略的好处和挑战
267 0
Kubernetes多租户策略的好处和挑战