Kubernetes学习周报(第六期 ):K8S API 实用指南;Etcd灾难恢复方案;K8S Gateway API介绍

文摘   2024-07-20 22:14   中国  

往期回顾

Kubernetes学习周报(第五期 ): K8S隐藏的“OOM 终止”问题;一个K8S命令引发的悲剧;Cilium的BGP功能

Kubernetes学习周报(第四期 ): K8S中使用 Wireshark;K8S安全清单;如何缩小Docker镜像

Kubernetes学习周报(第三期 ): Kubernetes 健康检查,如何使用 runc 生成容器

Kubernetes学习周报 : 一周好文推荐,K8s 网络请求分析,多集群 Kubernetes 的 7 个注意事项 

 

Kubernetes学习周报 : 一周好文推荐


Kubernetes API 实用指南 


https://blog.kubesimplify.com/practical-guide-to-kubernetes-api


文是理解和使用 Kubernetes API 的实用指南。它涵盖了 Kubernetes API 的基础知识,包括其 RESTful 性质、访问 API 的方式以及涉及资源、API 组和版本的内部结构。本文还提供了一个实践演示,演示如

何使用 curl 列出 Kubernetes 集群中所有正在运行的 pod,以及进一步探索的提示。

关键点

  • - Kubernetes 是一个 API 驱动的平台,每个操作都是 API 交互。

  • - 了解 Kubernetes API 可以更深入地控制集群,实现自动化、定制以及与其他工具的集成。

  • - Kubernetes API 是 RESTful 的,遵循无状态通信、统一接口和自描述消息等原则。

  • - kube-apiserver 组件将 Kubernetes API 暴露给集群中的用户和组件。

  • - 有多种方法可以访问 Kubernetes API:通过 kubectl、使用 curl 的 REST 调用以及使用各种编程语言的客户端库。[    

  • - API 结构围绕资源(entities)和操作(actions)展开,资源是可以独立操作的端点。

  • - Kubernetes API 组为简单起见组织资源类型并扩展 API 的功能,主要类别包括核心组和命名组。

  • - 每个 API 组都独立进行版本控制,经历 alpha、beta 和稳定等阶段。

  • - Kubernetes manifests 中的 “kind” 字段指定了资源的模式,这对于客户端-服务器通信中的序列化和反序列化非常重要。

  • - 提供了一个分步演示,使用 curl 列出集群中所有正在运行的 pod,需要通过 CA 证书、客户端证书和客户端密钥进行身份验证。

  • - 进一步的探索提示包括列出所有资源和 API 版本、使用 kubectl 原始模式以及查看 kubectl 进行的 API 调用。


Etcd - 灾难恢复解决方案 

https://medium.com/@alruwayti/k8s-etcd-dr-solution-bc8d9e43dadf 

本文讨论的是 Kubernetes (K8s) 集群的灾难恢复 (DR) 解决方案,重点介绍 ETCD 组件。它解释了在跨两个区域的延伸集群中管理 ETCD 的挑战,并提供了一种保持高可用性和一致性的解决方案。

关键点

  • - 介绍在两个可用区运行Kubernetes集群进行容灾的问题,重点介绍ETCD。

  • - 解释扩展的 Kubernetes 集群以及使用 ArgoCD 和 Rancher 等工具管理它们的复杂性

  • - 讨论了在两个区域之间划分主节点时与 ETCD 的仲裁问题。

  • - 解释仲裁概念及其在 ETCD 中维护集群可用性的重要性。

  • - 描述涉及自动化脚本以处理 ETCD 停机时间和恢复操作的拟议解决方案。

  • - 关于如何在一个区域宕机时管理 ETCD 集群以及如何在它恢复运行时重新集成它的详细步骤。


Kubernetes Gateway API -从实践中吸取的经验教训 

https://danoncoding.com/kubernetes-gateway-api-lessons-from-the-trenches-a1f6875d5d84

Kubernetes Gateway API 是经典 Ingress 的替代品,提供标准化的 Kubernetes Service Mesh 规范,并将外部访问管理与到单个工作负载的路由定义分开。这种分离减少了维护瓶颈和跨团队协调,支持多种协议,并且在一年的使用中取得了积极的成果,尽管最初遇到了一些挑战。

   

关键点

  • - Kubernetes Gateway API 将外部访问管理与路由定义分离,从而减少摩擦和跨团队协调。

  • - 它支持 TCP、UDP 和 gRPC 等多种协议,不像 Ingress 只支持 HTTP(s)。

  • - Gateway 资源指定如何访问集群,而 HTTPRoute 资源定义到工作负载的路由。

  • - 入口点和路由定义的解耦对于动态工作负载是有益的。

  • - 作者对 API 的体验是积极的,许多优点大于缺点,这些问题正在迅速得到解决。


Kubernetes事件 - 集群的信息源 

https://decisivedevops.com/kubernetes-events-news-feed-of-your-kubernetes-cluster-826e08892d7a/


本文重点介绍了 Kubernetes event,并学习如何使用 kubectl 事件来有效地监控和排查集群的问题。事件由各种 Kubernetes 组件生成,例如调度器、kubelet、控制器等,用于捕获与 pod、节点和其他资源相关的信息。如果正在调度 pod、容器崩溃或节点磁盘空间不足,则事件将具有状态记录。将 Kubernetes 事件视为集群活动的编年史,它们为各种集群资源提供了所有重要活动的集中视图。

关键点

  • - Kubernetes 事件对于监控和排查集群问题至关重要,它提供了与 Pod、节点和其他资源相关的活动的集中视图。

  • - “kubectl get events”和“kubectl events”命令都检索事件,但其默认排序方式(按发生时间)有所不同。

  • - Kubernetes v1.19 引入了新的“events.k8s.io/v1”API 版本,与旧的“v1”API 相比,它提供了更结构化和更具表现力的事件信息。    

  • - 默认情况下,事件会在 etcd 中临时存储一小时,但可以使用 '--event-ttl' 标志或外部解决方案来配置此持续时间以延长保留时间。

  • - Kubernetes 聚合事件发生,跟踪元数据,如第一次和最后一次出现的时间戳和总数,而不是单独存储每次发生。

  • - 事件具有生存时间 (TTL),该时间会随着每次新事件的出现而重置,如果同一事件频繁重复,则允许同一事件在系统中持续较长时间。

  • - Kubernetes 中的事件对象具有特定的结构和字段,与其他 Kubernetes 对象类似,可以以 JSON 格式输出,以便进行详细检查。

  • - “kubectl 事件”的实际用例包括列出命名空间中的最近事件、监视特定资源的事件、按类型过滤事件以及监控与安全相关的活动。


在K8S集群中制定策略将镜像库列入白名单

https://medium.com/@alparslanuysal/whitelisting-image-registries-44150c86c4ac

镜像仓库对于存储和分发容器镜像至关重要,而容器镜像对于集群环境至关重要。确保这些镜像来自受信任的来源对于安全性至关重要。本文讨论了使用可靠的公共和私有镜像仓库(如 Dockerhub、Redhat Catalog 和 gcr.io)的重要性,并强调了需要严格的组织策略来控制镜像源。它还解释了如何在 Kubernetes 中实现 OPA Gatekeeper 以执行这些策略并确保仅使用受信任的映像。

   

关键点

  • - 镜像仓库存储和分发容器镜像,其安全性对于集群环境至关重要。

  • - 应从可靠的来源下载基础镜像,以防止恶意软件的侵害并快速修复漏洞。

  • - 使用 Dockerhub 需要谨慎,因为它是一个公共注册表,任何人都可以在其中上传镜像

  • - 组织策略应将容器镜像的使用限制为特定的安全镜像库

  • - OPA Gatekeeper 可以部署在 Kubernetes 中,以执行策略,确保仅从受信任的来源下载镜像。

  • - 示例策略和测试场景演示了如何将特定镜像库(如 Dockerhub)列入白名单。


如何通过仅使用您需要的 Istio 标签来大幅减少 Prometheus 负载和基数     

 

https://itnext.io/how-to-massively-reduce-prometheus-load-and-cardinality-by-only-using-istio-labels-you-need-75bcf41ff5d3

本文提供了关于通过自定义 Istio 标签以仅包含可观察性所必需的标签来减少 Prometheus 负载和基数的指导,强调了管理基数以防止系统过载的重要性。

  

关键点

  • - 在 Prometheus 中管理基数对于系统性能和成本效益至关重要。

  • - 可以使用 istioOperator 清单中的 tags_to_remove 选项自定义 Istio 的指标标签。

  • - 建议在非生产环境中进行全面测试,以避免对集群行为产生意外影响。

  • - 本文提供了一个示例配置,用于从指标中删除特定标签,从而降低存储成本并提高 Prometheus 性能

  • - 观察结果表明,这些优势显著,包括降低 s3 存储成本和提高 Prometheus 效率。

  • - Istio Operator 管理 Kubernetes 集群上的 Istio 资源,更新其配置可能会影响集群行为

  • - 本文强调了验证更改的重要性,并指出 Istio 代理容器可能需要重新启动才能使更改生效.


K8S安全手册分享,星球小伙伴自取! 




加入知识星球,共同探索云原生学习之旅!

更多K8S学习资料以及SRE学习手册,请扫码关注哦!

         

 

         

 

    


云原生SRE
懂点K8S的SRE,关注云原生、DevOps、AI&ChatGPT等技术热点
 最新文章