simple nginx pod
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
tier: dev
spec:
containers:
- name: nginx-container
image: nginx
multiple containers in one pod
apiVersion: v1
kind: Pod
metadata:
name: nginx-caching-server
labels:
purpose: demonstrate-multi-container-pod
spec:
containers:
- name: nginx-container1
image: nginx
- name: busybox-container2
image: busybox
command:
- sleep
- "3600"
replica controller
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx-rc
spec:
replicas: 3
template:
metadata:
name: nginx-pod
labels:
app: nginx-app
spec:
containers:
- name: nginx-container
image: nginx
ports:
- containerPort: 80
selector:
app: nginx-app
replica set
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: nginx-rs
spec:
replicas: 3
template:
metadata:
name: nginx-pod
labels:
app: nginx-app
tier: frontend
spec:
containers:
- name: nginx-container
image: nginx
ports:
- containerPort: 80
selector:
matchLabels:
app: nginx-app
matchExpressions:
- {key: tier, operator: In, values: [frontend]}
daemon set
daemon set guarantee to up and run one instance in every node
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd-ds
spec:
template:
metadata:
labels:
name: fluentd
spec:
containers:
- name: fluentd
image: gcr.io/google-containers/fluentd-elasticsearch:1.20
selector:
matchLabels:
name: fluentd
up and run pods for special nodes only using daemon set(diskType=ssd)
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: nginx-ds
spec:
template:
metadata:
labels:
name: nginx
spec:
containers:
- name: nginx-container
image: nginx
nodeSelector:
disktype: ssd
selector:
matchLabels:
name: nginx
batch execution pod. it will print 9 to 1 when execution.
apiVersion: batch/v1
kind: Job
metadata:
name: countdown
spec:
template:
metadata:
name: countdown
spec:
containers:
- name: counter
image: centos:7
command:
- "bin/bash"
- "-c"
- "for i in 9 8 7 6 5 4 3 2 1 ; do echo $i ; done"
restartPolicy: Never
nginx deployment pod
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
labels:
app: nginx-app
spec:
replicas: 3
template:
metadata:
labels:
app: nginx-app
spec:
containers:
- name: nginx-container
image: nginx
ports:
- containerPort: 80
selector:
matchLabels:
app: nginx-app
redis deployment using Recreate
In "Recreate", it will terminate all containers at once and restart required containers.
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-deployment
labels:
app: redis
spec:
replicas: 10
selector:
matchLabels:
app: redis
strategy:
type: Recreate
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis-container
image: redis:5.0
redis deployment using RollingUpdate
in "RollingUpdate", requested number of containers will be updated.
new instance will up and old instance will down in this scenario.
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-deployment
labels:
app: redis
spec:
replicas: 15
selector:
matchLabels:
app: redis
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 2
maxUnavailable: 2
minReadySeconds: 10
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis-container
image: redis:6.0 #Upgrade to 6.0 --> 6.0.16 --> 6.2.6
volume usage
when using volume, it can replicate to every containers config in pod file
apiVersion: v1
kind: Pod
metadata:
name: sidecar-pod
spec:
volumes:
- name: logs
emptyDir: {}
containers:
- name: app-container
image: alpine
command: ["/bin/sh"]
args: ["-c", "while true; do date >> /var/log/app.log; sleep 5; done"]
volumeMounts:
- name: logs
mountPath: /var/log
- name: log-exporter-sidecar
image: nginx
ports:
- containerPort: 80
volumeMounts:
- name: logs
mountPath: /usr/share/nginx/html
volume "emptyDir" usage
apiVersion: v1
kind: Pod
metadata:
name: nginx-emptydir
spec:
containers:
- name: nginx-container
image: nginx
volumeMounts:
- name: test-vol
mountPath: /test-mnt
volumes:
- name: test-vol
emptyDir: {}
nginx deploymnet with 2 replicas
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2 # tells deployment to run 2 pods matching the template
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80