ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ k9s - ืžืžืฉืง ืžืกื•ืฃ ืžืชืงื“ื ืขื‘ื•ืจ Kubernetes

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ k9s - ืžืžืฉืง ืžืกื•ืฃ ืžืชืงื“ื ืขื‘ื•ืจ Kubernetes

K9s ืžืกืคืง ืžืžืฉืง ืžืฉืชืžืฉ ืžืกื•ืฃ ืœืื™ื ื˜ืจืืงืฆื™ื” ืขื ืืฉื›ื•ืœื•ืช Kubernetes. ื”ืžื˜ืจื” ืฉืœ ืคืจื•ื™ืงื˜ ืงื•ื“ ืคืชื•ื— ื–ื” ื”ื™ื ืœื”ืงืœ ืขืœ ื ื™ื•ื•ื˜, ื ื™ื˜ื•ืจ ื•ื ื™ื”ื•ืœ ื™ื™ืฉื•ืžื™ื ื‘-K8s. K9s ืžื ื˜ืจ ื›ืœ ื”ื–ืžืŸ ืฉื™ื ื•ื™ื™ื ื‘-Kubernetes ื•ืžืฆื™ืข ืคืงื•ื“ื•ืช ืžื”ื™ืจื•ืช ืœืขื‘ื•ื“ื” ืขื ืžืฉืื‘ื™ื ืžื ื•ื˜ืจื™ื.

ื”ืคืจื•ื™ืงื˜ ื›ืชื•ื‘ ื‘-Go ื•ืงื™ื™ื ื›ื‘ืจ ืœืžืขืœื” ืžืฉื ื” ื•ื—ืฆื™: ื”ื”ืชื—ื™ื™ื‘ื•ืช ื”ืจืืฉื•ื ื” ื‘ื•ืฆืขื” ื‘-1 ื‘ืคื‘ืจื•ืืจ 2019. ื‘ื–ืžืŸ ื›ืชื™ื‘ืช ืฉื•ืจื•ืช ืืœื”, ื™ืฉ 9000+ ื›ื•ื›ื‘ื™ื GitHub ื•ื›-80 ืชื•ืจืžื™ื. ื‘ื•ื ื ืจืื” ืžื” K9s ื™ื›ื•ืœ ืœืขืฉื•ืช?

ื”ืชืงื ื” ื•ื”ืฉืงื”

ื–ื”ื• ื™ื™ืฉื•ื ืœืงื•ื— (ื‘ื™ื—ืก ืœืืฉื›ื•ืœ Kubernetes) ืฉื”ื›ื™ ืงืœ ืœื”ืคืขื™ืœ ืื•ืชื• ื›ืชืžื•ื ืช Docker:

docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9s

ืขื‘ื•ืจ ื—ืœืง ืžื”ื”ืคืฆื•ืช ืฉืœ ืœื™ื ื•ืงืก ื•ืžืขืจื›ื•ืช ื”ืคืขืœื” ืื—ืจื•ืช, ื™ืฉ ื’ื ืžื•ื›ื ื•ืช ืœื”ืชืงื ื” ื—ื‘ื™ืœื•ืช. ื‘ืื•ืคืŸ ื›ืœืœื™, ืขื‘ื•ืจ ืžืขืจื›ื•ืช ืœื™ื ื•ืงืก, ืืชื” ื™ื›ื•ืœ ืœื”ืชืงื™ืŸ ืงื•ื‘ืฅ ื‘ื™ื ืืจื™:

sudo wget -qO- https://github.com/derailed/k9s/releases/download/v0.22.0/k9s_Linux_x86_64.tar.gz | tar zxvf -  -C /tmp/
sudo mv /tmp/k9s /usr/local/bin

ืื™ืŸ ื“ืจื™ืฉื•ืช ืกืคืฆื™ืคื™ื•ืช ืœืืฉื›ื•ืœ ื”-K8s ืขืฆืžื•. ืื ืœืฉืคื•ื˜ ืœืคื™ ื”ื‘ื™ืงื•ืจื•ืช, ื”ืืคืœื™ืงืฆื™ื” ืขื•ื‘ื“ืช ื’ื ืขื ื’ืจืกืื•ืช ื™ืฉื ื•ืช ื™ื•ืชืจ ืฉืœ Kubernetes ื›ืžื• 1.12.

ื”ืืคืœื™ืงืฆื™ื” ืžื•ืคืขืœืช ื‘ืืžืฆืขื•ืช ื”ืชืฆื•ืจื” ื”ืกื˜ื ื“ืจื˜ื™ืช .kube/config - ื“ื•ืžื” ืœืื•ืคืŸ ืฉื‘ื• ื–ื” ืขื•ืฉื” kubectl.

ืฉื™ื˜

ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ื ืคืชื— ื—ืœื•ืŸ ืขื ืžืจื—ื‘ ื”ืฉืžื•ืช ื”ืžื•ื’ื“ืจ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ืขื‘ื•ืจ ื”ื”ืงืฉืจ. ื›ืœื•ืžืจ, ืื ื›ืชื‘ืช kubectl config set-context --current --namespace=test, ื•ืื– ื™ื™ืคืชื— ืžืจื—ื‘ ื”ืฉืžื•ืช test. (ืจืื” ืœื”ืœืŸ ืœืฉื™ื ื•ื™ ื”ืงืฉืจื™ื/ืžืจื—ื‘ื™ ืฉืžื•ืช.)

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ k9s - ืžืžืฉืง ืžืกื•ืฃ ืžืชืงื“ื ืขื‘ื•ืจ Kubernetes

ืœืš ืœ ืžืฆื‘ ืคืงื•ื“ื” ื ืขืฉื” ืขืœ ื™ื“ื™ ืœื—ื™ืฆื” ืขืœ ":". ืœืื—ืจ ืžื›ืŸ, ื ื™ืชืŸ ืœืฉืœื•ื˜ ืขืœ ืคืขื•ืœืช ื”-k9s ื‘ืืžืฆืขื•ืช ืคืงื•ื“ื•ืช - ืœืžืฉืœ, ื›ื“ื™ ืœื”ืฆื™ื’ ืืช ืจืฉื™ืžืช ื”-StatefulSets (ื‘ืžืจื—ื‘ ื”ืฉืžื•ืช ื”ื ื•ื›ื—ื™), ื ื™ืชืŸ ืœื”ื™ื›ื ืก :sts.

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ k9s - ืžืžืฉืง ืžืกื•ืฃ ืžืชืงื“ื ืขื‘ื•ืจ Kubernetes

ืขื‘ื•ืจ ื›ืžื” ืžืฉืื‘ื™ื ืื—ืจื™ื ืฉืœ Kubernetes:

  • :ns - ืžืจื—ื‘ื™ ืฉืžื•ืช;
  • :deploy - ืคืจื™ืกื•ืช;
  • :ing - ื›ื ื™ืกื•ืช;
  • :svc - ืฉื™ืจื•ืชื™ื.

ื›ื“ื™ ืœื”ืฆื™ื’ ืจืฉื™ืžื” ืžืœืื” ืฉืœ ืกื•ื’ื™ ืžืฉืื‘ื™ื ื”ื–ืžื™ื ื™ื ืœืฆืคื™ื™ื”, ื™ืฉ ืคืงื•ื“ื” :aliases.

ื–ื” ื’ื ื ื•ื— ืœื”ืฆื™ื’ ืืช ืจืฉื™ืžืช ื”ืคืงื•ื“ื•ืช ื”ื–ืžื™ื ื•ืช ืขืœ ื™ื“ื™ ืฉื™ืœื•ื‘ื™ ืžืงืฉื™ื ื—ืžื™ื ื‘ืชื•ืš ื”ื—ืœื•ืŸ ื”ื ื•ื›ื—ื™: ื›ื“ื™ ืœืขืฉื•ืช ื–ืืช, ืคืฉื•ื˜ ืœื—ืฅ ืขืœ "?".

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ k9s - ืžืžืฉืง ืžืกื•ืฃ ืžืชืงื“ื ืขื‘ื•ืจ Kubernetes

ื’ื ื‘-k9s ื™ืฉ ืžืฆื‘ ื—ื™ืคื•ืฉ, ื›ื“ื™ ืœืœื›ืช ืืœื™ื• ืžืกืคื™ืง ืœื”ื–ื™ืŸ "/". ื‘ืขื–ืจืชื• ืžืชื‘ืฆืข ื—ื™ืคื•ืฉ ืขืœ ืชื•ื›ืŸ ื”"ื—ืœื•ืŸ" ื”ื ื•ื›ื—ื™. ื ื ื™ื— ืื ื ื›ื ืกืช ื‘ืขื‘ืจ :ns, ื™ืฉ ืœืš ืจืฉื™ืžื” ืฉืœ ืžืจื—ื‘ื™ ืฉืžื•ืช ืคืชื•ื—ื”. ืื ื™ืฉ ื™ื•ืชืจ ืžื“ื™ ืžื”ื, ืื– ื›ื“ื™ ืœื ืœื’ืœื•ืœ ืœืžื˜ื” ื‘ืžืฉืš ื–ืžืŸ ืจื‘, ืžืกืคื™ืง ืœื”ื™ื›ื ืก ืœื—ืœื•ืŸ ืขื ืžืจื—ื‘ื™ ืฉืžื•ืช /mynamespace.

ื›ื“ื™ ืœื—ืคืฉ ืœืคื™ ืชื•ื•ื™ื•ืช, ืืชื” ื™ื›ื•ืœ ืœื‘ื—ื•ืจ ืืช ื›ืœ ื”ืคื•ื“ื™ื ื‘ืžืจื—ื‘ ื”ืฉืžื•ืช ื”ืจืฆื•ื™, ื•ืื– ืœื”ื–ื™ืŸ, ืœืžืฉืœ, / -l app=whoami. ื ืงื‘ืœ ืจืฉื™ืžื” ืฉืœ ืชืจืžื™ืœื™ื ืขื ื”ืชื•ื•ื™ืช ื”ื–ื•:

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ k9s - ืžืžืฉืง ืžืกื•ืฃ ืžืชืงื“ื ืขื‘ื•ืจ Kubernetes

ื”ื—ื™ืคื•ืฉ ืขื•ื‘ื“ ื‘ื›ืœ ืžื™ื ื™ ื—ืœื•ื ื•ืช, ื›ื•ืœืœ ื™ื•ืžื ื™ื, ืฆืคื™ื™ื” ื‘ืžื ื™ืคืกื˜ื™ื ืฉืœ YAML ื• describe ืœืžืฉืื‘ื™ื - ืจืื” ืœืžื˜ื” ืœืคืจื˜ื™ื ื ื•ืกืคื™ื ืขืœ ืชื›ื•ื ื•ืช ืืœื”.

ืื™ืš ื ืจืื™ืช ื–ืจื™ืžืช ื”ื ื™ื•ื•ื˜ ื”ื›ื•ืœืœืช?

ืขื ื”ืคืงื•ื“ื” :ctx ืืชื” ื™ื›ื•ืœ ืœื‘ื—ื•ืจ ื”ืงืฉืจ:

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ k9s - ืžืžืฉืง ืžืกื•ืฃ ืžืชืงื“ื ืขื‘ื•ืจ Kubernetes

ื›ื“ื™ ืœื‘ื—ื•ืจ ืžืจื—ื‘ ืฉืžื•ืช, ื™ืฉ ืืช ื”ืคืงื•ื“ื” ืฉื›ื‘ืจ ื”ื•ื–ื›ืจื” :ns, ื•ืœืื—ืจ ืžื›ืŸ ืชื•ื›ืœ ืœื”ืฉืชืžืฉ ื‘ื—ื™ืคื•ืฉ ืขื‘ื•ืจ ื”ืžืจื—ื‘ ื”ืจืฆื•ื™: /test.

ืื ื›ืขืช ื ื‘ื—ืจ ืืช ื”ืžืฉืื‘ ืฉืื ื• ืžืขื•ื ื™ื™ื ื™ื ื‘ื• (ืœื“ื•ื’ืžื”, ืื•ืชื• StatefulSet), ื™ื•ืคื™ืข ื”ืžื™ื“ืข ื”ืžืชืื™ื ืขื‘ื•ืจื•: ื›ืžื” ืคื•ื“ื™ื ืคื•ืขืœื™ื ืขื ืžื™ื“ืข ืงืฆืจ ืขืœื™ื”ื.

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ k9s - ืžืžืฉืง ืžืกื•ืฃ ืžืชืงื“ื ืขื‘ื•ืจ Kubernetes

ืจืง ืคื•ื“ื™ื ืขืฉื•ื™ื™ื ืœืขื ื™ื™ืŸ - ืื– ืžืกืคื™ืง ืœื”ื™ื›ื ืก :pod. ื‘ืžืงืจื” ืฉืœ ConfigMaps (:cm - ืขื‘ื•ืจ ืจืฉื™ืžืช ื”ืžืฉืื‘ื™ื ื”ืœืœื•), ืืชื” ื™ื›ื•ืœ ืœื‘ื—ื•ืจ ืืช ืื•ื‘ื™ื™ืงื˜ ื”ืขื ื™ื™ืŸ ื•ืœืœื—ื•ืฅ ืขืœ "u", ื•ืœืื—ืจ ืžื›ืŸ K9s ื™ื’ื™ื“ื• ืœืš ืžื™ ืกืคืฆื™ืคื™ืช ืžืฉืชืžืฉ ื‘ื• (CM ื–ื”).

ืชื›ื•ื ื” ืฉื™ืžื•ืฉื™ืช ื ื•ืกืคืช ืœืฆืคื™ื™ื” ื‘ืžืฉืื‘ื™ื ื”ื™ื ืฉืœื”ื "ืจื ื˜ื’ืŸ" (ืชืฆื•ื’ืช ืจื ื˜ื’ืŸ). ืžืฆื‘ ื–ื” ื ืงืจื ืขืœ ื™ื“ื™ ื”ืคืงื•ื“ื” :xray RESOURCE ื•... ืงืœ ื™ื•ืชืจ ืœื”ืจืื•ืช ืื™ืš ื–ื” ืขื•ื‘ื“ ืžืืฉืจ ืœื”ืกื‘ื™ืจ. ื”ื ื” ืื™ื•ืจ ืขื‘ื•ืจ StatefulSets:

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ k9s - ืžืžืฉืง ืžืกื•ืฃ ืžืชืงื“ื ืขื‘ื•ืจ Kubernetes
(ื ื™ืชืŸ ืœืขืจื•ืš, ืœืฉื ื•ืช, ืœื™ืฆื•ืจ ื›ืœ ืื—ื“ ืžื”ืžืฉืื‘ื™ื ื”ืœืœื• describe.)

ื•ื”ื ื” ืคืจื™ืกื” ืขื Ingress:

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ k9s - ืžืžืฉืง ืžืกื•ืฃ ืžืชืงื“ื ืขื‘ื•ืจ Kubernetes

ืขื‘ื•ื“ื” ืขื ืžืฉืื‘ื™ื

ืืชื” ื™ื›ื•ืœ ืœืงื‘ืœ ืžื™ื“ืข ืขืœ ื›ืœ ืžืฉืื‘ ื‘-YAML ืื• ืฉืœื• describe ืขืœ ื™ื“ื™ ืœื—ื™ืฆื” ืขืœ ืงื™ืฆื•ืจื™ ื”ืžืงืฉื™ื ื”ืžืชืื™ืžื™ื ("y" ื•-"d", ื‘ื”ืชืืžื”). ื›ืžื•ื‘ืŸ, ื™ืฉื ืŸ ืคืขื•ืœื•ืช ื‘ืกื™ืกื™ื•ืช ืืคื™ืœื• ื™ื•ืชืจ: ื”ืจืฉื™ืžื” ื•ืงื™ืฆื•ืจื™ ื”ืžืงืœื“ืช ืฉืœื”ื ืชืžื™ื“ ื’ืœื•ื™ื™ื ื”ื•ื“ื•ืช ืœ"ื›ื•ืชืจืช" ื ื•ื—ื” ื‘ืžืžืฉืง (ืžื•ืกืชืจืช ืขืœ ื™ื“ื™ ืœื—ื™ืฆื” ืขืœ Ctrl + e).

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ k9s - ืžืžืฉืง ืžืกื•ืฃ ืžืชืงื“ื ืขื‘ื•ืจ Kubernetes

ื‘ืขืช ืขืจื™ื›ืช ืžืฉืื‘ ื›ืœืฉื”ื• ("e" ืœืื—ืจ ื‘ื—ื™ืจืชื•), ืขื•ืจืš ื”ื˜ืงืกื˜ ื”ืžื•ื’ื“ืจ ื‘ืžืฉืชื ื™ ื”ืกื‘ื™ื‘ื” ื ืคืชื— (export EDITOR=vim).

ื•ื”ื ื” ืื™ืš ื ืจืื” ื”ืชื™ืื•ืจ ื”ืžืคื•ืจื˜ ืฉืœ ื”ืžืฉืื‘ (describe):

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ k9s - ืžืžืฉืง ืžืกื•ืฃ ืžืชืงื“ื ืขื‘ื•ืจ Kubernetes

ื ื™ืชืŸ ืœืฉืžื•ืจ ืคืœื˜ ื–ื” (ืื• ื”ืคืœื˜ ืฉืœ ืฆืคื™ื™ื” ื‘ืžื ื™ืคืกื˜ YAML ืฉืœ ื”ืžืฉืื‘) ื‘ืืžืฆืขื•ืช ืงื™ืฆื•ืจ ื”ืžืงืฉื™ื ื”ืžื•ื›ืจ Ctrl + s. ื”ื™ื›ืŸ ื”ื•ื ื™ื™ืฉืžืจ ื™ื™ื•ื•ื“ืข ืžื”ื”ื•ื“ืขื” K9s:

Log /tmp/k9s-screens-root/kubernetes/Describe-1601244920104133900.yml saved successfully!

ื ื™ืชืŸ ื’ื ืœืฉื—ื–ืจ ืžืฉืื‘ื™ื ืžืงื•ื‘ืฆื™ ื”ื’ื™ื‘ื•ื™ ืฉื ื•ืฆืจื•, ืœืื—ืจ ื”ืกืจืช ืชื•ื•ื™ื•ืช ืžืขืจื›ืช ื•ื”ืขืจื•ืช. ื›ื“ื™ ืœืขืฉื•ืช ื–ืืช, ืืชื” ืฆืจื™ืš ืœืœื›ืช ืœืกืคืจื™ื™ื” ืื™ืชื (:dir /tmp), ื•ืœืื—ืจ ืžื›ืŸ ื‘ื—ืจ ืืช ื”ืงื•ื‘ืฅ ื”ืจืฆื•ื™ ื•ื”ื—ืœ apply.

ืื’ื‘, ื‘ื›ืœ ืขืช ืืชื” ื™ื›ื•ืœ ืœื—ื–ื•ืจ ืื—ื•ืจื” ืœ-ReplicaSet ื”ืงื•ื“ื ืื ื™ืฉ ื‘ืขื™ื•ืช ืขื ื”ื ื•ื›ื—ื™. ืœืฉื ื›ืš, ื‘ื—ืจ ืืช ื”-RS ื”ืจืฆื•ื™ (:rs ืœืจืฉื™ืžื” ืฉืœื”ื):

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ k9s - ืžืžืฉืง ืžืกื•ืฃ ืžืชืงื“ื ืขื‘ื•ืจ Kubernetes

... ื•ื”ื—ื–ืจื” ืœืื—ื•ืจ ืขื Ctrl + l. ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœืงื‘ืœ ื”ื•ื“ืขื” ืฉื”ื›ืœ ื”ืœืš ื›ืฉื•ืจื”:

k9s/whoami-5cfbdbb469 successfully rolled back

ื•ื›ื“ื™ ืœืฉื ื•ืช ืืช ืงื ื” ื”ืžื™ื“ื” ืฉืœ ื”ื”ืขืชืงื™ื, ืคืฉื•ื˜ ืœื—ืฅ ืขืœ ื”"s" (ืงื ื” ืžื™ื“ื”) ื•ื‘ื—ืจ ืืช ืžืกืคืจ ื”ืžื•ืคืขื™ื ื”ืจืฆื•ื™:

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ k9s - ืžืžืฉืง ืžืกื•ืฃ ืžืชืงื“ื ืขื‘ื•ืจ Kubernetes

ื ื™ืชืŸ ืœื”ื™ื›ื ืก ืœื›ืœ ืื—ื“ ืžื”ืžื™ื›ืœื™ื ื‘ืืžืฆืขื•ืช ื”ืงืœื™ืคื”: ืœืฉื ื›ืš, ืขื‘ื•ืจ ืืœ ื”ืคื•ื“ ื”ืจืฆื•ื™, ืœื—ืฅ ืขืœ "s" (ืงืœื™ืคื”) ื•ื‘ื—ืจ ืืช ื”ืžื™ื›ืœ.

ืชื›ื•ื ื•ืช ืื—ืจื•ืช

ื›ืžื•ื‘ืŸ, ืฆืคื™ื™ื” ื‘ื™ื•ืžื ื™ื ื ืชืžื›ืช ื’ื ("l" ืขื‘ื•ืจ ื”ืžืฉืื‘ ื”ื ื‘ื—ืจ). ื•ื›ื“ื™ ืœืฆืคื•ืช ื‘ื™ื•ืžื ื™ื ื—ื“ืฉื™ื, ืื™ืŸ ืฆื•ืจืš ืœืœื—ื•ืฅ ื›ืœ ื”ื–ืžืŸ ืขืœ Enter: ืžืกืคื™ืง ืœืกืžืŸ ("m") ื•ืื– ืจืง ืœืขืงื•ื‘ ืื—ืจ ื”ื•ื“ืขื•ืช ื—ื“ืฉื•ืช.

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ k9s - ืžืžืฉืง ืžืกื•ืฃ ืžืชืงื“ื ืขื‘ื•ืจ Kubernetes

ื’ื ื‘ืื•ืชื• ื—ืœื•ืŸ, ืืชื” ื™ื›ื•ืœ ืœื‘ื—ื•ืจ ืืช ื˜ื•ื•ื— ื”ื–ืžืŸ ืขื‘ื•ืจ ื”ืคืœื˜ ืฉืœ ื™ื•ืžื ื™ื:

  • ืžืงืฉ "1" - ืœืžืฉืš ื“ืงื” ืื—ืช;
  • "2 ื“ืงื•ืช;
  • "3 ื“ืงื•ืช;
  • "4 ื“ืงื•ืช;
  • "5" - ืฉืขื” ืื—ืช;
  • "0" - ืœืžืฉืš ื›ืœ ื—ื™ื™ ื”ืชืจืžื™ืœ.

ืžืฆื‘ ื”ืคืขืœื” ืžื™ื•ื—ื“ ื“ื•ืคืง (ืคืงื•ื“ื” :pulse) ืžืฆื™ื’ ืžื™ื“ืข ื›ืœืœื™ ืขืœ ืืฉื›ื•ืœ Kubernetes:

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ k9s - ืžืžืฉืง ืžืกื•ืฃ ืžืชืงื“ื ืขื‘ื•ืจ Kubernetes

ื‘ื• ื ื™ืชืŸ ืœืจืื•ืช ืืช ืžืกืคืจ ื”ืžืฉืื‘ื™ื ื•ื”ืกื˜ื˜ื•ืก ืฉืœื”ื (ื™ืจื•ืง ืžืฆื™ื’ ืืช ืืœื• ืฉื™ืฉ ืœื”ื ืืช ื”ืกื˜ื˜ื•ืก Running).

ืขื•ื“ ืชื›ื•ื ื” ืžื’ื ื™ื‘ื” ืฉืœ K9s ื ืงืจืืช ืคื•ืคืื™. ื”ื•ื ื‘ื•ื“ืง ืืช ื›ืœ ื”ืžืฉืื‘ื™ื ืขื‘ื•ืจ ืงืจื™ื˜ืจื™ื•ื ื™ื ืžืกื•ื™ืžื™ื ืฉืœ ื ื›ื•ื ื•ืช ื•ืžืฆื™ื’ ืืช ื”"ื“ื™ืจื•ื’" ื”ืžืชืงื‘ืœ ืขื ื”ืกื‘ืจื™ื. ืœื“ื•ื’ืžื”, ืืชื” ื™ื›ื•ืœ ืœืจืื•ืช ืฉืื™ืŸ ืžืกืคื™ืง ื“ื•ื’ืžืื•ืช ืื• ืžื’ื‘ืœื•ืช, ื•ืžื™ื›ืœ ื›ืœืฉื”ื• ื™ื›ื•ืœ ืœืคืขื•ืœ ื›ืฉื•ืจืฉ ...

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ k9s - ืžืžืฉืง ืžืกื•ืฃ ืžืชืงื“ื ืขื‘ื•ืจ Kubernetes

ื™ืฉ ืชืžื™ื›ื” ื‘ืกื™ืกื™ืช ืœื”ืœื. ืœื“ื•ื’ืžื”, ื›ืš ืชื•ื›ืœ ืœืจืื•ืช ืืช ื”ืžื”ื“ื•ืจื•ืช ื”ืคืจื•ืกื•ืช ื‘ืืฉื›ื•ืœ:

:helm all # ะฒัะต
:helm $namespace # ะฒ ะบะพะฝะบั€ะตั‚ะฝะพะผ ะฟั€ะพัั‚ั€ะฐะฝัั‚ะฒะต ะธะผะตะฝ

ื‘ื ืฆ 'ืžืจืง

ืืคื™ืœื• ืžื•ื‘ื ื” ื‘ืชื•ืš K9s ื”ื™ื™ ื”ื•ื ืžื—ื•ืœืœ ืขื•ืžืก ืฉืจืช HTTP ืคืฉื•ื˜, ื—ืœื•ืคื” ืœ-ab ื”ื™ื“ื•ืข ื™ื•ืชืจ (ApacheBench).

ื›ื“ื™ ืœื”ืคืขื™ืœ ืื•ืชื•, ืขืœื™ืš ืœื”ืคืขื™ืœ ื”ืขื‘ืจื” ืงื“ื™ืžื” ื‘ืคื•ื“. ื›ื“ื™ ืœืขืฉื•ืช ื–ืืช, ื‘ื—ืจ ืืช ื”ืคื•ื“ ื•ื”ืงืฉ Shift + f, ืขื‘ื•ืจ ืœืชืคืจื™ื˜ ื”ืžืฉื ื” ืฉืœ port-forward ื‘ืืžืฆืขื•ืช ื”ื›ื™ื ื•ื™ "pf".

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ k9s - ืžืžืฉืง ืžืกื•ืฃ ืžืชืงื“ื ืขื‘ื•ืจ Kubernetes

ืœืื—ืจ ื‘ื—ื™ืจืช ื”ื™ืฆื™ืื” ื•ืœื—ื™ืฆื” ืขืœ Ctrl + b, ื”ืžื“ื“ ืขืฆืžื• ื™ืชื—ื™ืœ. ืชื•ืฆืื•ืช ืขื‘ื•ื“ืชื• ืžืื•ื—ืกื ื•ืช ื‘ /tmp ื•ื–ืžื™ื ื™ื ืœืฆืคื™ื™ื” ืžืื•ื—ืจืช ื™ื•ืชืจ ื‘-K9s.

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ k9s - ืžืžืฉืง ืžืกื•ืฃ ืžืชืงื“ื ืขื‘ื•ืจ Kubernetes
ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ k9s - ืžืžืฉืง ืžืกื•ืฃ ืžืชืงื“ื ืขื‘ื•ืจ Kubernetes

ื›ื“ื™ ืœืฉื ื•ืช ืืช ืชืฆื•ืจืช ื”ืžื“ื“, ืขืœื™ืš ืœื™ืฆื•ืจ ืงื•ื‘ืฅ $HOME/.k9s/bench-<my_context>.yml (ื ืงื‘ืข ืขื‘ื•ืจ ื›ืœ ืืฉื›ื•ืœ).

ื”ืขืจื”: ื—ืฉื•ื‘ ืœื”ืจื—ื™ื‘ ืืช ื›ืœ ืงื‘ืฆื™ YAML ื‘ืกืคืจื™ื™ื” .k9s ื–ื” ื”ื™ื” ื‘ื“ื™ื•ืง .yml (.yaml ืœื ืขื•ื‘ื“ ื›ืžื• ืฉืฆืจื™ืš).

ื“ื•ื’ืžื” ืœืชืฆื•ืจื”:

benchmarks:
  defaults:
    # ะšะพะปะธั‡ะตัั‚ะฒะพ ะฟะพั‚ะพะบะพะฒ
    concurrency: 2
    # ะšะพะปะธั‡ะตัั‚ะฒะพ ะทะฐะฟั€ะพัะพะฒ
    requests: 1000
  containers:
    # ะะฐัั‚ั€ะพะนะบะธ ะดะปั ะบะพะฝั‚ะตะนะฝะตั€ะฐ ั ะฑะตะฝั‡ะผะฐั€ะบะพะผ
    # ะšะพะฝั‚ะตะนะฝะตั€ ะพะฟั€ะตะดะตะปัะตั‚ัั ะบะฐะบ namespace/pod-name:container-name
    default/nginx:nginx:
      concurrency: 2
      requests: 10000
      http:
        path: /
        method: POST
        body:
          {"foo":"bar"}
        header:
          Accept:
            - text/html
          Content-Type:
            - application/json
 services:
    # ะœะพะถะฝะพ ะฟั€ะพะฒะพะดะธั‚ัŒ ะฑะตะฝั‡ะผะฐั€ะบ ะฝะฐ ัะตั€ะฒะธัะฐั… ั‚ะธะฟะฐ NodePort ะธ LoadBalancer
    # ะกะธะฝั‚ะฐะบัะธั: namespace/service-name
    default/nginx:
      concurrency: 5
      requests: 500
      http:
        method: GET
        path: /auth
      auth:
        user: flant
        password: s3cr3tp455w0rd

ืžืžืฉืง

ื”ืžืจืื” ืฉืœ ืขืžื•ื“ื•ืช ืขื‘ื•ืจ ืจืฉื™ืžื•ืช ืžืฉืื‘ื™ื ืžืฉืชื ื” ืขืœ ื™ื“ื™ ื™ืฆื™ืจืช ืงื•ื‘ืฅ $HOME/.k9s/views.yml. ื“ื•ื’ืžื” ืœืชื•ื›ืŸ ืฉืœื•:

k9s:
 views:
   v1/pods:
     columns:
       - AGE
       - NAMESPACE
       - NAME
       - IP
       - NODE
       - STATUS
       - READY
   v1/services:
     columns:
       - AGE
       - NAMESPACE
       - NAME
       - TYPE
       - CLUSTER-IP

ื ื›ื•ืŸ, ืื™ืŸ ืžืกืคื™ืง ืขืžื•ื“ื” ืœืชื•ื•ื™ื•ืช, ืฉืขื‘ื•ืจืŸ ื™ืฉ ื ื•ืฉื ื‘ืคืจื•ื™ืงื˜.

ื”ืžื™ื•ืŸ ืœืคื™ ืขืžื•ื“ื•ืช ืžืชื‘ืฆืข ื‘ืืžืฆืขื•ืช ืงื™ืฆื•ืจื™ ืžืงืฉื™ื:

  • Shift + n - ืœืคื™ ืฉื;
  • Shift + o - ืœืคื™ ืฆืžืชื™ื;
  • Shift + i - ืœืคื™ IP;
  • Shift + a - ืœื›ืœ ื”ื—ื™ื™ื ืฉืœ ื”ืžื™ื›ืœ;
  • Shift + t - ืœืคื™ ืžืกืคืจ ื”ื”ืชื—ืœื•ืช ืžื—ื“ืฉ;
  • Shift + r - ืœืคื™ ืžืฆื‘ ืžื•ื›ื ื•ืช;
  • Shift + c - ืœืคื™ ืฆืจื™ื›ืช ืžืขื‘ื“;
  • Shift + m - ืœืคื™ ืฆืจื™ื›ืช ื–ื™ื›ืจื•ืŸ.

ืื ืžื™ืฉื”ื• ืœื ืื•ื”ื‘ ืืช ืขืจื›ืช ื”ืฆื‘ืขื™ื ื”ืžื•ื’ื“ืจืช ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, K9s ืืคื™ืœื• ืชื•ืžืš ืขื•ืจื•ืช. ื“ื•ื’ืžืื•ืช ืžื•ื›ื ื•ืช (7 ื—ืœืงื™ื) ื–ืžื™ื ื•ืช ื›ืืŸ. ื”ื ื” ื“ื•ื’ืžื” ืœืื—ื“ ืžื”ืขื•ืจื•ืช ื”ืœืœื• (ื‘ื—ื™ืœ ื”ื™ื):

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ k9s - ืžืžืฉืง ืžืกื•ืฃ ืžืชืงื“ื ืขื‘ื•ืจ Kubernetes

ะŸะปะฐะณะธะฝั‹

ืœื‘ืกื•ืฃ, ืชื•ืกืคื™ื ืžืืคืฉืจื™ื ืœืš ืœื”ืจื—ื™ื‘ ืืช ื”ื™ื›ื•ืœื•ืช ืฉืœ K9s. ืื ื™ ืขืฆืžื™ ื”ืฉืชืžืฉืชื™ ืจืง ื‘ืื—ื“ ืžื”ื ื‘ืขื‘ื•ื“ืชื™ - kubectl get all -n $namespace.

ื–ื” ื ืจืื” ื›ืžื• ื–ื”. ืฆื•ืจ ืงื•ื‘ืฅ $HOME/.k9s/plugin.yml ืขื ืชื•ื›ืŸ ื›ื–ื”:

plugin:
 get-all:
   shortCut: g    
   confirm: false    
   description: get all
   scopes:
   - all
   command: sh
   background: false
   args:
   - -c
   - "kubectl -n $NAMESPACE get all -o wide | less"

ื›ืขืช ืืชื” ื™ื›ื•ืœ ืœืœื›ืช ืœืžืจื—ื‘ ื”ืฉืžื•ืช ื•ืœืœื—ื•ืฅ ืขืœ "g" ื›ื“ื™ ืœื‘ืฆืข ืขื ื”ืคืงื•ื“ื” ื”ืžืชืื™ืžื”:

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ k9s - ืžืžืฉืง ืžืกื•ืฃ ืžืชืงื“ื ืขื‘ื•ืจ Kubernetes

ื‘ื™ืŸ ื”ืชื•ืกืคื™ื ื™ืฉ, ืœืžืฉืœ, ืื™ื ื˜ื’ืจืฆื™ื•ืช ืขื kubectl-jq ื•ื›ืœื™ ืขื–ืจ ืœืฆืคื™ื™ื” ื‘ื™ื•ืžื ื™ื ืฉื˜ืจืŸ.

ืžืกืงื ื”

ืœื˜ืขืžื™, K9s ื”ืชื’ืœื• ื›ื ื•ื—ื•ืช ืžืื•ื“ ืœืขื‘ื•ื“ื”: ืืคืฉืจ ืœื”ืชืจื’ืœ ื‘ืžื”ื™ืจื•ืช ืœื—ืคืฉ ืืช ื›ืœ ืžื” ืฉืฆืจื™ืš ื‘ืœื™ ืœื”ืฉืชืžืฉ ื‘ื•. kubectl. ื”ื™ื™ืชื™ ืžืจื•ืฆื” ืžื”ื ื•ืฃ ืฉืœ ื”ื™ื•ืžื ื™ื ื•ืžื”ืฉืžื™ืจื” ืฉืœื”ื, ืขืจื™ื›ื” ืžื”ื™ืจื” ืฉืœ ืžืฉืื‘ื™ื, ืžื”ื™ืจื•ืช ื”ืขื‘ื•ื“ื” ื‘ืื•ืคืŸ ื›ืœืœื™ *, ืžืฆื‘ Popeye ื”ืชื‘ืจืจ ื›ืžื•ืขื™ืœ. ืื–ื›ื•ืจ ืžื™ื•ื—ื“ ื”ื•ื ื”ื™ื›ื•ืœืช ืœื™ืฆื•ืจ ืชื•ืกืคื™ื ื•ืœืฉื ื•ืช ืืช ื”ืืคืœื™ืงืฆื™ื” ื›ืš ืฉืชืชืื™ื ืœืฆืจื›ื™ื ืฉืœืš.

* ืืžื ื, ืขื ื ืคื— ื’ื“ื•ืœ ืฉืœ ื™ื•ืžื ื™ื, ืฉืžืชื™ ืœื‘ ื’ื ืœืคืขื•ืœื” ื”ืื™ื˜ื™ืช ืฉืœ K9s. ื‘ืจื’ืขื™ื ื›ืืœื”, ืชื•ื›ื ื™ืช ื”ืฉื™ืจื•ืช "ืื›ืœื”" 2 ืœื™ื‘ื•ืช ืžื”-Intel Xeon E312xx ื•ืืฃ ืขืœื•ืœื” ืœื”ืงืคื™ื.

ืžื” ื—ืกืจ ื›ืจื’ืข? ื—ื–ืจื” ืžื”ื™ืจื” ืœื’ืจืกื” ื”ืงื•ื“ืžืช (ืื ื—ื ื• ืœื ืžื“ื‘ืจื™ื ืขืœ RS) ื‘ืœื™ ืœืœื›ืช ืœืกืคืจื™ื™ื”. ื‘ื ื•ืกืฃ, ื”ื”ื—ืœืžื” ืžืชืจื—ืฉืช ืจืง ืขื‘ื•ืจ ืจืง ืžืฉืื‘: ืื ืชืžื—ืง ื”ืขืจื” ืื• ืชื•ื•ื™ืช, ืชืฆื˜ืจืš ืœืžื—ื•ืง ื•ืœืฉื—ื–ืจ ืืช ื›ืœ ื”ืžืฉืื‘ (ื›ืืŸ ืืชื” ืฆืจื™ืš ืœืœื›ืช ืœืกืคืจื™ื™ื”). ืขื•ื“ ื–ื•ื˜ื” - ืื™ืŸ ืžืกืคื™ืง ืชืืจื™ืš ืœ"ื’ื™ื‘ื•ื™ื™ื" ืฉืžื•ืจื™ื ื›ืืœื”.

ื .ื‘.

ืงืจื ื’ื ื‘ื‘ืœื•ื’ ืฉืœื ื•:

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”