Focus on speed, troubleshooting, and muscle memory.
kubectl run nginx --image=nginx
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --target-port=80
kubectl create ns practice
kubectl create deployment nginx \ --image=nginx \ --dry-run=client -o yaml > deployment.yaml
kubectl create sa bob
kubectl create role pod-reader \ --verb=get,list,watch \ --resource=pods
kubectl create rolebinding read-pods \ --role=pod-reader \ --serviceaccount=default:bob
kubectl auth can-i list pods \ --as=system:serviceaccount:default:bob
kubectl create ns netpol
kubectl run pod1 --image=busybox -n netpol -- sleep 3600 kubectl run pod2 --image=busybox -n netpol -- sleep 3600
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all
spec:
podSelector: {}
policyTypes:
- Ingress
kubectl apply -f deny.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv1
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc1
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Mi
kubectl get pv kubectl get pvc kubectl describe pvc pvc1
Static Pods are managed by kubelet.
/etc/kubernetes/manifests
cd /etc/kubernetes/manifests vi nginx-static.yaml
kubectl get pods -A
kubectl get nodes
kubectl taint node worker1 role=database:NoSchedule
kubectl describe node worker1
kubectl taint node worker1 role=database:NoSchedule-
tolerations: - key: "role" operator: "Equal" value: "database" effect: "NoSchedule"
kubectl label node worker1 disk=ssd
nodeSelector: disk: ssd
kubectl get pods -o wide
ETCDCTL_API=3 etcdctl endpoint health \ --endpoints=https://127.0.0.1:2379 \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/server.crt \ --key=/etc/kubernetes/pki/etcd/server.key
etcdctl snapshot save /opt/backup.db
etcdctl snapshot status /opt/backup.db -w table
etcdctl snapshot restore /opt/backup.db \ --data-dir=/var/lib/etcd-restored
/etc/kubernetes/manifests/etcd.yaml