Chuyển tới nội dung chính

Tạo cluster Kubernetes

POST/v1/clusters

Tạ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.

info

Request​

Tham số​

namestringbắt buộc

Tên của tài nguyên.

discovery_urlstringbắt buộc

URL 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ộc

Số 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ộc

UUID của cluster template.

node_countintegerbắt buộc

Số server đóng vai trò node trong bay/cluster. Mặc định là 1.

keypairstringbắt buộc

Tê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ộc

Thờ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_idstring

Flavor của master node cho baymodel/cluster template này.

labelsarray

Cá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ộc

ID hoặc tên nova flavor dùng để boot các node server. Mặc định là m1.small.

fixed_subnetstring

Subnet cố định dùng để cấp địa chỉ mạng cho các node trong bay/cluster.

fixed_networkstring

Tê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_enabledboolean

Có 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"
}
}
warning

Để đả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ộc

UUID 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áiMô tả
202 - AcceptedRequest đã đượ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áiMô tả
400 - Bad RequestNội dung request không hợp lệ.
401 - UnauthorizedCần xác thực trước khi gửi request.
403 - ForbiddenPolicy không cho phép user hiện tại thực hiện thao tác này.
404 - Not FoundKhông tìm thấy tài nguyên được yêu cầu.