前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle Linux对LXC容器的优化以及常见问题汇总

Oracle Linux对LXC容器的优化以及常见问题汇总

作者头像
王录华
发布2019-07-31 17:21:13
1.5K0
发布2019-07-31 17:21:13
举报
文章被收录于专栏:云服务与SRE架构师社区

关于作者:王录华 (luhua.wang@oracle.com), 高级经理 - 系统架构和性能服务, Oracle


1.0 - 什么是Linux Containers (LXC)

这聊这个话题之前,我们先回顾一下什么是Linux Containers (LXC)

首先,LXC容器不是一个传统意义上的"VM".

  • Host和LXC共用同一个操作系统。
  • LXC不能从其它kernel启动
  • LXC不能加载其它的kernel模块
  • 你能从Host上看到所有LXC的进程

其次,LXC容器看起来又像一个传统意义上的"VM".

  • 它可能运行自己的进程
  • 它可以修改虚拟网卡配置
  • 它可以安装应用软件

第三,LXC是由以下这些部件组成的:

  • 内核命名空间Namespaces (mount, network, uts, ipc, pid, user)
  • 控制组Cgroups – system resource controls (cpu, memory, network, blk, device)
  • Capabilities
  • 文件系统 (COW – btrfs)
  • 安全模块 (selinux, seccomp)

2.0 - Oracle Linux对Linux Containers (LXC)的优化

在Oracle Linux kernel UEK3-QU6 (kernel-uek-3.8.13-98.X.X)中,Oracle对Linux Containers做了如下的优化:

  • Linux Containers可以设置为只读一些Host上的/proc/sys 和 /proc/net 参数。
  • LXC-1.0.7-2.0.8引入了–privileged 选项以优化安全,只允许特定的名称空间(LXC容器)变量可被Linux Containers修改。
  • 保留了 CAP_SYS_NICE 以充许通过system call来调整调度程序
  • 其它一些优化

对于“–privileged”的使用例子:

lxc-create -n test -B btrfs -t oracle -- --release=6.latest --privileged

以下是段落引用自Oracle Linux kernel UEK3-QU6官方发布文档:

With version 1.0.7 and later of the Linux Containers (lxc)package under UEK R3 QU6, you can adjust the values of the following kernel parameters under the /proc hierarchy in an Oracle Linux container if you specify the --privileged option to the lxc-oracle template script: * /proc/sys/kernel/msgmax * /proc/sys/kernel/msgmnb * /proc/sys/kernel/sem * /proc/sys/kernel/shmall * /proc/sys/kernel/shmmax * /proc/sys/kernel/shmmni * /proc/sys/net/ipv4/conf/default/accept_source_route * /proc/sys/net/ipv4/conf/default/rp_filter * /proc/sys/net/ipv4/ip_forward


3.0 - 应用研发工程师从事LXC容器测试中常见问题 在LXC容器的关的运维中,常见问题主要为以下三类:

3.1 - Limits的设置

  • Host上/etc/security/limits.conf 的设置需要高于或等于所有LXC容器的总和。
  • 只要改了limits,就需要重启LXC容器以继承新的limits参数值。
  • 对于Host上limits.conf的设置,我们通常建议使用(*)。

例如:

* soft memlock 5000000 * hard memlock 5000000

3.2 - /proc 变量

我们把/proc 变量分成两类:

  • Namespace 变量 (可以从LXC容器内部进行读写操作)
  • Host-only 变量 (不能从LXC容器内部进行读写操作)

对于那些包含limit的Host-only 变量(比如 fs.file_max ),我们需要确保所有LXC容器使用或设置的总和不超过其主机设置。

3.3 - Container的配置不对

  • 当使用老的LXC容器配置文件时,/proc以r:w的方式加载(安全问题)
  • 在LXC容器的配置文件中使用cgroups设置,而设置的人却并不真的理解cgroups的工作机制和影响,结果导致一些性能问题。

4.0 - 结论

Oracle Linux kernel 在UEK3-QU6中对LXC容器做了很多优化。对于正在使用LXC容器的应用研发工程师,我们推荐的最佳实践是:

  • 使用Oracle的UEK内核,UEK3-QU6或更新的版本
  • 使用lxc-1.0.7-2.0.8或更新的LXC版本
  • 创建LXC容器时使用--privileged 选项
  • 只有有充分的理由时才去修改LXC容器的配置文件(注意副作用)

参考文档:

  1. https://oss.oracle.com/ol6/docs/RELEASE-NOTES-UEK3-QU6-en
  2. https://oss.oracle.com/pipermail/el-errata/2015-August/005372.html
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云服务与SRE架构师社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档