首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有modprobe的GKE节点

带有modprobe的GKE节点
EN

Stack Overflow用户
提问于 2019-07-08 17:10:15
回答 2查看 608关注 0票数 1

有没有办法在启动/升级节点后或在GKE中自动加载任何内核模块(在我的例子中是“module nfsd”)?我们在kubernetes集群上运行NFS服务器pod,每次GKE升级后它都会死掉

我尝试过cos和ubuntu镜像,它们似乎都没有默认加载nfsd。

我也尝试过这样的东西,但它似乎没有做它应该做的事情:

代码语言:javascript
复制
kind: DaemonSet
apiVersion: extensions/v1beta1
metadata:
  name: nfsd-modprobe
  labels:
    app: nfsd-modprobe
spec:
  template:
    metadata:
      labels:
        app: nfsd-modprobe
    spec:
      hostPID: true
      containers:
        - name: nfsd-modprobe
          image: gcr.io/google-containers/startup-script:v1
          imagePullPolicy: Always
          securityContext:
            privileged: true
          env:
          - name: STARTUP_SCRIPT
            value: |
              #! /bin/bash

              modprobe nfs
              modprobe nfsd
              while true; do sleep 1; done
EN

回答 2

Stack Overflow用户

发布于 2021-10-06 13:15:26

我遇到了同样的问题,现有的答案是正确的,我想用kubernetes集群中的nfs pod的工作示例来扩展它,kubernetes集群具有加载所需模块的功能和库。

它有两个重要的部分:

  • 特权模式
  • 装载容器内的/lib/modules目录以使用它

nfs-server.yaml

代码语言:javascript
复制
kind: Pod
apiVersion: v1
metadata:
  name: nfs-server-pod
spec:
  containers:
    - name: nfs-server-container
      image: erichough/nfs-server
      securityContext:
        privileged: true
      env:
      - name: NFS_EXPORT_0
        value: "/test *(rw,no_subtree_check,insecure,fsid=0)"
      volumeMounts:
      - mountPath: /lib/modules # mounting modules into container
        name: lib-modules
        readOnly: true # make sure it's readonly
      - mountPath: /test
        name: export-dir
  volumes:
  - hostPath: # using hostpath to get modules from the host
      path: /lib/modules
      type: Directory
    name: lib-modules
  - name: export-dir
    emptyDir: {}

参考资料也很有帮助-- Automatically load required kernel modules

票数 2
EN

Stack Overflow用户

发布于 2019-07-09 00:25:53

默认情况下,您不能从容器内部加载模块,因为排除内核组件是容器轻量级和可移植性的主要原因之一。您需要从主机操作系统加载模块,以使其在容器中可用。这意味着您可以简单地启动一个脚本,在每次GKE升级之后启用您想要的内核模块。

但是,存在一个从docker容器内部加载内核模块的somewhat hacky way。这一切都归结为以提升的权限启动容器,并具有对某些主机目录的访问权限。如果你真的想在容器中挂载你的内核模块,你应该试一试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56931654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档