1. 30 Apr, 2017 1 commit
  2. 29 Apr, 2017 21 commits
  3. 28 Apr, 2017 18 commits
    • Mike Danese's avatar
      ee707436
    • Mike Danese's avatar
      Merge pull request #45127 from mikedanese/fix-build · 13b7c95f
      Mike Danese authored
      update busybox to fix build
      13b7c95f
    • Aaron Crickenberger's avatar
      Avoid non-writable `/var/run` in integration tests · e847009d
      Aaron Crickenberger authored
      `/var/run` is not world-writable on my OSX 10.11.x setup, so tests that
      standup a secure apiserver fail with the default cert dir.  Use a
      tempdir instead.
      e847009d
    • Mike Danese's avatar
      fix build · 2c7e2e9c
      Mike Danese authored
      2c7e2e9c
    • Kubernetes Submit Queue's avatar
      Merge pull request #45032 from everett-toews/rm-rackspace · 0a0b6889
      Kubernetes Submit Queue authored
      Automatic merge from submit-queue
      
      Remove the Rackspace provider
      
      **What this PR does / why we need it**:
      
      To aid the effort of moving providers out of the cluster dir, I'm
      removing Rackspace and leaving behind a README.md simply as a
      placeholder until the entire dir is deleted.
      
      **Which issue this PR fixes**
      
      Fixes #6962
      
      **Release note**:
      
      ```release-note
      Deployment of Kubernetes clusters on Rackspace using the in-tree bash deployment (i.e. cluster/kube-up.sh or get-kube.sh) is obsolete and support has been removed.```
      0a0b6889
    • Kubernetes Submit Queue's avatar
      Merge pull request #44952 from CaoShuFeng/proxy_reject_path · 0afab578
      Kubernetes Submit Queue authored
      Automatic merge from submit-queue
      
      Log warning when invalid dir passed to kubectl proxy --www
      
      **Release note**:
      
      ```
      Log warning when invalid directory is passed to `kubectl proxy --www`
      ```
      0afab578
    • Kubernetes Submit Queue's avatar
      Merge pull request #44938 from jayunit100/cleanup-orphan-logging · e06fc087
      Kubernetes Submit Queue authored
      Automatic merge from submit-queue (batch tested with PRs 45033, 44961, 45021, 45097, 44938)
      
      Cleanup orphan logging that goes on in the sync loop.
      
      **What this PR does / why we need it**:
      
      Fixes #44937  
      
      **Before this PR** The older logs were like this:
      
      ```
      E0426 00:06:33.763347   21247 kubelet_volumes.go:114] Orphaned pod "35c4a858-2a12-11e7-910c-42010af00003" found, but volume paths are still present on disk.
      E0426 00:06:33.763400   21247 kubelet_volumes.go:114] Orphaned pod "e7676365-1580-11e7-8c27-42010af00003" found, but volume paths are still present on disk.
      ```
      
      The problem being that, all the volumes were spammed w/ no summary info.   
      
      **After this PR** the logs look like this:
      
      ```
      E0426 01:32:27.295568   22261 kubelet_volumes.go:129] Orphaned pod "408b060e-2a1d-11e7-90e8-42010af00003" found, but volume paths are still present on disk. : There were a total of 2 errors similar to this.  Turn up verbosity to see them.
      E0426 01:32:29.295515   22261 kubelet_volumes.go:129] Orphaned pod "408b060e-2a1d-11e7-90e8-42010af00003" found, but volume paths are still present on disk. : There were a total of 2 errors similar to this.  Turn up verbosity to see them.
      E0426 01:32:31.293180   22261 kubelet_volumes.go:129] Orphaned pod "408b060e-2a1d-11e7-90e8-42010af00003" found, but volume paths are still present on disk. : There were a total of 2 errors similar to this.  Turn up verbosity to see them.
      ```
      
      And with logging turned up, the extra info logs are shown with details:
      
      ```
      E0426 01:34:21.933983   26010 kubelet_volumes.go:129] Orphaned pod "1c565800-2a20-11e7-bbc2-42010af00003" found, but volume paths are still present on disk. : There were a total of 3 errors similar to this.  Turn up verbosity to see them.
      I0426 01:34:21.934010   26010 kubelet_volumes.go:131] Orphan pod: Orphaned pod "1c565800-2a20-11e7-bbc2-42010af00003" found, but volume paths are still present on disk.
      I0426 01:34:21.934015   26010 kubelet_volumes.go:131] Orphan pod: Orphaned pod "408b060e-2a1d-11e7-90e8-42010af00003" found, but volume paths are still present on disk.
      I0426 01:34:21.934019   26010 kubelet_volumes.go:131] Orphan pod: Orphaned pod "e7676365-1580-11e7-8c27-42010af00003" found, but volume paths are still present on disk.
      ```
      
      **Release note**
      
      ```release-note
      Roll up volume error messages in the kubelet sync loop.
      ```
      e06fc087
    • Kubernetes Submit Queue's avatar
      Merge pull request #45097 from shyamjvs/report-metrics-grabber-error · b5d4bbb6
      Kubernetes Submit Queue authored
      Automatic merge from submit-queue (batch tested with PRs 45033, 44961, 45021, 45097, 44938)
      
      Disable the kubelet part of metrics collection in kubemark
      
      Fixes https://github.com/kubernetes/kubernetes/issues/45038
      
      This should fix it, as we are just interested in getting the apiserver metrics from kubemark master.
      
      cc @wojtek-t @gmarek
      b5d4bbb6
    • Kubernetes Submit Queue's avatar
      Merge pull request #45021 from shyamjvs/add-request-count · 01321936
      Kubernetes Submit Queue authored
      Automatic merge from submit-queue (batch tested with PRs 45033, 44961, 45021, 45097, 44938)
      
      Add request count to APICall metric
      
      Ref https://github.com/kubernetes/kubernetes/issues/44701
      
      This should add beside the API call latencies, the count of the requests.
      
      cc @wojtek-t @gmarek
      01321936
    • Kubernetes Submit Queue's avatar
      Merge pull request #44961 from mikedanese/fix-clone · 90d5fbca
      Kubernetes Submit Queue authored
      Automatic merge from submit-queue (batch tested with PRs 45033, 44961, 45021, 45097, 44938)
      
      replace CloneTLSConfig() with (*tls.Config).Clone()
      90d5fbca
    • Kubernetes Submit Queue's avatar
      Merge pull request #45033 from timothysc/examples_1 · 7a9808ae
      Kubernetes Submit Queue authored
      Automatic merge from submit-queue
      
      Prune examples and e2es per discussion on sig-testing
      
      **What this PR does / why we need it**:
      Prune k8petstore from examples and e2es per discussion on sig-testing
      
      **Special notes for your reviewer**:
      This can live elsewhere outside the main repository.  
      
      **Release note**:
      
      ```
      NONE
      ```
      
      /cc @jayunit100 @fejta @kubernetes/sig-testing-pr-reviews
      7a9808ae
    • Kubernetes Submit Queue's avatar
      Merge pull request #37499 from fabianofranz/kubectl_plugins · d4ece0ab
      Kubernetes Submit Queue authored
      Automatic merge from submit-queue
      
      kubectl binary plugins
      
      **What this PR does / why we need it**:
      
      Introduces the ability to extend `kubectl` by adding third-party plugins that will be exposed through `kubectl`.
      
      Plugins are executable commands written in any language. To be included as a plugin, a binary or script file has to
      
      1. be located under one of the supported plugin path locations:
      1.1 `~/.kubectl/plugins` dir
      1.2. one or more directory set in the `KUBECTL_PLUGINS_PATH` env var
      1.3. the `kubectl/plugins` dir under one or more directory set in the `XDG_DATA_DIRS` env var, which defaults to `/usr/local/share:/usr/share`
      2. in any of the plugin path above, have a subfolder with the plugin file(s)
      3. in the subfolder, contain at least a `plugin.yaml` file that describes the plugin
      
      Example:
      
      ```
      $ cat ~/.kube/plugins/myplugin/plugin.yaml
      name: "myplugin"
      shortDesc: "My plugin's short description"
      command: "echo Hello plugins!"
      
      $ kubectl myplugin
      Hello plugins!
      ```
      
      ~~In case the plugin declares `tunnel: true`, the plugin engine will pass the `KUBECTL_PLUGIN_API_HOST` env var when calling the plugin binary. Plugins can then access the Kube REST API in "http://$KUBECTL_PLUGIN_API_HOST/api" using the same context currently in use by `kubectl`.~~
      
      Test plugins are provided in `pkg/kubectl/plugins/examples`. Just copy (or symlink) the files to `~/.kube/plugins` to test.
      
      **Which issue this PR fixes**:
      
      Related to the discussions in the proposal document: https://github.com/kubernetes/kubernetes/pull/30086 and https://github.com/kubernetes/community/pull/122.
      
      **Release note**:
      ```release-note
      Introduces the ability to extend kubectl by adding third-party plugins. Developer preview, please refer to the documentation for instructions about how to use it.
      ```
      d4ece0ab
    • Huamin Chen's avatar
      e2e test: test azure disk volume · 165d46a0
      Huamin Chen authored
      Signed-off-by: 's avatarHuamin Chen <hchen@redhat.com>
      165d46a0
    • Charles Butler's avatar
      Adds the cifs-common package · 9ee4e99d
      Charles Butler authored
      Enable mounting of filesystems over the CIFS protocol. Closes
      https://github.com/juju-solutions/bundle-canonical-kubernetes/issues/227
      9ee4e99d
    • Kubernetes Submit Queue's avatar
      Merge pull request #44350 from deads2k/server-17-watch · 9fbefe3b
      Kubernetes Submit Queue authored
      Automatic merge from submit-queue (batch tested with PRs 44868, 44350)
      
      build external watch event so simple encoders can encode
      
      `kube-apiserver` clients require a specific serialization of `watch.Event` to function properly.  There is no reason to allow flexibility of serialization at this point since no client would able to understand a different encoding.
      
      I found this which trying to use a simple, unstructured json encoder and the clients kept choking on watches because it serialized without the proper json tags.
      
      @kubernetes/sig-api-machinery-pr-reviews
      9fbefe3b
    • Kubernetes Submit Queue's avatar
      Merge pull request #44868 from vmware/dsclustersupport · fd19b6ce
      Kubernetes Submit Queue authored
      Automatic merge from submit-queue
      
      Adding datastore cluster support for dynamic and static pv
      
      **What this PR does / why we need it**:
      
      Customer reported with version 1.4.7 he could use a datastore that is in a cluster as a vsphere volume. When he upgraded to 1.6.0, this same exact path does not work and throws a datastore not found error. 
      
      This PR is adding support to allow using datastore within cluster for volume provisioning.
      
      **Which issue this PR fixes** : 
      fixes https://github.com/kubernetes/kubernetes/issues/44007
      
      **Special notes for your reviewer**:
      
      **Created datastore cluster as below.**
      
      ![ds-cluster](https://cloud.githubusercontent.com/assets/22985595/25350381/d2652c24-28d9-11e7-8659-097bd9b844bb.jpg)
      
      
      **Verified  dynamic PV provisioning and pod creation using datastore (sharedVmfs-0) in a cluster (DatastoreCluster).**
      ```
      $ cat thin_sc.yaml 
      kind: StorageClass
      apiVersion: storage.k8s.io/v1
      metadata:
        name: thin
      provisioner: kubernetes.io/vsphere-volume
      parameters:
          diskformat: thin
          datastore: DatastoreCluster/sharedVmfs-0
      ```
      
      
      ```
      $ kubectl create -f thin_sc.yaml 
      storageclass "thin" created
      $ kubectl describe storageclass thin
      Name:		thin
      IsDefaultClass:	No
      Annotations:	<none>
      Provisioner:	kubernetes.io/vsphere-volume
      Parameters:	datastore=DatastoreCluster/sharedVmfs-0,diskformat=thin
      No events.
      $ 
      ```
      
      
      ```
      $ kubectl create -f thin_pvc.yaml 
      persistentvolumeclaim "thinclaim" created
      ```
      
      ```
      $ kubectl get pvc
      NAME        STATUS    VOLUME                                     CAPACITY   ACCESSMODES   AGE
      thinclaim   Bound     pvc-581805e3-290d-11e7-9ad8-005056bd81ef   2Gi        RWO           1m
      ```
      
      ```
      $ kubectl get pv
      NAME                                       CAPACITY   ACCESSMODES   RECLAIMPOLICY   STATUS    CLAIM               REASON    AGE
      pvc-581805e3-290d-11e7-9ad8-005056bd81ef   2Gi        RWO           Delete          Bound     default/thinclaim             1m
      
      ```
      
      
      ```
      $ kubectl describe pvc thinclaim
      Name:		thinclaim
      Namespace:	default
      StorageClass:	thin
      Status:		Bound
      Volume:		pvc-581805e3-290d-11e7-9ad8-005056bd81ef
      Labels:		<none>
      Capacity:	2Gi
      Access Modes:	RWO
      Events:
        FirstSeen	LastSeen	Count	From				SubObjectPath	Type		Reason			Message
        ---------	--------	-----	----				-------------	--------	------			-------
        39s		39s		1	{persistentvolume-controller }			Normal		ProvisioningSucceeded	Successfully provisioned volume pvc-581805e3-290d-11e7-9ad8-005056bd81ef using kubernetes.io/vsphere-volume
      ```
      
      
      ```
      $ kubectl describe pv pvc-581805e3-290d-11e7-9ad8-005056bd81ef
      Name:		pvc-581805e3-290d-11e7-9ad8-005056bd81ef
      Labels:		<none>
      StorageClass:	
      Status:		Bound
      Claim:		default/thinclaim
      Reclaim Policy:	Delete
      Access Modes:	RWO
      Capacity:	2Gi
      Message:	
      Source:
          Type:	vSphereVolume (a Persistent Disk resource in vSphere)
          VolumePath:	[DatastoreCluster/sharedVmfs-0] kubevols/kubernetes-dynamic-pvc-581805e3-290d-11e7-9ad8-005056bd81ef.vmdk
          FSType:	ext4
      No events.
      
      ```
      ```
      
      $ kubectl create -f thin_pod.yaml 
      pod "thinclaimpod" created
      ```
      ```
      
      $ kubectl get pod
      NAME           READY     STATUS    RESTARTS   AGE
      thinclaimpod   1/1       Running   0          1m
      ```
      
      
      ```
      $ kubectl describe pod thinclaimpod
      Name:		thinclaimpod
      Namespace:	default
      Node:		node3/172.1.56.0
      Start Time:	Mon, 24 Apr 2017 09:46:56 -0700
      Labels:		<none>
      Status:		Running
      IP:		172.1.56.3
      Controllers:	<none>
      Containers:
        test-container:
          Container ID:	docker://487f77d92b92ee3d833b43967c8d42433e61cd45a58d8d6f462717301597c84f
          Image:		gcr.io/google_containers/busybox:1.24
          Image ID:		docker://sha256:0cb40641836c461bc97c793971d84d758371ed682042457523e4ae701efe7ec9
          Port:		
          Command:
            /bin/sh
            -c
            echo 'hello' > /mnt/volume1/index.html  && chmod o+rX /mnt /mnt/volume1/index.html && while true ; do sleep 2 ; done
          State:		Running
            Started:		Mon, 24 Apr 2017 09:47:16 -0700
          Ready:		True
          Restart Count:	0
          Volume Mounts:
            /mnt/volume1 from test-volume (rw)
            /var/run/secrets/kubernetes.io/serviceaccount from default-token-cqcq1 (ro)
          Environment Variables:	<none>
      Conditions:
        Type		Status
        Initialized 	True 
        Ready 	True 
        PodScheduled 	True 
      Volumes:
        test-volume:
          Type:	PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
          ClaimName:	thinclaim
          ReadOnly:	false
        default-token-cqcq1:
          Type:	Secret (a volume populated by a Secret)
          SecretName:	default-token-cqcq1
      QoS Class:	BestEffort
      Tolerations:	<none>
      Events:
        FirstSeen	LastSeen	Count	From			SubObjectPath			Type		Reason		Message
        ---------	--------	-----	----			-------------			--------	------		-------
        40s		40s		1	{default-scheduler }					Normal		Scheduled	Successfully assigned thinclaimpod to node3
        22s		22s		1	{kubelet node3}		spec.containers{test-container}	Normal		Pulling		pulling image "gcr.io/google_containers/busybox:1.24"
        21s		21s		1	{kubelet node3}		spec.containers{test-container}	Normal		Pulled		Successfully pulled image "gcr.io/google_containers/busybox:1.24"
        21s		21s		1	{kubelet node3}		spec.containers{test-container}	Normal		Created		Created container with id 487f77d92b92ee3d833b43967c8d42433e61cd45a58d8d6f462717301597c84f
        21s		21s		1	{kubelet node3}		spec.containers{test-container}	Normal		Started		Started container with id 487f77d92b92ee3d833b43967c8d42433e61cd45a58d8d6f462717301597c84f
      ```
      
      
      ```
      $ kubectl delete pod thinclaimpod
      pod "thinclaimpod" deleted
      ```
      
      Verified Disk is detached from the node
      
      ```
      $ kubectl delete pvc thinclaim
      persistentvolumeclaim "thinclaim" deleted
      $ kubectl get pv
      No resources found.
      ```
      Verified Disk is deleted from the datastore.
      Also verified above life cycle using non clustered datastore.
      
      **Verified Using static PV in the datastore cluster for pod provisioning.**
      ```
      # pwd
      /vmfs/volumes/sharedVmfs-0/kubevols
      # vmkfstools -c 2g test.vmdk
      Create: 100% done
      # ls
      test-flat.vmdk  test.vmdk
      ```
      
      
      
      ```
      $ cat pod.yaml 
      apiVersion: v1
      kind: Pod
      metadata:
          name: inject-pod
      spec:
          containers:
          - name: test-container
            image: gcr.io/google_containers/busybox:1.24
            command: ["/bin/sh", "-c", "echo 'hello' > /mnt/volume1/index.html  && chmod o+rX /mnt /mnt/volume1/index.html && while true ; do sleep 2 ; done"]
            volumeMounts:
            - name: test-volume
              mountPath: /mnt/volume1
          securityContext:
            seLinuxOptions:
              level: "s0:c0,c1"
          restartPolicy: Never
          volumes:
          - name: test-volume
            vsphereVolume:
                volumePath: "[DatastoreCluster/sharedVmfs-0] kubevols/test.vmdk"
                fsType: ext4
      ```
      
      ```
      $ kubectl create -f pod.yaml 
      pod "inject-pod" created
      
      $ kubectl get pod
      NAME         READY     STATUS    RESTARTS   AGE
      inject-pod   1/1       Running   0          19s
      
      $ kubectl describe pod inject-pod
      Name:		inject-pod
      Namespace:	default
      Node:		node3/172.1.56.0
      Start Time:	Mon, 24 Apr 2017 10:27:22 -0700
      Labels:		<none>
      Status:		Running
      IP:		172.1.56.3
      Controllers:	<none>
      Containers:
        test-container:
          Container ID:	docker://ed14e058fbcc9c2d8d30ff67bd614e45cf086afbbff070744c5a461e87c45103
          Image:		gcr.io/google_containers/busybox:1.24
          Image ID:		docker://sha256:0cb40641836c461bc97c793971d84d758371ed682042457523e4ae701efe7ec9
          Port:		
          Command:
            /bin/sh
            -c
            echo 'hello' > /mnt/volume1/index.html  && chmod o+rX /mnt /mnt/volume1/index.html && while true ; do sleep 2 ; done
          State:		Running
            Started:		Mon, 24 Apr 2017 10:27:40 -0700
          Ready:		True
          Restart Count:	0
          Volume Mounts:
            /mnt/volume1 from test-volume (rw)
            /var/run/secrets/kubernetes.io/serviceaccount from default-token-cqcq1 (ro)
          Environment Variables:	<none>
      Conditions:
        Type		Status
        Initialized 	True 
        Ready 	True 
        PodScheduled 	True 
      Volumes:
        test-volume:
          Type:	vSphereVolume (a Persistent Disk resource in vSphere)
          VolumePath:	[DatastoreCluster/sharedVmfs-0] kubevols/test.vmdk
          FSType:	ext4
        default-token-cqcq1:
          Type:	Secret (a volume populated by a Secret)
          SecretName:	default-token-cqcq1
      QoS Class:	BestEffort
      Tolerations:	<none>
      Events:
        FirstSeen	LastSeen	Count	From			SubObjectPath			Type		Reason		Message
        ---------	--------	-----	----			-------------			--------	------		-------
        44s		44s		1	{default-scheduler }					Normal		Scheduled	Successfully assigned inject-pod to node3
        26s		26s		1	{kubelet node3}		spec.containers{test-container}	Normal		Pulled		Container image "gcr.io/google_containers/busybox:1.24" already present on machine
        26s		26s		1	{kubelet node3}		spec.containers{test-container}	Normal		Created		Created container with id ed14e058fbcc9c2d8d30ff67bd614e45cf086afbbff070744c5a461e87c45103
        26s		26s		1	{kubelet node3}		spec.containers{test-container}	Normal		Started		Started container with id ed14e058fbcc9c2d8d30ff67bd614e45cf086afbbff070744c5a461e87c45103
      ```
      
      
      **Release note**:
      
      ```release-note
      none
      ```
      
      cc: @BaluDontu @moserke @tusharnt @pdhamdhere
      fd19b6ce
    • Kubernetes Submit Queue's avatar
      Merge pull request #44489 from CaoShuFeng/SelfLinkPathPrefix · 2315008e
      Kubernetes Submit Queue authored
      Automatic merge from submit-queue
      
      Fix PathPrefix for subresources
      
      before this change:
      $ curl -s http://172.16.116.128:8080/api/v1/nodes/kubenet-02/status | grep selfLink
          "selfLink": "/api/v1/nodes/{name}/status/kubenet-02/status",
      after this change:
      $ curl -s http://172.16.116.128:8080/api/v1/nodes/kubenet-02/status | grep selfLink
          "selfLink": "/api/v1/nodes/kubenet-02/status",
      
      related to:
      #44462
      
      **Release note**:
      
      ```NONE
      ```
      2315008e
    • Fabiano Franz's avatar
      Fixes get -oname for unstructured objects · 1aa84d10
      Fabiano Franz authored
      1aa84d10