Commit Graph

42 Commits

Author SHA1 Message Date
Akash Srivastava
4701c61969 Add clone support for volume snapshot
- Add control on volume snapshot to take clone
- Add control on volume snapshot to delete it

Signed-off-by: Akash Srivastava <akash.srivastava@openebs.io>
2018-10-16 01:04:44 +05:30
Akash Srivastava
8692a4d57d Add control on PVC to take volume snapshot
Signed-off-by: Akash Srivastava <akash.srivastava@openebs.io>
2018-10-16 01:04:44 +05:30
Akash Srivastava
81a682893f Add kubernetes volume snapshot support
- Add a new client in probe/kubernetes/client.go
  which will be used to fetch details of Snapshot CRD
- Visualize VolumeSnapshot and VolumeSnapshotData
- Add adjacency between PV and VolumeSnapshot
- Add adjacency between VolumeSnapshot and VolumeSnapshotData
- Add snapshot filter to hide and show snapshots

Signed-off-by: Akash Srivastava <akash.srivastava@openebs.io>
2018-10-16 01:04:44 +05:30
Marc Carré
d46c2266ce Change Sirupsen/logrus to sirupsen/logrus
```
$ git grep -l Sirupsen | grep -v vendor | xargs sed -i '' 's:github.com/Sirupsen/logrus:github.com/sirupsen/logrus:g'
$ gofmt -s -w app
$ gofmt -s -w common
$ gofmt -s -w probe
$ gofmt -s -w prog
$ gofmt -s -w tools
```
2018-07-23 20:10:14 +02:00
Satyam Zode
d26b2c3805 Add Kubernetes storage class resource to weave scope
This will:

- Add StorageClass resource. Storage classes are mentioned
in the PVC spec. We're using storage class name from PVC spec to
add adjacency to the PVC node.
- Add square sheet shape for StorageClass.
- Add storage filter in the PODS topology.
Storage Filter will allow user to see distinct view of
stateful applications.
- Add visually distinct edge to show storage adjacency.

Signed-off-by: Satyam Zode <satyam.zode@openebs.io>
2018-06-08 16:36:29 +05:30
Satyam Zode
23210a6a77 Add Kubernetes volumes support in Weave Scope
This will

- Add Kubernetes volume resources such as PV, PVC.
- Add shapes for Kubernetes PV and PVC
- Add `Cylinder` shape for PV and `Dotted Cylinder` shape for PVC.

Signed-off-by: Satyam Zode <satyam.zode@openebs.io>
2018-06-07 17:01:29 +05:30
Bryan Boreham
1de6d9755a Remove -probe.kubernetes.interval flag entirely 2018-02-22 15:05:20 +00:00
Roberto Bruggemann
37771a0607 Create reflectors asynchronously
Reflectors are created and run within the same function, asynchronously from the main thread.
Creating reflectors may require calls to the kubernetes api, which can return errors.
API errors are not handled in the main thread, but are handled asynchronously by retries.
2018-02-05 12:01:59 +00:00
Roberto Bruggemann
f4b55b3cf0 Fetch cronjobs from 'batch/v1beta1'
This applies if kubernetes' version is >= 1.8.
Otherwise fetch cronjobs from 'batch/v2alpha1'.
2018-01-30 17:04:32 +00:00
Roberto Bruggemann
710d665c41 Upgrade k8s.io/client-go to kubernetes-1.9.1
Upgraded from 99c19923, branch release-3.0.

This required fetching or upgrading the following:
* k8s.io/api to kubernetes-1.9.1
* k8s.io/apimachinery to kubernetes-1.9.1
* github.com/juju/ratelimit to 1.0.1
* github.com/spf13/pflag to 4c012f6d

Also, update Scope's imports/function calls to be compatible with the new client.
2018-01-30 10:14:42 +00:00
Roberto Bruggemann
2f9e2fc9ce Check if k8s resources are supported in runReflectorUntil
`isResourceSupported` checks whether a kubernetes resource is supported by the api server.
This ensures that, if the probe is unable to communicate with the api server, the call is retried until a true/false response.

If `isResourceSupported` returns false, `ListAndWatch` is not called and `runReflectorUntil` just exits.
2018-01-22 13:46:55 +00:00
Roberto Bruggemann
f42e22098e Merge pull request #3014 from weaveworks/stop-fetching-replicasets
Stop fetching ReplicaSets and ReplicationControllers
2018-01-15 10:33:30 +00:00
Roberto Bruggemann
5a2e214140 Merge pull request #3013 from weaveworks/multi-container-log
Reading pod logs returns all container logs
2018-01-09 11:33:32 +00:00
Roberto Bruggemann
b4e3f85e89 LogReadCloser interleaves 'by line' for each container
Also, prepend each line with '[ContainerName]'.
2018-01-05 14:40:52 +00:00
Roberto Bruggemann
cf6e0ffdc6 Stop fetching ReplicaSets and ReplicationControllers
They are not reported back to the scope app.
2018-01-04 10:54:26 +00:00
Roberto Bruggemann
0b86c65e66 Reading pod logs returns all container logs
This is achieved by issuing an http request for each container to kubernetes' API, which yields one Reader for the corresponding container.
`logReadCloser' then reads from the above readers in parallel as data is available, buffering when necessary, forwarding it to clients by implementing the io.ReadCloser interface.
2018-01-03 14:13:17 +00:00
Roberto Bruggemann
2c60d50f10 Remove unused WalkNodes function 2018-01-03 13:55:27 +00:00
Roberto Bruggemann
ccfcc61042 The probe reports namespaces 2018-01-03 13:55:27 +00:00
Matthias Radestock
5dad27cf7e permit setting probe.kubernetes.interval to 0
...which is useful if we want to disable periodic fetching of all
objects.

Previously the interval was also used to set the initial backoff of
the reconnect logic. A zero value there would result in _no_
backoff. So instead we now just use the default, which is 10s which
also happens to be the default probe.kubernetes.interval, so there is
no change in behaviour for the stock settings.
2018-01-03 00:38:17 +00:00
Mike Lang
fe3bdbfcdc probe/kubernetes: Speed up lookups of large lists of cronjobs and jobs
Currently joining the two lists is O(mn), by putting into a hashmap first it's O(m+n)
2017-07-19 11:31:43 -07:00
Mike Lang
481258d8fc kubernetes probe: Collect info on cronjobs and statefulsets
Most of the time you only care about cronjobs, not the jobs that make them up,
so we only collect full cronjob data. We associate pods of jobs with the parent cronjob
2017-07-18 11:35:50 -07:00
Alfonso Acosta
84afe9fe70 Fix typo 2017-07-03 20:20:28 +00:00
Alfonso Acosta
8bbbf25809 Migrate probe to new new kubernetes go-client
This namely involved importing new libraries and using the new Clientset.

Changes worth mentioning:

* The new kubernetes library doesn't provide StoreToLister wrappers, so now I am going the casting directly.
* Deleting the pods and getting their logs is done in a cleaner way (using the
  Clientset instead of the lower-level RESTclient).
2017-07-03 20:20:27 +00:00
Roland Schilter
56cb02675b Back off upon errored kubernetes api requests (#2562)
closes #1009
2017-06-06 16:19:41 +02:00
Alfonso Acosta
0aec26653b Guard against null DaemonSet store 2017-05-24 11:36:26 +00:00
Mike Lang
d4a5360d4c k8s probe: Collect info on daemonsets for new DaemonSet topology 2017-05-19 15:06:51 -07:00
Alfonso Acosta
2d6034a2e5 Re-enable pod shortcut reports 2017-05-18 10:21:32 +00:00
Alfonso Acosta
88874782be Log specific error when deployments are not supported 2017-05-05 14:30:59 +02:00
Alfonso Acosta
8c6747f560 Fix spelling mistake 2016-08-18 16:58:11 +00:00
Alfonso Acosta
9839b3d161 Log the API server host 2016-08-18 15:33:06 +00:00
Alfonso Acosta
1bdff95f33 Extend kubernetes client flags to match kubectl 2016-08-17 15:16:58 +00:00
Paul Bellamy
743cf80f92 Disable deployments and replica sets if k8s is 1.1 2016-05-11 11:19:15 +01:00
Paul Bellamy
291c9afe58 Add scale up/down controls on deployments, replica sets, and replication controllers (#1451) 2016-05-10 12:43:52 +02:00
Paul Bellamy
541699d193 Review Feedback 2016-05-09 09:19:11 +01:00
Paul Bellamy
16a5c738d9 Deployment and ReplicaSet views for k8s 2016-05-09 09:03:57 +01:00
Tom Wilkie
cb52acbc46 Add pod delete control
- Push shortcut reports when pods are created/deleted
- Buffer upto 2 reports instead of dropping them
2016-04-28 14:48:05 +01:00
Tom Wilkie
99204e1ff7 Add k8s pod log control (#1298)
* Remove individually vendored k8s.io/kubernetes/pkg/<foo>

* Vendor the whole of vendor/k8s.io/kubernetes/pkg

* Add k8s pod log control

* Tag pods with host id and include them in the host topology as children.

* adding a basic test for kubernetes.Reporter.GetLogs
2016-04-21 13:48:50 +01:00
Alfonso Acosta
9f02e20ac3 Bump github.com/ugorji/go/codec/ for performance improvements
This caused a dependency chain reaction (sigh):

* All the k8s packages had to be fetched again. This in turn required:
  * Pining github.com/docker/docker/pkg/parsers to
    0f5c9d301b9b1cca66b3ea0f9dec3b5317d3686d to cirvumvent
    https://github.com/kubernetes/kubernetes/issues/18774
  * Update github.com/juju/ratelimit
  * Make probe/kubernetes/client.go comply with API changes.
2016-02-16 06:31:35 +00:00
Alfonso Acosta
3d94082b07 Add debug logging 2016-02-05 16:58:40 +00:00
Alfonso Acosta
fa43df2de7 k8s: Log errors when contacting the API server 2016-01-12 15:31:32 +00:00
Alfonso Acosta
e0e7644acd k8s: Use service account token when no api server url is provided 2016-01-12 15:31:19 +00:00
Paul Bellamy
be1d1d52d0 Basic Kubernetes integration
* Added helper for installing scope on gcloud
* Added topologies Pods and Pods-by-Service
* Uses k8s.io/kubernetes/pkg/client/cache for the client
* Filter kube-system nodes by default
* Only show the k8s topologies if we've received a non-empty k8s report
2015-10-06 12:55:51 +01:00