Move Rocky specs from 'approved' to 'implemented': RPC collector, graph fast-failover, k8s datasource Change-Id: Ic530a6c6bbc5b0e1a12b00b672bce7b5ca67623e
5.3 KiB
kubernetes Datasource Driver - get_all implementation
launchpad blueprint: https://blueprints.launchpad.net/vitrage/+spec/k8s-datasource
This blueprint describes the kubernetes datasource, and its implementation for get_all nodes (VM's).
Problem description
Kubernetes nodes should be added to Vitrage Graph via Vitrage Datasources. This requires writing a Datasource for kubernetes.
The datasource should support get_all: periodic query all kubernetes nodes.
Proposed change
Kubernetes datasource will be configured with:
- Poll interval in seconds (default: 600)
Every poll-interval seconds, Kubernetes Driver will call kubernetes client to retrieve all nodes. The nodes will be converted to Vitrage datasource events and passed to Vitrage Graph queue.
Example of kubernetes client return call for list_nodes() :
apiVersion: v1
items:
- apiVersion: v1
kind: Node
metadata:
annotations:
node.alpha.kubernetes.io/ttl: "0"
volumes.kubernetes.io/controller-managed-attach-detach: "true"
creationTimestamp: 2017-11-29T07:24:59Z
labels:
beta.kubernetes.io/arch: amd64
beta.kubernetes.io/os: linux
failure-domain.beta.kubernetes.io/region: regionOne
failure-domain.beta.kubernetes.io/zone: zone0
is_control: "true"
kubernetes.io/hostname: bcmt-control-01
name: bcmt-control-01
namespace: ""
resourceVersion: "10714282"
selfLink: /api/v1/nodes/bcmt-control-01
uid: 68011206-d4d6-11e7-9c63-fa163e2e2123
spec:
externalID: 41c40aab-80e9-4bb6-a280-27976bfc811f
providerID: openstack:///41c40aab-80e9-4bb6-a280-27976bfc811f
taints:
- effect: NoExecute
key: is_control
timeAdded: null
value: "true"
status:
addresses:
- address: 172.16.1.12
type: InternalIP
- address: 10.5.138.49
type: InternalIP
- address: bcmt-control-01
type: Hostname
allocatable:
cpu: "2"
memory: 3779500Ki
pods: "110"
capacity:
cpu: "2"
memory: 3881900Ki
pods: "110"
conditions:
- lastHeartbeatTime: 2018-02-15T12:08:58Z
lastTransitionTime: 2018-02-14T13:39:53Z
message: kubelet has sufficient disk space available
reason: KubeletHasSufficientDisk
status: "False"
type: OutOfDisk
- lastHeartbeatTime: 2018-02-15T12:08:58Z
lastTransitionTime: 2018-02-14T13:39:53Z
message: kubelet has sufficient memory available
reason: KubeletHasSufficientMemory
status: "False"
type: MemoryPressure
- lastHeartbeatTime: 2018-02-15T12:08:58Z
lastTransitionTime: 2018-02-14T13:39:53Z
message: kubelet has no disk pressure
reason: KubeletHasNoDiskPressure
status: "False"
type: DiskPressure
- lastHeartbeatTime: 2018-02-15T12:08:58Z
lastTransitionTime: 2018-02-14T13:39:53Z
message: kubelet is posting ready status
reason: KubeletReady
status: "True"
type: Ready
daemonEndpoints:
kubeletEndpoint:
Port: 10250
images:
- names:
- 172.16.1.4:5000/gcr.io/google-containers/hyperkube-amd64
- 172.16.1.4:5000/gcr.io/google-containers/hyperkube-amd64:v1.7.4
sizeBytes: 615424570
nodeInfo:
architecture: amd64
bootID: 883c98a9-17ea-40f9-af7d-a448ad817249
containerRuntimeVersion: docker://1.12.6
kernelVersion: 3.10.0-514.21.1.el7.x86_64
kubeProxyVersion: v1.7.4
kubeletVersion: v1.7.4
machineID: 10783ea106f742728fede153a98b035d
operatingSystem: linux
osImage: Red Hat Enterprise Linux Server 7.3 (Maipo)
systemUUID: 41C40AAB-80E9-4BB6-A280-27976BFC811F
- Relevant data will be extracted:
-
- Creation Timestamp.
- Name.
- Addresses (IP's)
- kubernetes ID (uid)
- provider
- providerID
Alternatives
None
Data model impact
New vertices will be added to the entity graph. This might be duplicate vertices. (VM's from Nova and kubernetes). Proposed solution is resource equivalence. (planned for future work)
REST API impact
None
Versioning impact
None
Other end user impact
None
Deployer impact
Kubernetes driver should be configured.(get access to master node)
Developer impact
None
Horizon impact
None
Implementation
Assignee(s)
- Primary assignee:
-
Idan-kinory
Work Items
None
Dependencies
None
Testing
This blueprint requires unit tests.
Documentation Impact
Datasource configuration.
References
Datasource main blueprint: https://blueprints.launchpad.net/vitrage/+spec/k8s-datasource