ວິທີການຈັດວາງ Nginx ໃນກຸ່ມກຸ່ມ Kubernetes


ໃນບົດຂຽນສຸດທ້າຍຂອງພວກເຮົາ, ພວກເຮົາໄດ້ປຶກສາຫາລືກ່ຽວກັບວິທີການຕັ້ງແລະ ດຳ ເນີນງານກຸ່ມບໍລິສັດ Kubernetes Cluster, ໃຫ້ສົນທະນາກ່ຽວກັບວິທີທີ່ພວກເຮົາສາມາດ ນຳ ໃຊ້ບໍລິການ NGINX ໃສ່ກຸ່ມບ້ານຂອງພວກເຮົາ.

ຂ້ອຍຈະ ດຳ ເນີນການປະຕິບັດ ໜ້າ ທີ່ນີ້ຢູ່ໃນເຄື່ອງ Virtual Virtual Hosted ໂດຍຜູ້ໃຫ້ບໍລິການຟັງສາທາລະນະ. ເຊັ່ນດຽວກັບການບໍລິການຟັງສາທາລະນະຫຼາຍ, ໂດຍທົ່ວໄປແລ້ວຫຼາຍຄົນຍັງຄົງຮັກສາລະບົບ IP ຂອງລັດແລະເອກະຊົນ ສຳ ລັບ Virtual Machine ຂອງພວກເຂົາ.

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 ໃນກຸ່ມ Kubernetes Cluster

ພວກເຮົາຈະ ດຳ ເນີນການປະຕິບັດ ໜ້າ ທີ່ນີ້ຈາກ master-node.

ເລີ່ມຕົ້ນໂດຍການກວດສອບສະຖານະຂອງກຸ່ມ. ທຸກໆຂໍ້ຂອງທ່ານຄວນຈະຢູ່ໃນສະຖານະການອ່ານ.

# kubectl get nodes

ພວກເຮົາສ້າງການ ນຳ ໃຊ້ NGINX ໂດຍໃຊ້ຮູບ NGINX.

# kubectl create deployment nginx --image=nginx

ດຽວນີ້ທ່ານສາມາດເຫັນສະພາບການໃຊ້ງານຂອງທ່ານໄດ້.

# kubectl get deployments

ຖ້າທ່ານຕ້ອງການເບິ່ງລາຍລະອຽດເພີ່ມເຕີມກ່ຽວກັບການຈັດສົ່ງຂອງທ່ານ, ທ່ານສາມາດ ດຳ ເນີນການ ຄຳ ສັ່ງອະທິບາຍ. ຍົກຕົວຢ່າງ, ມັນເປັນໄປໄດ້ທີ່ຈະ ກຳ ນົດ ຈຳ ນວນການ ຈຳ ໜ່າຍ ທີ່ ກຳ ລັງ ດຳ ເນີນງານ. ໃນກໍລະນີຂອງພວກເຮົາ, ພວກເຮົາຄາດຫວັງວ່າຈະມີການເຮັດຊ້ ຳ ຊ້ອນຂອງ 1 ແລ່ນ (i.e 1/1 ຈຳ ລອງ).

# kubectl describe deployment nginx

ດຽວນີ້ການ ນຳ ໃຊ້ Nginx ຂອງທ່ານມີການເຄື່ອນໄຫວແລ້ວ, ທ່ານອາດຈະຕ້ອງການເປີດເຜີຍບໍລິການ NGINX ໃຫ້ກັບ IP ສາທາລະນະທີ່ສາມາດເຂົ້າເຖິງໄດ້ໃນອິນເຕີເນັດ.

Kubernetes ມີຫຼາຍທາງເລືອກໃນການເປີດເຜີຍບໍລິການຂອງທ່ານໂດຍອີງໃສ່ຄຸນລັກສະນະ ໜຶ່ງ ທີ່ເອີ້ນວ່າ Kubernetes Service-types ແລະພວກມັນແມ່ນ:

<

  • ClusterIP - ປະເພດການບໍລິການນີ້ໂດຍທົ່ວໄປຈະເປີດເຜີຍການບໍລິການໃນ IP ພາຍໃນ, ສາມາດເຂົ້າເຖິງໄດ້ພຽງແຕ່ໃນກຸ່ມ, ແລະເປັນໄປໄດ້ພາຍໃນກຸ່ມ.
  • NodePort - ນີ້ແມ່ນຕົວເລືອກພື້ນຖານທີ່ສຸດຂອງການເປີດບໍລິການຂອງທ່ານໃຫ້ສາມາດເຂົ້າເຖິງນອກກຸ່ມຂອງທ່ານ, ຢູ່ທ່າເຮືອສະເພາະ (ທີ່ເອີ້ນວ່າ NodePort) ໃນທຸກໆ node ໃນ cluster. ພວກເຮົາຈະສະແດງຕົວເລືອກນີ້ໃນໄວໆນີ້.
  • LoadBalancer - ຕົວເລືອກນີ້ໃຊ້ກັບການບໍລິການ Load-Balancing ພາຍນອກທີ່ໃຫ້ໂດຍຜູ້ໃຫ້ບໍລິການຕ່າງໆເພື່ອອະນຸຍາດໃຫ້ເຂົ້າໃຊ້ບໍລິການຂອງທ່ານ. ນີ້ແມ່ນຕົວເລືອກທີ່ ໜ້າ ເຊື່ອຖືກວ່າເມື່ອຄິດເຖິງຄວາມພ້ອມທີ່ສູງ ສຳ ລັບການບໍລິການຂອງທ່ານ, ແລະມີຄຸນລັກສະນະຫຼາຍກວ່າການເຂົ້າເຖິງໃນຕອນຕົ້ນ.
  • ExternalName - ບໍລິການນີ້ປ່ຽນການຈະລາຈອນໄປສູ່ການບໍລິການທີ່ຢູ່ນອກກຸ່ມ. ໃນຖານະເປັນບໍລິການດັ່ງກ່າວຈຶ່ງຖືກຈັດໃສ່ກັບຊື່ DNS ເຊິ່ງສາມາດຖືກຈັດເປັນກຸ່ມອອກຈາກກຸ່ມບ້ານຂອງທ່ານ. ມັນເປັນສິ່ງສໍາຄັນທີ່ຈະສັງເກດວ່າສິ່ງນີ້ບໍ່ໃຊ້ proxying.
  • ປະເພດຄ່າບໍລິການແບບເດີມແມ່ນ ClusterIP.

    ໃນສະຖານະການຂອງພວກເຮົາ, ພວກເຮົາຕ້ອງການໃຊ້ NodePort Service-type ເພາະວ່າພວກເຮົາມີທີ່ຢູ່ IP ທັງພາກລັດແລະເອກະຊົນແລະພວກເຮົາບໍ່ ຈຳ ເປັນຕ້ອງມີດຸ່ນດ່ຽງການໂຫຼດພາຍນອກໃນເວລານີ້. ດ້ວຍປະເພດການບໍລິການນີ້, Kubernetes ຈະມອບ ໝາຍ ບໍລິການນີ້ຢູ່ທ່າເຮືອໃນຂອບເຂດ 30000+.

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

    ດໍາເນີນການຮັບຄໍາສັ່ງ svc ເພື່ອເບິ່ງບົດສະຫຼຸບຂອງການບໍລິການແລະທ່າເຮືອທີ່ເປີດເຜີຍ.

    # kubectl get svc
    

    ຕອນນີ້ທ່ານສາມາດກວດສອບໄດ້ວ່າ ໜ້າ ເວັບໄຊທ໌ Nginx ສາມາດເຂົ້າເຖິງໄດ້ໃນທຸກໆຂໍ້ໂດຍໃຊ້ ຄຳ ສັ່ງ curl.

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

    ຕາມທີ່ທ່ານສາມາດເຫັນໄດ້,“ WELCOME TO NGINX!” ສາມາດເຂົ້າເຖິງໄດ້.

    ດັ່ງທີ່ທ່ານອາດຈະໄດ້ສັງເກດເຫັນ, Kubernetes ລາຍງານວ່າຂ້ອຍບໍ່ໄດ້ລົງທະບຽນ IP ສາທາລະນະຢ່າງຫ້າວຫັນ, ຫຼືແທນທີ່ຈະບໍ່ມີການລົງທະບຽນ EXTERNAL-IP.

    # kubectl get svc
    

    ກວດພິສູດເບິ່ງວ່າມັນເປັນຄວາມຈິງບໍ, ວ່າຂ້ອຍບໍ່ມີ IP ພາຍນອກຕິດກັບອິນເຕີເຟດຂອງຂ້ອຍໂດຍໃຊ້ ຄຳ ສັ່ງ IP.

    # ip a
    

    ບໍ່ມີ IP ສາທາລະນະຕາມທີ່ທ່ານເຫັນ.

    ດັ່ງທີ່ໄດ້ກ່າວມາກ່ອນ ໜ້າ ນີ້, ຕອນນີ້ຂ້ອຍ ກຳ ລັງ ດຳ ເນີນການປະຕິບັດ ໜ້າ ທີ່ນີ້ຢູ່ໃນ Virtual Machine ທີ່ສະ ເໜີ ໂດຍຜູ້ໃຫ້ບໍລິການຟັງສາທາລະນະ. ດັ່ງນັ້ນ, ໃນຂະນະທີ່ບໍ່ມີການໂຕ້ຕອບໂດຍສະເພາະທີ່ຖືກມອບ ໝາຍ ໃຫ້ IP ສາທາລະນະ, ຜູ້ໃຫ້ບໍລິການ VM ໄດ້ອອກທີ່ຢູ່ IP Ephemeral ພາຍນອກ.

    ທີ່ຢູ່ IP ພາຍນອກ ephemeral ແມ່ນທີ່ຢູ່ IP ຊົ່ວຄາວທີ່ຍັງຕິດຢູ່ກັບ VM ຈົນກ່ວາຕົວຢ່າງເສມືນຖືກຢຸດ. ເມື່ອຕົວຢ່າງເສມືນຖືກເລີ້ມ ໃໝ່, IP ພາຍນອກ ໃໝ່ ຈະຖືກມອບ ໝາຍ. ໂດຍພື້ນຖານແລ້ວ, ມັນເປັນວິທີທີ່ງ່າຍດາຍ ສຳ ລັບຜູ້ໃຫ້ບໍລິການເພື່ອໃຊ້ໃນ IPs ສາທາລະນະທີ່ບໍ່ເຮັດວຽກ.

    ສິ່ງທ້າທາຍຢູ່ທີ່ນີ້, ນອກ ເໜືອ ຈາກຄວາມຈິງທີ່ວ່າ IP ສາທາລະນະຂອງທ່ານບໍ່ສະຖຽນລະພາບ, ແມ່ນວ່າ IP Ephemeral ສາທາລະນະແມ່ນພຽງແຕ່ການຂະຫຍາຍ (ຫລືຕົວແທນ) ຂອງ IP ສ່ວນຕົວ, ແລະດ້ວຍເຫດຜົນນັ້ນ, ການບໍລິການຈະເຂົ້າເຖິງໄດ້ທີ່ Port 30386 ເທົ່ານັ້ນ. ນັ້ນ ໝາຍ ຄວາມວ່າບໍລິການດັ່ງກ່າວຈະຖືກເຂົ້າໃຊ້ໃນ URL , ນັ້ນແມ່ນ 104.197.170.99:30386, ເຊິ່ງຖ້າທ່ານກວດເບິ່ງໂປແກຼມທ່ອງເວັບຂອງທ່ານ, ທ່ານຄວນຈະສາມາດເບິ່ງ ໜ້າ ຍິນດີຕ້ອນຮັບ.

    ດ້ວຍວ່າ, ພວກເຮົາໄດ້ ນຳ ໃຊ້ NGINX ສຳ ເລັດແລ້ວໃນກຸ່ມກຸ່ມ Kubernetes 3 ແກນຂອງພວກເຮົາ.