Kubernetes Deployment StatefulSet DaemonSet HPA

Replication Controller 和 ReplicaSet 

  Replication Controller 和 ReplicaSet 都是用于控制pod数量符合期望,ReplicaSet是支持基于集合的标签选择器的下一代Replication Controller,它主要用作Deployment协调创建、删除和更新Pod,ReplicaSet支持标签选择器。Replication Controller 和 ReplicaSet 一般不会单独使用,多数是通过其它资源进行调用,如deployment。

 

Deployment
  用于部署无状态的服务;

  更新:kubectl set image deploy nginx nginx=nginx:1.15.3 –record     # –record 将更新记录到历史中,方便后续进行回滚;

  查看更新过程:kubectl rollout status deploy nginx

  查看更新的历史版本:kubectl rollout history deploy nginx

  回滚到上一版本:kubectl rollout undo deploy nginx

  查看历史版本的详细信息: kubectl rollout history deploy nginx --revision=5

  回滚到指定的历史版本:kubectl rollout undo deploy nginx --to-revision=5

 

  Deployment 暂停和恢复:

    Deployment 暂停之后,对Deployment 的修改将不会立即作用到Deployment 上,需要使用恢复的指令将Deployment 恢复,恢复后Deployment 将暂停之后的修改更新到当前的Deployment 上;

    应用:需要通过命令多次修改Deployment ,并希望将所有的修改执行之后,再一次性应用到Deployment 上;

    暂停:kubectl rollout pause deployment nginx

    修改:kubectl set . . . . . . 

    恢复:kubectl rollout resume deploy nginx

 

  更新策略:

    RollingUpdate  滚动更新,可以设置最大不可用数量或者设置更更新过程中可以允许超过期望pod的数量;

    Recreate   重建,该更新策略执行后更新后,pod并不会立即更新,而是需要等到pod被删除之后,新建的pod才会使用更新的版本;

 

StatefulSet

  StatefulSet(有状态集,缩写为sts)常用于部署有状态的且需要有序启动的应用程序。

  使用 StatefulSet 创建出来的pod,名称规则如下:

    StatefulSetName-0、StatefulSetName-1 . . . . . . 

  

  StatefulSet创建的Pod一般使用Headless Service进行通信,Headless一般的格式为:
    statefulSetName-{0..N-1}.serviceName.namespace.svc.cluster.local

    示例:使用 StatefulSet 管理redis集群,从节点配置:

      slaveof redis-ms-0.redis-ms.public-service.svc.cluster.local 6379

  注意:

    StatefulSet目前使用Headless Service(无头服务)负责Pod的网络身份和通信,需要提前创建此服务。

    删除一个StatefulSet时,不保证对Pod的终止,要在StatefulSet中实现Pod的有序和正常终止,可以在删除之前将StatefulSet的副本缩减为0。

 

  更新:

    updateStrategy: 

      rollingUpdate:

        partition: 0    # partition 后面的数字,将会和 statefulSetName-{0..N-1} 中的数字比较,只更新 大于等于0的pod

      type: RollingUpdate

  

 

DaemonSet

  DaemonSet 在节点上只能存在一个,一般用于节点信息收集,如日志、节点监控,CNI的网络插件也是 DaemonSet;

  也可根据标签选在某些节点进行DaemonSet 部署;

 

 

HPA:Horizontal Pod Autoscaler

  HPA v1为稳定版自动水平伸缩,只支持CPU指标
  V2为beta版本,分为v2beta1(支持CPU、内存和自定义指标)
  v2beta2(支持CPU、内存、自定义指标Custom和额外指标ExternalMetrics)

 

  注意:

    如果是根据CPU或者内存进行HPA的话,需要为创建的容器指定cpu和内存资源;注意:1颗cpu = 1000m

    使用指令创建一个简单的:kubectl autoscale deployment hpa-nginx --cpu-percent=10 --min=1 --max=10

    

  

  

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

posted @ 2022-05-12 11:31  青灯浊酒  阅读(74)  评论(0编辑  收藏  举报