Kubernetes และ Private Cloud
ตำแหน่งในหน้าผู้ดูแลระบบ: Kubernetes: Infrastructure › Cloud provider › CloudStack › Kubernetes (CKS) (
/infra/cloudstack?tab=k8s) จากนั้นไปที่ Services › Kubernetes (Overview, Clusters, Versions, Policy) Private Cloud: Services › Private Cloud (Overview/vpc, VPC/vpc/list, Plans & pricing/vpc/plans) เปิดใช้งานทั้งสองโมดูลได้ที่ System › Admin › License & updates
What it does
- Kubernetes. ลูกค้าสามารถสร้างคลัสเตอร์ Kubernetes แบบจัดการบน CloudStack ของคุณได้ด้วย CloudStack Kubernetes Service (CKS) Control plane ไม่มีค่าใช้จ่าย ลูกค้าชำระเงินสำหรับโหนด worker NexCMP จะสร้างเครือข่ายและ IP สาธารณะแยกต่างหากสำหรับแต่ละคลัสเตอร์ พร้อมแยกคลัสเตอร์ของลูกค้าแต่ละรายออกจากกัน
- Private Cloud. ลูกค้าจะได้รับเครือข่ายส่วนตัว (CloudStack VPC) พร้อมเราเตอร์, ซับเน็ต (tiers), กฎไฟร์วัล (network ACLs) และเครื่องเสมือนภายในนั้น ขายโดยอิงตาม แผนแบนด์วิดท์ พร้อมความเร็วเฉพาะแบบไม่จำกัดปริมาณ (เช่น 50, 100, 500 Mbps, 1 และ 3 Gbps) ลูกค้าแต่ละรายสามารถมี VPC ได้ 1 รายการเป็นค่าเริ่มต้น
ทั้งสองระบบสร้างขึ้นบน CloudStack และใช้งาน API ผ่านการเชื่อมต่อเดียวกัน
ข้อกำหนด
Kubernetes
| Item | Requirement |
|---|---|
| CloudStack | 4.23 (ทดสอบแล้ว) CKS จะต้อง เปิดใช้งาน (cloud.kubernetes.service.enabled = true) |
| บัญชี | บัญชี Domain Admin ในโดเมนเฉพาะ เพื่อให้ NexCMP สามารถสร้างโปรเจกต์ CloudStack สำหรับลูกค้าแต่ละรายและกำหนดขีดจำกัดทรัพยากรภายในนั้น ดู CloudStack |
endpoint.url | การตั้งค่าส่วนกลางของ CloudStack ต้องชี้ไปยัง management API ของคุณ ซึ่งสามารถเข้าถึงได้จาก VM ของคลัสเตอร์ NexCMP จะแสดงค่าและผลลัพธ์ของการตรวจสอบ endpoint |
| เวอร์ชัน | รายการเวอร์ชัน Kubernetes ที่รองรับอย่างน้อยหนึ่งรายการพร้อม ISO ของไบนารี ในสถานะ Enabled เวอร์ชันที่พ้นกำหนดซัพพอร์ตแล้วจะไม่สามารถนำมาวางจำหน่ายได้ |
| คอนโทรลเพลนออฟเฟอริง | เซอร์วิสออฟเฟอริงฟรีที่ มี vCPU 2 vCPU, RAM 2048 MB และจำกัด CPU พอดี (limitcpuuse = true) ซึ่งมองเห็นได้สำหรับบัญชี เซิร์ฟเวอร์จะปฏิเสธค่าอื่นทั้งหมดด้วย cp_offering_invalid |
| Network | เน็ตเวิร์กออฟเฟอริงแบบ isolated ที่รองรับ CKS และเปิดใช้งานอยู่ |
| IP | แอดเดอร์ส IPv4 สาธารณะแบบฟรีในช่วงที่เปิดขาย โดยแต่ละคลัสเตอร์จะใช้งานหนึ่งไอพี |
| ความจุ | แต่ละคลัสเตอร์จะใช้ RAM ของคุณ 2 ถึง 4 GB สำหรับคอนโทรลเพลนและ router VM ขนาดเล็ก คอยสังเกตแท็บความจุ |
Private Cloud
| Item | Requirement |
|---|---|
| CloudStack | 4.23 (ทดสอบแล้ว) โดยเปิดใช้งาน VPC |
| VPC ออฟเฟอริง | หนึ่ง VPC ออฟเฟอริง ออฟเฟอริงแบบ dual-stack จะทำให้แต่ละเทียร์ได้รับ IPv6 /64 ด้วยเช่นกัน |
| เทียร์เน็ตเวิร์กออฟเฟอริง | หนึ่งเน็ตเวิร์กออฟเฟอริงต่อแพ็กเกจแบนด์วิดท์ สร้างขึ้นสำหรับ VPC โดยมี network rate (Mbps) เท่ากับแพ็กเกจ บวกกับออฟเฟอริงที่ ถูกล็อก ไว้ที่ 1 Mbps ซึ่งจะถูกใช้งานเมื่อ VPC ถูกล็อกเนื่องจากค้างชำระ |
| บัญชี | บัญชีเฉพาะ (แนะนำให้ใช้ Domain Admin) เน็ตเวิร์ก VPC จะอยู่ในบัญชี ไม่ใช่ในโปรเจกต์ |
| IP | แอดเดอร์ส IPv4 สาธารณะแบบฟรี (แต่ละ VPC จะใช้หนึ่งไอพีสำหรับ source NAT) |
| พื้นที่แอดเดอร์ส | แต่ละ VPC จะได้รับ /16 จาก 10.128.0.0/9 โปรดเว้นช่วงดังกล่าวในเน็ตเวิร์กของคุณเองโดยไม่ใช้งาน |
| ขึ้นอยู่กับ | เชื่อมต่อ CloudStack แล้ว โมดูล Private Cloud |
เตรียมโครงสร้างพื้นฐาน
Kubernetes: เปิดใช้งาน CKS และเพิ่มเวอร์ชัน
เปิดใช้งานบริการและตั้งค่า endpoint จากนั้นรีสตาร์ท management server:
bashcmk update configuration name=cloud.kubernetes.service.enabled value=true cmk update configuration name=endpoint.url value=https://cloudstack.example.com/client/api sudo systemctl restart cloudstack-managementendpoint.urlจะถูกเรียกกลับโดยคอนโทรลเลอร์ของคลัสเตอร์ ดังนั้นจึงต้องเป็นแอดเดอร์สที่ VM ของคลัสเตอร์สามารถเข้าถึงได้สร้าง ISO ของไบนารี Kubernetes สำหรับเวอร์ชันที่คุณต้องการขาย ด้วยสคริปต์
create-kubernetes-binaries-iso.shจากซอร์สทรีของ CloudStack โฮสต์ไว้บนเว็บเซิร์ฟเวอร์แล้วลงทะเบียน:bashcmk add kubernetessupportedversion name="Kubernetes 1.35.0" semanticversion=1.35.0 \ url=https://files.example.com/setup-v1.35.0-calico-amd64.iso zoneid=<zone-id> \ mincpunumber=2 minmemory=2048 cmk list kubernetessupportedversions filter=name,semanticversion,state,isostateรอจนกว่าสถานะของ ISO จะเปลี่ยนเป็น Ready และเวอร์ชันเป็น Enabled
สร้างคอนโทรลเพลนออฟเฟอริง โดยจำกัดไว้ที่โดเมนของ NexCMP:
bashcmk create serviceoffering name=K8S-CP-2-2 displaytext="Kubernetes control plane" \ cpunumber=2 cpuspeed=1000 memory=2048 limitcpuuse=true offerha=false domainid=<domain-id>ตรวจสอบว่าเน็ตเวิร์กออฟเฟอริงของ CKS เปิดใช้งานอยู่:
bashcmk list networkofferings state=Enabled forvpc=false filter=id,name
Private Cloud: สร้างออฟเฟอริง
ใน UI ของ CloudStack (Service Offerings › Network Offerings › Add network offering) หรือด้วย cmk:
แสดงรายการสิ่งที่คุณมี:
bashcmk list vpcofferings filter=id,name,state cmk list networkofferings forvpc=true filter=id,name,networkrate,stateใช้ VPC ออฟเฟอริงที่เปิดใช้งานแล้ว (แบบ dual-stack หากคุณต้องการ IPv6) หากคุณต้องการรายการใหม่ ให้โคลน VPC ออฟเฟอริงเริ่มต้นของ CloudStack แล้วเปิดใช้งาน
สำหรับ แต่ละ แพ็กเกจแบนด์วิดท์ที่คุณขาย ให้สร้างเน็ตเวิร์กออฟเฟอริง สำหรับ VPC (โคลน "isolated network offering for VPC networks" เริ่มต้น) และตั้งค่า Network rate (Mb/s) เป็นความเร็วของแพ็กเกจ:
50,100,500,1000,3000เปิดใช้งานออฟเฟอริงแต่ละรายการสร้างออฟเฟอริงเพิ่มอีกหนึ่งรายการที่มี network rate 1 (
VPC-LOCKED-1M) สำหรับ VPC ที่ถูกล็อก: ลูกค้ายังคงสามารถเข้าถึงเซิร์ฟเวอร์ของตนผ่าน SSH ได้ แต่ความเร็วจะถูกจำกัดจดจำ UUID ของแต่ละแพ็กเกจบริการไว้ NexCMP จะต้องใช้งานในหัวข้อถัดไป
รหัส offering ที่ระบุไม่มีอยู่ในคลาวด์ของคุณ
แบบฟอร์ม Private Cloud จะถูกกรอกล่วงหน้าด้วย UUID ของ offering ที่เป็นของระบบ CloudStack อื่น ให้แทนที่ทุกรายการด้วยของคุณเอง มิฉะนั้นการสั่งซื้อ VPC แรกจะล้มเหลว
เชื่อมต่อใน NexCMP
Kubernetes
เปิด Infrastructure › Cloud provider › CloudStack แล้วเลือกแท็บ Kubernetes (CKS) การ์ดด้านขวา CKS status on CloudStack (read-only) จะแสดง
kubernetesserviceenabled,endpoint.urlพร้อม Endpoint check, network offering ของ CKS, การตั้งค่าcloud.kubernetes.*และรายการ ISO พร้อมเวอร์ชัน คลิก Recheck หลังจากที่คุณแก้ไขบางอย่างเสร็จใน Sales config ให้เลือก Control plane Offering (จะมีคำเตือนปรากฏขึ้นหากไม่ใช่ 2 vCPU / 2048 MB / CPU cap พอดี), ตั้งค่า Max workers per cluster (1 ถึง 9: CKS อนุญาต 10 โนดรวมโนดควบคุม), เปิดสวิตช์ Enable CKS for this backend และคลิก Save สวิตช์จะยังคงปิดใช้งานอยู่จนกว่าจะมีการเลือก offering

เปิด Services › Kubernetes › Versions และคลิก Sync from CloudStack เปิดสวิตช์ Available for new clusters สำหรับเวอร์ชันที่คุณต้องการขาย กำหนดค่าเริ่มต้น และหากต้องการ ให้ระบุวันที่ End of life (EOL) ด้วย
เปิด Services › Kubernetes › Policy ในส่วน Worker plans ให้เพิ่มแผนโดยระบุ Plan code (A-Z, 0-9, ขีดกลาง, สูงสุด 16 ตัวอักษร) กำหนดค่า NVMe per worker (GB), Min and max workers รวมถึงขีดจำกัดของคลัสเตอร์ (คลัสเตอร์ที่ใช้งานอยู่ต่อบัญชี, การสร้างต่อ 24 ชั่วโมง, ขีดจำกัดรวมทั่วโลก, การทำงาน CKS พร้อมกัน) จากนั้นเปิดสวิตช์ Sell Kubernetes (CKS) ต้องมีอย่างน้อยหนึ่งแผนที่เปิดขายอยู่

Private Cloud
เปิด Services › Private Cloud (ภาพรวม) ในการ์ดนโยบาย ให้แทนที่ VPC offering และ Locked offering tier ด้วย UUID ของคุณเอง ตรวจสอบขีดจำกัด (VPC ต่อบัญชี, เทียร์, VM และกฎ ACL ต่อ VPC, ยอดเงินคงเหลือเป็นชั่วโมงของค่าบริการแผนที่จำเป็นต้องใช้ในการสร้าง, การเปลี่ยนแผนต่อ 24 ชั่วโมง, การทำงานพร้อมกันโดย 0 หมายถึงการหยุดฉุกเฉิน) และเซิร์ฟเวอร์ DNS คลิก Save (ระบบจะถามเหตุผล)

เปิด Services › Private Cloud › Plans & pricing สำหรับแต่ละแผน ให้คลิก Edit แล้วกำหนด VND price per month, On sale และ UUID ของ CloudStack tier offering ที่มีอัตราเครือข่ายเท่ากับ Mbps ของแผนนั้น แถวจะแสดงต้นทุนและกำไรเมื่อใช้งานเต็มที่ เพื่อให้คุณเห็นว่าแผนใดอยู่ต่ำกว่าต้นทุนของคุณ

เปิดสวิตช์ Sell Private Cloud หากต้องการทดสอบก่อน ให้เพิ่ม ID บัญชีทดสอบลงใน Beta accounts: บัญชีเหล่านั้นจะสามารถใช้บริการได้ในขณะที่สวิตช์การขายปิดอยู่
ตรวจสอบ
- Kubernetes: การ์ดสถานะแสดง
kubernetesserviceenabled: true, การตรวจสอบ endpoint ที่ถูกต้อง และเวอร์ชันที่เปิดใช้งาน ลองสร้างคลัสเตอร์ทดสอบแบบ 1 worker ในฐานะลูกค้า คลัสเตอร์ควรเปลี่ยนเป็นสถานะ running และkubectl get nodesควรแสดงว่าพร้อมใช้งาน ลบมันทิ้งทีหลัง: เน็ตเวิร์กและ IP จะถูกคืนกลับสู่พูล - Private Cloud: สร้าง VPC ด้วยแผนที่เล็กที่สุดในฐานะลูกค้าทดสอบ VPC จะแสดงสถานะ active, เทียร์ได้รับซับเน็ต, VM ในเทียร์สามารถเข้าถึงอินเทอร์เน็ตผ่าน VPC router ได้ และการใช้ Change plan ไปยังแผนที่ใหญ่ขึ้นจะมีผลภายในประมาณ 20 วินาทีโดยที่การเชื่อมต่อไม่หลุด
ข้อจำกัดและหมายเหตุ
- Kubernetes: worker จะถูกเรียกเก็บเงินเหมือน VM ตามราคาของแผนและนับเป็น VM ในขีดจำกัดของ VM คลัสเตอร์สามารถมี worker ได้สูงสุด 9 ตัวเนื่องจากข้อจำกัด CKS ที่ 10 โนด
- Kubernetes: control plane, router และ public IP ของคลัสเตอร์ไม่มีค่าใช้จ่ายสำหรับลูกค้า โดยคุณจะเป็นผู้รับภาระต้นทุนส่วนนี้
- Private Cloud: ทุกแผนเป็นแบบ unmetered ราคาในแบบฟอร์มเป็นดองเวียดนามต่อเดือน คอลัมน์ต้นทุนจะใช้ราคาอ้างอิงที่ไม่ใช่ของคุณ ดังนั้นโปรดใช้ตัวเลขของคุณเอง
- VPC ที่ถูกล็อกจะถูกจำกัดความเร็วไว้ที่ 1 Mbps, ไม่มีการเรียกเก็บเงิน และไม่ถูกลบโดยอัตโนมัติ
- Private Cloud ใช้ router หนึ่งตัวต่อ VPC ไม่ใช่แบบคู่สำรอง หากโฮสต์ของมันล่ม CloudStack จะทำการสร้างขึ้นใหม่ภายในไม่กี่นาที
การแก้ Problme
| อาการ | สาเหตุ | วิธีแก้ปัญหา |
|---|---|---|
cp_offering_invalid / "ข้อเสนอนี้ไม่ใช่ 2 vCPU / 2048 MB / limitcpuuse" | ข้อเสนอ control-plane มีขนาดอื่นหรือไม่มีการจำกัด CPU | สร้างข้อเสนอตามขั้นตอนที่ 3 และเลือกใหม่อีกครั้ง |
| สวิตช์ Enable CKS ถูกปิดอยู่ | ไม่ได้เลือกข้อเสนอ control-plane | โปรดเลือกหนึ่งรายการก่อน |
kubernetesserviceenabled: false | CKS ถูกปิดใช้งานใน CloudStack | เปิดใช้งานและรีสตาร์ท management server |
| การตรวจสอบ Endpoint ล้มเหลว | endpoint.url ไม่สามารถเข้าถึงได้จาก VM ของคลัสเตอร์ | ตั้งค่า URL ที่เข้าถึงได้, รีสตาร์ท management server, แล้วคลิก Recheck |
| "EOL: ไม่สามารถเปิดใช้งานสำหรับการขายได้" | เลยกำหนดวันสิ้นสุดอายุ (end-of-life) ของเวอร์ชันนี้แล้ว | ลงทะเบียนเวอร์ชันใหม่กว่า |
| "ไม่มีเวอร์ชัน: คลิก Sync from CloudStack" | ยังไม่ได้ลงทะเบียนเวอร์ชัน Kubernetes | ลงทะเบียนเวอร์ชันและซิงค์ |
| "แบ็กเอนด์ CKS ปิดอยู่: ลูกค้าไม่สามารถสร้างคลัสเตอร์ได้แม้ว่าจะเปิดใช้งานแฟล็กการขายแล้วก็ตาม" | เปิดสวิตช์การขายไว้แต่แบ็กเอนด์ CKS ปิดอยู่ | เปิดใช้งาน CKS บนแท็บ CloudStack |
| "ต้องมีแผนอย่างน้อย 1 แผนที่วางจำหน่าย" | แผน worker ตัวสุดท้ายถูกลบออก | คงแผนไว้อย่างน้อยหนึ่งแผน หรือปิดการขาย Kubernetes |
| คลัสเตอร์ค้างอยู่ในสถานะกำลังสร้าง | ทรัพยากรไม่เพียงพอหรือ ISO หายไป | ตรวจสอบแท็บความจุและสถานะ ISO ของเวอร์ชัน |
| VPC ใหม่ล้มเหลวในขั้นตอนแรก | ข้อเสนอ VPC หรือข้อเสนอ tier ไม่ถูกต้อง | แทนที่ UUID ของข้อเสนอทั้งหมดด้วยค่าจาก CloudStack ของคุณ |
| "cs_offering_id ต้องเป็น UUID" | รหัสข้อเสนอไม่ใช่ UUID | วางรหัสจาก cmk list networkofferings |
| การเปลี่ยนแผนล้มเหลว | ข้อเสนอ tier ใหม่ไม่มีอยู่จริงหรืออัตราเครือข่ายไม่ถูกต้อง | ตรวจสอบ UUID ของข้อเสนอและอัตราเครือข่าย |