k9s-āĻāϰ āĻ“āĻ­āĻžāϰāĻ­āĻŋāω - Kubernetes-āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āωāĻ¨ā§āύāϤ āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ

k9s-āĻāϰ āĻ“āĻ­āĻžāϰāĻ­āĻŋāω - Kubernetes-āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āωāĻ¨ā§āύāϤ āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ

K9s Kubernetes āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰāϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ āχāĻ¨ā§āϟāĻžāϰāĻ…ā§āϝāĻžāĻ•ā§āϟ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ āχāωāϜāĻžāϰ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤ āĻāχ āĻ“āĻĒ⧇āύ āϏ⧋āĻ°ā§āϏ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϞāĻ•ā§āĻˇā§āϝ āĻšāϞ K8s-āĻ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϗ⧁āϞāĻŋ āύ⧇āĻ­āĻŋāϗ⧇āϟ āĻ•āϰāĻž, āύāĻŋāϰ⧀āĻ•ā§āώāĻŖ āĻ•āϰāĻž āĻāĻŦāĻ‚ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāĻž āϏāĻšāϜ āĻ•āϰāĻžāĨ¤ K9s āĻ•ā§āϰāĻŽāĻžāĻ—āϤ Kubernetes āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋ āύāĻŋāϰ⧀āĻ•ā§āώāĻŖ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āύāĻŋāϰ⧀āĻ•ā§āώāĻŖ āĻ•āϰāĻž āϏāĻ‚āĻ¸ā§āĻĨāĻžāύāϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāϜ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĻā§āϰ⧁āϤ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ…āĻĢāĻžāϰ āĻ•āϰ⧇āĨ¤

āĻĒā§āϰāĻ•āĻ˛ā§āĻĒāϟāĻŋ Go-āϤ⧇ āϞ⧇āĻ–āĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āĻĒā§āϰāĻžāϝāĻŧ āĻĻ⧇āĻĄāĻŧ āĻŦāĻ›āϰ⧇āϰāĻ“ āĻŦ⧇āĻļāĻŋ āϏāĻŽāϝāĻŧ āϧāϰ⧇ āϰāϝāĻŧ⧇āϛ⧇: āĻĒā§āϰāĻĨāĻŽ āĻĒā§āϰāϤāĻŋāĻļā§āϰ⧁āϤāĻŋāϟāĻŋ 1 āĻĢ⧇āĻŦā§āϰ⧁āϝāĻŧāĻžāϰāĻŋ, 2019-āĻ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ āϞ⧇āĻ–āĻžāϰ āϏāĻŽāϝāĻŧ, 9000+ āϤāĻžāϰāĻž āφāϛ⧇ GitHub āĻāĻŦāĻ‚ āĻĒā§āϰāĻžāϝāĻŧ 80 āϜāύ āĻ…āĻŦāĻĻāĻžāύāĻ•āĻžāϰ⧀āĨ¤ āφāϏ⧁āύ āĻĻ⧇āĻ–āĻŋ k9s āĻ•āĻŋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇?

āχāύāĻ¸ā§āϟāϞ⧇āĻļāύ āĻāĻŦāĻ‚ āϞāĻžā§āϚ

āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ (āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ) āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϝāĻž āĻĄāĻ•āĻžāϰ āχāĻŽā§‡āϜ āĻšāĻŋāϏāĻžāĻŦ⧇ āϚāĻžāϞāĻžāύ⧋ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āϏāĻšāϜ:

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 āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āϕ⧋āύ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧāϤāĻž āύ⧇āχāĨ¤ āϰāĻŋāĻ­āĻŋāω āĻĻā§āĻŦāĻžāϰāĻž āĻŦāĻŋāϚāĻžāϰ āĻ•āϰ⧇, āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϟāĻŋ āϕ⧁āĻŦāĻžāϰāύ⧇āĻŸā§‡āϰ āĻĒ⧁āϰāĻžāύ⧋ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āϝ⧇āĻŽāύ 1.12 āĻāϰ āϏāĻžāĻĨ⧇āĻ“ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤

āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϟāĻŋ āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϚāĻžāϞ⧁ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ .kube/config - āĻāϟāĻž āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻ•āϰ⧇ āĻ…āύ⧁āϰ⧂āĻĒ kubectl.

āĻ¨ā§āϝāĻžāĻ­āĻŋāϗ⧇āĻļāύ

āĻĄāĻŋāĻĢāĻ˛ā§āϟāϰ⧂āĻĒ⧇, āĻĒā§āϰāϏāĻ™ā§āĻ—āϟāĻŋāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāĻž āĻĄāĻŋāĻĢāĻ˛ā§āϟ āύāĻžāĻŽāĻ¸ā§āĻĨāĻžāύ āϏāĻš āĻāĻ•āϟāĻŋ āωāχāĻ¨ā§āĻĄā§‹ āĻ–ā§‹āϞ⧇āĨ¤ āĻ…āĻ°ā§āĻĨāĻžā§Ž āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āϞāĻŋāϖ⧇āύ kubectl config set-context --current --namespace=test, āϤāĻžāϰāĻĒāϰ āύāĻžāĻŽāĻ¸ā§āĻĨāĻžāύ āϖ⧁āϞāĻŦ⧇ test. (āĻĒā§āϰāϏāĻ™ā§āĻ—/āύ⧇āĻŽāĻ¸ā§āĻĒ⧇āϏ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇āϰ āϜāĻ¨ā§āϝ āύ⧀āĻšā§‡ āĻĻ⧇āϖ⧁āύāĨ¤)

k9s-āĻāϰ āĻ“āĻ­āĻžāϰāĻ­āĻŋāω - Kubernetes-āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āωāĻ¨ā§āύāϤ āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ

āϝāĻžāĻ“ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŽā§‹āĻĄ ":" āϟāĻŋāĻĒ⧇ āĻāϟāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāϰ āĻĒāϰ⧇, āφāĻĒāύāĻŋ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ k9s-āĻāϰ āĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻ•āϞāĻžāĻĒ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ - āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻ¸ā§āĻŸā§‡āϟāĻĢ⧁āϞāϏ⧇āϟāϗ⧁āϞāĻŋāϰ āϤāĻžāϞāĻŋāĻ•āĻž āĻĻ⧇āĻ–āϤ⧇ (āĻŦāĻ°ā§āϤāĻŽāĻžāύ āύāĻžāĻŽāĻ¸ā§āĻĨāĻžāύ⧇), āφāĻĒāύāĻŋ āĻĒā§āϰāĻŦ⧇āĻļ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ :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.

āĻāĻ–āύ āϝāĻĻāĻŋ āφāĻŽāϰāĻž āϝ⧇ āϏāĻ‚āĻ¸ā§āĻĨāĻžāύāϟāĻŋāϤ⧇ āφāĻ—ā§āϰāĻšā§€ āϤāĻž āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰāĻŋ (āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻāĻ•āχ āĻ¸ā§āĻŸā§‡āϟāĻĢ⧁āϞāϏ⧇āϟ), āĻāϰ āϜāĻ¨ā§āϝ āϏāĻ‚āĻļā§āϞāĻŋāĻˇā§āϟ āϤāĻĨā§āϝ āωāĻĒāĻ¸ā§āĻĨāĻŋāϤ āĻšāĻŦ⧇: āϤāĻžāĻĻ⧇āϰ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤ āϤāĻĨā§āϝ āϏāĻš āĻ•āϤāϗ⧁āϞāĻŋ āĻĒāĻĄ āϚāϞāϛ⧇āĨ¤

k9s-āĻāϰ āĻ“āĻ­āĻžāϰāĻ­āĻŋāω - Kubernetes-āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āωāĻ¨ā§āύāϤ āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ

āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻļ⧁āρāϟāĻŋ āϏ⧁āĻĻ āĻšāϤ⧇ āĻĒāĻžāϰ⧇ - āϤāĻžāϰāĻĒāϰ āĻāϟāĻŋ āĻĒā§āϰāĻŦ⧇āĻļ āĻ•āϰāĻž āϝāĻĨ⧇āĻˇā§āϟ :pod. ConfigMaps āĻāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ (:cm - āĻāχ āϏāĻ‚āĻ¸ā§āĻĨāĻžāύāϗ⧁āϞāĻŋāϰ āϤāĻžāϞāĻŋāĻ•āĻžāϰ āϜāĻ¨ā§āϝ), āφāĻĒāύāĻŋ āφāĻ—ā§āϰāĻšā§‡āϰ āĻŦāĻ¸ā§āϤ⧁āϟāĻŋ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āĻāĻŦāĻ‚ "u" āĻ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ, āϝāĻžāϰ āĻĒāϰ⧇ K9s āφāĻĒāύāĻžāϕ⧇ āĻŦāϞāĻŦ⧇ āϕ⧇ āĻāϟāĻŋ āĻŦāĻŋāĻļ⧇āώāĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ (āĻāχ CM)āĨ¤

āϏāĻŽā§āĻĒāĻĻ āĻĻ⧇āĻ–āĻžāϰ āϜāĻ¨ā§āϝ āφāϰ⧇āĻ•āϟāĻŋ āϏāĻšāϜ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āĻšāϞ āϤāĻžāĻĻ⧇āϰ "āĻāĻ•ā§āϏ-āϰ⧇" (āĻāĻ•ā§āϏāϰ⧇ āĻ­āĻŋāω). āĻāχ āĻŽā§‹āĻĄ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĻā§āĻŦāĻžāϰāĻž āĻŦāϞāĻž āĻšāϝāĻŧ :xray RESOURCE āĻāĻŦāĻ‚ ... āĻŦā§āϝāĻžāĻ–ā§āϝāĻž āĻ•āϰāĻžāϰ āĻšā§‡āϝāĻŧ⧇ āĻāϟāĻŋ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇ āϤāĻž āĻĻ⧇āĻ–āĻžāύ⧋ āϏāĻšāϜāĨ¤ āĻ¸ā§āĻŸā§‡āϟāĻĢ⧁āϞāϏ⧇āϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻāĻ–āĻžāύ⧇ āĻāĻ•āϟāĻŋ āĻĻ⧃āĻˇā§āϟāĻžāĻ¨ā§āϤ āϰāϝāĻŧ⧇āϛ⧇:

k9s-āĻāϰ āĻ“āĻ­āĻžāϰāĻ­āĻŋāω - Kubernetes-āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āωāĻ¨ā§āύāϤ āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ
(āĻāχ āϏāĻŽā§āĻĒāĻĻāϗ⧁āϞāĻŋāϰ āĻĒā§āϰāϤāĻŋāϟāĻŋ āϏāĻŽā§āĻĒāĻžāĻĻāύāĻž, āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ, āϤ⧈āϰāĻŋ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ describe.)

āĻāĻŦāĻ‚ āĻāĻ–āĻžāύ⧇ āĻĒā§āϰāĻŦ⧇āĻļ⧇āϰ āϏāĻžāĻĨ⧇ āĻ¸ā§āĻĨāĻžāĻĒāύāĻž āϰāϝāĻŧ⧇āϛ⧇:

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.

āϝāĻžāχāĻšā§‹āĻ•, āĻŦāĻ°ā§āϤāĻŽāĻžāύ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻŽāĻ¸ā§āϝāĻž āĻĨāĻžāĻ•āϞ⧇ āϝ⧇ āϕ⧋āύ⧋ āϏāĻŽāϝāĻŧ āφāĻĒāύāĻŋ āφāϗ⧇āϰ āϰ⧇āĻĒā§āϞāĻŋāĻ•āĻžāϏ⧇āĻŸā§‡ āĻĢāĻŋāϰ⧇ āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āĻāϟāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āĻĒāĻ›āĻ¨ā§āĻĻāϏāχ RS āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰ⧁āύ (:rs āϤāĻžāĻĻ⧇āϰ āϤāĻžāϞāĻŋāĻ•āĻžāϰ āϜāĻ¨ā§āϝ):

k9s-āĻāϰ āĻ“āĻ­āĻžāϰāĻ­āĻŋāω - Kubernetes-āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āωāĻ¨ā§āύāϤ āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ

... āĻāĻŦāĻ‚ Ctrl + l āĻĻāĻŋāϝāĻŧ⧇ āϰ⧋āϞāĻŦā§āϝāĻžāĻ• āĻ•āϰ⧁āύāĨ¤ āφāĻŽāĻžāĻĻ⧇āϰ āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻœā§āĻžāĻĒā§āϤāĻŋ āĻĒāĻžāĻ“āϝāĻŧāĻž āωāϚāĻŋāϤ āϝ⧇ āϏāĻŦāĻ•āĻŋāϛ⧁ āĻ āĻŋāĻ•āĻ āĻžāĻ• āĻšāϝāĻŧ⧇āϛ⧇:

k9s/whoami-5cfbdbb469 successfully rolled back

āĻāĻŦāĻ‚ āĻĒā§āϰāϤāĻŋāϞāĻŋāĻĒāĻŋāϗ⧁āϞāĻŋ āĻ¸ā§āϕ⧇āϞ āĻ•āϰāϤ⧇, āĻļ⧁āϧ⧁ "s" (āĻ¸ā§āϕ⧇āϞ) āĻ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻĒāĻ›āĻ¨ā§āĻĻāϏāχ āϏāĻ‚āĻ–ā§āϝāĻ• āĻĻ⧃āĻˇā§āϟāĻžāĻ¨ā§āϤ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰ⧁āύ:

k9s-āĻāϰ āĻ“āĻ­āĻžāϰāĻ­āĻŋāω - Kubernetes-āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āωāĻ¨ā§āύāϤ āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ

āφāĻĒāύāĻŋ āĻļ⧇āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϝ⧇ āϕ⧋āύāĻ“ āĻĒāĻžāĻ¤ā§āϰ⧇ āĻĒā§āϰāĻŦ⧇āĻļ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ: āĻāϟāĻŋ āĻ•āϰāϤ⧇, āĻĒāĻ›āĻ¨ā§āĻĻāϏāχ āĻĒāĻĄā§‡ āϝāĻžāύ, "s" (āĻļ⧇āϞ) āĻ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āϧāĻžāϰāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰ⧁āύāĨ¤

āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ

āĻ…āĻŦāĻļā§āϝāχ, āϞāĻ— āĻĻ⧇āĻ–āĻžāĻ“ āϏāĻŽāĻ°ā§āĻĨāĻŋāϤ (āύāĻŋāĻ°ā§āĻŦāĻžāϚāĻŋāϤ āϏāĻ‚āĻ¸ā§āĻĨāĻžāύ⧇āϰ āϜāĻ¨ā§āϝ "l")āĨ¤ āĻāĻŦāĻ‚ āύāϤ⧁āύ āϞāĻ—āϗ⧁āϞāĻŋ āĻĻ⧇āĻ–āĻžāϰ āϜāĻ¨ā§āϝ, āĻ•ā§āϰāĻŽāĻžāĻ—āϤ āĻāĻ¨ā§āϟāĻžāϰ āϟāĻŋāĻĒāϤ⧇ āĻšāĻŦ⧇ āύāĻž: āĻāϟāĻŋ āϚāĻŋāĻšā§āύāĻŋāϤ āĻ•āϰāĻž āϝāĻĨ⧇āĻˇā§āϟ ("m"), āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ⧇ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āύāϤ⧁āύ āĻŦāĻžāĻ°ā§āϤāĻžāϗ⧁āϞāĻŋ āĻŸā§āĻ°ā§āϝāĻžāĻ• āĻ•āϰ⧁āύ⧎

k9s-āĻāϰ āĻ“āĻ­āĻžāϰāĻ­āĻŋāω - Kubernetes-āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āωāĻ¨ā§āύāϤ āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ

āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ āĻāĻ•āχ āωāχāĻ¨ā§āĻĄā§‹āϤ⧇, āφāĻĒāύāĻŋ āϞāϗ⧇āϰ āφāωāϟāĻĒ⧁āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āϏāĻŽāϝāĻŧāϏ⧀āĻŽāĻž āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ:

  • āϕ⧀ "1" - 1 āĻŽāĻŋāύāĻŋāĻŸā§‡āϰ āϜāĻ¨ā§āϝ;
  • "2" - 5 āĻŽāĻŋāύāĻŋāϟ;
  • "3" - 15 āĻŽāĻŋāύāĻŋāϟ;
  • "4" - 30 āĻŽāĻŋāύāĻŋāϟ;
  • "5" - 1 āϘāĻ¨ā§āϟāĻž;
  • "0" - āĻĒāĻĄā§‡āϰ āϏāĻŽāĻ—ā§āϰ āĻœā§€āĻŦāύāĻ•āĻžāϞ⧇āϰ āϜāĻ¨ā§āϝāĨ¤

āĻŦāĻŋāĻļ⧇āώ āĻ…āĻĒāĻžāϰ⧇āϟāĻŋāĻ‚ āĻŽā§‹āĻĄ āĻĒāĻžāϞāϏ (āĻ•āĻŽāĻžāĻ¨ā§āĻĄ :pulse) āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϏāĻžāϧāĻžāϰāĻŖ āϤāĻĨā§āϝ āĻĻ⧇āĻ–āĻžāϝāĻŧ:

k9s-āĻāϰ āĻ“āĻ­āĻžāϰāĻ­āĻŋāω - Kubernetes-āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āωāĻ¨ā§āύāϤ āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ

āĻāϟāĻŋāϤ⧇ āφāĻĒāύāĻŋ āϏāĻŽā§āĻĒāĻĻ⧇āϰ āϏāĻ‚āĻ–ā§āϝāĻž āĻāĻŦāĻ‚ āϤāĻžāĻĻ⧇āϰ āĻ¸ā§āĻĨāĻŋāϤāĻŋ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāϰ⧇āύ (āϏāĻŦ⧁āϜ āĻĻ⧇āĻ–āĻžāϝāĻŧ āϝ⧇āϗ⧁āϞāĻŋāϰ āĻ¸ā§āĻĨāĻŋāϤāĻŋ āϰāϝāĻŧ⧇āϛ⧇ Running).

K9s āĻāϰ āφāϰ⧇āĻ•āϟāĻŋ āĻĻ⧁āĻ°ā§āĻĻāĻžāĻ¨ā§āϤ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āĻŦāϞāĻž āĻšāϝāĻŧ Popeye. āĻāϟāĻŋ āϏāĻ āĻŋāĻ•āϤāĻžāϰ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻŽāĻžāύāĻĻāĻŖā§āĻĄā§‡āϰ āϜāĻ¨ā§āϝ āϏāĻŽāĻ¸ā§āϤ āϏāĻ‚āĻ¸ā§āĻĨāĻžāύ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻŦā§āϝāĻžāĻ–ā§āϝāĻž āϏāĻš āĻĢāϞāĻžāĻĢāϞ "āϰ⧇āϟāĻŋāĻ‚" āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ āĻ•āϰ⧇āĨ¤ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āφāĻĒāύāĻŋ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāϰ⧇āύ āϝ⧇ āϝāĻĨ⧇āĻˇā§āϟ āύāĻŽā§āύāĻž āĻŦāĻž āϏ⧀āĻŽāĻž āύ⧇āχ, āĻāĻŦāĻ‚ āĻ•āĻŋāϛ⧁ āϧāĻžāϰāĻ• āϰ⧁āϟ āĻšāĻŋāϏāĻžāĻŦ⧇ āϚāϞāϤ⧇ āĻĒāĻžāϰ⧇ ...

k9s-āĻāϰ āĻ“āĻ­āĻžāϰāĻ­āĻŋāω - Kubernetes-āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āωāĻ¨ā§āύāϤ āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ

āĻŦ⧇āϏāĻŋāĻ• āĻšā§‡āϞāĻŽ āϏāĻžāĻĒā§‹āĻ°ā§āϟ āφāϛ⧇āĨ¤ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻāχāĻ­āĻžāĻŦ⧇ āφāĻĒāύāĻŋ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻž āϰāĻŋāϞāĻŋāϜāϗ⧁āϞāĻŋ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāϰ⧇āύ:

:helm all # Đ˛ŅĐĩ
:helm $namespace # в ĐēĐžĐŊĐēŅ€ĐĩŅ‚ĐŊĐžĐŧ ĐŋŅ€ĐžŅŅ‚Ņ€Đ°ĐŊŅŅ‚Đ˛Đĩ иĐŧĐĩĐŊ

āωāĻšā§āϚāϤāĻžāϰ āϚāĻŋāĻšā§āύ

āĻāĻŽāύāĻ•āĻŋ K9s-āĻ āύāĻŋāĻ°ā§āĻŽāĻŋāϤ āĻ…āĻā§āϝāĻž āĻāĻ•āϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖ HTTP āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϞ⧋āĻĄ āĻœā§‡āύāĻžāϰ⧇āϟāϰ, āϝāĻž āĻ…āϧāĻŋāĻ• āĻĒāϰāĻŋāϚāĻŋāϤ ab (ApacheBench) āĻāϰ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāĨ¤

āĻāϟāĻŋ āϏāĻ•ā§āώāĻŽ āĻ•āϰāϤ⧇, āφāĻĒāύāĻžāϕ⧇ āĻĒāĻĄā§‡ āĻĒā§‹āĻ°ā§āϟ-āĻĢāϰ⧋āϝāĻŧāĻžāĻ°ā§āĻĄ āϏāĻ•ā§āώāĻŽ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻāϟāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āĻĒāĻĄ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ Shift + f āϟāĻŋāĻĒ⧁āύ, "pf" āωāĻĒāύāĻžāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĒā§‹āĻ°ā§āϟ-āĻĢāϰ⧋āϝāĻŧāĻžāĻ°ā§āĻĄ āϏāĻžāĻŦāĻŽā§‡āύ⧁āϤ⧇ āϝāĻžāύāĨ¤

k9s-āĻāϰ āĻ“āĻ­āĻžāϰāĻ­āĻŋāω - Kubernetes-āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āωāĻ¨ā§āύāϤ āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ

āĻĒā§‹āĻ°ā§āϟ āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰ⧇ Ctrl + b āϚāĻžāĻĒāĻžāϰ āĻĒāϰ āĻŦ⧇āĻžā§āϚāĻŽāĻžāĻ°ā§āĻ• āύāĻŋāĻœā§‡āχ āĻļ⧁āϰ⧁ āĻšāĻŦ⧇āĨ¤ āϤāĻžāϰ āĻ•āĻžāĻœā§‡āϰ āĻĢāϞāĻžāĻĢāϞ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ /tmp āĻāĻŦāĻ‚ K9s āĻ āĻĒāϰ⧇ āĻĻ⧇āĻ–āĻžāϰ āϜāĻ¨ā§āϝ āωāĻĒāϞāĻŦā§āϧāĨ¤

k9s-āĻāϰ āĻ“āĻ­āĻžāϰāĻ­āĻŋāω - Kubernetes-āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āωāĻ¨ā§āύāϤ āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ
k9s-āĻāϰ āĻ“āĻ­āĻžāϰāĻ­āĻŋāω - Kubernetes-āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āωāĻ¨ā§āύāϤ āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ

āĻŦ⧇āĻžā§āϚāĻŽāĻžāĻ°ā§āϕ⧇āϰ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇, āφāĻĒāύāĻžāϕ⧇ āĻāĻ•āϟāĻŋ āĻĢāĻžāχāϞ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ $HOME/.k9s/bench-<my_context>.yml (āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŋāϤ)āĨ¤

NB: āĻāϟāĻŋ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āϝ⧇ āĻāĻ•āϟāĻŋ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇ āϏāĻŽāĻ¸ā§āϤ 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 + r - āĻĒā§āϰāĻ¸ā§āϤ⧁āϤāĻŋāϰ āĻ…āĻŦāĻ¸ā§āĻĨāĻž āĻĻā§āĻŦāĻžāϰāĻž;
  • Shift + c - CPU āĻ–āϰāϚ āĻĻā§āĻŦāĻžāϰāĻž;
  • 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-āĻāϰ āϧ⧀āϰāĻ—āϤāĻŋāĻ“ āϞāĻ•ā§āĻˇā§āϝ āĻ•āϰ⧇āĻ›āĻŋāĨ¤ āĻāχ āĻŽā§āĻšā§āĻ°ā§āϤ⧇, āχāωāϟāĻŋāϞāĻŋāϟāĻŋ Intel Xeon E2xx āĻĨ⧇āϕ⧇ 312 āϕ⧋āϰ "āϖ⧇āϝāĻŧ⧇āϛ⧇" āĻāĻŦāĻ‚ āĻāĻŽāύāĻ•āĻŋ āĻšāĻŋāĻŽāĻžāϝāĻŧāĻŋāϤ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āĻāχ āĻŽā§āĻšā§‚āĻ°ā§āϤ⧇ āĻ•āĻŋ āĻ…āύ⧁āĻĒāĻ¸ā§āĻĨāĻŋāϤ? āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇ āύāĻž āĻ—āĻŋāϝāĻŧ⧇ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻĻā§āϰ⧁āϤ āϰ⧋āϞāĻŦā§āϝāĻžāĻ• (āφāĻŽāϰāĻž āφāϰāĻāϏ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻ•āĻĨāĻž āĻŦāϞāĻ›āĻŋ āύāĻž)āĨ¤ āωāĻĒāϰāĻ¨ā§āϤ⧁, āĻĒ⧁āύāϰ⧁āĻĻā§āϧāĻžāϰ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϜāĻ¨ā§āϝ āϘāĻŸā§‡ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϰāĻŋāϏ⧋āĻ°ā§āϏ: āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻ•āϟāĻŋ āĻŸā§€āĻ•āĻž āĻŦāĻž āϞ⧇āĻŦ⧇āϞ āĻŽā§āϛ⧇ āĻĢ⧇āϞ⧇āύ, āϤāĻžāĻšāϞ⧇ āφāĻĒāύāĻžāϕ⧇ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āϰāĻŋāϏ⧋āĻ°ā§āϏāϟāĻŋ āĻŽā§āϛ⧇ āĻĢ⧇āϞāϤ⧇ āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āĻĒ⧁āύāϰ⧁āĻĻā§āϧāĻžāϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ (āĻāĻ–āĻžāύ⧇āχ āφāĻĒāύāĻžāϕ⧇ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇ āϝ⧇āϤ⧇ āĻšāĻŦ⧇)āĨ¤ āφāϰ⧇āĻ•āϟāĻŋ āϛ⧋āϟ - āĻāχ āϧāϰāύ⧇āϰ āϏāĻ‚āϰāĻ•ā§āώāĻŋāϤ "āĻŦā§āϝāĻžāĻ•āφāĻĒ" āĻāϰ āϜāĻ¨ā§āϝ āĻĒāĻ°ā§āϝāĻžāĻĒā§āϤ āϤāĻžāϰāĻŋāĻ– āύ⧇āχāĨ¤

āĻĻā§āϰāĻˇā§āϟāĻŦā§āϝ

āφāĻŽāĻžāĻĻ⧇āϰ āĻŦā§āϞāϗ⧇āĻ“ āĻĒāĻĄāĻŧ⧁āύ:

āωāĻ¤ā§āϏ: www.habr.com