Kubernetes实战指南:从入门到生产环境部署

Kubernetes实战指南:从入门到生产环境部署


目录

  1. 核心架构解析
  2. 关键对象详解
  3. 集群搭建方案
  4. 工作负载管理
  5. 网络与存储
  6. 监控与日志
  7. CI/CD集成
  8. 故障排查手册

1. 核心架构解析

graph TD Master[Control Plane] -->|管理| Node[Worker Node] Master -->|存储| etcd Node -->|运行| Pod Node -->|网络| CNI Master -->|调度| Scheduler Master -->|API入口| API-Server Master -->|控制循环| Controller-Manager

组件功能说明

  • etcd:分布式键值存储(集群状态数据库)
  • kube-apiserver:集群操作的唯一入口(RESTful API)
  • kube-scheduler:资源调度决策引擎
  • kube-controller-manager:维护集群状态的守护进程
  • kubelet:节点代理(Pod生命周期管理)
  • kube-proxy:网络流量代理(Service实现基础)

2. 关键对象详解

2.1 核心对象关系

graph LR Deployment --> ReplicaSet ReplicaSet --> Pod Service -->|暴露| Pod Ingress -->|路由| Service ConfigMap -->|配置注入| Pod PersistentVolume -->|存储供给| Pod

2.2 对象声明示例(YAML)

yaml 复制代码
# Deployment示例
apiVersion: apps/v1
kind: Deployment
metadata:
  name: webapp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - name: nginx
        image: nginx:1.21
        ports:
        - containerPort: 80
        volumeMounts:
        - name: config
          mountPath: /etc/nginx
      volumes:
      - name: config
        configMap:
          name: nginx-config

3. 集群搭建方案

3.1 主流工具对比

工具 适用场景 学习曲线 生产适用性
kubeadm 官方推荐方案 中等 ★★★★☆
Minikube 本地开发测试 简单 ★☆☆☆☆
kops AWS环境部署 中等 ★★★★☆
Rancher 多集群管理 简单 ★★★★☆
OpenShift 企业级容器平台 复杂 ★★★★★

3.2 快速创建集群

bash 复制代码
# 使用kubeadm创建集群
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

4. 工作负载管理

4.1 常用命令速查

bash 复制代码
# 查看Pod详细信息
kubectl describe pod <pod-name>

# 进入容器调试
kubectl exec -it <pod-name> -- /bin/bash

# 查看日志(实时)
kubectl logs -f <pod-name>

# 水平扩展Deployment
kubectl scale deployment/webapp --replicas=5

# 滚动更新策略
kubectl set image deployment/webapp nginx=nginx:1.22

4.2 资源配额管理

yaml 复制代码
apiVersion: v1
kind: ResourceQuota
metadata:
  name: compute-resources
spec:
  hard:
    requests.cpu: "4"
    requests.memory: 8Gi
    limits.cpu: "8"
    limits.memory: 16Gi

5. 网络与存储

5.1 Service类型对比

类型 特点 适用场景
ClusterIP 默认类型,内部访问 服务间通信
NodePort 通过节点端口暴露服务 开发测试环境
LoadBalancer 云平台负载均衡器集成 生产环境公网暴露
Ingress 7层路由规则管理 域名访问管理

5.2 存储方案选型

graph TD LocalPV -->|本地存储| HostPath CloudPV -->|云存储| AWS-EBS NetworkPV -->|网络存储| NFS DynamicPV -->|动态供给| StorageClass

6. 监控与日志

6.1 监控体系架构

graph LR Prometheus -->|采集指标| Exporters Grafana -->|可视化| Prometheus AlertManager -->|告警通知| Prometheus EFK -->|日志管理| Fluentd

6.2 核心监控指标

bash 复制代码
# 查看节点资源使用
kubectl top node

# 查看Pod资源使用
kubectl top pod

# 安装metrics-server
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

7. CI/CD集成

7.1 GitOps工作流

graph LR Git -->|代码变更| CI-Pipeline CI-Pipeline -->|构建镜像| Registry CD-Tool -->|同步配置| Kubernetes Kubernetes -->|状态反馈| CD-Tool

7.2 Argo CD部署示例

yaml 复制代码
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: guestbook
spec:
  project: default
  source:
    repoURL: https://github.com/argoproj/argocd-example-apps
    targetRevision: HEAD
    path: guestbook
  destination:
    server: https://kubernetes.default.svc
    namespace: default
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

8. 故障排查手册

8.1 常见问题处理

现象 排查步骤
Pod处于Pending状态 1. 检查资源配额 2. 查看节点调度情况 3. 检查存储卷挂载
Service无法访问 1. 验证Endpoints是否正确 2. 检查网络策略 3. 测试ClusterIP连通性
镜像拉取失败 1. 检查镜像地址权限 2. 验证ImagePullSecret配置 3. 手动测试拉取
节点NotReady 1. 检查kubelet状态 2. 验证网络插件运行情况 3. 查看系统资源使用

8.2 诊断命令组合

bash 复制代码
# 快速诊断命名空间问题
kubectl get all -n <namespace>
kubectl describe ns <namespace>
kubectl get events --sort-by='.metadata.creationTimestamp'

进阶方向

  1. 安全加固:RBAC策略、NetworkPolicy、Pod安全策略
  2. 性能优化:调度算法调优、ETCD性能优化
  3. 多集群管理:Kubefed、Cluster API
  4. 服务网格:Istio、Linkerd集成

推荐学习路径

官方文档 → 认证考试(CKA/CKAD)→ 生产环境实践 → 源码研究

附录 常用资源列表:

复制代码
相关推荐
ysu_031421 小时前
【2026】K8s GPU调度空占怎么解?Kueue与Volcano Gang配置
云原生·kubernetes·gpu算力·volcano·ai基础设施·kueue·gang scheduling
哈__1 天前
KES-Operator重塑Kubernetes环境下的KES数据库集群管理
数据库·kubernetes·operator·kes
九皇叔叔1 天前
K8S 资源菜单
docker·容器·kubernetes·k8s
安易算力2 天前
PUE优化工程实践:从1.5到1.2的制冷架构与气流组织改造路径
网络·python·容器·架构·kubernetes
kuroomi2 天前
Ingress-Nginx与kubernetes 网络
linux·运维·网络·kubernetes
程序猿阿越3 天前
containerd如何创建Pod
后端·kubernetes·源码阅读
安易算力3 天前
昇腾生态开发深度实践:CANN算子库架构解析与MindSpore模型优化
网络·容器·架构·kubernetes·vllm
九皇叔叔3 天前
Kubernetes 核心概念:集群架构、核心组件与资源对象
docker·容器·kubernetes·k8s
weixin_420284144 天前
Kubernetes 开发自定义CRD资源
云原生·kubernetes·kubelet
极小狐4 天前
CI 算力饥渴症:Runner 弹性伸缩的架构权衡与落地
ci/cd·kubernetes·devops·弹性伸缩