2017:Kubernetes的胜利之年
2017年是容器编排领域的分水岭。Docker Swarm、Apache Mesos、Kubernetes三大方案中,Kubernetes凭借Google的生态背景和CNCF基金会的推动,迅速赢得市场。2017年下半年,越来越多的企业开始将生产环境从物理机/虚拟机迁移到K8s集群。
旭日神州在2017年为多家企业客户提供了容器化改造和K8s集群搭建服务,本文分享实战经验。
为什么选择Kubernetes
声明式API
K8s采用声明式管理——你只需要描述"我期望系统处于什么状态",K8s会自动调整实际状态向期望状态收敛。这与传统脚本式运维有本质区别,大大降低了大规模集群的管理复杂度。
丰富的生态
2017年围绕K8s的生态已经非常丰富:Helm包管理、Prometheus监控、Istio服务网格、Rook存储……企业几乎可以在K8s上找到任何需要的云原生组件。
生产环境落地要点
集群规划
生产环境K8s集群至少需要3个Master节点(etcd分布式部署),Worker节点数量根据业务负载弹性扩展。网络插件推荐Calico,存储方案根据场景选择——有状态服务用Ceph,无状态服务用emptyDir即可。
应用迁移
将传统应用迁移到K8s不是简单的"打包成镜像"。需要改造的点包括:配置外置化(使用ConfigMap/Secret)、日志输出到stdout、健康检查(livenessProbe/readinessProbe)、优雅终止(preStop钩子)。这些改造看似琐碎,但决定了应用在容器环境中是否真正稳定运行。
资源管理
每个容器必须设置requests和limits。requests决定调度,limits限制资源上限。没有这些设置,节点资源很容易被个别容器吃光,引发雪崩。
IT运维外包视角
K8s的学习曲线很陡。很多企业尝试自建K8s集群后发现,运维复杂度反而上升了——节点故障排查、网络策略调试、存储挂载问题……建议中小规模企业选择托管K8s服务(阿里云ACK、腾讯云TKE),将底层集群运维交给云厂商,团队聚焦在应用层。对于需要私有化部署的大型企业,建议与有丰富K8s实施经验的IT运维外包团队合作,避免在踩坑中消耗宝贵的工程资源。