Mapping Virtual Machines to IaaS
Mapping Virtual Machines to IaaS Resources
The EdgeXR platform exposes unique node IDs for all deployed Cluster Instances (ClusterInsts) via the API. This allows for mapping resources within the EdgeXR platform to resources in the underlying IaaS (VMware, OpenStack, Google Compute, AWS, Azure). This can be used by Operators to better manage and monitor the resources in use within their cloudlet.
This information is provided in a vms
array under the resources
array for cluster information. The following values are exposed:
Item | Meaning | Type | Example |
---|---|---|---|
name | vm name | string | mex-k8s-node-1-mexplat-stage-hamburg-cloudlet-test-mobiledgex”Unique, with actual format IaaS dependent |
type | type of vm | string | loadbalancer, cluster-master, cluster-node |
status | state of vm | string | ACTIVE, STOPPED |
infraflavor | vm's IaaS flavor | string | m4.small |
ip_address | external and internal ip addresses | array | external IP: x.x.x.x |
Example with mcctl
The mcctl
utility can be used to pull this information via the clusterinst show argument to the region subcommand:
$ mcctl clusterinst show region=EU cluster=test01
- key:
clusterkey:
name: test01
cloudletkey:
organization: TDG
name: mexplat-stage-hamburg-cloudlet
organization: EdgeXR
flavor:
name: x1.medium
liveness: LivenessStatic
state: Ready
ipaccess: IpAccessDedicated
allocatedip: dynamic
nodeflavor: m4.large
deployment: kubernetes
nummasters: 1
numnodes: 1
masternodeflavor: m4.large
resources:
vms:
- name: test01.mexplat-stage-hamburg-cloudlet.tdg.edgexr.org
type: rootlb
status: ACTIVE
infraflavor: m4.medium
ipaddresses:
- externalip: 80.187.132.42
- externalip: 10.101.44.1
- name: mex-k8s-node-1-mexplat-stage-hamburg-cloudlet-test01-mobiledgex
type: cluster-node
status: ACTIVE
infraflavor: m4.large
ipaddresses:
- externalip: 10.101.44.101
- name: mex-k8s-master-mexplat-stage-hamburg-cloudlet-test01-mobiledgex
type: cluster-master
status: ACTIVE
infraflavor: m4.large
ipaddresses:
- externalip: 10.101.44.10
Example with API
You can also work directly with the API by using the /auth/ctrl/ShowClusterInst
route as illustrated below.
POST /auth/ctrl/ShowClusterInst
[
{
"key": {
"clusterkey": {
"name": "test01"
},
"cloudletkey": {
"organization": "TDG",
"name": "mexplat-stage-hamburg-cloudlet"
},
"organization": "EdgeXR"
},
"flavor": {
"name": "x1.medium"
},
"liveness": "LivenessStatic",
"state": "Ready",
"ipaccess": "IpAccessDedicated",
"allocatedip": "dynamic",
"nodeflavor": "m4.large",
"deployment": "kubernetes",
"nummasters": 1,
"numnodes": 1,
"masternodeflavor": "m4.large",
"resources": {
"vms": [
{
"name": "test01.mexplat-stage-hamburg-cloudlet.tdg.edgexr.org",
"type": "rootlb",
"status": "ACTIVE",
"infraflavor": "m4.medium",
"ipaddresses": [
{
"externalip": "80.187.132.42"
},
{
"externalip": "10.101.44.1"
}
]
},
{
"name": "mex-k8s-node-1-mexplat-stage-hamburg-cloudlet-test01-mobiledgex",
"type": "cluster-node",
"status": "ACTIVE",
"infraflavor": "m4.large",
"ipaddresses": [
{
"externalip": "10.101.44.101"
}
]
},
{
"name": "mex-k8s-master-mexplat-stage-hamburg-cloudlet-test01-mobiledgex",
"type": "cluster-master",
"status": "ACTIVE",
"infraflavor": "m4.large",
"ipaddresses": [
{
"externalip": "10.101.44.10"
}
]
}
]
}
}
]