# 怎么使用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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。