-
Notifications
You must be signed in to change notification settings - Fork 91
Cluster Deployment with KubeDirector
The end user creates a cluster by providing a custom resource (CR) specification to K8s, for example by using "kubectl create". The CR spec identifies the relevant KubeDirector app type definition (KubeDirectorApp resource), configures the roles, and provides selection values for available choices. KubeDirector will validate CRs to ensure that they are legal for that application type.
A CR spec for an instance of the example Cassandra application is shown below. This example specifies 2 "seed" role members and one "worker" role member. 40Gi of persistent shared storage is also requested for each member in each role.
apiVersion: kubedirector.hpe.com/v1beta1
kind: KubeDirectorCluster
metadata:
name: mycluster
spec:
app: cassandra311
roles:
- id: seed
members: 2
resources:
requests:
memory: "4Gi"
cpu: "2"
limits:
memory: "4Gi"
cpu: "2"
storage:
size: "40Gi"
- id: worker
members: 1
resources:
requests:
memory: "4Gi"
cpu: "2"
limits:
memory: "4Gi"
cpu: "2"
storage:
size: "40Gi"
For more details, see the complete spec for KubeDirectorCluster.
After the CR has been created, a user can read it (for example by using "kubectl get") to find information about the various resources that make up the application cluster and any changes that the cluster is undergoing. An example of the CR is shown below, at a point where it has finished initial setup and is ready for use.
apiVersion: kubedirector.hpe.com/v1beta1
kind: KubeDirectorCluster
metadata:
creationTimestamp: "2020-02-24T17:57:57Z"
finalizers:
- kubedirector.hpe.com/cleanup
generation: 1
name: mycluster
namespace: default
resourceVersion: "16500"
selfLink: /apis/kubedirector.hpe.com/v1beta1/namespaces/default/kubedirectorclusters/mycluster
uid: f1ced958-cac3-4996-94d4-0e9fa294d1e6
spec:
app: cassandra311
appCatalog: local
roles:
- id: seed
members: 2
resources:
limits:
cpu: "2"
memory: 4Gi
requests:
cpu: "2"
memory: 4Gi
storage:
size: 40Gi
storageClassName: standard
- id: worker
members: 1
resources:
limits:
cpu: "2"
memory: 4Gi
requests:
cpu: "2"
memory: 4Gi
storage:
size: 40Gi
storageClassName: standard
serviceType: LoadBalancer
status:
clusterService: kdhs-gnqdt
generationUID: 0026d2f3-e804-42a7-a9c1-b794e35776b4
lastNodeID: 3
memberStateRollup:
configErrors: false
membersDown: false
membersInitializing: false
membersRestarting: false
membersWaiting: false
membershipChanging: false
roles:
- id: worker
members:
- nodeID: 1
pod: kdss-grckq-0
pvc: p-kdss-grckq-0
service: s-kdss-grckq-0
state: configured
stateDetail:
lastConfigDataGeneration: 1
lastConfiguredContainer: docker://8bf09a98d2b485834a9c5424e61f931fcfc6e2c5a068611d4c433cc2a7d53584
lastKnownContainerState: running
lastSetupGeneration: 1
statefulSet: kdss-grckq
- id: seed
members:
- nodeID: 2
pod: kdss-fqn78-0
pvc: p-kdss-fqn78-0
service: s-kdss-fqn78-0
state: configured
stateDetail:
lastConfigDataGeneration: 1
lastConfiguredContainer: docker://6bce637e473c45e21fa89ea84fbf0c095c613babfbb943de14df57249ffab8d6
lastKnownContainerState: running
lastSetupGeneration: 1
- nodeID: 3
pod: kdss-fqn78-1
pvc: p-kdss-fqn78-1
service: s-kdss-fqn78-1
state: configured
stateDetail:
lastConfigDataGeneration: 1
lastConfiguredContainer: docker://a483133387febb9704b7b1dc1b6015e04c87ac992c65f2c9f4cf940704d953ba
lastKnownContainerState: running
lastSetupGeneration: 1
statefulSet: kdss-fqn78
specGenerationToProcess: 1
state: configured
A user can later reconfigure the cluster -- e.g. to add or remove role members -- by changing the CR and re-applying it.