เตรียม Linux Lite ไว้ใช้เมื่อฉุกเฉิน

Linux มีหลายค่าย เช่น Ubuntu หรือ CentOS เป็นต้น เมื่อนำมาเพิ่มเติม Graphic User Interface (GUI) ให้ใช้งานได้ง่ายเช่นเดียวกับ Microsoft Windows ก็จะทำให้ Linux น่าใช้งานมาก สามารถใช้งานประจำวันได้เช่นเดียวกับ Microsoft Windows เลยนะครับ ผมจะข้ามเรื่องราวความเป็นมาของคำว่า Linux ไปนะครับ เอาเป็นว่าใครไม่รู้จักจริง ๆ ก็ Google Search เอานะครับ Linux ค่าย Ubuntu ถูกนำมาใส่ GUI โดยผู้พัฒนาหลายทีม ปัจจุบันจึงมีตัวเลือกให้ใช้งานอยู่เยอะมาก อันนี้บางคนก็ว่าเป็นข้อด้อยที่ทำให้มือใหม่ “งง” ไม่รู้จะเลือกตัวไหน ตัวที่ผมคิดว่าน่าใช้งานก็จะมี Linux Mint ซึ่งผมก็ใช้งานมาหลายปีทีเดียว วันนี้ผมพบว่ามี Trend ใหม่ที่ค่อนข้างน่าสนใจ คือ Linux Lite ครับ เป็นลิสต์ 1 ใน 5 ชื่อที่มีการโพสต์ไว้ในบล็อก “5 Lightweight Linux For Old Computers”  เป็น Linux ที่มีขนาดเล็กที่ทดสอบดูแล้วว่าใช้งานได้ดีกว่าอีก 4 ชื่อที่กล่าวถึงในบล็อกนั้น ยิ่งเล็กมากเป็นเบอร์ 1 นี่ จะไม่เหมาะสมที่จะนำมาใช้งานประจำวันได้เลย มันจะเหมาะกับงานแอดมินมากกว่า Linux Lite มีหน้าเว็บเพจที่มี Road Map ในการพัฒนาที่ชัดเจนทีเดียว ลองเข้าไปอ่านดูได้ที่ https://www.linuxliteos.com/ ครับ ทำให้ผมคิดว่าจะลองใช้งานตัวนี้แทน Linux Mint เพราะว่า Linux Lite มีขนาดที่เล็กกว่า และรู้สึกว่าใช้งานได้ง่าย ๆ เมนูก็คล้ายกับ Windows 7 ที่เราคุ้นเคย ผมตั้งชื่อบล็อกที่ผมเขียนในวันนี้ว่า “เตรียม Linux Lite ไว้ใช้เมื่อฉุกเฉิน” ผมคิดว่าพวกเราส่วนใหญ่จะใช้ Microsoft Windows กันทุกวัน แต่หากว่าวันใดที่เครื่องของเรา หรือ เพื่อนเรายกเครื่องมาให้เราช่วยดูเมื่อเกิดปัญหา หลาย ๆ ครั้งเรื่องราวมันจะจบลงที่ระบบปฏิบัติการเสียหาย ต้องล้างเครื่อง (Format) ใหม่ หรือไม่ก็อาจเกี่ยวกับ USB Flash Drive ที่ใช้เก็บไฟล์ข้อมูลที่ไปติดไวรัสคอมพิวเตอร์มาจากเครื่องคอมฯที่อื่น หากเราเรียนรู้วิธีการในวันนี้จะช่วยให้เราพร้อมที่จะจัดการปัญหาได้ทั้งแก่ตัวเองและช่วยเหลือเพื่อนของเราครับ ที่ผมจะทำก็คือผมจะติดตั้ง Linux Lite ลงไปใน USB Flash Drive เมื่อติดตั้งเสร็จแล้ว เราก็นำไปเสียบเข้าที่เครื่องคอมฯที่ BIOS สามารถตั้งค่าให้ boot USB Hard Disk ได้ เราจะต้องทำดังนี้ 1. ให้แน่ใจว่า USB Flash Drive มีขนาดไม่น้อยกว่า 8 GB และพร้อมให้ฟอร์แมตได้ 2. ในเครื่อง Windows ของเรามีโปรแกรมที่ใช้สำหรับเขียนไฟล์ .iso ลงไปใน USB Flash Drive ได้ ผมเลือกใช้โปรแกรมชื่อว่า Rufus ล่าสุดคือรุ่น 2.14 3. ไปยังเว็บไซต์ https://www.linuxliteos.com/ เพื่อดาวน์โหลดไฟล์ .iso ล่าสุดคือรุ่น 3.4 เลือกว่าจะเอา 32 Bit หรือ 64 Bit ไม่ต่างกันครับ (32 Bit จะนำไปใช้กับเครื่องที่มี RAM มากกว่า 4 GB ไม่ได้ครับ และ 64 Bit ก็จะนำไปใช้กับเครื่องเก่า ๆ ที่เมนบอร์ดเป็น 32 Bit ไม่ได้) 4. ขั้นตอนติดตั้งคือ เสียบ USB Flash Drive จากนั้น เปิดโปรแกรม Rufus เลือกตำแหน่งที่วางไฟล์ .iso

Read More »

วิธีติดตั้ง Kubernetes ด้วย CoreOS (ตอนที่ 2 Worker Node)

ถ้าต้องการระบบจัดการ docker container สักตัวต้องทำอย่างไร (ตอนที่ 2)             จากตอนก่อนหน้านี้ รู้จักกับ Kubernetes และวิธีติดตั้ง Kubernetes ด้วย CoreOS (ตอนที่ 1 Master Node)[1] ก็มาต่อด้วยการติดตั้งบนเครื่อง Worker ต่อครับ  วิธีการติดตั้ง Kubernetes Worker Node[2] ทำการติดตั้ง CoreOS บน Worker Node สร้าง directory ดังนี้ sudo mkdir -p /etc/kubernetes/ssl ทำการ copy ที่สร้างไว้ก่อนหน้านี้มาไว้ใน folder ดังนี้ File: /etc/kubernetes/ssl/ca.pem File: /etc/kubernetes/ssl/${WORKER_FQDN}-worker.pem File: /etc/kubernetes/ssl/${WORKER_FQDN}-worker-key.pem เปลี่ยน permission และ owner file เฉพาะไฟล์ -key* ดังนี้ sudo chmod 600 /etc/kubernetes/ssl/*-key.pem sudo chown root:root /etc/kubernetes/ssl/*-key.pem ทำการทำ link เผื่อให้ config แต่ละ worker เหมือน ๆ กัน cd /etc/kubernetes/ssl/ sudo ln -s ${WORKER_FQDN}-worker.pem worker.pem sudo ln -s ${WORKER_FQDN}-worker-key.pem worker-key.pem จากนั้นตั้งค่า flannel network เป็น network ที่เอาไว้เชื่อมแต่ละ pod ให้สามารถคุยกันได้ข้ามเครื่อง เพื่อสร้างวง virtual ip ให้กับ pod ดังนี้ sudo mkdir /etc/flannel ทำการสร้างไฟล์ option.env sudo vim /etc/flannel/options.env เนื้อหาในไฟล์ดังนี้ FLANNELD_IFACE=<Worker IP> FLANNELD_ETCD_ENDPOINTS=http://<Master IP>:2379,http://<Node1 IP>:2379,http://<Node2 IP>:2379 จากนั้นทำการสร้าง flannel service ดังนี้ sudo mkdir -p /etc/systemd/system/flanneld.service.d/ sudo vim /etc/systemd/system/flanneld.service.d/40-ExecStartPre-symlink.conf เนื้อหาในไฟล์ดังนี้ [Service] ExecStartPre=/usr/bin/ln -sf /etc/flannel/options.env /run/flannel/options.env จากนั้นทำการตั้งค่า docker เพื่อกำหนดให้ใช้งานผ่าน flannel โดยสร้างไฟล์ config ดังนี้ sudo mkdir -p /etc/systemd/system/docker.service.d sudo vim /etc/systemd/system/docker.service.d/40-flannel.conf เนื้อหาในไฟล์ดังนี้ [Unit] Requires=flanneld.service After=flanneld.service [Service] EnvironmentFile=/etc/kubernetes/cni/docker_opts_cni.env โดยที่ทำสร้างไฟล์ docker_opts_cni.env ขึ้นมาประกอบดังนี้ sudo mkdir -p /etc/kubernetes/cni sudo vim /etc/kubernetes/cni/docker_opts_cni.env เนื้อหาในไฟล์ดังนี้ DOCKER_OPT_BIP=”” DOCKER_OPT_IPMASQ=”” จากนั้นทำการ restart docker service สักรอบดังนี้ sudo systemctl restart docker หนังจากนั้นทำการสร้าง config ไฟล์สุดท้ายสำหรับ flannel ดังนี้ sudo mkdir -p /etc/kubernetes/cni/net.d sudo vim /etc/kubernetes/cni/net.d/10-flannel.conf เนื้อหาในไฟล์ดังนี้ { “name”: “podnet”, “type”: “flannel”, “delegate”: { “isDefaultGateway”: true } } ทำการ start flannel service

Read More »

รู้จักกับ Kubernetes และวิธีติดตั้ง Kubernetes ด้วย CoreOS (ตอนที่ 1 Master Node)

ถ้าต้องการระบบจัดการ docker container สักตัวต้องทำอย่างไร             เมื่อกล่าวถึงระบบจัดการ docker container สักตัวหนึ่ง มักจะกล่าวถึง opensource ตัวหนึ่งชื่อ kubernetes ซึ่งเป็นเครื่องมือที่พัฒนาขึ้นมาด้วย Google[1] ซึ่งสามารถรองรับทั้งในส่วนของ Google Container Engine และ CoreOS จริง ๆ ลงได้บนอีกหลาย platform แต่สำหรับ CoreOS ได้ออกแบบมาให้รองรับ Kubernetes ทำให้การติดตั้งง่ายและสมบูรณ์มากขึ้น (อ่านไปเรื่อย ๆ จะสงสัยนี่ง่ายแล้วเหรอ แต่หลังจากเขียนบทความนี้เสร็จก็มีตัวติดตั้งตัวใหม่ชื่อ Tectonic[6] น่าจะเป็นตัวที่ทำให้การติดตั้งง่ายขึ้นครับ)             Kubernetes เป็นเครื่องมือที่ช่วย build, deploy และ scale ให้เป็นเรื่องง่าย ๆ และสามารถ replicate containner ได้ง่ายมาก การติดตั้ง Kubernetes บน Google Container Engine ง่ายมาก แต่การติดตั้งบน CoreOS จะยากกว่า ซึ่งสามารถติดตั้งแบบ Single Node และ Multi-Node ซึ่งถ้าจะทำ Multi-Node ต้องเชื่อมต่อไปยัง etcd service ที่ติดตั้งบน CoreOS Cluster ด้วยก็จะดีครับ (ไม่งั้นเป็น Cluster ที่ไม่สมบูรณ์) สามารถอ่านเพิ่มเติมได้ที่วิธีการติดตั้ง CoreOS Cluster[2] (ในบทความใช้ก่อนหน้านี้ CoreOS Cluster เขียนในส่วน ETCD Version 2 แต่การใช้งานกับ Kubernetes ต้องใช้ ETCD Version 3 ตอนนี้ยังไม่มีบทความเสริมในส่วนนี้ อาจจะต้องหาข้อมูลเองก่อนครับ จริง ๆ มีวิธีแต่ยังยากในการเขียนบทความ ไว้ค่อยเขียนเพิ่มให้อีกทีครับ) ซึ่งแน่นอนระหว่าง master node และ worker node มีการตรวจสอบเรื่อง certificate ระหว่าง service ด้วย             ตัวอย่าง Diagram ของระบบทั้งหมด[3] เรียนรู้การค่าเบื้องต้นก่อนการติดตั้ง[4] MASTER_HOST : คือ ชื่อ host ที่ node ลูกเอาไว้ติดต่อและให้เข้าถึงจาก external client  เช่นเวลาสั่งสร้างเครื่องก็จะสั่งผ่านตัวนี้ ในกรณที่ต้องการทำ HA MASTER_HOST จะถูกใช้เป็น load balance โดยใช้ร่วมกับ DNS name โดยการคุยกันระหว่าง MASTER_HOST และ worker (node ลูก) จะใช้ port 443 และมีการเข้ารหัสและยืนยันด้วย TLS Certificate ETCD_ENDPOINT : คือ บริการของ etcd service ซึ่งมีใน CoreOS Cluster ที่ติดตั้งไว้ ให้ใส่ไปให้หมดว่ามีเครื่องอะไรบ้าง คั่นด้วย , (ในที่นี้ไม่ได้ใช้ fleet สร้างเครื่อง หลังจากลงเสร็จจะใช้ kubectl สร้างแทน) POD_NETWORK : เช่น 10.2.0.0/16 ใช้สำหรับกำหนดวง IP ของ pod (pod คือ ชื่อเรียก container อาจจะแค่ 1 container เหรือเรียกเป็นกลุ่มของหลาย ๆ container ที่สร้างด้วย kubernetes) SERVICE_IP_RANGE : เช่น 10.3.0.0/24 ใช้สำหรับ service

Read More »