Volcengine Kubernetes Engine
Service classification | Component definition | Example component |
Service classification | Component definition | Example component |
Control plane | Kubernetes control plane components | Four control plane components: etcd, kube-apiserver, kube-scheduler, and kube-controller-manager. |
| VKE-managed components | VKE managed components such as cloud-controller-manager, cluster-autoscaler, karpenter, and vpc-cni-controlplane. tip On the Addons page of the VKE console, components with the 'Managed' label are managed components. For more information about managed components, see Add-on overview. |
Data plane | Kubernetes data plane components | Three data plane components: kubelet, kubeproxy, containerd. |
| VKE non-managed components | Non-managed components such as pod networking (CNI) related components, container storage (CSI) related components, and nvidia-device-plugin. tip On the Addons page of the VKE console, components without the 'Managed' label are non-managed components. For more information about managed components, see Add-on overview. |
| Application workloads | Workloads and resources created by users, such as Pods, Deployments, Services, PV/PVCs, and Ingresses. |
Category | Recommendation | Notes |
Category | Recommendation | Notes |
Network planning | Before creating a cluster, we recommend planning cluster, pod, and service network segments in advance based on actual requirements to avoid conflicts:
| A small subnet for the cluster or a small network segment for pods may result in issues such as failing to scale out the cluster and create pods. |
Deployment | When you create a cluster, select an appropriate pod networking type based on your business requirements. For details, see Pod networking. | After the cluster is successfully created, the network model cannot be changed. Therefore, you need to select carefully. |
| In the Node pool configuration step of creating a cluster, a default security group is automatically created and bound. However, you can also configure custom rules in security groups as needed. For details, see Security group configuration and Cluster access rules. | Security groups are an important means of security isolation. Improper security policy configuration may result in potential security risks, service connectivity issues, and other related problems. |
| When creating a cluster, in the Networking section of the Cluster configuration step, we recommend selecting subnets from at least two availability zones. | Selecting multiple availability zones for creating a cluster improves the Kubernetes control plane's availability, disaster tolerance, performance, and incident handling capabilities.This enhances business continuity, stability, and security. |
Reliability | When creating a cluster, we recommend adding a separate data volume and mounting the container and image storage directories respectively to /var/lib/containerd and /var/lib/kubelet. The benefits of using a separate data volume for image storage include:
| Issues such as a high load on the system volume I/O may occur without a separate data volume. |
Security | When creating a cluster, the system enables Cluster deletion protection by default. We recommend keeping it enabled to prevent accidental cluster deletion through the console or Open API. | If deletion protection for clusters is disabled, you can delete the clusters via the console or API, which poses a security risk in business clusters. |
Category | Recommendation | Impact description |
Category | Recommendation | Impact description |
Reliability | We recommend selecting the same availability zone for pod subnets and for node subnets. | Pods will fail to start if there are no available nodes for scheduling in the availability zone . |
| We recommend that the security group for the pod networking of the cluster be associated with no more than 2000 pods. | Security groups can be associated with 2,000 IP addresses at most by default. Otherwise, new ENI cannot be created and pods cannot start. |
Category | Recommendation | Impact description |
Category | Recommendation | Impact description |
Deployment | We recommend setting CPU and memory limits when creating workloads to improve the robustness of workloads. | When multiple applications are deployed on the same node, any application without LimitRange configuration can cause other applications to malfunction owing to insufficient resources and inaccurate monitoring information. |
Reliability | When creating a workload, we recommend enabling pod health checking features, including Liveness check and Readiness check. For detailed operations, see Workload configuration. | If pod health checking is disabled, pods will not be able to restart to restore the services automatically upon business failures. As a result, you will find that the services on pods stopped while the pods themselves seem to be working properly. |
| When creating a service, you need to select the appropriate access method based on your requirements. Currently, four access methods are supported, including Internet access, access only within the cluster (ClusterIP), VPC internal network access, and host port access. | Selecting an inappropriate access method may cause confusing access logic for services internally and externally and the waste of resources. |
| When creating a workload, we recommend setting the number (more than 1 at least) of instances (pod replicas) as required for your business, as well as an appropriate configuration of node scheduling policy. | If only one pod replica is configured, service failures cannot be avoided when nodes or instances malfunction. To ensure successful scheduling for your pods, you need to allocate sufficient resources to the nodes after configuring the scheduling rules. |
| If workloads require high I/O operations, we recommend you mount PVC-related storage. For details, see Storage management. | By doing that, you can avoid the hang issues in containerd or kubelet that cause nodes to enter NotReady status. |