calicoctl は、Calico のノード、IPPool、BGP 設定、ネットワークポリシーなどを確認するための管理 CLI です。Ubuntu 26.04 の管理端末に配置しておくと、Kubernetes クラスタ側の Calico 状態を CLI から追いやすくなります。
この記事では、Calico の release から固定した version の calicoctl binary を取得し、/usr/local/bin/calicoctl に配置して、Kubernetes datastore と kubeconfig を使って確認する基本をまとめます。
- calicoctl を管理端末に入れる目的
amd64/arm64の binary 選択/usr/local/bin/calicoctlへの配置calicoctl version --clientによる確認- Kubernetes datastore と kubeconfig の指定
| 対象 OS | Ubuntu 26.04 Server |
|---|---|
| 取得元 | https://github.com/projectcalico/calico/releases/download |
| 配置先 | /usr/local/bin/calicoctl |
| 確認コマンド | calicoctl version --client |
| 主な用途 | Calico node、IPPool、BGP、policy の確認 |
calicoctl の位置づけ
calicoctl は Kubernetes の汎用 CLI である kubectl の代わりではありません。Calico のリソースや状態を確認するための専用 CLI として扱います。
kubectlは Kubernetes API 全般を扱うcalicoctlは Calico の状態確認に使う- Calico の version と近い calicoctl を使う
- kubeconfig の参照先を明示する
CPU アーキテクチャを確認する
Calico の配布 binary は calicoctl-linux-amd64 や calicoctl-linux-arm64 のような名前です。Ubuntu 側の CPU アーキテクチャと対応させて選びます。
uname -m
dpkg --print-architecture| Ubuntu 側の表示 | calicoctl 配布名 |
|---|---|
x86_64 | calicoctl-linux-amd64 |
amd64 | calicoctl-linux-amd64 |
aarch64 | calicoctl-linux-arm64 |
arm64 | calicoctl-linux-arm64 |
calicoctl を取得する
利用する Calico に合わせて calico_version を決めます。ここでは変数として置き、環境で採用している Calico version に合わせて指定します。
calico_version="3.32.1"
calico_arch="amd64"
binary="calicoctl-linux-${calico_arch}"
base_url="https://github.com/projectcalico/calico/releases/download"
curl -fsSL -o "/tmp/calicoctl" "${base_url}/v${calico_version}/${binary}"
chmod 0755 /tmp/calicoctl
/tmp/calicoctl version --client/usr/local/bin に配置する
管理端末で使えるように、root 所有の実行ファイルとして /usr/local/bin/calicoctl に配置します。
sudo install -d -o root -g root -m 0755 /usr/local/bin
sudo install -o root -g root -m 0755 /tmp/calicoctl /usr/local/bin/calicoctl
command -v calicoctl
calicoctl version --clientkubeconfig を指定する
Kubernetes datastore の Calico を確認する場合は、DATASTORE_TYPE=kubernetes と kubeconfig の参照先を明示します。複数クラスタを扱う管理端末では、どの kubeconfig を見ているのかを必ず確認します。
export DATASTORE_TYPE=kubernetes
export KUBECONFIG="$HOME/.kube/config"
kubectl config current-context
calicoctl versionCalico の状態を確認する
まずは読み取り系のコマンドで、node、IPPool、BGP peer、policy を確認します。変更操作の前に、現在のクラスタ状態を把握することが大切です。
calicoctl get nodes
calicoctl get ippools -o wide
calicoctl get bgppeers -o wide
calicoctl get networkpolicies --all-namespacesversion mismatch に注意する
calicoctl とクラスタ側 Calico の version が離れている場合、操作に失敗したり、意図しない差分を見落としたりすることがあります。確認専用でも、Calico 本体の version に合わせた CLI を使う方が安全です。
calicoctl version
kubectl get pods -n calico-system
kubectl get pods -n kube-system | grep -i calico--allow-version-mismatch は、version 差を理解した上で一時的に使うための選択肢です。通常運用の前提にするより、CLI version を合わせる方が安全です。
設定ファイルで指定する場合
毎回環境変数を指定したくない場合は、calicoctl 用の設定ファイルを使えます。管理端末で複数クラスタを扱う場合は、ファイル名や配置場所で対象を区別します。
sudo install -d -o root -g root -m 0755 /etc/calico
sudo tee /etc/calico/calicoctl.cfg >/dev/null <<'EOF'
apiVersion: projectcalico.org/v3
kind: CalicoAPIConfig
metadata:
spec:
datastoreType: kubernetes
kubeconfig: /home/myadmin/.kube/config
EOF
sudo chmod 0644 /etc/calico/calicoctl.cfg
sudo chown root:root /etc/calico/calicoctl.cfgcalicoctl --config /etc/calico/calicoctl.cfg get nodes
calicoctl --config /etc/calico/calicoctl.cfg get ippools -o wide確認ポイント
/usr/local/bin/calicoctlが root 所有で実行可能になっているcalicoctl version --clientが意図した version を返すamd64/arm64の binary 選択を誤っていないDATASTORE_TYPE=kubernetesとKUBECONFIGを明示している- 読み取り系コマンドで node、IPPool、BGP、policy を確認できる
- Calico 本体と calicoctl の version 差を確認している
まとめ
Ubuntu 26.04 に calicoctl を配置すると、Calico の node、IPPool、BGP、network policy を管理端末から確認しやすくなります。
重要なのは、クラスタ側 Calico に合わせた version の calicoctl-linux-amd64 または calicoctl-linux-arm64 を選び、/usr/local/bin/calicoctl に固定して配置することです。実行時は kubeconfig と datastore type を明示し、対象クラスタを取り違えないように確認します。

