Kubernetes 1.20.5实验记录–Pod控制器
1.1 Deployment
1、创建Deployment:
文件deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy
labels:
run: deploy
spec:
replicas: 2
selector:
matchLabels:
run: deploy
template:
metadata:
labels:
run: deploy
spec:
containers:
- name: deploy
image: nginx
kubectl apply -f deploy.yaml
2、查看Deployment状态:
kubectl get deployment
3、查看Deployment详细信息:
kubectl describe deployment deploy
4、查看ReplicaSet状态:
kubectl get replicaset
5、查看ReplicaSet详细信息:
kubectl describe replicaset deploy-7ffbfc5ff4
6、查看Pod状态:
kubectl get pod -o wide
7、查看Pod详细信息:
kubectl describe pod deploy-7ffbfc5ff4-fqgkm
8、对Deployment进行Scale Up:
文件deploy-scaleup.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy
labels:
run: deploy
spec:
replicas: 6
selector:
matchLabels:
run: deploy
template:
metadata:
labels:
run: deploy
spec:
containers:
- name: deploy
image: nginx
kubectl apply -f deploy-scaleup.yaml
kubectl get pod -o wide
9、对Deployment进行Rolling Update:
文件deploy-rollingupdate.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy
labels:
run: deploy
spec:
replicas: 6
selector:
matchLabels:
run: deploy
template:
metadata:
labels:
run: deploy
spec:
containers:
- name: deploy
image: nginx:1.18
kubectl apply -f deploy-rollingupdate.yaml
kubectl get pod -w
kubectl get replicaset
10、删除Deployment:
kubectl delete -f deploy.yaml
运行Deployment过程:
(1)用户通过kubectl创建Deployment
(2)Deployment创建ReplicaSet
(3)ReplicaSet创建Pod
对象命名规则:子对象的名字=父对象名字+随机字符串或数字
1.2 DaemonSet
DaemonSet与Deployment配置相似,区别在于DaemonSet无需指定副本数量
1、创建DaemonSet:
文件daemonset.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: daemonset
labels:
run: daemonset
spec:
selector:
matchLabels:
run: daemonset
template:
metadata:
labels:
run: daemonset
spec:
containers:
- name: daemonset
image: nginx
kubectl apply -f daemonset.yaml
2、查看DaemonSet状态:
kubectl get daemonset
3、查看DaemonSet详细信息:
kubectl describe daemonset daemonset
4、查看Pod状态:
kubectl get pod -o wide
副本数与节点数量相同,并分布在每个计算节点上
5、对DaemonSet进行Rolling Update:
文件daemonset-rollingupdate.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: daemonset
labels:
run: daemonset
spec:
selector:
matchLabels:
run: daemonset
template:
metadata:
labels:
run: daemonset
spec:
containers:
- name: daemonset
image: nginx:1.18
kubectl apply -f daemonset-rollingupdate.yaml
kubectl get pod -w
6、删除DaemonSet:
kubectl delete -f daemonset.yaml
1.3 Job
1.3.1 一次性任务
job-single.yaml使用busybox镜像,创建一次性任务,打印Hello Kubernetes Job!
1、创建一次性任务:
文件job-single.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: job-single
spec:
template:
metadata:
name: job-single
spec:
containers:
- name: hello
image: busybox
command: ["echo", "Hello Kubernetes Job!"]
restartPolicy: Never
kubectl apply -f job-single.yaml
2、查看一次性任务状态:
kubectl get job
3、查看一次性任务详细信息:
kubectl describe job job-single
4、查看Pod状态:
kubectl get pod -o wide
5、查看Pod日志信息:
kubectl logs job-single-pshqk
6、删除一次性任务:
kubectl delete -f job-single.yaml
1.3.2 并行性任务
job-parallel.yaml使用busybox镜像,创建6个任务,2个任务并行执行,打印Hello Kubernetes Job!
1、创建并行性任务:
文件job-parallel.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: job-parallel
spec:
completions: 6
parallelism: 2
template:
metadata:
name: job-parallel
spec:
containers:
- name: hello
image: busybox
command: ["echo", "Hello Kubernetes Job!"]
restartPolicy: Never
kubectl apply -f job-parallel.yaml
2、查看并行性任务状态:
kubectl get job
3、查看并行性任务详细信息:
kubectl describe job job-parallel
4、查看Pod状态:
kubectl get pod -o wide
5、查看Pod日志状态:
kubectl logs job-parallel-42gfj
6、删除并行性任务:
kubectl delete -f job-parallel.yaml
1.3.3 周期性任务
job-cronjob.yaml使用busybox镜像,创建周期性任务,每一分钟打印一次Hello Kubernetes Job!
1、创建周期性任务:
文件job-cronjob.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: job-cronjob
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
command: ["echo", "Hello Kubernetes Job!"]
restartPolicy: OnFailure
kubectl apply -f job-cronjob.yaml
2、查看周期性任务状态:
kubectl get cronjob
3、查看周期性任务详细信息:
kubectl describe cronjob job-cronjob
4、查看Pod状态:
kubectl get pod -o wide
5、查看Pod日志信息:
kubectl logs job-cronjob-1622687280-vqg7l
6、删除周期性任务:
kubectl delete -f job-cronjob.yaml