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,对集群健康状态进行实时监控和告警。

相关推荐
数巨小码人6 分钟前
Linux常用指令
linux·运维·服务器
南囝coding10 分钟前
关于我的第一个产品!
前端·后端·产品
Linux运维老纪26 分钟前
Linux之七大难命令(The Seven Difficult Commands of Linux)
linux·运维·服务器·云计算·运维开发
北漂老男孩41 分钟前
Spring Boot 自动配置深度解析:从源码结构到设计哲学
java·spring boot·后端
陈明勇43 分钟前
MCP 实战:用 Go 语言开发一个查询 IP 信息的 MCP 服务器
人工智能·后端·mcp
小咕聊编程1 小时前
【含文档+PPT+源码】基于SpringBoot+Vue的移动台账管理系统
java·spring boot·后端
景天科技苑1 小时前
【Rust结构体】Rust结构体详解:从基础到高级应用
开发语言·后端·rust·结构体·关联函数·rust结构体·结构体方法
-曾牛1 小时前
Spring Boot常用注解详解:实例与核心概念
java·spring boot·后端·spring·java-ee·个人开发·spring boot 注解
张书名1 小时前
高性能服务器配置经验指南3——安装服务器可能遇到的问题及解决方法
运维·服务器
得物技术1 小时前
得物业务参数配置中心架构综述
后端·架构