CentOS 7-ൽ ഒരു Kubernetes ക്ലസ്റ്റർ എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാം
ഓപ്പൺ സോഴ്uസ് കമ്മ്യൂണിറ്റിക്ക് Google സംഭാവന നൽകിയ കുബർനെറ്റസ് ഇപ്പോൾ തിരഞ്ഞെടുക്കാനുള്ള കണ്ടെയ്uനർ മാനേജ്uമെന്റ് ടൂളായി മാറിയിരിക്കുന്നു. ഇതിന് ഡോക്കർ റൺടൈമുകൾ മാത്രമല്ല, കണ്ടെയ്uനറുകളും Rkt റൺടൈമുകളും നിയന്ത്രിക്കാനും ക്രമീകരിക്കാനും കഴിയും.
ഒരു സാധാരണ കുബർനെറ്റസ് ക്ലസ്റ്ററിന് സാധാരണയായി ഒരു മാസ്റ്റർ നോഡും നിരവധി വർക്കർ-നോഡുകളും അല്ലെങ്കിൽ മിനിയുകളും ഉണ്ടായിരിക്കും. വർക്കർ-നോഡുകൾ പിന്നീട് മാസ്റ്റർ നോഡിൽ നിന്ന് നിയന്ത്രിക്കപ്പെടുന്നു, അങ്ങനെ ക്ലസ്റ്റർ ഒരു സെൻട്രൽ പോയിന്റിൽ നിന്ന് കൈകാര്യം ചെയ്യപ്പെടുന്നുവെന്ന് ഉറപ്പാക്കുന്നു.
നിങ്ങൾക്ക് ഒരു സിംഗിൾ-നോഡ് കുബെർനെറ്റസ് ക്ലസ്റ്ററും വിന്യസിക്കാമെന്നതും പരാമർശിക്കേണ്ടതുണ്ട്, ഇത് വളരെ ഭാരം കുറഞ്ഞതും ഉൽuപാദനേതരവുമായ ജോലിഭാരങ്ങൾക്ക് സാധാരണയായി ശുപാർശ ചെയ്യുന്നു. ഇതിനായി, നിങ്ങൾക്ക് മിനിക്യൂബ് ഉപയോഗിക്കാം, ഇത് നിങ്ങളുടെ നോഡിലെ ഒരു വെർച്വൽ മെഷീനിൽ സിംഗിൾ-നോഡ് കുബർനെറ്റ്സ് ക്ലസ്റ്റർ പ്രവർത്തിപ്പിക്കുന്ന ഉപകരണമാണ്.
ശുപാർശ ചെയ്uത വായന: CentOS 8-ൽ ഒരു Kubernetes ക്ലസ്റ്റർ എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാം
ഈ ട്യൂട്ടോറിയലിനായി, CentOS 7 Linux-ൽ ഞങ്ങൾ ഒരു മൾട്ടി-നോഡ് Kubernetes ക്ലസ്റ്റർ ഇൻസ്റ്റാളേഷനിലൂടെ നടക്കും. ഈ ട്യൂട്ടോറിയൽ കമാൻഡ്-ലൈൻ അടിസ്ഥാനമാക്കിയുള്ളതാണ്, അതിനാൽ നിങ്ങളുടെ ടെർമിനൽ വിൻഡോയിലേക്ക് നിങ്ങൾക്ക് ആക്സസ് ആവശ്യമാണ്.
- സെന്റോസ് 7-ൽ പ്രവർത്തിക്കുന്ന ഒന്നിലധികം സെർവറുകൾ (1 മാസ്റ്റർ നോഡ്, 2 വർക്കർ നോഡുകൾ). നിങ്ങളുടെ മാസ്റ്റർ നോഡിന് കുറഞ്ഞത് 2 CPU-കളെങ്കിലും ഉണ്ടായിരിക്കണമെന്ന് ശുപാർശ ചെയ്യുന്നു, എന്നിരുന്നാലും ഇത് കർശനമായ ആവശ്യകതയല്ല.
- നിങ്ങളുടെ എല്ലാ നോഡുകളിലും ഇന്റർനെറ്റ് കണക്റ്റിവിറ്റി. ഞങ്ങൾ ശേഖരത്തിൽ നിന്ന് കുബർനെറ്റുകളും ഡോക്കർ പാക്കേജുകളും ലഭ്യമാക്കും. അതുപോലെ, yum പാക്കേജ് മാനേജർ ഡിഫോൾട്ടായി ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ടെന്നും വിദൂരമായി പാക്കേജുകൾ ലഭ്യമാക്കാൻ കഴിയുമെന്നും നിങ്ങൾ ഉറപ്പാക്കേണ്ടതുണ്ട്.
- സുഡോ അല്ലെങ്കിൽ റൂട്ട് പ്രത്യേകാവകാശങ്ങളുള്ള ഒരു അക്കൗണ്ടിലേക്കും നിങ്ങൾക്ക് ആക്സസ് ആവശ്യമാണ്. ഈ ട്യൂട്ടോറിയലിൽ, ഞാൻ എന്റെ റൂട്ട് അക്കൗണ്ട് ഉപയോഗിക്കും.
ഞങ്ങളുടെ 3-നോഡ് ക്ലസ്റ്റർ ഇതുപോലെയായിരിക്കും:
മാസ്റ്റർ-നോഡിൽ കുബർനെറ്റസ് ക്ലസ്റ്ററിന്റെ ഇൻസ്റ്റാളേഷൻ
Kubernetes പ്രവർത്തിക്കുന്നതിന്, നിങ്ങൾക്ക് ഒരു കണ്ടെയ്നറൈസേഷൻ എഞ്ചിൻ ആവശ്യമാണ്. ഈ ഇൻസ്റ്റാളേഷനായി, ഏറ്റവും ജനപ്രിയമായതിനാൽ ഞങ്ങൾ ഡോക്കർ ഉപയോഗിക്കും.
ഇനിപ്പറയുന്ന ഘട്ടങ്ങൾ മാസ്റ്റർ-നോഡിൽ പ്രവർത്തിക്കും.
നിങ്ങളുടെ മാസ്റ്റർ നോഡിൽ, ഹോസ്റ്റ്നാമം സജ്ജമാക്കുക, നിങ്ങൾക്ക് ഒരു DNS സെർവർ ഇല്ലെങ്കിൽ, നിങ്ങളുടെ /etc/hosts ഫയലും അപ്ഡേറ്റ് ചെയ്യുക.
# hostnamectl set-hostname master-node # cat <<EOF>> /etc/hosts 10.128.0.27 master-node 10.128.0.29 node-1 worker-node-1 10.128.0.30 node-2 worker-node-2 EOF
പിംഗ് കമാൻഡ് ഉപയോഗിച്ച് നിങ്ങളുടെ അപ്uഡേറ്റ് ചെയ്ത ഹോസ്റ്റ് ഫയൽ മികച്ചതാണോ എന്ന് പരിശോധിക്കാൻ നിങ്ങൾക്ക് വർക്കർ-നോഡ്-1, വർക്കർ-നോഡ്-2 എന്നിവ പിംഗ് ചെയ്യാം.
# ping 10.128.0.29 # ping 10.128.0.30
അടുത്തതായി, SElinux പ്രവർത്തനരഹിതമാക്കി നിങ്ങളുടെ ഫയർവാൾ നിയമങ്ങൾ അപ്ഡേറ്റ് ചെയ്യുക.
# setenforce 0 # sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux # reboot
പോർട്ടുകളിൽ ഇനിപ്പറയുന്ന ഫയർവാൾ നിയമങ്ങൾ സജ്ജമാക്കുക. ഓരോ ഫയർവാൾ-സിഎംഡി കമാൻഡും വിജയകരമാണെന്ന് ഉറപ്പാക്കുക.
# firewall-cmd --permanent --add-port=6443/tcp # firewall-cmd --permanent --add-port=2379-2380/tcp # firewall-cmd --permanent --add-port=10250/tcp # firewall-cmd --permanent --add-port=10251/tcp # firewall-cmd --permanent --add-port=10252/tcp # firewall-cmd --permanent --add-port=10255/tcp # firewall-cmd –reload # modprobe br_netfilter # echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
CentOS 7-ൽ സ്ഥിരസ്ഥിതിയായി ഇൻസ്റ്റാൾ ചെയ്യപ്പെടാത്തതിനാൽ നിങ്ങൾ കുബർനെറ്റസ് ശേഖരണങ്ങൾ സ്വമേധയാ ചേർക്കേണ്ടതുണ്ട്.
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=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
പാക്കേജ് റിപ്പോ ഇപ്പോൾ തയ്യാറായിക്കഴിഞ്ഞാൽ, നിങ്ങൾക്ക് മുന്നോട്ട് പോയി kubeadm, ഡോക്കർ പാക്കേജുകൾ ഇൻസ്റ്റാൾ ചെയ്യാം.
# yum install kubeadm docker -y
ഇൻസ്റ്റാളേഷൻ വിജയകരമായി പൂർത്തിയാകുമ്പോൾ, രണ്ട് സേവനങ്ങളും പ്രവർത്തനക്ഷമമാക്കി ആരംഭിക്കുക.
# systemctl enable kubelet # systemctl start kubelet # systemctl enable docker # systemctl start docker
ഇപ്പോൾ ഞങ്ങൾ kubernetes master ആരംഭിക്കാൻ തയ്യാറാണ്, എന്നാൽ അതിന് മുമ്പ് \kubeadm init\ കമാൻഡ് പ്രവർത്തിപ്പിക്കുന്നതിന് നിങ്ങൾ സ്വാപ്പ് പ്രവർത്തനരഹിതമാക്കേണ്ടതുണ്ട്.
# swapoff -a
നിങ്ങൾ പ്രവർത്തിപ്പിക്കുന്ന \kubeadm init\ കമാൻഡ് നിയന്ത്രിക്കുന്ന ഒരു പൂർണ്ണ ഓട്ടോമേറ്റഡ് പ്രക്രിയയാണ് Kubernetes master ആരംഭിക്കുന്നത്.
# kubeadm init
നിങ്ങൾക്ക് അവസാന വരി പകർത്തി എവിടെയെങ്കിലും സംരക്ഷിക്കാൻ താൽപ്പര്യമുണ്ടാകാം, കാരണം നിങ്ങൾ അത് വർക്കർ നോഡുകളിൽ പ്രവർത്തിപ്പിക്കേണ്ടതുണ്ട്.
kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5 \ --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41
നുറുങ്ങ്: ചിലപ്പോൾ ഈ കമാൻഡ് പാസായ ആർഗ്യുമെന്റുകളെക്കുറിച്ച് (ആർഗ്സ്) പരാതിപ്പെട്ടേക്കാം, അതിനാൽ എന്തെങ്കിലും പിശകുകൾ ഒഴിവാക്കാൻ ഇത് എഡിറ്റ് ചെയ്യുക. അതിനാൽ, നിങ്ങൾ --ടോക്കൺ
എന്നതിന് ഒപ്പമുള്ള ‘\’
പ്രതീകം ഇല്ലാതാക്കുകയും നിങ്ങളുടെ അന്തിമ കമാൻഡ് ഇതുപോലെ കാണപ്പെടുകയും ചെയ്യും.
kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5 --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41
Kubernetes വിജയകരമായി സമാരംഭിച്ചുകഴിഞ്ഞാൽ, ക്ലസ്റ്റർ ഉപയോഗിച്ച് തുടങ്ങാൻ നിങ്ങളുടെ ഉപയോക്താവിനെ അനുവദിക്കേണ്ടതുണ്ട്. ഞങ്ങളുടെ കാര്യത്തിൽ, ഈ ഇൻസ്റ്റലേഷൻ റൂട്ട് ഉപയോക്താവായി പ്രവർത്തിപ്പിക്കാൻ ഞങ്ങൾ ആഗ്രഹിക്കുന്നു, അതിനാൽ ഞങ്ങൾ മുന്നോട്ട് പോയി ഈ കമാൻഡുകൾ റൂട്ടായി പ്രവർത്തിപ്പിക്കും. നിങ്ങൾക്ക് താൽപ്പര്യമുള്ള ഒരു സുഡോ പ്രവർത്തനക്ഷമമാക്കിയ ഉപയോക്താവിലേക്ക് മാറുകയും സുഡോ ഉപയോഗിച്ച് താഴെയുള്ളത് പ്രവർത്തിപ്പിക്കുകയും ചെയ്യാം.
റൂട്ട് ഉപയോഗിക്കുന്നതിന്, പ്രവർത്തിപ്പിക്കുക:
# mkdir -p $HOME/.kube # cp -i /etc/kubernetes/admin.conf $HOME/.kube/config # chown $(id -u):$(id -g) $HOME/.kube/config
സുഡോ പ്രവർത്തനക്ഷമമാക്കിയ ഉപയോക്താവിനെ ഉപയോഗിക്കുന്നതിന്, പ്രവർത്തിപ്പിക്കുക:
$ mkdir -p $HOME/.kube $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config $ sudo chown $(id -u):$(id -g) $HOME/.kube/config
ഇപ്പോൾ kubectl കമാൻഡ് സജീവമാക്കിയിട്ടുണ്ടോയെന്ന് പരിശോധിക്കുക.
# kubectl get nodes
ഈ സമയത്ത്, മാസ്റ്റർ-നോഡിന്റെ സ്റ്റാറ്റസ് 'നോട്ട് റെഡി' ആണെന്നും നിങ്ങൾ ശ്രദ്ധിക്കും. ഞങ്ങൾ ഇതുവരെ പോഡ് നെറ്റ്uവർക്ക് ക്ലസ്റ്ററിലേക്ക് വിന്യസിച്ചിട്ടില്ല എന്നതിനാലാണിത്.
നിലവിലെ നോഡ് നെറ്റ്uവർക്കിന് മുകളിൽ വിന്യസിച്ചിരിക്കുന്ന ക്ലസ്റ്ററിനായുള്ള ഓവർലേ നെറ്റ്uവർക്കാണ് പോഡ് നെറ്റ്uവർക്ക്. പോഡിലുടനീളം കണക്റ്റിവിറ്റി അനുവദിക്കുന്നതിനാണ് ഇത് രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത്.
നെറ്റ്uവർക്ക് ക്ലസ്റ്റർ വിന്യസിക്കുന്നത് നിങ്ങളുടെ ആവശ്യങ്ങൾക്കനുസരിച്ച് വളരെ വഴക്കമുള്ള ഒരു പ്രക്രിയയാണ്, കൂടാതെ നിരവധി ഓപ്ഷനുകൾ ലഭ്യമാണ്. ഞങ്ങളുടെ ഇൻസ്റ്റാളേഷൻ കഴിയുന്നത്ര ലളിതമാക്കാൻ ഞങ്ങൾ ആഗ്രഹിക്കുന്നതിനാൽ, കോൺഫിഗറേഷനോ അധിക കോഡോ ആവശ്യമില്ലാത്ത Weavenet പ്ലഗിൻ ഞങ്ങൾ ഉപയോഗിക്കും, ഇത് ഓരോ പോഡിനും ഒരു IP വിലാസം നൽകുന്നു, അത് ഞങ്ങൾക്ക് മികച്ചതാണ്. നിങ്ങൾക്ക് കൂടുതൽ ഓപ്ഷനുകൾ കാണണമെങ്കിൽ, ദയവായി ഇവിടെ പരിശോധിക്കുക.
പോഡ് നെറ്റ്uവർക്ക് സജ്ജീകരണം ലഭിക്കുന്നതിന് ഈ കമാൻഡുകൾ പ്രധാനമാണ്.
# export kubever=$(kubectl version | base64 | tr -d '\n') # kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"
ഇപ്പോൾ നിങ്ങളുടെ മാസ്റ്റർ-നോഡിന്റെ നില പരിശോധിക്കുകയാണെങ്കിൽ, അത് 'റെഡി' ആയിരിക്കണം.
# kubectl get nodes
അടുത്തതായി, ഞങ്ങൾ ക്ലസ്റ്ററിലേക്ക് തൊഴിലാളി നോഡുകൾ ചേർക്കുന്നു.
കുബർനെറ്റസ് ക്ലസ്റ്ററിൽ ചേരുന്നതിന് വർക്കർ നോഡുകൾ സജ്ജീകരിക്കുന്നു
ഇനിപ്പറയുന്ന ഘട്ടങ്ങൾ വർക്കർ നോഡുകളിൽ പ്രവർത്തിക്കും. Kubernetes ക്ലസ്റ്ററിൽ ചേരുമ്പോൾ ഈ ഘട്ടങ്ങൾ എല്ലാ വർക്കർ നോഡിലും പ്രവർത്തിപ്പിക്കണം.
നിങ്ങളുടെ വർക്കർ-നോഡ്-1, വർക്കർ-നോഡ്-2 എന്നിവയിൽ, ഹോസ്റ്റ്നാമം സജ്ജീകരിക്കുക, നിങ്ങൾക്ക് ഒരു DNS സെർവർ ഇല്ലെങ്കിൽ, /etc/hosts ഫയലിൽ നിങ്ങളുടെ മാസ്റ്റർ, വർക്കർ നോഡുകൾ അപ്ഡേറ്റ് ചെയ്യുക.
# hostnamectl set-hostname 'node-1' # cat <<EOF>> /etc/hosts 10.128.0.27 master-node 10.128.0.29 node-1 worker-node-1 10.128.0.30 node-2 worker-node-2 EOF
നിങ്ങളുടെ അപ്uഡേറ്റ് ചെയ്uത ഹോസ്റ്റ് ഫയൽ ശരിയാണോ എന്ന് പരിശോധിക്കാൻ നിങ്ങൾക്ക് മാസ്റ്റർ-നോഡ് പിംഗ് ചെയ്യാം.
അടുത്തതായി, SElinux പ്രവർത്തനരഹിതമാക്കി നിങ്ങളുടെ ഫയർവാൾ നിയമങ്ങൾ അപ്ഡേറ്റ് ചെയ്യുക.
# setenforce 0 # sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
പോർട്ടുകളിൽ ഇനിപ്പറയുന്ന ഫയർവാൾ നിയമങ്ങൾ സജ്ജമാക്കുക. എല്ലാ ഫയർവാൾ-സിഎംഡി കമാൻഡുകളും വിജയകരമാണെന്ന് ഉറപ്പാക്കുക.
# firewall-cmd --permanent --add-port=6783/tcp # firewall-cmd --permanent --add-port=10250/tcp # firewall-cmd --permanent --add-port=10255/tcp # firewall-cmd --permanent --add-port=30000-32767/tcp # firewall-cmd --reload # echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
CentOS 7-ൽ പ്രീ-ഇൻസ്റ്റാൾ ചെയ്തിട്ടില്ലാത്തതിനാൽ, നിങ്ങൾ Kubernetes ശേഖരണങ്ങൾ സ്വമേധയാ ചേർക്കേണ്ടതുണ്ട്.
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=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
പാക്കേജ് റിപ്പോ ഇപ്പോൾ തയ്യാറായിക്കഴിഞ്ഞാൽ, നിങ്ങൾക്ക് മുന്നോട്ട് പോയി kubeadm, ഡോക്കർ പാക്കേജുകൾ ഇൻസ്റ്റാൾ ചെയ്യാം.
# yum install kubeadm docker -y
രണ്ട് സേവനങ്ങളും ആരംഭിച്ച് പ്രവർത്തനക്ഷമമാക്കുക.
# systemctl enable docker # systemctl start docker # systemctl enable kubelet # systemctl start kubelet
ക്ലസ്റ്ററിൽ ചേരുന്നതിന്, kubeadm init സൃഷ്ടിച്ച ടോക്കൺ ഞങ്ങൾക്ക് ഇപ്പോൾ ആവശ്യമാണ്. നിങ്ങൾ എവിടെയെങ്കിലും പകർത്തിയിട്ടുണ്ടെങ്കിൽ അത് നിങ്ങളുടെ നോഡ്-1, നോഡ്-2 എന്നിവയിലേക്ക് പകർത്തി ഒട്ടിക്കാം.
# kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5 --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41
അവസാന വരിയിൽ നിർദ്ദേശിച്ചതുപോലെ, നിങ്ങളുടെ മാസ്റ്റർ-നോഡിലേക്ക് തിരികെ പോയി താഴെ പറയുന്ന കമാൻഡ് ഉപയോഗിച്ച് വർക്കർ നോഡ്-1 ഉം വർക്കർ നോഡ്-2 ഉം ക്ലസ്റ്ററിൽ ചേർന്നിട്ടുണ്ടോയെന്ന് പരിശോധിക്കുക.
# kubectl get nodes
എല്ലാ ഘട്ടങ്ങളും വിജയകരമായി പ്രവർത്തിക്കുന്നുവെങ്കിൽ, നിങ്ങൾ നോഡ്-1, നോഡ്-2 എന്നിവ മാസ്റ്റർ-നോഡിൽ റെഡി സ്റ്റാറ്റസിൽ കാണും.
ശുപാർശ ചെയ്uത വായന: ഒരു കുബർനെറ്റസ് ക്ലസ്റ്ററിൽ Nginx എങ്ങനെ വിന്യസിക്കാം
ഈ ഘട്ടത്തിൽ, Centos 7-ൽ ഒരു കുബർനെറ്റസ് ക്ലസ്റ്ററിന്റെ ഇൻസ്റ്റാളേഷൻ ഞങ്ങൾ വിജയകരമായി പൂർത്തിയാക്കി, ഞങ്ങൾ രണ്ട് വർക്കർ-നോഡുകൾ വിജയകരമായി ഓൺ-ബോർഡ് ചെയ്തു. നിങ്ങൾക്ക് ഇപ്പോൾ നിങ്ങളുടെ പോഡുകൾ സൃഷ്ടിക്കാനും നിങ്ങളുടെ സേവനങ്ങൾ വിന്യസിക്കാനും തുടങ്ങാം.