ตามที่คุณทราบแล้ว การย้าย Flannel ไปยัง Calico บนคลัสเตอร์โหนดเดียวไม่ได้รับการสนับสนุนนี่เป็นเพราะตัวควบคุมการย้าย Flannel ต้องมีการกำหนดเวลาบนโหนดที่ไม่ได้กำลังย้าย ซึ่งเป็นไปไม่ได้ในคลัสเตอร์โหนดเดียว
สิ่งนี้สามารถแก้ไขได้โดยการสร้างโหนดที่สองชั่วคราว และลดขนาดกลับเป็น 1 หลังจากการย้ายข้อมูลเสร็จสิ้น
วิธีอื่นคือสร้างคลัสเตอร์ใหม่ทั้งหมด ติดตั้ง Calico และย้ายทรัพยากรจากคลัสเตอร์เก่าไปยังคลัสเตอร์ใหม่
เป็นทางเลือกสุดท้าย คุณสามารถลองถอนการติดตั้ง Flannel ด้วยตนเอง และติดตั้ง Calico แทน
คำเตือน: ทั้งหมดด้านล่างอาจไม่ทำงานตามที่ต้องการ เห็นได้ชัดว่า Flannel หรือ Calico ไม่สนับสนุนการทำสิ่งนี้ด้วยวิธีนี้ อาจเสียหายและทำให้คลัสเตอร์ของคุณใช้งานไม่ได้ ลองใช้โซลูชันนี้ในสภาพแวดล้อมการทดสอบก่อน ปรับให้เข้ากับ env ของคุณ แล้วจึงลองใช้กับผลิตภัณฑ์
คุณได้รับการเตือน.
- ลบ Flannel ด้วย
kubectl ลบ -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
- SSH ลงในโหนดของคุณ
- หยุดให้บริการ kubelet
systemctl หยุด kubelet
- หยุดคอนเทนเนอร์
systemctl หยุดคอนเทนเนอร์
หากใช้เป็นคอนเทนเนอร์รันไทม์ (แทนที่ด้วยนักเทียบท่าหากใช้ Docker Engine)
- ลบไดเร็กทอรีที่เกี่ยวข้องกับ CNI
rm -rf /var/lib/cni
rm -rf /run/สักหลาด
rm -rf /etc/cni
- ค้นหาอินเทอร์เฟซที่เกี่ยวข้องกับ CNI/Flannel และลบออก
ลิงค์ไอพี
สำหรับแต่ละอินเทอร์เฟซให้ทำดังนี้
ifconfig <ชื่ออินเทอร์เฟซจาก ip link> ลง
ip link ลบ <ชื่ออินเตอร์เฟสจาก ip link>
- รีสตาร์ทรันไทม์ของคอนเทนเนอร์
- รีสตาร์ท kubelet
- ติดตั้ง Calico เช่นเดียวกับที่คุณทำในคลัสเตอร์ใหม่