![როგორ დავაფიქსიროთ iPhone- ის შავი თეთრი ეკრანის გამოცემა](/f/4a24bf214cf8de82007e35df79523a7a.jpg?width=100&height=100)
ინსტალაციის პროცესი ა კუბერნეტეს კლასტერი ჩართული CentOS 8 თითქმის მსგავსია იმისა CentOS 7 (რომლის გავლაც შეგიძლიათ აქ), მაგრამ აქ პროცესს აქვს რამდენიმე ცვლილება. ეს ცვლილებები, ძირითადად ტრიალებს ინსტალაციის გარშემო დოკერი.
Ვიწყებთ აქედან CentOS 8 (და გაფართოებით RHEL 8), დოკერი ახლა უკვე მშობლიურად შეიცვალა პოდმანი და აღნაგობა რომელთაგან არის ინსტრუმენტები Წითელი ქუდი. ფაქტობრივად, დოკერის პაკეტი ახლა ამოღებულია ნაგულისხმევი პაკეტის საცავიდან.
ამ ნაბიჯით, Წითელი ქუდი გუნდის მიზანია გაამარტივოს კონტეინერების შექმნისა და გამოყენების პროცესი, სპეციალური ნებართვების გარეშე, ამავდროულად, დოკერის სურათებთან თავსებადობის შენარჩუნება და მათი ოპერაცია a დემონი პოდმანი გვპირდება, რომ შესთავაზებს მეტ მოქნილობას მუშაობის დროს კუბერნეტეს გარემო, მაგრამ ჟიური იქ რჩება.
ამ სტატიისთვის ჩვენ გავატარებთ ინსტალაციის პროცესს კუბერნეტეს ზე CentOS 8 პლატფორმა, მუშაობს დოკერი-CE (საზოგადოების გამოცემა). მოგვიანებით სტატიაში, ჩვენ ასევე გავატარებთ მსგავს ინსტალაციას, გამოყენებით პოდმანი ჩვენი კონტეინერებისთვის.
კვანძების უმეტესობა, როგორც წესი, უნიკალურია ᲛᲐᲙᲘ მიმართავს, თუმცა, ზოგიერთ უნიკალურ შემთხვევაში, ზოგს ვირტუალური მანქანები შეიძლება ჰქონდეს იდენტური MAC მისამართები. ამიტომ გირჩევთ დაადასტუროთ, რომ პროდუქტი_UUID და ᲛᲐᲙᲘ მისამართი არ არის იდენტური არცერთ კვანძში.
კუბერნეტეს იყენებს ამ მნიშვნელობებს კლასტერში კვანძების ცალსახად განსაზღვრისათვის. თუ ეს მნიშვნელობები არ არის უნიკალური თითოეული კვანძისათვის, ინსტალაციის პროცესი შეიძლება ჩაიშალოს.
შეამოწმეთ ქსელის ინტერფეისის MAC მისამართი და შეადარეთ იგი.
# ip ბმული.
შესამოწმებლად product_uuid და შეადარეთ, გაუშვით შემდეგი ბრძანება.
# cat/sys/class/dmi/id/product_uuid
ჩვენი ინსტალაცია შექმნილია იმისთვის, რომ ჰქონდეს სამაგისტრო-კვანძი აკონტროლებს მუშა კვანძები. ამ ინსტალაციის ბოლოს, ჩვენი ლოგიკური არქიტექტურა ასე გამოიყურება.
სამაგისტრო კვანძი - ეს მანქანა ზოგადად მოქმედებს როგორც საკონტროლო სიბრტყე და მართავს კასეტური მონაცემთა ბაზას და API სერვერს (რომელთანაც დაკავშირებულია kubectl CLI).
ჩვენი 3 კვანძი კუბერნეტეს კლასტერი გამოიყურება ასე:
ამისთვის კუბერნეტეს სამუშაოდ, დაგჭირდებათ კონტეინერიზაციის ძრავა. როგორც აღვნიშნეთ, ჩვენ ვიყენებთ დოკერი-CE.
შემდეგი ინსტიტუტები შესრულდება CentOS 8 სამაგისტრო კვანძი.
თქვენს CentOS 8 სამაგისტრო კვანძი, დააყენეთ სისტემის მასპინძლის სახელი და განაახლეთ DNS თქვენს სისტემაში /etc/hosts ფაილი
# hostnamectl set-hostname სამაგისტრო კვანძი. # კატა <> /etc /მასპინძლები. 192.168.0.47 სამაგისტრო კვანძი. 192.168.0.48 კვანძი -1 მუშა-კვანძი -1. 192.168.0.49 კვანძი -2 მუშა-კვანძი -2. EOF
შემდეგი, პინგის თქვენი მუშა-კვანძი -1 და მუშა-კვანძი -2 შეამოწმოთ მუშაობს თუ არა თქვენი განახლებული მასპინძელი ფაილი სწორად პინგის ბრძანება.
# პინგი 192.168.0.48. # პინგი 192.168.0.49.
შემდეგი, გამორთეთ სელინუქს, ვინაიდან ეს საჭიროა კონტეინერებისათვის მასპინძელ ფაილურ სისტემაზე წვდომისათვის, რაც საჭიროა pod ქსელებისა და სხვა სერვისებისთვის.
# setenforce 0.
დაყენება setenforce რათა 0
ეფექტურად აყენებს SELinux– ს ნებადართულს, რაც ეფექტურად გამორთავს SELinux– ს მომდევნო გადატვირთვამდე. მისი სრული გამორთვისთვის გამოიყენეთ ქვემოთ მოცემული ბრძანება და გადატვირთეთ.
# sed -i --follow -symlinks's/SELINUX = აღსრულება/SELINUX = გამორთული/g '/etc/sysconfig/selinux. # გადატვირთვა
Kubernetes იყენებს სხვადასხვა პორტებს კომუნიკაციისა და წვდომისათვის და ეს პორტები უნდა იყოს ხელმისაწვდომი Kubernetes– ისთვის და შეზღუდული არ იყოს ბუხრით.
კონფიგურაცია firewall წესების პორტები.
# firewall-cmd-მუდმივი-დამატება-პორტი = 6443/tcp. # firewall-cmd-მუდმივი-დამატება-პორტი = 2379-2380/tcp. # firewall-cmd-მუდმივი-დამატება-პორტი = 10250/tcp. # firewall-cmd-მუდმივი-დამატება-პორტი = 10251/tcp. # firewall-cmd-მუდმივი-დამატება-პორტი = 10252/tcp. # firewall-cmd-მუდმივი-დამატება-პორტი = 10255/tcp. # firewall-cmd-გადატვირთვა. # modprobe br_netfilter. # echo '1'>/proc/sys/net/bridge/bridge-nf-call-iptables.
თქვენ უნდა დაამატოთ დოკერი პირველი საცავი, რადგან ის აღარ არის ნაგულისხმევი პაკეტების სიაში შემდეგით dnf კონფიგურაციის მენეჯერი ბრძანება.
# dnf config-manager-add-repo = https://download.docker.com/linux/centos/docker-ce.repo.
ასევე დააინსტალირეთ containerd.io პაკეტი, რომელიც ხელმისაწვდომია დემონის სახით, რომელიც მართავს მისი მასპინძელი სისტემის კონტეინერის სიცოცხლის ციკლს გამოსახულების გადაცემა და შენახვა კონტეინერის შესრულებაზე და ზედამხედველობა დაბალი დონის შესანახად ქსელის დანართებზე და მიღმა.
# dnf დააინსტალირეთ https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm.
ახლა დააინსტალირეთ უახლესი ვერსია დოკერი-ცე პაკეტი.
# dnf დააინსტალირეთ docker-ce.
ახლა თქვენ შეგიძლიათ ჩართოთ და დაიწყოთ დოკერის სერვისი.
# systemctl დოკერის ჩართვა. # systemctl დაწყების დოკერი.
შემდეგი, თქვენ უნდა დაამატოთ კუბერნეტეს საცავები ხელით, რადგან ისინი სტანდარტულად არ დაინსტალირდება CentOS 8.
# კატა </etc/yum.repos.d/kubernetes.repo. [კუბერნეტეს] სახელი = კუბერნეტესი. ბაზურლი = https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64. ჩართულია = 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. EOF
კუბეადმი გეხმარებათ ჩატვირთოთ მინიმალური სიცოცხლისუნარიანი კუბერნეტეს კლასტერი, რომელიც შეესაბამება საუკეთესო პრაქტიკას. თან კუბეადმითქვენმა კლასტერმა უნდა გაიაროს Kubernetes– ის შესაბამისობის ტესტები.
კუბეადმი ასევე მხარს უჭერს სხვა კლასტერული სიცოცხლის ციკლის ფუნქციებს, როგორიცაა განახლება, შემცირება და ჩატვირთვის ნიშნების მართვა. Kubeadm ასევე ინტეგრირებულია სხვა ორკესტრირების ინსტრუმენტებთან, როგორიცაა პასუხგაუცემელი და ტერაფორმი.
პაკეტის რეპო ახლა მზად არის, შეგიძლიათ გააგრძელოთ და დააინსტალიროთ კუბეადმი პაკეტი.
# dnf დააინსტალირეთ kubeadm -y
როდესაც ინსტალაცია წარმატებით დასრულდება, ჩართეთ და დაიწყეთ სერვისი.
# systemctl ჩართეთ kubelet. # systemctl დაიწყეთ kubelet.
კუბერნეტეს ოსტატი, რომელიც მოქმედებს როგორც საკონტროლო თვითმფრინავი კლასტერისთვის მუშაობს კლასტერისთვის საჭირო რამდენიმე კრიტიკული სერვისი. ამრიგად, ინიციალიზაციის პროცესი ჩაატარებს წინასწარ შემოწმებას, რათა უზრუნველყოს, რომ მანქანა მზად არის კუბერნეტესის გასაშვებად. ეს წინასწარი შემოწმება აფრთხილებს გაფრთხილებებს და გამოდის შეცდომებზე. kubeadm init შემდეგ გადმოწერს და აყენებს კლასტერის კონტროლის თვითმფრინავის კომპონენტებს.
ახლა დროა დავიწყოთ Kubernetes სამაგისტრო, მაგრამ მანამდე თქვენ უნდა გამორთოთ სვოპი, რომ გაუშვათ ”kubeadm init"ბრძანება.
# გაცვლა -ა.
ინიციალიზაცია კუბერნეტეს სამაგისტრო არის სრულიად ავტომატიზირებული პროცესი, რომელსაც აკონტროლებს "kubeadm init"ბრძანება, როგორც ნაჩვენებია.
# kubeadm init.
შემდეგი, დააკოპირეთ შემდეგი ბრძანება და შეინახეთ სადმე, რადგან ჩვენ მოვითხოვეთ ამ ბრძანების შემდგომი გაშვება მუშა კვანძებზე.
kubeadm შეუერთდეს 192.168.0.47:6443-ნათქვამი nu06lu.xrsux0ss0ixtnms5 \-აღმოჩენა-ნიშანი-ca-cert-hash ha256: f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc823147786db8814
რჩევა: ხანდახან ზემოაღნიშნულმა ბრძანებამ შეიძლება გამოიწვიოს შეცდომები მიღებული არგუმენტების შესახებ, ამიტომ შეცდომების თავიდან ასაცილებლად, თქვენ უნდა ამოიღოთ ‘\’
პერსონაჟი და თქვენი საბოლოო ბრძანება ასე გამოიყურება.
# kubeadm შეუერთდება 192.168.0.47:6443-ნათქვამი nu06lu.xrsux0ss0ixtnms5-აღმოჩენის ნიშანი-ca-cert-hash sha256: f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc8231468
ერთხელ კუბერნეტეს წარმატებით ინიციალიზებული, თქვენ უნდა მისცეთ თქვენს მომხმარებელს საშუალება დაიწყოს კლასტერის გამოყენება. ჩვენს სცენარში, ჩვენ ვიყენებთ root მომხმარებელს. თქვენ ასევე შეგიძლიათ დაიწყოთ კლასტერი sudo მომხმარებლის გამოყენებით, როგორც ნაჩვენებია.
Გამოყენება ფესვი, გაუშვით:
# mkdir -p $ HOME/.kube. # cp -i /etc/kubernetes/admin.conf $ HOME/.kube/config. # chown $ (id -u): $ (id -g) $ HOME/.kube/კონფიგურაცია.
გამოიყენოს ა sudo ჩართული მომხმარებელი, გაუშვით:
$ mkdir -p $ HOME/.kube. $ sudo cp -i /etc/kubernetes/admin.conf $ HOME/.kube/კონფიგურაცია. $ sudo chown $ (id -u): $ (id -g) $ HOME/.kube/კონფიგურაცია.
ახლა დაადასტურეთ რომ kubectl ბრძანება გააქტიურებულია
# kubectl მიიღეთ კვანძები.
ამ მომენტში თქვენ იხილავთ სამაგისტრო კვანძის სტატუსს:მზად არ არის’. ეს იმიტომ ხდება, რომ ჩვენ ჯერ კიდევ არ უნდა განვათავსოთ pod ქსელი კლასტერზე.
Pod Network არის კასეტური ქსელის გადაფარვის ქსელი, რომელიც განლაგებულია წინამდებარე კვანძების ქსელის თავზე. ის შექმნილია იმისთვის, რომ უზრუნველყოს კავშირი ბადის გასწვრივ.
ქსელის კლასტერის განთავსება არის უაღრესად მოქნილი პროცესი, რაც დამოკიდებულია თქვენს საჭიროებებზე და არსებობს მრავალი ვარიანტი. ვინაიდან ჩვენ გვსურს შევინარჩუნოთ ინსტალაცია რაც შეიძლება მარტივი, ჩვენ გამოვიყენებთ Weavenet მოდული, რომელიც არ საჭიროებს რაიმე კონფიგურაციას ან დამატებით კოდს და ის გვაძლევს ერთ IP მისამართს თითო პოდზე, რაც ჩვენთვის შესანიშნავია. თუ გსურთ ნახოთ მეტი ვარიანტი, გთხოვთ გადაამოწმოთ აქ.
ეს ბრძანებები მნიშვნელოვანი იქნება pod ქსელის დაყენების მისაღებად.
# ექსპორტი kubever = $ (kubectl ვერსია | base64 | tr -d '\ n') # kubectl მიმართოს -f " https://cloud.weave.works/k8s/net? k8s-version = $ kubever "
ახლა თუ თქვენ შეამოწმებთ თქვენი სამაგისტრო კვანძის სტატუსს, ის უნდა იყოსმზადაა’.
# kubectl მიიღეთ კვანძები.
შემდეგი, ჩვენ დავამატებთ მუშა კვანძები მტევნისკენ.
თითოეული მათგანისთვის შესრულდება შემდეგი ინსტრუქციები მუშა კვანძი კუბერნეტეს კლასტერთან შეერთებისას.
პირველ რიგში დააყენეთ მასპინძლის სახელი მუშა-კვანძი -1 და მუშა-კვანძი -2და შემდეგ დაამატეთ მასპინძელი ჩანაწერები /etc/hosts ფაილი
# hostnamectl set-hostname 'node-1' # კატა <> /etc /მასპინძლები. 192.168.0.47 სამაგისტრო კვანძი. 192.168.0.48 კვანძი -1 მუშა-კვანძი -1. 192.168.0.49 კვანძი -2 მუშა-კვანძი -2. EOF
შემდეგი, პინგის თქვენი სამაგისტრო კვანძი შენიდან მუშა კვანძები იმის დასადასტურებლად, რომ თქვენი განახლებული მასპინძელი ფაილი კარგად მუშაობს პროგრამის გამოყენებით პინგის ბრძანება.
# 192.168.0.47.
შემდეგი, გამორთეთ სელინუქსი და განაახლეთ თქვენი firewall წესები.
# setenforce 0. # sed -i --follow -symlinks's/SELINUX = აღსრულება/SELINUX = გამორთული/g '/etc/sysconfig/selinux. # firewall-cmd-მუდმივი-დამატება-პორტი = 6783/tcp. # firewall-cmd-მუდმივი-დამატება-პორტი = 10250/tcp. # firewall-cmd-მუდმივი-დამატება-პორტი = 10255/tcp. # firewall-cmd-მუდმივი-დამატება-პორტი = 30000-32767/tcp. # firewall-cmd-გადატვირთვა. # echo '1'>/proc/sys/net/bridge/bridge-nf-call-iptables.
დაამატეთ დოკერის საცავი ჯერ DNF კონფიგურაციის მენეჯერის გამოყენებით.
# dnf config-manager-add-repo = https://download.docker.com/linux/centos/docker-ce.repo.
შემდეგი, დაამატეთ containerd.io პაკეტი.
# dnf დააინსტალირეთ https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm.
ამ ორი პაკეტის დაყენებით, დააინსტალირეთ უახლესი ვერსია დოკერი-ცე.
# dnf დააინსტალირეთ docker-ce.
ჩართეთ და დაიწყეთ დოკერის სერვისი.
# systemctl დოკერის ჩართვა. # systemctl დაწყების დოკერი.
თქვენ დაგჭირდებათ დამატება კუბერნეტეს საცავები ხელით, რადგან ისინი წინასწარ არ არის დაინსტალირებული CentOS 8.
# კატა </etc/yum.repos.d/kubernetes.repo. [კუბერნეტეს] სახელი = კუბერნეტესი. ბაზურლი = https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64. ჩართულია = 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. EOF
პაკეტის რეპო ახლა მზად არის, შეგიძლიათ გააგრძელოთ და დააინსტალიროთ კუბეადმი.
# dnf დააინსტალირეთ kubeadm -y
დაიწყეთ და ჩართეთ სერვისი.
# systemctl ჩართეთ kubelet. # systemctl დაიწყეთ kubelet.
ჩვენ ახლა ამის ნიშანს ვითხოვთ kubeadm init გენერირებული, კლასტერის შესაერთებლად. შეგიძლიათ დააკოპიროთ და ჩასვათ თქვენს კვანძი -1 და კვანძი -2 თუ სადმე დააკოპირეთ.
# kubeadm შეუერთდება 192.168.0.47:6443-ნათქვამი nu06lu.xrsux0ss0ixtnms5-აღმოჩენა-ნიშანი-ca-cert-hash sha256: f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc823147476dbc8231476787
როგორც წინა ხაზზეა შემოთავაზებული, დაუბრუნდით თქვენს სამაგისტრო კვანძი და გადაამოწმე თუ არა მუშა კვანძი -1 და მუშა კვანძი -2 შეუერთდნენ კლასტერს შემდეგი ბრძანების გამოყენებით.
# kubectl მიიღეთ კვანძები.
თუ ყველა ნაბიჯი წარმატებით გადის, მაშინ უნდა ნახოთ კვანძი -1 და კვანძი -2 მზა სტატუსზე სამაგისტრო კვანძი. ამ ეტაპზე თქვენ წარმატებით განათავსეთ კუბერნეტესის კასეტა CentOS 8.
რეკომენდებული წაკითხვა: როგორ განვათავსოთ Nginx კუბერნეტეს კლასტერზე
ჩვენს მიერ შექმნილ კლასტერს აქვს ერთიანი სამაგისტრო კვანძიდა, როგორც ასეთი, თუ სამაგისტრო კვანძი ვერ ხერხდება, თქვენმა კლასტერმა შეიძლება დაკარგოს მონაცემები და შეიძლება საჭირო გახდეს ნულიდან ხელახლა შექმნა.
ამ მიზეზით, მე გირჩევთ ძალიან ხელმისაწვდომი დაყენებას.