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

160 阅读3分钟

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)

# 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本地开发测试简单★☆☆☆☆
kopsAWS环境部署中等★★★★☆
Rancher多集群管理简单★★★★☆
OpenShift企业级容器平台复杂★★★★★

3.2 快速创建集群

# 使用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 常用命令速查

# 查看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 资源配额管理

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云平台负载均衡器集成生产环境公网暴露
Ingress7层路由规则管理域名访问管理

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 核心监控指标

# 查看节点资源使用
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部署示例

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. 手动测试拉取
节点NotReady1. 检查kubelet状态 2. 验证网络插件运行情况 3. 查看系统资源使用

8.2 诊断命令组合

# 快速诊断命名空间问题
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)→ 生产环境实践 → 源码研究

[附录] 常用资源列表: