首页 > 其他分享 >k8s-09-Deployment

k8s-09-Deployment

时间:2024-07-01 16:13:15浏览次数:20  
标签:kubectl 滚动 deploy 09 Deployment rollout pod k8s

Deployment

  1. 微服务化:将一个大规模系统拆分成各个独立运行的组件

  2. 更新 pod:

    • 直接删除所有现有的 pod, 然后创建新的 pod。
    • 先创建新的 pod, 并等待它们成功运行之后, 再删除旧的 pod。
    • 按顺序创建新的 pod, 然后逐渐删除旧的 pod。
  3. 第 1 种会导致应用程序在一定的时间内不可用。2、3 种需要支持两个版本同时对外提供服务。如果你的应用程序使用数据库存储数据, 那么新版本不应该对原有的数据格式或者数据本身进行修改, 从而导致之前的版本运行异常。

  4. kubectl set selector 命令来修改 Service 的 pod 选择器

  5. 滚动更新

    kubectl rollout <old-pod-name> <new-pod-name> --image=<image-version>
    # 伸缩的请求是由 kubectl 客户端执行的,而不是由 Kubemetes master 执行的。
    
  6. 在使用 Deployment 时, 实际的 pod 是由 Replicaset 创建和管理的, 而不是由 Deployment 直接创建和管理

  7. 创建 Deployment

    kubectl .... --record
    # 记录历史版本号
    
  8. 查看 Deployment 信息

    kubectl describe deploy <deploy-name>
    kubectl rollout status deploy <deploy-name>
    
  9. 默认策略是执行滚动更新(策略名为 RollingUpdate )。另一种策略为 Recreate,它会一次性删除所有旧版本的pod, 然后创建新的 pod, 整个行为类似于修改 Replication Controller 的 pod 模板, 然后删除所有的 pod。

  10. kubectl patch 修改单个或者少量资源属性

    kubectl patch deployment kubia -p '{"spec": {"minReadySeconds": 10}}'
    
  11. 触发 Deployment 滚动更新

    kubectl set image deploy <deployment-name> <image-name>=<image:version>
    kubectl set image deployment kubia nodejs=luksa/kubia:v2
    
  12. 如果 Deployment 中的 pod 模板引用了一个 ConfigMap (或 Secret ), 那么更改 ConfigMap 资原本身将不会触发升级操作。如果真的需要修改应用程序的配置并想触发更新的话, 可以通过创建一个新的 ConfigMap 并修改pod 模板引用新的 ConfigMap。

  13. 回滚升级

    kubectl rollout undo deploy <deploy-name>
    
  14. 显示升级历史

    kubectl rollout history deploy <deploy-name> [--to-revision=<history-num>]
    
  15. 暂停和恢复滚动更新

    kubectl rollout pasue deploy <deploy-name>
    kubectl rollout resume deploy <deploy-name>
    
  16. 如果部署被暂停, 那么在恢复部署之前, 撤销命令不会撤销它

  17. minReadySeconds 属性指定新创建的 pod 至少要成功运行多久之后, 才能将其视为可用。

  18. 如果只定义就绪探针没有正确设置 minReadySeconds , 一旦有一次就绪探针调用成功, 便会认为新的 pod 已经处于可用状态。因此最好适当地设置 minReadySeconds 的值。

  19. 滚动升级失败的超时时间, 通过 的progressDeadlineSeconds 来指定

  20. 小结

    • 使用 ReplicationController 管理 pod 并执行滚动升级
    • 创建 Deployment, 而不是底层的 ReplicationController 和 ReplicaSet
    • 通过更新 Deployment 定义的 pod 模板来更新 pod
    • 回滚 Deployment 到上个版本或历史版本列表中的任意一个历史版本
    • 中止 Deployment 滚动升级
    • 通过 maxSurge 和 maxUnavailable 属性控制滚动升级的速率
    • 使用 minReadySeconds 和就绪探针自动避免错误版本的升级
    • 在一个单一的 YAML 文件内使用三个横杠(---)作为分隔符定义多个资源

标签:kubectl,滚动,deploy,09,Deployment,rollout,pod,k8s
From: https://www.cnblogs.com/colasdn/p/18278269

相关文章

  • k8s-10-StatefulSet
    StatefulSet每个实例有单独存储的多副本手动控制Pod需要手动管理,当有节点故障,需要手动创建一个ReplicaSet对应一个Pod,创建多个RS不方便,不能弹性伸缩每个Pod使用同一数据卷中的不同目录实例间相互合作,正确性很难保证,同时共享存储会成为整个应用的性能瓶颈......
  • k8s-11-Kubernetes原理
    Kubernetes原理控制平面负责控制并使得整个集群正常运行。Etcd分布式持久化存储API服务器调度器控制器管理器工作节点负责容器的运行任务kubeletkube-proxy容器运行时(Docker、rkt等)附加组件DNS服务器仪表盘Ingress控制器Heapster(容器集群监控)容器......
  • K8S学习教程(一):使用PetaExpress云服务器安装Minikube 集群
    什么是MinikubeMinikube是一款工具,主要用于在本地运行Kubernetes集群。Kubernetes开源的平台,用于自动化容器化应用的部署、扩展和管理,而Minikube使得开发人员能够在本地机器上轻松创建一个单节点的Kubernetes集群,从而方便开发、测试和学习Kubernetes。我们看下......
  • k8s-01-介绍
    K8S介绍单体应用:由很多个组件组成,这些组件紧密的耦合在一起,由于他们在同一个操作系统进程中运行,所以在开发、部署、管理都必须在同一个实体进行。即使市某个组件中小的更改,都需要重新部署整个应用。组件间缺乏严格的边界定义,相互依赖,日积月累导致系统复杂度提升。微服务:将......
  • k8s-02-开始使用
    开始使用列出集群节点kubectlgetnodes节点的详细信息kubectldescribe[node<NODE-NAME>]配置Tab补全source<(kubectlcompletionbash)运行应用kubectlrunkubia--image=luksa/kubia--port=8080--generator=run/vlreplicationcontroller列出p......
  • k8s-03-Pod
    Podpod是逻辑主机,其行为与非容器世界中的物理主机或虚拟机非常相似。此外,运行在同一个pod中的进程与运行在同一物理机或虚拟机上的进程相似,只是每个进程都封装在一个容器之中。pod定义由这么几个部分组成:首先是YAML中使用的KubemetesAPI版本和YAML描述的资源......
  • K8s摘抄及理解
    摘抄及理解目录摘抄及理解ReplicationController和PodReplicationController和ReplicaSet[1]Kubernetes核心组件创建Pod流程RBAC授权[2]Role和ClusterRoleRoleBinding和ClusterRoleBindingResourceSubject静态PodPodHook(生命周期钩子)健康检查InitContainer(初始化......
  • K8s 问题及解答
    问题及解答kubectlproxy命令及其含义,如何通过proxy访问kubernetes集群?Createsaproxyserverorapplication-levelgatewaybetweenlocalhostandtheKubernetesAPIServer.ItalsoallowsservingstaticcontentoverspecifiedHTTPpath.Allincomingdata......
  • 浅谈 K8s Service 网络机制
    浅谈K8sService网络机制云原生运维圈 2024-07-0112:03 上海 1人听过 以下文章来源于腾讯云原生 ,作者王成腾讯云原生.云原生技术交流阵地,汇聚云原生最新技术资讯、文章、活动,以及云原生产品及用户最佳实践内容。王成,腾讯云研发工程师,Kubernetesmember,从......
  • BK8090 单芯片2.4GHz RF片上系统(SoC),上海博通非标2.4G新系列
    BK8090是一款单芯片2.4GHz射频片上系统(SoC),用于低功耗无线应用。BK8090结合了高性能2.4GHz射频收发器和增强型8051兼容MCU的优点,容量为2KBRAM和8kb的OTP内存和基本外设。采用先进的设计技术和超低功耗的工艺技术,BK8090提供高集成度和为目标应用(如USB加密狗、鼠标设备、键......