一.控制器概述
- 控制器:又称之为工作负载,分别包含以下类型的控制器,控制器决定资源的类型
1.Deployment
2.StatefulSet
3.DaemonSet
4.Job
5.CronJob
-
pod与控制器之间的关系
控制器:在集群上管理和运行容器的对象通过Label-selector相关联
Pod:通过控制器实现应用的运维,比如伸缩,升级等
二.Deployment
- 使用deployment部署无状态应用;管理pod和ReplicaSet(副本数);具有线上部署、副本设定、滚动升级、回滚等功能;提供声明式更新,例如只更新一个新的image,更新相当于灰度部署。
- 应用场景为:web服务部署
无状态:
deployment认为所有的pod都是一样的
不用考虑顺序的要求
不用考虑在哪个node节点上运行
可以随意扩容和缩容
创建实例
- 创建pod资源
[root@master demo]# cat nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3 ##设定副本数为3,回滚操作通过控制副本数来实现
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.15.4
ports:
- containerPort: 80
[root@master demo]# kubectl create -f nginx-deployment.yaml
deployment.apps/nginx-deployment created
[root@master demo]#
-
查看pod资源,deploy控制器,副本数
##rs是replicaset的缩写
[root@master demo]# kubectl get pods,deploy,rs
NAME READY STATUS RESTARTS AGE
pod/nginx-deployment-d55b94fd-54cpg 1/1 Running 0 6m57s
pod/nginx-deployment-d55b94fd-fpq25 1/1 Running 0 6m57s
pod/nginx-deployment-d55b94fd-hnxdc 1/1 Running 0 6m57s
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deployment.extensions/nginx-deployment 3 3 3 3 6m57s
NAME DESIRED CURRENT READY AGE
replicaset.extensions/nginx-deployment-d55b94fd 3 3 3 6m57s
[root@master demo]#
-
查看控制器,使得控制器以yaml的文件格式输出
[root@master demo]# kubectl get deployment.extensions/nginx-deployment -o yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "1"
creationTimestamp: 2020-05-19T14:06:14Z
generation: 1
labels:
app: nginx
name: nginx-deployment
namespace: default
resourceVersion: "416373"
selfLink: /apis/extensions/v1beta1/namespaces/default/deployments/nginx-deployment
uid: e6835a1d-99d9-11ea-bb1a-000c29ce5f24
spec:
progressDeadlineSeconds: 600
replicas: 3 ##副本数控制资源总量
revisionHistoryLimit: 10
selector:
matchLabels:
app: nginx
strategy: ##控制滚动更新的策略
rollingUpdate:
maxSurge: 25% ##表示更新后创建资源25%,一共不超过125%的容量
maxUnavailable: 25% ##释放资源最大为25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: nginx
spec:
containers:
- image: nginx:1.15.4
imagePullPolicy: IfNotPresent ##默认的镜像来去策略,表示有镜像,则不下载
name: nginx
ports:
- containerPort: 80
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst