k8s常用总结

1. Kubernetes 架构概览

  • 主节点(Master)

    负责集群管理,包括 API Server、Controller Manager、Scheduler 和 etcd 存储。

  • 工作节点(Node)

    运行 Pod 和容器,包含 kubelet、kube-proxy 以及容器运行时(如 containerd、CRI-O)。

  • Pod

    最小的调度单位,一个 Pod 内可包含一个或多个紧密关联的容器,通常共享网络命名空间和存储卷。

  • Service

    提供对一组 Pod 的稳定访问,通过 ClusterIP、NodePort、LoadBalancer 等方式实现服务暴露。

  • Namespace

    用于逻辑隔离不同项目或团队的资源,方便管理和配额控制。


2. 常用 kubectl 命令

  • 查看集群状态:

    • kubectl get nodes:列出所有节点。

    • kubectl get pods --all-namespaces:查看所有 Pod 状态。

    • kubectl cluster-info:查看集群基本信息。

  • 资源管理:

    • kubectl get <资源类型>(如 pods、services、deployments)

    • kubectl describe <资源类型> <名称>:查看资源详情。

    • kubectl delete <资源类型> <名称>:删除资源。

    • kubectl apply -f <yaml文件>:应用配置文件创建或更新资源。

    • kubectl edit <资源类型> <名称>:在线编辑资源配置。

  • 日志和调试:

    • kubectl logs <pod名称> [-c 容器名称]:查看 Pod 日志。

    • kubectl exec -it <pod名称> -- /bin/bash:进入 Pod 内部调试。

    • kubectl port-forward <pod名称> 本地端口:容器端口:端口转发,便于调试内部服务。

  • 资源监控:

    • kubectl top nodeskubectl top pods:显示节点和 Pod 的资源使用情况(需 Metrics Server 支持)。

3. 部署与扩展

  • Deployment 和 ReplicaSet:

    • 使用 Deployment 管理应用的声明式更新和版本回滚。

    • kubectl rollout status deployment/<名称>:查看部署状态。

    • kubectl rollout history deployment/<名称>:查看更新历史。

  • StatefulSet:

    用于有状态服务,如数据库集群,保证 Pod 顺序启动与稳定的持久化存储。

  • DaemonSet:

    在每个节点上部署一个 Pod,用于日志收集(如 Filebeat)、监控代理等场景。

  • Job 与 CronJob:

    • Job 用于一次性任务。

    • CronJob 用于周期性任务调度。


4. 网络与服务发现

  • Service 类型:

    • ClusterIP(默认):集群内部访问。

    • NodePort:暴露固定端口,外部可通过节点 IP 访问。

    • LoadBalancer:结合云厂商负载均衡器,实现外部访问。

  • Ingress:

    定义集群外部访问路由规则,并通过 Ingress Controller 实现负载均衡与 SSL/TLS 终结。


5. 存储与数据持久化

  • Volume 与 PersistentVolume(PV)/PersistentVolumeClaim(PVC):

    • 临时存储由 Pod 生命周期管理。

    • PV/PVC 模型用于提供持久存储,支持动态或静态分配存储资源。

  • ConfigMap 和 Secret:

    • ConfigMap 用于管理非敏感配置信息。

    • Secret 用于存储敏感数据(如密码、密钥等),以 Base64 方式编码。


6. 调试与排查

  • 事件查看:

    • kubectl get events --sort-by='.lastTimestamp':查看最近的集群事件,排查错误或警告。
  • 诊断工具:

    • 使用 kubectl describe 检查资源详细状态。

    • 使用 kubectl logs 结合 grep 命令过滤关键字,定位问题。

    • 利用 Dashboard、Prometheus、Grafana 等监控工具实时观察指标变化。


7. 自动化与运维

  • Helm

    使用 Helm 包管理工具,可以将常用应用打包成 Chart,简化部署和版本管理。

  • CI/CD 集成

    结合 Jenkins、GitLab CI 等工具,实现 Kubernetes 集群的自动部署和滚动更新。

  • 资源配额与限额

    通过 LimitRange 和 ResourceQuota 控制 Namespace 内资源使用,防止单个团队或应用占用过多资源。


8. 安全与访问控制

  • RBAC(基于角色的访问控制):

    配置 ClusterRole、Role 和 RoleBinding 控制集群资源的访问权限。

  • 网络策略(Network Policy):

    限制 Pod 之间或与外部的网络流量,增强安全性。

  • 审计日志

    开启 Kubernetes 审计日志,记录 API 调用情况,便于安全追溯。


9. 其他常用工具和实践

  • Kubectl 插件

    kubectxkubens 分别用于切换集群和 Namespace;stern 用于多 Pod 日志实时跟踪。

  • 配置管理

    使用 GitOps 流程(如 ArgoCD、Flux)管理 Kubernetes 配置,实现版本化和自动化部署。

  • 资源监控与告警

    结合 Prometheus、Grafana 以及 Alertmanager,对集群健康状态进行实时监控和告警。

相关推荐
Asthenia041214 分钟前
像整理玩具一样:DFA 化简和状态等价性
后端
CC.cc.23 分钟前
Linux系统之systemctl管理服务及编译安装配置文件安装实现systemctl管理服务
linux·运维·服务器
Asthenia041228 分钟前
编译原理:打包思维-NFA 怎么变成 DFA
后端
非ban必选32 分钟前
spring-ai-alibaba第五章阿里dashscope集成mcp远程天气查询tools
java·后端·spring
Asthenia04121 小时前
从直觉到严谨:编译原理中的非确定有限自动机(NFA)
后端
qq_339282231 小时前
docker之network
运维·docker·容器
snowfoootball1 小时前
基于 Ollama DeepSeek、Dify RAG 和 Fay 框架的高考咨询 AI 交互系统项目方案
前端·人工智能·后端·python·深度学习·高考
Asthenia04121 小时前
从入门到精通:编译原理中的确定有限自动机(DFA)
后端
Asthenia04121 小时前
深入浅出:编译原理中的正规式与正规集
后端
Asthenia04122 小时前
从零开始:Dockerfile 编写与 Spring Cloud 项目部署到 Docker Compose
后端