一、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的标签