目录

K8S部署

K8S学习笔记

目录

Deployment 为 Pod 和 ReplicaSet 提供声明性更新。 我们可以利用许多部署功能。

本章涵盖更新部署回滚部署调用部署暂停和恢复部署部署状态

首先,我们创建一个部署。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploymnet
spec:
replicas: 3
selector:
matchLabels:
app: web_server
template:
metadata:
labels:
  app: web_server
spec: 
containers: 
    - name: nginx 
      image: nginx:1.7.9
  • 更新部署

    参考此链接:[https://yeliansong.github.io/2020/04/22/K8S-Deployment-Strategies/](https://yeliansong.github.io/2020/04/22/K8S-Deployment- 策略/)

    它涵盖了部署的推出和回滚。

  • 缩放部署

    您可以根据需要使用以下命令来扩展 Deployment。

    1
    
    kubectl scale deployment nginx-deploymnet --replicas=10
    

    假设集群中启用了水平 Pod 自动缩放,您可以为 Deployment 设置自动缩放器,并根据现有 Pod 的 CPU 利用率选择要运行的最小和最大 Pod 数量。

    1
    
    kubectl autoscale deployment nginx-deploymnet --min=10 --max=15 --cpu-percent=20
    
  • 暂停和恢复部署 您可以在触发一个或多个更新之前暂停部署,然后再恢复它。 这允许您在暂停和恢复之间应用多个修复,而不会触发不必要的推出。

    1
    
    kubectl rollout pause deployment nginx-deploymnet
    

    这将暂停部署,然后您可以修补此部署的更改。

    1
    
    kubectl set image deployment nginx-deploymnet nginx=nginx:1.16.1
    

    之后,您可以恢复部署。

    1
    
    kubectl rollout resume deployment nginx-deploymnet
    
  • 部署状态

    Deployment 在其生命周期中会进入各种状态。 它可以是正在进展、已完成或未进展。

    当执行以下任务之一时,部署进入进度状态。

    • Deployment 创建一个新的 ReplicaSet
    • Deployment 正在扩展其最新的 ReplicaSet
    • Deployment 正在缩减其旧的 ReplicaSet
    • 新 Pod 已准备就绪或可用

    您可以使用 kubectl rollout status 来监控进度。

    当具有以下特征时输入完整。

    • 所有副本均已更新至您指定的最新版本。
    • 所有副本均可用
    • 部署的旧副本没有正在运行。

    匹配失败的原因有以下一项。

    • 配额不足
    • 就绪探针故障
    • 图像拉取错误
    • 权限不足
    • 限制范围
    • 应用程序运行时配置错误

    以下命令使用progressDeadlineSeconds 设置规范,以使控制器在您定义的时间之后报告部署缺乏进度。

    1
    
    Kubectl patch deployment nginx-deployment -p '{"spec":{"progressDeadlineSeconds":600}}'