一、Deployment
1、Deployment概念
用于部署无状态的服务,这个最常用的控制器。一般用于管理维护企业内部无状态的微服务,比如configserver、zuul、springboot。他可以管理多个副本的Pod实现无缝迁移、自动扩容缩容、自动灾难恢复、一键回滚等功能。
2、Deployment创建方式
(1)手动创建
kubectl create deployment nginx --image=nginx:1.15.2
导出yaml文件
kubectl get deployment nginx -o yaml > nginx-deploy.yaml
kubectl run nginx-dp --image=nginx --port=80 --replicas=3 --dry-run -o yaml
无控制器yaml文件导出
(2)基于文件创建
vim nginx-deploy.yaml
apiVersion: apps/v1 #指定api版本标签
kind: Deployment #定义资源的类型/角色,deployment 为副本控制器,此处资源类型可以是Deployment、Job、 Ingress、 Service等
metadata: #定义资源的元数据信息,比如资源的名称、namespace、标签等信息
annotations:
deployment.kubernetes.io/revision: "1"
creationTimestamp: "2022-07-31T11:36:37Z"
generation: 1 #相同的pod有几个
labels:
app: nginx
manager: kubectl-create
operation: Update
time: "2022-07-31T11:36:37Z"
- apiVersion: apps/v1
fieldsType: FieldsV1
manager: kube-controller-manager
operation: Update
time: "2022-07-31T11:36:49Z"
name: nginx
namespace: default
resourceVersion: "84720"
selfLink: /apis/apps/v1/namespaces/default/deployments/nginx
uid: ee57150d-2912-411f-92f2-39538174d921
spec:
progressDeadlineSeconds: 600 #判断线程是否存活的时间
replicas: 2 #定义副本数量
revisionHistoryLimit: 10 #历史记录保留次数
selector:
matchLabels:
app: nginx
strategy:
rollingUpdate:
maxSurge: 25% #临时有不可用的pod最大为25%
maxUnavailable: 25% #临时有不可用的pod最大为25%
type: RollingUpdate
template:
metadata: #定义资源的元数据信息
creationTimestamp: null
labels: #定义资源标签(Pod的标签)
app: nginx #匹配上面的标签,需与上面的标签定义的app保持一致
spec:
containers: #定义容器属性
- image: nginx:1.15.2 #定义容器使用的镜像以及版本
imagePullPolicy: IfNotPresent
name: nginx
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
status:
availableReplicas: 1
conditions:
- lastTransitionTime: "2022-07-31T11:36:49Z"
lastUpdateTime: "2022-07-31T11:36:49Z"
message: Deployment has minimum availability.
reason: MinimumReplicasAvailable
status: "True"
type: Available
- lastTransitionTime: "2022-07-31T11:36:37Z"
lastUpdateTime: "2022-07-31T11:36:49Z"
message: ReplicaSet "nginx-66bbc9fdc5" has successfully progressed.
reason: NewReplicaSetAvailable
status: "True"
type: Progressing
observedGeneration: 1
readyReplicas: 1
replicas: 1 #定义副本数量
updatedReplicas: 1
3、deployment状态解析
kubectl get deploy -owide
参数详情
NAME:deployment名称
READY:Pod的状态,已经Ready的个数
UP-TO-DATE:已经达到期望状态的被更新的副本数
AVALABLE:已经可以用的副本数
AGE:显示应用程序运行的时间
CONTAINERS:容器名称
IMAGES:容器的镜像
SELECTOR:管理的Pod的标签