はじめに
ホスト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であったのではないだろうか