From b6d431ea4dd9acc40e69ee4be11bda64ece59728 Mon Sep 17 00:00:00 2001 From: Rui Chen Date: Mon, 3 Dec 2018 09:36:16 -0500 Subject: [PATCH] zh-trans: add examples/podpreset/ examples/pods/{config,inject,probe,qos,resource,security,storage} yaml files --- .../examples/podpreset/allow-db-merged.yaml | 37 ++++++++++++ content/zh/examples/podpreset/allow-db.yaml | 30 ++++++++++ content/zh/examples/podpreset/configmap.yaml | 14 +++++ .../zh/examples/podpreset/conflict-pod.yaml | 19 ++++++ .../examples/podpreset/conflict-preset.yaml | 18 ++++++ content/zh/examples/podpreset/merged.yaml | 25 ++++++++ .../zh/examples/podpreset/multi-merged.yaml | 29 ++++++++++ content/zh/examples/podpreset/pod.yaml | 14 +++++ content/zh/examples/podpreset/preset.yaml | 17 ++++++ content/zh/examples/podpreset/proxy.yaml | 14 +++++ .../examples/podpreset/replicaset-merged.yaml | 31 ++++++++++ content/zh/examples/podpreset/replicaset.yaml | 29 ++++++++++ content/zh/examples/pods/commands.yaml | 13 +++++ .../zh/examples/pods/config/redis-pod.yaml | 30 ++++++++++ content/zh/examples/pods/init-containers.yaml | 30 ++++++++++ .../pods/inject/dapi-envars-container.yaml | 45 ++++++++++++++ .../examples/pods/inject/dapi-envars-pod.yaml | 38 ++++++++++++ .../pods/inject/dapi-volume-resources.yaml | 58 +++++++++++++++++++ .../zh/examples/pods/inject/dapi-volume.yaml | 39 +++++++++++++ content/zh/examples/pods/inject/envars.yaml | 15 +++++ .../pods/inject/secret-envars-pod.yaml | 19 ++++++ .../zh/examples/pods/inject/secret-pod.yaml | 17 ++++++ content/zh/examples/pods/inject/secret.yaml | 7 +++ .../zh/examples/pods/lifecycle-events.yaml | 16 +++++ .../examples/pods/pod-with-node-affinity.yaml | 26 +++++++++ .../examples/pods/pod-with-pod-affinity.yaml | 29 ++++++++++ content/zh/examples/pods/private-reg-pod.yaml | 11 ++++ .../zh/examples/pods/probe/exec-liveness.yaml | 21 +++++++ .../zh/examples/pods/probe/http-liveness.yaml | 21 +++++++ .../pods/probe/pod-with-http-healthcheck.yaml | 20 +++++++ .../pod-with-tcp-socket-healthcheck.yaml | 19 ++++++ .../pods/probe/tcp-liveness-readiness.yaml | 22 +++++++ content/zh/examples/pods/qos/qos-pod-2.yaml | 14 +++++ content/zh/examples/pods/qos/qos-pod-3.yaml | 9 +++ content/zh/examples/pods/qos/qos-pod-4.yaml | 16 +++++ content/zh/examples/pods/qos/qos-pod.yaml | 16 +++++ .../pods/resource/cpu-request-limit-2.yaml | 17 ++++++ .../pods/resource/cpu-request-limit.yaml | 17 ++++++ .../resource/extended-resource-pod-2.yaml | 13 +++++ .../pods/resource/extended-resource-pod.yaml | 13 +++++ .../pods/resource/memory-request-limit-2.yaml | 16 +++++ .../pods/resource/memory-request-limit-3.yaml | 16 +++++ .../pods/resource/memory-request-limit.yaml | 16 +++++ .../pods/security/hello-apparmor.yaml | 13 +++++ .../pods/security/security-context-2.yaml | 13 +++++ .../pods/security/security-context-3.yaml | 11 ++++ .../pods/security/security-context-4.yaml | 11 ++++ .../pods/security/security-context.yaml | 19 ++++++ .../pods/share-process-namespace.yaml | 17 ++++++ .../zh/examples/pods/storage/projected.yaml | 23 ++++++++ .../zh/examples/pods/storage/pv-claim.yaml | 11 ++++ content/zh/examples/pods/storage/pv-pod.yaml | 20 +++++++ .../zh/examples/pods/storage/pv-volume.yaml | 14 +++++ .../zh/examples/pods/two-container-pod.yaml | 27 +++++++++ 54 files changed, 1115 insertions(+) create mode 100644 content/zh/examples/podpreset/allow-db-merged.yaml create mode 100644 content/zh/examples/podpreset/allow-db.yaml create mode 100644 content/zh/examples/podpreset/configmap.yaml create mode 100644 content/zh/examples/podpreset/conflict-pod.yaml create mode 100644 content/zh/examples/podpreset/conflict-preset.yaml create mode 100644 content/zh/examples/podpreset/merged.yaml create mode 100644 content/zh/examples/podpreset/multi-merged.yaml create mode 100644 content/zh/examples/podpreset/pod.yaml create mode 100644 content/zh/examples/podpreset/preset.yaml create mode 100644 content/zh/examples/podpreset/proxy.yaml create mode 100644 content/zh/examples/podpreset/replicaset-merged.yaml create mode 100644 content/zh/examples/podpreset/replicaset.yaml create mode 100644 content/zh/examples/pods/commands.yaml create mode 100644 content/zh/examples/pods/config/redis-pod.yaml create mode 100644 content/zh/examples/pods/init-containers.yaml create mode 100644 content/zh/examples/pods/inject/dapi-envars-container.yaml create mode 100644 content/zh/examples/pods/inject/dapi-envars-pod.yaml create mode 100644 content/zh/examples/pods/inject/dapi-volume-resources.yaml create mode 100644 content/zh/examples/pods/inject/dapi-volume.yaml create mode 100644 content/zh/examples/pods/inject/envars.yaml create mode 100644 content/zh/examples/pods/inject/secret-envars-pod.yaml create mode 100644 content/zh/examples/pods/inject/secret-pod.yaml create mode 100644 content/zh/examples/pods/inject/secret.yaml create mode 100644 content/zh/examples/pods/lifecycle-events.yaml create mode 100644 content/zh/examples/pods/pod-with-node-affinity.yaml create mode 100644 content/zh/examples/pods/pod-with-pod-affinity.yaml create mode 100644 content/zh/examples/pods/private-reg-pod.yaml create mode 100644 content/zh/examples/pods/probe/exec-liveness.yaml create mode 100644 content/zh/examples/pods/probe/http-liveness.yaml create mode 100644 content/zh/examples/pods/probe/pod-with-http-healthcheck.yaml create mode 100644 content/zh/examples/pods/probe/pod-with-tcp-socket-healthcheck.yaml create mode 100644 content/zh/examples/pods/probe/tcp-liveness-readiness.yaml create mode 100644 content/zh/examples/pods/qos/qos-pod-2.yaml create mode 100644 content/zh/examples/pods/qos/qos-pod-3.yaml create mode 100644 content/zh/examples/pods/qos/qos-pod-4.yaml create mode 100644 content/zh/examples/pods/qos/qos-pod.yaml create mode 100644 content/zh/examples/pods/resource/cpu-request-limit-2.yaml create mode 100644 content/zh/examples/pods/resource/cpu-request-limit.yaml create mode 100644 content/zh/examples/pods/resource/extended-resource-pod-2.yaml create mode 100644 content/zh/examples/pods/resource/extended-resource-pod.yaml create mode 100644 content/zh/examples/pods/resource/memory-request-limit-2.yaml create mode 100644 content/zh/examples/pods/resource/memory-request-limit-3.yaml create mode 100644 content/zh/examples/pods/resource/memory-request-limit.yaml create mode 100644 content/zh/examples/pods/security/hello-apparmor.yaml create mode 100644 content/zh/examples/pods/security/security-context-2.yaml create mode 100644 content/zh/examples/pods/security/security-context-3.yaml create mode 100644 content/zh/examples/pods/security/security-context-4.yaml create mode 100644 content/zh/examples/pods/security/security-context.yaml create mode 100644 content/zh/examples/pods/share-process-namespace.yaml create mode 100644 content/zh/examples/pods/storage/projected.yaml create mode 100644 content/zh/examples/pods/storage/pv-claim.yaml create mode 100644 content/zh/examples/pods/storage/pv-pod.yaml create mode 100644 content/zh/examples/pods/storage/pv-volume.yaml create mode 100644 content/zh/examples/pods/two-container-pod.yaml diff --git a/content/zh/examples/podpreset/allow-db-merged.yaml b/content/zh/examples/podpreset/allow-db-merged.yaml new file mode 100644 index 0000000000..4f5af10abd --- /dev/null +++ b/content/zh/examples/podpreset/allow-db-merged.yaml @@ -0,0 +1,37 @@ +apiVersion: v1 +kind: Pod +metadata: + name: website + labels: + app: website + role: frontend + annotations: + podpreset.admission.kubernetes.io/podpreset-allow-database: "resource version" +spec: + containers: + - name: website + image: nginx + volumeMounts: + - mountPath: /cache + name: cache-volume + - mountPath: /etc/app/config.json + readOnly: true + name: secret-volume + ports: + - containerPort: 80 + env: + - name: DB_PORT + value: "6379" + - name: duplicate_key + value: FROM_ENV + - name: expansion + value: $(REPLACE_ME) + envFrom: + - configMapRef: + name: etcd-env-config + volumes: + - name: cache-volume + emptyDir: {} + - name: secret-volume + secret: + secretName: config-details diff --git a/content/zh/examples/podpreset/allow-db.yaml b/content/zh/examples/podpreset/allow-db.yaml new file mode 100644 index 0000000000..a5504789fe --- /dev/null +++ b/content/zh/examples/podpreset/allow-db.yaml @@ -0,0 +1,30 @@ +apiVersion: settings.k8s.io/v1alpha1 +kind: PodPreset +metadata: + name: allow-database +spec: + selector: + matchLabels: + role: frontend + env: + - name: DB_PORT + value: "6379" + - name: duplicate_key + value: FROM_ENV + - name: expansion + value: $(REPLACE_ME) + envFrom: + - configMapRef: + name: etcd-env-config + volumeMounts: + - mountPath: /cache + name: cache-volume + - mountPath: /etc/app/config.json + readOnly: true + name: secret-volume + volumes: + - name: cache-volume + emptyDir: {} + - name: secret-volume + secret: + secretName: config-details diff --git a/content/zh/examples/podpreset/configmap.yaml b/content/zh/examples/podpreset/configmap.yaml new file mode 100644 index 0000000000..806a880bff --- /dev/null +++ b/content/zh/examples/podpreset/configmap.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: etcd-env-config +data: + number_of_members: "1" + initial_cluster_state: new + initial_cluster_token: DUMMY_ETCD_INITIAL_CLUSTER_TOKEN + discovery_token: DUMMY_ETCD_DISCOVERY_TOKEN + discovery_url: http://etcd_discovery:2379 + etcdctl_peers: http://etcd:2379 + duplicate_key: FROM_CONFIG_MAP + REPLACE_ME: "a value" + diff --git a/content/zh/examples/podpreset/conflict-pod.yaml b/content/zh/examples/podpreset/conflict-pod.yaml new file mode 100644 index 0000000000..6949f7e162 --- /dev/null +++ b/content/zh/examples/podpreset/conflict-pod.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Pod +metadata: + name: website + labels: + app: website + role: frontend +spec: + containers: + - name: website + image: nginx + volumeMounts: + - mountPath: /cache + name: cache-volume + ports: + - containerPort: 80 + volumes: + - name: cache-volume + emptyDir: {} diff --git a/content/zh/examples/podpreset/conflict-preset.yaml b/content/zh/examples/podpreset/conflict-preset.yaml new file mode 100644 index 0000000000..a2ad96c48a --- /dev/null +++ b/content/zh/examples/podpreset/conflict-preset.yaml @@ -0,0 +1,18 @@ +apiVersion: settings.k8s.io/v1alpha1 +kind: PodPreset +metadata: + name: allow-database +spec: + selector: + matchLabels: + role: frontend + env: + - name: DB_PORT + value: "6379" + volumeMounts: + - mountPath: /cache + name: other-volume + volumes: + - name: other-volume + emptyDir: {} + diff --git a/content/zh/examples/podpreset/merged.yaml b/content/zh/examples/podpreset/merged.yaml new file mode 100644 index 0000000000..97c022c86c --- /dev/null +++ b/content/zh/examples/podpreset/merged.yaml @@ -0,0 +1,25 @@ +apiVersion: v1 +kind: Pod +metadata: + name: website + labels: + app: website + role: frontend + annotations: + podpreset.admission.kubernetes.io/podpreset-allow-database: "resource version" +spec: + containers: + - name: website + image: nginx + volumeMounts: + - mountPath: /cache + name: cache-volume + ports: + - containerPort: 80 + env: + - name: DB_PORT + value: "6379" + volumes: + - name: cache-volume + emptyDir: {} + diff --git a/content/zh/examples/podpreset/multi-merged.yaml b/content/zh/examples/podpreset/multi-merged.yaml new file mode 100644 index 0000000000..7fcaae62e3 --- /dev/null +++ b/content/zh/examples/podpreset/multi-merged.yaml @@ -0,0 +1,29 @@ +apiVersion: v1 +kind: Pod +metadata: + name: website + labels: + app: website + role: frontend + annotations: + podpreset.admission.kubernetes.io/podpreset-allow-database: "resource version" + podpreset.admission.kubernetes.io/podpreset-proxy: "resource version" +spec: + containers: + - name: website + image: nginx + volumeMounts: + - mountPath: /cache + name: cache-volume + - mountPath: /etc/proxy/configs + name: proxy-volume + ports: + - containerPort: 80 + env: + - name: DB_PORT + value: "6379" + volumes: + - name: cache-volume + emptyDir: {} + - name: proxy-volume + emptyDir: {} diff --git a/content/zh/examples/podpreset/pod.yaml b/content/zh/examples/podpreset/pod.yaml new file mode 100644 index 0000000000..b6b4e60d6e --- /dev/null +++ b/content/zh/examples/podpreset/pod.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Pod +metadata: + name: website + labels: + app: website + role: frontend +spec: + containers: + - name: website + image: nginx + ports: + - containerPort: 80 + diff --git a/content/zh/examples/podpreset/preset.yaml b/content/zh/examples/podpreset/preset.yaml new file mode 100644 index 0000000000..f300289c82 --- /dev/null +++ b/content/zh/examples/podpreset/preset.yaml @@ -0,0 +1,17 @@ +apiVersion: settings.k8s.io/v1alpha1 +kind: PodPreset +metadata: + name: allow-database +spec: + selector: + matchLabels: + role: frontend + env: + - name: DB_PORT + value: "6379" + volumeMounts: + - mountPath: /cache + name: cache-volume + volumes: + - name: cache-volume + emptyDir: {} diff --git a/content/zh/examples/podpreset/proxy.yaml b/content/zh/examples/podpreset/proxy.yaml new file mode 100644 index 0000000000..d854475ac2 --- /dev/null +++ b/content/zh/examples/podpreset/proxy.yaml @@ -0,0 +1,14 @@ +apiVersion: settings.k8s.io/v1alpha1 +kind: PodPreset +metadata: + name: proxy +spec: + selector: + matchLabels: + role: frontend + volumeMounts: + - mountPath: /etc/proxy/configs + name: proxy-volume + volumes: + - name: proxy-volume + emptyDir: {} diff --git a/content/zh/examples/podpreset/replicaset-merged.yaml b/content/zh/examples/podpreset/replicaset-merged.yaml new file mode 100644 index 0000000000..95cf846ebc --- /dev/null +++ b/content/zh/examples/podpreset/replicaset-merged.yaml @@ -0,0 +1,31 @@ +apiVersion: v1 +kind: Pod +metadata: + name: frontend + labels: + app: guestbook + role: frontend + annotations: + podpreset.admission.kubernetes.io/podpreset-allow-database: "resource version" +spec: + containers: + - name: php-redis + image: gcr.io/google_samples/gb-frontend:v3 + resources: + requests: + cpu: 100m + memory: 100Mi + volumeMounts: + - mountPath: /cache + name: cache-volume + env: + - name: GET_HOSTS_FROM + value: dns + - name: DB_PORT + value: "6379" + ports: + - containerPort: 80 + volumes: + - name: cache-volume + emptyDir: {} + diff --git a/content/zh/examples/podpreset/replicaset.yaml b/content/zh/examples/podpreset/replicaset.yaml new file mode 100644 index 0000000000..e9d49a9d1d --- /dev/null +++ b/content/zh/examples/podpreset/replicaset.yaml @@ -0,0 +1,29 @@ +apiVersion: apps/v1 +kind: ReplicaSet +metadata: + name: frontend +spec: + replicas: 3 + selector: + matchLabels: + role: frontend + matchExpressions: + - {key: role, operator: In, values: [frontend]} + template: + metadata: + labels: + app: guestbook + role: frontend + spec: + containers: + - name: php-redis + image: gcr.io/google_samples/gb-frontend:v3 + resources: + requests: + cpu: 100m + memory: 100Mi + env: + - name: GET_HOSTS_FROM + value: dns + ports: + - containerPort: 80 diff --git a/content/zh/examples/pods/commands.yaml b/content/zh/examples/pods/commands.yaml new file mode 100644 index 0000000000..2327d25827 --- /dev/null +++ b/content/zh/examples/pods/commands.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Pod +metadata: + name: command-demo + labels: + purpose: demonstrate-command +spec: + containers: + - name: command-demo-container + image: debian + command: ["printenv"] + args: ["HOSTNAME", "KUBERNETES_PORT"] + restartPolicy: OnFailure diff --git a/content/zh/examples/pods/config/redis-pod.yaml b/content/zh/examples/pods/config/redis-pod.yaml new file mode 100644 index 0000000000..259dbf853a --- /dev/null +++ b/content/zh/examples/pods/config/redis-pod.yaml @@ -0,0 +1,30 @@ +apiVersion: v1 +kind: Pod +metadata: + name: redis +spec: + containers: + - name: redis + image: kubernetes/redis:v1 + env: + - name: MASTER + value: "true" + ports: + - containerPort: 6379 + resources: + limits: + cpu: "0.1" + volumeMounts: + - mountPath: /redis-master-data + name: data + - mountPath: /redis-master + name: config + volumes: + - name: data + emptyDir: {} + - name: config + configMap: + name: example-redis-config + items: + - key: redis-config + path: redis.conf diff --git a/content/zh/examples/pods/init-containers.yaml b/content/zh/examples/pods/init-containers.yaml new file mode 100644 index 0000000000..35c393d7c7 --- /dev/null +++ b/content/zh/examples/pods/init-containers.yaml @@ -0,0 +1,30 @@ +apiVersion: v1 +kind: Pod +metadata: + name: init-demo +spec: + containers: + - name: nginx + image: nginx + ports: + - containerPort: 80 + volumeMounts: + - name: workdir + mountPath: /usr/share/nginx/html + # These containers are run during pod initialization + initContainers: + - name: install + image: busybox + command: + - wget + - "-O" + - "/work-dir/index.html" + - http://kubernetes.io + volumeMounts: + - name: workdir + mountPath: "/work-dir" + dnsPolicy: Default + volumes: + - name: workdir + emptyDir: {} + diff --git a/content/zh/examples/pods/inject/dapi-envars-container.yaml b/content/zh/examples/pods/inject/dapi-envars-container.yaml new file mode 100644 index 0000000000..55bd4dd263 --- /dev/null +++ b/content/zh/examples/pods/inject/dapi-envars-container.yaml @@ -0,0 +1,45 @@ +apiVersion: v1 +kind: Pod +metadata: + name: dapi-envars-resourcefieldref +spec: + containers: + - name: test-container + image: k8s.gcr.io/busybox:1.24 + command: [ "sh", "-c"] + args: + - while true; do + echo -en '\n'; + printenv MY_CPU_REQUEST MY_CPU_LIMIT; + printenv MY_MEM_REQUEST MY_MEM_LIMIT; + sleep 10; + done; + resources: + requests: + memory: "32Mi" + cpu: "125m" + limits: + memory: "64Mi" + cpu: "250m" + env: + - name: MY_CPU_REQUEST + valueFrom: + resourceFieldRef: + containerName: test-container + resource: requests.cpu + - name: MY_CPU_LIMIT + valueFrom: + resourceFieldRef: + containerName: test-container + resource: limits.cpu + - name: MY_MEM_REQUEST + valueFrom: + resourceFieldRef: + containerName: test-container + resource: requests.memory + - name: MY_MEM_LIMIT + valueFrom: + resourceFieldRef: + containerName: test-container + resource: limits.memory + restartPolicy: Never diff --git a/content/zh/examples/pods/inject/dapi-envars-pod.yaml b/content/zh/examples/pods/inject/dapi-envars-pod.yaml new file mode 100644 index 0000000000..071fa82bb3 --- /dev/null +++ b/content/zh/examples/pods/inject/dapi-envars-pod.yaml @@ -0,0 +1,38 @@ +apiVersion: v1 +kind: Pod +metadata: + name: dapi-envars-fieldref +spec: + containers: + - name: test-container + image: k8s.gcr.io/busybox + command: [ "sh", "-c"] + args: + - while true; do + echo -en '\n'; + printenv MY_NODE_NAME MY_POD_NAME MY_POD_NAMESPACE; + printenv MY_POD_IP MY_POD_SERVICE_ACCOUNT; + sleep 10; + done; + env: + - name: MY_NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + - name: MY_POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: MY_POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: MY_POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + - name: MY_POD_SERVICE_ACCOUNT + valueFrom: + fieldRef: + fieldPath: spec.serviceAccountName + restartPolicy: Never diff --git a/content/zh/examples/pods/inject/dapi-volume-resources.yaml b/content/zh/examples/pods/inject/dapi-volume-resources.yaml new file mode 100644 index 0000000000..ee9677bec4 --- /dev/null +++ b/content/zh/examples/pods/inject/dapi-volume-resources.yaml @@ -0,0 +1,58 @@ +apiVersion: v1 +kind: Pod +metadata: + name: kubernetes-downwardapi-volume-example-2 +spec: + containers: + - name: client-container + image: k8s.gcr.io/busybox:1.24 + command: ["sh", "-c"] + args: + - while true; do + echo -en '\n'; + if [[ -e /etc/podinfo/cpu_limit ]]; then + echo -en '\n'; cat /etc/podinfo/cpu_limit; fi; + if [[ -e /etc/podinfo/cpu_request ]]; then + echo -en '\n'; cat /etc/podinfo/cpu_request; fi; + if [[ -e /etc/podinfo/mem_limit ]]; then + echo -en '\n'; cat /etc/podinfo/mem_limit; fi; + if [[ -e /etc/podinfo/mem_request ]]; then + echo -en '\n'; cat /etc/podinfo/mem_request; fi; + sleep 5; + done; + resources: + requests: + memory: "32Mi" + cpu: "125m" + limits: + memory: "64Mi" + cpu: "250m" + volumeMounts: + - name: podinfo + mountPath: /etc/podinfo + readOnly: false + volumes: + - name: podinfo + downwardAPI: + items: + - path: "cpu_limit" + resourceFieldRef: + containerName: client-container + resource: limits.cpu + divisor: 1m + - path: "cpu_request" + resourceFieldRef: + containerName: client-container + resource: requests.cpu + divisor: 1m + - path: "mem_limit" + resourceFieldRef: + containerName: client-container + resource: limits.memory + divisor: 1Mi + - path: "mem_request" + resourceFieldRef: + containerName: client-container + resource: requests.memory + divisor: 1Mi + diff --git a/content/zh/examples/pods/inject/dapi-volume.yaml b/content/zh/examples/pods/inject/dapi-volume.yaml new file mode 100644 index 0000000000..e7515afba5 --- /dev/null +++ b/content/zh/examples/pods/inject/dapi-volume.yaml @@ -0,0 +1,39 @@ +apiVersion: v1 +kind: Pod +metadata: + name: kubernetes-downwardapi-volume-example + labels: + zone: us-est-coast + cluster: test-cluster1 + rack: rack-22 + annotations: + build: two + builder: john-doe +spec: + containers: + - name: client-container + image: k8s.gcr.io/busybox + command: ["sh", "-c"] + args: + - while true; do + if [[ -e /etc/podinfo/labels ]]; then + echo -en '\n\n'; cat /etc/podinfo/labels; fi; + if [[ -e /etc/podinfo/annotations ]]; then + echo -en '\n\n'; cat /etc/podinfo/annotations; fi; + sleep 5; + done; + volumeMounts: + - name: podinfo + mountPath: /etc/podinfo + readOnly: false + volumes: + - name: podinfo + downwardAPI: + items: + - path: "labels" + fieldRef: + fieldPath: metadata.labels + - path: "annotations" + fieldRef: + fieldPath: metadata.annotations + diff --git a/content/zh/examples/pods/inject/envars.yaml b/content/zh/examples/pods/inject/envars.yaml new file mode 100644 index 0000000000..ebf5214376 --- /dev/null +++ b/content/zh/examples/pods/inject/envars.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: envar-demo + labels: + purpose: demonstrate-envars +spec: + containers: + - name: envar-demo-container + image: gcr.io/google-samples/node-hello:1.0 + env: + - name: DEMO_GREETING + value: "Hello from the environment" + - name: DEMO_FAREWELL + value: "Such a sweet sorrow" diff --git a/content/zh/examples/pods/inject/secret-envars-pod.yaml b/content/zh/examples/pods/inject/secret-envars-pod.yaml new file mode 100644 index 0000000000..1637c0eac3 --- /dev/null +++ b/content/zh/examples/pods/inject/secret-envars-pod.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Pod +metadata: + name: secret-envars-test-pod +spec: + containers: + - name: envars-test-container + image: nginx + env: + - name: SECRET_USERNAME + valueFrom: + secretKeyRef: + name: test-secret + key: username + - name: SECRET_PASSWORD + valueFrom: + secretKeyRef: + name: test-secret + key: password diff --git a/content/zh/examples/pods/inject/secret-pod.yaml b/content/zh/examples/pods/inject/secret-pod.yaml new file mode 100644 index 0000000000..78633c477c --- /dev/null +++ b/content/zh/examples/pods/inject/secret-pod.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Pod +metadata: + name: secret-test-pod +spec: + containers: + - name: test-container + image: nginx + volumeMounts: + # name must match the volume name below + - name: secret-volume + mountPath: /etc/secret-volume + # The secret data is exposed to Containers in the Pod through a Volume. + volumes: + - name: secret-volume + secret: + secretName: test-secret diff --git a/content/zh/examples/pods/inject/secret.yaml b/content/zh/examples/pods/inject/secret.yaml new file mode 100644 index 0000000000..706ca8670f --- /dev/null +++ b/content/zh/examples/pods/inject/secret.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: Secret +metadata: + name: test-secret +data: + username: bXktYXBw + password: Mzk1MjgkdmRnN0pi diff --git a/content/zh/examples/pods/lifecycle-events.yaml b/content/zh/examples/pods/lifecycle-events.yaml new file mode 100644 index 0000000000..e5fcffcc9e --- /dev/null +++ b/content/zh/examples/pods/lifecycle-events.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Pod +metadata: + name: lifecycle-demo +spec: + containers: + - name: lifecycle-demo-container + image: nginx + lifecycle: + postStart: + exec: + command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"] + preStop: + exec: + command: ["/usr/sbin/nginx","-s","quit"] + diff --git a/content/zh/examples/pods/pod-with-node-affinity.yaml b/content/zh/examples/pods/pod-with-node-affinity.yaml new file mode 100644 index 0000000000..253d2b21ea --- /dev/null +++ b/content/zh/examples/pods/pod-with-node-affinity.yaml @@ -0,0 +1,26 @@ +apiVersion: v1 +kind: Pod +metadata: + name: with-node-affinity +spec: + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/e2e-az-name + operator: In + values: + - e2e-az1 + - e2e-az2 + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 1 + preference: + matchExpressions: + - key: another-node-label-key + operator: In + values: + - another-node-label-value + containers: + - name: with-node-affinity + image: k8s.gcr.io/pause:2.0 \ No newline at end of file diff --git a/content/zh/examples/pods/pod-with-pod-affinity.yaml b/content/zh/examples/pods/pod-with-pod-affinity.yaml new file mode 100644 index 0000000000..1897af901f --- /dev/null +++ b/content/zh/examples/pods/pod-with-pod-affinity.yaml @@ -0,0 +1,29 @@ +apiVersion: v1 +kind: Pod +metadata: + name: with-pod-affinity +spec: + affinity: + podAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: security + operator: In + values: + - S1 + topologyKey: failure-domain.beta.kubernetes.io/zone + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 100 + podAffinityTerm: + labelSelector: + matchExpressions: + - key: security + operator: In + values: + - S2 + topologyKey: kubernetes.io/hostname + containers: + - name: with-pod-affinity + image: k8s.gcr.io/pause:2.0 diff --git a/content/zh/examples/pods/private-reg-pod.yaml b/content/zh/examples/pods/private-reg-pod.yaml new file mode 100644 index 0000000000..4029588dd0 --- /dev/null +++ b/content/zh/examples/pods/private-reg-pod.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Pod +metadata: + name: private-reg +spec: + containers: + - name: private-reg-container + image: + imagePullSecrets: + - name: regcred + diff --git a/content/zh/examples/pods/probe/exec-liveness.yaml b/content/zh/examples/pods/probe/exec-liveness.yaml new file mode 100644 index 0000000000..07bf75f85c --- /dev/null +++ b/content/zh/examples/pods/probe/exec-liveness.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +kind: Pod +metadata: + labels: + test: liveness + name: liveness-exec +spec: + containers: + - name: liveness + image: k8s.gcr.io/busybox + args: + - /bin/sh + - -c + - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600 + livenessProbe: + exec: + command: + - cat + - /tmp/healthy + initialDelaySeconds: 5 + periodSeconds: 5 diff --git a/content/zh/examples/pods/probe/http-liveness.yaml b/content/zh/examples/pods/probe/http-liveness.yaml new file mode 100644 index 0000000000..23d37b480a --- /dev/null +++ b/content/zh/examples/pods/probe/http-liveness.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +kind: Pod +metadata: + labels: + test: liveness + name: liveness-http +spec: + containers: + - name: liveness + image: k8s.gcr.io/liveness + args: + - /server + livenessProbe: + httpGet: + path: /healthz + port: 8080 + httpHeaders: + - name: X-Custom-Header + value: Awesome + initialDelaySeconds: 3 + periodSeconds: 3 diff --git a/content/zh/examples/pods/probe/pod-with-http-healthcheck.yaml b/content/zh/examples/pods/probe/pod-with-http-healthcheck.yaml new file mode 100644 index 0000000000..3f40854e92 --- /dev/null +++ b/content/zh/examples/pods/probe/pod-with-http-healthcheck.yaml @@ -0,0 +1,20 @@ +apiVersion: v1 +kind: Pod +metadata: + name: pod-with-http-healthcheck +spec: + containers: + - name: nginx + image: nginx + # defines the health checking + livenessProbe: + # an http probe + httpGet: + path: /_status/healthz + port: 80 + # length of time to wait for a pod to initialize + # after pod startup, before applying health checking + initialDelaySeconds: 30 + timeoutSeconds: 1 + ports: + - containerPort: 80 diff --git a/content/zh/examples/pods/probe/pod-with-tcp-socket-healthcheck.yaml b/content/zh/examples/pods/probe/pod-with-tcp-socket-healthcheck.yaml new file mode 100644 index 0000000000..5f0bca283c --- /dev/null +++ b/content/zh/examples/pods/probe/pod-with-tcp-socket-healthcheck.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Pod +metadata: + name: pod-with-tcp-socket-healthcheck +spec: + containers: + - name: redis + image: redis + # defines the health checking + livenessProbe: + # a TCP socket probe + tcpSocket: + port: 6379 + # length of time to wait for a pod to initialize + # after pod startup, before applying health checking + initialDelaySeconds: 30 + timeoutSeconds: 1 + ports: + - containerPort: 6379 diff --git a/content/zh/examples/pods/probe/tcp-liveness-readiness.yaml b/content/zh/examples/pods/probe/tcp-liveness-readiness.yaml new file mode 100644 index 0000000000..08fb77ff0f --- /dev/null +++ b/content/zh/examples/pods/probe/tcp-liveness-readiness.yaml @@ -0,0 +1,22 @@ +apiVersion: v1 +kind: Pod +metadata: + name: goproxy + labels: + app: goproxy +spec: + containers: + - name: goproxy + image: k8s.gcr.io/goproxy:0.1 + ports: + - containerPort: 8080 + readinessProbe: + tcpSocket: + port: 8080 + initialDelaySeconds: 5 + periodSeconds: 10 + livenessProbe: + tcpSocket: + port: 8080 + initialDelaySeconds: 15 + periodSeconds: 20 diff --git a/content/zh/examples/pods/qos/qos-pod-2.yaml b/content/zh/examples/pods/qos/qos-pod-2.yaml new file mode 100644 index 0000000000..115d4de21e --- /dev/null +++ b/content/zh/examples/pods/qos/qos-pod-2.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Pod +metadata: + name: qos-demo-2 + namespace: qos-example +spec: + containers: + - name: qos-demo-2-ctr + image: nginx + resources: + limits: + memory: "200Mi" + requests: + memory: "100Mi" diff --git a/content/zh/examples/pods/qos/qos-pod-3.yaml b/content/zh/examples/pods/qos/qos-pod-3.yaml new file mode 100644 index 0000000000..dac3629942 --- /dev/null +++ b/content/zh/examples/pods/qos/qos-pod-3.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Pod +metadata: + name: qos-demo-3 + namespace: qos-example +spec: + containers: + - name: qos-demo-3-ctr + image: nginx diff --git a/content/zh/examples/pods/qos/qos-pod-4.yaml b/content/zh/examples/pods/qos/qos-pod-4.yaml new file mode 100644 index 0000000000..d4818b277e --- /dev/null +++ b/content/zh/examples/pods/qos/qos-pod-4.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Pod +metadata: + name: qos-demo-4 + namespace: qos-example +spec: + containers: + + - name: qos-demo-4-ctr-1 + image: nginx + resources: + requests: + memory: "200Mi" + + - name: qos-demo-4-ctr-2 + image: redis diff --git a/content/zh/examples/pods/qos/qos-pod.yaml b/content/zh/examples/pods/qos/qos-pod.yaml new file mode 100644 index 0000000000..b4a6b1ea82 --- /dev/null +++ b/content/zh/examples/pods/qos/qos-pod.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Pod +metadata: + name: qos-demo + namespace: qos-example +spec: + containers: + - name: qos-demo-ctr + image: nginx + resources: + limits: + memory: "200Mi" + cpu: "700m" + requests: + memory: "200Mi" + cpu: "700m" diff --git a/content/zh/examples/pods/resource/cpu-request-limit-2.yaml b/content/zh/examples/pods/resource/cpu-request-limit-2.yaml new file mode 100644 index 0000000000..f505c77fbb --- /dev/null +++ b/content/zh/examples/pods/resource/cpu-request-limit-2.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Pod +metadata: + name: cpu-demo-2 + namespace: cpu-example +spec: + containers: + - name: cpu-demo-ctr-2 + image: vish/stress + resources: + limits: + cpu: "100" + requests: + cpu: "100" + args: + - -cpus + - "2" diff --git a/content/zh/examples/pods/resource/cpu-request-limit.yaml b/content/zh/examples/pods/resource/cpu-request-limit.yaml new file mode 100644 index 0000000000..2cc0b2cf4f --- /dev/null +++ b/content/zh/examples/pods/resource/cpu-request-limit.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Pod +metadata: + name: cpu-demo + namespace: cpu-example +spec: + containers: + - name: cpu-demo-ctr + image: vish/stress + resources: + limits: + cpu: "1" + requests: + cpu: "0.5" + args: + - -cpus + - "2" diff --git a/content/zh/examples/pods/resource/extended-resource-pod-2.yaml b/content/zh/examples/pods/resource/extended-resource-pod-2.yaml new file mode 100644 index 0000000000..9c15d9ec86 --- /dev/null +++ b/content/zh/examples/pods/resource/extended-resource-pod-2.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Pod +metadata: + name: extended-resource-demo-2 +spec: + containers: + - name: extended-resource-demo-2-ctr + image: nginx + resources: + requests: + example.com/dongle: 2 + limits: + example.com/dongle: 2 diff --git a/content/zh/examples/pods/resource/extended-resource-pod.yaml b/content/zh/examples/pods/resource/extended-resource-pod.yaml new file mode 100644 index 0000000000..4fb3de740e --- /dev/null +++ b/content/zh/examples/pods/resource/extended-resource-pod.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Pod +metadata: + name: extended-resource-demo +spec: + containers: + - name: extended-resource-demo-ctr + image: nginx + resources: + requests: + example.com/dongle: 3 + limits: + example.com/dongle: 3 diff --git a/content/zh/examples/pods/resource/memory-request-limit-2.yaml b/content/zh/examples/pods/resource/memory-request-limit-2.yaml new file mode 100644 index 0000000000..99032c4fc2 --- /dev/null +++ b/content/zh/examples/pods/resource/memory-request-limit-2.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Pod +metadata: + name: memory-demo-2 + namespace: mem-example +spec: + containers: + - name: memory-demo-2-ctr + image: polinux/stress + resources: + requests: + memory: "50Mi" + limits: + memory: "100Mi" + command: ["stress"] + args: ["--vm", "1", "--vm-bytes", "250M", "--vm-hang", "1"] diff --git a/content/zh/examples/pods/resource/memory-request-limit-3.yaml b/content/zh/examples/pods/resource/memory-request-limit-3.yaml new file mode 100644 index 0000000000..9f089c4a7a --- /dev/null +++ b/content/zh/examples/pods/resource/memory-request-limit-3.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Pod +metadata: + name: memory-demo-3 + namespace: mem-example +spec: + containers: + - name: memory-demo-3-ctr + image: polinux/stress + resources: + limits: + memory: "1000Gi" + requests: + memory: "1000Gi" + command: ["stress"] + args: ["--vm", "1", "--vm-bytes", "150M", "--vm-hang", "1"] diff --git a/content/zh/examples/pods/resource/memory-request-limit.yaml b/content/zh/examples/pods/resource/memory-request-limit.yaml new file mode 100644 index 0000000000..985b1308d9 --- /dev/null +++ b/content/zh/examples/pods/resource/memory-request-limit.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Pod +metadata: + name: memory-demo + namespace: mem-example +spec: + containers: + - name: memory-demo-ctr + image: polinux/stress + resources: + limits: + memory: "200Mi" + requests: + memory: "100Mi" + command: ["stress"] + args: ["--vm", "1", "--vm-bytes", "150M", "--vm-hang", "1"] diff --git a/content/zh/examples/pods/security/hello-apparmor.yaml b/content/zh/examples/pods/security/hello-apparmor.yaml new file mode 100644 index 0000000000..3e9b3b2a9c --- /dev/null +++ b/content/zh/examples/pods/security/hello-apparmor.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Pod +metadata: + name: hello-apparmor + annotations: + # Tell Kubernetes to apply the AppArmor profile "k8s-apparmor-example-deny-write". + # Note that this is ignored if the Kubernetes node is not running version 1.4 or greater. + 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" ] diff --git a/content/zh/examples/pods/security/security-context-2.yaml b/content/zh/examples/pods/security/security-context-2.yaml new file mode 100644 index 0000000000..0e3185341e --- /dev/null +++ b/content/zh/examples/pods/security/security-context-2.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Pod +metadata: + name: security-context-demo-2 +spec: + securityContext: + runAsUser: 1000 + containers: + - name: sec-ctx-demo-2 + image: gcr.io/google-samples/node-hello:1.0 + securityContext: + runAsUser: 2000 + allowPrivilegeEscalation: false diff --git a/content/zh/examples/pods/security/security-context-3.yaml b/content/zh/examples/pods/security/security-context-3.yaml new file mode 100644 index 0000000000..05295e1a03 --- /dev/null +++ b/content/zh/examples/pods/security/security-context-3.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Pod +metadata: + name: security-context-demo-3 +spec: + containers: + - name: sec-ctx-3 + image: gcr.io/google-samples/node-hello:1.0 + + + diff --git a/content/zh/examples/pods/security/security-context-4.yaml b/content/zh/examples/pods/security/security-context-4.yaml new file mode 100644 index 0000000000..d725308fec --- /dev/null +++ b/content/zh/examples/pods/security/security-context-4.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Pod +metadata: + name: security-context-demo-4 +spec: + containers: + - name: sec-ctx-4 + image: gcr.io/google-samples/node-hello:1.0 + securityContext: + capabilities: + add: ["NET_ADMIN", "SYS_TIME"] diff --git a/content/zh/examples/pods/security/security-context.yaml b/content/zh/examples/pods/security/security-context.yaml new file mode 100644 index 0000000000..86ca51d39a --- /dev/null +++ b/content/zh/examples/pods/security/security-context.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Pod +metadata: + name: security-context-demo +spec: + securityContext: + runAsUser: 1000 + fsGroup: 2000 + volumes: + - name: sec-ctx-vol + emptyDir: {} + containers: + - name: sec-ctx-demo + image: gcr.io/google-samples/node-hello:1.0 + volumeMounts: + - name: sec-ctx-vol + mountPath: /data/demo + securityContext: + allowPrivilegeEscalation: false diff --git a/content/zh/examples/pods/share-process-namespace.yaml b/content/zh/examples/pods/share-process-namespace.yaml new file mode 100644 index 0000000000..af812732a2 --- /dev/null +++ b/content/zh/examples/pods/share-process-namespace.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Pod +metadata: + name: nginx +spec: + shareProcessNamespace: true + containers: + - name: nginx + image: nginx + - name: shell + image: busybox + securityContext: + capabilities: + add: + - SYS_PTRACE + stdin: true + tty: true diff --git a/content/zh/examples/pods/storage/projected.yaml b/content/zh/examples/pods/storage/projected.yaml new file mode 100644 index 0000000000..172ca0dee5 --- /dev/null +++ b/content/zh/examples/pods/storage/projected.yaml @@ -0,0 +1,23 @@ +apiVersion: v1 +kind: Pod +metadata: + name: test-projected-volume +spec: + containers: + - name: test-projected-volume + image: busybox + args: + - sleep + - "86400" + volumeMounts: + - name: all-in-one + mountPath: "/projected-volume" + readOnly: true + volumes: + - name: all-in-one + projected: + sources: + - secret: + name: user + - secret: + name: pass diff --git a/content/zh/examples/pods/storage/pv-claim.yaml b/content/zh/examples/pods/storage/pv-claim.yaml new file mode 100644 index 0000000000..197db917c8 --- /dev/null +++ b/content/zh/examples/pods/storage/pv-claim.yaml @@ -0,0 +1,11 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: task-pv-claim +spec: + storageClassName: manual + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 3Gi diff --git a/content/zh/examples/pods/storage/pv-pod.yaml b/content/zh/examples/pods/storage/pv-pod.yaml new file mode 100644 index 0000000000..9bb4ca45ad --- /dev/null +++ b/content/zh/examples/pods/storage/pv-pod.yaml @@ -0,0 +1,20 @@ +kind: Pod +apiVersion: v1 +metadata: + name: task-pv-pod +spec: + volumes: + - name: task-pv-storage + persistentVolumeClaim: + claimName: task-pv-claim + containers: + - name: task-pv-container + image: nginx + ports: + - containerPort: 80 + name: "http-server" + volumeMounts: + - mountPath: "/usr/share/nginx/html" + name: task-pv-storage + + diff --git a/content/zh/examples/pods/storage/pv-volume.yaml b/content/zh/examples/pods/storage/pv-volume.yaml new file mode 100644 index 0000000000..33ca6843f4 --- /dev/null +++ b/content/zh/examples/pods/storage/pv-volume.yaml @@ -0,0 +1,14 @@ +kind: PersistentVolume +apiVersion: v1 +metadata: + name: task-pv-volume + labels: + type: local +spec: + storageClassName: manual + capacity: + storage: 10Gi + accessModes: + - ReadWriteOnce + hostPath: + path: "/mnt/data" diff --git a/content/zh/examples/pods/two-container-pod.yaml b/content/zh/examples/pods/two-container-pod.yaml new file mode 100644 index 0000000000..031ada7112 --- /dev/null +++ b/content/zh/examples/pods/two-container-pod.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +kind: Pod +metadata: + name: two-containers +spec: + + restartPolicy: Never + + volumes: + - name: shared-data + emptyDir: {} + + containers: + + - name: nginx-container + image: nginx + volumeMounts: + - name: shared-data + mountPath: /usr/share/nginx/html + + - name: debian-container + image: debian + volumeMounts: + - name: shared-data + mountPath: /pod-data + command: ["/bin/sh"] + args: ["-c", "echo Hello from the debian container > /pod-data/index.html"]