Merge branch 'master' into release-1.8

This commit is contained in:
steveperry-53
2017-09-22 12:57:53 -07:00
17 changed files with 481 additions and 72 deletions
+3 -1
View File
@@ -147,7 +147,9 @@
/docs/user-guide/connecting-to-applications-proxy /docs/tasks/access-kubernetes-api/http-proxy-access-api 301 /docs/user-guide/connecting-to-applications-proxy /docs/tasks/access-kubernetes-api/http-proxy-access-api 301
/docs/user-guide/container-environment /docs/concepts/containers/container-lifecycle-hooks 301 /docs/user-guide/container-environment /docs/concepts/containers/container-lifecycle-hooks 301
/docs/user-guide/cron-jobs /docs/concepts/workloads/controllers/cron-jobs 301 /docs/user-guide/cron-jobs /docs/concepts/workloads/controllers/cron-jobs 301
/docs/user-guide/debugging-pods-and-replication-controllers /docs/tasks/debug-application-cluster/debug-pod-replication-controller 301
/docs/user-guide/debugging-pods-and-replication-controllers/ /docs/tasks/debug-application-cluster/debug-pod-replication-controller/ 301
/docs/user-guide/debugging-services /docs/tasks/debug-application-cluster/debug-service 301 /docs/user-guide/debugging-services /docs/tasks/debug-application-cluster/debug-service 301
/docs/user-guide/deploying-applications /docs/tasks/run-application/run-stateless-application-deployment 301 /docs/user-guide/deploying-applications /docs/tasks/run-application/run-stateless-application-deployment 301
/docs/user-guide/deployments /docs/concepts/workloads/controllers/deployment 301 /docs/user-guide/deployments /docs/concepts/workloads/controllers/deployment 301
@@ -0,0 +1,36 @@
---
title: 概念模板示例
approvers:
- chenopis
---
{% capture overview %}
**注意:** 注意为新文档 [create an entry in the table of contents](/docs/home/contribute/write-new-topic/#creating-an-entry-in-the-table-of-contents) 。
本页解释了 ...
{% endcapture %}
{% capture body %}
## 了解 ...
Kubernetes 提供 ...
## 使用 ...
使用 ...
{% endcapture %}
{% capture whatsnext %}
**[可选章节]**
* 了解更多 [Writing a New Topic](/docs/home/contribute/write-new-topic/)。
* 查看 [Using Page Templates - Concept template](/docs/home/contribute/page-templates/#concept_template) 了解如何使用本模板。
{% endcapture %}
{% include templates/concept.md %}
+289
View File
@@ -0,0 +1,289 @@
---
approvers:
- bgrant0607
- hw-qiaolei
titlekubectl概述
---
kubectl是用于针对Kubernetes集群运行命令的命令行接口。本概述涵盖`kubectl`语法,描述命令操作,并提供常见的示例。有关每个命令的详细信息,包括所有支持的flags和子命令,请参考[kubectl](/docs/user-guide/kubectl)相关文档。有关安装说明,请参阅[安装kubectl](/docs/tasks/kubectl/install/)。
## 语法
从您的终端窗口使用以下语法运行`kubectl`命令:
```shell
kubectl [command] [TYPE] [NAME] [flags]
```
其中commandTYPENAME,和flags分别是:
* `command`: 指定要在一个或多个资源进行操作,例如`create``get``describe``delete`
* `TYPE`:指定[资源类型](#资源类型)。资源类型区分大小写,您可以指定单数,复数或缩写形式。例如,以下命令产生相同的输出:
$ kubectl get pod pod1
$ kubectl get pods pod1
$ kubectl get po pod1
`NAME`:指定资源的名称。名称区分大小写。如果省略名称,则会显示所有资源的详细信息,比如`$ kubectl get pods`
在多个资源上执行操作时,可以按类型和名称指定每个资源,或指定一个或多个文件:
* 按类型和名称指定资源:
* 要分组资源,如果它们都是相同的类型:`TYPE1 name1 name2 name<#>`.<br/>
例: `$ kubectl get pod example-pod1 example-pod2`
* 要分别指定多种资源类型: `TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE<#>/name<#>`.<br/>
例: `$ kubectl get pod/example-pod1 replicationcontroller/example-rc1`
使用一个或多个文件指定资源: `-f file1 -f file2 -f file<#>` 使用[YAML而不是JSON](/docs/concepts/configuration/overview/#general-config-tips),因为YAML往往更加用户友好,特别是对于配置文件。<br/>
例:$ kubectl get pod -f ./pod.yaml
* flags:指定可选标志。例如,您可以使用`-s``--serverflags`来指定Kubernetes API服务器的地址和端口。
**重要提示**:从命令行指定的标志将覆盖默认值和任何相应的环境变量。
如果您需要帮助,只需从终端窗口运行`kubectl help`
## 操作
下表包括所有kubectl操作的简短描述和一般语法:
Operation | Syntax | Description
-------------------- | -------------------- | --------------------
`annotate` | `kubectl annotate (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags]` | 添加或更新一个或多个资源的注解。
`api-versions` | `kubectl api-versions [flags]` | 列出可用的API版本。
`apply` | `kubectl apply -f FILENAME [flags]`| 对文件或标准输入流更改资源应用配置。
`attach` | `kubectl attach POD -c CONTAINER [-i] [-t] [flags]` | attach 到正在运行的容器来查看输出流或与容器(stdin)进行交互。
`autoscale` | `kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags]` | 自动弹性伸缩一组被replication controller管理的pods。
`cluster-info` | `kubectl cluster-info [flags]` | 显示有关集群中master节点和服务的端点信息。
`config` | `kubectl config SUBCOMMAND [flags]` | 修改kubeconfig文件。有关详细信息,请参阅各个子命令。
`create` | `kubectl create -f FILENAME [flags]` | 从文件或stdin创建一个或多个资源。
`delete` | `kubectl delete (-f FILENAME | TYPE [NAME | /NAME | -l label | --all]) [flags]` | 从文件,stdin或指定selector,名称,资源选择器或资源中删除资源。
`describe` | `kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flags]` | 显示一个或多个资源的详细状态。
`edit` | `kubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flags]` | 使用默认编辑器编辑和更新服务器上一个或多个资源的定义。
`exec` | `kubectl exec POD [-c CONTAINER] [-i] [-t] [flags] [-- COMMAND [args...]]` | 对pod中的容器执行命令
`explain` | `kubectl explain [--include-extended-apis=true] [--recursive=false] [flags]` | 获取各种资源的文档。例如 pods, nodes, services 等.
`expose` | `kubectl expose (-f FILENAME | TYPE NAME | TYPE/NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [----external-ip=external-ip-of-service] [--type=type] [flags]` | 将暴露replication controller, service, 或者pod为新的Kubernetes服务。
`get` | `kubectl get (-f FILENAME | TYPE [NAME | /NAME | -l label]) [--watch] [--sort-by=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags]` | 列出一个或多个资源。
`label` | `kubectl label (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags]` | 添加或更新一个或多个资源的标签
`logs` | `kubectl logs POD [-c CONTAINER] [--follow] [flags]` | 在pod的容器中打印日志。
`patch` | `kubectl patch (-f FILENAME | TYPE NAME | TYPE/NAME) --patch PATCH [flags]` | 使用strategic merge patch程序更新资源的一个或多个字段。
`port-forward` | `kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N] [flags]` | 将一个或多个本地端口转发到pod。
`proxy` | `kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix] [flags]` | 运行一个代理到Kubernetes API服务器。
`replace` | `kubectl replace -f FILENAME` | 从文件或stdin替换资源。
`rolling-update` | `kubectl rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] --image=NEW_CONTAINER_IMAGE | -f NEW_CONTROLLER_SPEC) [flags]` | 通过逐步替换指定的replication controller及其pod来执行滚动更新。
`run` | `kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [flags]` | 在集群上运行指定的镜像。
`scale` | `kubectl scale (-f FILENAME | TYPE NAME | TYPE/NAME) --replicas=COUNT [--resource-version=version] [--current-replicas=count] [flags]` | 更新指定replication controller的副本数量。
`stop` | `kubectl stop` | 已弃用: 相应的, 请查看 `kubectl delete`.
`version` | `kubectl version [--client] [flags]` | 显示在客户端和服务器上运行的Kubernetes版本。
请记住:有关命令操作的更多信息,请参阅[kubectl](/docs/user-guide/kubectl)参考文档。
## 资源类型
下表包括所有支持的资源类型及其缩写别名的列表:
资源类型 | 缩写别名
-------------------- | --------------------
`apiservices` |
`certificatesigningrequests` |`csr`
`clusters` |
`clusterrolebindings` |
`clusterroles` |
`componentstatuses` |`cs`
`configmaps` |`cm`
`controllerrevisions` |
`cronjobs` |
`customresourcedefinition` |`crd`
`daemonsets` |`ds`
`deployments` |`deploy`
`endpoints` |`ep`
`events` |`ev`
`horizontalpodautoscalers` |`hpa`
`ingresses` |`ing`
`jobs` |
`limitranges` |`limits`
`namespaces` |`ns`
`networkpolicies` |`netpol`
`nodes` |`no`
`persistentvolumeclaims` |`pvc`
`persistentvolumes` |`pv`
`poddisruptionbudget` |`pdb`
`podpreset` |
`pods` |`po`
`podsecuritypolicies` |`psp`
`podtemplates` |
`replicasets` |`rs`
`replicationcontrollers` |`rc`
`resourcequotas` |`quota`
`rolebindings` |
`roles` |
`secrets` |
`serviceaccounts` |`sa`
`services` |`svc`
`statefulsets` |
`storageclasses` |
## 输出选项
请使用以下部分查看如何格式化或排序某些命令的输出的信息,有关哪些命令支持各种输出选项的详细信息,请参阅[kubectl](/docs/user-guide/kubectl)参考文档。
### 格式化输出
所有kubectl命令的默认输出格式是可读的纯文本格式。要以特定格式将详细信息输出到终端窗口,您可以将一个`-o`或多个`-output`标志添加到支持的`kubectl`命令中。
#### 语法
```shell
kubectl [command] [TYPE] [NAME] -o=<output_format>
```
根据kubectl操作,支持以下输出格式:
输出格式 | 描述
--------------| -----------
`-o=custom-columns=<spec>` | 输入使用逗号分隔的列表打印表格 [custom columns](#custom-columns)。
`-o=custom-columns-file=<filename>` | 使用文件中的[自定义列模板](#custom-columns)打印表`<filename>`
`-o=json` | 输出JSON格式的API对象。
`-o=jsonpath=<template>` | 打印在[jsonpath](/docs/user-guide/jsonpath)表达式中定义的字段
`-o=jsonpath-file=<filename>` | 打印由文件中的[jsonpath](/docs/user-guide/jsonpath)表达式定义的字段`<filename>`
`-o=name` | 仅打印资源名称,没有其他的。
`-o=wide` | 以纯文本格式输出任何附加信息。对于pod,包括节点名称。
`-o=yaml` | 输出YAML格式的API对象。
例子
在此示例中,以下命令将单个pod的详细信息作为YAML格式化对象输出:
`$ kubectl get pod web-pod-13je7 -o=yaml`
记住:有关每个命令支持哪种输出格式的详细信息,请参阅kubectl参考文档。
自定义列
要定义自定义列并仅将所需的详细信息输出到表中,可以使用该custom-columns选项。您可以选择内联定义自定义列或使用模板文件:`-o=custom-columns=<spec>``-o=custom-columns-file=<filename>`
##### 例子
一致:
```shell
$ kubectl get pods <pod-name> -o=custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion
```
模版文件:
```shell
$ kubectl get pods <pod-name> -o=custom-columns-file=template.txt
```
`template.txt`文件包含:
```
NAME RSRC
metadata.name metadata.resourceVersion
```
运行任一命令的结果是:
```shell
NAME RSRC
submit-queue 610995
```
### 排序列表对象
要将对象输出到终端窗口中的排序列表,可以将该`--sort-by`标志添加到支持的`kubectl`命令中。通过使用`--sort-by`标志指定任何数字或字符串字段来对对象进行排序。要指定一个字段,请使用[jsonpath](/docs/user-guide/jsonpath)表达式。
#### 语法
```shell
kubectl [command] [TYPE] [NAME] --sort-by=<jsonpath_exp>
```
##### 例子
打印按名称排序的列表,请运行:
`$ kubectl get pods --sort-by=.metadata.name`
## 示例:常用操作
使用以下一组示例来帮助您熟悉运行常用kubectl操作:
```shell
// 使用在example-service.yaml中的定义创建一个service.
$ kubectl create -f example-service.yaml
// 使用在example-controller.yaml中的定义创建一个replication controller.
$ kubectl create -f example-controller.yaml
// 使用在<directory>目录下的any .yaml, .yml, or .json文件创建对象.
$ kubectl create -f <directory>
```
`kubectl get` - 列出一个或更多资源.
```shell
// 使用文本格式列出所有的pods.
$ kubectl get pods
// 使用文本格式列出所有的信息,包含一些额外的信息(比如节点名称).
$ kubectl get pods -o wide
// 使用文本格式列出指定名称的replicationcontroller. 注: 你可以缩短 'replicationcontroller' 资源类型使用别名 'rc'.
$ kubectl get replicationcontroller <rc-name>
// 使用文本格式列出所有的rc,services.
$ kubectl get rc,services
```
```
`kubectl describe` - 显示一个或多个资源的详情状态.
```shell
// 显示指定节点名称的详情信息.
$ kubectl describe nodes <node-name>
// 显示指定pods名称的详情信息.
$ kubectl describe pods/<pod-name>
// 显示所有被名称为<rc-name>的replication controller管理的所有pods的详情信息.
// 请记住: 任何被replication controller的pod的名称前缀为replication controller的名称.
$ kubectl describe pods <rc-name>
```
`kubectl delete` - 从文件, stdin,或者指定的label selectors, 名称,资源选择器, 或者资源去删除资源.
```shell
// 通过 pod.yaml 文件中的资源类型和名称删除一个pod.
$ kubectl delete -f pod.yaml
// 删除所有label名称为name=<label-name>的pods和services.
$ kubectl delete pods,services -l name=<label-name>
// 删除所有pods.
$ kubectl delete pods --all
```
`kubectl exec` - 针对pod中的某个容器执行命令.
```shell
// 在名称为<pod-name>的pod允许 'date' 命令获得输出. 默认返回的是pod中第一个容器的终端.
$ kubectl exec <pod-name> date
// 在<pod-name>的pod中的<container-name>容器中运行'date'获取输出.
$ kubectl exec <pod-name> -c <container-name> date
// 从名称为<pod-name>的pod获取一个交互的终端和运行/bin/bash. 默认返回的是pod中第一个容器的终端.
$ kubectl exec -ti <pod-name> /bin/bash
```
`kubectl logs` - 输出一个pod的容器日志.
```shell
// 从名称为<pod-name>的pod返回日志快照.
$ kubectl logs <pod-name>
// 从名称为<pod-name>的pod中获取日志流. 这个和Linux命令'tail -f'相似.
$ kubectl logs -f <pod-name>
```
## 下一步
开始使用[kubectl](/docs/user-guide/kubectl)命令。
-1
View File
@@ -205,7 +205,6 @@ register itself with the API server. This is the preferred pattern, used by mos
For self-registration, the kubelet is started with the following options: For self-registration, the kubelet is started with the following options:
- `--api-servers` - Location of the apiservers.
- `--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.
+1 -1
View File
@@ -442,7 +442,7 @@ that are considered invalid environment variable names will have those keys
skipped. The pod will be allowed to start. There will be an event whose skipped. The pod will be allowed to start. There will be an event whose
reason is `InvalidVariableNames` and the message will contain the list of reason is `InvalidVariableNames` and the message will contain the list of
invalid keys that were skipped. The example shows a pod which refers to the 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. default/mysecret that contains 2 invalid keys, 1badkey and 2alsobad.
```shell ```shell
$ kubectl get events $ kubectl get events
+123 -24
View File
@@ -70,41 +70,124 @@ API version at least as stable is released.**
GA API versions can replace GA API versions as well as beta and alpha API GA API versions can replace GA API versions as well as beta and alpha API
versions. Beta API versions *may not* replace GA API versions. versions. Beta API versions *may not* replace GA API versions.
**Rule #4: Other than the most recent API versions in each track, older API **Rule #4a: Other than the most recent API versions in each track, older API
versions must be supported after their announced deprecation for a duration of versions must be supported after their announced deprecation for a duration of
no less than:** no less than:**
* **GA: 1 year or 2 releases (whichever is longer)** * **GA: 1 year or 2 releases (whichever is longer)**
* **Beta: 3 months or 1 release (whichever is longer)** * **Beta: 6 months or 2 releases (whichever is longer)**
* **Alpha: 0 releases** * **Alpha: 0 releases**
This is best illustrated by example. Imagine a Kubernetes release, version X, NOTE: Until [#52185](https://github.com/kubernetes/kubernetes/issues/52185) is
which supports a particular API group. A new Kubernetes release is made every resolved, no API versions may be removed.
approximately 3 months (4 per year). The following table describes which API
versions are supported in a series of subsequent releases. **Rule #4b: The "preferred" API version and the "storage version" for a given
group may not advance util after a release has been made that supports both the
new version and the previous version**
Users must be able to upgrade to a new release of Kubernetes and then roll back
to a previous release, without converting anything to the new API version or
suffering breakages (unless they explicitly used features only available in the
newer version). This is particularly evident in the stored representation of
objects.
All of this is best illustrated by examples. Imagine a Kubernetes release,
version X, which introduces a new API group. A new Kubernetes release is made
every approximately 3 months (4 per year). The following table describes which
API versions are supported in a series of subsequent releases.
<table> <table>
<thead> <thead>
<tr> <tr>
<th>Release</th> <th>Release</th>
<th>API Versions</th> <th>API Versions</th>
<th>Preferred/Storage Version</th>
<th>Notes</th> <th>Notes</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<td>X</td> <td>X</td>
<td>v1</td> <td>v1alpha1</td>
<td>v1alpha1</td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr>
<td>X+1</td> <td>X+1</td>
<td>v1, v2alpha1</td> <td>v1alpha2</td>
<td></td> <td>v1alpha2</td>
<td>
<ul>
<li>v1alpha1 is removed, "action required" relnote</li>
</ul>
</td>
</tr> </tr>
<tr> <tr>
<td>X+2</td> <td>X+2</td>
<td>v1, v2alpha2</td> <td>v1beta1</td>
<td>v1beta1</td>
<td>
<ul>
<li>v1alpha2 is removed, "action required" relnote</li>
</ul>
</td>
</tr>
<tr>
<td>X+3</td>
<td>v1beta2, v1beta1 (deprecated)</td>
<td>v1beta1</td>
<td>
<ul>
<li>v1beta1 is deprecated, "action required" relnote</li>
</ul>
</td>
</tr>
<tr>
<td>X+4</td>
<td>v1beta2, v1beta1 (deprecated)</td>
<td>v1beta2</td>
<td></td>
</tr>
<tr>
<td>X+5</td>
<td>v1, v1beta2 (deprecated)</td>
<td>v1beta2</td>
<td>
<ul>
<li>v1beta1 is removed, "action required" relnote</li>
<li>v1beta2 is deprecated, "action required" relnote</li>
</ul>
</td>
</tr>
<tr>
<td>X+6</td>
<td>v1, v1beta2 (deprecated)</td>
<td>v1</td>
<td>
<ul>
</ul>
</td>
</tr>
<tr>
<td>X+7</td>
<td>v1</td>
<td>v1</td>
<td>
<ul>
<li>v1beta2 is removed, "action required" relnote</li>
</ul>
</td>
</tr>
<tr>
<td>X+8</td>
<td>v2alpha1, v1</td>
<td>v1</td>
<td></td>
</tr>
<tr>
<td>X+9</td>
<td>v2alpha2, v1</td>
<td>v1</td>
<td> <td>
<ul> <ul>
<li>v2alpha1 is removed, "action required" relnote</li> <li>v2alpha1 is removed, "action required" relnote</li>
@@ -112,8 +195,9 @@ versions are supported in a series of subsequent releases.
</td> </td>
</tr> </tr>
<tr> <tr>
<td>X+3</td> <td>X+10</td>
<td>v1, v2beta1</td> <td>v2beta1, v1</td>
<td>v1</td>
<td> <td>
<ul> <ul>
<li>v2alpha2 is removed, "action required" relnote</li> <li>v2alpha2 is removed, "action required" relnote</li>
@@ -121,8 +205,9 @@ versions are supported in a series of subsequent releases.
</td> </td>
</tr> </tr>
<tr> <tr>
<td>X+4</td> <td>X+11</td>
<td>v1, v2beta1, v2beta2</td> <td>v2beta2, v2beta1 (deprecated), v1</td>
<td>v1</td>
<td> <td>
<ul> <ul>
<li>v2beta1 is deprecated, "action required" relnote</li> <li>v2beta1 is deprecated, "action required" relnote</li>
@@ -130,19 +215,30 @@ versions are supported in a series of subsequent releases.
</td> </td>
</tr> </tr>
<tr> <tr>
<td>X+5</td> <td>X+12</td>
<td>v1, v2, v2beta2</td> <td>v2, v2beta2 (deprecated), v2beta1 (deprecated), v1 (deprecated)</td>
<td>v1</td>
<td> <td>
<ul> <ul>
<li>v2beta1 is removed, "action required" relnote</li>
<li>v2beta2 is deprecated, "action required" relnote</li> <li>v2beta2 is deprecated, "action required" relnote</li>
<li>v1 is deprecated, "action required" relnote</li> <li>v1 is deprecated, "action required" relnote</li>
</ul> </ul>
</td> </td>
</tr> </tr>
<tr> <tr>
<td>X+6</td> <td>X+13</td>
<td>v1, v2</td> <td>v2, v2beta2 (deprecated), v1 (deprecated)</td>
<td>v2</td>
<td>
<ul>
<li>v2beta1 is removed, "action required" relnote</li>
</ul>
</td>
</tr>
<tr>
<td>X+14</td>
<td>v2, v1 (deprecated)</td>
<td>v2</td>
<td> <td>
<ul> <ul>
<li>v2beta2 is removed, "action required" relnote</li> <li>v2beta2 is removed, "action required" relnote</li>
@@ -150,17 +246,20 @@ versions are supported in a series of subsequent releases.
</td> </td>
</tr> </tr>
<tr> <tr>
<td>X+7</td> <td>X+15</td>
<td>v1, v2</td> <td>v2, v1 (deprecated)</td>
<td>v2</td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr>
<td>X+8</td> <td>X+16</td>
<td>v1, v2</td> <td>v2, v1 (deprecated)</td>
<td>v2</td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr>
<td>X+9</td> <td>X+17</td>
<td>v2</td>
<td>v2</td> <td>v2</td>
<td> <td>
<ul> <ul>
@@ -246,6 +246,16 @@ As mentioned above, you use the `kubectl cluster-info` command to retrieve the s
If you haven't specified a name for your port, you don't have to specify *port_name* in the URL. If you haven't specified a name for your port, you don't have to specify *port_name* in the URL.
By default, the API server proxies to your service using http. To use https, prefix the service name with `https:`:
`http://`*`kubernetes_master_address`*`/api/v1/namespaces/`*`namespace_name`*`/services/`*`https:service_name:[port_name]`*`/proxy`
The supported formats for the name segment of the URL are:
* `<service_name>` - proxies to the default or unnamed port using http
* `<service_name>:<port_name>` - proxies to the specified port using http
* `https:<service_name>:` - proxies to the default or unnamed port using https (note the trailing colon)
* `https:<service_name>:<port_name>` - proxies to the specified port using https
##### Examples ##### Examples
* To access the Elasticsearch service endpoint `_search?q=user:kimchy`, you would use: `http://104.197.5.247/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy/_search?q=user:kimchy` * To access the Elasticsearch service endpoint `_search?q=user:kimchy`, you would use: `http://104.197.5.247/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy/_search?q=user:kimchy`
@@ -14,6 +14,8 @@ This page shows how to enable and configure encryption of secret data at rest.
* Kubernetes version 1.7.0 or later is required * Kubernetes version 1.7.0 or later is required
* etcd v3 or later is required
* Encryption at rest is alpha in 1.7.0 which means it may change without notice. Users may be required to decrypt their data prior to upgrading to 1.8.0. * Encryption at rest is alpha in 1.7.0 which means it may change without notice. Users may be required to decrypt their data prior to upgrading to 1.8.0.
{% endcapture %} {% endcapture %}
@@ -154,5 +154,4 @@ To make such deployment secure, communication between etcd instances is authoriz
## Additional reading ## Additional reading
[Automated HA master deployment - design doc](https://git.k8s.io/community/contributors/design-proposals/ha_master.md) [Automated HA master deployment - design doc](https://git.k8s.io/community/contributors/design-proposals/cluster-lifecycle/ha_master.md)
@@ -123,7 +123,7 @@ kubectl delete pod constraints-mem-demo --namespace=constraints-mem-example
## Attempt to create a Pod that exceeds the maximum memory constraint ## Attempt to create a Pod that exceeds the maximum memory constraint
Here's the configuration file for a Pod that has one Container. The Container specifies a Here's the configuration file for a Pod that has one Container. The Container specifies a
memory request of 700 MiB and a memory limit of 1.5 GiB. memory request of 800 MiB and a memory limit of 1.5 GiB.
{% include code.html language="yaml" file="memory-constraints-pod-2.yaml" ghlink="/docs/tasks/administer-cluster/memory-constraints-pod-2.yaml" %} {% include code.html language="yaml" file="memory-constraints-pod-2.yaml" ghlink="/docs/tasks/administer-cluster/memory-constraints-pod-2.yaml" %}
+1 -1
View File
@@ -63,7 +63,7 @@ to define *Hard* resource usage limits that a *Namespace* may consume.
A limit range defines min/max constraints on the amount of resources a single entity can consume in A limit range defines min/max constraints on the amount of resources a single entity can consume in
a *Namespace*. a *Namespace*.
See [Admission control: Limit Range](https://git.k8s.io/community/contributors/design-proposals/admission_control_limit_range.md) See [Admission control: Limit Range](https://git.k8s.io/community/contributors/design-proposals/resource-management/admission_control_limit_range.md)
A namespace can be in one of two phases: A namespace can be in one of two phases:
@@ -18,7 +18,6 @@ This task shows you how to debug a StatefulSet.
{% capture prerequisites %} {% capture prerequisites %}
* You need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. * You need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster.
* You should have a StatefulSet running that you want to investigate. * You should have a StatefulSet running that you want to investigate.
@@ -22,14 +22,14 @@ following Kubernetes concepts.
* [Pods](/docs/user-guide/pods/single-container/) * [Pods](/docs/user-guide/pods/single-container/)
* [Cluster DNS](/docs/concepts/services-networking/dns-pod-service/) * [Cluster DNS](/docs/concepts/services-networking/dns-pod-service/)
* [Headless Services](/docs/concepts/services-networking/service/#headless-services) * [Headless Services](/docs/concepts/services-networking/service/#headless-services)
* [PersistentVolumes](/docs/concepts/storage/volumes/) * [PersistentVolumes](/docs/concepts/storage/persistent-volumes/)
* [PersistentVolume Provisioning](https://github.com/kubernetes/examples/tree/{{page.githubbranch}}/staging/persistent-volume-provisioning/) * [PersistentVolume Provisioning](https://github.com/kubernetes/examples/tree/{{page.githubbranch}}/staging/persistent-volume-provisioning/)
* [StatefulSets](/docs/concepts/abstractions/controllers/statefulsets/) * [StatefulSets](/docs/concepts/abstractions/controllers/statefulsets/)
* [kubectl CLI](/docs/user-guide/kubectl) * [kubectl CLI](/docs/user-guide/kubectl)
This tutorial assumes that your cluster is configured to dynamically provision This tutorial assumes that your cluster is configured to dynamically provision
PersistentVolumes. If your cluster is not configured to do so, you PersistentVolumes. If your cluster is not configured to do so, you
will have to manually provision five 1 GiB volumes prior to starting this will have to manually provision two 1 GiB volumes prior to starting this
tutorial. tutorial.
{% endcapture %} {% endcapture %}
@@ -37,7 +37,7 @@ tutorial.
StatefulSets are intended to be used with stateful applications and distributed StatefulSets are intended to be used with stateful applications and distributed
systems. However, the administration of stateful applications and systems. However, the administration of stateful applications and
distributed systems on Kubernetes is a broad, complex topic. In order to distributed systems on Kubernetes is a broad, complex topic. In order to
demonstrate the basic features of a StatefulSet, and to not conflate the former demonstrate the basic features of a StatefulSet, and not to conflate the former
topic with the latter, you will deploy a simple web application using a StatefulSet. topic with the latter, you will deploy a simple web application using a StatefulSet.
After this tutorial, you will be familiar with the following. After this tutorial, you will be familiar with the following.
@@ -262,8 +262,7 @@ www-web-0 Bound pvc-15c268c7-b507-11e6-932f-42010a800002 1Gi RWO
www-web-1 Bound pvc-15c79307-b507-11e6-932f-42010a800002 1Gi RWO 48s www-web-1 Bound pvc-15c79307-b507-11e6-932f-42010a800002 1Gi RWO 48s
``` ```
The StatefulSet controller created two PersistentVolumeClaims that are The StatefulSet controller created two PersistentVolumeClaims that are
bound to two [PersistentVolumes](/docs/concepts/storage/volumes/). As the bound to two [PersistentVolumes](/docs/concepts/storage/persistent-volumes/). As the cluster used in this tutorial is configured to dynamically provision
cluster used in this tutorial is configured to dynamically provision
PersistentVolumes, the PersistentVolumes were created and bound automatically. PersistentVolumes, the PersistentVolumes were created and bound automatically.
The NGINX webservers, by default, will serve an index file at The NGINX webservers, by default, will serve an index file at
@@ -330,7 +329,7 @@ web-1
Even though `web-0` and `web-1` were rescheduled, they continue to serve their Even though `web-0` and `web-1` were rescheduled, they continue to serve their
hostnames because the PersistentVolumes associated with their hostnames because the PersistentVolumes associated with their
PersistentVolumeClaims are remounted to their `volumeMount`s. No matter what PersistentVolumeClaims are remounted to their `volumeMounts`. No matter what
node `web-0`and `web-1` are scheduled on, their PersistentVolumes will be node `web-0`and `web-1` are scheduled on, their PersistentVolumes will be
mounted to the appropriate mount points. mounted to the appropriate mount points.
@@ -338,8 +337,7 @@ mounted to the appropriate mount points.
Scaling a StatefulSet refers to increasing or decreasing the number of replicas. Scaling a StatefulSet refers to increasing or decreasing the number of replicas.
This is accomplished by updating the `replicas` field. You can use either This is accomplished by updating the `replicas` field. You can use either
[`kubectl scale`](/docs/user-guide/kubectl/{{page.version}}/#scale) or [`kubectl scale`](/docs/user-guide/kubectl/{{page.version}}/#scale) or
[`kubectl patch`](/docs/user-guide/kubectl/{{page.version}}/#patch) to scale a Stateful [`kubectl patch`](/docs/user-guide/kubectl/{{page.version}}/#patch) to scale a StatefulSet.
Set.
### Scaling Up ### Scaling Up
@@ -440,10 +438,7 @@ www-web-4 Bound pvc-e11bb5f8-b508-11e6-932f-42010a800002 1Gi RWO
``` ```
There are still five PersistentVolumeClaims and five PersistentVolumes. There are still five PersistentVolumeClaims and five PersistentVolumes.
When exploring a Pod's [stable storage](#stable-storage), we saw that the When exploring a Pod's [stable storage](#writing-to-stable-storage), we saw that the PersistentVolumes mounted to the Pods of a StatefulSet are not deleted whenthe StatefulSet's Pods are deleted. This is still true when Pod deletion is caused by scaling the StatefulSet down.
PersistentVolumes mounted to the Pods of a StatefulSet are not deleted when
the StatefulSet's Pods are deleted. This is still true when Pod deletion is
caused by scaling the StatefulSet down.
## Updating StatefulSets ## Updating StatefulSets
@@ -721,8 +716,7 @@ automatically update Pods when a modification is made to the StatefulSet's
## Deleting StatefulSets ## Deleting StatefulSets
StatefulSet supports both Non-Cascading and Cascading deletion. In a StatefulSet supports both Non-Cascading and Cascading deletion. In a
Non-Cascading Delete, the StatefulSet's Pods are not deleted when the Stateful Non-Cascading Delete, the StatefulSet's Pods are not deleted when the StatefulSet is deleted. In a Cascading Delete, both the StatefulSet and its Pods are
Set is deleted. In a Cascading Delete, both the StatefulSet and its Pods are
deleted. deleted.
### Non-Cascading Delete ### Non-Cascading Delete
@@ -866,7 +860,7 @@ web-1 0/1 Terminating 0 29m
``` ```
As you saw in the [Scaling Down](#ordered-pod-termination) section, the Pods As you saw in the [Scaling Down](#scaling-down) section, the Pods
are terminated one at a time, with respect to the reverse order of their ordinal are terminated one at a time, with respect to the reverse order of their ordinal
indices. Before terminating a Pod, the StatefulSet controller waits for indices. Before terminating a Pod, the StatefulSet controller waits for
the Pod's successor to be completely terminated. the Pod's successor to be completely terminated.
@@ -1,2 +0,0 @@
approvers:
- pweil-
@@ -1,18 +0,0 @@
apiVersion: extensions/v1beta1
kind: PodSecurityPolicy
metadata:
name: permissive
spec:
seLinux:
rule: RunAsAny
supplementalGroups:
rule: RunAsAny
runAsUser:
rule: RunAsAny
fsGroup:
rule: RunAsAny
hostPorts:
- min: 8000
max: 8080
volumes:
- '*'
+1 -1
View File
@@ -234,7 +234,7 @@ func TestExampleObjectSchemas(t *testing.T) {
"kitten-rc": {&api.ReplicationController{}}, "kitten-rc": {&api.ReplicationController{}},
"nautilus-rc": {&api.ReplicationController{}}, "nautilus-rc": {&api.ReplicationController{}},
}, },
"../docs/user-guide/pod-security-policy": { "../docs/concepts/policy": {
"psp": {&extensions.PodSecurityPolicy{}}, "psp": {&extensions.PodSecurityPolicy{}},
}, },
"../docs/user-guide/persistent-volumes/volumes": { "../docs/user-guide/persistent-volumes/volumes": {