K8S中Pod的水平扩展,收缩原理
K8S中Pod的水平扩展,收缩概念:更新Deployment的Pod模板,会滚动更新,依赖Kubernetes项目中的ReplicaSet。apiVersion: apps/v1kind: ReplicaSetmetadata:name: nginx-setlabels:app: nginxspec:replicas: 3selector:...
K8S中Pod的水平扩展,收缩
概念:更新Deployment的Pod模板,会滚动更新,依赖Kubernetes项目中的ReplicaSet。
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: nginx-set
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.16.1
通过副本数量的定义 replicas: 3和Pod模板组成,是Deployment的子集。
Deployment控制器实际操纵的是ReplicaSet对象,而不是Pod对象。
Deployment管理的Pod,其ownerReference是ReplicaSet。
Deployment ,ReplicaSet以及Pod的关系
水平扩展的命令:kubectl scale
事例:
$ kubectl scale deployment nginx-deployment --replicas=4 --record
deployment.apps/nginx-deployment scaled
--record 记录每次操作所执行的命令,方便后面查看。
检查Deployment的状态信息
$ kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
nginx-deployment 3 0 0 0 1s
实时查看状态变化
kubectl rollout status;
查看ReplicaSet
kubectl get rs
滚动更新策略RollingUpdateStrategy
直接使用kubectl edit指令,打开API对象,修改Pod模板,保存退出会立即出发“滚动更新
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
...
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
也可以用百分比的方式表示,比如maxUnavailable=50%
版本回滚
$ kubectl rollout undo deployment/nginx-deployment
deployment.extensions/nginx-deployment
如果是要回滚到比较早的版本
首先,我需要使用 kubectl rollout history 命令,查看每次 Deployment 变更对应的版本
通过这个 kubectl rollout history 指令,看到每个版本对应的 Deployment 的 API 对象的细节,具体命令如下所示
$ kubectl rollout history deployment/nginx-deployment --revision=2
然后,我们就可以在 kubectl rollout undo 命令行最后,加上要回滚到的指定版本的版本号,就可以回滚到指定版本了
更多推荐
所有评论(0)