Skip to content

Instantly share code, notes, and snippets.

@sandrovw64
Created July 22, 2022 03:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sandrovw64/900b75963567c402355f74890373224f to your computer and use it in GitHub Desktop.
Save sandrovw64/900b75963567c402355f74890373224f to your computer and use it in GitHub Desktop.
Kubernetes Useful Commands
  1. Install Docker
  2. Install Kubernetes - https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/
  3. Install minikube - https://minikube.sigs.k8s.io/docs/start/ - To run a Kubernetes cluster locally
  4. Pull images from localhost - https://medium.com/swlh/how-to-run-locally-built-docker-images-in-kubernetes-b28fbc32cc1d

Commands Sheets

Start minikube

minikube start

Status

minikube status

List nodes

kubectl get nodes

Create a deployment

kubectl create deployment NAME --image=image [--dry-run] [options]

Watch pod logs

kubectl logs POD_NAME

Pod details

kubectl describe pod POD_NAME

Get pod terminal

kubectl exec -it POD_NAME -- /bin/bash

Create a deployment from configuration-file.yaml

kubectl apply -f configuration-file.yaml

Set localhost Docker to use Minikube (set imagePullPolicy: Never in deployment.yaml)

eval $(minikube -p minikube docker-env)

Authenticate into docker.io

kubectl create secret generic dockerhub-secret \
    --from-file=.dockerconfigjson=/home/sandro/.docker/config.json \
    --type=kubernetes.io/dockerconfigjson

or

kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>

Include in deployment.yaml

imagePullSecrets:
  - name: regcred

Example:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sellers-details
  labels:
    app: sellers-details
spec:
  replicas: 1
  selector:
    matchLabels:
      app: sellers-details
  template:
    metadata:
      labels:
        app: sellers-details
    spec:
      containers:
        - name: sellers-details
          volumeMounts:
            - name: gcp-volume
              mountPath: /etc/gcp
              readOnly: true
          image: mercadoradar/mercado-livre-crawlers
          resources:
            requests:
              memory: "1G"
              cpu: "1"
            limits:
              memory: "1G"
              cpu: "1"
          env:
            - name: CRAWLER_TYPE
              value: "SELLERS_DETAILS"
            - name: CRAWLER_SETTINGS
              value: '{"threads": 4, "batch_size": 2000, "revisit_days": 7, "update_last_run_field": "details_at"}'
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
          envFrom:
            - configMapRef:
                name: env-configmap
            - secretRef:
                name: env-secrets
      imagePullSecrets:
        - name: dockerhub-secret
      volumes:
        - name: gcp-volume
          secret:
            secretName: env-secrets
            items:
              - key: GCP_JSON
                path: gcp.json

Container Lifecycle

apiVersion: v1
kind: Pod
metadata:
  name: lifecycle-demo
spec:
  containers:
  - name: lifecycle-demo-container
    image: nginx
    lifecycle:
      postStart:
        exec:
          command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]
      preStop:
        exec:
          command: ["/bin/sh","-c","nginx -s quit; while killall -0 nginx; do sleep 1; done"]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment