V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dunhanson
V2EX  ›  Kubernetes

debian10 安装 k8s,预检查警告如何解决? missing optional cgroups: hugetlb

  •  
  •   dunhanson · 2021-07-05 18:47:47 +08:00 · 4384 次点击
    这是一个创建于 1232 天前的主题,其中的信息可能已经有所发展或是发生改变。

    百度和谷歌都搜过了,确实有人遇到过,但是没有解决办法

    可怕,都是没有强迫症的人吗?

    PS:我用 vagrant 启动 centos-7 安装 k8s 没有这个警告

    [preflight] Running pre-flight checks
        [WARNING SystemVerification]: missing optional cgroups: hugetlb    
    
    25 条回复    2021-07-06 13:07:31 +08:00
    defunct9
        1
    defunct9  
       2021-07-05 19:12:15 +08:00 via iPhone
    ignore
    liuxu
        2
    liuxu  
       2021-07-05 20:12:21 +08:00
    新 debian 启动 docker 一直有一些 warning,都是 swap 、memory 相关,一般只需要在 grub 启动配置里面加一些参数就好了,修改 /etc/default/grub,GRUB_CMDLINE_LINUX 的后面加上 cgroup_enable=memory 后重启看看
    12101111
        3
    12101111  
       2021-07-05 20:17:22 +08:00   ❤️ 1
    Debian10 内核版本低, 没有 backport 此功能, 需要 Linux 5.6+
    红帽的内核会 backport 大量的功能, 版本号仅代表原始 fork 的版本

    https://github.com/torvalds/linux/commit/faced7e0806cf44095a2833ad53ff59c39e6748d#diff-e529163925764917220948502e9b83c1faebff54c7cd739b93b96b4641f930f1
    dunhanson
        4
    dunhanson  
    OP
       2021-07-05 20:22:29 +08:00
    @liuxu 这个方法我搜到过,没效果,你可以吗
    liuxu
        5
    liuxu  
       2021-07-05 20:27:31 +08:00
    @dunhanson 把你的安装命令列表发出来,我重现下
    dunhanson
        6
    dunhanson  
    OP
       2021-07-05 20:28:00 +08:00
    @12101111 我对比了,debian10 的内核是 Linux 4.19.0-16-amd64,centos7 是 Linux 3.10.0-1127.el7.x86_64
    liuxu
        7
    liuxu  
       2021-07-05 20:35:58 +08:00
    @dunhanson 他的意思是说,centos7 的内核版本号虽然低,但其实代码一只有从新内核里拉代码进来,debian 没有

    test :/boot$ cat /etc/debian_version
    10.2
    test :/boot$ cat config-4.19.0-11-amd64 |grep -i hugetlb
    # CONFIG_CGROUP_HUGETLB is not set
    CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
    CONFIG_HUGETLBFS=y
    CONFIG_HUGETLB_PAGE=y

    我看了下 debian10 的内核选项,cgroup hugetlb 选项已经有了,只不过没打开,你如何很想去掉这个 warning 的话就拿 /boot/config-4.19.0-11-amd64 这个配置重新编译内核,把 hugetlb 打开
    dunhanson
        8
    dunhanson  
    OP
       2021-07-05 20:36:05 +08:00
    # 设置
    sudo apt-get remove docker docker-engine docker.io

    sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common

    curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

    sudo add-apt-repository \
    "deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian \
    $(lsb_release -cs) \
    stable"

    # 安装
    sudo apt-get update
    sudo apt-get install docker-ce

    # 服务开启并设置开机启动
    systemctl start docker
    systemctl enable docker

    # 关闭 firewalld
    systemctl stop firewalld
    systemctl disable firewalld

    # 关闭 swap
    swapoff -a
    sed -i 's/^.*swap.*$/#&/' /etc/fstab

    # cgroupdriver 修改(不设置 kubeadm init 会有警告)
    vi /etc/docker/daemon.json
    {
    "exec-opts": ["native.cgroupdriver=systemd"],
    "registry-mirrors": ["https://tp9vl69u.mirror.aliyuncs.com"]
    }
    systemctl daemon-reload
    systemctl restart docker
    dunhanson
        9
    dunhanson  
    OP
       2021-07-05 20:36:22 +08:00
    允许 iptables 检查桥接流量
    cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
    br_netfilter
    EOF

    cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    sudo sysctl --system
    dunhanson
        10
    dunhanson  
    OP
       2021-07-05 20:36:43 +08:00
    安装 kubeadm 、kubelet 和 kubectl
    # 这一步需要手动下载保存到对应路径
    # https://mirrors.tuna.tsinghua.edu.cn/help/kubernetes/
    # mv /home/vagrant/apt-key.gpg /usr/share/keyrings/kubernetes-archive-keyring.gpg
    sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg

    echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/kubernetes/apt kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

    sudo apt-get update
    sudo apt-get install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl
    dunhanson
        11
    dunhanson  
    OP
       2021-07-05 20:37:06 +08:00
    kubeadm init --apiserver-advertise-address=192.168.33.10
    dunhanson
        12
    dunhanson  
    OP
       2021-07-05 20:37:39 +08:00
    @liuxu 上面三个回复我把步骤发出来了,谢了
    dunhanson
        13
    dunhanson  
    OP
       2021-07-05 20:40:44 +08:00
    @liuxu 必须要升级内核吗
    liuxu
        14
    liuxu  
       2021-07-05 21:11:20 +08:00
    @dunhanson 对的,或者你可以试试新内核有没有默认选中这个选项

    我重新用 debian10 重现了下你的环境,可以看到 cgroup 的 hugetlb 没有选中,而且 swap 也不是开机启动的,需要 linux kernel 启动命令行里面添加上

    General setup -> Control Group support -> HugeTLB controller

    liuxu
        15
    liuxu  
       2021-07-05 21:26:58 +08:00
    反正你也是用 vagrant 搭建环境,我建议你直接 debian11,我刚刚试了下,vagrant 的 debian/bullseye64 默认是打开的

    vagrant@bullseye:/boot$ cat config-5.10.0-5-amd64 | grep -i hugetlb
    CONFIG_CGROUP_HUGETLB=y
    CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
    CONFIG_HUGETLBFS=y
    CONFIG_HUGETLB_PAGE=y
    dunhanson
        16
    dunhanson  
    OP
       2021-07-05 21:29:55 +08:00
    @liuxu 谢了,太用心了。两种我都是试试
    liuxu
        17
    liuxu  
       2021-07-05 21:29:57 +08:00
    或者我建议你用 ubuntu20.04 ,容器环境选 ubuntu 准没错,很久以前 docker 官方都是直接建议 ubuntu,我看了我的 ubuntu20.04.2,默认也是开启的,而且 ubuntu server lts 也是 5 年维护期
    dunhanson
        18
    dunhanson  
    OP
       2021-07-05 21:32:35 +08:00
    @liuxu 不过,我之前自己用 virtualbox 自己安装的 debian 10.7 好像就没有这个问题
    dunhanson
        19
    dunhanson  
    OP
       2021-07-05 21:33:09 +08:00
    @liuxu 了解,ubuntu 我也试试
    liuxu
        20
    liuxu  
       2021-07-05 21:34:34 +08:00
    @dunhanson 那可能当时的 k8s 版本不需要这个内核特性
    Yadomin
        21
    Yadomin  
       2021-07-05 23:33:55 +08:00 via Android
    装 debian 的 backports 内核
    不过 bullseye 也要出了
    dunhanson
        22
    dunhanson  
    OP
       2021-07-06 09:27:34 +08:00
    @liuxu 对了,Control Group support 安装完,还能回去设置吗?用 dpkg-reconfigure
    liuxu
        23
    liuxu  
       2021-07-06 09:45:45 +08:00
    @dunhanson 回去设置是什么意思,可以在内核启动的时候用 cgroup_disable 关掉
    dunhanson
        24
    dunhanson  
    OP
       2021-07-06 11:14:59 +08:00
    @liuxu 好的
    ysicing
        25
    ysicing  
       2021-07-06 13:07:31 +08:00
    额,使用 debian 不都默认安装 backports 么 😊😭么
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4855 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 09:50 · PVG 17:50 · LAX 01:50 · JFK 04:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.