• 虎虎❤️
    2018-10-10
    思考题,

    我觉得应该是效率的问题。

    查了一下v1.11 的 release notes。scheduler关于affinity谓词的性能大大提高了。

    查阅了Ds用默认调度器代替controller的设计文档
    之前的做法是:
    controller判断调度谓词,符合的话直接在controller中直接设置spec.hostName去调度。
    目前的做法是:
    controller不再判断调度条件,给每个pode设置NodeAffinity。控制器根据NodeAffinity去检查每个node上是否启动了相应的Pod。并且可以利用调度优先级去优先调度关键的ds pods。
    展开

    作者回复: 是的,关键就在于,调度优先级这个特性出现了。所以现在的设计其实没啥特别的地方。

    
     9
  • DJH
    2018-10-10
    张老师,请教几个基础问题:
    1. 在上一讲中,有一点我还是没想通,为何MySQL的数据复制操作必须要用sidecar容器来处理,而不用Mysql主容器来一并解决,你当时提到说是因为容器是单进程模型。如果取消sidecar容器,把数据复制操作和启动MySQL服务这两个操作一并写到MySQL主容器的sh -c命令中,这样算不算一个进程呢?

    2. StatefulSet的容器启动有先后顺序,那么当序号较小的容器由于某种原因需要重启时,会不会先把序号较大的容器KILL掉,再按照它们本来的顺序重新启动一次?

    3. 在这一讲中,你提到了滚动升级时StatefulSet控制新旧副本数的spec.updateStrategy.rollingUpdate.Partition字段。假设我现在已经用这个功能已经完成了灰度发布,需要把所有POD都更新到最新版本,那么是不是Edit或者Patch这个StatefulSet,把spec.updateStrategy.rollingUpdate.Partition字段修改成总的POD数即可?

    4. 在这一讲中提到ControllerRevision这个API对象,K8S会对StatefulSet或DaemonSet的每一次滚动升级都会产生一个新的ControllerRevision对象,还是每个StatefulSet或DaemonSet对象只会有一个关联的ControllerRevision对象,不同的revision记录到同一个ControllerRevision对象中?

    5. Deployment里可以控制保留历史ReplicaSet的数量,那么ControllerRevision这个API对象能不能做到保留指定数量的版本记录?

    问题比较多,谢谢!
    展开

    作者回复: 已经解释。不会,重启不会破坏拓扑规则,而且文章里说了,你要确保你的脚本不受重启影响。去掉partition。多个对象。支持,字段也一样。

    
     7
  • 北卡
    2018-10-10
    我跟上面的朋友有同样的疑问,关于Partition更新的。

    我设置了Partition,用部分pod来做灰度发布,然后发现没问题,我要全部更新,就只需要去掉Partition字段吗?
    然后我下一次更新的时候,就要再先加上Partition,然后再更新。全部更新时再去掉。

    我看了老师的回复,表达的是这个意思吗?
    展开

    作者回复: 是的。准确的说,是一步一步的减小partition ,一直减成0。就发布完了。

    
     5
  • 宋晓明
    2018-10-10
    老师:有没有公司这样用k8s的:apiserver管理很多pod 每个pod的ip地址全部暴露出来 nginx的upstream配置全是pod的ip地址,访问流程也就是client—>nginx—>pod:port 还有一个程序会监控pod地址变化,一旦变化,自动更新nginx配置。这是新公司使用k8s的流程,感觉好多k8s特性都没用到,比如service,ingress等 大材小用了。。。

    作者回复: 小规模用用可以,上生产环境还是要用标准的功能。你会发现越用越爽。

     1
     5
  • maomaostyle
    2018-11-12
    Stateful set 管理的replica 不是通过RS实现的么?

    作者回复: 不是。直接管pod

    
     3
  • 初学者
    2018-10-29
    还是没有明白damonset的实现与"污点"的关系,理论上为了实现每个node上有且只有pod, daemonset controller 和nodeaffinity就可以了,为啥需要"污点"机制?

    作者回复: 所以你就得在daemonset controller里写调度了

    
     3
  • donson
    2018-10-10
    “需要注意的是,在 Kubernetes v1.11 之前,由于调度器尚不完善,DaemonSet 是由 DaemonSet Controller 自行调度的,即它会直接设置 Pod 的 spec.nodename 字段,这样就可以跳过调度器了。”,后来随着调度器的完善,调度器就把DaemonSet的调度逻辑收回,由调度器统一调度。划清边界,领域内聚

    作者回复: 调度器只是原因之一。

    
     3
  • 紫夜
    2019-08-15
    张老师,DaemonSet的滚动更新,是先delete旧的pod,再启动新的pod,还是和Deployment一样,先创建新的pod,再删除旧的pod?

    作者回复: 到目前为止,DS只有一种策略就是先删除再创建 OnDelete

     1
     2
  • Tao
    2019-11-30
    DaemonSet如何保证每个node上只运行一个pod。
        我理解Nodeaffinity保证了daemonSet指定运行在哪些node上,Toleration保证了指定的Node上都可以运行pod;
        但是没有看到那个地方限制了DaemonSet保证在node上只允许一个pod。
     1
     1
  • 无名氏
    2019-03-01
    假设有这么一种场景,业务Pod需要在每个Node上有且只有1个,在灰度升级时,按10%,30%,50%,100%批量升级,后续某个版本再次升级时,这种升级策略可能会变更,比如10%,70%,100%,请问怎么处理,谢谢。
    
     1
  • Kanner
    2018-10-10
    那为什么Deployment不用ControllerRevison管理版本呢

    作者回复: 第一,它比较老。第二,它要用replicaset。

    
     1
  • 虎虎❤️
    2018-10-10
    一直不理解notation和label的区别,他们的设计思想是什么呢?加污点是前者还是后者?

    作者回复: 系统用的和用户用的。taint是spec的一个字段

    
     1
  • 憶海拾貝
    2019-09-22
    > 到目前为止,DS只有一种策略就是先删除再创建 OnDelete.
    我查k8s的ds源码以及k8s的ds文档,都有提到RollingUpdate.
    所以特别好奇张sir评论中的这条回复, ds不使用RollingUpdate策略更新, 是因为RollingUpdate坑比较多,所以实践中推荐使用OnDelete?
    
    
  • 紫夜
    2019-09-07
    张老师,我想请教个问题,daemonset使用滚动更新策略,如果update时只是变更了nodeaffinity,template中其他字段保持不变,控制器是如何处理的?比如我在nodeaffinity中新增了一个node,是只在新增的node上部署一个pod,其它pod保持不变,还是所有节点上的pod都会更新?
    
    
  • 寻
    2019-08-21
    张老师,您好 Daemonset既然出现的时机比kubernetes集群设置都要早,那为什么还能调用apiserver组件?
    
    
  • 冷风
    2019-08-09
    老师请教一个问题,是否可以对daemonset启动的每个pod设置不同的hostname? 感谢回答!
    
    
  • beenchaos
    2019-05-10
    请问老师,在一个集群上部署一类daemonset类型的服务,能否进行灰度发布呢?
    
    
  • ichiro
    2019-03-21
    老师,为什么deployment set,不用controllerrevison来作为版本管理么?
    
    
  • bluefantasy1
    2019-03-16
    请教老师一个问题:如果直接在一台物理机上部署各个pod,肯定不需要安装网络插件和存储插件了吧?
    
    
  • abc
    2018-12-06
    张老师,DS的滚动升级是先创建新的再删除旧的吗?还是说滚动升级有策略可以配置。该如何配置?
    
    
我们在线,来聊聊吧