K8s 开船记-全站登船:Powered by .NET Core on Kubernetes
今天 18:30 左右,我们迈出了 kubernetes 航行的关键一步——全站登船,完成了全站应用部署从 docker swarm 集群向 k8s 集群的切换,以前所未有的决心与信心重新开起这艘巨轮,而这次航行能否成功就看明天访问高峰时狂风巨浪下的表现。
部署在 k8s 上的应用会在页脚显示下面的信息,如果航行失败,"Kubernetes" 会变成 "Linux" 。
Powered by .NET Core on Kubernetes
Kubernetes 集群部署情况如下。
用了3台2核4G阿里云服务器作为 master 搭建了高可用集群,worker 节点目前用了12台4核8G阿里云服务器,明天根据负载情况看是否需要加服务器。
Kuberneres 网络插件使用的是 calico 。
DNS 服务器使用的是 coredns ,由于之前遭遇过因为 dns 解析问题造成翻船,这次部署了 nodelocaldns 在每个节点进行本机 dns 缓存(相关博文)。
Ingress Controller 使用的是 kubernetes 社区维护的 kubernetes/ingress-nginx,还有一个 nginx 公司与社区共同维护的 nginxinc/kubernetes-ingress,我们推荐使用前者(相关博文)。
博客站点的部署采用了 HPA(Horizontal Pod Autoscaler) ,基于 CPU 与 QPS 监控指标进行自动伸缩,监控指标数据来自 prometheus (相关博文)。
部署工具用的是 helm ,helm 强大的模板引擎让我们可以用一个模板搞定 90% 以上应用的部署(相关博文)。
目前一共部署了 115 个应用 pod ,56 个应用 service 。
【更新】
11:06~11:10 左右,博客后台出现 502 ,原因是运行中的博客后台 pod 健康检查失败,重新启动的 pod 也健康检查失败,博客后台暂时切换到 docker swarm 。