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

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

相关文章:

  • C++刷题(四):vector
  • 没有数据湖?可观测性也许不再有效!
  • 透视飞鹤2024财报:如何打赢奶粉罐里的科技战?
  • deepseek对IBM MQ错误日志分析
  • java项目挂机自动重启操作指南
  • STM32八股【5】----- TIM定时器
  • 堆叠虚拟化2
  • 界面自适应new 使用postcss-pxtorem
  • FreeRTOS 知识点总结(二):同步机制与应用场景
  • 如何在JMeter中配置断言,将非200状态码视为测试成功
  • java 洛谷题单【数据结构1-4】图的基本应用
  • 15:00开始面试,15:08就出来了,问的问题有点变态。。。
  • 射频功率放大器保护电路简略
  • 消息中间件对比与选型指南:Kafka、ActiveMQ、RabbitMQ与RocketMQ
  • Oracle数据库数据编程SQL<3.6 PL/SQL 包(Package)>
  • 25.4.1学习总结【Java】
  • 嵌入式EMC设计面试题及参考答案
  • 汇编学习之《移位指令》
  • Citus源码(2)分布式读流程分析与基础概念梳理(shardid、placementid、groupid)
  • 【QT】QT的多界面跳转以及界面之间传递参数
  • 北京韩美林艺术馆党支部书记郭莹病逝,终年40岁
  • “80后”萍乡市安源区区长邱伟,拟任县(区)委书记
  • 上海高院与上海妇联签协议,建立反家暴常态化联动协作机制
  • 商务部:中方将适时发布中美经贸磋商相关消息
  • “一百零一个愿望——汉字艺术展”亮相意大利威尼斯
  • 人民日报评外卖平台被约谈:合法规范经营,公平有序竞争