diff --git a/docs/weavenpc-design.md b/docs/weavenpc-design.md index 5b1693bf..5827e57f 100644 --- a/docs/weavenpc-design.md +++ b/docs/weavenpc-design.md @@ -19,6 +19,9 @@ NetworkPolicy object updates from the k8s API server: network policy, containing the IP addresses of all pods in the namespace whose labels match that selector +IPsets are implemented by the kernel module `xt_set`, without which +weave-npc will not work. + ipset names are generated deterministically from a string representation of the corresponding label selector. Because ipset names are limited to 31 characters in length, this is done by taking a @@ -94,6 +97,9 @@ The following traffic is NOT affected: (e.g. kubelet health checks) * Traffic routed from an application container to the internet +The above mechanism relies on the kernel module `br_netfilter` being +loaded and enabled via `/proc/sys/net/bridge/bridge-nf-call-iptables`. + See these resources for helpful context: * http://ebtables.netfilter.org/br_fw_ia/br_fw_ia.html diff --git a/prog/weave-kube/launch.sh b/prog/weave-kube/launch.sh index afbf3f59..16cd5d57 100755 --- a/prog/weave-kube/launch.sh +++ b/prog/weave-kube/launch.sh @@ -15,6 +15,12 @@ CONN_LIMIT=${CONN_LIMIT:-30} # Default for network policy EXPECT_NPC=${EXPECT_NPC:-1} +# Ensure we have the required modules for NPC +if [ "${EXPECT_NPC}" != "0" ]; then + modprobe br_netfilter + modprobe xt_set +fi + # kube-proxy requires that bridged traffic passes through netfilter if ! BRIDGE_NF_ENABLED=$(cat /proc/sys/net/bridge/bridge-nf-call-iptables); then echo "Cannot detect bridge-nf support - network policy and iptables mode kubeproxy may not work reliably" >&2 diff --git a/prog/weave-kube/weave-daemonset.yaml b/prog/weave-kube/weave-daemonset.yaml index 15140679..88aaabe7 100644 --- a/prog/weave-kube/weave-daemonset.yaml +++ b/prog/weave-kube/weave-daemonset.yaml @@ -46,6 +46,8 @@ spec: mountPath: /host/etc - name: dbus mountPath: /host/var/lib/dbus + - name: lib-modules + mountPath: /lib/modules resources: requests: cpu: 10m @@ -73,3 +75,6 @@ spec: - name: dbus hostPath: path: /var/lib/dbus + - name: lib-modules + hostPath: + path: /lib/modules