企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] 本次主题:将正在运行 calico 数据存储从 etcdV3 切换到 kubernetes 上 与直接使用 etcdv3 相比,使用 Kubernetes 作为数据存储具有许多优势,包括更少的组件以及更好地支持基于角色的访问控制。 对于大多数用户来说,使用 Kubernetes 数据存储将提供更好的体验。 提供了一种无缝方法,将数据从具有 etcdv3 数据存储的现有集群迁移到 Kubernetes 数据存储。 有关使用 Kubernetes 数据存储相对于 etcd 数据存储的完整优势,请参阅 [Calico 数据存储](https://docs.tigera.io/archive/v3.23/getting-started/kubernetes/hardway/the-calico-datastore#using-kubernetes-as-the-datastore) 文档。 # 前提条件 - 确保您的 Calico 安装配置为使用 etcdv3 数据存储。 本指南不适用于使用 Kubernetes API 数据存储安装的集群。 - 必须安装并配置最新版本的 calicoctl 才能访问 etcd。 > 注意:由于下面的步骤需要修改calicoctl配置,因此我们不建议在此过程中使用作为Kubernetes pod安装的calicoctl # 迁移数据 1. 锁定 etcd 数据存储以进行迁移, 这可以防止数据的任何更改影响集群 > 注意:运行上述命令后,在迁移完成之前您无法更改集群的配置。 新的 Pod 在迁移之后才会启动。 ```shell calicoctl datastore migrate lock ``` 2. 将数据存储内容导出到文件 ```shell calicoctl datastore migrate export > etcd-data ``` 3. 配置 calicoctl 以访问 Kubernetes 数据存储 > calicoctl 默认读取/etc/calico/calicoctl.cfg文件,当文件不存在默认数据存储为 kubernetes 且读取 ~/.kube/config 配置文件 ```shell rm -rf /etc/calico ``` 4. 从导出的文件导入数据存储内容 ```shell $ calicoctl datastore migrate import -f etcd-data Datastore locked. Successfully applied 9 resource(s) Importing IPAM resources Successfully applied 14 IPAM resource(s) Datastore information successfully imported. Please refer to the datastore migration documentation for next steps. ``` 5. 验证数据存储是否已正确导入 > 这可以通过使用 calicoctl 查询 etcd 数据存储中存在的任何 Calico 资源(例如networkpolicy、ippool)来完成。 ```shell calicoctl get networkpolicy calicoctl get ippool -owide ``` 6. 配置Calico从Kubernetes数据存储中读取数据 > 注意:安装calico的版本,涉及配置文件修改自行处理 ```shell curl https://projectcalico.docs.tigera.io/archive/v3.23/manifests/calico.yaml -O kubectl apply -f calico.yaml ``` 7. 解锁数据存储 > 恢复集群读写数据。 > 将 Kubernetes 数据存储解锁,数据存储迁移就无法回滚。 在解锁数据存储之前,请确保 Kubernetes 数据存储已填充所有预期的 Calico 资源。 ```shell calicoctl datastore migrate unlock ``` 官网文档:https://docs.tigera.io/archive/v3.23/maintenance/datastore-migration#migrate-the-datastore