以下是 Kubernetes 的核心操作概覽,涵蓋常用命令、資源管理和典型場景的操作流程:
1. 核心操作工具
(1) kubectl
命令行工具
Kubernetes 的所有操作均通過 kubectl
實現,常用命令如下:
操作類型 | 命令示例 | 作用說明 |
---|---|---|
查看資源狀態 | kubectl get pods | 查看所有 Pod |
kubectl get nodes | 查看集群節點狀態 | |
kubectl describe pod <pod-name> | 查看 Pod 詳細信息(含事件日志) | |
部署應用 | kubectl apply -f deployment.yaml | 通過 YAML 文件創建/更新資源 |
刪除資源 | kubectl delete pod <pod-name> | 刪除指定 Pod |
kubectl delete -f deployment.yaml | 通過 YAML 文件刪除資源 | |
調試容器 | kubectl logs <pod-name> -c <container> | 查看容器日志 |
kubectl exec -it <pod-name> -- /bin/sh | 進入容器交互式終端 | |
資源編輯 | kubectl edit deployment <deploy-name> | 直接編輯資源配置(實時生效) |
端口轉發 | kubectl port-forward <pod-name> 8080:80 | 將本地端口映射到 Pod 端口 |
2. 部署應用
(1) 部署一個簡單應用(以 Nginx 為例)
# 通過命令行直接創建 Deployment 和 Service
kubectl create deployment nginx --image=nginx:1.23
kubectl expose deployment nginx --port=80 --type=NodePort# 查看服務訪問端口
kubectl get service nginx
(2) 通過 YAML 文件部署
- 編寫
nginx-deployment.yaml
:
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.23ports:- containerPort: 80
- 應用配置:
kubectl apply -f nginx-deployment.yaml
3. 服務暴露與網絡
(1) 通過 Service 暴露應用
apiVersion: v1
kind: Service
metadata:name: nginx-service
spec:type: NodePortselector:app: nginxports:- protocol: TCPport: 80targetPort: 80nodePort: 30080 # 外部訪問端口(范圍 30000-32767)
(2) 使用 Ingress 定義 HTTP 路由
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: nginx-ingress
spec:rules:- host: example.comhttp:paths:- path: /pathType: Prefixbackend:service:name: nginx-serviceport:number: 80
4. 配置與密鑰管理
(1) 使用 ConfigMap 注入配置
- 創建 ConfigMap:
apiVersion: v1
kind: ConfigMap
metadata:name: app-config
data:app.properties: |logging.level=INFOserver.port=8080
- 掛載到 Pod:
spec:containers:- name: appimage: my-app:1.0volumeMounts:- name: config-volumemountPath: /etc/configvolumes:- name: config-volumeconfigMap:name: app-config
(2) 使用 Secret 管理敏感信息
# 通過命令行創建 Secret
kubectl create secret generic db-secret \--from-literal=username=admin \--from-literal=password=123456
在 Deployment 中引用:
env:
- name: DB_USERNAMEvalueFrom:secretKeyRef:name: db-secretkey: username
5. 存儲管理
(1) 動態創建持久化存儲(PVC)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: data-pvc
spec:accessModes:- ReadWriteOnceresources:requests:storage: 10Gi
掛載到 Pod:
volumeMounts:
- name: data-volumemountPath: /data
volumes:
- name: data-volumepersistentVolumeClaim:claimName: data-pvc
6. 擴縮容與更新
(1) 手動擴縮容
kubectl scale deployment nginx --replicas=5
(2) 自動擴縮容(HPA)
kubectl autoscale deployment nginx --cpu-percent=50 --min=2 --max=10
(3) 滾動更新
kubectl set image deployment/nginx nginx=nginx:1.24
kubectl rollout status deployment/nginx # 查看更新狀態
kubectl rollout undo deployment/nginx # 回滾到上一版本
7. 監控與日志
(1) 查看資源使用情況
kubectl top nodes # 查看節點資源使用
kubectl top pods # 查看 Pod 資源使用
(2) 集成 Prometheus + Grafana
- 部署 Prometheus Operator:
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/main/bundle.yaml
- 配置 ServiceMonitor 監控應用指標:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:name: app-monitor
spec:endpoints:- port: webselector:matchLabels:app: nginx
8. 權限控制(RBAC)
(1) 創建 ServiceAccount
apiVersion: v1
kind: ServiceAccount
metadata:name: my-serviceaccount
(2) 定義 Role 和 RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:name: pod-reader
rules:
- apiGroups: [""]resources: ["pods"]verbs: ["get", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: read-pods
subjects:
- kind: ServiceAccountname: my-serviceaccount
roleRef:kind: Rolename: pod-readerapiGroup: rbac.authorization.k8s.io
9. 故障排查
(1) 查看事件日志
kubectl get events --sort-by=.metadata.creationTimestamp
(2) 調試 Pod
kubectl describe pod <pod-name> # 查看 Pod 詳細信息(事件、狀態)
kubectl logs <pod-name> -c <container> --previous # 查看崩潰容器的日志
10. 圖形化管理工具
-
Kubernetes Dashboard
官方 Web UI,支持資源查看、部署和刪除操作。kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml kubectl proxy # 本地訪問 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
-
Lens
跨平臺桌面客戶端,提供可視化集群管理。
總結
? 核心流程:
構建鏡像 → 定義 YAML → 部署資源 → 暴露服務 → 監控維護
? 關鍵操作:
? 使用 kubectl
管理資源生命周期。
? 通過 Deployment 和 Service 管理應用部署與訪問。
? 利用 ConfigMap 和 Secret 分離配置與代碼。
? 通過 PVC 和 StorageClass 管理持久化存儲。
? 結合 HPA 和監控實現自動化運維。
掌握這些操作后,即可高效管理 Kubernetes 集群中的容器化應用。