zoukankan      html  css  js  c++  java
  • k8s的Pod控制器

    pod的配置清单常见选项:

     1      apiVersion,kind,metadata,spec,status(只读)
     2      spec:
     3         containers:
     4         nodeSelector:
     5         nodeName:
     6         restartPolicy:
     7             Always,Never, OnFailure
     8         containers:
     9             name
    10             image
    11             imagePullPolicy: Always,Never,IfNotPresent
    12             ports:
    13                 name:
    14                 containerPort
    15             livenessProbe
    16             readinessProbe
    17             lifecycle
    18         ExecAction:  exec
    19         TCPSocketAction: tcpSocket
    20         HTTPGetAction:httpGet

    pod控制器:
        ReplicaSet:通常管理无状态pod,带用户创建指定数量的pod副本,并确保pod副本一直处于满足用户期望数量的状态。 多退少补,并且支持扩缩容    
        ReplicaSet:常用的3个组件;1,用户期望的副本数。2,标签选择器,以便选择自己管控的pod副本。3,pod资源模板,通过标签选择器选定的pod副本数少于用户所期望,则引用pod的资源模板来创建。
        Deployment:Deployment-->ReplicaSet-->pod
        DaemonSet:可以保证每一个node节点上只运行指定的某1个pod,例如:日志收集器,filebeat,没必要运行多个agant副本。通常运行一些系统级的pod任务。
        Job:临时一次性作业,可以用户指定的数量启动指定数量的pod副本,pod是否重启取决于job任务是否完成
        Cronjob:周期性计划作业
        StartfulSet:有状态的任务,通常用来做存储。极其困难的。
        TPR:Third Party Resources,1.2+,1.7
        CDR:Custom Defined Resources,1.8+


    kubectl explain deploy.spec.strategy.rollingUpdate.maxSurge  :用来滚动更新,更新过程中最多可以超出默认副本数的几个
    kubectl explain deploy.spec.strategy.rollingUpdate.maxUnavailable :最多可以几个不可用
    kubectl explain deploy.spec.revisionHistoryLimit :我们再更新后,最多保留多少个历史版本。

    deployment会自动创建replicaSet,replicaSet创建pod


    deployment的升级:
       1.直接修改deployment的yaml文件,然后apply
       2.使用kubectl patch deploy/myapp-deploy -p '{""}' json格式给yaml文件打补丁。
       3.使用kubectl edit deploy/myapp-deploy
       4.kubectl set image deploy/myapp-deploy myapp=ikubernetes/myapp:v3 && kubectl rollout pause deploy/myapp-deploy   使用kubectl get pods -w可以监视过程
       4.上面是金丝雀发布,测试可以的话可以继续更新:kubectl rollout resume deploy/myapp-deploy  使用:kubectl rollout status deploy/myapp-deploy 也可以监控更新过程
       5.kubectl rollout undo deploy/myapp-deploy可以回滚到上个版本。
    例:
    kubectl patch deploy/myapp-deploy -p '{"spec":{"replicas":5}}'
    kubectl patch deploy/myapp-deploy -p '{"spec":{"strategy":{"rollingUpdate":{"maxSurge":1,"maxUnavailable":0}}}}'

    deployment的yaml文件例子

     1 apiVersion: apps/v1
     2 kind: Deployment
     3 metadata:
     4   name: myapp-deploy
     5   namespace: default
     6 spec:
     7   replicas: 3
     8   selector:
     9     matchLabels:
    10       app: myapp
    11       release: canary
    12   template:
    13     metadata:
    14       labels:
    15         app: myapp
    16         release: canary
    17     spec:
    18       containers:
    19       - name: myapp
    20         image: ikubernetes/myapp:v2
    21         ports:
    22         - name: http
    23           containerPort: 80









  • 相关阅读:
    前端mvc mvp mvvm 架构介绍(vue重构项目一)
    SPA页面缓存再优化二
    消除浏览器对input输入框的自动填充
    单页面系统的一些性能优化
    城市联动组件插件思想分析
    前端性能优化点总结
    ui-router 1.0以上的 $stateChangeStart
    (转) view视图的放大、缩小、旋转
    (转)代码中实现button
    objective-c 强弱引用、properties的学习
  • 原文地址:https://www.cnblogs.com/Smbands/p/10926791.html
Copyright © 2011-2022 走看看