<commit_before>---
title: Migrating a cluster from flannel to Calico
description: Migrate an existing Kubernetes cluster with flannel networking to use Calico networking.
---

# About

This article describes how migrate an existing Kubernetes cluster with flannel networking to use Calico
networking. Calico provides a migration tool that performs a rolling update of the nodes in the cluster.
At the end, you will have a fully-functional Calico cluster using VXLAN networking between pods.

# Prerequisites

- A cluster with flannel for networking using the VXLAN backend.
- Flannel version v0.9.1 or greater (Canal version v3.7.0 or greater).
- Flannel must be configured to use the Kubernetes API for storing its configuration (as opposed to etcd).
- Flannel must be configured with `DirectRouting` disabled which is the default value.
- Flannel must have been installed using a Kubernetes daemon set.
- Cluster nodes must have rp_filter set to strict (1).  (Check with `sysctl net.ipv4.conf.all.rp_filter`)
- Cluster must allow for adding/deleting/modifying node labels.
- Cluster must allow for modification and removal of the flannel daemon set.
- For example, it must not be installed using the Kubernetes add-on manager.
<commit_msg>Setting rp_filter is not needed now (#3153)<commit_after>---
title: Migrating a cluster from flannel to Calico
description: Migrate an existing Kubernetes cluster with flannel networking to use Calico networking.
---

# About

This article describes how migrate an existing Kubernetes cluster with flannel networking to use Calico
networking. Calico provides a migration tool that performs a rolling update of the nodes in the cluster.
At the end, you will have a fully-functional Calico cluster using VXLAN networking between pods.

# Prerequisites

- A cluster with flannel for networking using the VXLAN backend.
- Flannel version v0.9.1 or greater (Canal version v3.7.0 or greater).
- Flannel must be configured to use the Kubernetes API for storing its configuration (as opposed to etcd).
- Flannel must be configured with `DirectRouting` disabled which is the default value.
- Flannel must have been installed using a Kubernetes daemon set.
- Cluster must allow for adding/deleting/modifying node labels.
- Cluster must allow for modification and removal of the flannel daemon set.
- For example, it must not be installed using the Kubernetes add-on manager.

{'fraction_non_alphanumeric': 0.04696591853699086, 'fraction_numerical': 0.007481296758104738, 'mean_word_length': 4.372767857142857, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6960703', 'n_tokens_mistral': 621, 'n_tokens_neox': 592, 'n_words': 341}