Kubernetes practice
December 7, 2022

Полезные для сдачи СКА команды

Здесь будет список полезных команд для сдачи СКА, которые надо выучить:

kubectl create deploy cam-nginx --image=nginx:latest
kubectl scale deploy cam-nginx --replicas=2 #увеличиваем кол-во реплик до двух
kubectl expose deploy cam-nginx --type=LoadBalancer --port=80 #создаём для него Service типа LB  с открытым портом 80.
kubectl set image deploy cam-nginx nginx=nginx:1.23
kubectl rollout undo deploy cam-nginx
kubectl get svc
kubectl get po
kubectl get deploy
kubectl get ds
kubectl get sts
kubectl get ing
kubectl gey pc
kubectl get pdb
kubectl get quota
kubectl get limits
kubectl get np
Запускаем какой-то манифест:
cat <<<EOF | kubectl apply -f -
...
EOF
kubectl run nginx --image=nginx
kubectl expose po nginx --port 80
kubectl set image po nginx nginx=nginx:latest

Императивный подход к созданию ресурсов.

kubectl create deployment nginx --image=nginx:latest # создаём деплоймент
kubectl create secret generic cam-secret --from-literal=cameda=goodPa$word # создаём секрет
kubectl create cm nginx-config --from-file /etc/nginx/site-available/default
kubectl create sa cameda-sa
kubectl create ns prod
kubectl run httpd --image=httpd:alpine --port=80 --expose # создаём под и сервис
kubectl run --restart=Never --image=busybox:1.28.4 static-busybox --dry-run=client -o yaml --command — sleep 1000 > /etc/kubernetes/manifests/static-busybox.yaml

Посмотреть на ноде taints/label/annotations:

kubectl get no cl1k0lmd1e01fb8jfc48-ofit -ojson | jq -r '.spec.taints'
kubectl get no cl1k0lmd1e01fb8jfc48-ofit -ojson | jq -r '.metadata.labels'
kubectl get no cl1k0lmd1e01fb8jfc48-ofit -ojson | jq -r '.metadata.annotations'
kubectl taint no cl1k0lmd1e01fb8jfc48-ofit cam=taint:NoSchedule
kubectl taint no cl1k0lmd1e01fb8jfc48-ofit cam=taint:NoExecute
kubectl taint no cl1k0lmd1e01fb8jfc48-ofit cam=taint:NoSchedule-
kubectl taint no cl1k0lmd1e01fb8jfc48-ofit cam=taint:NoExecute-

kubectl label no cl1k0lmd1e01fb8jfc48-ofit cam=taint
kubectl label no cl1k0lmd1e01fb8jfc48-ofit cam-

kubectl annotate no cl1k0lmd1e01fb8jfc48-ofit author=cameda
kubectl annotate no cl1k0lmd1e01fb8jfc48-ofit author-
kubectl patch deployment/deployment_name --patch "{\"spec\": {\"template\": {\"spec\": {\"initContainers\": [{\"name\": \"container_name\",\"image\": \"url_to_container\"}]}}}}"
kubectl top po
kubectl logs cam-nginx
kubectl label po cam-nginx app=nginx
kubectl get po -A -l app=nginx
Открываем доступ к контейнеру извне через форвардинг портов:
kubectl port-forward pod_name hostPort:podPort
kubectl port-forward cam-nginx 8080:80
kubectl api-resources - смотрим какие ресурсы можно создавать в k8s
kubectl create service nodeport my-ns --tcp=5678:8080 #port/targetport
kubectl create service nodeport my-ns --tcp=5678:8080 --node-port=32000

kubectl create service clusterip my-cs --tcp=5678:8080
kubectl create service loadbalancer my-lbs --tcp=5678:8080
kubectl drain <node-name> --ignore-daemonsets
kubectl delete po <pod_name> --grace-period=0 --force
kubectl config set-context $(kubectl config current-context) --namespace=dev