How to Use the Command 'kubectl create' (with examples)

How to Use the Command 'kubectl create' (with examples)

The kubectl create command is a powerful utility in Kubernetes, designed to help users create Kubernetes resources from either files or standard input. This command provides a straightforward way to generate deployments, services, namespaces, and more using plain-text resource configuration files or direct terminal inputs. Whether you’re deploying applications, orchestrating complex configurations, or isolating environments, kubectl create is indispensable in managing and initializing Kubernetes resources.

Create a Resource Using the Resource Definition File

Code:

kubectl create -f path/to/file.yml

Motivation:

This command is pivotal when you already have a well-defined resource configuration. If your infrastructure-as-code practice involves version-controlled YAML files, this command allows you to seamlessly apply these configurations to your Kubernetes cluster, promoting repeatability and consistency in deployments.

Explanation:

  • kubectl create: The command to initiate resource creation in Kubernetes.
  • -f: This flag specifies that the source of the configuration will be a file.
  • path/to/file.yml: The file path to your YAML definition containing the desired state configuration for the Kubernetes resource.

Example Output:

deployment.apps/my-deployment created

Create a Resource from stdin

Code:

kubectl create -f -

Motivation:

This is beneficial when you need to create a resource dynamically or make minor edits without saving a permanent file. It’s useful in scripting and automation contexts where input can be piped directly from other commands or processes.

Explanation:

  • kubectl create: Initializes the resource creation process in Kubernetes.
  • -f: Indicates that the input will be a file, but in this case, the source is from standard input (stdin).
  • -: A placeholder indicating that kubectl will expect input from standard input instead of a file.

Example Input/Output:

echo "
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: nginx
" | kubectl create -f -

pod/my-pod created

Create a Deployment

Code:

kubectl create deployment deployment_name --image=image

Motivation:

Deployments facilitate scaled applications and updates through rolling updates. Creating a deployment directly from the command line allows for rapid initialization of workloads, suitable for environments that require quick iterations or immediate need to host a new pod with a defined container image.

Explanation:

  • kubectl create: Commands the initiation of a resource creation.
  • deployment: Specifies that a deployment resource is what we’re creating.
  • deployment_name: The unique name assigned to the deployment in the cluster.
  • --image=image: Specifies the container image that Kubernetes should pull and run in the pod.

Example Output:

deployment.apps/deployment_name created

Create a Deployment with Replicas

Code:

kubectl create deployment deployment_name --image=image --replicas=number_of_replicas

Motivation:

Highly available applications might necessitate multiple running instances to balance load or enhance reliability. Specifying replicas during creation ensures that Kubernetes orchestrates these multiple identical pods from the outset, eliminating manual interventions post-deployment.

Explanation:

  • kubectl create: Begins the creation process of a specified Kubernetes resource.
  • deployment: Indicates the resource type we are creating.
  • deployment_name: The name given to this deployment in your cluster.
  • --image=image: The container image that will comprise each replica in the deployment.
  • --replicas=number_of_replicas: Specifies how many pod replicas will be initialized.

Example Output:

deployment.apps/deployment_name created

Create a Service

Code:

kubectl create service service_type service_name --tcp=port:target_port

Motivation:

Services in Kubernetes define stable networking interfaces to pods, facilitating communication both within the cluster and externally. Quickly creating a service using this command can set up connections to applications and abstract the underlying pods behind a common endpoint, helping with load balancing and service discovery.

Explanation:

  • kubectl create: Indicates that a new resource is to be created.
  • service: This specifies that the resource type being created is a service.
  • service_type: Defines the type of service, such as ClusterIP, NodePort, or LoadBalancer.
  • service_name: The identifier for the service in your cluster.
  • --tcp=port:target_port: Sets up a TCP connection on a specified port which forwards requests to the defined target port on the pod backend.

Example Output:

service/service_name created

Create a Namespace

Code:

kubectl create namespace namespace_name

Motivation:

Namespaces provide isolated environments within a single Kubernetes cluster, useful for organizing resources, managing scope, and applying policies. Creating a namespace on-the-fly assists in segregating resources, which is especially useful in multi-team or multi-tenant scenarios within a shared Kubernetes environment.

Explanation:

  • kubectl create: Initiates the creation of a Kubernetes resource.
  • namespace: Specifies that the type of resource being created is a namespace.
  • namespace_name: The distinct name for the namespace within the cluster.

Example Output:

namespace/namespace_name created

Conclusion:

The kubectl create command is an essential tool for initializing and managing Kubernetes resources. From single-file deployments to complex multi-replica setups, this command offers an efficient approach to instill infrastructure as code within Kubernetes. Whether you’re managing services, deployments, or namespaces, kubectl create empowers users with the flexibility and immediacy needed in today’s dynamic computing environments.

Related Posts

How to Use the Command 'git log' (with Examples)

How to Use the Command 'git log' (with Examples)

The git log command is an essential tool in the Git version control system, providing a comprehensive view of a repository’s history.

Read More
How to Use the Command 'findfs' (with examples)

How to Use the Command 'findfs' (with examples)

The findfs command is a powerful utility in the Linux operating system that aids in locating filesystems based on specific identifiers such as labels or UUIDs (Universally Unique Identifiers).

Read More
Exploring the Power of The Silver Searcher 'ag' (with examples)

Exploring the Power of The Silver Searcher 'ag' (with examples)

The Silver Searcher, known as ag, is a powerful tool designed for searching, and it resembles ack, but with a stronger emphasis on speed and efficiency.

Read More