成本优化实战用阿里云抢占式实例Ubuntu搭建高可用K8S 1.18学习环境对于学生、个人开发者或小型团队来说搭建一个Kubernetes学习环境往往面临两大难题技术门槛高和成本压力大。传统云服务器按量付费模式下一个三节点的K8S集群每月成本可能高达数百元这对于学习用途来说显然不够经济。本文将介绍如何利用阿里云的抢占式实例和Ubuntu系统以最低成本搭建一个完全可用的Kubernetes 1.18集群整套方案月均成本可控制在100元以内。抢占式实例是云计算平台提供的特殊计费模式实例价格通常只有按量付费实例的10%-20%特别适合可容忍中断的学习、开发和测试环境。结合阿里云的停机不收费策略和按流量计费网络配置我们可以进一步优化成本结构。下面就从实例选型、网络配置到集群搭建一步步拆解这个高性价比方案。1. 资源规划与成本控制策略1.1 抢占式实例选型技巧在阿里云控制台的抢占式实例市场中我们需要关注几个关键参数实例规格2核4G的ecs.c6.large是最佳平衡点既能满足K8S基础组件运行需求价格又足够低廉地域选择不同地域的抢占式实例价格差异可达30%建议优先选择华北2北京或华东2上海出价策略设置市场价格110%的溢价可大幅降低实例被回收概率系统镜像Ubuntu 18.04 LTS是最佳选择内核版本(4.15)完美支持Docker和K8S价格对比表以华东1为例实例类型按量付费(元/小时)抢占式实例(元/小时)节省比例ecs.c6.large0.360.0780.5%ecs.g6.large0.480.0981.2%1.2 网络与存储成本优化网络和存储往往是隐藏的成本杀手需要特别注意# 创建按量付费云盘高效云盘40GB aliyun ecs CreateDisk --RegionId cn-hangzhou --ZoneId cn-hangzhou-g --Size 40 --DiskCategory cloud_efficiency --Encrypted false关键配置建议带宽计费选择按流量计费峰值带宽设为5Mbps足够学习使用安全组预先配置好6443、2379-2380等K8S必要端口云盘类型高效云盘性价比最高系统盘40GB足够使用2. 系统环境准备与调优2.1 Ubuntu系统基础配置三台机器(master/node1/node2)需要统一进行以下配置# 修改hostname分别在三个节点执行 hostnamectl set-hostname master01 hostnamectl set-hostname node01 hostnamectl set-hostname node02 # 统一hosts配置 cat /etc/hosts EOF 172.24.88.146 master01 172.24.88.148 node01 172.24.88.147 node02 EOF系统调优参数参数推荐值作用说明vm.swappiness1减少swap使用fs.inotify.max_user_watches524288提升文件监控能力net.ipv4.tcp_tw_reuse1提高TCP连接复用2.2 Docker环境配置使用阿里云镜像源加速安装# 安装依赖包 apt-get update apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common # 添加Docker官方GPG密钥 curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - # 设置稳定版仓库 add-apt-repository \ deb [archamd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $(lsb_release -cs) \ stable # 安装Docker CE apt-get update apt-get install -y docker-ce docker-ce-cli containerd.io关键配置项// /etc/docker/daemon.json { registry-mirrors: [https://你的阿里云镜像加速地址.mirror.aliyuncs.com], exec-opts: [native.cgroupdriversystemd], log-driver: json-file, log-opts: { max-size: 100m }, storage-driver: overlay2 }3. Kubernetes集群部署实战3.1 Master节点初始化使用kubeadm初始化集群# 配置阿里云Kubernetes镜像源 apt-get update apt-get install -y apt-transport-https curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - cat /etc/apt/sources.list.d/kubernetes.list EOF deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOF # 安装kubeadm、kubelet和kubectl apt-get update apt-get install -y kubelet1.18.20-00 kubeadm1.18.20-00 kubectl1.18.20-00 # 初始化Master节点 kubeadm init \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.18.20 \ --pod-network-cidr192.168.0.0/16初始化成功后按照提示配置kubectlmkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config3.2 网络插件安装Calico是最轻量级的选择kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml验证安装watch kubectl get pods -n kube-system # 等待所有pod变为Running状态4. 成本监控与自动化管理4.1 费用监控与预警设置在阿里云费用中心设置预算告警进入费用中心 预算管理创建新预算设置月预算金额如100元配置80%阈值告警通知关联抢占式实例相关资源4.2 实例中断处理方案抢占式实例可能被回收需要做好数据持久化# persistent-volume.yaml apiVersion: v1 kind: PersistentVolume metadata: name: nas-pv spec: capacity: storage: 20Gi accessModes: - ReadWriteMany nfs: server: 172.24.88.100 path: /k8s_volumes4.3 自动化运维脚本创建实例自动恢复脚本#!/bin/bash # check_instance.sh INSTANCE_ID$(curl -s http://100.100.100.200/latest/meta-data/instance-id) REGION$(curl -s http://100.100.100.200/latest/meta-data/region-id) # 检查实例状态 status$(aliyun ecs DescribeInstances --InstanceIds [\$INSTANCE_ID\] --RegionId $REGION | jq -r .Instances.Instance[0].Status) if [ $status ! Running ]; then # 重新创建实例 aliyun ecs RunInstances --ImageId ubuntu_18_04_64_20G_alibase_20210630.vhd \ --InstanceType ecs.c6.large \ --SecurityGroupId sg-bp15ed6xe1yxeycg7o \ --VSwitchId vsw-bp1s5fnvk4gn2tws0zli \ --InstanceChargeType PostPaid \ --SpotStrategy SpotAsPriceGo \ --KeyPairName k8s-key \ --Tags [{Key:Name,Value:k8s-node}] fi设置cron定时任务crontab -e # 每30分钟检查一次 */30 * * * * /root/check_instance.sh /var/log/instance_check.log 21实际使用中发现抢占式实例的平均运行时间可达7-10天配合上述自动化方案可以确保学习环境的持续可用性。将关键应用部署为Deployment并设置多副本即使单个节点被回收也不会影响服务可用性。