If you have been using Kubernetes, or studying about it or know at least something about it, you must have encountered Kubernetes Objects some or the other way. FWIMC, Kubernetes objects are those basic building blocks that empower Kubernetes to manage and orchestrate containerized applications.
Still wondering what are Kubernetes Objects? Ever come across terms like Ptods, Nodes, or Deployments? Well if, then these ARE Kubernetes Objects!
This blog speaks about some interesting findings about how many such kubernetes objects exists, and maybe just an easy read for a few, offering a quick and informative sip of Kubernetes "general knowledge".
So, Did you know!? ๐
There exists approximately 53 distinct Kinds of Kubernetes Objects officially documented in the Kubernetes API Reference.
It will make more sense to you, checkout ๐๐๐
Core Objects
Pod
Deployment
ReplicaSet
Service
Node
DaemonSet
APIGroup
APIService
AuthorizationPolicy
Binding
ClusterRole
ClusterRoleBinding
ComponentStatus
ConfigMap
ControlledResource
CronJob
Endpoint
Event
HorizontalPodAutoscaler
LimitRange
Namespace
NodePool
PersistentVolume
PersistentVolumeClaim
PodDisruptionBudget
PodPreset
PriorityClass
ResourceQuota
Secret
ServiceAccount
StatefulSet
TokenReview
These were Core Kubernetes Objects!
Most "core" objects will typically have an apiVersion of "v1". For Example:
apiVersion: v1
kind: Pod
metadata:
name: example-pod
spec:
...
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
Some newer core objects may have different versions. For example:
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: example-hpa
spec:
...
These versions indicate they're still under development or haven't reached stable maturity yet.
Extensions Objects
CustomResourceDefinition
MutatingWebhookConfiguration
ValidatingWebhookConfiguration
Extension objects have their own API groups & versions, separate from the core API
Example: apiextensions.k8s.io/v1
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: examplecrds
spec:
...
Networking Objects
NetworkPolicy
Ingress
Egress
ClusterIP
Networking objects also have their own API groups & versions.
For example: networking.k8s.io/v1
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: example-network-policy
spec:
...
Storage Objects
StorageClass
VolumeAttachment
Storage objects also have their own API groups & vesrions.
For Example: storage.k8s.io/v1
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: example-storage-class
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
Other Objects
PriorityLevelConfiguration
RuntimeClass
CSIStorageCapacity
CSIStorageNode
FlowSchema
NetworkAttachmentDefinition
PodSecurityPolicy
Scope
These objects also have their own API groups & vesrions.
For Example, scheduling.k8s.io/v1beta1
apiVersion: scheduling.k8s.io/v1beta1
kind: PriorityLevelConfiguration
metadata:
name: example-priority-config
spec:
...
This list may not be exhaustive and OBViously not reflecting future additions to the Kubernetes API.
Here are some helpful resources:
Kubernetes API Reference:https://kubernetes.io/docs/concepts/overview/kubernetes-api/
kubectl api-resources
: This command within your cluster will list all available API resources and their respective versions.