手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 Kubernetes Cilium 導入の事前確認

Ubuntu 22.04 の Kubernetes ノードに Cilium を導入する前に確認する項目です。Cilium は eBPF を使う CNI であり、カーネル、bpffs、ネットワーク設定、Kubernetes ノードの前提が導入後の安定性に影響します。

この記事では、Cilium のインストール手順そのものではなく、導入前に Ubuntu 22.04 側で確認しておきたい前提を扱います。クラスタ構築、containerd、kubectl / Helm などの準備が済んでいることを前提にします。

関連する記事
この記事で確認すること
  • Cilium 導入前に見る Ubuntu 22.04 の前提
  • カーネル、eBPF、bpffs の確認
  • Kubernetes ノード側のネットワーク前提
  • 高度な Cilium 機能を使う場合の確認観点
参考
書籍
参考書籍

Kubernetes 完全ガイド

Kubernetes の基本概念やネットワーク構成を確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

Cilium 導入前に確認すること

項目確認する理由
Linux カーネルeBPF 機能や Cilium の高度な機能に関係する
bpffsBPF マップを扱うために必要になる
Kubernetes ノードCNI 導入前の kubelet / containerd 状態を確認する
既存 CNI複数 CNI の混在や古い設定残りを避ける
iptables / nftablesマスカレードやポリシーの挙動確認に関係する

前提パッケージとノード状態を確認する

まず Kubernetes ノードとして基本的な状態を確認します。Cilium の前に、containerd、kubelet、kubectl で状態を見られることが重要です。

uname -a
kubectl get nodes -o wide
systemctl is-active kubelet
systemctl is-active containerd

カーネルバージョンを確認する

Cilium の基本機能と高度な機能では必要なカーネル機能が変わります。Ubuntu 22.04 の標準カーネルでも利用できますが、利用したい機能ごとに要件を確認します。

uname -r
cat /proc/version
lsb_release -a

eBPF 関連のファイルシステムを確認する

BPF ファイルシステムがマウントされているか確認します。環境によっては Cilium 導入時に自動で扱われますが、事前確認として状態を見ておくと切り分けしやすくなります。

mount | grep bpf
findmnt /sys/fs/bpf
ls -ld /sys/fs/bpf

bpffs を手動で確認する

未マウントの場合に手動で確認する例です。恒久設定は環境の構成管理方針に合わせます。

sudo mount bpffs /sys/fs/bpf -t bpf
findmnt /sys/fs/bpf
mount | grep bpf

カーネルモジュールを確認する

ノードのネットワーク機能でよく使うモジュールを確認します。Cilium の全機能がこの一覧だけで決まるわけではありませんが、ノードの前提確認として有効です。

lsmod | grep -E 'br_netfilter|overlay|ip_tables|nf_conntrack'
modinfo br_netfilter | head
modinfo overlay | head

sysctl の前提を確認する

Kubernetes ノードでは転送設定やブリッジ経由パケットの扱いが重要です。既存のクラスタ準備記事で設定済みか確認します。

sysctl net.ipv4.ip_forward
sysctl net.bridge.bridge-nf-call-iptables
sysctl net.bridge.bridge-nf-call-ip6tables

既存 CNI の状態を確認する

Cilium を導入する前に、既存 CNI の設定や古い設定ファイルが残っていないか確認します。既存クラスタへ入れる場合は、移行手順を別途確認します。

ls -l /etc/cni/net.d
kubectl get pods -n kube-system -o wide
kubectl get daemonset -n kube-system

iptables と nftables の状態を確認する

Ubuntu 22.04 では iptables の実体が nftables 系になっている場合があります。Cilium のマスカレードや kube-proxy との関係を見る前に、現在の状態を把握します。

iptables --version
sudo iptables -t nat -S | head
sudo nft list ruleset | head

高度な機能を使う場合の確認観点

Cilium の L7 ポリシー、FQDN ポリシー、IPsec、Bandwidth Manager などを使う場合は、基本導入とは別に要件を確認します。

  • L7 ポリシーは Envoy 連携やプロキシ動作を確認する
  • FQDN ポリシーは DNS の見え方とキャッシュを確認する
  • IPsec は暗号化方式とノード間通信を確認する
  • Bandwidth Manager はカーネル機能とキュー制御を確認する
  • kube-proxy replacement を使う場合はサービス通信の前提を確認する

権限と実行形態を確認する

Cilium agent はノードのネットワーク、BPF マップ、ホストネットワーク名前空間に関係するため、通常のアプリケーション Pod より強い権限で動作します。導入前にクラスタのセキュリティ方針と照らし合わせます。

kubectl auth can-i get nodes
kubectl auth can-i list pods -n kube-system
kubectl get namespace kube-system

まとめ

Ubuntu 22.04 に Cilium を導入する前に、カーネル、bpffs、Kubernetes ノード状態、既存 CNI、iptables / nftables、sysctl を確認します。Cilium はネットワークの中心に入るため、導入前の状態を残しておくとトラブル時の切り分けがしやすくなります。

基本導入だけでなく、L7 ポリシー、FQDN ポリシー、IPsec、Bandwidth Manager、kube-proxy replacement を使う場合は、それぞれ追加の要件を確認してから有効化します。

関連する記事
Ubuntu 22.04 Kubernetes Cilium 導入の事前確認

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る