k8s应用生命周期管理
k8s应用生命周期管理在K8S中部署应用流程使用Deployment部署Java应用服务编排Deployment工作负载均衡器介绍Deployment的主要功能Deployment的应用场景应用生命周期管理流程应用部署应用升级实验:升级nginx版本水平扩伸缩回滚滚动升级与回滚实现机制在K8S中部署应用流程使用Deployment部署Java应用# 使用Department控制器部署镜像kubec
k8s应用生命周期管理
0.在K8S中部署应用流程
应用生命周期管理流程
k8s应用部署过程:
https://kubernetes.io/zh-cn/docs/tasks/run-application/
回滚应用:
https://kubernetes.io/zh/docs/tasks/manage-daemon/rollback-daemon-set/
生产发布示例
- 批量部署 K8s 环境;
- 构建集群中所使用的服务容器;
- 编写资源文件,部署容器;
- 编写 Pv、Pvc 文件使服务器挂载磁盘;
- 编写 Service 相关资源文件;
- 编写 Hpa 资源文件配置 业务 集群弹性扩缩容;
- 配置 Ingress 服务对外发布 Web
1.创建deployment
操作时注意添加注解
https://blog.csdn.net/omaidb/article/details/129527733
使用Service发布Pod
https://blog.csdn.net/omaidb/article/details/122112135
# 使用Service发布Pod
## port是service的端口
## --target-port是pod(中的容器)的端口
kubectl expose deployment web --port=80 --target-port=8080 --type=NodePort --name=web --save-config
# 查看service
kubect get svc
# 使用资源清单yaml文件部署
kubectl apply -f xxx.yaml
2.应用升级
更新镜像自动触发滚动升级.
滚动升级
: K8S对pod升级的默认策略,通过使用新版本pod逐步更新旧版本pod,实现零停机发布,用户无感知
# 使用资源清单yaml文件进行升级
# 建议在原yaml文件中编辑image版本即可
kubectl apply -f xxx.yaml
# 使用set命令更新镜像
# 适用于简单的image变更.
## --save-config会在升级记录中记录本条命令,建议使用
kubectl set image deployment/应用名 -n 空间名 容器名=镜像名:版本号 --save-config
## 例如,更新nginx版本为1.17.0
kubectl set image deployment/nginx -n 空间名 nginx=nginx:1.17.0 --save-config
# 使用系统编辑器更新镜像
# 编辑完保存后即开始升级
kubectl edit deployment/应用名 -n 空间名
KUBE_EDITOR="nano" kubectl edit svc/docker-registry # 使用指定编辑器更新svc
查看版本升级所使用的版本和镜像版本
# 查看版本升级的rs记录
kubectl get rs
[root@master k8syaml]# kubectl get rs
NAME DESIRED CURRENT READY AGE
nginx-6d4cf56db6 0 0 0 23h
nginx-844f997cc9 3 3 3 3m26s
# 查看rs升级的是哪个版本
[root@master k8syaml]# kubectl describe rs nginx-844f997cc9|grep revision
deployment.kubernetes.io/revision: 4
deployment.kubernetes.io/revision-history: 2
# 查看rs升级所使用的镜像版本
[root@master k8syaml]# kubectl describe rs nginx-844f997cc9|grep -i image
Image: nginx:1.17.0
实验:升级nginx版本
# 编写死循环访问nginx服务器
## curl -I 访问服务端的响应头,方便查看nginx版本
## 查看nginx的变化,以及服务是否有中断
while true;do curl -I 192.168.31.72:31133;sleep 1;done
# 将nginx的镜像更新一个版本
kubectl apply -f nginx.yaml
# 查看版本升级的rs记录
kubectl get rs
[root@master k8syaml]# kubectl get rs
NAME DESIRED CURRENT READY AGE
nginx-6d4cf56db6 0 0 0 23h
nginx-844f997cc9 3 3 3 3m26s
# 检查Deployment的历史记录,包括版本
kubectl rollout history deployment/frontend
# 查看指定的deployment的升级记录
kubectl describe deploy 应用名
# 查询升级的镜像版本
kubectl describe rs nginx-844f997cc9|grep Image
3.水平扩伸缩
# 修改replicas值,再apply
## --replicas参数控制pod副本数量
# 对应用扩容或者缩容
## 副本数量加大就是扩容,副本数了减少就是缩容
## --save-config会在升级记录中记录本条命令
kubectl scale deploy 应用名 -n 空间名 --replicas=副本数 --save-config
kubectl scale deployment web -n 空间名 --replicas=10 --save-config
# 将名为 'foo' 的副本集伸缩到 3 副本
kubectl scale --replicas=3 rs/foo
# 将在 "foo.yaml" 中的特定资源伸缩到 3 个副本
kubectl scale --replicas=3 -f foo.yaml
# 如果名为 mysql 的 Deployment 的副本当前是 2,那么将它伸缩到 3
kubectl scale --current-replicas=2 --replicas=3 deployment/mysql
# 伸缩多个副本控制器
kubectl scale --replicas=5 rc/foo rc/bar rc/baz
4.回滚
项目升级失败恢复到正常版本
指定Deployment回滚到某个历史版本执行成功的过程中,ReplicaSet
不会创建和销毁,Deployment期望数量不会变化.
# 查看历史发布版本
## 检查 Deployment 的历史记录,包括版本
kubectl rollout history deployment 应用名
[root@master k8syaml]# kubectl rollout history deployment nginx
deployment.apps/nginx
REVISION CHANGE-CAUSE
1 <none>
2 <none>
# 回滚到上一个部署版本
kubectl rollout undo deployment 应用名
kubectl rollout undo deployment nginx
# 回滚到指定的部署版本
kubectl rollout undo deployment nginx --to-revision=版本号
kubectl rollout undo deployment nginx --to-revision=2
# 监视 "frontend" Deployment 的滚动升级状态直到完成
kubectl rollout status -w deployment/应用名
# 轮替重启 "前端" Deployment
kubectl rollout restart deployment/前端
# 强制替换,删除后重建资源。会导致服务不可用。
kubectl replace --force -f ./pod.json
滚动升级与回滚实现机制
5.自动伸缩
# 对名为mypod的pod添加标签
kubectl label pods my-pod new-label=awesome
# 添加注解
kubectl annotate pods my-pod icon-url=http://goo.gl/XXBTWq
# 对"foo" Deployment 自动伸缩容,最小2副本,最大10副本
kubectl autoscale deployment foo --min=2 --max=10
6.查看日志及资源监控
https://blog.csdn.net/omaidb/article/details/121855074
7.k8s节点调度
https://blog.csdn.net/omaidb/article/details/121930341
8.k8s项目下线流程
删除资源:
https://blog.csdn.net/omaidb/article/details/121978091
- 项目下线之前先
备份数据
, - 然后
删除
deploy,svc
# 删除deploy,svc
kubectl delete deploy,svc 项目名
更多推荐
所有评论(0)