Blog

  • 504 Gateway Timeout กับหน้าจองบัตรที่หายไป

    504 Gateway Timeout กับหน้าจองบัตรที่หายไป

    เคยใช่มั้ยคะ?

    ที่บางครั้งเวลาเราเข้าเว็บไซต์ต่างๆ แล้วต้องเจอกับสถานการณ์ เว็บพัง เว็บล่ม เข้าไม่ได้ ซึ่งหน้าเว็บมันก็จะบอก Code ซึ่งเป็นตัวเลขสามตัวมา เจอบ่อยๆหน่อยก็ 404 Page Not found แต่ว่าโค้ดพวกนี้นี่มันก็มีเยอะแยะมากมาย ซึ่งเราเองก็ไม่ได้ใส่ใจอะไรเพราะโค้ดมันเยอะเหลือเกินใครจะไปนั่งจำ  อย่างมากเจอ Error อะไร ก็ก้อปไปวางใน Google แล้วหาว่ามันคืออะไร

    แต่เนื่องจากล่าสุดได้มีเหตุการณ์ เว็บจองบัตรคอนเสิร์ต Wanna One ล่มค่ะ
    (ก็เหมือนอย่างที่เคยเป็นมากับเว็บจองตั๋วอื่นๆ) แต่ละคนก็วิเคราะห์กันไปต่างๆนาๆ ซึ่งก็มีทั้งที่ถูกและที่ต้องมีการปรับทัศนคติกันเพิ่มเติมสักหน่อย เพื่อให้ได้ข้อมูลที่ถูกต้อง แอดมินขออนุญาตหยิบเหตุการณ์นี้มาพูดถึง เพื่อไขข้อข้องใจ ในแบบฉบับมนุษย์อ่านได้ ยายอ่านก็เข้าใจ

    อะไรเอ่ย ยังไม่ทันได้จองก็หมดแล้ว!!?
    ( source : facebook.com/WannaOne1TheWorldinBKK/ )

     เรื่องมันเริ่มจากที่…

    เมื่อวันเสาร์ที่ 9 มิถุนายน 2018 ได้มีการเปิดจองบัตรคอนเสิร์ต Wanna One ที่เว็บไซต์ (https://www.wannaone1theworldinbkk.com/)
    โดยทางเว็บไซต์ได้เปิดให้จองตั้งแต่เวลา  10:00 น เป็นต้นไป…. ซึ่งพอถึงเวลาจองแล้วนั้น…..

    สวัสดีจ้า 504-Gateway Timeout
    (และอื่นๆ อีกมากมาย อาทิเช่น 503, 404)

    (source : https://twitter.com/DDnxShop/status/1005341740264329216)

     ในวันนั้นก็เกิดปรากฎการณ์ทางโซเชียลมากมาย  

    ตั้งแต่การที่ทุกคนร่วมใจกันสรรเสริญพี่ 504 จนติดอันดับเทรนด์บน Twitter เกิดการนำเลขไปแทงหวย เกิดกูรูผู้รู้ตื่นด้วยการพยายาม Inspect Element เข้าไปดู HTML เพื่อหา Root ของปัญหา (ได้หรอ 555)  และที่พีคสุดคือพี่ 504 Gateway Timeout แกดังจนถึงขนาดมีเสื้อเป็นของตัวเอง ภายในเวลาแค่ไม่กี่ชั่วโมงจ้า

    (source: https://twitter.com/Nook_0995/status/1005302892109000704)

    ติดเทรนด์อันดับ 3 ซะด้วย เท่ปะ

    เสื้อก็มาจ้า

    หมวกก็ด้วยจ้า

    เอาไปซื้อลอตเตอรี่ก็ได้จ้า?

    ดังนั้น .. เวลาเราเห็นโค้ด Error ต่างๆขึ้นมาบนหน้าจอ ก็ให้ระลึกไว้เสมอเลยค่ะ ว่าตัวเลขพวกนี้ไม่ได้ขึ้นมาเพื่อใบ้หวย หรือบอกสายรถเมล์ขสมก.แต่อย่างใด เพราะมันคือ “HTTP Status Code” ซึ่งเจ้า code เนี้ย มันก็คือตัวเลขที่ถูกส่งมาจากเซิร์ฟเวอร์อีกที เพื่อบอกผู้ใช้งานว่า มันเกิดความผิดปกติอะไรขึ้นกับเว็บไซต์ ณ ตอนนั้น

     มารู้จัก HTTP Status Code แบบต่างๆกันก่อน

    ไม่ต้องไปจำหมดก็ได้ แต่สรุปง่ายๆเลยว่า

    504 Gateway Timeout Error = Server Error

     504-Gateway Timeout
    คืออะไรกันแน่ มาทำไมให้อายบ้านนา!?

    เวลาเราเปิด Browser เพื่อเข้าไปดูเว็บไซต์อะไรก็ตาม แน่นอนว่าระบบข้างหลังบ้านต้องมีการติดต่อสื่อสารกันแน่นอนค่ะ โดย Computer หรือฝั่ง Client อย่างเราๆนั้น นั้นจะคุยกับ Server ผ่าน HTTP (Hypertext Transfer Protocol)  โดยฝั่ง Client จะส่ง Request ออกไป แล้ว Server ก็จะ Response กลับมา ตามภาพด้านล่าง


     สาเหตุที่ทำให้หน้าเว็บไซต์แสดงโค้ด 504

    เกิดจากตัว Server ที่ใช้ในการวางเว็บไซต์นั้นๆ เริ่มมีอาการเอ๋อๆขึ้นมา หลังจากถูกระดม Request จากมวลมหาประชาชน (End-User) ทำให้ระบบมีการจราจรที่แน่นหนามาก (คือมี Traffic สูง) อารมณ์เหมือนระบบจราจรที่ติดเป็นคอขวดกัน เลยส่งผลให้ Server เริ่มตอบสนองช้าลงเรื่อยๆ กระทั่งเครื่อง Client บางคนรอการตอบสนองนานเกินไป จนเกิด Timeout คือหมดเวลาแล้วเธอคงต้องไป~ ไว้ลองเข้าใหม่อีกทีนะจ้ะ

     พอนึกออกกันหรือยัง?

    ถ้าใครเคยเจอมาก่อน ก็คงจะพอเริ่มนึกออกแล้วแหละค่ะ แบบว่าภาพจำมันยังชัดเจน เหมือนเดิมทุกอย่าง (จงอ่านตามด้วยอารมณ์ที่เจ็บปวด) อาการขั้นแรกคือมันจะงอแงๆก่อน เช่น เริ่มโหลดช้า โหลดแล้วค้าง ขึ้นหน้าขาวโพลนบ้างอะไรบ้าง เรามันก็วัยรุ่นใจร้อนซะด้วย F5 รัวๆวนไป  

    ก็เลยกลายเป็นว่าน้อง Server ที่แสนบอบช้ำอยู่แล้ว ดันถูกกระหน่ำยิง Request ซ้ำเข้าไปเยอะๆอีก จนในที่สุดก็เกินกำลังที่น้องจะรับมือไหว หลังจากนั้นน้องก็จะเข้าสู่อาการโคม่าทันที ก็คือรีสตาร์ทตัวเองไปเลย จบ!! (แล้วเว็บก็ล่มในที่สุด) 

     ขอแบบง่ายๆค่ะพี่!

     เปรียบง่ายๆได้แบบนี้จ้า

    หากเปรียบสถานการณ์แบบนี้เป็นรายการเซอร์ไวเวอร์.. ก็เหมือนเราอยู่ตำแหน่งท้ายสุดของของตารางเลยค่ะ
    คืออยู่เกินจุดที่ Server มันรับได้ไปแล้ว โดยคนส่วนน้อยข้างบนคือคนที่เร็ว คนที่ไว และแต้มบุญค่อนข้างสูงด้วย
    และอย่าลืมว่าในขณะที่เราติดอยู่ในวังวน Timeout หน้าขาวซีดเป็นเอสี่ ตอนนั้นก็มีบางคนกำลังกดจากหน้าเคาท์เตอร์ไปด้วย แต่ก็นั่นล่ะค่ะ… มันไม่มีกฎตายตัวบอกว่าเราจะรอดได้ขึ้นไปติดบนๆของตารางมั้ย อยู่ที่จังหวะจริงๆ

     อ้าว! เป็นที่ Server แล้วตัว Web Sourcecode เกี่ยวมั้ย?

    ถึงแม้ดูเผินๆแล้วเหมือนปัญหานั้นจะเกิดจากฝั่ง Server เป็นหลัก แต่ทางฝั่งของ Web เองก็ต้องตรวจสอบ Code ของตัวเองด้วยเช่นกัน ว่าเขียนมาแบบไหน เลือกใช้ภาษาอะไรในการเขียน เพราะบางครั้งการเพิ่มจำนวนทรัพยากร Server เพียงอย่างเดียว อาจเป็นการแก้ไขที่ปลายเหตุมากกว่า เราต้องเช็คตัว Sourcecode ของเว็บไซต์ควบคู่ไปด้วย เพื่อให้สามารถใช้ทรัพยากรที่มีได้อย่างคุ้มค่าที่สุด

    พักฟังสาระสำคัญทางนี้!

    “การที่เราไปส่อง Web Sourcecode ผ่านการ Inspect Element หรือ View Pagesource ใน Web browser นั้น ไม่มีข้อมูลตรงไหนที่ตอบเราได้ว่าเว็บเขียนมาดีหรือไม่ดีเพียงพอในการรับโหลด คงมีเพียง Developer เท่านั้นที่รู้ตัวเองดีที่สุดค่ะ”

     ทำไมเว็บจองบัตรคอนเสิร์ตชอบล่ม? (และโหลดช้าเหลือเกินค่ะคุณพี่)

    เหตุก็เกิดมาจาก….

    “เปิดจองพร้อมกันวันที่ xx xxxx xxxx เวลา 10.00 น.”

    ก็แทบไม่ต้องสงสัยเลยว่า … เมื่อถึงเวลา 10.00 น. จะมีมวลมหาประชาชน พากันกระหน่ำกดเข้าเว็บไซต์ที่เปิดจองนั้นๆ เยอะแยะมากมายขนาดไหน  แหม..ใครๆก็อยากได้บัตร เพราะฉะนั้นก็ต้องรีบตื่นมาจองตอนมันเปิดเลยสิ

    ซึ่งบางคนพอเห็นเริ่มช้าๆ ก็เลยใส่ท่า F5 มารัวๆ นี่ยังไม่รวมคนที่เปิดหลาย Device ทิ้งไว้ พอถึงเวลาก็กระหน่ำกดกันเข้าไปอีก
    นั่นหมายความว่า Server จะมีการรับก้อน Request มากมายมหาศาลในช่วงเวลานั้น จนเกินกำลังจะรับไหว แล้วสุดท้ายก็แพ้ไป….

    แล้วยิ่งกับบัตรคอนเสิร์ตวงต่างชาติทั้งหลายที่ดังระดับ Worldwide เนี่ย อย่าลืมว่ามีประชาชนชาติอื่นๆ
    เข้ามากดจองกับเรากันด้วยนะเออ…

    (source: https://www.youtube.com/watch?v=qTDqA_FVTV8&ab_channel=NEWS1)

    TCAS ก็ล่มบ่อยนะจ้ะ

    แน่นอนว่าเคสนี้ไม่ได้เกิดกับแค่เว็บกดบัตรคอน แต่รวมไปถึงเว็บที่ต้องมีการรองรับโหลดมหาศาล พร้อมๆกัน ภายในช่วงเวลาระยะหนึ่ง เช่น เว็บสมัครสอบ เว็บฟังผลสอบ เหล่านี้ก็ล้วนเคยล่มทั้งนั้นจ้า

     ในเมื่อ Server รับคนได้ไม่พอ ก็ไปหาวิธีเพิ่มสิพี่!

    คำถามต่อมาคือ แล้วใครจะยอมจ่าย? ในส่วนของวิธีการทำนั้นมีแน่นอนอยู่แล้วค่ะ ไม่งั้นเว็บที่ต้องมีความน่าเชื่อถือสูงๆอย่างธนาคารต่างๆเค้าจะอยู่กันได้ยังไง แต่ปัญหาก็คือ การทำให้เว็บไซต์สามารถออนได้ตลอดเวลา ฆ่าก็ไม่ตาย หรือทำให้มีความ High Availability (HA) มักต้องแลกมาด้วยค่าใช้จ่ายที่สูงขึ้นมาอีก ซึ่งบางองค์กรอาจจะมีข้อจำกัดในเรื่องความคุ้มค่าทางธุรกิจของเค้า เรื่องนี้ไม่มีใครตอบได้ นอกจากตัวผู้ให้บริการเอง ว่าเค้าให้ความสำคัญกับเรื่องนี้มากน้อยแค่ไหน หรือถ้าเกิดแล้วจะแก้ปัญหากันอย่างไร

     อย่าปล่อยให้ใครมาสาปเราก่อน!

    หากเราเป็นแค่ผู้ใช้บริการ เราก็คงจะทำอะไรมากไม่ได้ นอกจากแจ้งปัญหาที่เกิดขึ้นไปยังผู้ให้บริการ และรอผู้ให้บริการทำการแก้ปัญหา

    แต่ถ้าเราเป็นผู้ให้บริการล่ะ? ในเมื่อปัจจุบันเรามีวิธีการต่างๆมากมายในการแก้ปัญหานี้ได้ หากธุรกิจของคุณ
    นั้นมีลักษณะการให้บริการ ที่ต้องรองรับโหลดคนจำนวนมาก ในระยะเวลาหนึ่ง ทำไมเราไม่ลองหาวิธีแก้ไขมันดูหน่อย?  ซึ่งทาง OpenLandscape เองเราก็มีบริการและโซลูชันต่างๆที่ตอบโจทย​์ความต้องการนี้ด้วยนะ

    • Cloud Service ย้ายมาใช้งานระบบคลาวด์ ซึ่งเราสามารถเลือกที่จะเพิ่ม ทรัพยากรสำหรับรองรับการเพิ่มของจำนวนผู้ใช้งาน แค่เฉพาะเวลาที่ต้องการได้
    • Professional Service สำหรับปรึกษาหรือช่วยเหลือในการนำเทคโนโลยีต่างๆมาช่วยในการทำ Clustering  เพื่อกระจาย Load ทำให้เว็บไซต์มี HA (High Availability)รับมือกับทุกสถานการณ์ได้ดียิ่งขึ้น

    ติดตามข่าวสารใหม่ๆ หรือข้อมูลน่ารู้อีกมากมายได้ที่

      OpenLandscape Fanpage | https://www.facebook.com/openlandscapecloud/
      OpenLandscape Twitter | https://www.twitter.com/olscloud/
      OpenLandscape Cloud | https://openlandscape.cloud/

  • Kubernetes คือ อะไร ? หนทางสู่การทำระบบให้แกร่งกว่าที่เคย !

    Kubernetes คือ อะไร ? หนทางสู่การทำระบบให้แกร่งกว่าที่เคย !

    Kubernetes คือ อะไร ? หนทางสู่การทำระบบให้แกร่งกว่าที่เคย !

    Kubernetes คือ อะไร ?

    “Kubernetes” หรือ “K8s” คือ “Container Orchestration” เป็น OpenSource จาก Google ที่จะมาช่วยในการจัดการคอนเทนเนอร์ (เช่น Docker, LXC)  ซึ่ง K8s ไม่ได้เป็นเทคโนโลยีเดียวที่ใช้ในการจัดการคอนเทนเนอร์ เพราะยังมี Docker Swarm ที่ใช้จัดการคอนเทนเนอร์ได้เช่นกัน ซึ่งหน้าที่หลัก ๆ คือ ช่วยให้เราสามารถติดตั้ง (Deployment) จัดสรรทรัพยากร หรือเพิ่มลดทรัพยากรแบบอัตโนมัติได้ (Managing & Scaling) นอกจากนั้นยังช่วยให้ Application ที่ทำงานอยู่บนคอนเทนเนอร์สามารถทำงานได้อย่างต่อเนื่อง ด้วยระบบที่พร้อมใช้งานตลอดเวลา (Auto Self-Healing) พูดง่าย ๆ คือ สามารถทำระบบที่ฆ่ายังไงก็ไม่ตายนั่นเอง ! (โกงกว่านี้มีอีกมั้ย?)

    ภาพประกอบ 1 Kubernetes คือ

    จากภาพข้างต้นจะเห็นว่า Kubenetes เป็นการต่อยอดหลังจากที่เราสร้าง Container ให้กับ App แล้ว โดยสามารถอ่านเพิ่มเติมเกี่ยวกับ Docker ได้ที่บทความเปลืองเวลาเป็นวัน ๆ ไปทำไม ? ในเมื่อใช้ Docker ช่วยได้ ! ซึ่งเมื่อมี Container แล้วสามารถ Manage ยังไงให้ได้ประสิทธิภาพสูงสุด จึงเป็นที่มาของการนำ Kubernetes เข้ามาเพื่อควบคุม Container ทั้งหมดอีกที ด้วยวิธีการง่าย ๆ คือ สร้าง Config สั่งไว้แผ่นหนึ่ง (เป็นไฟล์ .yaml) เขียนคำสั่งให้ทำตามที่ต้องการ แล้วปล่อยให้ระบบควบคุมให้เราเองได้เลย ดังนั้นจึง Centralized มากขึ้น ลดการทำงานที่ซับซ้อนได้ แถมยังเป็นไปแบบ Automatic อีกด้วย ส่วนมันออโต้ได้ขนาดไหน ? เลื่อนลงไปอ่านกันต่อได้เลย

    ภาพประกอบ 2 Kubernetes คือ ภาพรวมการทำงานของ Kubernetes

    ยากไป ? งั้นมาดูเคสตัวอย่างกันเลยดีกว่า

    เคสแรก หากต้องการเพิ่มเครื่อง ต่อให้เรามี Container แล้ว เรายังต้องเปิดทีละเครื่องใหม่ แล้วเอา Container ไปวางเพื่อ Run ใหม่อีกที หากมีสักสิบเครื่อง ร้อยเครื่องยังต้องทำวนไปทีละเครื่องจนครบจำนวน แต่ถ้าหากนำ Kubernetes มาใช้ จะสามารถกระจายงานให้เครื่องในระบบได้เองอัตโนมัติ เพียงแค่เราเขียนคำสั่งบอกให้ทำอะไรเพียงแค่นั้นเอง

    อีกสักเคส… คือ เราสามารถสั่งให้ Auto Scaling ได้ด้วย เช่น กำหนดไว้ว่าหาก CPU Usage เกิน 80% ให้ Auto Scale Up ขยายทรัพยากรให้ได้ทันที ดังนั้น Kubernetes ช่วยให้การจัดการของเราเป็นไปอย่าง Automatic มากขึ้น ช่วยประหยัดเวลาให้มีอิสระไปทำอย่างอื่นได้เพิ่มมากขึ้น


     The History Of Kubernetes

    ต้นกำเนิดของ K8s นั้นเกิดมาจาก Pain ที่บริษัท Google เจอมาตลอด ในการพยายามจะจัดการ Data Center ของตัวเองมานานกว่า 15 ปี (แต่ก็ยังไม่ยาวเท่าที่เรารอตอนจบโคนัน) เดิมเรียกระบบนี้ว่า “Borg” และจากความผิดพลาด ปัญหาต่าง ๆ ที่เคยเจอและแก้ไขมาตลอดระยะเวลายาวนาน ทุกอย่างกลายเป็น Lesson  Learned จนเกิดเป็น “Kubernetes” ขึ้นมา อีกทั้ง Google ไม่หยุดโชว์ความยิ่งใหญ่ด้วยการเปิดให้เป็น Opensource ที่ทุกคนสามารถนำไปใช้งานได้อีกด้วย


    จุดเด่นของ Kubernetes

    1. Container Clustering :  สามารถทำ Configuration  เพื่อสั่งระบบให้ทำงานตามที่ต้องการโดยอัตโนมัติ (เรียกได้อีกแบบว่าเป็นการกำหนด Desired State)
    2. Auto Scaling : รองรับการเพิ่มหรือลดทรัพยากรได้โดยอัตโนมัติตามความต้องการ
    3. Auto Self-healing : รองรับการทำงานแบบ HA เพื่อช่วยให้ระบบสามารถทำงานได้อย่างปกติ
    4. Auto Binpacking : จัดสรรทรัพยากรสำหรับคอนเทนเนอร์โดยอัตโนมัติ  
    5. Load Balancing : แบ่งการทำงานระหว่างคอนเทนนอร์ได้อย่างเหมาะสมและมีประสิทธิภาพสูงสุด
    6. Zero Downtime : รองรับการอัปเดตระบบแบบไม่มี Downtime
    7. Dashboard : มีแดชบอร์ดสำหรับควบคุมและบริหารจัดการทรัพยากร
    8. Community :  มีผู้ใช้งานจากทั่วโลกช่วยพัฒนาและอัปเดตฟีเจอร์ใหม่ ๆ อยู่ตลอดเวลา

     องค์ประกอบของ Kubernetes

    Cluster 

    ให้นึกภาพตามว่า K8s จะเข้ามาครอบมวลมหาประชา Server เอาไว้ ให้เสมือนว่ามันมีแค่ Server ใหญ่ ๆ เพียงเครื่องเดียว หากใช้ Cloud ต้องดูด้วยว่า Platform ของ Cloud นั้นรองรับไหม โดยหลักการ Cluster ของ K8s คือ สามารถจัดการให้เองว่าอะไรควร Run ไว้ที่ไหน โดย Node มีอยู่ 2 ประเภท คือ Master Node และ Worker Node ส่วนวิธีการทำงานร่วมกันของแต่ละส่วนนั้น จะขอกล่าวถึงในหัวข้อลำดับต่อไป

    ภากประกอบ 3 Kubernetes คือ
    What is Kubernetes to Datacenter
    (source : Mesosphere)
    ภากประกอบ 4 Kubernetes คือK8s Cluster Diagram
    (source : kubernetes.io)


    Deployment 

    k8s นั้นมีตัวละครหนึ่งที่เป็นพระเอกของเรื่องเลย คือ ตัว Kubernetes Deployment Controller ซึ่งคอยช่วยจัดการ Instance ต่าง ๆ ของแต่ละ Node ดังนั้นการนำ App ของเราไป Run ใน K8s จะต้องสร้างสิ่งที่เรียกว่า Deployment ก่อน เพื่อเป็นการกำหนด Configuration (การทำ Desired State เพื่อระบุว่าเวลาที่ทุกอย่างปกติดี ควรจะมีอะไร ทำงานยังไงบ้าง) โดยที่ K8s จะช่วยดูแลให้เป็นไปตาม Config ให้ตลอดเวลา หากเกิดความผิดพลาดสามารถ Auto Self-healing ตัวเองโดยอัตโนมัติ

    โดยการ Config ทำในไฟล์  .yaml


    Node and Pod

    “Container -> Pod  -> Worker Node -> Master Node ”

    Part l : Pod

    Pod เป็นหน่วยที่เล็กที่สุดของ K8s ซึ่งภายในแต่ละ Pod จะประกอบไปด้วย

    • Container หรือ อาจเป็นกลุ่มของ Container ก็ได้ ในบางกรณีที่ต้องการทำ Load-Balance ของข้อมูล
    • Resource ของ Container นั้น ๆ ยกตัวอย่างก็เช่น Storage, Network และ IP
    • Config ต่าง ๆ ของ Container แต่ละอัน Run ยังไง ให้คุยผ่าน Pod ตัวไหน เป็นต้น
    ภากประกอบ 5 Kubernetes คือ
    What object can be included in pod
    (source : kubernetes.io)

     Part ll : Worker Node or Minion

    Worker Node or Minion เป็นเหมือนสำนักงานย่อย โดยแต่ละ Node มี Process ชื่อ Kubelet ไว้สื่อสารกับ Master Node และมี Docker ในตัว เพื่อ Run Container และเนื่องจาก Pod จะ  Run อยู่บน Node เสมอ นั่นหมายความว่า ในแต่ละ Worker Node นั้นสามารถประกอบไปด้วย Pod หลาย ๆ ตัวได้

    ภากประกอบ 6 Kubernetes คือ
    Many pods can be included in the same worker node
    (source : kubernetes.io)

    Part lll : Master Node

    Master Node เป็นเหมือนศูนย์บัญชาการ คอยสั่งการ Node ลูกต่าง ๆ (Worker Node & Minion) ว่าต้องทำอะไรบ้าง ดังนั้นเวลาทำการแก้ไขหรือ Deploy ติดตั้งอะไร จะสั่งการผ่าน Node นี้เท่านั้น

    ภากประกอบ 7 Kubernetes คือ

    จากรูปด้านบนจะเห็นการทำงานของ Master Node ชัดเจนมาก ว่าทำหน้าที่อะไรบ้าง ทั้งในส่วนของการติดต่อกับ API, การ Controller Node ต่าง ๆ ให้ทำงานตาม Config (ที่เรากำหนด Desired State ตอนไป Deployment) ของเราโดยอัตโนมัติ, การทำ Scheduler เพื่อควบคุม Workload ของแต่ละ Node และเป็นตัวที่จะควบคุมการติดต่อสื่อสารของ Node ทั้งหมดด้วย

    Anatomy of Kubernetes Node

    ถ้าเปรียบเทียบองค์ประกอบของ K8s อยากให้จินตนาการง่าย ๆ ประมาณว่า
    Pod = เซลล์, Worker Node = อวัยวะต่าง ๆ ในร่างกาย, Master Node = สมอง ประมาณว่าเซลล์หลาย ๆ เซลล์ (Pod) ประกอบขึ้นมาเป็นอวัยวะต่าง ๆ (Worker Node) โดยแต่ละอวัยวะทำหน้าที่ของตัวเองซึ่งแตกต่างกันไป และอวัยวะต่าง ๆ ในร่างกายนั้นสามารถที่จะทำงานร่วมกันได้ โดยมีสมอง (Master Node) เป็นตัวควบคุมสั่งการทุกอย่าง


    ReplicaSet

    มีหน้าที่หลักคือทำให้  Pod มีจำนวนเท่ากับตอนที่เราสั่ง สามารถควบคุมดูแลตาม Config ที่ทำ Deployment ให้เป็นไปอย่าง Automatic คือ หากมีจำนวนมากไปจากที่กำหนดให้ทำลายทิ้ง หรือหากน้อยไปให้สร้างเพิ่ม (Self- Healing) อีกทั้งยังสามารถใช้ในการทำ Auto-Scale เพื่อใช้ประโยชน์ได้ เช่น กำหนดลงไปใน Config ว่า หาก CPU Usage Over 80% ให้สร้าง Pod เพิ่มขึ้นมาอีก เป็นต้น  

    ภากประกอบ 8 Kubernetes คือ

     Services

    เนื่องจากการทำงานของ k8s นั้นต้องมีการ Self-Healing อยู่ตลอดเวลา ดังนั้น k8s จึงมี Service ที่ทำหน้าที่กระจาย Load Balance ไปยังแต่ละ Pod สามารถทำหน้าที่เป็น API Gateway ในตัว นั่นทำให้เวลาเกิดการ เพิ่ม/ลด ของ Pod ตัวที่ทำการเรียกมายัง Pod ดังกล่าว จะไม่รู้สึกเลยว่าหลังบ้านของ Pod มีการเปลี่ยนแปลง เพราะ มี Service เป็นกลไกการทำงานและเป็นตัวกลางสื่อสารให้เอง (ตัวกลางแบบ Client to Pod และ Pod to Pod )

    Services มีส่วนสำคัญในการทำให้การอัปเดตระบบไม่มี  Down Time (Zero Down Time)


    โดยใน Service มีการใช้ Labels
    ซึ่งตั้งค่าเอาไว้ที่ Config File (.yaml)  โดย Set Label ไว้ที่แต่ละ Pod และไป Set ที่ Service อีกทีว่าถ้าเรียก Service นี้ จะให้เชื่อมต่อไปยัง Pod ที่มี Label อะไรบ้าง ดังตัวอย่างในภาพด้านล่าง

    ภากประกอบ 9 Kubernetes คือ

    โดยจากภาพตัวอย่าง คือ ผู้ใช้สามารถที่จะใส่ Label ไว้ที่แต่ละ Pod ได้ หลังจากนั้นนำไปบอก Service ว่าใน Service นี้จะให้กระจายโหลดไปยัง Pod อะไรก็ตามที่มี Label = Prod และ Label = Be หลังจากนั้นจะกระจายโหลดไปตาม Pod ที่ Label เป็น Prod และ Be ให้เองได้เลย ถึงแม้ Pod นั้นมี Label ของเวอร์ชันอยู่ด้วยก็ตาม ทำให้เหมาะในเรื่องของการอัปเดตเวอร์ชันแอปพลิเคชัน

    แต่ถ้าต้องการใช้ Service เรียกแบบระบุเวอร์ชันจริง ๆ ให้ Set Label และระบุ Version ที่ตัว Pod ที่ตัวการ แล้วบอก Service ให้กระจายโหลดไปเฉพาะ Pod ที่มี Label เป็นเวอร์ชันที่กำหนดไว้เท่านั้น

     พร้อมลุยหรือยัง!

    หากศึกษาและพร้อมที่จะลุยกันแล้ว สามารถเลือกศึกษาข้อมูลเพิ่มเติมได้ตามลิงก์ด้านล่างนี้ได้เลย

    source [1] [2] [3]

    ติดตามข่าวสารใหม่ๆ หรือข้อมูลน่ารู้อีกมากมายได้ที่

      OpenLandscape Fanpage | https://www.facebook.com/openlandscapecloud/
      OpenLandscape Twitter | https://www.twitter.com/olscloud/
      OpenLandscape Cloud | https://openlandscape.cloud/

  • เปลืองเวลาเป็นวัน ๆ ไปทำไม ? ในเมื่อใช้ Docker ช่วยได้ !

    เปลืองเวลาเป็นวัน ๆ ไปทำไม ? ในเมื่อใช้ Docker ช่วยได้ !

    Docker คือ “Software Container”

    Docker คือ อะไร Docker นั้นถือเป็นหนึ่งใน “Software Container” ที่เป็นการสร้าง “สภาพแวดล้อมเฉพาะ” ให้กับซอฟต์แวร์ต่าง ๆ และทำให้ซอฟต์แวร์เหล่านั้น สามารถทำงานได้โดยไม่ไปรบกวนกับซอฟต์แวร์ตัวอื่น ในระบบปฏิบัติการเดียวกัน โดยคุณสามารถนำ Container ไปติดตั้งบนคอมพิวเตอร์หรือเซิร์ฟเวอร์เครื่องอื่น ๆ ได้เลยทันที โดยที่โปรแกรมในนั้นยังทำงานได้ตามปกติ ไม่ผิดเพี้ยนไปจากเดิม

     

    ยกตัวอย่างง่าย ๆ … เช่น ตอนที่คุณเขียนเว็บไซต์ขึ้นมาบนเครื่องของคุณเอง คุณสามารถปรับเปลี่ยน Setting ค่าต่าง ๆ หรือดาวน์โหลดอะไรมาติดตั้งเพิ่มอีกมากมาย เมื่อต้องการนำไปขึ้น Production บน Server ต้องทำการโยกเอาก้อนทั้งหมดนั้นไป ทำให้ต้องเสียเวลาทำ Config ทุกอย่างบน Server ใหม่อีกครั้ง และบางทีระหว่างดำเนินการอาจเกิดข้อผิดพลาด ข้อมูลไม่ครบ ไฟล์หาย ข้อมูลตีกัน ทำให้เสียเวลากลับไปค้นหาว่าเกิดปัญหาตรงส่วนไหน รวมถึงต้องแก้ไขอะไรบ้าง เพียงเท่านี้ก็ทำให้คุณรู้สึกเหนื่อยแล้วใช้มั้ย ?

    หยุด ! วงจรชีวิตยาก ๆ ด้วย Docker

    การใช้ “Docker” เข้ามาช่วยในการแพ็ค Software เหล่านี้ เพื่อให้อยู่ในรูปแบบของ Container หลังจากนั้น คุณสามารถนำ Container ไปรันบนเครื่องไหนก็ได้ โดย Application ของคุณยังทำงานได้ปกติ ไม่ว่าจะนำไปรันบนเครื่อง Development หรือบน Production Server ไหนก็ตาม


     เสกงาน 1 วัน ให้เหลือแค่ 1 ชั่วโมงด้วย

     

    ภาพประกอบ 1 docker คือ

     

    ในปัจจุบันมีผู้ให้บริการ Software Container ให้เลือกใช้บริการมากมาย แต่ Docker ได้รับความนิยมมากที่สุด เพราะใช้งานได้ง่าย ด้วย 3 Steps Build, Ship and Run ที่มีประสิทธิภาพสูง แถมยังมี Community ใหญ่มาก ทำให้มี Q&A มากมายตามมาในภายหลัง เมื่อคุณพบปัญหาอะไรก็ไม่ต้องลอยเคว้งคว้างกลางทะเลอยู่คนเดียว

    (Build) Dockerfile : คือการที่นำ Sourcecode + Config ที่รวบรวมคำสั่งทุกอย่าง ที่ใช้ในการ Run แอป และนำไปสร้างเป็นไฟล์ Docker Image 

    (Ship) Docker Image : คือไฟล์ Image ของ Application ที่สร้างมาจาก Dockerfile โดยสามารถนำ Image ไปรันบนเครื่องไหนก็ได้ที่มี Docker

    (Run) Docker Container : เป็น Container ที่มี Application ตาม Image ที่ติดตั้งไว้ และสามารถเรียกใช้งาน Application ได้โดยง่าย


     ประโยชน์ที่ได้จากการใช้ Docker

     

    ภาพประกอบ 2 docker คือ

     

    (1) Save Time : สามารถลงโปรแกรมเพื่อใช้งาน ได้ภายในไม่กี่วินาทีเท่านั้น
    (2) Save Cost : ประหยัดค่าใช้จ่ายมากขึ้นเพราะใช้ทรัพยากรน้อยลง
    (3) Save Data Storage : ประหยัดพื้นที่เก็บ และติดตั้งระบบได้รวดเร็วกว่าการทำ VM ถึง 90%
    (4) Easy to Scale : สามารถขยายระบบได้ง่าย เพื่อรองรับจำนวนผู้ใช้งานที่มากขึ้น และยังสามารถดึง Resource ของเครื่องมาใช้ได้เต็มประสิทธิภาพ ซึ่งต่างกับ VM ที่มักจะติดขีดจำกัดของเครื่อง
    (5) Environment Managing : ด้วยรูปแบบที่เป็น Image สำเร็จรูป  ทำให้เราสามารถติดตั้งโปรแกรม หรือตั้งค่าระบบ ได้ภายในเวลาไม่กี่วินาที และเพียงแค่ไม่กี่คำสั่งเท่านั้น
    (6) Portability : ทำให้ย้ายไประบบ IT infrastructure อื่น ๆ ได้ง่าย  ไม่ต้องเสียเวลา Setup โปรแกรมใหม่ทีละเครื่อง และช่วยลด Error ที่อาจเกิดจาก การนำระบบขึ้น Production
    (7) Reduce Time-to-Market : ช่วยลดเวลาการนำแอปพลิเคชันต่าง ๆ เข้าสู่ตลาด
    (8) Community Hub : ด้รับการพัฒนาและอัปเดตฟีเจอร์ใหม่เรื่อย ๆ มี Community สำหรับแลกเปลี่ยนข้อมูลต่าง ๆ มากมาย


    ใครที่เหมาะกับการใช้ Docker ?

    เนื่องจากการใช้ Container Software ไม่ใช่เรื่องยากหรือไกลตัวอีกต่อไป การนำมาใช้ ล้วนมีแต่ข้อดีและเป็นประโยชน์ ดังนั้นจึงไม่ใช่แค่เรื่องของ Developer หรือ System Admin อีกต่อไป แต่องค์กรเองต้องเข้าใจและเห็นความสำคัญของเทคโนโลยีนี้เช่นกัน


    เริ่มศึกษายังไงดี ?

    การศึกษา Docker สามารถหาข้อมูลได้ทั่วไปตามอินเตอร์เน็ต แต่การศึกษาและนำมาใช้งานอย่างถูกต้องและปลอดภัยนั้น ต้องใช้เวลาทำความเข้าใจพอสมควร แต่หากใครยังสงสัย ว่าการใช้งาน Docker ต่างกับ VM แบบเดิม ๆ ที่ใช้งานอย่างไร แล้วอยากเริ่มต้นด้วยตนเองง่าย ๆ OpenLandscape Cloud ขอแนะนำวิธีศึกษาการใช้งานเบื้องต้นด้วยการดาวน์โหลด E-Book ที่ทาง Docker ได้จัดทำไว้ได้เลยที่นี่

    โดยเนื้อหาใน E-Book จะประกอบไปด้วย

    • ทำไม Container ถึงไม่ใช่ VM
    • เราสามารถนำ Container และ VM มาใช้ร่วมกันได้อย่างไร
    • การใช้ Container บน Physical Server และ Virtual Machine นั้นแตกต่างกันอย่างไร
    • เริ่มต้นใช้งาน Docker และ Container

    Source : [1] [2] [3] [4]

    ติดตามข่าวสารใหม่ ๆ หรือข้อมูลน่ารู้อีกมากมายได้ที่

      OpenLandscape Fanpage | https://www.facebook.com/openlandscapecloud/
      OpenLandscape Twitter | https://www.twitter.com/olscloud/
      OpenLandscape Cloud | https://openlandscape.cloud/

  • GDPR คือ อะไรทำไมทั้งโลกถึงให้ความสำคัญ ?

    GDPR คือ อะไรทำไมทั้งโลกถึงให้ความสำคัญ ?

    ในโลกปัจจุบัน…. ปฏิเสธไม่ได้เลยว่าอินเตอร์เน็ตนั้นมีบทบาทที่สำคัญมาก แทบจะทุกตารางนิ้วบนโลกใบนี้ ได้ถูกเชื่อมเอาไว้ด้วยกันอย่างไร้รอยต่อ สังเกตได้ว่ามีแอพต่างๆมากมายเกิดขึ้นไม่เว้นวัน แต่ละแอพต่างก็มีการขอเข้าถึงข้อมูลผู้ใช้ (เช่น Google,Facebook,Twitter,Youtube ,Uber) ดังนั้นข้อมูลมากมายจึงถูกส่งไปที่ต่างๆมากมายนับไม่ถ้วนในแต่ละวัน และแน่ใจได้เลยค่ะว่า… ทุกการกระทำของเราบนโลกออนไลน์ได้ถูกบันทึกไว้โดยผู้ให้บริการแน่นอน ด้วยเหตุนี้เอง “GDPR” จึงได้ถือกำเนิดขึ้นมาเพื่อควบคุมมาตรฐานของการที่องค์กรจะนำข้อมูลเหล่านั้นไปใช้ มาดูกันดีกว่าค่ะว่า GDPR คือ อะไร


     The Beginning of GDRR

    “GDPR” ย่อมาจาก “General Data Protection Regulation” ป็นกฏหมายสำหรับคุ้มครองข้อมูลส่วนบุคคล (Personal Data) ของพลเมืองยุโรป โดยเป็นการนำมาใช้แทนกฏหมายเดิม EU Directive 95/46 ที่ใช้กันมาเนิ่นนานมากตั้งแต่ปี 1995 ซึ่งยุคนั้นยังเป็นยุคที่อินเตอร์เน็ตยังไม่เข้ามามีบทบาทขนาดนี้ ดังนั้นการนำกฏหมายที่เก่าเกินไปและไม่เข้ากับยุคสมัยมาใช้จึงเป็นเรื่องที่ไม่เหมาะสมอีกต่อไป

    “GDPR” นั้นถูกประกาศให้เริ่มใช้โดยสหภาพยุโรป (EU) มาตั้งแต่เดือนเมษายน ปี 2016
    แต่เพิ่งมีผลบังคับใช้เมื่อวันที่ 25 พฤษภาคม 2018 ที่ผ่านมานี้เอง


     เพราะข้อมูลส่วนตัวนั้น ..สำคัญไฉน

    หากใครยังงงและสับสนว่าข้อมูลส่วนตัวของเราบนโลกออนไลน์นี่มีอะไรบ้าง ก็ขอตอบตรงนี้เลยนะคะว่า ‘ทุกอย่าง’ ค่ะ แค่เราเปิดเว็ปนั้นเข้าไปก็มีข้อมูลของเราส่งออกไปแล้วว่าเราเปิดเว็ปอะไร ตั้งแต่ไอพีแอดเดรส, ชื่อ, รูปถ่าย, ที่อยู่, อีเมล, ข้อมูลทางการแพทย์, ข้อมูลบัตรต่างๆ กระทั่งคำคมโดนๆที่เราโพสท์บน Social Network และพฤติกรรมการใช้งาน

    เดิมที ….เรารับรู้แค่ว่าผู้ให้บริการนั้นๆจะเอาข้อมูลเราไปทำอะไรต่างๆมากมาย แต่ไม่รู้ว่าเขาจะเอาไปทำอะไรบ้าง จะไปทำอะไรไม่ดีรึเปล่า แต่สุดท้าย หากต้องใช้บริการจากเขา เราก็หลีกเลี่ยงไม่ได้อยู่ดีที่ต้องยอมให้ข้อมูลไป โดยที่แต่ก่อนมีแค่กฏหมายคุ้มครองของแต่ละประเทศที่ตั้งกันตามใจชอบ ไม่มี Standard ที่ชัดเจนกันสักที จนกระทั่ง GDPR กำเนิดเกิดขึ้นมานี่แหละ


    GDPR change the world!

    แม้จะดูเหมือนเป็นแค่กฏหมายที่ออกโดย EU เพื่อพลเมืองชาว EU แต่ว่าการประกาศใช้กฏหมายนี้ได้สร้างความสั่นสะเทือนครั้งใหญ่ให้กับองค์กรทั่วโลก เมื่อวันที่ 25 ที่ผ่านมาเราอาจจะเห็นอีเมลอัพเดทข่าวสารจากเว็ปไซต์และแอพต่างๆ เกี่ยวกับเรื่องการปรับใช้ GDPR กับเวปไซต์หรือแอพของตัวเอง นั่นก็เพราะ กฏหมาย GDPR มันจะตามไปคุ้มครองข้อมูลพลเมืองยุโรป ไม่ว่าข้อมูลจะวิ่งไปเก็บอยู่ที่ไหนของโลกก็ตาม


     ดูยุ่งยากไป..ไม่ปรับได้มั้ย?

    ไม่ปรับได้ ..แต่เราจะอยู่ยากมากค่ะ หนึ่งก็คือด้วยความที่มันตามไปคุ้มครองชาวยุโรปรายบุคลคลนี่แหละค่ะ ที่ทำให้ทุกๆองค์กรต้องขยับ ต้องปรับตามกันไปหมด เพราะมันแทบเป็นไปไมไ่ด้เลย ในการหลีกเลี่ยงที่จะไม่เก็บข้อมูลชาว EU ที่มีสัดส่วนประชากรสูงถึง 26.18 ของโลก และมีถึง 28 ประเทศสมาชิก แถมยังมีประเด็นอื่นๆที่สำคัญ ดังนี้….

    • ถ้าเราคือคนที่ทำธุรกิจประเภทที่ต้องเก็บข้อมูลของคนต่างชาติอย่างหลีกเลี่ยงไม่ได้ เช่น การโรงแรม การท่องเที่ยว ธนาคารต่างๆ รวมไปถึง Market Place โดยรวมแล้วก็ครอบคลุมแทบทุกธุรกิจ
    • ถ้าเราไม่อยากเสียโอกาสทางธุรกิจ ในการเพิ่มความน่าเชื่อถือให้กับแบรนด์หรือองค์กร
    • ถ้าเราไม่อยากเสียค่าปรับสูงถึง 20 ล้านยูโร หรือไม่เกิน 4% ของรายได้รวมทั่วโลก
    • ถ้าเราต้องการยกระดับ หรือปรับมาตรฐานการจัดการกับข้อมูล (เก็บ-ถ่าย-โอน) ด้วยวิธีการที่มีประสิทธิภาพและทันสมัยเข้ากับยุคมากขึ้น

     สิทธิ์การคุ้มครองข้อมูลของ GDPR

    (1) Breach Notification
    สิทธิ์ที่จะได้รับแจ้งเมื่อเกิดความเสียหายหรือการรั่วไหลของข้อมูล ภายใน 72 ชั่วโมง

    (2) Right to Access
    สิทธิ์ที่จะรับรู้และยินยอมให้มีการเข้าถึงข้อมูล ต้องมีการแจ้งให้ทราบว่าจะใช้ข้อมูลในทางใดอย่างโปร่งใสและชัดเจน ใช้ภาษาที่เป็นมาตรฐาน เข้าใจได้โดยทั่วกัน และใช้ข้อมูลตามวัตถุประสงค์ที่แจ้งเท่านั้น

    (3) Right to Forgetten
    สิทธิ์ที่จะขอให้ลบข้อมูล หรือขอยกเลิก หรือปฏิเสธการอนุญาตในการเข้าถึงข้อมูลของตนเอง

    (4) Data Portability
    สิทธิ์ที่จะได้รับข้อมูลเกี่ยวกับตัวเอง โดยต้องเข้าถึงได้ง่าย และไม่มีค่าใช้จ่าย

    (5) Privacy by Default
    สิทธิ์ที่จะได้รับความคุ้มครองตั้งแต่ต้น โดยให้องค์กรวางระบบคุ้มครองช้อมูลตั้งแต่ตอนที่ออกแบบระบบ และจำกัดการเข้าถึงข้อมูลเฉพาะผู้่ที่เกี่ยวข้องเท่านั้น

    (6) Data Protection Officer (DPO)
    สิทธิ์ที่จะได้รับการคุ้มครองโดยเจ้าหน้าที่คุ้มครองข้อมูล (DPO) และเปลี่ยนมาใช้ระบบการเก็บบันทึกข้อมูลภายในองค์กร เพื่อแทนการแจ้งการประมวลผลข้อมูลต่อหน่วยงานท้องถื่นตามกฏหมายเดิม

    ส่วนวิธีการเตรียมตัว และการการปรับการจัดการกับข้อมูลให้ตรงตามกฏหมาย สามารถดูและปฏิบัติตามข้อกำหนดได้ตามเอกสารนี้ (ข้อกำหนด) ได้เลยค่ะ


     แล้วคนไทย..ได้รับการคุ้มครองมั้ย?

    ประเทศไทยเรามี  ร่าง พ.ร.บ.คุ้มครองข้อมูลส่วนบุคคล ที่คล้ายๆกับ GDPR อยู่ค่ะ
    ซึ่งก็เพิ่งจะผ่านมติเห็นชอบจาก ครม.เมื่อวันที่ 22 พฤษภาคม 2018 ที่ผ่านมา

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

     

    จำหลักการง่ายๆด้วย 3 คีย์เวิร์ดหลักๆ

    “ซื่อสัตย์ / ชัดเจน / มั่นใจ”

     

    สรุปหลักง่ายๆของ GDPR เลยก็คือ “การแสดงผู้ใช้บริการ เห็นถึงความโปร่งใสในการเก็บข้อมูลส่วนตัว และให้ความชัดเจนถึงวิธีในการนำข้อมูลส่วนตัวของเค้าไปใช้ เพื่อเพิ่มความเชื่อใจระหว่างลูกค้ากับองค์กร” ถือเป็น win-win situation เพราะเราก็จะรับรู้ว่าข้อมูลของเราก็จะไปทำประโยชน์ให้เค้าจริงๆ ไม่ได้ถูกเอาไปใช้โกงอะไร ส่วนเราก็ได้ใช้บริการจากเค้าด้วยเช่นกัน

     

    ติดตามข่าวสารใหม่ๆ หรือข้อมูลน่ารู้อีกมากมายได้ที่

      OpenLandscape Fanpage | https://www.facebook.com/openlandscapecloud/
      OpenLandscape Twitter | https://www.twitter.com/olscloud/
      OpenLandscape Cloud | https://openlandscape.cloud/

     

  • บริการ OLS Cloud ที่ตอบโจทย์ความต้องการ IaaS ของธุรกิจ

    บริการ OLS Cloud ที่ตอบโจทย์ความต้องการ IaaS ของธุรกิจ

    OpenLandscape Cloud (OLS Cloud) การให้บริการ เพื่อใช้งาน server ในลักษณะที่เป็น Virtual Machine (Instance) ซึ่งคุณสามารถเลือกที่จะจัดสรรทรัพยากรได้ด้วยตนเองและสามารถเลืกใช้ได้เฉพาะบางช่วงเวลาที่ต้องการ โดยทรัพยากรที่เพิ่มขึ้นจะคิดค่าใช้จ่ายตามปริมาณการใช้งานจริง (Pay Per Use or Pay As You Go) ผู้ใช้บริการสามารถเลือกลงระบบปฏิการที่ต้องการใช้งานเองได้ ไม่ว่าจะเป็น Windows หรือ Linux ผู้ใช้สามารถจัดสรรทรัพยากรได้ทั้ง CPU, Ram, Disk ที่ต้องการใช้งานได้อย่างอิสระ เพื่อรองรับการขยายความต้องการใช้งานของผู้ใช้งานที่มากขึ้นในทุกๆวัน

    (more…)

  • เทคนิคการสอบ Certified Kubernetes Administrator (CKA) ให้ผ่าน

    ข้อมูลเบื้องต้น สำหรับการสอบ Certified Kubernetes Administrator

    • Certified Kubernetes Administrator เป็นขององค์กรมูลนิธิ Clound native Computing Foundation (CNCF) ที่เป็นองค์กรที่อยู่ภายใต้ Linux Foundation
    • ราคาในการสอบ 300 เหรียญ ประมาณ 15000 บาท ตามอัตราค่าแลกเปลี่ยน ซึ่งถ้าเราสอบตก เราสามารถสอบได้อีก 1 ครั้ง ฟรี แล้วถ้ารู้ว่าเราสอบตกวันนั้น สามารถขอสอบอีกครั้งได้เลย
    • การสอบออนไลน์ เป็นการสอบปฏิบัติ พิมพ์ command line อย่างเดียว จะมีผู้คุมสอบดูเราสอบผ่านกล้อง webcam
    • ใช้ Kubernetes (k8s) version 1.6.2 on Ubuntu 16.04
    • ใช้เวลาสอบประมาณ 3-4 ชั่วโมง
    • คะแนนที่สอบผ่าน คือ 74%
    • อายุของ certificate คือ 2 ปี
    • สามารถลงทะเบียนได้ที่ https://www.cncf.io/certification/expert/

    สิ่งที่ต้องเตรียมก่อนสอบ

    • ต้องมี PC หรือ Laptop
    • ใช้ได้ทั้ง Windows, MacOS หรือ Linux
    • ต้องใช้ Chrome or Chromium Browser เท่านั้น
    • พื้นที่การสอบต้องสะอาด โต๊ะไม่รก โดยผู้คุมสอบจะให้ถือ webcam เพื่อส่องรอบๆห้อง ว่ามีใครอยู่บ้าง ต้องเป็น private space เพื่อความเป็นส่วนตัวในการสอบ จะต้องไม่มีใครในห้อง ห้ามเปิดประตู ประตูกระจกที่เห็นคนข้างนอกเดินไปเดินมา ให้เป็นห้องแบบปิด แต่สามารถมีกระจกได้
    • อินเทอร์เนตต้องมีความเร็วพอสมควร เพราะว่า ต้องมีการบันทึกหน้าจอขณะการทำข้อสอบ เผื่อเราทุจริตหรือมีปัญหากันในภายหลัง
    • ต้องมีไมโครโฟน บันทึกเสียงรอบข้าง
    • ต้องมี passport หรือ ID Card ที่ยืนยันตัวตนความเป็นเราที่ใช้สมัคร
    • ในการจองสอบ เตรียมเวลาในการสอบประมาณ 1-3 วันถึงจะได้สอบ

    ตัวอย่างหน้าจอการสอบ

    หน้าจอการสอบประกอบด้วย 2 ฝั่ง ด้านซ้ายเป็นโจทย์ ด้านขวาเป็น terminal อย่างเดียว ไม่มี GUI ให้ใช้ เป็นการพิมพ์ command line ล้วนๆ ซึ่งเราสามารถกด back หรือ next ไปเรื่อยๆ เพื่อแสดงโจทย์ข้อถัดไปหรือโจทย์ข้อก่อนหน้า

    ระหว่างการสอบ

    • เป็นการสอบแบบ Open book ไม่สามารถ copy เอาโจทย์ปัญหาไป search เพื่อหาคำตอบ
    • ไม่มี dashboard ให้ใช้แต่ command line อย่างเดียว
    • ห้ามเปิด notepad ของตัวเองเพื่อจดอะไรลงไปเด็ดขาด เพราะว่า จะมี notepad ที่อยู่ในหน้าจอสอบให้ อยู่ประมาณขวาบนของจอ ที่ใช้ในการบันทึกข้อความ
    • ตัวนับเวลาการสอบที่อยู่ที่ผู้คุมสอบ เมื่ออินเทอร์เนตตัด หน้าจอก็จะดับตาม แต่เวลาจะนับเรื่อยๆ ไม่ต้องกังวลไป เพราะ ผู้คุมสอบได้ทดเวลาการเราเพิ่มแล้ว
    • สามารถ reboot server เองได้
    • ความคุ้นชินในการใช้ Crtl+Alt+W ในหน้า terminal จะมาใช้ในการสอบในหน้าเบราเซอร์ไม่ได้ เพราะ การใช้ Ctrl+W เป็นคำสั่งในการปิดเบราเซอร์ ทำให้ต้องมานั่งกดเปิดใหม่ จะให้เสียเวลาในการสอบ
    • การใช้ Copy & Paste ในแต่ละ os (ไม่แนะนำในการใช้ window ในการสอบ เพราะ ยากกว่า OS อื่นๆ)
      • Linux ให้เลือก text และทำการวางคลิกปุ่มตรงกลางของเม้าท์เพื่อทำการวางข้อความ
      • Mac command + C
      • Windows ใช้ Ctrl+insert หรือ shift insert เพื่อทำการวาง
    • สามารถใช้ screen หรือ tmux ก็ได้ เพราะมี terminal หน้าจอเดียว จะเปิด terminal หลายๆหน้า เพื่อทำงานพร้อมกันไม่ได้

    CKA Exam Environment

    Environment ที่ใช้ในการสอบมีทั้งหมด 8 cluster ซึ่งเราสามารถเดาข้อสอบได้จากคำอธิบายได้ ซึ่งอยู่ในเอกสารก่อนสอบ

    Cluster Members CNI Description
    k8s 1 CA, 1 etcd, 1 master, 2 worker flannel non-HA k8s cluster
    Hk8s 1 CA, 3 etcd, 3 master, 1 load balancer, 2 worker calico HA k8s cluster
    bk8s 1 CA, 1 etcd, 1 master, 1 worker flannel non-HA k8s cluster
    wk8s 1 CA, 1 etcd, 1 master, 2 worker flannel non-HA k8s cluster
    ek8s 1 CA, 1 etcd, 1 master, 2 worker flannel non-HA k8s cluster
    fk8s 1 CA, 1 etcd, 1 based node none k8s cluster none Missing master node
    ik8s 1 CA, 1 etcd, 1 master, 1 based flannel k8s cluster – missing worker node
    tk8s 1 CA, 1 etcd, 1 master, 1 worker flannel non-HA k8s cluster

    คำถามในการสอบ Certified Kubernetes Administrator (CKA)

    • 5% Scheduling
    • 5% Logging/Monitoring
    • 8% Application Lifecycle Management
    • 11% Cluster Maintenance
    • 12% Security
    • 7% Storage
    • 10% Troubleshooting
    • 19% Core Concepts
    • 11% Networking
    • 12% Installation, Configuration & Validation

    Core Concept

    Core Concept ประกอบด้วย 2 ฝั่ง คือ Component กับ Objects คุณต้องเข้าใจในเรื่องของ Master Components ซึ่งประกอบไปด้วย api-server, controller, scheduler ข้างในแต่ละ service run ยังไง ทำงานแบบไหน

    Master Components

    • Kube-api-server
    • Kube-controller-manager
    • Kube-scheduler

    Non-master components

    • Kubelet ( เป็น api ที่ master จะติดต่อเข้ามา )
    • Kube-proxy ( เป็น network ที่ putty เข้ามา )

    Kubernetes Objects ( ต้องเข้าใจ Object พื้นฐานทั้งหมด )

    • Pod
    • Service
    • Ingress
    • Volume
    • Namespace
    • ReplicaSet
    • Deployment
    • Job
    • [CronJob]
    • [StatefulSet]
    • [DaemonSet]

    Core Concept (80% of score)

    • ซึ่งในการสอบอย่างเช่น มี environment ทั้งหมด 8 cluster มี 1 cluster ที่ข้อสอบทั้งหมด 70% – 80% ที่ข้อสอบทั้งหมดอยู่ในนั้นทั้งหมด มี namespace มากกว่า 10 ซึ่งโจทย์แต่ละข้อจะเล่นกับ namespace เลยใช้ namespace เยอะมาก
    • การใช้ Label และ Selector โจทย์จะไม่บอกหรอกว่า จงเขียน Label และ Selector แต่โจทย์จะบอกว่า จงเขียน Service ที่วิ่งเข้า Pod ตัวนี้ ลักษณะแบบนี้เราก็ต้องรู้ด้วยตัวเองว่าต้องใช้ Label กับ Selector
    • init container คือ container ที่ต้อง start ก่อนตัวอื่น พอ complete เสร็จแล้ว จะ return zero แล้วถึง start container ตัวถัดไป มีโจทย์ที่ให้ทำแบบนี้ด้วย เพื่อแชร์ volume ด้วยกัน สามารถศึกษาเพิ่มเติมได้ที่ https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
    • Control output ที่ให้พิมพ์ command เพื่อแสดง Output ที่โจทย์ต้องการ เช่น การ sorting ขนาดของ volume, การแสดงเฉพาะ field , การให้แสดงเฉพาะ ip address สามารถศึกษาเพิ่มเติมได้ที่ https://kubernetes.io/docs/user-guide/kubectl-overview/
    • Job เป็นตัว run แบบ parallel เหมือนทำ worker run job พร้อมกันหลายๆตัว ซึ่งโจทย์จะบอกประมาณว่า จง run ตัวนี้ให้เสร็จ 10 ครั้ง โดยที่ run ครั้งละ 3 ตัว สามารถศึกษาเพิ่มเติมได้ที่ https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
    • Update and Scaling Deployment
    • History and rollback Deployment เป็น command

    Installation, Configuration and Validation (20% of score)

    คุณต้องทำ manual การติดตั้งด้วยตัวเองทั้งหมด เป็นแบบ Hard Install ให้ไปที่ https://github.com/kelseyhightower/kubernetes-the-hard-way ซ้อมทำการติดตั้งจนกว่าจะจำได้ ว่าแต่ละขั้นตอนต้องทำยังไง โดยที่ไม่ต้องเปิดเอกสารในการติดตั้งอีก แล้วคุณจะสามารถทำคะแนน 20% ได้แน่นอน

    • การสร้าง K8S cluster from binaries เป็นการ upzip ออกมาเอง แล้วทีละขั้นตอนในการติดตั้ง
    • Must use token and certificates
    • Configure to start K8S components with system
    • ใช้ systemctl to enable/disable services
    • Troubleshooting with k8s log files
    • มี backup and restore etcd

    Networking

    Volume

    Volume เป็น empty dir หรือ share disk ธรรมดา การสร้าง storage class ใหม่ มีข้อสอบประมาณ 1-2 ข้อ

    Security

    Troubleshooting, Monitoring/Logging

    ซึ่งจะสอดแทรกตามที่ต้องทำการติดตั้งอยู่แล้ว มีการ recovery ดู log ดูว่าทำไม service ไม่ start? ทำไม reboot แล้วมีปัญหา? ทำไมตัวนี้ start ไม่ขึ้น? cluster ตัวนี้ขาดอะไรไป? เราต้องใช้คำสั่งในการดูปัญหาที่เกิดขึ้น ซึงมีคำสั่ง kubectl และ kubectl logs ในการแสดง output ของปัญหา

    Tips

    • ควรฝึกการติดตั้งแบบ command line อย่างเดียว อย่างน้อย 6 เดือน เพื่อความคุ้นชินในการติดตั้ง kubernetes
    • โจทย์ 60% สำหรับ developer และอีก 40% เป็นของ administrator
    • Kubernetes Version ที่ใช้ คือ 6.2
    • Kubectl explain จะมีคำอธิบายว่าขาดอะไรไปบ้าง มีคำอธิบายให้เราเข้าใจ
    • สามารถเลือกทำโจทย์คำถามได้ เพื่อประหยัดเวลาในการทำข้อสอบ แล้วค่อยกลับวนมาทำใหม่ได้ ไม่ควรติดอยู่กับข้อใดข้อหนึ่งนานจนเกินไป จะเป็นการเสียเวลา
    • แนะนำให้สร้าง manifest เพราะ แต่ละข้อสามารถนำมาใช้ซ้ำกันได้ เพื่อประหยัดเวลาในการทำข้อสอบ
    • จงทำทีละ step ด้วยมือทั้งหมด ลงจนกว่าจะจำได้ ด้วยการทำตาม https://github.com/kelseyhightower/kubernetes-the-hard-way

    หลังจากทำข้อสอบเสร็จแล้ว จะประกาศผลภายใน 72 ชั่วโมง และจะจัดส่งใบ Certified Kubernetes Administrator (CKA)  เป็นไฟล์ pdf ให้ และมีลำดับของการเป็น Certified Kubernetes Administrator (CKA)  คนที่เท่าไหร่ของโลก

    การทำข้อสอบนี้เป็นการวัดความรู้ของเราจริงๆ ไม่สามารถจำคำตอบแล้วไปสอบได้ ขอให้ทุกคนประสบความสำเร็จในการสอบ Certified Kubernetes Administrator (CKA) นะคะ

    เนื้อหาโดย

    คุณจิรายุส นิ่มแสง
    Founder & CEO at Opsta (Thailand) Co.,Ltd.
    จากหัวข้อ “Tips & Techniques to pass Certified Kubernetes Administrator”
    by Jirayut Nimsaeng, Founder at Opsta ในงาน GDG Cloud Bangkok 2nd Meetup

    สำหรับผู้ที่สนใจรายละเอียดเพิ่มเติมเกี่ยวกับ OpenLandscape Cloud based on OpenStack สามารถทดสอบฟรีได้ที่ https://gate.openlandscape.cloud/ ค่ะ