Merge branch 'master' into release-1.8

This commit is contained in:
steveperry-53
2017-08-07 08:56:51 -07:00
30 changed files with 150 additions and 118 deletions
+1 -1
View File
@@ -127,7 +127,7 @@ commands.
In addition to authentication, the tokens can be used to sign a ConfigMap. This In addition to authentication, the tokens can be used to sign a ConfigMap. This
is used early in a cluster bootstrap process before the client trusts the API is used early in a cluster bootstrap process before the client trusts the API
server. The signed ConfigMap can be authenicated by the shared token. server. The signed ConfigMap can be authenticated by the shared token.
The ConfigMap that is signed is `cluster-info` in the `kube-public` namespace. The ConfigMap that is signed is `cluster-info` in the `kube-public` namespace.
The typical flow is that a client reads this ConfigMap while unauthenticated and The typical flow is that a client reads this ConfigMap while unauthenticated and
+1 -1
View File
@@ -185,7 +185,7 @@ For self-registration, the kubelet is started with the following options:
- `--kubeconfig` - Path to credentials to authenticate itself to the apiserver. - `--kubeconfig` - Path to credentials to authenticate itself to the apiserver.
- `--cloud-provider` - How to talk to a cloud provider to read metadata about itself. - `--cloud-provider` - How to talk to a cloud provider to read metadata about itself.
- `--register-node` - Automatically register with the API server. - `--register-node` - Automatically register with the API server.
- `--register-with-taints` - Register the node with the given list of taints (comma seperated `<key>=<value>:<effect>`). No-op if `register-node` is false. - `--register-with-taints` - Register the node with the given list of taints (comma separated `<key>=<value>:<effect>`). No-op if `register-node` is false.
- `--node-ip` IP address of the node. - `--node-ip` IP address of the node.
- `--node-labels` - Labels to add when registering the node in the cluster. - `--node-labels` - Labels to add when registering the node in the cluster.
- `--node-status-update-frequency` - Specifies how often kubelet posts node status to master. - `--node-status-update-frequency` - Specifies how often kubelet posts node status to master.
@@ -293,7 +293,7 @@ Highly Available database statefulset has one master and three replicas, one may
|:--------------------:|:-------------------:|:------------------:|:------------------:| |:--------------------:|:-------------------:|:------------------:|:------------------:|
| *DB-MASTER* | *DB-REPLICA-1* | *DB-REPLICA-2* | *DB-REPLICA-3* | | *DB-MASTER* | *DB-REPLICA-1* | *DB-REPLICA-2* | *DB-REPLICA-3* |
[Here](https://kubernetes.io/docs/tutorials/stateful-application/zookeeper/#tolerating-node-failure) is an example of zookeper statefulset configured with anti-affinity for high availablity. [Here](https://kubernetes.io/docs/tutorials/stateful-application/zookeeper/#tolerating-node-failure) is an example of zookeper statefulset configured with anti-affinity for high availability.
For more information on inter-pod affinity/anti-affinity, see the design doc For more information on inter-pod affinity/anti-affinity, see the design doc
[here](https://git.k8s.io/community/contributors/design-proposals/podaffinity.md). [here](https://git.k8s.io/community/contributors/design-proposals/podaffinity.md).
@@ -21,7 +21,7 @@ To work with Kubernetes objects--whether to create, modify, or delete them--you'
### Object Spec and Status ### Object Spec and Status
Every Kubernetes object includes two nested object fields that govern the object's configuration: the object *spec* and the object *status*. The *spec*, which you must provide, describes your *desired state* for the object--the characteristics that you want the object to have. The *status* describes the *actual state* for the object, and is supplied and updated by the Kubernetes system. At any given time, the Kubernetes Control Plane actively manages an object's actual state to match the desired state you supplied. Every Kubernetes object includes two nested object fields that govern the object's configuration: the object *spec* and the object *status*. The *spec*, which you must provide, describes your *desired state* for the object--the characteristics that you want the object to have. The *status* describes the *actual state* of the object, and is supplied and updated by the Kubernetes system. At any given time, the Kubernetes Control Plane actively manages an object's actual state to match the desired state you supplied.
For example, a Kubernetes Deployment is an object that can represent an application running on your cluster. When you create the Deployment, you might set the Deployment spec to specify that you want three replicas of the application to be running. The Kubernetes system reads the Deployment spec and starts three instances of your desired application--updating the status to match your spec. If any of those instances should fail (a status change), the Kubernetes system responds to the difference between spec and status by making a correction--in this case, starting a replacement instance. For example, a Kubernetes Deployment is an object that can represent an application running on your cluster. When you create the Deployment, you might set the Deployment spec to specify that you want three replicas of the application to be running. The Kubernetes system reads the Deployment spec and starts three instances of your desired application--updating the status to match your spec. If any of those instances should fail (a status change), the Kubernetes system responds to the difference between spec and status by making a correction--in this case, starting a replacement instance.
@@ -40,7 +40,7 @@ These are just examples of commonly used labels; you are free to develop your ow
## Syntax and character set ## Syntax and character set
_Labels_ are key value pairs. Valid label keys have two segments: an optional prefix and name, separated by a slash (`/`). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character (`[a-z0-9A-Z]`) with dashes (`-`), underscores (`_`), dots (`.`), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (`.`), not longer than 253 characters in total, followed by a slash (`/`). _Labels_ are key value pairs. Valid label keys have two segments: an optional prefix and name, separated by a slash (`/`). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character (`[a-z0-9A-Z]`) with dashes (`-`), underscores (`_`), dots (`.`), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (`.`), not longer than 253 characters in total, followed by a slash (`/`).
If the prefix is omitted, the label key is presumed to be private to the user. Automated system components (e.g. `kube-scheduler`, `kube-controller-manager`, `kube-apiserver`, `kubectl`, or other third-party automation) which add labels to end-user objects must specify a prefix. The `kubernetes.io/` prefix is reserved for Kubernetes core components. If the prefix is omitted, the label Key is presumed to be private to the user. Automated system components (e.g. `kube-scheduler`, `kube-controller-manager`, `kube-apiserver`, `kubectl`, or other third-party automation) which add labels to end-user objects must specify a prefix. The `kubernetes.io/` prefix is reserved for Kubernetes core components.
Valid label values must be 63 characters or less and must be empty or begin and end with an alphanumeric character (`[a-z0-9A-Z]`) with dashes (`-`), underscores (`_`), dots (`.`), and alphanumerics between. Valid label values must be 63 characters or less and must be empty or begin and end with an alphanumeric character (`[a-z0-9A-Z]`) with dashes (`-`), underscores (`_`), dots (`.`), and alphanumerics between.
@@ -15,4 +15,4 @@ Names are generally client-provided. Only one object of a given kind can have a
## UIDs ## UIDs
UID are generated by Kubernetes. Every object created over the whole lifetime of a Kubernetes cluster has a distinct UID (i.e., they are spatially and temporally unique). UIDs are generated by Kubernetes. Every object created over the whole lifetime of a Kubernetes cluster has a distinct UID (i.e., they are spatially and temporally unique).
+24 -2
View File
@@ -435,7 +435,24 @@ In a split-horizon DNS environment you would need two services to be able to rou
This can be achieved by adding the following annotations to the service based on cloud provider. This can be achieved by adding the following annotations to the service based on cloud provider.
For AWS: {% capture default_tab %}
Select one of the tabs.
{% endcapture %}
{% capture gcp %}
```yaml
[...]
metadata:
name: my-service
annotations:
cloud.google.com/load-balancer-type: "internal"
[...]
```
For more information, see the [docs](https://cloud.google.com/container-engine/docs/internal-load-balancing).
{% endcapture %}
{% capture aws %}
```yaml ```yaml
[...] [...]
metadata: metadata:
@@ -444,8 +461,9 @@ metadata:
service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0 service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
[...] [...]
``` ```
{% endcapture %}
For Azure: {% capture azure %}
```yaml ```yaml
[...] [...]
metadata: metadata:
@@ -454,7 +472,11 @@ metadata:
service.beta.kubernetes.io/azure-load-balancer-internal: "true" service.beta.kubernetes.io/azure-load-balancer-internal: "true"
[...] [...]
``` ```
{% endcapture %}
{% assign tab_names = 'Default,GCP,AWS,Azure' | split: ',' | compact %}
{% assign tab_contents = site.emptyArray | push: default_tab | push: gcp | push: aws | push: azure %}
{% include tabs.md %}
#### SSL support on AWS #### SSL support on AWS
For partial SSL support on clusters running on AWS, starting with 1.3 two For partial SSL support on clusters running on AWS, starting with 1.3 two
+5 -5
View File
@@ -322,10 +322,10 @@ See the [iSCSI example](https://github.com/kubernetes/kubernetes/tree/{{page.git
### fc (fibre channel) ### fc (fibre channel)
An `fc` volume allows an existing fibre channel volume to be mounted into your pod. An `fc` volume allows an existing fibre channel volume to be mounted in a pod.
You can specify single or multiple target World Wide Names to the parameter You can specify single or multiple target World Wide Names using the parameter
targetWWNs in your volume configuration. If multiple WWNs are specified, `targetWWNs` in your volume configuration. If multiple WWNs are specified,
targetWWNs expects that those WWNs form multipath connection. targetWWNs expect that those WWNs are from multi-path connections.
__Important: You must configure FC SAN Zoning to allocate and mask those __Important: You must configure FC SAN Zoning to allocate and mask those
LUNs (volumes) to the target WWNs beforehand so that Kubernetes hosts LUNs (volumes) to the target WWNs beforehand so that Kubernetes hosts
@@ -693,7 +693,7 @@ spec:
fsType: xfs fsType: xfs
``` ```
For further detail, plese the see the [ScaleIO examples](https://github.com/kubernetes/kubernetes/tree/{{page.githubbranch}}/examples/volumes/scaleio). For further detail, please the see the [ScaleIO examples](https://github.com/kubernetes/kubernetes/tree/{{page.githubbranch}}/examples/volumes/scaleio).
### StorageOS ### StorageOS
A `storageos` volume allows an existing [StorageOS](https://www.storageos.com) volume to be mounted into your pod. A `storageos` volume allows an existing [StorageOS](https://www.storageos.com) volume to be mounted into your pod.
@@ -73,7 +73,7 @@ the [kube-apiserver][kube-apiserver]:
--feature-gates=AdvancedAuditing=true --feature-gates=AdvancedAuditing=true
``` ```
`AdvancedAuditing`is customizeable in two ways. Policy, which determines what's recorded, `AdvancedAuditing`is customizable in two ways. Policy, which determines what's recorded,
and backends, which persist records. Backend implementations include logs files and and backends, which persist records. Backend implementations include logs files and
webhooks. webhooks.
@@ -123,18 +123,28 @@ Kubernetes 1.6 adds support for making use of custom metrics in the Horizontal P
You can add custom metrics for the Horizontal Pod Autoscaler to use in the `autoscaling/v2alpha1` API. You can add custom metrics for the Horizontal Pod Autoscaler to use in the `autoscaling/v2alpha1` API.
Kubernetes then queries the new custom metrics API to fetch the values of the appropriate custom metrics. Kubernetes then queries the new custom metrics API to fetch the values of the appropriate custom metrics.
### Prerequisites ### Requirements
In order to use custom metrics in the Horizontal Pod Autoscaler, you must deploy your cluster with the To use custom metrics with your Horizontal Pod Autoscaler, you must set the necessary configurations when deploying your cluster:
`--horizontal-pod-autoscaler-use-rest-clients` flag on the controller manager set to true. You must then configure
your controller manager to speak to the API server through the API server aggregator, by setting the controller
manager's target API server to the API server aggregator (using the `--apiserver` flag). The resource metrics API and
custom metrics API must also be registered with the API server aggregator, and must be served by API servers running
on the cluster.
You can use Heapster's implementation of the resource metrics API by running Heapster with the`--api-server` flag set * [Enable the API aggregation layer](/docs/tasks/access-kubernetes-api/configure-aggregation-layer/) if you have not already done so.
to true. A separate component must provide the custom metrics API (more information on the custom metrics API is
available at [the k8s.io/metrics repository](https://github.com/kubernetes/metrics)). * Register your resource metrics API and your
custom metrics API with the API aggregation layer. Both of these API servers must be running *on* your cluster.
* *Resource Metrics API*: You can use Heapster's implementation of the resource metrics API, by running Heapster with its `--api-server` flag set to true.
* *Custom Metrics API*: This must be provided by a separate component. To get started with boilerplate code, see the [kubernetes-incubator/custom-metrics-apiserver](https://github.com/kubernetes-incubator/custom-metrics-apiserver) and the [k8s.io/metrics](https://github.com/kubernetes/metrics) repositories.
* Set the appropriate flags for kube-controller-manager:
* `--horizontal-pod-autoscaler-use-rest-clients` should be true.
* `--kubeconfig <path-to-kubeconfig>` OR `--master <ip-address-of-apiserver>`
Note that either the `--master` or `--kubeconfig` flag can be used; `--master` will override `--kubeconfig` if both are specified. These flags specify the location of the API aggregation layer, allowing the controller manager to communicate to the API server.
In Kubernetes 1.7, the standard aggregation layer that Kubernetes provides runs in-process with the kube-apiserver, so the target IP address can be found with `kubectl get pods --selector k8s-app=kube-apiserver --namespace kube-system -o jsonpath='{.items[0].status.podIP}'`.
## Further reading ## Further reading
@@ -110,7 +110,7 @@ external IP address.
NAME ... IP NODE NAME ... IP NODE
hello-world-2895499144-1jaz9 ... 10.0.1.6 gke-cluster-1-default-pool-e0b8d269-1afc hello-world-2895499144-1jaz9 ... 10.0.1.6 gke-cluster-1-default-pool-e0b8d269-1afc
hello-world-2895499144-2e5uh ... 0.0.1.8 gke-cluster-1-default-pool-e0b8d269-1afc hello-world-2895499144-2e5uh ... 10.0.1.8 gke-cluster-1-default-pool-e0b8d269-1afc
hello-world-2895499144-9m4h1 ... 10.0.0.6 gke-cluster-1-default-pool-e0b8d269-5v7a hello-world-2895499144-9m4h1 ... 10.0.0.6 gke-cluster-1-default-pool-e0b8d269-5v7a
hello-world-2895499144-o4z13 ... 10.0.1.7 gke-cluster-1-default-pool-e0b8d269-1afc hello-world-2895499144-o4z13 ... 10.0.1.7 gke-cluster-1-default-pool-e0b8d269-1afc
hello-world-2895499144-segjf ... 10.0.2.5 gke-cluster-1-default-pool-e0b8d269-cpuc hello-world-2895499144-segjf ... 10.0.2.5 gke-cluster-1-default-pool-e0b8d269-cpuc