ວິທີການຕິດຕັ້ງ Cluster Kubernetes ໃນ CentOS 7


ບໍລິຈາກໂດຍ Google ໃຫ້ຊຸມຊົນ Opensource, Kubernetes ໄດ້ກາຍເປັນເຄື່ອງມືໃນການຄຸ້ມຄອງພາຊະນະຂອງການເລືອກ. ມັນສາມາດບໍລິຫານແລະຈັດເປັນວົງດົນຕີບໍ່ພຽງແຕ່ເປັນ docker runtimes ເທົ່ານັ້ນແຕ່ຍັງມີບັນຈຸແລະ rktimes.

ກຸ່ມ Kubernetes ປົກກະຕິໂດຍທົ່ວໄປຈະມີ node ຕົ້ນສະບັບແລະ node ພະນັກງານຫຼາຍຄົນຫຼື Minions. ຫຼັງຈາກນັ້ນ, ຂໍ້ ກຳ ມະກອນແມ່ນຖືກຈັດການຈາກແມ່ບົດ, ສະນັ້ນຮັບປະກັນວ່າກຸ່ມໄດ້ຖືກຄຸ້ມຄອງຈາກຈຸດສູນກາງ.

ມັນຍັງມີຄວາມ ສຳ ຄັນທີ່ຈະກ່າວເຖິງວ່າທ່ານຍັງສາມາດ ນຳ ໃຊ້ກຸ່ມກຸ່ມ Kubernetes ດຽວທີ່ໄດ້ແນະ ນຳ ໂດຍທົ່ວໄປ ສຳ ລັບວຽກທີ່ບໍ່ແມ່ນຜະລິດຕະພັນ. ສຳ ລັບສິ່ງນີ້, ທ່ານສາມາດໃຊ້ Minikube, ເຊິ່ງແມ່ນເຄື່ອງມືທີ່ແລ່ນກຸ່ມກຸ່ມ Kubernetes ແບບດຽວໃນເຄື່ອງ virtual ຢູ່ເທິງ node ຂອງທ່ານ.

ອ່ານທີ່ແນະ ນຳ: ວິທີການຕິດຕັ້ງກຸ່ມຄູໂບຕ້າໃນ CentOS 8

ສຳ ລັບບົດແນະ ນຳ ນີ້, ພວກເຮົາຈະຍ່າງຜ່ານການຕິດຕັ້ງແບບຫຼາຍກຸ່ມຂອງເຄືອຂ່າຍ Kubernetes ໃນ CentOS 7 Linux. ບົດແນະ ນຳ ນີ້ແມ່ນອີງໃສ່ເສັ້ນ ຄຳ ສັ່ງສະນັ້ນທ່ານ ຈຳ ເປັນຕ້ອງມີການເຂົ້າເຖິງ ໜ້າ ຕ່າງຂອງທ່ານ.

<

  • ຫລາຍເຊີບເວີທີ່ໃຊ້ Centos 7 (1 Master Node, 2 Nodes Worker). ຂໍແນະ ນຳ ໃຫ້ Master Node ຂອງທ່ານມີຢ່າງ ໜ້ອຍ 2 CPU, ເຖິງແມ່ນວ່ານີ້ບໍ່ແມ່ນຄວາມຕ້ອງການທີ່ເຄັ່ງຄັດ.
  • ການເຊື່ອມຕໍ່ອິນເຕີເນັດໃນທຸກໆເຄືອຂ່າຍຂອງທ່ານ. ພວກເຮົາຈະເອົາຊຸດ Kubernetes ແລະ docker ຈາກບ່ອນເກັບມ້ຽນ. ເທົ່າທຽມກັນ, ທ່ານຈະຕ້ອງຮັບປະກັນວ່າຜູ້ຈັດການຊຸດ yum ຖືກຕິດຕັ້ງໂດຍຄ່າເລີ່ມຕົ້ນແລະສາມາດເກັບເອົາບັນດາແພັກເກດຈາກໄລຍະໄກໄດ້.
  • ທ່ານຍັງຈະຕ້ອງການເຂົ້າເຖິງບັນຊີດ້ວຍສິດທິ sudo ຫຼືຮາກ. ໃນບົດແນະ ນຳ ນີ້, ຂ້ອຍຈະໃຊ້ບັນຊີຮາກຂອງຂ້ອຍ.
  • ກຸ່ມ 3 ຂໍ້ຂອງພວກເຮົາຈະມີລັກສະນະຄ້າຍຄືດັ່ງນີ້:

    ການຕິດຕັ້ງກຸ່ມຄູໂບຕ້າໃນລະບົບ Master-Node

    ເພື່ອໃຫ້ Kubernetes ເຮັດວຽກ, ທ່ານຈະຕ້ອງມີເຄື່ອງຈັກບັນຈຸສິນຄ້າ. ສຳ ລັບການຕິດຕັ້ງນີ້, ພວກເຮົາຈະໃຊ້ docker ເພາະມັນເປັນທີ່ນິຍົມທີ່ສຸດ.

    ຂັ້ນຕອນຕໍ່ໄປນີ້ຈະ ດຳ ເນີນການກ່ຽວກັບ Master-Node.

    ຢູ່ໃນຂໍ້ ກຳ ນົດແມ່ບົດຂອງທ່ານ, ຕັ້ງຊື່ໂຮດຕິ້ງແລະຖ້າທ່ານບໍ່ມີເຄື່ອງແມ່ຂ່າຍ 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
    

    ທ່ານສາມາດ ping worker-node-1 ແລະ worker-node-2 ເພື່ອທົດສອບຖ້າ hostfile ທີ່ຖືກປັບປຸງຂອງທ່ານດີໂດຍໃຊ້ ping command.

    # ping 10.128.0.29
    # ping 10.128.0.30
    

    ຕໍ່ໄປ, ປິດການໃຊ້ງານ SElinux ແລະປັບປຸງກົດລະບຽບ Firewall ຂອງທ່ານ.

    # setenforce 0
    # sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
    # reboot
    

    ຕັ້ງກົດລະບຽບໄຟວໍຕໍ່ໄປນີ້ຕໍ່ພອດຕ່າງໆ. ໃຫ້ແນ່ໃຈວ່າແຕ່ລະ ຄຳ ສັ່ງ firewall-cmd, ສົ່ງຜົນ ສຳ ເລັດ.

    # 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
    

    ທ່ານຈະຕ້ອງເພີ່ມຫໍສະມຸດ Kubernetes ດ້ວຍຕົນເອງເພາະວ່າມັນບໍ່ໄດ້ຕິດຕັ້ງໂດຍຄ່າເລີ່ມຕົ້ນໃນ 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
    

    ກັບ repo ຊຸດທີ່ກຽມພ້ອມແລ້ວ, ທ່ານສາມາດສືບຕໍ່ເດີນຫນ້າແລະຕິດຕັ້ງ kubeadm ແລະ docker package.

    # yum install kubeadm docker -y 
    

    ເມື່ອການຕິດຕັ້ງ ສຳ ເລັດແລ້ວ, ເປີດໃຊ້ງານແລະເລີ່ມການບໍລິການທັງສອງຢ່າງ.

    # systemctl enable kubelet
    # systemctl start kubelet
    # systemctl enable docker
    # systemctl start docker
    

    ຕອນນີ້ພວກເຮົາພ້ອມທີ່ຈະເລີ່ມຕົ້ນຕົ້ນສະບັບ kubernetes, ແຕ່ກ່ອນທີ່ທ່ານຕ້ອງການປິດການແລກປ່ຽນເພື່ອ ດຳ ເນີນການ ຄຳ ສັ່ງ“ kubeadm init”.

    # swapoff -a
    

    ການເລີ່ມຕົ້ນ Kubernetes ຕົ້ນສະບັບແມ່ນຂະບວນການອັດຕະໂນມັດຢ່າງເຕັມທີ່ທີ່ຖືກຈັດການໂດຍ "kubeadm init" ຄໍາສັ່ງທີ່ທ່ານຈະດໍາເນີນການ.

    # 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 ຢ່າງ ສຳ ເລັດຜົນ, ທ່ານຈະຕ້ອງໄດ້ອະນຸຍາດໃຫ້ຜູ້ໃຊ້ຂອງທ່ານເລີ່ມຕົ້ນ ນຳ ໃຊ້ກຸ່ມ. ໃນກໍລະນີຂອງພວກເຮົາ, ພວກເຮົາຕ້ອງການ ດຳ ເນີນການຕິດຕັ້ງນີ້ເປັນຜູ້ ນຳ ໃຊ້ຮາກ, ດັ່ງນັ້ນພວກເຮົາຈະເດີນ ໜ້າ ແລະ ດຳ ເນີນການ ຄຳ ສັ່ງເຫຼົ່ານີ້ເປັນຮາກ. ທ່ານສາມາດປ່ຽນເປັນຜູ້ ນຳ ໃຊ້ sudo ທີ່ທ່ານມັກແລະ ດຳ ເນີນການດ້ານລຸ່ມໂດຍໃຊ້ sudo.

    ເພື່ອໃຊ້ຮາກ, ດຳ ເນີນການ:

    # mkdir -p $HOME/.kube
    # cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    # chown $(id -u):$(id -g) $HOME/.kube/config
    

    ເພື່ອໃຊ້ຜູ້ໃຊ້ sudo ທີ່ເປີດໃຊ້ງານ, ດຳ ເນີນການ:

    $ 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
    

    ໃນຈຸດນີ້, ທ່ານຍັງຈະສັງເກດເຫັນວ່າສະຖານະຂອງແມ່ບົດແມ່ນ 'NotReady'. ນີ້ແມ່ນຍ້ອນວ່າພວກເຮົາຍັງບໍ່ທັນໄດ້ ນຳ ໃຊ້ເຄືອຂ່າຍຝັກໃຫ້ເປັນກຸ່ມ.

    ເຄືອຂ່າຍ pod ແມ່ນເຄືອຂ່າຍທີ່ຊ້ອນກັນ ສຳ ລັບກຸ່ມບ້ານ, ເຊິ່ງຖືກ ນຳ ໃຊ້ຢູ່ເທິງສຸດຂອງເຄືອຂ່າຍ node ປະຈຸບັນ. ມັນຖືກອອກແບບມາເພື່ອອະນຸຍາດໃຫ້ເຊື່ອມຕໍ່ທົ່ວຝັກ.

    ການ ນຳ ໃຊ້ກຸ່ມເຄືອຂ່າຍແມ່ນຂະບວນການທີ່ມີຄວາມຍືດຫຍຸ່ນສູງໂດຍອີງຕາມຄວາມຕ້ອງການຂອງທ່ານແລະມີຫລາຍທາງເລືອກທີ່ມີຢູ່. ເນື່ອງຈາກວ່າພວກເຮົາຕ້ອງການທີ່ຈະຮັກສາການຕິດຕັ້ງຂອງພວກເຮົາໃຫ້ງ່າຍດາຍເທົ່າທີ່ຈະເປັນໄປໄດ້, ພວກເຮົາຈະໃຊ້ໂປແກຼມ Weavenet ເຊິ່ງບໍ່ ຈຳ ເປັນຕ້ອງມີການຕັ້ງຄ່າຫລືລະຫັດພິເສດແລະມັນສະ ໜອງ ທີ່ຢູ່ IP ຕໍ່ ໜຶ່ງ ເມັດເຊິ່ງມັນດີ ສຳ ລັບພວກເຮົາ. ຖ້າທ່ານຕ້ອງການເບິ່ງຕົວເລືອກເພີ່ມເຕີມ, ກະລຸນາກວດເບິ່ງທີ່ນີ້.

    ຄຳ ສັ່ງເຫລົ່ານີ້ຈະມີຄວາມ ສຳ ຄັນທີ່ຈະໄດ້ຮັບການຕັ້ງເຄືອຂ່າຍຝັກ.

    # export kubever=$(kubectl version | base64 | tr -d '\n')
    # kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"
    

    ດຽວນີ້ຖ້າທ່ານກວດເບິ່ງສະຖານະຂອງແມ່ບົດຂອງມັນ, ມັນຄວນຈະເປັນ 'ກຽມພ້ອມ'.

    # kubectl get nodes
    

    ຕໍ່ໄປ, ພວກເຮົາຕື່ມຂໍ້ມູນຂອງແຮງງານເຂົ້າໃນກຸ່ມ.

    ການຕັ້ງຄ່າລະຫັດຜູ້ອອກແຮງງານເພື່ອເຂົ້າຮ່ວມ Cluster Kubernetes

    ຂັ້ນຕອນຕໍ່ໄປນີ້ຈະ ດຳ ເນີນການຕາມຂໍ້ ກຳ ນົດຂອງຄົນງານ. ຂັ້ນຕອນເຫຼົ່ານີ້ຄວນຈະຖືກ ດຳ ເນີນການໃນທຸກໆຮາກຖານຂອງຜູ້ອອກແຮງງານເມື່ອເຂົ້າຮ່ວມກຸ່ມບ້ານ Kubernetes.

    ກ່ຽວກັບພະນັກງານ node-1 ແລະ worker-node-2 ຂອງທ່ານ, ຕັ້ງຊື່ໂຮດຕິ້ງແລະໃນກໍລະນີທີ່ທ່ານບໍ່ມີເຄື່ອງແມ່ຂ່າຍ DNS, ຫຼັງຈາກນັ້ນກໍ່ຈະປັບປຸງຂໍ້ມູນແມ່ບົດແລະພະນັກງານຂອງທ່ານຢູ່ໃນ/etc/hosts file.

    # 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
    

    ທ່ານສາມາດ ping master-node ເພື່ອທົດສອບວ່າ hostfile ທີ່ຖືກປັບປຸງ ໃໝ່ ຂອງທ່ານດີຫລືບໍ່.

    ຕໍ່ໄປ, ປິດການໃຊ້ງານ SElinux ແລະປັບປຸງກົດລະບຽບ Firewall ຂອງທ່ານ.

    # setenforce 0
    # sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
    

    ຕັ້ງກົດລະບຽບໄຟວໍຕໍ່ໄປນີ້ຕໍ່ພອດຕ່າງໆ. ໃຫ້ແນ່ໃຈວ່າທຸກ ຄຳ ສັ່ງຂອງ firewall-cmd, ສົ່ງຄືນຜົນ ສຳ ເລັດ.

    # 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
    

    ທ່ານຈະຕ້ອງເພີ່ມຫໍສະມຸດ Kubernetes ດ້ວຍຕົນເອງເພາະວ່າມັນບໍ່ໄດ້ຕິດຕັ້ງໄວ້ກ່ອນໃນ 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
    

    ກັບ repo ຊຸດທີ່ກຽມພ້ອມແລ້ວ, ທ່ານສາມາດສືບຕໍ່ເດີນຫນ້າແລະຕິດຕັ້ງ kubeadm ແລະ docker package.

    # yum install kubeadm docker -y 
    

    ເລີ່ມຕົ້ນແລະເປີດໃຊ້ບໍລິການທັງສອງຢ່າງ.

    # systemctl enable docker
    # systemctl start docker
    # systemctl enable kubelet
    # systemctl start kubelet
    

    ໃນປັດຈຸບັນພວກເຮົາຮຽກຮ້ອງໃຫ້ມີສັນຍາລັກທີ່ kubeadm ໄດ້ຜະລິດ, ເພື່ອເຂົ້າຮ່ວມເປັນກຸ່ມ. ທ່ານສາມາດຄັດລອກແລະວາງມັນໃສ່ node-1 ແລະ node-2 ຂອງທ່ານຖ້າທ່ານໄດ້ຄັດລອກມັນຢູ່ບ່ອນໃດບ່ອນ ໜຶ່ງ.

    # kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 
    

    ດັ່ງທີ່ໄດ້ແນະ ນຳ ກ່ຽວກັບສາຍສຸດທ້າຍ, ໃຫ້ກັບໄປທີ່ແມ່ບົດຂອງທ່ານແລະກວດເບິ່ງວ່າ node-1 ກຳ ມະກອນແລະແຮງງານ node-2 ໄດ້ເຂົ້າຮ່ວມເປັນກຸ່ມໂດຍໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

    # kubectl get nodes
    

    ຖ້າຂັ້ນຕອນທັງ ໝົດ ດຳ ເນີນການຢ່າງປະສົບຜົນ ສຳ ເລັດ, ຫຼັງຈາກນັ້ນ, ທ່ານຄວນເຫັນ node-1 ແລະ node-2 ຢູ່ໃນສະຖານະທີ່ກຽມພ້ອມໃນ master-node.

    ຂໍ້ແນະ ນຳ ໃຫ້ອ່ານ: ວິທີການ ນຳ ໃຊ້ Nginx ໃສ່ກຸ່ມຄູໂບລານ

    ໃນຈຸດນີ້, ພວກເຮົາໄດ້ປະສົບຜົນ ສຳ ເລັດໃນການຕິດຕັ້ງກຸ່ມຄູໂບຕ້າຕັ້ງຢູ່ໃນສູນ 7 ແລະພວກເຮົາໄດ້ປະສົບຜົນ ສຳ ເລັດໃນການຕິດຕັ້ງກworkerອງ ກຳ ມະກອນສອງຄົນ. ດຽວນີ້ທ່ານສາມາດເລີ່ມຕົ້ນສ້າງຝັກຂອງທ່ານແລະ ນຳ ໃຊ້ບໍລິການຂອງທ່ານ.