Skip to main contentIBM Cloud-Native

Core Concepts

Kubernetes API Primitives

Kubernetes API primitive, also known as Kubernetes objects, are the basic building blocks of any application running in Kubernetes

Examples:

  • Pod
  • Node
  • Service
  • ServiceAccount

Two primary members

  • Spec, desired state
  • Status, current state

Resources

OpenShift

IKS

References

Prints all API Resources

oc api-resources

Prints all API Resources with their verbs.

oc api-resources -o wide

Prints all API Resources names only

oc api-resources -o name

Prints each of the available nodes, projects, services, deployments, and pods

oc get nodes,ns,po,deploy,svc

Prints the node’s description

oc describe node

Creating Pods

A Pod is the basic execution unit of a Kubernetes application–the smallest and simplest unit in the Kubernetes object model that you create or deploy. A Pod represents processes running on your Cluster.

A Pod encapsulates an application’s container (or, in some cases, multiple containers), storage resources, a unique network IP, and options that govern how the container(s) should run. A Pod represents a unit of deployment: a single instance of an application in Kubernetes, which might consist of either a single container or a small number of containers that are tightly coupled and that share resources.

Resources

OpenShift

IKS

References

apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp-container

Get Current Pods in Project

oc get pods

Get Pod’s Description

oc describe pod <pod-name>

Get Pods with their IP and node location

oc get pods -o wide

Get Pods Stats

oc adm top pods

Projects/Namespaces

Namespaces are intended for use in environments with many users spread across multiple teams, or projects.

Namespaces provide a scope for names. Names of resources need to be unique within a namespace, but not across namespaces.

Namespaces are a way to divide cluster resources between multiple users (via resource quota).

It is not necessary to use multiple namespaces just to separate slightly different resources, such as different versions of the same software: use labels to distinguish resources within the same namespace. In practice namespaces are used to deploy different versions based on stages of the CICD pipeline (dev, test, stage, prod)

Resources

OpenShift

IKS

References:

apiVersion: v1
kind: Namespace
metadata:
name: foo
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
namespace: bar
labels:
app: myapp
spec:
containers:

Create a new Project

oc new-project my-project

Viewing Current Project

oc project

Viewing Project Status

oc status