当前位置: 首页 > news >正文

2. kubernetes操作概览

以下是 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 文件部署
  1. 编写 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
  1. 应用配置:
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 注入配置
  1. 创建 ConfigMap:
apiVersion: v1
kind: ConfigMap
metadata:name: app-config
data:app.properties: |logging.level=INFOserver.port=8080
  1. 挂载到 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
  1. 部署 Prometheus Operator:
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/main/bundle.yaml
  1. 配置 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. 图形化管理工具

  1. 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/
    
  2. Lens
    跨平台桌面客户端,提供可视化集群管理。


总结

核心流程
构建镜像 → 定义 YAML → 部署资源 → 暴露服务 → 监控维护
关键操作
• 使用 kubectl 管理资源生命周期。
• 通过 Deployment 和 Service 管理应用部署与访问。
• 利用 ConfigMap 和 Secret 分离配置与代码。
• 通过 PVC 和 StorageClass 管理持久化存储。
• 结合 HPA 和监控实现自动化运维。

掌握这些操作后,即可高效管理 Kubernetes 集群中的容器化应用。

相关文章:

  • Gradle相关配置文件的关系、作用及使用方式
  • 【时时三省】(C语言基础)选择结构程序设计习题1
  • Python异步编程入门:Async/Await实战详解
  • vector常用的接口和底层
  • AI对话高阶玩法:解锁模型潜能的实用案例教程
  • 消息中间件面试题
  • 开源TTS项目GPT-SoVITS,支持跨语言合成、支持多语言~
  • java面向对象06:封装
  • cmd 终端输出乱码问题 |Visual Studio 控制台输出中文乱码解决
  • Day08【基于预训练模型分词器实现交互型文本匹配】
  • 考研数据结构之树与二叉树的应用:哈夫曼树、哈夫曼编码与并查集
  • JavaWeb开发 Servlet底层 从概念到HTTP请求 到web服务器再到servlet
  • ROS2 常用
  • How to run ERSEM
  • linux上安装vimplus 从零开始
  • 使用Python构建桌面图片浏览器
  • cursor如何回退一键回退多个文件的修改
  • Docker 安装 Elasticsearch 8.x
  • Java二叉树深度解析:结构、算法与应用实践指南
  • 【教程】检查RDMA网卡状态和测试带宽 | 附测试脚本
  • 数智时代出版专业技能人才培养研讨会在沪举行
  • 冲线!“天工”夺得全球首个人形机器人半马冠军
  • 一周文化讲座|读书是通往世界的路
  • 英国称担忧中国无人机拍摄英国重要基建高清图像,外交部回应
  • 对话|女足国脚,离开体制“再就业”
  • 奥园集团:截至3月底逾期债务约438.33亿元