- Install Docker
- Install Kubernetes - https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/
- Install minikube - https://minikube.sigs.k8s.io/docs/start/ - To run a Kubernetes cluster locally
- 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"]