使用 C# 获取 Kubernetes 集群资源信息

点击上方蓝字
关注我们
(本文阅读时间:15分钟)
大家好 , 我是本期的微软 MVP 实验室研究员-严振范 。 今天我将通过代码示例为大家分享如何使用 Kubernetes API Server 编写组件 , 从 K8S 中获取集群的资源对象信息 。
微软MVP实验室研究员
使用 C# 获取 Kubernetes 集群资源信息
文章图片

严振范
微软最有价值专家 , 目前正在学习微服务相关的知识 , 可以多交流哟~
前言
前段时间使用 C# 写了个项目 , 使用 Kubernetes API Server , 获取信息以及监控 Kubernetes 资源 , 然后结合 Neting 做 API 网关 。
体验地址 http://neting.whuanle.cn:30080/
账号 admin , 密码 admin123
使用 C# 获取 Kubernetes 集群资源信息
文章图片

本篇文章主要介绍 , 如何通过 C# 开发基于 Kubernetes的应用 , 实现获取 Kubernetes 中各种资源的信息 , 以及实现 Conroller 的前提知识 。
Kubernetes API Server
kube-apiserver 是 k8s 主要进程之一 , apiserver 组件公开了 Kubernetes API (HTTP API) , apiserver 是 Kubernetes 控制面的前端 , 我们可以用 Go、C# 等编程语言写代码 , 远程调用 Kubernetes , 控制集群的运行 。 apiserver 暴露的 endiont 端口是 6443 。
为了控制集群的运行 , Kubernetes 官方提供了一个名为 kubectl 的二进制命令行工具 , 正是 apiserver 提供了接口服务 , kubectl 解析用户输入的指令后 , 向 apiserver 发起 HTTP 请求 , 再将结果反馈给用户 。
kubectl 是 Kubernetes 自带的一个非常强大的控制集群的工具 , 通过命令行操作去管理整个集群 。
Kubernetes 有很多可视化面板 , 例如 Dashboard , 其背后也是调用 apiserver 的 API , 相当于前端调后端 。
总之 , 我们使用的各种管理集群的工具 , 其后端都是 apiserver , 通过 apiserver , 我们还可以定制各种各样的管理集群的工具 , 例如网格管理工具 istio 。 腾讯云、阿里云等云平台都提供了在线的 kubernetes 服务 , 还有控制台可视化操作 , 也是利用了 apiserver 。
你可以参考笔者写的 Kubernetes 电子书 , 了解更多:https://k8s.whuanle.cn/1.basic/5.k8s.html
使用 C# 获取 Kubernetes 集群资源信息
文章图片

简而言之 ,Kubernetes API Server 是第三方操作 Kubernetes 的入口 。
暴露 Kubernetes API Server
首先查看 kube-system 中运行的 Kubernetes 组件 , 有个 kube-apiserver-master 正在运行 。
root@master:~ # kubectl get pods -o wide -n kube-system
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
... ...
kube-apiserver-master 1/1 Running 2 (76d ago) 81d 10.0.0.4 master <none> <none>
... ...
虽然这些组件很重要 , 但是只会有一个实例 , 并且以 Pod 形式运行 , 而不是 Deployment , 这些组件只能放在 master 节点运行 。
然后查看 admin.conf 文件 , 可以通过 /etc/kubernetes/admin.conf或 $HOME/.kube/config路径查看到 。
使用 C# 获取 Kubernetes 集群资源信息
文章图片

admin.conf 文件是访问 Kubernetes API Server 的凭证 , 通过这个文件 , 我们可以使用编程访问 Kubernetes 的 API 接口 。
但是 admin.conf 是很重要的文件 , 如果是开发环境开发集群 , 那就随便造 , 如果是生产环境 , 请勿使用 , 可通过角色绑定等方式限制 API 访问授权 。
然后把 admin.conf 或 config 文件下载到本地 。
你可以使用 kubectl edit pods kube-apiserver-master -n kube-system命令 , 查看 Kubernetes API Server 的一些配置信息 。

特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。