Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.8
* 'master' of https://github.com/kubernetes/kubernetes.github.io: (87 commits) fix envFrom in configmap Add link to example for CRDs (#5641) Fixed links to architecture.md and principles.md Polish AppArmor tutorial Remove dangling files related to apparmor fix the typo of serviceaccount (#5533) Correct setup link (#5634) relink the persistent volume of petset (#5582) Updates to case study landing page (#5629) translate doc resource-quotas into chinese minor encoding fix for CN page fix typo concepts-overview-components+abac-fix concepts-overview-components-fix Update links to avoid redirects. (#5627) Update links to avoid redirects. (#5625) Fix 404s. (#5624) Fix 404s. (#5623) Edits cpu-constraint-namespace.md Fix index redirects (#5502) ... # Conflicts: # _redirects # docs/concepts/storage/volumes.md # docs/concepts/workloads/controllers/daemonset.md # docs/concepts/workloads/controllers/petset.md # docs/concepts/workloads/controllers/statefulset.md # docs/tasks/run-application/run-single-instance-stateful-application.md # docs/tutorials/stateful-application/zookeeper.md
This commit is contained in:
@@ -192,20 +192,7 @@ Next, we'll run a simple "Hello AppArmor" pod with the deny-write profile:
|
||||
{% include code.html language="yaml" file="hello-apparmor-pod.yaml" ghlink="/docs/tutorials/clusters/hello-apparmor-pod.yaml" %}
|
||||
|
||||
```shell
|
||||
$ kubectl create -f /dev/stdin <<EOF
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: hello-apparmor
|
||||
annotations:
|
||||
container.apparmor.security.beta.kubernetes.io/hello: localhost/k8s-apparmor-example-deny-write
|
||||
spec:
|
||||
containers:
|
||||
- name: hello
|
||||
image: busybox
|
||||
command: [ "sh", "-c", "echo 'Hello AppArmor!' && sleep 1h" ]
|
||||
EOF
|
||||
pod "hello-apparmor" created
|
||||
$ kubectl create -f ./hello-apparmor-pod.yaml
|
||||
```
|
||||
|
||||
If we look at the pod events, we can see that the Pod container was created with the AppArmor
|
||||
@@ -260,7 +247,7 @@ Node: gke-test-default-pool-239f5d02-x1kf/
|
||||
Start Time: Tue, 30 Aug 2016 17:58:56 -0700
|
||||
Labels: <none>
|
||||
Annotations: container.apparmor.security.beta.kubernetes.io/hello=localhost/k8s-apparmor-example-allow-write
|
||||
Status: Failed
|
||||
Status: Pending
|
||||
Reason: AppArmor
|
||||
Message: Pod Cannot enforce AppArmor: profile "k8s-apparmor-example-allow-write" is not loaded
|
||||
IP:
|
||||
|
||||
@@ -31,7 +31,7 @@ each of which has a sequence of steps.
|
||||
|
||||
* [Running a Single-Instance Stateful Application](/docs/tutorials/stateful-application/run-stateful-application/)
|
||||
|
||||
* [Running a Replicated Stateful Application](/docs/tutorials/stateful-application/run-replicated-stateful-application/)
|
||||
* [Running a Replicated Stateful Application](/docs/tasks/run-application/run-replicated-stateful-application/)
|
||||
|
||||
* [Example: WordPress and MySQL with Persistent Volumes](/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume/)
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@ deployment "source-ip-app" created
|
||||
## Source IP for Services with Type=ClusterIP
|
||||
|
||||
Packets sent to ClusterIP from within the cluster are never source NAT'd if
|
||||
you're running kube-proxy in [iptables mode](/docs/user-guide/services/#proxy-mode-iptables),
|
||||
you're running kube-proxy in [iptables mode](/docs/concepts/services-networking/service/#proxy-mode-iptables),
|
||||
which is the default since Kubernetes 1.2. Kube-proxy exposes its mode through
|
||||
a `proxyMode` endpoint:
|
||||
|
||||
@@ -110,7 +110,7 @@ If the client pod and server pod are in the same node, the client_address is the
|
||||
|
||||
## Source IP for Services with Type=NodePort
|
||||
|
||||
As of Kubernetes 1.5, packets sent to Services with [Type=NodePort](/docs/user-guide/services/#type-nodeport)
|
||||
As of Kubernetes 1.5, packets sent to Services with [Type=NodePort](/docs/concepts/services-networking/service/#type-nodeport)
|
||||
are source NAT'd by default. You can test this by creating a `NodePort` Service:
|
||||
|
||||
```console
|
||||
@@ -208,7 +208,7 @@ Visually:
|
||||
|
||||
## Source IP for Services with Type=LoadBalancer
|
||||
|
||||
As of Kubernetes 1.5, packets sent to Services with [Type=LoadBalancer](/docs/user-guide/services/#type-loadbalancer) are
|
||||
As of Kubernetes 1.5, packets sent to Services with [Type=LoadBalancer](/docs/concepts/services-networking/service/#type-loadbalancer) are
|
||||
source NAT'd by default, because all schedulable Kubernetes nodes in the
|
||||
`Ready` state are eligible for loadbalanced traffic. So if packets arrive
|
||||
at a node without an endpoint, the system proxies it to a node *with* an
|
||||
|
||||
@@ -55,7 +55,7 @@ After this tutorial, you will be familiar with the following.
|
||||
Begin by creating a StatefulSet using the example below. It is similar to the
|
||||
example presented in the
|
||||
[StatefulSets](/docs/concepts/abstractions/controllers/statefulsets/) concept.
|
||||
It creates a [Headless Service](/docs/user-guide/services/#headless-services),
|
||||
It creates a [Headless Service](/docs/concepts/services-networking/service/#headless-services),
|
||||
`nginx`, to publish the IP addresses of Pods in the StatefulSet, `web`.
|
||||
|
||||
{% include code.html language="yaml" file="web.yaml" ghlink="/docs/tutorials/stateful-application/web.yaml" %}
|
||||
@@ -457,7 +457,7 @@ reverse ordinal order, while respecting the StatefulSet guarantees.
|
||||
Patch the `web` StatefulSet to apply the `RollingUpdate` update strategy.
|
||||
|
||||
```shell
|
||||
kubectl patch statefulset web -p '{"spec":{"updateStrategy":{"type":"RollingUpdate"}}}
|
||||
kubectl patch statefulset web -p '{"spec":{"updateStrategy":{"type":"RollingUpdate"}}}'
|
||||
statefulset "web" patched
|
||||
```
|
||||
|
||||
@@ -563,7 +563,7 @@ pod "web-2" deleted
|
||||
Wait for the Pod to be Running and Ready.
|
||||
|
||||
```shell
|
||||
kubectl get po -lapp=nginx -w
|
||||
kubectl get po -l app=nginx -w
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
web-0 1/1 Running 0 4m
|
||||
web-1 1/1 Running 0 4m
|
||||
@@ -598,7 +598,7 @@ statefulset "web" patched
|
||||
Wait for `web-2` to be Running and Ready.
|
||||
|
||||
```shell
|
||||
kubectl get po -lapp=nginx -w
|
||||
kubectl get po -l app=nginx -w
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
web-0 1/1 Running 0 4m
|
||||
web-1 1/1 Running 0 4m
|
||||
@@ -628,7 +628,7 @@ pod "web-1" deleted
|
||||
Wait for the `web-1` Pod to be Running and Ready.
|
||||
|
||||
```shell
|
||||
kubectl get po -lapp=nginx -w
|
||||
kubectl get po -l app=nginx -w
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
web-0 1/1 Running 0 6m
|
||||
web-1 0/1 Terminating 0 6m
|
||||
@@ -673,7 +673,7 @@ statefulset "web" patched
|
||||
Wait for all of the Pods in the StatefulSet to become Running and Ready.
|
||||
|
||||
```shell
|
||||
kubectl get po -lapp=nginx -w
|
||||
kubectl get po -l app=nginx -w
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
web-0 1/1 Running 0 3m
|
||||
web-1 0/1 ContainerCreating 0 11s
|
||||
@@ -935,7 +935,7 @@ of the `web` StatefulSet is set to `Parallel`.
|
||||
In one terminal, watch the Pods in the StatefulSet.
|
||||
|
||||
```shell
|
||||
kubectl get po -lapp=nginx -w
|
||||
kubectl get po -l app=nginx -w
|
||||
```
|
||||
|
||||
In another terminal, create the StatefulSet and Service in the manifest.
|
||||
@@ -949,7 +949,7 @@ statefulset "web" created
|
||||
Examine the output of the `kubectl get` command that you executed in the first terminal.
|
||||
|
||||
```shell
|
||||
kubectl get po -lapp=nginx -w
|
||||
kubectl get po -l app=nginx -w
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
web-0 0/1 Pending 0 0s
|
||||
web-0 0/1 Pending 0 0s
|
||||
|
||||
@@ -13,7 +13,7 @@ title: Running ZooKeeper, A CP Distributed System
|
||||
{% capture overview %}
|
||||
This tutorial demonstrates [Apache Zookeeper](https://zookeeper.apache.org) on
|
||||
Kubernetes using [StatefulSets](/docs/concepts/abstractions/controllers/statefulsets/),
|
||||
[PodDisruptionBudgets](/docs/admin/disruptions/#specifying-a-poddisruptionbudget),
|
||||
[PodDisruptionBudgets](/docs/concepts/workloads/pods/disruptions/#specifying-a-poddisruptionbudget),
|
||||
and [PodAntiAffinity](/docs/user-guide/node-selection/#inter-pod-affinity-and-anti-affinity-beta-feature).
|
||||
{% endcapture %}
|
||||
|
||||
@@ -28,7 +28,7 @@ Kubernetes concepts.
|
||||
* [PersistentVolumes](/docs/concepts/storage/volumes/)
|
||||
* [PersistentVolume Provisioning](https://github.com/kubernetes/examples/tree/{{page.githubbranch}}/staging/persistent-volume-provisioning/)
|
||||
* [StatefulSets](/docs/concepts/abstractions/controllers/statefulsets/)
|
||||
* [PodDisruptionBudgets](/docs/admin/disruptions/#specifying-a-poddisruptionbudget)
|
||||
* [PodDisruptionBudgets](/docs/concepts/workloads/pods/disruptions/#specifying-a-poddisruptionbudget)
|
||||
* [PodAntiAffinity](/docs/user-guide/node-selection/#inter-pod-affinity-and-anti-affinity-beta-feature)
|
||||
* [kubectl CLI](/docs/user-guide/kubectl)
|
||||
|
||||
@@ -88,9 +88,9 @@ safely discarded.
|
||||
## Creating a ZooKeeper Ensemble
|
||||
|
||||
The manifest below contains a
|
||||
[Headless Service](/docs/user-guide/services/#headless-services),
|
||||
[Headless Service](/docs/concepts/services-networking/service/#headless-services),
|
||||
a [Service](/docs/concepts/services-networking/service),
|
||||
a [PodDisruptionBudget](/docs/admin/disruptions/#specifying-a-poddisruptionbudget),
|
||||
a [PodDisruptionBudget](/docs/concepts/workloads/pods/disruptions//#specifying-a-poddisruptionbudget),
|
||||
and a [StatefulSet](/docs/concepts/abstractions/controllers/statefulsets/).
|
||||
|
||||
{% include code.html language="yaml" file="zookeeper.yaml" ghlink="/docs/tutorials/stateful-application/zookeeper.yaml" %}
|
||||
@@ -935,7 +935,7 @@ This is because the Pods in the `zk` StatefulSet have a PodAntiAffinity specifie
|
||||
topologyKey: "kubernetes.io/hostname"
|
||||
```
|
||||
|
||||
The `requiredDuringSchedulingRequiredDuringExecution` field tells the
|
||||
The `requiredDuringSchedulingIgnoredDuringExecution` field tells the
|
||||
Kubernetes Scheduler that it should never co-locate two Pods from the `zk-headless`
|
||||
Service in the domain defined by the `topologyKey`. The `topologyKey`
|
||||
`kubernetes.io/hostname` indicates that the domain is an individual node. Using
|
||||
|
||||
Reference in New Issue
Block a user