kubectl get secret/db -o yaml | grep DB_PASSWORD | sed 's/.*DB_PASSWORD:\s//' | base64 --decode
где db - имя секрета, DB_PASSWORD - один из параметров секрета.
helm ls --all --short | xargs -L1 helm delete
kubectl get pods | grep Evicted | awk '{print $1}' | xargs kubectl delete pod
#!/usr/bin/env bash
for container in `kubectl get pods --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'`
do
echo -e "$container\t\t $(docker image ls `kubectl get pod $container -o jsonpath='{.spec.containers[0].image}'` --format='{{println .Size}}')"
done
#!/usr/bin/env bash
set -euo pipefail
PODZONES=()
for POD in $(kubectl get pods -o custom-columns=NAME:.metadata.name --no-headers)
do
NODE=$(kubectl get pod ${POD} -o=jsonpath='{.spec.nodeName}')
ZONE=$(kubectl get nodes -o json | jq -r --arg NODE "${NODE}" '.items[].metadata | {name, labels} | select(.name==$NODE) | .labels."topology.kubernetes.io/zone"')
PODZONES+=(${ZONE})
echo -e "${POD}\t${NODE}\t${ZONE}"
done
CPODS=$(kubectl get pods -o custom-columns=NAME:.metadata.name --no-headers | wc -l)
CNODES=$(kubectl get nodes -o custom-columns=NAME:.metadata.name --no-headers | wc -l)
CZONES=$(kubectl get nodes -o json | jq -r '.items[].metadata.labels."topology.kubernetes.io/zone"' | sort | uniq -c)
echo "----------ИТОГО:----------"
echo -e "Всего подов:\t${CPODS}"
echo -e "Всего нод:\t${CNODES}"
echo -e "Количество зон нод:\n${CZONES}"
echo "Количество подов в зонах:"
printf "%s\n" "${PODZONES[@]}" | sort | uniq -c
kubectl run --generator=run-pod/v1 nginx --image=nginx
или
kubectl run --image=nginx nginx
kubectl run --generator=run-pod/v1 nginx --image=nginx --dry-run -o yaml
kubectl create deployment --image=nginx nginx
kubectl expose deployment nginx --port 80
kubectl expose pod redis --port=6379 --name redis-service --dry-run=client -o yaml
или следующая команда выведет конфигурацию для сервиса в формате yaml с маппингом портов без применения в кластере.
kubectl create service clusterip redis --tcp=6379:6379 --dry-run=client -o yaml
или следующая команда создать сервис с типом NodePort без применения в кластере.
kubectl expose pod nginx --port=80 --name nginx-service --type=NodePort --dry-run=client -o yaml
или следующая команда создать NodePort сервис с выделением внешнего порта и маппингом портов пода/сервиса.
kubectl create service nodeport nginx --tcp=80:80 --node-port=30080 --dry-run=client -o yaml
kubectl edit deployment nginx
kubectl create deployment --image=nginx nginx --dry-run -o yaml
kubectl create deployment --image=nginx --replicas=4 nginx --dry-run -o yaml > nginx-deployment.yaml
kubectl create namespace <имя>
kubectl config set-context $(kubectl config current-context) --namespace=dev
apiVersion: v1
kind: ResourceQuota
metadata:
name: compute-quota
namespace: dev
spec:
hard:
pods: "10"
requests.cpu: "4"
requests.memory: 5Gi
limits.cpu: "10"
limits.memory: 10Gi
kubectl set image deployment nginx nginx=nginx:1.18
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- image: nginx
name: nginx
nodeName: node01
kubectl get pods --show-labels
Посмотреть соответствие ReplicaSet и Pod.
kubectl get sts --show-labels
kubectl get pods -l env=prod,tier=frontend
kubectl taint nodes <node-name> key=value:taint-effect
Taint-effect принимает значения - NoSchedule, PreferNoSchedule, NoExecute.
Пример:
kubectl taint nodes node1 app=blue:NoSchedule
kubectl label nodes <node-name> <label-key>=<label-value>
В Yaml-файле указать nodeSelector с необходимым label.
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
spec:
containers:
- name: data-processor
image: data-processor
nodeSelector:
size: Large
kubeadm create token --print-join-command
kubectl logs -f web --previous