往期回顾
Kubernetes 健康检查:深入Liveness and Readiness Probe
https://medium.com/@sachinadi424/keeping-kubernetes-healthy-liveness-and-readiness-probe-explained-661757b825ff
本文介绍了 Kubernetes 中活动和就绪探测的概念,它们是 Kubernetes 对应用程序 Pod 执行的运行状况检查,以确保它们正在运行并准备好接收流量。它讨论了两种类型的探测器之间的差异、它们的工作原理以及配置它们的最佳实践。
关键点
- 存活探测检查应用程序是否仍在运行,如果存活探测失败,Kubernetes 将重新启动 Pod。
- 就绪性探测检查应用程序是否准备好接收流量,如果就绪性探测失败,Kubernetes 将从服务负载均衡器中删除 Pod。
- 有三种类型的探测器:HTTP、TCP 和 exec 探测器,HTTP 探测器是大多数应用程序的常见选择。
- 配置探测器的最佳实践包括选择正确的探测器类型、设置适当的阈值、选择正确的探测器终结点,以及使用探测器延迟允许容器在探测器开始之前启动。
(零成本)GitOps 管道中的 Kubernetes 资源优化
https://itnext.io/zero-cost-kubernetes-resource-tuning-in-your-gitops-pipelines-fba02f1dd9da
本文讨论了 Kubernetes 资源管理的挑战,例如过度预配资源、浪费宝贵的配额或阻止部署。它使用开源工具和脚本提供解决方案,以帮助分析资源配额利用率,自动生成资源请求建议,并将建议集成到 GitOps 管道中。
关键点
- Kubernetes 资源管理涉及资源配额和 Pod 请求和限制,这可能会导致一些挑战,例如寻找最佳配额设置、避免过度配置以及与各种团队交互以调整配额设置。
- 由于达到资源配额限制,可能会发生部署延迟,这可以通过了解资源配额如何与部署策略交互来缓解。
- 初始资源分配通常是猜测,本文建议使用 Vertical Pod Autoscaler (VPA) 根据监控 Pod 使用情况自动生成资源请求建议。
- 本文提供了用于检查资源配额利用率和生成 VPA 建议的脚本,并讨论了如何将这些建议集成到 GitOps 管道中。
- 本文还提到了其他商业解决方案,以便更深入地了解应用程序使用和资源调优建议。
简化 Kubernetes 开发过程:您的首选工具指南
https://semaphoreci.com/blog/kubernetes-development-tools
本文全面分析和比较了六种流行的现代 Kubernetes 本地开发工具:Skaffold、Tilt、Telepresence、Okteto、Docker Compose 和 Garden。它讨论了每种工具的功能、优势和局限性,以帮助开发人员选择最符合其特定要求和开发工作流程的工具。
关键点
- Skaffold 可自动执行 Kubernetes 应用程序的开发工作流程,为本地开发和 CI/CD 提供全面的解决方案。
- Tilt 通过用户友好的 UI 增强了 Kubernetes 开发人员的体验,但对于更复杂的部署,可能需要额外的设置。
- 网真使开发人员能够在本地运行单个服务,同时将其连接到远程 Kubernetes 集群,从而简化开发过程。
- Okteto 将内部开发循环转移到集群,通过同步本地和远程环境提供无缝的开发体验。
- Docker Compose 虽然不是为 Kubernetes 设计的,但可用于定义和运行多容器应用程序,但可能无法准确表示生产环境。
- Garden 简化了云原生开发环境的设置过程,但与其他工具相比,学习曲线更陡峭。
Kubernetes Secret配置管理
https://medium.com/squareops/transforming-kubernetes-secret-management-d6c25f776bca
本文讨论了在 Kubernetes 环境中安全管理敏感配置和密钥的重要性,以及将 AWS Secrets Manager 与 External-Secrets Operator 和 Config-Reloader 结合使用如何提供强大的解决方案。
关键点
- 需要安全配置和机密管理,以防范外部威胁和内部风险。
- Kubernetes 原生密钥管理的局限性,包括有限的访问控制、密钥类型、加密选项和审计功能。
- 使用 AWS Secrets Manager 克服这些限制并提供增强的安全功能。
- 有关设置 EKS 集群、安装 External-Secrets Operator 和 Config-Reloader 以及与 AWS Secrets Manager 集成的分步指南。
- 演示如何在 AWS Secrets Manager 中动态更新密钥,以及如何将更改自动反映在正在运行的应用程序中。
如何在 Openshift 集群中创建服务
https://medium.com/@rishabhsvats/behind-the-scene-creating-a-service-a0756dccfe4f
本文深入解释了如何在 OpenShift 集群中创建 Service 以公开 Pod 列表。它讨论了 OpenShift 中的不同网络(Pod 网络、服务网络和主机网络),以及 OpenShift SDN(软件定义网络)如何处理 Pod 和外部网络之间的网络。本文还介绍了 kube-proxy 在管理将连接转发到服务端点的规则中的作用。它演练了使用模板创建服务的过程,然后检查为处理服务和 Pod 之间的网络流量而创建的 iptables 规则。
关键点
- OpenShift 有不同的网络:Pod 网络、服务网络和主机网络。
- OpenShift SDN 是 OpenShift 4.13 中默认的 CNI(容器网络接口)提供程序,用于处理 Pod 的网络。
- kube-proxy 负责管理将连接转发到服务端点的规则。
- 使用模板创建服务,该模板将单个端点后面的 Pod 抽象化。
- iptables 规则用于处理 Service 和 Pod 之间的网络流量,包括负载均衡和伪装。
Helm Subcharts 如何轻松地迁移到 Argo Rollouts
https://faun.pub/how-helm-subcharts-make-the-transition-to-argo-rollouts-a-breeze-aaf160924dbf
关键点
- Argo Rollouts 是用于管理 Kubernetes 上高级部署策略的流行工具。
- 迁移到 Argo Rollouts 有两种路径:使用 Rollout 覆盖现有 Deployment 或将新 Rollout 对象指向现有 Deployment。使用 Helm 子图的第二种方法是首选方法。
- 平台工程团队可以使用 Argo Rollouts CRD 维护一个集中的 Helm Chart,允许服务所有者通过将子图表添加到其现有Chart中来轻松加入。这种方法提供了灵活性、可扩展性和更轻松的配置。
如何使用 runc 生成容器
https://medium.com/@rishabhsvats/plumbing-of-spawning-container-with-runc-ed409ac02ae3
本文讨论了如何使用 runc 运行时生成 OCI(开放容器计划)捆绑包并生成容器。它涵盖以下关键点:
关键点
- 可以使用 skopeo 命令行实用程序生成 OCI 映像布局规范。这将创建一个包含 Blob、配置文件和 index.json 文件的目录结构。
- 可以使用 umoci 工具从 OCI 映像布局生成 OCI 捆绑包。捆绑包包含一个config.json文件和容器的根文件系统。
- 通过提供生成的 OCI 包,可以使用 runc 运行时生成容器。需要对 config.json 文件进行一些配置更改,例如将“terminal”设置为 false 并删除“user”部分。
更多K8S学习资料以及SRE学习手册,请扫码关注哦!