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

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

    1
    sudo swapoff -a

安装步骤:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 安装依赖
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
1
2
# 用 curl 在 Linux 系统中安装 kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

初始化主节点:

1
sudo kubeadm init --pod-network-cidr=10.244.0.0/16

初始化完成后,执行以下命令配置 kubectl:

1
2
3
mkdir -p $HOME/.kube
sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

安装网络插件(Flannel):

1
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

加入工作节点:

在工作节点上执行 kubeadm join 命令(主节点初始化时会显示该命令)。


五、集群基本操作

查看集群状态:

1
2
3
kubectl get nodes
kubectl get pods -A
kubectl cluster-info

查看某个 Pod 详细信息:

1
kubectl describe pod <pod-name> -n <namespace>

删除资源:

1
2
kubectl delete pod <pod-name>
kubectl delete deployment <deployment-name>

六、部署一个 Nginx 应用示例

1. 创建 Deployment

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 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

执行部署:

1
2
kubectl apply -f nginx-deployment.yml
kubectl get pods

2. 创建 Service 暴露访问端口

1
2
3
4
5
6
7
8
9
10
11
12
13
# nginx-service.yml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- port: 80
targetPort: 80
nodePort: 30080
type: NodePort

执行:

1
2
kubectl apply -f nginx-service.yml
kubectl get svc

访问:

1
http://<NodeIP>:30080

七、使用 ConfigMap 与 Secret 管理配置

创建 ConfigMap

1
kubectl create configmap app-config --from-literal=ENV=prod

在 Pod 中引用:

1
2
3
4
5
6
env:
- name: APP_ENV
valueFrom:
configMapKeyRef:
name: app-config
key: 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 最佳实践

  1. 使用 Helm 管理复杂应用

    • Helm 类似 “K8s 的 apt/yum”,支持一键部署复杂服务。
  2. 使用 Labels 与 Selectors 进行精细化管理

  3. 结合 Prometheus + Grafana 做监控与告警

  4. 使用 NetworkPolicy 控制容器间访问

  5. 启用资源限制(CPU、内存)防止资源抢占

  6. 启用 RBAC 控制权限安全


十三、总结

Kubernetes 是现代云原生架构的核心。
它将传统手动运维工作彻底自动化,从容器调度、服务发现到自愈机制,实现了真正的 声明式基础设施

学好 Kubernetes,不仅能提升部署效率,更是迈向云原生架构与 DevOps 实践的关键一步。


💡 最后结语:
当你第一次看到所有容器自动调度、自动修复、自动扩缩容时,
你会发现 —— 这就是基础设施的未来。