From 71aebd79ca80203221d4dff1e01fab978ff00b76 Mon Sep 17 00:00:00 2001 From: Steve Perry Date: Thu, 25 May 2017 14:21:16 -0700 Subject: [PATCH 01/20] Get access to search console. (#3901) --- google2b743c61aa37ebbe.html | 1 + 1 file changed, 1 insertion(+) create mode 100644 google2b743c61aa37ebbe.html diff --git a/google2b743c61aa37ebbe.html b/google2b743c61aa37ebbe.html new file mode 100644 index 0000000000..46498efea2 --- /dev/null +++ b/google2b743c61aa37ebbe.html @@ -0,0 +1 @@ +google-site-verification: google2b743c61aa37ebbe.html \ No newline at end of file From 35e959df7b54895464e79dffcc693555a99739b6 Mon Sep 17 00:00:00 2001 From: Francesc Campoy Date: Thu, 25 May 2017 23:56:42 -0700 Subject: [PATCH 02/20] apps/v1beta1 is not valid (#3814) * apps/v1beta1 is not valid Replacing it with extensions/v1beta1 which actually works * Add note for versions before 1.6.0 --- docs/concepts/workloads/controllers/nginx-deployment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/concepts/workloads/controllers/nginx-deployment.yaml b/docs/concepts/workloads/controllers/nginx-deployment.yaml index 2aabf5e7b1..4ce71688f7 100644 --- a/docs/concepts/workloads/controllers/nginx-deployment.yaml +++ b/docs/concepts/workloads/controllers/nginx-deployment.yaml @@ -1,4 +1,4 @@ -apiVersion: apps/v1beta1 +apiVersion: apps/v1beta1 # for versions before 1.6.0 use extensions/v1beta1 kind: Deployment metadata: name: nginx-deployment From d86f9ec7810a3f28c5637c24347c27458c41e2ef Mon Sep 17 00:00:00 2001 From: Selvi K Date: Fri, 26 May 2017 10:27:09 -0700 Subject: [PATCH 03/20] Update pod-overview.md (#3881) Fixed some typos --- docs/concepts/workloads/pods/pod-overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/concepts/workloads/pods/pod-overview.md b/docs/concepts/workloads/pods/pod-overview.md index bad1233e1f..eb3a44b562 100644 --- a/docs/concepts/workloads/pods/pod-overview.md +++ b/docs/concepts/workloads/pods/pod-overview.md @@ -27,7 +27,7 @@ A Pod encapsulates an application container (or, in some cases, multiple contain Pods are employed a number of ways in a Kubernetes cluster, including: * **Pods that run a single container**. The "one-container-per-Pod" model is the most common Kubernetes use case; in this case, you can think of a Pod as a wrapper around a single container, and Kubernetes manages the Pods rather than the containers directly. -* **Pods that run multiple containers that need to work together**. A Pod might encapsulate an application composed multiple co-located containers that are tightly coupled and need to share resources. These co-located containers might form a single cohesive unit of service--one container serving files from a shared volume to the public, while a separate "sidecar" container refreshes or updates those files. The Pod wraps these containers and storage resources together as a single managable entity. +* **Pods that run multiple containers that need to work together**. A Pod might encapsulate an application composed of multiple co-located containers that are tightly coupled and need to share resources. These co-located containers might form a single cohesive unit of service--one container serving files from a shared volume to the public, while a separate "sidecar" container refreshes or updates those files. The Pod wraps these containers and storage resources together as a single manageable entity. The [Kubernetes Blog](http://blog.kubernetes.io) has some additional information on Pod use cases. For more information, see: From 80bf5cb316d8c50c2563052dcde2b966801ccf74 Mon Sep 17 00:00:00 2001 From: Peter Lee Date: Wed, 24 May 2017 22:25:59 +0800 Subject: [PATCH 04/20] fix typo --- docs/concepts/policy/pod-security-policy.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/concepts/policy/pod-security-policy.md b/docs/concepts/policy/pod-security-policy.md index e4a0ccaf8c..a1529ddb54 100644 --- a/docs/concepts/policy/pod-security-policy.md +++ b/docs/concepts/policy/pod-security-policy.md @@ -179,7 +179,7 @@ To modify policy interactively, use `kubectl edit`: $ kubectl edit psp permissive ``` -This command will open a default text editor where you will be ably to modify policy. +This command will open a default text editor where you will be able to modify policy. ## Deleting a Pod Security Policy From b8b60ebe05ae11e63360dca05da035680d49052b Mon Sep 17 00:00:00 2001 From: chenhuan12 Date: Fri, 26 May 2017 10:03:09 +0800 Subject: [PATCH 05/20] fix typo fix typo --- docs/getting-started-guides/ubuntu/upgrades.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/getting-started-guides/ubuntu/upgrades.md b/docs/getting-started-guides/ubuntu/upgrades.md index 22619095c7..90db3a5424 100644 --- a/docs/getting-started-guides/ubuntu/upgrades.md +++ b/docs/getting-started-guides/ubuntu/upgrades.md @@ -75,7 +75,7 @@ Pause the old workers so your workload migrates: Verify old workloads have migrated with: - kubectl get-pod -o wide + kubectl get pod -o wide Tear down old workers with: From 6ab0577e3e2fd0b40fc0c96e9d17cf7755fa9509 Mon Sep 17 00:00:00 2001 From: chenhuan12 Date: Fri, 26 May 2017 10:49:03 +0800 Subject: [PATCH 06/20] fix typo fix typo --- docs/concepts/workloads/controllers/petset.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/concepts/workloads/controllers/petset.md b/docs/concepts/workloads/controllers/petset.md index d20c6641be..eb000d8a40 100644 --- a/docs/concepts/workloads/controllers/petset.md +++ b/docs/concepts/workloads/controllers/petset.md @@ -118,7 +118,7 @@ Saving this config into `petset.yaml` and submitting it to a Kubernetes cluster ```shell $ kubectl create -f petset.yaml service "nginx" created -petset "nginx" created +petset "web" created ``` ## Pet Identity From 9dc7cfbebb64e24281755606353cee7dd0b831a2 Mon Sep 17 00:00:00 2001 From: chenhuan12 Date: Fri, 26 May 2017 10:58:47 +0800 Subject: [PATCH 07/20] fix typo fix typo --- docs/concepts/workloads/controllers/jobs-run-to-completion.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/concepts/workloads/controllers/jobs-run-to-completion.md b/docs/concepts/workloads/controllers/jobs-run-to-completion.md index 88f5e8899f..2bc26940f7 100644 --- a/docs/concepts/workloads/controllers/jobs-run-to-completion.md +++ b/docs/concepts/workloads/controllers/jobs-run-to-completion.md @@ -308,7 +308,7 @@ to keep running, but you want the rest of the pods it creates to use a different pod template and for the job to have a new name. You cannot update the job because these fields are not updatable. Therefore, you delete job `old` but leave its pods -running, using `kubectl delete jobs/old-one --cascade=false`. +running, using `kubectl delete jobs/old --cascade=false`. Before deleting it, you make a note of what selector it uses: ``` From de17826af0f3ea0234370b46b82e5e33a411a18a Mon Sep 17 00:00:00 2001 From: chenhuan12 Date: Fri, 26 May 2017 15:19:39 +0800 Subject: [PATCH 08/20] fix typo fix typo --- docs/getting-started-guides/mesos/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/getting-started-guides/mesos/index.md b/docs/getting-started-guides/mesos/index.md index 8cebf15ccb..f0230b93b0 100644 --- a/docs/getting-started-guides/mesos/index.md +++ b/docs/getting-started-guides/mesos/index.md @@ -194,7 +194,7 @@ Send the pod description to Kubernetes using the `kubectl` CLI: ```shell $ kubectl create -f ./nginx.yaml -pods/nginx +pod "nginx" created ``` Wait a minute or two while `dockerd` downloads the image layers from the internet. From ffaafb22760ad13caba094467586b5effca10eab Mon Sep 17 00:00:00 2001 From: roshandawrani Date: Fri, 26 May 2017 17:27:26 +0530 Subject: [PATCH 09/20] Correcting the typo in init-container's name --- docs/concepts/workloads/pods/init-containers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/concepts/workloads/pods/init-containers.md b/docs/concepts/workloads/pods/init-containers.md index fe30ecb0ef..4a3dd7c990 100644 --- a/docs/concepts/workloads/pods/init-containers.md +++ b/docs/concepts/workloads/pods/init-containers.md @@ -218,7 +218,7 @@ Events: 13s 13s 1 {kubelet 172.17.4.201} spec.initContainers{init-myservice} Normal Created Created container with docker id 5ced34a04634; Security:[seccomp=unconfined] 13s 13s 1 {kubelet 172.17.4.201} spec.initContainers{init-myservice} Normal Started Started container with docker id 5ced34a04634 $ kubectl logs myapp-pod -c init-myservice # Inspect the first init container -$ kubectl logs myapp-pod -c init-mydd # Inspect the second init container +$ kubectl logs myapp-pod -c init-mydb # Inspect the second init container ``` Once we start the `mydb` and `myservice` services, we can see the Init Containers From 9ab964f4c756779266019df841916f98094115fc Mon Sep 17 00:00:00 2001 From: chenhuan12 Date: Fri, 26 May 2017 09:18:36 +0800 Subject: [PATCH 10/20] fix the command output fix the command output --- docs/getting-started-guides/mesos/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/getting-started-guides/mesos/index.md b/docs/getting-started-guides/mesos/index.md index f0230b93b0..cfe0442ecb 100644 --- a/docs/getting-started-guides/mesos/index.md +++ b/docs/getting-started-guides/mesos/index.md @@ -159,9 +159,9 @@ NAME READY STATUS RESTARTS AGE ```shell # NOTE: your service IPs will likely differ $ kubectl get services -NAME LABELS SELECTOR IP(S) PORT(S) -k8sm-scheduler component=scheduler,provider=k8sm 10.10.10.113 10251/TCP -kubernetes component=apiserver,provider=kubernetes 10.10.10.1 443/TCP +NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE +k8sm-scheduler 10.10.10.113 10251/TCP 1d +kubernetes 10.10.10.1 443/TCP 1d ``` Lastly, look for Kubernetes in the Mesos web GUI by pointing your browser to From f5d455edeef3a351e6e371938bf18c4fc8262d10 Mon Sep 17 00:00:00 2001 From: chenhuan12 Date: Fri, 26 May 2017 09:50:53 +0800 Subject: [PATCH 11/20] fix the command output fix the command output --- docs/getting-started-guides/fedora/fedora_manual_config.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/getting-started-guides/fedora/fedora_manual_config.md b/docs/getting-started-guides/fedora/fedora_manual_config.md index 5e8d74efa8..9d34f00d80 100644 --- a/docs/getting-started-guides/fedora/fedora_manual_config.md +++ b/docs/getting-started-guides/fedora/fedora_manual_config.md @@ -125,7 +125,7 @@ Now create a node object internally in your Kubernetes cluster by running: $ kubectl create -f ./node.json $ kubectl get nodes -NAME STATUS AGE +NAME STATUS AGE VERSION fed-node Unknown 4h ``` @@ -172,7 +172,7 @@ done ```shell kubectl get nodes -NAME STATUS AGE +NAME STATUS AGE VERSION fed-node Ready 4h ``` From 7d4f3c5587007a1222763319849eec6ce36d261d Mon Sep 17 00:00:00 2001 From: chenhuan12 Date: Fri, 26 May 2017 10:24:58 +0800 Subject: [PATCH 12/20] fix the command output fix the command output --- docs/concepts/overview/working-with-objects/namespaces.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/concepts/overview/working-with-objects/namespaces.md b/docs/concepts/overview/working-with-objects/namespaces.md index 1939d410ea..74af64b7e8 100644 --- a/docs/concepts/overview/working-with-objects/namespaces.md +++ b/docs/concepts/overview/working-with-objects/namespaces.md @@ -41,9 +41,9 @@ You can list the current namespaces in a cluster using: ```shell $ kubectl get namespaces -NAME LABELS STATUS -default Active -kube-system Active +NAME STATUS AGE +default Active 1d +kube-system Active 1d ``` Kubernetes starts with two initial namespaces: From 8b745c2e9ef11d5ce5aacdec475a71f498805d48 Mon Sep 17 00:00:00 2001 From: chenhuan12 Date: Fri, 26 May 2017 10:39:54 +0800 Subject: [PATCH 13/20] replace KUBECTL with kubectl replace KUBECTL with kubectl --- docs/concepts/workloads/controllers/deployment.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/concepts/workloads/controllers/deployment.md b/docs/concepts/workloads/controllers/deployment.md index 52f1ddfc54..0f9ad75250 100644 --- a/docs/concepts/workloads/controllers/deployment.md +++ b/docs/concepts/workloads/controllers/deployment.md @@ -526,7 +526,7 @@ Eventually, resume the Deployment and observe a new ReplicaSet coming up with al ```shell $ kubectl rollout resume deploy nginx deployment "nginx" resumed -$ KUBECTL get rs -w +$ kubectl get rs -w NAME DESIRED CURRENT READY AGE nginx-2142116321 2 2 2 2m nginx-3926361531 2 2 0 6s @@ -543,7 +543,7 @@ nginx-2142116321 0 1 1 2m nginx-2142116321 0 0 0 2m nginx-3926361531 3 3 3 20s ^C -$ KUBECTL get rs +$ kubectl get rs NAME DESIRED CURRENT READY AGE nginx-2142116321 0 0 0 2m nginx-3926361531 3 3 3 28s From 61c39cf9df802f8b4a0a530900c0e53b458285ff Mon Sep 17 00:00:00 2001 From: chenhuan12 Date: Fri, 26 May 2017 11:13:01 +0800 Subject: [PATCH 14/20] replace kubectl.sh with kubectl replace kubectl.sh with kubectl --- docs/concepts/configuration/secret.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/concepts/configuration/secret.md b/docs/concepts/configuration/secret.md index c35e59e6d2..062eb6d21f 100644 --- a/docs/concepts/configuration/secret.md +++ b/docs/concepts/configuration/secret.md @@ -486,7 +486,7 @@ invalid keys that were skipped. The example shows a pod which refers to the default/mysecret ConfigMap that contains 2 invalid keys, 1badkey and 2alsobad. ```shell -$ kubectl.sh get events +$ kubectl get events LASTSEEN FIRSTSEEN COUNT NAME KIND SUBOBJECT TYPE REASON 0s 0s 1 dapi-test-pod Pod Warning InvalidEnvironmentVariableNames kubelet, 127.0.0.1 Keys [1badkey, 2alsobad] from the EnvFrom secret default/mysecret were skipped since they are considered invalid environment variable names. ``` From 940335cd67dabb46e922fa455811d9ef7fd38fff Mon Sep 17 00:00:00 2001 From: chenhuan12 Date: Fri, 26 May 2017 11:28:25 +0800 Subject: [PATCH 15/20] column IP is missed column IP is missed --- .../services-networking/connect-applications-service.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/concepts/services-networking/connect-applications-service.md b/docs/concepts/services-networking/connect-applications-service.md index 556a3dafe7..b530f587fb 100644 --- a/docs/concepts/services-networking/connect-applications-service.md +++ b/docs/concepts/services-networking/connect-applications-service.md @@ -119,9 +119,9 @@ Note there's no mention of your Service. This is because you created the replica $ kubectl scale deployment my-nginx --replicas=0; kubectl scale deployment my-nginx --replicas=2; $ kubectl get pods -l run=my-nginx -o wide -NAME READY STATUS RESTARTS AGE NODE -my-nginx-3800858182-e9ihh 1/1 Running 0 5s kubernetes-minion-ljyd -my-nginx-3800858182-j4rm4 1/1 Running 0 5s kubernetes-minion-905m +NAME READY STATUS RESTARTS AGE IP NODE +my-nginx-3800858182-e9ihh 1/1 Running 0 5s 10.244.2.7 kubernetes-minion-ljyd +my-nginx-3800858182-j4rm4 1/1 Running 0 5s 10.244.3.8 kubernetes-minion-905m ``` You may notice that the pods have different names, since they are killed and recreated. From 1406756b8a5fff859387ca9f108e1413c0d451f4 Mon Sep 17 00:00:00 2001 From: chenhuan12 Date: Fri, 26 May 2017 15:11:42 +0800 Subject: [PATCH 16/20] replace REASON with STATUS replace REASON with STATUS --- .../debug-application-cluster/logging-elasticsearch-kibana.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tasks/debug-application-cluster/logging-elasticsearch-kibana.md b/docs/tasks/debug-application-cluster/logging-elasticsearch-kibana.md index ead9f2b377..f369ce8c98 100644 --- a/docs/tasks/debug-application-cluster/logging-elasticsearch-kibana.md +++ b/docs/tasks/debug-application-cluster/logging-elasticsearch-kibana.md @@ -58,7 +58,7 @@ life. ```shell $ kubectl get pods --namespace=kube-system -NAME READY REASON RESTARTS AGE +NAME READY STATUS RESTARTS AGE elasticsearch-logging-v1-78nog 1/1 Running 0 2h elasticsearch-logging-v1-nj2nb 1/1 Running 0 2h fluentd-elasticsearch-kubernetes-node-5oq0 1/1 Running 0 2h From 295e26277568b560d4bde92b7fe118acec7d3486 Mon Sep 17 00:00:00 2001 From: Xiaoyu Zhang Date: Fri, 26 May 2017 16:36:28 +0800 Subject: [PATCH 17/20] Fix some output Fix some output --- docs/tasks/administer-cluster/access-cluster-api.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/tasks/administer-cluster/access-cluster-api.md b/docs/tasks/administer-cluster/access-cluster-api.md index f83b48483c..4657cd6901 100644 --- a/docs/tasks/administer-cluster/access-cluster-api.md +++ b/docs/tasks/administer-cluster/access-cluster-api.md @@ -68,6 +68,12 @@ $ curl http://localhost:8080/api/ { "versions": [ "v1" + ], + "serverAddressByClientCIDRs": [ + { + "clientCIDR": "0.0.0.0/0", + "serverAddress": "10.0.1.149:443" + } ] } ``` @@ -199,4 +205,4 @@ In each case, the credentials of the pod are used to communicate securely with t {% endcapture %} -{% include templates/task.md %} \ No newline at end of file +{% include templates/task.md %} From 2fc7ec0b6da1272bff24ad68838dfa4043910d8f Mon Sep 17 00:00:00 2001 From: "Sahdev P. Zala" Date: Tue, 23 May 2017 20:50:49 -0400 Subject: [PATCH 18/20] Remove beta as K8s support on Bluemix Container Service is live The Kubernetes support in Bluemix Container Service is now live and so we should remove reference of beta. --- _data/setup.yml | 2 +- docs/setup/pick-right-solution.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/_data/setup.yml b/_data/setup.yml index e43a253a47..2dbd8df29c 100644 --- a/_data/setup.yml +++ b/_data/setup.yml @@ -17,7 +17,7 @@ toc: path: https://cloud.google.com/container-engine/docs/before-you-begin/ - title: Running Kubernetes on Azure Container Service path: https://docs.microsoft.com/en-us/azure/container-service/container-service-kubernetes-walkthrough - - title: Running Kubernetes on IBM Bluemix Container Service (Beta) + - title: Running Kubernetes on IBM Bluemix Container Service path: https://console.ng.bluemix.net/docs/containers/container_index.html - title: Turn-key Cloud Solutions diff --git a/docs/setup/pick-right-solution.md b/docs/setup/pick-right-solution.md index cd19942954..294824432d 100644 --- a/docs/setup/pick-right-solution.md +++ b/docs/setup/pick-right-solution.md @@ -58,7 +58,7 @@ a Kubernetes cluster from scratch. * [OpenShift Online](https://www.openshift.com/features/) provides free hosted access for Kubernetes applications. -* [IBM Bluemix Container Service](https://console.ng.bluemix.net/docs/containers/container_index.html) offers managed Kubernetes clusters. Currently in beta. +* [IBM Bluemix Container Service](https://console.ng.bluemix.net/docs/containers/container_index.html) offers managed Kubernetes clusters. * [Giant Swarm](https://giantswarm.io/product/) offers managed Kubernetes clusters in their own datacenter, on-premises, or on public clouds. From 6f401ab0d2d7886989799f7cd43904f5b0ea222e Mon Sep 17 00:00:00 2001 From: Luke Stutters Date: Tue, 23 May 2017 11:29:25 +0900 Subject: [PATCH 19/20] Minor grammatical correction If the Volume is created from the ConfigMap, the files in the Volume are representatives of the Config map, not the other way round. --- docs/tasks/configure-pod-container/configmap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tasks/configure-pod-container/configmap.md b/docs/tasks/configure-pod-container/configmap.md index 709fa9b89b..bf5185be87 100644 --- a/docs/tasks/configure-pod-container/configmap.md +++ b/docs/tasks/configure-pod-container/configmap.md @@ -226,7 +226,7 @@ metadata: ConfigMaps allow you to decouple configuration artifacts from image content to keep containerized applications portable. The ConfigMap API resource stores configuration data as key-value pairs. The data can be consumed in pods or provide the configurations for system components such as controllers. ConfigMap is similar to [Secrets](/docs/concepts/configuration/secret/), but provides a means of working with strings that don't contain sensitive information. Users and system components alike can store configuration data in ConfigMap. -Note: ConfigMaps should reference properties files, not replace them. Think of the ConfigMap as representing something similar to the a Linux `/etc` directory and its contents. For example, if you create a [Kubernetes Volume](/docs/concepts/storage/volumes/) from a ConfigMap, each data item in the ConfigMap represents an individual file in the volume. +Note: ConfigMaps should reference properties files, not replace them. Think of the ConfigMap as representing something similar to the a Linux `/etc` directory and its contents. For example, if you create a [Kubernetes Volume](/docs/concepts/storage/volumes/) from a ConfigMap, each data item in the ConfigMap is represented by an individual file in the volume. The ConfigMap's `data` field contains the configuration data. As shown in the example below, this can be simple -- like individual properties defined using `--from-literal` -- or complex -- like configuration files or JSON blobs defined using `--from-file`. From fd4ce1860ab1e1680a0b2e42d04eb54010d0a18f Mon Sep 17 00:00:00 2001 From: "Kevin J. Qiu" Date: Tue, 23 May 2017 14:17:30 -0400 Subject: [PATCH 20/20] Fix sentence --- docs/concepts/overview/working-with-objects/labels.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/concepts/overview/working-with-objects/labels.md b/docs/concepts/overview/working-with-objects/labels.md index 80a38a4277..91e90e8a81 100644 --- a/docs/concepts/overview/working-with-objects/labels.md +++ b/docs/concepts/overview/working-with-objects/labels.md @@ -8,7 +8,7 @@ redirect_from: --- _Labels_ are key/value pairs that are attached to objects, such as pods. -Labels are intended to be used to specify identifying attributes of objects that are meaningful and relevant to users, but which do not directly imply semantics to the core system. +Labels are intended to be used to specify identifying attributes of objects that are meaningful and relevant to users, but do not directly imply semantics to the core system. Labels can be used to organize and to select subsets of objects. Labels can be attached to objects at creation time and subsequently added and modified at any time. Each object can have a set of key/value labels defined. Each Key must be unique for a given object.