diff --git a/_data/concepts.yml b/_data/concepts.yml index f9422daa98..93c790c0ab 100644 --- a/_data/concepts.yml +++ b/_data/concepts.yml @@ -7,3 +7,7 @@ toc: section: - title: Annotations path: /docs/concepts/object-metadata/annotations/ +- title: Controllers + section: + - title: StatefulSets + path: /docs/concepts/abstractions/controllers/statefulsets/ diff --git a/_data/guides.yml b/_data/guides.yml index 0c1a785720..583deaeedd 100644 --- a/_data/guides.yml +++ b/_data/guides.yml @@ -237,6 +237,8 @@ toc: path: /docs/getting-started-guides/coreos - title: Ubuntu path: /docs/getting-started-guides/ubuntu/ + - title: Windows Server Containers + path: /docs/getting-started-guides/windows/ - title: Validate Node Setup path: /docs/admin/node-conformance - title: Portable Multi-Node Cluster @@ -272,8 +274,6 @@ toc: path: /docs/admin/cluster-components/ - title: Configuring Kubernetes Use of etcd path: /docs/admin/etcd/ - - title: Federating Clusters - path: /docs/admin/federation/ - title: Using Multiple Clusters path: /docs/admin/multi-cluster/ - title: Changing Cluster Size @@ -302,3 +302,10 @@ toc: path: /docs/admin/node-problem/ - title: AppArmor path: /docs/admin/apparmor/ + +- title: Administering Federation + section: + - title: Using `kubefed` + path: /docs/admin/federation/kubfed/ + - title: Using `federation-up` and `deploy.sh` + path: /docs/admin/federation/ diff --git a/_data/reference.yml b/_data/reference.yml index 6f71d1677c..ce0504eed8 100644 --- a/_data/reference.yml +++ b/_data/reference.yml @@ -178,7 +178,15 @@ toc: - title: kube-scheduler path: /docs/admin/kube-scheduler/ - title: kubelet - path: /docs/admin/kubelet/ + section: + - title: Overview + path: /docs/admin/kubelet/ + - title: Master-Node communication + path: /docs/admin/master-node-communication/ + - title: TLS bootstrapping + path: /docs/admin/kubelet-tls-bootstrapping/ + - title: Kubelet authentication/authorization + path: /docs/admin/kubelet-authentication-authorization/ - title: Glossary section: @@ -254,6 +262,12 @@ toc: section: - title: Federation User Guide path: /docs/user-guide/federation/ + - title: Federated ConfigMap + path: /docs/user-guide/federation/configmap/ + - title: Federated DaemonSet + path: /docs/user-guide/federation/daemonsets/ + - title: Federated Deployment + path: /docs/user-guide/federation/deployment/ - title: Federated Events path: /docs/user-guide/federation/events/ - title: Federated Ingress diff --git a/_data/tasks.yml b/_data/tasks.yml index 9898fae32f..d4f6071bf1 100644 --- a/_data/tasks.yml +++ b/_data/tasks.yml @@ -27,8 +27,30 @@ toc: section: - title: Using an HTTP Proxy to Access the Kubernetes API path: /docs/tasks/access-kubernetes-api/http-proxy-access-api/ + - title: Administering a Cluster section: - title: Assigning Pods to Nodes path: /docs/tasks/administer-cluster/assign-pods-nodes/ + - title: Autoscaling the DNS Service in a Cluster + path: /docs/tasks/administer-cluster/dns-horizontal-autoscaling/ + - title: Safely Draining a Node while Respecting Application SLOs + path: /docs/tasks/administer-cluster/safely-drain-node/ +- title: Managing Stateful Applications + section: + - title: Upgrading from PetSets to StatefulSets + path: /docs/tasks/manage-stateful-set/upgrade-pet-set-to-stateful-set/ + - title: Scaling a StatefulSet + path: /docs/tasks/manage-stateful-set/scale-stateful-set/ + - title: Deleting a Stateful Set + path: /docs/tasks/manage-stateful-set/deleting-a-statefulset/ + - title: Debugging a StatefulSet + path: /docs/tasks/manage-stateful-set/debugging-a-statefulset/ + - title: Force Deleting StatefulSet Pods + path: /docs/tasks/manage-stateful-set/delete-pods/ + +- title: Troubleshooting + section: + - title: Debugging Init Containers + path: /docs/tasks/troubleshoot/debug-init-containers/ diff --git a/_data/tutorials.yml b/_data/tutorials.yml index 61555427d1..41664efa31 100644 --- a/_data/tutorials.yml +++ b/_data/tutorials.yml @@ -53,5 +53,9 @@ toc: path: /docs/tutorials/stateless-application/expose-external-ip-address/ - title: Stateful Applications section: + - title: StatefulSet Basics + path: /docs/tutorials/stateful-application/basic-stateful-set/ - title: Running a Single-Instance Stateful Application path: /docs/tutorials/stateful-application/run-stateful-application/ + - title: Running a Replicated Stateful Application + path: /docs/tutorials/stateful-application/run-replicated-stateful-application/ \ No newline at end of file diff --git a/_includes/default-storage-class-prereqs.md b/_includes/default-storage-class-prereqs.md new file mode 100644 index 0000000000..a4747d9032 --- /dev/null +++ b/_includes/default-storage-class-prereqs.md @@ -0,0 +1,6 @@ +You need to either have a dynamic PersistentVolume provisioner with a default +[StorageClass](/docs/user-guide/persistent-volumes/#storageclasses), +or [statically provision PersistentVolumes](/docs/user-guide/persistent-volumes/#provisioning) +yourself to satisfy the [PersistentVolumeClaims](/docs/user-guide/persistent-volumes/#persistentvolumeclaims) +used here. + diff --git a/_includes/footer.html b/_includes/footer.html index 5e724f710c..0f9e67544a 100644 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -24,6 +24,11 @@ Contribute to the K8s codebase -
-
+
+
+
+
+
+
diff --git a/docs/admin/authentication.md b/docs/admin/authentication.md
index 3d73f527bf..0cb5ea4dbe 100644
--- a/docs/admin/authentication.md
+++ b/docs/admin/authentication.md
@@ -4,6 +4,7 @@ assignees:
- lavalamp
- ericchiang
- deads2k
+- liggitt
---
* TOC
@@ -35,8 +36,8 @@ or be treated as an anonymous user.
## Authentication strategies
Kubernetes uses client certificates, bearer tokens, an authenticating proxy, or HTTP basic auth to
-authenticate API requests through authentication plugins. As HTTP request are
-made to the API server plugins attempts to associate the following attributes
+authenticate API requests through authentication plugins. As HTTP requests are
+made to the API server, plugins attempt to associate the following attributes
with the request:
* Username: a string which identifies the end user. Common values might be `kube-admin` or `jane@example.com`.
@@ -382,6 +383,13 @@ option to the API server during startup. The plugin is implemented in
`plugin/pkg/auth/authenticator/password/keystone/keystone.go` and currently uses
basic auth to verify used by username and password.
+If you have configured self-signed certificates for the Keystone server,
+you may need to set the `--experimental-keystone-ca-file=SOMEFILE` option when
+starting the Kubernetes API server. If you set the option, the Keystone
+server's certificate is verified by one of the authorities in the
+`experimental-keystone-ca-file`. Otherwise, the certificate is verified by
+the host's root Certificate Authority.
+
For details on how to use keystone to manage projects and users, refer to the
[Keystone documentation](http://docs.openstack.org/developer/keystone/). Please
note that this plugin is still experimental, under active development, and likely
@@ -420,7 +428,7 @@ enterprise directory, kerberos, etc.)
### Creating Certificates
When using client certificate authentication, you can generate certificates
-using an existing deployment script or manually through `easyrsa` or `openssl.``
+using an existing deployment script or manually through `easyrsa` or `openssl.`
#### Using an Existing Deployment Script
diff --git a/docs/admin/authorization.md b/docs/admin/authorization.md
index 1a86359a92..f1f46985b2 100644
--- a/docs/admin/authorization.md
+++ b/docs/admin/authorization.md
@@ -2,6 +2,8 @@
assignees:
- erictune
- lavalamp
+- deads2k
+- liggitt
---
@@ -565,10 +567,10 @@ Access to non-resource paths are sent as:
Non-resource paths include: `/api`, `/apis`, `/metrics`, `/resetMetrics`,
`/logs`, `/debug`, `/healthz`, `/swagger-ui/`, `/swaggerapi/`, `/ui`, and
-`/version.` Clients require access to `/api`, `/api/*/`, `/apis/`, `/apis/*`,
-`/apis/*/*`, and `/version` to discover what resources and versions are present
-on the server. Access to other non-resource paths can be disallowed without
-restricting access to the REST api.
+`/version.` Clients require access to `/api`, `/api/*`, `/apis`, `/apis/*`,
+and `/version` to discover what resources and versions are present on the server.
+Access to other non-resource paths can be disallowed without restricting access
+to the REST api.
For further documentation refer to the authorization.v1beta1 API objects and
plugin/pkg/auth/authorizer/webhook/webhook.go.
diff --git a/docs/admin/disruptions.md b/docs/admin/disruptions.md
index 0743b565e6..df94c58cf2 100644
--- a/docs/admin/disruptions.md
+++ b/docs/admin/disruptions.md
@@ -1,6 +1,6 @@
---
assignees:
-- mml
+- davidopp
---
This guide is for anyone wishing to specify safety constraints on pods or anyone
@@ -59,7 +59,7 @@ itself. To attempt an eviction (perhaps more REST-precisely, to attempt to
```json
{
- "apiVersion": "policy/v1alpha1",
+ "apiVersion": "policy/v1beta1",
"kind": "Eviction",
"metadata": {
"name": "quux",
diff --git a/docs/admin/dns.md b/docs/admin/dns.md
index d75acfa093..372d9a026e 100644
--- a/docs/admin/dns.md
+++ b/docs/admin/dns.md
@@ -356,3 +356,5 @@ for more information.
- [Docs for the DNS cluster addon](http://releases.k8s.io/{{page.githubbranch}}/build-tools/kube-dns/README.md)
+## What's next
+- [Autoscaling the DNS Service in a Cluster](/docs/tasks/administer-cluster/dns-horizontal-autoscaling/).
diff --git a/docs/admin/federation/index.md b/docs/admin/federation/index.md
index 41d43b9572..ec40d581bb 100644
--- a/docs/admin/federation/index.md
+++ b/docs/admin/federation/index.md
@@ -14,11 +14,11 @@ This guide explains how to set up cluster federation that lets us control multip
## Prerequisites
This guide assumes that you have a running Kubernetes cluster.
-If not, then head over to the [getting started guides](/docs/getting-started-guides/) to bring up a cluster.
+If you need to start a new cluster, see the [getting started guides](/docs/getting-started-guides/) for instructions on bringing a cluster up.
-This guide also assumes that you have a Kubernetes release
-[downloaded from here](/docs/getting-started-guides/binary_release/),
-extracted into a directory and all the commands in this guide are run from
+To use the commands in this guide, you must download a Kubernetes release from the
+[getting started binary releases](/docs/getting-started-guides/binary_release/) and
+extract into a directory; all the commands in this guide are run from
that directory.
```shell
@@ -26,8 +26,8 @@ $ curl -L https://github.com/kubernetes/kubernetes/releases/download/v1.4.0/kube
$ cd kubernetes
```
-This guide also assumes that you have an installation of Docker running
-locally, i.e. on the machine where you run the commands described in this
+You must also have a Docker installation running
+locally--meaning on the machine where you run the commands described in this
guide.
## Setting up a federation control plane
@@ -212,47 +212,81 @@ cluster1 Ready 3m
## Updating KubeDNS
-Once the cluster is registered with the federation, you are all set to use it.
-But for the cluster to be able to route federation service requests, you need to restart
-KubeDNS and pass it a `--federations` flag which tells it about valid federation DNS hostnames.
-Format of the flag is like this:
+Once you've registered your cluster with the federation, you'll need to update KubeDNS so that your cluster can route federation service requests. The update method varies depending on your Kubernetes version; on Kubernetes 1.5 or later, you must pass the
+`--federations` flag to kube-dns via the kube-dns config map. In version 1.4 or earlier, you must set the `--federations` flag directly on kube-dns-rc on other clusters.
+
+### Kubernetes 1.5+: Passing federations flag via config map to kube-dns
+
+For kubernetes clusters of version 1.5+, you can pass the
+`--federations` flag to kube-dns via the kube-dns config map.
+The flag uses the following format:
```
--federations=${FEDERATION_NAME}=${DNS_DOMAIN_NAME}
```
-To update KubeDNS with federations flag, you can edit the existing kubedns replication controller to
-include that flag in pod template spec and then delete the existing pod. Replication controller will
-recreate the pod with updated template.
+To pass this flag to KubeDNS, create a config-map with name `kube-dns` in
+namespace `kube-system`. The configmap should look like the following:
-To find the name of existing kubedns replication controller, run
+```yaml
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: kube-dns
+ namespace: kube-system
+data:
+ federations: The Master is responsible for managing the cluster. The master coordinates all activity in your cluster, such as scheduling applications, maintaining applications' desired state, scaling applications, and rolling out new updates.
+The Master is responsible for managing the cluster. The master coordinates all activities in your cluster, such as scheduling applications, maintaining applications' desired state, scaling applications, and rolling out new updates.
A node is a VM or a physical computer that serves as a worker machine in a Kubernetes cluster. Each node has a Kubelet, which is an agent for managing the node and communicating with the Kubernetes master. The node should also have tools for handling container operations, such as Docker or rkt. A Kubernetes cluster that handles production traffic should have a minimum of three nodes.
When you deploy applications on Kubernetes, you tell the master to start the application containers. The master schedules the containers to run on the cluster's nodes. The nodes communicate with the master using the Kubernetes API, which the master exposes. End users can also use the Kubernetes API directly to interact with the cluster.
-A Kubernetes cluster can be deployed on either physical or virtual machines. To get started with Kubernetes development, you can use minikube. Minikube is a lightweight Kubernetes implementation that creates a VM on your local machine and deploys a simple cluster containing only one node. Minikube is available for Linux, Mac OS and Windows systems. The minikube CLI provides basic bootstrapping operations for working with your cluster, including start, stop, status, and delete. For this bootcamp, however, you'll use a provided online terminal with minikube pre-installed.
+A Kubernetes cluster can be deployed on either physical or virtual machines. To get started with Kubernetes development, you can use Minikube. Minikube is a lightweight Kubernetes implementation that creates a VM on your local machine and deploys a simple cluster containing only one node. Minikube is available for Linux, Mac OS and Windows systems. The Minikube CLI provides basic bootstrapping operations for working with your cluster, including start, stop, status, and delete. For this bootcamp, however, you'll use a provided online terminal with Minikube pre-installed.
Now that you know what Kubernetes is, let’s go to the online tutorial and start our first cluster!
diff --git a/docs/tutorials/kubernetes-basics/deploy-intro.html b/docs/tutorials/kubernetes-basics/deploy-intro.html index 3664398794..f7f80982bf 100644 --- a/docs/tutorials/kubernetes-basics/deploy-intro.html +++ b/docs/tutorials/kubernetes-basics/deploy-intro.html @@ -70,7 +70,7 @@You can create and manage a Deployment by using the Kubernetes command line interface, Kubectl. Kubectl uses the Kubernetes API to interact with the cluster. In this module, you'll learn the most common Kubectl commands needed to create Deployments that run your applications on a Kubernetes cluster.
-When you create a Deployment, you'll need to specify the container image for your application and the number of replicas that you want to run. You can change that information later by updating your Deployment; Modules 5 and 6 of the bootcamp discuss how you can update your Deployments.
+When you create a Deployment, you'll need to specify the container image for your application and the number of replicas that you want to run. You can change that information later by updating your Deployment; Modules 5 and 6 of the bootcamp discuss how you can scale and update your Deployments.
@@ -85,7 +85,7 @@For our first Deployment, we’ll use a NodeJS application packaged in a Docker container. The source code and the Dockerfile are available in the GitHub repository for the Kubernetes Bootcamp.
+For our first Deployment, we’ll use a Node.js application packaged in a Docker container. The source code and the Dockerfile are available in the GitHub repository for the Kubernetes Bootcamp.
Now that you know what Deployments are, let’s go to the online tutorial and deploy our first app!
diff --git a/docs/tutorials/kubernetes-basics/explore-intro.html b/docs/tutorials/kubernetes-basics/explore-intro.html index 23dd27714b..b288062650 100644 --- a/docs/tutorials/kubernetes-basics/explore-intro.html +++ b/docs/tutorials/kubernetes-basics/explore-intro.html @@ -27,7 +27,7 @@When you created a Deployment in Module 2, Kubernetes created a Pod to host your application instance. A Pod is Kubernetes abstraction that represents a group of one or more application containers (such as Docker or rkt), and some shared resources for those containers. Those resources include:
+When you created a Deployment in Module 2, Kubernetes created a Pod to host your application instance. A Pod is Kubernetes abstraction that represents a group of one or more application containers (such as Docker or rkt), and some shared resources for those containers. Those resources include:
In Module 2, you used Kubectl command-line interface. You'll continue to use it in Module 3 to get information about deployed applications and their environments. The most common operations can be done with the following kubectl commands:
+In Module 2, you used Kubectl command-line interface. You'll continue to use it in Module 3 to get information about deployed applications and their environments. The most common operations can be done with the following kubectl commands:
You can use these commands to see when applications were deployed, what their current status is, where they are running and what their configuration is.
+You can use these commands to see when applications were deployed, what their current statuses are, where they are running and what their configurations are.
Now that we know more about our cluster components and the command line, let’s explore our application.
diff --git a/docs/tutorials/kubernetes-basics/expose-intro.html b/docs/tutorials/kubernetes-basics/expose-intro.html index 8506bf8d9d..524e051c68 100644 --- a/docs/tutorials/kubernetes-basics/expose-intro.html +++ b/docs/tutorials/kubernetes-basics/expose-intro.html @@ -71,7 +71,7 @@A Service provides load balancing of traffic across the contained set of Pods. This is useful when a service is created to group all Pods from a specific Deployment (our application will make use of this in the next module, when we’ll have multiple instances running).
-Services are also responsible for service-discovery within the cluster (covered in Module 6). This will for example allow a frontend service (like a web server) to receive traffic from a backend service (like a database) without worrying about Pods.
+Services are also responsible for service-discovery within the cluster (covered in Accessing the Service). This will for example allow a frontend service (like a web server) to receive traffic from a backend service (like a database) without worrying about Pods.
Services match a set of Pods using Label Selectors, a grouping primitive that allows logical operation on Labels.
@@ -119,7 +119,7 @@Labels can be attached to objects at the creation time or later and can be modified at any time. The kubectl run command sets some default Labels/Label Selectors on the new Pods/ Deployment. The link between Labels and Label Selectors defines the relationship between the Deployment and the Pods it creates.
-Let’s expose now our application with the help of a Service, and apply some new Labels.
+Now let’s expose our application with the help of a Service, and apply some new Labels.
In the previous modules we created a Deployment, and then exposed it publicly via a Service . The Deployment created only one Pod for running our application. When traffic increases, we will need to scale the application to keep up with user demand.
+In the previous modules we created a Deployment, and then exposed it publicly via a Service. The Deployment created only one Pod for running our application. When traffic increases, we will need to scale the application to keep up with user demand.
Scaling is accomplished by changing the number of replicas in a Deployment
diff --git a/docs/tutorials/kubernetes-basics/update-intro.html b/docs/tutorials/kubernetes-basics/update-intro.html index 411bef8d4f..73b8477df7 100644 --- a/docs/tutorials/kubernetes-basics/update-intro.html +++ b/docs/tutorials/kubernetes-basics/update-intro.html @@ -25,10 +25,10 @@Users expect applications to be available all the time and developers are expected to deploy new versions of them several times a day. In Kubernetes this is done with rolling updates. Rolling updates allows Deployments to occur with zero downtime by incrementally updating Pods instances with new ones. The new Pods will be scheduled on Nodes with available resources.
+Users expect applications to be available all the time and developers are expected to deploy new versions of them several times a day. In Kubernetes this is done with rolling updates. Rolling updates allow Deployments' update to take place with zero downtime by incrementally updating Pods instances with new ones. The new Pods will be scheduled on Nodes with available resources.
In the previous module we scaled our application to run multiple instances. This is a requirement for performing updates without affecting application availability. By default, the maximum number of Pods that can be unavailable during the update and the maximum number of new Pods that can be created, is one. Both options can be configured to either numbers or percentages (of Pods). - In Kubernetes, updates are versioned and any Deployment update can be reverted to a previously (stable) version.
+ In Kubernetes, updates are versioned and any Deployment update can be reverted to previous (stable) version.Rolling updates allows Deployments update with zero downtime by incrementally updating Pods instances with new ones.
+Rolling updates allow Deployments' update to take place with zero downtime by incrementally updating Pods instances with new ones.
Brendan Burns, Software Engineer and a founder of Kubernetes at Google, gives a technical overview of Kubernetes in this - 30-minute presentation from CoreOS Fest.
+Sam Ghods, Co-Founder and Services Architect at Box, gives a passionate talk showing that with Kubernetes, we have for first time a universal interface that one can build real deployment tooling against.
Migrating from a homegrown ‘cluster’ to Kubernetes
@@ -181,7 +180,7 @@ title: Production-Grade Container Orchestration