笔记。 翻译。:原文作者是 Théo Chamley,Google 云解决方案架构师。 在 Google Cloud 博客的这篇文章中,他提供了其公司更详细指南的摘要,称为“
在本文中,我们将列出在 Kubernetes 上有效运行容器所需了解和执行的一系列事项。 那些希望深入了解细节的人应该阅读材料
1.使用原生容器日志机制
如果应用程序运行在 Kubernetes 集群上,则不需要太多日志。 您正在使用的集群中可能已经内置了集中式日志记录系统。 在使用 Kubernetes Engine 的情况下,这是负责的
如果需要,您还可以将日志写入
2. 确保容器是无状态且不可变的
为了使容器在 Kubernetes 集群中正常运行,它们必须是无状态且不可变的。 一旦满足这些条件,Kubernetes 就可以完成其工作,在需要的时间和地点创建和销毁应用程序实体。
无状态 意味着任何状态(任何类型的持久数据)都存储在容器外部。 为此,根据需要,可以使用不同类型的外部存储:
不可变的 意味着容器在其生命周期内不会被修改:没有更新、补丁、配置更改。 如果您需要更新应用程序代码或应用补丁,请创建新映像并部署它。 建议将容器配置(监听端口、运行时环境选项等)移至外部
使用挂载在 pod 中的 ConfigMap 作为配置来更新 Kubernetes 中的 Deployment 配置的示例
3.避免特权容器
您不会在服务器上以 root 身份运行应用程序,对吗? 如果攻击者进入该应用程序,他将获得 root 访问权限。 同样的注意事项也适用于不运行特权容器。 如果需要更改主机上的设置,可以为容器指定特定的设置 能力 使用选项 securityContext
如果您管理集群,则可以使用
4.避免以 root 身份运行
特权容器已经讨论过,但除此之外,如果您不在容器内以 root 身份运行应用程序,那就更好了。 如果攻击者在具有 root 权限的应用程序中发现允许执行代码的远程漏洞,之后他能够通过未知的漏洞离开容器,他将获得主机上的 root 权限。
避免这种情况的最好方法是首先不要以 root 身份运行任何东西。 为此,您可以使用指令 USER
в Dockerfile
или runAsUser
在 Kubernetes 中。 集群管理员还可以使用以下命令配置强制行为
5. 使应用程序易于监控
与日志记录一样,监控是应用程序管理的一个组成部分。 Kubernetes 社区中流行的监控解决方案是
Stackdriver 上的 Kubernetes 仪表板
Prometheus 希望应用程序将指标转发到 HTTP 端点。 可用于此
6. 提供应用程序的健康状态
生产中的应用程序管理得益于其将其状态传达给整个系统的能力。 应用程序正在运行吗? 可以吗? 您准备好接收流量了吗? 他表现如何? 解决这个问题最常见的方法就是实施健康检查 (健康检查)。 Kubernetes 有两种类型:
用于活性探针 (活力检查) 应用程序必须有一个 HTTP 端点,如果它可以正常工作并且满足其基本依赖性,则该端点会返回“200 OK”响应。 用于就绪探针 (服务准备情况检查) 如果应用程序处于健康状态、初始化步骤已完成并且任何有效请求都不会导致错误,则应用程序必须有另一个返回“200 OK”响应的 HTTP 端点。 仅当应用程序根据这些检查准备就绪时,Kubernetes 才会将流量路由到容器。 如果活跃状态和就绪状态之间没有差异,则可以合并两个端点。
您可以在 Google 开发者倡导者 Sandeep Dinesh 的相关文章中阅读更多相关内容:“
7. 仔细选择您的镜像版本
大多数公共和私人图像使用类似于中描述的标记系统 latest
可以频繁地从一个图像移动到另一个图像 - 如果您需要可预测和可重复的构建和安装,则不能依赖。
您可以使用标签 X.Y.Z
(它们几乎总是不变),但在这种情况下,请跟踪图像的所有补丁和更新。 如果您使用的图像有标签 X.Y
,这是一个中庸之道的好选择。 通过选择它,您将自动接收补丁,同时依赖应用程序的稳定版本。
译者PS
另请阅读我们的博客:
- «
CNCF 关于容器、云原生和 Kubernetes 的新统计数据 “; - «
设计基于容器的应用程序的 7 个原则 “; - «
(不)成为 Kubernetes 黑客受害者的 11 种方法 “; - «
我们在小型项目中使用 Kubernetes 的经验 » (评论和视频报道); - «
监控和 Kubernetes » (评论和视频报道); - «
我们使用 dapp 快速方便地构建 CI/CD 的 Docker 镜像 » (评论和视频报道); - «
使用 Docker 进行持续交付实践 » (评论和视频报道); - «
2018 年微服务疯狂之死 “。
来源: habr.com