რა არის Kubernetes?



Kubernetes არის ღია პლატფორმა კონტეინერების დატვირთვისა და მასთან დაკავშირებული სერვისების მართვისთვის. მისი ძირითადი მახასიათებლებია - ჯვარედინი პლატფორმირება, გაფართოება, დეკლარაციული კონფიგურაციისა და ავტომატიზაციის წარმატებული გამოყენება. მას აქვს უზარმაზარი, სწრაფად პროგრესირებადი ეკოსისტემა.

სახელი Kubernetes ბერძნულიდან მოდის და ნიშნავს ბელადს, პილოტს. Google-მა Kubernetes პროექტის კოდის წვდომა 2014 წელს გახსნა. Kubernetes აგებულია თხუთმეტი წლის გამოცდილების საფუძველზე, რომელიც Google - მა მოიპოვა ფართომასშტაბიანი დატვირთვის მუშაობით, საუკეთესო კლასის იდეებთან და პრაქტიკებთან ერთად, რაც ახალა საზოგადოებას თამამად შეუძლია შესთავაზოს.


ვიხსენებთ რა ძირეულ მიზეზებს, მოდით დავუბრუნდეთ თავდაპირველ დროს და გავარკვიოთ თუ რატომ გახდა Kubernetes ასეთი სასარგებლო.

ტრადიციული განლაგების ერა: დასაწყისში, ორგანიზაციები აპლიკაციებს პროგრამებს ფიზიკური სერვერებზე ათავსებდნენ. ვინაიდან ამ გზით რესურსების გამოყენების ლიმიტის დაწესება შეუძლებელი იყო, ამან გამოიწვია ფიზიკურ სერვერებზე რესურსების გამოყოფისა და განაწილების პრობლემა.

მაგალითად: თუ ბევრი პროგრამა ჩაშვებული იყო ფიზიკურ სერვერზე, იყო შემთხვევები, როდესაც ერთი აპლიკაცია იღებდა უფრო მეტი რესურსს თავისთვის, რის შედეგადაც სხვა პროგრამები უბრალოდ ვერ უმკლავდებოდნენ თავიანთ ვალდებულებებს. გამოსავალი იყოს თითოეული აპლიკაციის გაშვება ცალკეულ ფიზიკურ სერვერზე. მაგრამ ეს მიდგომა კარგად არ მასშტაბირდება, რადგან რესურსები სრულად არიყო გამოყენებული; გარდა ამისა, ჯდებოდა და ჯდება ძვირი, რადგან ორგანიზაციებს უწევდათ ბევრი ფიზიკური სერვერის ერთდროულად გამოყენება.


ვირტუალური განლაგების ერა : როგორც გამოსავალი დანერგილ იქნა, ვირტუალიზაცია. ეს საშუალებას იძლევა ჩაუშვათ მრავალი ვირტუალური მანქანა (Virtual Machines или VMs) ერთ ფიზიკურ CPU სერვერზე. ვირტუალიზაციამ საშუალება მისცა პროგრამებს და ალიკაციებს ყოფილიყო იზოლირებული და უფრო უსაფრთხოდ ვირტუალური მანქანების ფარგლებში. რადგან აპლიკაციის ინფორმაცია განთავსებული ერთ VM არ იყო ხელმისაწვდომი მეორე VM.

ვირტუალიზაცია უზრუნველყოფს ფიზიკურ სერვერზე რესურსების უკეთ გამოყენებას და უკეთეს მასშტაბურობას, რადგან ეს აადვილებს პროგრამების დამატებას და განახლებას, ამცირებს ფიზიკური აღჭურვილობის ღირებულებას. ვირტუალიზაციის საშუალებით, რესურსები შეიძლება წარმოდგენილი იყოს როგორც ერთჯერადი ვირტუალური მანქანები.

თითოეული VM არის სრულფასოვანი მანქანა ყველა კომპონენტით, მათ შორის საკუთარი ოპერაციული სისტემა, რომელიც მუშაობს ვირტუალიზებული აპარატურის თავზე.



კონტეინერების განლაგების ეპოქა:

კონტეინერები VM-ის მსგავსია, მაგრამ აქვთ იზოლაციის გამარტივებულ ვარიანტი და იყენებენ საერთო ოპერაციულ სისტემას ყველა პროგრამისთვის. სწორედ ამიტომ, კონტეინერები ითვლება 'მსუბუქებად' "ვირტუალური მანქანებთან შედარებით. VM-ის მსგავსად, კონტეინერებს აქვთ საკუთარი ფაილების სისტემა, CPU, მეხსიერება, პროცესები უფრო ფართო სივრცე და ა.შ. იქიდან გამომდინარე, რომ კონტეინერები გათავისუფლებულები არიან დაქვემდებარებული ინფრასტრუქტურისგან, მათი გადაადგილება ღრუბლოვან პროვაიდერებს ან ოპერაციული სისტემის დისტრიბუცებს შორის ბევრად მარტივია.

კონტეინერები პოპულარული გახდა, რადგან მათ გააჩნიათ დამატებითი უპირატესობები, როგორიცაა:

- აპლიკაციების შექმნა და განთავსება Agile მეთოდოლოგიის გამოყენებით: კონტეინერის სურათების გამარტივებული და უფრო ეფექტური შექმნა ვირტუალური მანქანების სურათების გამოყენებასთან შედარებით.

- უწყვეტი განვითარება, ინტეგრაცია და განლაგება: კონტეინერის სურათების საიმედო და უწყვეტი შეგროვების უზრუნველყოფა, მათი სწრაფი განლაგება და მარტივი უკუქცევა (უცვლელი სურათების გამო).

- განვითარებისა და ექსპლუატაციის გუნდების პასუხისმგებლობის განაწილება: შეკრების/გათავისუფლების დროს განაცხადის კონტეინერების სურათების შექმნა განლაგების დროისგან განსხვავებით და, შედეგად, ინფრასტრუქტურის განაცხადების გათავისუფლება.

- მონიტორინგის არა მხოლოდ ინფორმაცია და metrics ოპერაციული სისტემის დონეზე, არამედ სახელმწიფო განაცხადის და სხვა სიგნალები.

- გარემოს ერთგვაროვნება განვითარების, ტესტირებისა და სამუშაო დატვირთვისთვის: ის იგივე გზით მუშაობს სამუშაო კომპიუტერზე და ღრუბლოვან პროვაიდერზე.

- OS და cloud cross-platform: მუშაობს Ubuntu, RHEL, CoreOS, საკუთარ მონაცემთა ცენტრში, Google Kubernetes Engine და ზოგადად ყველგან.

- აპლიკაციაზე ორიენტირებული მენეჯმენტი: აბსტრაქციის დონის გაზრდა ოპერაციული სისტემის ვირტუალურ აპარატში გაშვებიდან ოპერაციულ სისტემაში პროგრამის გაშვებამდე ლოგიკური რესურსების გამოყენებით.

- თავისუფლად დაწყვილებული, განაწილებული, ელასტიური, გათავისუფლებული მიკროსერვისები: პროგრამები იყოფა პატარა, დამოუკიდებელ ნაწილებად დინამიური განლაგებისა და მართვისთვის, განსხვავებით მონოლითური არქიტექტურისგან, რომელიც მუშაობს ერთ დიდ ერთგულ მანქანაზე.

- რესურსების იზოლაცია: სავარაუდო პროგრამული დანართების შესრულება.

- რესურსების გამოყენება: მაღალი ეფექტურობა და სიმჭიდროვე


რაში გამოიყენებთ Kubernetes და რა შესაძლებლობები გააჩნია მას.

კონტეინერები - ეს შესანიშნავი გზაა თქვენი პროგრამების სწორად შესაფუთად და გასაშვებად. პროდუქტიულ გარემოში, თქვენ უნდა მართოთ და დარწმუნდეთ, რომ ისინი არ ჩერდებიან. ხოლო ფუნქციონირების შეწყვეტის შემთხვევაში, მეორემ უნდა ჩაანაცვლოს ის.

და რათქმაუნდა ეს პროცესი გამარტივდება, თუ სისტემამ თავად მოახერხებს ამას!

სწორედ აქ არის Kubernetes _ის 'სამაშველო' ფუნქცია!

! Kubernetes უზრუნველყოფს განაწილებული სისტემების ელასტიური გაშვების კარკასს. ეს ეხება თქვენი აპლიკაციის სკალირებას და საავარიო აღდგენას, ასევე განლაგების შაბლონებს და ა.შ.

მაგალითად, Kubernetes აადვილებს თქვენს სისტემაში canary სტრატეგიის საფუძველზე განლაგების შექმნას/გაშვებას

  • სერვისების აღმოჩენა და დატვირთვის დაბალანსება

Kubernetes - ს შეუძლია უზრუნველყოს კონტეინერზე წვდომა DNS სახელის ან საკუთარი IP მისამართის გამოყენებით. თუ კონტეინერი განიცდის ქსელის დიდ დატვირთვას, Kubernetes-ს შეუძლია დააბალანსოს და გაანაწილოს იგი ისე, რომ მომსახურების ხარისხი სტაბილური დარჩეს.

  • ინფორმაციის შენახვის ორკესტრირება

Kubernetes საშუალებას გაძლევთ ავტომატურად დაამონტაჟოთ თქვენთვის სასურველი ინფორმაციის შენახვის სისტემები: ადგილობრივი მეხსიერება, ღრუბლოვანი პროვაიდერების გადაწყვეტილებები და ა.შ.

  • ავტომატური განლაგება და RollBack

Kybernetes-ის დახმარებით შეგიძლიათ აღწეროთ განლაგებული კონტეინერების სასურველი მდგომარეობა და ის მონიტორინგს გაუწევს ამ სახელმწიფოს განხორციელებას რეგულირებადი გზით. მაგალითად, Kubernetes-ში შეგიძლიათ ავტომატიზიროთ განლაგების ახალი კონტეინერების შექმნის პროცესები, არსებული კონტეინერების წაშლა და მათი რესურსების გადატანა ახლად შექმნილ კონტეინერებში.

  • დავალების ავტომატური განთავსება

თქვენ სთავაზობთ Kubernetes კლასტერს აწარმოებს კონტეინერიზებული ამოცანების გასაშვებად და და უკონკრეტებთ, თუ რამდენად CPU და მეხსიერების (RAM) რესურსია საჭიროა თითოეული კონტეინერის მუშაობისთვის. Kubernetes ანაწილებს კონტეინერების კლასტერების კვანძების მიხედვით მაქსიმალურად ეფექტურად რესურსების გამოყენების მიზნით.

  • თვითაღდგენა/განკურნება

Kubernetes ხელახლა უშვებს წარუმატებელ კონტეინერებს; ცვლის კონტეინერებს; აჩერებს კონტეინერებს, რომლებიც არ პასუხობენ მომხმარებლის მიერ განსაზღვრული სტატუსის შემოწმებას და არ აცნობებენ მათ კლიენტებს, სანამ ეს კონტეინერები არ იქნებიან ოპერაციული და ფუნქციური მზადყოფნის მდგომარეობაში.

  • კონფიდენციალური ინფომაციისა და კონფიგურაციის მართვა

Kubernetes საშუალებას გაძლევთ შეინახოთ და მართოთ მგრძნობიარე ინფორმაცია, როგორიცაა პაროლები, OAuth სიმბოლოები და SSH გასაღებები. თქვენ შეგიძლიათ განათავსოთ და განაახლოთ საიდუმლოებები და კონფიგურაცია თქვენი კონტეინერების სურათების გავლის გარეშე, მონაცემთა დასტი კონფიგურაციაში საიდუმლოების გამოვლენის გარეშე.