ruk·si

Kubernetes
API

Updated at 2018-12-31 00:41

Kubernetes API is provided by kube-apiserver master component. You don't have to worry about any of this if you are using a managed Kubernetes though.

You create, modify and delete Kubernetes objects through Kubernetes API. kubectl command-line client is just one interface for this API. You could do the same with a Python based client. Or even use the REST API without a wrapper if you are hardcore.

API version is defined in the URL. Alpha level APIs shouldn't be used in production code as they can change drastically. Beta level APIs should be ok for non-business critical use-cases as some details might change.

/api/v1
/apis/extensions/v1beta1

API groups make it easier to extend the Kubernetes API.

# legacy group
/api/v1                      => apiVersion: v1

# named groups
/apis/$GROUP_NAME/$VERSION   => apiVersion: $GROUP_NAME/$VERSION
/apis/batch/v1               => apiVersion: batch/v1

You enable/disable API groups with --runtime-config. Remember to restart the kube-apiserver for these to take effect.

# disable batch/v1
--runtime-config=batch/v1=false

# enable batch/v2alpha1
--runtime-config=batch/v2alpha1

DaemonSets, Deployments, HorizontalPodAutoscalers, Ingress, Jobs and ReplicaSets are enabled by default. But to actually use HPA also needs Metric Server to be installed, if you don't have that already. Your managed Kubernetes cluster may have other APIs enabled as well.

Sources