pod控制器
RC
yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: rc-demo
spec:
replicas: 3
selector:
app: rc-demo
template:
metadata:
labels:
app: rc-demo
spec:
containers:
- name: rc-demo-nginx
image: nginx
env:
- name: GET_HOSTS_FROM
value: dns
- name: POD_NAME
value: aaa
ports:
- containerPort: 80RS
相比RC支持集合匹配器
yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: rs-demo
spec:
replicas: 3
selector:
matchLabels:
app: rs-demo
domain: test
template:
metadata:
labels:
app: rs-demo
domain: test
version: v1
spec:
containers:
- name: rs-demo-nginx
image: nginx
env:
- name: GET_HOSTS_FROM
value: dns
- name: POD_NAME
value: aaa
ports:
- containerPort: 80支持标签运算
yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: rs-demo-match-expression
spec:
replicas: 3
selector:
matchExpressions:
- key: app
operator: Exists
- key: test
operator: DoesNotExist
- key: domain
operator: In
values:
- test
- key: version
operator: NotIn
values:
- v2
matchLabels:
app: rs-demo-match-expression
domain: test
template:
metadata:
labels:
app: rs-demo-match-expression
domain: test
version: v1
spec:
containers:
- name: rs-demo-nginx
image: nginx
env:
- name: GET_HOSTS_FROM
value: dns
- name: POD_NAME
value: aaa
ports:
- containerPort: 80Deployment
支持回滚升级版本控制
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: deployment-demo
name: deployment-demo
spec:
selector:
matchLabels:
app: deployment-demo
template:
metadata:
labels:
app: deployment-demo
spec:
containers:
- image: nginx
name: nginx
ports:
- containerPort: 80查看历史版本
bash
kubectl rollout history deploy deployment-demobash
#回滚上一个版本
kubectl rollout undo deployment mytomcat
#回滚到指定版本
kubectl rollout undo deployment mytomcat --to-revision=2DaemonSet
运行在每个节点上 保障每个节点上运行一个pod ds.demo.yaml
yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: ds-demo
labels:
app: ds-demo
spec:
selector:
matchLabels:
name: ds-demo
template:
metadata:
labels:
name: ds-demo
spec:
containers:
- name: ds-demo-nginx
image: nginxJob
运行一个任务 保证任务一个或多个pod成功运行完成 RestartPolicy: Never|OnFailure|Always
yaml
apiVersion: batch/v1
kind: Job
metadata:
name: job-demo
spec:
template:
spec:
containers:
- name: job-demo-nginx
image: nginx
restartPolicy: NeverCronJob
运行一个任务 保证任务一个或多个pod成功运行完成
yaml
apiVersion: batch/v1
kind: CronJob
metadata:
name: cronjob-demo
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
completions: 3
template:
spec:
containers:
- name: cronjob-demo-nginx
image: alpine
args:
- /bin/sh
- -c
- date; sleep 10; echo Hello from the Kubernetes cluster
restartPolicy: Never