අක්‍රිය කාලයකින් තොරව Kubernetes Cluster යාවත්කාලීන කිරීම

අක්‍රිය කාලයකින් තොරව Kubernetes Cluster යාවත්කාලීන කිරීම

ඔබගේ Kubernetes පොකුර සඳහා ක්‍රියාවලිය උත්ශ්‍රේණි කරන්න

යම් අවස්ථාවක, Kubernetes පොකුරක් භාවිතා කරන විට, ධාවන නෝඩ් යාවත්කාලීන කිරීමට අවශ්ය වේ. මෙයට පැකේජ යාවත්කාලීන කිරීම්, කර්නල් යාවත්කාලීන කිරීම් හෝ නව අතථ්‍ය යන්ත්‍ර රූප යෙදවීම ඇතුළත් විය හැක. Kubernetes පාරිභාෂිතයේ මෙය හඳුන්වනු ලැබේ "ස්වේච්ඡා බාධා".

මෙම පළ කිරීම පළ කිරීම් 4ක මාලාවක කොටසකි:

  1. මෙම තනතුර.
  2. Kubernetes පොකුරක් තුළ කරල් නිවැරදිව වසා දැමීම
  3. පොඩ් එකක් මකා දැමූ විට එය සම්පූර්ණ කිරීම ප්‍රමාද වේ
  4. PodDisruptionBudgets භාවිතයෙන් Kubernetes Cluster Downtime වලක්වා ගන්නේ කෙසේද?

(ආසන්න වශයෙන්. ලිපි මාලාවේ ඉතිරි ලිපිවල පරිවර්තන නුදුරු අනාගතයේදී බලාපොරොත්තු වන්න)

මෙම ලිපියෙන්, ඔබගේ පොකුරේ ක්‍රියාත්මක වන නෝඩ් සඳහා ශුන්‍ය අක්‍රිය කාලය ලබා ගැනීම සඳහා Kubernetes සපයන සියලුම මෙවලම් අපි විස්තර කරන්නෙමු.

ගැටලුව නිර්වචනය කිරීම

අපි මුලින්ම බොළඳ ප්‍රවේශයක් ගන්නෙමු, ගැටළු හඳුනාගෙන මෙම ප්‍රවේශයේ ඇති විය හැකි අවදානම් තක්සේරු කරන්නෙමු, සහ චක්‍රය පුරාවට අපට හමුවන එක් එක් ගැටළු විසඳීමට දැනුම ගොඩනඟන්නෙමු. ප්‍රතිඵලය වන්නේ අපගේ ශුන්‍ය අක්‍රිය කාලය සාක්ෂාත් කර ගැනීම සඳහා ජීවන චක්‍ර කොකු, සූදානම පිරික්සුම් සහ Pod කඩාකප්පල් අයවැය භාවිතා කරන වින්‍යාසයකි.

අපගේ ගමන ආරම්භ කිරීම සඳහා, අපි නිශ්චිත උදාහරණයක් ගනිමු. අපි කියමු, අපට නෝඩ් දෙකක Kubernetes පොකුරක් ඇති අතර, එහි පිටුපස ඇති කරල් දෙකක් සහිත යෙදුමක් ක්‍රියාත්මක වේ. Service:

අක්‍රිය කාලයකින් තොරව Kubernetes Cluster යාවත්කාලීන කිරීම

අපගේ Kubernetes පොකුරු නෝඩ් දෙකේ ක්‍රියාත්මක වන Nginx සහ Service සහිත කරල් දෙකකින් ආරම්භ කරමු.

අපගේ පොකුරේ සේවක නෝඩ් දෙකක කර්නල් අනුවාදය යාවත්කාලීන කිරීමට අපට අවශ්‍යයි. අපි මෙය කරන්නේ කෙසේද? සරල විසඳුමක් වනුයේ යාවත්කාලීන වින්‍යාසය සමඟ නව නෝඩ් ආරම්භ කිරීම සහ නව ඒවා ආරම්භ කිරීමේදී පැරණි නෝඩ් වසා දැමීමයි. මෙය ක්‍රියාත්මක වන අතර, මෙම ප්‍රවේශය සමඟ ගැටලු කිහිපයක් ඇති වනු ඇත:

  • ඔබ පැරණි නෝඩ් ක්‍රියා විරහිත කළ විට, ඒවා මත ධාවනය වන කරල් ද නිවා දමයි. අලංකාර වසා දැමීම සඳහා කරල් ඉවත් කිරීමට අවශ්‍ය නම් කුමක් කළ යුතුද? ඔබ භාවිතා කරන අථත්‍යකරණ පද්ධතිය පිරිසිදු කිරීමේ ක්‍රියාවලිය සම්පූර්ණ වන තෙක් බලා නොසිටිනු ඇත.
  • ඔබ සියලු නෝඩ් එකවර අක්‍රිය කළහොත් කුමක් කළ යුතුද? කරල් නව නෝඩ් වෙත ගමන් කරන අතරතුර ඔබට හොඳ අක්‍රිය කාලයක් ලැබෙනු ඇත.

අපි නෝඩයට වෙනස්කම් කරන අතරතුර අපගේ සේවක ක්‍රියාවලි කිසිවක් ක්‍රියාත්මක නොවන බව සහතික කර ගනිමින් පැරණි නෝඩ් වලින් කරල් සංක්‍රමණය කිරීමට අපට ක්‍රමයක් අවශ්‍ය වේ. එසේත් නැතිනම් අපි පොකුර සම්පූර්ණයෙන් ප්‍රතිස්ථාපනය කරන විට, උදාහරණයක් ලෙස (එනම්, අපි VM පින්තූර ප්‍රතිස්ථාපනය කරමු), අපට ධාවනය වන යෙදුම් පැරණි නෝඩ් වලින් නව ඒවාට මාරු කිරීමට අවශ්‍ය වේ. අවස්ථා දෙකේදීම, අපට අවශ්‍ය වන්නේ නව කරල් පැරණි නෝඩ් මත කාලසටහන්ගත වීම වැළැක්වීමට සහ පසුව ඒවායින් ධාවනය වන සියලුම කරල් ඉවත් කිරීමටයි. මෙම අරමුණු සාක්ෂාත් කර ගැනීම සඳහා අපට විධානය භාවිතා කළ හැකිය kubectl drain.

නෝඩයකින් සියලුම කරල් නැවත බෙදා හැරීම

කාණු මෙහෙයුම මඟින් නෝඩයකින් සියලුම කරල් නැවත බෙදා හැරීමට ඔබට ඉඩ සලසයි. කාණු ක්‍රියාත්මක කිරීමේදී, නෝඩය සැලසුම් කළ නොහැකි ලෙස සලකුණු කර ඇත (කොඩිය NoSchedule) මෙය නව කරල් එහි දිස්වීම වළක්වයි. එවිට කාණු නෝඩයෙන් කරල් ඉවත් කිරීමට පටන් ගනී, සංඥාවක් යැවීමෙන් නෝඩය මත දැනට ක්‍රියාත්මක වන බහාලුම් වසා දමයි. TERM කරල් තුළ බහාලුම්.

වුවත් kubectl drain කරල් ඉවත් කිරීමේ විශාල කාර්යයක් කරනු ඇත, කාණු මෙහෙයුම අසාර්ථක වීමට හේතු විය හැකි තවත් සාධක දෙකක් තිබේ:

  • ඔබගේ අයදුම්පත ඉදිරිපත් කිරීමෙන් පසු අලංකාර ලෙස අවසන් කිරීමට හැකි විය යුතුය TERM සංඥාව. කරල් ඉවත් කරන විට, Kubernetes සංඥාවක් යවයි TERM බහාලුම් සහ ඒවා නිශ්චිත කාලයක් සඳහා නතර වන තෙක් බලා සිටින අතර, පසුව, ඔවුන් නතර නොකළේ නම්, එය බලහත්කාරයෙන් ඒවා අවසන් කරයි. ඕනෑම අවස්ථාවක, ඔබේ කන්ටේනරය සංඥාව නිවැරදිව වටහා නොගන්නේ නම්, ඒවා දැනට ක්‍රියාත්මක වන්නේ නම්, ඔබට තවමත් කරල් වැරදි ලෙස නිවා දැමිය හැක (උදාහරණයක් ලෙස, දත්ත සමුදා ගනුදෙනුවක් සිදු වෙමින් පවතී).
  • ඔබගේ යෙදුම අඩංගු සියලුම කරල් ඔබට අහිමි වේ. නව බහාලුම් නව නෝඩ් මත දියත් කරන විට එය ලබා ගත නොහැකි විය හැකිය, නැතහොත් ඔබේ කරල් පාලක නොමැතිව යොදවා ඇත්නම්, ඒවා කිසිසේත් නැවත ආරම්භ නොවිය හැකිය.

අක්රිය වීම වැළැක්වීම

නෝඩයක කාණු මෙහෙයුමක් වැනි ස්වේච්ඡා බාධාවන්ගෙන් අක්‍රිය කාලය අවම කිරීම සඳහා, Kubernetes පහත අසාර්ථක හැසිරවීමේ විකල්ප සපයයි:

ඉතිරි මාලාවේ, අපි සංක්‍රමණ කරල් වල බලපෑම අවම කිරීමට මෙම Kubernetes විශේෂාංග භාවිතා කරන්නෙමු. ප්‍රධාන අදහස අනුගමනය කිරීම පහසු කිරීම සඳහා, අපි පහත සම්පත් වින්‍යාසය සමඟ අපගේ ඉහත උදාහරණය භාවිතා කරමු:

---
apiVersion: apps/v1
kind: Deployment
metadata:
 name: nginx-deployment
 labels:
   app: nginx
spec:
 replicas: 2
 selector:
   matchLabels:
     app: nginx
 template:
   metadata:
     labels:
       app: nginx
   spec:
     containers:
     - name: nginx
       image: nginx:1.15
       ports:
       - containerPort: 80
---
kind: Service
apiVersion: v1
metadata:
 name: nginx-service
spec:
 selector:
   app: nginx
 ports:
 - protocol: TCP
   targetPort: 80
   port: 80

මෙම වින්‍යාසය අවම උදාහරණයකි Deployment, එය පොකුරේ nginx කරල් කළමනාකරණය කරයි. ඊට අමතරව, වින්යාසය සම්පත් විස්තර කරයි Service, පොකුරක් තුළ nginx කරල් වෙත ප්‍රවේශ වීමට භාවිතා කළ හැක.

චක්‍රය පුරාවට, අපි මෙම වින්‍යාසය පුනරාවර්තන ලෙස පුළුල් කරන්නෙමු, එමඟින් අවසානයේ අක්‍රිය කාලය අඩු කිරීමට Kubernetes සපයන සියලු හැකියාවන් ඇතුළත් වේ.

AWS සහ ඉන් ඔබ්බට ශුන්‍ය අක්‍රීය කාලය සඳහා Kubernetes පොකුරු යාවත්කාලීනවල සම්පුර්ණයෙන්ම ක්‍රියාත්මක කර පරීක්ෂා කරන ලද අනුවාදයක් සඳහා, පිවිසෙන්න Gruntwork.io.

අපගේ බ්ලොග් අඩවියේ වෙනත් ලිපිද කියවන්න:

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න