创意字体设计网站,软件项目设计方案,织梦网站后台模板,自己做公司网站简单吗往期精彩文章 : 提升CKA考试胜算#xff1a;一文带你全面了解RBAC权限控制#xff01;揭秘高效运维#xff1a;如何用kubectl top命令实时监控K8s资源使用情况#xff1f;CKA认证必备#xff1a;掌握k8s网络策略的关键要点提高CKA认证成功率#xff0c;CKA真题中的节点维… 往期精彩文章 : 提升CKA考试胜算一文带你全面了解RBAC权限控制揭秘高效运维如何用kubectl top命令实时监控K8s资源使用情况CKA认证必备掌握k8s网络策略的关键要点提高CKA认证成功率CKA真题中的节点维护全攻略数据无忧一学就会掌握CKA认证必备的etcd备份与还原秘籍提升你的云技能深入了解CKA认证之k8s升级秘籍揭秘CKA认证Service四层代理的神秘面纱提升CKA认证成功率Kubernetes Ingress七层代理全攻略 什么是Deployment 
在Kubernetes中Deployment是一种API对象用于定义和管理Pod的部署方式。它提供了一种声明性的方法允许您描述应用程序的期望状态而不必关心具体的部署细节。Deployment的主要目标是确保所定义的Pod副本数一直运行在集群中并支持滚动更新和回滚操作。 以下是Deployment的关键特性和功能 声明式配置 使用Deployment您可以通过YAML文件描述应用程序的期望状态包括Pod的数量、所使用的镜像、端口等。自动化的滚动更新 当您需要更新应用程序时可以通过修改Deployment的配置来实现。Deployment将负责逐步更新Pod确保在整个过程中保持应用程序的可用性。副本集管理 Deployment使用副本集ReplicaSet来确保指定数量的Pod实例一直运行。如果有Pod失败或被删除Deployment会启动新的Pod来替代它们。滚动回滚 如果在更新中发现问题您可以轻松地执行回滚操作将Deployment回退到之前的版本从而恢复到稳定状态。自动修复 Deployment会自动监测Pod的运行状况并在出现故障时尝试自动修复。如果Pod失败Deployment将启动新的Pod以确保所需数量的副本一直在运行。 Deployment基本使用 
创建Deployment 
创建Deployment资源有两种方式一种是书写资源清单方式一种是通过kubectl命令行的方式创建。下面的 yaml 文件定义了一个 Deployment该 Deployment 将创建一个有 3 个 nginx Pod 副本的 ReplicaSet副本集 
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploymentlabels:app: nginx
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.7.9ports:- containerPort: 80在这个例子中 将创建一个名为 nginx-deployment 的 Deployment部署名称由.metadata.name字段指定该 Deployment 将创建 3 个 Pod 副本副本数量由 .spec.replicas 字段指定.spec.selector 字段指定了 Deployment 如何找到由它管理的 Pod。此案例中我们使用了 Pod template 中定义的一个标签app: nginx。对于极少数的情况这个字段也可以定义更加复杂的规则.template 字段包含了如下字段 .template.metadata.labels 字段指定了 Pod 的标签app: nginx.template.spec.containers[].image 字段表明该 Pod 运行一个容器 nginx:1.7.9.template.spec.containers[].name 字段表明该容器的名字是 nginx执行命令以创建 Deployment执行命令以创建 Deployment  执行命令以创建 Deployment 
kubectl apply -f nginx-deployment.yaml或者通过下面的命令创建 
kubectl create deploy  nginx-deployment --imagenginx:1.7.9 --port80 --replicas3创建成功可以通过下面的命令查询 
controlplane $ kubectl get deploy
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   3/3     3            3           10s
controlplane $ kubectl get pod
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-867765c857-24rdz   1/1     Running   0          54s
nginx-deployment-867765c857-6r86m   1/1     Running   0          54s
nginx-deployment-867765c857-xj7c5   1/1     Running   0          54sDeploy扩容 
通过修改 Deployment 的 spec.replicas 字段来指定期望的副本数。例如现在需要把上述的nginx-deployment的副本数修改5。可以通过kubect edit deploy nginx-deployment进行修改。  把spec.replicas从原来的3修改成5。保存退出编辑。然后通过如下命令查看nginx-deployment就成功的从3个副本数变成了5个。 
controlplane $ kubectl get deployments.apps 
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   5/5     5            5           5m17s
controlplane $ kubectl get pod
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-867765c857-24rdz   1/1     Running   0          6m13s
nginx-deployment-867765c857-6r86m   1/1     Running   0          6m13s
nginx-deployment-867765c857-vfr55   1/1     Running   0          62s
nginx-deployment-867765c857-vrj4f   1/1     Running   0          62s
nginx-deployment-867765c857-xj7c5   1/1     Running   0          6m13s或者也可通过下面的命令进行扩容 
controlplane $ kubectl scale deployment nginx-deployment --replicas5
deployment.apps/nginx-deployment scaled滚动更新 
滚动更新介绍 
滚动更新是一种自动化程度较高的发布方式用户体验比较平滑是目前成熟型技术组织所采用的主流发布方式一次滚动发布一般由若干个发布批次组成每批的数量一般是可以配置的可以通过发布模板定义例如第一批1台第二批10%第三批50%第四批100%。每个批次之间留观察间隔通过手工验证或监控反馈确保没有问题再发下一批次所以总体上滚动式发布过程是比较缓慢的。 
查看控制器策略 
可以通过kubectl explain deploy.spec.strategy查看控制器策略。如下图  
deploy更新方式 
支持两种更新**Recreate**和**RollingUpdate** 
Recreate是重建式更新删除一个更新一个RollingUpdate 滚动更新定义滚动更新的更新方式的也就是pod能多几个少几个控制更新力度的。 
RollingUpdate 
通过kubectl explain deploy.spec.strategy.RollingUpdate查看滚动更新帮助文档。如下图  **maxSurge最大扩展的值和maxUnavailable最大不可用用来控制滚动更新的策略**取值范围分为数值和百分比 先来看百分比 maxUnavailable: [0%, 100%] 向下取整比如10个副本5%的话0.5个但计算按照0个maxSurge: [0%, 100%] 向上取整比如10个副本5%的话0.5个但计算按照1个 再来看数值 maxUnavailable: [0, 副本数]maxSurge: [0, 副本数]  
Recreate 
把deploy更新策略变成Recreate 
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploymentlabels:app: nginx
spec:replicas: 3strategy:type: Recreate
...省略...通过以下命令更新。 
kubectl apply -f deploy-demo1.yaml#另一个窗口实时监控
kubectl get pods -w输出的结果如下  详细deployment的使用可以参考如下 介绍 Deployment Deployments 
CKA真题 
真题截图 中文解析 切换 k8s 集群环境kubectl config use-context k8s Task 将loadbalancer 的 deployment 管理的 Pod 的副本数扩容成 6 个。 参考文档 
Deployments 
解题作答 切换集群环境  
kubectl config use-context k8s检查现有的Pod数量 
kubectl get deploy loadbalancer  -o wide扩容loadbalancer 的 deployment 管理的 Pod 的副本数扩容成 6 个 
kubelct scale deploy loadbalancer  --replicas6检查Pod的数量 
kubectl get pod