CNI(Container Network Interface)、コンテナ間通信を担うOSSの一種、Ciliumを試してみました。
これは、先日試したeBPF(下記参照)で動作することで注目されています。
「BPF Compiler Collection」
https://decode.red/blog/202302031560/
CNIは、K8s(Kubernetes)に標準に実装されたネットワークインターフェースで、下記でも試しました。ここで試した httpd.yml, nginx.ymlを使ってpodを構築し、UIツールでコンテナを表示してみます。
「Pod-to-Pod Communication / Kubernetes」
また、ここではk8sでなくインストールが簡単なk3sを使ってみました。
環境)
Ubuntu 18.04
参考)
https://docs.cilium.io/en/stable/gettingstarted/#installation
インストール)
CILIUM_CLI_VERSION=$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/master/stable.txt)
CLI_ARCH=amd64
if [ “$(uname -m)” = “aarch64” ]; then CLI_ARCH=arm64; fi
curl -L –fail –remote-name-all https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum}
sha256sum –check cilium-linux-${CLI_ARCH}.tar.gz.sha256sum
sudo tar xzvfC cilium-linux-${CLI_ARCH}.tar.gz /usr/local/bin
rm cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum}
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC=’–flannel-backend=none –disable-network-policy’ sh –
※flannelというのもCNIですが、これに変えて導入することがわかります。
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
sudo chmod 666 /etc/rancher/k3s/k3s.yaml
cilium install
(yamlファイルがinstall時読めないので権限の変更します。rootユーザでinstallするとエラー)
状態の確認
service k3s status
cilium status
kubectl apply -f httpd.yml
kubectl apply -f nginx.yml
(/usr/local/bin/kubectl -> /usr/local/bin/k3s シンボリックリンク)
UIツールの起動
cilium hubble enable –ui
cilium hubble ui
http://localhost:12000 ブラウザアクセス
(自分の環境では外部からアクセスしたかったのでポートフォワードした)
ssh -g -L 8888:localhost:12000 localhost
二つのPodが表示されました。
今回はここまでですが、下記に「BPF Compiler Collection」でやったような処理のフックができるTetragonというものを使った説明があります。
「Cilium Projectから公開! eBPFを用いてセキュリティの可観測性をもたらすTetragon」
https://gihyo.jp/article/2022/08/kubernetes-cloudnative-topics-01
また試していきたいと思います。