Kubernetes node on Jetson TX2

Hello,
I came across another issue with my Jetson TX2. I tried joining a Kubernetes cluster with the Jetson TX2 (JetPack 3.3, L4T 28.2.1).
On the Jetson the message of kubeadm join appears

[preflight] The system verification failed. Printing the output from the verification:
KERNEL_VERSION: 4.4.38-tegra
CONFIG_NAMESPACES: enabled
CONFIG_NET_NS: enabled
CONFIG_PID_NS: enabled
CONFIG_IPC_NS: enabled
CONFIG_UTS_NS: enabled
CONFIG_CGROUPS: enabled
CONFIG_CGROUP_CPUACCT: enabled
CONFIG_CGROUP_DEVICE: enabled
CONFIG_CGROUP_FREEZER: enabled
CONFIG_CGROUP_SCHED: enabled
CONFIG_CPUSETS: enabled
CONFIG_MEMCG: enabled
CONFIG_INET: enabled
CONFIG_EXT4_FS: enabled
CONFIG_PROC_FS: enabled
CONFIG_IP_NF_TARGET_REDIRECT: not set
CONFIG_NETFILTER_XT_MATCH_COMMENT: enabled (as module)
CONFIG_OVERLAY_FS: enabled (as module)
CONFIG_AUFS_FS: not set - Required for aufs.
CONFIG_BLK_DEV_DM: enabled
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
        [WARNING SystemVerification]: unexpected kernel config: CONFIG_IP_NF_TARGET_REDIRECT

I tried ignoring the error, but then the node does not get into a “ready” state. Is there a way to reconfigure or recompile the kernel to set “CONFIG_IP_NF_TARGET_REDIRECT” and “AUFS_FS”? The last one might not be that critical.
The point is that on our embedded device we have multiple embedded devices and want to make deployment easier.

You can use the make menuconfig command in /usr/src/linux. An easy-to-use interface will pop up where you can reconfigure your kernel to load the necessary modules to run Kubernetes. I can’t give you the precise list of the modules that are needed but I had to enable one by one until I had all of them loaded. Now I’ve got a .tar.gz with the appropriate kernel.

FYI, if you have not added this package, you will need to prior to “make menuconfig” (some people will already have this):

sudo apt-get install libncurses5-dev

I tried to use ‘make menuconfig’ and activated ‘IP_NF_TARGET_REDIRECT’, but when I try to build the error and buildoutput

CHK     include/config/kernel.release
  CHK     include/generated/uapi/linux/version.h
  CHK     include/generated/utsrelease.h
make[1]: 'include/generated/mach-types.h' is up to date.
  CHK     include/generated/bounds.h
  CHK     include/generated/timeconst.h
  CHK     include/generated/asm-offsets.h
  CALL    scripts/checksyscalls.sh
grep: scripts/../arch/x86/entry/syscalls/syscall_32.tbl: No such file or directory
make[1]: *** No rule to make target 'init/main.o', needed by 'init/built-in.o'.  Stop.
Makefile:973: recipe for target 'init' failed
make: *** [init] Error 2

is displayed. This also occurs when I tried to run make without any changes.
So perhaps I did not get the complete point, but how am I able to apply the config changes to my system?
Do I have to run ‘make’ and ‘make install’ or how can I apply the changes to the system, and if I should use make how can I resolve the error?

I can’t answer Kubernetes questions, but are you in “/usr/src/linux/” of the Jetson, and is full kernel source there? Or are you trying to build a module out of tree? Or is this being built on a PC using a cross compile environment? Which L4T release is the relevant Jetson (see “head -n 1 /etc/nv_tegra_release”)?

FYI, there are times when the syscall32.tbl error will be irrelevant if it builds (I think these are for 32-bit compatibility mode…but most everything you do is in 64-bit native mode).

I’ve been running into the same issue and found this excellent guide to recompile the kernel.
https://blog.hypriot.com/post/nvidia-jetson-nano-build-kernel-docker-optimized/

I just added the missing options as modules, you can use this config file:
https://gist.github.com/matfra/a5f2da3559ec3fcf1bfad9b6ada53517

Updated Kernel .config for JetPack 4.2.1 to allow Kubernetes + Weave Networking on Jetson nodes can be found here: jetson/.config at master · helmut-hoffer-von-ankershoffen/jetson · GitHub

Ansible role for automating the process: jetson/main.yml at master · helmut-hoffer-von-ankershoffen/jetson · GitHub

Overview at https://github.com/helmuthva/jetson

Nice! Thanks for sharing!