Install Kubernetes Cluster By Rancher

ก่อนอื่นมารู้จักเจ้าตัว Rancher กันก่อนว่ามันคืออะไร?
Rancher เป็น container management platform สำหรับ deploy container และสามารถจัดการ kubernetes ผ่าน Web UI ได้อย่างง่ายดายโดยที่เราไม่จำเป็นต้องจำคำสั่งทั้งหมดที่ต้องสั่งงานผ่าน kubectl เลย ซึ่ง Rancher สามารถจัดการ kubernetes cluster ที่เป็นแบบ cloud ได้เช่น Google Kubernetes Engine (GKE) , Azure Kubernetes Service (AKS) และ Amazon EKS หรือจะเป็น on-premise ก็ได้ ซึ่ง Rancher มีตัวเลือกให้เราสามารถสร้าง kubernetes cluster ด้วยสิ่งที่เรียกว่า Rancher Kubernates Engine(RKE)
สิ่งที่เราจะใช้ทั้งหมดในการ Install Kubernetes Cluster By Rancher มีดังนี้
- Virtaul Box สำหรับติดตั้ง VM
- Vagrant เป็นเครื่องมือช่วยให้เราสร้าง Environment ได้อย่างง่ายดาย สามารถดูต่อได้ที่ https://www.vagrantup.com/
มาเริ่มกันเลย
เริ่มจากสร้าง Vagrantfile สำหรับสร้าง Environment โดยจะสร้าง VM ขึ้นมาทั้งหมด 3 VM แต่ละ VM จะเป็น ubuntu ดังนี้
- Rancher เป็นเครื่องสำหรับติดตั้ง Rancher UI
- Master เป็นเครื่องสำหรับ Master Node ของ kubernetes
- Node1 เป็นเครื่องสำหรับ Work Node ของ kubernetes

หลังจากที่ vagrantfile พร้อมแล้วก็เริ่มสร้าง VM โดยใช้คำสั่ง vagrant up จะได้ VM มาทั้งหมด ตามรูป โดยใช้คำสั่ง vagrant status

ต่อมาเริ่มติดตั้ง Rancher ที่เครื่อง rancher โดยใช้คำสั่ง vagrant ssh rancher แล้วใช้คำสั่งต่อไปนี้เพื่อติดตั้ง Rancher
vagrant@rancher:~$ sudo docker run -d — restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
เมื่อเสร็จแล้วให้เปิด browser แล้วใส่ ip เป็นของเครื่อง rancher คือ 192.168.108.10 จะได้ Rancher UI ตามรูป (IP กำหนดตาม Network ของตัวเอง)

โดยครั้งแรกในการใช้งาน rancher จะต้องกำหนด password ให้กับ user admin ก่อน ก็ให้เรากำหนด password เพื่อใช้ในการ login ในครั้งถัดไป เมื่อกำหนด password เรียบร้อยแล้ว rancher จะให้เรากำหนด Rancher Server Url ให้กำหนดเป็น IP ของเครื่อง rancher เลยในที่นี้จะเป็น 192.168.108.10

หลังจากที่เรา Save URL แล้วจะเข้าสู่หน้าเว็บไซต์ ตามรูปด้านล่าง

เราจะเห็นว่าตอนนี้ rancher จะยังไม่มีข้อมูลอะไรเลย ต่อมาเราจะมาเริ่มสร้าง kubernetes cluster กัน โดยกดที่ Add Cluster เลือก Cluster Type เป็น Custom

ต่อมาให้ใส่ชื่อของ Cluster Name แล้วกด Next

เมื่อกด Next มาแล้วเราจะเห็นส่วนที่เป็น Node Options มีให้เลือก 3 option คือ etcd,Control Plane และ Worker โดยแต่ละ option ขออธิบายสั้นๆดังนี้
etcd — node สำหรับการติดตั้ง etcd ที่เป็นส่วนของการจัดเก็บ state ทั้งหมดของ kubernetes
Control Plane — เป็น Master Node ที่ประกอบไปด้วย Kubernetes API server, Controller,Scheduler
Worker — เป็น Worker Node ที่เป็น node สำหรับ run app ของเรานั่นเอง
โดยในที่นี้เราจะใช้ etcd และ control plane ในเครื่องเดียวกันนั่นก็คือเครื่อง master ที่เราได้เตรียมไว้ โดยให้เลือก etcd และ Control Plane แล้วตรง Public Address ให้ใส่ IP ของเครื่อง Master นั่นก็คือ 192.168.108.11

เมื่อใส่ข้อมูลครบถ้วนแล้วให้ copy ส่วนของ command ไป run ที่ node Master เพื่อติดตั้ง etcd และ Control Plane เมื่อ run เสร็จเรียบร้อยจะแสดงข้อความว่า 1 new node has registered แสดงว่าเราเพิ่ม node Master ให้ Rancher เรียบร้อยแล้ว

ต่อมาให้เราเปลี่ยนเป็นเลือกแค่ Worker และใส่ Public Address เป็น IP ของเครื่อง node1 คือ 192.168.108.12 แล้ว copy ส่วนของ command ไป run ที่ node1 เพื่อติดตั้ง Worker เมื่อ run เสร็จเรียบร้อยจะแสดงข้อความว่า 1 new node has registered แสดงว่าเราเพิ่ม node Workerให้ Rancher เรียบร้อยแล้ว หลังจากนั้นให้กด Done จะได้ cluster ที่เราทำการเพิ่มมา ถ้าสถานะเป็น Active แสดงว่า kubernetes cluster ของเราพร้อมสำหรับการใช้งานแล้ว

เราสามารถกดเข้าไปดูรายละเอียดของ cluster ได้โดยกดที่ชื่อของ cluster จะแสดงหน้า dashboard ของ cluster ทำให้เราเห็นภาพรวมของ cluster ของเราได้อย่างง่ายดาย

ต่อมาเรามาลอง deploy app ไปที่ kubernetes cluster ของเราดูดีกว่าว่ามันใช้งานได้จิงหรือป่าว โดยการ deploy สามารถทำผ่านตัว Rancher UI ได้เลย โดยจะใช้สิ่งที่เรียกว่า Workload โดยให้เลือก namespace ที่เราจะ deploy ก่อนในที่นี้จะเลือกเป็น default

เมื่อเข้ามาแล้วให้เลือก tab Workloads แล้วกดปุ่ม Deploy

โดยเราจะทดลอง deploy nginx ให้ระบุข้อมูลการ Deploy Workload ดังนี้
Name:nginx
Docker Image:nginx
Publish the container port:80
Protocol:TCP
As a:NodePort (On every node)
On listening port:30027

เมื่อใส่ข้อมูลครบแล้วให้กด Launch ได้เลย ในหน้า workload จะแสดงรายการ workload ที่เราได้ deploy ไป ถ้าสถานะเป็น Active แสดงว่าการ deploy เสร็จสมบูรณ์ไม่ติดปัญหาอะไร

การทดสอบว่าใช้งานได้หรือไม่ สามารถกดเข้าได้จากหมายเลข port ที่อยู่ด้านล่างของชื่อ workload ที่ได้ deploy ไป จะต้องได้ผลลัพธ์ ตามรูป

สรุป
จะเห็นว่า Rancher เป็นเครื่องมือที่ช่วยให้เราสามารถติดตั้งและจัดการ kubernetes cluster ได้อย่างง่ายดาย เพียงแค่สั่งงานผ่าน web ui แต่ทั้งนี้ทั้งนั้นก็จะต้องมีความรู้พื้นฐานเกี่ยวกับ kubernets ด้วยถึงจะเข้าใจการใช้งานต่างๆได้
ปล. จากผู้เขียน
ถ้าเนื้อหาตรงไหนที่ผู้เขียนเข้าใจผิดพลาดไปสามารถแจ้งเข้ามาได้เลยนะครับ เพราะเพิ่งเริ่มศึกษาและเป็นการเขียนทบทวนความเข้าใจของตัวเองครับ ขอบคุณครับ
