summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKubernetes Submit Queue <k8s-merge-robot@users.noreply.github.com>2017-08-30 10:43:03 -0700
committerGitHub <noreply@github.com>2017-08-30 10:43:03 -0700
commitf6399e10bdf83a28ca8ca4a0fc039f9f2d910f00 (patch)
treea984c6e64304bb535b7508184b9a053771fe728d
parent2b9a8dbdf5c3b6ad9c4db60acd81ca344f0032de (diff)
parent94be197b504960a802a9b54ad9e4b582bc0de5ce (diff)
Merge pull request #930 from kastenhq/pvcname_in_volstats
Automatic merge from submit-queue Proposal for adding PVC info to VolumeStats Flushes out details for part 1 of the changes described in [#855](https://github.com/kubernetes/community/pull/855) Feature: [#363](https://github.com/kubernetes/features/issues/363)
-rw-r--r--contributors/design-proposals/volume_stats_pvc_ref.md57
1 files changed, 57 insertions, 0 deletions
diff --git a/contributors/design-proposals/volume_stats_pvc_ref.md b/contributors/design-proposals/volume_stats_pvc_ref.md
new file mode 100644
index 00000000..1b2f599b
--- /dev/null
+++ b/contributors/design-proposals/volume_stats_pvc_ref.md
@@ -0,0 +1,57 @@
+# Add PVC reference in Volume Stats
+
+## Background
+Pod volume stats tracked by kubelet do not currently include any information about the PVC (if the pod volume was referenced via a PVC)
+
+This prevents exposing (and querying) volume metrics labeled by PVC name which is preferable for users, given that PVC is a top-level API object.
+
+## Proposal
+
+Modify ```VolumeStats``` tracked in Kubelet and populate with PVC info:
+
+```
+// VolumeStats contains data about Volume filesystem usage.
+type VolumeStats struct {
+ // Embedded FsStats
+ FsStats
+ // Name is the name given to the Volume
+ // +optional
+ Name string `json:"name,omitempty"`
++ // PVCRef is a reference to the measured PVC.
++ // +optional
++ PVCRef PVCReference `json:"pvcRef"`
+}
+
++// PVCReference contains enough information to describe the referenced PVC.
++type PVCReference struct {
++ Name string `json:"name"`
++ Namespace string `json:"namespace"`
++}
+```
+
+## Implementation
+2 options are described below. Option 1 supports current requirements/requested use cases. Option 2 supports an additional use case that was being discussed and is called out for completeness/discussion/feedback.
+
+### Option 1
+- Modify ```kubelet::server::stats::calcAndStoreStats()```
+ - If the pod volume is referenced via a PVC, populate ```PVCRef``` in VolumeStats using the Pod spec
+
+ - The Pod spec is already available in this method, so the changes are contained to this function.
+
+- The limitation of this approach is that we're limited to reporting only what is available in the pod spec (Pod namespace and PVC claimname)
+
+### Option 2
+- Modify the ```volumemanager::GetMountedVolumesForPod()``` (or add a new function) to return additional volume information from the actual/desired state-of-world caches
+ - Use this to populate PVCRef in VolumeStats
+
+- This allows us to get information not available in the Pod spec such as the PV name/UID which can be used to label metrics - enables exposing/querying volume metrics by PV name
+- It's unclear whether this is a use case we need to/should support:
+ * Volume metrics are only refreshed for mounted volumes which implies a bound/available PVC
+ * We expect most user-storage interactions to be via the PVC
+- Admins monitoring PVs (and not PVC's) so that they know when their users are running out of space or are over-provisioning would be a use case supporting adding PV information to
+ metrics
+
+
+
+
+