From 86975061d788ea9b6aa10c91875a535a64ab3a4a Mon Sep 17 00:00:00 2001 From: Matthew Wong Date: Tue, 30 Aug 2016 17:25:16 -0400 Subject: [PATCH 01/11] Update StorageClass docs (#1121) * Update StorageClass docs * Fix broken link --- docs/user-guide/persistent-volumes/index.md | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/docs/user-guide/persistent-volumes/index.md b/docs/user-guide/persistent-volumes/index.md index 32ac8fbd00..8f6bf30a25 100644 --- a/docs/user-guide/persistent-volumes/index.md +++ b/docs/user-guide/persistent-volumes/index.md @@ -238,7 +238,7 @@ equal to `""` is always interpreted to be requesting a PV with no class, so it can only be bound to PVs with no class (no annotation or one set equal to `""`). A PVC with no annotation is not quite the same and is treated differently by the cluster depending on whether the -[`DefaultStorageClass` admission plugin](docs/admin/admission-controllers/#defaultstorageclass) +[`DefaultStorageClass` admission plugin](/docs/admin/admission-controllers/#defaultstorageclass) is turned on. * If the admission plugin is turned on, the administrator may specify a @@ -256,7 +256,8 @@ same way as PVCs that have their annotation set to `""`. When a PVC specifies a `selector` in addition to requesting a `StorageClass`, the requirements are ANDed together: only a PV of the requested class and with -the requested labels may be bound to the PVC. +the requested labels may be bound to the PVC. Note that currently, a PVC with a +non-empty `selector` can't have a PV dynamically provisioned for it. In the future after beta, the `volume.beta.kubernetes.io/storage-class` annotation will become an attribute. @@ -295,13 +296,12 @@ dynamically provisioned. The name of a `StorageClass` object is significant, and is how users can request a particular class. Administrators set the name and other parameters -of a class, all of which are opaque to users, when first creating -`StorageClass` objects, and the objects cannot be updated once they are -created. +of a class when first creating `StorageClass` objects, and the objects cannot +be updated once they are created. Administrators can specify a default `StorageClass` just for PVCs that don't request any particular class to bind to: see the -[`PersistentVolumeClaim` section](docs/user-guide/persistent-volumes/#class-1) +[`PersistentVolumeClaim` section](#persistentvolumeclaims) for details. ```yaml @@ -373,16 +373,14 @@ provisioner: kubernetes.io/glusterfs parameters: endpoint: "glusterfs-cluster" resturl: "http://127.0.0.1:8081" - restauthenabled: "true" restuser: "admin" restuserkey: "password" ``` * `endpoint`: `glusterfs-cluster` is the endpoint/service name which includes GlusterFS trusted pool IP addresses and this parameter is mandatory. -* `resturl` : Gluster REST service url which provision gluster volumes on demand. The format should be `IPaddress:Port` and this is a mandatory parameter for GlusterFS dynamic provisioner. -* `restauthenabled` : Gluster REST service authentication boolean is required if the authentication is enabled on the REST server. If this value is 'true', 'restuser' and 'restuserkey' have to be filled. -* `restuser` : Gluster REST service user who has access to create volumes in the Gluster Trusted Pool. -* `restuserkey` : Gluster REST service user's password which will be used for authentication to the REST server. +* `resturl` : Gluster REST service url which provision gluster volumes on demand. The format should be a valid URL and this is a mandatory parameter for GlusterFS dynamic provisioner. +* `restuser` : Gluster REST service user who has access to create volumes in the Gluster Trusted Pool. This parameter is optional, empty string will be used when omitted. +* `restuserkey` : Gluster REST service user's password which will be used for authentication to the REST server. This parameter is optional, empty string will be used when omitted. #### OpenStack Cinder From 7f63196f298b2062f924c41ed98b5aabce08639d Mon Sep 17 00:00:00 2001 From: Derek Carr Date: Tue, 30 Aug 2016 17:28:29 -0400 Subject: [PATCH 02/11] Remove deprecated namespace admission plug-ins (#1079) --- docs/admin/admission-controllers.md | 15 --------------- .../coreos/cloud-configs/master.yaml | 2 +- .../fedora/fedora-calico.md | 2 +- 3 files changed, 2 insertions(+), 17 deletions(-) diff --git a/docs/admin/admission-controllers.md b/docs/admin/admission-controllers.md index a99b44f339..c8fc6b3eb3 100644 --- a/docs/admin/admission-controllers.md +++ b/docs/admin/admission-controllers.md @@ -117,21 +117,6 @@ When the plug-in sets a compute resource request, it annotates the pod with info See the [InitialResouces proposal](https://github.com/kubernetes/kubernetes/blob/{{page.githubbranch}}/docs/proposals/initial-resources.md) for more details. -### NamespaceExists (deprecated) - -This plug-in will observe all incoming requests that attempt to create a resource in a Kubernetes `Namespace` -and reject the request if the `Namespace` was not previously created. We strongly recommend running -this plug-in to ensure integrity of your data. - -The functionality of this admission controller has been merged into `NamespaceLifecycle` - -### NamespaceAutoProvision (deprecated) - -This plug-in will observe all incoming requests that attempt to create a resource in a Kubernetes `Namespace` -and create a new `Namespace` if one did not already exist previously. - -We strongly recommend `NamespaceLifecycle` over `NamespaceAutoProvision`. - ### NamespaceLifecycle This plug-in enforces that a `Namespace` that is undergoing termination cannot have new objects created in it, diff --git a/docs/getting-started-guides/coreos/cloud-configs/master.yaml b/docs/getting-started-guides/coreos/cloud-configs/master.yaml index fbacf82ef5..768e91ab40 100644 --- a/docs/getting-started-guides/coreos/cloud-configs/master.yaml +++ b/docs/getting-started-guides/coreos/cloud-configs/master.yaml @@ -91,7 +91,7 @@ coreos: ExecStart=/opt/bin/kube-apiserver \ --service-account-key-file=/opt/bin/kube-serviceaccount.key \ --service-account-lookup=false \ - --admission-control=NamespaceLifecycle,NamespaceAutoProvision,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota \ + --admission-control=NamespaceLifecycle,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota \ --runtime-config=api/v1 \ --allow-privileged=true \ --insecure-bind-address=0.0.0.0 \ diff --git a/docs/getting-started-guides/fedora/fedora-calico.md b/docs/getting-started-guides/fedora/fedora-calico.md index 126db607f4..c9c029e229 100644 --- a/docs/getting-started-guides/fedora/fedora-calico.md +++ b/docs/getting-started-guides/fedora/fedora-calico.md @@ -97,7 +97,7 @@ KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0" KUBE_ETCD_SERVERS="--etcd-servers=http://kube-master:4001" # Remove ServiceAccount from this line to run without API Tokens -KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota" +KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,LimitRanger,SecurityContextDeny,ResourceQuota" ``` * Create /var/run/kubernetes on master: From 84d826416cf515e3016af959b56c8fba4e33829c Mon Sep 17 00:00:00 2001 From: Jamie Alessio Date: Tue, 30 Aug 2016 14:29:19 -0700 Subject: [PATCH 03/11] Make hello-node 'gsutil rm' command able to be copy/pasted (#1075) --- docs/hellonode.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/hellonode.md b/docs/hellonode.md index 2283599fb7..e489927aff 100755 --- a/docs/hellonode.md +++ b/docs/hellonode.md @@ -423,7 +423,7 @@ gs://artifacts.<$PROJECT_ID>.appspot.com/ And then to remove the all the images under this path, run: ```shell -gsutil rm -r gs://artifacts.<$PROJECT_ID>.appspot.com/ +gsutil rm -r gs://artifacts.$PROJECT_ID.appspot.com/ ``` You can also delete the entire Google Cloud project but note that you must first disable billing on the project. Additionally, deleting a project will only happen after the current billing cycle ends. From 45e8948c551e997ca896b7d7e3ced8d670d86b25 Mon Sep 17 00:00:00 2001 From: jseldess Date: Tue, 30 Aug 2016 17:29:48 -0400 Subject: [PATCH 04/11] minor copy edits (#1080) --- docs/getting-started-guides/minikube.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/getting-started-guides/minikube.md b/docs/getting-started-guides/minikube.md index b2c9b8a776..f92910cb8b 100644 --- a/docs/getting-started-guides/minikube.md +++ b/docs/getting-started-guides/minikube.md @@ -127,7 +127,7 @@ List the nodes in your cluster by running: kubectl get nodes ``` -Minikube contains a built-in Docker daemon that for running containers. +Minikube contains a built-in Docker daemon for running containers. If you use another Docker daemon for building your containers, you will have to publish them to a registry before minikube can pull them. You can use minikube's built in Docker daemon to avoid this extra step of pushing your images. Use the built-in Docker daemon with: @@ -136,7 +136,7 @@ Use the built-in Docker daemon with: eval $(minikube docker-env) ``` This command sets up the Docker environment variables so a Docker client can communicate with the minikube Docker daemon. -Minikube currently supports only docker version 1.11.1 on the server, which is what is supported by Kubernetes 1.3. With a newer docker version you'll get this [issue](https://github.com/kubernetes/minikube/issues/338). +Minikube currently supports only docker version 1.11.1 on the server, which is what is supported by Kubernetes 1.3. With a newer docker version, you'll get this [issue](https://github.com/kubernetes/minikube/issues/338). ```shell docker ps From df7afa60b826d33ad07fa4b20b2baa5d43d2183c Mon Sep 17 00:00:00 2001 From: Tom Xing Date: Wed, 31 Aug 2016 05:30:17 +0800 Subject: [PATCH 05/11] Updated kubectl bash completion usage in the doc. (#1093) We have moved the shell script into `kubectl completion` command in [#23801](https://github.com/kubernetes/kubernetes/pull/23801), updated the bash completion usage in the doc. Fixes #1092 --- docs/getting-started-guides/gce.md | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/docs/getting-started-guides/gce.md b/docs/getting-started-guides/gce.md index bc3d664909..d768c4db7f 100644 --- a/docs/getting-started-guides/gce.md +++ b/docs/getting-started-guides/gce.md @@ -95,17 +95,29 @@ potential issues with client/server version skew. You may find it useful to enable `kubectl` bash completion: -``` -$ source ./contrib/completions/bash/kubectl -``` +* If you're using kubectl with Kubernetes version 1.2 or earlier, you can source the kubectl completion script as follows:
+ ``` + $ source ./contrib/completions/bash/kubectl + ``` -**Note**: This will last for the duration of your bash session. If you want to make this permanent you need to add this line in your bash profile. +* If you're using kubectl with Kubernetes version 1.3, use the `kubectl completion` command as follows:
+ ``` + $ source <(kubectl completion bash) + ``` -Alternatively, on most linux distributions you can also move the completions file to your bash_completions.d like this: +**Note**: The above commands will last for the duration of your bash session. If you want to make this permanent you need to add corresponding command in your bash profile. -``` -$ cp ./contrib/completions/bash/kubectl /etc/bash_completion.d/ -``` +Alternatively, on most linux distributions you can also add a completions file to your bash_completions.d as follows: + +* For kubectl with Kubernetes v1.2 or earlier:
+ ``` + $ cp ./contrib/completions/bash/kubectl /etc/bash_completion.d/ + ``` + +* For kubectl with Kubernetes v1.3:
+ ``` + $ kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl + ``` but then you have to update it when you update kubectl. From 3522d6da5ad20a5d13d8d3a1489566c69b2c872d Mon Sep 17 00:00:00 2001 From: Ritesh H Shukla Date: Tue, 30 Aug 2016 14:31:38 -0700 Subject: [PATCH 06/11] Update documentation for vsphere cloud provider. (#1102) This update adds the new configuration needed to configure the vsphere cloud provider. --- docs/getting-started-guides/vsphere.md | 34 +++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/docs/getting-started-guides/vsphere.md b/docs/getting-started-guides/vsphere.md index adab2b9027..b3679c56e8 100644 --- a/docs/getting-started-guides/vsphere.md +++ b/docs/getting-started-guides/vsphere.md @@ -25,10 +25,14 @@ mkdir -p $GOPATH export PATH=$PATH:$GOPATH/bin ``` -4. Install the govc tool to interact with ESXi/vCenter: +4. Install the govc tool to interact with ESXi/vCenter. Head to [govc Releases](https://github.com/vmware/govmomi/releases) to download the latest. ```shell -go get github.com/vmware/govmomi/govc +# Sample commands for v0.8.0 for 64 bit Linux. +curl -OL https://github.com/vmware/govmomi/releases/download/v0.8.0/govc_linux_amd64.gz +gzip -d govc_linux_amd64.gz +chmod +x govc_linux_amd64 +mv govc_linux_amd64 /usr/local/bin/govc ``` 5. Get or build a [binary release](/docs/getting-started-guides/binary_release) @@ -43,7 +47,7 @@ md5sum -c kube.vmdk.gz.md5 gzip -d kube.vmdk.gz ``` -Import this VMDK into your vSphere datastore: +Configure the environment for govc ```shell export GOVC_URL='hostname' # hostname of the vc @@ -52,9 +56,30 @@ export GOVC_PASSWORD='password' # password for the above username export GOVC_NETWORK='Network Name' # Name of the network the vms should join. Many times it could be "VM Network" export GOVC_INSECURE=1 # If the host above uses a self-signed cert export GOVC_DATASTORE='target datastore' +# To get resource pool via govc: govc ls -l 'host/*' | grep ResourcePool | awk '{print $1}' | xargs -n1 -t govc pool.info export GOVC_RESOURCE_POOL='resource pool or cluster with access to datastore' export GOVC_GUEST_LOGIN='kube:kube' # Used for logging into kube.vmdk during deployment. +export GOVC_PORT=443 # The port to be used by vSphere cloud provider plugin +# To get datacente via govc: govc datacenter.info +export GOVC_DATACENTER='ha-datacenter' # The datacenter to be used by vSphere cloud provider plugin +``` +Sample environment +```shell +export GOVC_URL='10.161.236.217' +export GOVC_USERNAME='administrator' +export GOVC_PASSWORD='MyPassword1' +export GOVC_NETWORK='VM Network' +export GOVC_INSECURE=1 +export GOVC_DATASTORE='datastore1' +export GOVC_RESOURCE_POOL='/Datacenter/host/10.20.104.24/Resources' +export GOVC_GUEST_LOGIN='kube:kube' +export GOVC_PORT='443' +export GOVC_DATACENTER='Datacenter' +``` + +Import this VMDK into your vSphere datastore: +```shell govc import.vmdk kube.vmdk ./kube/ ``` @@ -63,6 +88,7 @@ Verify that the VMDK was correctly uploaded and expanded to ~3GiB: ```shell govc datastore.ls ./kube/ ``` + If you need to debug any part of the deployment, the guest login for the image that you imported is `kube:kube`. It is normally specified in the GOVC_GUEST_LOGIN parameter above. @@ -110,7 +136,7 @@ going on (find yourself authorized with your SSH key, or use the password IaaS Provider | Config. Mgmt | OS | Networking | Docs | Conforms | Support Level -------------------- | ------------ | ------ | ---------- | --------------------------------------------- | ---------| ---------------------------- -Vmware vSphere | Saltstack | Debian | OVS | [docs](/docs/getting-started-guides/vsphere) | | Community ([@imkin](https://github.com/imkin)) +Vmware vSphere | Saltstack | Debian | OVS | [docs](/docs/getting-started-guides/vsphere) | | Community ([@imkin](https://github.com/imkin)), ([@abrarshivani](https://github.com/abrarshivani)), ([@kerneltime](https://github.com/kerneltime)), ([@kerneltime](https://github.com/luomiao)) For support level information on all solutions, see the [Table of solutions](/docs/getting-started-guides/#table-of-solutions) chart. From b51d2544c9e54a6754c2258bc08ff9b2e2e2bacb Mon Sep 17 00:00:00 2001 From: Ankur Shukla Date: Tue, 30 Aug 2016 14:33:28 -0700 Subject: [PATCH 07/11] removing viacom from companies section (#1119) --- community.html | 1 - 1 file changed, 1 deletion(-) diff --git a/community.html b/community.html index a1e0e04d61..e6acc42b6f 100644 --- a/community.html +++ b/community.html @@ -34,7 +34,6 @@ title: Community
- From c5740ce48066bd0d40370e4492062053a86979a5 Mon Sep 17 00:00:00 2001 From: Alexander Brand Date: Tue, 30 Aug 2016 17:50:24 -0400 Subject: [PATCH 08/11] More details around leader election / failure case (#1056) --- docs/admin/high-availability/index.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/admin/high-availability/index.md b/docs/admin/high-availability/index.md index f88f6bf796..efe6ddac4b 100644 --- a/docs/admin/high-availability/index.md +++ b/docs/admin/high-availability/index.md @@ -185,6 +185,10 @@ cluster state, such as the controller manager and scheduler. To achieve this re instances of these actors, in case a machine dies. To achieve this, we are going to use a lease-lock in the API to perform master election. We will use the `--leader-elect` flag for each scheduler and controller-manager, using a lease in the API will ensure that only 1 instance of the scheduler and controller-manager are running at once. +The scheduler and controller-manager can be configured to talk to the API server that is on the same node (i.e. 127.0.0.1), or it can be configured to communicate using the load balanced IP address of the API servers. Regardless of how they are configured, the scheduler and controller-manager will complete the leader election process mentioned above when using the `--leader-elect` flag. + +In case of a failure accessing the API server, the elected leader will not be able to renew the lease, causing a new leader to be elected. This is especially relevant when configuring the scheduler and controller-manager to access the API server via 127.0.0.1, and the API server on the same node is unavailable. + ### Installing configuration files First, create empty log files on each node, so that Docker will mount the files not make new directories: From 2262731d15899d8a88f0044c9dde1610a1c319a3 Mon Sep 17 00:00:00 2001 From: devin-donnelly Date: Tue, 30 Aug 2016 16:39:31 -0700 Subject: [PATCH 09/11] Update .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 9905f71795..de345e5f59 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ _site/** .sass-cache/** CNAME +.travis.yml From 0f79678cd52e7bee0bf9d5a7a992325a9634a927 Mon Sep 17 00:00:00 2001 From: Hyunchel Kim Date: Wed, 31 Aug 2016 09:35:48 -0500 Subject: [PATCH 10/11] Fix spelling --- docs/user-guide/replication-controller/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/user-guide/replication-controller/index.md b/docs/user-guide/replication-controller/index.md index d5f4cfe10b..3197f81c1b 100644 --- a/docs/user-guide/replication-controller/index.md +++ b/docs/user-guide/replication-controller/index.md @@ -114,7 +114,7 @@ for example the [Kubelet](/docs/admin/kubelet/) or Docker. The replication controller can itself have labels (`.metadata.labels`). Typically, you would set these the same as the `.spec.template.metadata.labels`; if `.metadata.labels` is not specified then it is defaulted to `.spec.template.metadata.labels`. However, they are allowed to be -different, and the `.metadata.labels` do not affec the behavior of the replication controller. +different, and the `.metadata.labels` do not affect the behavior of the replication controller. ### Pod Selector From 44c9508a401ba5b098149654cad7c6b6cde4a4ba Mon Sep 17 00:00:00 2001 From: Hyunchel Kim Date: Wed, 31 Aug 2016 10:17:46 -0500 Subject: [PATCH 11/11] Correct grammar --- docs/user-guide/replication-controller/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/user-guide/replication-controller/index.md b/docs/user-guide/replication-controller/index.md index 3197f81c1b..61263d4994 100644 --- a/docs/user-guide/replication-controller/index.md +++ b/docs/user-guide/replication-controller/index.md @@ -254,8 +254,8 @@ Use a [`Job`](/docs/user-guide/jobs/) instead of a replication controller for po ### DaemonSet Use a [`DaemonSet`](/docs/admin/daemons/) instead of a replication controller for pods that provide a -machine-level function, such as machine monitoring or machine logging. These pods have a lifetime is tied -to machine lifetime: the pod needs to be running on the machine before other pods start, and are +machine-level function, such as machine monitoring or machine logging. These pods have a lifetime that is tied +to a machine lifetime: the pod needs to be running on the machine before other pods start, and are safe to terminate when the machine is otherwise ready to be rebooted/shutdown. ## For more information