ホストOSとKubernetes上のPodのカーネルが異なる現象について

はじめに

ホストOSとKubernetes上のPodのカーネルが異なる現象を確認した。その理由について考える。 ホストOSとPodのカーネルは同じものを共有していると考えていた。しかし、実際に異なる現象に対面したため確認を行う。

現状の確認

net.ipv4.ip_forward の値がホストOSとKubernetes上のPodで異なることを確認する。

# ホストOSの確認
$ cat /proc/sys/net/ipv4/ip_forward
1

# Podの確認
$ cat ubuntu-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: ubuntu
spec:
  containers:
    - name: ubuntu
      image: ubuntu
      command:
        - sleep
        - infinity
$ kubectl apply -f ubuntu-pod.yaml
$ kubectl exec -it ubuntu -- cat /proc/sys/net/ipv4/ip_forward
0

理由の推測

次のKubernetesの公式サイトで以下の記載を確認する。 kubernetes.io

安全な Sysctl と安全でない Sysctl

この記載から、安全ではないカーネルパラメータが無効化されているのではないかと想定する。 その一部がnet.ipv4.ip_forwardであったのではないだろうか

参考

kubernetes.io