Category: Operating System

  • สั่งให้ Excel พูดด้วยเครื่องมือ Speak Cells

    สำหรับ blog ในวันนี้ ทางผู้เขียนขอแนะนำเทคนิคการใช้งานเครื่องมือใน Quick Access Toolbar (QAT) ที่จะสามารถทำให้เราทำงานได้เร็วขึ้น โดยการเลือกเครื่องมือที่มีการใช้งานบ่อยๆ มาไว้ในที่ที่เข้าถึงง่าย

     

    แล้ว Quick Access Toolbar คืออะไร ?

    อธิบายแบบง่ายๆ เลยนะ มันคือ แถบคำสั่งที่อยู่มุมบนด้านซ้ายของตัวโปแกรมชุด Office ไม่ว่าจะเป็น Excel, Word หรือ PowerPoint เพื่อให้เราสามารถเรียกใช้งานคำสั่งต่างๆ ได้อย่างรวดเร็ว ที่เราเห็นอยู่บ่อยๆ คือพวกปุ่ม Save, Undo, Redo นั่นแหละ

     

    แล้วถ้าหากเราต้องการ Add คำสั่งอื่นๆ เพิ่มเข้ามาละ จะต้องทำยังไง ?

    วิธีการเพิ่มคำสั่งใน Quick Access Toolbar

    1. วิธีที่หนึ่ง สามารถ Add ได้จากปุ่มที่เห็นอยู่แล้ว ดูตัวอย่างได้ตามรูปด้านล่าง
      • คลิกขวาบนคำสั่งที่ต้องการ จากนั้นเลือก Add to Quick Access Toolbar
    2. วิธีที่สอง คลิก Add More Command (วิธีนี้สามารถเลือกคำสั่งแบบแปลกๆ ที่เราไม่ค่อยจะได้เห็นเข้ามาได้ด้วย) ดูตัวอย่างได้ตามรูปด้านล่าง
      • คลิกเลือกสัญลักษณ์ สามเหลี่ยม ดังรูป เลือก “More Commands…”
      • Choose commands from ให้เลือกแสดงเป็นแบบ All Commands หากอยากเห็นทั้งหมด หรือจะเลือกแบบ Commands Not in the ribbon ก็ได้นะ เดี๋ยวมันจะกรองให้ ตัวอย่างดังรูป
      • จากนั้นเราจะเห็นเมนูทั้งหมด สามารถเลือกคำสั่งที่ต้องการและ คลิกปุ่ม “Add” จากนั้นคลิกปุ่ม “OK” เพื่อยืนยันการเพิ่มคำสั่งดังกล่าว
      • สำหรับคำสั่งที่เราจะเลือกแนะนำใน Blog นี้คือ คำสั่ง “Speak Cells”
      • เมื่อเรา Add Commands เสร็จเรียบร้อยแล้ว เราก็จะเห็นสัญลักษณ์คำสั่งดังกล่าวเพิ่มเข้ามาในส่วนของ Quick Access Toolbar

    ซึ่งประโยชน์ของเจ้าคำสั่งนี้เนี่ย คือการที่โปรแกรมจะช่วยทวนสิ่งที่เราพิมพ์เข้าไป เพื่อลดความผิดพลาด โดยไม่ต้องมานั่งเสียเวลาอ่านทวนซ้ำในสิ่งที่เราพิมพ์เข้าไปนั่นเอง (แต่ต้องเป็นภาษาอังกฤษนะ)

    ทางผู้เขียนหวังเป็นอย่างยิ่งว่า เกร็ดความรู้เล็กๆน้อยๆ เหล่านี้น่าจะมีประโยชน์สำหรับใครหลายๆ คน (รวมถึงตัวผู้เขียนด้วย) ซึ่งนอกเหนือจาก Commands ดังกล่าวนั้น Excel ก็ยังมีเครื่องมือเจ๋งๆ ที่เราสามารถ Add เข้ามายัง Quick Access Toolbar เพิ่มเติมได้อีกเยอะแยะมากมาย ผู้อ่านสามารถทดลองคลิกๆ เลือกๆ เพิ่มเข้ามาได้เลย ไม่ต้องกลัวโปรแกรมจะเจ๊งงงงนะ ไม่ลองเล่นก็จะไม่รู้น่ะแจ๊ะ แฮ่ ^____^

     

    ขอบคุณแหล่งข้อมูลอ้างอิง

    • https://www.sara2u.com/tips-trick.html
    • http://www.inwexcel.com/
  • การสลับภาษาด้วย “~” Linux Mint 18.2 64 bit

            สำหรับใครที่ในช่วงนี้เบื่อๆเซ็งๆระบบปฎิบัติการ Windows อยากลองอะไรใหม่ๆให้กับชีวิตบ้าง ใจก็อยากไป macOS แหละ ครั้นจะเอามาลงที่เครื่องเรา มันได้เหรอ(คิดในใจเบาๆ) ว่าแล้วก็หันไปซบอก OpenSource อย่าง linux ดีกว่า linux ก็จะประสบปัญหาการเปลี่ยนภาษาเหมือนตอนที่เราลง Windows ใหม่ๆ ต้องกด Left Alt + Shift เพื่อเปลี่ยนภาษา มันก็จะลำบากหน่อยๆ กดไปบ้างไม่ไปบ้างแต่คนที่ชินแล้วก็ปล่อยเขาไปนะค่ะ ส่วนเรายังไม่ชินปกติก็จะใช้ Grave “~” ตลอด ซึ่ง linux เดิมจะใช้ ปุ่ม Ctrl+Shift ในการเปลี่ยนภาษา สืบไปสืบมาได้ความว่า linux จะใช้ “~” แทนการอ้างอิง path home จึงไม่สามารถใช้ “~” เปลี่ยนภาษาได้ แต่สำหรับใครที่ยังไม่ชินก็สามารถติดตั้งโปรแกรมเพิ่มเติม เพื่อให้สามารถเปลี่ยนภาษาได้เนอะ

                ก่อนอื่นต้องทำการ download โปรแกรมมาติดตั้งติดตั้งในเครื่องเพื่อใช้ในการสลับภาษาโดยชื่อว่าgrave-key.tar.gz สามารถ download ได้ที่ http://noc.rmutl.ac.th/main/wp-content/plugins/download-monitor/download.php?id=29
           

    วิธีการติดตั้ง

    1. ไฟล์ที่ download มาจะมีนามสกุล .gz โดยเป็นไฟล์ zip ประเภทหนึ่งบนระบบปฎิบัติการ linux ดังนั้นก่อนการใช้งาน จึงต้องทำการ คลาย zip ก่อน โดยโปรแกรม zip จะถูกติดตั้งเป็นโปรแกรมพื้นฐานมาแล้ว จึงสามารถใช้งานได้ทันที โดยวิธีการคลายzip เข้าไปยังตำแหน่งไฟล์ที่ download คลิกขวาที่ไฟล์ แล้วเลือก “open with archive manager” โปรแกรมที่ไช้ในการคลาย zip จะถูกเปิดขึ้นมา หลังจากนั้น กด Extract แล้วเลือกตำแหน่ง เก็บไฟล์ ดังภาพที่ 1                                  ภาพที่ 1  Extract File ด้วย open with archive manager
    2. ทำการ install โปรแกรม โดยใช้ command ในส่ง install 
      • เปิดโปรแกรม terminal เข้าไปยังตำแหน่ง path ที่ไฟล์โปรแกมอยู่
      • run โปรแกรม ด้วยคำสั่ง ./script.sh
                                                               ภาพที่ 2 run โปรแกรม
    3. ตั้งค่า keyboard เพื่อให้สามารถใช้งานได้ โดยเปิดโปรแกรม Keyboard ตามขั้นตอนดังภาพที่ 3 หรือ Search คำว่ “keyboard” ตรงรูปแว่นขยายด้านบน                                                     ภาพที่ 3 Keyboard Settings
    4.  จากภาพที่ 4 เลือก Tab Layout แล้วกดปุ่ม Options
      • เลือก Layout switching (ดูภาพที่ 5)
      • ติ๊กที่ช่อง Grave switches layout หลังจากนั้น ปิดโปรแกรม ก็จะสามารถใช้ “~” ในการเปลี่ยนภาษาได้ เหมือนกับ Windows ปกติ (ดูภาพที่ 6)

    ภาพที่ 4 Keyboard Layout

    ภาพที่ 5 Layout switching

    ภาพที่ 6 Options

  • App Analytics: เครื่องมือจัดเก็บวิเคราะห์สถิติและเฝ้าระวัง แอพลิเคชั่นบน iOS

    นักพัฒนาหลายท่านโดยเฉพาะ นักพัฒนาเว็บ น่าจะคุ้นเคยกับบริการเก็บข้อมูลและวิเคราะห์ สกิติเว็บไซด์อย่างเช่น Google Analytic เป็นอย่างดี ซึ่งในปัจจุบันถือว่ามีความจำเป็นมากที่นักพัฒนาต้องบอกได้ว่า ผู้ใช้ของเรามีจำนวนเท่าไหร่ เกิดข้อผิดพลาดมากน้อยเพียงใด และช่วงเวลาใดที่มีการใช้งานเยอะ เพื่อเตรียมทรัพยากรให้เพียงพอต่อการให้บริการ รวมถึงการกำหนดเวลาปิดระบบเพื่อบำรุงรักษา ได้อย่างมีประสิทธิภาพ

    ในส่วนของ แอพลิเคชั่นบนระบบปฏิบัติการ iOS เองก็มีเครื่องมือที่ชื่อว่า App Analytics ให้ใช้งาน โดยที่นักพัฒนาไม่ต้องทำอะไรเพิ่มเติม เพียงแค่แอพพลิเคชั่นของท่านอยู่ในสถานะ พร้อมให้ใช้งาน (Ready For Sale) ก็สามารถเข้าใช้งาน App Analytics ได้ทันที โดยมีขั้นตอน และการแปลผลดังนี้

    1. เข้าไปยัง https://itunesconnect.apple.com ทำการ Login ด้วย Apple Developer Account
    2. เลือกเมนู App Analytics
    3. เมื่อเข้าไปยังหน้าแรกจะมีรายการแอพพลิเคชั่นของเราแสดงอยู่ พร้อมข้อมูลเบื้องต้น ในระยะเวลา 1 เดือนล่าสุด (สามารถเปลี่ยนช่วงเวลาได้) โดยข้อมูลที่แสดงอยู่ประกอบไปด้วย
      1. Impressions : จำนวนครั้งที่แอพพลิเคชั่นของเราปรากฏให้ผู้ใช้เห็นเช่น อยู่ในผลการค้นหา, แอพแนะนำ, Top Chart หรือเมื่อผู้ใช้เปิดดูหน้าข้อมูลแอพพลิเคชั่นของเรา เพื่อใช้ดูว่าจำนวนการดาวส์โหลด เมื่อเทียบกับจำนวน Impressions แล้ว ความสนใจในแอพของเรามีมากน้อยเพียงใด
      2. App Units: จำนวนเครื่องที่ติดตั้งแอพพลิเคชั่นของเราอยู่
      3. Sales: จำนวนเงินรวม ที่ขายได้
      4. Sessions: จำนวนการเปิดใช้งาน
      5. Crashes: จำนวนข้อผิดพลาดที่เกิดขึ้นขณะใช้งาน
    4. เมื่อคลิกเลือกที่รายการ แอพลิเคชั่น จะแสดงข้อมูล Impressions, Product Page Views, App Units, In-App Purchases, Sales, Sessions, Active Devices, Crashes ในรูปแบบกราฟ อยู่ส่วนบนสุด
    5. ถัดมาจะเป็น Info graphic แยกตามประเทศ โดยสามารถเลือกได้ว่าเป็นข้อมูล App Units, Sessions, Active Devices เป็นต้น
    6. ล่างสุดจะเป็นกราฟวงกลม แยกตามอุปกรณ์ โดยสามารถเลือกได้ว่าเป็นข้อมูล App Units, Sessions, Active Devices ได้เช่นกัน
    7. หากต้องการดูข้อมูลในมุมมองอื่นๆ หรือกำหนดเงื่อนไขเพิ่มเติมเพื่อดูในรูปแบบกราฟเส้น สามารถเลือกเมนู Metrics และกำหนดค่าต่างๆได้ตามต้องการ
    8. จากหน้าจอกราฟแบบ Metrics สามารถ Export ออกเป็น Excel ได้โดยกดปุ่ม
  • Test Flight: อัพโหลดแอพลิเคชั่นขึ้นทดสอบบน App Store โดยผู้ใช้จริง

    ไม่ว่าจะพัฒนาแอพลิเคชั่นด้วยวิธีการใดก็ตาม เมื่อพัฒนาเสร็จเรียบร้อย และผ่านการทดสอบจากผู้พัฒนาเองโดยการใช้ Simulator หรืออุปกรณ์ที่ลงทะเบียนไว้ เรียบร้อยแล้ว สำหรับแอพพลิชั่น ที่มีผู้ใช้จำนวนมาก และต้องรองรับกับความหลากหลายของอุปกรณ์ทั้งรุ่นของระบบปฏิบัติการ ขนาดหน้าจอ และฮาร์ดแวร์ จำเป็นต้องมีการทดสอบ โดยผู้ใช้จริงจำนวนหนึ่งเพื่อวัตถุประสงค์ในการลดข้อผิดพลาด เมื่อเปิดให้ใช้งานจริง โดยมีขั้นตอนดังต่อไปนี้

    1. เข้าไปยัง https://itunesconnect.apple.com ทำการ Login ด้วย Apple Developer Account
    2. เลือกเมนู My Apps
    3. จะเข้าสู่หน้าจอจัดการ หากยังไม่มี Application Record ต้องทำการสร้างก่อน โดยคลิกที่ปุ่ม จากนั้นจะได้หน้าจอสำหรับป้อนข้อมูลแอพพลิเคชั่นของเรา กรอกข้อมูลให้ครบถ้วน
    4. จากนั้นกรอกข้อมูลอื่นๆ อัพโหลดภาพตัวอย่างตามข้อกำหนดของ Apple ให้ครบถ้วน (รายละเอียดในส่วนนี้สามารถอ่านเพิ่มเติมจาก https://developer.apple.com/app-store/review)
    5. เมื่อสร้าง Application Record เรียบร้อย เลือกที่ไอคอนแอพลิเคชั่นของเรา จะได้หน้าจอดังรูป
    6. เลือกเมนู TestFlight จะแสดงหน้าจอรายการ Build (ไฟล์ ipa ของแอพลิเคชั่น) ที่เราได้อัพโหลดไว้กรณีไม่ปรากฏดังตัวอย่าง แสดงว่าไม่มี Build ที่อยู่ในสถานะที่จะใช้งาน TestFlight ได้ให้ทำการอัพโหลดใหม่
    7. เมื่ออัพโหลดไฟล์ IPA เรียบร้อยแล้ว จะปรากฏ Build ที่สามารถเปิดให้ทดสอบได้ ดังรูป
    8. จัดการข้อมูลผู้ทดสอบโดยเลือกเมนู All Testers ด้านซ้ายมือ ในส่วนนี้สามารถทำการลบรายการผู้ทดสอบได้ โดยการกดปุ่ม Edit เลือกรายการที่ต้องการลบ จะปรากฏเมนูปุ่ม Remove ให้สามารถลบได้
    9. หากต้องการเพิ่มผู้ทดสอบจะต้องเลือกเมนู iTunes Connect Users (อีเมลที่ได้รับการเพิ่มเป็นสมาชิกของทีมใน Apple Developer Account) หรือ External Testers (อีเมลอื่นๆ) โดยสามารถกดปุ่ม จากนั้นสามารถเลือกได้ว่าจะเพิ่มรายบุคคล หรือโหลดจากไฟล์ CSV
    10. เมื่อมีรายการผู้ทดสอบครบถ้วนแล้วให้กลับไปที่เมนู Build คลิกเลือก จะปรากฏหน้าจอสำหรับเลือกผู้ทดสอบที่ต้องการให้ทดสอบ Build นี้ โดยสามารถเพิ่มจากชื่อกลุ่ม หรือ รายบุคคลก็ได้
    11. จากนั้นกรอกข้อมูลสำหรับทำ External Testing โดยคลิกที่เมนู Test Information กรอกข้อมูลให้ครบถ้วน
    12. เมื่อเสร็จกระบวนการข้างต้น ผู้ทดสอบที่เป็นสมาชิกภายใน (อีเมลที่ลงทะเบียนเป็น Member ของ Apple Developer Account) จะได้รับอีเมล Invite สามารถทดสอบได้ทันที ส่วนผู้ทดสอบภายนอกจะต้องรอให้ผ่านกระบวนการรีวิวจากทาง Apple 
    13. จากนั้นแจ้งให้ผู้ใช้ดาวส์โหลด TestFlight App เพียงเท่านี้ก็สามารถโหลดแอพของเรา และทดสอบการใช้งานแอพบนเครื่องที่ใช้งานจริงได้แล้วครับ

     

     

  • TeamViewer QuickSupport

    สำหรับการเขียน blog ในรอบนี้ คิดอยู่นานว่าจะเขียนอะไรดี แต่เนื่องด้วยภาระหน้าที่ในงานส่วนใหญ่ที่ทำ

    คือการ support ให้กับลูกค้า และ ณ ปัจจุบันนี้ กลุ่มของลูกค้าที่ทางผู้เขียนต้องติดต่อประสานงานด้วยนั้น

    ก็หลากหลายมากกกกก (กอ ไก่ หมื่นตัว – -“) และปัญหาหลักๆ ที่เกิดขึ้นก็คือ การอธิบายปัญหาระหว่างลูกค้า

    และตัวเรานั้น “เข้าใจไม่ตรงกัน”

     

    ดังนั้นวันนี้ทางผู้เขียนจึงอยากจะแนะนำ Application ที่จะช่วยให้การติดต่อ ระหว่างเครื่อง Notebook ของเรา

    กับเจ้า Tablet หรือ Smartphone ของลูกค้า ง่ายขึ้นไปอี๊กกกก ^__^

     

    TeamViewer QuickSupport เป็น Application ที่มีให้ดาวน์โหลดทั้งบน iOS และ Android ละนะ

    สำหรับตัวอย่างหน้าตา App ก็คล้ายๆ ตัว TeamViewer ที่เราใช้บน PC หรือ Notebook นี่แหละ

     

    ** แต่ต้องขอบอกก่อนว่า feature ที่ได้เนี่ยอาจจะไม่เหมือนกันนะ สำหรับ samsung ก็จะมี quicksupport for samsung เลย สำหรับรุ่นอื่นๆ ก็อาจจะต้องมีการลง add-on เพิ่มเติม เพื่อที่จะสามารถใช้งาน feature remote control

    ได้ และสำหรับเจ้า add-on เนี่ย ก็ไม่ได้มีทุกค่ายนะ ยังไงก็สามารถทดลองเล่นๆ กันดูได้

    • เริ่มแรกก็สามารถเข้าไปดาวน์โหลดได้ที่ Play Store ค้นหา App teamviewer quicksupport จากนั้นคลิก Install กันได้เลย เมื่อติดตั้งเรียบร้อยแล้วก็ Open โปรแกรมขึ้นมา *** สำหรับเครื่องไหนที่จะต้องดาวน์โหลด add-on เพิ่มเติม มันก็จะมี pop up แจ้งบอกเรานะ สำหรับ add-on ก็มีจะเยอะแยะหลายรุ่น ลองเลือกๆ กันดูได้เลย
    • เปิด TeamViewer บน PC หรือ Notebook ขึ้นมา เพื่อเริ่มต้นการ Remote หน้าจอของผู้ใช้ นำ Your ID ของลูกค้ามากรอกในช่อง Partner ID จากนั้น คลิก connect to partner *** แต่ถ้าคอมพิวเตอร์เราไม่มีโปรแกมดังกล่าว ก็สามารถเข้าผ่าน https://start.teamviewer.com ได้เหมือนกันนะ

    • เมื่อเริ่มต้น connect บนฝั่งของทาง smartphone ของลูกค้าก็จะมีการให้ยืนยันการเชื่อมต่อ ว่าจะ อนุญาต หรือปฏิเสธ ให้เลือกอนุญาต จากนั้นการเชื่อมต่อก็จะพร้อมใช้งานได้ทันที 🙂
    • เมื่อเชื่อมต่อเรียบร้อยแล้ว เราก็จะเห็นหน้าจอของลูกค้า ผ่านทางเครื่องคอมพิวเตอร์ของเรา และสามารถควบคุมอุปกรณ์ได้จากระยะไกล หรือสามารถตรวจสอบสถานะอุปกรณ์ ติดตั้ง App หรือจะตั้งค่าข้อมูลต่างๆ บน Smartphone หรือ Tablet ของลูกค้าได้อย่างง่ายดาย

    จากนี้ต่อไป ไม่ว่าลูกค้าของเราจะอยู่ส่วนไหนของมุมโลก เพียงแค่มี Internet และ App เทพตัวนี้ Teamviewer quicksupport เราก็จะสามารถ Remote เพื่อเข้าไปดูหน้าจอจริงๆ ไปดูปัญหาที่ลูกค้าเจอจริงๆ ได้อย่างง่ายดาย

    และรวดเร็ว

    สรุปประโยชน์ของ App ตัวนี้

    1. สามารถเชื่อมต่อ ระหว่าง เครื่องคอมพิวเตอร์ กับ อุปกรณ์เคลื่อนที่ เพื่อทำการช่วยเหลือ ในกรณีที่เกิดปัญหาต่างๆ ได้ทันที แม้จะอยู่กันคนละซีกโลก !
    2. สามารถถ่ายโอนไฟล์ระหว่างกันได้ เช่น รูปภาพ PDF หรืออื่นๆ
    3. สามารถ แชท (ส่งข้อความ) ระหว่างกันได้ทันที โดยไม่จำเป็นต้องโทรติดต่อกันให้ยุ่งยาก
    4. สามารถตรวจสอบ ข้อมูลอุปกรณ์ รายละเอียดของอุปกรณ์ (Smartphone หรือ tablet) ไม่ว่าจะเป็น CPU RAM หรือแม้แต่สถานะของ Battery ได้ด้วย
    5. สุดท้าย ท้ายสุด คือ App ตัวนี้ ฟรี !!!

    อย่างไรแล้วหากท่านไหนยังไม่เคยลองใช้งาน ก็ลองโหลดมาเล่นกันดูได้นะ ขนาดเล็ก ติดตั้ง และใช้งานง่ายเพียงแค่ปลายนิ้วสัมผัสจริงๆ แฮ่ 🙂

     

    อ้างอิง :

    https://www.teamviewer.com/th/download/mobile-apps/

  • วิธีการติดตั้ง Kubernetes Add-on DNS และ DashBoard

    Kubernetes มี DNS กับ GUI ให้ใช้งานบ้างไหม

                หลังจากติดตั้ง Kubernetes แล้วการสร้าง containner โดยในที่นี้เรียกว่า pod (ใช้เรียก 1 containner หรือกลุ่มของ containner ก็ได้) ซึ่งสามารถสร้างด้วยคำสั่ง Kubectl ได้เลย (สร้างจากที่ไหนก็ได้) สำหรับผู้ที่ยังไม่ได้ติดตั้ง ต้องติดตั้งก่อนตามวิธีติดตั้ง Kubernetes บน CoreOS ตอนที่ 1[1] และ ตอนที่ 2[2] 

    สำหรับ Add-on ที่แนะนำจะเป็น DNS และ Dashboard ซึ่งเรียกได้ว่าจำเป็นต้องมี ไม่งั้นชีวิตจะยุ่งยากขึ้นเยอะครับ คงไม่มีใครอยากดูรายการ pod เยอะ ๆ ด้วย command line กันนะครับ

     วิธีการติดตั้ง DNS-Addon[3]

    • เข้าไปยังเครื่องที่ติดตั้ง Kubectl ไว้แล้ว ทำการสร้าง yaml file ดังนี้ (ถ้า vim วางแล้วเพี้ยนให้ใช้ nano แทน)
      nano dns-addon.yaml

      เนื้อหาในไฟล์ดังนี้ (อย่าลืมเปลี่ยน > เป็น > เวลา Copy & Paste ด้วยครับ)

      apiVersion: v1
      kind: Service
      metadata:
        name: kube-dns
        namespace: kube-system
        labels:
          k8s-app: kube-dns
          kubernetes.io/cluster-service: "true"
          kubernetes.io/name: "KubeDNS"
      spec:
        selector:
          k8s-app: kube-dns
        clusterIP: <DNS Cluster-IP>
        ports:
        - name: dns
          port: 53
          protocol: UDP
        - name: dns-tcp
          port: 53
          protocol: TCP
      
      
      ---
      
      
      apiVersion: v1
      kind: ReplicationController
      metadata:
        name: kube-dns-v20
        namespace: kube-system
        labels:
          k8s-app: kube-dns
          version: v20
          kubernetes.io/cluster-service: "true"
      spec:
        replicas: 1
        selector:
          k8s-app: kube-dns
          version: v20
        template:
          metadata:
            labels:
              k8s-app: kube-dns
              version: v20
            annotations:
              scheduler.alpha.kubernetes.io/critical-pod: ''
              scheduler.alpha.kubernetes.io/tolerations: '[{"key":"CriticalAddonsOnly", "operator":"Exists"}]'
          spec:
            containers:
            - name: kubedns
              image: gcr.io/google_containers/kubedns-amd64:1.9
              resources:
                limits:
                  memory: 170Mi
                requests:
                  cpu: 100m
                  memory: 70Mi
              livenessProbe:
                httpGet:
                  path: /healthz-kubedns
                  port: 8080
                  scheme: HTTP
                initialDelaySeconds: 60
                timeoutSeconds: 5
                successThreshold: 1
                failureThreshold: 5
              readinessProbe:
                httpGet:
                  path: /readiness
                  port: 8081
                  scheme: HTTP
                initialDelaySeconds: 3
                timeoutSeconds: 5
              args:
              - --domain=cluster.local.
              - --dns-port=10053
              ports:
              - containerPort: 10053
                name: dns-local
                protocol: UDP
              - containerPort: 10053
                name: dns-tcp-local
                protocol: TCP
            - name: dnsmasq
              image: gcr.io/google_containers/kube-dnsmasq-amd64:1.4
              livenessProbe:
                httpGet:
                  path: /healthz-dnsmasq
                  port: 8080
                  scheme: HTTP
                initialDelaySeconds: 60
                timeoutSeconds: 5
                successThreshold: 1
                failureThreshold: 5
              args:
              - --cache-size=1000
              - --no-resolv
              - --server=127.0.0.1#10053
              - --log-facility=-
              ports:
              - containerPort: 53
                name: dns
                protocol: UDP
              - containerPort: 53
                name: dns-tcp
                protocol: TCP
            - name: healthz
              image: gcr.io/google_containers/exechealthz-amd64:1.2
              resources:
                limits:
                  memory: 50Mi
                requests:
                  cpu: 10m
                  memory: 50Mi
              args:
              - --cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1 > /dev/null
              - --url=/healthz-dnsmasq
              - --cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1:10053 > /dev/null
              - --url=/healthz-kubedns
              - --port=8080
              - --quiet
              ports:
              - containerPort: 8080
                protocol: TCP
            dnsPolicy: Default
    • จากนั้นทำการสร้าง pod ดังนี้
      kubectl create -f dns-addon.yaml
    • สามารถตรวจสอบสถานะการสร้าง pod และ log ได้ดังนี้
      kubectl get pods --namespace=kube-system
      kubectl logs kube-dns-v20-xxxxx -n=kube-system dnsmasq
    • โดยอันที่จริงมีอีกหลายแบบครับ มีแบบ auto scale ก็มีครับ ลองศึกษาดูใน Internet ครับ

      วิธีการติดตั้ง Dashboard-Addon[3]

    • เข้าไปยังเครื่องที่ติดตั้ง Kubectl ไว้แล้ว ทำการสร้าง yaml file ดังนี้ (ถ้า vim วางแล้วเพี้ยนให้ใช้ nano แทน)
      nano kube-dashboard-rc.yaml

      เนื้อหาในไฟล์ดังนี้

      apiVersion: v1
      kind: ReplicationController
      metadata:
        name: kubernetes-dashboard-v1.6.1
        namespace: kube-system
        labels:
          k8s-app: kubernetes-dashboard
          version: v1.6.1
          kubernetes.io/cluster-service: "true"
      spec:
        replicas: 1
        selector:
          k8s-app: kubernetes-dashboard
        template:
          metadata:
            labels:
              k8s-app: kubernetes-dashboard
              version: v1.6.1
              kubernetes.io/cluster-service: "true"
            annotations:
              scheduler.alpha.kubernetes.io/critical-pod: ''
              scheduler.alpha.kubernetes.io/tolerations: '[{"key":"CriticalAddonsOnly", "operator":"Exists"}]'
          spec:
            containers:
            - name: kubernetes-dashboard
              image: gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.1
              resources:
                limits:
                  cpu: 100m
                  memory: 50Mi
                requests:
                  cpu: 100m
                  memory: 50Mi
              ports:
              - containerPort: 9090
              livenessProbe:
                httpGet:
                  path: /
                  port: 9090
                initialDelaySeconds: 30
                timeoutSeconds: 30
    • จากนั้นสร้างอีกไฟล์ดังนี้
      nano kube-dashboard-svc.yaml

      เนื้อหาในไฟล์ดังนี้

      apiVersion: v1
      kind: Service
      metadata:
        name: kubernetes-dashboard
        namespace: kube-system
        labels:
          k8s-app: kubernetes-dashboard
          kubernetes.io/cluster-service: "true"
      spec:
        selector:
          k8s-app: kubernetes-dashboard
        ports:
        - port: 80
          targetPort: 9090
    • จากนั้นทำการสร้าง pod ดังนี้
      kubectl create -f kube-dashboard-rc.yaml
      kubectl create -f kube-dashboard-svc.yaml
    • สามารถตรวจสอบสถานะการสร้าง pod และทำการ forward port ได้ดังนี้
      kubectl get pods --namespace=kube-system
      kubectl port-forward kubernetes-dashboard-v1.6.1-XXXX 9090 --namespace=kube-system

       

    • หลังจากนั้นสามารถทดสอบเปิด Browser บนเครื่องที่รัน kubectl เพื่อทดสอบได้เลย (สามารถเปิดใช้งานได้ 2 วิธีคือผ่านช่องทางปกติ หรือใช้ kubectl ดึงมาจาก pod โดยตรงแล้วทำการ forward port ก็ได้)

                      จะเห็นว่าถ้าเป็น web จะดูอะไรก็ง่ายขึ้นเยอะครับ แต่เนื่องจากไม่มีระบบ login ก็ต้องระวังดี ๆ ถ้าจะเปิดให้ใครก็ได้ใช้งาน อาจต้องสร้าง proxy ดักให้ใส่รหัสผ่านก่อนชั้นหนึ่ง หรือจะเน้นใช้ command line อย่างเดียวก็ได้ครับ….

    ==================================

    Reference :

    [1] รู้จักกับ Kubernetes และวิธีติดตั้ง Kubernetes ด้วย CoreOS (ตอนที่ 1 Master Node) : https://sysadmin.psu.ac.th/2017/05/17/setup-kubernetes-coreos-section-1/

    [2] วิธีติดตั้ง Kubernetes ด้วย CoreOS (ตอนที่ 2 Worker Node) : https://sysadmin.psu.ac.th/2017/05/27/setup-kubernetes-coreos-section-2/

    [3] CoreOS -> Deploy Add-ons : https://coreos.com/kubernetes/docs/latest/deploy-addons.html

     

  • เตรียม 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 แล้วเลือกชื่อ USB Flash Drive แล้วกดปุ่มเพื่อติดตั้ง แล้วรอจนเสร็จ ถอด USB Flash Drive (ดูวิธีและภาพประกอบจากบล็อกที่เขียนไว้ เรื่อง “วิธีนำไฟล์ iso Linux Mint ลง USB Flash Drive ด้วยโปรแกรม Rufus for Windows“)

    ในตอนนี้ เราก็มี USB Flash Drive ที่พร้อมใช้เมื่อฉุกเฉินแล้ว แล้วใช้มันอย่างไรหละ

    ต่อไปก็เป็นขั้นตอนในการใช้งานเพื่อเข้าไป copy ไฟล์จากฮาร์ดดิสก์
    ขั้นตอนมีดังนี้ครับ
    1. บูตเครื่องด้วย USB Flash Drive Linux Lite ที่ทำเสร็จนั้น


    2. คลิกที่ไอคอน Home Folder เพื่อเปิดหน้าต่างโปรแกรม File Manager


    3. เสียบ USB Flash Drive Data ที่จะนำมาเก็บไฟล์จากฮาร์ดดิสก์ (ในรูปภาพคือไอคอนชื่อ MY_USB)


    4. คลิกเลือกไอคอนที่เป็นฮาร์ดดิสก์ของวินโดวส์


    5. ค้นหาไฟล์แล้ว เจอแล้วใช้วิธีการคลิกลากไปยังหน้าต่างของ USB Flash Drive Data (ตรงจุดนี้ไม่ทำรูปภาพให้ดูนะครับ ง่ายเหมือนใช้งาน Windows นะครับ)
    6. เมื่อเสร็จ ให้คลิกขวาที่ไอคอน USB Flash Drive Data และเลือกคำสั่ง Unmount

     

    และขั้นตอนในการใช้งานเพื่อจัดการลบไฟล์ใน USB Flash Drive ที่ติดไวรัส ก็คล้าย ๆ กัน
    ขั้นตอนมีดังนี้ครับ
    1. บูตเครื่องด้วย USB Flash Drive Linux Lite ที่ทำเสร็จนั้น
    2. เสียบ USB Flash Drive อันที่ติดไวรัสนั้น
    3. ค้นหาดูจะพบว่ามีโฟลเดอร์ที่มีชื่อแปลก ๆ เช่น ไม่มีชื่อแต่เป็นไอคอนรูปโฟลเดอร์ เป็นต้น
    4. ให้เปลี่ยนชื่อโฟลเดอร์จาก ไม่มีชื่อ เป็น ชื่ออะไรก็ได้ แค่นี้เอง

  • วิธีติดตั้ง 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 และตรวจสถานะการทำงานดู
      sudo systemctl start flanneld
      sudo systemctl enable flanneld
      sudo systemctl status flanneld
    • จากนั้นทำการสร้าง kubelet service ดังนี้
      sudo vim /etc/systemd/system/kubelet.service

      เนื้อหาในไฟล์ดังนี้ (KUBELET_IMAGE_TAG version สามารถตรวจสอบล่าสุดได้ที่ https://quay.io/repository/coreos/hyperkube?tab=tags)

      [Service]
      Environment=KUBELET_IMAGE_TAG=v1.6.2_coreos.0
      Environment="RKT_RUN_ARGS=--uuid-file-save=/var/run/kubelet-pod.uuid \
        --volume var-log,kind=host,source=/var/log \
        --mount volume=var-log,target=/var/log \
        --volume dns,kind=host,source=/etc/resolv.conf \
        --mount volume=dns,target=/etc/resolv.conf"
      ExecStartPre=/usr/bin/mkdir -p /etc/kubernetes/manifests
      ExecStartPre=/usr/bin/mkdir -p /var/log/containers
      ExecStartPre=-/usr/bin/rkt rm --uuid-file=/var/run/kubelet-pod.uuid
      ExecStart=/usr/lib/coreos/kubelet-wrapper \
        --api-servers=https://<Master_IP> \
        --cni-conf-dir=/etc/kubernetes/cni/net.d \
        --network-plugin=cni \
        --container-runtime=docker \
        --register-node=true \
        --allow-privileged=true \
        --pod-manifest-path=/etc/kubernetes/manifests \
        --cluster_dns=<DNS_SERVICE_IP> \
        --cluster_domain=<CLUSTER_DNS_NAME> \
        --kubeconfig=/etc/kubernetes/worker-kubeconfig.yaml \
        --tls-cert-file=/etc/kubernetes/ssl/worker.pem \
        --tls-private-key-file=/etc/kubernetes/ssl/worker-key.pem
      ExecStop=-/usr/bin/rkt stop --uuid-file=/var/run/kubelet-pod.uuid
      Restart=always
      RestartSec=10
      
      [Install]
      WantedBy=multi-user.target
    • ทำการ start kubelet service และตรวจสถานะการทำงานดู (ต้องรอสักพักเพราะ service จะต้องโหลด image มาติดตั้งให้ในการ start ครั้งแรก สามารถใช้คำสั่ง journalctl -xe เพื่อตรวจสอบสถานะการทำงาน) ซึ่งจะพบว่ายัง error เพราะยังไม่ได้ลง kube-apiserver (แนะนำลงตัวอื่นให้เสร็จให้หมดแล้วค่อยมา start kubelet service ก็ได้)
      sudo systemctl start kubelet
      sudo systemctl enable kubelet
      sudo systemctl status kubelet
    • หลังจากนั้นทำการติดตั้ง kube-proxy ดังนี้
      sudo vim /etc/kubernetes/manifests/kube-proxy.yaml

      มีเนื้อหาในไฟล์ดังนี้

      apiVersion: v1
      kind: Pod
      metadata:
        name: kube-proxy
        namespace: kube-system
      spec:
        hostNetwork: true
        containers:
        - name: kube-proxy
          image: quay.io/coreos/hyperkube:v1.6.2_coreos.0
          command:
          - /hyperkube
          - proxy
          - --master=https://${MASTER_IP}
          - --kubeconfig=/etc/kubernetes/worker-kubeconfig.yaml
          securityContext:
            privileged: true
          volumeMounts:
          - mountPath: /etc/ssl/certs
            name: "ssl-certs"
          - mountPath: /etc/kubernetes/worker-kubeconfig.yaml
            name: "kubeconfig"
            readOnly: true
          - mountPath: /etc/kubernetes/ssl
            name: "etc-kube-ssl"
            readOnly: true
        volumes:
        - name: "ssl-certs"
          hostPath:
            path: "/usr/share/ca-certificates"
        - name: "kubeconfig"
          hostPath:
            path: "/etc/kubernetes/worker-kubeconfig.yaml"
        - name: "etc-kube-ssl"
          hostPath:
            path: "/etc/kubernetes/ssl"
      
    • ต่อด้วยการตั้งค่า kubeconfig ดังนี้
      sudo vim /etc/kubernetes/worker-kubeconfig.yaml

      มีเนื้อหาในไฟล์ดังนี้

      apiVersion: v1
      kind: Config
      clusters:
      - name: local
        cluster:
          certificate-authority: /etc/kubernetes/ssl/ca.pem
      users:
      - name: kubelet
        user:
          client-certificate: /etc/kubernetes/ssl/worker.pem
          client-key: /etc/kubernetes/ssl/worker-key.pem
      contexts:
      - context:
          cluster: local
          user: kubelet
        name: kubelet-context
      current-context: kubelet-context
    • ในกรณีที่ต้องการแจ้ง systemd ว่าเรามีการเปลี่ยนข้อมูลใน config และต้องการ rescan ทุกอย่างอีกครั้งให้สั่งดังนี้
      sudo systemctl daemon-reload
    • จากนั้นทดสอบ restart kubelet service ใหม่อีกครั้งและตรวจสอบ status หรือ journalctl -xe เพื่อดูว่าการทำงานปกติหรือไม่ ถ้าไม่แก้ให้ถูกต้องแล้ว restart ใหม่อีกครั้งไปเรื่อย ๆ จนกว่าจะปกติ
      sudo systemctl restart kubelet

      จบไปแล้วครับสำหรับการติดตั้ง worker node ครับ ต่อด้วยการติดตั้ง Kubectl สำหรับตรวจสอบสถานะแต่ละ Node ครับ

    วิธีการติดตั้ง Kubectl[3]

    • ทำการ Download tool ในที่นี้จะติดตั้งลงบนเครื่องอื่นที่ไม่ใช่ coreos (อย่าลืม copy เอา ca.pem,admin.pem,admin-key.pem ไปด้วย) เพราะ coreos ไม่อนุญาติให้เขียนบนพื้นที่ ../bin (จริง ๆ ติดตั้งที่ใดก็ได้ OS ใดก็ได้ครับยกตัวอย่าง windows[4]) โดยเลือก Version ให้สอดคล้องกับที่ใช้งานอยู่ครับ
      curl -O https://storage.googleapis.com/kubernetes-release/release/v1.6.2/bin/linux/amd64/kubectl
    • จากนั้นทำการเปลี่ยน permission ให้ execute ได้ และ ทำการ copy ไป global command
      chmod +x kubectl
      sudo mv kubectl /usr/local/sbin/ 
    • จากนั้นทำการตั้งค่าโปรแกรม (ต้องรันทุกครั้งหลังจาก Restart เครื่อง)
      kubectl config set-cluster default-cluster --server=https://<MASTER_IP> --certificate-authority=<cer path>/ca.pem
      kubectl config set-credentials default-admin --certificate-authority=<cer path>/ca.pem, --client-key=<cer path>/admin-key.pem --client-certificate=<cer path>/admin.pem
      kubectl config set-context default-system --cluster=default-cluster --user=default-admin
      kubectl config use-context default-system
    • จากนั้นจะสามารถใช้คำสั่งตรวจสอบสถานะได้ดังนี้
      ./kubectl get nodes

    จบไปแล้วครับสำหรับวิธีติดตั้ง Worker Node และ Kubectl ถ้าทำไม่ได้ลองทำซ้ำ ๆ ดูครับ ลองดู docker logs <containner_id> ตรวจดูปัญหาใน docker และ journalctl -xe เพื่อตรวจสอบ service ดูครับ…..

    ==================================

    Reference :

    [1] รู้จักกับ Kubernetes และวิธีติดตั้ง Kubernetes ด้วย CoreOS (ตอนที่ 1 Master Node) : https://sysadmin.psu.ac.th/2017/05/17/setup-kubernetes-coreos-section-1/

    [2] CoreOS -> Deploy Kubernetes Worker Node(s) : https://coreos.com/kubernetes/docs/latest/deploy-workers.html

    [3] CoreOS -> Setting up kubectl : https://coreos.com/kubernetes/docs/latest/configure-kubectl.html

    [4] Running kubectl on Windows : https://github.com/eirslett/kubectl-windows

  • Regular Expression สำหรับเลือก field ที่ต้องการจาก CSV File

    ตัวอย่างเช่น มีข้อมูลแบบ

    a,b,c,d,e

    ต้องการเฉพาะ Column ที่ 3 นั่นคือต้องการ c

    ให้ Find

    ^([^,]*),([^,]*),([^,]*),([^,]*),([^,]*)

    แล้ว Replace ด้วย

    \3