以下是 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 集群中的容器化应用。