我们为什么需要K8S 我们用最常用的一个例子LAMP(Linux/Apache/Mysql/PHP or Python or perl)搭建一個負載均均衡的多節點的網站,假如不考慮mysql環節,我們只考慮負載均衡和多節點的問題。 1:如果我们在本地数据中心进行产品部署的话,我们需要那些服务 负载均衡 LB 扩容和缩放 auto scaling 高可用 HA,一個節點挂掉,如果有新的節點自動產生take over他的服務 日志如何同步到一個中心? Docker部署或者裸程序 反向代理服務 那么问题来了,几乎所有的服务都需要我们自己部署和搭建,我们的基础设施,完全依赖裸的操作系统,我们要全部搭建,举几个最简单的例子:如何决定部署多少个Docker容器?如何让这些容器的服务负载均衡?每个容器里面的日志如何同步?任何一个docker容器服务挂掉该如何处理? 我们操作系统的优化,硬件和网络高可用性,等等目前这些问题都需要我们在本地数据中心来实现,无论是复杂度还是需要硬件成本和技术都是非常高的。 2:如果在aws云上我们使用服务 LB(health check等配置) autoscaling cloudwatch logs 创建Lauch configuration 创建image 里面包含我们应用程序或者包含docker 日志的同步可以同步到elasticsearch服務 反向代理(使用lb的或者image裏面自己搭建nginx根據需要) 我们发现如果我们使用aws来构建我们的服务的话,这里面有很多成熟的服务我们可以拿来使用,这里面我们需要完成各个服务的配置,如果我们使用alicloud或者azure等各个服务平台的配置都是不一样的,即便我们有devops,我们使用terraform和assible来做devops也需要很多不同的代码,跨平台的移植非常麻煩 3. 使用K8s 是否需要負載均衡?是,k8s service本身就是負載均衡 是否需要考慮需要節點的擴容和縮放?是,K8s pod本身就支持autoscaling擴容和縮放 日志如何同步?可以直接使用K8s的存儲管理,可以不用第三方的服務 是否支持容器?一直都是以容器為基本單位就行部署的 系統的可移植性如何?你的程序無論在本地數據中心的K8S還是在各個云服務平臺的k8s上,devops的代碼的改動幾乎沒有多少,完全是跨平臺的。無論是開發者還是devops都可以聚焦於你的業務實現 6.反向代理,直接使用service ingress 就可以很容易解決 總之,k8S提供了你需要的完美的一體化的解決方案,所有的這些服務都集成在K8S内部,如果使用一些定制化的k8S平臺,比如openshit還集成了更多的開發和devops的工具在裏面,可以更快的開發和測試和部署,讓我們的用戶效率大大提高。……

阅读全文