أدناه سأتحدث قليلاً عن التغييرات في المكدس التكنولوجي للحاويات التي قابلناها عند دراسة توزيع CentOS 8 وما هو CRI-O وكيفية إعداد بيئة قابلة للتنفيذ بسرعة لـ Kubernetes معها .
لماذا Docker مفقود من توزيع CentOS 8 القياسي
بعد تثبيت أحدث الإصدارات الرئيسية لل RHEL 8 أو سينت أو إس 8، لا يسع المرء إلا إلى إشعار: هذه التوزيعات ومستودعات رسمية تفتقر إلى عامل الميناء التطبيق ، الذي يحل محل عقائديا وظيفيا Podman ، حزم Buildah (الحاضر في توزيع الافتراضي) و CRI-O . ويرجع ذلك إلى التنفيذ العملي للمعايير التي طورتها ريد هات ، من بين أشياء أخرى ، كجزء من مبادرة الحاوية المفتوحة (OCI).
الهدف من OCI ، وهو جزء من The Linux Foundation ، هو إنشاء معايير صناعية مفتوحة لتنسيقات الحاويات وأوقات التشغيل التي تعالج تحديات متعددة. أولاً ، لم يتعارضوا مع فلسفة لينكس (على سبيل المثال ، في الجزء الذي يجب أن يقوم كل برنامج بعمل واحد ، و Docker هو نوع من الحاصدة الكل في واحد). ثانيًا ، يمكننا القضاء على جميع العيوب الموجودة في برنامج Docker . ثالثًا ، سيكونون متوافقين تمامًا مع متطلبات العمل للمنصات التجارية الرائدة لنشر وإدارة وخدمة تطبيقات الحاويات (على سبيل المثال ، Red Hat OpenShift).
عيوب Dockerوقد تم بالفعل وصف مزايا البرنامج الجديد بشيء من التفصيل في هذه المقالة ، ووصف تفصيلي لكيفية العثور على حزمة البرامج الكاملة المقدمة في مشروع OCI وميزاته المعمارية في الوثائق الرسمية والمقالات من كل من Red Hat نفسها ( مقالة جيدة في مدونة Red Hat) وفي مراجعات الجهات الخارجية .
من المهم ملاحظة الوظائف التي تتمتع بها مكونات الحزمة المقترحة:
- Podman - التفاعل المباشر مع الحاويات وتخزين الصور من خلال عملية runC ؛
- Buildah - بناء وتحميل الصور في التسجيل ؛
- CRI-O هو إطار عمل قابل للتنفيذ لأنظمة تنسيق الحاوية (مثل Kubernetes).
أعتقد أنه لفهم المخطط العام للتفاعل بين مكونات المكدس ، يُنصح بإعطاء مخطط اتصال Kubernetes مع runC والمكتبات منخفضة المستوى باستخدام CRI-O : يلتزم
CRI-O و Kubernetes بنفس دورة الإصدار والدعم (مصفوفة التوافق بسيطة جدًا: الإصدارات الرئيسية Kubernetes و CRI-O هما نفس الشيء) ، وهذا ، مع مراعاة التركيز على الاختبار الكامل والشامل لعمل هذه المجموعة من قبل المطورين ، يمنحنا الحق في توقع أقصى قدر من الاستقرار الممكن تحقيقه في العمل تحت أي حالات استخدام (هنا ، الخفة النسبية لـ CRI-O مفيدة أيضًا في المقارنة من عندعامل ميناء بسبب القيود الهادفة على الوظائف).
عند تثبيت Kubernetes بالطريقة "الصحيحة" (وفقًا لـ OCI بالطبع) باستخدام CRI-O على CentOS 8 ، واجهنا صعوبات صغيرة ، ومع ذلك ، تم التغلب عليها بنجاح. يسعدني أن أطلعك على إرشادات التثبيت والتهيئة ، والتي ستستغرق معًا 10 دقائق على الأكثر.
كيفية نشر Kubernetes على CentOS 8 باستخدام CRI-O
المتطلبات الأساسية: مضيف واحد على الأقل (مركزان ، 4 غيغابايت من ذاكرة الوصول العشوائي ، محرك 15 غيغابايت على الأقل) مع تثبيت CentOS 8 (يوصى بملف تعريف تثبيت "الخادم") ، بالإضافة إلى إدخاله في DNS المحلي (كحل أخير ، يمكنك القيام بذلك في / etc / hosts). ولا تنسى تعطيل المبادلة .
نحن ننفذ جميع العمليات على المضيف بصفتنا المستخدم الجذر ، كن حذرًا.
- في الخطوة الأولى ، سنقوم بتهيئة نظام التشغيل وتثبيت وتهيئة التبعيات الأولية لـ CRI-O.
- لنقم بتحديث نظام التشغيل:
dnf -y update
- SELinux. , . , , , :
firewall-cmd --set-default-zone trusted firewall-cmd --reload
:
systemctl disable --now firewalld
SELinux «permissive»:
setenforce 0 sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
- , «br_netfilter» :
modprobe overlay modprobe br_netfilter echo "br_netfilter" >> /etc/modules-load.d/br_netfilter.conf dnf -y install iproute-tc
- :
cat > /etc/sysctl.d/99-kubernetes-cri.conf <<EOF net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-ip6tables = 1 EOF
:
sysctl --system
- CRI-O ( CRI-O, , Kubernetes), Kubernetes 1.18:
export REQUIRED_VERSION=1.18
:
dnf -y install 'dnf-command(copr)' dnf -y copr enable rhcontainerbot/container-selinux curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/CentOS_8/devel:kubic:libcontainers:stable.repo curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:$REQUIRED_VERSION.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$REQUIRED_VERSION/CentOS_8/devel:kubic:libcontainers:stable:cri-o:$REQUIRED_VERSION.repo
- CRI-O:
dnf -y install cri-o
, : CRI-O , conmon :
sed -i 's/\/usr\/libexec\/crio\/conmon/\/usr\/bin\/conmon/' /etc/crio/crio.conf
CRI-O:
systemctl enable --now crio
:
systemctl status crio
- لنقم بتحديث نظام التشغيل:
- Kubernetes.
- :
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg exclude=kubelet kubeadm kubectl EOF
Kubernetes ( 1.18, ):
dnf install -y kubelet-1.18* kubeadm-1.18* kubectl-1.18* --disableexcludes=kubernetes
- : Docker, CRI-O, Kubernetes /var/lib/kubelet/config.yaml, :
mkdir /var/lib/kubelet cat <<EOF > /var/lib/kubelet/config.yaml apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration cgroupDriver: systemd EOF
- , : , cgroup, kubelet ( ), , :
cat /dev/null > /etc/sysconfig/kubelet cat <<EOF > /etc/sysconfig/kubelet KUBELET_EXTRA_ARGS=--container-runtime=remote --cgroup-driver=systemd --container-runtime-endpoint='unix:///var/run/crio/crio.sock' EOF
- :
- .
- :
kubeadm init --pod-network-cidr=10.244.0.0/16
«kubeadm join ...», , , , .
- (CNI) Pod network. Calico. , Flannel nftables, Calico — CNI, Kubernetes:
kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f https://docs.projectcalico.org/v3.15/manifests/calico.yaml
- worker 1 2, , «kubeadm init ...», :
kubeadm join $CONTROL_PLANE_ADDRESS:6443 --token $TOKEN \ --discovery-token-ca-cert-hash $TOKEN_HASH
- , :
kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
! K8s . - :
آمل أن تساعد التعليمات المذكورة أعلاه في توفير بعض الوقت والجهد.
غالبًا ما تعتمد نتائج العمليات التي تجري في الصناعة على كيفية قبولها من قبل غالبية المستخدمين النهائيين ومطوري البرامج الأخرى في المكانة المناسبة. لم يتضح بعد إلى أين ستقود مبادرات OCI في غضون سنوات قليلة ، لكننا سنكون سعداء للمتابعة. يمكنك مشاركة رأيك الآن في التعليقات.
ترقب!
تأتي هذه المقالة من المصادر التالية:
- قسم حول أوقات تشغيل الحاوية في وثائق Kubernetes
- صفحة مشروع CRI-O على الإنترنت
- منشورات مدونة Red Hat: هذه ، هذه ، وأكثر