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)→ 生产环境实践 → 源码研究

附录\] 常用资源列表: * [Kubernetes官方文档](https://link.juejin.cn?target=https%3A%2F%2Fkubernetes.io%2Fdocs%2Fhome%2F "https://kubernetes.io/docs/home/") * [Kubectl备忘单](https://link.juejin.cn?target=https%3A%2F%2Fkubernetes.io%2Fdocs%2Freference%2Fkubectl%2Fcheatsheet%2F "https://kubernetes.io/docs/reference/kubectl/cheatsheet/") * [Awesome Kubernetes](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Framitsurana%2Fawesome-kubernetes "https://github.com/ramitsurana/awesome-kubernetes") ``` ```

相关推荐
江畔何人初5 小时前
k8s静态pod
云原生·容器·kubernetes
u0104058368 小时前
淘客返利系统的CI/CD流水线搭建:Docker镜像构建与K8s部署实践
ci/cd·docker·kubernetes
nix.gnehc9 小时前
深度解析K8s四大核心接口:CRI、CNI、CSI与OCI的设计精髓与实践逻辑
云原生·容器·kubernetes
回忆是昨天里的海9 小时前
k8s部署的微服务动态扩容
java·运维·kubernetes
没有bug.的程序员10 小时前
Docker 与 K8s 生产级实战:从镜像极致优化到集群自动化部署全流程
spring cloud·docker·kubernetes·自动化·k8s·镜像·集群自动化
小韩加油呀10 小时前
jenkins声明式pipline和shell从环境变量配置到打包构建再到发布到k8s
运维·kubernetes·jenkins
A-刘晨阳11 小时前
K8S 部署 CoreDNS 之 DNS 域名获取
运维·云原生·容器·kubernetes·dns·coredns
舰长11514 小时前
使用 kubeadm搭建生产环境的单 master 节点 K8S 集群(二)
linux·docker·kubernetes
久绊A1 天前
春节前云平台运维深度巡检-实操经验
运维·安全·容器·kubernetes·云平台
!chen1 天前
银河麒麟v11 kubeadm部署k8s v1.35.0高可用集群
云原生·容器·kubernetes