Pod类型:
控制器:
Kubernetes中内建了许多contoller(控制器),这些相当于一个状态机,用来控制Pod的具体状态和行为
控制器类型:
rs支持应用容器的副本数目始终保持在用户定义的副本数。创建新的Pod来替代异常退出的Pod。异常多出来的容器自动回收。
rs和rc没有本质的不同,rs支持集合式的selector;rs通过标签Labels(matchLabels)选择与控制
RS与Deployments的关联:deployment通过修改rs的创建来管理对应的Pod,以及通过rs版本的的交替来完成滚动更新
示例:Example006:
/root/yaml/001_pod_rs_deployment_svc/006_rs.yaml
apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
name: frontend1
spec:
replicas: 3
selector:
matchLabels:
tier: frontend
template:
metadata:
labels:
tier: frontend
spec:
containers:
- name: nginx
image: nginx:latest
imagePullPolicy: IfNotPresent
env:
- name: GET_HOSTS_FROM
value: dns
ports:
- containerPort: 80
为Pod和ReplicaSet提供一个声明式定义(declarative)方法,用来替代以前的ReplicationCotroller来方便的管理应用。典型的应用场景包括:
命令式编程:它侧重于如何实现 create rs
声明式编程:它侧重于结果 apply Deployment
示例:Example007:
/root/yaml/001_pod_rs_deployment_svc/007_deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
DaemonSet确定全部Node(注意:污点和容忍)上运行一个Pod的副本。新node加入集群,也会为其创建一个Pod。当有Node从集群移除时,这些Pod也会被回收。
删除DaemonSet将会删除它创建的所有Pod
典型用法:
示例:Example008:
/root/yaml/001_pod_rs_deployment_svc/008_DaemonSet.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: daemonset-example
labels:
app: daemonset
spec:
selector:
matchLabels:
name: daemonset-example
template:
metadata:
labels:
name: daemonset-example
spec:
containers:
- name: daemonset-example
image: httpd:latest
job负责批处理任务,即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束
Job Spec 特殊说明
示例:Example009:
/root/yaml/001_pod_rs_deployment_svc/009_job.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
template:
metadata:
name: pi
spec:
containers:
- name: pi
image: perl
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
CronJob管理基于时间的Job(分 时 日 月 周 ,同crontab)
典型用法:
CronJob Spec 特殊说明:(同Job Spec)
重点字段:
CronJob限制:
示例:Example010:
注意:删除cronjob的时候不会自动删除job。需要独立删除 # kubectl delete job
/root/yaml/001_pod_rs_deployment_svc/010_cronJob.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
args:
- /bin/sh
- -c
- date; echo Hello from the Kubernnetes cluster
restartPolicy: OnFailure
应用场景:
示例在 pv-pvc 处介绍
hpa管理deployment,实现Pod的水平自动扩容和缩容,提高集群的整体资源利用率。需要借助到资源收集模块metrics-server。示例在资源收集模块处介绍