在Lxc容器的kubernetes集群中创建master时出错

时间:2019-01-10 11:48:38

标签: kubernetes

当我使用kubeadm init配置主节点时,我正在使用lxc容器设置kubernetes集群,它显示以下错误:-

kubeadm init --apiserver-advertise-address=10.102.126.160 --pod-network-cidr=192.168.0.0/16
[init] Using Kubernetes version: v1.13.1
[preflight] Running pre-flight checks
[preflight] The system verification failed. Printing the output from the verification:
KERNEL_VERSION: 4.15.0-43-generic
DOCKER_VERSION: 18.06.1-ce
DOCKER_GRAPH_DRIVER: overlay2
OS: Linux
CGROUPS_CPU: enabled
CGROUPS_CPUACCT: enabled
CGROUPS_CPUSET: enabled
CGROUPS_DEVICES: enabled
CGROUPS_FREEZER: enabled
CGROUPS_MEMORY: enabled
error execution phase preflight: [preflight] Some fatal errors occurred:
    [ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables does not exist
    [ERROR Swap]: running with swap on is not supported. Please disable swap
    [ERROR SystemVerification]: failed to parse kernel config: unable to load kernel module: "configs", output: "modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/4.15.0-43-generic/modules.dep.bin'\nmodprobe: FATAL: Module configs not found in directory /lib/modules/4.15.0-43-generic\n", err: exit status 1
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`

谁能帮我解决这个问题。

2 个答案:

答案 0 :(得分:2)

要在lxc container中运行kubernetes,首先需要进行一些配置,例如lxc容器中没有kernel module,因此您需要为docker使用overlay驱动程序。另外,您的交换已启用,您需要使用swapoff -a禁用它。在使用kubeadm安装kubernetes集群之前,您需要完成许多配置。

这是一个非常不错的博客,解释了lxc容器中的逐步配置:

https://medium.com/@kvapss/run-kubernetes-in-lxc-container-f04aa94b6c9c

答案 1 :(得分:0)

是的,正如@Prafull Ladha已经说过的那样,您必须使用一些配置来创建lxc容器:

  • 禁用交换
  • 为docker使用overlay2驱动程序
  • 以特权身份运行容器

您可以在创建容器时在lxc profile中看到所有这些东西。

lxc launch images:ubuntu/16.04 CONTAINER_NAME --profile PROFILE_NAME

但是您最大的大问题是将Kubelet运行到lxc容器中。 Kubelet日志将显示如下内容:

failed to start OOM watcher open /dev/kmsg: no such file or directory

如果收到此错误,则应该进行一些修改,因为默认情况下未创建/dev/kmsg字符设备。您可以使用以下命令创建此设备:

mknod /dev/kmsg c 1 11

也许需要更新内核映像。您可以在这些scripts中完成ubuntu 16.04的整个过程