• APIService
    • APIService详解
    • 查看集群支持的APISerivce

    APIService

    APIService是用来表示一个特定的GroupVersion的中的server,它的结构定义位于代码staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/types.go中。

    下面是一个APIService的示例配置:

    1. apiVersion: apiregistration.k8s.io/v1beta1
    2. kind: APIService
    3. metadata:
    4. name: v1alpha1.custom-metrics.metrics.k8s.io
    5. spec:
    6. insecureSkipTLSVerify: true
    7. group: custom-metrics.metrics.k8s.io
    8. groupPriorityMinimum: 1000
    9. versionPriority: 5
    10. service:
    11. name: api
    12. namespace: custom-metrics
    13. version: v1alpha1

    APIService详解

    使用apiregistration.k8s.io/v1beta1 版本的APIService,在metadata.name中定义该API的名字。

    使用上面的yaml的创建v1alpha1.custom-metrics.metrics.k8s.io APIService。

    • insecureSkipTLSVerify:当与该服务通信时,禁用TLS证书认证。强加建议不要设置这个参数,默认为 false。应该使用CABundle代替。
    • service:与该APIService通信时引用的service,其中要注明service的名字和所属的namespace,如果为空的话,则所有的服务都会该API groupversion将在本地443端口处理所有通信。
    • groupPriorityMinimum:该组API的处理优先级,主要排序是基于groupPriorityMinimum,该数字越大表明优先级越高,客户端就会与其通信处理请求。次要排序是基于字母表顺序,例如v1.bar比v1.foo的优先级更高。
    • versionPriority:VersionPriority控制其组内的API版本的顺序。必须大于零。主要排序基于VersionPriority,从最高到最低(20大于10)排序。次要排序是基于对象名称的字母比较。 (v1.foo在v1.bar之前)由于它们都是在一个组内,因此数字可能很小,一般都小于10。

    查看我们使用上面的yaml文件创建的APIService。

    1. kubectl get apiservice v1alpha1.custom-metrics.metrics.k8s.io -o yaml
    1. apiVersion: apiregistration.k8s.io/v1beta1
    2. kind: APIService
    3. metadata:
    4. creationTimestamp: 2017-12-14T08:27:35Z
    5. name: v1alpha1.custom-metrics.metrics.k8s.io
    6. resourceVersion: "35194598"
    7. selfLink: /apis/apiregistration.k8s.io/v1beta1/apiservices/v1alpha1.custom-metrics.metrics.k8s.io
    8. uid: a31a3412-e0a8-11e7-9fa4-f4e9d49f8ed0
    9. spec:
    10. caBundle: null
    11. group: custom-metrics.metrics.k8s.io
    12. groupPriorityMinimum: 1000
    13. insecureSkipTLSVerify: true
    14. service:
    15. name: api
    16. namespace: custom-metrics
    17. version: v1alpha1
    18. versionPriority: 5
    19. status:
    20. conditions:
    21. - lastTransitionTime: 2017-12-14T08:27:38Z
    22. message: all checks passed
    23. reason: Passed
    24. status: "True"
    25. type: Available

    查看集群支持的APISerivce

    作为Kubernetes中的一种资源对象,可以使用kubectl get apiservice来查看。

    例如查看集群中所有的APIService:

    1. $ kubectl get apiservice
    2. NAME AGE
    3. v1. 2d
    4. v1.authentication.k8s.io 2d
    5. v1.authorization.k8s.io 2d
    6. v1.autoscaling 2d
    7. v1.batch 2d
    8. v1.monitoring.coreos.com 1d
    9. v1.networking.k8s.io 2d
    10. v1.rbac.authorization.k8s.io 2d
    11. v1.storage.k8s.io 2d
    12. v1alpha1.custom-metrics.metrics.k8s.io 2h
    13. v1beta1.apiextensions.k8s.io 2d
    14. v1beta1.apps 2d
    15. v1beta1.authentication.k8s.io 2d
    16. v1beta1.authorization.k8s.io 2d
    17. v1beta1.batch 2d
    18. v1beta1.certificates.k8s.io 2d
    19. v1beta1.extensions 2d
    20. v1beta1.policy 2d
    21. v1beta1.rbac.authorization.k8s.io 2d
    22. v1beta1.storage.k8s.io 2d
    23. v1beta2.apps 2d
    24. v2beta1.autoscaling 2d

    另外查看当前kubernetes集群支持的API版本还可以使用kubectl api-versions

    1. $ kubectl api-versions
    2. apiextensions.k8s.io/v1beta1
    3. apiregistration.k8s.io/v1beta1
    4. apps/v1beta1
    5. apps/v1beta2
    6. authentication.k8s.io/v1
    7. authentication.k8s.io/v1beta1
    8. authorization.k8s.io/v1
    9. authorization.k8s.io/v1beta1
    10. autoscaling/v1
    11. autoscaling/v2beta1
    12. batch/v1
    13. batch/v1beta1
    14. certificates.k8s.io/v1beta1
    15. custom-metrics.metrics.k8s.io/v1alpha1
    16. extensions/v1beta1
    17. monitoring.coreos.com/v1
    18. networking.k8s.io/v1
    19. policy/v1beta1
    20. rbac.authorization.k8s.io/v1
    21. rbac.authorization.k8s.io/v1beta1
    22. storage.k8s.io/v1
    23. storage.k8s.io/v1beta1
    24. v1