25-Deployment

作者: 紫荆秋雪_文 | 来源:发表于2022-01-21 14:41 被阅读0次

    一、Deployment

    一个Deployment 为 Pods 和 ReplicaSets 提供声明式的更新能力

    二、Deployment、ReplicaSet、Pods之间的关系

    Deployment、ReplicaSet、Pods之间的关系.png

    三、创建Deployment

    1、创建一个ReplicaSet

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name:  deployment-nginx-raven
      namespace: raven
      labels:
        app:  deployment-nginx-raven
    spec:
      selector:
        matchLabels:
          app: raven-nginx-1
      replicas: 1
      template: # 定义 Pod
        metadata:
          labels:
            app:  raven-nginx
        spec:
          containers:
          - name:  raven-nginx-container
            image:  nginx
    
    • ❌ 信息
    The Deployment "deployment-nginx-raven" is invalid: 
    spec.template.metadata.labels: Invalid value: 
    map[string]string{"app":"raven-nginx"}: `selector` does 
    not match template `labels`
    
    Deployment的选择器.png
    • Deployment中的选择器selector.matchLabels必须要与template.metadata.labels中的 key:value 必须相同
      key-value相同就可以匹配.png
      key-value相同就可以匹配.png

    小结

    • selector 字段定义 Deployment 如何查找要管理的 Pods。在这里,你选择在 Pod 模板中定义的标签(app: nginx)。不过更复杂的选择规则是也可能的,只要 Pod 模板本身满足所给规则即可

    • spec.selector.matchLabels 字段是 {key, value} 键值对映射。在matchLabels映射中的每个 {key, value} 映射等效于 matchExpressions 中的一个元素,即其key字段时"key",operator 为 "in",values数组仅包含"value"。在 matchLabelsmatchExpressions 中给出的所有条件都必须满足才能匹配

    • 解析yaml文件

    kubectl apply -f https://k8s.io/examples/controllers/nginx-deployment.yaml --dry-run=client -oyaml
    
    • 在应用时标志记录,方便以后查看 --record
    kubectl apply -f depolyments.yaml --record
    

    四、更新 Deployment

    仅当 Deployment Pod 模板(.spec.template)发生改变时,例如模板的标签容器镜像被更新,才会触发 Deployment 上线。其他更新(如:对 Deployment 执行扩展容的操作)不会触发上线动作

    1、更新 镜像

    • 方法一:使用yaml方式,直接修改镜像
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name:  deployment-nginx-raven
      namespace: raven
      labels:
        app:  deployment-nginx-raven
    spec:
      selector:
        matchLabels:
          appt: raven-nginx
      replicas: 1
      template: # 定义 Pod
        metadata:
          labels:
            appt:  raven-nginx
        spec:
          containers:
          - name:  raven-nginx-container
            image:  nginx:1.16.1
    
    • 方法二:通过kubectl
    kubectl set image deployment/deployment-nginx-raven raven-nginx-container=nginx:1.14.2 --record -n raven
    
    kubectl set image deployment/deployment-nginx-raven raven-nginx-container=nginx:1.16.1 --record -n raven
    
    • 查看ReplicaSet
    kubectl get rs -n raven
    

    五、查看 Deployment 上线历史

    kubectl rollout history deployment/deployment-nginx-raven -n raven
    

    六、回滚到之前版本

    • 查看 某次部署 Deployment 详情
    kubectl rollout history deployment/deployment-nginx-raven --revision=5 -n raven
    
    • 回滚到之前的修订版本
    kubectl rollout undo deployment/deployment-nginx-raven --to-revision=6 -n raven
    

    七、缩放 Deployment

    • 方式一:使用kubectl 命令
    kubectl scale deployment/deployment-nginx-raven --replicas=3 -n raven
    
    • 方式二:修改yaml文件replicas

    相关文章

      网友评论

        本文标题:25-Deployment

        本文链接:https://www.haomeiwen.com/subject/nojshrtx.html