X Erroribus Communibus Cum Using Kubernetes

Nota. transl.Auctores huius articuli sunt fabrum ex parva societate bohemica, pipetail. Mirum indicem [numquam banalem, sed tamen] valde urgentes difficultates et fallacias ad operationem uvarum Kubernetarum relatas collocare curaverunt.

X Erroribus Communibus Cum Using Kubernetes

Per annos Kubernetes utendi, cum magno botri numero laboravimus (et administratis et inanibus - in GCP, AWS et Azure). Subinde notare coepimus nonnulla errata assidua fuisse. Sed in hoc non est pudor: nosmet ipsos fecimus!

The article contains the most common errors and also mentions Quomodo corrigendi eos.

1. Resources: petitiones et fines

This item certus meretur arctissimam attentionem ac imprimis in indice.

CPU petitionem plerumque aut omnino non specificatum vel vilissimum valorem (tot siliquas singulas nodi collocare quam maxime). Sic nodos cumulatur. Temporibus summi oneris, processus nodi plene usus est, et quoddam quod inposuit accipit solum id quod "postulavit" a. CPU throttling. Hinc applicationis latences, timeouts, et alia ingrata consectaria auget. (Plura de hoc legas in alia translatione recenti: "CPU limites et pugnax suffocatio in Kubernetes» — proxime. transl.)

BestEffort (maxime non commendatum);

resources: {}

Maxime humilis CPU postulatio (extremely non commendatum);

   resources:
      Requests:
        cpu: "1m"

Ex altera parte, praesentia limitis CPU ad cyclorum horologiorum per siliquas intempestivas transiliendos ducere potest, etiamsi processus nodi non plene oneratur. Iterum hoc ad moras augendas ducere potest. Controversia circa modulum pergit CPU CFS quota in Linux nucleo et CPU suffocatione pendentibus limitibus positis, tum CFS quota inactivare. Plura de hoc in nexu infra reperiri possunt.

Nimia lectio (scelerisque) memoria problemata maiora problemata ducere potest. Terminum attingens CPU cyclos horologii omissis implicat, dum memoriam attingens limitem vasculum "occidere" secumfert. Have vos umquam observata OOMkill? Ita prorsus est quod loquimur.

Visne minimize eventum rei verisimilitudinem? Ne memoriam nimis placeat et uti Guaranteed QoS (Quality servitii) memoriam petentibus ad terminum (ut infra exemplum). Plura de hac lege in Henning Jacobs presentations (Flumsarium plumbum apud Zalando).

Burstable (altior facultas potiendi OOMkilled);

   resources:
      requests:
        memory: "128Mi"
        cpu: "500m"
      limits:
        memory: "256Mi"
        cpu: 2

Back Guarantee:

   resources:
      requests:
        memory: "128Mi"
        cpu: 2
      limits:
        memory: "128Mi"
        cpu: 2

Quid potentia juvabit erigendis opibus?

cum metrics-servo hodiernam CPU tabes subsidiorum ac memoriam usuum siliquarum (et vasorum in medio) videre potes. Verisimile est, iam uteris. Mox percurre sequentia mandata;

kubectl top pods
kubectl top pods --containers
kubectl top nodes

Sed usum tantum ostendunt. De ordine magnitudinis ideam asperam tibi dare potest, sed ultimo indigebis historia mutationes in metrics in tempore (Ad interrogata ut respondeat: "Quae erat apicem CPU oneris?", "Quid erat onus heri mane?", etc. Hoc enim uti potes Prometheum, DataDog et alia instrumenta. Simpliciter metri e servo metri ac condiunt, et usor eas interrogare ac proinde excogitare potest.

VerticalPodAutoscaler Non concedit automate hoc emittunt. CPU historiae usum et memoriam indagat et novas petitiones limitesque in hac notitia ponit.

Facultas computandi efficaciter utens non est facilis. Ut sit amet felis Tetris omni tempore. Si nimiam vim computandi cum humilis mediocris consumptio (dicunt ~10%) spectando commendamus producta secundum AWS Fargate seu Virtualis Kubelet. Exstructae sunt in exemplum exosculationis inservili/solucionis per-usum, quod in his condicionibus vilius evenire potest.

2. Vita et promptitudo rimatur

Defalta, vita et alacritas compescendi in Kubernetes non valent. Et interdum oblivisci eos vertere.

Sed quomodo potes aliud munus inchoare in eventu fatali erroris? Et quomodo novit librarius onus vasculum ad accipiendum negotium paratum? Vel quod negotiatio plus tractat?

Hae probationes saepe inter se confunduntur;

  • vita — "survivability" reprehendo, quod vasculum si deficit;
  • PROTHYMIA - prompta perscriptio, si deficit, vasculum ab servitio Kubernetarum adimit (hoc utens inhiberi potest. kubectl get endpoints) et negotiatio ad eam non pervenit donec altera perscriptio feliciter perficiatur.

Utrumque horum checks Per totam vitam cyclus SILIQUA. Sit amet ipsum.

Communis fallacia est quod promptitudo rimatur tantum ad satus currit ut librator scire possit vasculum paratum esse (Ready) Et processus negotiationis potest incipere. Sed haec una tantum bene pro eorum usu.

Alia est facultas cognoscendi quod superflua est negotiatio vasculi oneraverit eam (Vel legumen facit calculos intensive resource). In hoc casu, prompta subsidia reprehendo redigendum onus in legumen et "frigus" est. Prosperam perfectionem promptitudinis reprehendo in futuro concedit auget onus in legumen iterum. In hoc casu (si prompta probatio deficiat), defectus testium viventis valde counterfactus esset. Quid sileo vasculum sanum et durum?

In quibusdam igitur casibus nulla omnino sistit melior quam ut parametris perperam conformatis. Ut dictum est, si vita reprehendo exemplaribus animum reprehendoergo in magna tribulatione es. Possibile est optio configurare promptum test solumquod periculosum vita omitto.

Utraque genera impedimentorum non deficere debent cum communes dependentiae deficiunt, alioquin hoc ad omnium siliquarum defectum (avalanche-similis) deducet. In aliis verbis, non nocuerunt tibi.

3. LoadBalancer ad invicem HTTP servitium

Verisimile, HTTP officia in botro tuo habes quod ad extra mundum transmittere velis.

Si aperire servitium ut type: LoadBalancereius moderatoris (provisoris servitii) providebit ac tractabit externum LoadBalancer (non necessario currentem in L7, sed potius etiam in L4), et hoc afficit sumptus (externa static IPv4 oratio, potestas computandi, per-secundum exosculatio. ) propter necessitatem magnam copiam talium facultatum creandi.

Hoc in casu, multo magis consentaneum est uno librario externo onere uti, operas aperientes type: NodePort. Vel melius adhuc, aliquid simile expand nginx-ingressus controller (aut traefik) Qui solus erit NodePort endpoint coniungitur cum externo onus librator et iter negotiationis in botro utens aditum—Kubernetes facultates.

Aliae officia intra-botrus (micro) quae inter se inter se occurrunt, "communicare" possunt servitiis similibus utentibus ClusterIP et constructum-in servitio inventionis mechanismi per DNS. DNS/IP publici eorum non utuntur, ut latentiam labefactum esse potest et sumptus nubium operarum augere.

4. Autoscaling botrus sine ratione sua features

Cum nodos addens et e botro removens, non debetis niti aliquibus metris fundamentalibus sicut CPU usu in his nodis. Vasculum consilium debet rationem habere plures constrictas, ut affinitas siliquarum, nodium, labes et tolerationes, petitiones subsidiorum, QoS, etc. Utens externo autoscaler, qui has nugas in rationem non accipit, ad problemata ducere potest.

Finge vasculum quoddam horarium esse, sed omnia CPU potentia praesto petita/disgregata et legumen sero adhæsit in civitate Pending. Autoscaler externus videt onus mediocris currentis CPU (non rogatus) et dilatationem non inchoat. (scale-e) — aliam nodi non addit. Quam ob rem vasculum hoc non accedet.

In hoc casu, vicissim scalae (scale-in) - Nodum ex botro removere difficilius est semper ad efficiendum. Finge te vasculum statutum habere (connexis pervicax repono). Pertinax volumina solet esse propria disponibilitate zona et non replicatur in regione. Si ergo externus autoscaler nodi deleat cum hoc vasculo, tunc cedula non poterit hoc vasculum in alio nodo statuere, cum hoc solum fieri possit in zona disponibilitate ubi ceptaculum pertinax situm est. Pod erit adhæsit in civitate Pending.

Valde popularis in communitate Kubernetarum botri-autoscaler. Botrus percurrit, APIs a provisoribus nubis maioris sustinet, omnes restrictiones considerat et in casibus superioribus scandere potest. Potest etiam ascendere-in omnibus limitibus statutis servatis, per pecuniam salvificam (quod alioqui insuetam facultatem impenditur).

5. Neglecta IAM/RBAC capabilities

Cave utere IAM utentibus secretis persistentibus for machinis et applicationibus. Organize tempus accessum per partes et officium rationum (Rationes muneris).

Saepe occurrant claves accessus (et secreta) in applicatione configuratione obdurari, necnon neglecta rotatione secretorum neglecto accessu ad Cloud IAM. Utere IAM muneribus et rationibus usitatis pro usoribus ubi opportunum est.

X Erroribus Communibus Cum Using Kubernetes

Oblivisceris de kube2iam et vade ad IAM functiones officiorum rationum (de quibus in nota eiusdem nominis těpán Vraný);

apiVersion: v1
kind: ServiceAccount
metadata:
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::123456789012:role/my-app-role
  name: my-serviceaccount
  namespace: default

Vna ANNOTATIONES. Non dura, vox?

Item, rationes et instantias privilegiis inservientem non concedunt admin и cluster-adminsi non opus est. Hoc paulo difficilius efficiendum est, praesertim in RBA K8s, sed certa operae pretium.

6. Noli confidere in ipso anti- affinitate pro siliquae

Finge tibi tres replicas alicuius nodi instruere. Nodus cadit, unaque omnia replicas. Placerat, iure? Sed cur omnes in eodem nodo replicantur? Nonne Kubernetes supponitur ad alta disponibilitate (HA)?

Dolendum sane, Kubernetes schedulae suapte sponte propriae regulae vitae separatae non obtemperant (anti-affinitatem) ad siliquas. Explicari debent;

// опущено для краткости
      labels:
        app: zk
// опущено для краткости
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchExpressions:
                  - key: "app"
                    operator: In
                    values:
                    - zk
              topologyKey: "kubernetes.io/hostname"

Id omne. Siliquae iam diversis nodis inceduntur (haec conditio solum in scheduling, non autem in operatione eorum retunditur. requiredDuringSchedulingIgnoredDuringExecution).

Hic loquimur podAntiAffinity de diversis nodis; topologyKey: "kubernetes.io/hostname", — nec de zonis diversis promptitudine. Ad plenam recurvam HA, altius fodere debebis in hunc locum.

7. Ignorans PodDisruptionBudgets

Finge te productionem oneris in botro Kubernetti habere. Periodice, nodi et botrus ipse renovandus est (vel decommissus). PodDisruptionBudget (PDB) est quiddam simile cautionis pacti inter administratores botri et utentes.

PDB permittit te ad vitare servitium interpellationis propter inopiam nodorum;

apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: zk-pdb
spec:
  minAvailable: 2
  selector:
    matchLabels:
      app: zookeeper

In hoc exemplo, tu, utentis botri, narra admins: "Heus, zooborarium habeo, et quodcumque facitis, saltem 2 replicas huius officii semper in promptu habere volo."

De hoc legere potes hic.

8. Multiplex users vel ambitus in communi botri

Spatia nomina Kubernetes (nomina spatiis) Nulla fortis non praebere.

Communis deceptio est quod si onus non iaculo explicas in unum spatium nominandi et iaculo oneris in aliud, tunc illi se non influere ullo modo... Nihilominus certa quaedam planities solitarii praestari potest utens subsidiorum petitiones/ limitationes, quotas occasus et prioritasClasses ponens. Solitudo quaedam "physica" in plano notitiis providetur affinitatibus, tolerationibus, labes (vel nodeselectoribus), sed talis separatio prorsus est. difficile peragendum.

Qui opus habent utrasque generis laboribus in eodem botro coniungere, de multiplicitate agere debebunt. Si opus non est, unum habere potes unum botrum portassent (in nube publica), tum id melius est. Hoc multo altiorem gradum velit.

9. externalTrafficPolicy: Cluster

Saepissime videmus omnia negotiatio botri intra botrum venire per servicium sicut NodePort, pro quo consilium defaltum constituitur externalTrafficPolicy: Cluster... Non est quod NodePort omni nodi in botro apertum est, et aliquo eorum uti potes ad obsequium desideratum (pone siliquas).

X Erroribus Communibus Cum Using Kubernetes

Eodem tempore siliquae reales cum supradicto servitio NodePort coniunguntur, solere praesto esse nisi quodam modo subset horum lymphaticorum. Aliis verbis, si nodi coniungo quae vasculum requisitum non habet, negotiatio alteri nodi deinceps erit; addit hop latenciam augens (si nodi in diversis disponibilitate zonae/datae centra collocantur, latentia satis alta esse potest; praeterea exitus mercaturae augebunt).

Contra, si certum officium Kubernetes habeat consilium externalTrafficPolicy: Local, Node Portus solum illis nodis aperit ubi siliquae requisitae actu currunt. Cum per externum onus librator qui impedit statum (Healthchecking) terminos (quid enim facere AWS ELB) mittet negotiatio ad necessarios nodosquie commodi in moras, computandi necessitates, exitus rogationum (et sensus communis idem dictat).

Illic 'a casu magno ut iam utens aliquid simile traefik aut nginx-ingressus controller sicut terminus NodePort (vel LoadBalancer, qui etiam NodePort utitur) ad iter negotiationis HTTP ingressu, et hanc optionem ponens potest significanter latentiam pro talibus petitionibus reducere.

В hoc publication Plus discere potes de externalTrafficPolicy, ejus commodis et incommodis.

10. Ne ligatum ad clusters et non abutere potestate planum

Antea solitum erat propriorum vocabulorum ministratores vocare; Antonius, HAL9000 et Colossus... Hodie ab identificantibus passim generatis substituti sunt. Sed manebat habitus, et nunc propria nomina racemis ibant.

Narratio typica (secundum reales eventus) omnia incepit cum probatione conceptus, ideo botrus erat nomen superbum testing... Anni elapsi sunt et adhuc in productione usus est, et omnes eam tangere timet.

De corymbis in curas versandis nihil iocum est, ut eas per vices removendo commendamus cladis Recuperatio (Hoc iuvabit chao engineering — proxime. transl.). Praeterea laborare non nocebit in tabulato moderamine (Planum imperium). Eum tangere veritus non est bonum signum. ETC. mortui? Guys, vere in tribulatione es!

Contra, abusionibus non auferas. Cum tempore imperium accumsan sit tardus. Verisimile hoc est propter multitudinem rerum sine gyratione eorum creatarum (coniunctio communis cum Helm cum occasus defectus utens, unde eius status in configmaps/secretis non renovatur - consequenter mille obiecta cumulant. tabulatum imperium) vel cum assiduis obiectis kube-api edendis (ad scalas latae, pro CI/CD, ad vigilantiam, eventum tigna, moderatoris, etc.).

Praeterea commendamus inspicienda SLA/SLO pacta cum provisore actae Kubernetes ac cautionibus attendentes. Venditor potest praestare imperium accumsan disponibilitate (vel subcomponentes) p99 non autem pXNUMX petitionum dilationem ad eam mittis. Id est, potes intrare kubectl get nodeset responsum tantum post 10 minuta recipiet, et hoc non erit violatio termini servitii.

11. Bonus: utens tardus tag

Sed hoc iam classicum est. Nuper hanc artem rarius invenimus, cum multi, ex acerbis experimento didicimus, per tagm destiterint :latest ac versiones captare coepi. euge!

ECR tenet immutabilitatem imaginis tags; Commendamus ut te ipsum persuefacias hoc notabili pluma.

summary

Non omnia expectes ad operandum pernoctare: Kubernetes panacea non est. Malum app hoc modo manebit etiam in Kubernetes (et fortasse peius). Incuria inducet multiplicitatem nimiam, opus tardus et stressful accumsan moderaminis. Accedit vobis periculum, quod sine calamitate recuperandi consilii relinquitur. Noli exspectare Kubernetes ut solitudo et prompta promptitudo extra pixidem provideat. Aliquantum temporis manere tuam applicationem vere nubem vernaculam faciens.

Potes cognoscere male experientiis variis iugis in Haec collectio historiarum apud Henning Jacobs.

Qui volentes ad indicem addere errorum in hoc articulo dato, nos in Twitter contactos possunt (@MarekBartik, @MstrsObserver).

PS ab translator

Lege etiam in nostro diario:

Source: www.habr.com

Add a comment