前置条件:linux机器已安装k8s集群
基于yaml文件创建pod,本次创建pod使用的web.yaml如下
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: web
name: web
spec:
replicas: 2
selector:
matchLabels:
app: web
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: web
spec:
containers:
- image: nginx:1.14
name: nginx
resources: {}
status: {}
注:replicas: 2表示创建两个pod;
nginx:1.14表示使用的nginx镜像版本号是1.14
创建命令
kubectl apply -f web.yaml
此时我们已经创建好了两个pod,如果想升级nginx镜像的版本,例如从1.14升级到1.15,执行命令
kubectl set image deployment web nginx=nginx:1.15
当新升级后的pod成功启动后,原来的pod才会停止服务
可以执行如下命令,查看镜像是否升级成功
kubectl rollout status deployment web
执行命令查看历史版本
kubectl rollout history deployment web
序号1表示nginx镜像没升级前的1.14版本,序号2表示最新版本
当我们升级过nginx镜像之后,如果新版本的镜像问题很多,此时我们需要回滚,执行命令
kubectl rollout undo deployment web
表示回滚到上一个版本,即回滚到nginx镜像为1.14
如果我们想回滚到指定的某个版本,执行如下命令
kubectl rollout undo deployment web --to-revision=2
弹性伸缩
刚我们创建了两个pod,如果我们想pod弹性扩展到5个,可以执行命令
kubectl scale deployment web --replicas=5
然后我们执行kubectl get pods查看,共有5个pod