Flannel เป็นวิธีที่ง่ายและสะดวกในการกำหนดค่าโครงสร้างเครือข่ายเลเยอร์ 3 ที่ออกแบบมาสำหรับ Kubernetes
Flannel รันเอเจนต์ไบนารีเดี่ยวขนาดเล็กที่เรียกว่า flanneld
บนแต่ละโฮสต์ และมีหน้าที่รับผิดชอบในการจัดสรรการเช่าเครือข่ายย่อยให้กับแต่ละโฮสต์จากพื้นที่ที่อยู่ที่มีขนาดใหญ่กว่าและกำหนดค่าไว้ล่วงหน้า Flannel ใช้ Kubernetes API หรืออื่นๆ โดยตรงเพื่อจัดเก็บการกำหนดค่าเครือข่าย ซับเน็ตที่จัดสรร และข้อมูลเสริมใดๆ (เช่น IP สาธารณะของโฮสต์) แพ็กเก็ตจะถูกส่งต่อโดยใช้กลไกแบ็คเอนด์หนึ่งในหลายกลไก รวมถึง VXLAN และการรวมระบบคลาวด์ต่างๆ
แพลตฟอร์มอย่าง Kubernetes จะถือว่าแต่ละคอนเทนเนอร์ (พ็อด) มี IP ที่กำหนดเส้นทางได้ไม่ซ้ำกันภายในคลัสเตอร์ ข้อดีของโมเดลนี้คือขจัดความซับซ้อนในการแมปพอร์ตที่มาจากการแบ่งปัน IP โฮสต์เดียว
Flannel มีหน้าที่รับผิดชอบในการจัดหาเครือข่าย IPv4 เลเยอร์ 3 ระหว่างหลายโหนดในคลัสเตอร์ ผ้าสักหลาดไม่ได้ควบคุมวิธีการเชื่อมต่อคอนเทนเนอร์กับโฮสต์ แต่จะควบคุมวิธีการขนส่งการรับส่งข้อมูลระหว่างโฮสต์เท่านั้น อย่างไรก็ตาม ผ้าสักหลาดมีปลั๊กอิน CNI สำหรับ Kubernetes และคำแนะนำในการผสานรวมกับ Docker
ผ้าสักหลาดมุ่งเน้นไปที่การสร้างเครือข่าย สำหรับนโยบายเครือข่าย สามารถใช้โปรเจ็กต์อื่นๆ เช่น Calico ได้
วิธีที่ง่ายที่สุดในการปรับใช้ผ้าสักหลาดด้วย Kubernetes คือการใช้เครื่องมือการใช้งานและการแจกจ่ายอันใดอันหนึ่งที่เครือข่ายคลัสเตอร์ที่มีผ้าสักหลาดตามค่าเริ่มต้น ตัวอย่างเช่น K3s ตั้งค่าผ้าสักหลาดในคลัสเตอร์ Kubernetes ที่สร้างขึ้นโดยใช้ K3s Installer แบบโอเพ่นซอร์สเพื่อขับเคลื่อนกระบวนการตั้งค่า
แม้ว่าจะไม่จำเป็น แต่เราขอแนะนำให้ flannel ใช้ Kubernetes API เป็นที่เก็บข้อมูลสำรอง ซึ่งหลีกเลี่ยงความจำเป็นในการปรับใช้คลัสเตอร์ etcd
แบบแยกสำหรับ flannel
โหมด flannel
นี้เรียกว่า kube subnet manager
คุณสามารถเพิ่ม Flannel ลงในคลัสเตอร์ Kubernetes ที่มีอยู่ได้ แต่วิธีที่ง่ายที่สุดในการเพิ่ม flannel
ก่อนที่พ็อดใดๆ ที่ใช้เครือข่ายพ็อดจะเริ่มต้นขึ้น
สำหรับ Kubernetes เวอร์ชัน 1.17+
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
หากคุณใช้ podCIDR
ที่กำหนดเอง (ไม่ใช่ 10.244.0.0/16
) คุณต้องดาวน์โหลดรายการด้านบนก่อนและแก้ไขเครือข่ายให้ตรงกับเครือข่ายของคุณ
# Needs manual creation of namespace to avoid helm error
kubectl create ns kube-flannel
kubectl label --overwrite ns kube-flannel pod-security.kubernetes.io/enforce=privileged
helm repo add flannel https://flannel-io.github.io/flannel/
helm install flannel --set podCidr= " 10.244.0.0/16 " --namespace kube-flannel flannel/flannel
ดู Kubernetes สำหรับรายละเอียดเพิ่มเติม
ในกรณีที่มีการกำหนดค่าไฟร์วอลล์ ตรวจสอบให้แน่ใจว่าได้เปิดใช้งานพอร์ตที่ถูกต้องซึ่งใช้โดยแบ็กเอนด์ที่กำหนดค่าไว้
Flannel ใช้ portmap
เป็นปลั๊กอินเครือข่าย CNI ตามค่าเริ่มต้น เมื่อปรับใช้ Flannel ตรวจสอบให้แน่ใจว่าปลั๊กอินเครือข่าย CNI ได้รับการติดตั้งใน /opt/cni/bin
ไบนารีล่าสุดสามารถดาวน์โหลดได้ด้วยคำสั่งต่อไปนี้:
ARCH= $( uname -m )
case $ARCH in
armv7 * ) ARCH= " arm " ;;
aarch64) ARCH= " arm64 " ;;
x86_64) ARCH= " amd64 " ;;
esac
mkdir -p /opt/cni/bin
curl -O -L https://github.com/containernetworking/plugins/releases/download/v1.6.0/cni-plugins-linux- $ARCH -v1.6.0.tgz
tar -C /opt/cni/bin -xzf cni-plugins-linux- $ARCH -v1.6.0.tgz
Flannel ต้องการให้โมดูล br_netfilter เพื่อเริ่มต้นและจากเวอร์ชัน 1.30 kubeadm จะไม่ตรวจสอบว่าติดตั้งโมดูลแล้วหรือไม่ และ Flannel จะไม่เริ่มทำงานอย่างถูกต้องในกรณีที่โมดูลหายไป
ผ้าสักหลาดยังใช้กันอย่างแพร่หลายนอก kubernetes เมื่อปรับใช้ภายนอก Kubernetes ฯลฯ จะถูกใช้เป็นที่เก็บข้อมูลเสมอ สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการรวมผ้าสักหลาดเข้ากับ Docker โปรดดูที่การเรียกใช้
ชุมชนผู้ดูแลผ้าสักหลาดจะจัดการประชุมทุก ๆ วันพฤหัสบดี เวลา 8.30 น. PST การประชุมนี้ใช้เพื่อหารือเกี่ยวกับประเด็นต่างๆ คำขอดึงแบบเปิด และหัวข้ออื่นๆ ที่เกี่ยวข้องกับผ้าสักหลาดหากจำเป็น
วาระการประชุมและลิงก์ทีมสามารถพบได้ที่นี่: วาระการประชุมชุมชนผ้าสักหลาด
ดูการมีส่วนร่วมสำหรับรายละเอียดในการส่งแพตช์และเวิร์กโฟลว์การสนับสนุน
ดูการรายงานข้อบกพร่องสำหรับรายละเอียดเกี่ยวกับการรายงานปัญหาใดๆ
Flannel อยู่ภายใต้ลิขสิทธิ์ Apache 2.0 ดูไฟล์ใบอนุญาตสำหรับรายละเอียด