极客视点
极客时间编辑部
极客时间编辑部
113241 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/04:32
登录|注册

5个小技巧提高Kubernetes容器效率

讲述:丁婵大小:2.07M时长:04:32
近年来,容器以及 Kubernetes 成为开发者以及企业用户重点关注的技术趋势,开发者安妮塔·布赫勒(Anita Buehrle)总结了构建和管理容器的几个重要技巧来优化 IT 成本并提高效率。

1. 正确处理 Linux 信号

容器通过 Linux 信号来控制其内部进程的生命周期。为了将应用的生命周期与容器联系起来,需要确保应用能够正确处理 Linux 信号。
Linux 内核使用了诸如 SIGTERM、SIGKILL 和 SIGINIT 等信号来终止进程。但是,容器内的 Linux 会使用不同的方式来执行这些常见信号,如果执行结果同信号默认结果不符,将会导致错误和中断发生。
创建专门的 init 系统有助于解决此问题,比如专门针对容器的 Linux Tini 系统。这个工具正确注册了信号处理程序(比如 PID),容器化应用可以正确执行 Linux 信号,从而正常关闭孤立进程和僵尸进程,完成内存回收。

2. 充分利用 Docker 的缓存构建机制

容器镜像由一系列镜像层组成,这些镜像层通过模板或 Dockerfile 中的指令生成。这些层以及构建顺序通常被容器平台缓存。例如,Docker 就有一个可以被不同层复用的构建缓存。这个缓存可以使构建更快,但是要确保当前层的所有父节点都保存了构建缓存,并且这些缓存没有被改变过。简单来讲,需要把不变的层放在前面,而把频繁改变的层放在后面。
例如,假设有一个包含步骤 X、Y 和 Z 的构建文件,对步骤 Z 进行了更改,构建文件可以在缓存中重用步骤 X 和 Y,因为这些层在更改 Z 之前就已经存在,这样可以加速构建过程。但是,如果改变了步骤 X,缓存中的层就不能再被复用。
虽然这是一种方便的行为,可以节省时间,但是必须确保所有镜像层都是最新的,而不是从旧的、过时的缓存构建而成。

3. 使用类似 Helm 的包管理器

Helm 作为 Kubernetes 的非官方软件包管理器,可以帮助安装和更新集群中运行的共同负载和容器。Helm 可以使用 Chart 声明自定义应用程序依赖项,并提供滚动升级和回滚工具。
用户可以通过现有基础镜像为 Kubernetes 集群提供通用服务,如为内部应用程序创建自定义基础镜像,创建自定义的 Charts 可以简化部署,减少开发团队的工作负担和重复性工作。

4. 使用标签和语义化版本号

如果不为容器添加自定义标签,它将尝试从镜像仓库中拉取最新版本,而最新的容器可能并没有包括需要的更改。
在创建自定义镜像时,使用镜像标签和语义化版本号来追踪对 Docker 容器的更改。当它们在 Kubernetes 集群中运行时,Kubernetes 通过镜像标签确定应该运行哪个版本。在选择 Docker 镜像版本机制时,应该同时考虑生产负载和开发流程两种情况,这样才能在 Kubernetes 中获得更好的效果。

5. 安全

在很多情况下,当构建 Docker 镜像时,需要让容器内的应用程序访问敏感数据,将这些秘密信息嵌入到容器中并不是一个安全的解决方案,即使只是保存到一个私有容器镜像中。将未加密的隐私数据作为 Docker 镜像的一部分进行处理会面临无数额外的安全风险,包括网络和镜像注册表的安全性,而 Docker 架构本身也决定了无法对容器中未加密的敏感数据进行优化。
相反,用户可以通过使用 Kubernetes Secrets 对象将隐私信息存储在容器外面,这样更简单、安全。
以上就是今天的内容,希望对你有所帮助。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
大纲
固定大纲
1. 正确处理 Linux 信号
2. 充分利用 Docker 的缓存构建机制
3. 使用类似 Helm 的包管理器
4. 使用标签和语义化版本号
5. 安全
显示
设置
留言
收藏
59
沉浸
阅读
分享
手机端
快捷键
回顶部