ሀሎ! ስሜ ሰርጌይ ነው፣ እኔ በሰርፍ ላይ ዴቭኦፕስ ነኝ። በሰርፍ የሚገኘው የዴቭኦፕስ ዲፓርትመንት ዓላማው በልዩ ባለሙያዎች መካከል መስተጋብር መፍጠር እና የስራ ሂደቶችን ማዋሃድ ብቻ ሳይሆን ጠቃሚ ቴክኖሎጂዎችን በራሳቸው መሠረተ ልማት እና በደንበኛ መሠረተ ልማት ውስጥ በንቃት መመርመር እና መተግበር ነው።
ከዚህ በታች ስለ ስርጭቱ በማጥናት ላይ ስለተገናኘን የእቃ ማጠራቀሚያዎች የቴክኖሎጂ ቁልል ለውጦች ትንሽ እናገራለሁ. CentOS 8 እና ስለ ምን እንደሆነ CRI-O እና ከእሱ ጋር በፍጥነት የሚተገበር አካባቢን እንዴት ማዘጋጀት እንደሚቻል ኩባንያቶች.
ለምንድን ነው ዶከር ከ CentOS 8 መደበኛ ስርጭት ጠፍቷል
የቅርብ ጊዜ ዋና ልቀቶችን ከጫኑ በኋላ RHEL 8 ወይም CentOS 8 ሊታለፍ የማይገባ፡ እነዚህ ስርጭቶች እና ኦፊሴላዊ ማከማቻዎች ማመልከቻው ጠፍተዋል። Docker, በርዕዮተ ዓለም እና በተግባራዊነት ፓኬጆችን የሚተካ ፖድማን, ግንባታ (በነባሪ በስርጭቱ ውስጥ ይገኛል) እና CRI-O. ይህ የሆነበት ምክንያት በቀይ ኮፍያ የተሰሩ ደረጃዎችን ተግባራዊ በመተግበሩ እንደ የክፍት ኮንቴይነር ኢኒሼቲቭ (OCI) ፕሮጀክት አካል ነው።
የሊኑክስ ፋውንዴሽን አካል የሆነው የ OCI ግብ በአንድ ጊዜ በርካታ ችግሮችን የሚፈቱ ክፍት የኢንዱስትሪ ስታንዳርዶችን ለኮንቴይነር ቅርጸቶች እና ሊተገበሩ የሚችሉ አካባቢዎች መፍጠር ነው። በመጀመሪያ ፣ የሊኑክስን ፍልስፍና አልተቃረኑም (ለምሳሌ ፣ በዚህ ክፍል ውስጥ እያንዳንዱ ፕሮግራም አንድ እርምጃ ማከናወን አለበት ፣ እና Docker ሁሉንም በአንድ ላይ የማጣመር አይነት ነው)። በሁለተኛ ደረጃ, በሶፍትዌሩ ውስጥ ያሉትን ሁሉንም ድክመቶች ማስወገድ እንችላለን Docker. በሶስተኛ ደረጃ፣ በኮንቴይነር የተያዙ አፕሊኬሽኖችን ለማሰማራት፣ ለማስተዳደር እና ለማቆየት (ለምሳሌ፣ Red Hat OpenShift) ዋና ዋና የንግድ መድረኮች ካስቀመጧቸው የንግድ መስፈርቶች ጋር ሙሉ በሙሉ ይጣጣማሉ።
ችግሮች Docker እና የአዲሱ ሶፍትዌር ጥቅሞች ቀደም ሲል በተወሰነ ዝርዝር ውስጥ ተገልጸዋል
የታቀደው ቁልል አካላት ምን አይነት ተግባር እንዳላቸው ልብ ማለት ያስፈልጋል፡-
- ፖድማን - በ runC ሂደት ከእቃ መያዣዎች እና የምስል ማከማቻ ጋር ቀጥተኛ ግንኙነት;
- ግንባታ - ወደ ምስሎች መዝገብ ውስጥ መሰብሰብ እና መጫን;
- CRI-O - ለኮንቴይነር ኦርኬስትራ ስርዓቶች (ለምሳሌ ኩበርኔትስ) የሩጫ ጊዜ አካባቢ።
እኔ እንደማስበው በክምችቱ ክፍሎች መካከል ያለውን አጠቃላይ የግንኙነት መርሃ ግብር ለመረዳት የግንኙነት ንድፍ እዚህ መስጠት ተገቢ ነው ። ኩባንያቶች c runC እና ዝቅተኛ ደረጃ ቤተ-መጽሐፍት በመጠቀም CRI-O:
CRI-O и ኩባንያቶች ተመሳሳዩን የመልቀቂያ እና የድጋፍ ዑደት ይከተሉ (የተኳኋኝነት ማትሪክስ በጣም ቀላል ነው-ዋና ዋና ልቀቶች ኩባንያቶች и CRI-O coincide) እና ይህ በገንቢዎች የዚህን ቁልል ሥራ ሙሉ እና አጠቃላይ ሙከራ ላይ ትኩረትን ከግምት ውስጥ በማስገባት በማንኛውም የአጠቃቀም ሁኔታዎች ውስጥ በሥራ ላይ ከፍተኛውን ሊደረስበት የሚችል መረጋጋት የመጠበቅ መብት ይሰጠናል (አንፃራዊ ቀላልነት እዚህም ጠቃሚ ነው)። CRI-O ጋር ሲነፃፀር Docker በተግባራዊነት ዓላማ ውስንነት ምክንያት)።
ሲጫኑ ኩባንያቶች "በትክክለኛው መንገድ" መንገድ (እንደ OCI, በእርግጥ) በመጠቀም CRI-O ላይ CentOS 8 አንዳንድ ጥቃቅን ችግሮች አጋጥመውናል፣ ሆኖም ግን፣ በተሳካ ሁኔታ አሸንፈናል። የመጫኛ እና የማዋቀሪያ መመሪያዎችን ለእርስዎ በማካፈል ደስ ይለኛል, በአጠቃላይ ቢበዛ 10 ደቂቃዎችን ይወስዳል.
CRI-O Environmentን በመጠቀም Kubernetes በ CentOS 8 ላይ እንዴት ማሰማራት እንደሚቻል
ቅድመ ሁኔታዎች፡ ቢያንስ አንድ አስተናጋጅ (2 ኮሮች፣ 4 ጊባ ራም፣ ቢያንስ 15 ጂቢ ማከማቻ) ከ ጋር ይኑርዎት። CentOS 8 (የሚመከር የመጫኛ ፕሮፋይል "አገልጋይ")፣ እንዲሁም ለእሱ ግቤቶች በአከባቢው ዲ ኤን ኤስ (በጣም ከባድ በሆኑ ጉዳዮች በ /etc/hosts ውስጥ በመግባት ማግኘት ይችላሉ)። እና አትርሳ
በስር ተጠቃሚው ምትክ ሁሉንም ስራዎች በአስተናጋጁ ላይ እናከናውናለን, ይጠንቀቁ.
- በመጀመሪያው ደረጃ ስርዓተ ክወናውን እናዘጋጃለን, እንጭነዋለን እና ለ CRI-O ቅድመ ጥገኛዎችን እናዋቅራለን.
- ስርዓተ ክወናን አዘምን፡
dnf -y update
- በመቀጠል ፋየርዎልን እና SELinuxን ማዋቀር ያስፈልግዎታል. እዚህ ሁሉም ነገር የእኛ አስተናጋጅ ወይም አስተናጋጅ በሚሠራበት አካባቢ ይወሰናል. በሚመከረው መሰረት ፋየርዎልን ማቀናበር ይችላሉ።
ሰነድ ወይም በታመነ አውታረ መረብ ላይ ከሆኑ ወይም የሶስተኛ ወገን ፋየርዎልን የሚጠቀሙ ከሆነ ነባሪውን ዞን ወደ ታማኝ ይለውጡ ወይም ፋየርዎሉን ያጥፉ፡firewall-cmd --set-default-zone trusted firewall-cmd --reload
ፋየርዎልን ለማጥፋት የሚከተለውን ትዕዛዝ መጠቀም ይችላሉ።
systemctl disable --now firewalld
SELinux ማሰናከል ወይም ወደ "የሚፈቀድ" ሁነታ ማዘጋጀት ያስፈልገዋል፡-
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, ቀደም ሲል እንደተጠቀሰው, ከሚፈለገው ስሪት ጋር ተመሳሳይ ናቸው ኩባንያቶች) ከቅርብ ጊዜው የተረጋጋ ስሪት ጀምሮ ኩባንያቶች በአሁኑ ጊዜ 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 አገልግሎቱን ከመጀመርዎ በፊት የሚፈለገው የኮንሞን ክፍል ከተጠቀሰው የተለየ ቦታ ስላለው፡-
sed -i 's//usr/libexec/crio/conmon//usr/bin/conmon/' /etc/crio/crio.conf
አሁን ዴሞንን ማግበር እና ማስጀመር ይችላሉ። CRI-O:
systemctl enable --now crio
የዴሞንን ሁኔታ ማረጋገጥ ይችላሉ፡-
systemctl status crio
- ስርዓተ ክወናን አዘምን፡
- መጫን እና ማግበር ኩባንያቶች.
- የሚፈለገውን ማከማቻ አክል፡
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
አሁን መጫን እንችላለን ኩባንያቶች (ስሪት 1.18፣ ከላይ እንደተጠቀሰው)፡-
dnf install -y kubelet-1.18* kubeadm-1.18* kubectl-1.18* --disableexcludes=kubernetes
- ሁለተኛው አስፈላጊ ነጥብ: እኛ ዴሞን ስለማንጠቀም Docker, ነገር ግን ዴሞን ይጠቀሙ CRI-O, ከመጀመሩ በፊት እና ከመጀመሩ በፊት ኩባንያቶች አስፈላጊውን ማውጫ ከፈጠሩ በኋላ በ /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
- በመጫን ጊዜ የሚያጋጥመን ሦስተኛው አስፈላጊ ነጥብ: ምንም እንኳን ጥቅም ላይ የዋለውን አሽከርካሪ ጠቁመን ቢሆንም ቡድን, እና ውቅር በክርክር አልፏል 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
- አሁን ዴሞንን ማንቃት እንችላለን kubelet:
sudo systemctl enable --now kubelet
ለማበጀት መቆጣጠሪያ-አውሮፕላን ወይም ሠራተኛ አንጓዎች በደቂቃዎች ውስጥ, መጠቀም ይችላሉ
ይህ ስክሪፕት .
- የሚፈለገውን ማከማቻ አክል፡
- ክላስተርን የምንጀምርበት ጊዜ ነው።
- ክላስተርን ለመጀመር ትዕዛዙን ያሂዱ፡-
kubeadm init --pod-network-cidr=10.244.0.0/16
በክላስተር "kubeadm join ..." በውጤቱ መጨረሻ ላይ የሚቀርበውን ወይም ቢያንስ የተገለጹትን ምልክቶች ለመቀላቀል ትዕዛዙን መፃፍዎን ያረጋግጡ።
- ለፖድ አውታረመረብ ተሰኪውን (CNI) ይጫኑ። እንዲጠቀሙ እመክራለሁ። ካሊኮ. የበለጠ ታዋቂ ሊሆን ይችላል። Flannel ጋር የተኳኋኝነት ችግሮች አሉት nftables, አዎ እና ካሊኮ - በፕሮጀክቱ የሚመከር እና ሙሉ በሙሉ የተረጋገጠ ብቸኛው የ CNI ትግበራ ኩባንያቶች:
kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f https://docs.projectcalico.org/v3.15/manifests/calico.yaml
- የሰራተኛ መስቀለኛ መንገድን ከክላስተርችን ጋር ለማገናኘት በመመሪያ 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 ፕሮጀክት- የቀይ ኮፍያ ብሎግ መጣጥፎች፡-
ይሄኛው ,ይሄ እና ሌሎች ብዙ
ምንጭ: hab.com