1.pod控制器类别
ReplicaSetdeployment 次要 Horizontal Pod Autoscaler (hpa) 高可用 实现削峰填谷 DaemonSet 守护进厂类的工作Job 执行一次工作,执行完之后就完结Cronjob 周期性的执行工作StatefulSet 治理有状态利用
2.具体控制器
------------------------------------------------pod控制器------------------------------------------------------replicasetapiVersion: apps/v1kind: ReplicaSetmetadata: name: myrs namespace: dev labels: controller: rsspec: replicas: 3 selector: matchLabels: app: nginx-pod matchExpressions: - {key: app,operator: In, Values: [nginx-pod]} template: metadata: labels: app: nginx-pod spec: containers: - name: nginx image: nginx:1.17.1 ports: - containerPort: 80-------------------------------------------- apiVersion: apps/v1kind: ReplicaSetmetadata: name: my-rs namespace: devspec: replicas: 3 selector: matchLabels: app: nginx-pod template: metadata: labels: app: nginx-pod spec: containers: - name: my-nginx image: nginx-------------------------------------------- [root@node1 ~]# kubectl get rs -n dev -o wideNAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTORmy-rs 3 3 3 3m34s my-nginx nginx app=nginx-pod--------------------------------------------[root@node1 ~]# kubectl get pod -n devNAME READY STATUS RESTARTS AGEmy-rs-6wbdd 1/1 Running 0 5mmy-rs-cs6nr 1/1 Running 0 5mmy-rs-hzncc 1/1 Running 0 5m--------------------------------------------rs 扩缩容kubectl edit rs my-rs -n dev 批改replicas即可kubectl scale rs my-rs --replicas=2 -n dev--------------------------------------------镜像版本升级kubectl edit rs my-rs -n dev 批改imagekubectl set image rs my-rs my-nginx=nginx:1.18.0 -n dev删除rskubectl delete rs my-rs -n dev #首先把正本数设置成0,而后再删除kubectl delete rs my-rs -n dev --cascade=false #只删除控制器,不删除podkubectl delete -f my-rs.yaml ---------------deployment反对replicaset的所有性能反对版本回滚和版本回退apiVersion: apps/v1kind: Deploymentmetadata: name: mynginx namespace: devspec: replicas: 3 selector: matchLabels: run: nginx template: metadata: labels: run: nginx spec: containers: - image: nginx imagePullPolicy: IfNotPresent name: nginx ports: - containerPort: 80 protocol: TCPkubectl apply -f yaml-nginx-deploy.yamlkubectl delete -f yaml-nginx-deploy.yaml查问对应的rs: [root@node1 ~]# kubectl get rs -n dev -o wideNAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTORmynginx-869c47cdd9 3 3 3 3m32s nginx nginx pod-template-hash=869c47cdd9,run=nginx扩缩容: kubectl scale deploy my-nginx --replicas=5 -n dev kubectl edit deploy my-nginx -n dev [root@node1 ~]# kubectl scale deploy mynginx --replicas=5 -n dev deployment.apps/mynginx scaled kubectl edit deploy mynginx -n dev 批改replicas 镜像降级: 重建更新: 滚动更新:(默认滚动更新) 新的起来了之后,旧的才会进行 ----- spec: strategy: type: Recreate ----- spec: strategy: type: RollingUpdate maxUnavailable: 25% maxSurge: 25% kubectl set image deploy mynginx nginx=nginx -n dev kubectl get pod -n dev -w 滚动更新 镜像降级,创立新的rs,原来的rs会进行保留,成为上一个版本 版本回退 kubectl rollout status history pause resume restart undo 查看状态 [root@node1 ~]# kubectl rollout status deploy mynginx -n dev Waiting for deployment "mynginx" rollout to finish: 1 out of 2 new replicas have been updated... Waiting for deployment "mynginx" rollout to finish: 1 out of 2 new replicas have been updated... Waiting for deployment "mynginx" rollout to finish: 1 out of 2 new replicas have been updated... Waiting for deployment "mynginx" rollout to finish: 1 old replicas are pending termination... Waiting for deployment "mynginx" rollout to finish: 1 old replicas are pending termination... deployment "mynginx" successfully rolled out 查看历史 kubectl rollout history deploy mynginx -n dev kubectl apply -f yaml-nginx-deploy.yaml --record 查看历史 [root@node1 ~]# kubectl rollout history deploy mynginx -n dev deployment.apps/mynginx REVISION CHANGE-CAUSE 1 <none> 2 <none> //回退版本to-revision 指定版本 [root@node1 ~]# [root@node1 ~]# [root@node1 ~]# kubectl rollout undo deployment mynginx --to-revision=1 -n dev金丝雀公布 中间状态:灰度公布 kubectl set image deploy mynginx nginx=nginx:1.17.4 -n dev && kubectl rollout pause deploy mynginx -n dev --------------------------------------------------hpa------------------------------------------Horizontal Pod Autoscaler手动调整改为主动调整,须要计算负载量须要装置监控 Metrics-serverkubectl top node 查看资源应用信息apiVersion: autoscaling/v1kind: HorizontalPodAutoscalermetadata: name: my-hpa namespace: devspec: minReplicas: 1 maxReplicase: 10 targetCPUUtilizationPercentage: 3 scaleTargeRef: apiVersion: apps/v1 kind: Deployment name: mynginx--------------------------------------------------hpa------------------------------------------网络局部cni--------------------------------------------------DaemonSet(ds)------------------------------------------保障集群中每个节点运行一个pod每增加一个node,就会主动运行pod其yaml格局同deploy--------------------------------------------------DaemonSet--------------------------------------------------------------------------------------------job------------------------------------------批量解决一次性工作job对应的pod的重启策略为Never,或者OnFailure次要的配置项:manualSelector: truecompletions: 6 #指定运行的pod总数parallelism:3 #并发执行总数--------------------------------------------------Cronjob------------------------------------------job工作创立之后立即执行cronjob以job为治理对象,相似cron表达式 在指定的工夫点执行工作,反复运行schedule: cron表达式,最短时间为分钟concurrencyPolicy: 并发执行工作,前一次工作没有实现,是否执行下一次工作, Allow 容许(默认) Forbid 禁止 Replace 替换,勾销以后的工作,执行新的工作failedJobHistoryLimit: 为失败的工作保留的历史记录数目successfulJobHistoryLimit: 为胜利的工作保留历史记录数目startingDeadlineSeconds: 启动工作谬误的超时工夫jobTemplate: