From 54bf3977fed6ec68e6527d5857498943b2b80a94 Mon Sep 17 00:00:00 2001 From: Fabio Alessandro Locati Date: Mon, 13 Jan 2020 22:11:39 +0100 Subject: [PATCH 001/244] Re-enabling the it translation and put all current translation in draft (#18436) * Re-enabling the it translation and put all current translation in draft mode. As the work on #18383 will progress those will be promoted to final * improve italian i18n --- config.toml | 5 ++--- content/it/_common-resources/index.md | 3 ++- content/it/_index.html | 1 + content/it/case-studies/_index.md | 3 ++- content/it/case-studies/comcast/index.html | 1 + content/it/docs/concepts/_index.md | 1 + content/it/docs/concepts/architecture/_index.md | 1 + content/it/docs/concepts/architecture/cloud-controller.md | 3 ++- .../docs/concepts/architecture/master-node-communication.md | 1 + content/it/docs/concepts/architecture/nodes.md | 1 + content/it/docs/concepts/cluster-administration/_index.md | 1 + content/it/docs/concepts/cluster-administration/addons.md | 1 + .../it/docs/concepts/cluster-administration/certificates.md | 1 + .../docs/concepts/cluster-administration/cloud-providers.md | 1 + .../cluster-administration-overview.md | 1 + .../concepts/cluster-administration/controller-metrics.md | 1 + .../it/docs/concepts/cluster-administration/federation.md | 1 + .../cluster-administration/kubelet-garbage-collection.md | 2 +- content/it/docs/concepts/cluster-administration/logging.md | 1 + .../concepts/cluster-administration/manage-deployment.md | 1 + .../it/docs/concepts/cluster-administration/networking.md | 1 + content/it/docs/concepts/cluster-administration/proxies.md | 1 + content/it/docs/concepts/example-concept-template.md | 1 + content/it/docs/concepts/overview/what-is-kubernetes.md | 1 + content/it/partners/_index.html | 1 + i18n/it.toml | 2 +- 26 files changed, 30 insertions(+), 8 deletions(-) diff --git a/config.toml b/config.toml index 990392d659..48926a3908 100644 --- a/config.toml +++ b/config.toml @@ -25,8 +25,7 @@ enableGitInfo = true # Norwegian ("no") is sometimes but not currently used for testing. # Hindi is disabled because it's currently in development. -# Italian is disabled until it meets minimum standards for quality. -disableLanguages = ["hi", "it", "no"] +disableLanguages = ["hi", "no"] [blackfriday] hrefTargetBlank = true @@ -187,7 +186,7 @@ language_alternatives = ["en"] [languages.it] title = "Kubernetes" description = "Production-Grade Container Orchestration" -languageName ="Italian" +languageName = "Italiano" weight = 6 contentDir = "content/it" diff --git a/content/it/_common-resources/index.md b/content/it/_common-resources/index.md index 3d65eaa0ff..443251c6a1 100644 --- a/content/it/_common-resources/index.md +++ b/content/it/_common-resources/index.md @@ -1,3 +1,4 @@ --- +draft: True headless: true ---- \ No newline at end of file +--- diff --git a/content/it/_index.html b/content/it/_index.html index cd160cbdcc..e3b848693f 100644 --- a/content/it/_index.html +++ b/content/it/_index.html @@ -1,4 +1,5 @@ --- +draft: True title: Panoramica sull'amministrazione del cluster content_template: templates/concept weight: 10 diff --git a/content/it/case-studies/_index.md b/content/it/case-studies/_index.md index cac4dc1fa0..f52382b992 100644 --- a/content/it/case-studies/_index.md +++ b/content/it/case-studies/_index.md @@ -1,4 +1,5 @@ --- +draft: True title: Case Studies linkTitle: Case Studies bigheader: Kubernetes User Case Studies @@ -6,4 +7,4 @@ abstract: Una raccolta di utenti che eseguono Kubernetes in produzione. layout: basic class: gridPage cid: caseStudies ---- \ No newline at end of file +--- diff --git a/content/it/case-studies/comcast/index.html b/content/it/case-studies/comcast/index.html index 054df14696..ddf9d75f33 100644 --- a/content/it/case-studies/comcast/index.html +++ b/content/it/case-studies/comcast/index.html @@ -1,4 +1,5 @@ --- +draft: True title: Comcast content_url: https://youtu.be/lmeFkH-rHII --- diff --git a/content/it/docs/concepts/_index.md b/content/it/docs/concepts/_index.md index 5acaec055e..04a1e84b62 100644 --- a/content/it/docs/concepts/_index.md +++ b/content/it/docs/concepts/_index.md @@ -1,4 +1,5 @@ --- +draft: True title: Concepts main_menu: true content_template: templates/concept diff --git a/content/it/docs/concepts/architecture/_index.md b/content/it/docs/concepts/architecture/_index.md index 0a87c18478..fb49737380 100755 --- a/content/it/docs/concepts/architecture/_index.md +++ b/content/it/docs/concepts/architecture/_index.md @@ -1,4 +1,5 @@ --- +draft: True title: "Architettura di Kubernetes" weight: 30 --- diff --git a/content/it/docs/concepts/architecture/cloud-controller.md b/content/it/docs/concepts/architecture/cloud-controller.md index 632157e892..e903437044 100644 --- a/content/it/docs/concepts/architecture/cloud-controller.md +++ b/content/it/docs/concepts/architecture/cloud-controller.md @@ -1,4 +1,5 @@ --- +draft: True title: Concetti alla base del Cloud Controller Manager content_template: templates/concept weight: 30 @@ -264,4 +265,4 @@ I seguenti fornitori di cloud hanno implementato CCM: Sono fornite le istruzioni complete per la configurazione e l'esecuzione del CCM [qui](/docs/tasks/administer-cluster/running-cloud-controller/#cloud-controller-manager). -{{% /capture %}} \ No newline at end of file +{{% /capture %}} diff --git a/content/it/docs/concepts/architecture/master-node-communication.md b/content/it/docs/concepts/architecture/master-node-communication.md index bcfabac7ee..afbac85793 100644 --- a/content/it/docs/concepts/architecture/master-node-communication.md +++ b/content/it/docs/concepts/architecture/master-node-communication.md @@ -1,4 +1,5 @@ --- +draft: True title: Comunicazione Master-Node content_template: templates/concept weight: 20 diff --git a/content/it/docs/concepts/architecture/nodes.md b/content/it/docs/concepts/architecture/nodes.md index c7ca78917b..514a7845f9 100644 --- a/content/it/docs/concepts/architecture/nodes.md +++ b/content/it/docs/concepts/architecture/nodes.md @@ -1,4 +1,5 @@ --- +draft: True title: Nodi content_template: templates/concept weight: 10 diff --git a/content/it/docs/concepts/cluster-administration/_index.md b/content/it/docs/concepts/cluster-administration/_index.md index 72af40feec..4fd9b4388e 100755 --- a/content/it/docs/concepts/cluster-administration/_index.md +++ b/content/it/docs/concepts/cluster-administration/_index.md @@ -1,4 +1,5 @@ --- +draft: True title: "Cluster Administration" weight: 100 --- diff --git a/content/it/docs/concepts/cluster-administration/addons.md b/content/it/docs/concepts/cluster-administration/addons.md index 67571124ce..65fe5c582f 100644 --- a/content/it/docs/concepts/cluster-administration/addons.md +++ b/content/it/docs/concepts/cluster-administration/addons.md @@ -1,4 +1,5 @@ --- +draft: True title: Installazione dei componenti aggiuntivi content_template: templates/concept --- diff --git a/content/it/docs/concepts/cluster-administration/certificates.md b/content/it/docs/concepts/cluster-administration/certificates.md index e6b8b05dd1..65bf22cf76 100644 --- a/content/it/docs/concepts/cluster-administration/certificates.md +++ b/content/it/docs/concepts/cluster-administration/certificates.md @@ -1,4 +1,5 @@ --- +draft: True title: Certificati content_template: templates/concept weight: 20 diff --git a/content/it/docs/concepts/cluster-administration/cloud-providers.md b/content/it/docs/concepts/cluster-administration/cloud-providers.md index ea2c49533a..44163538a9 100644 --- a/content/it/docs/concepts/cluster-administration/cloud-providers.md +++ b/content/it/docs/concepts/cluster-administration/cloud-providers.md @@ -1,4 +1,5 @@ --- +draft: True title: Cloud Providers content_template: templates/concept weight: 30 diff --git a/content/it/docs/concepts/cluster-administration/cluster-administration-overview.md b/content/it/docs/concepts/cluster-administration/cluster-administration-overview.md index c2654fcf45..03b912826d 100644 --- a/content/it/docs/concepts/cluster-administration/cluster-administration-overview.md +++ b/content/it/docs/concepts/cluster-administration/cluster-administration-overview.md @@ -1,4 +1,5 @@ --- +draft: True title: Panoramica sull'amministrazione del cluster content_template: templates/concept weight: 10 diff --git a/content/it/docs/concepts/cluster-administration/controller-metrics.md b/content/it/docs/concepts/cluster-administration/controller-metrics.md index c38d0840cd..ceb5a7a2e7 100644 --- a/content/it/docs/concepts/cluster-administration/controller-metrics.md +++ b/content/it/docs/concepts/cluster-administration/controller-metrics.md @@ -1,4 +1,5 @@ --- +draft: True title: Metriche del responsabile del controller content_template: templates/concept weight: 100 diff --git a/content/it/docs/concepts/cluster-administration/federation.md b/content/it/docs/concepts/cluster-administration/federation.md index 187d231f9a..80e0d10b97 100644 --- a/content/it/docs/concepts/cluster-administration/federation.md +++ b/content/it/docs/concepts/cluster-administration/federation.md @@ -1,4 +1,5 @@ --- +draft: True title: Federation content_template: templates/concept weight: 80 diff --git a/content/it/docs/concepts/cluster-administration/kubelet-garbage-collection.md b/content/it/docs/concepts/cluster-administration/kubelet-garbage-collection.md index f787519141..417ae08287 100644 --- a/content/it/docs/concepts/cluster-administration/kubelet-garbage-collection.md +++ b/content/it/docs/concepts/cluster-administration/kubelet-garbage-collection.md @@ -1,5 +1,5 @@ --- - +draft: True title: Configurazione della raccolta dati kubelet content_template: templates/concept weight: 70 diff --git a/content/it/docs/concepts/cluster-administration/logging.md b/content/it/docs/concepts/cluster-administration/logging.md index 6c584d8978..179339ec4c 100644 --- a/content/it/docs/concepts/cluster-administration/logging.md +++ b/content/it/docs/concepts/cluster-administration/logging.md @@ -1,4 +1,5 @@ --- +draft: True title: Log di registrazione content_template: templates/concept weight: 60 diff --git a/content/it/docs/concepts/cluster-administration/manage-deployment.md b/content/it/docs/concepts/cluster-administration/manage-deployment.md index 33f3cb7ec2..348ef37a70 100644 --- a/content/it/docs/concepts/cluster-administration/manage-deployment.md +++ b/content/it/docs/concepts/cluster-administration/manage-deployment.md @@ -1,4 +1,5 @@ --- +draft: True title: Gestione delle risorse content_template: templates/concept weight: 40 diff --git a/content/it/docs/concepts/cluster-administration/networking.md b/content/it/docs/concepts/cluster-administration/networking.md index 697328535f..ef90cd3851 100644 --- a/content/it/docs/concepts/cluster-administration/networking.md +++ b/content/it/docs/concepts/cluster-administration/networking.md @@ -1,4 +1,5 @@ --- +draft: True title: Cluster Networking content_template: templates/concept weight: 50 diff --git a/content/it/docs/concepts/cluster-administration/proxies.md b/content/it/docs/concepts/cluster-administration/proxies.md index 62a097d096..19caed9167 100644 --- a/content/it/docs/concepts/cluster-administration/proxies.md +++ b/content/it/docs/concepts/cluster-administration/proxies.md @@ -1,4 +1,5 @@ --- +draft: True title: Proxy in Kubernetes content_template: templates/concept weight: 90 diff --git a/content/it/docs/concepts/example-concept-template.md b/content/it/docs/concepts/example-concept-template.md index 27ec896fdc..f234274c6e 100644 --- a/content/it/docs/concepts/example-concept-template.md +++ b/content/it/docs/concepts/example-concept-template.md @@ -1,4 +1,5 @@ --- +draft: True title: Esempio di modello di concetto content_template: templates/concept toc_hide: true diff --git a/content/it/docs/concepts/overview/what-is-kubernetes.md b/content/it/docs/concepts/overview/what-is-kubernetes.md index 4d15318ed3..e64c34d03e 100644 --- a/content/it/docs/concepts/overview/what-is-kubernetes.md +++ b/content/it/docs/concepts/overview/what-is-kubernetes.md @@ -1,4 +1,5 @@ --- +draft: True title: Cos'è Kubernetes content_template: templates/concept weight: 10 diff --git a/content/it/partners/_index.html b/content/it/partners/_index.html index f78d1fe734..44fbb05a49 100644 --- a/content/it/partners/_index.html +++ b/content/it/partners/_index.html @@ -1,4 +1,5 @@ --- +draft: True title: Partners bigheader: Kubernetes Partners abstract: Growing the Kubernetes ecosystem. diff --git a/i18n/it.toml b/i18n/it.toml index 6deb7ead6a..b08babd669 100644 --- a/i18n/it.toml +++ b/i18n/it.toml @@ -79,4 +79,4 @@ other = "Events Calendar" # UI elements [ui_search_placeholder] -other = "Search" +other = "Cerca" From a0325251ab6685cb3853bb4e7d3e1ed030e6626e Mon Sep 17 00:00:00 2001 From: Fabio Alessandro Locati Date: Tue, 21 Jan 2020 11:07:37 +0100 Subject: [PATCH 002/244] Add IT localization for overview/components/ (#18368) * begin the real work * rollback set of changes * translate components and required glossary items * improve many aspects thanks to the comments in the pr thread --- content/it/docs/concepts/_index.md | 3 +- .../it/docs/concepts/overview/components.md | 124 ++++++++++++++++++ .../concepts/overview/what-is-kubernetes.md | 2 +- content/it/docs/home/_index.md | 58 ++++++++ content/it/docs/reference/glossary/cluster.md | 17 +++ .../reference/glossary/container-runtime.md | 21 +++ content/it/docs/reference/glossary/etcd.md | 21 +++ .../docs/reference/glossary/kube-apiserver.md | 23 ++++ .../glossary/kube-controller-manager.md | 18 +++ .../it/docs/reference/glossary/kube-proxy.md | 23 ++++ .../docs/reference/glossary/kube-scheduler.md | 18 +++ content/it/docs/reference/glossary/kubelet.md | 19 +++ 12 files changed, 344 insertions(+), 3 deletions(-) create mode 100644 content/it/docs/concepts/overview/components.md create mode 100644 content/it/docs/home/_index.md create mode 100755 content/it/docs/reference/glossary/cluster.md create mode 100644 content/it/docs/reference/glossary/container-runtime.md create mode 100755 content/it/docs/reference/glossary/etcd.md create mode 100755 content/it/docs/reference/glossary/kube-apiserver.md create mode 100755 content/it/docs/reference/glossary/kube-controller-manager.md create mode 100755 content/it/docs/reference/glossary/kube-proxy.md create mode 100755 content/it/docs/reference/glossary/kube-scheduler.md create mode 100755 content/it/docs/reference/glossary/kubelet.md diff --git a/content/it/docs/concepts/_index.md b/content/it/docs/concepts/_index.md index 04a1e84b62..f471f2cd79 100644 --- a/content/it/docs/concepts/_index.md +++ b/content/it/docs/concepts/_index.md @@ -1,6 +1,5 @@ --- -draft: True -title: Concepts +title: Concetti main_menu: true content_template: templates/concept weight: 40 diff --git a/content/it/docs/concepts/overview/components.md b/content/it/docs/concepts/overview/components.md new file mode 100644 index 0000000000..5a057fa841 --- /dev/null +++ b/content/it/docs/concepts/overview/components.md @@ -0,0 +1,124 @@ +--- +title: I componenti di Kubernetes +content_template: templates/concept +weight: 20 +card: + name: concepts + weight: 20 +--- + +{{% capture overview %}} +Facendo il deployment di Kubernetes, ottieni un cluster. +{{< glossary_definition term_id="cluster" length="all" prepend="Un cluster è">}} + +Questo documento describe i diversi componenti che sono necessari per avere +un cluster Kubernetes completo e funzionante. + +Questo è un diagramma di un cluster Kubernetes con tutti i componenti e le loro relazioni. + +![Components of Kubernetes](/images/docs/components-of-kubernetes.png) + +{{% /capture %}} + +{{% capture body %}} +## Componenti della Control Plane + +La Control Plane è responsabile di tutte le decisioni globali sul cluster (ad esempio, lo scheduling), e l'individuazione e la risposta ad eventi derivanti dal cluster (ad esempio, l'avvio di un nuovo {{< glossary_tooltip text="pod" term_id="pod">}} quando il valore `replicas` di un deployment non è soddisfatto). + +I componenti della Control Plane possono essere eseguiti su qualsiasi nodo del cluster, ma solitamente gli script di installazione tendono a eseguire tutti i componenti della Control Plane sulla stessa macchina, separando la Control Plane dai workload dell'utente. +Vedi [creare un cluster in High-Availability](/docs/admin/high-availability/) per un esempio di un'installazione multi-master. + +### kube-apiserver + +{{< glossary_definition term_id="kube-apiserver" length="all" >}} + +### etcd + +{{< glossary_definition term_id="etcd" length="all" >}} + +### kube-scheduler + +{{< glossary_definition term_id="kube-scheduler" length="all" >}} + +### kube-controller-manager + +{{< glossary_definition term_id="kube-controller-manager" length="all" >}} + +Alcuni esempi di controller gestiti dal kube-controller-manager sono: + + * Node Controller: Responsabile del monitoraggio dei nodi del cluster, e.g. della gestione delle azioni da eseguire quando un nodo diventa non disponibile. + * Replication Controller: Responsabile per il mantenimento del corretto numero di Pod per ogni ReplicaSet presente nel sistema + * Endpoints Controller: Popola gli oggetti Endpoints (cioè, mette in relazioni i Pods con i Services). + * Service Account & Token Controllers: Creano gli account di default e i token di accesso alle API per i nuovi namespaces. + +### cloud-controller-manager + +Il [cloud-controller-manager](/docs/tasks/administer-cluster/running-cloud-controller/) esegue i controller che interagiscono con i cloud provider responsabili per la gestione dell'infrastruttura sottostante al cluster, in caso di deployment in cloud. +Il cloud-controller-manager è una funzionalità alpha introdotta in Kubernetes 1.6. + +Il cloud-controller-manager esegue esclusivamente i cicli di controllo specifici dei cloud provider. +È possibile disabilitare questi cicli di controllo usando il kube-controller-manager. +È inoltre possibile disabilitare i cicli di controllo settando il parametro `--cloud-provider` con il valore `external` durante l'esecuzione del kube-controller-manager. + +Il cloud-controller-manager permette l'evoluzione indipendente al codice di Kubernetes e a quello dei singoli cloud vendor. +Precedentemente, il codice core di Kubernetes dipendeva da implementazioni specifiche dei cloud provider. +In futuro, implementazioni specifiche per singoli cloud provider devono essere mantenuti dai cloud provider interessati e collegati al cloud-controller-manager. + +I seguenti controller hanno dipendenze verso implementazioni di specifici cloud provider: + + * Node Controller: Per controllare se sul cloud provider i nodi che hanno smesso di rispondere sono stati cancellati + * Route Controller: Per configurare le regole di route nella sottostante infrastruttura cloud + * Service Controller: Per creare, aggiornare ed eliminare i load balancer nella infrastruttura del cloud provider + * Volume Controller: Per creare, associare e montare i volumi e per interagire con il cloud provider per orchestrare i volumi + +## Componenti dei Nodi + +I componenti di Kubernetes che girano sui Worker Node sono responsabili dell'esecuzione dei workload degli utenti. + +### kubelet + +{{< glossary_definition term_id="kubelet" length="all" >}} + +### kube-proxy + +{{< glossary_definition term_id="kube-proxy" length="all" >}} + +### Container Runtime + +{{< glossary_definition term_id="container-runtime" length="all" >}} + +## Addons + +Gli Addons usano le risorse Kubernetes ({{< glossary_tooltip term_id="daemonset" >}}, {{< glossary_tooltip term_id="deployment" >}}, etc) per implementare nuove funzionalità a livello di cluster. +Dal momento che gli addons forniscono funzionalità a livello di cluster, le risorse che necessitano di un namespace, vengono collocate nel namespace `kube-system`. + +Alcuni addons sono descritti di seguito; mentre per una più estesa lista di addons, riferirsi ad [Addons](/docs/concepts/cluster-administration/addons/). + +### DNS + +Mentre gli altri addons non sono strettamente richiesti, tutti i cluster Kubernetes dovrebbero essere muniti di un [DNS del cluster](/docs/concepts/services-networking/dns-pod-service/), dal momento che molte applicazioni lo necessitano. + +Il DNS del cluster è un server DNS aggiuntivo rispetto ad altri server DNS presenti nella rete, e si occupa specificatamente dei record DNS per i servizi Kubernetes. + +I container eseguiti da Kubernetes possono utilizzare questo server per la risoluzione DNS. + +### Interfaccia web (Dashboard) + +La [Dashboard](/docs/tasks/access-application-cluster/web-ui-dashboard/) è una interfaccia web per i cluster Kubernetes. +Permette agli utenti di gestire e fare troubleshooting delle applicazioni che girano nel cluster, e del cluster stesso. + +### Monitoraggio dei Container + +Il [Monitoraggio dei Container](/docs/tasks/debug-application-cluster/resource-usage-monitoring/) salva serie temporali di metriche generiche dei container in un database centrale e fornisce una interfaccia in cui navigare i dati stessi. + +### Log a livello di Cluster + +Un [log a livello di cluster](/docs/concepts/cluster-administration/logging/) è responsabile per il salvataggio dei log dei container in un log centralizzato la cui interfaccia permette di cercare e navigare nei log. + +{{% /capture %}} +{{% capture whatsnext %}} +* Scopri i concetti relativi ai [Nodi](/docs/concepts/architecture/nodes/) +* Scopri i concetti relativi ai [Controller](/docs/concepts/architecture/controller/) +* Scopri i concetti relativi al [kube-scheduler](/docs/concepts/scheduling/kube-scheduler/) +* Leggi la [documentazione](https://etcd.io/docs/) ufficiale di etcd +{{% /capture %}} diff --git a/content/it/docs/concepts/overview/what-is-kubernetes.md b/content/it/docs/concepts/overview/what-is-kubernetes.md index e64c34d03e..851745a89b 100644 --- a/content/it/docs/concepts/overview/what-is-kubernetes.md +++ b/content/it/docs/concepts/overview/what-is-kubernetes.md @@ -16,7 +16,7 @@ Questa pagina è una panoramica generale su Kubernetes. {{% capture body %}} Kubernetes è una piattaforma portatile, estensibile e open-source per la gestione di carichi di lavoro e servizi containerizzati, in grado di facilitare sia la configurazione dichiarativa che l'automazione. La piattaforma vanta un grande ecosistema in rapida crescita. Servizi, supporto e strumenti sono ampiamente disponibili nel mondo Kubernetes . -Il nome Kubernetes deriva dal greco, significa timoniere o pilota. Google ha aperto il progetto Kubernetes nel 2014. Kubernetes si basa su [dieci anni e mezzo di esperienza di Google nella gestione di workloads (carichi di lavoro) di produzione in scala] (https://ai.google/research/pubs/pub43438), combinata con le migliori idee e pratiche della comunità. +Il nome Kubernetes deriva dal greco, significa timoniere o pilota. Google ha aperto il progetto Kubernetes nel 2014. Kubernetes si basa su [dieci anni e mezzo di esperienza di Google nella gestione di workloads (carichi di lavoro) di produzione in scala](https://ai.google/research/pubs/pub43438), combinata con le migliori idee e pratiche della comunità. ## Facciamo un piccolo passo indietro Diamo un'occhiata alla ragione per cui Kubernetes è così utile facendo un piccolo salto indietro nel tempo. diff --git a/content/it/docs/home/_index.md b/content/it/docs/home/_index.md new file mode 100644 index 0000000000..3f8e3ae0f0 --- /dev/null +++ b/content/it/docs/home/_index.md @@ -0,0 +1,58 @@ +--- +approvers: +- chenopis +title: Documentazione di Kubernetes +noedit: true +cid: docsHome +layout: docsportal_home +class: gridPage +linkTitle: "Home" +main_menu: true +weight: 10 +hide_feedback: true +menu: + main: + title: "Documentazione" + weight: 20 + post: > +

Impara come usare Kubernetes con informazioni concettuali, guide e documentazione tecnica. Puoi anche contribuire alla documentazione!

+overview: > + Kubernetes è un motore open source di orchestrazione di containers che automatizza il deployment, la scalabilità e la gestione di applicazioni containerizzate. Il progetto open source è ospitato dalla Cloud Native Computing Foundation (CNCF). +cards: +- name: concepts + title: "Capire le basi" + description: "Impara Kubernetes e i suoi concetti fondamentali." + button: "Impara i concetti" + button_path: "/docs/concepts" +- name: tutorials + title: "Prova Kubernetes" + description: "Segui delle guide per imparare come fare il deployment di applicativi in Kubernetes." + button: "Vedi le guide" + button_path: "/docs/tutorials" +- name: setup + title: "Configura un cluster" + description: "Esegui Kubernetes sulla base delle tue risorse e necessità." + button: "Configura Kubernetes" + button_path: "/docs/setup" +- name: tasks + title: "Impara come usare Kubernetes" + description: "Impara quali sono le procedure principali e come eseguirle in pochi passaggi." + button: "Guarda le procedure" + button_path: "/docs/tasks" +- name: reference + title: Guarda le referenze + description: Naviga la terminologia, la sintassi della riga di comando, la documentazione delle API e degli strumenti di installazione. + button: Vedi le referenze + button_path: /docs/reference +- name: contribute + title: Contribuisci alla documentazione + description: Chiunque può contribuire, indipendentemente dal fatto che sia nuovo nel progetto o un utente esperto. + button: Contribuisci alla documentazione + button_path: /docs/contribute +- name: download + title: Scarica Kubernetes + description: Se stai installando Kubernetes o aggiornandolo all'ultima versione, controlla le note di rilascio per la versione corrente. +- name: about + title: Sulla documentazione + description: Questo sito contiene la documentazione per la versione corrente e le precedenti 4 versioni di Kubernetes. +--- diff --git a/content/it/docs/reference/glossary/cluster.md b/content/it/docs/reference/glossary/cluster.md new file mode 100755 index 0000000000..a8d918b00d --- /dev/null +++ b/content/it/docs/reference/glossary/cluster.md @@ -0,0 +1,17 @@ +--- +title: Cluster +id: cluster +date: 2019-06-15 +full_link: +short_description: > + Un'insieme di macchine, chiamate nodi, che eseguono container e gestite da Kubernetes. Un cluster ha almeno un Worker Node e un Control Plane Node. + +aka: +tags: +- fundamental +- operation +--- +Un'insieme di macchine, chiamate nodi, che eseguono container e gestite da Kubernetes. Un cluster ha almeno un Worker Node e un Control Plane Node. + + +Il/I Worker Node ospitano i Pod che eseguono i workload dell'utente. Il/I Control Plane Node gestiscono i Worker Node e tutto quanto accade all'interno del cluster. Per garantire la high-availability e la possibilità di failover del cluster, vengono utilizzati più Control Plane Node. diff --git a/content/it/docs/reference/glossary/container-runtime.md b/content/it/docs/reference/glossary/container-runtime.md new file mode 100644 index 0000000000..640b3eaa17 --- /dev/null +++ b/content/it/docs/reference/glossary/container-runtime.md @@ -0,0 +1,21 @@ +--- +title: Container Runtime +id: container-runtime +date: 2019-06-05 +full_link: /docs/reference/generated/container-runtime +short_description: > + Il container runtime è il software che è responsabile per l'esecuzione dei container. + +aka: +tags: +- fundamental +- workload +--- + Il container runtime è il software che è responsabile per l'esecuzione dei container. + + + +Kubernetes supporta diversi container runtimes: [Docker](http://www.docker.com), +[containerd](https://containerd.io), [cri-o](https://cri-o.io/), +[rktlet](https://github.com/kubernetes-incubator/rktlet) e tutte le implementazioni di +[Kubernetes CRI (Container Runtime Interface)](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-node/container-runtime-interface.md). diff --git a/content/it/docs/reference/glossary/etcd.md b/content/it/docs/reference/glossary/etcd.md new file mode 100755 index 0000000000..595cffb3da --- /dev/null +++ b/content/it/docs/reference/glossary/etcd.md @@ -0,0 +1,21 @@ +--- +title: etcd +id: etcd +date: 2018-04-12 +full_link: /docs/tasks/administer-cluster/configure-upgrade-etcd/ +short_description: > + È un database key-value altamente disponibile che è usato da Kubernetes per salvare tutte le informazioni del cluster. + +aka: +tags: +- architecture +- storage +--- + È un database key-value ridondato, che è usato da Kubernetes per salvare tutte le informazioni del cluster. + + + +Se il tuo cluster utilizza etcd per salvare le informazioni, assicurati di +avere una strategia di [backup](/docs/tasks/administer-cluster/configure-upgrade-etcd/#backing-up-an-etcd-cluster) per questi dati. + +Puoi trovare informazioni dettagliate su etcd sulla [documentazione](https://etcd.io/docs/) ufficiale. diff --git a/content/it/docs/reference/glossary/kube-apiserver.md b/content/it/docs/reference/glossary/kube-apiserver.md new file mode 100755 index 0000000000..96f5ccbd23 --- /dev/null +++ b/content/it/docs/reference/glossary/kube-apiserver.md @@ -0,0 +1,23 @@ +--- +title: API server +id: kube-apiserver +date: 2018-04-12 +full_link: /docs/reference/generated/kube-apiserver/ +short_description: > + Componente della Control plane che serve le Kubernetes API. + +aka: +- kube-apiserver +tags: +- architecture +- fundamental +--- + L'API server è un componente di Kubernetes +{{< glossary_tooltip text="control plane" term_id="control-plane" >}} che espone le Kubernetes API. +L'API server è il front end del control plane di Kubernetes. + + + +La principale implementazione di un server Kubernetes API è [kube-apiserver](/docs/reference/generated/kube-apiserver/). +kube-apiserver è progettato per scalare orizzontalmente, cioè scala aumentando il numero di istanze. +Puoi eseguire multiple istanze di kube-apiserver e bilanciare il traffico tra queste istanze. diff --git a/content/it/docs/reference/glossary/kube-controller-manager.md b/content/it/docs/reference/glossary/kube-controller-manager.md new file mode 100755 index 0000000000..32d75beeb1 --- /dev/null +++ b/content/it/docs/reference/glossary/kube-controller-manager.md @@ -0,0 +1,18 @@ +--- +title: kube-controller-manager +id: kube-controller-manager +date: 2018-04-12 +full_link: /docs/reference/command-line-tools-reference/kube-controller-manager/ +short_description: > + Componente della Control Plane che gestisce i controller. + +aka: +tags: +- architecture +- fundamental +--- + Componente della Control Plane che gestisce {{< glossary_tooltip text="controllers" term_id="controller" >}}. + + + +Da un punto di vista logico, ogni {{< glossary_tooltip text="controller" term_id="controller" >}} è un processo separato, ma per ridurre la complessità, tutti i principali controller di Kubernetes vengono raggruppati in un unico container ed eseguiti in un singolo processo. diff --git a/content/it/docs/reference/glossary/kube-proxy.md b/content/it/docs/reference/glossary/kube-proxy.md new file mode 100755 index 0000000000..c82cd60c25 --- /dev/null +++ b/content/it/docs/reference/glossary/kube-proxy.md @@ -0,0 +1,23 @@ +--- +title: kube-proxy +id: kube-proxy +date: 2018-04-12 +full_link: /docs/reference/command-line-tools-reference/kube-proxy/ +short_description: > + `kube-proxy` è un proxy eseguito su ogni nodo del cluster. + +aka: +tags: +- fundamental +- networking +--- + [kube-proxy](/docs/reference/command-line-tools-reference/kube-proxy/) è un +proxy eseguito su ogni nodo del cluster, responsabile della gestione dei +Kubernetes {{< glossary_tooltip term_id="service">}}. + + + +I kube-proxy mantengono le regole di networking sui nodi. +Queste regole permettono la comunicazione verso gli altri nodi del cluster o l'esterno. + +Il kube-proxy usa le librerie del sistema operativo quando possible; in caso contrario il kube-proxy gestisce il traffico direttamente. diff --git a/content/it/docs/reference/glossary/kube-scheduler.md b/content/it/docs/reference/glossary/kube-scheduler.md new file mode 100755 index 0000000000..c63ce0b056 --- /dev/null +++ b/content/it/docs/reference/glossary/kube-scheduler.md @@ -0,0 +1,18 @@ +--- +title: kube-scheduler +id: kube-scheduler +date: 2018-04-12 +full_link: /docs/reference/generated/kube-scheduler/ +short_description: > + Componente della Control Plane che controlla i pod appena creati che non hanno un nodo assegnato, e dopo averlo identificato glielo assegna. + +aka: +tags: +- architecture +--- + Componente della Control Plane che controlla i pod appena creati che non hanno un nodo assegnato, e dopo averlo identificato glielo assegna. + + + +I fattori presi in considerazioni nell'individuare un nodo a cui assegnare l'esecuzione di un Pod includono la richiesta di risorse del Pod stesso e degli altri workload presenti nel sistema, i vincoli delle hardware/software/policy, le indicazioni di affinity e di anti-affinity, requisiti relativi alla disponibilità di dati/Volumes, le interferenze tra diversi workload e le scadenze. + diff --git a/content/it/docs/reference/glossary/kubelet.md b/content/it/docs/reference/glossary/kubelet.md new file mode 100755 index 0000000000..23908670c6 --- /dev/null +++ b/content/it/docs/reference/glossary/kubelet.md @@ -0,0 +1,19 @@ +--- +title: Kubelet +id: kubelet +date: 2018-04-12 +full_link: /docs/reference/generated/kubelet +short_description: > + Un agente che è eseguito su ogni nodo del cluster. Si assicura che i container siano eseguiti in un pod. + +aka: +tags: +- fundamental +- core-object +--- + Un agente che è eseguito su ogni nodo del cluster. Si assicura che i container siano eseguiti in un pod. + + + +La kubelet riceve un set di PodSpecs che vengono forniti attraverso vari meccanismi, e si assicura che i container descritti in questi PodSpecs funzionino correttamente e siano sani. La kubelet non gestisce i container che non sono stati creati da Kubernetes. + From 3d6f72ffc4ec4b745e7b149e2bafa2e7244f98d7 Mon Sep 17 00:00:00 2001 From: Tim Bannister Date: Sat, 1 Feb 2020 16:17:20 +0000 Subject: [PATCH 003/244] Revise Italian code of conduct localization (#18400) * Revise Italian code of conduct localization * Update to latest code-of-conduct commit (it) --- content/it/community/code-of-conduct.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/content/it/community/code-of-conduct.md b/content/it/community/code-of-conduct.md index 2d0b6959ca..01cbc40fbb 100644 --- a/content/it/community/code-of-conduct.md +++ b/content/it/community/code-of-conduct.md @@ -1,5 +1,5 @@ --- -title: Community +title: Comunità layout: basic cid: community css: /css/community.css @@ -8,17 +8,18 @@ css: /css/community.css

Codice di condotta della comunità di Kubernetes

-Kubernetes segue il +Kubernetes segue il codice di condotta CNCF. -Il testo del CNC CoC è replicato di seguito a partire dal -commit 0ce4694. -Se noti che questo non è aggiornato, ti preghiamo di far presente questo problema. -file an issue. +Il testo del codice di condotta CNCF è replicato di seguito a partire dal +commit 214585e. +Se noti che questo non è aggiornato, ti preghiamo +inviare una issue -Se noti una violazione del Codice di condotta in occasione di un evento o una riunione, in Slack o in un altro meccanismo di comunicazione, -contatta il Comitato per -il codice di condotta di Kubernetes/a>. -Potete raggiungerci via email all'indirizzo conduct@kubernetes.io. +Se noti una violazione del codice di condotta in occasione di un evento +o una riunione, in Slack o in un altro canale di comunicazione, +contatta il comitato per +il codice di condotta di Kubernetes. +Potete raggiungerci tramite email a conduct@kubernetes.io. Il tuo anonimato sarà protetto.
From 14f32a3b3140f2411a12b1774e65690e5eca8ad6 Mon Sep 17 00:00:00 2001 From: Tim Bannister Date: Mon, 3 Feb 2020 08:39:20 +0000 Subject: [PATCH 004/244] Reword Kubernetes case studies title (#18538) --- content/it/case-studies/_index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/it/case-studies/_index.md b/content/it/case-studies/_index.md index f52382b992..cccb7f7d09 100644 --- a/content/it/case-studies/_index.md +++ b/content/it/case-studies/_index.md @@ -1,8 +1,8 @@ --- draft: True -title: Case Studies -linkTitle: Case Studies -bigheader: Kubernetes User Case Studies +title: Casi Di Studio +linkTitle: Casi Di Studio +bigheader: Casi di studio sugli utenti di Kubernetes abstract: Una raccolta di utenti che eseguono Kubernetes in produzione. layout: basic class: gridPage From 77270e92e16196b9bcc8225e09ae1d1aae6efcf2 Mon Sep 17 00:00:00 2001 From: Arhell Date: Tue, 25 Feb 2020 23:14:45 +0200 Subject: [PATCH 005/244] Fix hudo anchor in readme --- README-hi.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-hi.md b/README-hi.md index 12bfeee63c..e572cfc738 100644 --- a/README-hi.md +++ b/README-hi.md @@ -36,7 +36,7 @@ > यदि आप डॉकर के बिना स्थानीय रूप से वेबसाइट चलाना पसंद करते हैं, तो नीचे Hugo का उपयोग करके स्थानीय रूप से साइट चलाना देखें। -यदि आप डॉकर के बिना स्थानीय रूप से वेबसाइट चलाना पसंद करते हैं, तो नीचे दिए गए Hugo का उपयोग करके स्थानीय रूप से [साइट को चलाने](#running-the-site-locally-using-hugo) का तरीका देखें। +यदि आप डॉकर के बिना स्थानीय रूप से वेबसाइट चलाना पसंद करते हैं, तो नीचे दिए गए Hugo का उपयोग करके स्थानीय रूप से [साइट को चलाने](#hugo-का-उपयोग-करते-हुए-स्थानीय-रूप-से-साइट-चलाना) का तरीका देखें। यदि आप [डॉकर](https://www.docker.com/get-started) चला रहे हैं, तो स्थानीय रूप से `कुबेरनेट्स-ह्यूगो` Docker image बनाएँ: From 428552906a2f6991736e2ca3032076002a7c4048 Mon Sep 17 00:00:00 2001 From: Fabio Alessandro Locati Date: Tue, 17 Mar 2020 12:01:24 +0100 Subject: [PATCH 006/244] align with english version --- i18n/it.toml | 211 ++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 157 insertions(+), 54 deletions(-) diff --git a/i18n/it.toml b/i18n/it.toml index b08babd669..6b2c6167b1 100644 --- a/i18n/it.toml +++ b/i18n/it.toml @@ -1,10 +1,131 @@ # i18n strings for the Italian site. +# NOTE: Please keep the entries in alphabetical order when editing -[main_read_about] -other = "Leggi" +[caution] +other = "Attenzione: " -[main_read_more] -other = "Leggi di più" +[cleanup_heading] +other = "In pulizia" + +[community_events_calendar] +other = "Calendario Eventi" + +[community_forum_name] +other = "Forum" + +[community_github_name] +other = "GitHub" + +[community_slack_name] +other = "Slack" + +[community_stack_overflow_name] +other = "Stack Overflow" + +[community_twitter_name] +other = "Twitter" + +[community_youtube_name] +other = "YouTube" + +[docs_label_browse] +other = "Sfoglia documenti" + +[docs_label_contributors] +other = "Contributori" + +[docs_label_i_am] +other = "Io Sono..." + +[docs_label_users] +other = "Utenti" + +[feedback_heading] +other = "Feedback" + +[feedback_no] +other = "No" + +[feedback_question] +other = "Questa pagina è stata di aiuto?" + +[feedback_yes] +other = "Sì" + +[latest_version] +other = "ultima versione." + +[layouts_blog_pager_prev] +other = "<< Precedente" + +[layouts_blog_pager_next] +other = "Succesiva >>" + +[layouts_case_studies_list_tell] +other = "Racconta la tua storia" + +[layouts_docs_glossary_aka] +other = "Anche noto come" + +[layouts_docs_glossary_description] +other = "Questo glossario vuole essere una lista comprensiva per standardizzare la terminologia di Kubernetes. Include termini tecnici che sono specifici di Kubernetes, così come termini più generali che sono utili per dare un contesto." + +[layouts_docs_glossary_deselect_all] +other = "Deseleziona tutto" + +[layouts_docs_glossary_click_details_after] +other = "per avere una spiegazione più completa per il termine." + +[layouts_docs_glossary_click_details_before] +other = "Fare click sull'icona " + +[layouts_docs_glossary_filter] +other = "Filtra i termini sulla base delle loro etichette" + +[layouts_docs_glossary_select_all] +other = "Seleziona tutto" + +[layouts_docs_partials_feedback_improvement] +other = "suggerire un miglioramento" + +[layouts_docs_partials_feedback_issue] +other = "Apri un issue sul repository GitHub se vuoi " + +[layouts_docs_partials_feedback_or] +other = "o" + +[layouts_docs_partials_feedback_problem] +other = "riportare un problema" + +[layouts_docs_partials_feedback_thanks] +other = "Grazie per il feedback. Se hai una domanda specifica su Kubernetes, chiedi su" + +[layouts_docs_search_fetching] +other = "Caricando i risultati..." + +[main_by] +other = "di" + +[main_cncf_project] +other = """Noi siamo un CNCF progetto

""" + +[main_community_explore] +other = "Explora la community" + +[main_contribute] +other = "Contribuire" + +[main_copyright_notice] +other = """The Linux Foundation ®. Tutti i diritti riservati. The Linux Foundation ha marchi registrati e utilizza marchi commerciali. Per un elenco dei marchi di Linux Foundation, consulta la pagina sull'utilizzo dei marchi""" + +[main_documentation_license] +other = """Gli autori di Kubernetes | Documentazione distribuita sotto CC BY 4.0""" + +[main_edit_this_page] +other = "Modifica questa pagina" + +[main_github_create_an_issue] +other = "Crea un issue" [main_github_invite] other = "Ti interessa l'hacking sulla base del codice di Kubernetes?" @@ -12,71 +133,53 @@ other = "Ti interessa l'hacking sulla base del codice di Kubernetes?" [main_github_view_on] other = "Visualizza su GitHub" -[main_github_create_an_issue] -other = "Crea un issue" - -[main_community_explore] -other = "Explora la community" - [main_kubernetes_features] other = "Caratteristiche di Kubernetes" -[main_cncf_project] -other = """Noi siamo un CNCF progetto

""" +[main_kubeweekly_baseline] +other = "Sei interessato a ricevere le ultime notizie su Kubernetes? Registrati alla newsletter KubeWeekly." + +[main_kubernetes_past_link] +other = "Vedi le precedenti mail della newsletter" [main_kubeweekly_signup] -other = "Sottoscrivi" - -[main_contribute] -other = "Contribuire" - -[main_edit_this_page] -other = "Modifica questa pagina" +other = "Iscriviti" [main_page_history] -other = "Lo Storico della Pagina" +other = "Storico della Pagina" [main_page_last_modified_on] other = "Ultima modifica alla pagina" -[main_by] -other = "di" +[main_read_about] +other = "Leggi" -[main_documentation_license] -other = """Gli autori di Kubernetes| Documentazione distribuita sotto CC BY 4.0""" +[main_read_more] +other = "Leggi di più" -[main_copyright_notice] -other = """The Linux Foundation ®. Tutti i diritti riservati. The Linux Foundation ha marchi registrati e utilizza marchi commerciali. Per un elenco dei marchi di Linux Foundation, consultare il nostro sitoTrademark Usage page""" +[note] +other = "Nota:" -# Labels for the docs portal home page. -[docs_label_browse] -other = "Sfoglia documenti" +[objectives_heading] +other = "Obbiettivi" -[docs_label_contributors] -other = "Contributori" +[prerequisites_heading] +other = "Prima di cominciare" -[docs_label_users] -other = "Utenti" - -[docs_label_i_am] -other = "Io Sono..." - - - -# Community links -[community_twitter_name] -other = "Twitter" -[community_github_name] -other = "GitHub" -[community_slack_name] -other = "Slack" -[community_stack_overflow_name] -other = "Stack Overflow" -[community_forum_name] -other = "Forum" -[community_events_calendar] -other = "Events Calendar" - -# UI elements [ui_search_placeholder] other = "Cerca" + +[version_check_mustbe] +other = "La tua installazione Kubernetes deve essere la versione " + +[version_check_mustbeorlater] +other = "La tua installazione Kubernetes deve essere almeno la versione " + +[version_check_tocheck] +other = "Per verificare la versione, esegui " + +[warning] +other = "Attenzione:" + +[whatsnext_heading] +other = "Voci correlate" From d0a13e0713c3e4ce99075499c97f9fd70b499f13 Mon Sep 17 00:00:00 2001 From: Fabio Alessandro Locati Date: Tue, 17 Mar 2020 18:14:22 +0100 Subject: [PATCH 007/244] Add docs translation (#19696) --- content/it/docs/_index.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 content/it/docs/_index.md diff --git a/content/it/docs/_index.md b/content/it/docs/_index.md new file mode 100644 index 0000000000..b4ffb21447 --- /dev/null +++ b/content/it/docs/_index.md @@ -0,0 +1,3 @@ +--- +title: Documentazione +--- From 65d36413fb23dffd2c0f3bbdb73b4cc5f71d2745 Mon Sep 17 00:00:00 2001 From: Fabio Alessandro Locati Date: Tue, 17 Mar 2020 18:41:35 +0100 Subject: [PATCH 008/244] improve italian readability --- i18n/it.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/it.toml b/i18n/it.toml index 6b2c6167b1..78096bc2e6 100644 --- a/i18n/it.toml +++ b/i18n/it.toml @@ -107,7 +107,7 @@ other = "Caricando i risultati..." other = "di" [main_cncf_project] -other = """Noi siamo un CNCF progetto

""" +other = """Kubernetes è un progetto CNCF

""" [main_community_explore] other = "Explora la community" From 857efcab736e5f424c0631822fb111d7d884f1c4 Mon Sep 17 00:00:00 2001 From: Fabio Alessandro Locati Date: Mon, 23 Mar 2020 11:22:45 +0100 Subject: [PATCH 009/244] no need of capitalization of articles (#19785) --- content/it/case-studies/_index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/it/case-studies/_index.md b/content/it/case-studies/_index.md index cccb7f7d09..d7772b974f 100644 --- a/content/it/case-studies/_index.md +++ b/content/it/case-studies/_index.md @@ -1,7 +1,7 @@ --- draft: True -title: Casi Di Studio -linkTitle: Casi Di Studio +title: Casi di Studio +linkTitle: Casi di Studio bigheader: Casi di studio sugli utenti di Kubernetes abstract: Una raccolta di utenti che eseguono Kubernetes in produzione. layout: basic From cf9fa4de8ea6db8d62c8318c8bfff842839aea9a Mon Sep 17 00:00:00 2001 From: Fabio Alessandro Locati Date: Mon, 23 Mar 2020 11:24:45 +0100 Subject: [PATCH 010/244] this can be built safely (#19786) --- content/it/_common-resources/index.md | 1 - 1 file changed, 1 deletion(-) diff --git a/content/it/_common-resources/index.md b/content/it/_common-resources/index.md index 443251c6a1..ca03031f1e 100644 --- a/content/it/_common-resources/index.md +++ b/content/it/_common-resources/index.md @@ -1,4 +1,3 @@ --- -draft: True headless: true --- From 2a5540ac6138c45b660811065a741b1c567b7059 Mon Sep 17 00:00:00 2001 From: Fabio Alessandro Locati Date: Mon, 23 Mar 2020 18:03:32 +0100 Subject: [PATCH 011/244] improve strings --- i18n/it.toml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/i18n/it.toml b/i18n/it.toml index 78096bc2e6..597fd1c2ae 100644 --- a/i18n/it.toml +++ b/i18n/it.toml @@ -32,7 +32,7 @@ other = "YouTube" other = "Sfoglia documenti" [docs_label_contributors] -other = "Contributori" +other = "Contributors" [docs_label_i_am] other = "Io Sono..." @@ -62,22 +62,22 @@ other = "<< Precedente" other = "Succesiva >>" [layouts_case_studies_list_tell] -other = "Racconta la tua storia" +other = "Racconta il tuo use case" [layouts_docs_glossary_aka] other = "Anche noto come" [layouts_docs_glossary_description] -other = "Questo glossario vuole essere una lista comprensiva per standardizzare la terminologia di Kubernetes. Include termini tecnici che sono specifici di Kubernetes, così come termini più generali che sono utili per dare un contesto." +other = "Questo glossario vuole essere un aiuto per standardizzare la terminologia usata per Kubernetes. Include termini tecnici che sono specifici di Kubernetes, così come termini più generali che sono utili per dare un contesto." [layouts_docs_glossary_deselect_all] other = "Deseleziona tutto" [layouts_docs_glossary_click_details_after] -other = "per avere una spiegazione più completa per il termine." +other = "per il significato di questo termine." [layouts_docs_glossary_click_details_before] -other = "Fare click sull'icona " +other = "Fare click sull'icona" [layouts_docs_glossary_filter] other = "Filtra i termini sulla base delle loro etichette" @@ -128,7 +128,7 @@ other = "Modifica questa pagina" other = "Crea un issue" [main_github_invite] -other = "Ti interessa l'hacking sulla base del codice di Kubernetes?" +other = "Sei interessato a contribuire a Kubernetes?" [main_github_view_on] other = "Visualizza su GitHub" @@ -170,10 +170,10 @@ other = "Prima di cominciare" other = "Cerca" [version_check_mustbe] -other = "La tua installazione Kubernetes deve essere la versione " +other = "La tua installazione Kubernetes deve avere la versione " [version_check_mustbeorlater] -other = "La tua installazione Kubernetes deve essere almeno la versione " +other = "La tua installazione Kubernetes deve avere almeno la versione " [version_check_tocheck] other = "Per verificare la versione, esegui " From 8dd1c04e42418ca68101ed5412225ecaa6e15d9e Mon Sep 17 00:00:00 2001 From: Guangze GAO Date: Sun, 29 Mar 2020 21:09:39 +0800 Subject: [PATCH 012/244] update manage-compute-resources-container-zh --- .../manage-compute-resources-container.md | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/content/zh/docs/concepts/configuration/manage-compute-resources-container.md b/content/zh/docs/concepts/configuration/manage-compute-resources-container.md index c3e6b6af4d..46aabdb8aa 100644 --- a/content/zh/docs/concepts/configuration/manage-compute-resources-container.md +++ b/content/zh/docs/concepts/configuration/manage-compute-resources-container.md @@ -42,6 +42,20 @@ the difference between requests and limits, see ## Resource types *CPU* and *memory* are each a *resource type*. A resource type has a base unit. CPU is specified in units of cores, and memory is specified in units of bytes. + +If you're using Kubernetes v1.14 or newer, you can specify _huge page_ resources. +Huge pages are a Linux-specific feature where the node kernel allocates blocks of memory +that are much larger than the default page size. + +For example, on a system where the default page size is 4KiB, you could specify a limit, +`hugepages-2Mi: 80Mi`. If the container tries allocating over 40 2MiB huge pages (a +total of 80 MiB), that allocation fails. + +{{< note >}} +You cannot overcommit `hugepages-*` resources. +This is different from the `memory` and `cpu` resources. +{{< /note >}} + CPU and memory are collectively referred to as *compute resources*, or just *resources*. Compute resources are measurable quantities that can be requested, allocated, and @@ -55,6 +69,15 @@ through the Kubernetes API server. *CPU* 和*内存*都是*资源类型*。资源类型具有基本单位。CPU 的单位是核心数,内存的单位是字节。 +如果您使用的是Kubernetes v1.14或更高版本,则可以指定巨大页资源。巨大页是Linux特有的功能,节点内核在其中分配的内存块比默认页面大小大得多。 + +例如,在默认页面大小为4KiB的系统上,您可以指定一个限制,`hugepages-2Mi:80Mi`。如果容器尝试分配40多个2MiB大页面(a总共80 MiB),则分配失败。 + +{{< note >}} +您不能过量使用`hugepages- *`资源。 +这与`memory`和`cpu`资源不同。 +{{< /note >}} + CPU和内存统称为*计算资源*,也可以称为*资源*。计算资源的数量是可以被请求、分配、消耗和可测量的。它们与 [API 资源](/docs/concepts/overview/kubernetes-api/) 不同。 API 资源(如 Pod 和 [Service](/docs/concepts/services-networking/service/))是可通过 Kubernetes API server 读取和修改的对象。 @@ -284,7 +307,7 @@ the monitoring system. Pod 的资源使用情况被报告为 Pod 状态的一部分。 -如果为集群配置了 [可选监控](/docs/tasks/debug-application-cluster/resource-metrics-pipeline/),则可以从监控系统检索 Pod 资源的使用情况。 +如果为集群配置了 [可选监控](http://releases.k8s.io/{{< param "githubbranch" >}}/cluster/addons/cluster-monitoring/README.md),则可以从监控系统检索 Pod 资源的使用情况。 +{{% capture overview %}} + +### 使用Falco采集审计事件 + + +[Falco](https://falco.org/)是一个用于云原生平台入侵和异常检测开源项目。本节介绍如何设置Falco,如何将审计事件发送到Falco公开的Kubernetes Audit端点,以及Falco如何应用一组规则来自动检测可疑行为。 + +{{% /capture %}} + +{{% capture body %}} + + +#### 安装 Falco + + +使用以下方法安装Falco: + + +- [Standalone Falco][falco_installation] +- [Kubernetes DaemonSet][falco_installation] +- [Falco Helm Chart][falco_helm_chart] + + +安装完成Falco后,请确保将其配置为公开Audit Webhook。 为此,请使用以下配置: + +```yaml +webserver: + enabled: true + listen_port: 8765 + k8s_audit_endpoint: /k8s_audit + ssl_enabled: false + ssl_certificate: /etc/falco/falco.pem +``` + + +配置通常可以在`/ etc / falco / falco.yaml`文件中找到。 如果Falco作为Kubernetes DaemonSet安装,请编辑`falco-config` ConfigMap并添加此配置。 + +#### 配置Kubernetes审计 + + +1. 为 [kube-apiserver][kube-apiserver] webhook 审计后端创建一个[kubeconfig file](/docs/concepts/configuration/organize-cluster-access-kubeconfig/)配置文件。 + + cat < /etc/kubernetes/audit-webhook-kubeconfig + apiVersion: v1 + kind: Config + clusters: + - cluster: + server: http://:8765/k8s_audit + name: falco + contexts: + - context: + cluster: falco + user: "" + name: default-context + current-context: default-context + preferences: {} + users: [] + EOF + +2. 使用以下选项开启 [kube-apiserver][kube-apiserver]: + + ```shell + --audit-policy-file=/etc/kubernetes/audit-policy.yaml --audit-webhook-config-file=/etc/kubernetes/audit-webhook-kubeconfig + ``` + +#### 审计规则 + + + +专门用于Kubernetes审计事件的规则可以在[k8s_audit_rules.yaml] [falco_k8s_audit_rules]中找到。 如果Audit Rules是作为本机软件包安装或使用官方Docker镜像安装的,则Falco会将规则文件复制到`/etc/falco/`中,以便可以使用。 + +共有三类规则。 + +第一类规则用于查找可疑或异常活动,例如: + + +-未经授权或匿名用户的任何活动。 +-创建使用未知或不允许的镜像的pod。 +-创建特权Pod,从主机安装敏感文件系统的Pod或使用主机网络的Pod。 +-创建NodePort服务。 +-创建包含私有证书(例如密码和云提供商secrets)的ConfigMap。 +-在正在运行的Pod上附加或执行命令。 +-在一组允许的名称空间之外创建一个名称空间。 +-在kube-system或kube-public命名空间中创建pod或服务帐户。 +-尝试修改或删除系统ClusterRole。 +-创建一个ClusterRoleBinding到cluster-admin角色。 +-使用通配动词或资源创建ClusterRole。 例如,过度赋权。 +-创建具有写权限的ClusterRole或可以在Pod上执行命令的ClusterRole。 + + +第二类规则跟踪正在创建或销毁的资源,包括: + +- Deployments +- Services +- ConfigMaps +- Namespaces +- Service accounts +- Role/ClusterRoles +- Role/ClusterRoleBindings + + + +最后一类规则显示Falco收到的所有审核事件。默认情况下,此规则是禁用的,因为它可能会很吵。 + +有关更多详细信息,请参阅Falco文档中的[Kubernetes审计事件][falco_ka_docs]。 + + +[kube-apiserver]: /docs/admin/kube-apiserver +[auditing-proposal]: https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/auditing.md +[auditing-api]: https://github.com/kubernetes/kubernetes/blob/{{< param "githubbranch" >}}/staging/src/k8s.io/apiserver/pkg/apis/audit/v1/types.go +[gce-audit-profile]: https://github.com/kubernetes/kubernetes/blob/{{< param "githubbranch" >}}/cluster/gce/gci/configure-helper.sh#L735 +[kubeconfig]: /docs/tasks/access-application-cluster/configure-access-multiple-clusters/ +[fluentd]: http://www.fluentd.org/ +[fluentd_install_doc]: https://docs.fluentd.org/v1.0/articles/quickstart#step-1:-installing-fluentd +[fluentd_plugin_management_doc]: https://docs.fluentd.org/v1.0/articles/plugin-management +[logstash]: https://www.elastic.co/products/logstash +[logstash_install_doc]: https://www.elastic.co/guide/en/logstash/current/installing-logstash.html +[kube-aggregator]: /docs/concepts/api-extension/apiserver-aggregation +[falco_website]: https://www.falco.org +[falco_k8s_audit_rules]: https://github.com/falcosecurity/falco/blob/master/rules/k8s_audit_rules.yaml +[falco_ka_docs]: https://falco.org/docs/event-sources/kubernetes-audit +[falco_installation]: https://falco.org/docs/installation +[falco_helm_chart]: https://github.com/helm/charts/tree/master/stable/falco + +{{% /capture %}} From e4daa5439f74f873d79307e02ef0015f9091b7b9 Mon Sep 17 00:00:00 2001 From: Guangze GAO Date: Mon, 30 Mar 2020 10:16:45 +0800 Subject: [PATCH 014/244] Add 2019-03-28-PID-Limiting Chinese translation --- .../zh/blog/_posts/2019-03-28-PID-Limiting.md | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 content/zh/blog/_posts/2019-03-28-PID-Limiting.md diff --git a/content/zh/blog/_posts/2019-03-28-PID-Limiting.md b/content/zh/blog/_posts/2019-03-28-PID-Limiting.md new file mode 100644 index 0000000000..94a95a949d --- /dev/null +++ b/content/zh/blog/_posts/2019-03-28-PID-Limiting.md @@ -0,0 +1,68 @@ + +--- +title: 'Kubernetes 1.14稳定性改进中的进程ID限制' +date: 2019-04-15 +--- + + +**作者: Derek Carr** + +你是否见过有人拿走了比属于他们那一份更多的饼干? 一个人走过来,抓起半打新鲜烤制的大块巧克力饼干然后匆匆离去,就像饼干怪兽大喊“ Om nom nom nom”。 + +在一些罕见的工作负载中,Kubernetes集群内部也发生了类似的情况。每个Pod和Node都有有限数量的可能的进程ID(PID),供所有应用程序共享。尽管很少有进程或Pod能够进入并获取所有PID,但由于这种行为,一些用户会遇到资源匮乏的情况。 因此,在Kubernetes 1.14中,我们引入了一项增强功能,以降低单个Pod垄断所有可用PID的风险。 + + + +## 你能分享一些PIDs吗? + +在这里,我们谈论的是某些容器的贪婪性。 在理想情况之外,失控过程有时会发生,特别是在测试集群中。 因此,在这些集群中会发生一些混乱的非生产环境准备就绪的事情。 + +在这种情况下,可能会在节点内部发生类似于分叉函数炸弹的事件。随着资源的缓慢腐蚀,被一些不断产生子进程的僵尸般的进程所接管,其他正常的工作负载会因为这些像气球般不断膨胀的进程浪费行为而开始受到冲击。这可能导致同一吊舱上的其他进程缺少所需的PID。这也可能导致有趣的副作用,因为节点可能会发生故障,并且该Pod的副本将安排到新的机器上,至此,该过程将在整个群集中重复进行。 + + +## 解决问题 + +因此,在Kubernetes 1.14中,我们增加了一个允许限制给定Pod可以消耗的pid数量kubelet配置的特性。如果该机器支持32768个PIDs和100个Pod,则可以为每个Pod提供300个PIDs的预算,以防止PIDs完全耗尽。如果管理员想要像CPU或内存那样过度使用PIDs,那么他们也可以配置超额使用,但是这样会有一些额外风险。不管怎样,没有一个Pod能搞坏整个机器。这通常会防止简单的分叉函数炸弹接管你的集群。 + +此更改允许管理员保护一个Pod不受另一个Pod的影响,但不能确保计算机上的所有Pod都能保护节点和节点代理本身不受影响。因此,我们在这个版本中以Alpha的形式引入了这个一个特性,它提供了PIDs在节点代理(kubelet、runtime等)与Pod上的最终用户工作负载的分离。管理员可以预定特定数量的pid(类似于今天如何预定CPU或内存),并确保它们不会被该计算机上的pod消耗。一旦从Alpha进入到Beta,然后在将来的Kubernetes版本中稳定下来,我们就可以使用这个特性防止Linux资源耗尽。 + +开始使用[Kubernetes 1.14](https://github.com/Kubernetes/Kubernetes/releases/tag/v1.14.0)。 + +##参与其中 + +如果您对此特性有反馈或有兴趣参与其设计与开发,请加入[节点特别兴趣小组](https://github.com/kubernetes/community/tree/master/sig Node)。 + +###关于作者: +Derek Carr是Red Hat高级首席软件工程师。他也是Kubernetes的贡献者和Kubernetes社区指导委员会的成员。 From 663e5707ce8c3faaee38a04d757fabb1436a6afc Mon Sep 17 00:00:00 2001 From: zhanwang Date: Tue, 31 Mar 2020 20:52:44 +0800 Subject: [PATCH 015/244] update context in i18n/ja.toml --- i18n/ja.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/i18n/ja.toml b/i18n/ja.toml index a80eac684f..5806716d01 100644 --- a/i18n/ja.toml +++ b/i18n/ja.toml @@ -25,6 +25,9 @@ other = "Stack Overflow" [community_twitter_name] other = "Twitter" +[community_youtube_name] +other = "YouTube" + [deprecation_warning] other = " のドキュメントは積極的にメンテナンスされていません。現在表示されているバージョンはスナップショットです。最新のドキュメントはこちらです: " From 333a1e658e6655d70bd38a546e1b35dbfae3b5d2 Mon Sep 17 00:00:00 2001 From: wwgfhf <51694849+wwgfhf@users.noreply.github.com> Date: Wed, 1 Apr 2020 09:09:11 +0800 Subject: [PATCH 016/244] Update nl.toml --- i18n/nl.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/i18n/nl.toml b/i18n/nl.toml index bb334b1a65..a0aa6faee4 100644 --- a/i18n/nl.toml +++ b/i18n/nl.toml @@ -189,6 +189,8 @@ other = "Stack Overflow" other = "Forum" [community_events_calendar] other = "Evenementenkalender" +[community_youtube_name] +other = "YouTube" # UI elements [ui_search_placeholder] From 2fddca0e4d0ff7df434f2fe0f67a029b50bd17a6 Mon Sep 17 00:00:00 2001 From: Fabio Alessandro Locati Date: Sun, 22 Mar 2020 17:51:45 +0100 Subject: [PATCH 017/244] de-drafting --- .../concepts/overview/what-is-kubernetes.md | 80 +++++++++---------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/content/it/docs/concepts/overview/what-is-kubernetes.md b/content/it/docs/concepts/overview/what-is-kubernetes.md index 851745a89b..5c717c0ad9 100644 --- a/content/it/docs/concepts/overview/what-is-kubernetes.md +++ b/content/it/docs/concepts/overview/what-is-kubernetes.md @@ -1,5 +1,4 @@ --- -draft: True title: Cos'è Kubernetes content_template: templates/concept weight: 10 @@ -7,7 +6,6 @@ card: name: concepts weight: 10 --- - {{% capture overview %}} Questa pagina è una panoramica generale su Kubernetes. @@ -16,75 +14,77 @@ Questa pagina è una panoramica generale su Kubernetes. {{% capture body %}} Kubernetes è una piattaforma portatile, estensibile e open-source per la gestione di carichi di lavoro e servizi containerizzati, in grado di facilitare sia la configurazione dichiarativa che l'automazione. La piattaforma vanta un grande ecosistema in rapida crescita. Servizi, supporto e strumenti sono ampiamente disponibili nel mondo Kubernetes . -Il nome Kubernetes deriva dal greco, significa timoniere o pilota. Google ha aperto il progetto Kubernetes nel 2014. Kubernetes si basa su [dieci anni e mezzo di esperienza di Google nella gestione di workloads (carichi di lavoro) di produzione in scala](https://ai.google/research/pubs/pub43438), combinata con le migliori idee e pratiche della comunità. +Il nome Kubernetes deriva dal greco, significa timoniere o pilota. Google ha reso open-source il progetto Kubernetes nel 2014. Kubernetes si basa su [quindici anni di esperienza di Google nella gestione di carichi di lavoro di produzione su scala mondiale](https://ai.google/research/pubs/pub43438), combinata con le migliori idee e pratiche della comunità. -## Facciamo un piccolo passo indietro +## Facciamo un piccolo salto indietro Diamo un'occhiata alla ragione per cui Kubernetes è così utile facendo un piccolo salto indietro nel tempo. ![Deployment evolution](/images/docs/Container_Evolution.svg) **L'era del deployment tradizionale:** -All'inizio, le organizzazioni eseguivano applicazioni su server fisici. Non c'era modo di definire i limiti delle risorse per le applicazioni in un server fisico e questo ha causato non pochi problemi di allocazione delle risorse. Ad esempio, se più applicazioni vengono eseguite su di un server fisico, si possono verificare casi in cui un'applicazione assorbe la maggior parte delle risorse e, di conseguenza, le altre applicazioni non raggiungono prestazioni ottimali. Una soluzione per questo sarebbe di eseguire ogni applicazione su un server fisico diverso. Ma questo non è la soluzione ideale, perché le risorse vengono sottoutilizzate, inoltre, questa pratica risulta essere costosa per le organizzazioni, le quali devono mantenere numerosi server fisici. +All'inizio, le organizzazioni eseguivano applicazioni su server fisici. Non c'era modo di definire i limiti delle risorse per le applicazioni in un server fisico e questo ha causato non pochi problemi di allocazione delle risorse. Ad esempio, se più applicazioni vengono eseguite sullo stesso server fisico, si possono verificare casi in cui un'applicazione assorbe la maggior parte delle risorse e, di conseguenza, le altre applicazioni non hanno le prestazioni attese. Una soluzione per questo sarebbe di eseguire ogni applicazione su un server fisico diverso. Ma questa non è una soluzione ideale, dal momento che le risorse vengono sottoutilizzate, inoltre, questa pratica risulta essere costosa per le organizzazioni, le quali devono mantenere numerosi server fisici. -**L'era del deployment virtualizzato:** Come soluzione venne introdotta la virtualizzazione. Essa consente di eseguire più macchine virtuali (VM) su di una singola CPU di un server fisico. La virtualizzazione consente di isolare le applicazioni tra più macchine virtuali e fornisce un livello di sicurezza superiore, dal momento che le informazioni di un'applicazione non sono liberamente accessibili da un'altra applicazione. +**L'era del deployment virtualizzato:** +Come soluzione venne introdotta la virtualizzazione. Essa consente di eseguire più macchine virtuali (VM) su una singola CPU fisica. La virtualizzazione consente di isolare le applicazioni in più macchine virtuali e fornisce un livello di sicurezza superiore, dal momento che le informazioni di un'applicazione non sono liberamente accessibili da un'altra applicazione. -La virtualizzazione consente un migliore utilizzo delle risorse in un server fisico e permette una migliore scalabilità, perché un'applicazione può essere aggiunta o aggiornata facilmente, riduce i costi dell'hardware e molto altro ancora. +La virtualizzazione consente un migliore utilizzo delle risorse riducendo i costi per l'hardware, permette una migliore scalabilità, dato che un'applicazione può essere aggiunta o aggiornata facilmente, e ha molti altri vantaggi. -Ogni VM è una macchina completa che esegue tutti i componenti, compreso il proprio sistema operativo, oltre all'hardware virtualizzato. +Ogni VM è una macchina completa che esegue tutti i componenti, compreso il proprio sistema operativo, sopra all'hardware virtualizzato. -**L'era del deployment a container:** I container sono simili alle macchine virtuali, ma presentano proprietà di isolamento che consentono di condividere il sistema operativo (OS) tra le applicazioni. Pertanto, i container sono considerati più leggeri. Analogamente a una macchina virtuale, un contenitore dispone di un proprio filesystem, CPU, memoria, spazio di elaborazione e altro ancora. Poiché sono disaccoppiati dall'infrastruttura sottostante, risultano portatili su cloud e distribuzioni di sistemi operativi. +**L'era del deployment in container:** +I container sono simili alle macchine virtuali, ma presentano un modello di isolamento più leggero, condividendo il sistema operativo (OS) tra le applicazioni. Pertanto, i container sono considerati più leggeri. Analogamente a una macchina virtuale, un container dispone di una segregazione di filesystem, CPU, memoria, PID e altro ancora. Poiché sono disaccoppiati dall'infrastruttura sottostante, risultano portabili tra differenti cloud e diverse distribuzioni. -I container stanno diventando popolari perché offrono molteplici vantaggi. Alcuni dei vantaggi dei container sono elencati di seguito: +I container sono diventati popolari dal momento che offrono molteplici vantaggi, ad esempio: * Creazione e distribuzione di applicazioni Agile: maggiore facilità ed efficienza nella creazione di immagini container rispetto all'uso di immagini VM. -* Sviluppo, integrazione e distribuzione continuativi: consente la creazione e la distribuzione di immagini container affidabili e frequenti con rollback rapidi e semplici (a causa dell'immutabilità dell'immagine). -* Separazione delle fasi di Dev e Ops: si creano immagini contenitore di applicazioni al momento della costruzione/rilascio piuttosto che al momento della distribuzione, disaccoppiando così le applicazioni dall'infrastruttura. -* L'osservabilità non riguarda solo le informazioni e le metriche a livello di sistema operativo, ma anche lo stato di salute dell'applicazione e altri segnali. -* Coerenza ambientale tra sviluppo, test e produzione: Funziona sullo stesso modo su un computer portatile come nel cloud. -* Portabilità della distribuzione cloud e del sistema operativo: Funziona su Ubuntu, RHEL, CoreOS, on-prem, Google Kubernetes Engine e ovunque. -* Gestione incentrata sulle applicazioni: Aumenta il livello di astrazione dall'esecuzione di un sistema operativo su hardware virtuale all'esecuzione di un'applicazione su un sistema operativo utilizzando risorse logiche. -* Microservizi liberamente abbinabili, distribuiti, elastici e liberalizzati: le applicazioni sono suddivise in pezzi più piccoli e indipendenti e possono essere distribuite e gestite dinamicamente - niente stack monolitici che girano su di una grande macchina monouso. -* Isolamento delle risorse: prestazioni prevedibili dell'applicazione. +* Adozione di pratiche per lo sviluppo/test/rilascio continuativo: consente la frequente creazione e la distribuzione di container image affidabili, dando la possibilità di fare rollback rapidi e semplici (grazie all'immutabilità dell'immagine stessa). +* Separazione delle fasi di Dev e Ops: le container image vengono prodotte al momento della compilazione dell'applicativo piuttosto che nel momento del rilascio, permettendo così di disaccoppiare le applicazioni dall'infrastruttura sottostante. +* L'osservabilità non riguarda solo le informazioni e le metriche del sistema operativo, ma anche lo stato di salute e altri segnali dalle applicazioni. +* Coerenza di ambiente tra sviluppo, test e produzione: i container funzionano allo stesso modo su un computer portatile come nel cloud. +* Portabilità tra cloud e sistemi operativi differenti: lo stesso container funziona su Ubuntu, RHEL, CoreOS, on-premise, Google Kubernetes Engine e da qualsiasi altra parte. +* Gestione incentrata sulle applicazioni: Aumenta il livello di astrazione dall'esecuzione di un sistema operativo su hardware virtualizzato all'esecuzione di un'applicazione su un sistema operativo utilizzando risorse logiche. +* Microservizi liberamente combinabili, distribuiti, ad alta scalabilità: le applicazioni sono suddivise in pezzi più piccoli e indipendenti che possono essere distribuite e gestite dinamicamente - niente stack monolitici che girano su una singola grande macchina. +* Isolamento delle risorse: le prestazioni delle applicazioni sono prevedibili. * Utilizzo delle risorse: alta efficienza e densità. ## Perché necessito di Kubernetes e cosa posso farci -I container sono un buon modo per raggruppare ed eseguire le applicazioni. In un ambiente di produzione, è necessario gestire i container che eseguono le applicazioni e garantire che non si verifichino tempi di inattività. Per esempio, se un container si guasta, un altro container necessita di essere riavviato. Non sarebbe più facile se questo comportamento fosse gestito direttamente da un sistema? +I container sono un buon modo per distribuire ed eseguire le tue applicazioni. In un ambiente di produzione, è necessario gestire i container che eseguono le applicazioni e garantire che non si verifichino interruzioni dei servizi. Per esempio, se un container si interrompe, è necessario avviare un nuovo container. Non sarebbe più facile se questo comportamento fosse gestito direttamente da un sistema? -È così che Kubernetes viene in soccorso! Kubernetes vi fornisce un framework per far funzionare i sistemi distribuiti in modo resiliente. Si prende cura delle vostre esigenze di scalabilità, failover, schemi di distribuzione, e altro ancora. Per esempio, Kubernetes può facilmente gestire un Canary deploument per il vostro sistema. +È proprio qui che Kubernetes viene in soccorso! Kubernetes ti fornisce un framework per far funzionare i sistemi distribuiti in modo resiliente. Kubernetes si occupa della scalabilità, failover, distribuzione delle tue applicazioni. Per esempio, Kubernetes può facilmente gestire i rilasci con modalità Canary deployment. -Kubernetes vi fornisce: +Kubernetes ti fornisce: -* **Scoperta del servizio e bilanciamento del carico** -Kubernetes può esporre un contenitore usando il nome DNS o il proprio indirizzo IP. Se il traffico verso un container è alto, Kubernetes è in grado di caricare e distribuire il traffico di rete in modo che la distribuzione rimanga stabile. -* **Orchestrazione dello stoccaggio** -Kubernetes vi permette di montare automaticamente un sistema di archiviazione di vostra scelta, come per esempio memoria locale, fornitori di cloud pubblici, e altro ancora. +* **Scoperta dei servizi e bilanciamento del carico** +Kubernetes può esporre un container usando un nome DNS o il suo indirizzo IP. Se il traffico verso un container è alto, Kubernetes è in grado di distribuire il traffico su più container in modo che il servizio rimanga stabile. +* **Orchestrazione dello storage** +Kubernetes ti permette di montare automaticamente un sistema di archiviazione di vostra scelta, come per esempio storage locale, dischi forniti da cloud pubblici, e altro ancora. * **Rollout e rollback automatizzati** -È possibile descrivere lo stato desiderato per i propri contenitori distribuiti utilizzando Kubernetes, e si può cambiare lo stato da quello attuale a quello desiderato ad una velocità stabilita e controllata. Per esempio, potete automatizzare Kubernetes per creare nuovi container per la vostra distribuzione, rimuovere i container esistenti e adottare tutte le loro risorse nel nuovo container. -* **Packing automatico dei file bin** -Kubernetes permette di specificare quanta CPU e memoria (RAM) ha bisogno ogni container. Quando i container dispongono di richieste di risorse specifiche, Kubernetes può prendere decisioni migliori per gestire le risorse per i container. -* **Auto risoluzione** -Kubernetes riavvia i container che si bloccano, sostituisce i container, termina i container che non rispondono al controllo di salute definito dall'utente, e non li distribuisce ai clienti finché non sono pronti per funzionare correttamente.. +Puoi utilizzare Kubernetes per descrivere lo stato desiderato per i propri container, e Kubernetes si occuperà di cambiare lo stato attuale per raggiungere quello desiderato ad una velocità controllata. Per esempio, puoi automatizzare Kubernetes per creare nuovi container per il tuo servizio, rimuovere i container esistenti e adattare le loro risorse a quelle richieste dal nuovo container. +* **Ottimizzazione dei carichi** +Fornisci a Kubernetes un cluster di nodi per eseguire i container. Puoi istruire Kubernetes su quanta CPU e memoria (RAM) ha bisogno ogni singolo container. Kubernetes allocherà i container sui nodi per massimizzare l'uso delle risorse a disposizione. +* **Self-healing** +Kubernetes riavvia i container che si bloccano, sostituisce container, termina i container che non rispondono agli health checks, e evita di far arrivare traffico ai container che non sono ancora pronti per rispondere correttamente. * **Gestione di informazioni sensibili e della configurazione** -Kubernetes consente di memorizzare e gestire informazioni sensibili, come le password, i token OAuth e le chiavi ssh. È possibile distribuire e aggiornare i segreti e la configurazione dell'applicazione senza dover ricostruire le immagini del container e senza rivelare segreti nella configurazione della pila. +Kubernetes consente di memorizzare e gestire informazioni sensibili, come le password, i token OAuth e le chiavi SSH. Puoi distribuire e aggiornare le informazioni sensibili e la configurazione dell'applicazione senza dover ricostruire le immagini dei container e senza svelare le informazioni sensibili nella configurazione del tuo sistema. ## Cosa non è Kubernetes -Kubernetes non è un sistema PaaS (Platform as a Service) tradizionale e completo. Dal momento che Kubernetes opera a livello di contenitore piuttosto che a livello hardware, esso fornisce alcune caratteristiche generalmente applicabili comuni alle offerte PaaS, come la distribuzione, il ridimensionamento, il bilanciamento del carico, la registrazione e il monitoraggio. Tuttavia, Kubernetes non è monolitico, e queste soluzioni predefinite sono opzionali e collegabili. Kubernetes fornisce gli elementi costitutivi per la costruzione di piattaforme di sviluppo, ma conserva la scelta e la flessibilità dell'utente dove è importante. +Kubernetes non è un sistema PaaS (Platform as a Service) tradizionale e completo. Dal momento che Kubernetes opera a livello di container piuttosto che che a livello hardware, esso fornisce alcune caratteristiche generalmente disponibili nelle offerte PaaS, come la distribuzione, il ridimensionamento, il bilanciamento del carico, la registrazione e il monitoraggio. Tuttavia, Kubernetes non è monolitico, e queste soluzioni predefinite sono opzionali ed estensibili. Kubernetes fornisce gli elementi base per la costruzione di piattaforme di sviluppo, ma conserva le scelte dell'utente e la flessibilità dove è importante. Kubernetes: -* Non limita i tipi di applicazioni supportate. Kubernetes mira a supportare una grande varietà di carichi di lavoro, compresi i carichi di lavoro senza stato, stateful e di elaborazione dati. Se un'applicazione può essere eseguita in un container, dovrebbe funzionare alla grande anche su Kubernetes. -* Non distribuisce il codice sorgente e non costruisce la vostra applicazione. I flussi di lavoro Continuous Integration, Delivery, and Deployment (CI/CD) sono determinati dalle culture e preferenze dell'organizzazione e dai requisiti tecnici. -* Non fornisce servizi a livello applicativo, come middleware (per esempio, bus di messaggi), framework di elaborazione dati (per esempio, Spark), database (per esempio, mysql), cache, né sistemi di archiviazione cluster (per esempio, Ceph) come servizi integrati. Tali componenti possono essere eseguiti su Kubernetes, e/o possono essere richiamati da applicazioni che girano su Kubernetes attraverso meccanismi portatili, come l'Open Service Broker. -* Non impone soluzioni di logging, monitoraggio o di allarme. Fornisce alcune integrazioni come test di un concetto, e meccanismi per raccogliere ed esportare le metriche. -* Non fornisce né rende obbligatorio un linguaggio/sistema di configurazione (per esempio, jsonnet). Fornisce un'API dichiarativa che può essere presa di mira da forme arbitrarie di specifiche dichiarative. -* Non fornisce né adotta alcuna configurazione completa della macchina, manutenzione, gestione o sistemi di autoguarigione. -* Inoltre, Kubernetes non è un semplice sistema di orchestrazione. Infatti, questo sistema elimina la necessità di orchestrazione. La definizione tecnica di orchestrazione è l'esecuzione di un flusso di lavoro definito: prima si fa A, poi B, poi C. Al contrario, Kubernetes è composto da un insieme di processi di controllo indipendenti e componibili che guidano costantemente lo stato attuale verso lo stato desiderato. Non dovrebbe importare come si passa dalla A alla C. Anche il controllo centralizzato non è richiesto. Questo si traduce in un sistema più facile da usare e più potente, robusto, resiliente ed estensibile. +* Non limita i tipi di applicazioni supportate. Kubernetes mira a supportare una grande varietà di carichi di lavoro, compresi i carichi di lavoro stateless, stateful e elaborazione di dati. Se un'applicazione può essere eseguita in un container, dovrebbe funzionare alla grande anche su Kubernetes. +* Non compila il codice sorgente e non crea i container. I flussi di Continuous Integration, Delivery, and Deployment (CI/CD) sono determinati dalla cultura e dalle preferenze dell'organizzazione e dai requisiti tecnici. +* Non fornisce servizi a livello applicativo, come middleware (per esempio, bus di messaggi), framework di elaborazione dati (per esempio, Spark), database (per esempio, mysql), cache, né sistemi di storage distribuito (per esempio, Ceph) come servizi integrati. Tali componenti possono essere eseguiti su Kubernetes, e/o possono essere richiamati da applicazioni che girano su Kubernetes attraverso meccanismi come l'[Open Service Broker](https://openservicebrokerapi.org/). +* Non impone soluzioni di logging, monitoraggio o di gestione degli alert. Fornisce alcune integrazioni come dimostrazione, e meccanismi per raccogliere ed esportare le metriche. +* Non fornisce né rende obbligatorio un linguaggio/sistema di configurazione (per esempio, Jsonnet). Fornisce un'API dichiarativa che può essere richiamata da qualsiasi sistema. +* Non fornisce né adotta alcun sistema di gestione completa della macchina, configurazione, manutenzione, gestione o sistemi di self healing. +* Inoltre, Kubernetes non è un semplice sistema di orchestrazione. Infatti, questo sistema elimina la necessità di orchestrazione. La definizione tecnica di orchestrazione è l'esecuzione di un flusso di lavoro definito: prima si fa A, poi B, poi C. Al contrario, Kubernetes è composto da un insieme di processi di controllo indipendenti e componibili che guidano costantemente lo stato attuale verso lo stato desiderato. Non dovrebbe importare come si passa dalla A alla C. Anche il controllo centralizzato non è richiesto. Questo si traduce in un sistema più facile da usare, più potente, robusto, resiliente ed estensibile. {{% /capture %}} {{% capture whatsnext %}} -* Dai un'occhiata alla pagina [Le Componenti di Kubernetes](/docs/concepts/overview/components/) +* Dai un'occhiata alla pagina [i componenti di Kubernetes](/docs/concepts/overview/components/) * Sai già [Come Iniziare](/docs/setup/)? {{% /capture %}} From 04aa3aade6dba32ae1f3768d3c836f46cb0b040c Mon Sep 17 00:00:00 2001 From: Fabio Alessandro Locati Date: Sun, 5 Apr 2020 10:51:58 +0200 Subject: [PATCH 018/244] reimport from https://raw.githubusercontent.com/cncf/foundation/master/code-of-conduct-languages/it.md --- .../community/static/cncf-code-of-conduct.md | 50 ++++++------------- 1 file changed, 16 insertions(+), 34 deletions(-) diff --git a/content/it/community/static/cncf-code-of-conduct.md b/content/it/community/static/cncf-code-of-conduct.md index 3ee025ba34..0622b9edab 100644 --- a/content/it/community/static/cncf-code-of-conduct.md +++ b/content/it/community/static/cncf-code-of-conduct.md @@ -1,46 +1,28 @@ -## CNCF Community Code of Conduct v1.0 +## CNCF Codice di condotta comunitaria v1.0 -### Contributor Code of Conduct +### Codice di condotta dei collaboratori -As contributors and maintainers of this project, and in the interest of fostering -an open and welcoming community, we pledge to respect all people who contribute -through reporting issues, posting feature requests, updating documentation, -submitting pull requests or patches, and other activities. +Come collaboratori e responsabili di questo progetto, per creare un ambiente accogliente e aperto, ci impegniamo a rispettare tutte le persone che contribuiranno a segnalare dei problemi, condividendo richieste, aggiornando la documentazione, inviando richieste o patch e altre attività. -We are committed to making participation in this project a harassment-free experience for -everyone, regardless of level of experience, gender, gender identity and expression, -sexual orientation, disability, personal appearance, body size, race, ethnicity, age, -religion, or nationality. +Ci impegniamo a far si che la partecipazione ai progetti CNCF sia un’esperienza senza alcun tipo di molestia, indipendentemente dal livello di esperienza, genere, espressione, orientamento sessuale, disabilità, apparenza fisica, taglia, razza, etnia, età, religione o nazionalità. -Examples of unacceptable behavior by participants include: +Esempi di comportamenti inaccettabili includono: -* The use of sexualized language or imagery -* Personal attacks -* Trolling or insulting/derogatory comments -* Public or private harassment -* Publishing other's private information, such as physical or electronic addresses, - without explicit permission -* Other unethical or unprofessional conduct. +- Uso di linguaggio o immagini volgari +- Attacchi personali +- Trolling o commenti dispregiativi +- Molestie privato o pubbliche +- Pubblicazione di informazioni personali, come indirizzi di posta elettronica o indirizzi di residenza, senza permesso esplicito +- Altri tipi di condotta non etica o non professionale -Project maintainers have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are not -aligned to this Code of Conduct. By adopting this Code of Conduct, project maintainers -commit themselves to fairly and consistently applying these principles to every aspect -of managing this project. Project maintainers who do not follow or enforce the Code of -Conduct may be permanently removed from the project team. +I responsabili di progetto hanno il diritto e la responsabilità di rimuovere, modificare o respingere commenti, aggressioni, codice, wiki edit, reclami e altri contributi che non siano allineati con questo codice di condotta. Adottando il codice di condotta, i responsabili del progetto si impegnano ad applicare questi principi in prima persona e a ogni aspetto della gestione del progetto. I responsabili che non seguiranno o non faranno rispettare il codice di condotta saranno rimossi dal team. Questo codice di condotta verrà applicato a chiunque contribuisca o rappresenti un progetto o la sua comunità in pubblico. -This code of conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. +Casi di comportamenti abusivi, molestie o altri comportamenti inaccettabili in Kubernetes potranno essere denunciati contattando [Il comitato del codice di condotta Kubernetes (CNCF)](https://git.k8s.io/community/committee-code-of-conduct) attraverso . Per altri progetti, contattare il Project manager del CNCF o il nostro mediatore, Mishi Choudhary . -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting -the [Kubernetes Code of Conduct Committee](https://github.com/kubernetes/community/tree/master/committee-code-of-conduct) . +Il codice di condotta è stato adattato dal Contributor Covenant (http://contributor-covenant.org), versione 1.2.0, disponibile su http://contributor-covenant.org/version/1/2/0/ -This Code of Conduct is adapted from the Contributor Covenant -(http://contributor-covenant.org), version 1.2.0, available at -http://contributor-covenant.org/version/1/2/0/ +### CNCF Codice di condotta negli eventi -### CNCF Events Code of Conduct - -CNCF events are governed by the Linux Foundation [Code of Conduct](http://events.linuxfoundation.org/events/cloudnativecon/attend/code-of-conduct) available on the event page. This is designed to be compatible with the above policy and also includes more details on responding to incidents. +Gli eventi CNCF sono gestiti da Linux Foundation Codice di Condotta disponibile sulla pagina dell'evento. Questo è compatibile con quanto descritto sopra e include maggiori dettagli sulla gestione degli incidenti. From 288e68d45bbc3c64327d6d57b0475c7ed69af252 Mon Sep 17 00:00:00 2001 From: Fabio Alessandro Locati Date: Sun, 5 Apr 2020 15:38:46 +0200 Subject: [PATCH 019/244] Align meaning to English version --- content/it/includes/federation-deprecation-warning-note.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/content/it/includes/federation-deprecation-warning-note.md b/content/it/includes/federation-deprecation-warning-note.md index 2d53cdaaf1..d0783ecdab 100644 --- a/content/it/includes/federation-deprecation-warning-note.md +++ b/content/it/includes/federation-deprecation-warning-note.md @@ -1,5 +1,3 @@ -L'uso di `Federation v1` è fortemente sconsigliato. `Federation V1` ha ormai raggiunto lo stato GA e non è più in -fase di sviluppo attivo. La documentazione è solo per scopi storici. +L'uso di `Federation v1` è fortemente sconsigliato. `Federation V1` non ha mai raggiunto lo stato GA e non è più in fase di sviluppo attivo. La documentazione è solo per scopi storici. -Per ulteriori informazioni, il seguente link -[Kubernetes Federation v2](https://github.com/kubernetes-sigs/federation-v2). +Per ulteriori informazioni, vedi la documentazione per il suo successore [Kubernetes Federation v2](https://github.com/kubernetes-sigs/federation-v2). From 63386bebe81aaeb17cad8694eab537433b261f60 Mon Sep 17 00:00:00 2001 From: Fabio Alessandro Locati Date: Sun, 5 Apr 2020 15:32:51 +0200 Subject: [PATCH 020/244] Improve italian form --- content/it/partners/_index.html | 128 +++++--------------------------- 1 file changed, 18 insertions(+), 110 deletions(-) diff --git a/content/it/partners/_index.html b/content/it/partners/_index.html index 44fbb05a49..5a6e187777 100644 --- a/content/it/partners/_index.html +++ b/content/it/partners/_index.html @@ -1,135 +1,43 @@ --- -draft: True -title: Partners -bigheader: Kubernetes Partners -abstract: Growing the Kubernetes ecosystem. +title: Partner +bigheader: I partner di Kubernetes +abstract: Far crescere l'ecosistema di Kubernetes. class: gridPage cid: partners ---
-
-
Kubernetes collabora con i partner per creare una base di codice forte e vivace che supporti uno spettro di piattaforme complementari.
-
-
-
- - -
-
-
Kubernetes lavora in collaborazione con diversi partner al fine di creare un codice dalla base forte e dinamica che supporti uno spettro di piattaforme complementari.
+
+
Kubernetes collabora con i partner per creare per creare un codebase che supporti uno spettro di piattaforme complementari.
- Fornitori di Servizi Certificati Kubernetes + Fornitori Certificati di Servizi su Kubernetes
-
Fornitori di servizi controllati con grande esperienza nell'aiutare le imprese ad adottare con successo Kubernetes. +
Fornitori di servizi con grande esperienza nell'aiutare le imprese ad adottare con successo Kubernetes.


- -

Interessato a diventare partner KCSP? + +

Interessato a diventare un partner KCSP?
- Distribuzioni Kubernetes Certificate, Piattaforme Hosted e Installers -
La conformità del software assicura che la versione di Kubernetes di ogni fornitore supporti le API richieste. + Distribuzioni di Kubernetes Certificate, Certified Hosted Platforms and Software di installazione Certificati + La conformità del software assicura che la versione di Kubernetes di ogni fornitore supporti le API necessarie.


- -

Interessato a diventare partner Certificati Kubernetes? + +

Interessato a diventare un partner certificato Kubernetes?
-
Partner per la Formazione Kubernetes
-
Professionisti esperti e certificati, con solida esperienza nella formazione tecnologica Cloud Native. - -

Interessato a diventare partner KTP? -
-
-
- - - -
- - -
- -
-
- - - - -> - Fornitori di servizi certificati Kubernetes - -
Fornitori di servizi con una grande esperienza nell'aiutare le imprese ad adottare con successo Kubernetes. -


- -

Interessato a diventare un KCSP? -
-
-
-
-
- Distribuzioni certificate di Kubernetes, piattaforme hosted e installer -
La conformità del software garantisce che la versione di Kubernetes di ogni fornitore supporti le API richieste. -


- -

Interessato a diventare un Certificato Kubernetes? -
-
-
-
-
Partner di formazione di Kubernetes
-
Fornitori di formazione con esperienza che hanno una profonda esperienza nella formazione della tecnologia cloud nativa. +
Partner per la Formazione su Kubernetes
+
Professionisti esperti e certificati, con solida esperienza nella formazione su tecnologie Cloud Native.



- -

Interessato a diventare un KTP? + +

Interessato a diventare un partner KTP?
@@ -167,7 +75,7 @@ cid: partners
- +
From a6d784b2e1c1877d6458db453d68efe4f380655f Mon Sep 17 00:00:00 2001 From: Fabio Alessandro Locati Date: Sat, 4 Apr 2020 18:19:32 +0200 Subject: [PATCH 021/244] Align community page with English version --- content/it/community/_index.html | 288 ++++++++++++++++++++++++------- 1 file changed, 228 insertions(+), 60 deletions(-) diff --git a/content/it/community/_index.html b/content/it/community/_index.html index 3e46649c0c..779153bd67 100644 --- a/content/it/community/_index.html +++ b/content/it/community/_index.html @@ -1,69 +1,237 @@ --- -title: Community +title: Comunità layout: basic cid: community --- -
-
-
-

Garantire che Kubernetes funzioni bene ovunque e per tutti.

-

Connettersi con la comunità Kubernetes sul nostro canale di Slack, forum di discussione, o unisciti al - Kubernetes-dev Google group. Una riunione settimanale - della comunità avviene tramite videoconferenza per discutere lo stato delle cose, vedi - queste istruzioni per informazioni -su come partecipare

-

Puoi anche unirti a Kubernetes in tutto il mondo attraverso il nostro - Kubernetes Meetup Community e - Kubernetes Cloud Native Meetup Community.

-
-
-

Special Interest Groups (SIGs)

-

hai un interesse particolare nel modo in cui Kubernetes funziona con un'altra tecnologia? Guarda la nostra crescita - lista dei SIG, - da AWS e Openstack a Big Data e Scalabilità, c'è un posto per te per contribuire e istruzioni - puoi creare un nuovo SIG di tuo interesse se non e presente(ancora).

+
+
+ Immagine di una conferenza Kubernetes + Immagine di una conferenza Kubernetes +
-

Come membro della comunità di Kubernetes, puoi partecipare a qualsiasi riunione SIG - a cui sei interessato. Non è richiesta alcuna registrazione.

+
+
+

La comunità di Kubernetes - cioè gli utenti, i contributors e la cultura che abbiamo costruito tutti assieme - è una dei maggiori motivi della crescita esponenziale di questo progetto open-source. La nostra cultura e i nostri valori continuano a rafforzarsi con il progetto stesso. Lavoriamo tutti assieme per il miglioramento costante del progetto e degli strumenti di lavoro correlati. +

Noi siamo le persone che aprono gli issue, le pull request, che partecipano alle riunioni delle SIG, ai meetup di Kubernetes, alle KubeCon, che promuoviamo l'innovazione e l'adozione di Kubernetes, che eseguiamo kubectl get pods, e che contribuiamo in moltissimi altri modi egualmente vitali al progetto. Vai avanti a leggere per scoprire come essere coinvolto in queste attività e diventare parte di questa meravigliosa comunità.

+
+
-
+
-
+Codice di Condotta      +Video      +Discussioni      +Eventi e meetups      +Notizie -
-
-

Parla con noi!

-

Ci piacerebbe sapere da te, come stai usando Kubernetes,
e cosa possiamo fare per renderlo migliore.

-
-
- @kubernetesio -

Ricevi le ultime notizie e aggiornamenti.

-
-
- GitHub Project -

Guarda il progetto e considera di contribuire

-
-
- #kubernetes-users -

Il nostro canale Slack è il modo migliore per contattare i nostri ingegneri e condividere le tue idee con loro.

-
-
- Stack Overflow -

Il nostro forum di utenti è un ottimo posto dove andare per il supporto della comunità.

-
-
-
-
+
+

+
+
+
+ Immagine di una conferenza Kubernetes +
+ +
+ Immagine di una conferenza Kubernetes +
+ +
+ Immagine di una conferenza Kubernetes +
+ Immagine di una conferenza Kubernetes + + +
+ + + +
+
+

+

+

Codice di Condotta

+La comunità di Kubernetes valorizza il rispetto e l'inclusività, e mette il Codice di Condotta alla base di ogni iterazione. Se noti una violazione del Codice di Condotta durante une evento o un meeting, in Slack, o in qualsiasi altra comunicazione, contatta la Kubernetes Code of Conduct Committee mandando una mail a conduct@kubernetes.io. Tutte le segnalazioni sono tenute confidenziali. Puoi leggere di più sulla Kubernetes Code of Conduct Committee qui. +
+ +

+ + +LEGGI DI PIÙ + +
+
+
+
+ + + +
+

+

+

Video

+ +
Siamo molto presenti su YouTube. Iscriviti per seguire i molti argomenti che vengono trattati.
+ + +
+ + +
+

+

+

Discussioni

+ +
A noi piace parlare! Vienici a trovare e partecipa alla conversazione su una di queste piattaforme.
+ +
+ +
+Forum" + +forum ▶ + +
+Discussioni tecniche che completano la documentazione, StackOverflow, e molto altro +
+
+ +
+Twitter + +twitter ▶ + +
+Annunci di nuovi blog post, eventi, notizie e idee in tempo reale +
+
+ +
+GitHub + +github ▶ + +
+Tracciamento di tutti i progetti e issue, e ovviante il codice stesso +
+
+ +
+Stack Overflow + +stack overflow ▶ + +
+ Supporto tecnico per ogni caso di utilizzo + +
+
+ + + +
+
+
+

+

+
+

Eventi futuri

+ {{< upcoming-events >}} +
+
+ +
+
+
+

Comunità globale

+Con oltre 150 meetup in tutto il mondo in continua crescita, trova le persone della comunità che sono vicine a te. Se non ci sono eventi vicini a te, organizzane uno tu! +
+ +
+TROVA UN MEETUP +
+
+ +
+
+ + + + +
+

+

+

Notizie Recenti

+ +
+ + +
+



+
+ +
From 363b46853bac3466dee43c6c1b5292eebc78634f Mon Sep 17 00:00:00 2001 From: Fabio Alessandro Locati Date: Mon, 6 Apr 2020 22:36:23 +0200 Subject: [PATCH 022/244] Translate training/_index.md to Italian --- content/it/training/_index.html | 118 ++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 content/it/training/_index.html diff --git a/content/it/training/_index.html b/content/it/training/_index.html new file mode 100644 index 0000000000..6639752f19 --- /dev/null +++ b/content/it/training/_index.html @@ -0,0 +1,118 @@ +--- +title: Formazione +bigheader: Formazione e Certificazioni Kubernetes +abstract: Programmi di formazioni, certificazioni e partner. +layout: basic +cid: training +class: training +--- + +
+
+
+
+ +
+
+ +
+
+

Costruisci la tua carriera nel mondo Cloud Native

+

Kubernetes è il fondamento del mondo Cloud Native. La formazione e le certificazioni della The Linux Foundation e dei nostri partner ti permettono di investire nella tua carriera, imparare Kubernetes, e aver successo nei tuoi progetti Cloud Native.

+
+
+
+
+ +
+
+
+

Fai un corso gratuito su edX

+
+
+
+
+
+ Introduzione a Kubernetes
 
+
+

Vuoi imparare Kubernetes? Ottieni delle solide fondamenta su questo potente sistema di gestione di applicazioni containerizzate.

+
+ Vai al corso +
+
+
+
+
+ Introduzione alle tecnologie infrastrutturali della Cloud +
+

Impara le basi per creare e gestire tecnologie cloud direttamente dalla The Linux Foundation, il leader nel mondo open source.

+
+ Vai al corso +
+
+
+
+
+ Introduzione a Linux +
+

Non hai mai imparato Linux? Hai bisogno di un ripasso? Sviluppa una buona conoscenza delle varie famiglie di distribuzioni Linux usando sia l'interfaccia grafica che la linea di comando.

+
+ Vai al corso +
+
+
+
+ +
+
+
+

Impara con la The Linux Foundation

+

La The Linux Foundation offre corsi con un formatore e corsi da fare in autonomia relativi allo sviluppo di applicativi per Kubernetes e per la sua gestione.

+

+ Vedi i corsi +
+
+
+ +
+
+
+

Certificati Kubernetes

+
+
+
+
+
+ Certified Kubernetes Application Developer (CKAD) +
+

L'esame "Certified Kubernetes Application Developer" certifica che la persona è in grado di progettare, costruire, configurare, ed esporre un applicativo Cloud Native su Kubernetes.

+
+ Vai alla certificazione +
+
+
+
+
+ Certified Kubernetes Administrator (CKA) +
+

Il programma "Certified Kubernetes Administrator" assicura che la persona ha le capacità, conoscenze, e competenze per operare come amministratore di Kubernets.

+
+ Vai alla certificazione +
+
+
+
+
+ +
+
+
+

Partner per la formazione Kubernetes

+

La nostra rete di Kubernetes Training Partners fornisce servizi di formazione su Kubernetes e sui progetti Cloud Native.

+
+
+
+ + +
+
From 5a9c41c8c305867dc24f1779115b4f1637165035 Mon Sep 17 00:00:00 2001 From: Fabio Alessandro Locati Date: Mon, 6 Apr 2020 22:46:17 +0200 Subject: [PATCH 023/244] align Italian with current English version --- i18n/it.toml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/i18n/it.toml b/i18n/it.toml index 597fd1c2ae..5e1f29898c 100644 --- a/i18n/it.toml +++ b/i18n/it.toml @@ -28,6 +28,12 @@ other = "Twitter" [community_youtube_name] other = "YouTube" +[deprecation_warning] +other = " documentazione non è più manutenuta. La versione che stai visualizzando in questo momento è archiviata. Per una versione aggiornata, guarda " + +[deprecation_file_warning] +other = "Deprecata" + [docs_label_browse] other = "Sfoglia documenti" @@ -52,6 +58,9 @@ other = "Questa pagina è stata di aiuto?" [feedback_yes] other = "Sì" +[input_placeholder_email_address] +other = "indirizzo email" + [latest_version] other = "ultima versione." From 741362495a05e1fb7cdfc25ec49085df77e7c3aa Mon Sep 17 00:00:00 2001 From: Arhell Date: Wed, 8 Apr 2020 18:32:21 +0300 Subject: [PATCH 024/244] fixed footer text that goes beyond the screen --- assets/sass/_base.sass | 1 + 1 file changed, 1 insertion(+) diff --git a/assets/sass/_base.sass b/assets/sass/_base.sass index c59d20c346..e32e285ad0 100644 --- a/assets/sass/_base.sass +++ b/assets/sass/_base.sass @@ -439,6 +439,7 @@ footer width: 100% background-image: url(/images/texture.png) background-color: $dark-grey + overflow-x: hidden .main-section padding: 20px 0 From 26aa0d7e9b75d27b8982a7954659d8bce75b4e00 Mon Sep 17 00:00:00 2001 From: Radoslaw Smigielski Date: Wed, 8 Apr 2020 22:15:28 +0100 Subject: [PATCH 025/244] Make build of kubernetes-hugo image more reliable Switch from default Docker bridge network to host network. --- Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 56359bd32b..75d37f767d 100644 --- a/Makefile +++ b/Makefile @@ -36,7 +36,10 @@ serve: ## Boot the development server. hugo server --buildFuture docker-image: - $(DOCKER) build . --tag $(DOCKER_IMAGE) --build-arg HUGO_VERSION=$(HUGO_VERSION) + $(DOCKER) build . \ + --network=host \ + --tag $(DOCKER_IMAGE) \ + --build-arg HUGO_VERSION=$(HUGO_VERSION) docker-build: $(DOCKER_RUN) $(DOCKER_IMAGE) hugo From 33faa53ba407d326952572f771359166e6f85716 Mon Sep 17 00:00:00 2001 From: Fabio Alessandro Locati Date: Sun, 22 Mar 2020 18:00:26 +0100 Subject: [PATCH 026/244] Translate the homepage to Italian --- content/it/_index.html | 98 +++++++++++++++++++----------------------- 1 file changed, 45 insertions(+), 53 deletions(-) diff --git a/content/it/_index.html b/content/it/_index.html index e3b848693f..b90f016777 100644 --- a/content/it/_index.html +++ b/content/it/_index.html @@ -1,71 +1,63 @@ --- -draft: True -title: Panoramica sull'amministrazione del cluster -content_template: templates/concept -weight: 10 +title: "Orchestrazione di Container in produzione" +abstract: "Deployment, scalabilità, e gestione di container automatizzata" +cid: home --- +{{< announcement >}} -{{% capture overview %}} -La panoramica dell'amministrazione del cluster è per chiunque crei o gestisca un cluster Kubernetes. -Presuppone una certa dimestichezza con i core Kubernetes [concetti](/docs/concepts/). -{{% /capture %}} +{{< deprecationwarning >}} -{{% capture body %}} -## Progettare un cluster +{{< blocks/section id="oceanNodes" >}} +{{% blocks/feature image="flower" %}} +### [Kubernetes (K8s)]({{< relref "/docs/concepts/overview/what-is-kubernetes" >}}) è un software open-source per l'automazione del deployment, scalabilità, e gestione di applicativi in containers. -Consulta le guide di [Setup](/docs/setup) per avere degli esempi su come pianificare, impostare e configurare cluster Kubernetes. Le soluzioni elencate in questo articolo sono chiamate *distribuzioni*. +K8s raggruppa i containers che compongono gli applicativi in unità logiche per semplificare la gestione e la visibilità. Kubernetes si basa su [15 anni di esperienza di esecuzione di workload in produzione presso Google](http://queue.acm.org/detail.cfm?id=2898444), combinata con le migliori idee e pratiche dalla community. +{{% /blocks/feature %}} -Prima di scegliere una guida, ecco alcune considerazioni: +{{% blocks/feature image="scalable" %}} +#### Scala planetaria - - Vuoi provare Kubernetes sul tuo computer o vuoi creare un cluster multi-nodo ad alta disponibilità? Scegli la distro che più si adatti alle tue esigenze. - - **Se si sta progettando per l'alta disponibilità**, impara a configurare [cluster in più zone](/docs/concepts/cluster-administration/federation/). - - Utilizzerai **un cluster di Kubernetes ospitato**, come [Motore di Google Kubernetes](https://cloud.google.com/kubernetes-engine/) o **che ospita il tuo cluster**? - - Il tuo cluster sarà **on-premises** o **nel cloud (IaaS)**? Kubernetes non supporta direttamente i cluster ibridi. Invece, puoi impostare più cluster. - - **Se stai configurando Kubernetes on-premises**, considera quale [modello di rete](/docs/concepts/cluster-administration/networking/) si adatti meglio. - - Eseguirai Kubernetes su **hardware "bare metal"** o su **macchine virtuali (VM)**? - - Vuoi **solo eseguire un cluster**, oppure ti aspetti di fare **lo sviluppo attivo del codice del progetto di Kubernetes**? - In quest'ultimo caso, scegli una distribuzione sviluppata attivamente. Alcune distribuzioni utilizzano solo versioni binarie, ma offrono una maggiore varietà di scelte - - Familiarizzare con i [componenti](/docs/admin/cluster-components/) necessari per eseguire un cluster. +Kubernetes può scalare senza un aumento di lavoro per il tuo team, grazie al fatto che è stato progettato sugli stessi principi che permettono a Google di eseguire miliardi di container per settimana. -Nota: non tutte le distro vengono mantenute attivamente. Scegli le distro che sono state testate con una versione recente di Kubernetes. +{{% /blocks/feature %}} -## Managing a cluster +{{% blocks/feature image="blocks" %}} +#### Mai limitante -* [Gestione di un cluster](/docs/tasks/administration-cluster/cluster-management/) descrive diversi argomenti relativi al ciclo di vita di un cluster: creazione di un nuovo cluster, aggiornamento dei nodi master e worker del cluster, esecuzione della manutenzione del nodo (ad esempio kernel aggiornamenti) e aggiornamento della versione dell'API di Kubernetes di un cluster in esecuzione. +Che tu stia facendo dei test locali o supportando una azienda globale, la flessibilità di Kubernetes ti permette di eseguire le tue applicazioni coerentemente e facilmente, indipendentemente dalla complessità delle tue esigenze. -* Scopri come [gestire i nodi](/docs/concepts/nodi/node/). +{{% /blocks/feature %}} -* Scopri come impostare e gestire la [quota di risorse](/docs/concepts/policy/resource-quote/) per i cluster condivisi. +{{% blocks/feature image="suitcase" %}} +#### Esegui ovunque -## Proteggere un cluster +Kubernetes è open source, e ti offre la libertà di spostare i tuoi carichi di lavoro senza fatica tra ambienti on-premises, ibridi, e cloud pubblici. -* [Certificati](/docs/concepts/cluster-administration/certificates/) descrive i passaggi per generare certificati utilizzando diverse catene di strumenti. +{{% /blocks/feature %}} -* [Kubernetes Container Environment](/docs/concepts/containers/container-environment-variables/) descrive l'ambiente per i contenitori gestiti Kubelet su un nodo Kubernetes. +{{< /blocks/section >}} -* [Controllo dell'accesso all'API di Kubernetes](/docs/reference/access-authn-authz/controlling-access/) descrive come impostare le autorizzazioni per gli utenti e gli account di servizio. +{{< blocks/section id="video" background-image="kub_video_banner_homepage" >}} +
+

La sfida di migrare 150+ Microservizi su Kubernetes

+

Di Sarah Wells, Technical Director for Operations and Reliability, Financial Times

+ +
+
+
+ Partecipa alla KubeCon ad Amsterdam (13-16 Agosto 2020) +
+
+
+
+ Partecipa alla KubeCon a Boston (17-20 Novembre 2020) +
+
+ + +
+{{< /blocks/section >}} -* [Autenticazione](/docs/reference/access-authn-authz/authentication/) spiega l'autenticazione in Kubernetes, incluse le varie opzioni di autenticazione. - -* [Autorizzazione](/docs/reference/access-authn-authz/authorization/) è separato dall'autenticazione e controlla come vengono gestite le chiamate HTTP. - -* [Utilizzo dei controller di ammissione](/docs/reference/access-authn-authz/admission-controller/) spiega i plug-in che intercettano le richieste al server API Kubernetes dopo l'autenticazione e l'autorizzazione. - -* [Uso di Sysctls in un cluster Kubernetes](/docs/concepts/cluster-administration/sysctl-cluster/) descrive a un amministratore come utilizzare lo strumento da riga di comando `sysctl` per impostare i parametri del kernel. - -* [Controllo](/docs/tasks/debug-application-cluster/audit/) descrive come interagire con i log di controllo di Kubernetes. - - -### Securing the kubelet - * [Master-Node communication](/docs/concepts/architecture/master-node-communication/) - * [TLS bootstrapping](/docs/reference/command-line-tools-reference/kubelet-tls-bootstrapping/) - * [Kubelet authentication/authorization](/docs/admin/kubelet-authentication-authorization/) - -## Optional Cluster Services - -* [Integrazione DNS](/docs/concepts/services-networking/dns-pod-service/) descrive come risolvere un nome DNS direttamente su un servizio Kubernetes. - -* [Registrazione e monitoraggio delle attività del cluster](/docs/concepts/cluster-administration/logging/) spiega come funziona il logging in Kubernetes e come implementarlo. - -{{% /capture %}} +{{< blocks/kubernetes-features >}} +{{< blocks/case-studies >}} From 0cdf468e5fd88be7f022f4ebdfc25714a22af48d Mon Sep 17 00:00:00 2001 From: Fabio Alessandro Locati Date: Sat, 11 Apr 2020 15:49:58 +0200 Subject: [PATCH 027/244] align community with branched English version --- content/it/community/_index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/it/community/_index.html b/content/it/community/_index.html index 779153bd67..1da64c4b0e 100644 --- a/content/it/community/_index.html +++ b/content/it/community/_index.html @@ -6,8 +6,8 @@ cid: community
- Immagine di una conferenza Kubernetes - Immagine di una conferenza Kubernetes + Immagine di una conferenza Kubernetes + Immagine di una conferenza Kubernetes
From 09035dda97cb30918bad9c33c7636fe7246b5e1a Mon Sep 17 00:00:00 2001 From: Fabio Alessandro Locati Date: Sat, 11 Apr 2020 15:58:42 +0200 Subject: [PATCH 028/244] Align with English version --- content/it/docs/concepts/overview/what-is-kubernetes.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/content/it/docs/concepts/overview/what-is-kubernetes.md b/content/it/docs/concepts/overview/what-is-kubernetes.md index 5c717c0ad9..399b31da9c 100644 --- a/content/it/docs/concepts/overview/what-is-kubernetes.md +++ b/content/it/docs/concepts/overview/what-is-kubernetes.md @@ -1,5 +1,7 @@ --- -title: Cos'è Kubernetes +title: Cos'è Kubernetes? +description: > + Kubernetes è una piattaforma portatile, estensibile e open-source per la gestione di carichi di lavoro e servizi containerizzati, in grado di facilitare sia la configurazione dichiarativa che l'automazione. La piattaforma vanta un grande ecosistema in rapida crescita. Servizi, supporto e strumenti sono ampiamente disponibili nel mondo Kubernetes . content_template: templates/concept weight: 10 card: @@ -14,7 +16,7 @@ Questa pagina è una panoramica generale su Kubernetes. {{% capture body %}} Kubernetes è una piattaforma portatile, estensibile e open-source per la gestione di carichi di lavoro e servizi containerizzati, in grado di facilitare sia la configurazione dichiarativa che l'automazione. La piattaforma vanta un grande ecosistema in rapida crescita. Servizi, supporto e strumenti sono ampiamente disponibili nel mondo Kubernetes . -Il nome Kubernetes deriva dal greco, significa timoniere o pilota. Google ha reso open-source il progetto Kubernetes nel 2014. Kubernetes si basa su [quindici anni di esperienza di Google nella gestione di carichi di lavoro di produzione su scala mondiale](https://ai.google/research/pubs/pub43438), combinata con le migliori idee e pratiche della comunità. +Il nome Kubernetes deriva dal greco, significa timoniere o pilota. Google ha reso open-source il progetto Kubernetes nel 2014. Kubernetes unisce [oltre quindici anni di esperienza di Google nella gestione di carichi di lavoro di produzione su scala mondiale](https://ai.google/research/pubs/pub43438) con le migliori idee e pratiche della comunità. ## Facciamo un piccolo salto indietro Diamo un'occhiata alla ragione per cui Kubernetes è così utile facendo un piccolo salto indietro nel tempo. From b03aca179d868499aa499b21b71e959d9163908b Mon Sep 17 00:00:00 2001 From: Fabio Alessandro Locati Date: Sat, 11 Apr 2020 16:08:58 +0200 Subject: [PATCH 029/244] de-drafting concepts/architecture/_index.md --- content/it/docs/concepts/architecture/_index.md | 1 - 1 file changed, 1 deletion(-) diff --git a/content/it/docs/concepts/architecture/_index.md b/content/it/docs/concepts/architecture/_index.md index fb49737380..0a87c18478 100755 --- a/content/it/docs/concepts/architecture/_index.md +++ b/content/it/docs/concepts/architecture/_index.md @@ -1,5 +1,4 @@ --- -draft: True title: "Architettura di Kubernetes" weight: 30 --- From e6969775fec784797e16eed56296d42d3e399314 Mon Sep 17 00:00:00 2001 From: Fabio Alessandro Locati Date: Sun, 12 Apr 2020 12:09:11 +0200 Subject: [PATCH 030/244] De-draft docs/concepts/architecture/cloud-controller.md and align with current English version --- .../concepts/architecture/cloud-controller.md | 119 +++++++----------- 1 file changed, 48 insertions(+), 71 deletions(-) diff --git a/content/it/docs/concepts/architecture/cloud-controller.md b/content/it/docs/concepts/architecture/cloud-controller.md index e903437044..866309ce2d 100644 --- a/content/it/docs/concepts/architecture/cloud-controller.md +++ b/content/it/docs/concepts/architecture/cloud-controller.md @@ -1,5 +1,4 @@ --- -draft: True title: Concetti alla base del Cloud Controller Manager content_template: templates/concept weight: 30 @@ -7,11 +6,11 @@ weight: 30 {{% capture overview %}} -Il concetto CCM (cloud controller manager) (da non confondere con il binario) è stato originariamente creato per consentire al codice del fornitore specifico del cloud e al core Kubernetes di evolversi indipendentemente l'uno dall'altro. Il gestore del controller cloud viene eseguito insieme ad altri componenti principali come il controller controller di Kubernetes, il server API e lo scheduler. Può anche essere avviato come addon di Kubernetes, nel qual caso viene eseguito su Kubernetes. +Il concetto di CCM (cloud controller manager), da non confondere con il binario, è stato originariamente creato per consentire di sviluppare Kubernetes indipendentemente dall'implementazione dello specifico cloud provider. Il cloud controller manager viene eseguito insieme ad altri componenti principali come il Kubernetes controller manager, il server API e lo scheduler. Può anche essere avviato come addon di Kubernetes, nel qual caso viene eseguito su Kubernetes. -Il design del gestore del controller cloud è basato su un meccanismo di plug-in che consente ai nuovi provider cloud di integrarsi facilmente con Kubernetes utilizzando plug-in. Sono in atto piani per l'acquisizione a bordo di nuovi provider di cloud su Kubernetes e per la migrazione dei provider di cloud dal vecchio modello al nuovo modello CCM. +Il design del cloud controller manager è basato su un meccanismo di plug-in che consente ai nuovi provider cloud di integrarsi facilmente con Kubernetes creando un plug-in. Sono in atto programmi per l'aggiunta di nuovi provider di cloud su Kubernetes e per la migrazione dei provider che usano il vecchio metodo a questo nuovo metodo. -Questo documento discute i concetti alla base del gestore del controller cloud e fornisce dettagli sulle funzioni associate. +Questo documento discute i concetti alla base del cloud controller manager e fornisce dettagli sulle funzioni associate. Ecco l'architettura di un cluster Kubernetes senza il gestore del controller cloud: @@ -22,7 +21,7 @@ Ecco l'architettura di un cluster Kubernetes senza il gestore del controller clo {{% capture body %}} -## Design +## Architettura Nel diagramma precedente, Kubernetes e il provider cloud sono integrati attraverso diversi componenti: @@ -31,100 +30,84 @@ Nel diagramma precedente, Kubernetes e il provider cloud sono integrati attraver * Kubernetes API server -CCM consolida tutta la logica dipendente dal cloud dai tre componenti precedenti per creare un singolo punto di integrazione con il cloud. La nuova architettura con il CCM si presenta così: +Il CCM consolida tutta la logica dipendente dal cloud presente nei tre componenti precedenti, per creare un singolo punto di integrazione con il cloud. La nuova architettura con il CCM si presenta così: ![CCM Kube Arch](/images/docs/post-ccm-arch.png) -## Components of the CCM +## Componenti del CCM -CCM interrompe alcune funzionalità di Kubernetes controller manager (KCM) e lo esegue come processo separato. In particolare, elimina i controller in KCM dipendenti dal cloud. KCM ha i seguenti loop del controller dipendenti dal cloud: +Il CCM divide alcune funzionalità del Kubernetes controller manager (KCM) e le esegue in un differente processo. In particolare, toglie dal KCM le integrazioni con il cloud specifico. Il KCM ha i seguenti controller che dipendono dal cloud specifico: * Node controller * Volume controller * Route controller * Service controller -Nella versione 1.9, CCM esegue i seguenti controller dall'elenco precedente: +Nella versione 1.9, il CCM esegue i seguenti controller dall'elenco precedente: * Node controller * Route controller * Service controller -Inoltre, esegue un altro controller chiamato controller PersistentVolumeLabels. Questo controller è responsabile dell'impostazione delle etichette delle zone e delle regioni su PersistentVolumes creati nei cloud GCP e AWS. - {{< note >}} -Il controller del volume è stato deliberatamente scelto per non far parte di CCM. A causa della complessità e degli sforzi già esistenti per estrapolare la logica del volume specifica del fornitore, è stato deciso che il controller del volume non verrà spostato su CCM. +È stato deliberatamente deciso di non spostare il Volume controller nel CCM. Data la complessità del Volume controller e gli sforzi già fatti per astrarre le logiche specifiche dei singoli fornitori, è stato deciso che il Volume controller non verrà spostato nel CCM. {{< /note >}} -Il piano originale per supportare i volumi utilizzando CCM era di utilizzare i volumi Flex per supportare volumi collegabili. Tuttavia, è in programma uno sforzo concorrente noto come CSI per sostituire la logica Flex.me, è stato deciso che il controller del volume non verrà spostato su CCM. +Il piano originale per supportare i volumi utilizzando il CCM era di utilizzare [Flex](/docs/concepts/storage/volumes/#flexVolume) per supportare volumi collegabili. Tuttavia, una implementazione parallela, nota come [CSI](/docs/concepts/storage/volumes/#csi) è stata designata per sostituire Flex. -Considerando queste dinamiche, abbiamo deciso di adottare una misurazione dell'interruzione intermedia finché il CSI non è pronto. +Considerando queste evoluzioni, abbiamo deciso di adottare un approccio intermedio finché il CSI non è pronto. -## Functions of the CCM +## Funzioni del CCM -Il CCM eredita le sue funzioni da componenti di Kubernetes che dipendono da un provider di cloud. Questa sezione è strutturata in base a tali componenti. +Il CCM eredita le sue funzioni da componenti di Kubernetes che dipendono da uno specifico provider di cloud. Questa sezione è strutturata sulla base di tali componenti. ### 1. Kubernetes controller manager -La maggior parte delle funzioni del CCM è derivata dal KCM. Come menzionato nella sezione precedente, CCM esegue i seguenti cicli di controllo: +La maggior parte delle funzioni del CCM deriva dal KCM. Come menzionato nella sezione precedente, CCM esegue i seguenti cicli di controllo: * Node controller * Route controller * Service controller -* PersistentVolumeLabels controller #### Node controller -Il controller del nodo è responsabile per l'inizializzazione di un nodo ottenendo informazioni sui nodi in esecuzione nel cluster dal provider cloud. Il controller del nodo esegue le seguenti funzioni: +Il Node controller è responsabile per l'inizializzazione di un nodo ottenendo informazioni sui nodi in esecuzione nel cluster dal provider cloud. Il controller del nodo esegue le seguenti funzioni: -1. Inizializzare un nodo con etichette zona / regione specifiche per il cloud. -2. Inizializzare un nodo con dettagli di istanza specifici del cloud, ad esempio, tipo e dimensione. -3. Ottenere gli indirizzi di rete del nodo e il nome host. +1. Inizializzare un nodo con le label zone/region specifiche per il cloud in uso. +2. Inizializzare un nodo con le specifiche, ad esempio, tipo e dimensione specifiche del cloud in uso. +3. Ottenere gli indirizzi di rete del nodo e l'hostname. 4. Nel caso in cui un nodo non risponda, controlla il cloud per vedere se il nodo è stato cancellato dal cloud. -Se il nodo è stato eliminato dal cloud, elimina l'oggetto Nodo Kubernetes. +Se il nodo è stato eliminato dal cloud, elimina l'oggetto Nodo di Kubernetes. #### Route controller -Il controller di instradamento è responsabile della configurazione delle rotte nel cloud in modo appropriato in modo che i contenitori su nodi diversi nel cluster Kubernetes possano comunicare tra loro. Il controller di percorso è applicabile solo ai cluster di Google Compute Engine. +Il Route controller è responsabile della configurazione delle route nel cloud in modo che i container su nodi differenti del cluster Kubernetes possano comunicare tra loro. Il Route controller è utilizzabile solo dai cluster su Google Compute Engine. #### Service Controller -Il responsabile del servizio è responsabile dell'ascolto del servizio di creazione, aggiornamento ed eliminazione di eventi. In base allo stato attuale dei servizi in Kubernetes, configura i bilanciatori del carico cloud (come ELB o Google LB) per riflettere lo stato dei servizi in Kubernetes. Inoltre, assicura che i back-end di servizio per i servizi di bilanciamento del carico del cloud siano aggiornati. - -#### PersistentVolumeLabels controller - -Il controllore PersistentVolumeLabels applica le etichette sui volumi AWS EBS / GCE PD al momento della creazione. Ciò elimina la necessità per gli utenti di impostare manualmente le etichette su questi volumi. - -Queste etichette sono essenziali per la pianificazione dei pod in quanto questi volumi sono costretti a funzionare solo all'interno della regione / zona in cui si trovano. Qualsiasi pod che utilizza questi volumi deve essere pianificato nella stessa zona / zona. - -Il controller PersistentVolumeLabels è stato creato appositamente per CCM; cioè, non esisteva prima della creazione del CCM. Ciò è stato fatto per spostare la logica di etichettatura fotovoltaica nel server API Kubernetes (era un controller di ammissione) al CCM. Non funziona su KCM. +Il Service Controller rimane in ascolto per eventi di creazione, aggiornamento ed eliminazione di servizi. In base allo stato attuale dei servizi in Kubernetes, configura i bilanciatori di carico forniti dal cloud (come gli ELB, i Google LB, o gli Oracle Cloud Infrastructure LB) per riflettere lo stato dei servizi in Kubernetes. Inoltre, assicura che i back-end dei bilanciatori di carico forniti dal cloud siano aggiornati. ### 2. Kubelet -Il controller del nodo contiene la funzionalità dipendente dal cloud di kubelet. Prima dell'introduzione del CCM, il kubelet era responsabile dell'inizializzazione di un nodo con dettagli specifici del cloud come indirizzi IP, etichette regione / zona e informazioni sul tipo di istanza. L'introduzione del CCM ha spostato questa operazione di inizializzazione dal kubelet al CCM. +Il Node Controller contiene l'implementazione dipendente dal cloud della kubelet. Prima dell'introduzione del CCM, la kubelet era responsabile dell'inizializzazione di un nodo con dettagli dipendenti dallo specifico cloud come gli indirizzi IP, le label region/zone e le informazioni sul tipo di istanza. L'introduzione del CCM ha spostato questa operazione di inizializzazione dalla kubelet al CCM. -In questo nuovo modello, kubelet inizializza un nodo senza informazioni specifiche del cloud. Tuttavia, aggiunge un disturbo al nodo appena creato che rende il nodo non programmabile finché CCM non inizializza il nodo con informazioni specifiche del cloud. Rimuove quindi questa macchia. +In questo nuovo modello, la kubelet inizializza un nodo senza informazioni specifiche del cloud. Tuttavia, aggiunge un blocco al nodo appena creato che rende il nodo non selezionabile per eseguire container finché il CCM non inizializza il nodo con le informazioni specifiche del cloud. Il CCM rimuove quindi questo blocco. +## Sistema a plug-in -### 3. Kubernetes API server +Il cloud controller manager utilizza le interfacce di Go per consentire l'implementazione di implementazioni di qualsiasi cloud. In particolare, utilizza l'interfaccia CloudProvider definita [qui](https://github.com/kubernetes/cloud-provider/blob/9b77dc1c384685cb732b3025ed5689dd597a5971/cloud.go#L42-L62). -Il controller Persistent Volume Labels sposta la funzionalità dipendente dal cloud del server API di Kubernetes sul CCM come descritto nelle sezioni precedenti +L'implementazione dei quattro controller generici evidenziati sopra, alcune strutture, l'interfaccia cloudprovider condivisa rimarranno nel core di Kubernetes. Le implementazioni specifiche per i vari cloud saranno costruite al di fuori del core e implementeranno le interfacce definite nel core. -## Plugin mechanism +Per ulteriori informazioni sullo sviluppo di plug-in, consultare [Developing Cloud Controller Manager](/docs/tasks/administer-cluster/developing-cloud-controller-manager/). -Il gestore del controller cloud utilizza le interfacce Go per consentire l'implementazione di implementazioni da qualsiasi cloud. In particolare, utilizza l'interfaccia CloudProvider definita [qui](https://github.com/kubernetes/cloud-provider/blob/9b77dc1c384685cb732b3025ed5689dd597a5971/cloud.go#L42-L62). +## Autorizzazione -L'implementazione dei quattro controller condivisi evidenziati sopra e alcuni scaffolding con l'interfaccia cloudprovider condivisa rimarranno nel core di Kubernetes. Le implementazioni specifiche per i fornitori di cloud saranno costruite al di fuori del core e implementeranno le interfacce definite nel core. +Questa sezione dettaglia l'accesso richiesto dal CCM sui vari API objects per eseguire le sue operazioni. -Per ulteriori informazioni sullo sviluppo di plug-in, consultare [Developing Cloud Controller Manager](/docs/tasks/administer-cluster/developing-cloud-controller-manager/). +### Node controller -## Authorization - -Questa sezione suddivide l'accesso richiesto su vari oggetti API da CCM per eseguire le sue operazioni. - -### Node Controller - -Il controller del nodo funziona solo con oggetti nodo. Richiede l'accesso completo per ottenere, elencare, creare, aggiornare, applicare patch, guardare ed eliminare oggetti nodo. +Il Node controller funziona solo con oggetti di tipo Node. Richiede l'accesso completo per ottenere, elencare, creare, aggiornare, applicare patch, guardare ed eliminare oggetti di tipo Node. v1/Node: @@ -138,7 +121,7 @@ v1/Node: ### Route controller -Il controllore del percorso ascolta la creazione dell'oggetto Nodo e configura le rotte in modo appropriato. Richiede l'accesso agli oggetti Nodo. +Il Route controller ascolta la creazione dell'oggetto Node e configura le rotte in modo appropriato. Richiede l'accesso in lettura agli oggetti di tipo Node. v1/Node: @@ -146,11 +129,11 @@ v1/Node: ### Service controller -Il controller del servizio ascolta Service object crea, aggiorna ed elimina eventi e quindi configura gli endpoint per tali Servizi in modo appropriato. +Il Service controller resta in ascolto per eventi di creazione, aggiornamento ed eliminazione di oggetti di tipo Servizi, e configura gli endpoint per tali Servizi in modo appropriato. -Per accedere ai Servizi, è necessario un elenco e controllare l'accesso. Per aggiornare i servizi, richiede la patch e l'accesso agli aggiornamenti. +Per accedere ai Servizi, è necessario il permesso per list e watch. Per aggiornare i Servizi, sono necessari i permessi patch e update. -Per impostare gli endpoint per i Servizi, richiede l'accesso per creare, elencare, ottenere, guardare e aggiornare. +Per impostare gli endpoint per i Servizi, richiede i permessi create, list, get, watch, e update. v1/Service: @@ -160,20 +143,9 @@ v1/Service: - Patch - Update -### PersistentVolumeLabels controller - -Il controller Persistent Volume Labels ascolta su Persistent Volume (PV) crea eventi e quindi li aggiorna. Questo controller richiede l'accesso per ottenere e aggiornare PV. - -v1/PersistentVolume: - -- Get -- List -- Watch -- Update - ### Others -L'implementazione del core di CCM richiede l'accesso per creare eventi e per garantire operazioni sicure richiede l'accesso per creare ServiceAccounts. +L'implementazione del core di CCM richiede l'accesso per creare eventi e, per garantire operazioni sicure, richiede l'accesso per creare ServiceAccounts. v1/Event: @@ -185,7 +157,7 @@ v1/ServiceAccount: - Create -RBAC ClusterRole per il CCM ha il seguente aspetto: +L'RBAC ClusterRole per il CCM ha il seguente aspetto: ```yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -251,18 +223,23 @@ rules: ## Vendor Implementations -I seguenti fornitori di cloud hanno implementato CCM: +I seguenti fornitori di cloud hanno una implementazione di CCM: -* [Digital Ocean](https://github.com/digitalocean/digitalocean-cloud-controller-manager) -* [Oracle](https://github.com/oracle/oci-cloud-controller-manager) -* [Azure](https://github.com/kubernetes/cloud-provider-azure) -* [GCP](https://github.com/kubernetes/cloud-provider-gcp) +* [Alibaba Cloud](https://github.com/kubernetes/cloud-provider-alibaba-cloud) * [AWS](https://github.com/kubernetes/cloud-provider-aws) +* [Azure](https://github.com/kubernetes/cloud-provider-azure) * [BaiduCloud](https://github.com/baidu/cloud-provider-baiducloud) +* [DigitalOcean](https://github.com/digitalocean/digitalocean-cloud-controller-manager) +* [GCP](https://github.com/kubernetes/cloud-provider-gcp) +* [Hetzner](https://github.com/hetznercloud/hcloud-cloud-controller-manager) +* [Linode](https://github.com/linode/linode-cloud-controller-manager) +* [OpenStack](https://github.com/kubernetes/cloud-provider-openstack) +* [Oracle](https://github.com/oracle/oci-cloud-controller-manager) +* [TencentCloud](https://github.com/TencentCloud/tencentcloud-cloud-controller-manager) ## Cluster Administration -Sono fornite le istruzioni complete per la configurazione e l'esecuzione del CCM +Le istruzioni complete per la configurazione e l'esecuzione del CCM sono fornite [qui](/docs/tasks/administer-cluster/running-cloud-controller/#cloud-controller-manager). {{% /capture %}} From 9d3593e9ceecdbf37301159276854b32a96c58ef Mon Sep 17 00:00:00 2001 From: Fabio Alessandro Locati Date: Sun, 12 Apr 2020 16:49:18 +0200 Subject: [PATCH 031/244] Improve translation --- content/it/docs/concepts/example-concept-template.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/content/it/docs/concepts/example-concept-template.md b/content/it/docs/concepts/example-concept-template.md index f234274c6e..db1bc0b960 100644 --- a/content/it/docs/concepts/example-concept-template.md +++ b/content/it/docs/concepts/example-concept-template.md @@ -1,5 +1,4 @@ --- -draft: True title: Esempio di modello di concetto content_template: templates/concept toc_hide: true @@ -17,12 +16,12 @@ Questa pagina spiega ... {{% capture body %}} -## Understanding ... +## Comprendendo ... Kubernetes fornisce ... -## Using ... +## Usando ... Usare @@ -30,7 +29,7 @@ Usare {{% capture whatsnext %}} -**[Optional Section]** +**[Sezione opzionale]** * Ulteriori informazioni su [Scrivere un nuovo argomento](/docs/home/contribuisci/scrivi-nuovo-argomento/). * Vedi [Uso dei modelli di pagina - Modello di concetto](/docs/home/contribuis/page-templates/#concept_template) su come utilizzare questo modello. From 7fb2c2cd47f6195656e4412cba60f01551391fb4 Mon Sep 17 00:00:00 2001 From: Fabio Alessandro Locati Date: Tue, 14 Apr 2020 22:36:47 +0200 Subject: [PATCH 032/244] De-drafting docs/concepts/cluster-administration/_index.md --- content/it/docs/concepts/cluster-administration/_index.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/content/it/docs/concepts/cluster-administration/_index.md b/content/it/docs/concepts/cluster-administration/_index.md index 4fd9b4388e..68eb847f47 100755 --- a/content/it/docs/concepts/cluster-administration/_index.md +++ b/content/it/docs/concepts/cluster-administration/_index.md @@ -1,6 +1,5 @@ --- -draft: True -title: "Cluster Administration" +title: "Amministrazione del Cluster" weight: 100 --- From 4c39f03a88c2c1b60174ca11b1ff85e75bfe7f6f Mon Sep 17 00:00:00 2001 From: Jared Date: Tue, 14 Apr 2020 13:52:06 -0700 Subject: [PATCH 033/244] Removing myself from the owner aliases file :( I will be stepping back from working on Kubernetes to focus on other projects. So long and thanks for all the fish! --- OWNERS_ALIASES | 2 -- 1 file changed, 2 deletions(-) diff --git a/OWNERS_ALIASES b/OWNERS_ALIASES index e02287ac56..6f3337df36 100644 --- a/OWNERS_ALIASES +++ b/OWNERS_ALIASES @@ -41,7 +41,6 @@ aliases: sig-docs-en-owners: # Admins for English content - bradtopol - daminisatya - - jaredbhatti - jimangel - kbarnard10 - kbhawkey @@ -58,7 +57,6 @@ aliases: sig-docs-en-reviews: # PR reviews for English content - bradtopol - daminisatya - - jaredbhatti - jimangel - kbarnard10 - kbhawkey From 1be5c1114b78f7e9f68100b1aa8fe8d14e0f5d06 Mon Sep 17 00:00:00 2001 From: Arhell Date: Wed, 15 Apr 2020 03:00:49 +0300 Subject: [PATCH 034/244] fix broken field on the main page in the video block --- assets/sass/_base.sass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/sass/_base.sass b/assets/sass/_base.sass index c59d20c346..07e489055d 100644 --- a/assets/sass/_base.sass +++ b/assets/sass/_base.sass @@ -1214,7 +1214,7 @@ $feature-box-div-margin-bottom: 40px margin-bottom: 20px #desktopKCButton - position: relative + position: absolute font-size: 18px background-color: $dark-grey border-radius: 8px From e8265b770c7643f3f757116dd75348864898db67 Mon Sep 17 00:00:00 2001 From: Fabio Alessandro Locati Date: Tue, 14 Apr 2020 22:33:30 +0200 Subject: [PATCH 035/244] improve Italian translation of docs/concepts/cluster-administration/proxies.md --- .../cluster-administration/proxies.md | 60 +++++++++---------- 1 file changed, 29 insertions(+), 31 deletions(-) diff --git a/content/it/docs/concepts/cluster-administration/proxies.md b/content/it/docs/concepts/cluster-administration/proxies.md index 19caed9167..beee7cfa8a 100644 --- a/content/it/docs/concepts/cluster-administration/proxies.md +++ b/content/it/docs/concepts/cluster-administration/proxies.md @@ -1,5 +1,4 @@ --- -draft: True title: Proxy in Kubernetes content_template: templates/concept weight: 90 @@ -7,62 +6,61 @@ weight: 90 {{% capture overview %}} Questa pagina spiega i proxy utilizzati con Kubernetes. - {{% /capture %}} {{% capture body %}} -## Proxies +## Proxy Esistono diversi proxy che puoi incontrare quando usi Kubernetes: -1. Il [proxy kubectl](/docs/tasks/access-application-cluster/access-cluster/#direct-accessing-the-rest-api): +1. Il [kubectl proxy](/docs/tasks/access-application-cluster/access-cluster/#direct-accessing-the-rest-api): -    - Funziona sul desktop di un utente o in un pod -    - proxy da un indirizzo localhost all'apiserver di Kubernetes -    - client per proxy utilizza HTTP -    - proxy per apiserver utilizza HTTPS +    - viene eseguito sul computer di un utente o in un pod +    - collega un localhost address all'apiserver di Kubernetes +    - il client comunica con il proxy in HTTP +    - il proxy comunica con l'apiserver in HTTPS     - individua l'apiserver -    - Aggiunge le intestazioni di autenticazione +    - aggiunge gli header di autenticazione -1. Il [proxy apiserver](/docs/tasks/access-application-cluster/access-cluster/#discovering-builtin-services): +1. L'[apiserver proxy](/docs/tasks/access-application-cluster/access-cluster/#discovering-builtin-services): -    - è un bastione costruito nell'apiserver +    - è un proxy presente nell'apiserver     - collega un utente al di fuori del cluster agli IP del cluster che altrimenti potrebbero non essere raggiungibili -    - funziona nei processi di apiserver -    - client per proxy utilizza HTTPS (o http se apiserver configurato in tal modo) -    - proxy to target può utilizzare HTTP o HTTPS come scelto dal proxy utilizzando le informazioni disponibili +    - è uno dei processi dell'apiserver +    - il client comunica con il proxy in HTTPS (o HTTP se l'apiserver è configurato in tal modo) +    - il proxy comunica con il target via HTTP o HTTPS come scelto dal proxy utilizzando le informazioni disponibili     - può essere utilizzato per raggiungere un nodo, un pod o un servizio     - esegue il bilanciamento del carico quando viene utilizzato per raggiungere un servizio -1. Il [kube proxy](/docs/concepts/services-networking/service/#ips-and-vips): +1. Il [kube proxy](/docs/concepts/services-networking/service/#ips-and-vips): -    - Funziona su ciascun nodo -    - proxy UDP, TCP e SCTP -    - non capisce l'HTTP -    - fornisce il bilanciamento del carico -    - è appena usato per raggiungere i servizi +    - è eseguito su ciascun nodo +    - fa da proxy per comunicazioni UDP, TCP e SCTP +    - non gestisce il protocollo HTTP +    - esegue il bilanciamento del carico +    - è usato solo per raggiungere i servizi -1. Un proxy / bilanciamento del carico di fronte agli apiserver: +1. Un proxy/bilanciatore di carico di fronte agli apiserver: -    - esistenza e implementazione variano da cluster a cluster (ad esempio nginx) -    - si trova tra tutti i client e uno o più apiserver -    - funge da bilanciamento del carico se ci sono diversi apiserver. +    - la sua esistenza e implementazione variano da cluster a cluster (ad esempio nginx) +    - si trova tra i client e uno o più apiserver +    - funge da bilanciatore di carico se ci sono più di un apiserver. -1. Cloud Load Balancer su servizi esterni: +1. Cloud Load Balancer su servizi esterni:     - sono forniti da alcuni fornitori di servizi cloud (ad es. AWS ELB, Google Cloud Load Balancer) -    - vengono creati automaticamente quando il servizio Kubernetes ha tipo "LoadBalancer" -    - Solitamente supporta solo UDP / TCP -    - Il supporto SCTP dipende dall'implementazione del servizio di bilanciamento del carico del provider cloud +    - vengono creati automaticamente quando il servizio Kubernetes ha tipo `LoadBalancer` +    - solitamente supporta solo UDP / TCP +    - il supporto SCTP dipende dall'implementazione del bilanciatore di carico del provider cloud     - l'implementazione varia a seconda del provider cloud. -Gli utenti di Kubernetes in genere non devono preoccuparsi di nulla di diverso dai primi due tipi. L'amministratore del cluster -in genere assicurerà che questi ultimi tipi siano impostati correttamente. +Gli utenti di Kubernetes in genere non devono preoccuparsi alcun proxy, se non i primi due tipi. L'amministratore del cluster +in genere assicurerà che gli altri tipi di proxy siano impostati correttamente. ## Richiedere reindirizzamenti -I proxy hanno sostituito le capacità di reindirizzamento. I reindirizzamenti sono stati deprecati. +I proxy hanno sostituito le funzioni di reindirizzamento. I reindirizzamenti sono stati deprecati. {{% /capture %}} From 66a784660c05b93109c98a9a0fcb6bc00283a24e Mon Sep 17 00:00:00 2001 From: Nikhil Zadoo Date: Sat, 18 Apr 2020 12:41:48 +0200 Subject: [PATCH 036/244] Updated hyperlink to raw-block-volume-support The current hyperlink is broken. Updating it to point to the page marker on the same page. --- content/en/docs/concepts/storage/persistent-volumes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/concepts/storage/persistent-volumes.md b/content/en/docs/concepts/storage/persistent-volumes.md index 3d444584ee..4b22929177 100644 --- a/content/en/docs/concepts/storage/persistent-volumes.md +++ b/content/en/docs/concepts/storage/persistent-volumes.md @@ -334,7 +334,7 @@ Such volume is presented into a Pod as a block device, without any filesystem on This mode is useful to provide a Pod the fastest possible way to access a volume, without any filesystem layer between the Pod and the volume. On the other hand, the application running in the Pod must know how to handle a raw block device. -See [Raw Block Volume Support](docs/concepts/storage/persistent-volumes/#raw-block-volume-support) +See [Raw Block Volume Support](#raw-block-volume-support) for an example on how to use a volume with `volumeMode: Block` in a Pod. ### Access Modes From f233023a08ef8dfa5b0d4d0885b239f2af3f385a Mon Sep 17 00:00:00 2001 From: Yudi A Phanama Date: Sun, 19 Apr 2020 12:10:31 +0700 Subject: [PATCH 037/244] Update Install Kubectl ID page - Change several "instalasi" nouns to "menginstal" verbs - Add some native Indonesian words with hints. E.g alat baris perintah, skrip penyelesaian, penyelesaian otomatis. - Fix some grammar, punctuations, and add clarity. E.g "di" to "pada" preposition, commas, etc. manajer paket, etc. - Fix broken list item numberings. - Fix some non-standard words. E.g kluster to klaster, binari to program. Signed-off-by: Yudi A Phanama --- .../id/docs/tasks/tools/install-kubectl.md | 202 +++++++++--------- 1 file changed, 101 insertions(+), 101 deletions(-) diff --git a/content/id/docs/tasks/tools/install-kubectl.md b/content/id/docs/tasks/tools/install-kubectl.md index 3f24efef54..fc9b672c5e 100644 --- a/content/id/docs/tasks/tools/install-kubectl.md +++ b/content/id/docs/tasks/tools/install-kubectl.md @@ -1,28 +1,28 @@ --- -title: Instalasi dan Konfigurasi kubectl +title: Menginstal dan Menyiapkan kubectl content_template: templates/task weight: 10 card: name: tasks weight: 20 - title: Instalasi kubectl + title: Menginstal kubectl --- {{% capture overview %}} -[Kubectl](/docs/user-guide/kubectl/) adalah perangkat barisan perintah Kubernetes yang digunakan untuk menjalankan berbagai perintah untuk kluster Kubernetes. Kamu dapat menggunakan `kubectl` untuk men-_deploy_ aplikasi, mengatur _resource_ kluster, dan melihat _log_. Daftar operasi `kubectl` dapat dilihat di [Ikhtisar kubectl](/docs/reference/kubectl/overview/). +[Kubectl](/docs/user-guide/kubectl/) adalah alat baris perintah (_command line tool_) Kubernetes yang digunakan untuk menjalankan berbagai perintah untuk klaster Kubernetes. Kamu dapat menggunakan `kubectl` untuk men-_deploy_ aplikasi, mengatur sumber daya klaster, dan melihat log. Daftar operasi `kubectl` dapat dilihat di [Ikhtisar kubectl](/docs/reference/kubectl/overview/). {{% /capture %}} {{% capture prerequisites %}} -Kamu boleh menggunakan `kubectl` versi berapapun selama versi minornya sama atau berbeda satu. Misal, klien v1.2 masih dapat digunakan dengan v1.1, v1.2, dan 1.3 master. Menggunakan versi terbaru `kubectl` dapat menghindari permasalahan yang tidak terduga. +Kamu harus menggunakan kubectl dengan perbedaan maksimal satu versi minor dengan klaster kamu. Misalnya, klien v1.2 masih dapat digunakan dengan master v1.1, v1.2, dan 1.3. Menggunakan versi terbaru `kubectl` dapat menghindari permasalahan yang tidak terduga. {{% /capture %}} {{% capture steps %}} -## Instalasi kubectl di Linux +## Menginstal kubectl pada Linux -### Instalasi binari kubectl dengan curl di Linux +### Menginstal program kubectl menggunakan curl pada Linux -1. Unduh versi terbaru dengan perintah: +1. Unduh versi terbarunya dengan perintah: ``` curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl @@ -30,30 +30,30 @@ Kamu boleh menggunakan `kubectl` versi berapapun selama versi minornya sama atau Untuk mengunduh versi spesifik, ganti bagian `curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt` dengan versi yang diinginkan. - Misal, untuk mengunduh versi {{< param "fullversion" >}} di Linux, ketik: + Misalnya, untuk mengunduh versi {{< param "fullversion" >}} di Linux, ketik: ``` curl -LO https://storage.googleapis.com/kubernetes-release/release/{{< param "fullversion" >}}/bin/linux/amd64/kubectl ``` -1. Buat agar binari `kubectl` dapat dijalankan. +2. Jadikan program `kubectl` dapat dieksekusi. ``` chmod +x ./kubectl ``` -1. Pindahkan ke PATH komputer. +3. Pindahkan ke PATH kamu. ``` sudo mv ./kubectl /usr/local/bin/kubectl ``` -1. Pastikan instalasi sudah berhasil dengan melakukan pengecekan versi: +4. Pastikan instalasinya sudah berhasil dengan melakukan pengecekan versi: ``` kubectl version --client ``` -### Instalasi dengan paket manajer bawaan +### Menginstal dengan manajer paket (_package manager_) bawaan {{< tabs name="kubectl_install" >}} {{< tab name="Ubuntu, Debian or HypriotOS" codelang="bash" >}} @@ -76,11 +76,11 @@ yum install -y kubectl {{< /tab >}} {{< /tabs >}} -### Instalasi dengan paket manajer lain +### Menginstal dengan manajer paket lain {{< tabs name="other_kubectl_install" >}} {{% tab name="Snap" %}} -Jika kamu menggunakan Ubuntu atau versi Linux lain yang mendukung paket manajer [snap](https://snapcraft.io/docs/core/install), `kubectl` tersedia dalam bentuk aplikasi di [snap](https://snapcraft.io/). +Jika kamu menggunakan Ubuntu atau versi Linux lain yang mendukung manajer paket [snap](https://snapcraft.io/docs/core/install), `kubectl` tersedia dalam bentuk aplikasi di [snap](https://snapcraft.io/). ```shell snap install kubectl --classic @@ -89,7 +89,7 @@ kubectl version --client ``` {{% /tab %}} {{% tab name="Homebrew" %}} -Jika kamu menggunakan Linux dengan paket manajer [Homebrew](https://docs.brew.sh/Homebrew-on-Linux), `kubectl` sudah tersedia untuk diinstal di [Homebrew](https://docs.brew.sh/Homebrew-on-Linux#install). +Jika kamu menggunakan Linux dengan manajer paket [Homebrew](https://docs.brew.sh/Homebrew-on-Linux), `kubectl` sudah tersedia untuk diinstal di [Homebrew](https://docs.brew.sh/Homebrew-on-Linux#install). ```shell brew install kubectl @@ -98,11 +98,11 @@ kubectl version --client {{% /tab %}} {{< /tabs >}} -## Instalasi kubectl di macOS +## Menginstal kubectl pada macOS -### Instalasi binari kubectl dengan curl di macOS +### Menginstal program kubectl dengan curl pada macOS -1. Unduh versi terbaru dengan perintah: +1. Unduh versi terbarunya dengan perintah: ``` curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl" @@ -110,32 +110,32 @@ kubectl version --client Untuk mengunduh versi spesifik, ganti bagian `curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt` dengan versi yang diinginkan. - Misal, untuk mengunduh versi {{< param "fullversion" >}} di macOS, ketik: + Misalnya, untuk mengunduh versi {{< param "fullversion" >}} pada macOS, ketik: ``` curl -LO https://storage.googleapis.com/kubernetes-release/release/{{< param "fullversion" >}}/bin/darwin/amd64/kubectl ``` -1. Buat agar binari `kubectl` dapat dijalankan. +2. Buat agar program `kubectl` dapat dijalankan. ``` chmod +x ./kubectl ``` -1. Pindahkan ke PATH komputer. +3. Pindahkan ke PATH kamu. ``` sudo mv ./kubectl /usr/local/bin/kubectl ``` -1. Pastikan instalasi sudah berhasil dengan melakukan pengecekan versi: +4. Pastikan instalasinya sudah berhasil dengan melakukan pengecekan versi: ``` kubectl version --client ``` -### Instalasi dengan Homebrew di macOS +### Menginstal dengan Homebrew pada macOS -Jika kamu menggunakan macOS dan paket manajer [Homebrew](https://brew.sh/), kamu dapat menginstal `kubectl` langsung dengan Homebrew. +Jika kamu menggunakan macOS dan manajer paket [Homebrew](https://brew.sh/), kamu dapat menginstal `kubectl` langsung dengan Homebrew. 1. Jalankan perintah: @@ -148,15 +148,15 @@ Jika kamu menggunakan macOS dan paket manajer [Homebrew](https://brew.sh/), kamu brew install kubernetes-cli ``` -1. Pastikan instalasi sudah berhasil dengan melakukan pengecekan versi: +2. Pastikan instalasinya sudah berhasil dengan melakukan pengecekan versi: ``` kubectl version --client ``` -### Instalasi dengan Macports di macOS +### Menginstal dengan Macports pada macOS -Jika kamu menggunakan macOS dan paket manajer [Macports](https://macports.org/), kamu dapat menginstal `kubectl` langsung dengan Macports. +Jika kamu menggunakan macOS dan manajer paket [Macports](https://macports.org/), kamu dapat menginstal `kubectl` langsung dengan Macports. 1. Jalankan perintah: @@ -165,39 +165,39 @@ Jika kamu menggunakan macOS dan paket manajer [Macports](https://macports.org/), sudo port install kubectl ``` -1. Pastikan instalasi sudah berhasil dengan melakukan pengecekan versi: +2. Pastikan instalasinya sudah berhasil dengan melakukan pengecekan versi: ``` kubectl version --client ``` -## Instalasi kubectl di Windows +## Menginstal kubectl pada Windows -### Instalasi binari kubectl dengan curl di Windows +### Menginstal program kubectl dengan curl pada Windows -1. Unduh versi terbaru {{< param "fullversion" >}} dari [tautan ini](https://storage.googleapis.com/kubernetes-release/release/{{< param "fullversion" >}}/bin/windows/amd64/kubectl.exe). +1. Unduh versi terbarunya {{< param "fullversion" >}} dari [tautan ini](https://storage.googleapis.com/kubernetes-release/release/{{< param "fullversion" >}}/bin/windows/amd64/kubectl.exe). - Atau jika sudah ada `curl`, jalankan perintah ini: + Atau jika sudah ada `curl` pada mesin kamu, jalankan perintah ini: ``` curl -LO https://storage.googleapis.com/kubernetes-release/release/{{< param "fullversion" >}}/bin/windows/amd64/kubectl.exe ``` - Untuk mendapatkan versi stabil terakhir (misal, untuk _scripting_), lihat di [https://storage.googleapis.com/kubernetes-release/release/stable.txt](https://storage.googleapis.com/kubernetes-release/release/stable.txt). + Untuk mendapatkan versi stabil terakhir (misalnya untuk _scripting_), lihat di [https://storage.googleapis.com/kubernetes-release/release/stable.txt](https://storage.googleapis.com/kubernetes-release/release/stable.txt). -1. Tambahkan binary yang sudah diunduh ke PATH komputer. -1. Pastikan instalasi sudah berhasil dengan melakukan pengecekan versi: +2. Tambahkan program yang sudah diunduh tersebut ke PATH kamu. +3. Pastikan instalasinya sudah berhasil dengan melakukan pengecekan versi: ``` kubectl version --client ``` {{< note >}} -[Docker Desktop untuk Windows](https://docs.docker.com/docker-for-windows/#kubernetes) sudah menambahkan versi `kubectl`nya sendiri ke PATH. Jika kamu sudah menginstal Docker Desktop, kamu harus menambahkan _entry_ ke PATH sebelum yang ditambahkan oleh _installer_ Docker Desktop atau kamu dapat menghapus `kubectl` bawaan Docker Desktop. +[Docker Desktop untuk Windows](https://docs.docker.com/docker-for-windows/#kubernetes) sudah menambahkan versi `kubectl`-nya sendiri ke PATH. Jika kamu sudah menginstal Docker Desktop, kamu harus menambahkan entrinya ke PATH sebelum yang ditambahkan oleh penginstal (_installer_) Docker Desktop atau kamu dapat menghapus `kubectl` bawaan dari Docker Desktop. {{< /note >}} -### Instalasi dengan Powershell dari PSGallery +### Menginstal dengan Powershell dari PSGallery -Jika kamu menggunakan Windows dan paket manajer [Powershell Gallery](https://www.powershellgallery.com/), kamu dapat menginstal dan melakukan pembaruan `kubectl` dengan Powershell. +Jika kamu menggunakan Windows dan manajer paket [Powershell Gallery](https://www.powershellgallery.com/), kamu dapat menginstal dan melakukan pembaruan `kubectl` dengan Powershell. 1. Jalankan perintah berikut (jangan lupa untuk memasukkan `DownloadLocation`): @@ -208,9 +208,9 @@ Jika kamu menggunakan Windows dan paket manajer [Powershell Gallery](https://www {{< note >}}Jika kamu tidak menambahkan `DownloadLocation`, `kubectl` akan diinstal di dalam direktori _temp_ pengguna.{{< /note >}} - _Installer_ akan membuat `$HOME/.kube` dan membuat berkas konfigurasi + Penginstal akan membuat `$HOME/.kube` dan membuat berkas konfigurasi -1. Pastikan instalasi sudah berhasil dengan melakukan pengecekan versi: +2. Pastikan instalasinya sudah berhasil dengan melakukan pengecekan versi: ``` kubectl version --client @@ -218,9 +218,9 @@ Jika kamu menggunakan Windows dan paket manajer [Powershell Gallery](https://www {{< note >}}Proses pembaruan dapat dilakukan dengan menjalankan ulang dua perintah yang terdapat pada langkah 1.{{< /note >}} -### Instalasi di Windows menggunaakn Chocolatey atau Scoop +### Menginstal pada Windows menggunakan Chocolatey atau Scoop -Untuk menginstal `kubectl` di Windows kamu dapat menggunakan paket manajer [Chocolatey](https://chocolatey.org) atau _installer_ barisan perintah [Scoop](https://scoop.sh). +Untuk menginstal `kubectl` pada Windows, kamu dapat menggunakan manajer paket [Chocolatey](https://chocolatey.org) atau penginstal baris perintah [Scoop](https://scoop.sh). {{< tabs name="kubectl_win_install" >}} {{% tab name="choco" %}} @@ -233,49 +233,49 @@ Untuk menginstal `kubectl` di Windows kamu dapat menggunakan paket manajer [Choc {{% /tab %}} {{< /tabs >}} -1. Pastikan instalasi sudah berhasil dengan melakukan pengecekan versi: +1. Pastikan instalasinya sudah berhasil dengan melakukan pengecekan versi: ``` kubectl version --client ``` -1. Pindah ke direktori utama: +2. Pindah ke direktori utama: ``` cd %USERPROFILE% ``` -1. Buat direktori `.kube`: +3. Buat direktori `.kube`: ``` mkdir .kube ``` -1. Pindah ke direktori `.kube` yang baru saja dibuat: +4. Pindah ke direktori `.kube` yang baru saja dibuat: ``` cd .kube ``` -1. Lakukan konfigurasi `kubectl` agar menggunakan _remote_ kluster Kubernetes: +5. Lakukan konfigurasi `kubectl` untuk menggunakan klaster Kubernetes _remote_: ``` New-Item config -type file ``` - {{< note >}}Ubah berkas konfigurasi dengan editor teks pilihanmu, misal Notepad.{{< /note >}} + {{< note >}}Ubah berkas konfigurasi dengan penyunting (_editor_) teks pilihanmu, misalnya Notepad.{{< /note >}} -## Unduh dengan menggunakan Google Cloud SDK +## Mengunduh sebagai bagian dari Google Cloud SDK -Kamu dapat menginstal `kubectl` dengan menggunakan Google Cloud SDK. +Kamu dapat menginstal `kubectl` sebagai bagian dari Google Cloud SDK. 1. Instal [Google Cloud SDK](https://cloud.google.com/sdk/). -1. Jalankan perintah instalasi `kubectl`: +2. Jalankan perintah instalasi `kubectl`: ``` gcloud components install kubectl ``` -1. Pastikan instalasi sudah berhasil dengan melakukan pengecekan versi: +3. Pastikan instalasinya sudah berhasil dengan melakukan pengecekan versi: ``` kubectl version --client @@ -283,78 +283,78 @@ Kamu dapat menginstal `kubectl` dengan menggunakan Google Cloud SDK. ## Memeriksa konfigurasi kubectl -Agar `kubectl` dapat mengakses kluster Kubernetes, dibutuhkan sebuah [berkas kubeconfig](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/), yang akan otomatis dibuat ketika kamu membuat kluster baru menggunakan [kube-up.sh](https://github.com/kubernetes/kubernetes/blob/master/cluster/kube-up.sh) atau setelah berhasil men-_deploy_ kluster Minikube. Secara _default_, konfigurasi `kubectl` disimpan di `~/.kube/config`. +Agar `kubectl` dapat mengakses klaster Kubernetes, dibutuhkan sebuah [berkas kubeconfig](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/), yang akan otomatis dibuat ketika kamu membuat klaster baru menggunakan [kube-up.sh](https://github.com/kubernetes/kubernetes/blob/master/cluster/kube-up.sh) atau setelah berhasil men-_deploy_ klaster Minikube. Secara bawaan, konfigurasi `kubectl` disimpan di `~/.kube/config`. -Kamu dapat memeriksa apakah konfigurasi `kubectl` sudah benar dengan mengambil _state_ kluster: +Kamu dapat memeriksa apakah konfigurasi `kubectl` sudah benar dengan mengambil keadaan klaster: ```shell kubectl cluster-info ``` -Jika kamu melihat respons URL maka konfigurasi kluster `kubectl` sudah benar. +Jika kamu melihat respons berupa URL, maka konfigurasi klaster `kubectl` sudah benar. -Tetapi jika kamu melihat pesan seperti di bawah maka `kubectl` belum dikonfigurasi dengan benar atau tidak dapat terhubung ke kluster Kubernetes. +Tetapi, jika kamu melihat pesan seperti di bawah, maka `kubectl` belum dikonfigurasi dengan benar atau tidak dapat terhubung ke klaster Kubernetes. ```shell The connection to the server was refused - did you specify the right host or port? ``` -Selanjutnya, apabila kamu ingin menjalankan kluster Kubernetes di laptop (lokal), kamu memerlukan sebuah perangkat seperti Minikube sebelum menjalankan ulang perintah yang ada di atas. +Selanjutnya, jika kamu ingin menjalankan klaster Kubernetes di laptop (lokal) kamu, kamu memerlukan sebuah perangkat seperti Minikube sebelum menjalankan ulang perintah yang ada di atas. -Jika `kubectl cluster-info` mengembalikan respons URL tetapi kamu masih belum dapat mengakses ke kluster, kamu bisa menggunakan perintah di bawah untuk memeriksa apakah kluster sudah dikonfigurasi dengan benar. +Jika `kubectl cluster-info` mengembalikan respons URL tetapi kamu masih belum dapat mengakses klaster, kamu bisa menggunakan perintah di bawah untuk memeriksa apakah klaster sudah dikonfigurasi dengan benar. ```shell kubectl cluster-info dump ``` -## Konfigurasi kubectl yang dapat dilakukan +## Konfigurasi kubectl opsional -### Menyalakan _auto complete_ untuk terminal +### Menyalakan penyelesaian otomatis untuk terminal -`kubectl` menyediakan fitur _auto complete_ untuk Bash dan Zsh yang dapat memudahkanmu ketika mengetik di terminal. +`kubectl` menyediakan fitur penyelesaian otomatis (_auto complete_) untuk Bash dan Zsh yang dapat memudahkanmu ketika mengetik di terminal. -Ikuti petunjuk di bawah untuk menyalakan _auto complete_ untuk Bash dan Zsh. +Ikuti petunjuk di bawah untuk menyalakan penyelesaian otomatis untuk Bash dan Zsh. {{< tabs name="kubectl_autocompletion" >}} -{{% tab name="Bash di Linux" %}} +{{% tab name="Bash pada Linux" %}} ### Pendahuluan -_Completion script_ `kubectl` untuk Bash dapat dibuat dengan perintah `kubectl completion bash`. Masukkan skrip tersebut ke dalam terminal sebagai sumber untuk menyalakan _auto complete_ dari `kubectl`. +Skrip penyelesaian (_completion script_) `kubectl` untuk Bash dapat dibuat dengan perintah `kubectl completion bash`. Masukkan skrip tersebut ke dalam terminal sebagai sumber untuk menyalakan penyelesaian otomatis dari `kubectl`. -Namun, _completion script_ tersebut tergantung dengan [**bash-completion**](https://github.com/scop/bash-completion), yang artinya kamu harus menginstal program tersebut terlebih dahulu (kamu dapat memeriksa apakah kamu sudah memiliki bash-completion dengan menjalankan perintah `type _init_completion`). +Namun, skrip penyelesaian tersebut bergantung pada [**bash-completion**](https://github.com/scop/bash-completion), yang artinya kamu harus menginstal program tersebut terlebih dahulu (kamu dapat memeriksa apakah kamu sudah memiliki bash-completion dengan menjalankan perintah `type _init_completion`). -### Instalasi bash-completion +### Menginstal bash-completion -bash-completion disediakan oleh banyak manajer paket (lihat [di sini](https://github.com/scop/bash-completion#installation)). Kamu dapat menginstalnya dengan menggunakan perintah `apt-get install bash-completion` atau `yum install bash-completion`, atau dsb. +bash-completion disediakan oleh banyak manajer paket (lihat [di sini](https://github.com/scop/bash-completion#installation)). Kamu dapat menginstalnya dengan menggunakan perintah `apt-get install bash-completion` atau `yum install bash-completion`, dsb. -Perintah di atas akan membuat skrip utama bash-completion di `/usr/share/bash-completion/bash_completion`. Terkadang kamu juga harus menambahkan skrip tersebut ke dalam berkas `~/.bashrc`, tergantung paket manajer yang kamu pakai. +Perintah di atas akan membuat skrip utama bash-completion di `/usr/share/bash-completion/bash_completion`. Terkadang kamu juga harus menambahkan skrip tersebut ke dalam berkas `~/.bashrc`, tergantung manajer paket yang kamu pakai. -Untuk memastikan, muat ulang terminalmu dan jalankan `type _init_completion`. Jika perintah berhasil maka instalasi selesai. Jika tidak, tambahkan teks berikut ke dalam berkas `~/.bashrc`: +Untuk memastikannya, muat ulang terminalmu dan jalankan `type _init_completion`. Jika perintah tersebut berhasil, maka instalasi selesai. Jika tidak, tambahkan teks berikut ke dalam berkas `~/.bashrc`: ```shell source /usr/share/bash-completion/bash_completion ``` -Muat ulang lagi terminalmu dan pastikan bash-completion sudah berhasil diinstal dengan menjalankan `type _init_completion`. +Muat ulang terminalmu dan pastikan bash-completion sudah berhasil diinstal dengan menjalankan `type _init_completion`. -### Menyalakan _auto complete_ kubectl +### Menyalakan penyelesaian otomatis kubectl -Sekarang kamu harus memastikan bahwa _completion script_ untuk `kubectl` sudah dimasukkan sebagai sumber _auto complete_ di semua sesi terminal. Kamu dapat melakukannya dengan dua cara: +Sekarang kamu harus memastikan bahwa skrip penyelesaian untuk `kubectl` sudah dimasukkan sebagai sumber penyelesaian otomatis pada semua sesi terminal. Kamu dapat melakukannya dengan dua cara: -- Masukkan _completion script_ sebagai sumber di berkas `~/.bashrc`: +- Masukkan skrip penyelesaian sebagai sumber di berkas `~/.bashrc`: ```shell echo 'source <(kubectl completion bash)' >>~/.bashrc ``` -- Menambahkan _completion script_ ke direktori `/etc/bash_completion.d`: +- Tambahkan skrip penyelesaian ke direktori `/etc/bash_completion.d`: ```shell kubectl completion bash >/etc/bash_completion.d/kubectl ``` -Jika kamu menggunakan alias untuk `kubectl`, kamu masih dapat menggunakan fitur _auto complete_ dengan menjalankan perintah: +Jika kamu menggunakan alias untuk `kubectl`, kamu masih dapat menggunakan fitur penyelesaian otomatis dengan menjalankan perintah: ```shell echo 'alias k=kubectl' >>~/.bashrc @@ -362,28 +362,28 @@ Jika kamu menggunakan alias untuk `kubectl`, kamu masih dapat menggunakan fitur ``` {{< note >}} -Semua sumber _completion script_ bash-completion terdapat di `/etc/bash_completion.d`. +Semua sumber skrip penyelesaian bash-completion terdapat di `/etc/bash_completion.d`. {{< /note >}} -Kedua cara tersebut sama, kamu bisa mengambil salah satu cara saja. Setelah memuat ulang terminal, _auto complete_ dari `kubectl` seharusnya sudah dapat bekerja. +Kedua cara tersebut sama, kamu bisa memilih salah satunya. Setelah memuat ulang terminal, penyelesaian otomatis dari `kubectl` seharusnya sudah dapat bekerja. {{% /tab %}} -{{% tab name="Bash di macOS" %}} +{{% tab name="Bash pada macOS" %}} ### Pendahuluan -_Completion script_ `kubectl` untuk Bash dapat dibuat dengan perintah `kubectl completion bash`. Masukkan skrip tersebut ke dalam terminal sebagai sumber untuk menyalakan _auto complete_ dari `kubectl`. +Skrip penyelesaian (_completion script_) `kubectl` untuk Bash dapat dibuat dengan perintah `kubectl completion bash`. Masukkan skrip tersebut ke dalam terminal sebagai sumber untuk menyalakan penyelesaian otomatis dari `kubectl`. -Namun, _completion script_ tersebut tergantung dengan [**bash-completion**](https://github.com/scop/bash-completion), yang artinya kamu harus menginstal program tersebut terlebih dahulu. +Namun, skrip penyelesaian tersebut bergantung pada [**bash-completion**](https://github.com/scop/bash-completion), yang artinya kamu harus menginstal program tersebut terlebih dahulu. {{< warning>}} -Terdapat dua versi bash-completion, v1 dan v2. V1 untuk Bash 3.2 (_default_ dari macOs), dan v2 untuk Bash 4.1+. _Completion script_ `kubectl` **tidak kompatibel** dengan bash-completion v1 dan Bash 3.2. Dibutuhkan **bash-completion v2** dan **Bash 4.1+** agar _completion script_ `kubectl` dapat bekerja dengan baik. Maka dari itu, kamu harus menginstal dan menggunakan Bash 4.1+ ([*panduan*](https://itnext.io/upgrading-bash-on-macos-7138bd1066ba)) untuk dapat menggunakan fitur _auto complete_ dari `kubectl`. Ikuti panduan di bawah setelah kamu menginstal Bash 4.1+ (yang artinya Bash versi 4.1 atau lebih baru). +Terdapat dua versi bash-completion, v1 dan v2. V1 untuk Bash 3.2 (bawaan dari macOs), dan v2 untuk Bash 4.1+. Skrip penyelesaian `kubectl` **tidak kompatibel** dengan bash-completion v1 dan Bash 3.2. Dibutuhkan **bash-completion v2** dan **Bash 4.1+** agar skrip penyelesaian `kubectl` dapat bekerja dengan baik. Maka dari itu, kamu harus menginstal dan menggunakan Bash 4.1+ ([*panduan*](https://itnext.io/upgrading-bash-on-macos-7138bd1066ba)) untuk dapat menggunakan fitur penyelesaian otomatis dari `kubectl`. Ikuti panduan di bawah setelah kamu menginstal Bash 4.1+ (yaitu, Bash versi 4.1 atau lebih baru). {{< /warning >}} -### Pembaruan Bash +### Pemutakhiran Bash Panduan di bawah berasumsi kamu menggunakan Bash 4.1+. Kamu dapat memeriksa versi Bash dengan menjalankan: @@ -391,7 +391,7 @@ Panduan di bawah berasumsi kamu menggunakan Bash 4.1+. Kamu dapat memeriksa vers echo $BASH_VERSION ``` -Jika versinya sudah terlalu usang, kamu dapat menginstal/memperbaruinya dengan menggunakan Homebrew: +Jika versinya sudah terlalu usang, kamu dapat menginstal/memutakhirkannya dengan menggunakan Homebrew: ```shell brew install bash @@ -405,10 +405,10 @@ echo $BASH_VERSION $SHELL Homebrew biasanya akan menginstalnya di `/usr/local/bin/bash`. -### Instalasi bash-completion +### Menginstal bash-completion {{< note >}} -Seperti yang sudah disebutkan, panduan di bawah berasumsi kamu menggunakan Bash 4.1+, yang berarti kamu akan menginstal bash-completion v2 (_auto complete_ dari `kubectl` tidak kompatibel dengan Bash 3.2 dan bash-completion v1). +Seperti yang sudah disebutkan, panduan di bawah berasumsi kamu menggunakan Bash 4.1+, yang berarti kamu akan menginstal bash-completion v2 (penyelesaian otomatis dari `kubectl` tidak kompatibel dengan Bash 3.2 dan bash-completion v1). {{< /note >}} Kamu dapat memeriksa apakah kamu sudah memiliki bash-completion v2 dengan perintah `type _init_completion`. Jika belum, kamu dapat menginstalnya dengan menggunakan Homebrew: @@ -417,7 +417,7 @@ Kamu dapat memeriksa apakah kamu sudah memiliki bash-completion v2 dengan perint brew install bash-completion@2 ``` -Seperti yang disarankan keluaran perintah di atas, tambahkan teks berikut ke berkas `~/.bashrc`: +Seperti yang disarankan pada keluaran perintah di atas, tambahkan teks berikut ke berkas `~/.bashrc`: ```shell export BASH_COMPLETION_COMPAT_DIR="/usr/local/etc/bash_completion.d" @@ -426,55 +426,55 @@ export BASH_COMPLETION_COMPAT_DIR="/usr/local/etc/bash_completion.d" Muat ulang terminalmu dan pastikan bash-completion v2 sudah terinstal dengan perintah `type _init_completion`. -### Menyalakan _auto complete_ kubectl +### Menyalakan penyelesaian otomatis kubectl -Sekarang kamu harus memastikan bahwa _completion script_ untuk `kubectl` sudah dimasukkan sebagai sumber _auto complete_ di semua sesi terminal. Kamu dapat melakukannya dengan beberapa cara: +Sekarang kamu harus memastikan bahwa skrip penyelesaian untuk `kubectl` sudah dimasukkan sebagai sumber penyelesaian otomatis di semua sesi terminal. Kamu dapat melakukannya dengan beberapa cara: -- Masukkan _completion script_ sebagai sumber di berkas `~/.bashrc`: +- Masukkan skrip penyelesaian sebagai sumber di berkas `~/.bashrc`: ```shell echo 'source <(kubectl completion bash)' >>~/.bashrc ``` -- Menambahkan _completion script_ ke direktori `/etc/bash_completion.d`: +- Menambahkan skrip penyelesaian ke direktori `/etc/bash_completion.d`: ```shell kubectl completion bash >/etc/bash_completion.d/kubectl ``` -- Jika kamu menggunakan alias untuk `kubectl`, kamu masih dapat menggunakan fitur _auto complete_ dengan menjalankan perintah: +- Jika kamu menggunakan alias untuk `kubectl`, kamu masih dapat menggunakan fitur penyelesaian otomatis dengan menjalankan perintah: ```shell echo 'alias k=kubectl' >>~/.bashrc echo 'complete -F __start_kubectl k' >>~/.bashrc ``` -- Jika kamu menginstal `kubectl` dengan Homebrew (seperti yang sudah dijelaskan [di atas](#install-with-homebrew-on-macos)), maka _completion script_ untuk `kubectl` sudah berada di `/usr/local/etc/bash_completion.d/kubectl`. Kamu tidak perlu melakukan apa-apa lagi. +- Jika kamu menginstal `kubectl` dengan Homebrew (seperti yang sudah dijelaskan [di atas](#install-with-homebrew-on-macos)), maka skrip penyelesaian untuk `kubectl` sudah berada di `/usr/local/etc/bash_completion.d/kubectl`. Kamu tidak perlu melakukan apa-apa lagi. {{< note >}} -bash-completion v2 yang diinstal dengan Homebrew meletakkan semua berkas nya di direktori `BASH_COMPLETION_COMPAT_DIR`, yang membuat dua cara terakhir dapat bekerja. +bash-completion v2 yang diinstal dengan Homebrew meletakkan semua berkas nya di direktori `BASH_COMPLETION_COMPAT_DIR`, itulah alasannya dua cara terakhir dapat bekerja. {{< /note >}} -Setelah memuat ulang terminal, _auto complete_ dari `kubectl` seharusnya sudah dapat bekerja. +Setelah memuat ulang terminal, penyelesaian otomatis dari `kubectl` seharusnya sudah dapat bekerja. {{% /tab %}} {{% tab name="Zsh" %}} -_Completion script_ `kubectl` untuk Zsh dapat dibuat dengan perintah `kubectl completion zsh`. Masukkan skrip tersebut ke dalam terminal sebagai sumber untuk menyalakan _auto complete_ dari `kubectl`. +Skrip penyelesaian (_completion script_) `kubectl` untuk Zsh dapat dibuat dengan perintah `kubectl completion zsh`. Masukkan skrip tersebut ke dalam terminal sebagai sumber untuk menyalakan penyelesaian otomatis dari `kubectl`. -Tambahkan baris berikut di berkas `~/.zshrc` untuk menyalakan _auto complete_ dari `kubectl`: +Tambahkan baris berikut di berkas `~/.zshrc` untuk menyalakan penyelesaian otomatis dari `kubectl`: ```shell source <(kubectl completion zsh) ``` -Jika kamu menggunakan alias untuk `kubectl`, kamu masih dapat menggunakan fitur _auto complete_ dengan menjalankan perintah: +Jika kamu menggunakan alias untuk `kubectl`, kamu masih dapat menggunakan fitur penyelesaian otomatis dengan menjalankan perintah: ```shell echo 'alias k=kubectl' >>~/.zshrc echo 'complete -F __start_kubectl k' >>~/.zshrc ``` -Setelah memuat ulang terminal, _auto complete_ dari `kubectl` seharusnya sudah dapat bekerja. +Setelah memuat ulang terminal, penyelesaian otomatis dari `kubectl` seharusnya sudah dapat bekerja. Jika kamu mendapatkan pesan gagal seperti `complete:13: command not found: compdef`, maka tambahkan teks berikut ke awal berkas `~/.zshrc`: @@ -488,9 +488,9 @@ compinit {{% /capture %}} {{% capture whatsnext %}} -* [Instalasi Minikube](/docs/tasks/tools/install-minikube/) -* Lihat [panduan memulai](/docs/setup/) untuk mencari tahu tentang pembuatan kluster. +* [Menginstal Minikube.](/docs/tasks/tools/install-minikube/) +* Lihat [panduan persiapan](/docs/setup/) untuk mencari tahu tentang pembuatan klaster. * [Pelajari cara untuk menjalankan dan mengekspos aplikasimu.](/docs/tasks/access-application-cluster/service-access-application-cluster/) -* Jika kamu membutuhkan akses ke kluster yang tidak kamu buat, lihat [dokumen Sharing Cluster Access](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/). +* Jika kamu membutuhkan akses ke klaster yang tidak kamu buat, lihat [dokumen Berbagi Akses Klaster](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/). * Baca [dokumen referensi kubectl](/docs/reference/kubectl/kubectl/) {{% /capture %}} From 078527e31d4cb19aa93b3feff646e0723c5a0303 Mon Sep 17 00:00:00 2001 From: viniciusbds Date: Sun, 19 Apr 2020 11:25:37 -0300 Subject: [PATCH 038/244] Add new items to glossary pt content --- .../docs/reference/glossary/control-plane.md | 13 +++++++++++++ content/pt/docs/reference/glossary/kubelet.md | 18 ++++++++++++++++++ content/pt/docs/reference/glossary/node.md | 17 +++++++++++++++++ content/pt/docs/reference/glossary/pod.md | 17 +++++++++++++++++ 4 files changed, 65 insertions(+) create mode 100644 content/pt/docs/reference/glossary/control-plane.md create mode 100755 content/pt/docs/reference/glossary/kubelet.md create mode 100755 content/pt/docs/reference/glossary/node.md create mode 100755 content/pt/docs/reference/glossary/pod.md diff --git a/content/pt/docs/reference/glossary/control-plane.md b/content/pt/docs/reference/glossary/control-plane.md new file mode 100644 index 0000000000..4befb3bb05 --- /dev/null +++ b/content/pt/docs/reference/glossary/control-plane.md @@ -0,0 +1,13 @@ +--- +title: Control Plane +id: control-plane +date: 2020-04-19 +full_link: +short_description: > + A camada de orquestração de contêiner que expõe a API e as interfaces para definir, implantar e gerenciar o ciclo de vida dos contêineres. + +aka: +tags: +- fundamental +--- + A camada de orquestração de contêiner que expõe a API e as interfaces para definir, implantar e gerenciar o ciclo de vida dos contêineres. diff --git a/content/pt/docs/reference/glossary/kubelet.md b/content/pt/docs/reference/glossary/kubelet.md new file mode 100755 index 0000000000..a2ad453eed --- /dev/null +++ b/content/pt/docs/reference/glossary/kubelet.md @@ -0,0 +1,18 @@ +--- +title: Kubelet +id: kubelet +date: 2020-04-19 +full_link: /docs/reference/generated/kubelet +short_description: > + Um agente que é executado em cada node no cluster. Ele garante que os contêineres estejam sendo executados em um pod. + +aka: +tags: +- fundamental +- core-object +--- + Um agente que é executado em cada {{< glossary_tooltip text="node" term_id="node" >}} no cluster. Ele garante que os {{< glossary_tooltip text="Containers" term_id="container" >}} estejam sendo executados em um {{< glossary_tooltip text="Pod" term_id="pod" >}}. + + + +O kubelet utiliza um conjunto de PodSpecs que são fornecidos por vários mecanismos e garante que os contêineres descritos nesses PodSpecs estejam funcionando corretamente. O kubelet não gerencia contêineres que não foram criados pelo Kubernetes. diff --git a/content/pt/docs/reference/glossary/node.md b/content/pt/docs/reference/glossary/node.md new file mode 100755 index 0000000000..37c88c0343 --- /dev/null +++ b/content/pt/docs/reference/glossary/node.md @@ -0,0 +1,17 @@ +--- +title: Node +id: node +date: 2020-04-19 +full_link: /docs/concepts/architecture/nodes/ +short_description: > + Um Node é uma máquina de trabalho no Kubernetes. + +aka: +tags: +- fundamental +--- + Um Node é uma máquina de trabalho no Kubernetes. + + + +Um Node pode ser uma máquina virtual ou física, dependendo do cluster. Possui daemons ou serviços locais necessários para executar {{< glossary_tooltip text="Pods" term_id="pod" >}} e é gerenciado pelo {{< glossary_tooltip text="plano de controle" term_id="control-plane" >}}. Os daemons em um Node incluem {{< glossary_tooltip text="kubelet" term_id="kubelet" >}}, {{< glossary_tooltip text="kube-proxy" term_id="kube-proxy" >}} e um contêiner runtime implementando o {{< glossary_tooltip text="CRI" term_id="cri" >}} como por exemplo o {{< glossary_tooltip term_id="docker" >}}. \ No newline at end of file diff --git a/content/pt/docs/reference/glossary/pod.md b/content/pt/docs/reference/glossary/pod.md new file mode 100755 index 0000000000..9f6e21d6b3 --- /dev/null +++ b/content/pt/docs/reference/glossary/pod.md @@ -0,0 +1,17 @@ +--- +title: Pod +id: pod +date: 2020-04-19 +full_link: /docs/concepts/workloads/pods/pod-overview/ +short_description: > + O menor e mais simples objeto Kubernetes. Um Pod representa um conjunto de contêineres em execução no seu cluster. +aka: +tags: +- core-object +- fundamental +--- + O menor e mais simples objeto Kubernetes. Um Pod representa um conjunto de {{< glossary_tooltip text="contêineres" term_id="container" >}} em execução no seu cluster. + + + +Um Pod é normalmente configurado para executar um único contêiner primário. Ele também pode executar contêineres opcionais que adicionam recursos adicionais, como registro em log. Os pods são geralmente gerenciados por um {{< glossary_tooltip term_id="deployment" >}}. \ No newline at end of file From 1b818887b2da583c739c268829dbf706bd7edf53 Mon Sep 17 00:00:00 2001 From: viniciusbds Date: Mon, 20 Apr 2020 16:07:39 -0300 Subject: [PATCH 039/244] Translate content/pt/docs/concepts/scheduling/kube-scheduler.md page to portuguese --- content/pt/docs/concepts/scheduling/_index.md | 5 + .../concepts/scheduling/kube-scheduler.md | 96 +++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 content/pt/docs/concepts/scheduling/_index.md create mode 100644 content/pt/docs/concepts/scheduling/kube-scheduler.md diff --git a/content/pt/docs/concepts/scheduling/_index.md b/content/pt/docs/concepts/scheduling/_index.md new file mode 100644 index 0000000000..577dbb8c87 --- /dev/null +++ b/content/pt/docs/concepts/scheduling/_index.md @@ -0,0 +1,5 @@ +--- +title: "Escalonamento" +weight: 90 +--- + diff --git a/content/pt/docs/concepts/scheduling/kube-scheduler.md b/content/pt/docs/concepts/scheduling/kube-scheduler.md new file mode 100644 index 0000000000..6dcaddf88d --- /dev/null +++ b/content/pt/docs/concepts/scheduling/kube-scheduler.md @@ -0,0 +1,96 @@ +--- +title: Escalonador Kubernetes +date: 2020-04-19 +content_template: templates/concept +weight: 50 +--- + +{{% capture overview %}} + +No Kubernetes, _escalonamento_ refere-se a garantir que os {{< glossary_tooltip text="Pods" term_id="pod" >}} +sejam correspondidos aos {{< glossary_tooltip text="Nodes" term_id="node" >}} para que o +{{< glossary_tooltip text="Kubelet" term_id="kubelet" >}} possa executá-los. + + +{{% /capture %}} + +{{% capture body %}} + +## Visão geral do Escalonamento {#scheduling} + +Um escalonadordor observa Pods recém-criados que não possuem Nó designado. +Para cada Pod que o planejador descobre, ele se torna responsável por +encontrar o melhor Node para execução do Pod. O escalonador chega a essa decisão de alocação levando em consideração os princípios de programação descritos abaixo. + +Se você quiser entender por que os Pods são alocados em um nó específico +ou se planeja implementar um escalonador personalizado, esta página ajudará você a +aprender sobre escalonamento. + + +## kube-scheduler + +[kube-scheduler](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-scheduler/) +é o escalonador padrão do Kubernetes e é executado como parte do +{{< glossary_tooltip text="control plane" term_id="control-plane" >}}. +O kube-scheduler foi projetado para que, se você quiser e precisar, possa +escreva seu próprio componente de escalonamento e use-o. + +Para cada pod recém-criado ou outros pods não escalonados, o kube-scheduler +seleciona um Nó ideal para execução. No entanto, todos os contêineres nos pods +têm requisitos diferentes de recursos e cada pod também possui requisitos diferentes. +Portanto, os Nodes existentes precisam ser filtrados de acordo com os requisitos de +escalonamento específicos. + +Em um cluster, Nodes que atendem aos requisitos de escalonamento para um Pod +são chamados de Nodes _viáveis_. Se nenhum dos Nodes for adequado, o pod +permanece não escalonado até que o escalonador possa alocá-lo. + +O escalonador encontra Nodes viáveis para um Pod e, em seguida, executa um conjunto de +funções para pontuar os Nodes viáveis e escolhe um Node com a maior +pontuação entre os possíveis para executar o Pod. O agendador então notifica +o servidor da API sobre essa decisão em um processo chamado _binding_. + +Fatores que precisam ser levados em consideração para decisões de escalonamento incluem +requisitos individuais e coletivos de recursos, +restrições de política hardware / software /, especificações de afinidade e anti-afinidade, +localidade de dados, interferência entre cargas de trabalho e assim por diante. + + +### Seleção do Node no kube-scheduler {#kube-scheduler-implementation} + +O kube-scheduler seleciona um Node para o pod em uma operação que consiste em duas etapas: + +1. Filtragem +1. Pontuação + +A etapa _filtragem_ localiza o conjunto de Nós onde é possível +agendar o Pod. Por exemplo, o filtro PodFitsResources verifica se um Node +candidato possui recursos disponíveis suficientes para atender às solicitações +de recursos específicas de um Pod. Após esta etapa, a lista de Nodes contém +quaisquer nós adequados; frequentemente, haverá mais de um. Se a lista estiver vazia, +esse Pod (ainda) não é escalonável. + +Na etapa _pontuação_, o escalonador classifica os nós restantes para escolher +o posicionamento do Pod mais adequado. O escalonador atribui uma pontuação a cada Nó +que sobreviveram à filtragem, baseando essa pontuação nas regras de pontuação ativa. + +Por fim, o kube-scheduler atribui o Pod ao Nó com a classificação mais alta. +Se houver mais de um Nó com pontuações iguais, o kube-scheduler seleciona +um deles aleatoriamente. + +Existem duas maneiras suportadas de configurar o comportamento de filtragem e pontuação +do escalonador: + +1. [Políticas de Escalonamento](/docs/reference/scheduling/policies) permitem configurar _Predicados_ para filtragem e _Prioridades_ para pontuação. + +1. [Perfis de Escalonamento](/docs/reference/scheduling/profiles) permitem configurar Plugins que implementam diferentes estágios de escalonamento, incluindo: `QueueSort`, `Filter`, `Score`, `Bind`, `Reserve`, `Permit`, e outros. Você também pode configurar o kube-scheduler para executar diferentes perfis. + +{{% /capture %}} +{{% capture whatsnext %}} +* Leia sobre [scheduler performance tuning](/docs/concepts/scheduling/scheduler-perf-tuning/) +* Leia sobre [Pod topology spread constraints](/docs/concepts/workloads/pods/pod-topology-spread-constraints/) +* Leia o [reference documentation](/docs/reference/command-line-tools-reference/kube-scheduler/) para o kube-scheduler +* Aprenda sobre [configuring multiple schedulers](/docs/tasks/administer-cluster/configure-multiple-schedulers/) +* Aprenda sobre [topology management policies](/docs/tasks/administer-cluster/topology-manager/) +* Aprenda sobre [Pod Overhead](/docs/concepts/configuration/pod-overhead/) +{{% /capture %}} From 03efab821c59bd438403a3caaa672a0e1a2f4095 Mon Sep 17 00:00:00 2001 From: viniciusbds Date: Mon, 20 Apr 2020 16:42:01 -0300 Subject: [PATCH 040/244] Make some adjusts on content/pt/docs/concepts/scheduling/kube-scheduler.md page --- .../concepts/scheduling/kube-scheduler.md | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/content/pt/docs/concepts/scheduling/kube-scheduler.md b/content/pt/docs/concepts/scheduling/kube-scheduler.md index 6dcaddf88d..a340467640 100644 --- a/content/pt/docs/concepts/scheduling/kube-scheduler.md +++ b/content/pt/docs/concepts/scheduling/kube-scheduler.md @@ -18,11 +18,11 @@ sejam correspondidos aos {{< glossary_tooltip text="Nodes" term_id="node" >}} pa ## Visão geral do Escalonamento {#scheduling} -Um escalonadordor observa Pods recém-criados que não possuem Nó designado. +Um escalonadordor observa Pods recém-criados que não possuem um Node atribuído. Para cada Pod que o planejador descobre, ele se torna responsável por encontrar o melhor Node para execução do Pod. O escalonador chega a essa decisão de alocação levando em consideração os princípios de programação descritos abaixo. -Se você quiser entender por que os Pods são alocados em um nó específico +Se você quiser entender por que os Pods são alocados em um Node específico ou se planeja implementar um escalonador personalizado, esta página ajudará você a aprender sobre escalonamento. @@ -33,49 +33,49 @@ aprender sobre escalonamento. é o escalonador padrão do Kubernetes e é executado como parte do {{< glossary_tooltip text="control plane" term_id="control-plane" >}}. O kube-scheduler foi projetado para que, se você quiser e precisar, possa -escreva seu próprio componente de escalonamento e use-o. +escrever seu próprio componente de escalonamento e usá-lo. -Para cada pod recém-criado ou outros pods não escalonados, o kube-scheduler -seleciona um Nó ideal para execução. No entanto, todos os contêineres nos pods -têm requisitos diferentes de recursos e cada pod também possui requisitos diferentes. +Para cada Pod recém-criado ou outros Pods não escalonados, o kube-scheduler +seleciona um Node ideal para execução. No entanto, todos os contêineres nos Pods +têm requisitos diferentes de recursos e cada Pod também possui requisitos diferentes. Portanto, os Nodes existentes precisam ser filtrados de acordo com os requisitos de escalonamento específicos. Em um cluster, Nodes que atendem aos requisitos de escalonamento para um Pod -são chamados de Nodes _viáveis_. Se nenhum dos Nodes for adequado, o pod +são chamados de Nodes _viáveis_. Se nenhum dos Nodes for adequado, o Pod permanece não escalonado até que o escalonador possa alocá-lo. O escalonador encontra Nodes viáveis para um Pod e, em seguida, executa um conjunto de funções para pontuar os Nodes viáveis e escolhe um Node com a maior -pontuação entre os possíveis para executar o Pod. O agendador então notifica +pontuação entre os possíveis para executar o Pod. O escalonador então notifica o servidor da API sobre essa decisão em um processo chamado _binding_. Fatores que precisam ser levados em consideração para decisões de escalonamento incluem requisitos individuais e coletivos de recursos, -restrições de política hardware / software /, especificações de afinidade e anti-afinidade, +restrições de política hardware / software, especificações de afinidade e anti-afinidade, localidade de dados, interferência entre cargas de trabalho e assim por diante. ### Seleção do Node no kube-scheduler {#kube-scheduler-implementation} -O kube-scheduler seleciona um Node para o pod em uma operação que consiste em duas etapas: +O kube-scheduler seleciona um Node para o Pod em uma operação que consiste em duas etapas: 1. Filtragem 1. Pontuação -A etapa _filtragem_ localiza o conjunto de Nós onde é possível -agendar o Pod. Por exemplo, o filtro PodFitsResources verifica se um Node +A etapa de _filtragem_ localiza o conjunto de Nodes onde é possível +alocar o Pod. Por exemplo, o filtro PodFitsResources verifica se um Node candidato possui recursos disponíveis suficientes para atender às solicitações de recursos específicas de um Pod. Após esta etapa, a lista de Nodes contém -quaisquer nós adequados; frequentemente, haverá mais de um. Se a lista estiver vazia, +quaisquer Nodes adequados; frequentemente, haverá mais de um. Se a lista estiver vazia, esse Pod (ainda) não é escalonável. -Na etapa _pontuação_, o escalonador classifica os nós restantes para escolher -o posicionamento do Pod mais adequado. O escalonador atribui uma pontuação a cada Nó +Na etapa de _pontuação_, o escalonador classifica os Nodes restantes para escolher +o mais adequado. O escalonador atribui uma pontuação a cada Node que sobreviveram à filtragem, baseando essa pontuação nas regras de pontuação ativa. -Por fim, o kube-scheduler atribui o Pod ao Nó com a classificação mais alta. -Se houver mais de um Nó com pontuações iguais, o kube-scheduler seleciona +Por fim, o kube-scheduler atribui o Pod ao Node com a classificação mais alta. +Se houver mais de um Node com pontuações iguais, o kube-scheduler seleciona um deles aleatoriamente. Existem duas maneiras suportadas de configurar o comportamento de filtragem e pontuação @@ -87,10 +87,10 @@ do escalonador: {{% /capture %}} {{% capture whatsnext %}} -* Leia sobre [scheduler performance tuning](/docs/concepts/scheduling/scheduler-perf-tuning/) -* Leia sobre [Pod topology spread constraints](/docs/concepts/workloads/pods/pod-topology-spread-constraints/) -* Leia o [reference documentation](/docs/reference/command-line-tools-reference/kube-scheduler/) para o kube-scheduler -* Aprenda sobre [configuring multiple schedulers](/docs/tasks/administer-cluster/configure-multiple-schedulers/) -* Aprenda sobre [topology management policies](/docs/tasks/administer-cluster/topology-manager/) +* Leia sobre [ajuste de desempenho do escalonador](/docs/concepts/scheduling/scheduler-perf-tuning/) +* Leia sobre [restrições de propagação da topologia de pod](/docs/concepts/workloads/pods/pod-topology-spread-constraints/) +* Leia a [documentação de referência](/docs/reference/command-line-tools-reference/kube-scheduler/) para o kube-scheduler +* Aprenda como [configurar vários escalonadores](/docs/tasks/administer-cluster/configure-multiple-schedulers/) +* Aprenda sobre [políticas de gerenciamento de topologia](/docs/tasks/administer-cluster/topology-manager/) * Aprenda sobre [Pod Overhead](/docs/concepts/configuration/pod-overhead/) {{% /capture %}} From b867cdf2f1d8f1f75df4da051cdc0bc7346f2e7a Mon Sep 17 00:00:00 2001 From: viniciusbds Date: Mon, 20 Apr 2020 16:43:49 -0300 Subject: [PATCH 041/244] Make some adjusts on content/pt/docs/concepts/scheduling/kube-scheduler.md page --- content/pt/docs/concepts/scheduling/kube-scheduler.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/pt/docs/concepts/scheduling/kube-scheduler.md b/content/pt/docs/concepts/scheduling/kube-scheduler.md index a340467640..08ecd018b5 100644 --- a/content/pt/docs/concepts/scheduling/kube-scheduler.md +++ b/content/pt/docs/concepts/scheduling/kube-scheduler.md @@ -1,5 +1,5 @@ --- -title: Escalonador Kubernetes +title: Escalonador do Kubernetes date: 2020-04-19 content_template: templates/concept weight: 50 From aaa1a5b7863af9b9b915da43549a3ad95b2b241a Mon Sep 17 00:00:00 2001 From: Vinicius Barbosa Date: Tue, 21 Apr 2020 10:16:03 -0300 Subject: [PATCH 042/244] Update content/pt/docs/concepts/scheduling/kube-scheduler.md Co-Authored-By: Jhon Mike --- content/pt/docs/concepts/scheduling/kube-scheduler.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/pt/docs/concepts/scheduling/kube-scheduler.md b/content/pt/docs/concepts/scheduling/kube-scheduler.md index 08ecd018b5..848f35656e 100644 --- a/content/pt/docs/concepts/scheduling/kube-scheduler.md +++ b/content/pt/docs/concepts/scheduling/kube-scheduler.md @@ -18,7 +18,7 @@ sejam correspondidos aos {{< glossary_tooltip text="Nodes" term_id="node" >}} pa ## Visão geral do Escalonamento {#scheduling} -Um escalonadordor observa Pods recém-criados que não possuem um Node atribuído. +Um escalonador observa Pods recém-criados que não possuem um Node atribuído. Para cada Pod que o planejador descobre, ele se torna responsável por encontrar o melhor Node para execução do Pod. O escalonador chega a essa decisão de alocação levando em consideração os princípios de programação descritos abaixo. From 56b5267d9173180c5155b7ca6410587bce66f172 Mon Sep 17 00:00:00 2001 From: Vinicius Barbosa Date: Tue, 21 Apr 2020 10:16:40 -0300 Subject: [PATCH 043/244] Update content/pt/docs/concepts/scheduling/kube-scheduler.md Co-Authored-By: Jhon Mike --- content/pt/docs/concepts/scheduling/kube-scheduler.md | 1 - 1 file changed, 1 deletion(-) diff --git a/content/pt/docs/concepts/scheduling/kube-scheduler.md b/content/pt/docs/concepts/scheduling/kube-scheduler.md index 848f35656e..d316fafef2 100644 --- a/content/pt/docs/concepts/scheduling/kube-scheduler.md +++ b/content/pt/docs/concepts/scheduling/kube-scheduler.md @@ -26,7 +26,6 @@ Se você quiser entender por que os Pods são alocados em um Node específico ou se planeja implementar um escalonador personalizado, esta página ajudará você a aprender sobre escalonamento. - ## kube-scheduler [kube-scheduler](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-scheduler/) From 9e775198d86c172124175539045604058f46a19f Mon Sep 17 00:00:00 2001 From: Vinicius Barbosa Date: Tue, 21 Apr 2020 10:16:51 -0300 Subject: [PATCH 044/244] Update content/pt/docs/concepts/scheduling/kube-scheduler.md Co-Authored-By: Jhon Mike --- content/pt/docs/concepts/scheduling/kube-scheduler.md | 1 - 1 file changed, 1 deletion(-) diff --git a/content/pt/docs/concepts/scheduling/kube-scheduler.md b/content/pt/docs/concepts/scheduling/kube-scheduler.md index d316fafef2..fbbbf99977 100644 --- a/content/pt/docs/concepts/scheduling/kube-scheduler.md +++ b/content/pt/docs/concepts/scheduling/kube-scheduler.md @@ -11,7 +11,6 @@ No Kubernetes, _escalonamento_ refere-se a garantir que os {{< glossary_tooltip sejam correspondidos aos {{< glossary_tooltip text="Nodes" term_id="node" >}} para que o {{< glossary_tooltip text="Kubelet" term_id="kubelet" >}} possa executá-los. - {{% /capture %}} {{% capture body %}} From b30e8d76d128ca2e82a5a77d176c42887bd8d332 Mon Sep 17 00:00:00 2001 From: Aris Cahyadi Risdianto Date: Thu, 23 Apr 2020 00:23:14 +0800 Subject: [PATCH 045/244] Fixed Wording from previous PR. --- .../services-networking/service-topology.md | 60 +++++++------------ 1 file changed, 22 insertions(+), 38 deletions(-) diff --git a/content/id/docs/concepts/services-networking/service-topology.md b/content/id/docs/concepts/services-networking/service-topology.md index 84028ff63f..1480589589 100644 --- a/content/id/docs/concepts/services-networking/service-topology.md +++ b/content/id/docs/concepts/services-networking/service-topology.md @@ -1,7 +1,7 @@ --- -title: Topologi Service (_Service Topology_) +title: Topologi Service (Service Topology) feature: - title: Topologi Service (_Service Topology_) + title: Topologi Service (Service Topology) description: > Rute lalu lintas layanan berdasarkan topologi klaster. @@ -26,7 +26,7 @@ _availability zone_ yang sama. ## Pengantar -Secara _default_, lalu lintas jaringan yang dikirim ke `ClusterIP` atau` NodePort` dari Service +Secara bawaan lalu lintas jaringan yang dikirim ke `ClusterIP` atau` NodePort` dari Service dapat dialihkan ke alamat _backend_ untuk Service tersebut. Sejak Kubernetes 1.7 dimungkinkan untuk merutekan lalu lintas jaringan "eksternal" ke Pod yang berjalan di Node yang menerima lalu lintas jaringan, tetapi fitur ini tidak didukung untuk `ClusterIP` dari @@ -36,20 +36,20 @@ mengizinkan pembuat layanan untuk mendefinisikan kebijakan dalam merutekan lalu berdasarkan label Node untuk Node-Node asal dan tujuan. Dengan menggunakan label Node yang sesuai antara asal dan tujuan, operator dapat -menunjuk kelompok Node yang "lebih dekat" dan "lebih jauh" antara satu sama lain, +menunjuk kelompok Node mana yang "lebih dekat" dan mana yang "lebih jauh" antara satu sama lain, dengan menggunakan metrik apa pun yang masuk akal untuk memenuhi persyaratan -dari operator itu. Untuk sebagian besar operator di _cloud_ publik, misalnya, ada +dari operator itu. Untuk sebagian besar operator di publik _cloud_, misalnya, ada preferensi untuk menjaga layanan lalu lintas jaringan dalam zona yang sama, karena lalu lintas jaringan antar zona memiliki biaya yang dibebankan, sementara lalu lintas jaringan dalam zona yang sama tidak ada biaya. Kebutuhan umum lainnya termasuk kemampuan untuk merutekan lalu lintas jaringan ke Pod lokal yang dikelola oleh sebuah DaemonSet, atau menjaga lalu lintas jaringan ke Node yang terhubung ke _top-of-rack switch_ yang sama untuk mendapatkan -latensi terendah. +latensi yang terendah. ## Menggunakan Topologi Service -Jika klaster kamu mengaktifkan topologi layanan kamu dapat mengontrol rute lalu lintas jaringan Service +Jika klaster kamu mengaktifkan topologi Service kamu dapat mengontrol rute lalu lintas jaringan Service dengan mengatur bagian `topologyKeys` pada spesifikasi Service. Bagian ini adalah daftar urutan label-label Node yang akan digunakan untuk mengurutkan _endpoint_ saat mengakses Service ini. Lalu lintas jaringan akan diarahkan ke Node yang nilai @@ -62,7 +62,7 @@ sama sekali _backend_ untuk Service tersebut. Artinya, _endpoint_ dipilih berdasarkan kunci topologi yang pertama yang tersedia pada _backend_. Jika dalam bagian ini ditentukan dan semua entri tidak memiliki _backend_ yang sesuai dengan topologi klien, maka Service tidak memiliki _backend_ untuk klien dan koneksi harus -digagalkan. Nilai khusus `" * "` dapat digunakan untuk mengartikan "topologi +digagalkan. Nilai khusus `"*"` dapat digunakan untuk mengartikan "topologi apa saja". Nilai _catch-all_ ini, jika digunakan, maka hanya sebagai nilai terakhir dalam daftar. @@ -73,32 +73,17 @@ Seandainya sebuah klaster dengan Node yang dilabeli dengan nama _host_ , nama zona, dan nama wilayah mereka, maka kamu dapat mengatur nilai `topologyKeys` dari sebuah Service untuk mengarahkan lalu lintas jaringan seperti berikut ini. -* Hanya ke _endpoint_ dalam Node yang sama, gagal jika tidak ada _endpoint_ pada - Node: `[" kubernetes.io/hostname "]`. -* Lebih memilih ke _endpoint_ dalam Node yang sama, jika tidak ditemukan maka ke _endpoint_ pada -  zona yang sama, diikuti oleh wilayah yang sama, dan selain itu gagal: - `[" kubernetes.io/hostname ", "topology.kubernetes.io/zone", "topology.kubernetes.io/region"] `. -  Ini mungkin berguna, misalnya, dalam kasus di mana lokalitas data sangat penting. -* Lebih memilih ke _endpoint_ dalam zona yang sama, tetapi memilih _endpoint_ mana saja yang - tersedia apabila tidak ada yang tersedia dalam zona ini: -  `[" topology.kubernetes.io/zone "," * "]`. +* Hanya ke _endpoint_ dalam Node yang sama, gagal jika tidak ada _endpoint_ pada Node: `["kubernetes.io/hostname"]`. +* Lebih memilih ke _endpoint_ dalam Node yang sama, jika tidak ditemukan maka ke _endpoint_ pada zona yang sama, diikuti oleh wilayah yang sama, dan selain itu akan gagal: `["kubernetes.io/hostname ", "topology.kubernetes.io/zone", "topology.kubernetes.io/region"]`. Ini mungkin berguna, misalnya, dalam kasus di mana lokalitas data sangatlah penting. +* Lebih memilih ke _endpoint_ dalam zona yang sama, tetapi memilih _endpoint_ mana saja yang tersedia apabila tidak ada yang tersedia dalam zona ini: `["topology.kubernetes.io/zone ","*"]`. ## Batasan -* Topologi Service tidak kompatibel dengan `externalTrafficPolicy=Local`, dan -   karena itu Service tidak dapat menggunakan kedua fitur ini sekaligus. Dimungkinkan untuk menggunakan -   kedua fitur pada klaster yang sama untuk Service yang berbeda, bukan untuk -   Service yang sama. - -* Untuk saat ini kunci topologi yang valid hanya terbatas pada `kubernetes.io/hostname`, -   `topology.kubernetes.io/zone`, dan` topology.kubernetes.io/region`, tetapi akan -   digeneralisasikan ke label Node yang lain di masa depan. - +* Topologi Service tidak kompatibel dengan `externalTrafficPolicy=Local`, dan karena itu Service tidak dapat menggunakan kedua fitur ini sekaligus. Dimungkinkan untuk menggunakan kedua fitur pada klaster yang sama untuk Service yang berbeda, bukan untuk Service yang sama. +* Untuk saat ini kunci topologi yang valid hanya terbatas pada `kubernetes.io/hostname`, `topology.kubernetes.io/zone`, dan `topology.kubernetes.io/region`, tetapi akan digeneralisasikan ke label Node yang lain di masa depan. * Kunci topologi harus merupakan kunci label yang valid dan paling banyak hanya 16 kunci yang dapat ditentukan. - -* Nilai _catch-all_, `" * "`, harus menjadi nilai terakhir pada kunci topologi, jika -   nilai itu digunakan. +* Nilai _catch-all_, `"*"`, harus menjadi nilai terakhir pada kunci topologi, jika nilai itu digunakan. ## Contoh @@ -127,7 +112,7 @@ spec: ### Lebih memilih _endpoint_ pada Node lokal -Service yang lebih memilih _endpoint_ pada Node lokal tetapi akan memilih ke _endpoint_ +Service yang lebih memilih _endpoint_ pada Node lokal, namun akan memilih ke _endpoint_ dalam klaster jika _endpoint_ pada Node lokal tidak ada: ```yaml @@ -148,10 +133,10 @@ spec: ``` -### Hanya untuk _endpoint_ pada Zona atau Wilayah +### Hanya untuk _endpoint_ pada zona atau wilayah yang sama -Service yang lebih memilih _endpoint_ zona daripada wilayah. Jika tidak ada _endpoint_ pada -keduanya, make lalu lintas jaringan akan dihentikan. +Service yang lebih memilih _endpoint_ dalam zona yang sama daripada wilayah yang sama. Jika tidak ada _endpoint_ pada +keduanya, maka lalu lintas jaringan akan dihentikan. ```yaml @@ -171,10 +156,10 @@ spec: - "topology.kubernetes.io/region" ``` -### Lebih memilih _endpoint_ pada Node Lokal, Zonal, terakhir Regional +### Lebih memilih _endpoint_ pada Node lokal, zona yang sama, dan kemudian wilayah yang sama -Service yang lebih memilih _endpoint_ pada Node lokal, zonal, kemudian regional -tetapi jika tetap tidak ditemukan maka akan memilih _endpoint_ diseluruh klaster. +Service yang lebih memilih _endpoint_ pada Node lokal, zona yang sama, dan kemudian baru wilayah yang sama, +namun jika tetap tidak ditemukan maka akan memilih _endpoint_ diseluruh klaster. ```yaml apiVersion: v1 @@ -195,7 +180,6 @@ spec: - "*" ``` - {{% /capture %}} {{% capture whatsnext %}} @@ -203,4 +187,4 @@ spec: * Baca tentang [mengaktifkan topologi Service](/docs/tasks/administer-cluster/enabling-service-topology) * Baca [menghubungkan aplikasi dengan Service](/docs/concepts/services-networking/connect-applications-service/) -{{% /capture %}} +{{% /capture %}} \ No newline at end of file From 2db2a4eb4ebb97c1952eb4a4b0596a899fc501bd Mon Sep 17 00:00:00 2001 From: TrishaChetani Date: Thu, 23 Apr 2020 14:53:32 +0200 Subject: [PATCH 046/244] Added podman as experimental driver --- content/en/docs/setup/learning-environment/minikube.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/en/docs/setup/learning-environment/minikube.md b/content/en/docs/setup/learning-environment/minikube.md index ed9578452a..412edade74 100644 --- a/content/en/docs/setup/learning-environment/minikube.md +++ b/content/en/docs/setup/learning-environment/minikube.md @@ -200,6 +200,7 @@ plugins. * virtualbox * vmwarefusion +* Podman (EXPERIMENTAL)([driver installation](https://minikube.sigs.k8s.io/docs/drivers/podman/) * docker ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/docker/) * kvm2 ([driver installation](https://minikube.sigs.k8s.io/docs/reference/drivers/kvm2/)) * hyperkit ([driver installation](https://minikube.sigs.k8s.io/docs/reference/drivers/hyperkit/)) From d18f057cd7be868aacab0a8ff5cd72026179c085 Mon Sep 17 00:00:00 2001 From: TrishaChetani Date: Thu, 23 Apr 2020 15:55:57 +0200 Subject: [PATCH 047/244] Removed experimental --- content/en/docs/setup/learning-environment/minikube.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/setup/learning-environment/minikube.md b/content/en/docs/setup/learning-environment/minikube.md index 412edade74..0d1302a65b 100644 --- a/content/en/docs/setup/learning-environment/minikube.md +++ b/content/en/docs/setup/learning-environment/minikube.md @@ -200,7 +200,7 @@ plugins. * virtualbox * vmwarefusion -* Podman (EXPERIMENTAL)([driver installation](https://minikube.sigs.k8s.io/docs/drivers/podman/) +* Podman ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/podman/) * docker ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/docker/) * kvm2 ([driver installation](https://minikube.sigs.k8s.io/docs/reference/drivers/kvm2/)) * hyperkit ([driver installation](https://minikube.sigs.k8s.io/docs/reference/drivers/hyperkit/)) From 2ec8b5cf430b55b459676db18903f79c7824e189 Mon Sep 17 00:00:00 2001 From: TrishaChetani Date: Thu, 23 Apr 2020 21:31:55 +0200 Subject: [PATCH 048/244] Added the experimental for podman --- content/en/docs/setup/learning-environment/minikube.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/setup/learning-environment/minikube.md b/content/en/docs/setup/learning-environment/minikube.md index 0d1302a65b..6895412453 100644 --- a/content/en/docs/setup/learning-environment/minikube.md +++ b/content/en/docs/setup/learning-environment/minikube.md @@ -200,7 +200,7 @@ plugins. * virtualbox * vmwarefusion -* Podman ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/podman/) +* Podman ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/podman/) EXPERIMENTAL * docker ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/docker/) * kvm2 ([driver installation](https://minikube.sigs.k8s.io/docs/reference/drivers/kvm2/)) * hyperkit ([driver installation](https://minikube.sigs.k8s.io/docs/reference/drivers/hyperkit/)) From 62ffb404eea0906788455b876d106856b9e1d59d Mon Sep 17 00:00:00 2001 From: TrishaChetani Date: Thu, 23 Apr 2020 23:12:53 +0200 Subject: [PATCH 049/244] Added missing bracket --- content/en/docs/setup/learning-environment/minikube.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/setup/learning-environment/minikube.md b/content/en/docs/setup/learning-environment/minikube.md index 6895412453..ada860052a 100644 --- a/content/en/docs/setup/learning-environment/minikube.md +++ b/content/en/docs/setup/learning-environment/minikube.md @@ -200,8 +200,8 @@ plugins. * virtualbox * vmwarefusion -* Podman ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/podman/) EXPERIMENTAL -* docker ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/docker/) +* Podman ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/podman/)) EXPERIMENTAL +* docker ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/docker/)) * kvm2 ([driver installation](https://minikube.sigs.k8s.io/docs/reference/drivers/kvm2/)) * hyperkit ([driver installation](https://minikube.sigs.k8s.io/docs/reference/drivers/hyperkit/)) * hyperv ([driver installation](https://minikube.sigs.k8s.io/docs/reference/drivers/hyperv/)) From 08c4419814de121a488b5a6b276c0b685ca8152a Mon Sep 17 00:00:00 2001 From: TrishaChetani Date: Thu, 23 Apr 2020 23:30:53 +0200 Subject: [PATCH 050/244] Added podman preferred driver --- content/en/docs/setup/learning-environment/minikube.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/content/en/docs/setup/learning-environment/minikube.md b/content/en/docs/setup/learning-environment/minikube.md index ada860052a..5c05f4d31a 100644 --- a/content/en/docs/setup/learning-environment/minikube.md +++ b/content/en/docs/setup/learning-environment/minikube.md @@ -197,11 +197,10 @@ minikube start --driver= See [DRIVERS](https://minikube.sigs.k8s.io/docs/reference/drivers/) for details on supported drivers and how to install plugins. {{< /note >}} - -* virtualbox +* docker ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/docker/))(PREFERRED) +* virtualbox ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/virtualbox/)) * vmwarefusion -* Podman ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/podman/)) EXPERIMENTAL -* docker ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/docker/)) +* Podman ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/podman/)) (EXPERIMENTAL) * kvm2 ([driver installation](https://minikube.sigs.k8s.io/docs/reference/drivers/kvm2/)) * hyperkit ([driver installation](https://minikube.sigs.k8s.io/docs/reference/drivers/hyperkit/)) * hyperv ([driver installation](https://minikube.sigs.k8s.io/docs/reference/drivers/hyperv/)) From 7436f2dbe5da62c06e925ef3c65dd3753f87d1d9 Mon Sep 17 00:00:00 2001 From: TrishaChetani Date: Thu, 23 Apr 2020 23:37:52 +0200 Subject: [PATCH 051/244] Added space --- content/en/docs/setup/learning-environment/minikube.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/setup/learning-environment/minikube.md b/content/en/docs/setup/learning-environment/minikube.md index 5c05f4d31a..a4ec0a2726 100644 --- a/content/en/docs/setup/learning-environment/minikube.md +++ b/content/en/docs/setup/learning-environment/minikube.md @@ -197,7 +197,7 @@ minikube start --driver= See [DRIVERS](https://minikube.sigs.k8s.io/docs/reference/drivers/) for details on supported drivers and how to install plugins. {{< /note >}} -* docker ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/docker/))(PREFERRED) +* docker([driver installation](https://minikube.sigs.k8s.io/docs/drivers/docker/)) (PREFERRED) * virtualbox ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/virtualbox/)) * vmwarefusion * Podman ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/podman/)) (EXPERIMENTAL) From 9986ed9b835894be0858bca57a6c3fb07036cd75 Mon Sep 17 00:00:00 2001 From: TrishaChetani Date: Thu, 23 Apr 2020 23:44:48 +0200 Subject: [PATCH 052/244] Fixed the format --- content/en/docs/setup/learning-environment/minikube.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/content/en/docs/setup/learning-environment/minikube.md b/content/en/docs/setup/learning-environment/minikube.md index a4ec0a2726..969f079a8b 100644 --- a/content/en/docs/setup/learning-environment/minikube.md +++ b/content/en/docs/setup/learning-environment/minikube.md @@ -192,15 +192,16 @@ For example the command would be. ```shell minikube start --driver= ``` - Minikube supports the following drivers: +Minikube supports the following drivers: {{< note >}} See [DRIVERS](https://minikube.sigs.k8s.io/docs/reference/drivers/) for details on supported drivers and how to install plugins. {{< /note >}} -* docker([driver installation](https://minikube.sigs.k8s.io/docs/drivers/docker/)) (PREFERRED) + +* docker ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/docker/)) (PREFERRED) * virtualbox ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/virtualbox/)) -* vmwarefusion * Podman ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/podman/)) (EXPERIMENTAL) +* vmwarefusion * kvm2 ([driver installation](https://minikube.sigs.k8s.io/docs/reference/drivers/kvm2/)) * hyperkit ([driver installation](https://minikube.sigs.k8s.io/docs/reference/drivers/hyperkit/)) * hyperv ([driver installation](https://minikube.sigs.k8s.io/docs/reference/drivers/hyperv/)) From 055796ea4a9e249caaf645995f541a227cb809ef Mon Sep 17 00:00:00 2001 From: Lauren Hughes Date: Thu, 23 Apr 2020 16:04:11 -0700 Subject: [PATCH 053/244] Fix broken link Structure of the repo changed and broke the link, see [Deployment](https://github.com/kubernetes-sigs/metrics-server/blob/master/README.md#deployment) section of the readme for more info --- .../debug-application-cluster/resource-metrics-pipeline.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/tasks/debug-application-cluster/resource-metrics-pipeline.md b/content/en/docs/tasks/debug-application-cluster/resource-metrics-pipeline.md index 072070ab66..925577d8b1 100644 --- a/content/en/docs/tasks/debug-application-cluster/resource-metrics-pipeline.md +++ b/content/en/docs/tasks/debug-application-cluster/resource-metrics-pipeline.md @@ -52,7 +52,7 @@ Memory is reported as the working set, in bytes, at the instant the metric was c [Metrics Server](https://github.com/kubernetes-incubator/metrics-server) is a cluster-wide aggregator of resource usage data. It is deployed by default in clusters created by `kube-up.sh` script as a Deployment object. If you use a different Kubernetes setup mechanism you can deploy it using the provided -[deployment yamls](https://github.com/kubernetes-incubator/metrics-server/tree/master/deploy). +[deployment component.yaml](https://github.com/kubernetes-sigs/metrics-server/releases) file. Metric server collects metrics from the Summary API, exposed by [Kubelet](/docs/admin/kubelet/) on each node. From 227d404e599a5c80ebaad6862812f69eb432276f Mon Sep 17 00:00:00 2001 From: Lauren Hughes Date: Fri, 24 Apr 2020 09:14:01 -0700 Subject: [PATCH 054/244] fix file name --- .../debug-application-cluster/resource-metrics-pipeline.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/tasks/debug-application-cluster/resource-metrics-pipeline.md b/content/en/docs/tasks/debug-application-cluster/resource-metrics-pipeline.md index 925577d8b1..547790e5b0 100644 --- a/content/en/docs/tasks/debug-application-cluster/resource-metrics-pipeline.md +++ b/content/en/docs/tasks/debug-application-cluster/resource-metrics-pipeline.md @@ -52,7 +52,7 @@ Memory is reported as the working set, in bytes, at the instant the metric was c [Metrics Server](https://github.com/kubernetes-incubator/metrics-server) is a cluster-wide aggregator of resource usage data. It is deployed by default in clusters created by `kube-up.sh` script as a Deployment object. If you use a different Kubernetes setup mechanism you can deploy it using the provided -[deployment component.yaml](https://github.com/kubernetes-sigs/metrics-server/releases) file. +[deployment components.yaml](https://github.com/kubernetes-sigs/metrics-server/releases) file. Metric server collects metrics from the Summary API, exposed by [Kubelet](/docs/admin/kubelet/) on each node. From 629fbd43598f0ebf2a68e3618ebe5df4d0fe848b Mon Sep 17 00:00:00 2001 From: Giovanni Geraci Date: Fri, 24 Apr 2020 19:06:42 +0200 Subject: [PATCH 055/244] Update crio installation steps for CentOS/RHEL Hi, crio installation steps for CentOS/RHEL distribution are not valid anymore(CBS repo does not exist anymore) I'm updating the documentation following the exactly same instructions reported on crio official repository --- .../docs/setup/production-environment/container-runtimes.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/content/en/docs/setup/production-environment/container-runtimes.md b/content/en/docs/setup/production-environment/container-runtimes.md index cccf422587..37ba0513c9 100644 --- a/content/en/docs/setup/production-environment/container-runtimes.md +++ b/content/en/docs/setup/production-environment/container-runtimes.md @@ -218,10 +218,12 @@ sudo apt-get install cri-o-1.17 {{< tab name="CentOS/RHEL 7.4+" codelang="bash" >}} # Install prerequisites -yum-config-manager --add-repo=https://cbs.centos.org/repos/paas7-crio-115-release/x86_64/os/ +curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/CentOS_7/devel:kubic:libcontainers:stable.repo + +curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:[REQUIRED VERSION].repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:[REQUIRED VERSION]/CentOS_7/devel:kubic:libcontainers:stable:cri-o:[REQUIRED VERSION].repo # Install CRI-O -yum install --nogpgcheck -y cri-o +yum install -y cri-o {{< /tab >}} {{< tab name="openSUSE Tumbleweed" codelang="bash" >}} From 0ec3207711e74a010784d169e3ffd04baa8bb36f Mon Sep 17 00:00:00 2001 From: TrishaChetani Date: Sat, 25 Apr 2020 00:00:07 +0200 Subject: [PATCH 056/244] Removed preferred keyword --- content/en/docs/setup/learning-environment/minikube.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/setup/learning-environment/minikube.md b/content/en/docs/setup/learning-environment/minikube.md index 969f079a8b..813329a97c 100644 --- a/content/en/docs/setup/learning-environment/minikube.md +++ b/content/en/docs/setup/learning-environment/minikube.md @@ -198,7 +198,7 @@ Minikube supports the following drivers: plugins. {{< /note >}} -* docker ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/docker/)) (PREFERRED) +* docker ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/docker/)) * virtualbox ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/virtualbox/)) * Podman ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/podman/)) (EXPERIMENTAL) * vmwarefusion From 58498dc3ca5e300458a2fbdad822c4c6c6410961 Mon Sep 17 00:00:00 2001 From: Tim Bannister Date: Fri, 27 Dec 2019 18:38:37 +0000 Subject: [PATCH 057/244] Reword PodPreset concept - Note feature state for PodPreset - Emphasize section on enabling PodPreset - Omit version check Assume that the reader has a supported version of Kubernetes that includes PodPreset. - List PodPreset as a task prerequisite PodPreset is an alpha feature; you can't follow the task page unless it's enabled. --- .../docs/concepts/workloads/pods/podpreset.md | 57 ++++++++++--------- .../inject-data-application/podpreset.md | 7 ++- 2 files changed, 34 insertions(+), 30 deletions(-) diff --git a/content/en/docs/concepts/workloads/pods/podpreset.md b/content/en/docs/concepts/workloads/pods/podpreset.md index 876ba995c9..a1906c8b99 100644 --- a/content/en/docs/concepts/workloads/pods/podpreset.md +++ b/content/en/docs/concepts/workloads/pods/podpreset.md @@ -7,6 +7,8 @@ weight: 50 --- {{% capture overview %}} +{{< feature-state for_k8s_version="v1.6" state="alpha" >}} + This page provides an overview of PodPresets, which are objects for injecting certain information into pods at creation time. The information can include secrets, volumes, volume mounts, and environment variables. @@ -14,20 +16,38 @@ secrets, volumes, volume mounts, and environment variables. {{% capture body %}} -## Understanding Pod Presets +## Understanding Pod presets -A `Pod Preset` is an API resource for injecting additional runtime requirements +A PodPreset is an API resource for injecting additional runtime requirements into a Pod at creation time. You use [label selectors](/docs/concepts/overview/working-with-objects/labels/#label-selectors) -to specify the Pods to which a given Pod Preset applies. +to specify the Pods to which a given PodPreset applies. -Using a Pod Preset allows pod template authors to not have to explicitly provide +Using a PodPreset allows pod template authors to not have to explicitly provide all information for every pod. This way, authors of pod templates consuming a specific service do not need to know all the details about that service. -For more information about the background, see the [design proposal for PodPreset](https://git.k8s.io/community/contributors/design-proposals/service-catalog/pod-preset.md). -## How It Works +## Enable PodPreset in your cluster {#enable-pod-preset} + +In order to use Pod presets in your cluster you must ensure the following: + +1. You have enabled the API type `settings.k8s.io/v1alpha1/podpreset`. For + example, this can be done by including `settings.k8s.io/v1alpha1=true` in + the `--runtime-config` option for the API server. In minikube add this flag + `--extra-config=apiserver.runtime-config=settings.k8s.io/v1alpha1=true` while + starting the cluster. +1. You have enabled the admission controller `PodPreset`. One way to doing this + is to include `PodPreset` in the `--enable-admission-plugins` option value specified + for the API server. In minikube, add this flag + + ```shell + --extra-config=apiserver.enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota,PodPreset + ``` + + while starting the cluster. + +## How it works Kubernetes provides an admission controller (`PodPreset`) which, when enabled, applies Pod Presets to incoming pod creation requests. @@ -62,31 +82,12 @@ There may be instances where you wish for a Pod to not be altered by any Pod Preset mutations. In these cases, you can add an annotation in the Pod Spec of the form: `podpreset.admission.kubernetes.io/exclude: "true"`. -## Enable Pod Preset - -In order to use Pod Presets in your cluster you must ensure the following: - -1. You have enabled the API type `settings.k8s.io/v1alpha1/podpreset`. For - example, this can be done by including `settings.k8s.io/v1alpha1=true` in - the `--runtime-config` option for the API server. In minikube add this flag - `--extra-config=apiserver.runtime-config=settings.k8s.io/v1alpha1=true` while - starting the cluster. -1. You have enabled the admission controller `PodPreset`. One way to doing this - is to include `PodPreset` in the `--enable-admission-plugins` option value specified - for the API server. In minikube add this flag - - ```shell - --extra-config=apiserver.enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota,PodPreset - ``` - - while starting the cluster. -1. You have defined your Pod Presets by creating `PodPreset` objects in the - namespace you will use. - {{% /capture %}} {{% capture whatsnext %}} -* [Injecting data into a Pod using PodPreset](/docs/tasks/inject-data-application/podpreset/) +See [Injecting data into a Pod using PodPreset](/docs/tasks/inject-data-application/podpreset/) + +For more information about the background, see the [design proposal for PodPreset](https://git.k8s.io/community/contributors/design-proposals/service-catalog/pod-preset.md). {{% /capture %}} diff --git a/content/en/docs/tasks/inject-data-application/podpreset.md b/content/en/docs/tasks/inject-data-application/podpreset.md index de41c0f73a..dcf159acf5 100644 --- a/content/en/docs/tasks/inject-data-application/podpreset.md +++ b/content/en/docs/tasks/inject-data-application/podpreset.md @@ -2,20 +2,23 @@ reviewers: - jessfraz title: Inject Information into Pods Using a PodPreset -min-kubernetes-server-version: v1.10 +min-kubernetes-server-version: v1.6 content_template: templates/task weight: 60 --- {{% capture overview %}} +{{< feature-state for_k8s_version="v1.6" state="alpha" >}} + This page shows how to use PodPreset objects to inject information like {{< glossary_tooltip text="Secrets" term_id="secret" >}}, volume mounts, and {{< glossary_tooltip text="environment variables" term_id="container-env-variables" >}} into Pods at creation time. {{% /capture %}} {{% capture prerequisites %}} -{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}} +You need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one using [Minikube](/docs/setup/learning-environment/minikube/). +Make sure that you have [enabled PodPreset](/docs/concepts/workloads/pods/podpreset/#enable-pod-preset) in your cluster. {{% /capture %}} From cbb73498559fb5b4981d08754b7cf4f37e5b2439 Mon Sep 17 00:00:00 2001 From: lou-lan Date: Tue, 28 Apr 2020 00:46:24 +0800 Subject: [PATCH 058/244] Fix minikube image 'project:hello-minikube-zero-install' has been suspended. --- content/ja/docs/tutorials/hello-minikube.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/ja/docs/tutorials/hello-minikube.md b/content/ja/docs/tutorials/hello-minikube.md index 428175e21e..807d15ce77 100644 --- a/content/ja/docs/tutorials/hello-minikube.md +++ b/content/ja/docs/tutorials/hello-minikube.md @@ -70,7 +70,7 @@ Kubernetesの[*Pod*](/ja/docs/concepts/workloads/pods/pod/) は、コンテナ 1. `kubectl create` コマンドを使用してPodを管理するDeploymentを作成してください。Podは提供されたDockerイメージを元にコンテナを実行します。 ```shell - kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-node + kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4 ``` 2. Deploymentを確認します: From c44e025d8dd1c656fedbbdc336462d0a0d6bc929 Mon Sep 17 00:00:00 2001 From: Aapeli Date: Tue, 28 Apr 2020 08:53:40 +1000 Subject: [PATCH 059/244] Fix typo in content/en/docs/concepts/services-networking/service.md --- content/en/docs/concepts/services-networking/service.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/concepts/services-networking/service.md b/content/en/docs/concepts/services-networking/service.md index 92654fc612..acc72b9d8a 100644 --- a/content/en/docs/concepts/services-networking/service.md +++ b/content/en/docs/concepts/services-networking/service.md @@ -311,8 +311,8 @@ these are: - `nq`: never queue {{< note >}} -To run kube-proxy in IPVS mode, you must make the IPVS Linux available on -the node before you starting kube-proxy. +To run kube-proxy in IPVS mode, you must make IPVS available on +the node before starting kube-proxy. When kube-proxy starts in IPVS proxy mode, it verifies whether IPVS kernel modules are available. If the IPVS kernel modules are not detected, then kube-proxy From 11c6268b9e1f463ae0ad228c77fa500e85581073 Mon Sep 17 00:00:00 2001 From: Vinicius Barbosa Date: Tue, 28 Apr 2020 13:36:34 -0300 Subject: [PATCH 060/244] Update content/pt/docs/concepts/scheduling/kube-scheduler.md Co-Authored-By: Tim Bannister --- content/pt/docs/concepts/scheduling/kube-scheduler.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/pt/docs/concepts/scheduling/kube-scheduler.md b/content/pt/docs/concepts/scheduling/kube-scheduler.md index fbbbf99977..d9d085c72a 100644 --- a/content/pt/docs/concepts/scheduling/kube-scheduler.md +++ b/content/pt/docs/concepts/scheduling/kube-scheduler.md @@ -15,7 +15,7 @@ sejam correspondidos aos {{< glossary_tooltip text="Nodes" term_id="node" >}} pa {{% capture body %}} -## Visão geral do Escalonamento {#scheduling} +## Visão geral do Escalonamento {#escalonamento} Um escalonador observa Pods recém-criados que não possuem um Node atribuído. Para cada Pod que o planejador descobre, ele se torna responsável por From 946980ca18d38b6de76db797bb8e1005dd6eb738 Mon Sep 17 00:00:00 2001 From: Vinicius Barbosa Date: Tue, 28 Apr 2020 13:46:52 -0300 Subject: [PATCH 061/244] Update content/pt/docs/reference/glossary/kubelet.md Co-Authored-By: Tim Bannister --- content/pt/docs/reference/glossary/kubelet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/pt/docs/reference/glossary/kubelet.md b/content/pt/docs/reference/glossary/kubelet.md index a2ad453eed..16b55527fb 100755 --- a/content/pt/docs/reference/glossary/kubelet.md +++ b/content/pt/docs/reference/glossary/kubelet.md @@ -11,7 +11,7 @@ tags: - fundamental - core-object --- - Um agente que é executado em cada {{< glossary_tooltip text="node" term_id="node" >}} no cluster. Ele garante que os {{< glossary_tooltip text="Containers" term_id="container" >}} estejam sendo executados em um {{< glossary_tooltip text="Pod" term_id="pod" >}}. + Um agente que é executado em cada {{< glossary_tooltip text="node" term_id="node" >}} no cluster. Ele garante que os {{< glossary_tooltip text="contêineres" term_id="container" >}} estejam sendo executados em um {{< glossary_tooltip text="Pod" term_id="pod" >}}. From c5abd7704a218ffc096015d2c4ee65d4f5819bf4 Mon Sep 17 00:00:00 2001 From: Tim Bannister Date: Sat, 9 Nov 2019 15:37:02 +0000 Subject: [PATCH 062/244] Improve Node, Taints, and Tolerations concepts - Use glossary shortcodes in Node concept Add glossary tooltips to help new readers take in unfamiliar concepts. - Move minion hint to glossary The page about Node need not mention the former name (minion): it has been many releases since the name change. Instead, add a hint to the full glossary definition. - Use note shortcodes where appropriate - Order node management section first in concept page - Drop list of components that act on Nodes With Operators and CustomResourceDefinitions now common, plus the cluster API, it's less easy to give a definitive list of components that interacr with Node objects. - Tidy old mentions of GA features for Node - Give node tainting by condition its own section - Introduce toleration concept before using it - Mention version in TopologyManager feature state - Other rewording - Tidy Node condition table - Explain SchedulingDisabled synthesized condition - Drop details of supported versions for NodeRestriction Assume that cluster version is v1.13 or later --- .../en/docs/concepts/architecture/nodes.md | 317 ++++++++++-------- .../configuration/taint-and-toleration.md | 76 ++--- .../en/docs/concepts/overview/components.md | 2 +- content/en/docs/reference/glossary/node.md | 2 + 4 files changed, 212 insertions(+), 185 deletions(-) diff --git a/content/en/docs/concepts/architecture/nodes.md b/content/en/docs/concepts/architecture/nodes.md index 6e62881451..e18ef8faa4 100644 --- a/content/en/docs/concepts/architecture/nodes.md +++ b/content/en/docs/concepts/architecture/nodes.md @@ -9,32 +9,132 @@ weight: 10 {{% capture overview %}} -A node is a worker machine in Kubernetes, previously known as a `minion`. A node -may be a VM or physical machine, depending on the cluster. Each node contains -the services necessary to run [pods](/docs/concepts/workloads/pods/pod/) and is managed by the master -components. The services on a node include the [container runtime](/docs/concepts/overview/components/#container-runtime), kubelet and kube-proxy. See -[The Kubernetes Node](https://git.k8s.io/community/contributors/design-proposals/architecture/architecture.md#the-kubernetes-node) section in the -architecture design doc for more details. +Kubernetes runs your workload by placing containers into Pods to run on _Nodes_. +A node may be a virtual or physical machine, depending on the cluster. Each node +contains the services necessary to run +{{< glossary_tooltip text="Pods" term_id="pod" >}}, managed by the +{{< glossary_tooltip text="control plane" term_id="control-plane" >}}. + +Typically you have several nodes in a cluster; in a learning or resource-limited +environment, you might have just one. + +The [components](/docs/concepts/overview/components/#node-components) on a node include the +{{< glossary_tooltip text="kubelet" term_id="kubelet" >}}, a +{{< glossary_tooltip text="container runtime" term_id="container-runtime" >}}, and the +{{< glossary_tooltip text="kube-proxy" term_id="kube-proxy" >}}. {{% /capture %}} - {{% capture body %}} -## Node Status +## Management -A node's status contains the following information: +There are two main ways to have Nodes added to the {{< glossary_tooltip text="API server" term_id="kube-apiserver" >}}: + +1. The kubelet on a node self-registers to the control plane +2. You, or another human user, manually add a Node object + +After you create a Node object, or the kubelet on a node self-registers, the +control plane checks whether the new Node object is valid. For example, if you +try to create a Node from the following JSON manifest: + +```json +{ + "kind": "Node", + "apiVersion": "v1", + "metadata": { + "name": "10.240.79.157", + "labels": { + "name": "my-first-k8s-node" + } + } +} +``` + +Kubernetes creates a Node object internally (the representation). Kubernetes checks +that a kubelet has registered to the API server that matches the `metadata.name` +field of the Node. If the node is healthy (if all necessary services are running), +it is eligible to run a Pod. Otherwise, that node is ignored for any cluster activity +until it becomes healthy. + +{{< note >}} +Kubernetes keeps the object for the invalid Node and continues checking to see whether +it becomes healthy. + +You, or a {{< glossary_tooltip term_id="controller" text="controller">}}, must explicitly +delete the Node object to stop that health checking. +{{< /note >}} + +The name of a Node object must be a valid +[DNS subdomain name](/docs/concepts/overview/working-with-objects/names#dns-subdomain-names). + +### Self-registration of Nodes + +When the kubelet flag `--register-node` is true (the default), the kubelet will attempt to +register itself with the API server. This is the preferred pattern, used by most distros. + +For self-registration, the kubelet is started with the following options: + + - `--kubeconfig` - Path to credentials to authenticate itself to the API server. + - `--cloud-provider` - How to talk to a {{< glossary_tooltip text="cloud provider" term_id="cloud-provider" >}} to read metadata about itself. + - `--register-node` - Automatically register with the API server. + - `--register-with-taints` - Register the node with the given list of {{< glossary_tooltip text="taints" term_id="taint" >}} (comma separated `=:`). + + No-op if `register-node` is false. + - `--node-ip` - IP address of the node. + - `--node-labels` - {{< glossary_tooltip text="Labels" term_id="label" >}} to add when registering the node in the cluster (see label restrictions enforced by the [NodeRestriction admission plugin](/docs/reference/access-authn-authz/admission-controllers/#noderestriction)). + - `--node-status-update-frequency` - Specifies how often kubelet posts node status to master. + +When the [Node authorization mode](/docs/reference/access-authn-authz/node/) and +[NodeRestriction admission plugin](/docs/reference/access-authn-authz/admission-controllers/#noderestriction) are enabled, +kubelets are only authorized to create/modify their own Node resource. + +### Manual Node administration + +You can create and modify Node objects using +{{< glossary_tooltip text="kubectl" term_id="kubectl" >}}. + +When you want to create Node objects manually, set the kubelet flag `--register-node=false`. + +You can modify Node objects regardless of the setting of `--register-node`. +For example, you can set labels on an existing Node, or mark it unschedulable. + +You can use labels on Nodes in conjunction with node selectors on Pods to control +scheduling. For example, you can to constrain a Pod to only be eligible to run on +a subset of the available nodes. + +Marking a node as unschedulable prevents the scheduler from placing new pods onto +that Node, but does not affect existing Pods on the Node. This is useful as a +preparatory step before a node reboot or other maintenance. + +To mark a Node unschedulable, run: + +```shell +kubectl cordon $NODENAME +``` + +{{< note >}} +Pods that are part of a {{< glossary_tooltip term_id="daemonset" >}} tolerate +being run on an unschedulable Node. DaemonSets typically provide node-local services +that should run on the Node even if it is being drained of workload applications. +{{< /note >}} + +## Node status + +A Node's status contains the following information: * [Addresses](#addresses) * [Conditions](#condition) * [Capacity and Allocatable](#capacity) * [Info](#info) -Node status and other details about a node can be displayed using the following command: +You can use `kubectl` to view a Node's status and other details: + ```shell kubectl describe node ``` -Each section is described in detail below. + +Each section of the output is described below. ### Addresses @@ -49,15 +149,23 @@ The usage of these fields varies depending on your cloud provider or bare metal The `conditions` field describes the status of all `Running` nodes. Examples of conditions include: -| Node Condition | Description | -|----------------|-------------| -| `Ready` | `True` if the node is healthy and ready to accept pods, `False` if the node is not healthy and is not accepting pods, and `Unknown` if the node controller has not heard from the node in the last `node-monitor-grace-period` (default is 40 seconds) | -| `MemoryPressure` | `True` if pressure exists on the node memory -- that is, if the node memory is low; otherwise `False` | -| `PIDPressure` | `True` if pressure exists on the processes -- that is, if there are too many processes on the node; otherwise `False` | -| `DiskPressure` | `True` if pressure exists on the disk size -- that is, if the disk capacity is low; otherwise `False` | -| `NetworkUnavailable` | `True` if the network for the node is not correctly configured, otherwise `False` | +{{< table caption = "Node conditions, and a description of when each condition applies." >}} +| Node Condition | Description | +|----------------------|-------------| +| `Ready` | `True` if the node is healthy and ready to accept pods, `False` if the node is not healthy and is not accepting pods, and `Unknown` if the node controller has not heard from the node in the last `node-monitor-grace-period` (default is 40 seconds) | +| `DiskPressure` | `True` if pressure exists on the disk size--that is, if the disk capacity is low; otherwise `False` | +| `MemoryPressure` | `True` if pressure exists on the node memory--that is, if the node memory is low; otherwise `False` | +| `PIDPressure` | `True` if pressure exists on the processes—that is, if there are too many processes on the node; otherwise `False` | +| `NetworkUnavailable` | `True` if the network for the node is not correctly configured, otherwise `False` | +{{< /table >}} -The node condition is represented as a JSON object. For example, the following response describes a healthy node. +{{< note >}} +If you use command-line tools to print details of a cordoned Node, the Condition includes +`SchedulingDisabled`. `SchedulingDisabled` is not a Condition in the Kubernetes API; instead, +cordoned nodes are marked Unschedulable in their spec. +{{< /note >}} + +The node condition is represented as a JSON object. For example, the following structure describes a healthy node: ```json "conditions": [ @@ -72,20 +180,24 @@ The node condition is represented as a JSON object. For example, the following r ] ``` -If the Status of the Ready condition remains `Unknown` or `False` for longer than the `pod-eviction-timeout` (an argument passed to the [kube-controller-manager](/docs/admin/kube-controller-manager/)), all the Pods on the node are scheduled for deletion by the Node Controller. The default eviction timeout duration is **five minutes**. In some cases when the node is unreachable, the apiserver is unable to communicate with the kubelet on the node. The decision to delete the pods cannot be communicated to the kubelet until communication with the apiserver is re-established. In the meantime, the pods that are scheduled for deletion may continue to run on the partitioned node. +If the Status of the Ready condition remains `Unknown` or `False` for longer than the `pod-eviction-timeout` (an argument passed to the {{< glossary_tooltip text="kube-controller-manager" term_id="kube-controller-manager" >}}), all the Pods on the node are scheduled for deletion by the node controller. The default eviction timeout duration is **five minutes**. In some cases when the node is unreachable, the API server is unable to communicate with the kubelet on the node. The decision to delete the pods cannot be communicated to the kubelet until communication with the API server is re-established. In the meantime, the pods that are scheduled for deletion may continue to run on the partitioned node. -In versions of Kubernetes prior to 1.5, the node controller would [force delete](/docs/concepts/workloads/pods/pod/#force-deletion-of-pods) -these unreachable pods from the apiserver. However, in 1.5 and higher, the node controller does not force delete pods until it is -confirmed that they have stopped running in the cluster. You can see the pods that might be running on an unreachable node as being in -the `Terminating` or `Unknown` state. In cases where Kubernetes cannot deduce from the underlying infrastructure if a node has -permanently left a cluster, the cluster administrator may need to delete the node object by hand. Deleting the node object from -Kubernetes causes all the Pod objects running on the node to be deleted from the apiserver, and frees up their names. +The node controller does not force delete pods until it is confirmed that they have stopped +running in the cluster. You can see the pods that might be running on an unreachable node as +being in the `Terminating` or `Unknown` state. In cases where Kubernetes cannot deduce from the +underlying infrastructure if a node has permanently left a cluster, the cluster administrator +may need to delete the node object by hand. Deleting the node object from Kubernetes causes +all the Pod objects running on the node to be deleted from the API server, and frees up their +names. The node lifecycle controller automatically creates [taints](/docs/concepts/configuration/taint-and-toleration/) that represent conditions. The scheduler takes the Node's taints into consideration when assigning a Pod to a Node. Pods can also have tolerations which let them tolerate a Node's taints. +See [Taint Nodes by Condition](/docs/concepts/configuration/taint-and-toleration/#taint-nodes-by-condition) +for more details. + ### Capacity and Allocatable {#capacity} Describes the resources available on the node: CPU, memory and the maximum @@ -104,48 +216,10 @@ on a Node. Describes general information about the node, such as kernel version, Kubernetes version (kubelet and kube-proxy version), Docker version (if used), and OS name. This information is gathered by Kubelet from the node. -## Management +### Node controller -Unlike [pods](/docs/concepts/workloads/pods/pod/) and [services](/docs/concepts/services-networking/service/), -a node is not inherently created by Kubernetes: it is created externally by cloud -providers like Google Compute Engine, or it exists in your pool of physical or virtual -machines. So when Kubernetes creates a node, it creates -an object that represents the node. After creation, Kubernetes -checks whether the node is valid or not. For example, if you try to create -a node from the following content: - -```json -{ - "kind": "Node", - "apiVersion": "v1", - "metadata": { - "name": "10.240.79.157", - "labels": { - "name": "my-first-k8s-node" - } - } -} -``` - -Kubernetes creates a node object internally (the representation), and -validates the node by health checking based on the `metadata.name` field. If the node is valid -- that is, if all necessary -services are running -- it is eligible to run a pod. Otherwise, it is -ignored for any cluster activity until it becomes valid. -The name of a Node object must be a valid -[DNS subdomain name](/docs/concepts/overview/working-with-objects/names#dns-subdomain-names). - -{{< note >}} -Kubernetes keeps the object for the invalid node and keeps checking to see whether it becomes valid. -You must explicitly delete the Node object to stop this process. -{{< /note >}} - -Currently, there are three components that interact with the Kubernetes node -interface: node controller, kubelet, and kubectl. - -### Node Controller - -The node controller is a Kubernetes master component which manages various -aspects of nodes. +The node {{< glossary_tooltip text="controller" term_id="controller" >}} is a +Kubernetes control plane component that manages various aspects of nodes. The node controller has multiple roles in a node's life. The first is assigning a CIDR block to the node when it is registered (if CIDR assignment is turned on). @@ -168,6 +242,7 @@ checks the state of each node every `--node-monitor-period` seconds. #### Heartbeats Heartbeats, sent by Kubernetes nodes, help determine the availability of a node. + There are two forms of heartbeats: updates of `NodeStatus` and the [Lease object](/docs/reference/generated/kubernetes-api/{{< latest-version >}}/#lease-v1-coordination-k8s-io). Each Node has an associated Lease object in the `kube-node-lease` @@ -188,13 +263,7 @@ a Lease object. #### Reliability -In Kubernetes 1.4, we updated the logic of the node controller to better handle -cases when a large number of nodes have problems with reaching the master -(e.g. because the master has networking problems). Starting with 1.4, the node -controller looks at the state of all nodes in the cluster when making a -decision about pod eviction. - -In most cases, node controller limits the eviction rate to + In most cases, node controller limits the eviction rate to `--node-eviction-rate` (default 0.1) per second, meaning it won't evict pods from more than 1 node per 10 seconds. @@ -220,62 +289,12 @@ completely unhealthy (i.e. there are no healthy nodes in the cluster). In such a case, the node controller assumes that there's some problem with master connectivity and stops all evictions until some connectivity is restored. -Starting in Kubernetes 1.6, the NodeController is also responsible for evicting -pods that are running on nodes with `NoExecute` taints, when the pods do not tolerate -the taints. Additionally, as an alpha feature that is disabled by default, the -NodeController is responsible for adding taints corresponding to node problems like -node unreachable or not ready. See [this documentation](/docs/concepts/configuration/taint-and-toleration/) -for details about `NoExecute` taints and the alpha feature. +The node controller is also responsible for evicting pods running on nodes with +`NoExecute` taints, unless those pods tolerate that taint. +The node controller also adds {{< glossary_tooltip text="taints" term_id="taint" >}} +corresponding to node problems like node unreachable or not ready. This means +that the scheduler won't place Pods onto unhealthy nodes. -Starting in version 1.8, the node controller can be made responsible for creating taints that represent -Node conditions. This is an alpha feature of version 1.8. - -### Self-Registration of Nodes - -When the kubelet flag `--register-node` is true (the default), the kubelet will attempt to -register itself with the API server. This is the preferred pattern, used by most distros. - -For self-registration, the kubelet is started with the following options: - - - `--kubeconfig` - Path to credentials to authenticate itself to the apiserver. - - `--cloud-provider` - How to talk to a cloud provider to read metadata about itself. - - `--register-node` - Automatically register with the API server. - - `--register-with-taints` - Register the node with the given list of taints (comma separated `=:`). No-op if `register-node` is false. - - `--node-ip` - IP address of the node. - - `--node-labels` - Labels to add when registering the node in the cluster (see label restrictions enforced by the [NodeRestriction admission plugin](/docs/reference/access-authn-authz/admission-controllers/#noderestriction) in 1.13+). - - `--node-status-update-frequency` - Specifies how often kubelet posts node status to master. - -When the [Node authorization mode](/docs/reference/access-authn-authz/node/) and -[NodeRestriction admission plugin](/docs/reference/access-authn-authz/admission-controllers/#noderestriction) are enabled, -kubelets are only authorized to create/modify their own Node resource. - -#### Manual Node Administration - -A cluster administrator can create and modify node objects. - -If the administrator wishes to create node objects manually, set the kubelet flag -`--register-node=false`. - -The administrator can modify node resources (regardless of the setting of `--register-node`). -Modifications include setting labels on the node and marking it unschedulable. - -Labels on nodes can be used in conjunction with node selectors on pods to control scheduling, -e.g. to constrain a pod to only be eligible to run on a subset of the nodes. - -Marking a node as unschedulable prevents new pods from being scheduled to that -node, but does not affect any existing pods on the node. This is useful as a -preparatory step before a node reboot, etc. For example, to mark a node -unschedulable, run this command: - -```shell -kubectl cordon $NODENAME -``` - -{{< note >}} -Pods created by a DaemonSet controller bypass the Kubernetes scheduler -and do not respect the unschedulable attribute on a node. This assumes that daemons belong on -the machine even if it is being drained of applications while it prepares for a reboot. -{{< /note >}} {{< caution >}} `kubectl cordon` marks a node as 'unschedulable', which has the side effect of the service @@ -285,34 +304,40 @@ eligible for, effectively removing incoming load balancer traffic from the cordo ### Node capacity -The capacity of the node (number of cpus and amount of memory) is part of the node object. -Normally, nodes register themselves and report their capacity when creating the node object. If -you are doing [manual node administration](#manual-node-administration), then you need to set node -capacity when adding a node. +Node objects track information about the Node's resource capacity (for example: the amount +of memory available, and the number of CPUs). +Nodes that [self register](#self-registration-of-nodes) report their capacity during +registration. If you [manually](#manual-node-administration) add a Node, then +you need to set the node's capacity informaton when you add it. -The Kubernetes scheduler ensures that there are enough resources for all the pods on a node. It -checks that the sum of the requests of containers on the node is no greater than the node capacity. It -includes all containers started by the kubelet, but not containers started directly by the [container runtime](/docs/concepts/overview/components/#container-runtime) nor any process running outside of the containers. +The Kubernetes {{< glossary_tooltip text="scheduler" term_id="kube-scheduler" >}} ensures that +there are enough resources for all the Pods on a Node. The scheduler checks that the sum +of the requests of containers on the node is no greater than the node's capacity. +That sum of requests includes all containers managed by the kubelet, but excludes any +containers started directly by the container runtime, and also excludes any +processes running outside of the kubelet's control. -If you want to explicitly reserve resources for non-Pod processes, follow this tutorial to +{{< note >}} +If you want to explicitly reserve resources for non-Pod processes, see [reserve resources for system daemons](/docs/tasks/administer-cluster/reserve-compute-resources/#system-reserved). +{{< /note >}} ## Node topology -{{< feature-state state="alpha" >}} +{{< feature-state state="alpha" for_k8s_version="v1.16" >}} If you have enabled the `TopologyManager` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/), then the kubelet can use topology hints when making resource assignment decisions. - -## API Object - -Node is a top-level resource in the Kubernetes REST API. More details about the -API object can be found at: -[Node API object](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#node-v1-core). +See [Control Topology Management Policies on a Node](/docs/tasks/administer-cluster/topology-manager/) +for more information. {{% /capture %}} {{% capture whatsnext %}} -* Read about [node components](/docs/concepts/overview/components/#node-components) -* Read about node-level topology: [Control Topology Management Policies on a node](/docs/tasks/administer-cluster/topology-manager/) +* Learn about the [components](/docs/concepts/overview/components/#node-components) that make up a node. +* Read the [API definition for Node](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#node-v1-core). +* Read the [Node](https://git.k8s.io/community/contributors/design-proposals/architecture/architecture.md#the-kubernetes-node) + section of the architecture design document. +* Read about [taints and tolerations](/docs/concepts/configuration/taint-and-toleration/). +* Read about [cluster autoscaling](/docs/tasks/administer-cluster/cluster-management/#cluster-autoscaling). {{% /capture %}} diff --git a/content/en/docs/concepts/configuration/taint-and-toleration.md b/content/en/docs/concepts/configuration/taint-and-toleration.md index f2a0befec8..95f78aa4fd 100644 --- a/content/en/docs/concepts/configuration/taint-and-toleration.md +++ b/content/en/docs/concepts/configuration/taint-and-toleration.md @@ -10,16 +10,17 @@ weight: 40 {{% capture overview %}} -Node affinity, described [here](/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity), -is a property of *pods* that *attracts* them to a set of nodes (either as a -preference or a hard requirement). Taints are the opposite -- they allow a -*node* to *repel* a set of pods. +[_Node affinity_](/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity), +is a property of {{< glossary_tooltip text="Pods" term_id="pod" >}} that *attracts* them to +a set of {{< glossary_tooltip text="nodes" term_id="node" >}} (either as a preference or a +hard requirement). _Taints_ are the opposite -- they allow a node to repel a set of pods. + +_Tolerations_ are applied to pods, and allow (but do not require) the pods to schedule +onto nodes with matching taints. Taints and tolerations work together to ensure that pods are not scheduled onto inappropriate nodes. One or more taints are applied to a node; this marks that the node should not accept any pods that do not tolerate the taints. -Tolerations are applied to pods, and allow (but do not require) the pods to schedule -onto nodes with matching taints. {{% /capture %}} @@ -65,12 +66,12 @@ Here’s an example of a pod that uses tolerations: {{< codenew file="pods/pod-with-toleration.yaml" >}} +The default value for `operator` is `Equal`. + A toleration "matches" a taint if the keys are the same and the effects are the same, and: * the `operator` is `Exists` (in which case no `value` should be specified), or -* the `operator` is `Equal` and the `value`s are equal - -`Operator` defaults to `Equal` if not specified. +* the `operator` is `Equal` and the `value`s are equal. {{< note >}} @@ -204,7 +205,7 @@ when there are node problems, which is described in the next section. {{< feature-state for_k8s_version="v1.18" state="stable" >}} -Earlier we mentioned the `NoExecute` taint effect, which affects pods that are already +The `NoExecute` taint effect, mentioned above, affects pods that are already running on the node as follows * pods that do not tolerate the taint are evicted immediately @@ -213,9 +214,8 @@ running on the node as follows * pods that tolerate the taint with a specified `tolerationSeconds` remain bound for the specified amount of time -In addition, Kubernetes 1.6 introduced alpha support for representing node -problems. In other words, the node controller automatically taints a node when -certain condition is true. The following taints are built in: +The node controller automatically taints a Node when certain conditions +are true. The following taints are built in: * `node.kubernetes.io/not-ready`: Node is not ready. This corresponds to the NodeCondition `Ready` being "`False`". @@ -236,19 +236,18 @@ with `NoExecute` effect. If the fault condition returns to normal the kubelet or controller can remove the relevant taint(s). {{< note >}} -To maintain the existing [rate limiting](/docs/concepts/architecture/nodes/) -behavior of pod evictions due to node problems, the system actually adds the taints -in a rate-limited way. This prevents massive pod evictions in scenarios such -as the master becoming partitioned from the nodes. +The control plane limits the rate of adding node new taints to nodes. This rate limiting +manages the number of evictions that are triggered when many nodes become unreachable at +once (for example: if there is a network disruption). {{< /note >}} -The feature, in combination with `tolerationSeconds`, allows a pod -to specify how long it should stay bound to a node that has one or both of these problems. +You can specify `tolerationSeconds` for a Pod to define how long that Pod stays bound +to a failing or unresponsive Node. -For example, an application with a lot of local state might want to stay -bound to node for a long time in the event of network partition, in the hope +For example, you might want to keep an application with a lot of local state +bound to node for a long time in the event of network partition, hoping that the partition will recover and thus the pod eviction can be avoided. -The toleration the pod would use in that case would look like +The toleration you set for that Pod might look like: ```yaml tolerations: @@ -258,20 +257,15 @@ tolerations: tolerationSeconds: 6000 ``` -Note that Kubernetes automatically adds a toleration for -`node.kubernetes.io/not-ready` with `tolerationSeconds=300` -unless the pod configuration provided -by the user already has a toleration for `node.kubernetes.io/not-ready`. -Likewise it adds a toleration for -`node.kubernetes.io/unreachable` with `tolerationSeconds=300` -unless the pod configuration provided -by the user already has a toleration for `node.kubernetes.io/unreachable`. +{{< note >}} +Kubernetes automatically adds a toleration for +`node.kubernetes.io/not-ready` and `node.kubernetes.io/unreachable` +with `tolerationSeconds=300`, +unless you, or a controller, set those tolerations explictly. -These automatically-added tolerations ensure that -the default pod behavior of remaining bound for 5 minutes after one of these -problems is detected is maintained. -The two default tolerations are added by the [DefaultTolerationSeconds -admission controller](https://git.k8s.io/kubernetes/plugin/pkg/admission/defaulttolerationseconds). +These automatically-added tolerations mean that Pods remain bound to +Nodes for 5 minutes after one of these problems is detected. +{{< /note >}} [DaemonSet](/docs/concepts/workloads/controllers/daemonset/) pods are created with `NoExecute` tolerations for the following taints with no `tolerationSeconds`: @@ -287,9 +281,8 @@ The node lifecycle controller automatically creates taints corresponding to Node conditions with `NoSchedule` effect. Similarly the scheduler does not check Node conditions; instead the scheduler checks taints. This assures that Node conditions don't affect what's scheduled onto the Node. The user can choose to ignore some of the Node's problems (represented as Node conditions) by adding appropriate Pod tolerations. -Starting in Kubernetes 1.8, the DaemonSet controller automatically adds the -following `NoSchedule` tolerations to all daemons, to prevent DaemonSets from -breaking. +The DaemonSet controller automatically adds the following `NoSchedule` +tolerations to all daemons, to prevent DaemonSets from breaking. * `node.kubernetes.io/memory-pressure` * `node.kubernetes.io/disk-pressure` @@ -299,3 +292,10 @@ breaking. Adding these tolerations ensures backward compatibility. You can also add arbitrary tolerations to DaemonSets. + +{{% /capture %}} +{{% capture whatsnext %}} +* Read about [out of resource handling](/docs/tasks/administer-cluster/out-of-resource/) and how you can configure it +* Read about [pod priority](/docs/concepts/configuration/pod-priority-preemption/) + +{{% /capture %}} diff --git a/content/en/docs/concepts/overview/components.md b/content/en/docs/concepts/overview/components.md index d1d4a1e7fb..e8b5819a38 100644 --- a/content/en/docs/concepts/overview/components.md +++ b/content/en/docs/concepts/overview/components.md @@ -83,7 +83,7 @@ Node components run on every node, maintaining running pods and providing the Ku {{< glossary_definition term_id="kube-proxy" length="all" >}} -### Container Runtime +### Container runtime {{< glossary_definition term_id="container-runtime" length="all" >}} diff --git a/content/en/docs/reference/glossary/node.md b/content/en/docs/reference/glossary/node.md index a67ecf488d..fd09ec75b4 100755 --- a/content/en/docs/reference/glossary/node.md +++ b/content/en/docs/reference/glossary/node.md @@ -15,3 +15,5 @@ tags: A worker node may be a VM or physical machine, depending on the cluster. It has local daemons or services necessary to run {{< glossary_tooltip text="Pods" term_id="pod" >}} and is managed by the control plane. The daemons on a node include {{< glossary_tooltip text="kubelet" term_id="kubelet" >}}, {{< glossary_tooltip text="kube-proxy" term_id="kube-proxy" >}}, and a container runtime implementing the {{< glossary_tooltip text="CRI" term_id="cri" >}} such as {{< glossary_tooltip term_id="docker" >}}. + +In early Kubernetes versions, Nodes were called “Minions”. From 2c9a9a64ecebe396bae3807fa5a7c4327455d6c1 Mon Sep 17 00:00:00 2001 From: Davi Garcia Date: Tue, 28 Apr 2020 14:16:01 -0300 Subject: [PATCH 063/244] Clarify minimum cluster resource requirement for tasks Signed-off-by: Davi Garcia --- .../manage-resources/cpu-constraint-namespace.md | 8 ++------ .../tasks/configure-pod-container/assign-cpu-resource.md | 6 ++---- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/content/en/docs/tasks/administer-cluster/manage-resources/cpu-constraint-namespace.md b/content/en/docs/tasks/administer-cluster/manage-resources/cpu-constraint-namespace.md index 2098a42991..a1d4c786c6 100644 --- a/content/en/docs/tasks/administer-cluster/manage-resources/cpu-constraint-namespace.md +++ b/content/en/docs/tasks/administer-cluster/manage-resources/cpu-constraint-namespace.md @@ -20,7 +20,7 @@ in the namespace. {{< include "task-tutorial-prereqs.md" >}} {{< version-check >}} -Each node in your cluster must have at least 1 CPU. +Your cluster must have at least 1 CPU available for use to run the task examples. {{% /capture %}} @@ -204,11 +204,7 @@ Because your Container did not specify its own CPU request and limit, it was giv [default CPU request and limit](/docs/tasks/administer-cluster/cpu-default-namespace/) from the LimitRange. -At this point, your Container might be running or it might not be running. Recall that a prerequisite -for this task is that your Nodes have at least 1 CPU. If each of your Nodes has only -1 CPU, then there might not be enough allocatable CPU on any Node to accommodate a request -of 800 millicpu. If you happen to be using Nodes with 2 CPU, then you probably have -enough CPU to accommodate the 800 millicpu request. +At this point, your Container might be running or it might not be running. Recall that a prerequisite for this task is that your cluster must have at least 1 CPU available for use. If each of your Nodes has only 1 CPU, then there might not be enough allocatable CPU on any Node to accommodate a request of 800 millicpu. If you happen to be using Nodes with 2 CPU, then you probably have enough CPU to accommodate the 800 millicpu request. Delete your Pod: diff --git a/content/en/docs/tasks/configure-pod-container/assign-cpu-resource.md b/content/en/docs/tasks/configure-pod-container/assign-cpu-resource.md index c5ec448e48..a622eb5917 100644 --- a/content/en/docs/tasks/configure-pod-container/assign-cpu-resource.md +++ b/content/en/docs/tasks/configure-pod-container/assign-cpu-resource.md @@ -18,7 +18,7 @@ allocated as much CPU as it requests. {{< include "task-tutorial-prereqs.md" >}} {{< version-check >}} -Each node in your cluster must have at least 1 CPU. +Your cluster must have at least 1 CPU available for use to run the task examples. A few of the steps on this page require you to run the [metrics-server](https://github.com/kubernetes-incubator/metrics-server) @@ -122,9 +122,7 @@ Recall that by setting `-cpu "2"`, you configured the Container to attempt to us {{< note >}} Another possible explanation for the CPU use being below 1.0 is that the Node might not have -enough CPU resources available. Recall that the prerequisites for this exercise require each of -your Nodes to have at least 1 CPU. If your Container runs on a Node that has only 1 CPU, the Container -cannot use more than 1 CPU regardless of the CPU limit specified for the Container. +enough CPU resources available. Recall that the prerequisites for this exercise require your cluster to have at least 1 CPU available for use. If your Container runs on a Node that has only 1 CPU, the Container cannot use more than 1 CPU regardless of the CPU limit specified for the Container. {{< /note >}} ## CPU units From d91f2ee747c9d4c462f8eb96735b615689294a60 Mon Sep 17 00:00:00 2001 From: Maciej Filocha Date: Tue, 28 Apr 2020 11:26:38 +0200 Subject: [PATCH 064/244] Update Polish translation of Contribute index page --- content/pl/docs/contribute/_index.md | 79 ++++++++++++++++++---------- 1 file changed, 52 insertions(+), 27 deletions(-) diff --git a/content/pl/docs/contribute/_index.md b/content/pl/docs/contribute/_index.md index bd40241596..7c829f8f14 100644 --- a/content/pl/docs/contribute/_index.md +++ b/content/pl/docs/contribute/_index.md @@ -1,54 +1,79 @@ --- content_template: templates/concept -title: Weź udział w tworzeniu dokumentacji Kubernetesa +title: Współtwórz dokumentację Kubernetesa linktitle: Weź udział main_menu: true weight: 80 +card: + name: contribute + weight: 10 + title: Weź udział --- {{% capture overview %}} -Będzie nam bardzo miło, jeśli zechcesz wziąć udział w tworzeniu dokumentacji -lub strony www Kubernetesa! Nieważne, czy dopiero poznajesz projekt, czy jesteś -z nami już od dawna, czy uważasz się za programistę, użytkownika, czy po prostu -nie możesz patrzeć na literówki. +Tym serwisem www opiekuje się [Kubernetes SIG Docs](/docs/contribute/#get-involved-with-sig-docs). + +Współtwórcy dokumentacji Kubernetesa: + +- Ulepszają istniejącą zawartość +- Tworzą nowe treści +- Tłumaczą dokumentację +- Zarządzają i publikują dokumentację w ramach cyklu wydawniczego Kubernetesa + +Zapraszamy do współpracy wszystkich - zarówno nowicjuszy, jak i doświadczonych! {{% /capture %}} {{% capture body %}} -## Od czego zacząć? +## Jak zacząć? -Każdy może otworzyć zgłoszenie, które zawiera opis problemu czy oczekiwane usprawnienia dokumentacji lub samemu zaproponować zmianę poprzez *pull request* (PR). -Do realizacji niektórych zadań potrzeba wyższego poziomu zaufania i odpowiednich uprawnień w organizacji Kubernetes. -Zajrzyj do [Participating in SIG Docs](/docs/contribute/participating/) po więcej szczegółów -dotyczących ról i uprawnień. - -Dokumentacja Kubernetesa znajduje się w repozytorium GitHub. Zapraszamy wszystkich -do aktywnych działań na rzecz jej rozwoju, niemniej aby móc sprawnie funkcjonować w społeczności Kubernetes, -wymagana jest pewna biegłość w korzystaniu z git i GitHuba. +Każdy może otworzyć zgłoszenie dotyczące dokumentacji lub zaproponować zmianę poprzez *pull request* (PR) do [repozytorium GitHub `kubernetes/website`](https://github.com/kubernetes/website). Aby móc sprawnie funkcjonować w społeczności Kubernetes, +wymagana jest pewna biegłość w korzystaniu z [git-a](https://git-scm.com/) i [GitHub-a](https://lab.github.com/). Aby zaangażować się w prace nad dokumentacją należy: 1. Podpisać [Contributor License Agreement](https://github.com/kubernetes/community/blob/master/CLA.md) CNCF. 2. Zapoznać się z [repozytorium dokumentacji](https://github.com/kubernetes/website) i z [generatorem statycznej strony](https://gohugo.io) www. -3. Zrozumieć podstawowe procesy [ulepszania zawartości](https://kubernetes.io/docs/contribute/start/#improve-existing-content) i [recenzowania propozycji zmian](https://kubernetes.io/docs/contribute/start/#review-docs-pull-requests). +3. Zrozumieć podstawowe procesy [otwierania *pull request*](/docs/contribute/new-content/new-content/) oraz [recenzowania zmian](/docs/contribute/review/reviewing-prs/). -## Najlepsze praktyki zgłaszania zmian +Do realizacji niektórych zadań potrzeba wyższego poziomu zaufania i odpowiednich uprawnień w organizacji Kubernetes. +Zajrzyj do [Participating in SIG Docs](/docs/contribute/participating/) po więcej szczegółów dotyczących +ról i uprawnień. -- Opis GIT commit powinien być jasny i zrozumiały. -- Należy używać _Github Special Keywords_, które odwołują się do zgłoszenia _(issue)_ i automatycznie je zamykają, kiedy PR zostaje zaakceptowany. -- Kiedy wprowadzasz drobne zmiany do PR, takie jak literówki czy poprawki stylu lub gramatyki, pamiętaj o ich zgrupowaniu _(squash)_, aby uniknąć sytuacji, kiedy mamy dużą liczbę commitów dla stosunkowo niewielkiej zmiany. -- Dołącz dobry opis PR, który tłumaczy zmiany w kodzie, powód dla tych zmian i wszystkie informacje wystarczające, aby recenzent zrozumiał Twój PR. -- Dodatkowa literatura: - - [chris.beams.io/posts/git-commit/](https://chris.beams.io/posts/git-commit/) - - [github.com/blog/1506-closing-issues-via-pull-requests ](https://github.com/blog/1506-closing-issues-via-pull-requests) - - [davidwalsh.name/squash-commits-git ](https://davidwalsh.name/squash-commits-git ) +## Pierwsze kroki +- Przeczytaj [Contribution overview](/docs/contribute/new-content/overview/), aby dowiedzieć się o różnych sposobach współpracy. +- Zajrzyj do [Contribute to kubernetes/website](https://github.com/kubernetes/website/contribute) aby znaleźć dobre zgłoszenie na początek. +- [Otwórz *pull request* przy pomocy GitHub-a](/docs/contribute/new-content/new-content/#changes-using-github) dotyczący zmiany istniejącej dokumentacji i dowiedz się, jak otwierać zgłoszenia przy GitHub-ie. +- [Zrecenzuj *pull requests*](/docs/contribute/review/reviewing-prs/) innego członka społeczności Kubernetes pod kątem dokładności i stylu. +- Zapoznaj się z poradnikami Kubernetesa dotyczącymi [zawartości](/docs/contribute/style/content-guide/) i [stylu](/docs/contribute/style/style-guide/), aby twoje uwagi były zgodne z tymi wytycznymi. +- Dowiedz się, jak [używać szablonów stron](/docs/contribute/style/page-templates/) i [skrótów Hugo](/docs/contribute/style/hugo-shortcodes/), aby wprowadzać większe zmiany. -## Inne metody współpracy +## Co dalej? -- Aby włączyć się w prace społeczności Kubernetes poprzez fora internetowe, typu Twitter czy Stack Overflow, lub dowiedzieć się więcej na temat organizowanych lokalnie spotkań i wydarzeń związanym z projektem, zajrzyj na stronę [społeczności Kubernetes](/community/). -- Aby włączyć się w prace związane z nowymi funkcjonalnościami, przeczytaj na początek [ściągawkę dla współautorów](https://github.com/kubernetes/community/tree/master/contributors/guide/contributor-cheatsheet). +- Naucz się, jak [pracować z lokalną kopią](/docs/contribute/new-content/new-content/#fork-the-repo) repozytorium. +- Udokumentuj [nowe funkcjonalności](/docs/contribute/new-content/new-features/). +- Włącz się w prace [SIG Docs](/docs/contribute/participating/) i zostań [członkiem organizacji lub recenzentem](/docs/contribute/participating/#roles-and-responsibilities). +- Pomagaj przy [tłumaczeniu](/docs/contribute/localization/). + +## Włącz się w prace SIG Docs + +[SIG Docs](/docs/contribute/participating/) to grupa, która publikuje i utrzymuje dokumentację Kubernetesa i jej stronę www. Zaangażowanie się w prace SIG Docs to doskonała okazja dla współtwórców Kubernetesa (rozwijających nowe funkcjonalności lub działających w innych obszarach), aby wywierać wpływ na cały projekt Kubernetes. + +Aby włączyć się w komunikację w ramach SIG Docs, możesz: + +- [Dołączyć do kanału `#sig-docs` na komunikatorze Slack dla Kubernetesa](http://slack.k8s.io/). Nie zapomnij + się przedstawić! +- [Zapisać się na listę `kubernetes-sig-docs`](https://groups.google.com/forum/#!forum/kubernetes-sig-docs), + na której prowadzone są dyskusje o szerszym zasięgu i zapisywane oficjalne decyzje. +- Dołączyć do [cotygodniowego spotkania wideo SIG Docs](https://github.com/kubernetes/community/tree/master/sig-docs). Spotkania są zawsze zapowiadane na `#sig-docs` i dodawane do [kalendarza spotkań społeczności Kubernetes](https://calendar.google.com/calendar/embed?src=cgnt364vd8s86hr2phapfjc6uk%40group.calendar.google.com&ctz=America/Los_Angeles). Będziesz potrzebował komunikatora [Zoom](https://zoom.us/download) lub telefonu, aby się wdzwonić. + +## Inne sposoby współpracy + +- Odwiedź [stronę społeczności Kubernetes](/community/). Korzystaj z Twittera i Stack Overflow, dowiedz się o spotkaniach lokalnych grup Kubernetes, różnych wydarzeniach i nie tylko. +- Przeczytaj [ściągawkę dla współtwórców](https://github.com/kubernetes/community/tree/master/contributors/guide/contributor-cheatsheet), aby zaangażować się w dalszy rozwój Kubernetesa. +- Przygotuj [wpis na blogu lub *case study*](/docs/contribute/new-content/blogs-case-studies/). {{% /capture %}} From cf5fdf76caf47e422bb2947142e620a69c77c6c3 Mon Sep 17 00:00:00 2001 From: Dominic Yin Date: Wed, 29 Apr 2020 16:44:38 +0800 Subject: [PATCH 065/244] update content/zh/docs/concepts/sservices-networking/dual-stack.md --- .../zh/docs/concepts/services-networking/dual-stack.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/content/zh/docs/concepts/services-networking/dual-stack.md b/content/zh/docs/concepts/services-networking/dual-stack.md index 1fe47f6889..d1062c5bce 100644 --- a/content/zh/docs/concepts/services-networking/dual-stack.md +++ b/content/zh/docs/concepts/services-networking/dual-stack.md @@ -60,12 +60,10 @@ Enabling IPv4/IPv6 dual-stack on your Kubernetes cluster provides the following * 双协议栈 pod 网络 (每个 pod 分配一个 IPv4 和 IPv6 地址) * IPv4 和 IPv6 启用的服务 (每个服务必须是一个单独的地址族) - * Kubenet 多地址族支持(IPv4 和 IPv6) * Pod 的集群外出口通过 IPv4 和 IPv6 路由 * Kubernetes 1.16 版本及更高版本 * 提供商支持双协议栈网络(云提供商或其他提供商必须能够为 Kubernetes 节点提供可路由的 IPv4/IPv6 网络接口) - * Kubenet 网络插件 + * 支持双协议栈的网络插件(如 Kubenet 或 Calico) * Kube-proxy 运行在 IPVS 模式 如果你的集群启用了 IPv4/IPv6 双协议栈网络,则可以使用 IPv4 或 IPv6 地址来创建 {{< glossary_tooltip text="Services" term_id="service" >}}。你可以通过设置服务的 `.spec.ipFamily` 字段来选择服务的集群 IP 的地址族。你只能在创建新服务时设置该字段。`.spec.ipFamily` 字段的设置是可选的,并且仅当你计划在集群上启用 IPv4 和 IPv6 的 {{< glossary_tooltip text="Services" term_id="service" >}} 和 {{< glossary_tooltip text="Ingresses" term_id="ingress" >}}。对于[出口](#出口流量)流量,该字段的配置不是必须的。 -{{< note >}} +{{< note >}} 集群的默认地址族是第一个服务集群 IP 范围的地址族,该地址范围通过 kube-controller-manager 上的 `--service-cluster-ip-range` 标志设置。 {{< /note >}} @@ -158,7 +156,7 @@ The following Service specification does not include the `ipFamily` field. Kuber -以下服务规约不包含 `ipFamily` 字段。Kubernetes 将从已配置的 `service-cluster-ip-range` 范围内分配一个 IPv6 地址(也称作“集群 IP”)给该服务。 +以下服务规约包含 `ipFamily` 字段。Kubernetes 将从已配置的 `service-cluster-ip-range` 范围内分配一个 IPv6 地址(也称作“集群 IP”)给该服务。 {{< codenew file="service/networking/dual-stack-ipv6-svc.yaml" >}} From 93fadf57f01f9a682860e0956e1422b3c4ab321c Mon Sep 17 00:00:00 2001 From: TrishaChetani Date: Wed, 29 Apr 2020 11:10:00 +0200 Subject: [PATCH 066/244] Change the caps --- content/en/docs/setup/learning-environment/minikube.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/setup/learning-environment/minikube.md b/content/en/docs/setup/learning-environment/minikube.md index 813329a97c..ec8514c84c 100644 --- a/content/en/docs/setup/learning-environment/minikube.md +++ b/content/en/docs/setup/learning-environment/minikube.md @@ -200,7 +200,7 @@ plugins. * docker ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/docker/)) * virtualbox ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/virtualbox/)) -* Podman ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/podman/)) (EXPERIMENTAL) +* podman ([driver installation](https://minikube.sigs.k8s.io/docs/drivers/podman/)) (EXPERIMENTAL) * vmwarefusion * kvm2 ([driver installation](https://minikube.sigs.k8s.io/docs/reference/drivers/kvm2/)) * hyperkit ([driver installation](https://minikube.sigs.k8s.io/docs/reference/drivers/hyperkit/)) From add2eecc93895d0d27f282b0543a53d879dab0d6 Mon Sep 17 00:00:00 2001 From: viniciusbds Date: Wed, 29 Apr 2020 07:29:43 -0300 Subject: [PATCH 067/244] Update content/pt/docs/concepts/scheduling/kube-scheduler.md --- content/pt/docs/concepts/scheduling/kube-scheduler.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/content/pt/docs/concepts/scheduling/kube-scheduler.md b/content/pt/docs/concepts/scheduling/kube-scheduler.md index d9d085c72a..a2c6ad4daa 100644 --- a/content/pt/docs/concepts/scheduling/kube-scheduler.md +++ b/content/pt/docs/concepts/scheduling/kube-scheduler.md @@ -53,8 +53,7 @@ requisitos individuais e coletivos de recursos, restrições de política hardware / software, especificações de afinidade e anti-afinidade, localidade de dados, interferência entre cargas de trabalho e assim por diante. - -### Seleção do Node no kube-scheduler {#kube-scheduler-implementation} +### Seleção do Node no kube-scheduler {#implementação-kube-scheduler} O kube-scheduler seleciona um Node para o Pod em uma operação que consiste em duas etapas: From b06e2af913ca8a91577cadce1f2b06b2efee36f6 Mon Sep 17 00:00:00 2001 From: Giovanni Geraci Date: Wed, 29 Apr 2020 12:40:16 +0200 Subject: [PATCH 068/244] Replaced [REQUIRED VERSION] with {{< skew latestVersion >}} --- .../en/docs/setup/production-environment/container-runtimes.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/content/en/docs/setup/production-environment/container-runtimes.md b/content/en/docs/setup/production-environment/container-runtimes.md index 37ba0513c9..dd65080994 100644 --- a/content/en/docs/setup/production-environment/container-runtimes.md +++ b/content/en/docs/setup/production-environment/container-runtimes.md @@ -219,8 +219,7 @@ sudo apt-get install cri-o-1.17 {{< tab name="CentOS/RHEL 7.4+" codelang="bash" >}} # Install prerequisites curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/CentOS_7/devel:kubic:libcontainers:stable.repo - -curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:[REQUIRED VERSION].repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:[REQUIRED VERSION]/CentOS_7/devel:kubic:libcontainers:stable:cri-o:[REQUIRED VERSION].repo +curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:{{< skew latestVersion >}}.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:{{< skew latestVersion >}}/CentOS_7/devel:kubic:libcontainers:stable:cri-o:{{< skew latestVersion >}}.repo # Install CRI-O yum install -y cri-o From ccdb25f58a737c4308ecb5ca97291b724675d86b Mon Sep 17 00:00:00 2001 From: zacharysarah Date: Wed, 29 Apr 2020 14:21:54 -0700 Subject: [PATCH 069/244] Revise KCCNC EU dates and location to virtual --- content/en/_index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/_index.html b/content/en/_index.html index 794734e538..f54851f05d 100644 --- a/content/en/_index.html +++ b/content/en/_index.html @@ -45,7 +45,7 @@ Kubernetes is open source giving you the freedom to take advantage of on-premise


- Attend KubeCon in Amsterdam on August 13-16, 2020 + Attend KubeCon EU virtually on August 17-20, 2020


From ee5373d516fdef30d3bd124312d58b52c89827aa Mon Sep 17 00:00:00 2001 From: bryan Date: Thu, 30 Apr 2020 09:46:05 +0800 Subject: [PATCH 070/244] translate configmap into chinese --- .../docs/concepts/configuration/configmap.md | 230 ++++++++++++++++++ 1 file changed, 230 insertions(+) create mode 100644 content/zh/docs/concepts/configuration/configmap.md diff --git a/content/zh/docs/concepts/configuration/configmap.md b/content/zh/docs/concepts/configuration/configmap.md new file mode 100644 index 0000000000..0dfcf6ce03 --- /dev/null +++ b/content/zh/docs/concepts/configuration/configmap.md @@ -0,0 +1,230 @@ +--- +title: ConfigMaps +content_template: templates/concept +weight: 20 +--- + +{{% capture overview %}} + +{{< glossary_definition term_id="configmap" prepend="A ConfigMap is" length="all" >}} + +{{< caution >}} + +ConfigMap 并不提供保密或者加密功能。如果你想存储的数据是机密的,请使用 {{< glossary_tooltip text="Secret" term_id="secret" >}} ,或者使用其他第三方工具来保证你的数据的私密性,而不是用 ConfigMap。 +{{< /caution >}} + +{{% /capture %}} + +{{% capture body %}} + + +## 动机 + +使用 ConfigMap 来将你的配置数据和应用程序代码分开。 + +比如,假设你正在开发一个应用,它可以在你自己的电脑上(用于开发)和在云上(用于实际流量)运行。你的代码里有一段是用于查看环境变量 `DATABASE_HOST`,在本地运行时,你将这个变量设置为 `localhost`,在云上,你将其设置为引用 Kubernetes 集群中的公开数据库 {{< glossary_tooltip text="Service" term_id="service" >}} 中的组件。 + +这让您可以获取在云中运行的容器镜像,并且如果有需要的话,在本地调试完全相同的代码。 + + +## ConfigMap 对象 + +ConfigMap 是一个 API [对象](/docs/concepts/overview/working-with-objects/kubernetes-objects/),让你可以存储其他对象所需要使用的配置。和其他 Kubernetes 对象都有一个 `spec` 不同的是,ConfigMap 使用 `data` 块来存储一个键和它的值。 + +ConfigMap 的名字必须是一个合法的 [DNS 子域名](/docs/concepts/overview/working-with-objects/names#dns-subdomain-names)。 + + +## ConfigMaps 和 Pods + +您可以写一个引用 ConfigMap 的 Pod 的 `spec`,并根据 ConfigMap 中的数据在该 Pod 中配置容器。这个 Pod 和 ConfigMap 必须要在同一个 {{< glossary_tooltip text="namespace" term_id="namespace" >}} 中。 + +这是一个 ConfigMap 的示例,它的一些键只有一个值,其他键的值看起来像是配置的片段格式。 + +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + Name: game-demo +data: + # property-like keys; each key maps to a simple value + player_initial_lives: 3 + ui_properties_file_name: "user-interface.properties" + # + # file-like keys + game.properties: | + enemy.types=aliens,monsters + player.maximum-lives=5 + user-interface.properties: | + color.good=purple + color.bad=yellow + allow.textmode=true +``` + +您可以使用四种方式来使用 ConfigMap 在 Pod 内配置一个容器: + +1. 容器入口点的命令行参数 +1. 容器的环境变量 +1. 在只读卷里面添加一个文件,让应用来读取 +1. 编写代码在能够使用 Kubernetes API 来读取 ConfigMap 的 Pod 中运行 + +这些不同的方法适用于不同的方式来对数据进行建模。对前三个方法,{{< glossary_tooltip text="kubelet" term_id="kubelet" >}} 使用 Secret 中的数据在 Pod 中启动容器。 + + +第四种方法意味着你必须编写代码才能读取 Secret 和它的数据。然而,由于您是直接使用 Kubernetes API,因此只要 ConfigMap 发生更改,您的应用就能够通过订阅来获取更新,并且在这样的情况发生的时候做出反应。通过直接进入 Kubernetes API,这个技术也可以让你能够获取到不同的命名空间里的 ConfigMap。 + +这是一个 Pod 的示例,它通过使用 `game-demo` 中的值来配置一个 Pod: + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: configmap-demo-pod +spec: + containers: + - name: demo + image: game.example/demo-game + env: + # Define the environment variable + - name: PLAYER_INITIAL_LIVES # Notice that the case is different here + # from the key name in the ConfigMap. + valueFrom: + configMapKeyRef: + name: game-demo # The ConfigMap this value comes from. + key: player_initial_lives # The key to fetch. + - name: UI_PROPERTIES_FILE_NAME + valueFrom: + configMapKeyRef: + name: game-demo + key: ui_properties_file_name + volumeMounts: + - name: config + mountPath: "/config" + readOnly: true + volumes: + # You set volumes at the Pod level, then mount them into containers inside that Pod + - name: config + configMap: + # Provide the name of the ConfigMap you want to mount. + name: game-demo +``` + + +ConfigMap 不会区分单行属性值和多行类似文件的值,重要的是 Pods 和其他对象如何使用这些值。比如,定义一个卷,并将它作为 `/config` 文件夹安装到 `demo` 容器内,并创建四个文件: + +- `/config/player_initial_lives` +- `/config/ui_properties_file_name` +- `/config/game.properties` +- `/config/user-interface.properties` + +如果您要确保 `/config` 只包含带有 `.properties` 扩展名的文件,可以使用两个不同的 ConfigMaps,并在 `spec` 中同时引用这两个 ConfigMaps 来创建 Pod。第一个 ConfigMap 定义了 `player_initial_lives` 和 `ui_properties_file_name`,第二个 ConfigMap 定义了 kubelet 放进 `/config` 的文件。 + +{{< note >}} + +ConfigMaps 最常见的用法是为同一命名空间里的 Pod 中运行的容器配置设置。您也可以单独使用 ConfigMap。 + +比如,您可能会遇到基于 ConfigMap 来调整其行为的 {{< glossary_tooltip text="addons" term_id="addons" >}} 或者 {{< glossary_tooltip text="operators" term_id="operator-pattern" >}}。 +{{< /note >}} + + +{{% /capture %}} +{{% capture whatsnext %}} + + +* 阅读 [Secrets](/docs/concepts/configuration/secret/)。 +* 阅读 [配置 Pod 来使用 ConfigMap](/docs/tasks/configure-pod-container/configure-pod-configmap/)。 +* 阅读 [Twelve-Factor 应用](https://12factor.net/) 来了解将代码和配置分开的动机。 + +{{% /capture %}} From 6c5ddc2ce6fa51171bed82dd4ac3a9a857f33923 Mon Sep 17 00:00:00 2001 From: bryan Date: Thu, 30 Apr 2020 10:29:11 +0800 Subject: [PATCH 071/244] fix some translation errors fix some translation errors --- .../docs/concepts/configuration/configmap.md | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/content/zh/docs/concepts/configuration/configmap.md b/content/zh/docs/concepts/configuration/configmap.md index 0dfcf6ce03..26afa91d29 100644 --- a/content/zh/docs/concepts/configuration/configmap.md +++ b/content/zh/docs/concepts/configuration/configmap.md @@ -59,7 +59,7 @@ The name of a ConfigMap must be a valid --> ## ConfigMap 对象 -ConfigMap 是一个 API [对象](/docs/concepts/overview/working-with-objects/kubernetes-objects/),让你可以存储其他对象所需要使用的配置。和其他 Kubernetes 对象都有一个 `spec` 不同的是,ConfigMap 使用 `data` 块来存储一个键和它的值。 +ConfigMap 是一个 API [对象](/docs/concepts/overview/working-with-objects/kubernetes-objects/),让你可以存储其他对象所需要使用的配置。和其他 Kubernetes 对象都有一个 `spec` 不同的是,ConfigMap 使用 `data` 块来存储元素(键名)和它们的值。 ConfigMap 的名字必须是一个合法的 [DNS 子域名](/docs/concepts/overview/working-with-objects/names#dns-subdomain-names)。 @@ -76,7 +76,7 @@ format. --> ## ConfigMaps 和 Pods -您可以写一个引用 ConfigMap 的 Pod 的 `spec`,并根据 ConfigMap 中的数据在该 Pod 中配置容器。这个 Pod 和 ConfigMap 必须要在同一个 {{< glossary_tooltip text="namespace" term_id="namespace" >}} 中。 +您可以写一个引用 ConfigMap 的 Pod 的 `spec`,并根据 ConfigMap 中的数据在该 Pod 中配置容器。这个 Pod 和 ConfigMap 必须要在同一个 {{< glossary_tooltip text="命名空间" term_id="namespace" >}} 中。 这是一个 ConfigMap 的示例,它的一些键只有一个值,其他键的值看起来像是配置的片段格式。 @@ -114,14 +114,14 @@ For the first three methods, the {{< glossary_tooltip text="kubelet" term_id="kubelet" >}} uses the data from the Secret when it launches container(s) for a Pod. --> -您可以使用四种方式来使用 ConfigMap 在 Pod 内配置一个容器: +您可以使用四种方式来使用 ConfigMap 配置 Pod 中的容器: -1. 容器入口点的命令行参数 +1. 容器 entrypoint 的命令行参数 1. 容器的环境变量 1. 在只读卷里面添加一个文件,让应用来读取 -1. 编写代码在能够使用 Kubernetes API 来读取 ConfigMap 的 Pod 中运行 +1. 编写代码在 Pod 中运行,使用 Kubernetes API 来读取 ConfigMap -这些不同的方法适用于不同的方式来对数据进行建模。对前三个方法,{{< glossary_tooltip text="kubelet" term_id="kubelet" >}} 使用 Secret 中的数据在 Pod 中启动容器。 +这些不同的方法适用于不同的数据使用方式。对前三个方法,{{< glossary_tooltip text="kubelet" term_id="kubelet" >}} 使用 Secret 中的数据在 Pod 中启动容器。 -ConfigMaps 最常见的用法是为同一命名空间里的 Pod 中运行的容器配置设置。您也可以单独使用 ConfigMap。 +ConfigMaps 最常见的用法是为同一命名空间里某 Pod 中运行的容器执行配置。您也可以单独使用 ConfigMap。 比如,您可能会遇到基于 ConfigMap 来调整其行为的 {{< glossary_tooltip text="addons" term_id="addons" >}} 或者 {{< glossary_tooltip text="operators" term_id="operator-pattern" >}}。 {{< /note >}} From 5985e3867c18b538c190470a804e108a41384f16 Mon Sep 17 00:00:00 2001 From: Dominic Yin Date: Thu, 30 Apr 2020 11:15:02 +0800 Subject: [PATCH 072/244] remove default en reviewers in zh docs --- content/zh/docs/concepts/services-networking/dual-stack.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/content/zh/docs/concepts/services-networking/dual-stack.md b/content/zh/docs/concepts/services-networking/dual-stack.md index d1062c5bce..050fa9800d 100644 --- a/content/zh/docs/concepts/services-networking/dual-stack.md +++ b/content/zh/docs/concepts/services-networking/dual-stack.md @@ -1,8 +1,4 @@ --- -reviewers: -- lachie83 -- khenidak -- aramase title: IPv4/IPv6 双协议栈 feature: title: IPv4/IPv6 双协议栈 From 30a447f59f9af89e0d59f9816bcd8167ab0bd702 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=95=E6=9C=9B?= Date: Thu, 30 Apr 2020 20:32:05 +0800 Subject: [PATCH 073/244] update content in zh assign-cpu-resource docs --- .../configure-pod-container/assign-cpu-resource.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/content/zh/docs/tasks/configure-pod-container/assign-cpu-resource.md b/content/zh/docs/tasks/configure-pod-container/assign-cpu-resource.md index 58458b5fa1..429e5e6c4e 100644 --- a/content/zh/docs/tasks/configure-pod-container/assign-cpu-resource.md +++ b/content/zh/docs/tasks/configure-pod-container/assign-cpu-resource.md @@ -61,7 +61,7 @@ API, `metrics.k8s.io`) is running, type the following command: 查看是 metrics-server(或者其他资源度量 API 服务提供者,`metrics.k8s.io` )是否正在运行,请键入以下命令: ```shell -kubectl get API services +kubectl get apiservices ``` 此示例的输出,显示 Pod 使用的是974 milliCPU,即仅略低于 Pod 配置中指定的 1 个 CPU 的限制。 ``` -NAME CPU (cores) MEMORY(bytes) - CPU -demo 974m +NAME CPU(cores) MEMORY(bytes) +cpu-demo 974m ``` @@ -140,9 +140,12 @@ with a standard set of labels. These labels are 除了你[附加](#添加标签到节点)的标签外,节点还预先填充了一组标准标签。这些标签是 * [`kubernetes.io/hostname`](/docs/reference/kubernetes-api/labels-annotations-taints/#kubernetes-io-hostname) -* [`failure-domain.beta.kubernetes.io/zone`](/docs/reference/kubernetes-api/labels-annotations-taints/#failure-domain-beta-kubernetes-io-zone) -* [`failure-domain.beta.kubernetes.io/region`](/docs/reference/kubernetes-api/labels-annotations-taints/#failure-domain-beta-kubernetes-io-region) +* [`failure-domain.beta.kubernetes.io/zone`](/docs/reference/kubernetes-api/labels-annotations-taints/#failure-domainbetakubernetesiozone) +* [`failure-domain.beta.kubernetes.io/region`](/docs/reference/kubernetes-api/labels-annotations-taints/#failure-domainbetakubernetesioregion) +* [`topology.kubernetes.io/zone`](/docs/reference/kubernetes-api/labels-annotations-taints/#topologykubernetesiozone) +* [`topology.kubernetes.io/region`](/docs/reference/kubernetes-api/labels-annotations-taints/#topologykubernetesiozone) * [`beta.kubernetes.io/instance-type`](/docs/reference/kubernetes-api/labels-annotations-taints/#beta-kubernetes-io-instance-type) +* [`node.kubernetes.io/instance-type`](/docs/reference/kubernetes-api/labels-annotations-taints/#nodekubernetesioinstance-type) * [`kubernetes.io/os`](/docs/reference/kubernetes-api/labels-annotations-taints/#kubernetes-io-os) * [`kubernetes.io/arch`](/docs/reference/kubernetes-api/labels-annotations-taints/#kubernetes-io-arch) @@ -552,7 +555,7 @@ spec: topologyKey: "kubernetes.io/hostname" containers: - name: web-app - image: nginx:1.12-alpine + image: nginx:1.16-alpine ``` -### 使用Falco采集审计事件 +### 使用 Falco 采集审计事件 -[Falco](https://falco.org/)是一个用于云原生平台入侵和异常检测开源项目。本节介绍如何设置Falco,如何将审计事件发送到Falco公开的Kubernetes Audit端点,以及Falco如何应用一组规则来自动检测可疑行为。 +[Falco](https://falco.org/)是一个开源项目,用于为云原生平台提供入侵和异常检测。本节介绍如何设置 Falco、如何将审计事件发送到 Falco 公开的 Kubernetes Audit 端点、以及 Falco 如何应用一组规则来自动检测可疑行为。 {{% /capture %}} @@ -40,21 +40,21 @@ This section describes how to set up Falco, how to send audit events to the Kube -使用以下方法安装Falco: +使用以下方法安装 Falco : -- [Standalone Falco][falco_installation] +- [独立安装 Falco][falco_installation] - [Kubernetes DaemonSet][falco_installation] - [Falco Helm Chart][falco_helm_chart] -安装完成Falco后,请确保将其配置为公开Audit Webhook。 为此,请使用以下配置: +安装完成 Falco 后,请确保将其配置为公开 Audit Webhook。为此,请使用以下配置: ```yaml webserver: @@ -68,11 +68,11 @@ webserver: -配置通常可以在`/ etc / falco / falco.yaml`文件中找到。 如果Falco作为Kubernetes DaemonSet安装,请编辑`falco-config` ConfigMap并添加此配置。 +此配置通常位于 `/etc/falco/falco.yaml` 文件中。如果 Falco 作为 Kubernetes DaemonSet 安装,请编辑 `falco-config` ConfigMap 并添加此配置。 -#### 配置Kubernetes审计 +#### 配置 Kubernetes 审计 -1. 为 [kube-apiserver][kube-apiserver] webhook 审计后端创建一个[kubeconfig file](/docs/concepts/configuration/organize-cluster-access-kubeconfig/)配置文件。 +1. 为 [kube-apiserver][kube-apiserver] webhook 审计后端创建一个[kubeconfig](/docs/concepts/configuration/organize-cluster-access-kubeconfig/)文件。 cat < /etc/kubernetes/audit-webhook-kubeconfig apiVersion: v1 @@ -119,7 +119,7 @@ This configuration is typically found in the `/etc/falco/falco.yaml` file. If Fa --audit-policy-file=/etc/kubernetes/audit-policy.yaml --audit-webhook-config-file=/etc/kubernetes/audit-webhook-kubeconfig ``` --> -2. 使用以下选项开启 [kube-apiserver][kube-apiserver]: +2. 使用以下选项启动 [kube-apiserver][kube-apiserver]: ```shell --audit-policy-file=/etc/kubernetes/audit-policy.yaml --audit-webhook-config-file=/etc/kubernetes/audit-webhook-kubeconfig @@ -137,7 +137,7 @@ There are three classes of rules. The first class of rules looks for suspicious or exceptional activities, such as: --> -专门用于Kubernetes审计事件的规则可以在[k8s_audit_rules.yaml] [falco_k8s_audit_rules]中找到。 如果Audit Rules是作为本机软件包安装或使用官方Docker镜像安装的,则Falco会将规则文件复制到`/etc/falco/`中,以便可以使用。 +专门用于 Kubernetes 审计事件的规则可以在 [k8s_audit_rules.yaml][falco_k8s_audit_rules] 中找到。如果审计规则是作为本机软件包安装或使用官方 Docker 镜像安装的,则 Falco 会将规则文件复制到 `/etc/falco/` 中以便使用。 共有三类规则。 @@ -158,17 +158,17 @@ The first class of rules looks for suspicious or exceptional activities, such as - Creating a ClusterRole with write permissions or a ClusterRole that can execute commands on pods. --> -未经授权或匿名用户的任何活动。 --创建使用未知或不允许的镜像的pod。 --创建特权Pod,从主机安装敏感文件系统的Pod或使用主机网络的Pod。 --创建NodePort服务。 --创建包含私有证书(例如密码和云提供商secrets)的ConfigMap。 --在正在运行的Pod上附加或执行命令。 +-创建使用未知或不允许的镜像的 pod。 +-创建特权 Pod,从主机安装敏感文件系统的 Pod 或使用主机网络的 Pod。 +-创建 NodePort 服务。 +-创建包含私有证书(例如密码和云提供商 secrets )的 ConfigMap。 +-在正在运行的 Pod 上附加或执行命令。 -在一组允许的名称空间之外创建一个名称空间。 --在kube-system或kube-public命名空间中创建pod或服务帐户。 --尝试修改或删除系统ClusterRole。 --创建一个ClusterRoleBinding到cluster-admin角色。 --使用通配动词或资源创建ClusterRole。 例如,过度赋权。 --创建具有写权限的ClusterRole或可以在Pod上执行命令的ClusterRole。 +-在 kube-system 或 kube-public 命名空间中创建 pod 或服务帐户。 +-尝试修改或删除系统 ClusterRole。 +-创建一个 ClusterRoleBinding 到 cluster-admin 角色。 +-创建 ClusterRole 时在动词或资源中使用通配符。 例如,过度赋权。 +-创建具有写权限的 ClusterRole 或可以在 Pod 上执行命令的 ClusterRole。 -最后一类规则显示Falco收到的所有审核事件。默认情况下,此规则是禁用的,因为它可能会很吵。 +最后一类规则仅负责显示 Falco 收到的所有审核事件。默认情况下,此规则是禁用的,因为它可能会很吵。 -有关更多详细信息,请参阅Falco文档中的[Kubernetes审计事件][falco_ka_docs]。 +有关更多详细信息,请参阅 Falco 文档中的[Kubernetes审计事件][falco_ka_docs]。 为了表达更加清晰,本指南定义了以下术语: - - - -节点(Node): - -Kubernetes 集群中其中一台工作机器,是集群的一部分。 - - - -集群(Cluster): - -一组运行程序(这些程序是容器化的,被 Kubernetes 管理的)的节点。 在此示例中,和在大多数常见的Kubernetes部署方案,集群中的节点都不会是公共网络。 - - - -边缘路由器(Edge router): - -在集群中强制性执行防火墙策略的路由器(router)。可以是由云提供商管理的网关,也可以是物理硬件。 - - - -集群网络(Cluster network): - -一组逻辑或物理的链接,根据 Kubernetes [网络模型](/docs/concepts/cluster-administration/networking/) 在集群内实现通信。 - - - -服务(Service): - -Kubernetes {{< glossary_tooltip term_id="service" >}} 使用 {{< glossary_tooltip text="标签" term_id="label" >}} 选择器(selectors)标识的一组 Pod。除非另有说明,否则假定服务只具有在集群网络中可路由的虚拟 IP。 - + +* 节点(Node): Kubernetes 集群中其中一台工作机器,是集群的一部分。 +* 集群(Cluster): 一组运行程序(这些程序是容器化的,被 Kubernetes 管理的)的节点。 在此示例中,和在大多数常见的Kubernetes部署方案,集群中的节点都不会是公共网络。 +* 边缘路由器(Edge router): 在集群中强制性执行防火墙策略的路由器(router)。可以是由云提供商管理的网关,也可以是物理硬件。 +* 集群网络(Cluster network): 一组逻辑或物理的链接,根据 Kubernetes [网络模型](/docs/concepts/cluster-administration/networking/) 在集群内实现通信。 +* 服务(Service):Kubernetes {{< glossary_tooltip term_id="service" >}} 使用 {{< glossary_tooltip text="标签" term_id="label" >}} 选择器(selectors)标识的一组 Pod。除非另有说明,否则假定服务只具有在集群网络中可路由的虚拟 IP。 ## Ingress 是什么? - -Ingress 公开了从集群外部到集群内 {{< link text="services" url="/docs/concepts/services-networking/service/" >}} 的HTTP和HTTPS路由。 +[Ingress](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#ingress-v1beta1-networking-k8s-io) 公开了从集群外部到集群内 {{< link text="services" url="/docs/concepts/services-networking/service/" >}} 的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 资源上定义的规则控制。 ```none @@ -100,9 +66,9 @@ Ingress 公开了从集群外部到集群内 {{< link text="services" url="/docs ``` -可以将 Ingress 配置为提供服务外部可访问的 URL、负载均衡流量、终止 SSL / TLS 并提供基于名称的虚拟主机。[Ingress 控制器](/docs/concepts/services-networking/ingress-controllers)通常负责通过负载均衡器来实现 Ingress,尽管它也可以配置边缘路由器或其他前端来帮助处理流量。 +可以将 Ingress 配置为提供服务外部可访问的 URL、负载均衡流量、终止 SSL / TLS,以及提供基于名称的虚拟主机。[Ingress 控制器](/docs/concepts/services-networking/ingress-controllers) 通常负责通过负载均衡器来实现 Ingress,尽管它也可以配置边缘路由器或其他前端来帮助处理流量。 @@ -124,29 +86,24 @@ Ingress 不会公开任意端口或协议。 将 HTTP 和 HTTPS 以外的服务 -您必须具有 [ingress 控制器](/docs/concepts/services-networking/ingress-controllers)才能满足 Ingress 的要求。仅创建 Ingress 资源无效。 +您必须具有 [ingress 控制器](/docs/concepts/services-networking/ingress-controllers) 才能满足 Ingress 的要求。仅创建 Ingress 资源无效。 -您可能需要部署 Ingress 控制器,例如 [ingress-nginx](https://kubernetes.github.io/ingress-nginx/deploy/)。您可以从许多[ Ingress 控制器](/docs/concepts/services-networking/ingress-controllers)中进行选择。 +您可能需要部署 Ingress 控制器,例如 [ingress-nginx](https://kubernetes.github.io/ingress-nginx/deploy/)。您可以从许多[Ingress 控制器](/docs/concepts/services-networking/ingress-controllers) 中进行选择。 -{{< note >}} + +理想情况下,所有 Ingress 控制器都应符合参考规范。但实际上,不同的 Ingress 控制器操作略有不同。 -确保您查看了 Ingress 控制器的文档,以了解选择它的注意事项。 -{{< /note >}} - -一定要检查一下这个控制器的 [beta 限制](https://github.com/kubernetes/ingress-gce/blob/master/LIMITATIONS.md)。 -在 GCE/Google Kubernetes Engine 之外的环境中,需要将[控制器部署](https://git.k8s.io/ingress-nginx/README.md) 为 Pod。 - {{< note >}} - 确保您查看了 Ingress 控制器的文档,以了解选择它的注意事项。 {{< /note >}} @@ -172,23 +129,27 @@ spec: - http: paths: - path: /testpath + pathType: Prefix backend: serviceName: test servicePort: 80 ``` 与所有其他 Kubernetes 资源一样,Ingress 需要使用 `apiVersion`、`kind` 和 `metadata` 字段。 + Ingress 对象的命名必须是合法的 [DNS 子域名名称](/docs/concepts/overview/working-with-objects/names#dns-subdomain-names)。 有关使用配置文件的一般信息,请参见[部署应用](/docs/tasks/run-application/run-stateless-application-deployment/)、 [配置容器](/docs/tasks/configure-pod-container/configure-pod-configmap/)、[管理资源](/docs/concepts/cluster-administration/manage-deployment/)。 Ingress 经常使用注解(annotations)来配置一些选项,具体取决于 Ingress 控制器,例如 [rewrite-target annotation](https://github.com/kubernetes/ingress-nginx/blob/master/docs/examples/rewrite/README.md)。 - 不同的 [Ingress 控制器](/docs/concepts/services-networking/ingress-controllers)支持不同的注解(annotations)。查看文档以供您选择 Ingress 控制器,以了解支持哪些注解(annotations)。 + 不同的 [Ingress 控制器](/docs/concepts/services-networking/ingress-controllers) 支持不同的注解(annotations)。查看文档以供您选择 Ingress 控制器,以了解支持哪些注解(annotations)。 * 可选主机。在此示例中,未指定主机,因此该规则适用于通过指定 IP 地址的所有入站 HTTP 通信。如果提供了主机(例如 foo.bar.com),则规则适用于该主机。 * 路径列表(例如,`/testpath`),每个路径都有一个由 `serviceName` 和 `servicePort` 定义的关联后端。在负载均衡器将流量定向到引用的服务之前,主机和路径都必须匹配传入请求的内容。 -* 后端是[服务文档](/docs/concepts/services-networking/service/)中所述的服务和端口名称的组合。与规则的主机和路径匹配的对 Ingress 的HTTP(和HTTPS)请求将发送到列出的后端。 +* 后端是 [Service 文档](/docs/concepts/services-networking/service/)中所述的服务和端口名称的组合。与规则的主机和路径匹配的对 Ingress 的 HTTP(和 HTTPS )请求将发送到列出的后端。 如果没有主机或路径与 Ingress 对象中的 HTTP 请求匹配,则流量将路由到您的默认后端。 + +### 路径类型 + + +Ingress 中的每个路径都有对应的路径类型。支持三种类型: + + +* _`ImplementationSpecific`_ (默认):对于这种类型,匹配取决于 IngressClass. 具体实现可以将其作为单独的 `pathType` 处理或者与 `Prefix` 或 `Exact` 类型作相同处理。 + +* _`Exact`_:精确匹配 URL 路径且对大小写敏感。 + +* _`Prefix`_:基于以 `/` 分割的 URL 路径前缀匹配。匹配对大小写敏感,并且对路径中的元素逐个完成。路径元素指的是由 `/` 分隔符分割的路径中的标签列表。如果每个 _p_ 都是请求路径 _p_ 的元素前缀,则请求与路径 _p_ 匹配。 + {{< note >}} + 如果路径的最后一个元素是请求路径中最后一个元素的子字符串,则不会匹配(例如:`/foo/bar` 匹配 `/foo/bar/baz`, 但不匹配 `/foo/barbaz`)。 + {{< /note >}} + + +#### 多重匹配 + +在某些情况下,Ingress 中的多条路径会匹配同一个请求。这种情况下最长的匹配路径优先。如果仍然有两条同等的匹配路径,则精确路径类型优先于前缀路径类型。 + + +## Ingress 类 + + +Ingress 可以由不同的控制器实现,通常使用不同的配置。每个 Ingress 应当指定一个类,一个对 IngressClass 资源的引用,该资源包含额外的配置,其中包括应当实现该类的控制器名称。 + +```yaml +apiVersion: networking.k8s.io/v1beta1 +kind: IngressClass +metadata: + name: external-lb +spec: + controller: example.com/ingress-controller + parameters: + apiGroup: k8s.example.com/v1alpha + kind: IngressParameters + name: external-lb +``` + + +IngressClass 资源包含一个可选的参数字段。可用于引用该类的额外配置。 + + +### 废弃的注解 + + +在 IngressClass 资源和 `ingressClassName` 字段被引入 Kubernetes 1.18 之前,Ingress 类是通过 Ingress 中的一个 +`kubernetes.io/ingress.class` 注解来指定的。这个注解从未被正式定义过,但是得到了 Ingress 控制器的广泛支持。 + + +Ingress 中新的 `ingressClassName` 字段是该注解的替代品,但并非完全等价。该注解通常用于引用实现该 Ingress 的控制器的名称, +而这个新的字段则是对一个包含额外 Ingress 配置的 IngressClass 资源的引用,包括 Ingress 控制器的名称。 + + +### 默认 Ingress 类 + + +您可以将一个特定的 IngressClass 标记为集群默认项。将一个 IngressClass 资源的 `ingressclass.kubernetes.io/is-default-class` 注解设置为 `true` 将确保新的未指定 `ingressClassName` 字段的 Ingress 能够分配为这个默认的 IngressClass. + + +{{< caution >}} +如果集群中有多个 IngressClass 被标记为默认,准入控制器将阻止创建新的未指定 `ingressClassName` 字段的 Ingress 对象。 +解决这个问题只需确保集群中最多只能有一个 IngressClass 被标记为默认。 +{{< /caution >}} + -Ingress 类型 +## Ingress 类型 -其中 `107.178.254.228` 是由 Ingress 控制器分配以满足该 Ingress 的 IP。 - -{{< note >}} - -Ingress 控制器和负载均衡器可能需要一两分钟才能分配 IP 地址。 -在此之前,您通常会看到地址为 ``。 -{{< /note >}} - -{{< note >}} +其中 `203.0.113.123` 是由 Ingress 控制器分配以满足该 Ingress 的 IP。 +{{< note >}} 入口控制器和负载平衡器可能需要一两分钟才能分配IP地址。 在此之前,您通常会看到地址字段的值被设定为 ``。 {{< /note >}} @@ -384,16 +462,15 @@ When it has done so, you can see the address of the load balancer at the Address field. --> -Ingress 控制器将提供实现特定的负载均衡器来满足 Ingress,只要 Service (`s1`,`s2`) 存在。 -当它这样做了,你会在地址栏看到负载均衡器的地址。 - -{{< note >}} +Ingress 控制器将提供实现特定的负载均衡器来满足 Ingress,只要 Service (`service1`,`service2`) 存在。 +当它这样做了,您会在地址栏看到负载均衡器的地址。 +{{< note >}} 根据您使用的 [Ingress 控制器](/docs/concepts/services-networking/ingress-controllers),您可能需要创建默认 HTTP 后端 [Service](/docs/concepts/services-networking/service/)。 {{< /note >}} @@ -521,11 +598,10 @@ type: kubernetes.io/tls - -在 Ingress 中引用此 Secret 将会告诉 Ingress 控制器使用 TLS 加密从客户端到负载均衡器的通道。您需要确保创建的 TLS secret 来自包含 `sslexample.foo.com` 的 CN 的证书。 +在 Ingress 中引用此 Secret 将会告诉 Ingress 控制器使用 TLS 加密从客户端到负载均衡器的通道。您需要确保创建的 TLS secret 来自包含 `sslexample.foo.com` 的公用名称(CN)的证书,也被称为全限定域名(FQDN)。 ```yaml apiVersion: networking.k8s.io/v1beta1 @@ -546,22 +622,18 @@ spec: serviceName: service1 servicePort: 80 ``` -{{< note >}} - -{{< note >}} - +{{< note >}} 各种 Ingress 控制器所支持的 TLS 功能之间存在差异。请参阅有关文件 -[nginx](https://git.k8s.io/ingress-nginx/README.md#https)、 +[nginx](https://kubernetes.github.io/ingress-nginx/user-guide/tls/)、 [GCE](https://git.k8s.io/ingress-gce/README.md#frontend-https) 或者任何其他平台特定的 Ingress 控制器,以了解 TLS 如何在您的环境中工作。 - {{< /note >}} 用于跨故障域传播流量的技术在云提供商之间是不同的。详情请查阅相关 Ingress 控制器的文档。 -请查看相关[ Ingress 控制器](/docs/concepts/services-networking/ingress-controllers)的文档以了解详细信息。 -您还可以参考[联邦文档](/docs/concepts/cluster-administration/federation/),以获取有关在联合集群中部署Ingress的详细信息。 +请查看相关[ Ingress 控制器](/docs/concepts/services-networking/ingress-controllers) 的文档以了解详细信息。 +您还可以参考[联邦文档](https://github.com/kubernetes-sigs/federation-v2),以获取有关在联合集群中部署 Ingress 的详细信息。 -* 了解更多 [ingress 控制器](/docs/concepts/services-networking/ingress-controllers/) +* 了解更多 [Ingress API](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#ingress-v1beta1-networking-k8s-io) +* 了解更多 [Ingress 控制器](/docs/concepts/services-networking/ingress-controllers/) * [使用 NGINX 控制器在 Minikube 上安装 Ingress](/docs/tasks/access-application-cluster/ingress-minikube) {{% /capture %}} From d537434cfc88c2ec906cfd701c1f227508e53f29 Mon Sep 17 00:00:00 2001 From: Guangze GAO Date: Thu, 30 Apr 2020 21:44:31 +0800 Subject: [PATCH 078/244] Correct errors --- .../zh/blog/_posts/2019-03-28-PID-Limiting.md | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/content/zh/blog/_posts/2019-03-28-PID-Limiting.md b/content/zh/blog/_posts/2019-03-28-PID-Limiting.md index 94a95a949d..cb56c0a97d 100644 --- a/content/zh/blog/_posts/2019-03-28-PID-Limiting.md +++ b/content/zh/blog/_posts/2019-03-28-PID-Limiting.md @@ -1,13 +1,13 @@ +--- +title: 'Kubernetes 1.14 稳定性改进中的进程ID限制' +date: 2019-04-15 +--- ---- -title: 'Kubernetes 1.14稳定性改进中的进程ID限制' -date: 2019-04-15 ---- **作者: Derek Carr** -你是否见过有人拿走了比属于他们那一份更多的饼干? 一个人走过来,抓起半打新鲜烤制的大块巧克力饼干然后匆匆离去,就像饼干怪兽大喊“ Om nom nom nom”。 +你是否见过有人拿走了比属于他们那一份更多的饼干? 一个人走过来,抓起半打新鲜烤制的大块巧克力饼干然后匆匆离去,就像饼干怪兽大喊 “Om nom nom nom”。 -在一些罕见的工作负载中,Kubernetes集群内部也发生了类似的情况。每个Pod和Node都有有限数量的可能的进程ID(PID),供所有应用程序共享。尽管很少有进程或Pod能够进入并获取所有PID,但由于这种行为,一些用户会遇到资源匮乏的情况。 因此,在Kubernetes 1.14中,我们引入了一项增强功能,以降低单个Pod垄断所有可用PID的风险。 +在一些罕见的工作负载中,Kubernetes 集群内部也发生了类似的情况。每个 Pod 和 Node 都有有限数量的可能的进程 ID(PID),供所有应用程序共享。尽管很少有进程或 Pod 能够进入并获取所有 PID,但由于这种行为,一些用户会遇到资源匮乏的情况。 因此,在 Kubernetes 1.14 中,我们引入了一项增强功能,以降低单个 Pod 垄断所有可用 PID 的风险。 -## 你能分享一些PIDs吗? +## 你能预留一些 PIDs 吗? -在这里,我们谈论的是某些容器的贪婪性。 在理想情况之外,失控过程有时会发生,特别是在测试集群中。 因此,在这些集群中会发生一些混乱的非生产环境准备就绪的事情。 +在这里,我们谈论的是某些容器的贪婪性。 在理想情况之外,失控进程有时会发生,特别是在测试集群中。 因此,在这些集群中会发生一些混乱的非生产环境准备就绪的事情。 -在这种情况下,可能会在节点内部发生类似于分叉函数炸弹的事件。随着资源的缓慢腐蚀,被一些不断产生子进程的僵尸般的进程所接管,其他正常的工作负载会因为这些像气球般不断膨胀的进程浪费行为而开始受到冲击。这可能导致同一吊舱上的其他进程缺少所需的PID。这也可能导致有趣的副作用,因为节点可能会发生故障,并且该Pod的副本将安排到新的机器上,至此,该过程将在整个群集中重复进行。 +在这种情况下,可能会在节点内部发生类似于 fork 炸弹耗尽 PID 的攻击。随着资源的缓慢腐蚀,被一些不断产生子进程的僵尸般的进程所接管,其他正常的工作负载会因为这些像气球般不断膨胀的浪费的处理能力而开始受到冲击。这可能导致同一 Pod 上的其他进程缺少所需的 PID。这也可能导致有趣的副作用,因为节点可能会发生故障,并且该Pod的副本将安排到新的机器上,至此,该过程将在整个群集中重复进行。 ## 解决问题 -因此,在Kubernetes 1.14中,我们增加了一个允许限制给定Pod可以消耗的pid数量kubelet配置的特性。如果该机器支持32768个PIDs和100个Pod,则可以为每个Pod提供300个PIDs的预算,以防止PIDs完全耗尽。如果管理员想要像CPU或内存那样过度使用PIDs,那么他们也可以配置超额使用,但是这样会有一些额外风险。不管怎样,没有一个Pod能搞坏整个机器。这通常会防止简单的分叉函数炸弹接管你的集群。 +因此,在 Kubernetes 1.14 中,我们添加了一个特性,允许通过配置 kubelet,限制给定 Pod 可以消耗的 PID 数量。如果该机器支持 32768 个 PIDs 和 100 个 Pod,则可以为每个 Pod 提供 300 个 PIDs 的预算,以防止 PIDs 完全耗尽。如果管理员想要像 CPU 或内存那样过度使用 PIDs,那么他们也可以配置超额使用,但是这样会有一些额外风险。不管怎样,没有一个Pod能搞坏整个机器。这通常会防止简单的分叉函数炸弹接管你的集群。 -此更改允许管理员保护一个Pod不受另一个Pod的影响,但不能确保计算机上的所有Pod都能保护节点和节点代理本身不受影响。因此,我们在这个版本中以Alpha的形式引入了这个一个特性,它提供了PIDs在节点代理(kubelet、runtime等)与Pod上的最终用户工作负载的分离。管理员可以预定特定数量的pid(类似于今天如何预定CPU或内存),并确保它们不会被该计算机上的pod消耗。一旦从Alpha进入到Beta,然后在将来的Kubernetes版本中稳定下来,我们就可以使用这个特性防止Linux资源耗尽。 +此更改允许管理员保护一个 Pod 不受另一个 Pod 的影响,但不能确保计算机上的所有 Pod 都能保护节点和节点代理本身不受影响。因此,我们在这个版本中以 Alpha 的形式引入了这个一个特性,它提供了 PIDs 在节点代理( kubelet、runtime 等)与 Pod 上的最终用户工作负载的分离。管理员可以预定特定数量的 pid(类似于今天如何预定 CPU 或内存),并确保它们不会被该计算机上的 pod 消耗。一旦从 Alpha 进入到 Beta,然后在将来的 Kubernetes 版本中稳定下来,我们就可以使用这个特性防止 Linux 资源耗尽。 -开始使用[Kubernetes 1.14](https://github.com/Kubernetes/Kubernetes/releases/tag/v1.14.0)。 +开始使用 [Kubernetes 1.14](https://github.com/Kubernetes/Kubernetes/releases/tag/v1.14.0)。 @@ -307,7 +307,7 @@ the monitoring system. Pod 的资源使用情况被报告为 Pod 状态的一部分。 -如果为集群配置了 [可选监控](http://releases.k8s.io/{{< param "githubbranch" >}}/cluster/addons/cluster-monitoring/README.md),则可以从监控系统检索 Pod 资源的使用情况。 +如果为集群配置了 [可选监控](/docs/tasks/debug-application-cluster/resource-metrics-pipeline/),则可以从监控系统检索 Pod 资源的使用情况。 + 워커 노드는 애플리케이션의 구성요소인 {{< glossary_tooltip text="파드" term_id="pod" >}}를 호스트한다. {{< glossary_tooltip text="컨트롤 플레인" term_id="control-plane" >}}은 워커 노드와 From 53884a0c89d719f2fad9a7f51124194d6cba70d0 Mon Sep 17 00:00:00 2001 From: Dominic Yin Date: Fri, 1 May 2020 17:18:39 +0800 Subject: [PATCH 088/244] Update content/zh/docs/concepts/services-networking/network-policies.md --- .../services-networking/network-policies.md | 201 ++++++++---------- 1 file changed, 90 insertions(+), 111 deletions(-) diff --git a/content/zh/docs/concepts/services-networking/network-policies.md b/content/zh/docs/concepts/services-networking/network-policies.md index 76aea85e3a..fa38f36fd7 100644 --- a/content/zh/docs/concepts/services-networking/network-policies.md +++ b/content/zh/docs/concepts/services-networking/network-policies.md @@ -4,19 +4,31 @@ content_template: templates/concept weight: 50 --- + + {{< toc >}} {{% capture overview %}} -网络策略(NetworkPolicy)是一种关于pod间及pod与其他网络端点间所允许的通信规则的规范。 +网络策略(NetworkPolicy)是一种关于 {{< glossary_tooltip text="Pod" term_id="pod">}} 间及与其他网络端点间所允许的通信规则的规范。 -`NetworkPolicy` 资源使用标签选择pod,并定义选定pod所允许的通信规则。 +NetworkPolicy 资源使用 {{< glossary_tooltip text="标签" term_id="label">}} 选择 Pod,并定义选定 Pod 所允许的通信规则。 {{% /capture %}} @@ -25,12 +37,12 @@ A network policy is a specification of how groups of pods are allowed to communi ## 前提 -网络策略通过网络插件来实现,所以用户必须使用支持 `NetworkPolicy` 的网络解决方案 - 简单地创建资源对象,而没有控制器来使它生效的话,是没有任何作用的。 +网络策略通过[网络插件](/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/)来实现。要使用网络策略,用户必须使用支持 NetworkPolicy 的网络解决方案。创建一个资源对象,而没有控制器来使它生效的话,是没有任何作用的。 -## 隔离和非隔离的Pod +## 隔离和非隔离的 Pod -默认情况下,Pod是非隔离的,它们接受任何来源的流量。 +默认情况下,Pod 是非隔离的,它们接受任何来源的流量。 -Pod可以通过相关的网络策略进行隔离。一旦命名空间中有网络策略选择了特定的Pod,该Pod会拒绝网络策略所不允许的连接。 (命名空间下其他未被网络策略所选择的Pod会继续接收所有的流量) +Pod 可以通过相关的网络策略进行隔离。一旦命名空间中有网络策略选择了特定的 Pod,该 Pod 会拒绝网络策略所不允许的连接。 (命名空间下其他未被网络策略所选择的 Pod 会继续接收所有的流量) + +网络策略不会冲突,它们是附加的。如果任何一个或多个策略选择了一个 Pod, 则该 Pod 受限于这些策略的 ingress/egress 规则的并集。因此评估的顺序并不会影响策略的结果。 -## `NetworkPolicy` 资源 +## NetworkPolicy 资源 {#networkpolicy-resource} -查看 [网络策略](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#networkpolicy-v1-networking-k8s-io) 来了解资源定义。 +查看 [网络策略](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#networkpolicy-v1-networking-k8s-io) 来了解完整的资源定义。 -下面是一个 `NetworkPolicy` 的示例: +下面是一个 NetworkPolicy 的示例: ```yaml apiVersion: networking.k8s.io/v1 @@ -97,39 +113,43 @@ spec: port: 5978 ``` - +{{< note >}} +除非选择支持网络策略的网络解决方案,否则将上述示例发送到API服务器没有任何效果。 +{{< /note >}} -__Mandatory Fields__: As with all other Kubernetes config, a `NetworkPolicy` + -除非选择支持网络策略的网络解决方案,否则将上述示例发送到API服务器没有任何效果。 +__必填字段__: 与所有其他的 Kubernetes 配置一样,NetworkPolicy 需要 `apiVersion`、 `kind` 和 `metadata` 字段。 关于配置文件操作的一般信息,请参考 [使用 ConfigMap 配置容器](/docs/tasks/configure-pod-container/configure-pod-configmap/), +和 [对象管理](/docs/concepts/overview/working-with-objects/object-management)。 -__必填字段__: 与所有其他的Kubernetes配置一样,`NetworkPolicy` 需要 `apiVersion`、 `kind`和 `metadata` 字段。 关于配置文件操作的一般信息,请参考 [这里](/docs/user-guide/simple-yaml)、 [这里](/docs/user-guide/configuring-containers)和 [这里](/docs/user-guide/working-with-resources)。 +__spec__: NetworkPolicy [规约](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status) 中包含了在一个命名空间中定义特定网络策略所需的所有信息。 -__spec__: `NetworkPolicy` [spec](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status) 中包含了在一个命名空间中定义特定网络策略所需的所有信息 +__podSelector__: 每个 NetworkPolicy 都包括一个 `podSelector` ,它对该策略所应用的一组 Pod 进行选择。示例中的策略选择带有 "role=db" 标签的 Pod。空的 `podSelector` 选择命名空间下的所有 Pod。 -__podSelector__: 每个 `NetworkPolicy` 都包括一个 `podSelector` ,它对该策略所应用的一组Pod进行选择。因为 `NetworkPolicy` 目前只支持定义 `ingress` 规则,这里的 `podSelector` 本质上是为该策略定义 "目标pod" 。示例中的策略选择带有 "role=db" 标签的pod。空的 `podSelector` 选择命名空间下的所有pod。 +__policyTypes__: 每个 NetworkPolicy 都包含一个 `policyTypes` 列表,其中包含 `Ingress` 或 `Egress` 或两者兼具。`policyTypes` 字段表示给定的策略是否应用于进入所选 Pod 的入口流量或者来自所选 Pod 的出口流量,或两者兼有。如果 NetworkPolicy 未指定 `policyTypes` 则默认情况下始终设置 `Ingress`,如果 NetworkPolicy 有任何出口规则的话则设置 `Egress`。 -__policyTypes__: Each `NetworkPolicy` includes a `policyTypes` list which may include either `Ingress`, `Egress`, or both. The `policyTypes` field indicates whether or not the given policy applies to ingress traffic to selected pod, egress traffic from selected pods, or both. If no `policyTypes` are specified on a NetworkPolicy then by default `Ingress` will always be set and `Egress` will be set if the NetworkPolicy has any egress rules. +__ingress__: 每个 NetworkPolicy 可包含一个 `ingress` 规则的白名单列表。每个规则都允许同时匹配 `from` 和 `ports` 部分的流量。示例策略中包含一条简单的规则: 它匹配一个单一的端口,来自三个来源中的一个, 第一个通过 `ipBlock` 指定,第二个通过 `namespaceSelector` 指定,第三个通过 `podSelector` 指定。 -__ingress__: 每个 `NetworkPolicy` 包含一个 `ingress` 规则的白名单列表。(其中的)规则允许同时匹配 `from` 和 `ports` 部分的流量。示例策略中包含一条简单的规则: 它匹配一个单一的端口,来自两个来源中的一个, 第一个通过 `namespaceSelector` 指定,第二个通过 `podSelector` 指定。 - -__egress__: 每个 `NetworkPolicy` 包含一个 `egress` 规则的白名单列表。每个规则都允许匹配 `to` 和 `port` 部分的流量。该示例策略包含一条规则,该规则将单个端口上的流量匹配到 `10.0.0.0/24` 中的任何目的地。 +__egress__: 每个 NetworkPolicy 可包含一个 `egress` 规则的白名单列表。每个规则都允许匹配 `to` 和 `port` 部分的流量。该示例策略包含一条规则,该规则将单个端口上的流量匹配到 `10.0.0.0/24` 中的任何目的地。 -所以,示例网络策略: +所以,该网络策略示例: -1. 隔离 "default" 命名空间下 "role=db" 的pod (如果它们不是已经被隔离的话)。 -2. 允许从 "default" 命名空间下带有 "role=frontend" 标签的pod到 "default" 命名空间下的pod的6379 TCP端口的连接。 +1. 隔离 "default" 命名空间下 "role=db" 的 Pod (如果它们不是已经被隔离的话)。 +2. (Ingress 规则)允许以下 Pod 连接到 "default" 命名空间下的带有 “role=db” 标签的所有 Pod 的 6379 TCP 端口: - * 标签为 "role=frontend" 的 "default" 名称空间中的任何Pod - * 名称空间中带有标签 "project=myproject" 的任何pod + * "default" 命名空间下任意带有 "role=frontend" 标签的 Pod + * 带有 "project=myproject" 标签的任意命名空间中的 Pod * IP 地址范围为 172.17.0.0–172.17.0.255 和 172.17.2.0–172.17.255.255(即,除了 172.17.1.0/24 之外的所有 172.17.0.0/16) -3. 允许从带有 "project=myproject" 标签的命名空间下的任何 pod 到 "default" 命名空间下的 pod 的6379 TCP端口的连接。 +3. (Egress 规则)允许从带有 "role=db" 标签的命名空间下的任何 Pod 到 CIDR 10.0.0.0/24 下 5978 TCP 端口的连接。 -查看 [网络策略入门指南](/docs/getting-started-guides/network-policy/walkthrough) 了解更多示例。 +查看 [声明网络策略](/docs/getting-started-guides/network-policy/walkthrough) 来进行更多的示例演练。 +在 `from` 数组中仅包含一个元素,只允许来自标有 `role=client` 的 Pod 且该 Pod 所在的命名空间中标有 `user=alice` 的连接。但是 *这项* 策略: ```yaml ... @@ -227,7 +250,7 @@ For egress, this means that connections from pods to `Service` IPs that get rewr cluster-external IPs may or may not be subject to `ipBlock`-based policies. --> -在 `from` 数组中包含两个元素,允许来自本地命名空间中标有 `role = client` 的 Pod 的连接,*或*来自任何名称空间中标有`user = alice`的任何Pod的连接。 +在 `from` 数组中包含两个元素,允许来自本地命名空间中标有 `role=client` 的 Pod 的连接,*或* 来自任何命名空间中标有 `user = alice` 的任何 Pod 的连接。 如有疑问,请使用 `kubectl describe` 查看 Kubernetes 如何解释该策略。 @@ -235,7 +258,7 @@ __ipBlock__: 这将选择特定的 IP CIDR 范围以用作入口源或出口目 群集的入口和出口机制通常需要重写数据包的源 IP 或目标 IP。在发生这种情况的情况下,不确定在 NetworkPolicy 处理之前还是之后发生,并且对于网络插件,云提供商,`Service` 实现等的不同组合,其行为可能会有所不同。 -在进入的情况下,这意味着在某些情况下,您可以根据实际的原始源 IP 过滤传入的数据包,而在其他情况下,NetworkPolicy 所作用的 `源IP` 则可能是 `LoadBalancer` 或 Pod的节点等。 +在进入的情况下,这意味着在某些情况下,您可以根据实际的原始源 IP 过滤传入的数据包,而在其他情况下,NetworkPolicy 所作用的 `源IP` 则可能是 `LoadBalancer` 或 Pod 的节点等。 对于出口,这意味着从 Pod 到被重写为集群外部 IP 的 `Service` IP 的连接可能会或可能不会受到基于 `ipBlock` 的策略的约束。 @@ -248,7 +271,7 @@ in that namespace. ## 默认策略 -默认情况下,如果名称空间中不存在任何策略,则所有进出该名称空间中的Pod的流量都被允许。以下示例使您可以更改该名称空间中的默认行为。 +默认情况下,如果命名空间中不存在任何策略,则所有进出该命名空间中的 Pod 的流量都被允许。以下示例使您可以更改该命名空间中的默认行为。 -Kubernetes 支持 SCTP 作为 NetworkPolicy 定义中的协议值作为 alpha 功能提供。要启用此功能,集群管理员需要在 apiserver 上启用 `SCTPSupport` 功能门,例如 `“--feature-gates=SCTPSupport=true,...”`。启用功能门后,用户可以将 `NetworkPolicy` 的 `protocol` 字段设置为 `SCTP`。 Kubernetes 相应地为 SCTP 关联设置网络,就像为 TCP 连接一样。 +要启用此特性,你(或你的集群管理员)需要通过为 API server 指定 `--feature-gates=SCTPSupport=true,…` 来启用 `SCTPSupport` [特性开关](/docs/reference/command-line-tools-reference/feature-gates/)。启用该特性开关后,用户可以将 NetworkPolicy 的 `protocol` 字段设置为 `SCTP`。 + + +{{< note >}} +必须使用支持 SCTP 协议网络策略的 {{< glossary_tooltip text="CNI" term_id="cni" >}} 插件。 +{{< /note >}} -CNI插件必须在 `NetworkPolicy` 中将 SCTP 作为 `protocol` 值支持。 {{% /capture %}} @@ -401,10 +379,11 @@ CNI插件必须在 `NetworkPolicy` 中将 SCTP 作为 `protocol` 值支持。 - 查看 [声明网络策略](/docs/tasks/administer-cluster/declare-network-policy/) 来进行更多的示例演练 -- 有关NetworkPolicy资源启用的常见方案的更多信息,请参见 [Recipes](https://github.com/ahmetb/kubernetes-network-policy-recipes)。 +- 有关 NetworkPolicy 资源启用的常见场景的更多信息,请参见 [指南](https://github.com/ahmetb/kubernetes-network-policy-recipes)。 + {{% /capture %}} From 96769005688a11493adcc0a4ee9c65b2c5d05015 Mon Sep 17 00:00:00 2001 From: Arhell Date: Fri, 1 May 2020 12:25:31 +0300 Subject: [PATCH 089/244] Alphabetize readme localization --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 3329b1a8c3..d3ee35693b 100644 --- a/README.md +++ b/README.md @@ -48,13 +48,13 @@ For more information about contributing to the Kubernetes documentation, see: | Language | Language | |---|---| -|[French](README-fr.md)|[Korean](README-ko.md)| +|[Chinese](README-zh.md)|[Korean](README-ko.md)| +|[French](README-fr.md)|[Polish](README-pl.md)| |[German](README-de.md)|[Portuguese](README-pt.md)| -|[Hindi](README-hi.md)|[Spanish](README-es.md)| -|[Indonesian](README-id.md)|[Chinese](README-zh.md)| +|[Hindi](README-hi.md)|[Russian](README-ru.md)| +|[Indonesian](README-id.md)|[Spanish](README-es.md)| +|[Italian](README-it.md)|[Ukrainian](README-uk.md)| |[Japanese](README-ja.md)|[Vietnamese](README-vi.md)| -|[Russian](README-ru.md)|[Italian](README-it.md)| -|[Polish](README-pl.md)|[Ukrainian](README-uk.md)| ## Code of conduct From b144d84f40c2c3adc38bf69b74cb90316e979afe Mon Sep 17 00:00:00 2001 From: Alex Contini Date: Fri, 1 May 2020 12:48:30 -0400 Subject: [PATCH 090/244] fix text --- content/en/case-studies/booz-allen/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/case-studies/booz-allen/index.html b/content/en/case-studies/booz-allen/index.html index 39f40108a7..8195a62ffe 100644 --- a/content/en/case-studies/booz-allen/index.html +++ b/content/en/case-studies/booz-allen/index.html @@ -73,7 +73,7 @@ featured: false ​
- “There is no competitive edge over our competitors like Puma or Nike in running and operating a Kubernetes cluster. Our competitive edge is that we teach our internal engineers how to build cool e-comm stores that are fast, that are resilient, that are running perfectly.”

- DANIEL EICHTEN, SENIOR DIRECTOR OF PLATFORM ENGINEERING AT ADIDAS

+ "Kubernetes alone enables a dramatic reduction in cost as resources are prioritized to the day’s event"

- MARTIN FOLKOFF, SENIOR LEAD TECHNOLOGIST AT BOOZ ALLEN HAMILTON

​ From eca312fbf36f09be48e47082fe842a6e3dee7434 Mon Sep 17 00:00:00 2001 From: Dominic Yin Date: Sat, 2 May 2020 09:30:25 +0800 Subject: [PATCH 091/244] update zh doc dual-stack for release-1.18; refer to #20694 --- .../concepts/services-networking/dual-stack.md | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/content/zh/docs/concepts/services-networking/dual-stack.md b/content/zh/docs/concepts/services-networking/dual-stack.md index 050fa9800d..589b9813a7 100644 --- a/content/zh/docs/concepts/services-networking/dual-stack.md +++ b/content/zh/docs/concepts/services-networking/dual-stack.md @@ -76,12 +76,10 @@ The following prerequisites are needed in order to utilize IPv4/IPv6 dual-stack * Kubernetes 1.16 or later * Provider support for dual-stack networking (Cloud provider or otherwise must be able to provide Kubernetes nodes with routable IPv4/IPv6 network interfaces) * A network plugin that supports dual-stack (such as Kubenet or Calico) - * Kube-proxy running in mode IPVS --> * Kubernetes 1.16 版本及更高版本 * 提供商支持双协议栈网络(云提供商或其他提供商必须能够为 Kubernetes 节点提供可路由的 IPv4/IPv6 网络接口) * 支持双协议栈的网络插件(如 Kubenet 或 Calico) - * Kube-proxy 运行在 IPVS 模式 要启用 IPv4/IPv6 双协议栈,为集群的相关组件启用 `IPv6DualStack` [特性门控](/docs/reference/command-line-tools-reference/feature-gates/),并且设置双协议栈的集群网络分配: + * kube-apiserver: + * `--feature-gates="IPv6DualStack=true"` * kube-controller-manager: * `--feature-gates="IPv6DualStack=true"` - * `--cluster-cidr=,` 例如 `--cluster-cidr=10.244.0.0/16,fc00::/24` - * `--service-cluster-ip-range=,` + * `--cluster-cidr=,` 例如 `--cluster-cidr=10.244.0.0/16,fc00::/48` + * `--service-cluster-ip-range=,` 例如 `--service-cluster-ip-range=10.0.0.0/16,fd00::/108` * `--node-cidr-mask-size-ipv4|--node-cidr-mask-size-ipv6` 对于 IPv4 默认为 /24,对于 IPv6 默认为 /64 * kubelet: * `--feature-gates="IPv6DualStack=true"` * kube-proxy: - * `--proxy-mode=ipvs` * `--cluster-cidr=,` * `--feature-gates="IPv6DualStack=true"` -{{< caution >}} - -如果命令行的 `--cluster-cidr` 指定大于 /24 的 IPv6 地址块,地址分配将失败。 -{{< /caution >}} - From d13ae7a5da842479af234392d24866a546a53597 Mon Sep 17 00:00:00 2001 From: Antonio Savage Date: Fri, 1 May 2020 21:19:41 -0500 Subject: [PATCH 092/244] Fixed configure-access-multiple-clusters.md I fixed a Powershell command that you had provided in this document. Attempting to run the command with the format you supplied resulted in errors due to some conflict between using backwards slash for pathnames inside of parentheses. --- .../configure-access-multiple-clusters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/tasks/access-application-cluster/configure-access-multiple-clusters.md b/content/en/docs/tasks/access-application-cluster/configure-access-multiple-clusters.md index 4cccac0f58..acd023548a 100644 --- a/content/en/docs/tasks/access-application-cluster/configure-access-multiple-clusters.md +++ b/content/en/docs/tasks/access-application-cluster/configure-access-multiple-clusters.md @@ -346,7 +346,7 @@ export KUBECONFIG=$KUBECONFIG:$HOME/.kube/config ``` ### Windows Powershell ```shell -$Env:KUBECONFIG=($Env:KUBECONFIG;$HOME/.kube/config) +$Env:KUBECONFIG="$Env:KUBECONFIG;$HOME\.kube\config" ``` View configuration information merged from all the files that are now listed From 1a1028ac76f8d24ac66f503dfb24e9b6b2802af5 Mon Sep 17 00:00:00 2001 From: Shivam Goyal Date: Sat, 2 May 2020 13:22:13 +0530 Subject: [PATCH 093/244] Add the missing double quote (") missing double quote (") after the word services in the last table --- content/en/docs/tasks/administer-cluster/quota-api-object.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/tasks/administer-cluster/quota-api-object.md b/content/en/docs/tasks/administer-cluster/quota-api-object.md index c6cff90769..faf7210384 100644 --- a/content/en/docs/tasks/administer-cluster/quota-api-object.md +++ b/content/en/docs/tasks/administer-cluster/quota-api-object.md @@ -122,7 +122,7 @@ by quotas: - + From ed11406161764f138ab9bd53de0a8e488083aa7a Mon Sep 17 00:00:00 2001 From: Vinicius Barbosa Date: Sat, 2 May 2020 07:39:45 -0300 Subject: [PATCH 094/244] Update content/pt/docs/concepts/scheduling/kube-scheduler.md Co-authored-by: Diego W. Antunes --- content/pt/docs/concepts/scheduling/kube-scheduler.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/pt/docs/concepts/scheduling/kube-scheduler.md b/content/pt/docs/concepts/scheduling/kube-scheduler.md index a2c6ad4daa..50d6fe158d 100644 --- a/content/pt/docs/concepts/scheduling/kube-scheduler.md +++ b/content/pt/docs/concepts/scheduling/kube-scheduler.md @@ -18,7 +18,7 @@ sejam correspondidos aos {{< glossary_tooltip text="Nodes" term_id="node" >}} pa ## Visão geral do Escalonamento {#escalonamento} Um escalonador observa Pods recém-criados que não possuem um Node atribuído. -Para cada Pod que o planejador descobre, ele se torna responsável por +Para cada Pod que o escalonador descobre, ele se torna responsável por encontrar o melhor Node para execução do Pod. O escalonador chega a essa decisão de alocação levando em consideração os princípios de programação descritos abaixo. Se você quiser entender por que os Pods são alocados em um Node específico From 15f685d7a2b697fc32e0069913beafef3834a24b Mon Sep 17 00:00:00 2001 From: Vinicius Barbosa Date: Sat, 2 May 2020 07:41:12 -0300 Subject: [PATCH 095/244] Update content/pt/docs/concepts/scheduling/kube-scheduler.md Co-authored-by: Diego W. Antunes --- content/pt/docs/concepts/scheduling/kube-scheduler.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/pt/docs/concepts/scheduling/kube-scheduler.md b/content/pt/docs/concepts/scheduling/kube-scheduler.md index 50d6fe158d..bf1ead8d1e 100644 --- a/content/pt/docs/concepts/scheduling/kube-scheduler.md +++ b/content/pt/docs/concepts/scheduling/kube-scheduler.md @@ -30,7 +30,7 @@ aprender sobre escalonamento. [kube-scheduler](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-scheduler/) é o escalonador padrão do Kubernetes e é executado como parte do {{< glossary_tooltip text="control plane" term_id="control-plane" >}}. -O kube-scheduler foi projetado para que, se você quiser e precisar, possa +O kube-scheduler é projetado para que, se você quiser e precisar, possa escrever seu próprio componente de escalonamento e usá-lo. Para cada Pod recém-criado ou outros Pods não escalonados, o kube-scheduler From 5aec031b9546017335ad2d50f0902c89b71fc7a1 Mon Sep 17 00:00:00 2001 From: Vinicius Barbosa Date: Sat, 2 May 2020 07:41:35 -0300 Subject: [PATCH 096/244] Update content/pt/docs/concepts/scheduling/kube-scheduler.md Co-authored-by: Diego W. Antunes --- content/pt/docs/concepts/scheduling/kube-scheduler.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/pt/docs/concepts/scheduling/kube-scheduler.md b/content/pt/docs/concepts/scheduling/kube-scheduler.md index bf1ead8d1e..7a7499f663 100644 --- a/content/pt/docs/concepts/scheduling/kube-scheduler.md +++ b/content/pt/docs/concepts/scheduling/kube-scheduler.md @@ -50,7 +50,7 @@ o servidor da API sobre essa decisão em um processo chamado _binding_. Fatores que precisam ser levados em consideração para decisões de escalonamento incluem requisitos individuais e coletivos de recursos, -restrições de política hardware / software, especificações de afinidade e anti-afinidade, +restrições de hardware / software / política, especificações de afinidade e anti-afinidade, localidade de dados, interferência entre cargas de trabalho e assim por diante. ### Seleção do Node no kube-scheduler {#implementação-kube-scheduler} From dea0dece7f609138941f3636f286e958c78f3452 Mon Sep 17 00:00:00 2001 From: Vinicius Barbosa Date: Sat, 2 May 2020 07:41:57 -0300 Subject: [PATCH 097/244] Update content/pt/docs/concepts/scheduling/kube-scheduler.md Co-authored-by: Diego W. Antunes --- content/pt/docs/concepts/scheduling/kube-scheduler.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/pt/docs/concepts/scheduling/kube-scheduler.md b/content/pt/docs/concepts/scheduling/kube-scheduler.md index 7a7499f663..b822c04932 100644 --- a/content/pt/docs/concepts/scheduling/kube-scheduler.md +++ b/content/pt/docs/concepts/scheduling/kube-scheduler.md @@ -69,7 +69,7 @@ esse Pod (ainda) não é escalonável. Na etapa de _pontuação_, o escalonador classifica os Nodes restantes para escolher o mais adequado. O escalonador atribui uma pontuação a cada Node -que sobreviveram à filtragem, baseando essa pontuação nas regras de pontuação ativa. +que sobreviveu à filtragem, baseando essa pontuação nas regras de pontuação ativa. Por fim, o kube-scheduler atribui o Pod ao Node com a classificação mais alta. Se houver mais de um Node com pontuações iguais, o kube-scheduler seleciona From 2ffe8d84d05b19972c25e435d2251f3bfc988d4b Mon Sep 17 00:00:00 2001 From: Dominic Yin Date: Sat, 2 May 2020 19:02:18 +0800 Subject: [PATCH 098/244] Update content/zh/docs/concepts/storage/volume-pvc-datasource.md --- content/zh/docs/concepts/storage/volume-pvc-datasource.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/content/zh/docs/concepts/storage/volume-pvc-datasource.md b/content/zh/docs/concepts/storage/volume-pvc-datasource.md index a8e1a51175..8ae41e5149 100644 --- a/content/zh/docs/concepts/storage/volume-pvc-datasource.md +++ b/content/zh/docs/concepts/storage/volume-pvc-datasource.md @@ -19,7 +19,6 @@ weight: 30 {{% capture overview %}} -{{< feature-state for_k8s_version="v1.16" state="beta" >}} @@ -50,10 +49,10 @@ A Clone is defined as a duplicate of an existing Kubernetes Volume that can be c 克隆,意思是为已有的 Kubernetes 卷创建副本,它可以像任何其它标准卷一样被使用。唯一的区别就是配置后,后端设备将创建指定完全相同的副本,而不是创建一个“新的”空卷。 -从 Kubernetes API 的角度看,克隆的实现只是在创建新的 PVC 时,增加了指定一个现有未绑定 PVC 作为数据源的能力。 +从 Kubernetes API 的角度看,克隆的实现只是在创建新的 PVC 时,增加了指定一个现有 PVC 作为数据源的能力。源 PVC 必须是 bound 状态且可用的(不在使用中)。 * 克隆支持(`VolumePVCDataSource`)仅适用于 CSI 驱动。 @@ -78,6 +78,7 @@ Users need to be aware of the following when using this feature: * 仅在同一存储类中支持克隆。 - 目标卷必须和源卷具有相同的存储类 - 可以使用默认的存储类并且 storageClassName 字段在规格中忽略了 +* 克隆只能在两个使用相同 VolumeMode 设置的卷中进行(如果请求克隆一个块存储模式的卷,源卷必须也是块存储模式)。 # Документація Kubernetes -[![Build Status](https://api.travis-ci.org/kubernetes/website.svg?branch=master)](https://travis-ci.org/kubernetes/website) -[![GitHub release](https://img.shields.io/github/release/kubernetes/website.svg)](https://github.com/kubernetes/website/releases/latest) +[![Netlify Status](https://api.netlify.com/api/v1/badges/be93b718-a6df-402a-b4a4-855ba186c97d/deploy-status)](https://app.netlify.com/sites/kubernetes-io-master-staging/deploys) [![GitHub release](https://img.shields.io/github/release/kubernetes/website.svg)](https://github.com/kubernetes/website/releases/latest) + Вітаємо! В цьому репозиторії міститься все необхідне для роботи над [сайтом і документацією Kubernetes](https://kubernetes.io/). Ми щасливі, що ви хочете зробити свій внесок! + +## Запуск сайту локально зa допомогою Hugo + + +Для інструкцій з встановлення Hugo дивіться [офіційну документацію](https://gohugo.io/getting-started/installing/). Обов’язково встановіть розширену версію Hugo, яка позначена змінною оточення `HUGO_VERSION` у файлі [`netlify.toml`](netlify.toml#L10). + + +Після встановлення Hugo, запустіть сайт локально командою: + +```bash +git clone https://github.com/kubernetes/website.git +cd website +hugo server --buildFuture +``` + + +Команда запустить локальний Hugo-сервер на порту 1313. Відкрийте у своєму браузері http://localhost:1313, щоб побачити сайт. По мірі того, як ви змінюєте вихідний код, Hugo актуалізує сайт відповідно до внесених змін і оновлює сторінку у браузері. + + +## Спільнота, обговорення, внесок і підтримка + + +Дізнайтеся, як долучитися до спільноти Kubernetes на [сторінці спільноти](http://kubernetes.io/community/). + + +Для зв’язку із супроводжуючими проекту скористайтеся: + +- [Slack](https://kubernetes.slack.com/messages/sig-docs) +- [Поштова розсилка](https://groups.google.com/forum/#!forum/kubernetes-sig-docs) + + ## Внесок у документацію + Ви можете створити копію цього репозиторія у своєму акаунті на GitHub, натиснувши на кнопку **Fork**, що розташована справа зверху. Ця копія називатиметься *fork* (відгалуження). Зробіть будь-які необхідні зміни у своєму відгалуженні. Коли ви будете готові надіслати їх нам, перейдіть до свого відгалуження і створіть новий pull request, щоб сповістити нас. -Після того, як ви створили pull request, рецензент Kubernetes зобов’язується надати вам по ньому чіткий і конструктивний коментар. **Ваш обов’язок як творця pull request - відкоригувати його відповідно до зауважень рецензента Kubernetes.** Також, зауважте: може статися так, що ви отримаєте коментарі від декількох рецензентів Kubernetes або від іншого рецензента, ніж той, якого вам було призначено від початку. Крім того, за потреби один із ваших рецензентів може запросити технічну перевірку від одного з [технічних рецензентів Kubernetes](https://github.com/kubernetes/website/wiki/Tech-reviewers). Рецензенти намагатимуться відреагувати вчасно, проте час відповіді може відрізнятися в залежності від обставин. + +Після того, як ви створили pull request, рецензент Kubernetes зобов’язується надати вам по ньому чіткий і конструктивний коментар. **Ваш обов’язок як творця pull request - відкоригувати його відповідно до зауважень рецензента Kubernetes.** + +Також, зауважте: може статися так, що ви отримаєте коментарі від декількох рецензентів Kubernetes або від іншого рецензента, ніж той, якого вам було призначено від початку. + + +Крім того, за потреби один із ваших рецензентів може запросити технічну перевірку від одного з технічних рецензентів Kubernetes, коли це необхідно. Рецензенти намагатимуться відреагувати вчасно, проте час відповіді може відрізнятися в залежності від обставин. + + Більше інформації про внесок у документацію Kubernetes ви знайдете у наступних джерелах: -* [Внесок: з чого почати](https://kubernetes.io/docs/contribute/start/) -* [Візуалізація запропонованих змін до документації](http://kubernetes.io/docs/contribute/intermediate#view-your-changes-locally) +* [Внесок: з чого почати](https://kubernetes.io/docs/contribute/) * [Використання шаблонів сторінок](http://kubernetes.io/docs/contribute/style/page-templates/) * [Керівництво зі стилю оформлення документації](http://kubernetes.io/docs/contribute/style/style-guide/) * [Переклад документації Kubernetes іншими мовами](https://kubernetes.io/docs/contribute/localization/) + ## Файл `README.md` іншими мовами -| | | +| інші мови | інші мови | |-------------------------------|-------------------------------| | [Англійська](README.md) | [Французька](README-fr.md) | | [Корейська](README-ko.md) | [Німецька](README-de.md) | @@ -30,55 +71,15 @@ | [Китайська](README-zh.md) | [Японська](README-ja.md) | | [В'єтнамська](README-vi.md) | [Російська](README-ru.md) | | [Італійська](README-it.md) | [Польська](README-pl.md) | -| | | -## Запуск сайту локально за допомогою Docker + +## Кодекс поведінки -Для локального запуску сайту Kubernetes рекомендовано запустити спеціальний [Docker](https://docker.com)-образ, що містить генератор статичних сайтів [Hugo](https://gohugo.io). - -> Якщо ви працюєте під Windows, вам знадобиться ще декілька інструментів, які можна встановити за допомогою [Chocolatey](https://chocolatey.org). `choco install make` - -> Якщо ви вважаєте кращим запустити сайт локально без використання Docker, дивіться пункт нижче [Запуск сайту локально за допомогою Hugo](#запуск-сайту-локально-зa-допомогою-hugo). - -Якщо у вас вже [запущений](https://www.docker.com/get-started) Docker, зберіть локальний Docker-образ `kubernetes-hugo`: - -```bash -make docker-image -``` - -Після того, як образ зібрано, ви можете запустити сайт локально: - -```bash -make docker-serve -``` - -Відкрийте у своєму браузері http://localhost:1313, щоб побачити сайт. По мірі того, як ви змінюєте вихідний код, Hugo актуалізує сайт відповідно до внесених змін і оновлює сторінку у браузері. - -## Запуск сайту локально зa допомогою Hugo - -Для інструкцій по установці Hugo дивіться [офіційну документацію](https://gohugo.io/getting-started/installing/). Обов’язково встановіть розширену версію Hugo, яка позначена змінною оточення `HUGO_VERSION` у файлі [`netlify.toml`](netlify.toml#L9). - -Після установки Hugo, запустіть сайт локально командою: - -```bash -make serve -``` - -Команда запустить локальний Hugo-сервер на порту 1313. Відкрийте у своєму браузері http://localhost:1313, щоб побачити сайт. По мірі того, як ви змінюєте вихідний код, Hugo актуалізує сайт відповідно до внесених змін і оновлює сторінку у браузері. - -## Спільнота, обговорення, внесок і підтримка - -Дізнайтеся, як долучитися до спільноти Kubernetes на [сторінці спільноти](http://kubernetes.io/community/). - -Для зв’язку із супроводжуючими проекту скористайтеся: - -- [Slack](https://kubernetes.slack.com/messages/sig-docs) -- [Поштова розсилка](https://groups.google.com/forum/#!forum/kubernetes-sig-docs) - -### Кодекс поведінки - -Участь у спільноті Kubernetes визначається правилами [Кодексу поведінки спільноти Kubernetes](code-of-conduct.md). + +Участь у спільноті Kubernetes визначається правилами [Кодексу поведінки СNCF](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). + ## Дякуємо! -Долучення до спільноти - запорука успішного розвитку Kubernetes. Ми цінуємо ваш внесок у наш сайт і документацію! + +Долучення до спільноти - запорука успішного розвитку Kubernetes. Ми цінуємо ваш внесок у наш сайт і документацію! \ No newline at end of file From 5f18998e7360a73976e2fd1728444ef6b046c7ea Mon Sep 17 00:00:00 2001 From: jqmichael Date: Sun, 3 May 2020 12:02:23 -0700 Subject: [PATCH 103/244] Made autoscale command more explicit --- content/en/docs/concepts/workloads/controllers/replicaset.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/concepts/workloads/controllers/replicaset.md b/content/en/docs/concepts/workloads/controllers/replicaset.md index fe7a96c138..92cbe60a33 100644 --- a/content/en/docs/concepts/workloads/controllers/replicaset.md +++ b/content/en/docs/concepts/workloads/controllers/replicaset.md @@ -330,7 +330,7 @@ Alternatively, you can use the `kubectl autoscale` command to accomplish the sam (and it's easier!) ```shell -kubectl autoscale rs frontend --max=10 +kubectl autoscale rs frontend --max=10 --min=3 --cpu-percent=50 ``` ## Alternatives to ReplicaSet From 3a5f53b502d1a1e6000ffab83f7bd353b7fb1a74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20L=C3=A9one?= Date: Sun, 3 May 2020 23:30:39 +0200 Subject: [PATCH 104/244] Update localization.md --- content/fr/docs/contribute/localization.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/fr/docs/contribute/localization.md b/content/fr/docs/contribute/localization.md index 1f4392e784..f07082672f 100644 --- a/content/fr/docs/contribute/localization.md +++ b/content/fr/docs/contribute/localization.md @@ -64,7 +64,7 @@ Par exemple, le code à deux lettres pour l'allemand est `de`. These instructions use the [ISO 639-1](https://www.loc.gov/standards/iso639-2/php/code_list.php) language code for German (`de`) as an example. {{< /note >}} -### Modify the site configuration +### Modifier la configuration du site Le site web de Kubernetes utilise Hugo comme son web framework. La configuration Hugo du site Web se trouve dans le fichier [`config.toml`](https://github.com/kubernetes/website/tree/master/config.toml). @@ -86,7 +86,7 @@ Lors de l'attribution d'un paramètre de `weight` à votre bloc, trouvez le bloc Pour plus d'informations sur le support multilingue de Hugo, voir "[Multilingual Mode](https://gohugo.io/content-management/multilingual/)". -### Add a new localization directory +### Ajouter un nouveau répertoire de localisation Ajoutez un sous-répertoire spécifique à la langue dans le répertoire [`content`](https://github.com/kubernetes/website/tree/master/content) du dépôt. Par exemple, le code à deux lettres pour l'allemand est "de" : From 3095b561a0742449a380a73ca0ad3b1656d72991 Mon Sep 17 00:00:00 2001 From: Pick1a1username Date: Sun, 3 May 2020 22:57:32 +0900 Subject: [PATCH 105/244] translation revised --- .../overview/working-with-objects/kubernetes-objects.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/ko/docs/concepts/overview/working-with-objects/kubernetes-objects.md b/content/ko/docs/concepts/overview/working-with-objects/kubernetes-objects.md index c62ae41b87..c0e40eeec5 100644 --- a/content/ko/docs/concepts/overview/working-with-objects/kubernetes-objects.md +++ b/content/ko/docs/concepts/overview/working-with-objects/kubernetes-objects.md @@ -44,8 +44,8 @@ spec에 3개의 애플리케이션 레플리카가 동작되도록 설정할 수 있다. 쿠버네티스 시스템은 그 디플로이먼트 spec을 읽어 spec에 일치되도록 상태를 업데이트하여 3개의 의도한 애플리케이션 인스턴스를 구동시킨다. 만약, 그 인스턴스들 중 어느 하나가 -(상태 변경에) 실패한다면, 쿠버네티스 시스템은 보정(이 경우에는 대체 인스턴스를 시작하여)을 통해 -spec과 status 간의 차이에 대응한다. +어떤 문제로 인해 멈춘다면(상태 변화 발생), 쿠버네티스 시스템은 보정(이 경우에는 대체 인스턴스를 시작하여)을 통해 +spec과 status간의 차이에 대응한다. 오브젝트 명세, 상태, 그리고 메타데이터에 대한 추가 정보는, [Kubernetes API Conventions](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md) 를 참조한다. @@ -53,7 +53,7 @@ spec과 status 간의 차이에 대응한다. 쿠버네티스에서 오브젝트를 생성할 때, (이름과 같은)오브젝트에 대한 기본적인 정보와 더불어, 의도한 상태를 기술한 오브젝트 spec을 제시해 줘야만 한다. 오브젝트를 생성하기 위해(직접이든 또는 `kubectl`을 통해서든) 쿠버네티스 API를 이용할 때, API 요청은 요청 내용 안에 JSON 형식으로 정보를 포함시켜 줘야만 한다. **대부분의 경우 정보를 .yaml 파일로 `kubectl`에 제공한다.** `kubectl`은 API 요청이 이루어질 때, JSON 형식으로 정보를 변환시켜 준다. -여기 쿠버네티스 디플로이먼트를 위한 요청 필드와 오브젝트 spec을 보여주는 `.yaml` 파일 예시가 있다. +여기 쿠버네티스 디플로이먼트를 위한 필수 필드와 오브젝트 spec을 보여주는 `.yaml` 파일 예시가 있다. {{< codenew file="application/deployment.yaml" >}} From 8a3bbf8c57477a8a5541b896ade13413a8e4a179 Mon Sep 17 00:00:00 2001 From: Fabio Alessandro Locati Date: Fri, 1 May 2020 16:28:20 +0200 Subject: [PATCH 106/244] Improve Italian translation --- config.toml | 2 +- content/it/_index.html | 12 +- .../case-studies/{_index.md => _index.html} | 3 +- content/it/case-studies/box/index.html | 114 ++++++++++++++++++ content/it/community/_index.html | 12 +- .../it/docs/concepts/overview/components.md | 2 +- content/it/partners/_index.html | 6 +- content/it/training/_index.html | 10 +- 8 files changed, 137 insertions(+), 24 deletions(-) rename content/it/case-studies/{_index.md => _index.html} (72%) create mode 100644 content/it/case-studies/box/index.html diff --git a/config.toml b/config.toml index 0c59df1eeb..4f3bed0889 100644 --- a/config.toml +++ b/config.toml @@ -186,7 +186,7 @@ language_alternatives = ["en"] [languages.it] title = "Kubernetes" -description = "Production-Grade Container Orchestration" +description = "Orchestrazione di Container in produzione" languageName = "Italiano" weight = 6 contentDir = "content/it" diff --git a/content/it/_index.html b/content/it/_index.html index b90f016777..14e043cce3 100644 --- a/content/it/_index.html +++ b/content/it/_index.html @@ -1,6 +1,6 @@ --- -title: "Orchestrazione di Container in produzione" -abstract: "Deployment, scalabilità, e gestione di container automatizzata" +title: Orchestrazione di Container in produzione +abstract: Deployment, scalabilità, e gestione di container automatizzata cid: home --- {{< announcement >}} @@ -17,19 +17,19 @@ K8s raggruppa i containers che compongono gli applicativi in unità logiche per {{% blocks/feature image="scalable" %}} #### Scala planetaria -Kubernetes può scalare senza un aumento di lavoro per il tuo team, grazie al fatto che è stato progettato sugli stessi principi che permettono a Google di eseguire miliardi di container per settimana. +Progettato con gli stessi principi che permettono a Google di eseguire miliardi di container ogni settimana, Kubernetes può scalare evitando di aumentare il lavoro per il tuo team. {{% /blocks/feature %}} {{% blocks/feature image="blocks" %}} -#### Mai limitante +#### Semplice e flessibile -Che tu stia facendo dei test locali o supportando una azienda globale, la flessibilità di Kubernetes ti permette di eseguire le tue applicazioni coerentemente e facilmente, indipendentemente dalla complessità delle tue esigenze. +Che tu stia facendo dei test locali o supportando una azienda enterprise, la flessibilità di Kubernetes ti permette di eseguire le tue applicazioni coerentemente e facilmente, indipendentemente dalla complessità delle tue esigenze. {{% /blocks/feature %}} {{% blocks/feature image="suitcase" %}} -#### Esegui ovunque +#### Eseguibile ovunque Kubernetes è open source, e ti offre la libertà di spostare i tuoi carichi di lavoro senza fatica tra ambienti on-premises, ibridi, e cloud pubblici. diff --git a/content/it/case-studies/_index.md b/content/it/case-studies/_index.html similarity index 72% rename from content/it/case-studies/_index.md rename to content/it/case-studies/_index.html index d7772b974f..7f316866fb 100644 --- a/content/it/case-studies/_index.md +++ b/content/it/case-studies/_index.html @@ -1,8 +1,7 @@ --- -draft: True title: Casi di Studio linkTitle: Casi di Studio -bigheader: Casi di studio sugli utenti di Kubernetes +bigheader: Kubernetes User Case Studies abstract: Una raccolta di utenti che eseguono Kubernetes in produzione. layout: basic class: gridPage diff --git a/content/it/case-studies/box/index.html b/content/it/case-studies/box/index.html new file mode 100644 index 0000000000..bead8eb01a --- /dev/null +++ b/content/it/case-studies/box/index.html @@ -0,0 +1,114 @@ +--- +title: Box Case Study +case_study_styles: true +cid: caseStudies +css: /css/style_box.css +video: https://www.youtube.com/embed/of45hYbkIZs?autoplay=1 +quote: > + Kubernetes has the opportunity to be the new cloud platform. The amount of innovation that's going to come from being able to standardize on Kubernetes as a platform is incredibly exciting - more exciting than anything I've seen in the last 10 years of working on the cloud. + +--- + +
+

CASE STUDY:
+
An Early Adopter Envisions + a New Cloud Platform
+

+
+ + +
+ Company  Box     Location  Redwood City, California     Industry  Technology +
+ +
+ +
+ +
+
+ +

Challenge

+ Founded in 2005, the enterprise content management company allows its more than 50 million users to manage content in the cloud. Box was built primarily with bare metal inside the company’s own data centers, with a monolithic PHP code base. As the company was expanding globally, it needed to focus on "how we run our workload across many different cloud infrastructures from bare metal to public cloud," says Sam Ghods, Cofounder and Services Architect of Box. "It’s been a huge challenge because of different clouds, especially bare metal, have very different interfaces." +
+
+ +
+

Solution

+ Over the past couple of years, Box has been decomposing its infrastructure into microservices, and became an early adopter of, as well as contributor to, Kubernetes container orchestration. Kubernetes, Ghods says, has allowed Box’s developers to "target a universal set of concepts that are portable across all clouds."

+ +

Impact

+ "Before Kubernetes," Ghods says, "our infrastructure was so antiquated it was taking us more than six months to deploy a new microservice. Today, a new microservice takes less than five days to deploy. And we’re working on getting it to an hour." +
+
+ +
+ +
+
+ "We looked at a lot of different options, but Kubernetes really stood out....the fact that on day one it was designed to run on bare metal just as well as Google Cloud meant that we could actually migrate to it inside of our data centers, and then use those same tools and concepts to run across public cloud providers as well."

- SAM GHOUDS, CO-FOUNDER AND SERVICES ARCHITECT OF BOX +
+
+ +
+ +
+

In the summer of 2014, Box was feeling the pain of a decade’s worth of hardware and software infrastructure that wasn’t keeping up with the company’s needs.

+ + A platform that allows its more than 50 million users (including governments and big businesses like General Electric) to manage and share content in the cloud, Box was originally a PHP monolith of millions of lines of code built exclusively with bare metal inside of its own data centers. It had already begun to slowly chip away at the monolith, decomposing it into microservices. And "as we’ve been expanding into regions around the globe, and as the public cloud wars have been heating up, we’ve been focusing a lot more on figuring out how we run our workload across many different environments and many different cloud infrastructure providers," says Box Cofounder and Services Architect Sam Ghods. "It’s been a huge challenge thus far because of all these different providers, especially bare metal, have very different interfaces and ways in which you work with them."

+ Box’s cloud native journey accelerated that June, when Ghods attended DockerCon. The company had come to the realization that it could no longer run its applications only off bare metal, and was researching containerizing with Docker, virtualizing with OpenStack, and supporting public cloud.

+ At that conference, Google announced the release of its Kubernetes container management system, and Ghods was won over. "We looked at a lot of different options, but Kubernetes really stood out, especially because of the incredibly strong team of Borg veterans and the vision of having a completely infrastructure-agnostic way of being able to run cloud software," he says, referencing Google’s internal container orchestrator Borg. "The fact that on day one it was designed to run on bare metal just as well as Google Cloud meant that we could actually migrate to it inside of our data centers, and then use those same tools and concepts to run across public cloud providers as well."

+ Another plus: Ghods liked that Kubernetes has a universal set of API objects like pod, service, replica set and deployment object, which created a consistent surface to build tooling against. "Even PaaS layers like OpenShift or Deis that build on top of Kubernetes still treat those objects as first-class principles," he says. "We were excited about having these abstractions shared across the entire ecosystem, which would result in a lot more momentum than we saw in other potential solutions."

+ Box deployed Kubernetes in a cluster in a production data center just six months later. Kubernetes was then still pre-beta, on version 0.11. They started small: The very first thing Ghods’s team ran on Kubernetes was a Box API checker that confirms Box is up. "That was just to write and deploy some software to get the whole pipeline functioning," he says. Next came some daemons that process jobs, which was "nice and safe because if they experienced any interruptions, we wouldn’t fail synchronous incoming requests from customers." + +
+
+ +
+
+ "As we’ve been expanding into regions around the globe, and as the public cloud wars have been heating up, we’ve been focusing a lot more on figuring out how we [can have Kubernetes help] run our workload across many different environments and many different cloud infrastructure providers." +
+
+ +
+
+ The first live service, which the team could route to and ask for information, was launched a few months later. At that point, Ghods says, "We were comfortable with the stability of the Kubernetes cluster. We started to port some services over, then we would increase the cluster size and port a few more, and that’s ended up to about 100 servers in each data center that are dedicated purely to Kubernetes. And that’s going to be expanding a lot over the next 12 months, probably too many hundreds if not thousands."

+ While observing teams who began to use Kubernetes for their microservices, "we immediately saw an uptick in the number of microservices being released," Ghods notes. "There was clearly a pent-up demand for a better way of building software through microservices, and the increase in agility helped our developers be more productive and make better architectural choices." +

"There was clearly a pent-up demand for a better way of building software through microservices, and the increase in agility helped our developers be more productive and make better architectural choices."

+ Ghods reflects that as early adopters, Box had a different journey from what companies experience now. "We were definitely lock step with waiting for certain things to stabilize or features to get released," he says. "In the early days we were doing a lot of contributions [to components such as kubectl apply] and waiting for Kubernetes to release each of them, and then we’d upgrade, contribute more, and go back and forth several times. The entire project took about 18 months from our first real deployment on Kubernetes to having general availability. If we did that exact same thing today, it would probably be no more than six."

+ In any case, Box didn’t have to make too many modifications to Kubernetes for it to work for the company. "The vast majority of the work our team has done to implement Kubernetes at Box has been making it work inside of our existing (and often legacy) infrastructure," says Ghods, "such as upgrading our base operating system from RHEL6 to RHEL7 or integrating it into Nagios, our monitoring infrastructure. But overall Kubernetes has been remarkably flexible with fitting into many of our constraints, and we’ve been running it very successfully on our bare metal infrastructure."

+ Perhaps the bigger challenge for Box was a cultural one. "Kubernetes, and cloud native in general, represents a pretty big paradigm shift, and it’s not very incremental," Ghods says. "We’re essentially making this pitch that Kubernetes is going to solve everything because it does things the right way and everything is just suddenly better. But it’s important to keep in mind that it’s not nearly as proven as many other solutions out there. You can’t say how long this or that company took to do it because there just aren’t that many yet. Our team had to really fight for resources because our project was a bit of a moonshot." +
+
+ +
+
+ "The vast majority of the work our team has done to implement Kubernetes at Box has been making it work inside of our existing [and often legacy] infrastructure....overall Kubernetes has been remarkably flexible with fitting into many of our constraints, and we’ve been running it very successfully on our bare metal infrastructure." +
+
+ +
+
+ Having learned from experience, Ghods offers these two pieces of advice for companies going through similar challenges: +

1. Deliver early and often.

Service discovery was a huge problem for Box, and the team had to decide whether to build an interim solution or wait for Kubernetes to natively satisfy Box’s unique requirements. After much debate, "we just started focusing on delivering something that works, and then dealing with potentially migrating to a more native solution later," Ghods says. "The above-all-else target for the team should always be to serve real production use cases on the infrastructure, no matter how trivial. This helps keep the momentum going both for the team itself and for the organizational perception of the project."

+

2. Keep an open mind about what your company has to abstract away from developers and what it doesn’t.

Early on, the team built an abstraction on top of Docker files to help ensure that images had the right security updates. + This turned out to be superfluous work, since container images are considered immutable and you can easily scan them post-build to ensure they do not contain vulnerabilities. Because managing infrastructure through containerization is such a discontinuous leap, it’s better to start by interacting directly with the native tools and learning their unique advantages and caveats. An abstraction should be built only after a practical need for it arises.

+ In the end, the impact has been powerful. "Before Kubernetes," Ghods says, "our infrastructure was so antiquated it was taking us more than six months to deploy a new microservice. Now a new microservice takes less than five days to deploy. And we’re working on getting it to an hour. Granted, much of that six months was due to how broken our systems were, but bare metal is intrinsically a difficult platform to support unless you have a system like Kubernetes to help manage it."

+ By Ghods’s estimate, Box is still several years away from his goal of being a 90-plus percent Kubernetes shop. "We’re very far along on having a mission-critical, stable Kubernetes deployment that provides a lot of value," he says. "Right now about five percent of all of our compute runs on Kubernetes, and I think in the next six months we’ll likely be between 20 to 50 percent. We’re working hard on enabling all stateless service use cases, and shift our focus to stateful services after that." +
+
+ +
+
+ "Ghods predicts that Kubernetes has the opportunity to be the new cloud platform. '...because it’s a never-before-seen level of automation and intelligence surrounding infrastructure that is portable and agnostic to every way you can run your infrastructure.'" +
+
+ +
+
+ In fact, that’s what he envisions across the industry: Ghods predicts that Kubernetes has the opportunity to be the new cloud platform. Kubernetes provides an API consistent across different cloud platforms including bare metal, and "I don’t think people have seen the full potential of what’s possible when you can program against one single interface," he says. "The same way AWS changed infrastructure so that you don’t have to think about servers or cabinets or networking equipment anymore, Kubernetes enables you to focus exclusively on the containers that you’re running, which is pretty exciting. That’s the vision."

+ Ghods points to projects that are already in development or recently released for Kubernetes as a cloud platform: cluster federation, the Dashboard UI, and CoreOS’s etcd operator. "I honestly believe it’s the most exciting thing I’ve seen in cloud infrastructure," he says, "because it’s a never-before-seen level of automation and intelligence surrounding infrastructure that is portable and agnostic to every way you can run your infrastructure."

+ Box, with its early decision to use bare metal, embarked on its Kubernetes journey out of necessity. But Ghods says that even if companies don’t have to be agnostic about cloud providers today, Kubernetes may soon become the industry standard, as more and more tooling and extensions are built around the API.

+ "The same way it doesn’t make sense to deviate from Linux because it’s such a standard," Ghods says, "I think Kubernetes is going down the same path. It is still early days—the documentation still needs work and the user experience for writing and publishing specs to the Kubernetes clusters is still rough. When you’re on the cutting edge you can expect to bleed a little. But the bottom line is, this is where the industry is going. Three to five years from now it’s really going to be shocking if you run your infrastructure any other way." +
+
diff --git a/content/it/community/_index.html b/content/it/community/_index.html index 1da64c4b0e..9958cabbd8 100644 --- a/content/it/community/_index.html +++ b/content/it/community/_index.html @@ -1,5 +1,5 @@ --- -title: Comunità +title: Community layout: basic cid: community --- @@ -12,8 +12,8 @@ cid: community

-

La comunità di Kubernetes - cioè gli utenti, i contributors e la cultura che abbiamo costruito tutti assieme - è una dei maggiori motivi della crescita esponenziale di questo progetto open-source. La nostra cultura e i nostri valori continuano a rafforzarsi con il progetto stesso. Lavoriamo tutti assieme per il miglioramento costante del progetto e degli strumenti di lavoro correlati. -

Noi siamo le persone che aprono gli issue, le pull request, che partecipano alle riunioni delle SIG, ai meetup di Kubernetes, alle KubeCon, che promuoviamo l'innovazione e l'adozione di Kubernetes, che eseguiamo kubectl get pods, e che contribuiamo in moltissimi altri modi egualmente vitali al progetto. Vai avanti a leggere per scoprire come essere coinvolto in queste attività e diventare parte di questa meravigliosa comunità.

+

La comunità di Kubernetes - utenti, contributors e la cultura che abbiamo costruito assieme - è una dei maggiori motivi della crescita esponenziale di questo progetto open-source. La nostra cultura e i nostri valori continuano a rafforzarsi con il progetto stesso. Lavoriamo tutti assieme per il miglioramento costante del progetto e degli strumenti di lavoro correlati. +

Noi siamo le persone che aprono gli issue, le pull request, che partecipano alle riunioni delle SIG, ai meetup di Kubernetes, alle KubeCon, che promuoviamo l'innovazione e l'adozione di Kubernetes, che eseguiamo kubectl get pods, e che contribuiamo in moltissimi altri modi egualmente vitali al progetto. Continua a leggere per scoprire come essere coinvolto in queste attività e diventare parte di questa meravigliosa comunità.


@@ -52,7 +52,7 @@ cid: community



Codice di Condotta

-La comunità di Kubernetes valorizza il rispetto e l'inclusività, e mette il Codice di Condotta alla base di ogni iterazione. Se noti una violazione del Codice di Condotta durante une evento o un meeting, in Slack, o in qualsiasi altra comunicazione, contatta la Kubernetes Code of Conduct Committee mandando una mail a conduct@kubernetes.io. Tutte le segnalazioni sono tenute confidenziali. Puoi leggere di più sulla Kubernetes Code of Conduct Committee qui. +La comunità di Kubernetes valorizza il rispetto e l'inclusività, e mette il Codice di Condotta alla base di ogni iterazione. Se noti una violazione del Codice di Condotta durante un evento o un meeting, in Slack, o in qualsiasi altra comunicazione, contatta la Kubernetes Code of Conduct Committee mandando una mail a conduct@kubernetes.io. Tutte le segnalazioni sono tenute confidenziali. Puoi leggere di più sulla Kubernetes Code of Conduct Committee qui.


@@ -146,7 +146,7 @@ Annunci di nuovi blog post, eventi, notizie e idee in tempo reale github ▶
-Tracciamento di tutti i progetti e issue, e ovviante il codice stesso +Tutti i progetti, le issue e ovviamente il codice stesso
@@ -156,7 +156,7 @@ Tracciamento di tutti i progetti e issue, e ovviante il codice stesso stack overflow ▶
- Supporto tecnico per ogni caso di utilizzo + Supporto tecnico
diff --git a/content/it/docs/concepts/overview/components.md b/content/it/docs/concepts/overview/components.md index 5a057fa841..8156b9ab05 100644 --- a/content/it/docs/concepts/overview/components.md +++ b/content/it/docs/concepts/overview/components.md @@ -16,7 +16,7 @@ un cluster Kubernetes completo e funzionante. Questo è un diagramma di un cluster Kubernetes con tutti i componenti e le loro relazioni. -![Components of Kubernetes](/images/docs/components-of-kubernetes.png) +![I componenti di Kubernetes](/images/docs/components-of-kubernetes.png) {{% /capture %}} diff --git a/content/it/partners/_index.html b/content/it/partners/_index.html index 5a6e187777..270dabe569 100644 --- a/content/it/partners/_index.html +++ b/content/it/partners/_index.html @@ -15,7 +15,7 @@ cid: partners
Fornitori Certificati di Servizi su Kubernetes
-
Fornitori di servizi con grande esperienza nell'aiutare le imprese ad adottare con successo Kubernetes. +
Fornitori di servizi riconosciuti e con grande esperienza nell'aiutare le imprese ad adottare con successo Kubernetes.




Interessato a diventare un partner KCSP? @@ -25,7 +25,7 @@ cid: partners
Distribuzioni di Kubernetes Certificate, Certified Hosted Platforms and Software di installazione Certificati -
La conformità del software assicura che la versione di Kubernetes di ogni fornitore supporti le API necessarie. + La conformità del software assicura che le versioni di Kubernetes prodotte da ogni fornitore supportino coerentemente le API necessarie.




Interessato a diventare un partner certificato Kubernetes? @@ -34,7 +34,7 @@ cid: partners
Partner per la Formazione su Kubernetes
-
Professionisti esperti e certificati, con solida esperienza nella formazione su tecnologie Cloud Native. +
Professionisti riconosciuti e certificati, con solida esperienza nella formazione su tecnologie Cloud Native.





Interessato a diventare un partner KTP? diff --git a/content/it/training/_index.html b/content/it/training/_index.html index 6639752f19..9a2cd6f969 100644 --- a/content/it/training/_index.html +++ b/content/it/training/_index.html @@ -18,7 +18,7 @@ class: training

Costruisci la tua carriera nel mondo Cloud Native

-

Kubernetes è il fondamento del mondo Cloud Native. La formazione e le certificazioni della The Linux Foundation e dei nostri partner ti permettono di investire nella tua carriera, imparare Kubernetes, e aver successo nei tuoi progetti Cloud Native.

+

Kubernetes è un elemento importante del mondo Cloud Native. La formazione e le certificazioni della The Linux Foundation e dei nostri partner ti permettono di investire nella tua carriera, imparare Kubernetes, e aver successo nei tuoi progetti Cloud Native.

@@ -35,7 +35,7 @@ class: training
Introduzione a Kubernetes
 
-

Vuoi imparare Kubernetes? Ottieni delle solide fondamenta su questo potente sistema di gestione di applicazioni containerizzate.

+

Vuoi imparare Kubernetes? Ottieni delle solide fondamenta su questo potente sistema di gestione di applicazioni deployate in container.


Vai al corso
@@ -43,7 +43,7 @@ class: training
- Introduzione alle tecnologie infrastrutturali della Cloud + Introduzione alla gestione delle infrastutture IT in Cloud

Impara le basi per creare e gestire tecnologie cloud direttamente dalla The Linux Foundation, il leader nel mondo open source.


@@ -67,7 +67,7 @@ class: training

Impara con la The Linux Foundation

-

La The Linux Foundation offre corsi con un formatore e corsi da fare in autonomia relativi allo sviluppo di applicativi per Kubernetes e per la sua gestione.

+

La The Linux Foundation offre corsi con un docente e corsi da fare in autonomia per apprendere lo sviluppo di applicativi per Kubernetes e per l'amministrazione della piattaforma stessa.



Vedi i corsi
@@ -85,7 +85,7 @@ class: training
Certified Kubernetes Application Developer (CKAD)
-

L'esame "Certified Kubernetes Application Developer" certifica che la persona è in grado di progettare, costruire, configurare, ed esporre un applicativo Cloud Native su Kubernetes.

+

L'esame "Certified Kubernetes Application Developer" certifica che la persona è in grado di progettare, costruire, configurare, e rilasciare in produzione un applicativo Cloud Native su Kubernetes.


Vai alla certificazione
From aff675634fabf9e01d5fc700d24e26522a8373a5 Mon Sep 17 00:00:00 2001 From: Bahman Nikkhahan Date: Mon, 4 May 2020 22:57:48 +1000 Subject: [PATCH 107/244] Remove extra text Remove additional "Networking" text --- .../windows/intro-windows-in-kubernetes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md b/content/en/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md index e8e23b8574..78e61d4588 100644 --- a/content/en/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md +++ b/content/en/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md @@ -263,7 +263,7 @@ As a result, the following storage functionality is not supported on Windows nod Windows Container Networking differs in some important ways from Linux networking. The [Microsoft documentation for Windows Container Networking](https://docs.microsoft.com/en-us/virtualization/windowscontainers/container-networking/architecture) contains additional details and background. -The Windows host networking networking service and virtual switch implement namespacing and can create virtual NICs as needed for a pod or container. However, many configurations such as DNS, routes, and metrics are stored in the Windows registry database rather than /etc/... files as they are on Linux. The Windows registry for the container is separate from that of the host, so concepts like mapping /etc/resolv.conf from the host into a container don't have the same effect they would on Linux. These must be configured using Windows APIs run in the context of that container. Therefore CNI implementations need to call the HNS instead of relying on file mappings to pass network details into the pod or container. +The Windows host networking service and virtual switch implement namespacing and can create virtual NICs as needed for a pod or container. However, many configurations such as DNS, routes, and metrics are stored in the Windows registry database rather than /etc/... files as they are on Linux. The Windows registry for the container is separate from that of the host, so concepts like mapping /etc/resolv.conf from the host into a container don't have the same effect they would on Linux. These must be configured using Windows APIs run in the context of that container. Therefore CNI implementations need to call the HNS instead of relying on file mappings to pass network details into the pod or container. The following networking functionality is not supported on Windows nodes From f874df7cc0de492729589a8761a521eb212257d7 Mon Sep 17 00:00:00 2001 From: Alexander Zimmermann Date: Tue, 7 Apr 2020 12:52:06 +0200 Subject: [PATCH 108/244] Updated and added german translation for starter page * Replaced formal- with personal salutation * Fixed Amsterdam event month * Changed button text to match max width --- content/de/_index.html | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/content/de/_index.html b/content/de/_index.html index adb2dce298..48df4cfd1f 100644 --- a/content/de/_index.html +++ b/content/de/_index.html @@ -14,23 +14,23 @@ Es gruppiert Container, aus denen sich eine Anwendung zusammensetzt, in logische {{% /blocks/feature %}} {{% blocks/feature image="scalable" %}} -#### Planet Scale +#### Ausgereift Kubernetes basiert auf denselben Prinzipien, die es Google ermöglichen, Milliarden von Containern pro Woche zu betreiben. {{% /blocks/feature %}} {{% blocks/feature image="blocks" %}} -#### Never Outgrow +#### Mitwachsend -Unabhängig davon, ob Sie lokal testen oder ein globales Unternehmen betreiben, die Flexibilität von Kubernetes wächst mit Ihnen, um Ihre Anwendungen konsistent und einfach bereitzustellen, unabhängig von der Komplexität Ihrer Anforderungen. +Unabhängig davon, ob Du lokal testest oder ein globales Unternehmen betreibst: Die Flexibilität von Kubernetes wächst mit Dir, um Deine Anwendungen konsistent und einfach bereitzustellen - Unabhängig von der Komplexität Deiner Anforderungen. {{% /blocks/feature %}} {{% blocks/feature image="suitcase" %}} -#### Run Anywhere +#### Überall Lauffähig -Kubernetes ist Open Source und bietet Ihnen die Freiheit, die Infrastruktur vor Ort, Hybrid oder Public Cloud zu nutzen. So können Sie Workloads mühelos dorthin verschieben, wo es Ihnen wichtig ist. +Kubernetes ist Open Source und bietet Dir die Freiheit, die Infrastruktur vor Ort, Hybrid oder Public Cloud zu nutzen. So kannst Du Workloads mühelos dorthin verschieben, wo es Dir wichtig ist. {{% /blocks/feature %}} @@ -39,17 +39,17 @@ Kubernetes ist Open Source und bietet Ihnen die Freiheit, die Infrastruktur vor {{< blocks/section id="video" background-image="kub_video_banner_homepage" >}}

Die Herausforderungen bei der Migration von über 150 Microservices auf Kubernetes

-

Von Sarah Wells, technischer Direktor für Betrieb und Zuverlässigkeit, Financial Times

+

Von Sarah Wells, technische Direktorin für Betrieb und Zuverlässigkeit, Financial Times




- Besuchen Sie die KubeCon vom 30 März-2 Apr. 2020 in Amsterdam + Besuche die KubeCon - 13-16 August 2020 in Amsterdam



- Besuchen Sie die KubeCon vom 28-30 Juli 2020 in Shanghai + Besuche die KubeCon - 17-20 November 2020 in Boston
From 8dbb2b19cfa21381f3bbdaa449c148c22997c382 Mon Sep 17 00:00:00 2001 From: Prasad Katti Date: Sun, 3 May 2020 23:46:26 -0700 Subject: [PATCH 109/244] [kubeadm] warn if kernel/docker/etcd version(s) are older than the minimum required version(s) --- .../reference/setup-tools/kubeadm/implementation-details.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/en/docs/reference/setup-tools/kubeadm/implementation-details.md b/content/en/docs/reference/setup-tools/kubeadm/implementation-details.md index e368a56847..380838b179 100644 --- a/content/en/docs/reference/setup-tools/kubeadm/implementation-details.md +++ b/content/en/docs/reference/setup-tools/kubeadm/implementation-details.md @@ -81,12 +81,12 @@ The user can skip specific preflight checks or all of them with the `--ignore-pr - [warning] If the Kubernetes version to use (specified with the `--kubernetes-version` flag) is at least one minor version higher than the kubeadm CLI version. - Kubernetes system requirements: - if running on linux: - - [error] if not Kernel 3.10+ or 4+ with specific KernelSpec + - [error] if Kernel is older than the minimum required version - [error] if required cgroups subsystem aren't in set up - if using docker: - [warning/error] if Docker service does not exist, if it is disabled, if it is not active. - [error] if Docker endpoint does not exist or does not work - - [warning] if docker version >17.03 + - [warning] if docker version is not in the list of validated docker versions - If using other cri engine: - [error] if crictl socket does not answer - [error] if user is not root @@ -108,7 +108,7 @@ The user can skip specific preflight checks or all of them with the `--ignore-pr - [warning] if connection to services subnet goes through proxy (only first address checked) - [warning] if connection to Pods subnet goes through proxy (only first address checked) - If external etcd is provided: - - [Error] if etcd version less than 3.0.14 + - [Error] if etcd version is older than the minimum required version - [Error] if etcd certificates or keys are specified, but not provided - If external etcd is NOT provided (and thus local etcd will be installed): - [Error] if ports 2379 is used From 63550c9e88f766133965bb51f6300c9f6fe7791f Mon Sep 17 00:00:00 2001 From: Tim Bannister Date: Mon, 4 May 2020 17:22:19 +0100 Subject: [PATCH 110/244] Don't mention EndpointSlice resource on front page EndpointSlice is a nice idea, but it's not front-page-of-site nice. Remove it. --- .../en/docs/concepts/services-networking/endpoint-slices.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/content/en/docs/concepts/services-networking/endpoint-slices.md b/content/en/docs/concepts/services-networking/endpoint-slices.md index 7c39f05086..940374ae52 100644 --- a/content/en/docs/concepts/services-networking/endpoint-slices.md +++ b/content/en/docs/concepts/services-networking/endpoint-slices.md @@ -2,11 +2,6 @@ reviewers: - freehan title: EndpointSlices -feature: - title: EndpointSlices - description: > - Scalable tracking of network endpoints in a Kubernetes cluster. - content_template: templates/concept weight: 15 --- From 65d7bd91d279189ea4e21ac123cfb8ac6d0bfc61 Mon Sep 17 00:00:00 2001 From: Arhell Date: Mon, 4 May 2020 21:18:47 +0300 Subject: [PATCH 111/244] synchronization readme --- README-ru.md | 83 ++++++++++++++++++++-------------------------------- 1 file changed, 31 insertions(+), 52 deletions(-) diff --git a/README-ru.md b/README-ru.md index 357578acf8..bb290654a8 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,58 +1,9 @@ # Документация по Kubernetes -[![Build Status](https://api.travis-ci.org/kubernetes/website.svg?branch=master)](https://travis-ci.org/kubernetes/website) -[![GitHub release](https://img.shields.io/github/release/kubernetes/website.svg)](https://github.com/kubernetes/website/releases/latest) +[![Netlify Status](https://api.netlify.com/api/v1/badges/be93b718-a6df-402a-b4a4-855ba186c97d/deploy-status)](https://app.netlify.com/sites/kubernetes-io-master-staging/deploys) [![GitHub release](https://img.shields.io/github/release/kubernetes/website.svg)](https://github.com/kubernetes/website/releases/latest) Добро пожаловать! Данный репозиторий содержит все необходимые файлы для сборки [сайта Kubernetes и документации](https://kubernetes.io/). Мы благодарим вас за старания! -## Вклад в документацию - -Нажмите на кнопку **Fork** в правом верхнем углу, чтобы создать копию этого репозитория в ваш GitHub-аккаунт. Эта копия называется *форк-репозиторием*. Делайте любые изменения в вашем форк-репозитории, и когда вы будете готовы опубликовать изменения, откройте форк-репозиторий и создайте новый пулреквест, чтобы уведомить нас. - -После того, как вы отправите пулреквест, ревьювер Kubernetes даст по нему обратную связь. Вы, как автор пулреквеста, **должны обновить свой пулреквест после его рассмотрения ревьювером Kubernetes.** Вполне возможно, что более одного ревьювера Kubernetes оставят свои комментарии или даже может быть так, что новый комментарий ревьювера Kubernetes будет отличаться от первоначального назначенного ревьювера. Кроме того, в некоторых случаях один из ревьюверов может запросить технический обзор у [технического ревьювера Kubernetes](https://github.com/kubernetes/website/wiki/Tech-reviewers), если это будет необходимо. Ревьюверы сделают все возможное, чтобы как можно оперативно оставить свои предложения и пожелания, но время ответа может варьироваться в зависимости от обстоятельств. - -Узнать подробнее о том, как поучаствовать в документации Kubernetes, вы можете по ссылкам ниже: - -* [Начните вносить свой вклад](https://kubernetes.io/docs/contribute/start/) -* [Просмотр локальных изменений](http://kubernetes.io/docs/contribute/intermediate#view-your-changes-locally) -* [Использование шаблонов страниц](http://kubernetes.io/docs/contribute/style/page-templates/) -* [Руководство по оформлению документации](http://kubernetes.io/docs/contribute/style/style-guide/) -* [Руководство по локализации Kubernetes](https://kubernetes.io/docs/contribute/localization/) - -## Файл `README.md` на других языках -| | | -|-------------------------------|-------------------------------| -| [Английский](README.md) | [Французский](README-fr.md) | -| [Корейский](README-ko.md) | [Немецкий](README-de.md) | -| [Португальский](README-pt.md) | [Хинди](README-hi.md) | -| [Испанский](README-es.md) | [Индонезийский](README-id.md) | -| [Китайский](README-zh.md) | [Японский](README-ja.md) | -| [Вьетнамский](README-vi.md) | [Итальянский](README-it.md) | -| [Польский]( README-pl.md) | [Украинский](README-uk.md) | -| | | - -## Запуск сайта локально с помощью Docker - -Рекомендованный способ запуска сайта Kubernetes на локальной машине - использовать специальный образ [Docker](https://docker.com), который включает статический генератор сайтов [Hugo](https://gohugo.io). - -> Если вы используете Windows, вам необходимо установить дополнительные инструменты через [Chocolatey](https://chocolatey.org). `choco install make` - -> Если вы хотите запустить сайт локально без Docker, обратитесь к разделу [Запуск сайта с помощью Hugo](#запуск-сайта-с-помощью-hugo) ниже на этой странице. - -Когда Docker [установлен и запущен](https://www.docker.com/get-started), соберите локально Docker-образ `kubernetes-hugo`, выполнив команду в консоли: - -```bash -make docker-image -``` - -После того, как вы собрали образ, можно запустить сайт локально: - -```bash -make docker-serve -``` - -Откройте браузер и перейдите по ссылке http://localhost:1313, чтобы открыть сайт. Если вы редактируете исходные файлы сайта, Hugo автоматически применит изменения и обновит страницу в браузере. - ## Запуск сайта с помощью Hugo Обратитесь к [официальной документации Hugo](https://gohugo.io/getting-started/installing/), чтобы установить Hugo. Убедитесь, что вы установили правильную версию Hugo, которая устанавливается в переменной окружения `HUGO_VERSION` в файле [`netlify.toml`](netlify.toml#L10). @@ -60,7 +11,9 @@ make docker-serve После установки Hugo, чтобы запустить сайт, выполните в консоли: ```bash -make serve +git clone https://github.com/kubernetes/website.git +cd website +hugo server --buildFuture ``` Эта команда запустит сервер Hugo на порту 1313. Откройте браузер и перейдите по ссылке http://localhost:1313, чтобы открыть сайт. Если вы отредактируете исходные файлы сайта, Hugo автоматически применит изменения и обновит страницу в браузере. @@ -74,9 +27,35 @@ make serve - [Канал в Slack](https://kubernetes.slack.com/messages/sig-docs) - [Рассылка](https://groups.google.com/forum/#!forum/kubernetes-sig-docs) +## Вклад в документацию + +Нажмите на кнопку **Fork** в правом верхнем углу, чтобы создать копию этого репозитория в ваш GitHub-аккаунт. Эта копия называется *форк-репозиторием*. Делайте любые изменения в вашем форк-репозитории, и когда вы будете готовы опубликовать изменения, откройте форк-репозиторий и создайте новый пулреквест, чтобы уведомить нас. + +После того, как вы отправите пулреквест, ревьювер Kubernetes даст по нему обратную связь. Вы, как автор пулреквеста, **должны обновить свой пулреквест после его рассмотрения ревьювером Kubernetes.** + +Вполне возможно, что более одного ревьювера Kubernetes оставят свои комментарии или даже может быть так, что новый комментарий ревьювера Kubernetes будет отличаться от первоначального назначенного ревьювера. Кроме того, в некоторых случаях один из ревьюверов может запросить технический обзор у [технического ревьювера Kubernetes](https://github.com/kubernetes/website/wiki/Tech-reviewers), если это будет необходимо. Ревьюверы сделают все возможное, чтобы как можно оперативно оставить свои предложения и пожелания, но время ответа может варьироваться в зависимости от обстоятельств. + +Узнать подробнее о том, как поучаствовать в документации Kubernetes, вы можете по ссылкам ниже: + +* [Начните вносить свой вклад](https://kubernetes.io/docs/contribute/) +* [Использование шаблонов страниц](http://kubernetes.io/docs/contribute/style/page-templates/) +* [Руководство по оформлению документации](http://kubernetes.io/docs/contribute/style/style-guide/) +* [Руководство по локализации Kubernetes](https://kubernetes.io/docs/contribute/localization/) + +## Файл `README.md` на других языках +| другие языки | другие языки | +|-------------------------------|-------------------------------| +| [Английский](README.md) | [Французский](README-fr.md) | +| [Корейский](README-ko.md) | [Немецкий](README-de.md) | +| [Португальский](README-pt.md) | [Хинди](README-hi.md) | +| [Испанский](README-es.md) | [Индонезийский](README-id.md) | +| [Китайский](README-zh.md) | [Японский](README-ja.md) | +| [Вьетнамский](README-vi.md) | [Итальянский](README-it.md) | +| [Польский]( README-pl.md) | [Украинский](README-uk.md) | + ### Кодекс поведения -Участие в сообществе Kubernetes регулируется [кодексом поведения Kubernetes](code-of-conduct.md). +Участие в сообществе Kubernetes регулируется [кодексом поведения CNCF](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). ## Спасибо! From ab9940398646f0f5a5d6025085dfc0d1d385e0bd Mon Sep 17 00:00:00 2001 From: jkld11 Date: Mon, 4 May 2020 15:02:33 -0400 Subject: [PATCH 112/244] Create index.html --- content/en/case-studies/babylon/index.html | 105 +++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 content/en/case-studies/babylon/index.html diff --git a/content/en/case-studies/babylon/index.html b/content/en/case-studies/babylon/index.html new file mode 100644 index 0000000000..d518af6c7c --- /dev/null +++ b/content/en/case-studies/babylon/index.html @@ -0,0 +1,105 @@ +--- +title: Babylon Case Study +linkTitle: babylon +case_study_styles: true +cid: caseStudies +css: /css/case-studies-gradient.css +featured: true +--- + + +
+

CASE STUDY: Babylon

+
How Cloud Native Is Enabling Babylon’s Medical AI Innovations
+
+ +
+ Company  Babylon     Location  United States     Industry  AI, Healthcare +
+ +
+
+
+
+

Challenge

+ A large number of Babylon’s products leverage machine learning and artificial intelligence, and in 2019, there wasn’t enough computing power in-house to run a particular experiment. The company was also growing (from 100 to 1,600 in three years) and planning expansion into other countries. + + +

Solution

+ Babylon had migrated its user-facing applications to a Kubernetes platform in 2018, so the infrastructure team turned to Kubeflow, a toolkit for machine learning on Kubernetes. “We tried to create a Kubernetes core server, we deployed Kubeflow, and we orchestrated the whole experiment, which ended up being a really good success,” says AI Infrastructure Lead Jérémie Vallée. The team began building a self-service AI training platform on top of Kubernetes. + +

Impact

+ Instead of waiting hours or days to be able to compute, teams can get access instantaneously. Clinical validations used to take 10 hours; now they are done in under 20 minutes. The portability of the cloud native platform has also enabled Babylon to expand into other countries.
+
+
+
+
+ “Kubernetes is a great platform for machine learning because it comes with all the scheduling and scalability that you need.” +

- JÉRÉMIE VALLÉE, AI INFRASTRUCTURE LEAD AT BABYLON

+
+
+ + +
+
+

Babylon’s mission is to put accessible and affordable healthcare services in the hands of every person on earth.

+ +

Since its launch in the U.K. in 2013, the startup has facilitated millions of digital consultations around the world. In the U.K., patients were typically waiting a week or two for a doctor’s appointment. Through Babylon’s NHS service, GP at Hand—which has more than 75,000 registered patients—39% get an appointment through their phone within 30 minutes, and 89% within 6 hours.

+ +

That’s just the start. “We try to combine different types of technology with the medical expertise that we have in-house to build products that will help patients manage and understand their health, and also help doctors be more efficient at what they do,” says Jérémie Vallée, AI Infrastructure Lead at Babylon.

+ +

A large number of these products leverage machine learning and artificial intelligence, and in 2019, researchers hit a pain point. “We have some servers in-house where our researchers were doing a lot of AI experiments and some training of models, and we came to a point where we didn’t have enough compute in-house to run a particular experiment,” says Vallée.

+

+ Babylon had migrated its user-facing applications to a Kubernetes platform in 2018, “and we had a lot of Kubernetes knowledge thanks to the migration,” he adds. To optimize some of the models that had been created, the team turned to Kubeflow, a toolkit for machine learning on Kubernetes. “We tried to create a Kubernetes core server, we deployed Kubeflow, and we orchestrated the whole experiment, which ended up being a really good success,” he says.

+

+ Based on that experience, Vallée’s team was tasked with building a self-service platform to help Babylon’s AI teams become more efficient, and by extension help get products to market faster. The main requirements: (1) the ability to give researchers and engineers access to the compute they needed, regardless of the size of the experiments they may need to run; (2) a way to provide teams with the best tools that they needed to do their work, on demand and in a centralized way; and (3) the training platform had to be close to the data that was being managed, because of the company’s expansion into different countries.

+ + +
+
+ +
+
+ “Delivering a self-service platform where users are empowered to run their own workload has enabled our data scientist community to do hyper parameter tuning and general algorithm development without any cloud skill and without the help of platform engineers, thus accelerating our innovation.”

- CAROLINE HARGROVE, CHIEF TECHNOLOGY OFFICER AT BABYLON

+
+
+ +
+
+

+ Kubernetes was an enabler on every count. “Kubernetes is a great platform for machine learning because it comes with all the scheduling and scalability that you need,” says Vallée. The need to keep data in every country in which Babylon operates requires a multi-region, multi-cloud strategy, and some countries might not even have a public cloud provider at all. “We wanted to make this platform portable so that we can run training jobs anywhere,” he says. “Kubernetes offered a base layer that allows you to deploy the platform outside of the cloud provider, and then deploy whatever tooling you need. That was a very good selling point for us.”

+

+ Once the team decided to build the Babylon AI Research platform on top of Kubernetes, they referred to the Cloud Native Landscape to build out the stack: Prometheus and Grafana for monitoring; an Istio service mesh to control the network on the training platform and control what access all of the workflows would have; Helm to deploy the stack; and Flux to manage the GitOps part of the pipeline.

+

+ The cloud native AI platform has had a huge impact at Babylon. The first research projects run on the platform mostly involved machine learning and natural language processing. These experiments required a huge amount of compute—1600 CPU, 3.2 TB RAM—which was much more than Babylon had in-house. Plus, access to compute used to take hours, or sometimes even days, depending on how busy the platform team was. “Now, with Kubernetes and the self-service platform that we provide, it’s pretty much instantaneous,” says Vallée.

+

+ Another important type of work that’s done on the platform is clinical validation for new applications such as Babylon’s Symptom Checker, which calculates the probability of a disease given the evidence input by the user. “Being in healthcare, we want all of our models to be safe before they’re going to hit production,” says Vallée. Using Argo for GitOps “enabled us to scale the process massively.”

+ +

+
+
+ + +
+
+ “Giving a Kubernetes-based platform to our data scientists has meant increased security, increased innovation through empowerment, and a more affordable health service as our cloud engineers are building an experience that is used by hundreds on a daily basis, rather than supporting specific bespoke use cases.”

- JEAN MARIE FERDEGUE, DIRECTOR OF PLATFORM OPERATIONS AT BABYLON

+
+
+ +
+
+

+ Researchers used to have to wait up to 10 hours to get results on new versions of their models. With Kubernetes, that time is now down to under 20 minutes. Plus, previously they could only run one clinical validation at a time, now they can run many parallel ones if they need to—a huge benefit considering that in the past three years, Babylon has grown from 100 to 1,600 employees.

+

+ “Delivering a self-service platform where users are empowered to run their own workload has enabled our data scientist community to do hyper parameter tuning and general algorithm development without any cloud skill and without the help of platform engineers, thus accelerating our innovation,” says Chief Technology Officer Caroline Hargrove.

+

+ Adds Director of Platform Operations Jean Marie Ferdegue: “Giving a Kubernetes-based platform to our data scientists has meant increased security, increased innovation through empowerment, and a more affordable health service as our cloud engineers are building an experience that is used by hundreds on a daily basis, rather than supporting specific bespoke use cases.”

+

+ Plus, as Babylon continues to expand, “it will be very easy to onboard new countries,” says Vallée. “Fifteen months ago when we deployed this platform, we had one big environment in the U.K., but now we have one in Canada, we have one in Asia, and we have one coming in the U.S. This is one of the things that Kubernetes and the other cloud native projects have enabled for us.” +

+

+ Babylon’s road map for cloud native involves onboarding all of the company’s AI efforts to the platform. Increasingly, that includes AI services of care. “I think this is going to be an interesting field where AI and healthcare meet,” Vallée says. “It’s kind of a complex problem and there’s a lot of issues around this. So with our platform, we want to say, ‘What can we do to make this less painful for our developers and machine learning engineers?’” +

+
+
+ From 1c7dcfc6de24b40f36856987761348af1f6b1bf7 Mon Sep 17 00:00:00 2001 From: Bridget Kromhout Date: Mon, 4 May 2020 14:03:31 -0500 Subject: [PATCH 113/244] Clarify IPv4 and IPv6 Signed-off-by: Bridget Kromhout --- .../docs/concepts/services-networking/dual-stack.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/content/en/docs/concepts/services-networking/dual-stack.md b/content/en/docs/concepts/services-networking/dual-stack.md index 3128f2eef4..c753c17cc1 100644 --- a/content/en/docs/concepts/services-networking/dual-stack.md +++ b/content/en/docs/concepts/services-networking/dual-stack.md @@ -49,8 +49,8 @@ To enable IPv4/IPv6 dual-stack, enable the `IPv6DualStack` [feature gate](/docs/ * `--feature-gates="IPv6DualStack=true"` * kube-controller-manager: * `--feature-gates="IPv6DualStack=true"` - * `--cluster-cidr=,` eg. `--cluster-cidr=10.244.0.0/16,fc00::/48` - * `--service-cluster-ip-range=,` eg. `--service-cluster-ip-range=10.0.0.0/16,fd00::/108` + * `--cluster-cidr=,` + * `--service-cluster-ip-range=,` * `--node-cidr-mask-size-ipv4|--node-cidr-mask-size-ipv6` defaults to /24 for IPv4 and /64 for IPv6 * kubelet: * `--feature-gates="IPv6DualStack=true"` @@ -58,6 +58,13 @@ To enable IPv4/IPv6 dual-stack, enable the `IPv6DualStack` [feature gate](/docs/ * `--cluster-cidr=,` * `--feature-gates="IPv6DualStack=true"` +{{< note >}} +An example of an IPv4 CIDR: `10.244.0.0/16` (though you would supply your own address range) + +An example of an IPv6 CIDR: `fdXY:IJKL:MNOP:15::/64` (this shows the format but is not a valid address - see [RFC 4193](https://tools.ietf.org/html/rfc4193)) + +{{< /note >}} + ## Services If your cluster has IPv4/IPv6 dual-stack networking enabled, you can create {{< glossary_tooltip text="Services" term_id="service" >}} with either an IPv4 or an IPv6 address. You can choose the address family for the Service's cluster IP by setting a field, `.spec.ipFamily`, on that Service. From 9e77021db71a915e7f97bcdd6c918e76ad00ad30 Mon Sep 17 00:00:00 2001 From: jkld11 Date: Mon, 4 May 2020 15:06:05 -0400 Subject: [PATCH 114/244] add Babylon images --- static/images/Babylon1.jpg | Bin 0 -> 23471 bytes static/images/Babylon2.jpg | Bin 0 -> 25785 bytes static/images/babylon4.jpg | Bin 0 -> 88455 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 static/images/Babylon1.jpg create mode 100644 static/images/Babylon2.jpg create mode 100644 static/images/babylon4.jpg diff --git a/static/images/Babylon1.jpg b/static/images/Babylon1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a99573d6299166df0539e90b94381527dfc6423a GIT binary patch literal 23471 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 z zK)1T82!^pNmK;r%h8-eAom_k?Yi5T%CSv3h$sc07bLrAdVjxU+X zn!7{g_sUhfkgB~GLu_fEn(-VA2qo`X{Wh`poGf}83F~mk+DRPGC$;wQ#dh>v+IyZ@ zeZjed#EOnco>VR>eb0&}zK(VE92^O@ZI0XY6$R?sL32IWp3Vi45nd1(n682r8nI@h zGw335tDe2x)0b*Z+TrOpK1lFV4ew~ou$_d3^|#R52M;p>^U><=5|_G zK8lsla=++P+TDckjg7n9>1Xk)xZeEqHx>zj;h1ws+8(C?sX- zSg$2+u@#DJd%A8Bq~*Ul%^=uVFK*PGCT%*ZXOwf##~gx{4~K8$;85oZcvMmeUjl&$ zrnh@IhxKFfQC61Qqv<+G#D4q2xofzpPJQP@dLTwMcq!+b7epsLBje#~efR%IHxv}ki*yUGKwgC@! ziBy$P%}3;)hg{BKAvL91nel0sKmlyZ18s2z1hLX+4v;G5NqNHbPh72dY)*Sr#UL@`&wp9v;wK8`IOmI7nn^mS?ZBA9Vpn+Ls zl*vgn&1B6Hk*Y6>i4hI;Q3FXvB*6M-Crz9@NtMrWPy^^?*`!8*`YOdlXR)L(fn4oA z%aUIOmN)Xcob^8rh&I2=RWNRQ6!Fm1fITEyxZLpj5~w=wm17K@xIr}OfVv?!Wb|8m zsC`1D+HfZ*L%IrGY6Jeb$o{wh=|qYyrJJcTHfpaqw7<= zH~&N0D}A~@06l(Bx-W~90)@SL-PVXlW-L??Ko+d-$d1QKSZ!;#Fcpx3kImF)3FltQ&2&kT#lN2nBtUXKA0!HaQ z(un>dg2FCj=-kZCyA5U48u>1_+CstZ1WH!q#lIq8B!t!~wtMjOVdtiWLjM%47j z)^tn4vn9AvJ6%0q)^T4779NrJ^)6Yx-GwG z&Du&VmA8#|O{2UAr@&wZv3!$ptl{tN!ifV_}&>=iF1A|@9T})7oOWl5U(ul!WHPqk#9WpRV`%Fd_Hht&G|31ssemu zh$aAMd1KP`0$**Wc;2PM!~UuTHGFp@e$swz*WAgsHcp3UwZ$&9CQj*%OeH_Pjarb8vj9yM zK$i#H0y)G5NU#_>LJrDVph8p|9%gi?)e0$(r*EfprN0&=bCYQgrE;n5sL{XJSg*Ku zwU~G~gGKwTY-Cw8mht%z6!_#}5EvW{0D}5=v?W{6R4EC-dYs`kFtdlNx zU`w~|wp6*qaw?^4RAA+k@}Krt3DpG`1XFVYW4C#6*I1_mwKVV{hl|D;Gu9_lWC6S} z*+Ddex*fsqGXZEE$hB#hIv5P&UM9X=S{oji9Cd+@uy;a2G#E3}t08Xr$tqFS@S=Gnk););o-wvkOL~G!>gf*Yo;I zK8d^7q3a?s)|u5MyKK%|m4yXO4<=F`_aMHlvut1>Yv9q`qdC$rYU98bmrEP( zcfiP&_BJ%1LogY!Y0n?ZF9vaT*4~Y+=mD>H@L`-&34^YONUMmwf5g6;pgBb6kwl}r z@%?fSqg%TLhMRw1g2&24py)plS=P(%1K>|~TmAO; z0HbI*H)Mt1I($t>pTM&4T(1)}@S>kjmv9xW8(tPBAildr2c9cT6r71y}<5NvoAN}A` zngMB1f7?4vI>EmZ; z$KO?|iHida=!zSAWrv(cxTde=FARv4F%R0RS7df6&87PgRFYCUTEmFNfFm33?oed0 z9DxCHM6+ASv;@CPmK@MJ^6#+fVkp%1p4VzIDq1b&P@@}vOxm;NsNi!)xT|teuj94R z!r4FAw_t>9CCObsV(V*?a{)Dj?uqmt;SQHfez|c6LclV0maf#$$*bZ~5d`1oH{o%b zN?J8g!6b#n`Auh#G=kDN6E`%{zf;%R9Xxx>{JAb<|Ih<-ALDIc^DOy{w@b1-w$zAE zav=7zx%A-hVk-xj_lkD}bbI$ib2@&;KoU=@flJ99Y{TcU&j&5{mDrYuKdt)8*Wjljwe~YWK^s|bmYA>TqyfTo7 zTDgMxpI|J3aaIXH%Ql3Y(9NL`-MIpQ^Q(FyBxaBF?=(j^idG*2b%=Wq;lx0ze=Q@1 z=r5i^Vny$3lKg7sSNz=l6YLWY+u?+M#bukfxPS#tX^swj`Gn_dD=AGf;gV-?(w+gY zBRKsVb@H*`LVgXz^S&$A^W`{t3N~M++22Er>|V?l+3`g`ZWrt z5kbV8XZGYA9q)d3L!t=5T3|cB8#|$H;}5`>gYcDUux^{XC2_>&(~yhv5ieYJ_Vk@M zsKn%ixBsy0r6IQMTI&9%OY3_4*-$Eof%m`t6h<|!{}3A>bo`ICPi)H6UJTE@=}EsL zyv&lopjAy8rms>Re;>O|EaA9E-4i{V*_|BWIazIve^`3OkK2{e**Zu-JQ8(_&N>EQ zP`;_>q6<^n2|{wvMgHkuTDRkq!u7~4mg#&w=t7=#TZ*+Y?sA+U?mKybOPt1dYrli` z;R>^?2O|?f##-^2cB`sQ3f)>K?fMlQ3mP_mJ>h%h17oQ~oPzZBG(VL>D^IyJM@(@m`?SKsdnJHV{x#q)Hlgy4js@P*&oNTf9zr$jQB8C(gXMvt%s zud`8)>qxY5t;kpJ$+CgOrejYaM+vSON-Rsg^A~R;t}xOTO*Yd8o8%58 z_=U#=FU=1960`xdu$9L%2z}t4v}m6 zHIL5uLfKIqQMkv|Ud78j=${wzb;XSKOkliB>8T@-dOHlckPV*2Tow#qUz5+Nv@N;3 zho2mN9O1<6{1sdNi@HlFjPZzGV@JD1y>+Sm=psu@={+->L5%x4sJfZ&?u*bFbH*!= z-YipTO8cMBv=-hf3Apw$57KCr=v3wYIptX@2r6KDw>uO%i;%7euLk(%CI&M$XEBrE zEeo3Tc>LyBwv7`d|8GThrPTd=FuHVv~pi@@<`dk*dUq0pY5)CtRDXIpIDa1M7!_(a1nKU<{!jk zdv+&s@PbI%C1~_pvyAUGRnz||rVih}obWgv?BNeXx`Kw`U^0j%d74ghCHmh7hMw?F zp9eEj%Pm(7=NjN?6*!`^>oN5(=Gz*j()beexkTp+BWjKQGP}~UM#SaZwl2Cd4FuWl zHTs`paP`98uT!bJDlj@)^;SinhPpOTycD~wxc}XD%2dFU$ctlC+3rkPNPD7=)LQ0G z2>T^J#q7cw-PL7lwlmcr8CJpX>cm;oi~6T1hTmJ7b!}-Zy>sT*SOh|xj&$Kk;M@yc z#f~w^^{-;g~AeHDyNosX_J&OqY*H#O%2JsN~g|^e-`(PXej)IZu*87EV;* zgT}_Fv3v-g`U|JoB?0Zb1O^hC$|eV%oi zUg|5Zu3ldhf9Uz%GiLw3*bp(mi0Yu#S?iV_6l4zRU+ z?}vUeLaGS(T~~PJr8(grn!EAKbr%2U z8~#mU@7J*VpC${p9s0VGJz-p*mSzSIWI&4?*jsa=QFESpf476!P4V-kzX3rAR{uZ1DcW?YZe z?+ilpTkq-7?+kuF!q|1@>@N>ThbMHMO=WJa4`)=O!lGTO&3`%pqou3c<@TM1>Yl2jIKL8}TzZuUy z08hXE{RKyVV{^Us-EC&YwsNH>3;IFI-)>Of_!PQzkRyuFtW0=Y#oyU&c);cJZ~KOW znqJy(Eo6R;gsKeG146#a%l3HRiseX(PtB|a$UeoBVqpc%$LYz!$<{riuuwj#NR%<| z`k-oz=$&u@USxSjEWR8z@AA*h0>OU0#94dm*T8Cqg)^*VCU6qZmPx;t^lDeH zMu^?tmxS89kExwHn}>V{yN}}E4g!8$DEV1_6W;Q-cc_B7vw8brQ~f&g z$haZ^y^bMVA65{_Knm)xth+Y0j+5&LMcHppP=*URp3^VmTE~Dx>-;&ZNdP3!$N%l_ ztjzwW$#Q*rkMC~sZof?qi%(p!b~A=gVqyVmN;5<5dfS7w>D!(`S4z4RDVr&g?MH?*Zfl}v*uBEIK zh6N4v+JQ0+!(W5YO+|V1WV5I&!NIn*jH^j+AAkY2-gX&Bd%mFrQQ30KB511+!Jpx1 z88Va>*7C|~|bx~YkEY=zQV z=Z(@y6|Wb9n=L8CwVgaVG=T{$#w`3)nL{k5g9UGZQI8Kc(C&qp#6>W%_9c3pl6f57>EszTXJlFS?SH?09}AFMKmDl$)rc8E>#t^4g40qr*TK0_M|? z*JmA+`t0Hu4R5fq&OKish!GFtdpp5#p{t#_i4R}ujva?z-K!9W#KF&XoU9Qdt^16B zuSU>Om{(-%ryROvWNmf&q?4xrM$g&rLywkH8%kz3cMk#eNSWbFz)mJo z04_2H>p$a8TVj;>A|wX3goQ`kWbXo3CJZSxj^w9kiC#^vP0{@D7ju zahIhTsJ%nq`LpMkNci>wgWY{WNj8>c_$l`Fl$rZdTvYvto)``3;}Y*EigB-W(#x&; zcGs;{+EuY(7}2;^KPepz9`XQec&bJ-M(<7qA9G7*SKMSG=8>oR^e%F5gyAnfd}!0OSix-w*u!q=C z{4r~$Eh_5FiRe@4P%sAo0zC}$csoxVxRU?U%`f$*AB_>CU|gv7=&SD^S67taVA6B zeM(zsxPXYH@LRr|zM*zIJxX1cUG#6Q{^pplgJP3RY05KgXP&CYr=QZ(C70m&R#zZ2W^3COHW(=M2DHKalvmJKeE)=SoD^-ng8}eLY1=svsaVON_sL|Rbm?x z=l;_q3P7sdjkqW=Lp5JVG`uEVtl%YPN<$n*e=WD;C!lOYaVBQcH)och7nZi!x1aD3 zRv`p8ApJ?#!KB09C)ueHi%_f;(r6}#+PuVp!7y{{*4RjSld*A{EV)3E|bs7nx@iY%1pTaM%Q? zJ2`M4)C)s*klV3`&<0trd2jA)yd_HvQ1=-Q-I(CZAl}^0?Id%y=e7BdsqdTKRML_N@M1tbX$} zyp(^>rF&Ir*vfnZD?UzY*=y-+Z<<^)Jeg~~eJ2}H_D#(G0PG7rR=pAdzmbCV_bdR;t zCfk2a9ROH|`H^;6N^=y2r?zsqI23!#?GiZDgM)-!kZQ>ztsg!Zc_WgZvIjyp$VriO$~i zsW#K{6;V38Cer4!B&igAhh8~_ySE~v{gFt~$aBh9S>aTQ!wV^kWgH|ck8YRmv0wTK z|4#t=8U^K$I`k_Ygx3)EQ-N0w%0L-P?DhviUdcvObkY?s0%tMflC4OV;%FIlHH5`IU6jv#}>=Y;(qM-4#9*auheLshVY|@-T7O#3#yQ63a zpig0<#5{~UiK9v!oM`f4baJ#7k;?Oa-e}$4n<;6xGm(B_DEb{g_H)Oit{<$gqV&)F zHxvC6KVU?xSg~Toixww z0M+@GIWLmk431-bi1SLd-BNhqY;Wq*_V1FZnX;UWjpW}HhH@uMZv6NM^@6|SG#636 zJi;u-;4Bvr`xfID(cJr{`eAr*^j?G6?2+AukxJi$`vQ%o4R;oZjzHi&R-|o@ni1@x zyNpoh$$a&@oJ2;g0NXDpzWm*6x0(OJf;Wu ziEp7+99>DTkGqtI8sMog^><@rZF8-J^efUkF_{$cHPH}N&60;k5II8JM^!?K#Eqou zd2B$RMOEzJlA2z)lUvw@Q`Db?IX~qntyBcTso|mJ)_Cor_lW*%qR1LZKh{qPD7xXuJ*NI89+y1@Vu)c zPWM>Nc{jRupZ>)$$8~&@eK6bomA3#}M?ZqK=`(j>t@T!nNjEeG^scD44k)3^c}e?2 zfXvN0W;hSBMbh%`qGtDh84(m?$&sXe>*$>>{{SZ9azBx0m#|wounez2=L@u2CHNkHKd?qwqmwYIx90_@3!Y*;}?i_knfh0Ul%VMMEQIg_6Ym(Y>L~HPjx9 zx<06U?8q=-?{cNs%MH4-WPmsyH9JUiLz?RckVl%`AI>T~iJ6ZJrJ3X~dJ80;0044H zK1*2BGbSM#m50udsgqNcdD#2?1jU} zDUW9vzfuOi!%0`1aX}U&+5qeGQ^M9gz`u+03I3Un5dbuTefTQTro*y`1+=W%bk{+~ z&#HF|fgY-O&eEqmfS{GU*jjJdE6+Zi^w#Hg26?vJm~t{^pG!MW`%C4gH*31^wIDZl zYeMO0bMsO)zzVKcTdI`t$mY>&jj0UsIo9K6)mghKugj-oFv?GLe6MBFb*yascDe~# z?m7aC?}2|Rg$7J;p7Lh^(dw&Rr|tYuhe4-~@=k@`L3zG*re60=%JxN_H zEGq|9vQ`4Oy=c6xZdtn4?QNv4+Tsc;7czJqx+xseJqopG9j?g6COpR(BXFxeORN`n zvc2QY#HO*|MB_3tjoX6d&G8{}o4OaYj-r>5 zeH=#UwT*5WKGb>AG~b^mmGmB%Lv*}S;s6k~$@v7J>6y;Ra~mcxz;nyCZ#_)i=IYzl zxT{tb$a@KJ4sEp27tsFz!3w{t=^qyC-Jb*Z5FS4Ff<95e7y8E$tR8S?ZDYyGesx)5a%zj~+mHa~|*sZ#;qL%_k5XXkct`7?}$O z*0q!x&^VyGe9E{bKXI>8kohRyQ@+bH>!o+F3gH(70zULZSmVoi9_nbpupH78-7m|Z z#a%SALkI3np`h#i$*v^F*Mz~61Jw}|w+dZ2T8wb-nnT;XVVl_PVgu)j_Ya#zkJ!FB zk&SNQc6^Vrf%dg^$XGh9*EXf2K$Jvn1O#k2o7_CrgG|zQfnZmnZ3dp~SNE9mJ|_=0 zl>Y!u)@O*dxlRuQtAg?_({_$br@9y%TNvPx=Bpr=A5}9M#g*RyWvyD(tXo>OfUPWB z3wE~C%IkHWS8O~fBXB-^tCp0~BMGxdAvDvD*#&a0dQk5++545#0hJh}&mEOssf0$T zbW^*aP)aNn=Gqo0$L;56V`!$jR!jZnG@sXN*0Hq=0j5Qdktm}OjqNQylt)A?hqKPT z;iv9@2 zF2A73j>u$jbWE+SF*=2G@=$(S?BhCbzPGXW^R>_A&dvU7&m{ikHA82qjO(I-eV=0lv zq;6#n4X>U1btuB^n2pAS*zNp5Kg9|0G&n1Xvjd}|XpV}du4H%9f#=kvt~@S7Z9nY4 z+L!KD=#6z#vBv$8nC{)?2=pn&0Tw(Ue2TW|JGQsQW8FVsJ3h^#VR!^s{890n2&f!E z^+fetkA65gyG3@>mURU0>3mKlw3y!bG@*+em+qky(b)vQ>w zvesJFtiD!S#jsWd&|6)DO$)fWa0ATJylKPgf@H(UO)vp2X;)1g8WgTtaUcs%BOtVG z2)2skF3RU<Un1Ko>LOmA-5$L!uk44L%2gz`8$D)bY z9C|H$IP_A*2o4-C5BhG5v$PP*(?mua z`_(5GTYD*!0`KbtQ}sra?aQQfw57a`Ykg}-tU53&5u7i2uN&p0pG)o%RxxAiwrrKPaUeiN`b<<}p*zY9c zEHf(@4k)iJ?UtVWY=;m$Cy=SF7O`_sH%v^^`LJPtTrQ2}szr8)5i>Uen-%|0vn z(fJYR#)Qtro5eR<^AWv7?paUr1Px>m9Gkid!s# z2C~8XE+q5#1?Aed0Mqpual`lQKWeJ@P`7}(z7{##LW0b%_D_30M0q=XTCNZfTBd7< z7u8P)by+v_OmQb{bPoktbew=%4&bf&WS$UxQ$ZkbM)u{src(LY+V{C)arWmJb z9{m-sPsra4Z6=RGQ*3!%9gd(R{i($nm`-pO;1`h-L2|UQV#SLVEGrh41=7{>w`&6G z(Ryeu%#Y5wS4}32XWXW&;W5H-uq|6OXFkU&?SWy9k^hj4_)DzeML9`>Ktjpm78yusg$Oi2l-%&99P)?c?2eC;XwJb9HPP zfNeh%upc`QH~UB8yikfX7ROV~`)LK29QL6GzG{;%mO>`8%rO^cSYg%YZfe6v1gjai$!9^u(J7D3u^-E`AxJaw|DaXXbm5K{{Y2p z(udUwOxg2B;kY&8%DCuGrvgQ*wgiFH6Wm(ZFU=a)P#(*fpHwYG=bEGrYg+gvW59D9 z(g;3auM*L9-Dk2{)8M>(Ml4bmvvKO%t`!vzavxDej zDl_!6*_*ERd-U##<=;y^oAt^+D2j$prS8qQuf>0cqj%ExXY0buv;P3bhLh=cMZW|Y zXZ=99A4}Rlo;F|i0@wX8XtzTfF8=_sKZ@l2FzDm|0PF&xs&O4NdufL{{X#!e)PUirB~+4VA6Ezkc;1t`UCD4X^w%7Hm9D< z{bF;KlHOx&RB?Z0zP{&`Yo8URw@SaN>B3<6z~SJvcqVi&#LSurMLsu{k?sl*+=hqQ zQZbd#F2iX_6}8}wpxU?LOTCRGbqJd4>a_0%UkdISTnHeintrC}%R{*#T=acU9$N1J z4)s>tFv%Dk$CO()F~EM*#~xC6^hZMLq*dPvCodHL0F*{KFlkdaqggW#9_&B4crgU} zEC2&k3hko&g4=752c53K{1nlOJR_lej=J{hm||oY+z6rNY1S0R$UNU9A0)x2aTU>c ziqhJ^v0}?wSg~Tou(fLzEvyQ|qO)!W@6T~R@%Sq)n0CS}CM|eAXsl+pa3tEf=uTh_ z1oEz$Z5IkWs{{wa0w$~j=A&}acZZ?}CEf=DysNhO?Pf%h)e^k3R6Xuj9RgXA5)89$ zNFJ!&hN_Uc5btAxiwWEoJE%pqwz!Z{LOj#A4xvi;WZ1{KjtzH0M+I86Ee)@YvP#bp z@*!Fw(c^0Y5s$$u)^zqZCsPL=$xmkRx9cz3EC`AHVR~+pFvfF2vy8UB5nW1&%(m_; z#eS4DXJYHeCMKTaE5uKuywylX01X`%O=m#1=B@3eVA3SG7(F;lgQ@hgQV-2-j}_1( zu|RX%%Ch3cOb!R1P*syh)Fg*!BvAKP3`~Y(#0`t|MYY=x9ZF+@{lze#S1t?8ew}cR zM`mG_onxAh$h4o@0Q=X?HVEnGL1^_|mW$xn>tSHw%0?1GCm)hQ7V6;?=Kva8)6k+Z zTnC0gX!B{N6T@E6Zi%m&dx-D}YslO@{a1-CEVYXkELgE=ZEDu-YSt`SYhhb48QtMR z!{pGOVv39eQyNj&pxC8t(m|%$wrS6Bc;#B~TuTS4Iimjng43EpjpvF>GhMX%Qu7|) z$_!50ytiigUVh{*Tx1#plm<&GNZfr)8Chs2KN~%GU8}~?4HSj$#Q#^v=HC42SMzgVqrCnt+bgp90poPt78qWDNkeL zXXRY*;4DNd@lK|nWZ(s4(k@WjHWPe+c2Hh#^r+`IN`<6#m-iLr?Qg2>th2)JV&pc; zWu-r3p5HF1w07=A0u-Bx6z2X5Y>pyq5^oj7($uUQf#1tP;Y%BuTsB<+=2JK&@BrqP zmh>r{Q|<$4h8bJYLh#Ukw9bBl4#;ySvxzhyoq6Q1cIkW`_i z%?HkvS5|NglDbz_U+nuG40)N3=_|G~+zYe#@%Jvj%09(*$C~=cf%j6i z`$#SC7=Kc*X*p9gfI}YNohuX*ywG$`+3n3E1gx+?+I;+#lSj)BXld%MI1c)-iw262 z8wfp19hq2jK`6N8VU5Gsia)h{gW6mt;c6KXKkdZw$ARiBe$Y}rhK2phVEL(C|2?s4Sa^T9)NkTX6*KbkE7rSAQt1x-g>zD zs4*egyCt6q*ELrBU zV#TG47A-7VD;2Xw#_lm0W5(|hOhYX4rhx2s-kCA>0%L&fuLi=l>CdKuEZ>r|>Flq*BPQU>b z#d;)p@q-EWLgM{_@=Nonv!!~2fmg4iodwwJ{HvHYz3r%2eLp#R7CGF~tFz2-wV9et z2?%>n&;9njC$O23=DEzUWS~dAf5+-p{X%H*@y!vyvR99Gvr>L+?sP)f4F{fs^NliTJJK$rTQKgzdF9W}?hJKO-X~{Zwo&b^22I z`LZ%s7sd7*Noe#4i1{ER;EuwZyE}La2e55EtC%g0NWl4^Q5iYV$G4)*+xx|7c01jB8cTmTi|aX`vto_Dut=x z4Y9ed=KlcPys2Wvixw2G%4IV#PjOyfYhm4_ZjHKW7{ z_f4U<0A7f&-c)kR14&gac5TifR%gToz_@#aJK<@J067R8s0&(nRoz*;Vm1=^xNiwY zr23pK=$H-EGfUmNmR8sYC-7~l>79!lS)N+!l@uacwIbZ^Qq0~@wvGnPO1 zA7u|@=hQT;=C>jVqI*vdYe{MQ#|rtKJerht_P!{H@ig(c{{RI{?JR9%E}#G&K~?n0 ziJ4rq_cz07$kXRYVK>X0WpF^8-9T7aV*!d@L za^Rd}w}e|7Dv!G{lwQ zg8sj$IKrRn7)K)dFGuY2?;Kg^6Nf+1Y8e1`i8BN_pru`)z-FbTWns(1W{k6U=9=LB z#)|nbv>JT48iepn&?JOyb4QV~2>fsLB(yf!Ho6C(p-NVCvMRk7LE!Y^5gk2%f(<(A zksaRCXOcpaH``6OsII8YNnFjRkO3V%7o03uv0}xG7M3hpShdR1*cMf9IT?XHxz#*kK@ABxJ7CXjtXYlj~LcL}Z}rZ;iVva)HiSPmeI^j2IM8X3s|CQ;`` z)_@J7BAL?k;4U(yEn#RLBCEM@7sy=hP%}ers;@*0kplk!K!VC`1L@|feV`r#Nhy6s z3Qat6X6g~aj?(#LaBD#IUXdP!7L}#Pj@mB*-tW$LnN_^ZQw~6XlCo&pk&Y188l`E| zwHW502v%G@p@8wqn<8M?ilO$OAiml<6{=; zt2C#x<;YS*O{4KmyPgVhh|R=bBc&sIjxC~r=oHwG?%ht{`7c21?nl%x-Ef`!N53j& zy2bjYn69=o72M4QzRSh_nfo}-@w%owJj>vlX!F~{zVIvm0P67h@!b$;JcDNZiik8& zHEK!~!8BIMpaDG6nlje0z=Oy~M_t=Vb$fNS(*bcHG+E}Y6Bu)28+w98j``DJcKI01F5KXaZOP0TBTI!~h%s00II70RaF20000000000 z0|WvE0R{&E2>-+YNDu%40|EpD0|f;K0tEsE1pom60s{mQ1ri}K1`|P1B4Kd{BQk-J z6hfh~!6Y+MVsg>p74Qf{V}kJ|G*g3;qQWLMHbis(+5iXv0RR9$0Pc*pMUpxqH5sPC zPU|ft6{SLAu^I59X3=032b3$R-r-4`EUzpQyb7C6sz+oc<>xpz)qLsg@vaYayMcJoaL?nRGF zqK5{S<_778o1Ltr+w@E@SZ~kUy|bayl(YO!fsR06Wu)-DVSVtnu+#S zG?NS1r=1nW$5bq@Wz1(@$dOgDamuL{J6x)aZvYQzmH;oli(Y|}K`vccD|TCM2aixsatBhqZ^{h7Aj-1AX8}3Oa&&JC`?vk_*AU0 zp#6}@Qfec1S-SGV^2k$e$_^T#%IvMW3})n#xKI2+1{_j_&G^F{58$~xZ8Z*Hc`ayZ zxg9`AINjD71X!d1kdGK6QDfw>Ge*_|`+2Fcgc~`w^-aP7ZLgO_l1p4~t@P1ISUT3% zp+;rLUbaVLvg^M@`=umVuz|tYa1dH4yVQvSqGw2)QQx)3D37 zsIogY$RL}QAnRzVF-H-o3bJAQB*yN$nns?BjXO!CZ)X(T2SoHP**zPy2=O|_ILl~_ z9m(@g(pH#=Y`V2rxq?=SAva0N*ybgY43c+Qf~HzGa_RU$%H28}E6O^_Y1vOv8;yvuTQx;PYiOG@EKRjl6w($=W1@M}mOZBG)|#g62I|5Z zjjU6l?4CT53xz?7(Y}?%>=$CFbyzxGN9{W9p!vbwLz%9MPM5>F2$%z@UDc1(7;C9h z0Z3>R+ED?~cohj$qWBcUvVI{gLzr@@5qF(O@TOCoOlzh+T zyy-6BHnzyEcaHj^#(Ye%CtIfDVYu6C-8}bu5H?EZ?dwb7rR_P z9h3Cz%m~WqRr)s1vFj$HJ1Vm_bD}gxbw3<@|P}R^qktlXB@vRa0j7ZHn2f zZ+^;>LeOm05Yka|2DMG3me}ly(_#h4us>BXVnOIN(Rhrmu)W5mO|H2lUfbNKY4vFJ zPt*K17uv?%Q|)06AlLwQ@(8VIA*G}Irm4w}!sAtIO)1z59aV%A<#}-=>0q3N!Ni?x zjTy@8-sz0?8mQ(b`q^iF3Z}%LZMqd-GutF(rq>INSLumVkNSu6Q-r6YIws>fYL3I^ zou`yvEB>kD6PnQWYCMslp8gkv)!N~e+O(wRrIwmbeG`bbwhF?Iz8p!Mnt{ux9r~|6 zSupo<>KmS&+FbNSWMUxK)4uRKZzRSVc~!5C#`(NKE5($YvmIPQ*4E)JaT<3=1LiqP zhsEZxUsnEfIUSjV>t$(8RKoDf>O!$=hydL^1ok6UV+}>@osLV39YN@-aheRwGQ_}p zg{sdKE+jpYJtcbv)FGVQ66)Wh3 za9IjXDrD%OP0Ay7S-Qb07f^Y!9H+vyPCdj$4go&4bH-8gUpKx`YU*3o_e)7D ztiZrr<8fiSs4THP*Nclqt*>=}O|R6WG#r4m>(xo8T~AduxCd`=jM5xU?rwEOiGt@- z*;r7)H1BLsLirv1Ed-Tn{5rabGwqah5V6Dn=_4%#HpXUSNzfaGHeJ047bjArTJ7vj zihhCCBQ^FX)mq1r-48_lE17UKO*A)ir<#xe>va~iW+;SdWl4#EGXkmH;A$AsKpod3 z#SO7qpg;JB^InPDCt-epITN}jV>e7jGYckZs-H~kt{I~$);QvowW%rTa9BWDyd<`aFP2Q;Eq-A$&;&n zI**v>mWswOO{{DM)?NXzxXf;M?vDWmz>}|%dN*aT2hgUWd)pu_c8bNPNe?;IZ}k(HyO|-qbazGY9e$^w=2bp z!DQ6064N-2wpMi5jXomYRZtO6-@3$+&qV8=6n)b$$Rx9(Ha(Q3jtb`T=K+%qoQF?S zEd##EUNcj>M!&K=@#KZTG(ESwTovvYQJN^vajMezvJ*p(Hdc#ADxsCYRJa|A^XVg& z&S!!B2v5;s^;mtQsvPJ)i>O;Z8Hhzvd9>04f4g;c6+nCPyFv!(xE^hBs87?+ZPW12 zeUNbsG79+5ga@q`7{R8bd#uu0sH6^Qv0qcOL8>5L8>te$~0ZL+^OV+UVfMe|N6j7wXK)K*S>b2{V> zh_o^ZBqVKZ(*^8fn&%Ov?SA%EPH`txJhr)6xY-shLG;lTnQyP+tY|RlYQvsGV}*k6 znnRVX9%P}_W0aUYb-Xk#UyoJ2lyojj(ExTdiG|F=pWf;HolO6)6Ia5I_R6iX1RL+ zBF8|N<62*}VM1mL$q~BH=XPf?{la1w?3-z8#hs`?`y=9$n?)gw<68}ixx;vd&Jf}) z$o;eQD`}#t1&rl5K0e`EK{I4=%5@30JhX)DGxRGpO^%{6*8o6$cbII?F@$k;atVIfckt@amTf zF_+Yp^CfOIQ;OBpRn|yfE6LQIyp<%6If*@0rUx^N+|G*Ct!{h1#CVO5dn(7Bj+(5z zgOnB5F4nw}~UL@b@7#@1W|mHTVf z#N3OXH%nA;%mtN>X>KD!mI}5zM`Z@haUNd@{{Xcv*Amu~w)am&`;Bj7WaLaewcg42 zLAIjF*hR}l$}U?Altuy@qANPxRo1w)N#?c6#{$qu)p8s}+Y_n&vauOWut5l(=0m**Jh-UzCYkAV#0CQYEDTHCS$lOW`?MSusg&LP^_YJTs$Yl zq+aIwp~^&p<#o8!$ypnz9hO?Wu!k<_u%7~%LMsc)%f(@NNF7#5Lwl^LIG+`d3c{zT zmBFEnC47&^IPCbgBP`QAlH;Jh!?L5MHm3DJl=oH`3-3Fv*~BKsB-e-&))IY{e}Zu9AE1jg=i<2jadYYlqsJ&Bpu{f$=1|nMOHTXzOgntW$I(WKfB;5> z^eW+yytTPnT+!47(;Hw7wMAvx&40>}H`y@}9J8U+_gQoD@A6fZwkJ-ZP}Q>0<>adX` zx%6(yAk-GD!Cu)2rNx<&L8E0>ERtG5%AelSyJrn-hfw0!?->qjO~L9F)f|FYSm1XG zgN=$(p73nrqIUDL6=6^W@LoB~Ci(Zh6FTH5?Hfpa_~>K4g{ zV=z>l%zjBNs4DUbu=ar_=c<-#9Sy-;XGQb}vmax0G*C4CV6e*nnU;w-hpadd4^MQ zrVCSsNfn@b4p~U?2Xu2skpTRc&saOEjSXiD;-Cyu36;-;J6z5C%^pNq&0K%V%q!Gvq9{iOLy+RJNi%jUHH$^AF`|_(z+* zK(D3nE(^dodk1D6g;27Zov&n$dt5{0b54ct-QPaz6_4vU9D;e;x{{SO;4N1BBE9Oy4R730CW^N#1)BfYv@>#0H zqNhBHR*7Z;*&Cx->Ut`AfjrWQD_x!2wWHx4ic$lZy}u3a24@11(piSCnY+#W4*Rjn*FG7AV_^j@xH@HW!1&Gl7JHz|xh#;QB_TZ0cJjATtN z(Za)hQrLhsJU=WA{pCEI=8ofI{nZ;B9MDHqu<(xvV;ogb`0$!i=wcbCsguJDBfFjY z3zN_l^mnr_WVl`v3^jqStgUtLUo!(leJ=wI@{o3OfjV4e>)L7KF+m(|d!#IAX?wSI zhUd*!aRwDfiqk~QMa~q_KRcV7D_$%`kJkEYr(!{k6f9&S3@QldsSU_;SQ=m4wY_~x z$dW2}9AmvaPWY#jStLD&Uz!C)eDzHXVSF^>P5f^jXQG8PY>p>^W&_~{-|w=7>^VaV z>@S#QH~FDOB+QUC!r+?+gKwGavrx)<`Z-~#iIY=K!pF3W2Q-TiN7a0(#N01Y!+c#n z3z@>s=i&0dPHbeG0)9oO%ytWC;oM4514H~4__J=+XH$sFRX8O3rfATAG)6eO$8)+i zUeXQdT_!BvT>j>x zq1#lF>O7N_Ga0GcU89DCAmcQmu7XJ1E^TnQK50+{k@+n57lx}F7=N_IH0qT{mHeW5r;SO5djXyM?dDKx2%)oyH+vAL%9@R5I# zRg$_XgWK~R$7IJ3Qef14XN8U;j$^~sGKWdaabast;GOIV1lwC}s{2=kczKv^9TZP> zH`%f`l}Sk$Wi&%umi2iz)y^jN8Vzr;fB*ms0k8>Ks_h|$nTC1#wYxX^k3}eGGdN9N z@ic=_-I&io`joY9B^;ABIwm$*LANpA15fIy432$AI;KM-j)l(Y>De^0C5}i#V7H@_>1YsbRiY)$2fU%At_atUISaiRdW&^HASjOGQZ$-~NwQ#Gr zlZTCE122lLaM zJeD6+EMT?RX=%5IMZ_^%f2vg5Y~=-snDk7r-5r`Eu zbRjhh+|Mwaj!U=0uaQgCP*c^Lk999X7oe=F!^ndWkDW|(58lenl+6qk7<8GUI+pfB zq>@PMoY`AuKTxe*t5-1Nyg1WWbJ*VtmbVl3O~(CGkjkBgKuTqg*F;R<)eX*2E?BzpIw8Hn#4bPWlZc;# z(K;%5eeBn07uj(>6rzh0#GJ~lZ?CGh#VJ0{$zi38$W2GALm^ za;-bsG@rCa+v>EG#Uz%QfcIOpMWN7>Y_{r_CgmKkR^jfVn!)$Y3(5Fh+td4%^k4ip z`$BFd!?JMpH#SU13T>j!d{ROUt>#*E^dqrdnX%N@YW&pH=b-)Lhv0qkDtc(c&G&!1Ycv z=tyinzwf@MaCO>vaJv?98X}m{Gi9?LV$aO$~h6o(T5Z0T3a}QhJ z%H5XZBg1K>WOgRk1nHUI+xsM)JDGDdZesw|!%_Yh&fe5;xws>V>MF3&Y#$hFpO6h0 z``yjAk+X->qP5`;DQ#^$X7;w3Z?RoZ1;iq&gO@WJ@I{u3#Pm_&_{`Bp(%75>;~Uwh z{M}bEz*_$RRLf3i`h1l&Y{EH9LvBvRR^t-9(?|)}U)6E!LD$45Cw%2$iH2;Mk7RZo zQQA?MdLuE!Y@3Fn#AZ*zW0y?Y_}yo0orYVRw5KC;B=EmO-5JI4H!Q6Z z!hZz{YIjq=org)9Gx0=Gsvjin1~%F3Hz2DRU(AK4t+iBKSwbst=Zjs<7Yma(7^HI@ zxHd%5q`?*T4Ytx(dUtPGYHAsaqvW@jwCq;lzCq5)t zkANxNV3fRvRRV^v<7E>46;?G~${HzWk-!Fv-F%tHyg?>Cj?X)sOe`g_k0dSws1f5p zowi*9CkNNmys^0hZ)CJsbtObbXF%M=+u1)(#={W}76WC<`08^mELwi*)|8?)k*CdX z5#@VngSBgj2yPxXSXf_Wk>2(pJq>+E35w8hCKPQfFAbfy(4CF^h|v0l_AdJgBc3o!t~Vp07VZeK^9k6%j5*hHrhmlu8=EgnOBG{pIJ24X$TT4O_ejN2B{asK zv=ObNnAivT9>@Lq*~|cvK*rlMi6;7$;Se%%pQ~JQyY*3tvBnzP0LHe>1oj#QfauAy zofBQylXM5Y@>G_GlN%XpWw5>PeZSq-8bGKl%=?CiTcOncIwm=8BcZ=b>b34V;d*{6 z;i~L9aMny)o(V|SIY+{OL*z>NQv`Kh35-okQ5&OtQW&O;{{YK)HvIJZF2Te2$&NO? z&aenr&2zCDw^T|t0j=@_Vfm$6NN&SadU-OPPxw_B!wV+n5^|HWrL1{<8_7KvCaZPp zCO^zpV=0Cd%x6S)ny}D>tS|yKBs(Ow~C7sAzLYBSWI)JY$C%EJ4yVcpPr1nB>HASu+c>yL}O5mu9r1$0se9>Zc5ujn-=< z_a|P9?31ZeZh>a%K&UwCy_-egP$oK~Mf-7YZ!y)fw)~f znPi_rM?knvF~iNJdzi_y5$2WQh#gOgw&wbU(V_*k)eq`g0%nptv{5v57e$r1Y23KC z6G&vnCnW4uQp@Qbi`@0l>P}E&`z3aoxm`bM-)4TxRy>B#HBxAu5f)UkI*(lx2A26^8x0*l?~1s8bAYk z^z&Gez}c<%2Ht*aBO{{sfv@P$b^4*<&FCNWmhU%5b0o< zf>_;g@b)LTHwVlsnD}oJk{)AeTt{HwPtxf@g;g1!A0heKY`|eFi~3aVlDXXH9qu02uz0J@j@ipvu*^hb|$cA~QOMq`bWF*@SK zF&H4+CSsPx&PH`SQw=N%2iawX*`jgLJxPny(`hqHo7GxFQ$dL~&$AwdJ`W^UeKWH+ z$$FBes-4yjAdc$pn-gTfM_9`fvytbBG_~;fi0kBvV#|P*lOXm@5uZSOo@i;zxx0 zu!sta((;tNkKIA9(JNb36*NwgM*sl2&~dIe%JcR?rR}QKYNdWDA*`5QYgxWaPsK3o z(n}<#WkrU>)?zFT?zeXgv`-z#36OHd7##wIbMjEV-E3D6#U5nDCvocHm054ZJyz)p zb7AluKo&-xnqxDY8y@ftvs-euUIk<5@y0pjjW1)FqlNar=(~;&iZsm#lE*UuaqqtC zLiXLk)`~oD31JS5<~cMV{{WxN4(p}+BI78y!-Xm2mEhvEqmx$Nu00=a&I10S%X?!$ z8Q<`YhjO3}w^M7ccC=ibI}54B5hpaZwT+9k8+KU{LiaVYIJ;0mXf_AGMVA=zhL$@* zPsRQ`kg6&ph6hO_7}(=!B$9LkQ`J;Z;?QFAN-5nuFAW3-w%2aih3}?`@f)t|$n8J_ z%U#kq#v@aQQ$iwuRXN4pCpFy#!)(F1Is$a=nZ;nC#^`GB`sj1TQ4wUZhing@L)+@O zCku0USBdL5Ul=9dXOPQDA<#(DG`ICO-!X3MvGDFAOH#njcx=CQt`-N-qVM&SNyP>uDBc>TCJx6nQ?eRQp3X7c3jn)@r_7XVEc z;-#A3x^ZpvEhv<4doL8G=c4sn8umG-VizRhss~bH4mR*Os&M-Y1(v?W6i5Kw7CEer z+KXyR1zkpQW%lInutJJWQ?WYe;Ao)b5>^^eW5(3fcC`8pF&D&J0)AAl8kEV*AyWT}D&ZSaQP;zVHc{{D5rM9PF?&L=s z5P^-mmxjoHl&&LEb5zKCxS**s;~uMcqNsSFiWrBCi<8(VIes8#neTbk*-e6X4Vnr% zxMpK)SnJ&CeAiXNDja8y`!sLRg1S94P~sR{>8e^JjqS?d?xAqUKC9U`w8-k>FE~Y8 zvdA0NgzNJgk3u$IOT||mY%x?*y^=#C1LJc(64EXR@>;|g?PK_d?62kW`Nks#Q$m@9iDxEH^wgpMNpP$VJkAlTe$3i`&E-mq zH8Es@R=(gY%V#p+F%K)_sjB&U}2vQF*Duv(RQE^CSF zs-%uV%9ZO^o%yO9eM(B8`;q2QB5rEvLbtCr5RW^rZbD0nU6Tuw`d1Z@`^S2yslqQK zR{ez1hJq?e_-BKU$@5Sa=rr|tZT(wk}eJMJZvvR@S-w^UAvh1=_ zLoG;^%`R|05N)QG{{Vidz7W^M%ZV+OtpdXT0H@HeP)8*l6i~=4S_vV*8(iPFp6V{D zH2{h>#75lHdk;a^rHY)JJeYXa`Z{ za*%A(PTaJl#M7@e?Y3d$59*kXm5{N;jB8&bi6;F&wx{T)8wio5%{CgJL8^{HAaRr6 zIvb1M$$ayS;Zg8M9?OTw+_(-X?rkYMMCwXaT~BFW33O!qQTTvB5&{7S zPgRF%UA@p+3Aj52^Y0Z5yh(@;`lVMiqsCKFoe|?VMFU+C8f=WibY|unf|-h;&9-fm zZG3VKKq@j&Q_426@*?2XW469 z=8p@C*GmX1!u`=$(t4r>TXKyM*Fe7Lk+%vl$7FUj6l{j~Sg1MrA%`GL?;36wd!VP8 zMb6PDJJmKRBe_{wp>eVfDJLq1IKkAdab03q?;MwqX61$IX5SP8 zuuoz?y^MAXFzV*2&M|-fpC})~xa68h?^P6PQF%h>6h+UXk15i@VqxzcnBP@*!F1w$ zTuA1JG7)or=Rx|e$A&UIj02+EaNMmI*HE?3Yif)ANi2e--I;PKZxd~QPX7QT+e6|KUo%CmW2Nt+6PiG2xFD%bql15h0sa2~8?Qzil)3IU z=+JjQYZE-ZqbLEu5C=~sr+Y@>rg3)*&qmN0ic|agVss)vHos?W^gR}#?5l}B--Z2} zz0QudjPhk`x6?pK{6F%#6-Eh%*Rz=%T_cDWb5}8*BFDL|8iIgWqH_(3@Rh*o zj~z*B`_|elTFOl;*F$!tLPQMOpv>6w)H zS`}SHzp}l=-!ZbJ#h+?sj_X>KUNSqCf-NHlV6ley@hKhHCNUfRsCpvPw&kjWjO4Wx zzKfGM-NgBvh2;bEw?i$VaGY%x|IU7RSL)4Q)_s2_?uzfh%pMgdLnZg128}98fr0 zid%-%%;AAzgk*7bgiksHexJg8ta=6YH6(3{oCW{`jsF1O;-=y~REAq^81*G)W0p`w zz83V;V6!2;UJ++QmhBO2j;*3;y?;~12ewcwI>)Ow)3 zg@;fqbp&iv6!CNF8y|#5?}fv0rpL`P8$~@$Rv8GjL@_n)me(yVy|wS9{%eAJSiz45 zag8q#(6!%S#68V>8~0^9p4x$bP)|^{?gio&R?&gYYwh7Ab@Tb?ertJ(W<8sQN5mL) zEpu&A2reHCjnU2dub=qC*v=zUh*Z~LweVDlTwYh_tIG%_&&w|z# zw|7R)VEVS|fVIqVYuZ}iY(W+w7BZM%xLI&}HELp;5aqZD0=TBAr>GVr0*xjd94{HV zQc8JZH?dNRq0KgR(@{C%%+{WWoRJ@*hEh` z=;g@m?R7TP)l%hcLom0nx=PoqT*)NL*$vHHzUz%Ty-W&H~Fq$yqlvMg|_hN z%M{K#ChDDcop;q@I)JJ<=q2ELPS6aabGB(>qy5R6$J3Q_co1hsS*J{!TBcl0F zjW}LxKODp<=>?*WX9fa(?ezRCs34)Kk_jm48Do6#zT?9F-iL3Z`e)c@8lETNpRm`y z_`VnfGKYLpGiJZnOCK@jxEfy#K*4&~?Yqv94PEo7w59XlqUASvoVW_{!MUgnT z7L3i_{XS@!qY=tlU2q95JKMN7G|K<2UKg{J<6LJEgAOtf^R;HAI>$nAdMUGQc0NKC?%|2-9YMYuTHt9Ny zCRp8g^$Bt%gxT#Vtf(DyPSaI1?p2&7DFCyD(Va?Nt87qBG>tnICUY2cE(y5mWzaka zk2NRMGz+pTJa1(wj&=ukR5;}jtE6*CyMWPiYN#Cq&SQm$CTIj(Niea$#8Op+8ld0d04;kM zerZankY<^Kuu}s`9pr_>=JHSdNVu5&sC<)D!ovPbO5>ZpnZa{~D8ARfG zqE;Un*Q$Gj=4@EpdA55?f4AhjcMX=vzz*wopvu_5X}JpBxnC8)>0-G*8}Rfs+)q&X z@GEdJiY(U!M~4)tg4YgK6#PgAlgIcgC^2dY z?U;s=nQLig{nVfzRWGqfE?DqE2yBhf43fJ2lGP2d@>*9E;ns1QG3vEa)HgK^!F}jR zP!82j`Y5=dxS_qsPc|1-^)I{ARPOgJQ+d%TE9_NHGl;U5AROQv?Ezc0()rC3KEyD-_*nYlhRY9$B0Bxd<81l?YmDk!<{$Y1M9C?b@-Ea6J{WR$!{fFj^XiD(dBsYHQAa*;H2pA!pMjcz1_pWv0R7RmkBoxmP}3viKLihtcjzc z`@_r~Q=jnt#jnEg3Ai^Fk*|rw&4KR_9Mgxe9Pz@;I*xd*+Bb`)E}Sz7OhFc zQygdQZj>^VOlQjG+4+bj*VGUR`Ynx|xL6~FmSun>>PQ}IEo%e3Lq}}kxJy)2fi!gS zfi$-S29cG%WbOXKY9>k|XEz|J%j08qK8m-9@wyBmI7MUJ`nkLi(Za(d)4Q`6H9mLH z4af_eaWAyi@ZCK`Sc@ZOBI9T6{sdK zZyXW$V~@~x^EW5Dpi!00Y;G?2ZK~Y;o>n?6Es;odVJ)}fx11{wF_Yri%WcE4cGSqw z(|ZAP{{BmFqIi5wcR)HK#!PbuhhJWyS-R6TuIfJp#l5t9ITdZ29>C$XQ1Mj2!TZ70 z;C~l>{=4u@y4a|?5bc&4*wvE8C?jUqmbX-*{NNqz^?H)BlRbc$0`==dCM>!@ZHpzK#h7+Sf z33uT!gYej_vkWcPIY=n%ZFN11BrXG@BkCrRzA&4;dG^>QJcDCq98uI5{b?_N?zBrpFaxLaj#^U#Va2!6;lQw5Y#aH zxeun`{X*xsjV(?cRB3BzXM&`E%8`U0Ur#-fZ)=3C5`an8-5dSNyTK~H$tFwKAI)r% zVrDp<%Xf*}E#HUpLrER?uq64d=ZCQ{+cHCT6|^yplwE~0N#S{Gwkem!90*@Ddu!mI z^c-E-r36;Ps@-=rqe!GXk05s+Fu9umD6MVQT?<{&3G`vxAsSg3s|g;8anx2qd@pit z9A;+eG-1Iu%u0@L-o=!u@-X_3hD@bl*fsoA(~qk2BE+c;+Dm}!Q}np?T{!}FJLVO| zCO-_?N&qUtI+|I&7l4fDt}hgT`6VV~xvu74(GD>9+-@w>vdrEl`K@mrq7@LA0pbfv zm=-v-+7Op}m)))?chwL(MS@V|c8O=XFCn_Gs?p&!PVaIQC3S&X-xgvbg9@Hk8(F1t z-(@m7zlm!rBpHi|u`8}rjPtZxWlh8qm@vtldo6zje=`X(AH3yVGw&mklp{N&K4lvb zIcU$CPlwz&PaQ*%F?}oI^GvYXJ1t*~m<6fw!1&civi|^Ru8R-`92XIAg0X|(iPzEN$X@>d z((d7XM^`+pbZw-7P0R$B7XZ*Swfp?LEpG{}gAuQ&X=IbvL>=!Pmf1tBLu^if?QjX# z%m=1(xom4%ZcdgO0(QUAa=&XFX~TGHVxgKzv3l4Gv*E0i3RgUx4E7!?TSi=t<6=0K zJ~4@L&mX}qJvo-1mAuwdx5E@o7PDC0fW5r**6X)nbr}Ol(4K>!TOB1^YMN=@!1fX1 z2ciuPV5XK@a_r4xvV+_y;`mM#kJ6ZN8hGSy-9LG!xI2Z$INRA?BSA0P@Iq^;8**aW zR*z4;^4H08iAia(yIkMEr|{a7Jxmd}>zrM62r7A0tsv+^yuqs-JDLxM%XY&moYq*n z&h=XzEWGFgwj*+#h1a+{*(JmnRW31w&qrGjmI;_x_L0;3jn~N>bHde}C5}l)QVZaB ziV3ZxjOp|46%!nc#{^J8QyMJzPsG)c1TW~MaM;{5L6Zw`_z4Jnny5|K;*B0BR}PN3 z9%;z2mONT`T7F3Emk*fg+@$tKZ6rrnC%4TVkyb};T)Bs;J1Q&Kd|HK@NgCf!laScoRnd5J9Q#EaPR)54X1rgob-Uqsh?SPV$!s*08Db1+ z7Iy1l!>U@?!$G9idn7R6q)kppx zc;wgMlJMR;FE13rMn)MAiSP{t{{W+7<&|$7MULUP1tf*ZW(}mn8!OxiwwK=OSSBdw?aLY5O~^Y1yI^%DXA<`}G3eflb-|yRj&1&` z+7dyw`lgSHKQ*dx=L%ABRtY5)Pz{sfhF~>~{SWsG^%z(p-~y{EF!0UWWTB<8 z@RUfzjOtO@Sv*>Y6vSBL*`%7L8;QYCZ04JupeAFc%^m67LGxL299e1J0YG$6IktGr z2Xr$9B*P~uwqH>_+8{aFthBE@pt;&54O+RU1)-?$D-$9(=_#JHEW#akWYkYwu}m_GI+B%wcSbTx7s?mrw@=wH5LZ@g#1s; zJa)O=RAc-pgYgVaHT025D|KYSph&~y?fy$l;tys~RhY##BQqn6+{Gh9f%%JD@l~(j zTDmNzki_`M-EkpXQ*hmUU`Xc<_F>ss?ku(#O^vRYV}L#-GSKFcWvB7y z2vYGj8um)oHmQJ^W+UM}kC9(4mW!K4lD(#Ze9adv<%iUzV-J%qSM5DeUtFaSjgnDE9J5c9!npX$*uQ8h( ziZRfxufXtqmxifYcP#~5#_PG@El1i6MqDw?>05VZZEglx_gSbA3 z4%bXh&@>xaCn4Pd$9r~Lp9NNlXx&ctc;Pn#`A_>Rbb_Pdx!G*kP9gBOKKrezlB2@g z8jn0GP$O+dA_JeeXWei2 zPhuELY2z&ou?t7W*kN-`t!IL*FxtkuCGtvy=Eg+x#t+Niq;(H5ZZJyz4j*9mR ztTgNmjrpTG0D3K}4#Wmf#~mG@zeR1G%oky}?1E~X_Y9yPA`zK83qf-<>Y8j(J)p4V zx=vbS9H4=|{(fn;ScZ|VibVb?h|h-W5&%NbeWvgoCl_IF@G?9`7M?`*wZD}A04e+z z%Q&6|S%z0jNm~QqsEpXP!pSpA=9^rpG8sA&nu-bUxlTh(H&RpZ2efM9na*3)VAO`6 zi3V&)F}fX6#}$z1+o77enGTth*vgqV1sqY-IC!*7M~9ZTG>*|onBieM0o^R>w>tcm z-^{GV8{FXe$v#Q?XSJ_iOgQM3lWy|Ss4 zmd!98s$A}F8|E}rbkF7Dke>Q2!xTC2bL3K#uFXWl*dl|TjQJJH_^K{mD<_(!S!cu+ z-^1^`4r;KRTT9s>m@1DmNA9gyZ_!LjI*%OTbD}u(lvU)j1X* z_<(DPPg8LWlyCQ~5=FRhHa1&!1;ljK%>9~nmjSB|gnX9YhvLUGb2vD8t)8C~4qyS+ zb+koga~&w=jE)^gRcA)wF0F8JJwe~qJWHbhIA#Z`n0{u3mO9R{*%{4JfS(go^8jpC z9LwLb*LahK@XT$4?euX@=KL-q&K`$#&oN(P_+3k!>I#{uWd0X;+x^vG_CzUWY?4+s zcDGX=Ou4+T(OqGDBY^Ql4uOz=rQ+1y2_k8@u-Mq|e(PM~4`tZ)9V3ktan?hviw%#_ zbKFv%yAPewR#D9h+J5^8Rqv8{4Vu!W6%_KH5wdPP9B%STb{sM$*yRbPQL&=Ifjviu z%~0&L@V-OYjk;?Pz%hDA^PDcJ;@8oHt!k`QM$+oIC5(-jT1Ap@(oaMqVb>Nk&pK-iasbqj})oRNu z_=4KFd*FAXwVwK4Lu8bxcMBlNve>vQ6#F${q>7L=R3x#p)`5zQ)J}mjZpZQB*^^K^E3xIYY^i9-4Z*+{%mjcJ$$7NXy<)f(%jqYpO zZX6AY-*{h(1kPtn)eB9Ma&g{1Vp zi)V(WT$Yn7+x16l!~Xzw+jm6`E*=}*8V3*qT%_ZYKzb=jsJK{)U2?eYidqO8SfEc# z*NfX;=^3dm4Zbfmsqs}MRUS-Eh-9gNhh}Ki%^S4&E%S%*7;$_imbM}s$yu2B9-$tp zf|9AER6!h#Js!|jy;;D#J5`;}!ysvP<&DZ!B}cN%4nlbx=ueZbKNVRovRLyTRv>cU zOR+BRWfC^ry7nD+TByRCDnD7b{%aoHCq~*?=k>OWDo^TOH}lw36E6E3-6wiqWy} zW|+l2-G@3l#&irechIUl8-TI;s?aKFA59QGCrPHBOR_wrCOf4=?BqvDcAyjDP?6do zNbL%#u78LoDV%u$VnRqOk>e2=J)ly7z1LuorLn|(m05XhRr?h#AUWw;<)>jj>awk! z^-E%UKR24LtUe|^4wv`x4vrU9n3FQd)7imov{rr|;oXX}4K@-r8id+;8hVAQ@swcF zy5mqv(3GPWcw1Kw=^0j&9M(QbDNc!JAjz^2bE9~32@VF}j*F^rjy7s3A)Ut09ti;M z7f8dg2&avfew~%OC5YIWEIx^d>mnw>*FDp5Rej;8J6S&j_W-!)i28um^w)J?EkL`n z>Jl=@U8pNu$K(Q@KzFs*&OB8ysK#gN)*PWHgiIi;0p`qqg!y(`%u$Ic#(nMeRdwtU zkbLx270{P>fYl*#I%*cp!<*L7tj9;4OH&Tn)im=LP|UV%Uxl(s?BF;2nYZfcgGwbPgH|XhQRx+_ofr zP|LD{Me_X-THss{*2}@oH@=EMgSv~dkA*2w4cp9XMt1farl_hz!D-xX6EBUD0OHYQ zSy_g-2RbvM?5XolNl-xs-WR5 zmh9WBAF_!d%r;cjwA{Hyo25) z#O{pO>19D$IXq2<)NCD|Cm!I7{{Z-{oJd>nG~2kb{EC}p1Xk_wyy6`kA3{lx;Bozv2 z#Z45k9ZPPtM+nnT@|TTm{ zlx41e^(n|LI~+Qtc#WBTGS8?fY2o5)S$ffKzp@7 za^C%&QcB3Gw(KVxY^}>F0QswkDlQyLv^yimBvSZGfIBZ1nB3$9Dov^d=nNlFKImHtu78?{sJA zQQbCgjileJ;}0KJsKF*?xW{rXN4tEgU}Yd57j~P z24)uwB#jAlb{<_3A)LBa09@mK>~c#Lk@6A=zf8beWo3lO;4TkKm1ZPk$;vF{iB41G zmyot-i%$L5J1)^LE0R*WIz;Xdej zDjZ_%lVtC~Kt0n=H;jV4!>5-~ zD>_{}SU+udn7W*d%@bYNq2lb%MSE`BE)k-@!ppDkifa?+TR+537j)S^VQZJ>@ z9E9bXDEYOt@!I*G1-t6Iy-o!yVviBRfRih7)j%zopbZ?+*G<;t!+2z^fs#uYU~s;# zZT|o@b2c9=jU|n4o!mdV9UTp1Z?upx%qH4M(wLJEnYMK+PGk3Tw%?j7Xl8UkyvK9= z<5f7Qq~&;wKpnhyNz`E?KtPrjxado6e??JM!|iKa9bYR(*AWZ;Yv&F;q=u7<@d#wSFa(I=nTX z3tFnfuC6egcA|pJCz%lYr0P8i-LQ@#r>hMNkO%c^v>|NNxQlXtA9Z0CB3N@YxCMWM z@fZZhESJ*4>6*N5NZcJBqx4Ks@jH%^TwL|&t?9A2r8X}EuIc{(v_mC>9yM8W!&#vP z0o7T0eHBGDK&|427T+Z-WV=k-xap@|0b3ZT8HmcpwY}Q-hv1D3Ni8j7-s|7sm9HO1 zYNX1ZSO&~!zus%1KT&W|W1BcU%*VNVL&yIBQ+D~LV4bgZqbD}Ql{M}1aukvP4>8QW z{{ZI1T7UY2^Ja5R;xBW5>C7HB{%ug-A$-6+p^_7(cnJJLtf-P>C}40F_&_A9%qWpg z;_zBSZoLI;g0S7Lwu9AOwpU3RxC9im=Oa$QST1xNP-b?8BP;w$Y=4DC&Pz%zf^jy4C zTHEUka+GBTdWi|}d+M*fDVJ>;r#E-!xTpAeTp|BuXe2>I( zx}zPhng0M2=XpO>SVD;l1-q!0?4sbKWX&0KTti6!=u#Nx{_KB9RiN2SIcDc@NF%a- zlODurEz78LnmRwkt{~%D(9xb4+KqN`CW9>HRZ0+_X^UR6?n1Ebn{ki##~#gowCJVGs=O_bBF+5N-Eq%U5#T}Kg#?2p)pXMwl z}>vf|PT;&L%T<+jytUK7~|AJhNghZfyy;1ne%h=93KzfFN7}ucE7#eC!Tw zgRgRafn3wqxHL7##ipIpZ>VF-K|ZUU7p3Kr=_y^R%x=+1#Rca?86BdotUe%`qW#a! zG904!Xp@=wT-OeTLlJIx3GObnI*9W)g0m_6MJu9qqzx5)E^MWzric~H&kg%%laIw6 zyC}wN9Nx&3l3J;rs{X(C5xjIOG{hH{-*j2qmX+-bj&T^aF+ZxTTP_8086aOpWg#WR zSl;_3-Yn!IhV`_2HH6E=CH*6b#{U37y1))|n&Js>GB+HfO@m6s!Lfyea;jI9yK))R2j z4xjYL_e{4r&24@lZhX)7Q;~tqyRTtz0!Fp1$nslzwC}R{8yk-==+vXetFg0s@B2cpA$rR#Hdu0lO^PTsST9nFqFA0C6WqrR ztu`von;*quJ_@Iw>j3_0?uUzUIPJ~kym_>RuuyT6+8_6r;q+Ivoz0Xg{~$nuic; zT;~T_&KYjaE%g4$n6XU19g9KH;A(ztH~bSZVw}fYHhjIncps5dW+FxMKOwb+rE?Aa z9ioKTgBaI3d*^e5Tb+$2!})@9hp#nDqoi$bRl1BRL<+{{!*#bv`Qqvm+h+TCzxdua`0XwSt)2L2R zyWDHt9{Q-r?Gkf3_dzo`@s^*usO!bNK`7S-y|2E9biG?l5;(VFf&0d|cNbNR1(La^ zWhZzfx!9oQe^=gi0KmE#KKhd9e!Dk*6#->VLxPlr)Td4`H*3=;@{#!kcQrGg z3&?J+6M{&v)!+nUOyL}lGB^;~&8^q~K1txh9{V)>X2IKwMY55HmrWx9yO`1ocG@66 zRM=;|dx0Y5!0T?T3E111$Zl`1=JlBzLGX)%eZ3NuuC+XczyMiu^j{=m4dzwM;jw#& z^tw&VCjS7cfnmCdVeF#jsJXf!NHwx8Fte3*G~3o+`9iO7)q2YrRtV7u=v1ys$Y{Q( ztqlrXz|}YmwGy^Cfh3z~x;6vDETe&y6F5Fc3+vHdK`d}i%)mHbP*icsy2>ipWuh&9 zA1>n8$eD{D5do;x8Mvz@H*>Wp?W$|tzeISZ*kzOoA?BNe;G|l9jlTnxXD-IV8||3#KVdQn1{C zmqzJel61GIAUydFqtED{Wb(rwGBQqv=KTUq?$H39P-b<)^iHr|d$my~L?;ajud5oh zHAH>UMkiDmiAldT(6g4lP;HSnZ_MUQK{8-6QWq-B)v$TU&f<0VdYv@q zAMUnCj$=r3Nss@JakXZK( zVr;zTc5pX;Oa1mHqAmA;64Q6>x5V}5G1;ASZC!7{0=a|i@>^dC7aoh{3fO?CoBGb) zsYk|yS>gbNjFt#)VjGxsx(toi(Mla0JyJNse`zPlR^`=aWe2zf7db$iuLEVBN|1Ge zJryjqv$i;aB(90W_!Jm*JEV{Y&u+aHlWSffFu3V^gq!Lv;z`vvLyEE|7^*DjU7-a% zCKnWhNltSy+YpaUf=uAzMVLC2SJOjI25C*lK$e!Ftv&*NXk!y=U1u9zFv_+`yY3S( z&9+TPM0QHyv9LXrlyygwl)Ts?GOgLzPT=TMjjAnenswh!h;Yv%C*D7S{pyHtSXpyQqgjzRyznWmXMG|g=@Dg<->i?2xW;iNgN?3Iw*6D<6m@sY{ytuDz2Ll-}%)jta|$>*?uf zj55jM8d(~;XsjI@g^9Y;c;2?$Q=gz~z7 zvzSXbd6HcCs&8+gT{{h?A7iMyLD8Y5z4?dBy4dApZZfxRC%2xhB^IH!&u27Ulj?lP zKdK#6A;zG*y3G=cjezBYs%B`ksW$_|Ci;WmZ%>jj%+IvjS2LJJ`rI_8n9vKdkUUP` zxp(iNz|+E5SFV7Y=*tYgY6f0(umAuBYGgfdcOZ`Q%$0dW?uvK{5+e2F%f!54yLRTNHaHeD7 zn2U{pTBNf{DLLLxs*4(4-~zIVfsFxP;VnFuWi~fckdQS?y!JvS=x$w$faA%-RDK&~ z1pQpM+$e_9RM_3#2NP@m0L*ok)h{d=NCm*QW7gwFqE^%M8#Y!3_$J(G@Qwbca`;xxBmbrXuMop=>c)^Im5_<5KXv~9Jc|kAl%>nnAtHIJma;q6Zo*AImasr>^1)Y zxBQ`&G?!_80N1XI=AJ5|G<-pbLwy-5zC!Am%r^7vqGQyRgCEUB(e)Z2J~Qf+nlF-w zW>J31rw}=+3Gzyog&tT~F@S*~vIB`jDr_fUE=t|FXA9*<+2(JI>*%&1;s%-}rj_}u zbtzh$$4jiiOy>|t*PvELidm@Sjz5fef~92@V4OZl8_OL5x^h}Lg_}ry=Z8*hVoX9Oqu| zVcZmkE5u*686st`xJ*^?H8i+em>cg%vec;Y8R;q=EKVSm8rtcrADU+pfcakbfaekd zf_jQ84DL=bw>MW9KwI!Y&~4vEwc!uEQ#JcK zNXDa2-Z-tAH`%fr-*%(d;tBefJC{&MHY}F1~!M*xw{H_PGm zjD?0}k*o}9erC1WX}n~9h_Sp`?iU5b9d;fDpV1z~W(3^o-F544(5z=A)^?pp1G&+0 zPiyoaXW};0v9^w?JlD0ZMu+CKH)YLhSw+BR(^Z_8>8gQk+;sd9pB|efC1#}pM%jvk z5F}I-sd-rDF9)bR0ut{46cf6?;mj=0BW9Vt0kH13mixHFMv4Sx)Vj%e9CKNqlif2* zOkX2Insp-UW~ad1ZIPstzKZ(^;m5V@e47(*RYQ$nMvoDanV{v*q4GN~OM>SFfwhLn zZ^4?@*~I2Ol9S=rZbem7gF5F;6>PXmfwiyN$u0m`4K^(r}V)`r-qE@Qrzyebg zRFgUqa-*`6L%6a#D6P7eC5<}SSL0N|YGN2HY`LZ@1LApUH&pT$FdGsIS2@jcR$Hk+ z#Hcxua~L%XUvq3oLo3VHN2h?fz@3$oTj8+ii4gGsuBrSC*JTL~mrJ{UBqOqahVb`d zSk){I9t^?HJ(@Kuxl^#p23C*;nhk;Ku4zM|q=rYitq-V-T-Y9;jmZmUjouOfZh~)% zP2^S*0_Mq?#AzV5{!1j~sc3N*=L--1QWZ2!ai?)D2GJXK(Zi}eBxR;7t|rWi`fsTS zjEgKy0PB=q=lL8zL`IWxLq}J9{73aeouz~krojGXY97;YXJY&~WQCckX-_l`rMB@8 z$o!WJb8h2x;4O9TqTN@lOSI8KMgn@I=VDrB_)6Dt5d12+$U)%9=|69jBN{MTSpRD2kdV%J&_Z zF1E}U*@azM=3*}~GyedF%}M#K(u3LV7evONu{62AdD^?`i->S-EU}j|Jfp~Lxz81F z9PDh5fu-yl5EkTJs)=$8u0w0JMh-?}9`UkfIwv@5vT6zjW*L>EIWV%oC8c{u!U9$A zB`)%Am!012%b(*+%~;?@msGP;2R_Qax|~9EOGbP_S;WBT?0T(h7^5)GTnB`zr?$m; zk(VP!7OA+}8Z<{A3Sy2t(vKx?5CDLKFzS|lfk1KWx?i(gDYVpQ5|;eQ#zup-UjG19 zzCkF4Q1-gnZbh~HI`vx>%}jKyA(2`~JeGnDno7K*Xp<}MTnidOCw$MnzJXb`H)VLp zY`)xdE{aM`w}xti@1c*{4R5EG>Ml)mkx`{vB*}BzfQR zB?eX&kX%4I3vJkbWqSO`ZqRS>Y1aKe6s)1F86_b7k_8t9<^0OG&NH;2E>CO@Y02jT~MLSy2n!wvlcS=-1(%a<$-R_c}2+U=nw_}wO$+FeHKOSwyF|!*HpOxSZj1Ajry%W7C*O0)mp=65RTHO5ahZx7f5Ou(vpKo({VY)pYtAeq2CW!^|cGZUVrcE9|u{GQw*y zY&NEzmEn^)xtIyj#2t#^`D<|M=0PwDyT@W z(iNoy0w@6_2)r9C_x(K2{g&(fuJ6Zpeb2$&oij6M&dltb**)ty*&ErL23XGP8R`KP z6chk2_y_EL6lBp2@%97&LqidO4gdfq0HB}(C_u>W00{nqFM)^y6qEoZh|dHM8W1M) zfGoh_Uog3T>=#VtXL70xduV%9fImm7+}e*{=oI57jT&6ND3!4(!{jqzC{>e}gHq zf7(vA_dxbvzM}jElYK=lV9yHVo@M0uKtNVnMOx|~aiBK=%3nUA0o(od+dELsZ@=|{ z@Nd77eNJ)UXTPH${=hF-f}h+g02qJ=i2ifk`=|Rp251A62grqdrUVNW4Hdc2(a=!S z(9v66euvmNeZMU_Iy^T9&rV)n&vLXy=K2}TzK3@EZj zCC2dT&Vd6#kE)Z~7PY->9Y?E8Sz991WR?QnFt@&XdK1J)Z*vP?F3c%z z93Pd|R#&CfiI$_g7Hv3M@6rA z*@O#TGs@h@#T-(un@)~aeqfGkaQ5wY5nFvtk)-z|?ji>(ZY$Biok^R(nIb^986zTx z?#s+vrL`JS)-$rQ8A_Tz<1l=5R+~$@ zBJj>y@(HyWF0Q$W`-#&Gw!(eqljVxe*v6Gnd`L(O85h)MOc+rZ`NJ$S9C5;zxK{+-3 zlczn-H;N=r9R2En;0-U_1LDf&o{ttUIF$I*_p*2_tD26z_>tH*=eoHEoS!c$zHvW0 zr7VXpwvZEI))MyUvmgB&yBZ6vB|0mldOfpUSogW>gt{(W$<>&mkP!(w;P~pyO#G^U z%<|3;Oc+Go3XNVrIB(w0elDw?HlRvS7VeHou=BXc-NHna_aBlQc2J3Rwv_4Z?J?oQ zDiOcjsLqLwNQ~+&K5ZZ3bXiG6wXCYL_r1KBd{U>jx!fL5J!bqc4ncR0wmNK#ed3KK zCE&7ws!t|`*@=hK-8LvtNp%7`Y{qJzoN_Zl@C#z2Wa%Sn@IL za(<&_o2O)&=S|>7W9#?v_l9qU*S# zSnCQsFKBT+B+*$vu~zN&dW4`GKycrrG#XtO7yi_#t5ke91aBaJ_}OW~=}T`X8Yn$h z)C$?(&dcCz@v6sYvhF5TK6%vBkJxGDgU47M_p-nyE-TNdJM?VM*iS;SIpvKbqVu0} zFGEV|%}C~LU)#F4Dxvo@&QS}+5Z(ZF+T7XLrcFg>M}YzVd|$TE^LJqb>(b}mLy{7o zq~sjh0}L zRYf~dZ!48Q$NTzT=0m7?olw1!iIt;?tA~Ys@=gyVel@Phzf+hBvEfWM;mWwb{Dv{f z|Elslsd3%d?e5E5xFW4xCw9Ilc7AyX`dQi`r|OO{)vDQdEFKLaY}DzegEn~Y1;mRVtAhijrFB2?aZ@+ z9!qL$Zx$*__5kz7w5j}YpJJ%@;u+RYiD%w>Up;}8j1gtyqpY}WcKN%lOAWWJKcZSZ zJnC3&KUL)UMq2N0af%Jj(a`KOc;6dMq~ zZ+_DKNsE)F{madHvWv{E{TAaHF$2BS&h4Z-X_Dv9`e#M&0qTrCaUBs!HODwzh^BrL z3ZWk!tz=^u=8euU<$G9P;YzHRy_m5!{&fpT2o~)4v*aqt1DQ#`@Q(mYM$Ra zvseBzxx1g7_kd_?U8=xJ8_PVQ^VZ!(EIWM1yZV#eGI%vJlQnMCiH7UWo_WQ}ZpG!&HPDGau%J#9$4}W7pQ5qM0I^(@ zeFAeu%j&HS@^B9yk<*{NT~tCZENjKK5T;Knea_U72@y;oNc%O6dt>Lz2sZkKPv`uF zrkNn@ypeUL?CU2Bmu@Ol5!9ROHXY$`JU^niq~7{MP4C&v0>bk|R`^RjI@L;`eSiU5 zB#~y)o0n<&JqVVM*SFKPTBG||;9L8V%ezC`;!uf+RmoMF0DbDpJwV&sSiFm4l>UNy z0lml?#c4xmU~tQe&(||e{CjP(!q0Dvbf%!O5>-wj<>7&nHH|=Juj#pw#KKO7>%1^6d9W>W-UIW_+;LM^#Lh{ zj$Q4rOn6J{u!FnLjO{pkcGao3gv_fx`-L&p%1l=o7O#cSAtT7Yn&8BUVq3~Tp^)vIy&O7yQ znBTvk6Y@Ct63JkY+->3GY-sk75!+Xby=Z-nTIXtVOnJ|ZnA00qf$df07Yn}62DIU9 zBB^tcqo?!YPL7=%+4vmgy5RisDn;8NWlGu8VacJDR_Sm!-2?3(i8#7<`aCP$x^j=- z^$lL2CaK)j4P@ksQY#W<7mABq8RkY};0pKF#o@I{9FIJoGmUsWwd6 zz`5kF9hT66qm}e z-4zXRa!b13Uw4bRdD<$)My$&&BjmL7H@1vG|HApj>gb1=lWx4Pgp2N+k>R{LoeeKN zYuS)cp7G^2``8`D(Gy9d-lABPytPiuH6PJe5
StringAPI Object
"pods"Pod
"servicesService
"services"Service
"replicationcontrollers"ReplicationController
"resourcequotas"ResourceQuota
"secrets"Secret