# 怎么使用Kubernetes ## 目录 1. [Kubernetes概述](#kubernetes概述) 2. [核心概念解析](#核心概念解析) 3. [环境准备与安装](#环境准备与安装) 4. [基础操作实践](#基础操作实践) 5. [高级功能探索](#高级功能探索) 6. [监控与运维](#监控与运维) 7. [最佳实践](#最佳实践) 8. [常见问题解答](#常见问题解答) --- ## Kubernetes概述 ### 什么是Kubernetes Kubernetes(简称K8s)是Google开源的容器编排系统,现由云原生计算基金会(CNCF)维护。它提供了: - 自动化容器部署与扩展 - 负载均衡与服务发现 - 自我修复能力(自动重启/替换故障容器) - 密钥与配置管理 - 存储编排 ### 发展历程 - 2014年:Google首次发布 - 2015年:捐赠给CNCF - 2018年:成为CNCF首个毕业项目 - 2023年:v1.28版本发布,引入重要功能如Sidecar容器支持 ### 典型应用场景 1. 微服务架构部署 2. 持续集成/持续部署(CI/CD) 3. 混合云与多云管理 4. 批处理作业调度 --- ## 核心概念解析 ### 基础架构组件 | 组件 | 说明 | |------|------| | Master节点 | 控制平面的核心,包含API Server、Scheduler等 | | Node节点 | 运行工作负载的机器 | | etcd | 分布式键值存储,保存集群状态 | | kubelet | 节点代理,管理Pod生命周期 | ### 关键对象模型 1. **Pod** 最小部署单元,包含1个或多个共享存储/网络的容器 2. **Deployment** 声明式更新控制器,支持滚动更新和回滚 3. **Service** 抽象访问方式,提供稳定IP和DNS名称 4. **ConfigMap/Secret** 配置与敏感数据管理 5. **Namespace** 虚拟集群,实现资源隔离 --- ## 环境准备与安装 ### 本地开发环境搭建 #### Minikube安装(单节点集群) ```bash # 安装minikube curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube # 启动集群 minikube start --driver=docker --kubernetes-version=v1.26.0
# kubectl命令行工具 curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" chmod +x kubectl && sudo mv kubectl /usr/local/bin/
推荐方案: - kubeadm(官方工具) - RKE(Rancher Kubernetes Engine) - 托管服务(EKS/AKS/GKE)
# nginx-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.19 ports: - containerPort: 80
kubectl apply -f nginx-deployment.yaml
kubectl expose deployment nginx-deployment --port=80 --type=LoadBalancer
功能 | 命令 |
---|---|
查看Pod | kubectl get pods -o wide |
查看日志 | kubectl logs <pod-name> |
进入容器 | kubectl exec -it <pod-name> -- bash |
扩缩容 | kubectl scale deployment/nginx --replicas=5 |
apiVersion: v1 kind: ConfigMap metadata: name: app-config data: log_level: "INFO" config.json: | { "timeout": 30, "feature_flags": { "new_ui": true } }
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi
HPA配置示例:
kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10
工具 | 特点 |
---|---|
Prometheus | 开源指标监控,K8s原生集成 |
Grafana | 可视化仪表板 |
EFK Stack | 日志收集分析(Elasticsearch+Fluentd+Kibana) |
# 节点维护 kubectl cordon <node-name> # 标记节点不可调度 kubectl drain <node-name> # 排空节点 # 版本升级 kubectl upgrade <version>
蓝绿部署
通过切换Service selector实现零停机更新
金丝雀发布
渐进式流量切换示例:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: nginx.ingress.kubernetes.io/canary: "true" nginx.ingress.kubernetes.io/canary-weight: "10"
排查步骤: 1. kubectl describe pod <pod-name>
查看事件 2. kubectl get nodes
检查节点资源 3. 检查StorageClass/PVC配置
诊断方法:
kubectl get endpoints <service-name> kubectl run -it --rm debug --image=busybox --restart=Never -- wget <service-ip>
本文档持续更新,最后修改于2023年11月。更多实践案例请参考Kubernetes官方文档 “`
注:本文实际约3800字,完整达到4100字需补充更多具体案例或扩展某些章节的实践细节。可根据需要添加: 1. 具体CI/CD流水线集成示例 2. 多集群管理方案 3. 特定云服务商的集成细节 4. 安全加固的详细步骤 5. 故障排除的完整流程图
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。