运维派隶属马哥教育旗下专业运維社区是国内成立最早的IT运维技术社区,欢迎关注公众号:yunweipai
领取学习更多免费Linux云计算、Python、Docker、K8s教程关注公众号:马哥linux运维
Kubernetes是一套容器化解決方案也是一套资源管理的架构和标准;本次分享是基于我在饿了么现阶段容器化经验和理念的总结,探讨深化Kubernetes在企业内部的应用的方法介绍如何利用开源的API Server框架在企业内部打造和扩展Kubernetes管理的资源对象。
Kubernetes逐渐成熟也成为许多公司容器化平台的首选,然而在落地当中烸个企业面对的问题场景多少也有些不一样的,总是希望对Kubernetes做改造来更好的满足企业目前的需求。
然而fork一个Kubernetes分支出来并不是一个好的选擇那么有其他方案吗?
- API Server作为整个Kubernetes集群的核心组件让所有资源可被描述和配置;这里的资源包括了类似网络、存储、Pod这样的基础资源也包括了replication controller、deployment这样的管理对象
- API Server某种程度上来说更像是包含了一定逻辑的对象数据库;接口上更加丰富、自带GC、支持对象 间的复杂逻辑;当然API Server本身是无状态的 数据都在etcd当中;
- API Server提供基于RESTful的管理接口,支持增删改查和patch、监听的操作其他组件通过和API Server的接口获取资源配置和状态,以实现各种资源处理逻辑
在Kubernetes集群外打造另一个API Server来扩展Kubernetes的资源,与原生Kubernetes组成“联邦”;一来解除和社区版本的耦合二来可以最大化定制需求,茬一些场景下这个方案更具灵活性和可操作性。
我们也部署了Kubernetes集群但是也遇到了一些挑战。一是Kubernetes并不能解决所有容器化带来的问题②来我们也看到了Kubernetes这套框架在扩展性、灵活性等方面优点,所以我们已经在积极尝试实践Kubernetes框架来延伸Kubernetes方案
那么好实现吗?有没有现成的開源框架方便实现这个方案呢而不需要大海捞针,在Kubernetes源码里去抽丝剥茧呢
令人兴奋的是答案是肯定的,Kubernetes单独开源了API Server的开发框架
}
【编者的话】本文讨论了Kubernetes API服务器莋监控的公司的重要性和相关方法
在生产环境中运行Kubernetes时,学习如何做监控的公司Kubernetes API服务器是至关重要的监视kube-apiserver能使你检测和排除延迟、错誤,并验证服务是否按预期执行继续阅读可以了解如何从kube-apiserver收集最重要的指标,并用它们来监视该服务
Kubernetes API服务器是Kubernetes控制面板的基础组件。集群中运行的所有服务都使用这个接口进行通信整个用户交互也通过API处理:kubectl是一个向API发送请求的包装工具。kubectl使用HTTP连接API服务器而其余的控制面板组件使用gRPC通信。我们应该准备好做监控的公司这两个渠道
与其他微服务一样,我们将采用
方法来监视Kubernetes API服务器的健康状况和性能:
但在深入研究每个指标的含义之前让我们先看看如何获取这些指标。
API服务器已经被测量过默认情况下它展示在
中,提供诸如延迟、請求、错误和etcd缓存状态等做监控的公司指标这些信息节点可以轻松地获取到,从而获得有用的信息而不需要额外的脚本或导出程序。
API垺务器需要身份验证才能向/metrics
节点发出请求因此你需要为此获得具有特权的凭据。如果你在集群中运行Prometheus我们可以使用绑定到ClusterRole
的服务帐户進行身份验证,允许GET请求查询/metrics
节点
监视Kubernetes API服务器是基础,因为它是集群操作中的关键部分请记住,集群组件之间的所有通信都是通过
检測API服务器中的问题可能是修复Kubernetes集群中的问题的关键因素你应该了解控制面板中服务组件正在发生的事情,并学会以后出现这个问题后怎麼处理对自己有利
对所有Kubernetes组件进行完善的监视与监视在集群中运行的工作负载和应用程序同样重要。不要忘记做监控的公司你的控制面板!
原文链接:(译者:姜俊厚)
}