🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] Kubernetes 控制面的核心是 API 服务器。 API 服务器负责提供 HTTP API,以供用户、集群中的不同部分和集群外部组件相互通信。 Kubernetes API 使你可以查询和操纵 Kubernetes API 中对象(例如:Pod、Namespace、ConfigMap 和 Event)的状态。 大部分操作都可以通过 kubectl 命令行接口或类似 kubeadm 这类命令行工具来执行, 这些工具在背后也是调用 API。不过,你也可以使用 REST 调用来访问这些 API。 kube-apiserver 通过 `/openapi/v2` 端点提供聚合的 OpenAPI v2 规范。如果通过 swagger-ui 来查看 apiserver 接口,可以自己本地跑个 swagger-ui 服务,然后访问 kube-apiserver 地址的 openapi 接口地址即可,swagger-ui 来源支持 openapi 数据格式。 本人目前只研究出 swagger-ui 通过 `http` 协议访问 OpenAPI v2 的,但是 kube-apiserver 通常只开放 `https` 协议。需要通过 `kubectl proxy` 暴露api接口 ```shell kubectl proxy --address='192.168.32.182' --port=8001 --accept-hosts='^*$' ``` ## 启动 swagger-ui 应用 ```yaml apiVersion: apps/v1 kind: Deployment metadata: labels: app: swagger name: swagger spec: replicas: 1 selector: matchLabels: app: swagger template: metadata: labels: app: swagger spec: containers: - image: swaggerapi/swagger-ui:latest name: swagger-ui env: - name: URLS value: "[ { url: 'http://192.168.32.182:8001/openapi/v2', name: 'Kubernetes API' } ]" # IP和端口替换成实际的值 --- apiVersion: v1 kind: Service metadata: labels: app: swagger name: swagger spec: ports: - port: 8080 protocol: TCP targetPort: 8080 selector: app: swagger type: NodePort ``` ## 验证 ```shell # 确定nodeport端口 $ kubectl get svc swagger NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE swagger NodePort 10.108.215.177 <none> 8080:30590/TCP 48m ``` 浏览器访问 `http://192.168.32.182:30590` ![](https://img.kancloud.cn/28/8c/288ceced1acbaad7d70f58aa08941cdc_1920x990.png) > 注意:直接访问存在跨域问题 当页面报错提供 `Check the server returns the correct 'Access-Control-Allow-*' headers.` 的时候,则说明需要安装 Chrome 的 [Allow CORS](https://www.gugeapps.net/webstore/detail/allow-cors-access-control/lhobafahddgcelffkeicbaginigeejlf) 插件实现跨域访问 ![](https://img.kancloud.cn/fa/fa/fafa921783a7f358ac6ca32984edf434_1909x598.png) Allow CORS 使用方法 1. 点击Toggle ON ,开启插件 ![](https://img.kancloud.cn/e2/42/e2427bebdf04abd5cff3ceb0af7698e2_857x468.png) 2. 打开设置 ![](https://img.kancloud.cn/c1/1a/c11acf8e338008b37dfccee211c0405e_690x442.png) 3. 配置 `Access-Control-Allow-Origin` 为 "*" ![](https://img.kancloud.cn/b3/d9/b3d9ce5d8dbe18e7ee824369fedd771b_1601x924.png) ## 参考文档 官方文档:https://kubernetes.io/zh-cn/docs/concepts/overview/kubernetes-api/