ഒരു കുബർനെറ്റസ് ക്ലസ്റ്ററിൽ Nginx എങ്ങനെ വിന്യസിക്കാം


ഞങ്ങളുടെ അവസാന ലേഖനത്തിൽ, ഒരു കുബർനെറ്റസ് ക്ലസ്റ്റർ എങ്ങനെ സജ്ജീകരിക്കാമെന്നും പ്രവർത്തിപ്പിക്കാമെന്നും ഞങ്ങൾ ചർച്ച ചെയ്തു, ഞങ്ങളുടെ ക്ലസ്റ്ററിൽ NGINX സേവനം എങ്ങനെ വിന്യസിക്കാമെന്ന് ചർച്ച ചെയ്യാം.

ഒരു പബ്ലിക് ക്ലൗഡ് പ്രൊവൈഡർ ഹോസ്റ്റുചെയ്ത ഒരു വെർച്വൽ മെഷീനിൽ ഞാൻ ഈ വിന്യാസം പ്രവർത്തിപ്പിക്കും. നിരവധി പൊതു ക്ലൗഡ് സേവനങ്ങൾ ഉള്ളതുപോലെ, പലരും അവരുടെ വെർച്വൽ മെഷീനുകൾക്കായി പൊതുവും സ്വകാര്യവുമായ IP സ്കീം പരിപാലിക്കുന്നു.

Master Node - Public IP: 104.197.170.99 and Private IP: 10.128.15.195
Worker Node 1 - Public IP: 34.67.149.37 and Private IP: 10.128.15.196
Worker Node 2 - Public IP: 35.232.161.178 and Private IP: 10.128.15.197

ഒരു കുബർനെറ്റസ് ക്ലസ്റ്ററിൽ NGINX വിന്യസിക്കുന്നു

ഞങ്ങൾ ഈ വിന്യാസം മാസ്റ്റർ-നോഡിൽ നിന്ന് പ്രവർത്തിപ്പിക്കും.

ക്ലസ്റ്ററിന്റെ നില പരിശോധിച്ചുകൊണ്ട് നമുക്ക് ആരംഭിക്കാം. നിങ്ങളുടെ എല്ലാ നോഡുകളും റെഡി സ്റ്റേറ്റിലായിരിക്കണം.

# kubectl get nodes

NGINX ഇമേജ് ഉപയോഗിച്ച് ഞങ്ങൾ NGINX-ന്റെ ഒരു വിന്യാസം സൃഷ്ടിക്കുന്നു.

# kubectl create deployment nginx --image=nginx

നിങ്ങളുടെ വിന്യാസത്തിന്റെ അവസ്ഥ ഇപ്പോൾ നിങ്ങൾക്ക് കാണാൻ കഴിയും.

# kubectl get deployments

നിങ്ങളുടെ വിന്യാസത്തെക്കുറിച്ചുള്ള കൂടുതൽ വിശദാംശങ്ങൾ കാണാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, നിങ്ങൾക്ക് വിവരണ കമാൻഡ് പ്രവർത്തിപ്പിക്കാം. ഉദാഹരണത്തിന്, വിന്യാസത്തിന്റെ എത്ര പകർപ്പുകൾ പ്രവർത്തിക്കുന്നുവെന്ന് നിർണ്ണയിക്കാൻ കഴിയും. ഞങ്ങളുടെ കാര്യത്തിൽ, 1 റണ്ണിംഗ് (അതായത് 1/1 പകർപ്പുകൾ) ഒരു പകർപ്പ് കാണാൻ ഞങ്ങൾ പ്രതീക്ഷിക്കുന്നു.

# kubectl describe deployment nginx

ഇപ്പോൾ നിങ്ങളുടെ Nginx വിന്യാസം സജീവമാണ്, ഇന്റർനെറ്റിൽ എത്തിച്ചേരാവുന്ന ഒരു പൊതു ഐപിയിലേക്ക് NGINX സേവനത്തെ തുറന്നുകാട്ടാൻ നിങ്ങൾ ആഗ്രഹിച്ചേക്കാം.

Kubernetes സേവന തരങ്ങൾ എന്ന സവിശേഷതയെ അടിസ്ഥാനമാക്കി നിങ്ങളുടെ സേവനം വെളിപ്പെടുത്തുമ്പോൾ Kubernetes നിരവധി ഓപ്ഷനുകൾ വാഗ്ദാനം ചെയ്യുന്നു, അവ ഇവയാണ്:

  1. ClusterIP - ഈ സേവന-തരം സാധാരണയായി ഒരു ആന്തരിക IP-യിൽ സേവനത്തെ തുറന്നുകാട്ടുന്നു, ക്ലസ്റ്ററിനുള്ളിൽ മാത്രമേ എത്തിച്ചേരാനാകൂ, ഒരുപക്ഷേ ക്ലസ്റ്റർ-നോഡുകൾക്കുള്ളിൽ മാത്രം.
  2. NodePort - ക്ലസ്റ്ററിലെ എല്ലാ നോഡിലും ഒരു പ്രത്യേക പോർട്ടിൽ (NodePort എന്ന് വിളിക്കപ്പെടുന്ന) നിങ്ങളുടെ ക്ലസ്റ്ററിന് പുറത്ത് നിങ്ങളുടെ സേവനം ആക്uസസ് ചെയ്യാനുള്ള ഏറ്റവും അടിസ്ഥാന ഓപ്ഷനാണിത്. ഞങ്ങൾ ഈ ഓപ്ഷൻ ഉടൻ വിശദീകരിക്കും.
  3. LoadBalancer - നിങ്ങളുടെ സേവനത്തിലേക്ക് ആക്uസസ് അനുവദിക്കുന്നതിന് വിവിധ ദാതാക്കൾ വാഗ്ദാനം ചെയ്യുന്ന ബാഹ്യ ലോഡ്-ബാലൻസിങ് സേവനങ്ങളിൽ ഈ ഓപ്ഷൻ പ്രയോജനപ്പെടുത്തുന്നു. നിങ്ങളുടെ സേവനത്തിനായുള്ള ഉയർന്ന ലഭ്യതയെക്കുറിച്ച് ചിന്തിക്കുമ്പോൾ ഇത് കൂടുതൽ വിശ്വസനീയമായ ഓപ്ഷനാണ്, കൂടാതെ ഡിഫോൾട്ട് ആക്uസസിനപ്പുറം കൂടുതൽ ഫീച്ചറുമുണ്ട്.
  4. ExternalName - ഈ സേവനം ക്ലസ്റ്ററിന് പുറത്തുള്ള സേവനങ്ങളിലേക്ക് ട്രാഫിക് റീഡയറക്ട് ചെയ്യുന്നു. നിങ്ങളുടെ ക്ലസ്റ്ററിന് പുറത്ത് ഹോസ്റ്റ് ചെയ്യാവുന്ന ഒരു DNS നാമത്തിലേക്ക് സേവനം ഇങ്ങനെ മാപ്പ് ചെയ്യപ്പെടുന്നു. ഇത് പ്രോക്സിയിംഗ് ഉപയോഗിക്കുന്നില്ല എന്നത് ശ്രദ്ധിക്കേണ്ടതാണ്.

സ്ഥിരസ്ഥിതി സേവന-തരം ClusterIP ആണ്.

ഞങ്ങളുടെ സാഹചര്യത്തിൽ, ഞങ്ങൾ NodePort സേവന-തരം ഉപയോഗിക്കാൻ ആഗ്രഹിക്കുന്നു, കാരണം ഞങ്ങൾക്ക് പൊതുവായതും സ്വകാര്യവുമായ ഒരു IP വിലാസം ഉള്ളതിനാൽ ഞങ്ങൾക്ക് ഇപ്പോൾ ഒരു ബാഹ്യ ലോഡ് ബാലൻസർ ആവശ്യമില്ല. ഈ സേവന തരത്തിൽ, 30000+ ശ്രേണിയിലുള്ള പോർട്ടുകളിൽ Kubernetes ഈ സേവനം നൽകും.

# kubectl create service nodeport nginx --tcp=80:80

സേവനത്തിന്റെയും പോർട്ടുകളുടെയും സംഗ്രഹം കാണുന്നതിന് get svc കമാൻഡ് പ്രവർത്തിപ്പിക്കുക.

# kubectl get svc

ഇപ്പോൾ നിങ്ങൾക്ക് curl കമാൻഡ് ഉപയോഗിച്ച് Nginx പേജ് എല്ലാ നോഡുകളിലും എത്തിച്ചേരാനാകുമെന്ന് പരിശോധിക്കാൻ കഴിയും.

# curl master-node:30386
# curl node-1:30386
# curl node-2:30386

നിങ്ങൾക്ക് കാണാനാകുന്നതുപോലെ, \NGINX-ലേക്ക് സ്വാഗതം! പേജിൽ എത്തിച്ചേരാം.

നിങ്ങൾ ശ്രദ്ധിച്ചിരിക്കാം, എനിക്ക് സജീവമായ പബ്ലിക് ഐപി രജിസ്uറ്റർ ചെയ്uതിട്ടില്ല, അല്ലെങ്കിൽ എക്uസ്uറ്റേണൽ ഐപി രജിസ്uറ്റർ ചെയ്uതിട്ടില്ലെന്ന് കുബർനെറ്റസ് റിപ്പോർട്ട് ചെയ്യുന്നു.

# kubectl get svc

ഇത് ശരിയാണോ എന്ന് പരിശോധിക്കാം, IP കമാൻഡ് ഉപയോഗിച്ച് എന്റെ ഇന്റർഫേസുകളിൽ എനിക്ക് ബാഹ്യ IP ഘടിപ്പിച്ചിട്ടില്ല.

# ip a

നിങ്ങൾക്ക് കാണാനാകുന്നതുപോലെ പൊതു ഐപി ഇല്ല.

നേരത്തെ സൂചിപ്പിച്ചതുപോലെ, ഒരു പബ്ലിക് ക്ലൗഡ് പ്രൊവൈഡർ വാഗ്ദാനം ചെയ്യുന്ന ഒരു വെർച്വൽ മെഷീനിലാണ് ഞാൻ നിലവിൽ ഈ വിന്യാസം പ്രവർത്തിപ്പിക്കുന്നത്. അതിനാൽ, ഒരു പൊതു ഐപി നൽകിയിട്ടുള്ള പ്രത്യേക ഇന്റർഫേസ് ഇല്ലെങ്കിലും, വിഎം ദാതാവ് ഒരു എഫെമെറൽ ബാഹ്യ ഐപി വിലാസം നൽകിയിട്ടുണ്ട്.

വെർച്വൽ ഇൻസ്uറ്റൻസ് നിർത്തുന്നത് വരെ VM-ൽ അറ്റാച്ച് ചെയ്uതിരിക്കുന്ന ഒരു താൽക്കാലിക ഐപി വിലാസമാണ് എഫെമെറൽ എക്uസ്uറ്റേണൽ ഐപി വിലാസം. വെർച്വൽ ഇൻസ്റ്റൻസ് പുനരാരംഭിക്കുമ്പോൾ, ഒരു പുതിയ ബാഹ്യ ഐ.പി. അടിസ്ഥാനപരമായി പറഞ്ഞാൽ, സേവന ദാതാക്കൾക്ക് നിഷ്uക്രിയമായ പൊതു ഐപികൾ പ്രയോജനപ്പെടുത്തുന്നതിനുള്ള ഒരു ലളിതമായ മാർഗമാണിത്.

നിങ്ങളുടെ പബ്ലിക് ഐപി സ്റ്റാറ്റിക് അല്ല എന്നതല്ലാതെ ഇവിടെയുള്ള വെല്ലുവിളി, എഫെമെറൽ പബ്ലിക് ഐപി എന്നത് സ്വകാര്യ ഐപിയുടെ ഒരു വിപുലീകരണം (അല്ലെങ്കിൽ പ്രോക്സി) ആണ് എന്നതാണ്, അതിനാൽ, ഈ സേവനം പോർട്ട് 30386-ൽ മാത്രമേ ആക്സസ് ചെയ്യപ്പെടുകയുള്ളൂ. അതായത് 104.197.170.99:30386 എന്ന URL-ൽ സേവനം ആക്സസ് ചെയ്യപ്പെടും, നിങ്ങളുടെ ബ്രൗസർ പരിശോധിച്ചാൽ നിങ്ങൾക്ക് സ്വാഗത പേജ് കാണാൻ കഴിയും.

അതോടെ, ഞങ്ങളുടെ 3-നോഡ് കുബർനെറ്റസ് ക്ലസ്റ്ററിൽ ഞങ്ങൾ NGINX വിജയകരമായി വിന്യസിച്ചു.