https://kubernetes.io/zh-cn/docs/tasks/run-application/
回滚应用:
https://kubernetes.io/zh/docs/tasks/manage-daemon/rollback-daemon-set/
https://blog.csdn.net/omaidb/article/details/129527733
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
--save-config
参数会添加注解,老版的注解将被弃用.建议添加这个参数形成良好的习惯.
kubectl注解将在查询变更时非常有效.
# 执行kubectl时添加注解.
kubectl edit | kubectl patch --save-config
--record=true
会在升级记录中记录本条命令,建议使用新版注解参数--save-config
## 命令示例
kubectl set image deployment/应用名 -n 空间名 容器名=镜像名:版本号 --record=true
更新镜像的三中方式,自动触发滚动升级.
滚动升级: 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
# 编写死循环访问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
# 修改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
项目升级失败恢复到正常版本
指定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
# 查看版本升级的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
# 对名为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
https://blog.csdn.net/omaidb/article/details/121855074
https://blog.csdn.net/omaidb/article/details/121978091
https://blog.csdn.net/omaidb/article/details/121930341