Skip to content

kubernetes

Run k8s locally with kind

Enter inside container

kubectl exec -it <pod-name> -- /bin/bash

Copy files from local machine to pods

kubectl cp <local-file-path> <namespace>/pvc-access:/mnt/pvc

components

  • api server
  • etcd
  • kubelet
  • container runtime
  • controller
  • scheduler

kubectl

  • get current context: kubectl config current-context
  • imperative command: kubectl apply ...
  • declarative command: kubectl create ...
  • delete job: kubectl delete jobs <job_name>
  • check pod logs: kubectl logs -f <pod_name>
  • get deployments: kubectl get deploy
  • deletye deploy: kubectl delete deploy

Commands

Define default namespace

k config set-context --current --namespace=<namespace>

Port Forward

  • kubectl -n <namespace> port-forward svc/<service_name> <local_port>:<service_port>

Restart deployment

  • kubectl -n <namespace> rollout restart deployment/<name>

Create secret with yaml

  apiVersion: v1
  kind: Secret
  metadata:
    name: <name>
    namespace: <namespace>
  type: Opaque
  stringData:
    <secret_key>: <secret_value>

configuration

basic config

required yaml fields (pod example):

# example
apiVersion: v1
kind: Pod
metadata:
    name: myapp-pod
    labels:
        app: myapp
spec:
    containers:
        - name: nginx-container
          image: nginx

Replication Controller config example:

apiVersion: v1
kind: ReplicationController
metadata:
    name: myapp-rc
spec:
    template:
        metadata:
            name: myapp-pod
            labels:
                app: myapp
        spec:
            containers:
                - name: nginx-container
                  image: nginx
    replicas: 3

Replica Set config example:

apiVersion: apps/v1
kind: ReplicaSet
metadata:
    name: myapp-rc
spec:
    template:
        metadata:
            name: myapp-pod
            labels:
                app: myapp
        spec:
            containers:
                - name: nginx-container
                  image: nginx
    replicas: 3
    selector:
        matchLabels:
            app: myapp

Use pod to access pvc

  • Create temporary pod:
apiVersion: v1
kind: Pod
metadata:
  name: pvc-access
  namespace: <your-namespace> # Replace with your namespace
spec:
  containers:
    - name: pvc-access-container
      image: busybox
      command: ["/bin/sh", "-c", "sleep infinity"]
      volumeMounts:
        - name: pvc-storage
          mountPath: /mnt/pvc
  volumes:
    - name: pvc-storage
      persistentVolumeClaim:
        claimName: <your-pvc-name> # Replace with your PVC name
  • kubectl cp /pvc-access:/mnt/pvc