diff --git a/go.mod b/go.mod index 906364d35c..daa24c0a49 100644 --- a/go.mod +++ b/go.mod @@ -13,32 +13,32 @@ replace ( github.com/rancher/dynamiclistener => github.com/erikwilson/rancher-dynamiclistener v0.0.0-20190717164634-c08b499d1719 github.com/rancher/kine => github.com/ibuildthecloud/kine v0.1.0 golang.org/x/sys => github.com/golang/sys v0.0.0-20190204203706-41f3e6584952 - k8s.io/api => github.com/rancher/kubernetes/staging/src/k8s.io/api v1.15.3-k3s.3 - k8s.io/apiextensions-apiserver => github.com/rancher/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.15.3-k3s.3 - k8s.io/apimachinery => github.com/rancher/kubernetes/staging/src/k8s.io/apimachinery v1.15.3-k3s.3 - k8s.io/apiserver => github.com/rancher/kubernetes/staging/src/k8s.io/apiserver v1.15.3-k3s.3 - k8s.io/cli-runtime => github.com/rancher/kubernetes/staging/src/k8s.io/cli-runtime v1.15.3-k3s.3 - k8s.io/client-go => github.com/rancher/kubernetes/staging/src/k8s.io/client-go v1.15.3-k3s.3 - k8s.io/cloud-provider => github.com/rancher/kubernetes/staging/src/k8s.io/cloud-provider v1.15.3-k3s.3 - k8s.io/cluster-bootstrap => github.com/rancher/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.15.3-k3s.3 - k8s.io/code-generator => github.com/rancher/kubernetes/staging/src/k8s.io/code-generator v1.15.3-k3s.3 - k8s.io/component-base => github.com/rancher/kubernetes/staging/src/k8s.io/component-base v1.15.3-k3s.3 - k8s.io/cri-api => github.com/rancher/kubernetes/staging/src/k8s.io/cri-api v1.15.3-k3s.3 - k8s.io/csi-translation-lib => github.com/rancher/kubernetes/staging/src/k8s.io/csi-translation-lib v1.15.3-k3s.3 - k8s.io/kube-aggregator => github.com/rancher/kubernetes/staging/src/k8s.io/kube-aggregator v1.15.3-k3s.3 - k8s.io/kube-controller-manager => github.com/rancher/kubernetes/staging/src/k8s.io/kube-controller-manager v1.15.3-k3s.3 + k8s.io/api => github.com/rancher/kubernetes/staging/src/k8s.io/api v1.15.4-k3s.1 + k8s.io/apiextensions-apiserver => github.com/rancher/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.15.4-k3s.1 + k8s.io/apimachinery => github.com/rancher/kubernetes/staging/src/k8s.io/apimachinery v1.15.4-k3s.1 + k8s.io/apiserver => github.com/rancher/kubernetes/staging/src/k8s.io/apiserver v1.15.4-k3s.1 + k8s.io/cli-runtime => github.com/rancher/kubernetes/staging/src/k8s.io/cli-runtime v1.15.4-k3s.1 + k8s.io/client-go => github.com/rancher/kubernetes/staging/src/k8s.io/client-go v1.15.4-k3s.1 + k8s.io/cloud-provider => github.com/rancher/kubernetes/staging/src/k8s.io/cloud-provider v1.15.4-k3s.1 + k8s.io/cluster-bootstrap => github.com/rancher/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.15.4-k3s.1 + k8s.io/code-generator => github.com/rancher/kubernetes/staging/src/k8s.io/code-generator v1.15.4-k3s.1 + k8s.io/component-base => github.com/rancher/kubernetes/staging/src/k8s.io/component-base v1.15.4-k3s.1 + k8s.io/cri-api => github.com/rancher/kubernetes/staging/src/k8s.io/cri-api v1.15.4-k3s.1 + k8s.io/csi-translation-lib => github.com/rancher/kubernetes/staging/src/k8s.io/csi-translation-lib v1.15.4-k3s.1 + k8s.io/kube-aggregator => github.com/rancher/kubernetes/staging/src/k8s.io/kube-aggregator v1.15.4-k3s.1 + k8s.io/kube-controller-manager => github.com/rancher/kubernetes/staging/src/k8s.io/kube-controller-manager v1.15.4-k3s.1 k8s.io/kube-openapi => k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30 - k8s.io/kube-proxy => github.com/rancher/kubernetes/staging/src/k8s.io/kube-proxy v1.15.3-k3s.3 - k8s.io/kube-scheduler => github.com/rancher/kubernetes/staging/src/k8s.io/kube-scheduler v1.15.3-k3s.3 - k8s.io/kubectl => github.com/rancher/kubernetes/staging/src/k8s.io/kubectl v1.15.3-k3s.3 - k8s.io/kubelet => github.com/rancher/kubernetes/staging/src/k8s.io/kubelet v1.15.3-k3s.3 - k8s.io/kubernetes => github.com/rancher/kubernetes v1.15.3-k3s.3 - k8s.io/legacy-cloud-providers => github.com/rancher/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.15.3-k3s.3 - k8s.io/metrics => github.com/rancher/kubernetes/staging/src/k8s.io/metrics v1.15.3-k3s.3 - k8s.io/node-api => github.com/rancher/kubernetes/staging/src/k8s.io/node-api v1.15.3-k3s.3 - k8s.io/sample-apiserver => github.com/rancher/kubernetes/staging/src/k8s.io/sample-apiserver v1.15.3-k3s.3 - k8s.io/sample-cli-plugin => github.com/rancher/kubernetes/staging/src/k8s.io/sample-cli-plugin v1.15.3-k3s.3 - k8s.io/sample-controller => github.com/rancher/kubernetes/staging/src/k8s.io/sample-controller v1.15.3-k3s.3 + k8s.io/kube-proxy => github.com/rancher/kubernetes/staging/src/k8s.io/kube-proxy v1.15.4-k3s.1 + k8s.io/kube-scheduler => github.com/rancher/kubernetes/staging/src/k8s.io/kube-scheduler v1.15.4-k3s.1 + k8s.io/kubectl => github.com/rancher/kubernetes/staging/src/k8s.io/kubectl v1.15.4-k3s.1 + k8s.io/kubelet => github.com/rancher/kubernetes/staging/src/k8s.io/kubelet v1.15.4-k3s.1 + k8s.io/kubernetes => github.com/rancher/kubernetes v1.15.4-k3s.1 + k8s.io/legacy-cloud-providers => github.com/rancher/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.15.4-k3s.1 + k8s.io/metrics => github.com/rancher/kubernetes/staging/src/k8s.io/metrics v1.15.4-k3s.1 + k8s.io/node-api => github.com/rancher/kubernetes/staging/src/k8s.io/node-api v1.15.4-k3s.1 + k8s.io/sample-apiserver => github.com/rancher/kubernetes/staging/src/k8s.io/sample-apiserver v1.15.4-k3s.1 + k8s.io/sample-cli-plugin => github.com/rancher/kubernetes/staging/src/k8s.io/sample-cli-plugin v1.15.4-k3s.1 + k8s.io/sample-controller => github.com/rancher/kubernetes/staging/src/k8s.io/sample-controller v1.15.4-k3s.1 sigs.k8s.io/structured-merge-diff => sigs.k8s.io/structured-merge-diff v0.0.0-20190302045857-e85c7b244fd2 ) diff --git a/go.sum b/go.sum index bd3604e2cf..ea4cbacdd4 100644 --- a/go.sum +++ b/go.sum @@ -423,47 +423,47 @@ github.com/rancher/cri-tools v1.15.0-k3s.2 h1:h9a5aB9RLesRoErka1j63tRVJ9q4CF1+BN github.com/rancher/cri-tools v1.15.0-k3s.2/go.mod h1:Kb50VzhsJdp9Rkg69PcPA4tl/f+HLwA5WWH86OXbbKM= github.com/rancher/helm-controller v0.2.2 h1:MUqisy53/Ay1EYOF2uTCYBbGpgtZLNKKrI01BdxIbQo= github.com/rancher/helm-controller v0.2.2/go.mod h1:0JkL0UjxddNbT4FmLoESarD4Mz8xzA5YlejqJ/U4g+8= -github.com/rancher/kubernetes v1.15.3-k3s.3 h1:C0+eViQHV3mSgjg7q6NXA54Wd6HX1mJaDI5TQNiycsU= -github.com/rancher/kubernetes v1.15.3-k3s.3/go.mod h1:4Ggyo4AFgjbIzULOminzUJAvgbzY3j5ysXlW/a0PdcQ= -github.com/rancher/kubernetes/staging/src/k8s.io/api v1.15.3-k3s.3 h1:wsosIFUS3v3VQwOPRP3/njSrW/O9WXTBzvAMdGcfmL0= -github.com/rancher/kubernetes/staging/src/k8s.io/api v1.15.3-k3s.3/go.mod h1:rcBmQEBoKrTUCORrHN/yvdmJPQsGpCEL61sZkMpMX/8= -github.com/rancher/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.15.3-k3s.3 h1:xNfIaZNd3xtSahAkeLlaQ8o2b4b5gwig/JJXoCPHmZ4= -github.com/rancher/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.15.3-k3s.3/go.mod h1:F6Fl77o501YUXNsJfBI+WAoC0ZcVGbw3FWQYig2Eplw= -github.com/rancher/kubernetes/staging/src/k8s.io/apimachinery v1.15.3-k3s.3 h1:rUySia7I1z2Xe2PkmhMRonOMTbloHCsxScEOasQ99PM= -github.com/rancher/kubernetes/staging/src/k8s.io/apimachinery v1.15.3-k3s.3/go.mod h1:EM3ldevXE4F3MtIQ4hiuD/tCPbERnIGmMbh/rRhJTWU= -github.com/rancher/kubernetes/staging/src/k8s.io/apiserver v1.15.3-k3s.3 h1:xFedGXf+VUbMti9c3PH9blVGQ+UzrKwO+YtBb9vDjp8= -github.com/rancher/kubernetes/staging/src/k8s.io/apiserver v1.15.3-k3s.3/go.mod h1:OZJzR5V6BBBN4xOUBmqtPhb4RuJez+IWLMODK/NIlJQ= -github.com/rancher/kubernetes/staging/src/k8s.io/cli-runtime v1.15.3-k3s.3 h1:r6P2sKF2lvqXDR6h2PheToO/76h4EceWM09Mk1dCE3k= -github.com/rancher/kubernetes/staging/src/k8s.io/cli-runtime v1.15.3-k3s.3/go.mod h1:dKWyWMnUIiQfD5yrNxeI07y0i6s19N9qnMId+knbLPI= -github.com/rancher/kubernetes/staging/src/k8s.io/client-go v1.15.3-k3s.3 h1:1hl9lTSH1Xe3LdGQ+L0AMeGl9NceYLV8wPjDO9g1orY= -github.com/rancher/kubernetes/staging/src/k8s.io/client-go v1.15.3-k3s.3/go.mod h1:NDJvuHvuvLV6miyzCs9HtkqBxy1Z+6UhEPYnUx38+6E= -github.com/rancher/kubernetes/staging/src/k8s.io/cloud-provider v1.15.3-k3s.3 h1:hcCwq8UDFRFZzR4ScuxacG3mdqtd4AibaG0hbosalxY= -github.com/rancher/kubernetes/staging/src/k8s.io/cloud-provider v1.15.3-k3s.3/go.mod h1:861E8pSdrE1y4su5sU2ybvnPMpymHFWZtnFl75mWktE= -github.com/rancher/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.15.3-k3s.3 h1:Ix389bAy7HcjuD5Gh0chZatfFz9u51J6JPUnfWKYT78= -github.com/rancher/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.15.3-k3s.3/go.mod h1:r5Ddw/Lh5GppfYcOPMtWU06QKtXaHj6iPHSZ3RZeJGU= -github.com/rancher/kubernetes/staging/src/k8s.io/code-generator v1.15.3-k3s.3 h1:VDExwnGFKg2Va00PtMQm3Vmv3+/PrQzomEoItf8jEIw= -github.com/rancher/kubernetes/staging/src/k8s.io/code-generator v1.15.3-k3s.3/go.mod h1:4Gc8gg/oUtfQgnOvrhYAu1AEwEpSzP8er8bKHbjVJBo= -github.com/rancher/kubernetes/staging/src/k8s.io/component-base v1.15.3-k3s.3 h1:pnmX6BYGUJnBUwMqVMOOnQiNRAa//IRaqxWMUuivH48= -github.com/rancher/kubernetes/staging/src/k8s.io/component-base v1.15.3-k3s.3/go.mod h1:NJRBXyb9zH0JrIobSBvZBoqUyxFXxcm0bN7Qr6MN12k= -github.com/rancher/kubernetes/staging/src/k8s.io/cri-api v1.15.3-k3s.3 h1:iJT30DO49MEZzLInZInuYPU+IaF9Cac9ClHJZzmhA7g= -github.com/rancher/kubernetes/staging/src/k8s.io/cri-api v1.15.3-k3s.3/go.mod h1:NXoFYaThKj0dmWgmQCs5fyce69w7dSPgJSjopV7HbwM= -github.com/rancher/kubernetes/staging/src/k8s.io/csi-translation-lib v1.15.3-k3s.3 h1:lmF34d/m1evfkXUsIdchtTOElnZlxu6TPyTf7i9KZ+U= -github.com/rancher/kubernetes/staging/src/k8s.io/csi-translation-lib v1.15.3-k3s.3/go.mod h1:xwK4w9WjvsWqe6BcCPgj/LRCLt0DyP2z0jLzkskrqk4= -github.com/rancher/kubernetes/staging/src/k8s.io/kube-aggregator v1.15.3-k3s.3 h1:ViK6cKoDs+nP7gu5WulYdkAx0pEHBRZsOFV0kdX2MpU= -github.com/rancher/kubernetes/staging/src/k8s.io/kube-aggregator v1.15.3-k3s.3/go.mod h1:B0gdwJ6Lc3iB67M8vFyHLt9FMFIFmSuFqmrqlVzYjSM= -github.com/rancher/kubernetes/staging/src/k8s.io/kube-controller-manager v1.15.3-k3s.3 h1:quvRjcQ6yBdTm1O0NxuI4vQs+H3J+uj7nQ8SG3xVe84= -github.com/rancher/kubernetes/staging/src/k8s.io/kube-controller-manager v1.15.3-k3s.3/go.mod h1:ZiwCid/JscSDAF4cNOV+Cq+8t61kYWZoTsjhH8OaguY= -github.com/rancher/kubernetes/staging/src/k8s.io/kube-proxy v1.15.3-k3s.3 h1://sOTht3YA161msP3KQrGG/wozunKsKou4zTg+y1EWA= -github.com/rancher/kubernetes/staging/src/k8s.io/kube-proxy v1.15.3-k3s.3/go.mod h1:zFgVsUCkS999et21KQUK67gYZkbJbdRY0YJIw6TZyMg= -github.com/rancher/kubernetes/staging/src/k8s.io/kube-scheduler v1.15.3-k3s.3 h1:3CEMKNKuqeUC7e4HrkparvR9ETBvcydqcSPYMC25rZU= -github.com/rancher/kubernetes/staging/src/k8s.io/kube-scheduler v1.15.3-k3s.3/go.mod h1:Q70yepfdw1i1HQkSCMIL1gzcS4keWGjjDPkFIWEGX64= -github.com/rancher/kubernetes/staging/src/k8s.io/kubelet v1.15.3-k3s.3 h1:ZW8V6VwZa0AwHCx603gGu5I4HgoghCSuiAbeT7shIdA= -github.com/rancher/kubernetes/staging/src/k8s.io/kubelet v1.15.3-k3s.3/go.mod h1:PtmuzszR3KI3+Ao8TV/Vm2c28uiLf/RT2P8PQR3Ddfg= -github.com/rancher/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.15.3-k3s.3 h1:359wZ/EGd68CDorYfojhXqjpV0G8Qt1fJ5VxCzSWGxk= -github.com/rancher/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.15.3-k3s.3/go.mod h1:nypsLFh31wJ+39/Hc52DBhS3277H3ztzYah1d4J0kaw= -github.com/rancher/kubernetes/staging/src/k8s.io/metrics v1.15.3-k3s.3 h1:++ilYPjCqGUMb9SdlS9F+8rU6DccMjVwRoxywmrYjgc= -github.com/rancher/kubernetes/staging/src/k8s.io/metrics v1.15.3-k3s.3/go.mod h1:ZXuwfKuK6ZMbreRcmr4gRIa5dfuA+IG5oB+HhpB1Hjo= -github.com/rancher/kubernetes/staging/src/k8s.io/sample-apiserver v1.15.3-k3s.3/go.mod h1:AV4PilnJ+BCoSk8Y3pNti4CEBwVDOyTf1yFmyxj69ng= +github.com/rancher/kubernetes v1.15.4-k3s.1 h1:e8cNAwljGFdyFi3vc6bIgSdul1JBViTZTYgW+tIMgQI= +github.com/rancher/kubernetes v1.15.4-k3s.1/go.mod h1:4Ggyo4AFgjbIzULOminzUJAvgbzY3j5ysXlW/a0PdcQ= +github.com/rancher/kubernetes/staging/src/k8s.io/api v1.15.4-k3s.1 h1:KAhYFBNaG7pfDDHmkVpf7lMPdJF8iRMG4lPQDrJW0/Q= +github.com/rancher/kubernetes/staging/src/k8s.io/api v1.15.4-k3s.1/go.mod h1:rcBmQEBoKrTUCORrHN/yvdmJPQsGpCEL61sZkMpMX/8= +github.com/rancher/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.15.4-k3s.1 h1:Vjk3ZW0NJEUyd0vQ2mVBnzT0J/9/4BAc7TtZ2FE0Onw= +github.com/rancher/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.15.4-k3s.1/go.mod h1:F6Fl77o501YUXNsJfBI+WAoC0ZcVGbw3FWQYig2Eplw= +github.com/rancher/kubernetes/staging/src/k8s.io/apimachinery v1.15.4-k3s.1 h1:KvdZpj5DGNYc3/5EXDXIGUqbCjL5uTXnavDCnz4At58= +github.com/rancher/kubernetes/staging/src/k8s.io/apimachinery v1.15.4-k3s.1/go.mod h1:EM3ldevXE4F3MtIQ4hiuD/tCPbERnIGmMbh/rRhJTWU= +github.com/rancher/kubernetes/staging/src/k8s.io/apiserver v1.15.4-k3s.1 h1:ix8q9humjOPS69iinZaTsuaC3utplM4QtD7OgrEQiKI= +github.com/rancher/kubernetes/staging/src/k8s.io/apiserver v1.15.4-k3s.1/go.mod h1:OZJzR5V6BBBN4xOUBmqtPhb4RuJez+IWLMODK/NIlJQ= +github.com/rancher/kubernetes/staging/src/k8s.io/cli-runtime v1.15.4-k3s.1 h1:JRByWKuDyzmLma+Nnn/gdfxHdSZGcuFju1e3cftWnSs= +github.com/rancher/kubernetes/staging/src/k8s.io/cli-runtime v1.15.4-k3s.1/go.mod h1:dKWyWMnUIiQfD5yrNxeI07y0i6s19N9qnMId+knbLPI= +github.com/rancher/kubernetes/staging/src/k8s.io/client-go v1.15.4-k3s.1 h1:VFK7EMAfKJVHu33S6S14HhhirtNZOxvOLfVRollVU8M= +github.com/rancher/kubernetes/staging/src/k8s.io/client-go v1.15.4-k3s.1/go.mod h1:NDJvuHvuvLV6miyzCs9HtkqBxy1Z+6UhEPYnUx38+6E= +github.com/rancher/kubernetes/staging/src/k8s.io/cloud-provider v1.15.4-k3s.1 h1:qsLVcMnEfbiajgL5AZpf0SxZ9/dFNzhIeQPhl/8CeZ8= +github.com/rancher/kubernetes/staging/src/k8s.io/cloud-provider v1.15.4-k3s.1/go.mod h1:861E8pSdrE1y4su5sU2ybvnPMpymHFWZtnFl75mWktE= +github.com/rancher/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.15.4-k3s.1 h1:uUcMyMofQGvsp3ISdZmLqr9ISBOpe/r2UvcwuDMm+ss= +github.com/rancher/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.15.4-k3s.1/go.mod h1:r5Ddw/Lh5GppfYcOPMtWU06QKtXaHj6iPHSZ3RZeJGU= +github.com/rancher/kubernetes/staging/src/k8s.io/code-generator v1.15.4-k3s.1 h1:iOdOj+Z3HtyIXDpSJ0gjEmAlVkhTYczTVnYjoepZ2K4= +github.com/rancher/kubernetes/staging/src/k8s.io/code-generator v1.15.4-k3s.1/go.mod h1:4Gc8gg/oUtfQgnOvrhYAu1AEwEpSzP8er8bKHbjVJBo= +github.com/rancher/kubernetes/staging/src/k8s.io/component-base v1.15.4-k3s.1 h1:Wr7nkACqp80M8X2eU5oEDGE4dOdxdZeEU8C8BVmluVU= +github.com/rancher/kubernetes/staging/src/k8s.io/component-base v1.15.4-k3s.1/go.mod h1:NJRBXyb9zH0JrIobSBvZBoqUyxFXxcm0bN7Qr6MN12k= +github.com/rancher/kubernetes/staging/src/k8s.io/cri-api v1.15.4-k3s.1 h1:MoQRn9zYsFyK4/hgkVxXqIEMv7sBRIujv95AOt4lMdc= +github.com/rancher/kubernetes/staging/src/k8s.io/cri-api v1.15.4-k3s.1/go.mod h1:NXoFYaThKj0dmWgmQCs5fyce69w7dSPgJSjopV7HbwM= +github.com/rancher/kubernetes/staging/src/k8s.io/csi-translation-lib v1.15.4-k3s.1 h1:saoJkC/vgjZvl4zD33WRx/F+SUbir3urrkxbysth55U= +github.com/rancher/kubernetes/staging/src/k8s.io/csi-translation-lib v1.15.4-k3s.1/go.mod h1:xwK4w9WjvsWqe6BcCPgj/LRCLt0DyP2z0jLzkskrqk4= +github.com/rancher/kubernetes/staging/src/k8s.io/kube-aggregator v1.15.4-k3s.1 h1:eGQ3CgxTGE58+CPJ+2gDLQIXZyZqscSTrKLgWCLAK+c= +github.com/rancher/kubernetes/staging/src/k8s.io/kube-aggregator v1.15.4-k3s.1/go.mod h1:B0gdwJ6Lc3iB67M8vFyHLt9FMFIFmSuFqmrqlVzYjSM= +github.com/rancher/kubernetes/staging/src/k8s.io/kube-controller-manager v1.15.4-k3s.1 h1:ctpstjLpGmLNur5nGIMstAfGKjMcPuCr1GT+xoaC1wk= +github.com/rancher/kubernetes/staging/src/k8s.io/kube-controller-manager v1.15.4-k3s.1/go.mod h1:ZiwCid/JscSDAF4cNOV+Cq+8t61kYWZoTsjhH8OaguY= +github.com/rancher/kubernetes/staging/src/k8s.io/kube-proxy v1.15.4-k3s.1 h1:SV4N6oVM7Fci1aNyvs6Vp7Tnb4iHSsVeKPehpb0TPEw= +github.com/rancher/kubernetes/staging/src/k8s.io/kube-proxy v1.15.4-k3s.1/go.mod h1:zFgVsUCkS999et21KQUK67gYZkbJbdRY0YJIw6TZyMg= +github.com/rancher/kubernetes/staging/src/k8s.io/kube-scheduler v1.15.4-k3s.1 h1:KsAmcKvc4qfZqB+Pbk3e7EmFtvNOvfjjoE9oFcM/4HI= +github.com/rancher/kubernetes/staging/src/k8s.io/kube-scheduler v1.15.4-k3s.1/go.mod h1:Q70yepfdw1i1HQkSCMIL1gzcS4keWGjjDPkFIWEGX64= +github.com/rancher/kubernetes/staging/src/k8s.io/kubelet v1.15.4-k3s.1 h1:KyNP0cRyua4xHMnYqVEwlpyoXs+MYXIhzEeMTSuzWwc= +github.com/rancher/kubernetes/staging/src/k8s.io/kubelet v1.15.4-k3s.1/go.mod h1:PtmuzszR3KI3+Ao8TV/Vm2c28uiLf/RT2P8PQR3Ddfg= +github.com/rancher/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.15.4-k3s.1 h1:pdr8eK5DFy/+X394ABPL1OQ8WUMR12InOB/mmxw8+AE= +github.com/rancher/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.15.4-k3s.1/go.mod h1:nypsLFh31wJ+39/Hc52DBhS3277H3ztzYah1d4J0kaw= +github.com/rancher/kubernetes/staging/src/k8s.io/metrics v1.15.4-k3s.1 h1:gUWdtxWKQL1pZDJHxbZjfHJ3VlbcATLx1Vng/ghXYIg= +github.com/rancher/kubernetes/staging/src/k8s.io/metrics v1.15.4-k3s.1/go.mod h1:ZXuwfKuK6ZMbreRcmr4gRIa5dfuA+IG5oB+HhpB1Hjo= +github.com/rancher/kubernetes/staging/src/k8s.io/sample-apiserver v1.15.4-k3s.1/go.mod h1:AV4PilnJ+BCoSk8Y3pNti4CEBwVDOyTf1yFmyxj69ng= github.com/rancher/moq v0.0.0-20190404221404-ee5226d43009 h1:Xsxh7fX3+2wAUJtPy8g2lZh0cYuyifqhBL0vxCIYojs= github.com/rancher/moq v0.0.0-20190404221404-ee5226d43009/go.mod h1:wpITyDPTi/Na5h73XkbuEf2AP9fbgrIGqqxVzFhYD6U= github.com/rancher/plugins v0.7.5-k3s1 h1:iYLbr8cq41S3WNPXTY3y9NWnjT0D1bCzu7MqjcG0NQU= diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/controller/openapi/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/controller/openapi/BUILD index ef711c98ec..dab0710fd2 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/controller/openapi/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/controller/openapi/BUILD @@ -23,11 +23,14 @@ go_library( "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//staging/src/k8s.io/apiserver/pkg/endpoints:go_default_library", "//staging/src/k8s.io/apiserver/pkg/endpoints/openapi:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/features:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//staging/src/k8s.io/client-go/tools/cache:go_default_library", "//staging/src/k8s.io/client-go/util/workqueue:go_default_library", "//vendor/github.com/emicklei/go-restful:go_default_library", @@ -61,6 +64,7 @@ go_test( "//vendor/github.com/googleapis/gnostic/compiler:go_default_library", "//vendor/gopkg.in/yaml.v2:go_default_library", "//vendor/k8s.io/kube-openapi/pkg/util/proto:go_default_library", + "//vendor/k8s.io/utils/pointer:go_default_library", ], ) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder.go b/vendor/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder.go index ba7722a73e..4ceac27356 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/controller/openapi/builder.go @@ -26,19 +26,21 @@ import ( "github.com/go-openapi/spec" v1 "k8s.io/api/autoscaling/v1" + "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions" structuralschema "k8s.io/apiextensions-apiserver/pkg/apiserver/schema" + generatedopenapi "k8s.io/apiextensions-apiserver/pkg/generated/openapi" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1beta1 "k8s.io/apimachinery/pkg/apis/meta/v1beta1" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apiserver/pkg/endpoints" "k8s.io/apiserver/pkg/endpoints/openapi" + "k8s.io/apiserver/pkg/features" + utilfeature "k8s.io/apiserver/pkg/util/feature" openapibuilder "k8s.io/kube-openapi/pkg/builder" "k8s.io/kube-openapi/pkg/common" "k8s.io/kube-openapi/pkg/util" - - "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions" - generatedopenapi "k8s.io/apiextensions-apiserver/pkg/generated/openapi" ) const ( @@ -252,11 +254,17 @@ func (b *builder) buildRoute(root, path, action, verb string, sample interface{} // Build consume media types if action == "PATCH" { - route.Consumes("application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json") + supportedTypes := []string{ + string(types.JSONPatchType), + string(types.MergePatchType), + } + if utilfeature.DefaultFeatureGate.Enabled(features.ServerSideApply) { + supportedTypes = append(supportedTypes, string(types.ApplyPatchType)) + } + + route.Consumes(supportedTypes...) } else { - route.Consumes("*/*") + route.Consumes(runtime.ContentTypeJSON, runtime.ContentTypeYAML) } // Build option parameters @@ -292,12 +300,12 @@ func (b *builder) buildRoute(root, path, action, verb string, sample interface{} // buildKubeNative builds input schema with Kubernetes' native object meta, type meta and // extensions -func (b *builder) buildKubeNative(schema *structuralschema.Structural, v2 bool) (ret *spec.Schema) { +func (b *builder) buildKubeNative(schema *structuralschema.Structural, v2 bool, crdPreserveUnknownFields bool) (ret *spec.Schema) { // only add properties if we have a schema. Otherwise, kubectl would (wrongly) assume additionalProperties=false // and forbid anything outside of apiVersion, kind and metadata. We have to fix kubectl to stop doing this, e.g. by // adding additionalProperties=true support to explicitly allow additional fields. // TODO: fix kubectl to understand additionalProperties=true - if schema == nil || (v2 && schema.XPreserveUnknownFields) { + if schema == nil || (v2 && (schema.XPreserveUnknownFields || crdPreserveUnknownFields)) { ret = &spec.Schema{ SchemaProps: spec.SchemaProps{Type: []string{"object"}}, } @@ -464,7 +472,8 @@ func newBuilder(crd *apiextensions.CustomResourceDefinition, version string, sch } // Pre-build schema with Kubernetes native properties - b.schema = b.buildKubeNative(schema, v2) + preserveUnknownFields := crd.Spec.PreserveUnknownFields != nil && *crd.Spec.PreserveUnknownFields + b.schema = b.buildKubeNative(schema, v2, preserveUnknownFields) b.listSchema = b.buildListSchema() return b diff --git a/vendor/k8s.io/apiserver/pkg/storage/etcd3/store.go b/vendor/k8s.io/apiserver/pkg/storage/etcd3/store.go index 52ad3d41ac..869a067073 100644 --- a/vendor/k8s.io/apiserver/pkg/storage/etcd3/store.go +++ b/vendor/k8s.io/apiserver/pkg/storage/etcd3/store.go @@ -275,7 +275,20 @@ func (s *store) GuaranteedUpdate( transformContext := authenticatedDataString(key) for { if err := preconditions.Check(key, origState.obj); err != nil { - return err + // If our data is already up to date, return the error + if !mustCheckData { + return err + } + + // It's possible we were working with stale data + // Actually fetch + origState, err = getCurrentState() + if err != nil { + return err + } + mustCheckData = false + // Retry + continue } ret, ttl, err := s.updateState(origState, tryUpdate) diff --git a/vendor/k8s.io/client-go/pkg/version/base.go b/vendor/k8s.io/client-go/pkg/version/base.go index ca38099ced..4a74e46c39 100644 --- a/vendor/k8s.io/client-go/pkg/version/base.go +++ b/vendor/k8s.io/client-go/pkg/version/base.go @@ -3,8 +3,8 @@ package version var ( gitMajor = "1" gitMinor = "15" - gitVersion = "v1.15.3-k3s.3" - gitCommit = "cfb8c4b418f2a9ccdcd3029bf49400753678592b" + gitVersion = "v1.15.4-k3s.1" + gitCommit = "a7531b1ab3fd5ff987b074472ddfb84a2f5326bc" gitTreeState = "clean" - buildDate = "2019-09-05T19:27+00:00Z" + buildDate = "2019-09-19T22:36Z" ) diff --git a/vendor/k8s.io/kubernetes/cmd/kubelet/app/server.go b/vendor/k8s.io/kubernetes/cmd/kubelet/app/server.go index c9d85bbe1a..c799fc869d 100644 --- a/vendor/k8s.io/kubernetes/cmd/kubelet/app/server.go +++ b/vendor/k8s.io/kubernetes/cmd/kubelet/app/server.go @@ -623,17 +623,15 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies, stopCh <-chan cgroupRoots = append(cgroupRoots, cm.NodeAllocatableRoot(s.CgroupRoot, s.CgroupDriver)) kubeletCgroup, err := cm.GetKubeletContainer(s.KubeletCgroups) if err != nil { - return fmt.Errorf("failed to get the kubelet's cgroup: %v", err) - } - if kubeletCgroup != "" { + klog.Warningf("failed to get the kubelet's cgroup: %v. Kubelet system container metrics may be missing.", err) + } else if kubeletCgroup != "" { cgroupRoots = append(cgroupRoots, kubeletCgroup) } runtimeCgroup, err := cm.GetRuntimeContainer(s.ContainerRuntime, s.RuntimeCgroups) if err != nil { - return fmt.Errorf("failed to get the container runtime's cgroup: %v", err) - } - if runtimeCgroup != "" { + klog.Warningf("failed to get the container runtime's cgroup: %v. Runtime system container metrics may be missing.", err) + } else if runtimeCgroup != "" { // RuntimeCgroups is optional, so ignore if it isn't specified cgroupRoots = append(cgroupRoots, runtimeCgroup) } diff --git a/vendor/k8s.io/kubernetes/pkg/apis/core/validation/validation.go b/vendor/k8s.io/kubernetes/pkg/apis/core/validation/validation.go index 1ff6be313e..c7ed5a1eff 100644 --- a/vendor/k8s.io/kubernetes/pkg/apis/core/validation/validation.go +++ b/vendor/k8s.io/kubernetes/pkg/apis/core/validation/validation.go @@ -878,8 +878,6 @@ func validateQuobyteVolumeSource(quobyte *core.QuobyteVolumeSource, fldPath *fie allErrs := field.ErrorList{} if len(quobyte.Registry) == 0 { allErrs = append(allErrs, field.Required(fldPath.Child("registry"), "must be a host:port pair or multiple pairs separated by commas")) - } else if len(quobyte.Tenant) == 0 { - allErrs = append(allErrs, field.Required(fldPath.Child("tenant"), "must be a UUID provided by the configuration and may not be omitted ")) } else if len(quobyte.Tenant) >= 65 { allErrs = append(allErrs, field.Required(fldPath.Child("tenant"), "must be a UUID and may not exceed a length of 64 characters")) } else { diff --git a/vendor/k8s.io/kubernetes/pkg/controller/statefulset/stateful_set_utils.go b/vendor/k8s.io/kubernetes/pkg/controller/statefulset/stateful_set_utils.go index 3c470fac43..27f72e0b50 100644 --- a/vendor/k8s.io/kubernetes/pkg/controller/statefulset/stateful_set_utils.go +++ b/vendor/k8s.io/kubernetes/pkg/controller/statefulset/stateful_set_utils.go @@ -344,11 +344,12 @@ func ApplyRevision(set *apps.StatefulSet, revision *apps.ControllerRevision) (*a if err != nil { return nil, err } - err = json.Unmarshal(patched, clone) + restoredSet := &apps.StatefulSet{} + err = json.Unmarshal(patched, restoredSet) if err != nil { return nil, err } - return clone, nil + return restoredSet, nil } // nextRevision finds the next valid revision number based on revisions. If the length of revisions diff --git a/vendor/k8s.io/kubernetes/pkg/generated/openapi/openapi.go b/vendor/k8s.io/kubernetes/pkg/generated/openapi/openapi.go index 943a5cd8fb..cb0a0d2dd0 100644 --- a/vendor/k8s.io/kubernetes/pkg/generated/openapi/openapi.go +++ b/vendor/k8s.io/kubernetes/pkg/generated/openapi/openapi.go @@ -18,7 +18,7 @@ var ( func init() { start := time.Now() defer func() { - klog.Info("Instantiated OpenAPI definitions in ", time.Now().Sub(start)) + klog.V(7).Info("Instantiated OpenAPI definitions in ", time.Now().Sub(start)) }() var json = jsoniter.ConfigCompatibleWithStandardLibrary diff --git a/vendor/k8s.io/kubernetes/pkg/kubectl/cmd/cp/cp.go b/vendor/k8s.io/kubernetes/pkg/kubectl/cmd/cp/cp.go index 737d0a7a21..792f30edd6 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubectl/cmd/cp/cp.go +++ b/vendor/k8s.io/kubernetes/pkg/kubectl/cmd/cp/cp.go @@ -416,6 +416,7 @@ func recursiveTar(srcBase, srcFile, destBase, destFile string, tw *tar.Writer) e func (o *CopyOptions) untarAll(reader io.Reader, destDir, prefix string) error { // TODO: use compression here? tarReader := tar.NewReader(reader) + symlinks := map[string]string{} // map of link -> destination for { header, err := tarReader.Next() if err != nil { @@ -469,21 +470,10 @@ func (o *CopyOptions) untarAll(reader io.Reader, destDir, prefix string) error { } if mode&os.ModeSymlink != 0 { - linkname := header.Linkname - // We need to ensure that the link destination is always within boundries - // of the destination directory. This prevents any kind of path traversal - // from within tar archive. - linkTarget := linkname - if !filepath.IsAbs(linkname) { - linkTarget = filepath.Join(evaledPath, linkname) - } - if !isDestRelative(destDir, linkTarget) { - fmt.Fprintf(o.IOStreams.ErrOut, "warning: link %q is pointing to %q which is outside target destination, skipping\n", destFileName, header.Linkname) - continue - } - if err := os.Symlink(linkname, destFileName); err != nil { - return err + if _, exists := symlinks[destFileName]; exists { + return fmt.Errorf("duplicate symlink: %q", destFileName) } + symlinks[destFileName] = header.Linkname } else { outFile, err := os.Create(destFileName) if err != nil { @@ -499,6 +489,17 @@ func (o *CopyOptions) untarAll(reader io.Reader, destDir, prefix string) error { } } + // Create symlinks after all regular files have been written. + // Ordering this way prevents writing data outside the destination directory through path + // traversals. + // Symlink chaining is prevented due to the directory tree being established (MkdirAll) before + // creating any symlinks. + for newname, oldname := range symlinks { + if err := os.Symlink(oldname, newname); err != nil { + return err + } + } + return nil } diff --git a/vendor/k8s.io/kubernetes/pkg/kubectl/version/base.go b/vendor/k8s.io/kubernetes/pkg/kubectl/version/base.go index c84c6d2d1c..4a74e46c39 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubectl/version/base.go +++ b/vendor/k8s.io/kubernetes/pkg/kubectl/version/base.go @@ -1,63 +1,10 @@ -/* -Copyright 2019 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - package version -// Base version information. -// -// This is the fallback data used when version information from git is not -// provided via go ldflags. It provides an approximation of the Kubernetes -// version for ad-hoc builds (e.g. `go build`) that cannot get the version -// information from git. -// -// If you are looking at these fields in the git tree, they look -// strange. They are modified on the fly by the build process. The -// in-tree values are dummy values used for "git archive", which also -// works for GitHub tar downloads. -// -// When releasing a new Kubernetes version, this file is updated by -// build/mark_new_version.sh to reflect the new version, and then a -// git annotated tag (using format vX.Y where X == Major version and Y -// == Minor version) is created to point to the commit that updates -// pkg/version/base.go var ( - // TODO: Deprecate gitMajor and gitMinor, use only gitVersion - // instead. First step in deprecation, keep the fields but make - // them irrelevant. (Next we'll take it out, which may muck with - // scripts consuming the kubectl version output - but most of - // these should be looking at gitVersion already anyways.) - gitMajor string // major version, always numeric - gitMinor string // minor version, numeric possibly followed by "+" - - // semantic version, derived by build scripts (see - // https://github.com/kubernetes/community/blob/master/contributors/design-proposals/release/versioning.md - // for a detailed discussion of this field) - // - // TODO: This field is still called "gitVersion" for legacy - // reasons. For prerelease versions, the build metadata on the - // semantic version is a git hash, but the version itself is no - // longer the direct output of "git describe", but a slight - // translation to be semver compliant. - - // NOTE: The $Format strings are replaced during 'git archive' thanks to the - // companion .gitattributes file containing 'export-subst' in this same - // directory. See also https://git-scm.com/docs/gitattributes - gitVersion = "v0.0.0-master+$Format:%h$" - gitCommit = "$Format:%H$" // sha1 from git, output of $(git rev-parse HEAD) - gitTreeState = "" // state of git tree, either "clean" or "dirty" - - buildDate = "1970-01-01T00:00:00Z" // build date in ISO8601 format, output of $(date -u +'%Y-%m-%dT%H:%M:%SZ') + gitMajor = "1" + gitMinor = "15" + gitVersion = "v1.15.4-k3s.1" + gitCommit = "a7531b1ab3fd5ff987b074472ddfb84a2f5326bc" + gitTreeState = "clean" + buildDate = "2019-09-19T22:36Z" ) diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/BUILD b/vendor/k8s.io/kubernetes/pkg/kubelet/BUILD index c4be3411e4..1f349d4f3d 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubelet/BUILD +++ b/vendor/k8s.io/kubernetes/pkg/kubelet/BUILD @@ -80,6 +80,7 @@ go_library( "//pkg/kubelet/runtimeclass:go_default_library", "//pkg/kubelet/secret:go_default_library", "//pkg/kubelet/server:go_default_library", + "//pkg/kubelet/server/metrics:go_default_library", "//pkg/kubelet/server/portforward:go_default_library", "//pkg/kubelet/server/remotecommand:go_default_library", "//pkg/kubelet/server/stats:go_default_library", diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/helpers.go b/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/helpers.go index 8763ef5275..656e2a138f 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/helpers.go +++ b/vendor/k8s.io/kubernetes/pkg/kubelet/dockershim/helpers.go @@ -43,7 +43,7 @@ const ( ) var ( - conflictRE = regexp.MustCompile(`Conflict. (?:.)+ is already in use by container ([0-9a-z]+)`) + conflictRE = regexp.MustCompile(`Conflict. (?:.)+ is already in use by container \"?([0-9a-z]+)\"?`) // this is hacky, but extremely common. // if a container starts but the executable file is not found, runc gives a message that matches diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet.go b/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet.go index 6ffa19d3c6..88dd0039d9 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet.go +++ b/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet.go @@ -90,6 +90,7 @@ import ( "k8s.io/kubernetes/pkg/kubelet/runtimeclass" "k8s.io/kubernetes/pkg/kubelet/secret" "k8s.io/kubernetes/pkg/kubelet/server" + servermetrics "k8s.io/kubernetes/pkg/kubelet/server/metrics" serverstats "k8s.io/kubernetes/pkg/kubelet/server/stats" "k8s.io/kubernetes/pkg/kubelet/server/streaming" "k8s.io/kubernetes/pkg/kubelet/stats" @@ -1315,6 +1316,7 @@ func (kl *Kubelet) initializeModules() error { collectors.NewLogMetricsCollector(kl.StatsProvider.ListPodStats), ) metrics.SetNodeName(kl.nodeName) + servermetrics.Register() // Setup filesystem directories. if err := kl.setupDataDirs(); err != nil { @@ -1629,11 +1631,13 @@ func (kl *Kubelet) syncPod(o syncPodOptions) error { if mirrorPod.DeletionTimestamp != nil || !kl.podManager.IsMirrorPodOf(mirrorPod, pod) { // The mirror pod is semantically different from the static pod. Remove // it. The mirror pod will get recreated later. - klog.Warningf("Deleting mirror pod %q because it is outdated", format.Pod(mirrorPod)) - if err := kl.podManager.DeleteMirrorPod(podFullName); err != nil { + klog.Infof("Trying to delete pod %s %v", podFullName, mirrorPod.ObjectMeta.UID) + var err error + deleted, err = kl.podManager.DeleteMirrorPod(podFullName, &mirrorPod.ObjectMeta.UID) + if deleted { + klog.Warningf("Deleted mirror pod %q because it is outdated", format.Pod(mirrorPod)) + } else if err != nil { klog.Errorf("Failed deleting mirror pod %q: %v", format.Pod(mirrorPod), err) - } else { - deleted = true } } } diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/logs/logs.go b/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/logs/logs.go index 86133063df..d27899362c 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/logs/logs.go +++ b/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/logs/logs.go @@ -26,6 +26,7 @@ import ( "io" "math" "os" + "path/filepath" "time" "github.com/docker/docker/daemon/logger/jsonfilelog/jsonlog" @@ -271,6 +272,16 @@ func (w *logWriter) write(msg *logMessage) error { // Note that containerID is only needed when following the log, or else // just pass in empty string "". func ReadLogs(ctx context.Context, path, containerID string, opts *LogOptions, runtimeService internalapi.RuntimeService, stdout, stderr io.Writer) error { + // fsnotify has different behavior for symlinks in different platform, + // for example it follows symlink on Linux, but not on Windows, + // so we explicitly resolve symlinks before reading the logs. + // There shouldn't be security issue because the container log + // path is owned by kubelet and the container runtime. + evaluated, err := filepath.EvalSymlinks(path) + if err != nil { + return fmt.Errorf("failed to try resolving symlinks in path %q: %v", path, err) + } + path = evaluated f, err := os.Open(path) if err != nil { return fmt.Errorf("failed to open log file %q: %v", path, err) diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/pod/mirror_client.go b/vendor/k8s.io/kubernetes/pkg/kubelet/pod/mirror_client.go index b90254b6a2..79d8cecd01 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubelet/pod/mirror_client.go +++ b/vendor/k8s.io/kubernetes/pkg/kubelet/pod/mirror_client.go @@ -20,6 +20,7 @@ import ( "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/types" clientset "k8s.io/client-go/kubernetes" "k8s.io/klog" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" @@ -35,7 +36,7 @@ type MirrorClient interface { CreateMirrorPod(pod *v1.Pod) error // DeleteMirrorPod deletes the mirror pod with the given full name from // the API server or returns an error. - DeleteMirrorPod(podFullName string) error + DeleteMirrorPod(podFullName string, uid *types.UID) (bool, error) } // basicMirrorClient is a functional MirrorClient. Mirror pods are stored in @@ -73,21 +74,35 @@ func (mc *basicMirrorClient) CreateMirrorPod(pod *v1.Pod) error { return err } -func (mc *basicMirrorClient) DeleteMirrorPod(podFullName string) error { +// DeleteMirrorPod deletes a mirror pod. +// It takes the full name of the pod and optionally a UID. If the UID +// is non-nil, the pod is deleted only if its UID matches the supplied UID. +// It returns whether the pod was actually deleted, and any error returned +// while parsing the name of the pod. +// Non-existence of the pod or UID mismatch is not treated as an error; the +// routine simply returns false in that case. +func (mc *basicMirrorClient) DeleteMirrorPod(podFullName string, uid *types.UID) (bool, error) { if mc.apiserverClient == nil { - return nil + return false, nil } name, namespace, err := kubecontainer.ParsePodFullName(podFullName) if err != nil { klog.Errorf("Failed to parse a pod full name %q", podFullName) - return err + return false, err } - klog.V(2).Infof("Deleting a mirror pod %q", podFullName) - // TODO(random-liu): Delete the mirror pod with uid precondition in mirror pod manager - if err := mc.apiserverClient.CoreV1().Pods(namespace).Delete(name, metav1.NewDeleteOptions(0)); err != nil && !errors.IsNotFound(err) { - klog.Errorf("Failed deleting a mirror pod %q: %v", podFullName, err) + klog.V(2).Infof("Deleting a mirror pod %q (uid %#v)", podFullName, uid) + var GracePeriodSeconds int64 + GracePeriodSeconds = 0 + if err := mc.apiserverClient.CoreV1().Pods(namespace).Delete(name, &metav1.DeleteOptions{GracePeriodSeconds: &GracePeriodSeconds, Preconditions: &metav1.Preconditions{UID: uid}}); err != nil { + // Unfortunately, there's no generic error for failing a precondition + if !(errors.IsNotFound(err) || errors.IsConflict(err)) { + // We should return the error here, but historically this routine does + // not return an error unless it can't parse the pod name + klog.Errorf("Failed deleting a mirror pod %q: %v", podFullName, err) + } + return false, nil } - return nil + return true, nil } // IsStaticPod returns true if the pod is a static pod. diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/pod/pod_manager.go b/vendor/k8s.io/kubernetes/pkg/kubelet/pod/pod_manager.go index 17f54184b1..9a67f0ff2c 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubelet/pod/pod_manager.go +++ b/vendor/k8s.io/kubernetes/pkg/kubelet/pod/pod_manager.go @@ -338,7 +338,7 @@ func (pm *basicManager) getOrphanedMirrorPodNames() []string { func (pm *basicManager) DeleteOrphanedMirrorPods() { podFullNames := pm.getOrphanedMirrorPodNames() for _, podFullName := range podFullNames { - pm.MirrorClient.DeleteMirrorPod(podFullName) + pm.MirrorClient.DeleteMirrorPod(podFullName, nil) } } diff --git a/vendor/k8s.io/kubernetes/pkg/printers/internalversion/printers.go b/vendor/k8s.io/kubernetes/pkg/printers/internalversion/printers.go index cc50fb9547..0b60f385f0 100644 --- a/vendor/k8s.io/kubernetes/pkg/printers/internalversion/printers.go +++ b/vendor/k8s.io/kubernetes/pkg/printers/internalversion/printers.go @@ -1597,7 +1597,7 @@ func formatHPAMetrics(specs []autoscaling.MetricSpec, statuses []autoscaling.Met case autoscaling.ExternalMetricSourceType: if spec.External.Target.AverageValue != nil { current := "" - if len(statuses) > i && statuses[i].External != nil && &statuses[i].External.Current.AverageValue != nil { + if len(statuses) > i && statuses[i].External != nil && statuses[i].External.Current.AverageValue != nil { current = statuses[i].External.Current.AverageValue.String() } list = append(list, fmt.Sprintf("%s/%s (avg)", current, spec.External.Target.AverageValue.String())) diff --git a/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/proxier.go b/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/proxier.go index 48c2d499a3..51c87c05d4 100644 --- a/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/proxier.go +++ b/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/proxier.go @@ -1691,25 +1691,6 @@ func (proxier *Proxier) cleanLegacyService(activeServices map[string]bool, curre continue } if _, ok := activeServices[cs]; !ok { - rsList, _ := proxier.ipvs.GetRealServers(svc) - - // If we still have real servers graceful termination is not done - if len(rsList) > 0 { - continue - } - - // Applying graceful termination to all real servers - for _, rs := range rsList { - uniqueRS := GetUniqueRSName(svc, rs) - // If RS is already in the graceful termination list, no need to add it again - if proxier.gracefuldeleteManager.InTerminationList(uniqueRS) { - continue - } - klog.V(5).Infof("Using graceful delete to delete: %v", uniqueRS) - if err := proxier.gracefuldeleteManager.GracefulDeleteRS(svc, rs); err != nil { - klog.Errorf("Failed to delete destination: %v, error: %v", uniqueRS, err) - } - } klog.V(4).Infof("Delete service %s", svc.String()) if err := proxier.ipvs.DeleteVirtualServer(svc); err != nil { klog.Errorf("Failed to delete service %s, error: %v", svc.String(), err) diff --git a/vendor/k8s.io/kubernetes/pkg/version/base.go b/vendor/k8s.io/kubernetes/pkg/version/base.go index ca38099ced..4a74e46c39 100644 --- a/vendor/k8s.io/kubernetes/pkg/version/base.go +++ b/vendor/k8s.io/kubernetes/pkg/version/base.go @@ -3,8 +3,8 @@ package version var ( gitMajor = "1" gitMinor = "15" - gitVersion = "v1.15.3-k3s.3" - gitCommit = "cfb8c4b418f2a9ccdcd3029bf49400753678592b" + gitVersion = "v1.15.4-k3s.1" + gitCommit = "a7531b1ab3fd5ff987b074472ddfb84a2f5326bc" gitTreeState = "clean" - buildDate = "2019-09-05T19:27+00:00Z" + buildDate = "2019-09-19T22:36Z" ) diff --git a/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_metrics.go b/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_metrics.go index bd7ed55305..2e0c984cad 100644 --- a/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_metrics.go +++ b/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_metrics.go @@ -61,9 +61,11 @@ func (mc *metricsCsi) GetMetrics() (*volume.Metrics, error) { if err != nil { return nil, err } + // if plugin doesnot support volume status, return. if !volumeStatsSet { - return nil, nil + return nil, volume.NewNotSupportedErrorWithDriverName( + string(mc.csiClientGetter.driverName)) } // Get Volumestatus metrics, err := csiClient.NodeGetVolumeStats(ctx, mc.volumeID, mc.targetPath) diff --git a/vendor/k8s.io/kubernetes/pkg/volume/iscsi/iscsi_util.go b/vendor/k8s.io/kubernetes/pkg/volume/iscsi/iscsi_util.go index b40a99a3e1..223a91dfc7 100644 --- a/vendor/k8s.io/kubernetes/pkg/volume/iscsi/iscsi_util.go +++ b/vendor/k8s.io/kubernetes/pkg/volume/iscsi/iscsi_util.go @@ -89,7 +89,7 @@ func updateISCSIDiscoverydb(b iscsiDiskMounter, tp string) error { if len(v) > 0 { out, err := b.exec.Run("iscsiadm", "-m", "discoverydb", "-t", "sendtargets", "-p", tp, "-I", b.Iface, "-o", "update", "-n", k, "-v", v) if err != nil { - return fmt.Errorf("iscsi: failed to update discoverydb key %q with value %q error: %v", k, v, string(out)) + return fmt.Errorf("iscsi: failed to update discoverydb key %q error: %v", k, string(out)) } } } @@ -111,7 +111,7 @@ func updateISCSINode(b iscsiDiskMounter, tp string) error { if len(v) > 0 { out, err := b.exec.Run("iscsiadm", "-m", "node", "-p", tp, "-T", b.Iqn, "-I", b.Iface, "-o", "update", "-n", k, "-v", v) if err != nil { - return fmt.Errorf("iscsi: failed to update node session key %q with value %q error: %v", k, v, string(out)) + return fmt.Errorf("iscsi: failed to update node session key %q error: %v", k, string(out)) } } } diff --git a/vendor/k8s.io/kubernetes/pkg/volume/metrics_errors.go b/vendor/k8s.io/kubernetes/pkg/volume/metrics_errors.go index 50e7c2a21b..80ef96d5e4 100644 --- a/vendor/k8s.io/kubernetes/pkg/volume/metrics_errors.go +++ b/vendor/k8s.io/kubernetes/pkg/volume/metrics_errors.go @@ -35,7 +35,16 @@ func NewNotSupportedError() *MetricsError { } } -// NewNoPathDefined creates a new MetricsError with code NoPathDefined. +// NewNotSupportedErrorWithDriverName creates a new MetricsError with code NotSupported. +// driver name is added to the error message. +func NewNotSupportedErrorWithDriverName(name string) *MetricsError { + return &MetricsError{ + Code: ErrCodeNotSupported, + Msg: fmt.Sprintf("metrics are not supported for %s volumes", name), + } +} + +// NewNoPathDefinedError creates a new MetricsError with code NoPathDefined. func NewNoPathDefinedError() *MetricsError { return &MetricsError{ Code: ErrCodeNoPathDefined, diff --git a/vendor/modules.txt b/vendor/modules.txt index 5878d42a38..f4c71f5e51 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -933,7 +933,7 @@ gopkg.in/square/go-jose.v2/json gopkg.in/warnings.v0 # gopkg.in/yaml.v2 v2.2.2 gopkg.in/yaml.v2 -# k8s.io/api v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/api v1.15.3-k3s.3 +# k8s.io/api v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/api v1.15.4-k3s.1 k8s.io/api/core/v1 k8s.io/api/apps/v1 k8s.io/api/admissionregistration/v1beta1 @@ -972,7 +972,7 @@ k8s.io/api/storage/v1alpha1 k8s.io/api/storage/v1beta1 k8s.io/api/admission/v1beta1 k8s.io/api/imagepolicy/v1alpha1 -# k8s.io/apiextensions-apiserver v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.15.3-k3s.3 +# k8s.io/apiextensions-apiserver v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.15.4-k3s.1 k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1 k8s.io/apiextensions-apiserver/pkg/apiserver k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion @@ -1012,7 +1012,7 @@ k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/scheme k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1beta1 k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/v1beta1 -# k8s.io/apimachinery v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/apimachinery v1.15.3-k3s.3 +# k8s.io/apimachinery v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/apimachinery v1.15.4-k3s.1 k8s.io/apimachinery/pkg/util/json k8s.io/apimachinery/pkg/util/net k8s.io/apimachinery/pkg/apis/meta/v1 @@ -1074,7 +1074,7 @@ k8s.io/apimachinery/pkg/api/meta/table k8s.io/apimachinery/pkg/apis/meta/v1beta1/validation k8s.io/apimachinery/pkg/runtime/serializer/yaml k8s.io/apimachinery/pkg/util/duration -# k8s.io/apiserver v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/apiserver v1.15.3-k3s.3 +# k8s.io/apiserver v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/apiserver v1.15.4-k3s.1 k8s.io/apiserver/pkg/authentication/authenticator k8s.io/apiserver/pkg/endpoints/request k8s.io/apiserver/pkg/server @@ -1189,7 +1189,7 @@ k8s.io/apiserver/pkg/registry/generic/rest k8s.io/apiserver/pkg/storage/value/encrypt/envelope/v1beta1 k8s.io/apiserver/pkg/admission/plugin/webhook/config/apis/webhookadmission k8s.io/apiserver/pkg/admission/plugin/webhook/config/apis/webhookadmission/v1alpha1 -# k8s.io/cli-runtime v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/cli-runtime v1.15.3-k3s.3 +# k8s.io/cli-runtime v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/cli-runtime v1.15.4-k3s.1 k8s.io/cli-runtime/pkg/genericclioptions k8s.io/cli-runtime/pkg/printers k8s.io/cli-runtime/pkg/resource @@ -1202,7 +1202,7 @@ k8s.io/cli-runtime/pkg/kustomize/k8sdeps/configmapandsecret k8s.io/cli-runtime/pkg/kustomize/k8sdeps/transformer/hash k8s.io/cli-runtime/pkg/kustomize/k8sdeps/transformer/patch k8s.io/cli-runtime/pkg/kustomize/k8sdeps/kv -# k8s.io/client-go v11.0.1-0.20190409021438-1a26190bd76a+incompatible => github.com/rancher/kubernetes/staging/src/k8s.io/client-go v1.15.3-k3s.3 +# k8s.io/client-go v11.0.1-0.20190409021438-1a26190bd76a+incompatible => github.com/rancher/kubernetes/staging/src/k8s.io/client-go v1.15.4-k3s.1 k8s.io/client-go/util/cert k8s.io/client-go/kubernetes k8s.io/client-go/tools/clientcmd @@ -1379,16 +1379,16 @@ k8s.io/client-go/listers/node/v1alpha1 k8s.io/client-go/listers/scheduling/v1alpha1 k8s.io/client-go/listers/scheduling/v1beta1 k8s.io/client-go/listers/storage/v1alpha1 -# k8s.io/cloud-provider v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/cloud-provider v1.15.3-k3s.3 +# k8s.io/cloud-provider v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/cloud-provider v1.15.4-k3s.1 k8s.io/cloud-provider k8s.io/cloud-provider/service/helpers k8s.io/cloud-provider/volume/errors k8s.io/cloud-provider/volume k8s.io/cloud-provider/volume/helpers -# k8s.io/cluster-bootstrap v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.15.3-k3s.3 +# k8s.io/cluster-bootstrap v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.15.4-k3s.1 k8s.io/cluster-bootstrap/token/api k8s.io/cluster-bootstrap/token/util -# k8s.io/code-generator v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/code-generator v1.15.3-k3s.3 +# k8s.io/code-generator v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/code-generator v1.15.4-k3s.1 k8s.io/code-generator/cmd/client-gen/args k8s.io/code-generator/cmd/client-gen/generators k8s.io/code-generator/cmd/client-gen/types @@ -1403,7 +1403,7 @@ k8s.io/code-generator/pkg/util k8s.io/code-generator/cmd/client-gen/generators/fake k8s.io/code-generator/cmd/client-gen/generators/scheme k8s.io/code-generator/pkg/namer -# k8s.io/component-base v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/component-base v1.15.3-k3s.3 +# k8s.io/component-base v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/component-base v1.15.4-k3s.1 k8s.io/component-base/logs k8s.io/component-base/cli/flag k8s.io/component-base/config @@ -1412,10 +1412,10 @@ k8s.io/component-base/featuregate k8s.io/component-base/config/v1alpha1 k8s.io/component-base/metrics k8s.io/component-base/config/validation -# k8s.io/cri-api v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/cri-api v1.15.3-k3s.3 +# k8s.io/cri-api v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/cri-api v1.15.4-k3s.1 k8s.io/cri-api/pkg/apis/runtime/v1alpha2 k8s.io/cri-api/pkg/apis -# k8s.io/csi-translation-lib v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/csi-translation-lib v1.15.3-k3s.3 +# k8s.io/csi-translation-lib v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/csi-translation-lib v1.15.4-k3s.1 k8s.io/csi-translation-lib/plugins k8s.io/csi-translation-lib # k8s.io/gengo v0.0.0-20190327210449-e17681d19d3a @@ -1430,7 +1430,7 @@ k8s.io/gengo/examples/set-gen/sets k8s.io/heapster/metrics/api/v1/types # k8s.io/klog v0.3.1 k8s.io/klog -# k8s.io/kube-aggregator v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/kube-aggregator v1.15.3-k3s.3 +# k8s.io/kube-aggregator v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/kube-aggregator v1.15.4-k3s.1 k8s.io/kube-aggregator/pkg/apis/apiregistration k8s.io/kube-aggregator/pkg/apis/apiregistration/v1 k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1 @@ -1454,7 +1454,7 @@ k8s.io/kube-aggregator/pkg/client/informers/internalversion/apiregistration k8s.io/kube-aggregator/pkg/registry/apiservice/etcd k8s.io/kube-aggregator/pkg/registry/apiservice k8s.io/kube-aggregator/pkg/apis/apiregistration/validation -# k8s.io/kube-controller-manager v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/kube-controller-manager v1.15.3-k3s.3 +# k8s.io/kube-controller-manager v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/kube-controller-manager v1.15.4-k3s.1 k8s.io/kube-controller-manager/config/v1alpha1 # k8s.io/kube-openapi v0.0.0-20190502190224-411b2483e503 => k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30 k8s.io/kube-openapi/pkg/builder @@ -1465,13 +1465,13 @@ k8s.io/kube-openapi/pkg/util/proto k8s.io/kube-openapi/pkg/aggregator k8s.io/kube-openapi/pkg/util/proto/validation k8s.io/kube-openapi/pkg/schemaconv -# k8s.io/kube-proxy v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/kube-proxy v1.15.3-k3s.3 +# k8s.io/kube-proxy v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/kube-proxy v1.15.4-k3s.1 k8s.io/kube-proxy/config/v1alpha1 -# k8s.io/kube-scheduler v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/kube-scheduler v1.15.3-k3s.3 +# k8s.io/kube-scheduler v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/kube-scheduler v1.15.4-k3s.1 k8s.io/kube-scheduler/config/v1alpha1 -# k8s.io/kubelet v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/kubelet v1.15.3-k3s.3 +# k8s.io/kubelet v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/kubelet v1.15.4-k3s.1 k8s.io/kubelet/config/v1beta1 -# k8s.io/kubernetes v1.15.3 => github.com/rancher/kubernetes v1.15.3-k3s.3 +# k8s.io/kubernetes v1.15.3 => github.com/rancher/kubernetes v1.15.4-k3s.1 k8s.io/kubernetes/cmd/hyperkube k8s.io/kubernetes/pkg/kubelet/apis/deviceplugin/v1beta1 k8s.io/kubernetes/pkg/kubelet/util @@ -1915,6 +1915,7 @@ k8s.io/kubernetes/pkg/kubelet/prober k8s.io/kubernetes/pkg/kubelet/prober/results k8s.io/kubernetes/pkg/kubelet/runtimeclass k8s.io/kubernetes/pkg/kubelet/secret +k8s.io/kubernetes/pkg/kubelet/server/metrics k8s.io/kubernetes/pkg/kubelet/server/portforward k8s.io/kubernetes/pkg/kubelet/server/remotecommand k8s.io/kubernetes/pkg/kubelet/server/stats @@ -1972,7 +1973,6 @@ k8s.io/kubernetes/pkg/kubelet/kubeletconfig/util/panic k8s.io/kubernetes/pkg/kubelet/kubeletconfig/util/codec k8s.io/kubernetes/pkg/apis/core/v1/validation k8s.io/kubernetes/pkg/kubelet/apis/resourcemetrics/v1alpha1 -k8s.io/kubernetes/pkg/kubelet/server/metrics k8s.io/kubernetes/pkg/volume/util/fs k8s.io/kubernetes/pkg/volume/util/recyclerclient k8s.io/kubernetes/pkg/volume/csi/csiv0 @@ -2234,9 +2234,9 @@ k8s.io/kubernetes/pkg/controller/volume/persistentvolume/config/v1alpha1 k8s.io/kubernetes/pkg/apis/abac/v1beta1 k8s.io/kubernetes/third_party/forked/gonum/graph/internal/linear k8s.io/kubernetes/pkg/util/maps -# k8s.io/legacy-cloud-providers v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.15.3-k3s.3 +# k8s.io/legacy-cloud-providers v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.15.4-k3s.1 k8s.io/legacy-cloud-providers/gce -# k8s.io/metrics v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/metrics v1.15.3-k3s.3 +# k8s.io/metrics v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/metrics v1.15.4-k3s.1 k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1beta1 k8s.io/metrics/pkg/client/custom_metrics k8s.io/metrics/pkg/client/external_metrics