What are Objects?
Simply put, Kubernetes Objects are definitions that represent a “desired state“. Kubernetes itself will work around the clock to try to ensure that the desired state of your object definitions are met (such as having a deployment with 10 pods, or “replicas”).
There a several object definitions that make up different kinds of state. The most commonly used object definitions are:
Object definitions are commonly expressed in yaml format (there is json as well). This is an example of a Deployment represented with yaml:
apiVersion: apps/v1 # API Version of this Object kind: Deployment # This Object Type metadata: # Allows you to specify custom metadata name: nginx # Specifies the name of this object spec: # The official specification matching object type schema selector: # Label selector for pods matchLabels: # Must match these label(s) app: nginx # Custom label with value template: # Template describes the pods that are created metadata: # Standard objects metadata labels: # Labels used to group/categorize objects app: nginx # The name of this template spec: # Specification of the desired behaviour of this pod containers: # List of containers belonging to this pod (cannot be changed/updated) - name: nginx # Name of this container image: nginx # Docker image used for this container ports: # Port mapping(s) - containerPort: 80 # Number of port to expose on this pods ip address readinessProbe: # Periodic probe of container readiness. Container will be removed from endpoints if not ready tcpSocket: # tcpSocket is the action "type" of the probe port: 80 # Number of port to open a connection to initialDelaySeconds: 10 # Number of seconds to wait before probing periodSeconds: 10 # How often to perform probe check livenessProbe: # Periodic probe of container readiness. Container will be removed from endpoints if not "alive" tcpSocket: # tcpSocket is the action "type" of the probe port: 80 # Number of port to open a connection to initialDelaySeconds: 30 # Number of seconds to wait before probing periodSeconds: 30 # How often to perform probe check
How do I use objects?
The most common way to “install” an object is to use the kubectl command line interface which talks to the Kubernetes API. An example of deploying a manifest (yaml) file would be:
$ kubectl apply -f mydeployment.yaml [-n mynamespace]
Similarly, you can also delete objects:
$ kubectl delete -f mydeployment.yaml [-n mynamespace]
List currently installed services, deployments, etc..:
You can view the current state of your object(s) multiple ways. The most common way is to use the kubectl command line interface as well:
$ kubectl get service,deployment [-n mynamespace]
Describe, in detail, an object:
$ kubectl describe service <the service name> [-n mynamespace]
For a full list of useful kubectl commands check out: kubectl top useful commands