kubectl
Установка: https://kubernetes.io/ru/docs/tasks/tools/install-kubectl/ Доп. конфигурация: https://kubernetes.io/ru/docs/tasks/tools/install-kubectl/#дополнительная-конфигурация-kubectl
# --- ~/.bash_aliases
alias k=kubectl
alias kcf='kubectl create -f'
alias kcd='kubectl config set-context $(kubectl config current-context) --namespace'
alias kcdc="kubectl config view -o jsonpath='{.contexts[].context.namespace}' && echo ''"
CLI
General
# --- show cluster state k cluster-info # --- show components statuses k get componentstatuses # --- --- or k get cs # --- port forward kubectl port-forward kubia 8080:8080 # --- top command for pods kubectl top pod # --- restart deployment kubectl rollout restart deployment my-deployment
get
# --- get all resources in all namespaces k get all --all-namespaces # --- get secret with decode # -json for jq # -r for remove quotes k get secret kdkop -o json | jq -r .data.snap01 | base64 --decode
delete
# --- delete almost all resources from current namespace kubectl delete all --all # --- delete with custom grace-period kubectl delete po mypod --grace-period=5 # --- force delete without grace-period kubectl delete po mypod --grace-period=0 --force
run
# --- quick pod run
k run nginx --image=nginx
# ---
kubectl run httpie --image alpine/httpie \
--namespace prometheus \
--env="DNS_DOMAIN=cluster" --env="POD_NAMESPACE=default"
-- sleep 99999
# --- быстрый запуск множества реплик модуля
kubectl run test --image busybox --replicas 5 -- sleep 99999
# --- быстрый запуск модуля с циклической командой (имитация нагрузки)
kubectl run -it --rm --restart=Never loadgenerator --image=busybox -- sh -c \
"while true; do wget -O – -q http://kubia.default; done"
# --- быстрый запуск модуля с назначением метки
kubectl run busybox -l app=busybox --image busybox -- sleep 999999
# --- запуск модуля с заданной учетной записью
k run test --image=luksa/kubectl-proxy --overrides='{ "spec": { "serviceAccount": "admin" } }'
# --- запуск пода с заданным nodeSelector
kubectl run test --image ubuntu \
--overrides='{"spec": { "nodeSelector": {"role": "kdk"}}}' \
-- sleep 999999
# --- quick start postgres with resources and env variables
# --requests and --limits are deprecated
kubectl run postgres --image postgres \
--requests='cpu=50m,memory=50Mi' \
--limits='cpu=100m,memory=100Mi' \
--env='POSTGRES_PASSWORD=secret'
curl
k run test --image=luksa/kubectl-proxy
k exec -it test -- sh
curl localhost:8001/api/v1/namespaces/kdk-dev/pods \
-X POST \
-H 'Content-Type: application/yaml' \
-d '---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: clusterkopfpeerings.kopf.dev
spec:
scope: Cluster
group: kopf.dev
names:
kind: ClusterKopfPeering
plural: clusterkopfpeerings
singular: clusterkopfpeering
versions:
- name: v1
served: true
storage: true
schema:
openAPIV3Schema:
type: object
properties:
status:
type: object
x-kubernetes-preserve-unknown-fields: true
'
apply
apiVersion: v1
kind: Pod
metadata:
name: httpie
spec:
nodeSelector:
role: kdk
serviceAccountName: ignite
containers:
- name: main
image: alpine/httpie
command: ["sleep", "9999999"]
debug
Подключиться к контейнеру app пода POD_NAME эфимерным котнейнером busybox Можно видеть процессы контейнера app
kubectl debug -it -c debugger --target=app --image=busybox ${POD_NAME}
ps auxf
Создаем копию пода POD_NAME под названием test-pod и подключаемся к нему. Внутри отладчика видим все процессы всех контейнеров пода
kubectl debug -it -c debugger --image=busybox \
--copy-to test-pod \
--share-processes \
${POD_NAME}
ps auxf
- Written with StackEdit.
