前置条件:linux机器已安装k8s集群

  1. 基于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
  1. 此时我们已经创建好了两个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表示最新版本

  1. 当我们升级过nginx镜像之后,如果新版本的镜像问题很多,此时我们需要回滚,执行命令

kubectl rollout undo deployment web

表示回滚到上一个版本,即回滚到nginx镜像为1.14

如果我们想回滚到指定的某个版本,执行如下命令

kubectl rollout undo deployment web --to-revision=2
  1. 弹性伸缩

刚我们创建了两个pod,如果我们想pod弹性扩展到5个,可以执行命令

kubectl scale deployment web --replicas=5

然后我们执行kubectl get pods查看,共有5个pod

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐