当前位置: 首页 > 文档资料 > Kubernetes 指南 >

3.2 kube-apiserver - 扩展

优质
小牛编辑
125浏览
2023-12-01

API Aggregation允许在不修改Kubernetes核心代码的同时扩展Kubernetes API。

开启API Aggregation

kube-apiserver增加以下配置

  1. --requestheader-client-ca-file=<path to aggregator CA cert>
  2. --requestheader-allowed-names=aggregator
  3. --requestheader-extra-headers-prefix=X-Remote-Extra-
  4. --requestheader-group-headers=X-Remote-Group
  5. --requestheader-username-headers=X-Remote-User
  6. --proxy-client-cert-file=<path to aggregator proxy cert>
  7. --proxy-client-key-file=<path to aggregator proxy key>

如果kube-proxy没有在Master上面运行,还需要配置

  1. --enable-aggregator-routing=true

创建扩展API

  1. 确保开启APIService API(默认开启,可用kubectl get apiservice命令验证)
  2. 创建RBAC规则
  3. 创建一个namespace,用来运行扩展的API服务
  4. 创建CA和证书,用于https
  5. 创建一个存储证书的secret
  6. 创建一个部署扩展API服务的deployment,并使用上一步的secret配置证书,开启https服务
  7. 创建一个ClusterRole和ClusterRoleBinding
  8. 创建一个非namespace的apiservice,注意设置spec.caBundle
  9. 运行kubectl get <resource-name>,正常应该返回No resources found.

可以使用apiserver-builder工具自动化上面的步骤。

  1. # 初始化项目
  2. $ cd GOPATH/src/github.com/my-org/my-project
  3. $ apiserver-boot init repo --domain <your-domain>
  4. $ apiserver-boot init glide
  5. # 创建资源
  6. $ apiserver-boot create group version resource --group <group> --version <version> --kind <Kind>
  7. # 编译
  8. $ apiserver-boot build executables
  9. $ apiserver-boot build docs
  10. # 本地运行
  11. $ apiserver-boot run local
  12. # 集群运行
  13. $ apiserver-boot run in-cluster --name nameofservicetorun --namespace default --image gcr.io/myrepo/myimage:mytag
  14. $ kubectl create -f sample/<type>.yaml

示例

sample-apiserverapiserver-builder/example

备注

另外一种扩展 Kubernetes API 的方法是使用 CustomResourceDefinition (CRD)。

最后更新:

类似资料

  • 下列服务正在运行: 返回错误 重新构建URL到:http://localhost:8080/ 正在尝试127.0.0.1... 连接到127.0.0.1端口8080失败:连接被拒绝 连接到本地主机端口8080失败:连接被拒绝 关闭连接0卷:(7)无法连接到本地主机端口8080:连接被拒绝 我使用以下指南https://github.com/kubernetes/kubernetes/tree/ma

  • 来自库伯内特斯文档(从Pod访问API): 在pod中定位apiserver的推荐方法是使用kubernetes DNS名称,该名称解析为一个服务IP,该IP将被路由到一个apiserver。 但是,当我在OpenShift pod的shell中时,这个“kubernetes”dns名称似乎并不存在。由于 Kubernetes 在下面运行,我希望它默认存在,但我错了吗?这是使用OpenShift

  • 问题内容: 基本问题:当我尝试在主节点上使用kube-apiserver时,出现命令未找到错误。如何安装/配置kube- apiserver?任何指向示例的链接都将有所帮助。 详细信息:我是Kubernetes和Docker的新手,并试图使用volumeClaimTemplates创建StatefulSet。我的问题是未创建自动PV,我在PVC日志中收到此消息:“ persistentvolume

  • 我有一个4节点的Kubernetes集群,有1个主节点和3个工作节点。我使用kubeconfig连接到kubernetes集群,因为昨天我无法使用kubeconfig连接。 提供了一个错误“到服务器api.xxxxx.xxxxxx.com的连接被拒绝-是否指定了正确的主机或端口?” 然后检查kube-apiserver docker,它继续退出/crashloopbackoff。 显示以下错误 W

  • 我正在尝试通过< code>apiserver proxy连接到< code > sky DNS < code > etcd 服务器,使用此文档http://kubernetes . io/docs/user-guide/access-the-cluster/# manually-constructing-API server-proxy-URLs命令 curl--cacert /etc/kube

  • 有多种方式可以访问Kubernetes提供的REST API: kubectl命令行工具 SDK,支持多种语言 Go Python Javascript Java CSharp 其他OpenAPI支持的语言,可以通过gen工具生成相应的client 参考文档 v1.5 API Reference v1.6 API Reference v1.7 API Reference v1.8 API Refe