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 の高度な機能に関係する |
| bpffs | BPF マップを扱うために必要になる |
| 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 -aeBPF 関連のファイルシステムを確認する
BPF ファイルシステムがマウントされているか確認します。環境によっては Cilium 導入時に自動で扱われますが、事前確認として状態を見ておくと切り分けしやすくなります。
mount | grep bpf
findmnt /sys/fs/bpf
ls -ld /sys/fs/bpfbpffs を手動で確認する
未マウントの場合に手動で確認する例です。恒久設定は環境の構成管理方針に合わせます。
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 | headsysctl の前提を確認する
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-systemiptables と 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 を使う場合は、それぞれ追加の要件を確認してから有効化します。

