从特权容器更改主机sysctl参数

时间:2018-10-19 09:29:00

标签: asp.net-core kubernetes .net-core google-kubernetes-engine inotify

我们将GKE用于带有ASP的NET Core容器。每个ASP容器至少使用一个inotify实例(以监视Razer模板),并可以使用另一个实例监视配置文件(如果未明确禁用)。

Linux每个主机的inotify实例数的默认限制为128(fs.inotify.max_user_instances=128)。某些实例由kubernetes本身消耗(例如fluend守护程序)。因此,当在单个主机上部署大量Pod时,主机将耗尽免费的inotify实例,而容器将陷入崩溃循环。

由于我们使用GKE,因此无法管理工作程序节点并直接更改sysctl设置。

我的问题是:

  1. 我可以通过特权容器以某种方式更改主机VM的sysctl设置吗?
  2. 是否有一种方法可以设置kubernetes调度程序,以便在选择要部署新Pod的节点时将免费的inotify实例数量(或至少部署的Pod数量)考虑在内?

1 个答案:

答案 0 :(得分:0)

here所述,“没有名称空间的系统称为节点级系统。如果需要设置它们,则必须在每个节点的操作系统上手动配置它们,或者通过使用具有特权容器的DaemonSet进行配置” 。

关于调度Pod,调度程序似乎没有办法在调度时考虑inotify或Pod的数量。 scheduler仅知道可用资源(CPU和内存)和pod规范,例如pod或节点相似性。

要获得所需的传播类型,将需要大量计划和使用资源请求以及pod关联性/反关联性。您可以查看this