CalicoのBGP Peer Addressがおかしい件

## 問題
Calicoをkubernetesクラスタにインストールした際にBGP Peer AddressがPodに割り当てたCIDRのものになってしまう。
```
$ calicoctl node status
Calico process is running.

IPv4 BGP status
+---------------+-------------------+-------+----------+---------+
| PEER ADDRESS  |     PEER TYPE     | STATE |  SINCE   |  INFO   |
+---------------+-------------------+-------+----------+---------+
| 10.244.217.64 | node-to-node mesh | start | 08:30:04 | Passive |
+---------------+-------------------+-------+----------+---------+

IPv6 BGP status
No IPv6 peers found.
```
- `10.244.0.0/16`をPodのCIDRに、`192.168.1.0/24`をNodeのCIDRとして設定しています。

`kubectl get node -o wide`で表示されるNodeのIPアドレスと`calicoctl get node -o wide`で表示されるIPアドレスが相違する。
```
$ kubectl get node -o wide
NAME      STATUS   ROLES                  AGE   VERSION    INTERNAL-IP    (略)
master    Ready    control-plane,master   12m   v1.21.13   192.168.1.100  (略)
worker1   Ready    <none>                 5m    v1.21.13   192.168.1.102  (略)
```

```
$ calicoctl get node -o wide
NAME      ASN       IPV4              IPV6
master    (64512)   10.244.98.64/32
worker1   (64512)   10.244.121.0/32
```

- workerを追加する前では`calico-node`Podが1/1 Runningとなるが、workerをクラスタに追加するとmaster, worker両方で 0/1 Runningとなる
### 環境
- debian 11.4 bullseye　(オンプレミス)
- kubeadm 1.21.13
- calico v3.23.4
- CRI: docker

### 再現方法
基本的に[公式の手順](https://projectcalico.docs.tigera.io/archive/v3.23/getting-started/kubernetes/self-managed-onprem/onpremises)に従います。
#### master
control planeを作成します
```
kubeadm init --pod-network-cidr=10.244.0.0/16
cp /etc/kubernetes/admin.conf $HOME/.kube/config
```
calicoをインストールします
```
kubectl create -f https://projectcalico.docs.tigera.io/archive/v3.23/manifests/tigera-operator.yaml
curl https://projectcalico.docs.tigera.io/archive/v3.23/manifests/custom-resources.yaml -O
```
`custom-resources.yaml`に記載のPodのアドレス範囲がNodeのアドレスと被っているので、これを編集して`10.244.0.0/24`にします。
```custom-resources.yaml
# This section includes base Calico installation configuration.
# For more information, see: https://projectcalico.docs.tigera.io/v3.23/reference/installation/api#operator.tigera.io/v1.Installation
apiVersion: operator.tigera.io/v1
kind: Installation
metadata:
  name: default
spec:
  # Configures Calico networking.
  calicoNetwork:
    # Note: The ipPools section cannot be modified post-install.
    ipPools:
    - blockSize: 26
      cidr: 10.244.0.0/16　# ここを編集
      encapsulation: VXLANCrossSubnet
      natOutgoing: Enabled
      nodeSelector: all()

---

# This section configures the Calico API server.
# For more information, see: https://projectcalico.docs.tigera.io/v3.23/reference/installation/api#operator.tigera.io/v1.APIServer
apiVersion: operator.tigera.io/v1
kind: APIServer 
metadata: 
  name: default 
spec: {}

```
適用します。
```
kubectl create -f custom-resources.yaml
```
[`calicoctl`をインストールします](https://projectcalico.docs.tigera.io/maintenance/clis/calicoctl/install)
```
curl https://github.com/projectcalico/calico/releases/download/v3.23.4/calicoctl-linux-amd64 -o /usr/local/bin/calicoctl
chmod 755 /usr/local/bin/calicoctl
```

workerをクラスタに追加するためのコマンドを出力します。
```
kubeadm token create --print-join-command
```

#### worker
上のコマンドで出力されたコマンド(`kubeadm join`)を実行します。

## 解決方法
`custom-resources.yaml`で[IP Autodetectionの方法を指定](https://projectcalico.docs.tigera.io/networking/ip-autodetection)する
- 今回はCIDRを指定しました

```custom-resources.yaml
# This section includes base Calico installation configuration.
# For more information, see: https://projectcalico.docs.tigera.io/v3.23/reference/installation/api#operator.tigera.io/v1.Installation
apiVersion: operator.tigera.io/v1
kind: Installation
metadata:
  name: default
spec:
  # Configures Calico networking.
  calicoNetwork:
    # Note: The ipPools section cannot be modified post-install.
    ipPools:
    - blockSize: 26
      cidr: 10.244.0.0/16　
      encapsulation: VXLANCrossSubnet
      natOutgoing: Enabled
      nodeSelector: all()
    nodeAddressAutodetectionV4:
      cidrs:
        - "192.168.1.0/24"
# 後略
```
- master, worker両方で`kubeadm reset`を実行し、クラスタを破壊します
- プロンプトに出力される通りに、環境をクリーンアップします
    - `/etc/cni/net.d`を削除します
    - `iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X`
        - 参考:　[ノードの削除](https://kubernetes.io/ja/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#%E3%83%8E%E3%83%BC%E3%83%89%E3%81%AE%E5%89%8A%E9%99%A4)
- 再現方法と同じ手順でクラスタを再構築する
## 結果
```
$ calicoctl node status
Calico process is running.

IPv4 BGP status
+---------------+-------------------+-------+----------+-------------+
| PEER ADDRESS  |     PEER TYPE     | STATE |  SINCE   |    INFO     |
+---------------+-------------------+-------+----------+-------------+
| 192.168.1.102 | node-to-node mesh | up    | 01:30:02 | Established |
+---------------+-------------------+-------+----------+-------------+

IPv6 BGP status
No IPv6 peers found.
```
正しいNodeアドレスに対してPeeringするようになりました。