包年购买K8S集群的省钱之道

本文涉及的产品
文件存储 NAS,50GB 3个月
日志服务 SLS,月写入数据量 50GB 1个月
公网NAT网关,每月750个小时 15CU
简介: 是我利用5000块代金券包年购买K8S集群的过程分享,希望对大家有所帮助。

前段时间我有幸拿到了一张5000元的阿里云代金券,在此一并感谢为我申请代金券的阿里云运营同学。我准备用这笔费用包年购买一个阿里云K8S集群。但正常情况下5000元包年购买一台符合K8S集群创建要求的服务器都有一定困难,别说除了服务器之外还要购买一堆网络和存储资源了,不过最后我还是成功的完成购买,下面就分享一下购买的过程供大家参考。

在创建阿里云K8S集群时有两种集群模式,一种是托管集群,一种是专有集群。专有集群需要至少三台额外的Master节点,托管集群无需准备Master节点,因此我选择托管集群模式,在选择托管集群模式之后还有一个Pro版和标准版的选择,Pro版主要用于生产环境,有明确的SLA承诺,而标准版主要用于开发测试环境,我这个环境就是用来进行测试的,因此选择标准版。

在创建托管K8S集群时需要用到的计算、网络、存储资源包括:

  • worker节点、需要至少两台4C及以上配置的企业级规格ECS,典型的规格包括G、C、R系列等,不支持N、T系列等共享规格实例,ECS资源可以提前购买在创建集群时选择现有实例,也可以在创建集群时直接购买。
  • 负载均衡、通常要创建两个SLB负载均衡,阿里云的K8S集群本身的API管控需要一台SLB,集群的对外提供服务入口的Ingress组件需要一个SLB。其中用于集群管控的SLB只能在创建集群时一并购买,不支持事后指定,用于Ingress的负载均衡可以在事后通过手工创建Ingrees来指定。
  • EIP、需要两个EIP,分别指向上面提到的两个SLB,负责API管控的SLB及其对应的EIP在创建集群时自动购买和绑定,无需提前购买。
  • NAT网关、在阿里云的K8S集群内部 ,服务请求的处理可以通过SLB进行转发,而假如容器组(POD)要主动对外网发起访问则需要通过NAT网关进行SNAT转发。NAT网关的另一个应用场景是容器镜像的拉取,除了用NAT网关,假如Worker节点在购买时选择了公网IP或绑定了EIP,容器镜像的拉取还支持直接通过worker节点的公网出口进行处理,无需NAT网关。假如不是经常需要POD直接对外网发起请求,包年一个NAT网关实例就有些浪费了,可以选择购买一个NAT网关的按量计费资源包,只在需要的时候开启NAT网关。
  • NAS存储资源包、建议采用速型的NAS资源包,相对于通用型的NAS,极速型NAS能提供更及时的IO响应。
  • SCU存储资源包、在像关系型数据库这样的应用场景,块存储比NAS更为合适一些,建议购买SCU存储容量包,准备随时按需为集群提供块存储资源。
  • SLS资源包、在K8S运行过程中会产生大量的日志信息,其中就包括用户访问集群服务的日志信息,以及集群各类资源创建时留下的系统信息,这些信息都将存储到阿里云的SLS日志服务中,可以购买SLS资源包进行抵扣。

在准备上述资源的过程中,可以充分利用阿里云的一些优惠活动,例如在双十一期间新老客户均可享受4折购买R5类型的2C、4C、8C规格实例、小规格的SLB实例包年5折(限一单)、极速型NAS资源包1折优惠等,利用这些优惠资源可以极大的降低K8S集群的构建成本。

对于开发测试环境来说,还可以通过购买一台包年实例+一台按量付费实例来创建集群,在集群创建完毕后再移除按量计费实例的办法来进一步降低集群的日常运行开销,一旦需要投入大量资源时可以随时添加按量付费或者抢占型的实例来临时扩充集群资源。

总之,在采取了上述策略之后,我利用5000块的代金券成功的包年购买了一个K8S托管集群,以下是创建过程中的步骤和关键选项:
一、包年购买一台ECS服务器,为了进一步降低成本我选择在双十一期间在华北三地域创建一台R5类型的ECS实例,实例的规格为4C、32G、100GB云盘、默认1Mbps公网带宽(在购买完成后更改为按流量计费)。

二、 开通一台抢占型实例,规格和包年实例相同,创建集群之后就释放掉。

三、 进入阿里云K8S集群管理控制台,创建集群,选择托管集群——标准版,计费模式选择包年包月,这样一来用于API管控的SLB将会以包年包月的方式创建。

1.png

四、Kubernetes版本和容器运行时,正常情况下选择最新的Kubernetes版本即可,对于容器运行环境没有特殊要求的客户选择默认的Containerd即可,安全沙箱是给对安全有更高要求的客户准备的,可以提供更好的容器隔离性。假如采用了Containerd运行时,在宿主机上需要使用crictl命令替代docker命令。

2.png

五、专有网络和网络插件,专有网络选择目标地域下专有网络即可,网络插件的选择要看对安全和容量密度的需求,默认的Flannel可以提供更高的容器密度,但缺少网络策略等安全功能,在性能上也不如Terway,选择Terway虽然可以使用网络安全策略但单台ECS能够提供的POD数量受到服务器弹性网卡数量的限制,通常情况下单台服务器能够提供的POD数量要少于Flannel插件,对于一般的开发测试需求选择Flannel即可。
3.png

六、虚拟交换机的选择、为了未来能够使用该VPC下的所有可用区,建议在选择交换机的过程中尽可能覆盖所有可用区。

七、节点IP数量、POD网络CIDR、Service网络CIDR,节点IP数量直接选择最大的256即可,毕竟我们要搭建的是开发测试环境,POD网络CIDR和Service网络CIDR通常情况下保持默认即可,除非推荐的网络地址存在冲突情况。

4.png

八、SNAT配置和API Server访问,因为可以随时根据需要来开通NAT网关,此处选择暂不配置SNAT,API Server 选择最低规格的SLB实例并开启EIP暴露API Server,这样可以方便随时在外网访问API Server,在创建集群的过程中将自动的开通一台简约I型的包年包月内网SLB,并开通一个EIP绑定到该SLB上。

5.png

九、RDS白名单、安全组、集群删除保护,我的环境中不涉及RDS因此没有选择,安全组选择默认的自动创建企业级安全组,建议勾选集群删除保护。

6.png

十、点击下一步,节点池配置,选择现有节点,选择之前创建的两台ECS服务器,在此处还可以根据需要设置服务器的操作系统以及登录用的密钥和密码。

7.png

十一、点击下一步,组件配置,首先是Ingress和服务器发现的选项,这里我选择不安装Ingress,可以在集群创建完成后进行手工创建。服务发现默认勾选即可。
8.png

十二、存储插件、监控插件、报警配置选择默认即可无需更改。
9.png

十三、日志服务和控制屏幕组件日志,我的选择是全部勾选,因为假如不在这里选择开通,在集群创建之后手工开通是比较困难的。为了降低日志的存储开销,我们可以在集群创建完毕之后进入SLS服务器控制台,缩短一下日志的保留时间。
10.png

十四、完成集群配置,在完成上述选项之后,点击完成配置将看到一个配置确认页面,确认所有的配置无误后就可以创建集群了。等集群创建完成之后还需要完成一些后续收尾工作,包括释放抢占型实例、Ingress创建、SLS日志保留时间的设置等。

十六、首先释放临时的ECS实例,进入集群控制台,单击进入刚创建的集群控制台,在左侧的菜单中找到集群信息——节点管理——节点配置页面。在对应实例的右侧点击更多——移除,在随后的弹出页面中选择排空该节点上的POD。这样该节点将被从集群中移除,并自动进入关机状态,在容器集群控制台看不到该节点后再进入ECS控制台,找到这台关机的ECS实例手工释放即可。
11.png

十五、购买SLB和EIP,包年购买一个内网SLB,因为这样才能避免在包年购买SLB的同时包年购买公网带宽。再开通一个按量付费的EIP指向该SLB。

十六、手工开通按量付费Ingress,进入k8s集群的管理控制台,选择刚创建的集群,在左边菜单栏中找到运维管理——组件管理。在右边的组件列表中找到Nginx Ingress选择安装,这样就开通一个按量付费的Ingress SLB,但这不是我们要的最终结果,我们只是要借助这一过程获得一个完整的Nginx Ingress创建Yaml文件。
12.png

十七、获取Nginx Ingress的YAML文件,在Nginx Ingress 创建完成后将可以获取该组件的YAML文件,将该文件内容保存到本地的ingress.yaml文件中。

13.png

十八、在本地部署kubectl 命令,添加kubeconfig文件,kubecongfig文件的内容在集群的连接信息处获取。
15.png

十九、使用kubectl delete -f ingress.yaml 删除临时创建的Nginx Ingress。

二十、修改ingress.yaml ,在metadata部分添加有关SLB的注解信息,令其使用之前创建的内网SLB。
添加内容的模版如下:
annotations:

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "lb-XXXXX "
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"

这两句注解的意思是使用指定ID的负载均衡创建Ingress,并覆盖之前SLB上的已有配置。

负载均衡的ID可以去负载均衡控制台查看。

16.png

二十一、使用kubectl create -f ingress.yaml 重新创建Ingress并使用预先创建的包年包月SLB。

二十二、修改日志存储周期,去到SLS控制台,找到新创建的日志Project,进入该Project,根据需要调整不同logstore的保存时间,把省钱进行到底。

17.jpg

使用这种方式来创建K8S集群,日常的扣费主要来两个EIP的实例费和流量费,两个EIP实例费每年约为300元,流量费主要由API Server的结果返回和worker节点的镜像拉取请求(镜像的传输流量属于上行流量,免流量费)两部分构成,这两部分流量都不会太高,基本上可以忽略不计。

以上就是我利用5000块代金券包年购买K8S集群的过程分享,希望对大家有所帮助。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
2月前
|
人工智能 算法 调度
阿里云ACK托管集群Pro版共享GPU调度操作指南
本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
254 1
|
2月前
|
弹性计算 监控 调度
ACK One 注册集群云端节点池升级:IDC 集群一键接入云端 GPU 算力,接入效率提升 80%
ACK One注册集群节点池实现“一键接入”,免去手动编写脚本与GPU驱动安装,支持自动扩缩容与多场景调度,大幅提升K8s集群管理效率。
231 89
|
7月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
ACK One 的多集群应用分发,可以最小成本地结合您已有的单集群 CD 系统,无需对原先应用资源 YAML 进行修改,即可快速构建成多集群的 CD 系统,并同时获得强大的多集群资源调度和分发的能力。
280 9
|
7月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
本文介绍如何利用阿里云的分布式云容器平台ACK One的多集群应用分发功能,结合云效CD能力,快速将单集群CD系统升级为多集群CD系统。通过增加分发策略(PropagationPolicy)和差异化策略(OverridePolicy),并修改单集群kubeconfig为舰队kubeconfig,可实现无损改造。该方案具备多地域多集群智能资源调度、重调度及故障迁移等能力,帮助用户提升业务效率与可靠性。
|
9月前
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
840 33
|
9月前
|
Kubernetes 开发者 Docker
集群部署:使用Rancher部署Kubernetes集群。
以上就是使用 Rancher 部署 Kubernetes 集群的流程。使用 Rancher 和 Kubernetes,开发者可以受益于灵活性和可扩展性,允许他们在多种环境中运行多种应用,同时利用自动化工具使工作负载更加高效。
488 19
|
9月前
|
人工智能 分布式计算 调度
打破资源边界、告别资源浪费:ACK One 多集群Spark和AI作业调度
ACK One多集群Spark作业调度,可以帮助您在不影响集群中正在运行的在线业务的前提下,打破资源边界,根据各集群实际剩余资源来进行调度,最大化您多集群中闲置资源的利用率。
|
9月前
|
Prometheus Kubernetes 监控
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
300 0
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
|
11月前
|
缓存 容灾 网络协议
ACK One多集群网关:实现高效容灾方案
ACK One多集群网关可以帮助您快速构建同城跨AZ多活容灾系统、混合云同城跨AZ多活容灾系统,以及异地容灾系统。
|
10月前
|
运维 分布式计算 Kubernetes
ACK One多集群Service帮助大批量应用跨集群无缝迁移
ACK One多集群Service可以帮助您,在无需关注服务间的依赖,和最小化迁移风险的前提下,完成跨集群无缝迁移大批量应用。

热门文章

最新文章

推荐镜像

更多