Prerequisites
Before you begin, be sure that you have created a bootstrap cluster
Create a new vSphere Kubernetes cluster
Use the following steps to create a new, air-gapped vSphere cluster.
-
Create a Kubernetes cluster by copying the following command and substituting the valid values for your environment:
./konvoy create cluster vsphere --cluster-name ${CLUSTER_NAME} \ --network <NETWORK_NAME> \ --control-plane-endpoint-host <CONTROL_PLANE_IP> \ --data-center <DATACENTER_NAME> \ --data-store <DATASTORE_NAME> \ --folder <FOLDER_NAME> \ --server <VCENTER_API_SERVER_URL> \ --ssh-public-key-file </path/to/key.pub> \ --resource-pool <RESOURCE_POOL_NAME> \ --vm-template konvoy-ova-vsphere-os-release-k8s_release-vsphere-timestamp \ --virtual-ip-interface eth0 \ --extra-sans "127.0.0.1" \ --registry-mirror-url ${DOCKER_REGISTRY_ADDRESS} \ --registry-mirror-cacert /tmp/registry.pem
Review Create and Prepare a Bastion VM Host for more about the ${DOCKER_REGISTRY_ADDRESS}.
-
Inspect the created cluster resources with the command:
kubectl get clusters,kubeadmcontrolplanes,machinedeployments
-
Use the
wait
command to monitor the cluster control-plane readiness:kubectl wait --for=condition=ControlPlaneReady "clusters/${CLUSTER_NAME}" --timeout=20m
cluster.cluster.x-k8s.io/${CLUSTER_NAME} condition met
The
READY
status becomesTrue
after the cluster control-plane becomes Ready in one of the following steps.After DKP creates the objects on the API server, the Cluster API controllers reconcile them, creating infrastructure and machines. As the controllers progress, they update the Status of each object.
-
Run the DKP
describe
command to monitor the current status of the cluster:dkp describe cluster -c ${CLUSTER_NAME}
NAME READY SEVERITY REASON SINCE MESSAGE Cluster/e2e-airgapped-1 True 13h ├─ClusterInfrastructure - VSphereCluster/e2e-airgapped-1 True 13h ├─ControlPlane - KubeadmControlPlane/e2e-airgapped-1-control-plane True 13h │ ├─Machine/e2e-airgapped-1-control-plane-7llgd True 13h │ ├─Machine/e2e-airgapped-1-control-plane-vncbl True 13h │ └─Machine/e2e-airgapped-1-control-plane-wbgrm True 13h └─Workers └─MachineDeployment/e2e-airgapped-1-md-0 True 13h ├─Machine/e2e-airgapped-1-md-0-74c849dc8c-67rv4 True 13h ├─Machine/e2e-airgapped-1-md-0-74c849dc8c-n2skc True 13h ├─Machine/e2e-airgapped-1-md-0-74c849dc8c-nkftv True 13h └─Machine/e2e-airgapped-1-md-0-74c849dc8c-sqklv True 13h
-
As they progress, the controllers also create Events, which you can list using the command:
kubectl get events | grep ${CLUSTER_NAME}
For brevity, this example uses
grep
. You can also use separate commands to get Events for specific objects, such askubectl get events --field-selector involvedObject.kind="VSphereCluster"
andkubectl get events --field-selector involvedObject.kind="VSphereMachine"
.
Next, you can make the cluster self-managed, and then explore your new cluster.
Known Limitations
-
The DKP Konvoy version used to create a bootstrap cluster must match the DKP Konvoy version used to create a workload cluster.
-
DKP Konvoy supports deploying one workload cluster.
-
DKP Konvoy generates a set of objects for one Node Pool.
-
DKP Konvoy does not validate edits to cluster objects.