வேலையில்லா நேரம் இல்லாமல் குபெர்னெட்ஸ் கிளஸ்டரை மேம்படுத்துகிறது

வேலையில்லா நேரம் இல்லாமல் குபெர்னெட்ஸ் கிளஸ்டரை மேம்படுத்துகிறது

உங்கள் Kubernetes கிளஸ்டருக்கான மேம்படுத்தல் செயல்முறை

ஒரு கட்டத்தில், குபெர்னெட்ஸ் கிளஸ்டரைப் பயன்படுத்தும் போது, ​​இயங்கும் முனைகளைப் புதுப்பிக்க வேண்டிய அவசியம் உள்ளது. இதில் தொகுப்பு புதுப்பிப்புகள், கர்னல் புதுப்பிப்புகள் அல்லது புதிய மெய்நிகர் இயந்திர படங்களின் வரிசைப்படுத்தல் ஆகியவை அடங்கும். குபெர்னெட்ஸ் சொற்களில் இது அழைக்கப்படுகிறது "தன்னார்வ இடையூறு".

இந்த இடுகை 4-இடுகை தொடரின் ஒரு பகுதியாகும்:

  1. இந்த இடுகை.
  2. குபெர்னெட்ஸ் கிளஸ்டரில் உள்ள காய்களின் சரியான நிறுத்தம்
  3. ஒரு பாட் நீக்கப்பட்டால் தாமதமாக முடிவடைகிறது
  4. PodDisruptionBudgets ஐப் பயன்படுத்தி Kubernetes கிளஸ்டர் வேலையில்லா நேரத்தை எவ்வாறு தவிர்ப்பது

(தோராயமாக. தொடரில் மீதமுள்ள கட்டுரைகளின் மொழிபெயர்ப்புகளை எதிர்காலத்தில் எதிர்பார்க்கலாம்)

இந்த கட்டுரையில், உங்கள் கிளஸ்டரில் இயங்கும் முனைகளுக்கு பூஜ்ஜிய வேலையில்லா நேரத்தை அடைய குபெர்னெட்டஸ் வழங்கும் அனைத்து கருவிகளையும் விவரிப்போம்.

சிக்கல் வரையறை

முதலில் நாம் ஒரு அப்பாவியான அணுகுமுறையை மேற்கொள்வோம், சிக்கல்களைக் கண்டறிந்து, இந்த அணுகுமுறையின் சாத்தியமான அபாயங்களை மதிப்பிடுவோம், மேலும் சுழற்சி முழுவதும் நாம் சந்திக்கும் ஒவ்வொரு பிரச்சனையையும் தீர்க்க அறிவை உருவாக்குவோம். இதன் விளைவாக, லைஃப்சைக்கிள் ஹூக்குகள், ரெடினெஸ் ப்ரோப்கள் மற்றும் பாட் சீர்குலைவு வரவு செலவுத் திட்டம் ஆகியவற்றைப் பயன்படுத்தும் ஒரு உள்ளமைவு ஆகும்.

எங்கள் பயணத்தைத் தொடங்க, ஒரு உறுதியான உதாரணத்தை எடுத்துக் கொள்வோம். எங்களிடம் இரண்டு முனைகளின் குபெர்னெட்டஸ் கிளஸ்டர் உள்ளது, அதில் ஒரு பயன்பாடு இரண்டு காய்களுடன் இயங்குகிறது என்று வைத்துக்கொள்வோம். Service:

வேலையில்லா நேரம் இல்லாமல் குபெர்னெட்ஸ் கிளஸ்டரை மேம்படுத்துகிறது

எங்கள் இரண்டு குபெர்னெட்ஸ் கிளஸ்டர் முனைகளில் Nginx மற்றும் Service இயங்கும் இரண்டு காய்களுடன் தொடங்குவோம்.

எங்கள் கிளஸ்டரில் உள்ள இரண்டு பணி முனைகளின் கர்னல் பதிப்பைப் புதுப்பிக்க விரும்புகிறோம். இதை எப்படி செய்வது? ஒரு எளிய தீர்வு, புதுப்பிக்கப்பட்ட உள்ளமைவுடன் புதிய முனைகளை துவக்கி, புதியவற்றைத் தொடங்கும் போது பழைய முனைகளை மூடுவது. இது வேலை செய்யும் போது, ​​இந்த அணுகுமுறையில் சில சிக்கல்கள் இருக்கும்:

  • நீங்கள் பழைய முனைகளை அணைக்கும்போது, ​​​​அவற்றில் இயங்கும் காய்களும் அணைக்கப்படும். அழகான பணிநிறுத்தத்திற்கு காய்களை அழிக்க வேண்டும் என்றால் என்ன செய்வது? நீங்கள் பயன்படுத்தும் மெய்நிகராக்க அமைப்பு சுத்தம் செய்யும் செயல்முறை முடிவடையும் வரை காத்திருக்காது.
  • ஒரே நேரத்தில் அனைத்து முனைகளையும் அணைத்தால் என்ன செய்வது? காய்கள் புதிய முனைகளுக்கு நகரும் போது நீங்கள் நல்ல வேலையில்லா நேரத்தைப் பெறுவீர்கள்.

நாம் முனையில் மாற்றங்களைச் செய்யும்போது, ​​எங்களின் பணியாளர் செயல்முறைகள் எதுவும் இயங்காமல் இருப்பதை உறுதிசெய்யும் அதே வேளையில், பழைய முனைகளில் இருந்து காய்களை அழகாக நகர்த்துவதற்கான ஒரு வழி தேவை. அல்லது கிளஸ்டரை முழுமையாக மாற்றும்போது, ​​எடுத்துக்காட்டில் உள்ளதைப் போல (அதாவது, VM படங்களை மாற்றுகிறோம்), இயங்கும் பயன்பாடுகளை பழைய முனைகளிலிருந்து புதியவற்றுக்கு மாற்ற விரும்புகிறோம். இரண்டு சந்தர்ப்பங்களிலும், புதிய காய்களை பழைய முனைகளில் திட்டமிடுவதைத் தடுக்க விரும்புகிறோம், பின்னர் அவற்றிலிருந்து இயங்கும் அனைத்து காய்களையும் வெளியேற்ற வேண்டும். இந்த இலக்குகளை அடைய நாம் கட்டளையைப் பயன்படுத்தலாம் kubectl drain.

ஒரு முனையிலிருந்து அனைத்து காய்களையும் மறுபகிர்வு செய்தல்

வடிகால் செயல்பாடு ஒரு முனையிலிருந்து அனைத்து காய்களையும் மறுபகிர்வு செய்ய உங்களை அனுமதிக்கிறது. வடிகால் செயலாக்கத்தின் போது, ​​கணு திட்டமிட முடியாததாகக் குறிக்கப்படுகிறது (கொடி NoSchedule) இது புதிய காய்கள் தோன்றுவதைத் தடுக்கிறது. பின்னர் வடிகால் முனையிலிருந்து காய்களை வெளியேற்றத் தொடங்குகிறது, தற்போது முனையில் இயங்கும் கொள்கலன்களை மூடி, ஒரு சமிக்ஞையை அனுப்புகிறது. TERM ஒரு தொட்டியில் கொள்கலன்கள்.

என்றாலும் kubectl drain காய்களை வெளியேற்றும் ஒரு பெரிய வேலையைச் செய்யும், வடிகால் செயல்பாட்டைத் தோல்வியடையச் செய்யும் இரண்டு காரணிகள் உள்ளன:

  • உங்கள் விண்ணப்பத்தை சமர்ப்பித்தவுடன் லாவகமாக முடிக்க முடியும் TERM சமிக்ஞை. காய்கள் வெளியேற்றப்படும்போது, ​​குபெர்னெட்டஸ் ஒரு சமிக்ஞையை அனுப்புகிறது TERM கொள்கலன்கள் மற்றும் அவை ஒரு குறிப்பிட்ட நேரத்திற்கு நிறுத்தப்படும் வரை காத்திருக்கிறது, அதன் பிறகு, அவர்கள் நிறுத்தவில்லை என்றால், அது அவர்களை வலுக்கட்டாயமாக நிறுத்துகிறது. எவ்வாறாயினும், உங்கள் கொள்கலன் சிக்னலைச் சரியாக உணரவில்லை என்றால், காய்கள் தற்போது இயங்கிக்கொண்டிருந்தாலும் நீங்கள் அவற்றைத் தவறாக அணைக்கலாம் (எடுத்துக்காட்டாக, தரவுத்தள பரிவர்த்தனை நடந்து கொண்டிருக்கிறது).
  • உங்கள் விண்ணப்பத்தை உள்ளடக்கிய அனைத்து காய்களையும் இழக்கிறீர்கள். புதிய கன்டெய்னர்கள் புதிய முனைகளில் தொடங்கப்படும்போது அது கிடைக்காமல் போகலாம் அல்லது கட்டுப்படுத்திகள் இல்லாமல் உங்கள் காய்கள் பயன்படுத்தப்பட்டால், அவை மறுதொடக்கம் செய்யப்படாமல் போகலாம்.

வேலையில்லா நேரத்தைத் தவிர்த்தல்

ஒரு முனையில் வடிகால் இயக்கம் போன்ற தன்னார்வ இடையூறுகளிலிருந்து வேலையில்லா நேரத்தைக் குறைக்க, குபெர்னெட்டஸ் பின்வரும் தோல்வி கையாளுதல் விருப்பங்களை வழங்குகிறது:

மீதமுள்ள தொடரில், நெற்று இடம்பெயர்வின் தாக்கத்தைத் தணிக்க இந்த குபெர்னெட்ஸ் அம்சங்களைப் பயன்படுத்துவோம். முக்கிய யோசனையைப் பின்பற்றுவதை எளிதாக்க, பின்வரும் ஆதார உள்ளமைவுடன் மேலே உள்ள எங்கள் உதாரணத்தைப் பயன்படுத்துவோம்:

---
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 காய்களை அணுக பயன்படுகிறது.

சுழற்சி முழுவதும், இந்த உள்ளமைவை மீண்டும் மீண்டும் விரிவுபடுத்துவோம், இதனால் இறுதியில் வேலையில்லா நேரத்தை குறைக்க குபெர்னெட்டஸ் வழங்கும் அனைத்து திறன்களும் அடங்கும்.

AWS மற்றும் அதற்கு அப்பால் பூஜ்ஜிய வேலையில்லா நேரத்திற்கான Kubernetes கிளஸ்டர் புதுப்பிப்புகளின் முழுமையாக செயல்படுத்தப்பட்ட மற்றும் சோதிக்கப்பட்ட பதிப்பிற்கு, பார்வையிடவும் Gruntwork.io.

எங்கள் வலைப்பதிவில் உள்ள மற்ற கட்டுரைகளையும் படிக்கவும்:

ஆதாரம்: www.habr.com

கருத்தைச் சேர்