Kubernetes 技术操作指南:从零开始掌握容器编排
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:sudo swapoff -a
安装步骤:
# 安装依赖
sudo apt update && sudo apt install -y apt-transport-https curl
# 添加 Kubernetes 仓库
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
# 安装 kubeadm、kubelet、kubectl
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo systemctl enable kubelet
# 用 curl 在 Linux 系统中安装 kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
初始化主节点:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
初始化完成后,执行以下命令配置 kubectl:
mkdir -p $HOME/.kube
sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
安装网络插件(Flannel):
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
加入工作节点:
在工作节点上执行 kubeadm join 命令(主节点初始化时会显示该命令)。
五、集群基本操作
查看集群状态:
kubectl get nodes
kubectl get pods -A
kubectl cluster-info
查看某个 Pod 详细信息:
kubectl describe pod <pod-name> -n <namespace>
删除资源:
kubectl delete pod <pod-name>
kubectl delete deployment <deployment-name>
六、部署一个 Nginx 应用示例
1. 创建 Deployment
# nginx-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
执行部署:
kubectl apply -f nginx-deployment.yml
kubectl get pods
2. 创建 Service 暴露访问端口
# nginx-service.yml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- port: 80
targetPort: 80
nodePort: 30080
type: NodePort
执行:
kubectl apply -f nginx-service.yml
kubectl get svc
访问:
http://<NodeIP>:30080
七、使用 ConfigMap 与 Secret 管理配置
创建 ConfigMap
kubectl create configmap app-config --from-literal=ENV=prod
在 Pod 中引用:
env:
- name: APP_ENV
valueFrom:
configMapKeyRef:
name: app-config
key: ENV
八、滚动更新与回滚
更新镜像:
kubectl set image deployment/nginx-deployment nginx=nginx:1.25
回滚版本:
kubectl rollout undo deployment/nginx-deployment
查看历史:
kubectl rollout history deployment/nginx-deployment
九、使用 Namespace 管理多环境
创建命名空间:
kubectl create namespace staging
部署资源时指定:
kubectl apply -f app.yml -n staging
查看资源:
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 实践的关键一步。
💡 最后结语:
当你第一次看到所有容器自动调度、自动修复、自动扩缩容时,
你会发现 —— 这就是基础设施的未来。
更多推荐


所有评论(0)