diff --git a/content/zh/examples/controllers/daemonset.yaml b/content/zh/examples/controllers/daemonset.yaml
new file mode 100644
index 0000000000..c576ede377
--- /dev/null
+++ b/content/zh/examples/controllers/daemonset.yaml
@@ -0,0 +1,42 @@
+apiVersion: apps/v1
+kind: DaemonSet
+metadata:
+ name: fluentd-elasticsearch
+ namespace: kube-system
+ labels:
+ k8s-app: fluentd-logging
+spec:
+ selector:
+ matchLabels:
+ name: fluentd-elasticsearch
+ template:
+ metadata:
+ labels:
+ name: fluentd-elasticsearch
+ spec:
+ tolerations:
+ - key: node-role.kubernetes.io/master
+ effect: NoSchedule
+ containers:
+ - name: fluentd-elasticsearch
+ image: k8s.gcr.io/fluentd-elasticsearch:1.20
+ resources:
+ limits:
+ memory: 200Mi
+ requests:
+ cpu: 100m
+ memory: 200Mi
+ volumeMounts:
+ - name: varlog
+ mountPath: /var/log
+ - name: varlibdockercontainers
+ mountPath: /var/lib/docker/containers
+ readOnly: true
+ terminationGracePeriodSeconds: 30
+ volumes:
+ - name: varlog
+ hostPath:
+ path: /var/log
+ - name: varlibdockercontainers
+ hostPath:
+ path: /var/lib/docker/containers
diff --git a/content/zh/examples/controllers/frontend.yaml b/content/zh/examples/controllers/frontend.yaml
new file mode 100644
index 0000000000..f9dba82b7e
--- /dev/null
+++ b/content/zh/examples/controllers/frontend.yaml
@@ -0,0 +1,38 @@
+apiVersion: apps/v1
+kind: ReplicaSet
+metadata:
+ name: frontend
+ labels:
+ app: guestbook
+ tier: frontend
+spec:
+ # modify replicas according to your case
+ replicas: 3
+ selector:
+ matchLabels:
+ tier: frontend
+ matchExpressions:
+ - {key: tier, operator: In, values: [frontend]}
+ template:
+ metadata:
+ labels:
+ app: guestbook
+ tier: 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
+ # If your cluster config does not include a dns service, then to
+ # instead access environment variables to find service host
+ # info, comment out the 'value: dns' line above, and uncomment the
+ # line below.
+ # value: env
+ ports:
+ - containerPort: 80
diff --git a/content/zh/examples/controllers/hpa-rs.yaml b/content/zh/examples/controllers/hpa-rs.yaml
new file mode 100644
index 0000000000..a8388530dc
--- /dev/null
+++ b/content/zh/examples/controllers/hpa-rs.yaml
@@ -0,0 +1,11 @@
+apiVersion: autoscaling/v1
+kind: HorizontalPodAutoscaler
+metadata:
+ name: frontend-scaler
+spec:
+ scaleTargetRef:
+ kind: ReplicaSet
+ name: frontend
+ minReplicas: 3
+ maxReplicas: 10
+ targetCPUUtilizationPercentage: 50
diff --git a/content/zh/examples/controllers/job.yaml b/content/zh/examples/controllers/job.yaml
new file mode 100644
index 0000000000..b448f2eb81
--- /dev/null
+++ b/content/zh/examples/controllers/job.yaml
@@ -0,0 +1,14 @@
+apiVersion: batch/v1
+kind: Job
+metadata:
+ name: pi
+spec:
+ template:
+ spec:
+ containers:
+ - name: pi
+ image: perl
+ command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
+ restartPolicy: Never
+ backoffLimit: 4
+
diff --git a/content/zh/examples/controllers/nginx-deployment.yaml b/content/zh/examples/controllers/nginx-deployment.yaml
new file mode 100644
index 0000000000..5dd80da371
--- /dev/null
+++ b/content/zh/examples/controllers/nginx-deployment.yaml
@@ -0,0 +1,21 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: nginx-deployment
+ labels:
+ app: nginx
+spec:
+ replicas: 3
+ selector:
+ matchLabels:
+ app: nginx
+ template:
+ metadata:
+ labels:
+ app: nginx
+ spec:
+ containers:
+ - name: nginx
+ image: nginx:1.15.4
+ ports:
+ - containerPort: 80
diff --git a/content/zh/examples/controllers/replicaset.yaml b/content/zh/examples/controllers/replicaset.yaml
new file mode 100644
index 0000000000..e5dfdf6c43
--- /dev/null
+++ b/content/zh/examples/controllers/replicaset.yaml
@@ -0,0 +1,17 @@
+apiVersion: apps/v1
+kind: ReplicaSet
+metadata:
+ name: my-repset
+spec:
+ replicas: 3
+ selector:
+ matchLabels:
+ pod-is-for: garbage-collection-example
+ template:
+ metadata:
+ labels:
+ pod-is-for: garbage-collection-example
+ spec:
+ containers:
+ - name: nginx
+ image: nginx
diff --git a/content/zh/examples/controllers/replication.yaml b/content/zh/examples/controllers/replication.yaml
new file mode 100644
index 0000000000..6eff0b9b57
--- /dev/null
+++ b/content/zh/examples/controllers/replication.yaml
@@ -0,0 +1,19 @@
+apiVersion: v1
+kind: ReplicationController
+metadata:
+ name: nginx
+spec:
+ replicas: 3
+ selector:
+ app: nginx
+ template:
+ metadata:
+ name: nginx
+ labels:
+ app: nginx
+ spec:
+ containers:
+ - name: nginx
+ image: nginx
+ ports:
+ - containerPort: 80
diff --git a/content/zh/examples/debug/counter-pod.yaml b/content/zh/examples/debug/counter-pod.yaml
new file mode 100644
index 0000000000..f997886386
--- /dev/null
+++ b/content/zh/examples/debug/counter-pod.yaml
@@ -0,0 +1,10 @@
+apiVersion: v1
+kind: Pod
+metadata:
+ name: counter
+spec:
+ containers:
+ - name: count
+ image: busybox
+ args: [/bin/sh, -c,
+ 'i=0; while true; do echo "$i: $(date)"; i=$((i+1)); sleep 1; done']
diff --git a/content/zh/examples/debug/event-exporter.yaml b/content/zh/examples/debug/event-exporter.yaml
new file mode 100644
index 0000000000..64a585b9a5
--- /dev/null
+++ b/content/zh/examples/debug/event-exporter.yaml
@@ -0,0 +1,47 @@
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: event-exporter-sa
+ namespace: default
+ labels:
+ app: event-exporter
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+ name: event-exporter-rb
+ labels:
+ app: event-exporter
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: view
+subjects:
+- kind: ServiceAccount
+ name: event-exporter-sa
+ namespace: default
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: event-exporter-v0.2.3
+ namespace: default
+ labels:
+ app: event-exporter
+spec:
+ selector:
+ matchLabels:
+ app: event-exporter
+ replicas: 1
+ template:
+ metadata:
+ labels:
+ app: event-exporter
+ spec:
+ serviceAccountName: event-exporter-sa
+ containers:
+ - name: event-exporter
+ image: k8s.gcr.io/event-exporter:v0.2.3
+ command:
+ - '/event-exporter'
+ terminationGracePeriodSeconds: 30
diff --git a/content/zh/examples/debug/fluentd-gcp-configmap.yaml b/content/zh/examples/debug/fluentd-gcp-configmap.yaml
new file mode 100644
index 0000000000..71e0ac5d82
--- /dev/null
+++ b/content/zh/examples/debug/fluentd-gcp-configmap.yaml
@@ -0,0 +1,379 @@
+kind: ConfigMap
+apiVersion: v1
+data:
+ containers.input.conf: |-
+ # This configuration file for Fluentd is used
+ # to watch changes to Docker log files that live in the
+ # directory /var/lib/docker/containers/ and are symbolically
+ # linked to from the /var/log/containers directory using names that capture the
+ # pod name and container name. These logs are then submitted to
+ # Google Cloud Logging which assumes the installation of the cloud-logging plug-in.
+ #
+ # Example
+ # =======
+ # A line in the Docker log file might look like this JSON:
+ #
+ # {"log":"2014/09/25 21:15:03 Got request with path wombat\\n",
+ # "stream":"stderr",
+ # "time":"2014-09-25T21:15:03.499185026Z"}
+ #
+ # The record reformer is used to write the tag to focus on the pod name
+ # and the Kubernetes container name. For example a Docker container's logs
+ # might be in the directory:
+ # /var/lib/docker/containers/997599971ee6366d4a5920d25b79286ad45ff37a74494f262e3bc98d909d0a7b
+ # and in the file:
+ # 997599971ee6366d4a5920d25b79286ad45ff37a74494f262e3bc98d909d0a7b-json.log
+ # where 997599971ee6... is the Docker ID of the running container.
+ # The Kubernetes kubelet makes a symbolic link to this file on the host machine
+ # in the /var/log/containers directory which includes the pod name and the Kubernetes
+ # container name:
+ # synthetic-logger-0.25lps-pod_default-synth-lgr-997599971ee6366d4a5920d25b79286ad45ff37a74494f262e3bc98d909d0a7b.log
+ # ->
+ # /var/lib/docker/containers/997599971ee6366d4a5920d25b79286ad45ff37a74494f262e3bc98d909d0a7b/997599971ee6366d4a5920d25b79286ad45ff37a74494f262e3bc98d909d0a7b-json.log
+ # The /var/log directory on the host is mapped to the /var/log directory in the container
+ # running this instance of Fluentd and we end up collecting the file:
+ # /var/log/containers/synthetic-logger-0.25lps-pod_default-synth-lgr-997599971ee6366d4a5920d25b79286ad45ff37a74494f262e3bc98d909d0a7b.log
+ # This results in the tag:
+ # var.log.containers.synthetic-logger-0.25lps-pod_default-synth-lgr-997599971ee6366d4a5920d25b79286ad45ff37a74494f262e3bc98d909d0a7b.log
+ # The record reformer is used is discard the var.log.containers prefix and
+ # the Docker container ID suffix and "kubernetes." is pre-pended giving the tag:
+ # kubernetes.synthetic-logger-0.25lps-pod_default-synth-lgr
+ # Tag is then parsed by google_cloud plugin and translated to the metadata,
+ # visible in the log viewer
+
+ # Example:
+ # {"log":"[info:2016-02-16T16:04:05.930-08:00] Some log text here\n","stream":"stdout","time":"2016-02-17T00:04:05.931087621Z"}
+
+ type tail
+ format json
+ time_key time
+ path /var/log/containers/*.log
+ pos_file /var/log/gcp-containers.log.pos
+ time_format %Y-%m-%dT%H:%M:%S.%N%Z
+ tag reform.*
+ read_from_head true
+
+
+
+ type parser
+ format /^(?\w)(?
+
+
+ type record_reformer
+ enable_ruby true
+ tag raw.kubernetes.${tag_suffix[4].split('-')[0..-2].join('-')}
+
+
+ # Detect exceptions in the log output and forward them as one log entry.
+
+ @type copy
+
+
+ @type prometheus
+
+
+ type counter
+ name logging_line_count
+ desc Total number of lines generated by application containers
+
+ tag ${tag}
+
+
+
+
+ @type detect_exceptions
+
+ remove_tag_prefix raw
+ message log
+ stream stream
+ multiline_flush_interval 5
+ max_bytes 500000
+ max_lines 1000
+
+
+ system.input.conf: |-
+ # Example:
+ # Dec 21 23:17:22 gke-foo-1-1-4b5cbd14-node-4eoj startupscript: Finished running startup script /var/run/google.startup.script
+
+ type tail
+ format syslog
+ path /var/log/startupscript.log
+ pos_file /var/log/gcp-startupscript.log.pos
+ tag startupscript
+
+
+ # Examples:
+ # time="2016-02-04T06:51:03.053580605Z" level=info msg="GET /containers/json"
+ # time="2016-02-04T07:53:57.505612354Z" level=error msg="HTTP Error" err="No such image: -f" statusCode=404
+
+ type tail
+ format /^time="(?
+
+ # Example:
+ # 2016/02/04 06:52:38 filePurge: successfully removed file /var/etcd/data/member/wal/00000000000006d0-00000000010a23d1.wal
+
+ type tail
+ # Not parsing this, because it doesn't have anything particularly useful to
+ # parse out of it (like severities).
+ format none
+ path /var/log/etcd.log
+ pos_file /var/log/gcp-etcd.log.pos
+ tag etcd
+
+
+ # Multi-line parsing is required for all the kube logs because very large log
+ # statements, such as those that include entire object bodies, get split into
+ # multiple lines by glog.
+
+ # Example:
+ # I0204 07:32:30.020537 3368 server.go:1048] POST /stats/container/: (13.972191ms) 200 [[Go-http-client/1.1] 10.244.1.3:40537]
+
+ type tail
+ format multiline
+ multiline_flush_interval 5s
+ format_firstline /^\w\d{4}/
+ format1 /^(?\w)(?