kubernetes | 滚动升级和自动伸缩
Kubernetes自动 升级 滚动 伸缩
2023-06-13 09:13:58 时间
前言#
基于centos7.9
,docker-ce-20.10.18
,kubelet-1.22.3-0
滚动升级#
滚动升级的实现机制
两个replicaset控制器分别控制旧版本的pod和新版本pod,replicaset2启动一个新版版本pod,相应的replicaset1停止一个旧版本pod,从而实现滚动升级。在这过程中,无法保证业务流量完全不丢失。
升级
kubectl set image (-f FILENAME | TYPE NAME) CONTAINER_NAME_1=CONTAINER_IMAGE_1 ... CONTAINER_NAME_N=CONTAINER_IMAGE_N [options]
# 示例
kubectl set image deployment/nginx-deployment nginx=nginx:1.15 --record=true
# --record=true 表示将升级的命令记录到升级记录中
回滚
# 上次升级状态
kubectl rollout status deployment/nginx-deployment
# 升级记录
kubectl rollout history deployment/nginx-deployment
# 回滚至上个版本
kubectl rollout undo deployment/nginx-deployment
# 回滚至指定版本
kubectl rollout undo deployment/nginx-deployment --to-revision=2
自动伸缩#
手动扩容
kubectl scale [--resource-version=version] [--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME) [options]
# 示例
kubectl scale deployment nginx-deployment --replicas=10
自动扩容
HPA:pod水平扩容,k8s中的一个api资源,使用autoscale时会创建一个hpa资源
实现自动扩容还需满足两个条件:
- 运行了metric-server
- HPA对应的pod设置了request资源
示例:
metrics-server部署
kubectl get pods -n kube-system | grep metrics-server
pod中设置request资源
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
resources:
requests:
cpu: 0.3
创建hpa
kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [options]
# 基于cpu指标进行扩容
kubectl autoscale deployment nginx-deployment --min=3 --max=10 --cpu-percent=10
# 查看hpa
kubectl get hpa
# replicaset控制器记录了pod的详细伸缩记录
kubectl get rs
kubectl describe rs nginx-deployment-54fdcc5676
相关文章
- kubernetes(k8s)安装命令行自动补全功能
- n1-Kubernetes名称概念解释一览
- Kubernetes的负载均衡方案:MetalLB
- Velero 是怎样对 Kubernetes 资源实现备份还原的?
- Kubernetes: 通过无头服务(Headless Service)实现客户端负载均衡
- 面向 DevOps 的 Kubernetes 最佳安全实践
- 为什么 Kubernetes 会成为云时代的“操作系统”
- 在混合云下,我们将Kubernetes与Fluid结合后性能提升了30%
- 瞬时流量高峰场景下的高可用架构设计:Kubernetes集群如何调优?| Q推荐
- Kubernetes配合Jenkins实现轻量自动持续集成
- Kubernetes集群部署之三ETCD集群部署详解架构师