0 基础自学阿里云运维 K8s 全流程指南(带注释命令 + 可落地练习项目)
Kubernetes(简称K8s)是Google开源的容器编排平台,作为云原生技术的核心标准,能够实现容器化应用的自动化部署、扩缩容及运维管理。其名称"K8s"是"Kubernetes"的缩写形式,用数字8替代了中间的8个字母"ubernete"。


核心学习原则:0 基础严禁跳步,先夯实前置基础→本地无成本练手吃透核心→阿里云 ACK 集群实战→企业级项目落地,每个阶段必须完成实操再进入下一阶段,全程命令附带逐行注释,新手可直接复制执行。
第一阶段:前置知识储备(预计 2-3 周,K8s 学习的基石,必须 100% 掌握)
K8s 是基于 Linux 和容器的集群管理系统,跳过前置知识直接学习会完全无法理解,以下是必须掌握的核心内容。
1. Linux 系统基础(核心中的核心)
必须掌握知识点
- 系统基础操作:文件 / 目录管理、用户权限、软件包安装
- 网络基础:端口、防火墙、TCP/IP、DNS、路由
- 核心技能:vim 编辑器使用、shell 基础脚本编写、系统资源查看、进程管理
带注释核心命令(新手必练)
# 1. 文件目录管理核心命令
ls -l # 长格式列出目录内容,显示权限、所有者、大小、修改时间等信息
cd /opt # 切换到/opt目录,绝对路径切换
mkdir -p /data/k8s # 递归创建目录,即使父目录不存在也不会报错
rm -rf /tmp/test # 强制递归删除文件/目录(新手慎用!先在测试目录练习)
cp /root/test.yaml /data/k8s/ # 复制文件到目标目录
mv /data/k8s/test.yaml /data/k8s/deploy.yaml # 移动/重命名文件
# 2. 权限管理核心命令
chmod 755 /data/start.sh # 给脚本设置权限:所有者读写执行,组和其他用户读执行
chown -R root:root /data/k8s # 递归修改目录的所有者和所属组为root
useradd k8suser # 创建普通用户,日常操作避免直接用root,降低误操作风险
# 3. 网络与进程管理
systemctl stop firewalld # 临时关闭防火墙(测试环境用,生产环境需配置规则)
systemctl disable firewalld # 禁止防火墙开机自启
netstat -tulnp # 查看系统所有监听的端口,对应进程PID和名称
ps -ef | grep docker # 查看包含docker关键字的进程详情
top # 实时查看系统CPU、内存、进程资源占用情况
# 4. 基础shell脚本(必练,后续运维自动化核心)
vim clean_log.sh # 创建日志清理脚本
# 脚本内写入以下内容:
#!/bin/bash
# 功能:清理7天前的日志文件
find /var/log/ -name "*.log" -mtime +7 -exec rm -rf {} \;
echo "日志清理完成"
# 赋予执行权限
chmod 755 clean_log.sh
# 执行脚本
./clean_log.sh
阶段小练习
- 准备一台 2 核 4G 的阿里云 ECS(CentOS 7/8 或 Ubuntu 20.04),完成上述所有命令实操
- 编写一个 shell 脚本,实现:查看系统磁盘使用率,超过 80% 则输出告警信息到日志文件
2. Docker 容器技术基础
K8s 的底层是容器运行时,Docker 是最主流的容器 runtime,必须掌握容器核心逻辑。
必须掌握知识点
- 核心概念:镜像、容器、仓库、Dockerfile
- 核心操作:镜像拉取 / 构建 / 推送、容器启动 / 停止 / 进入 / 日志查看
- 进阶操作:Docker 数据卷、容器网络、镜像优化
带注释核心命令(新手必练)
# 1. Docker安装(阿里云源,国内访问快,CentOS系统)
# 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加阿里云Docker软件源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装Docker社区版
yum install -y docker-ce docker-ce-cli containerd.io
# 启动Docker并设置开机自启
systemctl start docker
systemctl enable docker
# 验证安装是否成功,输出版本号即正常
docker version
# 2. 镜像核心操作
docker pull nginx:latest # 从官方仓库拉取最新版nginx镜像,latest为版本标签
docker images # 查看本地所有镜像,显示仓库名、标签、镜像ID、大小、创建时间
docker rmi nginx:latest # 删除本地nginx镜像
docker tag nginx:latest registry.cn-hangzhou.aliyuncs.com/你的命名空间/nginx:v1 # 给镜像打标签,适配阿里云ACR镜像仓库
# 3. 容器核心操作
# 启动一个nginx容器,核心参数注释
docker run -d \ # -d 后台运行容器,返回容器ID
--name nginx-test \ # 给容器设置名称,方便后续管理
-p 8080:80 \ # 端口映射,宿主机8080端口映射到容器内80端口
-v /data/nginx/html:/usr/share/nginx/html \ # 数据卷挂载,宿主机目录映射到容器内目录,容器删除数据不丢失
nginx:latest # 容器使用的镜像名称:版本
docker ps # 查看当前正在运行的容器
docker ps -a # 查看所有容器(包括停止的)
docker logs -f nginx-test # 实时查看容器日志,-f 持续刷新输出,排查问题必用
docker exec -it nginx-test /bin/bash # 进入容器内部,-it 交互式终端,进入后可执行容器内命令
docker stop nginx-test # 停止运行中的容器
docker start nginx-test # 启动已停止的容器
docker rm nginx-test # 删除已停止的容器,加-f可强制删除运行中的容器
# 4. Dockerfile构建镜像(核心,后续应用打包必用)
vim Dockerfile # 创建Dockerfile文件,文件名必须是Dockerfile
# 写入以下内容,构建一个自定义nginx镜像
FROM nginx:latest # 基础镜像,基于官方nginx最新版构建
MAINTAINER your-name # 镜像维护者信息
COPY index.html /usr/share/nginx/html/ # 将宿主机当前目录的index.html复制到容器内
EXPOSE 80 # 声明容器暴露的端口
CMD ["nginx", "-g", "daemon off;"] # 容器启动时执行的命令,前台运行nginx
# 构建镜像命令,-t 设置镜像名称和版本,. 代表Dockerfile在当前目录
docker build -t my-nginx:v1 .
阶段小练习
- 完成 Docker 安装,启动 nginx 容器,通过宿主机 IP+8080 端口访问到 nginx 默认页面
- 编写 Dockerfile,构建一个包含自定义首页的 nginx 镜像,启动容器并成功访问自定义页面
- 开通阿里云容器镜像服务 ACR,将自己构建的镜像推送到 ACR 仓库
3. 网络与云计算基础
- 网络核心:理解 OSI 七层模型、TCP/IP 协议、HTTP/HTTPS、网关、子网划分、负载均衡原理
- 云计算基础:理解 IaaS/PaaS/SaaS 概念,掌握阿里云 ECS、VPC、SLB、NAS 基础操作,熟悉阿里云控制台使用
第二阶段:K8s 核心概念入门与本地环境搭建(预计 2-3 周,无成本练手,吃透核心)
本地环境使用 Minikube(单节点 K8s 集群,专为学习设计),无需多台服务器,零成本上手,避免直接操作阿里云产生不必要的费用。
1. K8s 核心架构与概念(先理解再动手)
核心架构
K8s 集群分为控制平面(Master 节点) 和工作节点(Node 节点),新手先记住核心作用:
- Master 节点:集群的 "大脑",负责集群管理、调度、API 对接,核心组件:kube-apiserver、etcd、kube-scheduler、controller-manager
- Node 节点:集群的 "工人",负责运行业务容器,核心组件:kubelet、kube-proxy、容器运行时(Docker/containerd)
必须掌握的核心资源(80% 运维操作都围绕这些)
| 资源名称 | 核心作用 | 新手速记 |
|---|---|---|
| Pod | K8s 最小部署单元,一个 Pod 包含 1 个或多个容器,共享网络和存储 | 容器的 "集体宿舍",K8s 不直接管理容器,只管理 Pod |
| Deployment | 无状态应用部署控制器,管理 Pod 的创建、扩容、滚动更新、回滚 | 应用的 "大管家",日常部署业务的核心资源 |
| Service | 为 Pod 提供固定访问地址,实现 Pod 的负载均衡,解决 PodIP 动态变化的问题 | 应用的 "固定门牌号 + 负载均衡器" |
| Namespace | 实现集群资源隔离,给不同业务 / 环境划分独立命名空间 | 集群的 "文件夹",避免不同业务资源冲突 |
| ConfigMap | 存储非敏感配置信息,实现配置和代码分离 | 应用的 "配置文件中心" |
| Secret | 存储敏感信息(密码、密钥、证书),加密存储 | 应用的 "密码箱" |
| PV/PVC | PV 是集群存储资源,PVC 是用户对存储的申请,实现存储和应用解耦 | 应用的 "硬盘",PV 是硬盘资源,PVC 是申请使用硬盘 |
| Ingress | 实现集群 HTTP/HTTPS 七层路由,对外暴露服务 | 集群的 "大门",统一流量入口 |
2. 本地 Minikube 环境搭建(国内适配,带全注释命令)
环境要求
- 硬件:CPU≥2 核,内存≥2GB,磁盘空闲≥20GB
- 系统:已安装好 Docker 的 Linux/Windows/Mac,推荐 Linux 虚拟机 / 阿里云 ECS
带注释安装 & 启动命令
# 1. 安装Minikube二进制文件(Linux系统,国内镜像源,避免外网访问失败)
# 下载最新稳定版Minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
# 安装到系统可执行路径,赋予执行权限
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# 验证安装,输出版本号即成功
minikube version
# 2. 安装kubectl(K8s命令行工具,集群操作核心)
# 添加阿里云K8s软件源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
# 安装kubectl(和Minikube版本匹配,推荐稳定版)
yum install -y kubectl-1.28.3
# 验证安装
kubectl version --client
# 3. 启动Minikube集群(国内专属配置,解决镜像拉取失败问题)
minikube start \
--driver=docker \ # 指定驱动为docker,提前安装好docker
--image-mirror-country=cn \ # 国内镜像源,解决墙的问题
--image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers \ # 阿里云镜像仓库
--kubernetes-version=v1.28.3 \ # 指定K8s版本,和kubectl版本一致
--memory=2048 \ # 分配2G内存,可根据自己机器调整
--cpus=2 # 分配2核CPU
# 4. 集群验证命令
minikube status # 查看Minikube集群状态,所有组件running即正常
kubectl cluster-info # 查看集群核心组件地址,验证集群连通性
kubectl get nodes # 查看集群节点,能看到minikube节点状态为Ready即搭建成功
kubectl get pods --all-namespaces # 查看所有命名空间的Pod,系统组件全部Running即正常
# 5. 常用Minikube辅助命令
minikube stop # 停止集群
minikube delete # 删除集群(测试出错可重置)
minikube dashboard # 启动K8s可视化面板,新手可直观查看集群资源
3. kubectl 核心命令详解(带全注释,运维必背)
kubectl 是 K8s 集群操作的唯一命令行工具,所有运维操作都基于它,以下是按场景分类的核心命令,全部附带注释。
1. 集群信息与配置命令
kubectl config get-contexts # 查看所有集群上下文,可管理多个集群
kubectl config use-context minikube # 切换到指定集群上下文,多集群管理必用
kubectl config set-context --current --namespace=default # 设置当前默认命名空间
kubectl api-resources # 查看集群支持的所有资源类型,忘记资源名时用
2. 资源查看命令(日常排查最常用)
# 通用格式:kubectl get 资源类型 [名称] [参数]
# 资源类型简写:pods=po, deployments=deploy, services=svc, namespaces=ns, nodes=no
kubectl get ns # 查看集群所有命名空间
kubectl get nodes -o wide # 查看所有节点详情,-o wide显示IP、系统版本等额外信息
kubectl describe node minikube # 查看节点详细信息,包括资源使用、事件、污点,节点故障排查必用
# Pod相关查看
kubectl get pods # 查看默认命名空间下的所有Pod
kubectl get pods -n kube-system # 查看指定命名空间(kube-system)下的Pod,-n 指定命名空间
kubectl get pods -A -o wide # -A 查看所有命名空间的Pod,-o wide显示Pod所在节点、IP等信息
kubectl describe pod <pod名称> # 查看Pod详细信息、生命周期事件,Pod启动失败排查核心命令
kubectl logs -f <pod名称> # 实时查看Pod内容器日志,-f持续刷新,业务故障排查必用
kubectl logs -f <pod名称> -c <容器名称> # 一个Pod有多个容器时,指定容器查看日志
kubectl exec -it <pod名称> -- /bin/bash # 进入Pod内的容器,交互式终端,和docker exec用法一致
# Deployment/Service相关查看
kubectl get deploy # 查看默认命名空间的所有Deployment
kubectl describe deploy <deployment名称> # 查看Deployment详情、事件、副本状态
kubectl get svc -o wide # 查看所有Service,显示集群IP、端口、关联的标签等信息
kubectl get svc <svc名称> -n <命名空间> # 查看指定命名空间的Service详情
3. 资源创建 / 更新 / 删除命令(声明式管理,K8s 核心操作)
# 核心命令:kubectl apply -f yaml文件 # 声明式创建/更新资源,生产环境标准用法
# 示例:通过yaml文件创建Deployment,先创建nginx-deploy.yaml文件
vim nginx-deploy.yaml
# 写入Deployment配置内容,后续练习会详细讲解
# 执行创建/更新,yaml文件有变更时执行会自动滚动更新
kubectl apply -f nginx-deploy.yaml
# 查看yaml文件定义的资源状态
kubectl get -f nginx-deploy.yaml
# 删除yaml文件中定义的所有资源
kubectl delete -f nginx-deploy.yaml
# 临时创建/删除(测试用,不推荐生产环境使用)
kubectl create ns test-ns # 创建命名空间
kubectl delete ns test-ns # 删除命名空间(谨慎!会删除命名空间下所有资源)
kubectl delete pod <pod名称> # 删除指定Pod,Deployment管理的Pod会自动重建
kubectl scale deploy <deployment名称> --replicas=3 # 扩容/缩容Deployment,设置副本数为3
4. 入门级实操练习(必须完成,吃透核心逻辑)
练习目标
在 Minikube 集群中部署 nginx 应用,实现:Pod 正常运行→通过 Service 访问→扩容副本→滚动更新→版本回滚全流程操作。
带注释完整步骤
# 步骤1:创建独立命名空间,实现资源隔离
kubectl create ns nginx-demo
# 切换默认命名空间为nginx-demo,后续命令不用再加-n参数
kubectl config set-context --current --namespace=nginx-demo
# 步骤2:编写Deployment的yaml文件,定义nginx应用
vim nginx-deploy.yaml
# 写入以下内容,每行都有注释,新手务必理解每个字段的含义
apiVersion: apps/v1 # K8s API版本,Deployment固定用apps/v1
kind: Deployment # 资源类型为Deployment
metadata:
name: nginx-demo # Deployment名称,同一命名空间内唯一
labels:
app: nginx-demo # 资源标签,用于筛选和关联
spec:
replicas: 2 # Pod副本数量,启动2个相同的Pod
selector:
matchLabels:
app: nginx-demo # 标签选择器,必须和下面template里的Pod标签一致
template: # Pod模板,定义Pod的规格
metadata:
labels:
app: nginx-demo # Pod的标签,和selector匹配
spec:
containers: # 容器定义
- name: nginx # 容器名称
image: nginx:1.25.3 # 容器使用的镜像,固定版本,不用latest,方便版本管理
ports:
- containerPort: 80 # 容器暴露的端口,和nginx监听端口一致
resources: # 资源限制,避免Pod占用节点所有资源
requests: # 资源申请,调度时根据这个分配节点
cpu: 100m
memory: 128Mi
limits: # 资源上限,超过会被限制或重启
cpu: 200m
memory: 256Mi
# 步骤3:创建Deployment,执行部署
kubectl apply -f nginx-deploy.yaml
# 验证部署结果,查看Deployment状态,READY显示2/2代表2个副本全部就绪
kubectl get deploy
# 查看Pod状态,2个Pod全部Running即为正常
kubectl get pods -o wide
# 步骤4:创建Service,为Pod提供固定访问地址
vim nginx-svc.yaml
# 写入以下内容
apiVersion: v1 # Service固定API版本
kind: Service # 资源类型为Service
metadata:
name: nginx-demo-svc
spec:
type: NodePort # Service类型,NodePort可通过节点IP+端口访问,测试环境用
selector:
app: nginx-demo # 标签选择器,和Deployment的Pod标签一致,关联对应的Pod
ports:
- port: 80 # Service在集群内的访问端口
targetPort: 80 # 转发到Pod的容器端口,和Deployment里的containerPort一致
nodePort: 30080 # 节点端口,范围30000-32767,固定端口,不指定会随机分配
# 创建Service
kubectl apply -f nginx-svc.yaml
# 验证Service,查看CLUSTER-IP、端口信息
kubectl get svc
# 步骤5:访问测试
# Minikube环境执行,获取访问地址
minikube service nginx-demo-svc -n nginx-demo
# 或通过节点IP+30080端口访问,curl测试
curl $(minikube ip):30080
# 步骤6:应用扩容,将副本数从2扩容到4
kubectl scale deploy nginx-demo --replicas=4
# 验证扩容结果,READY显示4/4即为成功
kubectl get deploy
kubectl get pods
# 步骤7:滚动更新,将nginx版本从1.25.3更新到1.26.0
# 方式1:修改yaml文件的image字段,重新apply(推荐,可追溯)
sed -i 's/nginx:1.25.3/nginx:1.26.0/g' nginx-deploy.yaml
kubectl apply -f nginx-deploy.yaml
# 方式2:命令行直接更新(测试用)
# kubectl set image deploy/nginx-demo nginx=nginx:1.26.0
# 查看滚动更新过程
kubectl rollout status deploy nginx-demo
# 查看更新历史
kubectl rollout history deploy nginx-demo
# 步骤8:版本回滚,更新出错时回滚到上一个版本
kubectl rollout undo deploy nginx-demo
# 验证回滚结果,查看镜像版本是否回到1.25.3
kubectl describe deploy nginx-demo | grep Image
# 练习收尾:清理测试资源
kubectl delete -f nginx-deploy.yaml
kubectl delete -f nginx-svc.yaml
kubectl delete ns nginx-demo
第三阶段:阿里云 ACK 集群实战入门(预计 2 周,贴合阿里云运维岗位需求)
Minikube 仅用于学习,企业生产环境 90% 的阿里云 K8s 运维都是基于ACK(容器服务 Kubernetes 版),托管版 ACK 由阿里云维护 Master 节点,新手无需关注控制面运维,只需要聚焦 Worker 节点和业务应用,大幅降低学习门槛。
1. 阿里云环境准备
- 注册阿里云账号,完成实名认证,开通容器服务 ACK、容器镜像服务 ACR、云服务器 ECS、负载均衡 SLB、专有网络 VPC 权限
- 资源规划:新手推荐创建ACK 托管版集群,地域选择离自己近的,Worker 节点选择 2 台 2 核 4G 的 ECS(按量付费,测试完可释放,避免费用浪费)
- 权限配置:给账号授予 AliyunCSFullAccess、AliyunECSFullAccess、AliyunVPCFullAccess 权限,避免操作时权限不足
2. ACK 托管集群创建(新手友好,可视化操作)
- 登录阿里云控制台,搜索「容器服务 Kubernetes 版」,进入 ACK 控制台
- 左侧导航栏选择「集群」→「创建集群」,选择「托管版」
- 基础配置:
- 集群名称:自定义,如 ack-demo-cluster
- 地域:选择就近地域,如华东 1(杭州)
- Kubernetes 版本:选择稳定版,如 1.28.3,和本地学习版本一致
- 容器运行时:默认 containerd,兼容 Docker 镜像
- 网络配置:选择自动创建 VPC 和交换机,网络插件选择 Terway(阿里云自研,性能更好,支持网络策略)
- 节点配置:Worker 节点选择 2 台 ecs.g6.large(2 核 4G),系统盘 40GiB,按量付费
- 其他配置:默认即可,点击「下一步:确认配置」,勾选服务协议,点击「创建集群」
- 等待 10-15 分钟,集群创建完成,状态显示「运行中」即可进入下一步
3. 本地 kubectl 连接 ACK 集群(核心,实现本地操作阿里云集群)
方式 1:通过 kubeconfig 文件连接(推荐)
# 步骤1:阿里云控制台获取kubeconfig文件
# 1. 进入ACK集群详情页,左侧导航栏选择「集群信息」
# 2. 切换到「连接信息」Tab,选择「公网访问」,开启公网访问开关
# 3. 复制kubeconfig内容,到本地服务器
# 步骤2:本地配置kubeconfig文件
# 编辑kubeconfig配置文件,默认路径~/.kube/config
vim ~/.kube/config
# 粘贴从阿里云复制的kubeconfig内容,保存退出
# 给配置文件设置权限,避免权限过大报错
chmod 600 ~/.kube/config
# 步骤3:验证集群连接
# 查看集群节点,能看到阿里云ACK的2台Worker节点,状态Ready即为连接成功
kubectl get nodes
# 查看集群信息,验证连通性
kubectl cluster-info
# 查看集群命名空间,能看到kube-system等系统命名空间
kubectl get ns
方式 2:通过阿里云 CloudShell 连接
无需本地配置,直接在阿里云控制台点击「CloudShell」,自动完成集群连接,新手测试可直接使用。
4. ACK 集群基础运维核心操作(适配阿里云生态,带注释命令)
# 1. 节点运维操作(阿里云ECS节点)
kubectl get nodes -o wide # 查看所有Worker节点,显示节点IP、ECS规格、系统版本
kubectl describe node <节点名称> # 查看节点详情,资源使用、标签、污点、事件,节点故障排查
kubectl cordon <节点名称> # 标记节点为不可调度,新的Pod不会调度到该节点,维护节点前必用
kubectl drain <节点名称> --ignore-daemonsets # 节点排水,排空节点上的Pod,迁移到其他节点,节点下线前必用
kubectl uncordon <节点名称> # 恢复节点调度,维护完成后执行
# 2. 命名空间管理(企业级必用,按环境/业务隔离)
kubectl create ns prod # 创建生产环境命名空间
kubectl create ns test # 创建测试环境命名空间
kubectl get ns # 查看所有命名空间
# 3. 阿里云专属存储操作(云盘PV/PVC)
# ACK集群默认集成阿里云云盘存储,直接创建PVC即可自动创建PV,无需手动配置
vim pvc-demo.yaml
# 写入以下内容,创建阿里云高效云盘PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: cloud-disk-pvc
namespace: test
spec:
accessModes:
- ReadWriteOnce # 阿里云云盘仅支持单节点读写,固定值
resources:
requests:
storage: 20Gi # 申请20GiB存储空间
storageClassName: alicloud-disk-efficiency # 存储类,高效云盘,ACK默认提供
# 创建PVC
kubectl apply -f pvc-demo.yaml
# 查看PVC状态,STATUS为Bound即为绑定成功,自动创建了对应的PV
kubectl get pvc -n test
kubectl get pv
# 4. 阿里云SLB类型Service(生产环境对外暴露服务标准用法)
# NodePort仅测试用,生产环境用LoadBalancer类型,自动创建阿里云SLB负载均衡
vim nginx-svc-slb.yaml
# 写入以下内容
apiVersion: v1
kind: Service
metadata:
name: nginx-slb-svc
namespace: test
spec:
type: LoadBalancer # Service类型为LoadBalancer,自动创建阿里云SLB
selector:
app: nginx-demo
ports:
- protocol: TCP
port: 80
targetPort: 80
# 创建Service
kubectl apply -f nginx-svc-slb.yaml
# 查看Service,EXTERNAL-IP会显示SLB的公网IP,等待1-2分钟分配完成
kubectl get svc -n test
# 验证访问,通过SLB公网IP即可访问,浏览器/curl测试
curl <SLB公网IP>
5. 阶段实操练习
在 ACK 集群中完成第二阶段的 nginx 全流程部署,使用阿里云 SLB 类型 Service 对外暴露服务,使用云盘 PVC 挂载 nginx 配置文件,实现配置持久化。
第四阶段:K8s 进阶运维与阿里云生态集成(预计 3-4 周,企业级运维必备)
完成前面三个阶段,你已经可以完成基础的应用部署和运维,本阶段是阿里云 K8s 运维工程师的核心竞争力,掌握后可胜任企业级生产环境运维工作。
1. 应用生命周期全管理
- 滚动更新与蓝绿 / 灰度发布:掌握 Deployment 滚动更新策略配置,基于阿里云 ACK 实现蓝绿发布、金丝雀发布
- 健康检查:配置 Pod 的存活探针(livenessProbe)、就绪探针(readinessProbe)、启动探针(startupProbe),实现应用故障自动重启、流量自动摘除
- 资源管理:配置 Pod 的 CPU / 内存 requests 和 limits,避免资源抢占,掌握 LimitRange 命名空间资源限制、ResourceQuota 资源配额
- 版本回滚:掌握多版本管理,回滚到指定历史版本,配置更新策略,避免更新时业务中断
2. 阿里云 ACK 网络与存储进阶
- 网络进阶:掌握 Terway 网络插件的网络策略、固定 IP 配置,Ingress 控制器部署(阿里云 ACK 默认集成 Nginx Ingress,自动绑定 SLB),配置 HTTPS 证书、域名路由、灰度路由
- 存储进阶:掌握阿里云 NAS/OSS 存储的 PV/PVC 配置,实现多 Pod 共享存储,StatefulSet 有状态应用的存储管理,存储快照与备份
3. 可观测性体系搭建(运维核心,故障排查的基石)
阿里云 ACK 默认集成了完整的可观测产品,无需自建,开箱即用:
- 监控告警:对接阿里云 ARMS Prometheus 监控,配置集群节点、组件、业务应用的监控大盘,设置告警规则,异常及时通知
- 日志管理:对接阿里云日志服务 SLS,采集集群节点、容器、应用日志,配置日志检索、可视化、日志告警,实现日志全生命周期管理
- 链路追踪:对接阿里云 ARMS 链路追踪,实现微服务应用的全链路可观测,定位接口耗时、异常问题
4. 弹性伸缩与高可用
- Pod 水平扩缩容 HPA:根据 CPU / 内存使用率、自定义指标,自动扩缩容 Pod 副本数,应对业务流量波动
- 节点自动扩缩容:基于阿里云弹性伸缩,实现 ACK 集群 Worker 节点的自动扩缩容,降低资源成本
- 高可用配置:多可用区集群部署,Pod 拓扑分布约束,反亲和性配置,避免单点故障,保障业务可用性
5. 安全与权限管理
- RBAC 权限控制:掌握 Role、ClusterRole、RoleBinding、ClusterBinding 配置,给不同用户 / 服务账号配置最小权限,避免权限过大
- 阿里云 RAM 权限对接:配置 RAM 用户和 RBAC 权限联动,实现阿里云控制台操作权限精细化管理
- 容器安全:配置 Pod 安全上下文,镜像安全扫描(阿里云 ACR 自带),网络策略限制 Pod 间访问,避免安全风险
6. 故障排查核心方法论与命令
新手必背故障排查流程:
- 查看 Pod 状态:
kubectl get pods,确定 Pod 异常状态(Pending/ImagePullBackOff/CrashLoopBackOff/ErrImagePull 等) - 查看 Pod 事件:
kubectl describe pod <pod名称>,定位异常原因,90% 的问题都能在这里找到答案 - 查看容器日志:
kubectl logs -f <pod名称>,定位应用层报错 - 进入容器调试:
kubectl exec -it <pod名称> -- /bin/bash,测试网络、配置、依赖是否正常 - 节点排查:节点资源不足、端口占用、磁盘满、网络不通等,
kubectl describe node <节点名称>查看节点事件和资源使用
常见异常状态原因速查:
- Pending:资源不足、调度失败、PVC 绑定失败、污点容忍不匹配
- ImagePullBackOff/ErrImagePull:镜像地址错误、镜像不存在、私有镜像仓库权限不足、网络无法拉取镜像
- CrashLoopBackOff:容器启动后退出,应用程序报错、配置错误、健康检查失败、资源不足 OOM
- RunContainerError:容器运行时错误,配置文件错误、权限不足、端口占用
第五阶段:全流程实战练习项目(可直接写进简历,从入门到企业级)
项目 1:入门级 - ACK 集群部署静态网站(1 天可完成)
项目目标
在阿里云 ACK 集群中部署一个 Nginx 静态网站,实现:HTTPS 域名访问、配置文件持久化、多副本高可用、基础监控告警。
核心步骤
- 准备静态网站代码,打包成 Docker 镜像,推送到阿里云 ACR 仓库
- 创建命名空间、ConfigMap 存储 nginx 配置文件、阿里云 NAS PVC 存储网站代码
- 编写 Deployment,配置多副本、健康检查、资源限制、挂载 ConfigMap 和 PVC
- 创建 LoadBalancer 类型 Service,绑定阿里云 SLB
- 配置 Ingress,绑定自定义域名和 HTTPS 证书(阿里云 SSL 证书服务),实现域名 HTTPS 访问
- 配置基础监控,设置网站不可访问告警
验收标准
- 浏览器通过域名 HTTPS 正常访问静态网站
- 网站内容更新后,滚动更新无业务中断
- 删除任意 Pod,自动重建,网站访问不受影响
- 网站不可访问时,能收到告警通知
项目 2:进阶级 - 前后端分离微服务应用部署(3 天可完成)
项目目标
部署一套完整的前后端分离微服务应用(SpringBoot 后端 + Vue 前端 + MySQL 数据库),实现:配置与代码分离、敏感信息加密存储、数据持久化、服务间调用、内外网访问隔离。
核心步骤
- 后端 SpringBoot 应用编写 Dockerfile,构建镜像推送到 ACR;前端 Vue 应用打包,构建 Nginx 镜像推送到 ACR
- 规划命名空间,test 和 prod 环境隔离
- 使用 ConfigMap 存储后端应用配置文件,Secret 存储 MySQL 数据库账号密码
- 使用 StatefulSet 部署 MySQL 数据库,挂载阿里云云盘 PVC,实现数据持久化,创建 ClusterIP 类型 Service,仅集群内可访问
- 部署后端 Deployment,配置健康检查、资源限制,通过 Service 名称访问 MySQL 数据库,创建 ClusterIP 类型 Service
- 部署前端 Deployment,配置 nginx 反向代理后端接口,创建 Ingress,对外暴露前端访问地址
- 配置网络策略,限制只有前端 Pod 能访问后端 Pod,只有后端 Pod 能访问 MySQL 数据库,提升安全性
验收标准
- 前端页面正常访问,能正常调用后端接口,实现数据增删改查
- 数据库数据持久化,Pod 重启 / 重建后数据不丢失
- 配置文件修改无需重新构建镜像,更新 ConfigMap 后生效
- 外网无法直接访问后端和数据库,仅能通过前端页面访问,实现访问隔离
项目 3:企业级 - 基于阿里云 ACK 的 DevOps 全流程项目(1 周可完成)
项目目标
搭建一套完整的 CI/CD 流水线,实现:代码提交→自动构建镜像→镜像扫描→自动部署到 ACK 集群→监控告警全流程自动化,贴合企业生产环境 DevOps 规范。
核心步骤
- 代码托管:使用阿里云 Codeup/GitHub 托管前后端应用代码
- 镜像仓库:阿里云 ACR 创建私有仓库,配置镜像安全扫描
- 流水线搭建:使用阿里云云效 Flow/Jenkins,配置 CI/CD 流水线
- CI 阶段:拉取代码→单元测试→代码扫描→构建 Docker 镜像→推送到 ACR→镜像安全扫描
- CD 阶段:更新 Deployment 镜像版本→自动部署到 ACK 测试集群→自动化测试→审批通过后部署到生产集群
- 配置 K8s 应用健康检查、滚动更新策略、自动扩缩容 HPA
- 搭建完整的可观测体系:ARMS Prometheus 监控大盘、SLS 日志采集、链路追踪、异常告警配置
- 配置集群备份:使用阿里云 ACK 集群备份能力,定期备份集群资源和应用数据
验收标准
- 代码提交到 master 分支后,自动触发流水线,完成构建和测试环境部署
- 镜像存在高危漏洞时,流水线自动终止,不允许部署到生产环境
- 应用部署支持滚动更新,更新过程无业务中断,支持一键回滚
- 应用 CPU / 内存使用率过高、接口报错、服务不可用时,能自动触发告警
- 集群和应用数据定期备份,可快速恢复
第六阶段:学习资源与进阶规划
官方学习资源(权威无坑)
- Kubernetes 官方文档:https://kubernetes.io/zh-cn/docs/home/
- 阿里云 ACK 官方文档:https://help.aliyun.com/zh/ack/
- 阿里云云原生大学:https://edu.aliyun.com/roadmap/cloudnative
认证与进阶
- 入门:阿里云 ACA 云原生容器工程师认证
- 进阶:阿里云 ACP 云原生容器工程师认证(运维岗位敲门砖)
- 资深:Kubernetes CKA/CKAD 认证
新手避坑指南
- 严禁跳步学习:先 Linux→Docker→K8s 基础→ACK 实战,不要一开始就搞复杂的微服务和 CI/CD
- 镜像版本不要用 latest:生产环境必须固定镜像版本,避免版本不一致导致的异常,方便回滚
- 必须配置资源限制:所有 Pod 都要配置 CPU / 内存 requests 和 limits,避免个别 Pod 占用节点所有资源,导致集群雪崩
- 测试环境优先:所有新操作先在 Minikube/ACK 测试集群验证,没问题再上生产环境
- 不要直接修改 Pod:Deployment 管理的 Pod,直接删除会自动重建,必须修改 Deployment 的 yaml 配置,通过声明式管理
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)