阿里云充值折扣 阿里云容器服务ACK部署教程
别慌,ACK不是外星语——先搞懂你在干啥
很多人点开阿里云控制台,看到「容器服务 ACK」四个字,第一反应是:这玩意儿是不是得先背三本《Kubernetes权威指南》才能点下一步?其实大可不必。ACK(Alibaba Cloud Container Service for Kubernetes)说白了,就是阿里云帮你把K8s集群“打包+托管+美颜”好了——你不用操心etcd存哪儿、apiserver怎么高可用、节点宕机怎么自愈,只管把应用塞进去,它负责稳稳托住。
类比一下:如果K8s是辆手动挡越野车,你自己得调离合、换挡、盯转速、防熄火;ACK就是给你配好自动驾驶+全地形模式+4S店终身保养的顶配版——你只管导航输入「我要跑通一个Nginx」,它连油门都帮你踩匀了。
动手前,请确认三件套已就位
1. 阿里云账号 & 实名认证
别笑,真有人卡在这一步。没实名?控制台某些资源(比如ECS按量付费节点)直接灰掉。顺手检查下是否开通了「容器服务ACK」和「云服务器ECS」——这两个在控制台顶部搜索栏输名字就能一键开通,5秒搞定,不收钱,纯激活。
2. 阿里云CLI(aliyun CLI)装好没?
网页控制台点点点当然可以,但后面要敲kubectl、查日志、改配置,没CLI就像炒菜不用锅铲——理论上徒手能搅,实际会糊锅。Mac用户:brew install aliyun-cli;Windows用户:去阿里云CLI官网下安装包;Linux用户:curl -o aliyun-cli https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64 && chmod +x aliyun-cli && sudo mv aliyun-cli /usr/local/bin/。装完执行aliyun configure,填AccessKey ID/Secret(控制台右上角头像→AccessKey管理里拿),区域选cn-hangzhou(杭州)最稳,别手抖选成us-west-1——除非你真在旧金山喝咖啡。
3. kubectl 和 kubeconfig —— 你的“集群遥控器”
ACK集群建好后,阿里云会生成一份kubeconfig文件(本质是连接凭证+集群地址)。千万别手写!进ACK控制台→集群列表→点你刚建的集群→右上角「获取KubeConfig」→选「本地文件」→下载。然后执行:mkdir -p ~/.kube && mv your-download-file ~/.kube/config。验证:运行kubectl get node,如果返回一堆Ready状态的节点,恭喜,遥控器已对频成功;如果报错connection refused,大概率是kubeconfig路径错了,或者集群还没彻底初始化完(等2分钟再试)。
三步建集群:比点外卖还快
Step 1:选「专有版」还是「托管版」?
新手闭眼选「托管版」(Managed Kubernetes)。专有版=你要管Master节点(API Server、Scheduler这些),托管版=阿里云替你管,你只管Worker节点(跑Pod的地方)。省心指数:托管版★★★★★,专有版★★☆☆☆(适合K8s极客或等保合规硬需求)。
Step 2:命名+地域+可用区
集群名称别叫test或cluster1,建议带环境和日期,比如prod-web-202405-ack。地域选离你用户最近的(比如华南用户选深圳cn-shenzhen),可用区至少选2个(如shenzhen-b和shenzhen-c),防止单点故障——别学某公司,所有节点全塞在一个可用区,光缆被施工队挖断,整个App挂了4小时。
Step 3:节点配置——别乱堆CPU
Worker节点规格:起步推荐ecs.g7.large(2核8G),够跑3~5个中型服务。别一上来选ecs.c7.8xlarge(32核256G)——钱花得冤枉,资源还容易闲置。系统盘选ESSD云盘(性能稳),数据盘按需挂(比如日志目录单独挂盘)。最关键一步:勾选「自动为节点安装云监控插件」——否则后面看CPU水位图全是问号。
点击「创建」,盯着进度条。通常5~8分钟,状态从「创建中」变「运行中」。此时回到控制台,点集群→「节点管理」,应看到3个节点(默认3节点高可用),状态全绿。再切到「工作负载」→「无状态」,空空如也——别慌,这是你即将征服的处女地。
部署第一个应用:Nginx,但要有灵魂
写个带注解的YAML,别只抄hello world
创建nginx-deploy.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-demo
labels:
app: nginx-demo
spec:
replicas: 2
selector:
matchLabels:
app: nginx-demo
template:
metadata:
labels:
app: nginx-demo
annotations:
# 关键!让SLB自动识别这个Pod的健康状态
service.beta.kubernetes.io/alicloud-loadbalancer-health-check-type: "http"
service.beta.kubernetes.io/alicloud-loadbalancer-health-check-uri: "/healthz"
spec:
containers:
- name: nginx
image: nginx:1.25-alpine
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /healthz
port: 80
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /readyz
port: 80
initialDelaySeconds: 5
periodSeconds: 5
---
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
selector:
app: nginx-demo
重点解析:
• livenessProbe和readinessProbe不是摆设!没它们,Pod挂了K8s还傻傻转发流量;
• 注解alicloud-loadbalancer-health-check-xxx是ACK特供——告诉阿里云SLB:“请用HTTP探活,别用TCP,路径是/healthz”;
• type: LoadBalancer会自动创建公网SLB,IP在Service详情页「访问入口」里找。
部署 & 验证:三行命令定乾坤
kubectl apply -f nginx-deploy.yamlkubectl get deploy,svc,pod -o wide(确认DEPLOYMENT READY 2/2,SERVICE有EXTERNAL-IP,POD状态Running)curl -I $(kubectl get svc nginx-svc -o jsonpath='{.status.loadBalancer.ingress[0].ip}') (返回HTTP 200即成功)
如果curl超时?先kubectl describe svc nginx-svc看Events里有没有报错;再kubectl logs -l app=nginx-demo查容器日志——大概率是镜像拉取失败(私有仓库没配Secret)或端口映射错了。
进阶:让应用真正“在线”
域名接入:SLB + DNS,告别IP记忆
阿里云充值折扣 SLB分配的IP是动态的(集群重建可能变)。立刻去阿里云「云解析DNS」控制台,添加A记录,主机名填web.yourdomain.com,记录值填SLB IP。再回ACK,在Service YAML里加注解:service.beta.kubernetes.io/alicloud-loadbalancer-address-type: internet(确保绑公网IP,非内网)。
日志与监控:别等炸了才看
ACK默认集成SLS(日志服务)。进ACK控制台→集群→「日志服务」→开启。选「采集Kubernetes标准输出」,设置日志库名(如ack-prod-logs)。5分钟后,去SLS控制台→对应Project→Logstore,搜app: nginx-demo,实时日志哗哗流——比SSH进容器tail -f优雅100倍。
最后送你三条血泪经验
① 别在default命名空间狂建东西。新建命名空间:kubectl create ns prod,所有YAML加namespace: prod。好处:权限隔离、资源配额可控、删集群时不误删测试库。
② Secret别硬编码。密码、数据库连接串全用kubectl create secret generic db-secret --from-literal=password=xxx存,YAML里通过envFrom: secretRef注入。否则Git里一提交,运维小哥半夜三点被电话叫醒改密码。
③ 每次升级前,先备份。导出关键资源:kubectl get all,secret,configmap -n prod -o yaml > backup-prod-$(date +%F).yaml。ACK控制台也有「集群快照」功能,但本地备份才是亲儿子。
写到这儿,你已经比90%只看文档不实操的人走得远。ACK没有魔法,只有清晰的步骤+及时的反馈+一点点耐心。下次遇到报错,别急着搜「K8s Error 1001」,先kubectl describe看Events,再kubectl logs看日志——问题往往藏在第三行。现在,去控制台,建个集群,跑个Pod,然后泡杯茶,看着那个绿色的「Running」发会儿呆。你刚刚,亲手启动了一个微型云原生世界。

