Appearance
EC2上のKubernetesクラスタでCalico使用時にノード間通信を有効化する
cf.
- https://docs.tigera.io/calico/latest/reference/public-cloud/aws#routing-traffic-within-a-single-vpc-subnet
- https://docs.aws.amazon.com/vpc/latest/userguide/work-with-nat-instances.html#EIP_Disable_SrcDestCheck
背景
EC2上にkubeadmで構築、CNIにCalicoを採用したKubernetesクラスタについて、ノードを跨いだPod間の通信ができない障害が検知されました。
解決策
ワーカーノードのEC2について、source/destination checksを無効化することでノード間通信が可能になりました。Pod間の通信をワーカーノードがルーティング/フォワーディングする形になり、送信元/送信先チェックでNGとなったようです。
また、BGPでClusterIPをクラスタ外に広告した際にクラスタ外VMからService名が解決できない(i.e., Core DNSに疎通ができない)事象も検知されましたが、コントロールプレーンのsource/destination checksを無効化することで解決しました。