Ka nānā 'ana o k9s - he mea ho'okele ho'okele holomua no Kubernetes
K9s hāʻawi i kahi kikowaena mea hoʻohana no ka launa pū ʻana me nā pūʻulu Kubernetes. ʻO ka pahuhopu o kēia papahana Open Source ʻo ia ka maʻalahi o ka hoʻokele, ka nānā ʻana, a me ka hoʻokele ʻana i nā noi ma K8s. Nānā mau ʻo K9 i nā loli i nā Kubernetes a hāʻawi i nā kauoha wikiwiki e hana me nā kumuwaiwai i nānā ʻia.
Ua kākau ʻia ka papahana ma Go a ua puni ʻo ia no hoʻokahi makahiki a me ka hapa: ua hana ʻia ka hana mua ma Pepeluali 1, 2019. I ka manawa kākau, aia 9000+ mau hōkū ma GitHub a ma kahi o 80 mau mea kōkua. E ʻike kākou i ka hana a k9s?
Hoʻokomo a hoʻomaka
He mea kūʻai aku kēia (e pili ana i ka hui Kubernetes) i maʻalahi loa e holo ma ke ʻano he kiʻi Docker:
docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9s
No kekahi mau māhele Linux a me nā ʻōnaehana hana ʻē aʻe, aia pū kekahi i mākaukau e hoʻokomo nā kīʻaha. Ma ka laulā, no nā ʻōnaehana Linux, hiki iā ʻoe ke hoʻokomo i kahi faila binary:
ʻAʻohe koi kikoʻī no ka hui K8s ponoʻī. Ke hoʻoholo nei e nā loiloi, hana pū ka noi me nā mana kahiko o Kubernetes e like me 1.12.
Hoʻomaka ʻia ka noi me ka hoʻohana ʻana i ka config maʻamau .kube/config - e like me kona hana ʻana kubectl.
ʻO nā mea
Ma ka paʻamau, wehe ʻia kahi puka me ka inoa inoa paʻamau i kuhikuhi ʻia no ka pōʻaiapili. ʻO ia hoʻi, inā ʻoe i kākau kubectl config set-context --current --namespace=test, a laila e wehe ʻia ka inoa inoa test. (E nānā ma lalo no ka hoʻololi ʻana i nā pōʻaiapili/namespaces.)
E hele ʻano kauoha hana ʻia ma ke kaomi ʻana i ":". Ma hope o kēlā, hiki iā ʻoe ke kāohi i ka hana o k9s me ka hoʻohana ʻana i nā kauoha - no ka laʻana, e nānā i ka papa inoa o StatefulSets (i ka inoa inoa o kēia manawa), hiki iā ʻoe ke komo. :sts.
No kekahi mau kumuwaiwai Kubernetes:
:ns - nā papa inoa;
:deploy - Hoʻolālā;
:ing - Hoʻokomo;
:svc — lawelawe.
No ka hōʻike ʻana i kahi papa inoa piha o nā ʻano kumuwaiwai i loaʻa no ka nānā ʻana, aia kahi kauoha :aliases.
He mea maʻalahi hoʻi e nānā i ka papa inoa o nā kauoha i loaʻa e nā hui kī wela i loko o ka puka aniani o kēia manawa: e hana i kēia, kaomi wale ma "?".
Aia nō ma k9s ʻano hulina, e hele i kahi e lawa ai ke komo "/". Me ia, hana ʻia kahi hulina ma nā mea o ka "window" o kēia manawa. E ʻōlelo inā ua komo mua ʻoe :ns, loaʻa iā ʻoe kahi papa inoa o nā papa inoa. Inā nui ka nui o lākou, a laila i ʻole e ʻōwili i lalo no ka manawa lōʻihi, ua lawa ia e komo i ka puka makani me nā inoa inoa. /mynamespace.
No ka huli ʻana ma nā lepili, hiki iā ʻoe ke koho i nā pods a pau i ka inoa inoa i makemake ʻia, a laila komo, no ka laʻana, / -l app=whoami. E loaʻa iā mākou kahi papa inoa o nā pods me kēia lepili:
Hana ʻia ka ʻimi ma nā ʻano puka makani āpau, me nā lāʻau, ke nānā ʻana i nā hōʻike YAML, a describe no nā kumuwaiwai - e ʻike ma lalo no nā kikoʻī hou aku no kēia mau hiʻohiʻona.
He aha ke ʻano o ka holo hoʻokele holoʻokoʻa?
Me ke kauoha :ctx hiki iā ʻoe ke koho i kahi pōʻaiapili:
No ke koho ʻana i kahi inoa inoa, aia ke kauoha i ʻōlelo ʻia :ns, a laila hiki iā ʻoe ke hoʻohana i ka ʻimi no ka wahi i makemake ʻia: /test.
Inā koho mākou i ke kumu waiwai a mākou e makemake ai (no ka laʻana, ʻo StatefulSet hoʻokahi), e ʻike ʻia ka ʻike e pili ana iā ia: ehia nā pods e holo nei me ka ʻike pōkole e pili ana iā lākou.
ʻO nā pods wale nō paha ka hoihoi - a laila lawa ke komo :pod. I ka hihia o ConfigMaps (:cm - no ka papa inoa o kēia mau kumuwaiwai), hiki iā ʻoe ke koho i ka mea hoihoi a kaomi ma ka "u", a laila e haʻi aku ʻo K9s iā ʻoe i ka mea hoʻohana pono iā ia (kēia CM).
ʻO kekahi hiʻohiʻona lima no ka nānā ʻana i nā kumuwaiwai ʻo kā lākou "X-ray" (Nānā Xray). Ua kapa ʻia kēia ʻano e ke kauoha :xray RESOURCE a ... ʻoi aku ka maʻalahi o ka hōʻike ʻana i ka hana ma mua o ka wehewehe. Eia kahi hiʻohiʻona no StatefulSets:
(Hiki ke hoʻoponopono, hoʻololi, hana ʻia kēlā me kēia kumuwaiwai describe.)
A eia ka Deployment me Ingress:
Ke hana nei me nā kumuwaiwai
Hiki iā ʻoe ke loaʻa ka ʻike e pili ana i kēlā me kēia kumuwaiwai ma YAML a i ʻole describe ma ke kaomi ʻana i nā pōkole kīpē e pili ana ("y" a me "d", kēlā me kēia). ʻOiaʻiʻo, ʻoi aku ka nui o nā hana maʻamau: ʻike mau ʻia kā lākou papa inoa a me nā ʻaoʻao pōkole e hoʻomaikaʻi i kahi "header" kūpono i ka interface (huna ʻia ma ke kaomi ʻana iā Ctrl + e).
Ke hoʻoponopono nei i kekahi kumuwaiwai ("e" ma hope o kona koho ʻia ʻana), wehe ʻia ka mea hoʻoponopono kikokikona i wehewehe ʻia i nā ʻano hoʻololi kaiapuni (export EDITOR=vim).
A eia ke ʻano o ka wehewehe kikoʻī o ka punawai (describe):
Hiki ke mālama ʻia kēia mea hoʻopuka (a i ʻole ka puka o ka nānā ʻana i ka hōʻike YAML o ka punawai) me ka hoʻohana ʻana i ka pōkole keyboard Ctrl + s. Ma kahi e mālama ʻia ai e ʻike ʻia mai ka leka K9s:
Hiki iā ʻoe ke hoʻihoʻi i nā kumuwaiwai mai nā faila i hana ʻia, ma hope o ka wehe ʻana i nā lepili ʻōnaehana a me nā annotation. No ka hana ʻana i kēia, pono ʻoe e hele i ka papa kuhikuhi me lākou (:dir /tmp), a laila koho i ka faila i makemake ʻia a hoʻopili apply.
Ma ke ala, i kēlā me kēia manawa hiki iā ʻoe ke hoʻi i ka ReplicaSet mua inā he pilikia me ka mea i kēia manawa. No ka hana ʻana i kēia, koho i ka RS makemake (:rs no kā lākou papa inoa):
... a hoʻi hou me Ctrl + l. Pono mākou e loaʻa ka leka hoʻomaopopo ua holo maikaʻi nā mea a pau:
k9s/whoami-5cfbdbb469 successfully rolled back
A e hoʻonui i nā replicas, e kaomi wale i ka "s" (scale) a koho i ka helu o nā manawa i makemake ʻia:
Hiki iā ʻoe ke hoʻokomo i kekahi o nā pahu me ka hoʻohana ʻana i ka pūpū: e hana i kēia, e hele i ka pod i makemake ʻia, kaomi ma "s" (shell) a koho i ka ipu.
Nā hiʻohiʻona ʻē aʻe
ʻOiaʻiʻo, kākoʻo pū ʻia ka nānā ʻana i nā lāʻau ("l" no ka punawai i koho ʻia). A no ka nānā ʻana i nā lāʻau hou, ʻaʻohe pono e kaomi mau i ke Enter: ua lawa ke kaha ("m"), a laila hahai wale i nā memo hou.
Ma ka puka aniani hoʻokahi, hiki iā ʻoe ke koho i ka palena manawa no ka hoʻopuka ʻana o nā lāʻau:
kī "1" - no 1 minuke;
"2" - 5 mau minuke;
"3" - 15 mau minuke;
"4" - 30 mau minuke;
"5" - 1 hola;
"0" - no ke ola holoʻokoʻa o ka pod.
ʻAno hana kūikawā Pulse (kauoha :pulse) hōʻike i ka ʻike maʻamau e pili ana i ka pūʻulu Kubernetes:
I loko o laila hiki iā ʻoe ke ʻike i ka helu o nā kumuwaiwai a me ko lākou kūlana (hōʻike ʻia ka ʻōmaʻomaʻo i nā mea i loaʻa ke kūlana Running).
Ua kapa ʻia kekahi hiʻohiʻona maikaʻi o K9s Popeye. Nānā ia i nā kumuwaiwai āpau no kekahi mau pae hoʻohālikelike o ka pololei a hōʻike i ka hopena "helu" me nā wehewehe. No ka laʻana, hiki iā ʻoe ke ʻike ʻaʻole lawa nā laʻana a i ʻole nā palena, a hiki i kekahi pahu ke holo e like me ke aʻa ...
Aia ke kākoʻo kumu no Helm. No ka laʻana, pehea ʻoe e ʻike ai i nā hoʻokuʻu i kau ʻia ma ka pūʻulu:
:helm all # все
:helm $namespace # в конкретном пространстве имен
Benchmark
ʻOiai i kūkulu ʻia i loko o nā K9 Hey he mea hoʻohana hoʻoili ukana HTTP maʻalahi, kahi ʻokoʻa i ka ab i ʻike ʻia (ApacheBench).
I mea e hiki ai iā ia, pono ʻoe e hoʻā i ka port-forward i ka pod. No ka hana ʻana i kēia, koho i ka pod a kaomi Shift + f, e hele i ka submenu port-forward me ka hoʻohana ʻana i ka inoa "pf".
Ma hope o ke koho ʻana i ke awa a kaomi iā Ctrl + b, e hoʻomaka ka benchmark ponoʻī. Mālama ʻia nā hopena o kāna hana /tmp a loaʻa no ka nānā ʻana ma hope ma K9s.
No ka hoʻololi ʻana i ka hoʻonohonoho ʻana o ka benchmark, pono ʻoe e hana i kahi faila $HOME/.k9s/bench-<my_context>.yml (hoʻoholo ʻia no kēlā me kēia pūʻulu).
NB: He mea nui ka hoʻonui ʻana i nā faila YAML āpau i kahi papa kuhikuhi .k9s pololei loa .yml (.yaml ʻaʻole hana pololei).
Laʻana hoʻonohonoho:
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
mau '
Hoʻololi ʻia ke ʻano o nā kolamu no ka papa inoa o nā kumuwaiwai ma o ka hana ʻana i kahi faila $HOME/.k9s/views.yml. He laʻana o kāna ʻike:
k9s:
views:
v1/pods:
columns:
- AGE
- NAMESPACE
- NAME
- IP
- NODE
- STATUS
- READY
v1/services:
columns:
- AGE
- NAMESPACE
- NAME
- TYPE
- CLUSTER-IP
Inā makemake ʻole kekahi i ka hoʻolālā kala paʻamau, kākoʻo ʻo K9s nā ʻili. Loaʻa nā laʻana i hana ʻia (7 ʻāpana). maanei. Eia kekahi laʻana o kekahi o kēia mau ʻili (i ka moana):
Nā Plugins
I ka hopena nā mea hoʻopili ʻae iā ʻoe e hoʻonui i nā hiki o K9s. Ua hoʻohana wau i hoʻokahi wale nō o lākou i kaʻu hana - kubectl get all -n $namespace.
Ua like me keia. Hana i kahi faila $HOME/.k9s/plugin.yml me nā mea e like me kēia:
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"
I kēia manawa hiki iā ʻoe ke hele i ka inoa inoa a kaomi "g" e hoʻokō me ke kauoha e pili ana:
Aia ma waena o nā plugins, no ka laʻana, hoʻohui me kubectl-jq a me kahi pono no ka nānā ʻana i nā lāʻau. moku.
hopena
No koʻu ʻono, ua lilo nā K9 i mea maʻalahi e hana pū me: hiki iā ʻoe ke maʻa koke i ka ʻimi ʻana i nā mea āpau āu e pono ai me ka hoʻohana ʻole. kubectl. Ua hauʻoli wau i ka ʻike o nā lāʻau a me kā lākou mālama ʻana, hoʻoponopono wikiwiki i nā kumuwaiwai, ka wikiwiki o ka hana ma ka laulā *, ua lilo ka Popeye mode i mea pono. ʻO kahi ʻōlelo kūikawā ka hiki ke hana i nā plugins a hoʻololi i ka noi e kūpono i kāu mau pono.
* ʻOiai, me ka nui o nā lāʻau, ʻike pū wau i ka hana lohi o nā K9. I kēlā mau manawa, "ʻai" ka pono "2 cores mai ka Intel Xeon E312xx a hiki ke hoʻokuʻu.
He aha ka hemahema i kēia manawa? Hoʻihoʻi wikiwiki i ka mana mua (ʻaʻole mākou e kamaʻilio e pili ana iā RS) me ka hele ʻole i ka papa kuhikuhi. Eia hou, hiki ke hoʻihoʻi wale no nui punawai: inā ʻoe e holoi i kahi hōʻike a lepili paha, pono ʻoe e holoi a hoʻihoʻi i ka punawai holoʻokoʻa (ʻo ia kahi e pono ai ʻoe e hele i ka papa kuhikuhi). ʻO kekahi mea ʻē aʻe - ʻaʻole lawa ka lā no kēlā "backups" i mālama ʻia.