K8S之Pod升级和回滚

本文详细描述了如何在Kubernetes中创建和管理Deployment,包括创建nginx-deployment的Pod,升级镜像至1.9.1,以及部署的回滚操作,展示了Rereate和RollingUpdate两种更新策略的区别。

1.Deployment的升级

    1.1 我们创建nginx-deployment的pod


#1.创建yaml文件
[root@k8s-master k8s-yaml]# cat nginx-deployment.yaml 
apiVersion : apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80

#2.创建pod
[root@k8s-master k8s-yaml]# kubectl create -f nginx-deployment.yaml 
deployment.apps/nginx-deployment created
#3.查看pod
[root@k8s-master k8s-yaml]# kubectl get po -o wide
NAME                              READY   STATUS    RESTARTS   AGE    IP              NODE         NOMINATED NODE   READINESS GATES
nginx-deployment-f7599d4c-2lj8v   1/1     Running   0          81s    172.18.58.194   k8s-node02   <none>           <none>
nginx-deployment-f7599d4c-z2d9d   1/1     Running   0          7m1s 
### 在 Kubernetes 中通过命令行工具升级 Pod版本Kubernetes 中,Pod 通常是通过 Deployment 或其他控制器进行管理的。因此,升级 Pod版本实际上是通过更新 Deployment 的配置来实现的。以下是具体的命令方法示例: #### 修改 Deployment 的镜像版本 可以通过以下命令直接修改 Deployment 中使用的容器镜像版本: ```bash kubectl set image deployment/<deployment-name> <container-name>=<new-image:tag> ``` 例如,如果需要将名为 `my-web-app` 的 Deployment 中的容器镜像从 `nginx:1.21` 升级到 `nginx:1.23`,可以运行以下命令: ```bash kubectl set image deployment/my-web-app my-web-container=nginx:1.23 ``` 此命令会触发 Deployment 的滚动更新机制,逐步替换旧版本Pod[^3]。 #### 编辑 YAML 文件并重新应用 另一种方式是编辑现有的 Deployment 配置文件,更新容器镜像的版本,然后重新应用该文件: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: my-web-app spec: template: spec: containers: - name: my-web-container image: nginx:1.23 # 更新为新版本 ``` 保存文件后,运行以下命令重新应用配置: ```bash kubectl apply -f deployment.yaml ``` 这将更新 Deployment 的镜像版本,并触发滚动更新过程[^3]。 #### 检查更新状态 在更新过程中,可以使用以下命令查看 Deployment 的状态: ```bash kubectl rollout status deployment/<deployment-name> ``` 例如: ```bash kubectl rollout status deployment/my-web-app ``` 如果需要回滚到之前的版本,可以使用以下命令: ```bash kubectl rollout undo deployment/<deployment-name> ``` #### 使用 `kubectl edit` 命令 还可以直接通过 `kubectl edit` 命令在线编辑 Deployment 的配置: ```bash kubectl edit deployment/<deployment-name> ``` 找到容器镜像字段并将其更新为新版本,保存后 Kubernetes 将自动应用更改并触发滚动更新[^3]。 --- ### 示例代码 以下是一个完整的示例,展示如何通过命令行工具升级 Pod版本: 1. **设置新的镜像版本**: ```bash kubectl set image deployment/my-web-app my-web-container=nginx:1.23 ``` 2. **检查更新状态**: ```bash kubectl rollout status deployment/my-web-app ``` 3. **验证 Pod 版本**: ```bash kubectl get pods -n default -o jsonpath='{.items[*].spec.containers[*].image}' ``` ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值