ืืคืจืืืงื ืืชืื ื-Go ืืงืืื ืืืจ ืืืขืื ืืฉื ื ืืืฆื: ืืืชืืืืืืช ืืจืืฉืื ื ืืืฆืขื ื-1 ืืคืืจืืืจ 2019. ืืืื ืืชืืืช ืฉืืจืืช ืืื, ืืฉ 9000+ ืืืืืื
ืืชืงื ื ืืืฉืงื
ืืื ืืืฉืื ืืงืื (ืืืืก ืืืฉืืื 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 ืืืืฆืขืืช ืคืงืืืืช - ืืืฉื, ืืื ืืืฆืื ืืช ืจืฉืืืช ื-StatefulSets (ืืืจืื ืืฉืืืช ืื ืืืื), ื ืืชื ืืืืื ืก :sts
.
ืขืืืจ ืืื ืืฉืืืื ืืืจืื ืฉื Kubernetes:
-
:ns
- ืืจืืื ืฉืืืช; -
:deploy
- ืคืจืืกืืช; -
:ing
- ืื ืืกืืช; -
:svc
- ืฉืืจืืชืื.
ืืื ืืืฆืื ืจืฉืืื ืืืื ืฉื ืกืืื ืืฉืืืื ืืืืื ืื ืืฆืคืืื, ืืฉ ืคืงืืื :aliases
.
ืื ืื ื ืื ืืืฆืื ืืช ืจืฉืืืช ืืคืงืืืืช ืืืืื ืืช ืขื ืืื ืฉืืืืื ืืงืฉืื ืืืื ืืชืื ืืืืื ืื ืืืื: ืืื ืืขืฉืืช ืืืช, ืคืฉืื ืืืฅ ืขื "?".
ืื ื-k9s ืืฉ ืืฆื ืืืคืืฉ, ืืื ืืืืช ืืืื ืืกืคืืง ืืืืื "/". ืืขืืจืชื ืืชืืฆืข ืืืคืืฉ ืขื ืชืืื ื"ืืืื" ืื ืืืื. ื ื ืื ืื ื ืื ืกืช ืืขืืจ :ns
, ืืฉ ืื ืจืฉืืื ืฉื ืืจืืื ืฉืืืช ืคืชืืื. ืื ืืฉ ืืืชืจ ืืื ืืื, ืื ืืื ืื ืืืืื ืืืื ืืืฉื ืืื ืจื, ืืกืคืืง ืืืืื ืก ืืืืื ืขื ืืจืืื ืฉืืืช /mynamespace
.
ืืื ืืืคืฉ ืืคื ืชืืืืืช, ืืชื ืืืื ืืืืืจ ืืช ืื ืืคืืืื ืืืจืื ืืฉืืืช ืืจืฆืื, ืืื ืืืืื, ืืืฉื, / -l app=whoami
. ื ืงืื ืจืฉืืื ืฉื ืชืจืืืืื ืขื ืืชืืืืช ืืื:
ืืืืคืืฉ ืขืืื ืืื ืืื ื ืืืื ืืช, ืืืื ืืืื ืื, ืฆืคืืื ืืื ืืคืกืืื ืฉื YAML ื describe
ืืืฉืืืื - ืจืื ืืืื ืืคืจืืื ื ืืกืคืื ืขื ืชืืื ืืช ืืื.
ืืื ื ืจืืืช ืืจืืืช ืื ืืืื ืืืืืืช?
ืขื ืืคืงืืื :ctx
ืืชื ืืืื ืืืืืจ ืืงืฉืจ:
ืืื ืืืืืจ ืืจืื ืฉืืืช, ืืฉ ืืช ืืคืงืืื ืฉืืืจ ืืืืืจื :ns
, ืืืืืจ ืืื ืชืืื ืืืฉืชืืฉ ืืืืคืืฉ ืขืืืจ ืืืจืื ืืจืฆืื: /test
.
ืื ืืขืช ื ืืืจ ืืช ืืืฉืื ืฉืื ื ืืขืื ืืื ืื ืื (ืืืืืื, ืืืชื StatefulSet), ืืืคืืข ืืืืืข ืืืชืืื ืขืืืจื: ืืื ืคืืืื ืคืืขืืื ืขื ืืืืข ืงืฆืจ ืขืืืื.
ืจืง ืคืืืื ืขืฉืืืื ืืขื ืืื - ืื ืืกืคืืง ืืืืื ืก :pod
. ืืืงืจื ืฉื ConfigMaps (:cm
- ืขืืืจ ืจืฉืืืช ืืืฉืืืื ืืืื), ืืชื ืืืื ืืืืืจ ืืช ืืืืืืงื ืืขื ืืื ืืืืืืฅ ืขื "u", ืืืืืจ ืืื K9s ืืืืื ืื ืื ืกืคืฆืืคืืช ืืฉืชืืฉ ืื (CM ืื).
ืชืืื ื ืฉืืืืฉืืช ื ืืกืคืช ืืฆืคืืื ืืืฉืืืื ืืื ืฉืืื "ืจื ืืื" (ืชืฆืืืช ืจื ืืื). ืืฆื ืื ื ืงืจื ืขื ืืื ืืคืงืืื :xray RESOURCE
ื... ืงื ืืืชืจ ืืืจืืืช ืืื ืื ืขืืื ืืืฉืจ ืืืกืืืจ. ืื ื ืืืืจ ืขืืืจ StatefulSets:
(ื ืืชื ืืขืจืื, ืืฉื ืืช, ืืืฆืืจ ืื ืืื ืืืืฉืืืื ืืืื describe
.)
ืืื ื ืคืจืืกื ืขื Ingress:
ืขืืืื ืขื ืืฉืืืื
ืืชื ืืืื ืืงืื ืืืืข ืขื ืื ืืฉืื ื-YAML ืื ืฉืื describe
ืขื ืืื ืืืืฆื ืขื ืงืืฆืืจื ืืืงืฉืื ืืืชืืืืื ("y" ื-"d", ืืืชืืื). ืืืืื, ืืฉื ื ืคืขืืืืช ืืกืืกืืืช ืืคืืื ืืืชืจ: ืืจืฉืืื ืืงืืฆืืจื ืืืงืืืช ืฉืืื ืชืืื ืืืืืื ืืืืืช ื"ืืืชืจืช" ื ืืื ืืืืฉืง (ืืืกืชืจืช ืขื ืืื ืืืืฆื ืขื Ctrl + e).
ืืขืช ืขืจืืืช ืืฉืื ืืืฉืื ("e" ืืืืจ ืืืืจืชื), ืขืืจื ืืืงืกื ืืืืืืจ ืืืฉืชื ื ืืกืืืื ื ืคืชื (export EDITOR=vim
).
ืืื ื ืืื ื ืจืื ืืชืืืืจ ืืืคืืจื ืฉื ืืืฉืื (describe
):
ื ืืชื ืืฉืืืจ ืคืื ืื (ืื ืืคืื ืฉื ืฆืคืืื ืืื ืืคืกื YAML ืฉื ืืืฉืื) ืืืืฆืขืืช ืงืืฆืืจ ืืืงืฉืื ืืืืืจ Ctrl + s. ืืืื ืืื ืืืฉืืจ ืืืืืืข ืืืืืืขื K9s:
Log /tmp/k9s-screens-root/kubernetes/Describe-1601244920104133900.yml saved successfully!
ื ืืชื ืื ืืฉืืืจ ืืฉืืืื ืืงืืืฆื ืืืืืื ืฉื ืืฆืจื, ืืืืจ ืืกืจืช ืชืืืืืช ืืขืจืืช ืืืขืจืืช. ืืื ืืขืฉืืช ืืืช, ืืชื ืฆืจืื ืืืืช ืืกืคืจืืื ืืืชื (:dir /tmp
), ืืืืืจ ืืื ืืืจ ืืช ืืงืืืฅ ืืจืฆืื ืืืื apply
.
ืืื, ืืื ืขืช ืืชื ืืืื ืืืืืจ ืืืืจื ื-ReplicaSet ืืงืืื ืื ืืฉ ืืขืืืช ืขื ืื ืืืื. ืืฉื ืื, ืืืจ ืืช ื-RS ืืจืฆืื (:rs
ืืจืฉืืื ืฉืืื):
... ืืืืืจื ืืืืืจ ืขื Ctrl + l. ืื ืื ื ืฆืจืืืื ืืงืื ืืืืขื ืฉืืื ืืื ืืฉืืจื:
k9s/whoami-5cfbdbb469 successfully rolled back
ืืืื ืืฉื ืืช ืืช ืงื ื ืืืืื ืฉื ืืืขืชืงืื, ืคืฉืื ืืืฅ ืขื ื"s" (ืงื ื ืืืื) ืืืืจ ืืช ืืกืคืจ ืืืืคืขืื ืืจืฆืื:
ื ืืชื ืืืืื ืก ืืื ืืื ืืืืืืืื ืืืืฆืขืืช ืืงืืืคื: ืืฉื ืื, ืขืืืจ ืื ืืคืื ืืจืฆืื, ืืืฅ ืขื "s" (ืงืืืคื) ืืืืจ ืืช ืืืืื.
ืชืืื ืืช ืืืจืืช
ืืืืื, ืฆืคืืื ืืืืื ืื ื ืชืืืช ืื ("l" ืขืืืจ ืืืฉืื ืื ืืืจ). ืืืื ืืฆืคืืช ืืืืื ืื ืืืฉืื, ืืื ืฆืืจื ืืืืืฅ ืื ืืืื ืขื Enter: ืืกืคืืง ืืกืื ("m") ืืื ืจืง ืืขืงืื ืืืจ ืืืืขืืช ืืืฉืืช.
ืื ืืืืชื ืืืื, ืืชื ืืืื ืืืืืจ ืืช ืืืื ืืืื ืขืืืจ ืืคืื ืฉื ืืืื ืื:
- ืืงืฉ "1" - ืืืฉื ืืงื ืืืช;
- "2 ืืงืืช;
- "3 ืืงืืช;
- "4 ืืงืืช;
- "5" - ืฉืขื ืืืช;
- "0" - ืืืฉื ืื ืืื ืืชืจืืื.
ืืฆื ืืคืขืื ืืืืื ืืืคืง (ืคืงืืื :pulse
) ืืฆืื ืืืืข ืืืื ืขื ืืฉืืื Kubernetes:
ืื ื ืืชื ืืจืืืช ืืช ืืกืคืจ ืืืฉืืืื ืืืกืืืืก ืฉืืื (ืืจืืง ืืฆืื ืืช ืืื ืฉืืฉ ืืื ืืช ืืกืืืืก Running
).
ืขืื ืชืืื ื ืืื ืืื ืฉื K9s ื ืงืจืืช ืคืืคืื. ืืื ืืืืง ืืช ืื ืืืฉืืืื ืขืืืจ ืงืจืืืจืืื ืื ืืกืืืืื ืฉื ื ืืื ืืช ืืืฆืื ืืช ื"ืืืจืื" ืืืชืงืื ืขื ืืกืืจืื. ืืืืืื, ืืชื ืืืื ืืจืืืช ืฉืืื ืืกืคืืง ืืืืืืืช ืื ืืืืืืช, ืืืืื ืืืฉืื ืืืื ืืคืขืื ืืฉืืจืฉ ...
ืืฉ ืชืืืื ืืกืืกืืช ืืืื. ืืืืืื, ืื ืชืืื ืืจืืืช ืืช ืืืืืืจืืช ืืคืจืืกืืช ืืืฉืืื:
:helm all # ะฒัะต
:helm $namespace # ะฒ ะบะพะฝะบัะตัะฝะพะผ ะฟัะพัััะฐะฝััะฒะต ะธะผะตะฝ
ืื ืฆ 'ืืจืง
ืืคืืื ืืืื ื ืืชืื K9s
ืืื ืืืคืขืื ืืืชื, ืขืืื ืืืคืขืื ืืขืืจื ืงืืืื ืืคืื. ืืื ืืขืฉืืช ืืืช, ืืืจ ืืช ืืคืื ืืืงืฉ Shift + f, ืขืืืจ ืืชืคืจืื ืืืฉื ื ืฉื port-forward ืืืืฆืขืืช ืืืื ืื "pf".
ืืืืจ ืืืืจืช ืืืฆืืื ืืืืืฆื ืขื Ctrl + b, ืืืื ืขืฆืื ืืชืืื. ืชืืฆืืืช ืขืืืืชื ืืืืืกื ืืช ื /tmp
ืืืืื ืื ืืฆืคืืื ืืืืืจืช ืืืชืจ ื-K9s.
ืืื ืืฉื ืืช ืืช ืชืฆืืจืช ืืืื, ืขืืื ืืืฆืืจ ืงืืืฅ $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 ืืคืืื ืชืืื
ะะปะฐะณะธะฝั
ืืืกืืฃ, 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" ืืื ืืืฆืข ืขื ืืคืงืืื ืืืชืืืื:
ืืื ืืชืืกืคืื ืืฉ, ืืืฉื, ืืื ืืืจืฆืืืช ืขื kubectl-jq ืืืื ืขืืจ ืืฆืคืืื ืืืืื ืื
ืืกืงื ื
ืืืขืื, K9s ืืชืืื ืื ืืืืช ืืืื ืืขืืืื: ืืคืฉืจ ืืืชืจืื ืืืืืจืืช ืืืคืฉ ืืช ืื ืื ืฉืฆืจืื ืืื ืืืฉืชืืฉ ืื. kubectl
. ืืืืชื ืืจืืฆื ืืื ืืฃ ืฉื ืืืืื ืื ืืืืฉืืืจื ืฉืืื, ืขืจืืื ืืืืจื ืฉื ืืฉืืืื, ืืืืจืืช ืืขืืืื ืืืืคื ืืืื *, ืืฆื Popeye ืืชืืจืจ ืืืืขืื. ืืืืืจ ืืืืื ืืื ืืืืืืช ืืืฆืืจ ืชืืกืคืื ืืืฉื ืืช ืืช ืืืคืืืงืฆืื ืื ืฉืชืชืืื ืืฆืจืืื ืฉืื.
* ืืื ื, ืขื ื ืคื ืืืื ืฉื ืืืื ืื, ืฉืืชื ืื ืื ืืคืขืืื ืืืืืืช ืฉื K9s. ืืจืืขืื ืืืื, ืชืืื ืืช ืืฉืืจืืช "ืืืื" 2 ืืืืืช ืื-Intel Xeon E312xx ืืืฃ ืขืืืื ืืืงืคืื.
ืื ืืกืจ ืืจืืข? ืืืจื ืืืืจื ืืืจืกื ืืงืืืืช (ืื ืื ื ืื ืืืืจืื ืขื RS) ืืื ืืืืช ืืกืคืจืืื. ืื ืืกืฃ, ืืืืืื ืืชืจืืฉืช ืจืง ืขืืืจ ืจืง ืืฉืื: ืื ืชืืืง ืืขืจื ืื ืชืืืืช, ืชืฆืืจื ืืืืืง ืืืฉืืืจ ืืช ืื ืืืฉืื (ืืื ืืชื ืฆืจืื ืืืืช ืืกืคืจืืื). ืขืื ืืืื - ืืื ืืกืคืืง ืชืืจืื ื"ืืืืืืื" ืฉืืืจืื ืืืื.
ื .ื.
ืงืจื ืื ืืืืื ืฉืื ื:
- ยซ
ืกืงืืจื ืืืืืช ืฉื ืืืฉืงื GUI ืขืืืจ Kubernetes "; - ยซ
ืืืจืื ืขื ืชืฆืืืช ืืืื ืืจื ื ืฉื Kubernetes (ืืกืงืืจื ืงืฆืจื ืฉื ืืืฉืงื ืืฉืชืืฉ ืืืจืื ืืืื ืืจื ื ืขืืืจ Kubernetes) "; - ยซ
kubebox ืืงืื ืืืืช ืืืจืืช ืขืืืจ Kubernetes ".
ืืงืืจ: www.habr.com