20 | 深入理解StatefulSet(三):有状态应用实践
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
本文详细介绍了如何使用StatefulSet将MySQL集群的搭建“容器化”。作者通过一个实际的例子,讲解了部署一个StatefulSet的完整流程。文章首先描述了要部署的“有状态应用”需求,即一个主从复制的MySQL集群,包括主节点和多个从节点,以及读写操作的限制。然后,作者详细介绍了在常规环境中部署这样一个主从模式的MySQL集群的难点,并提出了在Kubernetes项目上“容器化”解决这些难点的思路。作者重点介绍了如何使用StatefulSet来解决主从节点的不同配置文件、备份信息文件传输以及初始化SQL操作等问题。此外,作者还介绍了如何通过ConfigMap和Service来实现主从节点的配置文件管理和用户请求的转发。最后,作者提出了StatefulSet的框架设计和Pod模板的重点设计,以及如何使用PVC模板为每个Pod定义PVC来管理存储状态。整体来说,本文通过实例详细介绍了如何使用StatefulSet将MySQL集群的搭建“容器化”,为读者提供了深入理解StatefulSet之有状态应用实践的指导。文章还提出了在实现读写请求分离的情况下需要做的改动,为读者提供了进一步思考和实践的方向。
《深入剖析 Kubernetes》,新⼈⾸单¥68
全部留言(110)
- 最新
- 精选
- Vincen因为是通过一个statefulset来实现的 感觉太复杂了,master和slave做成两个statefulset就非常简单了
作者回复: 没错,这是一个很好的解决思路
2018-10-0812122 - DJH有一点我还是没想通,为啥数据复制操作要用sidecar容器来处理,而不用mysql主容器来一并解决。如果把数据复制操作和启动mysql服务一并写到同一个sh -c后面,这样算不算一个单一进程呢?
作者回复: sidecar是常驻进程,要监听3370端口呢。一个容器里显然没办法管理两个常驻进程,这就是容器是单进程的意思啊。
2018-10-10544 - sam700000通过这节我才更清晰理解了,kubernetes最小的管理单位是pod的概念,把思维从容器这层抽出来。然后也更清楚的理解了statefulset实现有状态,就是把特定的状态配置绑定在某个对象名称上面,然后通过之前说的控制循环不断的维护这个对象的特性,只要这写特定对象和它们各自绑定的状态配置不变就实现了有状态的应用部署和维护。果然实践出真知👍
作者回复: 说的对!
2019-08-1436 - 彭锐这样的有状态应用有个约束,pod标识一旦确定,角色就确定了。但实际应用中,不能有这样的约束,主挂了,要有一个从升主。这就要求至少有选主机制,所有的配置文件也不能依赖id确定角色。 这怎么玩呢?operater吗?operater可以看成一个特定应用的sre保姆吗?
作者回复: 没错。你说的这种情况得用operator,后面会讲。
2018-10-18334 - 侯操宇老师,我发现在initContainers 的ini-mysql容器中,执行的只是简单的文件拷贝工作,但镜像却用的是mysql的镜像,可以用其他镜像取代吗?镜像的选择有什么讲究吗?
作者回复: 没啥讲究,能完成任务即可
2018-10-11315 - 风轨集群中的master/slave节点关系不对等。Service是通过label来绑定pod的,一个statefulSet中所有pod的label都是一样的,无法区分,因此service也是无法区别绑定slave pod的。所以答案应该是老师在文中多次提及的Operator,一次编排多个角色不同甚至镜像不同的服务。
作者回复: 其实也可以写成两个statefulset
2018-10-0815 - wtcctw张大大你好, 我之前自己玩过docker,在看这个专栏之前,特意简单过了一下《Docker容器与容器云 第二版》,之前一些章节看得非常过瘾,讲解得非常透彻。 但是看到StateFulSet的时候感觉有点晕。。。特别是里面的Pod YAML定义,感觉要记的东西非常多,学习曲线也比较陡峭,一段时间不用肯定就忘了。 所以想问一下,作为非专业的运维人员,对于k8s的掌握大致要到何种程度,多谢多谢。
作者回复: 遇到问题能迅速定位到源码即可
2018-10-08813 - swordholder总结里给的'mysql-statefulset.yaml'好像有点问题,在声明'volumeClaimTemplates'时,是不是应该通过'storageClassName'属性引用前面定义的'StorageClass': storageClassName: rook-ceph-block 我开始一直遇到"pod has unbound immediate PersistentVolumeClaims" 错误,增加了这个属性就好了。
作者回复: 对,用rook的环境应该加上这个,我加一句注释上去。
2018-10-0848 - xfan感觉实现起来很复杂,不优美
作者回复: 所以才要讲operator的
2018-12-267 - eden老师,请问mysql persistent volume需要扩容怎么做?通过kubectl scale不能修改volume大小。
作者回复: 需要存储插件支持
2018-12-115