Tạo cluster Kubernetes
/v1/clustersTạo cluster Kubernetes mới dựa trên một cluster template. Xem thêm tài liệu tạo cluster template Kubernetes để biết chi tiết.
Nguồn: create-new-cluster
Request
Tham số
namestringbắt buộcTên của tài nguyên.
discovery_urlstringbắt buộcURL discovery tuỳ chỉnh dùng cho node discovery. COE dùng URL này để phát hiện các server đã tạo nhằm chạy container. Cơ chế discovery thực tế tuỳ từng COE. Trong một số trường hợp, Magnum tự điền thông tin server vào discovery service. Nếu không chỉ định discovery_url, Magnum sẽ dùng discovery service public tại https://discovery.etcd.io. Khi đó Magnum sẽ tạo URL riêng cho từng bay và lưu thông tin server.
master_countintegerbắt buộcSố server đóng vai trò master cho bay/cluster. Mặc định là 1. Đặt lớn hơn 1 để bật High Availability. Nếu tuỳ chọn master-lb-enabled được chỉ định trong baymodel/cluster template, các master server sẽ được đưa vào load balancer pool.
cluster_template_idUUIDbắt buộcUUID của cluster template.
node_countintegerbắt buộcSố server đóng vai trò node trong bay/cluster. Mặc định là 1.
keypairstringbắt buộcTên SSH keypair được cấu hình trên các server của bay/cluster để truy cập ssh. Bạn cần key này để ssh vào các server trong bay/cluster. Tên đăng nhập phụ thuộc vào driver của bay/cluster, ví dụ với image fedora-atomic, tên đăng nhập mặc định là fedora.
create_timeoutintegerbắt buộcThời gian timeout tạo cluster, tính bằng phút. Giá trị phải là số nguyên dương, mặc định là 60 phút. Nếu quá thời gian này trong khi tạo cluster, thao tác sẽ bị huỷ và trạng thái cluster được đặt thành CREATE_FAILED.
master_flavor_idstringFlavor của master node cho baymodel/cluster template này.
labelsarrayCác label tuỳ ý dưới dạng cặp key=value. Các key được chấp nhận và giá trị hợp lệ do driver của bay/cluster quy định. Label được dùng để truyền thêm tham số riêng cho từng driver.
flavor_idstringbắt buộcID hoặc tên nova flavor dùng để boot các node server. Mặc định là m1.small.
fixed_subnetstringSubnet cố định dùng để cấp địa chỉ mạng cho các node trong bay/cluster.
fixed_networkstringTên hoặc network ID của một mạng Neutron dùng để kết nối vào mạng nội bộ của bay/cluster.
floating_ip_enabledbooleanCó dùng floating IP của nhà cung cấp cloud hay không. Một số nhà cung cấp dùng floating IP, một số dùng public IP, nên Magnum cung cấp tuỳ chọn này để chỉ định việc dùng floating IP. Nếu không đặt, giá trị floating_ip_enabled trong template sẽ được dùng.
Request mẫu
Dùng curl
curl -ks -X POST -H 'Content-Type: application/json' -H 'OpenStack-API-Version: container-infra 1.8' -H 'X-Auth-Token: gAAAAA<...>' -d '{
"name": "kubApi_template",
"master_count": 1,
"node_count": 1,
"master_flavor_id": "medium.2c.4g",
"flavor_id": "small.1c.2g",
"keypair": "Docs Writter",
"docker_volume_size": 10,
"cluster_template_id": "389ecf86-46ce-4cdd-b7f3-889b0603b7ed",
"create_timeout": 60,
"labels": {
"boot_volume_type": "nvmer3",
"docker_volume_type": "nvmer3",
"boot_volume_size": "20",
"etcd_lb_disabled": "true",
"heat_container_agent_tag": "5.3.11",
"cloud_provider_tag": "v1.31.1",
"cloud_provider_enabled": "true",
"cinder_csi_plugin_tag": "v1.31.1",
"csi_snapshotter_tag": "v8.0.1",
"csi_attacher_tag": "v4.6.1",
"flannel_tag": "v0.11.0-amd64",
"cinder_csi_enabled": "true",
"availability_zone": "nova",
"use_podman": "true",
"etcd_tag": "v3.5.13",
"cgroup_driver": "systemd",
"octavia_api_lb_flavor": "",
"octavia_default_flavor": "",
"auto_scaling_enabled": "True",
"cluster_upgrade_method": "replace",
"network_driver": "cilium",
"kube_tag": "v1.31.2",
"kube_version": "v1.31.2",
"hyperkube_image": "docker.io/virtuozzo/hci-binary-hyperkube",
"autoscaler_tag": "1.31.0",
"coredns_tag": "1.11.3",
"k8s_keystone_auth_tag": "v1.31.1",
"cilium_tag": "v1.16.3",
"container_runtime": "containerd",
"monitoring_enabled": "False",
"minion_floating_ip_disabled": "True",
"cilium_routing_mode": "native"
}
}' https://api.vietnix.cloud:9513/v1/clusters
HTTP request
POST https://api.vietnix.cloud:9513/v1/clusters
Content-Type: application/json
OpenStack-API-Version: container-infra 1.8
X-Auth-Token: gAAAAA<...>
{
"name": "kubApi_template",
"master_count": 1,
"node_count": 1,
"master_flavor_id": "medium.2c.4g",
"flavor_id": "small.1c.2g",
"keypair": "Docs Writter",
"docker_volume_size": 10,
"cluster_template_id": "389ecf86-46ce-4cdd-b7f3-889b0603b7ed",
"create_timeout": 60,
"labels": {
"boot_volume_type": "nvmer3",
"docker_volume_type": "nvmer3",
"boot_volume_size": "20",
"etcd_lb_disabled": "true",
"heat_container_agent_tag": "5.3.11",
"cloud_provider_tag": "v1.31.1",
"cloud_provider_enabled": "true",
"cinder_csi_plugin_tag": "v1.31.1",
"csi_snapshotter_tag": "v8.0.1",
"csi_attacher_tag": "v4.6.1",
"flannel_tag": "v0.11.0-amd64",
"cinder_csi_enabled": "true",
"availability_zone": "nova",
"use_podman": "true",
"etcd_tag": "v3.5.13",
"cgroup_driver": "systemd",
"octavia_api_lb_flavor": "",
"octavia_default_flavor": "",
"auto_scaling_enabled": "True",
"cluster_upgrade_method": "replace",
"network_driver": "cilium",
"kube_tag": "v1.31.2",
"kube_version": "v1.31.2",
"hyperkube_image": "docker.io/virtuozzo/hci-binary-hyperkube",
"autoscaler_tag": "1.31.0",
"coredns_tag": "1.11.3",
"k8s_keystone_auth_tag": "v1.31.1",
"cilium_tag": "v1.16.3",
"container_runtime": "containerd",
"monitoring_enabled": "False",
"minion_floating_ip_disabled": "True",
"cilium_routing_mode": "native"
}
}
Để đảm bảo cluster được tạo thành công, bạn nên dùng request mẫu của chúng tôi, đặc biệt là tham số labels.
Response
Tham số
uuidUUIDbắt buộcUUID của cluster.
Response mẫu
{
"uuid": "ed495c33-601c-4f5c-86c8-d7c13b5f6b0e"
}
Mã trạng thái
Thành công
| Mã trạng thái | Mô tả |
|---|---|
| 202 - Accepted | Request đã được nhận để xử lý nhưng chưa hoàn tất. Response có header location chứa liên kết để theo dõi tiến trình xử lý. |
Lỗi
| Mã trạng thái | Mô tả |
|---|---|
| 400 - Bad Request | Nội dung request không hợp lệ. |
| 401 - Unauthorized | Cần xác thực trước khi gửi request. |
| 403 - Forbidden | Policy không cho phép user hiện tại thực hiện thao tác này. |
| 404 - Not Found | Không tìm thấy tài nguyên được yêu cầu. |