扩展应用
对Deployment中副本的数量(replicas),可以动态扩展或收缩应用
这些自动扩展的容器会自动加入到 service 中,而收缩回收的容器也会自动从 service 中删除。
$ kubectl scale –replicas=3 deployment/nginx-app
$ kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-app 3/3 3 3 18h
滚动升级
kubectl set image –help
示例更新nginx镜像版本: kubectl set image deployment/nginx-app nginx-app=nginx:1.12.0-alpine
已弃用命令:kubectl rolling-update
,参见:
- https://github.com/kubernetes/kubernetes/pull/61285
- https://stackoverflow.com/questions/65303683/why-kubectl-removed-command-rolling-update
其他命令
kubectl rollout history deployment/deploy名 # 检查部署的历史,包括修订的情况
kubectl rollout undo deployment/deploy名 # 回滚到之前版本
kubectl rollout undo deployment/deployt名 –to-revision=2 # 回滚到指定版本
kubectl rollout status -w deployment/deploy名 # 查看滚动升级状态
kubectl rollout restart deployment/deploy名 # 重新滚动升级
资源限制
> kubectl set resources deployment nginx-app -c=nginx-app –limits=cpu=500m,memory=128Mi
deployment.apps/nginx-app resource requirements updated
这等同于在每个 Pod 中设置 resources limits:
|
|
健康检查
Kubernetes 作为一个面向应用的集群管理工具,需要确保容器在部署后确实处在正常的运行状态。Kubernetes 提供了两种探针(Probe,支持 exec、tcpSocket 和 http 方式)来探测容器的状态:
- LivenessProbe:探测应用是否处于健康状态,如果不健康则删除并重新创建容器
- ReadinessProbe:探测应用是否启动完成并且处于正常服务状态,如果不正常则不会接收来自 Kubernetes Service 的流量
对于已经部署的 deployment,可以通过 kubectl edit deployment/nginx-app
来更新 manifest,增加健康检查部分:
|
|