高手问答第 262 期 —— Kubernetes 生产化实践之路

白开水不加糖 发布于 06/21 08:25
阅读 4K+
收藏 8

开源软件供应链点亮计划,等你来!>>>

相比于虚拟化技术,容器技术更轻量、优雅,也更符合微服务时代应用的构建与部署需求。基于容器技术的Kubernetes并不是一个孤立的云平台,它有成为云计算规范的野心。与此同时,它已俨然成为云计算的事实标准。

Kubernetes可以被看作一个云计算控制平面的框架,而云计算三要素——计算、网络和存储,均以插件形式与Kubernetes集成。这样做的好处是,使用者可以选择自己的插件实现来落地。因此,当计算技术、网络技术或存储技术更新换代时,Kubernetes能够很容易地集成。于是在容器技术“能打”的今天,Kubernetes将对其提供全面支持;明天容器技术被其他技术取代,Kubernetes作为管理平台,只需要替换一个运行时插件即可,因此其地位不可撼动。

OSCHINA 本期高手问答( 月 21 日 - 627 ) 我们请来了 @孟凡杰 和大家一起探讨关于Kubernetes相关的问题。

本期问答内容:

1. Kubernetes架构及原理

2.构建和运维生产化集群

3.大规模集群、多集群的运维挑战

4.容器化过程中碰到的问题

或者其它关于Kubernetes相关问题,也欢迎大家积极提问!

嘉宾简介

孟凡杰:eBay资深架构师,负责Kubernetes在企业落地过程中的架构和开发工作,专注于网络、多集群、服务治理和服务网格等方向。Kubernetes社区贡献者,曾参与社区集群联邦的开发和服务控制器重构等工作。CNUTCon全球运维大会、GIAC国际互联网架构大会明星讲师。

为了鼓励踊跃提问,@博文视点 会在问答结束后从提问者中抽取 5 名幸运会员赠予《Kubernetes生产化实践之路》一书。

购买链接:https://item.jd.com/13036516.html

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家就 Kubernetes 关问题向 @孟凡杰 提问,请直接回帖提问。

加载中
0
白开水不加糖
白开水不加糖

高手问答第 262 期 —— Kubernetes 生产化实践之路

@无级别码农@becke@猪娃娃@tsdyy@zb99480274

恭喜以上五位网友分别获得《Kubernetes生产化实践之路》图书一本
请私信 @白开水不加糖    告知快递信息(格式:姓名+电话+地址)

0
开源中国首席罗纳尔多
开源中国首席罗纳尔多

@孟凡杰 您好,请问中小型企业用Docker还是K8s多?都适合些什么场景下?

孟凡杰
孟凡杰
几年前Kubernetes刚起步的时候,用Docker Swarm还是K8S的争论还比较多。但目前K8S已经成为业界标准,Docker Swarm已经不够活跃,技术选型的路径已经很清晰了: 用K8S作为容器云平台,docker或containerd作为运行时,如果选择containerd作为运行时,整个平台其实跟docker已经没有太大关系了。
0
无级别码农

@孟凡杰 孟老师,我们在用到k8时,最大的问题就是存储对数据库(mysql、postgres)类的影响,相对于裸机,读写性能都会下降近10倍,对调优没什么想法,您能提供些思路吗

无级别码农
回复 @孟凡杰 : 好的,我在进一步分析下
无级别码农
回复 @孟凡杰 : 没有直接使用local ,使用了longhorn,服务器本身的磁盘是mount的本地的。
无级别码农
回复 @孟凡杰 : 部署的时候,服务都没有限制资源的使用;网络基本上没什么吞吐,就是一开始安装好,应用访问的时间明显下降,跟踪到日志输出时,发现数据读写速度降了下来。
孟凡杰
孟凡杰
其他方面: mysql分到了足够cpu资源吗?cpu被cgroup限制住的表现就是进程本身慢。 网络吞吐大吗?看一下veth pair上的数据传输,有没有重传等问题,必要的时候在开启rps/rfs加速网络传输。
孟凡杰
孟凡杰
建议可以从以下方面找一下线索: 1. 数据盘是mount的本地盘吗?如果直接写到pod的overlay fs,磁盘读写性能肯定低的,建议mount local volume做数据写入 2. 排除邻居干扰,有没有其他进程调度到同一个节点并且同时读写同一块盘 3. 监控一下磁盘IO
下一页
0
无级别码农

@孟凡杰 孟老师,还有一个问题是关于在跨地域(比如说北京和西安两个数据中心)时,ETCD的总是不断的重启,这个您有什么好建议吗?

无级别码农
回复 @孟凡杰 : 谢谢老师,这个原因找到了,是因为网络延时,导致探针在驱动pod不断的重启,我们调整了探针的时间,问题暂时可以解决
孟凡杰
孟凡杰
要看一下重启的原因,是pod的liveness probe失败导致kubelet把它强制重启了吗?你可以通过describe pod或kubelet 日志先看看原因。 跨数据中心部署,最重要的是确保多个peer之间的网络延迟低,因为无论是leader election还是log replication,都需要多次确认。 可以看一下etcd章节的性能调优部分看看有没有可参考的手段。
0
贺小皮蛋
贺小皮蛋

老师 国内云平台产商这么多  k8s还有必要成为必备技能吗? 我们公司都是购买的iaas

孟凡杰
孟凡杰
K8S的一大特性也是它成功的秘诀是它是一个面向应用的平台,它将应用实例(POD)和服务发布(Service/Service APIS)作为基础架构和应用开发的约定,将云平台从上到下打通了。因此无论是自建IaaS还是购买的IaaS,都有必要学习K8S。你的情况可以多关注应用部署,服务发布,应用监控,故障处理,弹性扩容等等。 且K8S在可见的未来都会是云平台的标准,多一技傍身,遇事不慌。
0
黑色燚HOW
黑色燚HOW
您好,这本书跟k8s指南有什么区别?对于k8s的集群用的什么方式?书中有没生产案例?
孟凡杰
孟凡杰
请参见本书序言,在京东或当当商品介绍就能看到。本书有几个方面的内容: 理论基础:我们尝试去说明Kubernetes在解决生产应用的哪些问题,比如主机运行时,负载均衡,服务治理,跨地域的高可用部署。 有一些通用案例分享穿插在不同章节,比如如何构建生产化集群,如何做多租户支持,集群联邦,入站流量管理等,运行时优化等。
0
沉默的幻想师
沉默的幻想师

@孟凡杰 您好请问 k8s 在裸物理机上有没有好的实践案例?这样部署感觉比较省事或者性能高,否则先虚拟化再在虚拟机里安装是不是太多此一举了?

沉默的幻想师
沉默的幻想师
回复 @孟凡杰 : 感谢,先学习试试。
孟凡杰
孟凡杰
早期K8S搭着虚拟化的车,依靠虚拟化的灵活性,在此基础之上构建Kubernetes控制面。 但如果你关注趋势,可以了解到Kubernetes on Bare Metal是目前的大趋势,如你所说,虚拟化多次一举。 你可以关注一下社区cluster API的实现,看看有没有现成的部署项目。其实原理不难,通过PXE boot启动并在物理机安装系统完成网络配置,下发K8S bootstrap的部署脚本运行
0
becke
becke
@孟凡杰 公司目前才用了springcloud+k8s搭建了开发环境进行试用 用于验证测试 目前还未上线 ,我们的网络配置有些问题 本地要调用到k8s中的服务进行调试 还要安装一个vpn 通过进行vpn的网络进行连接 比较麻烦。这块怎么来操作能够让开发本地能够直接访问到k8s的内部网络
becke
becke
回复 @孟凡杰 : k8s集群内的服务注册到eureka注册中心中的地址是集群内的ip地址,外部访问不了,现在只把注册中心的地址做了端口映射,外部/本地的服务可以注册上去,但是服务发现获得ip是k8s集群内部,这样网络之间是不通的。除非注册上去的是宿主机的ip地址+端口。这个就要改造注册机制才行,不清楚有没有其他方案
孟凡杰
孟凡杰
理解没错的话,你说是希望做remote debug,但是你的开发机器和集群内部的网络不能直连。你看看kubectl 的port forward能不能满足你的需求,另外本地构建一个开发集群也是不错的选择,你可以关注一下kind这个工具,或者通过kubeadm构建一个集群也不难。
0
贺小皮蛋
贺小皮蛋

@孟凡杰  老师您好,我的理解中k8s 是用来运维容器的  但是如果一个混部的物理机中存在多个容器怎么通过k8s 让低优先级的容器给高优先级的容器 让资源呢  不知道描述的对不对  谢谢

孟凡杰
孟凡杰
Kubernetes中有PriorityClass对象定义调度优先级,你可以为集群设置多个ProirtyClass,并且在Pod上添加ProirtyClass,优先级高的pod可以抢占优先级低的pod的资源。
0
开源中国胖纸
开源中国胖纸

@孟凡杰 三线城市的外包公司,主要是接项目做,会有很多个项目,前后端分离,后端是单体应用,可能会根据客户的需求做快速的调整和部署,有必要上k8s吗?我主要看重k8s简化部署、运维和监控,这个观点如何?有其它的建议吗?

孟凡杰
孟凡杰
可以,无论前端后端,都可以上Kubernetes,不管是否是单体应用,只要上Kubernetes平台,它就会给你带来如下云原生能力: 基于负载均衡和域名服务的高可用,故障转移,资源监控,滚动升级,扩缩容。
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部