يعد Flannel طريقة بسيطة وسهلة لتكوين نسيج شبكة من الطبقة الثالثة مصمم لـ Kubernetes.
يقوم Flannel بتشغيل وكيل ثنائي صغير واحد يسمى flanneld
على كل مضيف، وهو مسؤول عن تخصيص عقد إيجار شبكة فرعية لكل مضيف من مساحة عنوان أكبر تم تكوينها مسبقًا. يستخدم Flannel إما Kubernetes API أو etcd مباشرةً لتخزين تكوين الشبكة والشبكات الفرعية المخصصة وأي بيانات مساعدة (مثل عنوان IP العام للمضيف). تتم إعادة توجيه الحزم باستخدام إحدى آليات الواجهة الخلفية العديدة بما في ذلك VXLAN وعمليات التكامل السحابية المختلفة.
تفترض الأنظمة الأساسية مثل Kubernetes أن كل حاوية (pod) لها عنوان IP فريد وقابل للتوجيه داخل المجموعة. وتتمثل ميزة هذا النموذج في أنه يزيل تعقيدات تعيين المنفذ التي تأتي من مشاركة عنوان IP مضيف واحد.
يعتبر Flannel مسؤولاً عن توفير شبكة IPv4 من الطبقة الثالثة بين العقد المتعددة في المجموعة. لا يتحكم Flannel في كيفية ربط الحاويات بالمضيف، بل يتحكم فقط في كيفية نقل حركة المرور بين المضيفين. ومع ذلك، يوفر الفانيلا مكونًا إضافيًا لـ CNI لـ Kubernetes وإرشادات حول التكامل مع Docker.
يركز الفانيلا على التواصل. بالنسبة لسياسة الشبكة، يمكن استخدام مشاريع أخرى مثل كاليكو.
أسهل طريقة لنشر الفانيلا مع Kubernetes هي استخدام إحدى أدوات النشر والتوزيعات العديدة التي تربط مجموعات الفانيلا بالشبكات بشكل افتراضي. على سبيل المثال، تقوم K3s بإعداد الفانيلا في مجموعات Kubernetes التي تنشئها باستخدام مثبت K3s مفتوح المصدر لتوجيه عملية الإعداد.
على الرغم من أن ذلك ليس مطلوبًا، فمن المستحسن أن يستخدم الفانيلا واجهة برمجة تطبيقات Kubernetes كمخزن دعم خاص به مما يتجنب الحاجة إلى نشر مجموعة منفصلة etcd
لـ flannel
. يُعرف وضع flannel
هذا باسم مدير الشبكة الفرعية kube .
يمكن إضافة Flannel إلى أي مجموعة Kubernetes موجودة، على الرغم من أنه من الأسهل إضافة flannel
قبل بدء تشغيل أي حجرة تستخدم شبكة pod.
لـ Kubernetes v1.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، يُستخدم etcd دائمًا كمخزن بيانات. لمزيد من التفاصيل حول دمج الفانيلا مع Docker، راجع التشغيل
يعقد مجتمع صيانة الفانيلا اجتماعًا كل يوم خميس في تمام الساعة 8:30 صباحًا بتوقيت المحيط الهادئ. يُستخدم هذا الاجتماع لمناقشة المشكلات وطلبات السحب المفتوحة والمواضيع الأخرى المتعلقة بـ Flannel إذا دعت الحاجة إلى ذلك.
يمكن العثور على جدول أعمال الاجتماع ورابط الفرق هنا: جدول أعمال اجتماع مجتمع Flannel
راجع المساهمة للحصول على تفاصيل حول إرسال التصحيحات وسير عمل المساهمة.
راجع الإبلاغ عن الأخطاء للحصول على تفاصيل حول الإبلاغ عن أي مشكلات.
الفانيلا تحت ترخيص Apache 2.0. راجع ملف الترخيص للحصول على التفاصيل.