Add admonition type to shortcode (#9482)
* Change existing admon blocks * Fix includes issue
This commit is contained in:
committed by
k8s-ci-robot
parent
e839031292
commit
d65e1790ff
+3
-1
@@ -105,7 +105,9 @@ $ gsutil mb gs://my-spark-models
|
|||||||
```
|
```
|
||||||
You’ll need to change this URI to something that is unique for you. This will create a bucket that you can use in the example above.
|
You’ll need to change this URI to something that is unique for you. This will create a bucket that you can use in the example above.
|
||||||
|
|
||||||
**Note** : Computing the model and saving it is much slower than computing the model and throwing it away. This is expected. However, if you plan to reuse a model, it’s faster to compute the model and save it and then restore it each time you want to use it, rather than throw away and recompute the model each time.
|
{{< note >}}
|
||||||
|
Computing the model and saving it is much slower than computing the model and throwing it away. This is expected. However, if you plan to reuse a model, it’s faster to compute the model and save it and then restore it each time you want to use it, rather than throw away and recompute the model each time.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
### Using Horizontal Pod Autoscaling with Spark (Optional)
|
### Using Horizontal Pod Autoscaling with Spark (Optional)
|
||||||
Spark is somewhat elastic to workers coming and going, which means we have an opportunity: we can use use [Kubernetes Horizontal Pod Autoscaling](http://kubernetes.io/docs/user-guide/horizontal-pod-autoscaling/) to scale-out the Spark worker pool automatically, setting a target CPU threshold for the workers and a minimum/maximum pool size. This obviates the need for having to configure the number of worker replicas manually.
|
Spark is somewhat elastic to workers coming and going, which means we have an opportunity: we can use use [Kubernetes Horizontal Pod Autoscaling](http://kubernetes.io/docs/user-guide/horizontal-pod-autoscaling/) to scale-out the Spark worker pool automatically, setting a target CPU threshold for the workers and a minimum/maximum pool size. This obviates the need for having to configure the number of worker replicas manually.
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ You can submit a blog post for consideration one of two ways:
|
|||||||
If you have a post that you want to remain confidential until your publish date, please submit your post via the Google form. Otherwise, you can choose your submission process based on your comfort level and preferred workflow.
|
If you have a post that you want to remain confidential until your publish date, please submit your post via the Google form. Otherwise, you can choose your submission process based on your comfort level and preferred workflow.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Our workflow hasn't changed for confidential advance drafts. Additionally, we'll coordinate publishing for time sensitive posts to ensure that information isn't released prematurely through an open pull request.
|
Our workflow hasn't changed for confidential advance drafts. Additionally, we'll coordinate publishing for time sensitive posts to ensure that information isn't released prematurely through an open pull request.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
### Call for reviewers
|
### Call for reviewers
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ In version 1.9, the CCM runs the following controllers from the preceding list:
|
|||||||
Additionally, it runs another controller called the PersistentVolumeLabels controller. This controller is responsible for setting the zone and region labels on PersistentVolumes created in GCP and AWS clouds.
|
Additionally, it runs another controller called the PersistentVolumeLabels controller. This controller is responsible for setting the zone and region labels on PersistentVolumes created in GCP and AWS clouds.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Volume controller was deliberately chosen to not be a part of CCM. Due to the complexity involved and due to the existing efforts to abstract away vendor specific volume logic, it was decided that volume controller will not be moved to CCM.
|
Volume controller was deliberately chosen to not be a part of CCM. Due to the complexity involved and due to the existing efforts to abstract away vendor specific volume logic, it was decided that volume controller will not be moved to CCM.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
The original plan to support volumes using CCM was to use Flex volumes to support pluggable volumes. However, a competing effort known as CSI is being planned to replace Flex.
|
The original plan to support volumes using CCM was to use Flex volumes to support pluggable volumes. However, a competing effort known as CSI is being planned to replace Flex.
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ A Pod that does not have any tolerations gets scheduled according to the old mod
|
|||||||
tolerates the taints of a particular Node can be scheduled on that Node.
|
tolerates the taints of a particular Node can be scheduled on that Node.
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Caution:** Enabling this feature creates a small delay between the
|
Enabling this feature creates a small delay between the
|
||||||
time when a condition is observed and when a taint is created. This delay is usually less than one second, but it can increase the number of Pods that are successfully scheduled but rejected by the kubelet.
|
time when a condition is observed and when a taint is created. This delay is usually less than one second, but it can increase the number of Pods that are successfully scheduled but rejected by the kubelet.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
@@ -128,7 +128,7 @@ services are running -- it is eligible to run a pod. Otherwise, it is
|
|||||||
ignored for any cluster activity until it becomes valid.
|
ignored for any cluster activity until it becomes valid.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Kubernetes keeps the object for the invalid node and keeps checking to see whether it becomes valid.
|
Kubernetes keeps the object for the invalid node and keeps checking to see whether it becomes valid.
|
||||||
You must explicitly delete the Node object to stop this process.
|
You must explicitly delete the Node object to stop this process.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
@@ -241,7 +241,7 @@ kubectl cordon $NODENAME
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Pods created by a DaemonSet controller bypass the Kubernetes scheduler
|
Pods created by a DaemonSet controller bypass the Kubernetes scheduler
|
||||||
and do not respect the unschedulable attribute on a node. This assumes that daemons belong on
|
and do not respect the unschedulable attribute on a node. This assumes that daemons belong on
|
||||||
the machine even if it is being drained of applications while it prepares for a reboot.
|
the machine even if it is being drained of applications while it prepares for a reboot.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|||||||
@@ -57,7 +57,9 @@ You can use `kubectl logs` to retrieve logs from a previous instantiation of a c
|
|||||||
|
|
||||||
Everything a containerized application writes to `stdout` and `stderr` is handled and redirected somewhere by a container engine. For example, the Docker container engine redirects those two streams to [a logging driver](https://docs.docker.com/engine/admin/logging/overview), which is configured in Kubernetes to write to a file in json format.
|
Everything a containerized application writes to `stdout` and `stderr` is handled and redirected somewhere by a container engine. For example, the Docker container engine redirects those two streams to [a logging driver](https://docs.docker.com/engine/admin/logging/overview), which is configured in Kubernetes to write to a file in json format.
|
||||||
|
|
||||||
**Note:** The Docker json logging driver treats each line as a separate message. When using the Docker logging driver, there is no direct support for multi-line messages. You need to handle multi-line messages at the logging agent level or higher.
|
{{< note >}}
|
||||||
|
The Docker json logging driver treats each line as a separate message. When using the Docker logging driver, there is no direct support for multi-line messages. You need to handle multi-line messages at the logging agent level or higher.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
By default, if a container restarts, the kubelet keeps one terminated container with its logs. If a pod is evicted from the node, all corresponding containers are also evicted, along with their logs.
|
By default, if a container restarts, the kubelet keeps one terminated container with its logs. If a pod is evicted from the node, all corresponding containers are also evicted, along with their logs.
|
||||||
|
|
||||||
@@ -81,13 +83,15 @@ When you run [`kubectl logs`](/docs/reference/generated/kubectl/kubectl-commands
|
|||||||
the basic logging example, the kubelet on the node handles the request and
|
the basic logging example, the kubelet on the node handles the request and
|
||||||
reads directly from the log file, returning the contents in the response.
|
reads directly from the log file, returning the contents in the response.
|
||||||
|
|
||||||
**Note:** Currently, if some external system has performed the rotation,
|
{{< note >}}
|
||||||
|
Currently, if some external system has performed the rotation,
|
||||||
only the contents of the latest log file will be available through
|
only the contents of the latest log file will be available through
|
||||||
`kubectl logs`. E.g. if there's a 10MB file, `logrotate` performs
|
`kubectl logs`. E.g. if there's a 10MB file, `logrotate` performs
|
||||||
the rotation and there are two files, one 10MB in size and one empty,
|
the rotation and there are two files, one 10MB in size and one empty,
|
||||||
`kubectl logs` will return an empty response.
|
`kubectl logs` will return an empty response.
|
||||||
|
|
||||||
[cosConfigureHelper]: https://github.com/kubernetes/kubernetes/blob/{{< param "githubbranch" >}}/cluster/gce/gci/configure-helper.sh
|
[cosConfigureHelper]: https://github.com/kubernetes/kubernetes/blob/{{< param "githubbranch" >}}/cluster/gce/gci/configure-helper.sh
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
### System component logs
|
### System component logs
|
||||||
|
|
||||||
@@ -215,10 +219,12 @@ If the node-level logging agent is not flexible enough for your situation, you
|
|||||||
can create a sidecar container with a separate logging agent that you have
|
can create a sidecar container with a separate logging agent that you have
|
||||||
configured specifically to run with your application.
|
configured specifically to run with your application.
|
||||||
|
|
||||||
**Note**: Using a logging agent in a sidecar container can lead
|
{{< note >}}
|
||||||
|
Using a logging agent in a sidecar container can lead
|
||||||
to significant resource consumption. Moreover, you won't be able to access
|
to significant resource consumption. Moreover, you won't be able to access
|
||||||
those logs using `kubectl logs` command, because they are not controlled
|
those logs using `kubectl logs` command, because they are not controlled
|
||||||
by the kubelet.
|
by the kubelet.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
As an example, you could use [Stackdriver](/docs/tasks/debug-application-cluster/logging-stackdriver/),
|
As an example, you could use [Stackdriver](/docs/tasks/debug-application-cluster/logging-stackdriver/),
|
||||||
which uses fluentd as a logging agent. Here are two configuration files that
|
which uses fluentd as a logging agent. Here are two configuration files that
|
||||||
@@ -227,9 +233,11 @@ a [ConfigMap](/docs/tasks/configure-pod-container/configure-pod-configmap/) to c
|
|||||||
|
|
||||||
{{< codenew file="admin/logging/fluentd-sidecar-config.yaml" >}}
|
{{< codenew file="admin/logging/fluentd-sidecar-config.yaml" >}}
|
||||||
|
|
||||||
**Note**: The configuration of fluentd is beyond the scope of this article. For
|
{{< note >}}
|
||||||
|
The configuration of fluentd is beyond the scope of this article. For
|
||||||
information about configuring fluentd, see the
|
information about configuring fluentd, see the
|
||||||
[official fluentd documentation](http://docs.fluentd.org/).
|
[official fluentd documentation](http://docs.fluentd.org/).
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
The second file describes a pod that has a sidecar container running fluentd.
|
The second file describes a pod that has a sidecar container running fluentd.
|
||||||
The pod mounts a volume where fluentd can pick up its configuration data.
|
The pod mounts a volume where fluentd can pick up its configuration data.
|
||||||
|
|||||||
@@ -331,7 +331,7 @@ Currently, resources are created without this annotation, so the first invocatio
|
|||||||
All subsequent calls to `kubectl apply`, and other commands that modify the configuration, such as `kubectl replace` and `kubectl edit`, will update the annotation, allowing subsequent calls to `kubectl apply` to detect and perform deletions using a three-way diff.
|
All subsequent calls to `kubectl apply`, and other commands that modify the configuration, such as `kubectl replace` and `kubectl edit`, will update the annotation, allowing subsequent calls to `kubectl apply` to detect and perform deletions using a three-way diff.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** To use apply, always create resource initially with either `kubectl apply` or `kubectl create --save-config`.
|
To use apply, always create resource initially with either `kubectl apply` or `kubectl create --save-config`.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
### kubectl edit
|
### kubectl edit
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ with a standard set of labels. As of Kubernetes v1.4 these labels are
|
|||||||
* `beta.kubernetes.io/arch`
|
* `beta.kubernetes.io/arch`
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** The value of these labels is cloud provider specific and is not guaranteed to be reliable.
|
The value of these labels is cloud provider specific and is not guaranteed to be reliable.
|
||||||
For example, the value of `kubernetes.io/hostname` may be the same as the Node name in some environments
|
For example, the value of `kubernetes.io/hostname` may be the same as the Node name in some environments
|
||||||
and a different value in other environments.
|
and a different value in other environments.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
@@ -173,11 +173,15 @@ like node, rack, cloud provider zone, cloud provider region, etc. You express it
|
|||||||
key for the node label that the system uses to denote such a topology domain, e.g. see the label keys listed above
|
key for the node label that the system uses to denote such a topology domain, e.g. see the label keys listed above
|
||||||
in the section [Interlude: built-in node labels](#interlude-built-in-node-labels).
|
in the section [Interlude: built-in node labels](#interlude-built-in-node-labels).
|
||||||
|
|
||||||
**Note:** Inter-pod affinity and anti-affinity require substantial amount of
|
{{< note >}}
|
||||||
|
Inter-pod affinity and anti-affinity require substantial amount of
|
||||||
processing which can slow down scheduling in large clusters significantly. We do
|
processing which can slow down scheduling in large clusters significantly. We do
|
||||||
not recommend using them in clusters larger than several hundred nodes.
|
not recommend using them in clusters larger than several hundred nodes.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
**Note:** Pod anti-affinity requires nodes to be consistently labelled, i.e. every node in the cluster must have an appropriate label matching `topologyKey`. If some or all nodes are missing the specified `topologyKey` label, it can lead to unintended behavior.
|
{{< note >}}
|
||||||
|
Pod anti-affinity requires nodes to be consistently labelled, i.e. every node in the cluster must have an appropriate label matching `topologyKey`. If some or all nodes are missing the specified `topologyKey` label, it can lead to unintended behavior.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
As with node affinity, there are currently two types of pod affinity and anti-affinity, called `requiredDuringSchedulingIgnoredDuringExecution` and
|
As with node affinity, there are currently two types of pod affinity and anti-affinity, called `requiredDuringSchedulingIgnoredDuringExecution` and
|
||||||
`preferredDuringSchedulingIgnoredDuringExecution` which denote "hard" vs. "soft" requirements.
|
`preferredDuringSchedulingIgnoredDuringExecution` which denote "hard" vs. "soft" requirements.
|
||||||
|
|||||||
@@ -149,7 +149,9 @@ When using Docker:
|
|||||||
multiplied by 100. The resulting value is the total amount of CPU time that a container can use
|
multiplied by 100. The resulting value is the total amount of CPU time that a container can use
|
||||||
every 100ms. A container cannot use more than its share of CPU time during this interval.
|
every 100ms. A container cannot use more than its share of CPU time during this interval.
|
||||||
|
|
||||||
{{< note >}}**Note**: The default quota period is 100ms. The minimum resolution of CPU quota is 1ms.{{</ note >}}
|
{{< note >}}
|
||||||
|
The default quota period is 100ms. The minimum resolution of CPU quota is 1ms.
|
||||||
|
{{</ note >}}
|
||||||
|
|
||||||
- The `spec.containers[].resources.limits.memory` is converted to an integer, and
|
- The `spec.containers[].resources.limits.memory` is converted to an integer, and
|
||||||
used as the value of the
|
used as the value of the
|
||||||
@@ -317,7 +319,7 @@ Kubernetes version 1.8 introduces a new resource, _ephemeral-storage_ for managi
|
|||||||
This partition is “ephemeral” and applications cannot expect any performance SLAs (Disk IOPS for example) from this partition. Local ephemeral storage management only applies for the root partition; the optional partition for image layer and writable layer is out of scope.
|
This partition is “ephemeral” and applications cannot expect any performance SLAs (Disk IOPS for example) from this partition. Local ephemeral storage management only applies for the root partition; the optional partition for image layer and writable layer is out of scope.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** If an optional runtime partition is used, root partition will not hold any image layer or writable layers.
|
If an optional runtime partition is used, root partition will not hold any image layer or writable layers.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
### Requests and limits setting for local ephemeral storage
|
### Requests and limits setting for local ephemeral storage
|
||||||
@@ -420,7 +422,7 @@ http://k8s-master:8080/api/v1/nodes/k8s-node-1/status
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: In the preceding request, `~1` is the encoding for the character `/`
|
In the preceding request, `~1` is the encoding for the character `/`
|
||||||
in the patch path. The operation path value in JSON-Patch is interpreted as a
|
in the patch path. The operation path value in JSON-Patch is interpreted as a
|
||||||
JSON-Pointer. For more details, see
|
JSON-Pointer. For more details, see
|
||||||
[IETF RFC 6901, section 3](https://tools.ietf.org/html/rfc6901#section-3).
|
[IETF RFC 6901, section 3](https://tools.ietf.org/html/rfc6901#section-3).
|
||||||
@@ -476,7 +478,7 @@ Examples of _valid_ quantities are `3`, `3000m` and `3Ki`. Examples of
|
|||||||
_invalid_ quantities are `0.5` and `1500m`.
|
_invalid_ quantities are `0.5` and `1500m`.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Extended resources replace Opaque Integer Resources.
|
Extended resources replace Opaque Integer Resources.
|
||||||
Users can use any domain name prefix other than `kubernetes.io` which is reserved.
|
Users can use any domain name prefix other than `kubernetes.io` which is reserved.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
@@ -484,7 +486,7 @@ To consume an extended resource in a Pod, include the resource name as a key
|
|||||||
in the `spec.containers[].resources.limits` map in the container spec.
|
in the `spec.containers[].resources.limits` map in the container spec.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Extended resources cannot be overcommitted, so request and limit
|
Extended resources cannot be overcommitted, so request and limit
|
||||||
must be equal if both are present in a container spec.
|
must be equal if both are present in a container spec.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ find the information it needs to choose a cluster and communicate with the API s
|
|||||||
of a cluster.
|
of a cluster.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** A file that is used to configure access to clusters is called
|
A file that is used to configure access to clusters is called
|
||||||
a *kubeconfig file*. This is a generic way of referring to configuration files.
|
a *kubeconfig file*. This is a generic way of referring to configuration files.
|
||||||
It does not mean that there is a file named `kubeconfig`.
|
It does not mean that there is a file named `kubeconfig`.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|||||||
@@ -84,15 +84,15 @@ The [imagePullPolicy](/docs/concepts/containers/images/#updating-images) and the
|
|||||||
- `imagePullPolicy: Never`: the image is assumed to exist locally. No attempt is made to pull the image.
|
- `imagePullPolicy: Never`: the image is assumed to exist locally. No attempt is made to pull the image.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** To make sure the container always uses the same version of the image, you can specify its [digest](https://docs.docker.com/engine/reference/commandline/pull/#pull-an-image-by-digest-immutable-identifier), for example `sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2`. The digest uniquely identifies a specific version of the image, so it is never updated by Kubernetes unless you change the digest value.
|
To make sure the container always uses the same version of the image, you can specify its [digest](https://docs.docker.com/engine/reference/commandline/pull/#pull-an-image-by-digest-immutable-identifier), for example `sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2`. The digest uniquely identifies a specific version of the image, so it is never updated by Kubernetes unless you change the digest value.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** You should avoid using the `:latest` tag when deploying containers in production as it is harder to track which version of the image is running and more difficult to roll back properly.
|
You should avoid using the `:latest` tag when deploying containers in production as it is harder to track which version of the image is running and more difficult to roll back properly.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** The caching semantics of the underlying image provider make even `imagePullPolicy: Always` efficient. With Docker, for example, if the image already exists, the pull attempt is fast because all image layers are cached and no image download is needed.
|
The caching semantics of the underlying image provider make even `imagePullPolicy: Always` efficient. With Docker, for example, if the image already exists, the pull attempt is fast because all image layers are cached and no image download is needed.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
## Using kubectl
|
## Using kubectl
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ Kubernetes Version | Priority and Preemption State | Enabled by default
|
|||||||
1.10 | alpha | no
|
1.10 | alpha | no
|
||||||
1.11 | beta | yes
|
1.11 | beta | yes
|
||||||
|
|
||||||
{{< warning >}} **Warning**: In a cluster where not all users are trusted, a
|
{{< warning >}}In a cluster where not all users are trusted, a
|
||||||
malicious user could create pods at the highest possible priorities, causing
|
malicious user could create pods at the highest possible priorities, causing
|
||||||
other pods to be evicted/not get scheduled. To resolve this issue,
|
other pods to be evicted/not get scheduled. To resolve this issue,
|
||||||
[ResourceQuota](https://kubernetes.io/docs/concepts/policy/resource-quotas/) is
|
[ResourceQuota](https://kubernetes.io/docs/concepts/policy/resource-quotas/) is
|
||||||
@@ -71,24 +71,13 @@ Pods.
|
|||||||
|
|
||||||
## How to disable preemption
|
## How to disable preemption
|
||||||
|
|
||||||
{{< note >}} **Note**: In Kubernetes 1.11, critical pods (except DaemonSet pods,
|
{{< note >}}
|
||||||
which are still scheduled by the DaemonSet controller) rely on scheduler
|
In Kubernetes 1.11, critical pods (except DaemonSet pods, which are
|
||||||
preemption to be scheduled when a cluster is under resource pressure. For this
|
still scheduled by the DaemonSet controller) rely on scheduler preemption to be
|
||||||
reason, you will need to run an older version of Rescheduler if you decide to
|
scheduled when a cluster is under resource pressure. For this reason, you will
|
||||||
disable preemption. More on this is provided below. {{< /note >}}
|
need to run an older version of Rescheduler if you decide to disable preemption.
|
||||||
|
More on this is provided below.
|
||||||
#### Option 1: Disable both Pod priority and preemption
|
{{< /note >}}
|
||||||
|
|
||||||
Disabling Pod priority disables preemption as well. In order to disable Pod
|
|
||||||
Priority, set the feature to false for API server, Scheduler, and Kubelet.
|
|
||||||
Disabling the feature on Kubelets is not vital. You can leave the feature on for
|
|
||||||
Kubelets if rolling out is hard.
|
|
||||||
|
|
||||||
```
|
|
||||||
--feature-gates=PodPriority=false
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Option 2: Disable Preemption only
|
|
||||||
|
|
||||||
In Kubernetes 1.11 and later, preemption is controlled by a kube-scheduler flag
|
In Kubernetes 1.11 and later, preemption is controlled by a kube-scheduler flag
|
||||||
`disablePreemption`, which is set to `false` by default.
|
`disablePreemption`, which is set to `false` by default.
|
||||||
@@ -266,11 +255,13 @@ A Node is considered for preemption only when the answer to this question is
|
|||||||
yes: "If all the Pods with lower priority than the pending Pod are removed from
|
yes: "If all the Pods with lower priority than the pending Pod are removed from
|
||||||
the Node, can the pending Pod be scheduled on the Node?"
|
the Node, can the pending Pod be scheduled on the Node?"
|
||||||
|
|
||||||
{{< note >}} **Note:** Preemption does not necessarily remove all lower-priority
|
{{< note >}}
|
||||||
|
Preemption does not necessarily remove all lower-priority
|
||||||
Pods. If the pending Pod can be scheduled by removing fewer than all
|
Pods. If the pending Pod can be scheduled by removing fewer than all
|
||||||
lower-priority Pods, then only a portion of the lower-priority Pods are removed.
|
lower-priority Pods, then only a portion of the lower-priority Pods are removed.
|
||||||
Even so, the answer to the preceding question must be yes. If the answer is no,
|
Even so, the answer to the preceding question must be yes. If the answer is no,
|
||||||
the Node is not considered for preemption. {{< /note >}}
|
the Node is not considered for preemption.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
If a pending Pod has inter-pod affinity to one or more of the lower-priority
|
If a pending Pod has inter-pod affinity to one or more of the lower-priority
|
||||||
Pods on the Node, the inter-Pod affinity rule cannot be satisfied in the absence
|
Pods on the Node, the inter-Pod affinity rule cannot be satisfied in the absence
|
||||||
|
|||||||
@@ -45,9 +45,11 @@ algorithmSource:
|
|||||||
percentageOfNodesToScore: 50
|
percentageOfNodesToScore: 50
|
||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}} **Note**: In clusters with zero or less than 50 feasible nodes, the
|
{{< note >}}
|
||||||
|
In clusters with zero or less than 50 feasible nodes, the
|
||||||
scheduler still checks all the nodes, simply because there are not enough
|
scheduler still checks all the nodes, simply because there are not enough
|
||||||
feasible nodes to stop the scheduler's search early. {{< /note >}}
|
feasible nodes to stop the scheduler's search early.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
**To disable this feature**, you can set `percentageOfNodesToScore` to 100.
|
**To disable this feature**, you can set `percentageOfNodesToScore` to 100.
|
||||||
|
|
||||||
|
|||||||
@@ -353,7 +353,7 @@ propagation delay, where cache propagation delay depends on the chosen cache typ
|
|||||||
(it equals to watch propagation delay, ttl of cache, or zero corespondingly).
|
(it equals to watch propagation delay, ttl of cache, or zero corespondingly).
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** A container using a Secret as a
|
A container using a Secret as a
|
||||||
[subPath](/docs/concepts/storage/volumes#using-subpath) volume mount will not receive
|
[subPath](/docs/concepts/storage/volumes#using-subpath) volume mount will not receive
|
||||||
Secret updates.
|
Secret updates.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
@@ -492,7 +492,7 @@ $ kubectl create secret generic ssh-key-secret --from-file=ssh-privatekey=/path/
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Caution:** Think carefully before sending your own ssh keys: other users of the cluster may have access to the secret. Use a service account which you want to be accessible to all the users with whom you share the Kubernetes cluster, and can revoke if they are compromised.
|
Think carefully before sending your own ssh keys: other users of the cluster may have access to the secret. Use a service account which you want to be accessible to all the users with whom you share the Kubernetes cluster, and can revoke if they are compromised.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
|
|
||||||
@@ -544,7 +544,7 @@ $ kubectl create secret generic test-db-secret --from-literal=username=testuser
|
|||||||
secret "test-db-secret" created
|
secret "test-db-secret" created
|
||||||
```
|
```
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Special characters such as `$`, `\*`, and `!` require escaping.
|
Special characters such as `$`, `\*`, and `!` require escaping.
|
||||||
If the password you are using has special characters, you need to escape them using the `\\` character. For example, if your actual password is `S!B\*d$zDsb`, you should execute the command this way:
|
If the password you are using has special characters, you need to escape them using the `\\` character. For example, if your actual password is `S!B\*d$zDsb`, you should execute the command this way:
|
||||||
|
|
||||||
kubectl create secret generic dev-db-secret --from-literal=username=devuser --from-literal=password=S\\!B\\\*d\\$zDsb
|
kubectl create secret generic dev-db-secret --from-literal=username=devuser --from-literal=password=S\\!B\\\*d\\$zDsb
|
||||||
@@ -665,7 +665,7 @@ the `dotfile-test-container` will have this file present at the path
|
|||||||
`/etc/secret-volume/.secret-file`.
|
`/etc/secret-volume/.secret-file`.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: Files beginning with dot characters are hidden from the output of `ls -l`;
|
Files beginning with dot characters are hidden from the output of `ls -l`;
|
||||||
you must use `ls -la` to see them when listing directory contents.
|
you must use `ls -la` to see them when listing directory contents.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
@@ -774,7 +774,7 @@ Pod level](#use-case-secret-visible-to-one-container-in-a-pod).
|
|||||||
single node.
|
single node.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** As of 1.7 [encryption of secret data at rest is supported](/docs/tasks/administer-cluster/encrypt-data/).
|
As of 1.7 [encryption of secret data at rest is supported](/docs/tasks/administer-cluster/encrypt-data/).
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
{{% capture whatsnext %}}
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ A toleration "matches" a taint if the keys are the same and the effects are the
|
|||||||
`Operator` defaults to `Equal` if not specified.
|
`Operator` defaults to `Equal` if not specified.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** There are two special cases:
|
There are two special cases:
|
||||||
|
|
||||||
* An empty `key` with operator `Exists` matches all keys, values and effects which means this
|
* An empty `key` with operator `Exists` matches all keys, values and effects which means this
|
||||||
will tolerate everything.
|
will tolerate everything.
|
||||||
@@ -230,7 +230,7 @@ added by the NodeController (or kubelet) and the normal logic for evicting pods
|
|||||||
based on the Ready NodeCondition is disabled.
|
based on the Ready NodeCondition is disabled.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** To maintain the existing [rate limiting](/docs/concepts/architecture/nodes/)
|
To maintain the existing [rate limiting](/docs/concepts/architecture/nodes/)
|
||||||
behavior of pod evictions due to node problems, the system actually adds the taints
|
behavior of pod evictions due to node problems, the system actually adds the taints
|
||||||
in a rate-limited way. This prevents massive pod evictions in scenarios such
|
in a rate-limited way. This prevents massive pod evictions in scenarios such
|
||||||
as the master becoming partitioned from the nodes.
|
as the master becoming partitioned from the nodes.
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ https://cs.k8s.io/?q=docker%20manifest%20(create%7Cpush%7Cannotate)&i=nope&files
|
|||||||
These commands rely on and are implemented purely on the Docker CLI. You will need to either edit the `$HOME/.docker/config.json` and set `experimental` key to `enabled` or you can just set `DOCKER_CLI_EXPERIMENTAL` environment variable to `enabled` when you call the CLI commands.
|
These commands rely on and are implemented purely on the Docker CLI. You will need to either edit the `$HOME/.docker/config.json` and set `experimental` key to `enabled` or you can just set `DOCKER_CLI_EXPERIMENTAL` environment variable to `enabled` when you call the CLI commands.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Please use Docker *18.06 or above*, versions below that either have bugs or do not support the experimental command line option. Example https://github.com/docker/cli/issues/1135 causes problems under containerd.
|
Please use Docker *18.06 or above*, versions below that either have bugs or do not support the experimental command line option. Example https://github.com/docker/cli/issues/1135 causes problems under containerd.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
If you run into trouble with uploading stale manifests, just clean up the older manifests in `$HOME/.docker/manifests` to start fresh.
|
If you run into trouble with uploading stale manifests, just clean up the older manifests in `$HOME/.docker/manifests` to start fresh.
|
||||||
@@ -156,16 +156,16 @@ You can use the IBM Cloud Container Registry to deploy containers from [IBM Clou
|
|||||||
### Configuring Nodes to Authenticate to a Private Registry
|
### Configuring Nodes to Authenticate to a Private Registry
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** If you are running on Google Kubernetes Engine, there will already be a `.dockercfg` on each node with credentials for Google Container Registry. You cannot use this approach.
|
If you are running on Google Kubernetes Engine, there will already be a `.dockercfg` on each node with credentials for Google Container Registry. You cannot use this approach.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** If you are running on AWS EC2 and are using the EC2 Container Registry (ECR), the kubelet on each node will
|
If you are running on AWS EC2 and are using the EC2 Container Registry (ECR), the kubelet on each node will
|
||||||
manage and update the ECR login credentials. You cannot use this approach.
|
manage and update the ECR login credentials. You cannot use this approach.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** This approach is suitable if you can control node configuration. It
|
This approach is suitable if you can control node configuration. It
|
||||||
will not work reliably on GCE, and any other cloud provider that does automatic
|
will not work reliably on GCE, and any other cloud provider that does automatic
|
||||||
node replacement.
|
node replacement.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
@@ -183,7 +183,7 @@ in the search paths list below, kubelet uses it as the credential provider when
|
|||||||
* `/.dockercfg`
|
* `/.dockercfg`
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: You may have to set `HOME=/root` explicitly in your environment file for kubelet.
|
You may have to set `HOME=/root` explicitly in your environment file for kubelet.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
Here are the recommended steps to configuring your nodes to use a private registry. In this
|
Here are the recommended steps to configuring your nodes to use a private registry. In this
|
||||||
@@ -240,11 +240,11 @@ registry keys are added to the `.docker/config.json`.
|
|||||||
### Pre-pulling Images
|
### Pre-pulling Images
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** If you are running on Google Kubernetes Engine, there will already be a `.dockercfg` on each node with credentials for Google Container Registry. You cannot use this approach.
|
If you are running on Google Kubernetes Engine, there will already be a `.dockercfg` on each node with credentials for Google Container Registry. You cannot use this approach.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** This approach is suitable if you can control node configuration. It
|
This approach is suitable if you can control node configuration. It
|
||||||
will not work reliably on GCE, and any other cloud provider that does automatic
|
will not work reliably on GCE, and any other cloud provider that does automatic
|
||||||
node replacement.
|
node replacement.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
@@ -263,7 +263,7 @@ All pods will have read access to any pre-pulled images.
|
|||||||
### Specifying ImagePullSecrets on a Pod
|
### Specifying ImagePullSecrets on a Pod
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** This approach is currently the recommended approach for Google Kubernetes Engine, GCE, and any cloud-providers
|
This approach is currently the recommended approach for Google Kubernetes Engine, GCE, and any cloud-providers
|
||||||
where node creation is automated.
|
where node creation is automated.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ corresponding documentation for your CRI implementation for how to configure. As
|
|||||||
feature, not all CRIs support multiple RuntimeClasses yet.
|
feature, not all CRIs support multiple RuntimeClasses yet.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** RuntimeClass currently assumes a homogeneous node configuration across the cluster
|
RuntimeClass currently assumes a homogeneous node configuration across the cluster
|
||||||
(which means that all nodes are configured the same way with respect to container runtimes). Any heterogeneity (varying configurations) must be
|
(which means that all nodes are configured the same way with respect to container runtimes). Any heterogeneity (varying configurations) must be
|
||||||
managed independently of RuntimeClass through scheduling features (see [Assigning Pods to
|
managed independently of RuntimeClass through scheduling features (see [Assigning Pods to
|
||||||
Nodes](/docs/concepts/configuration/assign-pod-node/)).
|
Nodes](/docs/concepts/configuration/assign-pod-node/)).
|
||||||
@@ -87,11 +87,9 @@ spec:
|
|||||||
|
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
|
It is recommended that RuntimeClass write operations (create/update/patch/delete) be
|
||||||
**Note:** It is recommended that RuntimeClass write operations (create/update/patch/delete) be
|
|
||||||
restricted to the cluster administrator. This is typically the default. See [Authorization
|
restricted to the cluster administrator. This is typically the default. See [Authorization
|
||||||
Overview](https://kubernetes.io/docs/reference/access-authn-authz/authorization/) for more details.
|
Overview](https://kubernetes.io/docs/reference/access-authn-authz/authorization/) for more details.
|
||||||
|
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
### Usage
|
### Usage
|
||||||
|
|||||||
@@ -8,7 +8,9 @@ toc_hide: true
|
|||||||
|
|
||||||
{{% capture overview %}}
|
{{% capture overview %}}
|
||||||
|
|
||||||
**NOTE:** Be sure to also [create an entry in the table of contents](/docs/home/contribute/write-new-topic/#creating-an-entry-in-the-table-of-contents) for your new document.
|
{{< note >}}
|
||||||
|
Be sure to also [create an entry in the table of contents](/docs/home/contribute/write-new-topic/#creating-an-entry-in-the-table-of-contents) for your new document.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
This page explains ...
|
This page explains ...
|
||||||
|
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ Use a ConfigMap if any of the following apply:
|
|||||||
* You want to perform rolling updates via Deployment, etc, when the file is updated.
|
* You want to perform rolling updates via Deployment, etc, when the file is updated.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Use a [secret](/docs/concepts/configuration/secret/) for sensitive data, which is similar to a configMap but more secure.
|
Use a [secret](/docs/concepts/configuration/secret/) for sensitive data, which is similar to a configMap but more secure.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
Use a custom resource (CRD or Aggregated API) if most of the following apply:
|
Use a custom resource (CRD or Aggregated API) if most of the following apply:
|
||||||
@@ -131,7 +131,7 @@ for a demonstration of how to register a new custom resource, work with instance
|
|||||||
and setup a controller to handle events.
|
and setup a controller to handle events.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** CRD is the successor to the deprecated *ThirdPartyResource* (TPR) API, and is available as of Kubernetes 1.7.
|
CRD is the successor to the deprecated *ThirdPartyResource* (TPR) API, and is available as of Kubernetes 1.7.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
## API server aggregation
|
## API server aggregation
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ annotation on each object. The annotation contains the contents of the object
|
|||||||
configuration file that was used to create the object.
|
configuration file that was used to create the object.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Add the `-R` flag to recursively process directories.
|
Add the `-R` flag to recursively process directories.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
Here's an example of an object configuration file:
|
Here's an example of an object configuration file:
|
||||||
@@ -134,7 +134,7 @@ kubectl apply -f <directory>/
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Add the `-R` flag to recursively process directories.
|
Add the `-R` flag to recursively process directories.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
Here's an example configuration file:
|
Here's an example configuration file:
|
||||||
@@ -148,7 +148,7 @@ kubectl apply -f https://k8s.io/examples/application/simple_deployment.yaml
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** For purposes of illustration, the preceding command refers to a single
|
For purposes of illustration, the preceding command refers to a single
|
||||||
configuration file instead of a directory.
|
configuration file instead of a directory.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
@@ -322,7 +322,7 @@ spec:
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
**Warning:** Mixing `kubectl apply` with the imperative object configuration commands
|
Mixing `kubectl apply` with the imperative object configuration commands
|
||||||
`create` and `replace` is not supported. This is because `create`
|
`create` and `replace` is not supported. This is because `create`
|
||||||
and `replace` do not retain the `kubectl.kubernetes.io/last-applied-configuration`
|
and `replace` do not retain the `kubectl.kubernetes.io/last-applied-configuration`
|
||||||
that `kubectl apply` uses to compute updates.
|
that `kubectl apply` uses to compute updates.
|
||||||
@@ -347,12 +347,12 @@ kubectl delete -f <filename>
|
|||||||
Only use this if you know what you are doing.
|
Only use this if you know what you are doing.
|
||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
**Warning:** `kubectl apply --prune` is in alpha, and backwards incompatible
|
`kubectl apply --prune` is in alpha, and backwards incompatible
|
||||||
changes might be introduced in subsequent releases.
|
changes might be introduced in subsequent releases.
|
||||||
{{< /warning >}}
|
{{< /warning >}}
|
||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
**Warning:** You must be careful when using this command, so that you
|
You must be careful when using this command, so that you
|
||||||
do not delete objects unintentionally.
|
do not delete objects unintentionally.
|
||||||
{{< /warning >}}
|
{{< /warning >}}
|
||||||
|
|
||||||
@@ -373,7 +373,7 @@ kubectl apply -f <directory/> --prune -l <labels>
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
**Warning:** Apply with prune should only be run against the root directory
|
Apply with prune should only be run against the root directory
|
||||||
containing the object configuration files. Running against sub-directories
|
containing the object configuration files. Running against sub-directories
|
||||||
can cause objects to be unintentionally deleted if they are returned
|
can cause objects to be unintentionally deleted if they are returned
|
||||||
by the label selector query specified with `-l <labels>` and
|
by the label selector query specified with `-l <labels>` and
|
||||||
@@ -391,10 +391,9 @@ kubectl get -f <filename|url> -o yaml
|
|||||||
## How apply calculates differences and merges changes
|
## How apply calculates differences and merges changes
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Caution:** A *patch* is an update operation that is scoped to specific
|
A *patch* is an update operation that is scoped to specific fields of an object
|
||||||
fields of an object instead of the entire object.
|
instead of the entire object. This enables updating only a specific set of fields
|
||||||
This enables updating only a specific set of fields on an object without
|
on an object without reading the object first.
|
||||||
reading the object first.
|
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
When `kubectl apply` updates the live configuration for an object,
|
When `kubectl apply` updates the live configuration for an object,
|
||||||
@@ -546,7 +545,7 @@ and merged.
|
|||||||
Primitive fields are replaced or cleared.
|
Primitive fields are replaced or cleared.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** '-' is used for "not applicable" because the value is not used.
|
`-` is used for "not applicable" because the value is not used.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
| Field in object configuration file | Field in live object configuration | Field in last-applied-configuration | Action |
|
| Field in object configuration file | Field in live object configuration | Field in last-applied-configuration | Action |
|
||||||
@@ -561,7 +560,7 @@ Primitive fields are replaced or cleared.
|
|||||||
Fields that represent maps are merged by comparing each of the subfields or elements of the map:
|
Fields that represent maps are merged by comparing each of the subfields or elements of the map:
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** '-' is used for "not applicable" because the value is not used.
|
`-` is used for "not applicable" because the value is not used.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
| Key in object configuration file | Key in live object configuration | Field in last-applied-configuration | Action |
|
| Key in object configuration file | Key in live object configuration | Field in last-applied-configuration | Action |
|
||||||
@@ -689,7 +688,7 @@ by `name`.
|
|||||||
As of Kubernetes 1.5, merging lists of primitive elements is not supported.
|
As of Kubernetes 1.5, merging lists of primitive elements is not supported.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Which of the above strategies is chosen for a given field is controlled by
|
Which of the above strategies is chosen for a given field is controlled by
|
||||||
the `patchStrategy` tag in [types.go](https://git.k8s.io/api/core/v1/types.go#L2565)
|
the `patchStrategy` tag in [types.go](https://git.k8s.io/api/core/v1/types.go#L2565)
|
||||||
If no `patchStrategy` is specified for a field of type list, then
|
If no `patchStrategy` is specified for a field of type list, then
|
||||||
the list is replaced.
|
the list is replaced.
|
||||||
@@ -900,7 +899,7 @@ Kubernetes objects should be managed using only one method at a time.
|
|||||||
Switching from one method to another is possible, but is a manual process.
|
Switching from one method to another is possible, but is a manual process.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** It is OK to use imperative deletion with declarative management.
|
It is OK to use imperative deletion with declarative management.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
{{< comment >}}
|
{{< comment >}}
|
||||||
@@ -924,8 +923,10 @@ configuration involves several manual steps:
|
|||||||
|
|
||||||
1. Manually remove the `status` field from the configuration file.
|
1. Manually remove the `status` field from the configuration file.
|
||||||
|
|
||||||
{{< note >}}**Note:** This step is optional, as `kubectl apply` does not update the status field
|
{{< note >}}
|
||||||
even if it is present in the configuration file.{{< /note >}}
|
This step is optional, as `kubectl apply` does not update the status field
|
||||||
|
even if it is present in the configuration file.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
1. Set the `kubectl.kubernetes.io/last-applied-configuration` annotation on the object:
|
1. Set the `kubectl.kubernetes.io/last-applied-configuration` annotation on the object:
|
||||||
|
|
||||||
@@ -952,7 +953,7 @@ TODO(pwittrock): Why doesn't export remove the status field? Seems like it shou
|
|||||||
## Defining controller selectors and PodTemplate labels
|
## Defining controller selectors and PodTemplate labels
|
||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
**Warning:** Updating selectors on controllers is strongly discouraged.
|
Updating selectors on controllers is strongly discouraged.
|
||||||
{{< /warning >}}
|
{{< /warning >}}
|
||||||
|
|
||||||
The recommended approach is to define a single, immutable PodTemplate label
|
The recommended approach is to define a single, immutable PodTemplate label
|
||||||
|
|||||||
@@ -76,8 +76,7 @@ Setting this aspect may set different fields for different object types:
|
|||||||
- `set` <field>: Set an aspect of an object.
|
- `set` <field>: Set an aspect of an object.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: In Kubernetes version 1.5, not every verb-driven command has an
|
In Kubernetes version 1.5, not every verb-driven command has an associated aspect-driven command.
|
||||||
associated aspect-driven command.
|
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
The `kubectl` tool supports these additional ways to update a live object directly,
|
The `kubectl` tool supports these additional ways to update a live object directly,
|
||||||
@@ -95,7 +94,7 @@ You can use the `delete` command to delete an object from a cluster:
|
|||||||
- `delete <type>/<name>`
|
- `delete <type>/<name>`
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: You can use `kubectl delete` for both imperative commands and imperative object
|
You can use `kubectl delete` for both imperative commands and imperative object
|
||||||
configuration. The difference is in the arguments passed to the command. To use
|
configuration. The difference is in the arguments passed to the command. To use
|
||||||
`kubectl delete` as an imperative command, pass the object to be deleted as
|
`kubectl delete` as an imperative command, pass the object to be deleted as
|
||||||
an argument. Here's an example that passes a Deployment object named nginx:
|
an argument. Here's an example that passes a Deployment object named nginx:
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ for details.
|
|||||||
## How to update objects
|
## How to update objects
|
||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
**Warning:** Updating objects with the `replace` command drops all
|
Updating objects with the `replace` command drops all
|
||||||
parts of the spec not specified in the configuration file. This
|
parts of the spec not specified in the configuration file. This
|
||||||
should not be used with objects whose specs are partially managed
|
should not be used with objects whose specs are partially managed
|
||||||
by the cluster, such as Services of type `LoadBalancer`, where
|
by the cluster, such as Services of type `LoadBalancer`, where
|
||||||
@@ -115,7 +115,7 @@ kubectl replace -f <kind>_<name>.yaml
|
|||||||
## Defining controller selectors and PodTemplate labels
|
## Defining controller selectors and PodTemplate labels
|
||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
**Warning:** Updating selectors on controllers is strongly discouraged.
|
Updating selectors on controllers is strongly discouraged.
|
||||||
{{< /warning >}}
|
{{< /warning >}}
|
||||||
|
|
||||||
The recommended approach is to define a single, immutable PodTemplate label
|
The recommended approach is to define a single, immutable PodTemplate label
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ approaches.
|
|||||||
## Management techniques
|
## Management techniques
|
||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
**Warning:** A Kubernetes object should be managed using only one technique. Mixing
|
A Kubernetes object should be managed using only one technique. Mixing
|
||||||
and matching techniques for the same object results in undefined behavior.
|
and matching techniques for the same object results in undefined behavior.
|
||||||
{{< /warning >}}
|
{{< /warning >}}
|
||||||
|
|
||||||
@@ -74,7 +74,7 @@ See the [API reference](/docs/reference/generated/kubernetes-api/{{< param "vers
|
|||||||
for more details on object definitions.
|
for more details on object definitions.
|
||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
**Warning:** The imperative `replace` command replaces the existing
|
The imperative `replace` command replaces the existing
|
||||||
spec with the newly provided one, dropping all changes to the object missing from
|
spec with the newly provided one, dropping all changes to the object missing from
|
||||||
the configuration file. This approach should not be used with resource
|
the configuration file. This approach should not be used with resource
|
||||||
types whose specs are updated independently of the configuration file.
|
types whose specs are updated independently of the configuration file.
|
||||||
@@ -135,7 +135,7 @@ are automatically detected per-object by `kubectl`. This enables working on
|
|||||||
directories, where different operations might be needed for different objects.
|
directories, where different operations might be needed for different objects.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Declarative object configuration retains changes made by other
|
Declarative object configuration retains changes made by other
|
||||||
writers, even if the changes are not merged back to the object configuration file.
|
writers, even if the changes are not merged back to the object configuration file.
|
||||||
This is possible by using the `patch` API operation to write only
|
This is possible by using the `patch` API operation to write only
|
||||||
observed differences, instead of using the `replace`
|
observed differences, instead of using the `replace`
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ Instead, applications are informal and described with metadata. The definition o
|
|||||||
what an application contains is loose.
|
what an application contains is loose.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** These are recommended labels. They make it easier to manage applications
|
These are recommended labels. They make it easier to manage applications
|
||||||
but aren't required for any core tooling.
|
but aren't required for any core tooling.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ An empty label selector (that is, one with zero requirements) selects every obje
|
|||||||
A null label selector (which is only possible for optional selector fields) selects no objects.
|
A null label selector (which is only possible for optional selector fields) selects no objects.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: the label selectors of two controllers must not overlap within a namespace, otherwise they will fight with each other.
|
The label selectors of two controllers must not overlap within a namespace, otherwise they will fight with each other.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
### _Equality-based_ requirement
|
### _Equality-based_ requirement
|
||||||
|
|||||||
@@ -230,8 +230,8 @@ Create the rolebinding to grant `fake-user` the `use` verb on the example
|
|||||||
policy:
|
policy:
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** _This is not the recommended way! See the [next section](#run-another-pod)
|
This is not the recommended way! See the [next section](#run-another-pod)
|
||||||
for the preferred approach._
|
for the preferred approach.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@@ -442,7 +442,7 @@ allowedHostPaths:
|
|||||||
readOnly: true # only allow read-only mounts
|
readOnly: true # only allow read-only mounts
|
||||||
```
|
```
|
||||||
|
|
||||||
{{< warning >}}**Warning:** There are many ways a container with unrestricted access to the host
|
{{< warning >}}There are many ways a container with unrestricted access to the host
|
||||||
filesystem can escalate privileges, including reading data from other
|
filesystem can escalate privileges, including reading data from other
|
||||||
containers, and abusing the credentials of system services, such as Kubelet.
|
containers, and abusing the credentials of system services, such as Kubelet.
|
||||||
|
|
||||||
|
|||||||
@@ -202,7 +202,7 @@ field in the quota spec.
|
|||||||
A quota is matched and consumed only if `scopeSelector` in the quota spec selects the pod.
|
A quota is matched and consumed only if `scopeSelector` in the quota spec selects the pod.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** You need to enable the feature gate `ResourceQuotaScopeSelectors`before using resource quotas
|
You need to enable the feature gate `ResourceQuotaScopeSelectors`before using resource quotas
|
||||||
per PriorityClass.
|
per PriorityClass.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ The Endpoints object can specify the `hostname` for any endpoint addresses,
|
|||||||
along with its IP.
|
along with its IP.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Because A records are not created for Pod names, `hostname` is required for the Pod's A record to be created. A Pod with no `hostname` but with `subdomain` only will only create the A record for the headless service (`default-subdomain.my-namespace.svc.cluster.local`), pointing to the Pod's IP address.
|
Because A records are not created for Pod names, `hostname` is required for the Pod's A record to be created. A Pod with no `hostname` but with `subdomain` only will only create the A record for the headless service (`default-subdomain.my-namespace.svc.cluster.local`), pointing to the Pod's IP address.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
### Pod's DNS Policy
|
### Pod's DNS Policy
|
||||||
@@ -176,7 +176,7 @@ following pod-specific DNS policies. These policies are specified in the
|
|||||||
See [DNS config](#dns-config) subsection below.
|
See [DNS config](#dns-config) subsection below.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**NOTE:** "Default" is not the default DNS policy. If `dnsPolicy` is not
|
"Default" is not the default DNS policy. If `dnsPolicy` is not
|
||||||
explicitly specified, then “ClusterFirst” is used.
|
explicitly specified, then “ClusterFirst” is used.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ In order for the Ingress resource to work, the cluster must have an Ingress cont
|
|||||||
* [Istio](https://istio.io/) based ingress controller [Control Ingress Traffic](https://istio.io/docs/tasks/traffic-management/ingress/)
|
* [Istio](https://istio.io/) based ingress controller [Control Ingress Traffic](https://istio.io/docs/tasks/traffic-management/ingress/)
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Review the documentation for your controller to find its specific support policy.
|
Review the documentation for your controller to find its specific support policy.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
## Before you begin
|
## Before you begin
|
||||||
@@ -107,7 +107,7 @@ In order for the Ingress resource to work, the cluster must have an Ingress cont
|
|||||||
The following document describes a set of cross-platform features exposed through the Ingress resource. Ideally, all Ingress controllers should fulfill this specification, but we're not there yet. We currently support and maintain [GCE](https://git.k8s.io/ingress-gce/README.md) and [nginx](https://git.k8s.io/ingress-nginx/README.md) controllers. If you use the F5 BIG-IP Controller, see [Use the BIG-IP Controller as a Kubernetes Ingress Controller](http://clouddocs.f5.com/containers/latest/kubernetes/kctlr-k8s-ingress-ctlr.html).
|
The following document describes a set of cross-platform features exposed through the Ingress resource. Ideally, all Ingress controllers should fulfill this specification, but we're not there yet. We currently support and maintain [GCE](https://git.k8s.io/ingress-gce/README.md) and [nginx](https://git.k8s.io/ingress-nginx/README.md) controllers. If you use the F5 BIG-IP Controller, see [Use the BIG-IP Controller as a Kubernetes Ingress Controller](http://clouddocs.f5.com/containers/latest/kubernetes/kctlr-k8s-ingress-ctlr.html).
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Make sure you review your controller's specific docs so you understand the caveats.
|
Make sure you review your controller's specific docs so you understand the caveats.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
## Types of Ingress
|
## Types of Ingress
|
||||||
@@ -202,7 +202,7 @@ When it has done so, you will see the address of the loadbalancer at the
|
|||||||
Address field.
|
Address field.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** You need to create a default-http-backend [Service](/docs/concepts/services-networking/service/) if necessary.
|
You need to create a default-http-backend [Service](/docs/concepts/services-networking/service/) if necessary.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
### Name based virtual hosting
|
### Name based virtual hosting
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ Kubernetes `Services` support `TCP`, `UDP` and `SCTP` for protocols. The defaul
|
|||||||
is `TCP`.
|
is `TCP`.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** SCTP support is an alpha feature since Kubernetes 1.12
|
SCTP support is an alpha feature since Kubernetes 1.12
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
### Services without selectors
|
### Services without selectors
|
||||||
@@ -132,7 +132,7 @@ subsets:
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** The endpoint IPs may not be loopback (127.0.0.0/8), link-local
|
The endpoint IPs may not be loopback (127.0.0.0/8), link-local
|
||||||
(169.254.0.0/16), or link-local multicast (224.0.0.0/24). They cannot be the
|
(169.254.0.0/16), or link-local multicast (224.0.0.0/24). They cannot be the
|
||||||
cluster IPs of other Kubernetes services either because the `kube-proxy`
|
cluster IPs of other Kubernetes services either because the `kube-proxy`
|
||||||
component doesn't support virtual IPs as destination yet.
|
component doesn't support virtual IPs as destination yet.
|
||||||
@@ -212,10 +212,12 @@ options for load balancing algorithm, such as:
|
|||||||
- `sed`: shortest expected delay
|
- `sed`: shortest expected delay
|
||||||
- `nq`: never queue
|
- `nq`: never queue
|
||||||
|
|
||||||
**Note:** ipvs mode assumes IPVS kernel modules are installed on the node
|
{{< note >}}
|
||||||
|
ipvs mode assumes IPVS kernel modules are installed on the node
|
||||||
before running kube-proxy. When kube-proxy starts with ipvs proxy mode,
|
before running kube-proxy. When kube-proxy starts with ipvs proxy mode,
|
||||||
kube-proxy would validate if IPVS modules are installed on the node, if
|
kube-proxy would validate if IPVS modules are installed on the node, if
|
||||||
it's not installed kube-proxy will fall back to iptables proxy mode.
|
it's not installed kube-proxy will fall back to iptables proxy mode.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -459,7 +461,7 @@ public IP address resource needs to be created first, and it should be in the sa
|
|||||||
group of the other automatically created resources of the cluster. For example, `MC_myResourceGroup_myAKSCluster_eastus`. Specify the assigned IP address as loadBalancerIP. Ensure that you have updated the securityGroupName in the cloud provider configuration file. For information about troubleshooting `CreatingLoadBalancerFailed` permission issues see, [Use a static IP address with the Azure Kubernetes Service (AKS) load balancer](https://docs.microsoft.com/en-us/azure/aks/static-ip) or [CreatingLoadBalancerFailed on AKS cluster with advanced networking](https://github.com/Azure/AKS/issues/357).
|
group of the other automatically created resources of the cluster. For example, `MC_myResourceGroup_myAKSCluster_eastus`. Specify the assigned IP address as loadBalancerIP. Ensure that you have updated the securityGroupName in the cloud provider configuration file. For information about troubleshooting `CreatingLoadBalancerFailed` permission issues see, [Use a static IP address with the Azure Kubernetes Service (AKS) load balancer](https://docs.microsoft.com/en-us/azure/aks/static-ip) or [CreatingLoadBalancerFailed on AKS cluster with advanced networking](https://github.com/Azure/AKS/issues/357).
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** The support of SCTP in the cloud provider's load balancer is up to the cloud provider's
|
he support of SCTP in the cloud provider's load balancer is up to the cloud provider's
|
||||||
load balancer implementation. If SCTP is not supported by the cloud provider's load balancer the
|
load balancer implementation. If SCTP is not supported by the cloud provider's load balancer the
|
||||||
Service creation request is accepted but the creation of the load balancer fails.
|
Service creation request is accepted but the creation of the load balancer fails.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
@@ -693,7 +695,9 @@ There are other annotations to manage Classic Elastic Load Balancers that are de
|
|||||||
|
|
||||||
#### Network Load Balancer support on AWS [alpha]
|
#### Network Load Balancer support on AWS [alpha]
|
||||||
|
|
||||||
**Warning:** This is an alpha feature and not recommended for production clusters yet.
|
{{< warning >}}
|
||||||
|
This is an alpha feature and not recommended for production clusters yet.
|
||||||
|
{{< /warning >}}
|
||||||
|
|
||||||
Starting in version 1.9.0, Kubernetes supports Network Load Balancer (NLB). To
|
Starting in version 1.9.0, Kubernetes supports Network Load Balancer (NLB). To
|
||||||
use a Network Load Balancer on AWS, use the annotation `service.beta.kubernetes.io/aws-load-balancer-type`
|
use a Network Load Balancer on AWS, use the annotation `service.beta.kubernetes.io/aws-load-balancer-type`
|
||||||
@@ -747,13 +751,15 @@ spec:
|
|||||||
- "143.231.0.0/16"
|
- "143.231.0.0/16"
|
||||||
```
|
```
|
||||||
|
|
||||||
**Note:** NLB only works with certain instance classes, see the [AWS documentation](http://docs.aws.amazon.com/elasticloadbalancing/latest/network/target-group-register-targets.html#register-deregister-targets)
|
{{< note >}}
|
||||||
|
NLB only works with certain instance classes, see the [AWS documentation](http://docs.aws.amazon.com/elasticloadbalancing/latest/network/target-group-register-targets.html#register-deregister-targets)
|
||||||
for supported instance types.
|
for supported instance types.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
### Type ExternalName {#externalname}
|
### Type ExternalName {#externalname}
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**NOTE:** ExternalName Services are available only with `kube-dns` version 1.7 and later.
|
ExternalName Services are available only with `kube-dns` version 1.7 and later.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
Services of type ExternalName map a service to a DNS name (specified using
|
Services of type ExternalName map a service to a DNS name (specified using
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ Once a user has a claim and that claim is bound, the bound PV belongs to the use
|
|||||||
The purpose of the Storage Object in Use Protection feature is to ensure that Persistent Volume Claims (PVCs) in active use by a pod and Persistent Volume (PVs) that are bound to PVCs are not removed from the system as this may result in data loss.
|
The purpose of the Storage Object in Use Protection feature is to ensure that Persistent Volume Claims (PVCs) in active use by a pod and Persistent Volume (PVs) that are bound to PVCs are not removed from the system as this may result in data loss.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** PVC is in active use by a pod when the pod status is `Pending` and the pod is assigned to a node or the pod status is `Running`.
|
PVC is in active use by a pod when the pod status is `Pending` and the pod is assigned to a node or the pod status is `Running`.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
When the [Storage Object in Use Protection feature](/docs/tasks/administer-cluster/storage-object-in-use-protection/) is enabled, if a user deletes a PVC in active use by a pod, the PVC is not removed immediately. PVC removal is postponed until the PVC is no longer actively used by any pods, and also if admin deletes a PV that is bound to a PVC, the PV is not removed immediately. PV removal is postponed until the PV is not bound to a PVC any more.
|
When the [Storage Object in Use Protection feature](/docs/tasks/administer-cluster/storage-object-in-use-protection/) is enabled, if a user deletes a PVC in active use by a pod, the PVC is not removed immediately. PVC removal is postponed until the PVC is no longer actively used by any pods, and also if admin deletes a PV that is bound to a PVC, the PV is not removed immediately. PV removal is postponed until the PV is not bound to a PVC any more.
|
||||||
@@ -147,7 +147,7 @@ For volume plugins that support the `Delete` reclaim policy, deletion removes bo
|
|||||||
#### Recycle
|
#### Recycle
|
||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
**Warning:** The `Recycle` reclaim policy is deprecated. Instead, the recommended approach is to use dynamic provisioning.
|
The `Recycle` reclaim policy is deprecated. Instead, the recommended approach is to use dynamic provisioning.
|
||||||
{{< /warning >}}
|
{{< /warning >}}
|
||||||
|
|
||||||
If supported by the underlying volume plugin, the `Recycle` reclaim policy performs a basic scrub (`rm -rf /thevolume/*`) on the volume and makes it available again for a new claim.
|
If supported by the underlying volume plugin, the `Recycle` reclaim policy performs a basic scrub (`rm -rf /thevolume/*`) on the volume and makes it available again for a new claim.
|
||||||
@@ -238,7 +238,7 @@ This feature has no effect on PVCs that are not in use by a Pod or deployment. Y
|
|||||||
uses the PVC before the expansion can complete.
|
uses the PVC before the expansion can complete.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Expanding EBS volumes is a time consuming operation. Also, there is a per-volume quota of one modification every 6 hours.
|
Expanding EBS volumes is a time consuming operation. Also, there is a per-volume quota of one modification every 6 hours.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
|
|
||||||
@@ -377,7 +377,7 @@ Currently, only NFS and HostPath support recycling. AWS EBS, GCE PD, Azure Disk,
|
|||||||
A Kubernetes administrator can specify additional mount options for when a Persistent Volume is mounted on a node.
|
A Kubernetes administrator can specify additional mount options for when a Persistent Volume is mounted on a node.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Not all Persistent volume types support mount options.
|
Not all Persistent volume types support mount options.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
The following volume types support mount options:
|
The following volume types support mount options:
|
||||||
@@ -495,7 +495,7 @@ the requirements are ANDed together: only a PV of the requested class and with
|
|||||||
the requested labels may be bound to the PVC.
|
the requested labels may be bound to the PVC.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Currently, a PVC with a non-empty `selector` can't have a PV dynamically provisioned for it.
|
Currently, a PVC with a non-empty `selector` can't have a PV dynamically provisioned for it.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
In the past, the annotation `volume.beta.kubernetes.io/storage-class` was used instead
|
In the past, the annotation `volume.beta.kubernetes.io/storage-class` was used instead
|
||||||
@@ -547,7 +547,7 @@ applicable.
|
|||||||
* RBD (Ceph Block Device)
|
* RBD (Ceph Block Device)
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: Only FC and iSCSI volumes supported raw block volumes in Kubernetes 1.9.
|
Only FC and iSCSI volumes supported raw block volumes in Kubernetes 1.9.
|
||||||
Support for the additional plugins was added in 1.10.
|
Support for the additional plugins was added in 1.10.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
@@ -605,7 +605,7 @@ spec:
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** When adding a raw block device for a Pod, we specify the device path in the container instead of a mount path.
|
When adding a raw block device for a Pod, we specify the device path in the container instead of a mount path.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
### Binding Block Volumes
|
### Binding Block Volumes
|
||||||
@@ -627,7 +627,7 @@ Volume binding matrix for statically provisioned volumes:
|
|||||||
| Filesystem | unspecified | BIND |
|
| Filesystem | unspecified | BIND |
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Only statically provisioned volumes are supported for alpha release. Administrators should take care to consider these values when working with raw block devices.
|
Only statically provisioned volumes are supported for alpha release. Administrators should take care to consider these values when working with raw block devices.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
## Volume Snapshot and Restore Volume from Snapshot Support
|
## Volume Snapshot and Restore Volume from Snapshot Support
|
||||||
|
|||||||
@@ -123,8 +123,10 @@ the class or PV, so mount of the PV will simply fail if one is invalid.
|
|||||||
|
|
||||||
{{< feature-state for_k8s_version="v1.12" state="beta" >}}
|
{{< feature-state for_k8s_version="v1.12" state="beta" >}}
|
||||||
|
|
||||||
**Note:** This feature requires the `VolumeScheduling` feature gate to be
|
{{< note >}}
|
||||||
|
This feature requires the `VolumeScheduling` feature gate to be
|
||||||
enabled.
|
enabled.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
The `volumeBindingMode` field controls when [volume binding and dynamic
|
The `volumeBindingMode` field controls when [volume binding and dynamic
|
||||||
provisioning](/docs/concepts/storage/persistent-volumes/#provisioning) should occur.
|
provisioning](/docs/concepts/storage/persistent-volumes/#provisioning) should occur.
|
||||||
@@ -159,8 +161,10 @@ The following plugins support `WaitForFirstConsumer` with pre-created Persistent
|
|||||||
### Allowed Topologies
|
### Allowed Topologies
|
||||||
{{< feature-state for_k8s_version="v1.12" state="beta" >}}
|
{{< feature-state for_k8s_version="v1.12" state="beta" >}}
|
||||||
|
|
||||||
**Note:** This feature requires the `VolumeScheduling` feature gate to be
|
{{< note >}}
|
||||||
|
This feature requires the `VolumeScheduling` feature gate to be
|
||||||
enabled.
|
enabled.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
When a cluster operactor specifies the `WaitForFirstConsumer` volume binding mode, it is no longer necessary
|
When a cluster operactor specifies the `WaitForFirstConsumer` volume binding mode, it is no longer necessary
|
||||||
to restrict provisioning to specific topologies in most situations. However,
|
to restrict provisioning to specific topologies in most situations. However,
|
||||||
@@ -232,8 +236,10 @@ parameters:
|
|||||||
encrypting the volume. If none is supplied but `encrypted` is true, a key is
|
encrypting the volume. If none is supplied but `encrypted` is true, a key is
|
||||||
generated by AWS. See AWS docs for valid ARN value.
|
generated by AWS. See AWS docs for valid ARN value.
|
||||||
|
|
||||||
**Note:** `zone` and `zones` parameters are deprecated and replaced with
|
{{< note >}}
|
||||||
|
`zone` and `zones` parameters are deprecated and replaced with
|
||||||
[allowedTopologies](#allowed-topologies)
|
[allowedTopologies](#allowed-topologies)
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
### GCE PD
|
### GCE PD
|
||||||
|
|
||||||
@@ -269,8 +275,10 @@ specified, Kubernetes will arbitrarily choose among the specified zones. If the
|
|||||||
`zones` parameter is omitted, Kubernetes will arbitrarily choose among zones
|
`zones` parameter is omitted, Kubernetes will arbitrarily choose among zones
|
||||||
managed by the cluster.
|
managed by the cluster.
|
||||||
|
|
||||||
**Note:** `zone` and `zones` parameters are deprecated and replaced with
|
{{< note >}}
|
||||||
|
`zone` and `zones` parameters are deprecated and replaced with
|
||||||
[allowedTopologies](#allowed-topologies)
|
[allowedTopologies](#allowed-topologies)
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
### Glusterfs
|
### Glusterfs
|
||||||
|
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ EBS volume can be pre-populated with data, and that data can be "handed off"
|
|||||||
between Pods.
|
between Pods.
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Important:** You must create an EBS volume using `aws ec2 create-volume` or the AWS API before you can use it.
|
You must create an EBS volume using `aws ec2 create-volume` or the AWS API before you can use it.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
There are some restrictions when using an `awsElasticBlockStore` volume:
|
There are some restrictions when using an `awsElasticBlockStore` volume:
|
||||||
@@ -170,7 +170,7 @@ that data can be "handed off" between Pods. CephFS can be mounted by multiple
|
|||||||
writers simultaneously.
|
writers simultaneously.
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Important:** You must have your own Ceph server running with the share exported before you can use it.
|
You must have your own Ceph server running with the share exported before you can use it.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
See the [CephFS example](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/cephfs/) for more details.
|
See the [CephFS example](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/cephfs/) for more details.
|
||||||
@@ -215,11 +215,11 @@ Note that this path is derived from the volume's `mountPath` and the `path`
|
|||||||
keyed with `log_level`.
|
keyed with `log_level`.
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Important:** You must create a [ConfigMap](/docs/tasks/configure-pod-container/configure-pod-configmap/) before you can use it.
|
You must create a [ConfigMap](/docs/tasks/configure-pod-container/configure-pod-configmap/) before you can use it.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** A Container using a ConfigMap as a [subPath](#using-subpath) volume mount will not
|
A Container using a ConfigMap as a [subPath](#using-subpath) volume mount will not
|
||||||
receive ConfigMap updates.
|
receive ConfigMap updates.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
@@ -229,7 +229,7 @@ A `downwardAPI` volume is used to make downward API data available to applicatio
|
|||||||
It mounts a directory and writes the requested data in plain text files.
|
It mounts a directory and writes the requested data in plain text files.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** A Container using Downward API as a [subPath](#using-subpath) volume mount will not
|
A Container using Downward API as a [subPath](#using-subpath) volume mount will not
|
||||||
receive Downward API updates.
|
receive Downward API updates.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
@@ -245,7 +245,7 @@ or different paths in each Container. When a Pod is removed from a node for
|
|||||||
any reason, the data in the `emptyDir` is deleted forever.
|
any reason, the data in the `emptyDir` is deleted forever.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** A Container crashing does *NOT* remove a Pod from a node, so the data in an `emptyDir` volume is safe across Container crashes.
|
A Container crashing does *NOT* remove a Pod from a node, so the data in an `emptyDir` volume is safe across Container crashes.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
Some uses for an `emptyDir` are:
|
Some uses for an `emptyDir` are:
|
||||||
@@ -290,7 +290,7 @@ You can specify single or multiple target World Wide Names using the parameter
|
|||||||
targetWWNs expect that those WWNs are from multi-path connections.
|
targetWWNs expect that those WWNs are from multi-path connections.
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Important:** You must configure FC SAN Zoning to allocate and mask those LUNs (volumes) to the target WWNs beforehand so that Kubernetes hosts can access them.
|
You must configure FC SAN Zoning to allocate and mask those LUNs (volumes) to the target WWNs beforehand so that Kubernetes hosts can access them.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
See the [FC example](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/fibre_channel) for more details.
|
See the [FC example](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/fibre_channel) for more details.
|
||||||
@@ -307,7 +307,7 @@ reattached by Flocker to the node that the Pod is scheduled. This means data
|
|||||||
can be "handed off" between Pods as required.
|
can be "handed off" between Pods as required.
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Important:** You must have your own Flocker installation running before you can use it.
|
You must have your own Flocker installation running before you can use it.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
See the [Flocker example](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/flocker) for more details.
|
See the [Flocker example](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/flocker) for more details.
|
||||||
@@ -321,7 +321,7 @@ preserved and the volume is merely unmounted. This means that a PD can be
|
|||||||
pre-populated with data, and that data can be "handed off" between Pods.
|
pre-populated with data, and that data can be "handed off" between Pods.
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Important:** You must create a PD using `gcloud` or the GCE API or UI before you can use it.
|
You must create a PD using `gcloud` or the GCE API or UI before you can use it.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
There are some restrictions when using a `gcePersistentDisk`:
|
There are some restrictions when using a `gcePersistentDisk`:
|
||||||
@@ -403,7 +403,7 @@ spec:
|
|||||||
### gitRepo (deprecated) {#gitrepo}
|
### gitRepo (deprecated) {#gitrepo}
|
||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
**Warning:** The gitRepo volume type is deprecated. To provision a container with a git repo, mount an [EmptyDir](#emptydir) into an InitContainer that clones the repo using git, then mount the [EmptyDir](#emptydir) into the Pod's container.
|
The gitRepo volume type is deprecated. To provision a container with a git repo, mount an [EmptyDir](#emptydir) into an InitContainer that clones the repo using git, then mount the [EmptyDir](#emptydir) into the Pod's container.
|
||||||
{{< /warning >}}
|
{{< /warning >}}
|
||||||
|
|
||||||
A `gitRepo` volume is an example of what can be done as a volume plugin. It
|
A `gitRepo` volume is an example of what can be done as a volume plugin. It
|
||||||
@@ -443,7 +443,7 @@ be "handed off" between Pods. GlusterFS can be mounted by multiple writers
|
|||||||
simultaneously.
|
simultaneously.
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Important:** You must have your own GlusterFS installation running before you can use it.
|
You must have your own GlusterFS installation running before you can use it.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
See the [GlusterFS example](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/glusterfs) for more details.
|
See the [GlusterFS example](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/glusterfs) for more details.
|
||||||
@@ -521,7 +521,7 @@ unmounted. This means that an iscsi volume can be pre-populated with data, and
|
|||||||
that data can be "handed off" between Pods.
|
that data can be "handed off" between Pods.
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Important:** You must have your own iSCSI server running with the volume created before you can use it.
|
You must have your own iSCSI server running with the volume created before you can use it.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
A feature of iSCSI is that it can be mounted as read-only by multiple consumers
|
A feature of iSCSI is that it can be mounted as read-only by multiple consumers
|
||||||
@@ -537,7 +537,7 @@ See the [iSCSI example](https://github.com/kubernetes/examples/tree/{{< param "g
|
|||||||
{{< feature-state for_k8s_version="v1.10" state="beta" >}}
|
{{< feature-state for_k8s_version="v1.10" state="beta" >}}
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** The alpha PersistentVolume NodeAffinity annotation has been deprecated
|
The alpha PersistentVolume NodeAffinity annotation has been deprecated
|
||||||
and will be removed in a future release. Existing PersistentVolumes using this
|
and will be removed in a future release. Existing PersistentVolumes using this
|
||||||
annotation must be updated by the user to use the new PersistentVolume
|
annotation must be updated by the user to use the new PersistentVolume
|
||||||
`NodeAffinity` field.
|
`NodeAffinity` field.
|
||||||
@@ -610,7 +610,7 @@ provisioning yet. For an example on how to run an external local provisioner,
|
|||||||
see the [local volume provisioner user guide](https://github.com/kubernetes-incubator/external-storage/tree/master/local-volume).
|
see the [local volume provisioner user guide](https://github.com/kubernetes-incubator/external-storage/tree/master/local-volume).
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** The local PersistentVolume requires manual cleanup and deletion by the
|
The local PersistentVolume requires manual cleanup and deletion by the
|
||||||
user if the external static provisioner is not used to manage the volume
|
user if the external static provisioner is not used to manage the volume
|
||||||
lifecycle.
|
lifecycle.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
@@ -625,7 +625,7 @@ that data can be "handed off" between Pods. NFS can be mounted by multiple
|
|||||||
writers simultaneously.
|
writers simultaneously.
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Important:** You must have your own NFS server running with the share exported before you can use it.
|
You must have your own NFS server running with the share exported before you can use it.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
See the [NFS example](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/nfs) for more details.
|
See the [NFS example](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/nfs) for more details.
|
||||||
@@ -782,7 +782,7 @@ option for the API server. The `path` field specifies a relative path to the mou
|
|||||||
of the projected volume.
|
of the projected volume.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** A Container using a projected volume source as a [subPath](#using-subpath) volume mount will not
|
A Container using a projected volume source as a [subPath](#using-subpath) volume mount will not
|
||||||
receive updates for those volume sources.
|
receive updates for those volume sources.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
@@ -818,7 +818,7 @@ spec:
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Important:** Make sure you have an existing PortworxVolume with name `pxvol`
|
Make sure you have an existing PortworxVolume with name `pxvol`
|
||||||
before using it in the Pod.
|
before using it in the Pod.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
@@ -830,7 +830,7 @@ A `quobyte` volume allows an existing [Quobyte](http://www.quobyte.com) volume t
|
|||||||
be mounted into your Pod.
|
be mounted into your Pod.
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Important:** You must have your own Quobyte setup running with the volumes
|
You must have your own Quobyte setup running with the volumes
|
||||||
created before you can use it.
|
created before you can use it.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
@@ -846,7 +846,7 @@ means that a RBD volume can be pre-populated with data, and that data can
|
|||||||
be "handed off" between Pods.
|
be "handed off" between Pods.
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Important:** You must have your own Ceph installation running before you can use RBD.
|
You must have your own Ceph installation running before you can use RBD.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
A feature of RBD is that it can be mounted as read-only by multiple consumers
|
A feature of RBD is that it can be mounted as read-only by multiple consumers
|
||||||
@@ -866,7 +866,7 @@ volumes (or it can dynamically provision new volumes for persistent volume claim
|
|||||||
[ScaleIO Persistent Volumes](/docs/concepts/storage/persistent-volumes/#scaleio)).
|
[ScaleIO Persistent Volumes](/docs/concepts/storage/persistent-volumes/#scaleio)).
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Important:** You must have an existing ScaleIO cluster already setup and
|
You must have an existing ScaleIO cluster already setup and
|
||||||
running with the volumes created before you can use them.
|
running with the volumes created before you can use them.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
@@ -908,11 +908,11 @@ backed by tmpfs (a RAM-backed filesystem) so they are never written to
|
|||||||
non-volatile storage.
|
non-volatile storage.
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Important:** You must create a secret in the Kubernetes API before you can use it.
|
You must create a secret in the Kubernetes API before you can use it.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** A Container using a Secret as a [subPath](#using-subpath) volume mount will not
|
A Container using a Secret as a [subPath](#using-subpath) volume mount will not
|
||||||
receive Secret updates.
|
receive Secret updates.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
@@ -934,7 +934,7 @@ The StorageOS Container requires 64-bit Linux and has no additional dependencies
|
|||||||
A free developer license is available.
|
A free developer license is available.
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Important:** You must run the StorageOS Container on each node that wants to
|
You must run the StorageOS Container on each node that wants to
|
||||||
access StorageOS volumes or that will contribute storage capacity to the pool.
|
access StorageOS volumes or that will contribute storage capacity to the pool.
|
||||||
For installation instructions, consult the
|
For installation instructions, consult the
|
||||||
[StorageOS documentation](https://docs.storageos.com).
|
[StorageOS documentation](https://docs.storageos.com).
|
||||||
@@ -974,7 +974,7 @@ For more information including Dynamic Provisioning and Persistent Volume Claims
|
|||||||
### vsphereVolume {#vspherevolume}
|
### vsphereVolume {#vspherevolume}
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Prerequisite:** Kubernetes with vSphere Cloud Provider configured. For cloudprovider
|
Prerequisite: Kubernetes with vSphere Cloud Provider configured. For cloudprovider
|
||||||
configuration please refer [vSphere getting started guide](https://vmware.github.io/vsphere-storage-for-kubernetes/documentation/).
|
configuration please refer [vSphere getting started guide](https://vmware.github.io/vsphere-storage-for-kubernetes/documentation/).
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
@@ -982,7 +982,7 @@ A `vsphereVolume` is used to mount a vSphere VMDK Volume into your Pod. The con
|
|||||||
of a volume are preserved when it is unmounted. It supports both VMFS and VSAN datastore.
|
of a volume are preserved when it is unmounted. It supports both VMFS and VSAN datastore.
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Important:** You must create VMDK using one of the following method before using with Pod.
|
You must create VMDK using one of the following method before using with Pod.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
#### Creating a VMDK volume
|
#### Creating a VMDK volume
|
||||||
@@ -1274,7 +1274,7 @@ Its values are:
|
|||||||
[Linux kernel documentation](https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt)
|
[Linux kernel documentation](https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt)
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Caution:** `Bidirectional` mount propagation can be dangerous. It can damage
|
`Bidirectional` mount propagation can be dangerous. It can damage
|
||||||
the host operating system and therefore it is allowed only in privileged
|
the host operating system and therefore it is allowed only in privileged
|
||||||
Containers. Familiarity with Linux kernel behavior is strongly recommended.
|
Containers. Familiarity with Linux kernel behavior is strongly recommended.
|
||||||
In addition, any volume mounts created by Containers in Pods must be destroyed
|
In addition, any volume mounts created by Containers in Pods must be destroyed
|
||||||
|
|||||||
@@ -14,8 +14,9 @@ A _Cron Job_ creates [Jobs](/docs/concepts/workloads/controllers/jobs-run-to-com
|
|||||||
|
|
||||||
One CronJob object is like one line of a _crontab_ (cron table) file. It runs a job periodically
|
One CronJob object is like one line of a _crontab_ (cron table) file. It runs a job periodically
|
||||||
on a given schedule, written in [Cron](https://en.wikipedia.org/wiki/Cron) format.
|
on a given schedule, written in [Cron](https://en.wikipedia.org/wiki/Cron) format.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** All **CronJob** `schedule:` times are denoted in UTC.
|
All **CronJob** `schedule:` times are denoted in UTC.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
For instructions on creating and working with cron jobs, and for an example of a spec file for a cron job, see [Running automated tasks with cron jobs](/docs/tasks/job/automated-tasks-with-cron-jobs).
|
For instructions on creating and working with cron jobs, and for an example of a spec file for a cron job, see [Running automated tasks with cron jobs](/docs/tasks/job/automated-tasks-with-cron-jobs).
|
||||||
|
|||||||
@@ -206,7 +206,7 @@ back-off count is reset if no new failed Pods appear before the Job's next
|
|||||||
status check.
|
status check.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Issue [#54870](https://github.com/kubernetes/kubernetes/issues/54870) still exists for versions of Kubernetes prior to version 1.12
|
Issue [#54870](https://github.com/kubernetes/kubernetes/issues/54870) still exists for versions of Kubernetes prior to version 1.12
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
## Job Termination and Cleanup
|
## Job Termination and Cleanup
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ weight: 20
|
|||||||
{{% capture overview %}}
|
{{% capture overview %}}
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**NOTE:** A [`Deployment`](/docs/concepts/workloads/controllers/deployment/) that configures a [`ReplicaSet`](/docs/concepts/workloads/controllers/replicaset/) is now the recommended way to set up replication.
|
A [`Deployment`](/docs/concepts/workloads/controllers/deployment/) that configures a [`ReplicaSet`](/docs/concepts/workloads/controllers/replicaset/) is now the recommended way to set up replication.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
A _ReplicationController_ ensures that a specified number of pod replicas are running at any one
|
A _ReplicationController_ ensures that a specified number of pod replicas are running at any one
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ weight: 40
|
|||||||
StatefulSet is the workload API object used to manage stateful applications.
|
StatefulSet is the workload API object used to manage stateful applications.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** StatefulSets are stable (GA) in 1.9.
|
StatefulSets are stable (GA) in 1.9.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
{{< glossary_definition term_id="statefulset" length="all" >}}
|
{{< glossary_definition term_id="statefulset" length="all" >}}
|
||||||
@@ -144,7 +144,7 @@ Cluster Domain | Service (ns/name) | StatefulSet (ns/name) | StatefulSet Domain
|
|||||||
kube.local | foo/nginx | foo/web | nginx.foo.svc.kube.local | web-{0..N-1}.nginx.foo.svc.kube.local | web-{0..N-1} |
|
kube.local | foo/nginx | foo/web | nginx.foo.svc.kube.local | web-{0..N-1}.nginx.foo.svc.kube.local | web-{0..N-1} |
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Cluster Domain will be set to `cluster.local` unless
|
Cluster Domain will be set to `cluster.local` unless
|
||||||
[otherwise configured](/docs/concepts/services-networking/dns-pod-service/#how-it-works).
|
[otherwise configured](/docs/concepts/services-networking/dns-pod-service/#how-it-works).
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ A Pod can specify a set of shared storage *volumes*. All containers in the Pod c
|
|||||||
You'll rarely create individual Pods directly in Kubernetes--even singleton Pods. This is because Pods are designed as relatively ephemeral, disposable entities. When a Pod gets created (directly by you, or indirectly by a Controller), it is scheduled to run on a Node in your cluster. The Pod remains on that Node until the process is terminated, the pod object is deleted, the pod is *evicted* for lack of resources, or the Node fails.
|
You'll rarely create individual Pods directly in Kubernetes--even singleton Pods. This is because Pods are designed as relatively ephemeral, disposable entities. When a Pod gets created (directly by you, or indirectly by a Controller), it is scheduled to run on a Node in your cluster. The Pod remains on that Node until the process is terminated, the pod object is deleted, the pod is *evicted* for lack of resources, or the Node fails.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Restarting a container in a Pod should not be confused with restarting the Pod. The Pod itself does not run, but is an environment the containers run in and persists until it is deleted.
|
Restarting a container in a Pod should not be confused with restarting the Pod. The Pod itself does not run, but is an environment the containers run in and persists until it is deleted.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
Pods do not, by themselves, self-heal. If a Pod is scheduled to a Node that fails, or if the scheduling operation itself fails, the Pod is deleted; likewise, a Pod won't survive an eviction due to a lack of resources or Node maintenance. Kubernetes uses a higher-level abstraction, called a *Controller*, that handles the work of managing the relatively disposable Pod instances. Thus, while it is possible to use Pod directly, it's far more common in Kubernetes to manage your pods using a Controller. See [Pods and Controllers](#pods-and-controllers) for more information on how Kubernetes uses Controllers to implement Pod scaling and healing.
|
Pods do not, by themselves, self-heal. If a Pod is scheduled to a Node that fails, or if the scheduling operation itself fails, the Pod is deleted; likewise, a Pod won't survive an eviction due to a lack of resources or Node maintenance. Kubernetes uses a higher-level abstraction, called a *Controller*, that handles the work of managing the relatively disposable Pod instances. Thus, while it is possible to use Pod directly, it's far more common in Kubernetes to manage your pods using a Controller. See [Pods and Controllers](#pods-and-controllers) for more information on how Kubernetes uses Controllers to implement Pod scaling and healing.
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ Pods, Kubernetes modifies the Pod Spec. For changes to `Env`, `EnvFrom`, and
|
|||||||
the Pod; for changes to `Volume`, Kubernetes modifies the Pod Spec.
|
the Pod; for changes to `Volume`, Kubernetes modifies the Pod Spec.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** A Pod Preset is capable of modifying the `.spec.containers` field in a
|
A Pod Preset is capable of modifying the `.spec.containers` field in a
|
||||||
Pod spec when appropriate. *No* resource definition from the Pod Preset will be
|
Pod spec when appropriate. *No* resource definition from the Pod Preset will be
|
||||||
applied to the `initContainers` field.
|
applied to the `initContainers` field.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ This page shows how to automatically generate reference pages for the
|
|||||||
commands provided by the `kubectl` tool.
|
commands provided by the `kubectl` tool.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:**
|
|
||||||
This topic shows how to generate reference documentation for
|
This topic shows how to generate reference documentation for
|
||||||
[kubectl commands](/docs/reference/generated/kubectl/kubectl-commands)
|
[kubectl commands](/docs/reference/generated/kubectl/kubectl-commands)
|
||||||
like
|
like
|
||||||
@@ -132,7 +131,6 @@ on how to do this, see
|
|||||||
Monitor your cherry-pick pull request until it is merged into the release branch.
|
Monitor your cherry-pick pull request until it is merged into the release branch.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:**
|
|
||||||
Proposing a cherry pick requires that you have permission to set a label and a
|
Proposing a cherry pick requires that you have permission to set a label and a
|
||||||
milestone in your pull request. If you don’t have those permissions, you will
|
milestone in your pull request. If you don’t have those permissions, you will
|
||||||
need to work with someone who can set the label and milestone for you.
|
need to work with someone who can set the label and milestone for you.
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ or more comments in the Kubernetes source code.
|
|||||||
### Making changes to comments in the source code
|
### Making changes to comments in the source code
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: The following steps are an example, not a general procedure. Details
|
The following steps are an example, not a general procedure. Details
|
||||||
will be different in your situation.
|
will be different in your situation.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
@@ -184,7 +184,7 @@ to monitor your pull request until it has been merged.
|
|||||||
is an example of a pull request that fixes a typo in the Kubernetes source code.
|
is an example of a pull request that fixes a typo in the Kubernetes source code.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: It can be tricky to determine the correct source file to be changed. In the
|
It can be tricky to determine the correct source file to be changed. In the
|
||||||
preceding example, the authoritative source file is under the `staging` directory
|
preceding example, the authoritative source file is under the `staging` directory
|
||||||
in the `kubernetes/kubernetes` repository. But in your situation,the `staging` directory
|
in the `kubernetes/kubernetes` repository. But in your situation,the `staging` directory
|
||||||
might not be the place to find the authoritative source. For guidance, check the
|
might not be the place to find the authoritative source. For guidance, check the
|
||||||
@@ -208,9 +208,11 @@ commit into the release-1.9 branch. The idea is to cherry pick the commit that e
|
|||||||
the commit that has the results of running the scripts. For instructions, see
|
the commit that has the results of running the scripts. For instructions, see
|
||||||
[Propose a Cherry Pick](https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md).
|
[Propose a Cherry Pick](https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md).
|
||||||
|
|
||||||
**Note:** Proposing a cherry pick requires that you have permission to set a label and a milestone in your
|
{{< note >}}
|
||||||
|
Proposing a cherry pick requires that you have permission to set a label and a milestone in your
|
||||||
pull request. If you don't have those permissions, you will need to work with someone who can set the label
|
pull request. If you don't have those permissions, you will need to work with someone who can set the label
|
||||||
and milestone for you.
|
and milestone for you.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
When you have a pull request in place for cherry picking your one commit into the release-1.9 branch,
|
When you have a pull request in place for cherry picking your one commit into the release-1.9 branch,
|
||||||
the next step is to run these scripts in the release-1.9 branch of your local environment.
|
the next step is to run these scripts in the release-1.9 branch of your local environment.
|
||||||
|
|||||||
@@ -71,7 +71,6 @@ your base directory is `$GOPATH/src/github.com/kubernetes/kubernetes.`
|
|||||||
The remaining steps refer to your base directory as `<k8s-base>`.
|
The remaining steps refer to your base directory as `<k8s-base>`.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:**
|
|
||||||
If you only need to generate, but not change, the reference docs, you don't need to
|
If you only need to generate, but not change, the reference docs, you don't need to
|
||||||
manually get the `kubernetes/kubernetes` repository. When you run the `update-imported-docs`
|
manually get the `kubernetes/kubernetes` repository. When you run the `update-imported-docs`
|
||||||
tool, it automatically clones the `kubernetes/kubernetes` repository.
|
tool, it automatically clones the `kubernetes/kubernetes` repository.
|
||||||
@@ -109,7 +108,7 @@ to do this, see
|
|||||||
Monitor your cherry-pick pull request until it is merged into the release branch.
|
Monitor your cherry-pick pull request until it is merged into the release branch.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Proposing a cherry pick requires that you have permission to set a label
|
Proposing a cherry pick requires that you have permission to set a label
|
||||||
and a milestone in your pull request. If you don’t have those permissions, you will
|
and a milestone in your pull request. If you don’t have those permissions, you will
|
||||||
need to work with someone who can set the label and milestone for you.
|
need to work with someone who can set the label and milestone for you.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|||||||
@@ -12,8 +12,7 @@ This page assumes that you've read and mastered the tasks in the
|
|||||||
learn about more ways to contribute.
|
learn about more ways to contribute.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Some tasks require you to use the Git command line client and other
|
Some tasks require you to use the Git command line client and other tools.
|
||||||
tools.
|
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
{{% /capture %}}
|
{{% /capture %}}
|
||||||
@@ -387,11 +386,11 @@ most up-to-date version of that branch.
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Do not reference a Github issue or pull request by ID or URL in the
|
Do not reference a Github issue or pull request by ID or URL in the
|
||||||
commit message. If you do, it will cause that issue or pull request to get
|
commit message. If you do, it will cause that issue or pull request to get
|
||||||
a notification every time the commit shows up in a new Git branch. You can
|
a notification every time the commit shows up in a new Git branch. You can
|
||||||
link issues and pull requests together later, in the Github UI.
|
link issues and pull requests together later, in the Github UI.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
5. Optionally, you can test your change by staging the site locally using the
|
5. Optionally, you can test your change by staging the site locally using the
|
||||||
`hugo` command. See [View your changes locally](#view-your-changes-locally).
|
`hugo` command. See [View your changes locally](#view-your-changes-locally).
|
||||||
|
|||||||
@@ -29,6 +29,10 @@ Localizations must meet some requirements for workflow (*how* to localize) and o
|
|||||||
|
|
||||||
To add a new localization of the Kubernetes documentation, you'll need to update the website by modifying the [site configuration](#modify-the-site-configuration) and [directory structure](#add-a-new-localization-directory). Then you can start [translating documents](#translating-documents)!
|
To add a new localization of the Kubernetes documentation, you'll need to update the website by modifying the [site configuration](#modify-the-site-configuration) and [directory structure](#add-a-new-localization-directory). Then you can start [translating documents](#translating-documents)!
|
||||||
|
|
||||||
|
{{< note >}}
|
||||||
|
For an example localization-related [pull request](../create-pull-request), see [this pull request](https://github.com/kubernetes/website/pull/8636) to the [Kubernetes website repo](https://github.com/kubernetes/website) adding Korean localization to the Kubernetes docs.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
Let Kubernetes SIG Docs know you're interested in creating a localization! Join the [SIG Docs Slack channel](https://kubernetes.slack.com/messages/C1J0BPD2M/). We're happy to help you get started and answer any questions you have.
|
Let Kubernetes SIG Docs know you're interested in creating a localization! Join the [SIG Docs Slack channel](https://kubernetes.slack.com/messages/C1J0BPD2M/). We're happy to help you get started and answer any questions you have.
|
||||||
|
|
||||||
All localization teams must be self-sustaining with their own resources. We're happy to host your work, but we can't translate it for you.
|
All localization teams must be self-sustaining with their own resources. We're happy to host your work, but we can't translate it for you.
|
||||||
|
|||||||
@@ -213,7 +213,7 @@ documentation.
|
|||||||
include more detail if appropriate.
|
include more detail if appropriate.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: Do not include references to other Github issues or pull
|
Do not include references to other Github issues or pull
|
||||||
requests in your commit message. You can add those to the pull request
|
requests in your commit message. You can add those to the pull request
|
||||||
description later.
|
description later.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
@@ -231,7 +231,7 @@ description later.
|
|||||||
**Create pull request**.
|
**Create pull request**.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: If you don't want to create the pull request now, you can do it
|
If you don't want to create the pull request now, you can do it
|
||||||
later, by browsing to the main URL of the Kubernetes website repository or
|
later, by browsing to the main URL of the Kubernetes website repository or
|
||||||
your fork's repository. The Github website will prompt you to create the
|
your fork's repository. The Github website will prompt you to create the
|
||||||
pull request if it detects that you pushed a new branch to your fork.
|
pull request if it detects that you pushed a new branch to your fork.
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ weight: 10
|
|||||||
|
|
||||||
|
|
||||||
{{% note %}}
|
{{% note %}}
|
||||||
**Note:** For page weights, it can be smart not to use 1, 2, 3 ..., but some other interval, say 10, 20, 30... This allows you to insert pages where you want later.
|
For page weights, it can be smart not to use 1, 2, 3 ..., but some other interval, say 10, 20, 30... This allows you to insert pages where you want later.
|
||||||
{{% /note %}}
|
{{% /note %}}
|
||||||
|
|
||||||
|
|
||||||
@@ -56,7 +56,7 @@ linkTitle: Title used in links
|
|||||||
|
|
||||||
|
|
||||||
{{% note %}}
|
{{% note %}}
|
||||||
**Note:** The above needs to be done per language. If you don't see your section in the menu, it is probably because it is not identified as a section by Hugo. Create a `_index.md` content file in the section folder.
|
The above needs to be done per language. If you don't see your section in the menu, it is probably because it is not identified as a section by Hugo. Create a `_index.md` content file in the section folder.
|
||||||
{{% /note %}}
|
{{% /note %}}
|
||||||
|
|
||||||
### Documentation Side Menu
|
### Documentation Side Menu
|
||||||
|
|||||||
@@ -5,5 +5,5 @@ title: Example #1
|
|||||||
This is an **example** content file inside the **includes** leaf bundle.
|
This is an **example** content file inside the **includes** leaf bundle.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Included content files can also contain shortcodes.
|
Included content files can also contain shortcodes.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
@@ -154,7 +154,9 @@ println "This is tab 2."
|
|||||||
{{</* tabs name="tab_with_md" >}}
|
{{</* tabs name="tab_with_md" >}}
|
||||||
{{% tab name="Markdown" %}}
|
{{% tab name="Markdown" %}}
|
||||||
This is **some markdown.**
|
This is **some markdown.**
|
||||||
{{< note >}}**Note:** It can even contain shortcodes.{{< /note >}}
|
{{< note >}}
|
||||||
|
It can even contain shortcodes.
|
||||||
|
{{< /note >}}
|
||||||
{{% /tab %}}
|
{{% /tab %}}
|
||||||
{{< tab name="HTML" >}}
|
{{< tab name="HTML" >}}
|
||||||
<div>
|
<div>
|
||||||
@@ -170,7 +172,11 @@ Will be rendered as:
|
|||||||
{{< tabs name="tab_with_md" >}}
|
{{< tabs name="tab_with_md" >}}
|
||||||
{{% tab name="Markdown" %}}
|
{{% tab name="Markdown" %}}
|
||||||
This is **some markdown.**
|
This is **some markdown.**
|
||||||
{{< note >}}**Note:** It can even contain shortcodes.{{< /note >}}
|
|
||||||
|
{{< note >}}
|
||||||
|
It can even contain shortcodes.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
{{% /tab %}}
|
{{% /tab %}}
|
||||||
{{< tab name="HTML" >}}
|
{{< tab name="HTML" >}}
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ directory of the [`kubernetes/website`](https://github.com/kubernetes/website)
|
|||||||
repository.
|
repository.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: Every new topic needs to use a template. If you are unsure which
|
Every new topic needs to use a template. If you are unsure which
|
||||||
template to use for a new topic, start with the
|
template to use for a new topic, start with the
|
||||||
[concept template](#concept-template).
|
[concept template](#concept-template).
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ docs, follow the instructions on
|
|||||||
{{% capture body %}}
|
{{% capture body %}}
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Kubernetes documentation uses [Blackfriday Markdown Renderer](https://github.com/russross/blackfriday) along with a few [Hugo Shortcodes](/docs/home/contribute/includes/) to support glossary entries, tabs,
|
Kubernetes documentation uses [Blackfriday Markdown Renderer](https://github.com/russross/blackfriday) along with a few [Hugo Shortcodes](/docs/home/contribute/includes/) to support glossary entries, tabs,
|
||||||
and representing feature state.
|
and representing feature state.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
@@ -189,7 +189,8 @@ A list of Kubernetes-specific terms and words to be used consistently across the
|
|||||||
</table>
|
</table>
|
||||||
|
|
||||||
## Shortcodes
|
## Shortcodes
|
||||||
Hugo [Shortcodes](https://gohugo.io/content-management/shortcodes) help create different rhetorical appeal levels. Our documentation supports three different shortcodes in this category: **Note:** {{</* note */>}}, **Caution:** {{</* caution */>}}, and **Warning:** {{</* warning */>}}.
|
|
||||||
|
Hugo [Shortcodes](https://gohugo.io/content-management/shortcodes) help create different rhetorical appeal levels. Our documentation supports three different shortcodes in this category: **Note** {{</* note */>}}, **Caution** {{</* caution */>}}, and **Warning** {{</* warning */>}}.
|
||||||
|
|
||||||
1. Surround the text with an opening and closing shortcode.
|
1. Surround the text with an opening and closing shortcode.
|
||||||
|
|
||||||
@@ -197,7 +198,7 @@ Hugo [Shortcodes](https://gohugo.io/content-management/shortcodes) help create d
|
|||||||
|
|
||||||
```
|
```
|
||||||
{{</* note */>}}
|
{{</* note */>}}
|
||||||
**Note:** The prefix you use is the same text you use in the tag.
|
No need to include a prefix; the shortcode automatically provides on (Note:, Caution:, etc.).
|
||||||
{{</* /note */>}}
|
{{</* /note */>}}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -205,7 +206,7 @@ Hugo [Shortcodes](https://gohugo.io/content-management/shortcodes) help create d
|
|||||||
The output is:
|
The output is:
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** The prefix you choose is the same text for the tag.
|
The prefix you choose is the same text for the tag.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
### Note
|
### Note
|
||||||
@@ -216,14 +217,14 @@ For example:
|
|||||||
|
|
||||||
```
|
```
|
||||||
{{</* note */>}}
|
{{</* note */>}}
|
||||||
**Note:** You can _still_ use Markdown inside these callouts.
|
You can _still_ use Markdown inside these callouts.
|
||||||
{{</* /note */>}}
|
{{</* /note */>}}
|
||||||
```
|
```
|
||||||
|
|
||||||
The output is:
|
The output is:
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** You can _still_ use Markdown inside these callouts.
|
You can _still_ use Markdown inside these callouts.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
### Caution
|
### Caution
|
||||||
@@ -234,14 +235,14 @@ For example:
|
|||||||
|
|
||||||
```
|
```
|
||||||
{{</* caution */>}}
|
{{</* caution */>}}
|
||||||
**Caution:** The callout style only applies to the line directly above the tag.
|
The callout style only applies to the line directly above the tag.
|
||||||
{{</* /caution */>}}
|
{{</* /caution */>}}
|
||||||
```
|
```
|
||||||
|
|
||||||
The output is:
|
The output is:
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Caution:** The callout style only applies to the line directly above the tag.
|
The callout style only applies to the line directly above the tag.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
### Warning
|
### Warning
|
||||||
@@ -252,7 +253,7 @@ For example:
|
|||||||
|
|
||||||
```
|
```
|
||||||
{{</* warning */>}}
|
{{</* warning */>}}
|
||||||
**Warning:** Beware.
|
Beware.
|
||||||
{{</* /warning */>}}
|
{{</* /warning */>}}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -260,7 +261,7 @@ For example:
|
|||||||
The output is:
|
The output is:
|
||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
**Warning:** Beware.
|
Beware.
|
||||||
{{< /warning >}}
|
{{< /warning >}}
|
||||||
|
|
||||||
### Katacoda Embedded Live Environment
|
### Katacoda Embedded Live Environment
|
||||||
@@ -273,7 +274,7 @@ The Embedded Live Environment is configured to run `minikube start` and lets use
|
|||||||
as the documentation.
|
as the documentation.
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Caution:** The session is limited to 15 minutes.
|
The session is limited to 15 minutes.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
For example:
|
For example:
|
||||||
@@ -306,7 +307,8 @@ The output is:
|
|||||||
1. Preheat oven to 350˚F
|
1. Preheat oven to 350˚F
|
||||||
|
|
||||||
1. Prepare the batter, and pour into springform pan.
|
1. Prepare the batter, and pour into springform pan.
|
||||||
{{< note >}}**Note:** Grease the pan for best results.{{< /note >}}
|
|
||||||
|
{{< note >}}Grease the pan for best results.{{< /note >}}
|
||||||
|
|
||||||
1. Bake for 20-25 minutes or until set.
|
1. Bake for 20-25 minutes or until set.
|
||||||
|
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ file located at `/content/en/examples/pods/storage/gce-volume.yaml`.
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: To show raw Hugo shortcodes as in the above example and prevent Hugo
|
To show raw Hugo shortcodes as in the above example and prevent Hugo
|
||||||
from interpreting them, use C-style comments directly after the `<` and before
|
from interpreting them, use C-style comments directly after the `<` and before
|
||||||
the `>` characters. View the code for this page for an example.
|
the `>` characters. View the code for this page for an example.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
@@ -155,7 +155,7 @@ kubectl create -f https://k8s.io/examples/pods/storage/gce-volume.yaml
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: When adding new YAML files to the `<LANG>/examples` directory, make
|
When adding new YAML files to the `<LANG>/examples` directory, make
|
||||||
sure the file is also included into the `<LANG>/examples_test.go` file. The
|
sure the file is also included into the `<LANG>/examples_test.go` file. The
|
||||||
Travis CI for the Website automatically runs this test case when PRs are
|
Travis CI for the Website automatically runs this test case when PRs are
|
||||||
submitted to ensure all examples pass the tests.
|
submitted to ensure all examples pass the tests.
|
||||||
|
|||||||
@@ -90,7 +90,7 @@
|
|||||||
'prefix': 'anote'
|
'prefix': 'anote'
|
||||||
'body': """
|
'body': """
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: $1
|
$1
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -99,14 +99,14 @@
|
|||||||
'prefix': 'acaution'
|
'prefix': 'acaution'
|
||||||
'body': """
|
'body': """
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Caution**: $1
|
$1
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
"""
|
"""
|
||||||
'Insert warning':
|
'Insert warning':
|
||||||
'prefix': 'awarning'
|
'prefix': 'awarning'
|
||||||
'body': """
|
'body': """
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
**Warning**: $1
|
$1
|
||||||
{{< /warning >}}
|
{{< /warning >}}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,9 @@ You need 2 or more machines with Fedora installed.
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
**NOTE:** Choose an IP range that is *NOT* part of the public IP address range.
|
{{< note >}}
|
||||||
|
Choose an IP range that is *NOT* part of the public IP address range.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
Add the configuration to the etcd server on fed-master.
|
Add the configuration to the etcd server on fed-master.
|
||||||
|
|
||||||
@@ -71,7 +73,9 @@ FLANNEL_ETCD_KEY="/coreos.com/network"
|
|||||||
FLANNEL_OPTIONS=""
|
FLANNEL_OPTIONS=""
|
||||||
```
|
```
|
||||||
|
|
||||||
**Note:** By default, flannel uses the interface for the default route. If you have multiple interfaces and would like to use an interface other than the default route one, you could add "-iface=" to FLANNEL_OPTIONS. For additional options, run `flanneld --help` on command line.
|
{{< note >}}
|
||||||
|
By default, flannel uses the interface for the default route. If you have multiple interfaces and would like to use an interface other than the default route one, you could add "-iface=" to FLANNEL_OPTIONS. For additional options, run `flanneld --help` on command line.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
Enable the flannel service.
|
Enable the flannel service.
|
||||||
|
|
||||||
|
|||||||
@@ -117,6 +117,7 @@ juju run-action new-etcd/0 restore
|
|||||||
{{% /capture %}}
|
{{% /capture %}}
|
||||||
|
|
||||||
{{% capture discussion %}}
|
{{% capture discussion %}}
|
||||||
|
|
||||||
## Known Limitations
|
## Known Limitations
|
||||||
|
|
||||||
#### Loss of PKI warning
|
#### Loss of PKI warning
|
||||||
@@ -126,10 +127,9 @@ all TLS pki will be lost. No PKI migration occurs outside
|
|||||||
of the units requesting and registering the certificates.
|
of the units requesting and registering the certificates.
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Caution:** Mismanaging this configuration will result in locking yourself
|
Mismanaging this configuration will result in locking yourself out of the cluster,
|
||||||
out of the cluster, and can potentially break existing deployments in very
|
and can potentially break existing deployments in very strange ways relating to x509
|
||||||
strange ways relating to x509 validation of certificates, which affects both
|
validation of certificates, which affects both servers and clients.
|
||||||
servers and clients.
|
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
#### Restoring from snapshot on a scaled cluster
|
#### Restoring from snapshot on a scaled cluster
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ This page shows you how to properly decommission a cluster.
|
|||||||
This page assumes you have a working Juju deployed cluster.
|
This page assumes you have a working Juju deployed cluster.
|
||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
**Warning:** By the time you've reached this step you should have backed up your workloads and pertinent data; this section is for the complete destruction of a cluster.
|
By the time you've reached this step you should have backed up your workloads and pertinent data; this section is for the complete destruction of a cluster.
|
||||||
{{< /warning >}}
|
{{< /warning >}}
|
||||||
|
|
||||||
{{% /capture %}}
|
{{% /capture %}}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ This page shows how the various network portions of a cluster work and how to co
|
|||||||
This page assumes you have a working Juju deployed cluster.
|
This page assumes you have a working Juju deployed cluster.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Note that if you deploy a cluster via conjure-up or the CDK bundles, manually deploying CNI plugins is unnecessary.
|
Note that if you deploy a cluster via conjure-up or the CDK bundles, manually deploying CNI plugins is unnecessary.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
{{% /capture %}}
|
{{% /capture %}}
|
||||||
|
|
||||||
|
|||||||
@@ -43,8 +43,11 @@ loop loop
|
|||||||
rootfs rootfs
|
rootfs rootfs
|
||||||
tmpfs tmpfs
|
tmpfs tmpfs
|
||||||
```
|
```
|
||||||
> **Note**: This listing is for the Amazon Web Services public cloud.
|
|
||||||
> Different clouds may have different pool names.
|
{{< note >}}
|
||||||
|
This listing is for the Amazon Web Services public cloud. Different clouds may have
|
||||||
|
different pool names.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
Add a storage pool to the ceph-osd charm by NAME,SIZE,COUNT:
|
Add a storage pool to the ceph-osd charm by NAME,SIZE,COUNT:
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ This page will outline how to manage and execute a Kubernetes upgrade.
|
|||||||
This page assumes you have a working deployed cluster.
|
This page assumes you have a working deployed cluster.
|
||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
**Warning:** You should always back up all your data before attempting an upgrade.
|
You should always back up all your data before attempting an upgrade.
|
||||||
Don't forget to include the workload inside your cluster!
|
Don't forget to include the workload inside your cluster!
|
||||||
Refer to the [backup documentation](/docs/getting-started-guides/ubuntu/backups).
|
Refer to the [backup documentation](/docs/getting-started-guides/ubuntu/backups).
|
||||||
{{< /warning >}}
|
{{< /warning >}}
|
||||||
@@ -83,7 +83,7 @@ First you need to upgrade the masters:
|
|||||||
juju upgrade-charm kubernetes-master
|
juju upgrade-charm kubernetes-master
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Always upgrade the masters before the workers.
|
Always upgrade the masters before the workers.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
Once the latest charm is deployed, the channel for Kubernetes can be selected by issuing the following:
|
Once the latest charm is deployed, the channel for Kubernetes can be selected by issuing the following:
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ a deployed cluster. The following example will skip the `Flaky`, `Slow`, and
|
|||||||
juju run-action kubernetes-e2e/0 test skip='\[(Flaky|Slow|Feature:.*)\]'
|
juju run-action kubernetes-e2e/0 test skip='\[(Flaky|Slow|Feature:.*)\]'
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** The escaping of the regex due to how bash handles brackets.
|
The escaping of the regex due to how bash handles brackets.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
To see the different types of tests the Kubernetes end-to-end charm has access
|
To see the different types of tests the Kubernetes end-to-end charm has access
|
||||||
@@ -112,7 +112,7 @@ command, as well as a flat file on disk on the `kubernetes-e2e` unit that
|
|||||||
executed the test.
|
executed the test.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** The results will only be available once the action has
|
The results will only be available once the action has
|
||||||
completed the test run. End-to-end testing can be quite time consuming, often
|
completed the test run. End-to-end testing can be quite time consuming, often
|
||||||
taking more than 1 hour, depending on configuration.
|
taking more than 1 hour, depending on configuration.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ title: Using Windows Server Containers in Kubernetes
|
|||||||
toc_hide: true
|
toc_hide: true
|
||||||
---
|
---
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** These instructions were recently updated based on Windows Server platform enhancements and the Kubernetes v1.9 release
|
These instructions were recently updated based on Windows Server platform enhancements and the Kubernetes v1.9 release
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
Kubernetes version 1.5 introduced Alpha support for Windows Server
|
Kubernetes version 1.5 introduced Alpha support for Windows Server
|
||||||
@@ -23,7 +23,7 @@ Containers on Kubernetes include:
|
|||||||
The Kubernetes control plane (API Server, Scheduler, Controller Manager, etc) continue to run on Linux, while the kubelet and kube-proxy can be run on Windows Server 2016 or later
|
The Kubernetes control plane (API Server, Scheduler, Controller Manager, etc) continue to run on Linux, while the kubelet and kube-proxy can be run on Windows Server 2016 or later
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Windows Server Containers on Kubernetes is a Beta feature in Kubernetes v1.9
|
Windows Server Containers on Kubernetes is a Beta feature in Kubernetes v1.9
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
## Get Windows Binaries
|
## Get Windows Binaries
|
||||||
@@ -159,7 +159,7 @@ Note: this file assumes that a user previous created 'l2bridge' host networks on
|
|||||||
#### For 3. Open vSwitch (OVS) & Open Virtual Network (OVN) with Overlay
|
#### For 3. Open vSwitch (OVS) & Open Virtual Network (OVN) with Overlay
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Fully automated setup via Ansible playbooks is [available](https://github.com/openvswitch/ovn-kubernetes/tree/master/contrib).
|
Fully automated setup via Ansible playbooks is [available](https://github.com/openvswitch/ovn-kubernetes/tree/master/contrib).
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
For manual setup, continue the following steps.
|
For manual setup, continue the following steps.
|
||||||
@@ -264,7 +264,7 @@ Because your cluster has both Linux and Windows nodes, you must explicitly set t
|
|||||||
{{< codenew file="windows/simple-pod.yaml" >}}
|
{{< codenew file="windows/simple-pod.yaml" >}}
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** This example assumes you are running on Windows Server 1709, so uses the image tag to support that. If you are on a different version, you will need to update the tag. For example, if on Windows Server 2016, update to use `"image": "microsoft/iis"` which will default to that OS version.
|
This example assumes you are running on Windows Server 1709, so uses the image tag to support that. If you are on a different version, you will need to update the tag. For example, if on Windows Server 2016, update to use `"image": "microsoft/iis"` which will default to that OS version.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
### Secrets and ConfigMaps
|
### Secrets and ConfigMaps
|
||||||
|
|||||||
@@ -49,12 +49,14 @@ properties:
|
|||||||
- `/foo/*` matches all subpaths of `/foo/`.
|
- `/foo/*` matches all subpaths of `/foo/`.
|
||||||
- `readonly`, type boolean, when true, means that the Resource-matching policy only applies to get, list, and watch operations, Non-resource-matching policy only applies to get operation.
|
- `readonly`, type boolean, when true, means that the Resource-matching policy only applies to get, list, and watch operations, Non-resource-matching policy only applies to get operation.
|
||||||
|
|
||||||
**NOTES:** An unset property is the same as a property set to the zero value for its type
|
{{< note >}}
|
||||||
|
An unset property is the same as a property set to the zero value for its type
|
||||||
(e.g. empty string, 0, false). However, unset should be preferred for
|
(e.g. empty string, 0, false). However, unset should be preferred for
|
||||||
readability.
|
readability.
|
||||||
|
|
||||||
In the future, policies may be expressed in a JSON format, and managed via a
|
In the future, policies may be expressed in a JSON format, and managed via a
|
||||||
REST interface.
|
REST interface.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
## Authorization Algorithm
|
## Authorization Algorithm
|
||||||
|
|
||||||
|
|||||||
@@ -66,11 +66,11 @@ kube-apiserver --enable-admission-plugins=NamespaceLifecycle,LimitRanger ...
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: Depending on the way your Kubernetes cluster is deployed and how the
|
Depending on the way your Kubernetes cluster is deployed and how the API server is
|
||||||
API server is started, you may need to apply the settings in different ways.
|
started, you may need to apply the settings in different ways. For example, you may
|
||||||
For example, you may have to modify the systemd unit file if the API server is
|
have to modify the systemd unit file if the API server is deployed as a systemd
|
||||||
deployed as a systemd service, you may modify the manifest file for the API
|
service, you may modify the manifest file for the API server if Kubernetes is deployed
|
||||||
server if Kubernetes is deployed in a self-hosted way.
|
in a self-hosted way.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
## How do I turn off an admission controller?
|
## How do I turn off an admission controller?
|
||||||
@@ -489,7 +489,7 @@ plugin configuration file as the node selector.
|
|||||||
Conflicts result in rejection.
|
Conflicts result in rejection.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** PodNodeSelector allows forcing pods to run on specifically labeled nodes. Also see the PodTolerationRestriction
|
PodNodeSelector allows forcing pods to run on specifically labeled nodes. Also see the PodTolerationRestriction
|
||||||
admission plugin, which allows preventing pods from running on specifically tainted nodes.
|
admission plugin, which allows preventing pods from running on specifically tainted nodes.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
@@ -498,7 +498,7 @@ admission plugin, which allows preventing pods from running on specifically tain
|
|||||||
This admission controller implements additional validations for checking incoming `PersistentVolumeClaim` resize requests.
|
This admission controller implements additional validations for checking incoming `PersistentVolumeClaim` resize requests.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Support for volume resizing is available as an alpha feature. Admins must set the feature gate `ExpandPersistentVolumes`
|
Support for volume resizing is available as an alpha feature. Admins must set the feature gate `ExpandPersistentVolumes`
|
||||||
to `true` to enable resizing.
|
to `true` to enable resizing.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
@@ -610,7 +610,7 @@ Yes.
|
|||||||
For Kubernetes version 1.10 and later, we recommend running the following set of admission controllers using the `--enable-admission-plugins` flag (**order doesn't matter**).
|
For Kubernetes version 1.10 and later, we recommend running the following set of admission controllers using the `--enable-admission-plugins` flag (**order doesn't matter**).
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** `--admission-control` was deprecated in 1.10 and replaced with `--enable-admission-plugins`.
|
`--admission-control` was deprecated in 1.10 and replaced with `--enable-admission-plugins`.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ The token file is a csv file with a minimum of 3 columns: token, user name, user
|
|||||||
followed by optional group names.
|
followed by optional group names.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** If you have more than one group the column must be double quoted e.g.
|
If you have more than one group the column must be double quoted e.g.
|
||||||
|
|
||||||
```conf
|
```conf
|
||||||
token,user,uid,"group1,group2,group3"
|
token,user,uid,"group1,group2,group3"
|
||||||
@@ -190,7 +190,7 @@ talk to the API server. Accounts may be explicitly associated with pods using th
|
|||||||
`serviceAccountName` field of a `PodSpec`.
|
`serviceAccountName` field of a `PodSpec`.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** `serviceAccountName` is usually omitted because this is done automatically.
|
`serviceAccountName` is usually omitted because this is done automatically.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
@@ -246,7 +246,7 @@ type: kubernetes.io/service-account-token
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Values are base64 encoded because secrets are always base64 encoded.
|
Values are base64 encoded because secrets are always base64 encoded.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
The signed JWT can be used as a bearer token to authenticate as the given service
|
The signed JWT can be used as a bearer token to authenticate as the given service
|
||||||
@@ -510,8 +510,9 @@ It is designed for use in combination with an authenticating proxy, which sets t
|
|||||||
* `--requestheader-username-headers` Required, case-insensitive. Header names to check, in order, for the user identity. The first header containing a value is used as the username.
|
* `--requestheader-username-headers` Required, case-insensitive. Header names to check, in order, for the user identity. The first header containing a value is used as the username.
|
||||||
* `--requestheader-group-headers` 1.6+. Optional, case-insensitive. "X-Remote-Group" is suggested. Header names to check, in order, for the user's groups. All values in all specified headers are used as group names.
|
* `--requestheader-group-headers` 1.6+. Optional, case-insensitive. "X-Remote-Group" is suggested. Header names to check, in order, for the user's groups. All values in all specified headers are used as group names.
|
||||||
* `--requestheader-extra-headers-prefix` 1.6+. Optional, case-insensitive. "X-Remote-Extra-" is suggested. Header prefixes to look for to determine extra information about the user (typically used by the configured authorization plugin). Any headers beginning with any of the specified prefixes have the prefix removed. The remainder of the header name is lowercased and [percent-decoded](https://tools.ietf.org/html/rfc3986#section-2.1) and becomes the extra key, and the header value is the extra value.
|
* `--requestheader-extra-headers-prefix` 1.6+. Optional, case-insensitive. "X-Remote-Extra-" is suggested. Header prefixes to look for to determine extra information about the user (typically used by the configured authorization plugin). Any headers beginning with any of the specified prefixes have the prefix removed. The remainder of the header name is lowercased and [percent-decoded](https://tools.ietf.org/html/rfc3986#section-2.1) and becomes the extra key, and the header value is the extra value.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Prior to 1.11.3 (and 1.10.7, 1.9.11), the extra key could only contain characters which were [legal in HTTP header labels](https://tools.ietf.org/html/rfc7230#section-3.2.6).
|
Prior to 1.11.3 (and 1.10.7, 1.9.11), the extra key could only contain characters which were [legal in HTTP header labels](https://tools.ietf.org/html/rfc7230#section-3.2.6).
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
For example, with this configuration:
|
For example, with this configuration:
|
||||||
@@ -601,7 +602,7 @@ The following HTTP headers can be used to performing an impersonation request:
|
|||||||
* `Impersonate-Extra-( extra name )`: A dynamic header used to associate extra fields with the user. Optional. Requires "Impersonate-User". In order to be preserved consistently, `( extra name )` should be lower-case, and any characters which aren't [legal in HTTP header labels](https://tools.ietf.org/html/rfc7230#section-3.2.6) MUST be utf8 and [percent-encoded](https://tools.ietf.org/html/rfc3986#section-2.1).
|
* `Impersonate-Extra-( extra name )`: A dynamic header used to associate extra fields with the user. Optional. Requires "Impersonate-User". In order to be preserved consistently, `( extra name )` should be lower-case, and any characters which aren't [legal in HTTP header labels](https://tools.ietf.org/html/rfc7230#section-3.2.6) MUST be utf8 and [percent-encoded](https://tools.ietf.org/html/rfc3986#section-2.1).
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Prior to 1.11.3 (and 1.10.7, 1.9.11), `( extra name )` could only contain characters which were [legal in HTTP header labels](https://tools.ietf.org/html/rfc7230#section-3.2.6).
|
Prior to 1.11.3 (and 1.10.7, 1.9.11), `( extra name )` could only contain characters which were [legal in HTTP header labels](https://tools.ietf.org/html/rfc7230#section-3.2.6).
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
An example set of headers:
|
An example set of headers:
|
||||||
|
|||||||
@@ -168,12 +168,11 @@ secrets the user cannot themselves read, or that run under a service account
|
|||||||
with different/greater permissions.
|
with different/greater permissions.
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Caution:** System administrators, use care when granting access to pod
|
System administrators, use care when granting access to pod creation. A user
|
||||||
creation. A user granted permission to create pods (or controllers that create
|
granted permission to create pods (or controllers that create pods) in the
|
||||||
pods) in the namespace can: read all secrets in the namespace; read all config
|
namespace can: read all secrets in the namespace; read all config maps in the
|
||||||
maps in the namespace; and impersonate any service account in the namespace and
|
namespace; and impersonate any service account in the namespace and take any
|
||||||
take any action the account could take. This applies regardless of authorization
|
action the account could take. This applies regardless of authorization mode.
|
||||||
mode.
|
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
{{% /capture %}}
|
{{% /capture %}}
|
||||||
|
|
||||||
|
|||||||
@@ -179,7 +179,7 @@ verify the JWS using the `HS256` scheme (HMAC-SHA256) with the full token (e.g.
|
|||||||
is used.
|
is used.
|
||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
**Warning:** Any party with a bootstrapping token can create a valid signature for that
|
Any party with a bootstrapping token can create a valid signature for that
|
||||||
token. When using ConfigMap signing it's discouraged to share the same token with
|
token. When using ConfigMap signing it's discouraged to share the same token with
|
||||||
many clients, since a compromised client can potentially man-in-the middle another
|
many clients, since a compromised client can potentially man-in-the middle another
|
||||||
client relying on the signature to bootstrap TLS trust.
|
client relying on the signature to bootstrap TLS trust.
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ webhooks:
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** When using `clientConfig.service`, the server cert must be valid for
|
When using `clientConfig.service`, the server cert must be valid for
|
||||||
`<svc_name>.<svc_namespace>.svc`.
|
`<svc_name>.<svc_namespace>.svc`.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
@@ -132,7 +132,7 @@ After you create the webhook configuration, the system will take a few seconds
|
|||||||
to honor the new configuration.
|
to honor the new configuration.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** When the webhook plugin is deployed into the Kubernetes cluster as a
|
When the webhook plugin is deployed into the Kubernetes cluster as a
|
||||||
service, it has to expose its service on the 443 port. The communication
|
service, it has to expose its service on the 443 port. The communication
|
||||||
between the API server and the webhook service may fail if a different port
|
between the API server and the webhook service may fail if a different port
|
||||||
is used.
|
is used.
|
||||||
@@ -228,7 +228,7 @@ admission controller), or to inject defaults (e.g., the
|
|||||||
admission controller), etc.
|
admission controller), etc.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** If your use case does not involve mutating objects, consider using
|
If your use case does not involve mutating objects, consider using
|
||||||
external admission webhooks, as they have better performance.
|
external admission webhooks, as they have better performance.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
|
|||||||
@@ -807,7 +807,7 @@ In order from most secure to least secure, the approaches are:
|
|||||||
|
|
||||||
If an application does not specify a `serviceAccountName`, it uses the "default" service account.
|
If an application does not specify a `serviceAccountName`, it uses the "default" service account.
|
||||||
|
|
||||||
{{< note >}}**Note:** Permissions given to the "default" service
|
{{< note >}}Permissions given to the "default" service
|
||||||
account are available to any pod in the namespace that does not
|
account are available to any pod in the namespace that does not
|
||||||
specify a `serviceAccountName`.{{< /note >}}
|
specify a `serviceAccountName`.{{< /note >}}
|
||||||
|
|
||||||
@@ -823,7 +823,7 @@ In order from most secure to least secure, the approaches are:
|
|||||||
Many [add-ons](/docs/concepts/cluster-administration/addons/) currently run as the "default" service account in the `kube-system` namespace.
|
Many [add-ons](/docs/concepts/cluster-administration/addons/) currently run as the "default" service account in the `kube-system` namespace.
|
||||||
To allow those add-ons to run with super-user access, grant cluster-admin permissions to the "default" service account in the `kube-system` namespace.
|
To allow those add-ons to run with super-user access, grant cluster-admin permissions to the "default" service account in the `kube-system` namespace.
|
||||||
|
|
||||||
{{< note >}}**Note:** Enabling this means the `kube-system`
|
{{< note >}}Enabling this means the `kube-system`
|
||||||
namespace contains secrets that grant super-user access to the
|
namespace contains secrets that grant super-user access to the
|
||||||
API.{{< /note >}}
|
API.{{< /note >}}
|
||||||
|
|
||||||
@@ -863,9 +863,11 @@ In order from most secure to least secure, the approaches are:
|
|||||||
|
|
||||||
If you don't care about partitioning permissions at all, you can grant super-user access to all service accounts.
|
If you don't care about partitioning permissions at all, you can grant super-user access to all service accounts.
|
||||||
|
|
||||||
{{< warning >}}**Warning:** This allows any user with read access
|
{{< warning >}}
|
||||||
|
This allows any user with read access
|
||||||
to secrets or the ability to create a pod to access super-user
|
to secrets or the ability to create a pod to access super-user
|
||||||
credentials.{{< /warning >}}
|
credentials.
|
||||||
|
{{< /warning >}}
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl create clusterrolebinding serviceaccounts-cluster-admin \
|
kubectl create clusterrolebinding serviceaccounts-cluster-admin \
|
||||||
@@ -909,7 +911,7 @@ in the server logs, you can remove the ABAC authorizer.
|
|||||||
You can replicate a permissive policy using RBAC role bindings.
|
You can replicate a permissive policy using RBAC role bindings.
|
||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
**Warning:** The following policy allows **ALL** service accounts to act as cluster administrators.
|
The following policy allows **ALL** service accounts to act as cluster administrators.
|
||||||
Any application running in a container receives service account credentials automatically,
|
Any application running in a container receives service account credentials automatically,
|
||||||
and could perform any action against the API, including viewing secrets and modifying permissions.
|
and could perform any action against the API, including viewing secrets and modifying permissions.
|
||||||
This is not a recommended policy.
|
This is not a recommended policy.
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ A *Beta* feature means:
|
|||||||
that can be upgraded independently, you may be able to relax this restriction.
|
that can be upgraded independently, you may be able to relax this restriction.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Please do try *Beta* features and give feedback on them!
|
Please do try *Beta* features and give feedback on them!
|
||||||
After they exit beta, it may not be practical for us to make more changes.
|
After they exit beta, it may not be practical for us to make more changes.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
|
|||||||
@@ -221,7 +221,7 @@ specified by `--kubeconfig`. The certificate and key file will be placed in the
|
|||||||
directory specified by `--cert-dir`.
|
directory specified by `--cert-dir`.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** The following flags are required to enable this bootstrapping when starting the kubelet:
|
The following flags are required to enable this bootstrapping when starting the kubelet:
|
||||||
|
|
||||||
```
|
```
|
||||||
--bootstrap-kubeconfig="/path/to/bootstrap/kubeconfig"
|
--bootstrap-kubeconfig="/path/to/bootstrap/kubeconfig"
|
||||||
@@ -251,7 +251,7 @@ certificate. To enable this feature pass the following flag to the kubelet:
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** The CSR approving controllers implemented in core Kubernetes do not
|
The CSR approving controllers implemented in core Kubernetes do not
|
||||||
approve node serving certificates for [security
|
approve node serving certificates for [security
|
||||||
reasons](https://github.com/kubernetes/community/pull/1982). To use
|
reasons](https://github.com/kubernetes/community/pull/1982). To use
|
||||||
`RotateKubeletServerCertificate` operators need to run a custom approving
|
`RotateKubeletServerCertificate` operators need to run a custom approving
|
||||||
|
|||||||
@@ -16,5 +16,7 @@ tags:
|
|||||||
|
|
||||||
Their primary responsibility is keeping a cluster up and running, which may involve periodic maintenance activities or upgrades.<br>
|
Their primary responsibility is keeping a cluster up and running, which may involve periodic maintenance activities or upgrades.<br>
|
||||||
|
|
||||||
**NOTE:** Cluster operators are different from the [Operator pattern](https://coreos.com/operators) that extends the Kubernetes API.
|
{{< note >}}
|
||||||
|
Cluster operators are different from the [Operator pattern](https://coreos.com/operators) that extends the Kubernetes API.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
|
|||||||
@@ -50,12 +50,14 @@ If you do not specify a generator flag, other flags prompt you to use a specific
|
|||||||
| Job | `--restart=OnFailure` | `--restart=OnFailure` | `--restart=OnFailure` OR `--restart=Never` | N/A |
|
| Job | `--restart=OnFailure` | `--restart=OnFailure` | `--restart=OnFailure` OR `--restart=Never` | N/A |
|
||||||
| Cron Job | `--schedule=<cron>` | N/A | N/A | N/A |
|
| Cron Job | `--schedule=<cron>` | N/A | N/A | N/A |
|
||||||
|
|
||||||
**Note:** These flags use a default generator only when you have not specified
|
{{< note >}}
|
||||||
any flag. This means that when you combine `--generator` with other flags the generator that you specified later does not change. For example, in a cluster v1.4, if you initially specify
|
These flags use a default generator only when you have not specified any flag.
|
||||||
|
This means that when you combine `--generator` with other flags the generator that you specified later does not change. For example, in a cluster v1.4, if you initially specify
|
||||||
`--restart=Always`, a Deployment is created; if you later specify `--restart=Always`
|
`--restart=Always`, a Deployment is created; if you later specify `--restart=Always`
|
||||||
and `--generator=run/v1`, a Replication Controller is created.
|
and `--generator=run/v1`, a Replication Controller is created.
|
||||||
This enables you to pin to a specific behavior with the generator,
|
This enables you to pin to a specific behavior with the generator,
|
||||||
even when the default generator is changed later.
|
even when the default generator is changed later.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
The flags set the generator in the following order: first the schedule flag then restart policy and finally the generator.
|
The flags set the generator in the following order: first the schedule flag then restart policy and finally the generator.
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ deployment "nginx-app" created
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** `kubectl` commands print the type and name of the resource created or mutated, which can then be used in subsequent commands. You can expose a new Service after a Deployment is created.
|
`kubectl` commands print the type and name of the resource created or mutated, which can then be used in subsequent commands. You can expose a new Service after a Deployment is created.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@@ -222,7 +222,7 @@ $ kubectl get po -l run=nginx-app
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** When you use kubectl, you don't delete the pod directly.You have to first delete the Deployment that owns the pod. If you delete the pod directly, the Deployment recreates the pod.
|
When you use kubectl, you don't delete the pod directly.You have to first delete the Deployment that owns the pod. If you delete the pod directly, the Deployment recreates the pod.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
## docker login
|
## docker login
|
||||||
|
|||||||
@@ -45,7 +45,10 @@ where `command`, `TYPE`, `NAME`, and `flags` are:
|
|||||||
Example: `$ kubectl get pod -f ./pod.yaml`
|
Example: `$ kubectl get pod -f ./pod.yaml`
|
||||||
|
|
||||||
* `flags`: Specifies optional flags. For example, you can use the `-s` or `--server` flags to specify the address and port of the Kubernetes API server.<br/>
|
* `flags`: Specifies optional flags. For example, you can use the `-s` or `--server` flags to specify the address and port of the Kubernetes API server.<br/>
|
||||||
**Important**: Flags that you specify from the command line override default values and any corresponding environment variables.
|
|
||||||
|
{{< caution >}}
|
||||||
|
Flags that you specify from the command line override default values and any corresponding environment variables.
|
||||||
|
{{< /caution >}}
|
||||||
|
|
||||||
If you need help, just run `kubectl help` from the terminal window.
|
If you need help, just run `kubectl help` from the terminal window.
|
||||||
|
|
||||||
@@ -299,7 +302,7 @@ $ kubectl describe pods --include-uninitialized=false
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** The `kubectl get` command is usually used for retrieving one or more
|
The `kubectl get` command is usually used for retrieving one or more
|
||||||
resources of the same resource type. It features a rich set of flags that allows
|
resources of the same resource type. It features a rich set of flags that allows
|
||||||
you to customize the output format using the `-o` or `--output` flag, for example.
|
you to customize the output format using the `-o` or `--output` flag, for example.
|
||||||
You can specify the `-w` or `--watch` flag to start watching updates to a particular
|
You can specify the `-w` or `--watch` flag to start watching updates to a particular
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ You can install all the available addons with the `all` subcommand, or
|
|||||||
install them selectively.
|
install them selectively.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** If `kubeadm` is invoked with `--feature-gates=CoreDNS=false`, kube-dns is installed.
|
If `kubeadm` is invoked with `--feature-gates=CoreDNS=false`, kube-dns is installed.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
{{< tabs name="tab-addon" >}}
|
{{< tabs name="tab-addon" >}}
|
||||||
@@ -158,7 +158,7 @@ install them selectively.
|
|||||||
## kubeadm alpha phase self-hosting {#cmd-phase-self-hosting}
|
## kubeadm alpha phase self-hosting {#cmd-phase-self-hosting}
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Caution:** Self-hosting is an alpha feature. See [kubeadm init](/docs/reference/setup-tools/kubeadm/kubeadm-init/) documentation for self-hosting limitations.
|
Self-hosting is an alpha feature. See [kubeadm init](/docs/reference/setup-tools/kubeadm/kubeadm-init/) documentation for self-hosting limitations.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
{{< tabs name="tab-self-hosting" >}}
|
{{< tabs name="tab-self-hosting" >}}
|
||||||
|
|||||||
@@ -92,8 +92,7 @@ following steps:
|
|||||||
### Using kubeadm init with a configuration file {#config-file}
|
### Using kubeadm init with a configuration file {#config-file}
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Caution:** The config file is
|
The config file is still considered alpha and may change in future versions.
|
||||||
still considered alpha and may change in future versions.
|
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
It's possible to configure `kubeadm init` with a configuration file instead of command
|
It's possible to configure `kubeadm init` with a configuration file instead of command
|
||||||
@@ -284,14 +283,10 @@ configured in the kubelet via static files.
|
|||||||
To create a self-hosted cluster, pass the flag `--feature-gates=SelfHosting=true` to `kubeadm init`.
|
To create a self-hosted cluster, pass the flag `--feature-gates=SelfHosting=true` to `kubeadm init`.
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Caution:** `SelfHosting` is an alpha feature. It is deprecated in 1.12
|
`SelfHosting` is an alpha feature. It is deprecated in 1.12
|
||||||
and will be removed in 1.13.
|
and will be removed in 1.13.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
{{< warning >}}
|
|
||||||
**Warning:** See self-hosted caveats and limitations.
|
|
||||||
{{< /warning >}}
|
|
||||||
|
|
||||||
#### Caveats
|
#### Caveats
|
||||||
|
|
||||||
Self-hosting in 1.8 has some important limitations. In particular, a
|
Self-hosting in 1.8 has some important limitations. In particular, a
|
||||||
@@ -309,7 +304,7 @@ authorization configuration for your cluster, and may not be appropriate for
|
|||||||
your environment.
|
your environment.
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Caution:** `StoreCertsInSecrets` is an alpha feature. It is deprecated in 1.12
|
`StoreCertsInSecrets` is an alpha feature. It is deprecated in 1.12
|
||||||
and will be removed in 1.13.
|
and will be removed in 1.13.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
|
|||||||
@@ -204,8 +204,7 @@ These commands should be run after `kubeadm init` but before `kubeadm join`.
|
|||||||
### Using kubeadm join with a configuration file {#config-file}
|
### Using kubeadm join with a configuration file {#config-file}
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Caution:** The config file is
|
The config file is still considered alpha and may change in future versions.
|
||||||
still considered alpha and may change in future versions.
|
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
It's possible to configure `kubeadm join` with a configuration file instead of command
|
It's possible to configure `kubeadm join` with a configuration file instead of command
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ The version is set at the API level rather than at the resource or field level t
|
|||||||
The JSON and Protobuf serialization schemas follow the same guidelines for schema changes. The following descriptions cover both formats.
|
The JSON and Protobuf serialization schemas follow the same guidelines for schema changes. The following descriptions cover both formats.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** The API versioning and software versioning are indirectly related. The [API and release
|
The API versioning and software versioning are indirectly related. The [API and release
|
||||||
versioning proposal](https://git.k8s.io/community/contributors/design-proposals/release/versioning.md) describes the relationship between API versioning and software versioning.
|
versioning proposal](https://git.k8s.io/community/contributors/design-proposals/release/versioning.md) describes the relationship between API versioning and software versioning.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ Here's a summary of each level:
|
|||||||
- The software is recommended for only non-business-critical uses because of potential for incompatible changes in subsequent releases. If you have multiple clusters which can be upgraded independently, you may be able to relax this restriction.
|
- The software is recommended for only non-business-critical uses because of potential for incompatible changes in subsequent releases. If you have multiple clusters which can be upgraded independently, you may be able to relax this restriction.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Try the beta features and provide feedback. After the features exit beta, it may not be practical to make more changes.
|
Try the beta features and provide feedback. After the features exit beta, it may not be practical to make more changes.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
- Stable:
|
- Stable:
|
||||||
@@ -97,7 +97,7 @@ on the apiserver. `--runtime-config` accepts comma separated values. For example
|
|||||||
The flag accepts comma separated set of key=value pairs describing runtime configuration of the apiserver.
|
The flag accepts comma separated set of key=value pairs describing runtime configuration of the apiserver.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** When you enable or disable groups or resources, you need to restart the apiserver and controller-manager
|
When you enable or disable groups or resources, you need to restart the apiserver and controller-manager
|
||||||
to pick up the `--runtime-config` changes.
|
to pick up the `--runtime-config` changes.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ can not be removed from that version or have its behavior significantly
|
|||||||
changed, regardless of track.
|
changed, regardless of track.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** For historical reasons, there are 2 "monolithic" API groups - "core" (no
|
For historical reasons, there are 2 "monolithic" API groups - "core" (no
|
||||||
group name) and "extensions". Resources will incrementally be moved from these
|
group name) and "extensions". Resources will incrementally be moved from these
|
||||||
legacy API groups into more domain-specific API groups.
|
legacy API groups into more domain-specific API groups.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
@@ -90,7 +90,7 @@ no less than:**
|
|||||||
This covers the maximum supported version skew of 2 releases.
|
This covers the maximum supported version skew of 2 releases.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** Until [#52185](https://github.com/kubernetes/kubernetes/issues/52185) is
|
Until [#52185](https://github.com/kubernetes/kubernetes/issues/52185) is
|
||||||
resolved, no API versions that have been persisted to storage may be removed.
|
resolved, no API versions that have been persisted to storage may be removed.
|
||||||
Serving REST endpoints for those versions may be disabled (subject to the
|
Serving REST endpoints for those versions may be disabled (subject to the
|
||||||
deprecation timelines in this document), but the API server must remain capable
|
deprecation timelines in this document), but the API server must remain capable
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ Kubernetes requires PKI for the following operations:
|
|||||||
* Client and server certificates for the [front-proxy][proxy]
|
* Client and server certificates for the [front-proxy][proxy]
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** `front-proxy` certificates are required only if you run kube-proxy to support [an extension API server](/docs/tasks/access-kubernetes-api/setup-extension-api-server/).
|
`front-proxy` certificates are required only if you run kube-proxy to support [an extension API server](/docs/tasks/access-kubernetes-api/setup-extension-api-server/).
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
etcd also implements mutual TLS to authenticate clients and peers.
|
etcd also implements mutual TLS to authenticate clients and peers.
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ You can upgrade your cluster by running the upgrade-cluster playbook. For more i
|
|||||||
You can reset your nodes and wipe out all components installed with Kubespray via the [reset playbook](https://github.com/kubernetes-incubator/kubespray/blob/master/reset.yml).
|
You can reset your nodes and wipe out all components installed with Kubespray via the [reset playbook](https://github.com/kubernetes-incubator/kubespray/blob/master/reset.yml).
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Caution:** When running the reset playbook, be sure not to accidentally target your production cluster!
|
When running the reset playbook, be sure not to accidentally target your production cluster!
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
## Feedback
|
## Feedback
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ timeframe; which also applies to `kubeadm`.
|
|||||||
See ["Installing kubeadm"](/docs/setup/independent/install-kubeadm/).
|
See ["Installing kubeadm"](/docs/setup/independent/install-kubeadm/).
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** If you have already installed kubeadm, run `apt-get update &&
|
If you have already installed kubeadm, run `apt-get update &&
|
||||||
apt-get upgrade` or `yum update` to get the latest version of kubeadm.
|
apt-get upgrade` or `yum update` to get the latest version of kubeadm.
|
||||||
|
|
||||||
When you upgrade, the kubelet restarts every few seconds as it waits in a crashloop for
|
When you upgrade, the kubelet restarts every few seconds as it waits in a crashloop for
|
||||||
@@ -228,7 +228,7 @@ created, and deleted with the `kubeadm token` command. See the
|
|||||||
### Installing a pod network add-on {#pod-network}
|
### Installing a pod network add-on {#pod-network}
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Caution:** This section contains important information about installation and deployment order. Read it carefully before proceeding.
|
This section contains important information about installation and deployment order. Read it carefully before proceeding.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
You must install a pod network add-on so that your pods can communicate with
|
You must install a pod network add-on so that your pods can communicate with
|
||||||
@@ -465,7 +465,7 @@ The output is similar to this:
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** To specify an IPv6 tuple for `<master-ip>:<master-port>`, IPv6 address must be enclosed in square brackets, for example: `[fd00::101]:2073`.
|
To specify an IPv6 tuple for `<master-ip>:<master-port>`, IPv6 address must be enclosed in square brackets, for example: `[fd00::101]:2073`.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
The output should look something like:
|
The output should look something like:
|
||||||
@@ -498,7 +498,7 @@ kubectl --kubeconfig ./admin.conf get nodes
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** The example above assumes SSH access is enabled for root. If that is not the
|
The example above assumes SSH access is enabled for root. If that is not the
|
||||||
case, you can copy the `admin.conf` file to be accessible by some other user
|
case, you can copy the `admin.conf` file to be accessible by some other user
|
||||||
and `scp` using that other user instead.
|
and `scp` using that other user instead.
|
||||||
|
|
||||||
|
|||||||
@@ -22,9 +22,9 @@ with upgrading your clusters, for example. We encourage you to try either approa
|
|||||||
and provide feedback.
|
and provide feedback.
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Caution**: This page does not address running your cluster on a cloud provider.
|
This page does not address running your cluster on a cloud provider. In a cloud
|
||||||
In a cloud environment, neither approach documented here works with Service objects
|
environment, neither approach documented here works with Service objects of type
|
||||||
of type LoadBalancer, or with dynamic PersistentVolumes.
|
LoadBalancer, or with dynamic PersistentVolumes.
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
{{% /capture %}}
|
{{% /capture %}}
|
||||||
@@ -49,9 +49,8 @@ For the external etcd cluster only, you also need:
|
|||||||
- Three additional machines for etcd members
|
- Three additional machines for etcd members
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: The following examples run Calico as the Pod networking provider. If
|
The following examples run Calico as the Pod networking provider. If you run another
|
||||||
you run another networking provider, make sure to replace any default values as
|
networking provider, make sure to replace any default values as needed.
|
||||||
needed.
|
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
{{% /capture %}}
|
{{% /capture %}}
|
||||||
@@ -61,8 +60,7 @@ needed.
|
|||||||
## First steps for both methods
|
## First steps for both methods
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: All commands in this guide on any control plane or etcd node should be
|
All commands in this guide on any control plane or etcd node should be run as root.
|
||||||
run as root.
|
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
- Find your pod CIDR. For details, see [the CNI network
|
- Find your pod CIDR. For details, see [the CNI network
|
||||||
@@ -102,9 +100,8 @@ run as root.
|
|||||||
### Create load balancer for kube-apiserver
|
### Create load balancer for kube-apiserver
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: There are many configurations for load balancers. The following
|
There are many configurations for load balancers. The following example is only one
|
||||||
example is only one option. Your cluster requirements may need a
|
option. Your cluster requirements may need a different configuration.
|
||||||
different configuration.
|
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
1. Create a kube-apiserver load balancer with a name that resolves to DNS.
|
1. Create a kube-apiserver load balancer with a name that resolves to DNS.
|
||||||
@@ -140,7 +137,7 @@ different configuration.
|
|||||||
### Bootstrap the first stacked control plane node
|
### Bootstrap the first stacked control plane node
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: Optionally replace `stable` with a different version of Kubernetes, for example `v1.12.0`.
|
Optionally replace `stable` with a different version of Kubernetes, for example `v1.12.0`.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
1. Create a `kubeadm-config.yaml` template file:
|
1. Create a `kubeadm-config.yaml` template file:
|
||||||
@@ -217,7 +214,7 @@ done
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: Remember that your config may differ from this example.
|
Remember that your config may differ from this example.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
### Add the second stacked control plane node
|
### Add the second stacked control plane node
|
||||||
@@ -439,7 +436,7 @@ done
|
|||||||
1. Create a `kubeadm-config.yaml`:
|
1. Create a `kubeadm-config.yaml`:
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: Optionally replace `stable` with a different version of Kubernetes, for example `v1.11.3`.
|
Optionally replace `stable` with a different version of Kubernetes, for example `v1.11.3`.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
apiVersion: kubeadm.k8s.io/v1alpha3
|
apiVersion: kubeadm.k8s.io/v1alpha3
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ The general approach is to generate all certs on one node and only distribute
|
|||||||
the *necessary* files to the other nodes.
|
the *necessary* files to the other nodes.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** kubeadm contains all the necessary crytographic machinery to generate
|
kubeadm contains all the necessary crytographic machinery to generate
|
||||||
the certificates described below; no other cryptographic tooling is required for
|
the certificates described below; no other cryptographic tooling is required for
|
||||||
this example.
|
this example.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|||||||
@@ -259,7 +259,7 @@ kubectl -n kube-system get deployment coredns -o yaml | \
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
**Warning**: Disabling SELinux or setting `allowPrivilegeEscalation` to `true` can compromise
|
Disabling SELinux or setting `allowPrivilegeEscalation` to `true` can compromise
|
||||||
the security of your cluster.
|
the security of your cluster.
|
||||||
{{< /warning >}}
|
{{< /warning >}}
|
||||||
|
|
||||||
|
|||||||
@@ -337,7 +337,9 @@ spec:
|
|||||||
## Mounted Host Folders
|
## Mounted Host Folders
|
||||||
Some drivers will mount a host folder within the VM so that you can easily share files between the VM and host. These are not configurable at the moment and different for the driver and OS you are using.
|
Some drivers will mount a host folder within the VM so that you can easily share files between the VM and host. These are not configurable at the moment and different for the driver and OS you are using.
|
||||||
|
|
||||||
**Note:** Host folder sharing is not implemented in the KVM driver yet.
|
{{< note >}}
|
||||||
|
Host folder sharing is not implemented in the KVM driver yet.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
| Driver | OS | HostFolder | VM |
|
| Driver | OS | HostFolder | VM |
|
||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- |
|
||||||
|
|||||||
@@ -199,12 +199,14 @@ kubectl create -f - <<EOF
|
|||||||
EOF
|
EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
**NOTE:** For version 1.3+ Kubernetes will distribute dynamic PV claims across
|
{{< note >}}
|
||||||
|
For version 1.3+ Kubernetes will distribute dynamic PV claims across
|
||||||
the configured zones. For version 1.2, dynamic persistent volumes were
|
the configured zones. For version 1.2, dynamic persistent volumes were
|
||||||
always created in the zone of the cluster master
|
always created in the zone of the cluster master
|
||||||
(here us-central1-a / us-west-2a); that issue
|
(here us-central1-a / us-west-2a); that issue
|
||||||
([#23330](https://github.com/kubernetes/kubernetes/issues/23330))
|
([#23330](https://github.com/kubernetes/kubernetes/issues/23330))
|
||||||
was addressed in 1.3+.
|
was addressed in 1.3+.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
Now lets validate that Kubernetes automatically labeled the zone & region the PV was created in.
|
Now lets validate that Kubernetes automatically labeled the zone & region the PV was created in.
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ This guide helps to install a Kubernetes cluster hosted on bare metal with [Digi
|
|||||||
Digital Rebar Provision (DRP) is an integrated Golang DHCP, bare metal provisioning (PXE/iPXE) and workflow automation platform. While [DRP can be used to invoke](https://provision.readthedocs.io/en/tip/doc/integrations/ansible.html) [kubespray](../kubespray), it also offers a self-contained Kubernetes installation known as [KRIB (Kubernetes Rebar Integrated Bootstrap)](https://github.com/digitalrebar/provision-content/tree/master/krib).
|
Digital Rebar Provision (DRP) is an integrated Golang DHCP, bare metal provisioning (PXE/iPXE) and workflow automation platform. While [DRP can be used to invoke](https://provision.readthedocs.io/en/tip/doc/integrations/ansible.html) [kubespray](../kubespray), it also offers a self-contained Kubernetes installation known as [KRIB (Kubernetes Rebar Integrated Bootstrap)](https://github.com/digitalrebar/provision-content/tree/master/krib).
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** KRIB is not a _stand-alone_ installer: Digital Rebar templates drive a standard *[kubeadm](/docs/admin/kubeadm/)* configuration that manages the Kubernetes installation with the [Digital Rebar cluster pattern](https://provision.readthedocs.io/en/tip/doc/arch/cluster.html#rs-cluster-pattern) to elect leaders _without external supervision_.
|
KRIB is not a _stand-alone_ installer: Digital Rebar templates drive a standard *[kubeadm](/docs/admin/kubeadm/)* configuration that manages the Kubernetes installation with the [Digital Rebar cluster pattern](https://provision.readthedocs.io/en/tip/doc/arch/cluster.html#rs-cluster-pattern) to elect leaders _without external supervision_.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
|
|
||||||
@@ -43,7 +43,7 @@ Upload the KRIB Content bundle (or build from [source](https://github.com/digita
|
|||||||
### (3/5) Start your cluster deployment
|
### (3/5) Start your cluster deployment
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** KRIB documentation is dynamically generated from the source and will be more up to date than this guide.
|
KRIB documentation is dynamically generated from the source and will be more up to date than this guide.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
Following the [KRIB documentation](https://provision.readthedocs.io/en/tip/doc/content-packages/krib.html), create a Profile for your cluster and assign your target servers into the cluster Profile. The Profile must set `krib\cluster-name` and `etcd\cluster-name` Params to be the name of the Profile. Cluster configuration choices can be made by adding additional Params to the Profile; however, safe defaults are provided for all Params.
|
Following the [KRIB documentation](https://provision.readthedocs.io/en/tip/doc/content-packages/krib.html), create a Profile for your cluster and assign your target servers into the cluster Profile. The Profile must set `krib\cluster-name` and `etcd\cluster-name` Params to be the name of the Profile. Cluster configuration choices can be made by adding additional Params to the Profile; however, safe defaults are provided for all Params.
|
||||||
@@ -86,7 +86,7 @@ You can add servers into your cluster by adding the cluster Profile to the serve
|
|||||||
You can reset your cluster and wipe out all configuration and TLS certificates using the `krib-reset-cluster` Workflow on any of the servers in the cluster.
|
You can reset your cluster and wipe out all configuration and TLS certificates using the `krib-reset-cluster` Workflow on any of the servers in the cluster.
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
**Caution:** When running the reset Workflow, be sure not to accidentally target your production cluster!
|
When running the reset Workflow, be sure not to accidentally target your production cluster!
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
## Feedback
|
## Feedback
|
||||||
|
|||||||
@@ -226,9 +226,8 @@ Agile Stacks | Terraform | CoreOS | multi-support | [docs](https://www.a
|
|||||||
IBM Cloud Kubernetes Service | | Ubuntu | calico | [docs](https://console.bluemix.net/docs/containers/container_index.html) | Commercial
|
IBM Cloud Kubernetes Service | | Ubuntu | calico | [docs](https://console.bluemix.net/docs/containers/container_index.html) | Commercial
|
||||||
Digital Rebar | kubeadm | any | metal | [docs](/docs/setup/on-premises-metal/krib/) | Community ([@digitalrebar](https://github.com/digitalrebar))
|
Digital Rebar | kubeadm | any | metal | [docs](/docs/setup/on-premises-metal/krib/) | Community ([@digitalrebar](https://github.com/digitalrebar))
|
||||||
|
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** The above table is ordered by version test/used in nodes, followed by support level.
|
The above table is ordered by version test/used in nodes, followed by support level.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
### Definition of columns
|
### Definition of columns
|
||||||
|
|||||||
@@ -556,7 +556,7 @@ filename | sha256 hash
|
|||||||
* The PodShareProcessNamespace feature to configure PID namespace sharing within a pod has been promoted to beta. ([#66507](https://github.com/kubernetes/kubernetes/pull/66507), [@verb](https://github.com/verb))
|
* The PodShareProcessNamespace feature to configure PID namespace sharing within a pod has been promoted to beta. ([#66507](https://github.com/kubernetes/kubernetes/pull/66507), [@verb](https://github.com/verb))
|
||||||
* `kubectl create {clusterrole,role}`'s `--resources` flag supports asterisk to specify all resources. ([#62945](https://github.com/kubernetes/kubernetes/pull/62945), [@nak3](https://github.com/nak3))
|
* `kubectl create {clusterrole,role}`'s `--resources` flag supports asterisk to specify all resources. ([#62945](https://github.com/kubernetes/kubernetes/pull/62945), [@nak3](https://github.com/nak3))
|
||||||
* Bump up version number of debian-base, debian-hyperkube-base and debian-iptables. ([#67026](https://github.com/kubernetes/kubernetes/pull/67026), [@satyasm](https://github.com/satyasm))
|
* Bump up version number of debian-base, debian-hyperkube-base and debian-iptables. ([#67026](https://github.com/kubernetes/kubernetes/pull/67026), [@satyasm](https://github.com/satyasm))
|
||||||
* Also updates dependencies of users of debian-base.
|
* Also updates dependencies of users of debian-base.
|
||||||
* debian-base version 0.3.1 is already available.
|
* debian-base version 0.3.1 is already available.
|
||||||
* DynamicProvisioningScheduling and VolumeScheduling is now supported for Azure managed disks. Feature gates DynamicProvisioningScheduling and VolumeScheduling should be enabled before using this feature. ([#67121](https://github.com/kubernetes/kubernetes/pull/67121), [@feiskyer](https://github.com/feiskyer))
|
* DynamicProvisioningScheduling and VolumeScheduling is now supported for Azure managed disks. Feature gates DynamicProvisioningScheduling and VolumeScheduling should be enabled before using this feature. ([#67121](https://github.com/kubernetes/kubernetes/pull/67121), [@feiskyer](https://github.com/feiskyer))
|
||||||
* kube-apiserver now includes all registered API groups in discovery, including registered extension API group/versions for unavailable extension API servers. ([#66932](https://github.com/kubernetes/kubernetes/pull/66932), [@nilebox](https://github.com/nilebox))
|
* kube-apiserver now includes all registered API groups in discovery, including registered extension API group/versions for unavailable extension API servers. ([#66932](https://github.com/kubernetes/kubernetes/pull/66932), [@nilebox](https://github.com/nilebox))
|
||||||
|
|||||||
@@ -487,11 +487,11 @@ You will need to run one or more instances of etcd.
|
|||||||
- Not highly available, but easy to restore - Run one etcd instance, with its log written to a directory backed
|
- Not highly available, but easy to restore - Run one etcd instance, with its log written to a directory backed
|
||||||
by durable storage (RAID, GCE PD).
|
by durable storage (RAID, GCE PD).
|
||||||
|
|
||||||
{{< note >}}**Note:** May result in operations outages in case of
|
{{< note >}}May result in operations outages in case of
|
||||||
instance outage. {{< /note >}}
|
instance outage. {{< /note >}}
|
||||||
- Highly available - Run 3 or 5 etcd instances with non durable storage.
|
- Highly available - Run 3 or 5 etcd instances with non durable storage.
|
||||||
|
|
||||||
{{< note >}}**Note:** Log can be written to non-durable storage
|
{{< note >}}Log can be written to non-durable storage
|
||||||
because storage is replicated.{{< /note >}}
|
because storage is replicated.{{< /note >}}
|
||||||
|
|
||||||
See [cluster-troubleshooting](/docs/admin/cluster-troubleshooting/) for more discussion on factors affecting cluster
|
See [cluster-troubleshooting](/docs/admin/cluster-troubleshooting/) for more discussion on factors affecting cluster
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ gcloud components install kubectl
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** The kubectl version bundled with `gcloud` may be older than the one
|
The kubectl version bundled with `gcloud` may be older than the one
|
||||||
downloaded by the get.k8s.io install script. See [Installing kubectl](/docs/tasks/kubectl/install/)
|
downloaded by the get.k8s.io install script. See [Installing kubectl](/docs/tasks/kubectl/install/)
|
||||||
document to see how you can set up the latest `kubectl` on your workstation.
|
document to see how you can set up the latest `kubectl` on your workstation.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|||||||
+1
-1
@@ -13,7 +13,7 @@ one or more configuration files, you can quickly switch between clusters by usin
|
|||||||
`kubectl config use-context` command.
|
`kubectl config use-context` command.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** A file that is used to configure access to a cluster is sometimes called
|
A file that is used to configure access to a cluster is sometimes called
|
||||||
a *kubeconfig file*. This is a generic way of referring to configuration files.
|
a *kubeconfig file*. This is a generic way of referring to configuration files.
|
||||||
It does not mean that there is a file named `kubeconfig`.
|
It does not mean that there is a file named `kubeconfig`.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|||||||
+5
-6
@@ -84,12 +84,11 @@ gcloud compute firewall-rules create my-rule --allow=tcp:<port>
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: GCE firewalls are defined per-vm, rather than per-ip
|
GCE firewalls are defined per-vm, rather than per-ip address. This means that
|
||||||
address. This means that when you open a firewall for a service's ports,
|
when you open a firewall for a service's ports, anything that serves on that
|
||||||
anything that serves on that port on that VM's host IP address may potentially
|
port on that VM's host IP address may potentially serve traffic. Note that this
|
||||||
serve traffic. Note that this is not a problem for other Kubernetes services,
|
is not a problem for other Kubernetes services, as they listen on IP addresses
|
||||||
as they listen on IP addresses that are different than the host node's external
|
that are different than the host node's external IP address.
|
||||||
IP address.
|
|
||||||
|
|
||||||
Consider:
|
Consider:
|
||||||
|
|
||||||
|
|||||||
@@ -148,11 +148,13 @@ deployment.apps/frontend created
|
|||||||
service/frontend created
|
service/frontend created
|
||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}}**Note:** The nginx configuration is baked into the
|
{{< note >}}
|
||||||
[container image](/examples/service/access/Dockerfile).
|
The nginx configuration is baked into the [container
|
||||||
A better way to do this would be to use a
|
image](/examples/service/access/Dockerfile). A better way to do this would
|
||||||
[ConfigMap](/docs/tasks/configure-pod-container/configure-pod-configmap/), so
|
be to use a
|
||||||
you can change the configuration more easily.{{< /note >}}
|
[ConfigMap](/docs/tasks/configure-pod-container/configure-pod-configmap/),
|
||||||
|
so that you can change the configuration more easily.
|
||||||
|
{{< /note >}}
|
||||||
|
|
||||||
### Interact with the frontend Service
|
### Interact with the frontend Service
|
||||||
|
|
||||||
|
|||||||
@@ -108,8 +108,9 @@ which should produce output like this:
|
|||||||
The IP address is listed next to `LoadBalancer Ingress`.
|
The IP address is listed next to `LoadBalancer Ingress`.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: If you are running your service on Minikube, you can find the assigned IP address and port with:
|
If you are running your service on Minikube, you can find the assigned IP address and port with:
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
minikube service example-service --url
|
minikube service example-service --url
|
||||||
```
|
```
|
||||||
@@ -181,7 +182,7 @@ compared to the `service.spec.externalTrafficPolicy` field. The values match as
|
|||||||
* "Global" for annotation <-> "Cluster" for field
|
* "Global" for annotation <-> "Cluster" for field
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** This feature is not currently implemented for all cloudproviders/environments.
|
This feature is not currently implemented for all cloudproviders/environments.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
Known issues:
|
Known issues:
|
||||||
|
|||||||
+1
-1
@@ -63,7 +63,7 @@ The jsonpath is interpreted as follows:
|
|||||||
- `.image`: get the image
|
- `.image`: get the image
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** When fetching a single Pod by name, e.g. `kubectl get pod nginx`,
|
When fetching a single Pod by name, e.g. `kubectl get pod nginx`,
|
||||||
the `.items[*]` portion of the path should be omitted because a single
|
the `.items[*]` portion of the path should be omitted because a single
|
||||||
Pod is returned instead of a list of items.
|
Pod is returned instead of a list of items.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|||||||
+2
-2
@@ -71,7 +71,7 @@ load-balanced access to an application running in a cluster.
|
|||||||
command.
|
command.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** If you are using Minikube, you don't get an external IP address. The
|
If you are using Minikube, you don't get an external IP address. The
|
||||||
external IP address remains in the pending state.
|
external IP address remains in the pending state.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
@@ -90,7 +90,7 @@ load-balanced access to an application running in a cluster.
|
|||||||
Hello Kubernetes!
|
Hello Kubernetes!
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** If you are using Minikube, enter these commands:
|
If you are using Minikube, enter these commands:
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
kubectl cluster-info
|
kubectl cluster-info
|
||||||
|
|||||||
+1
-1
@@ -137,7 +137,7 @@ is running the Redis server. With this connection in place you can use your
|
|||||||
local workstation to debug the database that is running in the pod.
|
local workstation to debug the database that is running in the pod.
|
||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
**Warning**: Due to known limitations, port forward today only works for TCP protocol.
|
Due to known limitations, port forward today only works for TCP protocol.
|
||||||
The support to UDP protocol is being tracked in
|
The support to UDP protocol is being tracked in
|
||||||
[issue 47862](https://github.com/kubernetes/kubernetes/issues/47862).
|
[issue 47862](https://github.com/kubernetes/kubernetes/issues/47862).
|
||||||
{{< /warning >}}
|
{{< /warning >}}
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ Configuring the [aggregation layer](/docs/concepts/api-extension/apiserver-aggre
|
|||||||
{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
|
{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** There are a few setup requirements for getting the aggregation layer working in your environment to support mutual TLS auth between the proxy and extension apiservers. Kubernetes and the kube-apiserver have multiple CAs, so make sure that the proxy is signed by the aggregation layer CA and not by something else, like the master CA.
|
There are a few setup requirements for getting the aggregation layer working in your environment to support mutual TLS auth between the proxy and extension apiservers. Kubernetes and the kube-apiserver have multiple CAs, so make sure that the proxy is signed by the aggregation layer CA and not by something else, like the master CA.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
{{% /capture %}}
|
{{% /capture %}}
|
||||||
|
|||||||
+2
-2
@@ -15,8 +15,8 @@ level of your CustomResourceDefinitions. It also describes how to upgrade an
|
|||||||
object from one version to another.
|
object from one version to another.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: All specified versions must use the same schema. The is no schema
|
All specified versions must use the same schema. There is no schema conversion
|
||||||
conversion between versions.
|
between versions.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
{{% /capture %}}
|
{{% /capture %}}
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ For example, consider key pairs `k8sclient.key` and `k8sclient.cert` that are tr
|
|||||||
Once etcd is configured correctly, only clients with valid certificates can access it. To give Kubernetes API server the access, configure it with the flags `--etcd-certfile=k8sclient.cert`,`--etcd-keyfile=k8sclient.key` and `--etcd-cafile=ca.cert`.
|
Once etcd is configured correctly, only clients with valid certificates can access it. To give Kubernetes API server the access, configure it with the flags `--etcd-certfile=k8sclient.cert`,`--etcd-keyfile=k8sclient.key` and `--etcd-cafile=ca.cert`.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: etcd authentication is not currently supported by Kubernetes. For more information, see the related issue [Support Basic Auth for Etcd v2](https://github.com/kubernetes/kubernetes/issues/23398).
|
etcd authentication is not currently supported by Kubernetes. For more information, see the related issue [Support Basic Auth for Etcd v2](https://github.com/kubernetes/kubernetes/issues/23398).
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
## Replacing a failed etcd member
|
## Replacing a failed etcd member
|
||||||
@@ -212,7 +212,7 @@ The upgrade procedure described in this document assumes that either:
|
|||||||
etcd cluster. During the time the etcd cluster is shut down, the Kubernetes API Server will be read only.
|
etcd cluster. During the time the etcd cluster is shut down, the Kubernetes API Server will be read only.
|
||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
**Warning**: Deviations from the assumptions are untested by continuous
|
Deviations from the assumptions are untested by continuous
|
||||||
integration, and deviations might create undesirable consequences. Additional information about operating an etcd cluster is available [from the etcd maintainers](https://github.com/coreos/etcd/tree/master/Documentation).
|
integration, and deviations might create undesirable consequences. Additional information about operating an etcd cluster is available [from the etcd maintainers](https://github.com/coreos/etcd/tree/master/Documentation).
|
||||||
{{< /warning >}}
|
{{< /warning >}}
|
||||||
|
|
||||||
@@ -264,7 +264,7 @@ but the rollback tool has these limitations:
|
|||||||
* Rollback doesn’t preserve resource versions of objects stored in etcd.
|
* Rollback doesn’t preserve resource versions of objects stored in etcd.
|
||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
**Warning**: If the data is not kept in `application/json` format (see [Upgrade
|
If the data is not kept in `application/json` format (see [Upgrade
|
||||||
Procedure](#upgrade-procedure)), you will lose the option to roll back to etcd
|
Procedure](#upgrade-procedure)), you will lose the option to roll back to etcd
|
||||||
2.2.
|
2.2.
|
||||||
{{< /warning >}}
|
{{< /warning >}}
|
||||||
@@ -276,7 +276,7 @@ resource versions. Since both the kubelet and kube-proxy use the watch API, a
|
|||||||
rollback might require restarting all Kubernetes components on all nodes.
|
rollback might require restarting all Kubernetes components on all nodes.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note**: At the time of writing, both Kubelet and KubeProxy are using “resource
|
At the time of writing, both Kubelet and KubeProxy are using “resource
|
||||||
version” only for watching (i.e. are not using resource versions for anything
|
version” only for watching (i.e. are not using resource versions for anything
|
||||||
else). And both are using reflector and/or informer frameworks for watching
|
else). And both are using reflector and/or informer frameworks for watching
|
||||||
(i.e. they don’t send watch requests themselves). Both those frameworks if they
|
(i.e. they don’t send watch requests themselves). Both those frameworks if they
|
||||||
@@ -390,7 +390,7 @@ STORAGE_MEDIA_TYPE=application/json
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
**Note:** This procedure upgrades from 2.x to 3.x. Version `3.0.17` is not recommended for running in production (see [prerequisites](#prerequisites) for minimum recommended etcd versions).
|
This procedure upgrades from 2.x to 3.x. Version `3.0.17` is not recommended for running in production (see [prerequisites](#prerequisites) for minimum recommended etcd versions).
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
## Notes for etcd Version 2.2.1
|
## Notes for etcd Version 2.2.1
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user