Kubernetes 技术操作指南:从零开始掌握容器编排

Kubernetes 技术操作指南:从零开始掌握容器编排
WeekendKubernetes 技术操作指南:从零开始掌握容器编排
kubectl 版本和集群版本之间的差异必须在一个小版本号内。 例如:v1.34 版本的客户端能与 v1.33、 v1.34 和 v1.35 版本的控制面通信。 用最新兼容版的 kubectl 有助于避免不可预见的问题。
☸️ Kubernetes 技术操作指南:从零开始掌握容器编排
作者: Weekend
发布日期: 2025年10月
实验操作系统: Ubuntu 22.04 LTS
标签: Kubernetes、DevOps、云原生、容器编排、微服务
一、Kubernetes 简介
什么是 Kubernetes?
Kubernetes(简称 K8s) 是一个由 Google 开源的 容器编排平台,用于自动化部署、扩缩容和管理容器化应用。
它可以在多台服务器上统一调度和运行容器,让应用运行更加稳定、高效。
简单来说:
Kubernetes = 容器世界的“操作系统” + 集群调度中心。
二、核心功能
| 功能 | 说明 |
|---|---|
| 自动调度 | 根据资源使用情况自动选择合适的节点运行容器 |
| 服务发现与负载均衡 | 自动创建访问入口(Service)并实现负载均衡 |
| 自动伸缩 | 根据负载自动扩容或缩容 Pod |
| 自愈机制 | 容器崩溃后自动重建 |
| 滚动更新与回滚 | 支持无中断更新与版本回退 |
| 声明式配置 | 通过 YAML 声明系统状态,K8s 自动达成目标 |
三、核心概念快速理解
| 概念 | 作用 |
|---|---|
| Node | 工作节点(运行容器的机器) |
| Pod | 最小部署单元,封装一个或多个容器 |
| Deployment | 控制 Pod 的副本数和更新策略 |
| Service | 为 Pod 提供固定访问入口(负载均衡) |
| Ingress | 对外暴露 HTTP/HTTPS 服务的入口 |
| ConfigMap / Secret | 配置与敏感信息管理 |
| Namespace | 集群内的逻辑隔离空间 |
四、Kubernetes 环境部署指南
1. 使用 kubeadm 快速部署集群
环境要求:
至少两台 Linux 主机(1 控制节点 + 1 工作节点)
每台机器开启
swapoff:1
sudo swapoff -a
安装步骤:
1 | # 安装依赖 |
1 | # 用 curl 在 Linux 系统中安装 kubectl |
初始化主节点:
1 | sudo kubeadm init --pod-network-cidr=10.244.0.0/16 |
初始化完成后,执行以下命令配置 kubectl:
1 | mkdir -p $HOME/.kube |
安装网络插件(Flannel):
1 | kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml |
加入工作节点:
在工作节点上执行 kubeadm join 命令(主节点初始化时会显示该命令)。
五、集群基本操作
查看集群状态:
1 | kubectl get nodes |
查看某个 Pod 详细信息:
1 | kubectl describe pod <pod-name> -n <namespace> |
删除资源:
1 | kubectl delete pod <pod-name> |
六、部署一个 Nginx 应用示例
1. 创建 Deployment
1 | # nginx-deployment.yml |
执行部署:
1 | kubectl apply -f nginx-deployment.yml |
2. 创建 Service 暴露访问端口
1 | # nginx-service.yml |
执行:
1 | kubectl apply -f nginx-service.yml |
访问:
1 | http://<NodeIP>:30080 |
七、使用 ConfigMap 与 Secret 管理配置
创建 ConfigMap
1 | kubectl create configmap app-config --from-literal=ENV=prod |
在 Pod 中引用:
1 | env: |
八、滚动更新与回滚
更新镜像:
1 | kubectl set image deployment/nginx-deployment nginx=nginx:1.25 |
回滚版本:
1 | kubectl rollout undo deployment/nginx-deployment |
查看历史:
1 | kubectl rollout history deployment/nginx-deployment |
九、使用 Namespace 管理多环境
创建命名空间:
1 | kubectl create namespace staging |
部署资源时指定:
1 | kubectl apply -f app.yml -n staging |
查看资源:
1 | kubectl get all -n staging |
十、调试与排错技巧
| 操作 | 命令 |
|---|---|
| 查看日志 | kubectl logs <pod-name> |
| 进入容器交互 | kubectl exec -it <pod-name> -- /bin/bash |
| 查看事件 | kubectl get events --sort-by=.metadata.creationTimestamp |
| 导出 YAML 配置 | kubectl get pod <name> -o yaml |
十一、实用命令速查表
| 功能 | 命令 |
|---|---|
| 查看所有资源 | kubectl get all -A |
| 清理所有资源 | kubectl delete all --all -n default |
| 查看 Pod 的 IP | kubectl get pod -o wide |
| 扩容 Deployment | kubectl scale deployment nginx-deployment --replicas=5 |
| 测试端口转发 | kubectl port-forward svc/nginx-service 8080:80 |
十二、进阶:Kubernetes 最佳实践
使用 Helm 管理复杂应用
- Helm 类似 “K8s 的 apt/yum”,支持一键部署复杂服务。
使用 Labels 与 Selectors 进行精细化管理
结合 Prometheus + Grafana 做监控与告警
使用 NetworkPolicy 控制容器间访问
启用资源限制(CPU、内存)防止资源抢占
启用 RBAC 控制权限安全
十三、总结
Kubernetes 是现代云原生架构的核心。
它将传统手动运维工作彻底自动化,从容器调度、服务发现到自愈机制,实现了真正的 声明式基础设施。
学好 Kubernetes,不仅能提升部署效率,更是迈向云原生架构与 DevOps 实践的关键一步。
💡 最后结语:
当你第一次看到所有容器自动调度、自动修复、自动扩缩容时,
你会发现 —— 这就是基础设施的未来。









