管理工具,帮助用户实现Pod的自动部署,自维护,扩容,滚动更新等功能的自动化程序

deployment 控制器 用户定义的

replicaset    pod   自动定义的 由deployment自动管理

  matchLabels:  简单标签
matchExpressions 表达式语法(标签语法,类似污点语法)

- operator:  In,NotIn,Exists

kubectl  create deployment  myweb --image  myos:httpd --dry-run=client  -o yaml

k8s中定义web集群的结构

用户---> Service   ClusterIP  ---> Pod ---> replacaSet --->deployment

创建服务访问集群   ClusterIP

Pod维护管理  

自维护自治理  
Pod 被删除后,Deploy 会自动创建新的 Pod 来维护集群的完整性

集群扩缩容

自动扩容 replicas副本数量

kubectl scale deployment myweb --replicas=1 (副本数量)

回滚更新策略

重建式更新      

滚动式更新   

百分比进行更新  :先创建控制器,先创建Pod总数的百分比,同时在原控制器上消减同百分比,同步 

 kubectl  get deployments.apps myweb -o yaml | less

revisionHistoryLimit: 10    #保留10个历史版本
  selector:                           
    matchLabels:
      app: httpd
  strategy:                  #更新策略
    rollingUpdate:         #滚动更新策略
      maxSurge: 25%     #允许最大副本25%超量
      maxUnavailable: 25%   #允许最小副本25%不足
    type: RollingUpdate        #更新方式 Recreate,RollingUpdate    

    imagePullPolicy: IfNotPresent   #镜像下载策略 [always,never,innotpresent]

查看历史版本信息

 kubectl rollout history deployment myweb 

kubectl annotate  deployments.apps myweb  kubernetes.io/change-cause="httpd.v1" #添加历史版本注释

滚动更新 

修改镜像,滚动更新集群  (apache---》 nginx)

 kubectl set image deployment myweb webserver=myos:nginx

给新版本添加注释信息

kubectl annotate deployments myweb kubernetes.io/change-cause="nginx.v1"

版本回滚

kubectl rollout undo deployment myweb --to-revision 1(版本数)

DaemonSet控制器 

 

kind: DaemonSet

删除副本参数 replicas

无法自定义副本数量

所创建的Pod与node节点绑定

每个node上都会运行一个pod

当有新的node加入集群时,会为他新增pod副本,当node从集群移除时,这些pod也会被回收。kube-proxy

Job/CronJob控制器

Job是一个单任务控制器,负责执行一次任务,保证任务在一个或者多个Pod上执行成功

cronjob   job的升级版   基于时间管理的Job控制器  按照时间周期创造job

crontab   --》 job  --》 Pod

schedule  “* * * * *”时间周期
jobTemplate

statefulset控制器   有状态的控制器

有状态服务   必须在特定的主机,特定的节点做请求   (比如mysql主从,ceph数据分片,日志收集监控收集pod的不同指标) 

headless 无头服务

无状态服务   每个请求都是独立的     主动注册新的ip

高级控制器

statefulset 与有状态的应用及分布式系统一起使用,涉及headless服务,存储卷,DNS....

配置headless服务  在配置statefulset的时候首先要定义一个headless的服务

创建pod的时候会自动把<Pod名称>注册为域名

弹性云服务   HPA控制器  支持自动扩缩容

集群环境创建一个HPA控制器,统计Cpu平均利用率,在k8s集群中基于cpu利用率或者其他应用程序提供的度量指标实现水平自动伸缩的功能,自动缩放Pod 的数量

控制器会周期性的获取平均利用率

与目标值相比较后来调整副本数量

  resources:           # 为该资源设置配额
          requests:          # HPA 控制器会根据配额使用情况伸缩集群
            cpu: 200m        # CPU 配额

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐