techtsubame’s blog

備忘録であり、何が起きても責任は取りません

CentOS9にkubernetesインストール前の事前設定 2/2

実施する事

カーネル設定

br_netfilter

bridgeしたインターフェースのパケットをフィルタリングであり、クラスタでのポッド間通信にて使用

インストール

  • エラーが無いこと,表示されること
[tsubame@control-plane01 ~]$ sudo lsmod | grep br_netfilter
[tsubame@control-plane01 ~]$
[tsubame@control-plane01 ~]$ sudo modprobe br_netfilter
[tsubame@control-plane01 ~]$ sudo lsmod | grep br_netfilter
br_netfilter           32768  0
bridge                290816  1 br_netfilter
[tsubame@control-plane01 ~]$

永続化

  • ファイルに記載があること
[tsubame@control-plane01 ~]$ cat << EOF | sudo tee -a /etc/modules-load.d/kubernetes.conf
br_netfilter
EOF
br_netfilter
[tsubame@control-plane01 ~]$ cat /etc/modules-load.d/kubernetes.conf
br_netfilter
[tsubame@control-plane01 ~]$

ovarlay

物理ネットワーク上に仮想ネットワークを構築するモジュール(トラフィックの暗号化や異なる物理ネットワークとの結合も)
マルチノードクラスタ内でのコンテナ間通信やサービスの公開などにoverlayネットワークが使用

インストール

  • エラーが無いこと,表示されること
[tsubame@control-plane01 ~]$ sudo modprobe overlay
[tsubame@control-plane01 ~]$ lsmod | grep overlay
overlay               151552  0
[tsubame@control-plane01 ~]$

永続化

  • ファイルに記載があること
[tsubame@control-plane01 ~]$ cat <<EOF | sudo tee -a /etc/modules-load.d/kubernetes.conf
overlay
EOF
overlay
[tsubame@control-plane01 ~]$ cat /etc/modules-load.d/kubernetes.conf
br_netfilter
overlay
[tsubame@control-plane01 ~]$

iptablesからネットワーク・ブリッジされたトラフィックの可視化

ChatGPTの解説

net.bridge.bridge-nf-call-iptables は、Linuxカーネルのネットワークブリッジ機能に関連する設定です。この設定が 1 に設定されている場合、ネットワークブリッジがパケットを処理する際に、Linuxのiptablesファイアウォールによる処理も有効になることを意味します。

具体的には、ブリッジを介して送信されるパケットは、ファイアウォールルールに従って処理されます。これにより、ブリッジ内の仮想マシン間の通信や、ブリッジを通じて外部ネットワークに接続される場合にも、iptablesによるパケットフィルタリングやNAT(ネットワークアドレス変換)などが適用されることがあります。

具体的な効果やセキュリティの影響は、ネットワーク環境や使用しているアプリケーションに依存します。適切なファイアウォールルールやセキュリティポリシーを適用することが重要です。

カーネル設定を配置

  • 設定が存在すること
[tsubame@control-plane01 ~]$ echo 'net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1' | sudo tee  /etc/sysctl.d/kubernetes.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
[tsubame@control-plane01 ~]$ cat /etc/sysctl.d/kubernetes.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
[tsubame@control-plane01 ~]$

IPフォワード設定

https://kubernetes.io/docs/setup/production-environment/container-runtimes/#forwarding-ipv4-and-letting-iptables-see-bridged-traffic:公式サイト

設定

  • 設定が存在すること
[tsubame@control-plane01 ~]$ echo 'net.ipv4.ip_forward                 = 1' | sudo tee -a /etc/sysctl.d/kubernetes.conf
net.ipv4.ip_forward                 = 1
[tsubame@control-plane01 ~]$ cat /etc/sysctl.d/kubernetes.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward                 = 1
[tsubame@control-plane01 ~]$

カーネルパラメータ反映

反映

  • エラーが無いこと
[tsubame@control-plane01 ~]$ sudo sysctl --system
* Applying /usr/lib/sysctl.d/10-default-yama-scope.conf ...

-- snip -- 

net.ipv4.ip_forward = 1
[tsubame@control-plane01 ~]$
[tsubame@control-plane01 ~]$ sudo sysctl -a | grep -E "bridge-nf-call-ip|ip_forward "
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
[tsubame@control-plane01 ~]$

コピペ用

カーネル

sudo modprobe br_netfilter
sudo modprobe overlay
cat << EOF | sudo tee -a /etc/modules-load.d/kubernetes.conf
br_netfilter
overlay
EOF
cat <<EOF | sudo tee  /etc/sysctl.d/kubernetes.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward                 = 1
EOF
sudo sysctl --system