联系我们

k8凯发官网

您现在所在的位置: > k8凯发官网 >

用户数从 0 到亿我的 K8s 踩坑血泪史

来源:未知 发布时间:2019-09-20 20:13

  :容器服务 Kubernetes 是目前炙手可热的云原生基础设施,作者过去一年上线了一个用户数极速增长的应用:该应用一个月内日活用户从零至四千万,用户数从零到一亿的裂变式增长,充分享受了容器服务快速简便的扩容操作和高可用特性。作者使用容器服务 Kubernetes 集群将公司内系统完全上云 1 年多,本篇文章记录了其中的踩坑与优化记录。

  创建集群时,做好规划,选择优化好的集群配置,可以大大减少后期运维工作,其中部分集群的配置在建立后再也没法修改或者修改极其麻烦。

  Terway 是阿里云容器服务自研的网络插件,功能上完全兼容 Flannel,如果保守,还是使用 Flannel

  注: K8s 每次安全漏洞几乎都与 ApiServer 有关,对于线s 集群,要及时升级补丁,或者不开放公网 apiserver,使用严格的安全组和访问控制。

  master 机器的存储建议高性能的 50-100G SSD,因为会运行 ETCD,操作系统占用不超过 8G。

  通过控制台建立集群,阿里云容器服务提供的非常简易的一键部署集群功能,通过向导完成 K8S 集群的建立;

  按照以上规划设置 master,worker 节点,挂载 /var/lib/docker 到数据盘;

  设置合理的 Pod 网络 CIDR, Service CIDR ip 网段;

  设置合理的安全策略,是否暴露 apiserver(需要直接云效发布的,需要开放公网暴露,并做严格的访问控制);

  ingress 选择安全,可以使用内网,如果需要公网,可以在控制台很方便建立,同时做好访问控制;

  kube-proxy 模式,因为 iptables 模式在更新一条规则时把 iptables 锁住引发的性能问题,建议使用 IPVS 模式;

  节点 POD 数量,默认 128 太大,一个节点不可能部署这么多,建议改为 64;

  节点服务端口访问 (NodePort,SLB),可以适当扩大,默认的也一般足够用。

  因为容器服务的 Cloud Controller Manager 会同步删除 service 建立关联的 SLB,为了防止 service 配置修改误删除 slb 故障,并导致域名、安全等配置需要修改的坑,强烈建议 service 与 slb 解耦,service 采用 NodePort 的方式,slb 另外建立后端服务器指向集群节点,如果需要透传真实 IP,并考虑负载均衡,需要遵守一定的配置规则和方法,参考这个文章()。

  然后在负载均衡管理页面,选择后端服务器指向集群的 worker 机器,设置端口为以上服务的端口:32653,完成配置,这样在集群 service 修改或者删除重建的时候,slb 不会被集群的 CCM 删除,不会涉及到域名,安全等配置修改。同时,可以设置一些策略,需要升级修改服务配置时,分批切流等。

  阿里云容器服务控制台虽然是云上新产品,提供了极其简单的一键部署功能,以及简便的控制台管理。过去一年中,笔者一路见识阿里云容器服务控制台从简陋向强大的转变过程,虽然多次踩坑,但阿里云容器服务同学认真负责和极好的服务态度让人佩服。

  容器服务管理控制台还需要更多的考虑实际运维需求,并紧密结合已有的云产品,比如云效、EDAS、云监控、日志服务等,以应用为单位,提供更好服务。

网站首页|k8凯发官网|凯发官网|凯发k8国际|