From 044d11de32c8424de7f44295586afaf7bb412091 Mon Sep 17 00:00:00 2001 From: Christopher De Vries Date: Thu, 13 Aug 2020 08:59:24 -0400 Subject: [PATCH 01/80] Replace master/slave with primary/secondary where possible --- .../run-replicated-stateful-application.md | 54 +++++++++---------- .../application/mysql/mysql-configmap.yaml | 8 +-- .../application/mysql/mysql-services.yaml | 2 +- .../application/mysql/mysql-statefulset.yaml | 10 ++-- 4 files changed, 37 insertions(+), 37 deletions(-) diff --git a/content/en/docs/tasks/run-application/run-replicated-stateful-application.md b/content/en/docs/tasks/run-application/run-replicated-stateful-application.md index a5346f0272..5dad8f2027 100644 --- a/content/en/docs/tasks/run-application/run-replicated-stateful-application.md +++ b/content/en/docs/tasks/run-application/run-replicated-stateful-application.md @@ -15,7 +15,7 @@ weight: 30 This page shows how to run a replicated stateful application using a [StatefulSet](/docs/concepts/workloads/controllers/statefulset/) controller. -The example is a MySQL single-master topology with multiple slaves running +The example is a MySQL single-primary topology with multiple secondaries running asynchronous replication. {{< note >}} @@ -69,9 +69,9 @@ kubectl apply -f https://k8s.io/examples/application/mysql/mysql-configmap.yaml ``` This ConfigMap provides `my.cnf` overrides that let you independently control -configuration on the MySQL master and slaves. -In this case, you want the master to be able to serve replication logs to slaves -and you want slaves to reject any writes that don't come via replication. +configuration on the MySQL primary and secondaries. +In this case, you want the primary to be able to serve replication logs to secondaries +and you want secondaries to reject any writes that don't come via replication. There's nothing special about the ConfigMap itself that causes different portions to apply to different Pods. @@ -96,12 +96,12 @@ cluster and namespace. The Client Service, called `mysql-read`, is a normal Service with its own cluster IP that distributes connections across all MySQL Pods that report -being Ready. The set of potential endpoints includes the MySQL master and all -slaves. +being Ready. The set of potential endpoints includes the MySQL primary and all +secondaries. Note that only read queries can use the load-balanced Client Service. -Because there is only one MySQL master, clients should connect directly to the -MySQL master Pod (through its DNS entry within the Headless Service) to execute +Because there is only one MySQL primary, clients should connect directly to the +MySQL primary Pod (through its DNS entry within the Headless Service) to execute writes. ### StatefulSet @@ -167,33 +167,33 @@ This translates the unique, stable identity provided by the StatefulSet controller into the domain of MySQL server IDs, which require the same properties. -The script in the `init-mysql` container also applies either `master.cnf` or -`slave.cnf` from the ConfigMap by copying the contents into `conf.d`. -Because the example topology consists of a single MySQL master and any number of -slaves, the script simply assigns ordinal `0` to be the master, and everyone -else to be slaves. +The script in the `init-mysql` container also applies either `primary.cnf` or +`secondary.cnf` from the ConfigMap by copying the contents into `conf.d`. +Because the example topology consists of a single MySQL primary and any number of +secondaries, the script simply assigns ordinal `0` to be the primary, and everyone +else to be secondaries. Combined with the StatefulSet controller's [deployment order guarantee](/docs/concepts/workloads/controllers/statefulset/#deployment-and-scaling-guarantees/), -this ensures the MySQL master is Ready before creating slaves, so they can begin +this ensures the MySQL primary is Ready before creating secondaries, so they can begin replicating. ### Cloning existing data -In general, when a new Pod joins the set as a slave, it must assume the MySQL -master might already have data on it. It also must assume that the replication +In general, when a new Pod joins the set as a secondary, it must assume the MySQL +primary might already have data on it. It also must assume that the replication logs might not go all the way back to the beginning of time. These conservative assumptions are the key to allow a running StatefulSet to scale up and down over time, rather than being fixed at its initial size. The second Init Container, named `clone-mysql`, performs a clone operation on -a slave Pod the first time it starts up on an empty PersistentVolume. +a secondary Pod the first time it starts up on an empty PersistentVolume. That means it copies all existing data from another running Pod, -so its local state is consistent enough to begin replicating from the master. +so its local state is consistent enough to begin replicating from the primary. MySQL itself does not provide a mechanism to do this, so the example uses a popular open-source tool called Percona XtraBackup. During the clone, the source MySQL server might suffer reduced performance. -To minimize impact on the MySQL master, the script instructs each Pod to clone +To minimize impact on the MySQL primary, the script instructs each Pod to clone from the Pod whose ordinal index is one lower. This works because the StatefulSet controller always ensures Pod `N` is Ready before starting Pod `N+1`. @@ -206,15 +206,15 @@ server, and an `xtrabackup` container that acts as a [sidecar](https://kubernetes.io/blog/2015/06/the-distributed-system-toolkit-patterns). The `xtrabackup` sidecar looks at the cloned data files and determines if -it's necessary to initialize MySQL replication on the slave. +it's necessary to initialize MySQL replication on the secondary. If so, it waits for `mysqld` to be ready and then executes the `CHANGE MASTER TO` and `START SLAVE` commands with replication parameters extracted from the XtraBackup clone files. -Once a slave begins replication, it remembers its MySQL master and +Once a secondary begins replication, it remembers its MySQL primary and reconnects automatically if the server restarts or the connection dies. -Also, because slaves look for the master at its stable DNS name -(`mysql-0.mysql`), they automatically find the master even if it gets a new +Also, because secondaries look for the primary at its stable DNS name +(`mysql-0.mysql`), they automatically find the primary even if it gets a new Pod IP due to being rescheduled. Lastly, after starting replication, the `xtrabackup` container listens for @@ -224,7 +224,7 @@ case the next Pod loses its PersistentVolumeClaim and needs to redo the clone. ## Sending client traffic -You can send test queries to the MySQL master (hostname `mysql-0.mysql`) +You can send test queries to the MySQL primary (hostname `mysql-0.mysql`) by running a temporary container with the `mysql:5.7` image and running the `mysql` client binary. @@ -291,7 +291,7 @@ it running in another window so you can see the effects of the following steps. ## Simulating Pod and Node downtime -To demonstrate the increased availability of reading from the pool of slaves +To demonstrate the increased availability of reading from the pool of secondaries instead of a single server, keep the `SELECT @@server_id` loop from above running while you force a Pod out of the Ready state. @@ -409,9 +409,9 @@ Now uncordon the Node to return it to a normal state: kubectl uncordon ``` -## Scaling the number of slaves +## Scaling the number of secondaries -With MySQL replication, you can scale your read query capacity by adding slaves. +With MySQL replication, you can scale your read query capacity by adding secondaries. With StatefulSet, you can do this with a single command: ```shell diff --git a/content/en/examples/application/mysql/mysql-configmap.yaml b/content/en/examples/application/mysql/mysql-configmap.yaml index 46d34e422c..297971515f 100644 --- a/content/en/examples/application/mysql/mysql-configmap.yaml +++ b/content/en/examples/application/mysql/mysql-configmap.yaml @@ -5,12 +5,12 @@ metadata: labels: app: mysql data: - master.cnf: | - # Apply this config only on the master. + primary.cnf: | + # Apply this config only on the primary. [mysqld] log-bin - slave.cnf: | - # Apply this config only on slaves. + secondary.cnf: | + # Apply this config only on secondaries. [mysqld] super-read-only diff --git a/content/en/examples/application/mysql/mysql-services.yaml b/content/en/examples/application/mysql/mysql-services.yaml index f538992566..0cd76d91c6 100644 --- a/content/en/examples/application/mysql/mysql-services.yaml +++ b/content/en/examples/application/mysql/mysql-services.yaml @@ -14,7 +14,7 @@ spec: app: mysql --- # Client service for connecting to any MySQL instance for reads. -# For writes, you must instead connect to the master: mysql-0.mysql. +# For writes, you must instead connect to the primary: mysql-0.mysql. apiVersion: v1 kind: Service metadata: diff --git a/content/en/examples/application/mysql/mysql-statefulset.yaml b/content/en/examples/application/mysql/mysql-statefulset.yaml index b69af02c59..3c2853e945 100644 --- a/content/en/examples/application/mysql/mysql-statefulset.yaml +++ b/content/en/examples/application/mysql/mysql-statefulset.yaml @@ -29,9 +29,9 @@ spec: echo server-id=$((100 + $ordinal)) >> /mnt/conf.d/server-id.cnf # Copy appropriate conf.d files from config-map to emptyDir. if [[ $ordinal -eq 0 ]]; then - cp /mnt/config-map/master.cnf /mnt/conf.d/ + cp /mnt/config-map/primary.cnf /mnt/conf.d/ else - cp /mnt/config-map/slave.cnf /mnt/conf.d/ + cp /mnt/config-map/secondary.cnf /mnt/conf.d/ fi volumeMounts: - name: conf @@ -47,7 +47,7 @@ spec: set -ex # Skip the clone if data already exists. [[ -d /var/lib/mysql/mysql ]] && exit 0 - # Skip the clone on master (ordinal index 0). + # Skip the clone on primary (ordinal index 0). [[ `hostname` =~ -([0-9]+)$ ]] || exit 1 ordinal=${BASH_REMATCH[1]} [[ $ordinal -eq 0 ]] && exit 0 @@ -108,12 +108,12 @@ spec: # Determine binlog position of cloned data, if any. if [[ -f xtrabackup_slave_info && "x$( change_master_to.sql.in # Ignore xtrabackup_binlog_info in this case (it's useless). rm -f xtrabackup_slave_info xtrabackup_binlog_info elif [[ -f xtrabackup_binlog_info ]]; then - # We're cloning directly from master. Parse binlog position. + # We're cloning directly from primary. Parse binlog position. [[ `cat xtrabackup_binlog_info` =~ ^(.*?)[[:space:]]+(.*?)$ ]] || exit 1 rm -f xtrabackup_binlog_info xtrabackup_slave_info echo "CHANGE MASTER TO MASTER_LOG_FILE='${BASH_REMATCH[1]}',\ From 4bb76cd0fba04f7336b5dcffaac734a59dd526e1 Mon Sep 17 00:00:00 2001 From: Christopher De Vries Date: Fri, 14 Aug 2020 08:04:50 -0400 Subject: [PATCH 02/80] Change secondary to replica and use primary as an adjective consistently --- .../run-replicated-stateful-application.md | 52 +++++++++---------- .../application/mysql/mysql-configmap.yaml | 4 +- .../application/mysql/mysql-statefulset.yaml | 4 +- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/content/en/docs/tasks/run-application/run-replicated-stateful-application.md b/content/en/docs/tasks/run-application/run-replicated-stateful-application.md index 5dad8f2027..4bcc2e8582 100644 --- a/content/en/docs/tasks/run-application/run-replicated-stateful-application.md +++ b/content/en/docs/tasks/run-application/run-replicated-stateful-application.md @@ -15,7 +15,7 @@ weight: 30 This page shows how to run a replicated stateful application using a [StatefulSet](/docs/concepts/workloads/controllers/statefulset/) controller. -The example is a MySQL single-primary topology with multiple secondaries running +The example is a MySQL single-primary topology with multiple replicas running asynchronous replication. {{< note >}} @@ -69,9 +69,9 @@ kubectl apply -f https://k8s.io/examples/application/mysql/mysql-configmap.yaml ``` This ConfigMap provides `my.cnf` overrides that let you independently control -configuration on the MySQL primary and secondaries. -In this case, you want the primary to be able to serve replication logs to secondaries -and you want secondaries to reject any writes that don't come via replication. +configuration on the primary MySQL server and replicas. +In this case, you want the primary server to be able to serve replication logs to replicas +and you want replicas to reject any writes that don't come via replication. There's nothing special about the ConfigMap itself that causes different portions to apply to different Pods. @@ -96,12 +96,12 @@ cluster and namespace. The Client Service, called `mysql-read`, is a normal Service with its own cluster IP that distributes connections across all MySQL Pods that report -being Ready. The set of potential endpoints includes the MySQL primary and all -secondaries. +being Ready. The set of potential endpoints includes the primary MySQL server and all +replicas. Note that only read queries can use the load-balanced Client Service. -Because there is only one MySQL primary, clients should connect directly to the -MySQL primary Pod (through its DNS entry within the Headless Service) to execute +Because there is only one primary MySQL server, clients should connect directly to the +primary MySQL Pod (through its DNS entry within the Headless Service) to execute writes. ### StatefulSet @@ -168,32 +168,32 @@ controller into the domain of MySQL server IDs, which require the same properties. The script in the `init-mysql` container also applies either `primary.cnf` or -`secondary.cnf` from the ConfigMap by copying the contents into `conf.d`. -Because the example topology consists of a single MySQL primary and any number of -secondaries, the script simply assigns ordinal `0` to be the primary, and everyone -else to be secondaries. +`replica.cnf` from the ConfigMap by copying the contents into `conf.d`. +Because the example topology consists of a single primary MySQL server and any number of +replicas, the script simply assigns ordinal `0` to be the primary server, and everyone +else to be replicas. Combined with the StatefulSet controller's [deployment order guarantee](/docs/concepts/workloads/controllers/statefulset/#deployment-and-scaling-guarantees/), -this ensures the MySQL primary is Ready before creating secondaries, so they can begin +this ensures the primary MySQL server is Ready before creating replicas, so they can begin replicating. ### Cloning existing data -In general, when a new Pod joins the set as a secondary, it must assume the MySQL -primary might already have data on it. It also must assume that the replication +In general, when a new Pod joins the set as a replica, it must assume the primary MySQL +server might already have data on it. It also must assume that the replication logs might not go all the way back to the beginning of time. These conservative assumptions are the key to allow a running StatefulSet to scale up and down over time, rather than being fixed at its initial size. The second Init Container, named `clone-mysql`, performs a clone operation on -a secondary Pod the first time it starts up on an empty PersistentVolume. +a replica Pod the first time it starts up on an empty PersistentVolume. That means it copies all existing data from another running Pod, -so its local state is consistent enough to begin replicating from the primary. +so its local state is consistent enough to begin replicating from the primary server. MySQL itself does not provide a mechanism to do this, so the example uses a popular open-source tool called Percona XtraBackup. During the clone, the source MySQL server might suffer reduced performance. -To minimize impact on the MySQL primary, the script instructs each Pod to clone +To minimize impact on the primary MySQL server, the script instructs each Pod to clone from the Pod whose ordinal index is one lower. This works because the StatefulSet controller always ensures Pod `N` is Ready before starting Pod `N+1`. @@ -206,15 +206,15 @@ server, and an `xtrabackup` container that acts as a [sidecar](https://kubernetes.io/blog/2015/06/the-distributed-system-toolkit-patterns). The `xtrabackup` sidecar looks at the cloned data files and determines if -it's necessary to initialize MySQL replication on the secondary. +it's necessary to initialize MySQL replication on the replica. If so, it waits for `mysqld` to be ready and then executes the `CHANGE MASTER TO` and `START SLAVE` commands with replication parameters extracted from the XtraBackup clone files. -Once a secondary begins replication, it remembers its MySQL primary and +Once a replica begins replication, it remembers its primary MySQL server and reconnects automatically if the server restarts or the connection dies. -Also, because secondaries look for the primary at its stable DNS name -(`mysql-0.mysql`), they automatically find the primary even if it gets a new +Also, because replicas look for the primary server at its stable DNS name +(`mysql-0.mysql`), they automatically find the primary server even if it gets a new Pod IP due to being rescheduled. Lastly, after starting replication, the `xtrabackup` container listens for @@ -224,7 +224,7 @@ case the next Pod loses its PersistentVolumeClaim and needs to redo the clone. ## Sending client traffic -You can send test queries to the MySQL primary (hostname `mysql-0.mysql`) +You can send test queries to the primary MySQL server (hostname `mysql-0.mysql`) by running a temporary container with the `mysql:5.7` image and running the `mysql` client binary. @@ -291,7 +291,7 @@ it running in another window so you can see the effects of the following steps. ## Simulating Pod and Node downtime -To demonstrate the increased availability of reading from the pool of secondaries +To demonstrate the increased availability of reading from the pool of replicas instead of a single server, keep the `SELECT @@server_id` loop from above running while you force a Pod out of the Ready state. @@ -409,9 +409,9 @@ Now uncordon the Node to return it to a normal state: kubectl uncordon ``` -## Scaling the number of secondaries +## Scaling the number of replicas -With MySQL replication, you can scale your read query capacity by adding secondaries. +With MySQL replication, you can scale your read query capacity by adding replicas. With StatefulSet, you can do this with a single command: ```shell diff --git a/content/en/examples/application/mysql/mysql-configmap.yaml b/content/en/examples/application/mysql/mysql-configmap.yaml index 297971515f..519334bc82 100644 --- a/content/en/examples/application/mysql/mysql-configmap.yaml +++ b/content/en/examples/application/mysql/mysql-configmap.yaml @@ -9,8 +9,8 @@ data: # Apply this config only on the primary. [mysqld] log-bin - secondary.cnf: | - # Apply this config only on secondaries. + replica.cnf: | + # Apply this config only on replicas. [mysqld] super-read-only diff --git a/content/en/examples/application/mysql/mysql-statefulset.yaml b/content/en/examples/application/mysql/mysql-statefulset.yaml index 3c2853e945..bb61537fcf 100644 --- a/content/en/examples/application/mysql/mysql-statefulset.yaml +++ b/content/en/examples/application/mysql/mysql-statefulset.yaml @@ -31,7 +31,7 @@ spec: if [[ $ordinal -eq 0 ]]; then cp /mnt/config-map/primary.cnf /mnt/conf.d/ else - cp /mnt/config-map/secondary.cnf /mnt/conf.d/ + cp /mnt/config-map/replica.cnf /mnt/conf.d/ fi volumeMounts: - name: conf @@ -108,7 +108,7 @@ spec: # Determine binlog position of cloned data, if any. if [[ -f xtrabackup_slave_info && "x$( change_master_to.sql.in # Ignore xtrabackup_binlog_info in this case (it's useless). rm -f xtrabackup_slave_info xtrabackup_binlog_info From b7f8f824b0085f7e1028ee374ec4fe523d63b12a Mon Sep 17 00:00:00 2001 From: Christopher De Vries Date: Thu, 27 Aug 2020 12:46:25 -0400 Subject: [PATCH 03/80] Incorporate suggested language change from Tim Bannister with a couple changes. --- .../run-application/run-replicated-stateful-application.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/content/en/docs/tasks/run-application/run-replicated-stateful-application.md b/content/en/docs/tasks/run-application/run-replicated-stateful-application.md index 4bcc2e8582..f1738ff53e 100644 --- a/content/en/docs/tasks/run-application/run-replicated-stateful-application.md +++ b/content/en/docs/tasks/run-application/run-replicated-stateful-application.md @@ -15,8 +15,9 @@ weight: 30 This page shows how to run a replicated stateful application using a [StatefulSet](/docs/concepts/workloads/controllers/statefulset/) controller. -The example is a MySQL single-primary topology with multiple replicas running -asynchronous replication. +This application is a replicated MySQL database. The example topology has a +single primary server and multiple replicas, using asynchronous row-based +replication. {{< note >}} **This is not a production configuration**. MySQL settings remain on insecure defaults to keep the focus From 225be5b8c8c757090f3c23b8e0377bb312a0c15f Mon Sep 17 00:00:00 2001 From: Tim Bannister Date: Mon, 12 Oct 2020 17:50:49 +0100 Subject: [PATCH 04/80] Improve explanation about pod template updates - (try to) imply that pod templates are part of an owning resource, not part of the pod itself - explain that the owning resource must replace Pods if the pod template changes --- .../en/docs/concepts/workloads/pods/_index.md | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/content/en/docs/concepts/workloads/pods/_index.md b/content/en/docs/concepts/workloads/pods/_index.md index 9247cd3a0d..25f633736b 100644 --- a/content/en/docs/concepts/workloads/pods/_index.md +++ b/content/en/docs/concepts/workloads/pods/_index.md @@ -172,14 +172,18 @@ spec: # The pod template ends here ``` -Modifying the pod template or switching to a new pod template has no effect on the -Pods that already exist. Pods do not receive template updates directly. Instead, -a new Pod is created to match the revised pod template. +Modifying the pod template or switching to a new pod template has no direct effect +on the Pods that already exist. If you change the pod template for a workload +resource, that resource needs to create replacement Pods that use the updated template. -For example, the deployment controller ensures that the running Pods match the current -pod template for each Deployment object. If the template is updated, the Deployment has -to remove the existing Pods and create new Pods based on the updated template. Each workload -resource implements its own rules for handling changes to the Pod template. +For example, the StatefulSet controller ensures that the running Pods match the current +pod template for each StatefulSet object. If you edit the StatefulSet to change its pod +template, the StatefulSet starts to create new Pods based on the updated template. +Eventually, all of the old Pods are replaced with new Pods, and the update is complete. + +Each workload resource implements its own rules for handling changes to the Pod template. +If you want to read more about StatefulSet specifically, read +[Update strategy](/docs/tutorials/stateful-application/basic-stateful-set/#updating-statefulsets) in the StatefulSet Basics tutorial. On Nodes, the {{< glossary_tooltip term_id="kubelet" text="kubelet" >}} does not directly observe or manage any of the details around pod templates and updates; those From 5819f16c8a391bfe4a448d7b199f3bb8495ba90b Mon Sep 17 00:00:00 2001 From: markruler Date: Tue, 20 Oct 2020 20:59:30 +0900 Subject: [PATCH 05/80] Update i18n strings and ordering the entries --- i18n/ko.toml | 285 ++++++++++++++++++++++++++++----------------------- 1 file changed, 158 insertions(+), 127 deletions(-) diff --git a/i18n/ko.toml b/i18n/ko.toml index 25647b81c0..f79f689b88 100644 --- a/i18n/ko.toml +++ b/i18n/ko.toml @@ -1,4 +1,40 @@ # i18n strings for the Korean translation. +# NOTE: Please keep the entries in alphabetical order when editing +[announcement_title] +other = "Black lives matter." + +[announcement_message] +other = "우리는 흑인 공동체를 지지합니다.
인종차별은 용납될 수 없습니다.
인종차별은 [쿠버네티스 프로젝트의 핵심 가치](https://git.k8s.io/community/values.md)에 상충되며 우리 공동체는 이를 용인하지 않습니다." + +[caution] +other = "주의:" + +[cleanup_heading] +other = "정리하기" + +[community_events_calendar] +other = "이벤트 캘린더" + +[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" + +[deprecation_title] +other = "해당 문서의 쿠버네티스 버전:" [deprecation_warning] other = " 문서는 더 이상 적극적으로 관리되지 않음. 현재 보고있는 문서는 정적 스냅샷임. 최신 문서를 위해서는, 다음을 참고. " @@ -6,20 +42,32 @@ other = " 문서는 더 이상 적극적으로 관리되지 않음. 현재 보 [deprecation_file_warning] other = "사용 중단됨(deprecated)" -[objectives_heading] -other = "목적" +[docs_label_browse] +other = "문서 둘러보기" -[cleanup_heading] -other = "정리하기" +[docs_label_contributors] +other = "컨트리뷰터" -[prerequisites_heading] -other = "시작하기 전에" +[docs_label_i_am] +other = "나는..." -[subscribe_button] -other = "구독" +[docs_label_users] +other = "사용자" -[whatsnext_heading] -other = "다음 내용" +[docs_version_current] +other = "(현재 문서)" + +[docs_version_latest_heading] +other = "최신 버전" + +[docs_version_other_heading] +other = "이전 버전" + +[error_404_were_you_looking_for] +other = "무엇과 관련된 정보를 찾으시나요?" + +[examples_heading] +other = "예시" [feedback_heading] other = "피드백" @@ -33,51 +81,87 @@ other = "네" [feedback_no] other = "아니요" +[input_placeholder_email_address] +other = "전자 우편 주소" + [latest_version] other = "최신 버전." -[version_check_mustbe] -other = "쿠버네티스 서버의 버전은 다음과 같아야 함. 버전: " +[layouts_blog_pager_prev] +other = "<< 이전" -[version_check_mustbeorlater] -other = "쿠버네티스 서버의 버전은 다음과 같거나 더 높아야 함. 버전: " +[layouts_blog_pager_next] +other = "다음 >>" -[version_check_tocheck] -other = "버전 확인을 위해서, 다음 커맨드를 실행 " +[layouts_case_studies_list_tell] +other = "당신의 이야기를 들려주세요." -[caution] -other = "주의:" +[layouts_docs_glossary_aka] +other = "별칭" -[note] -other = "참고:" +[layouts_docs_glossary_description] +other = "이 용어집은 쿠버네티스 용어의 종합적이고 표준화된 리스트를 제공한다. 용어집은 K8s 고유의 기술 용어 뿐만 아니라, 맥락을 이해하는데 유용한 더 일반적인 용어도 포함한다. " -[warning] -other = "경고:" +[layouts_docs_glossary_deselect_all] +other = "모두 선택 해제" -[main_read_about] -other = "읽어 보기" +[layouts_docs_glossary_click_details_after] +other = "표시를 클릭하면 각 용어에 대한 더 자세한 설명을 볼 수 있다." -[main_read_more] -other = "더 읽기" +[layouts_docs_glossary_click_details_before] +other = "다음" -[main_github_invite] -other = "코어 쿠버네티스 코드 베이스를 살펴보는데 관심이 있으십니까?" +[layouts_docs_glossary_filter] +other = "태그에 따라 용어 필터링" -[main_github_view_on] -other = "GitHub에서 보기" +[layouts_docs_glossary_select_all] +other = "모두 선택" -[main_github_create_an_issue] -other = "이슈 생성하기" +[layouts_docs_partials_feedback_improvement] +other = "개선 제안이 가능합니다." + +[layouts_docs_partials_feedback_issue] +other = "원한다면 GitHub 리포지터리에 이슈를 열어서" + +[layouts_docs_partials_feedback_or] +other = "또는" + +[layouts_docs_partials_feedback_problem] +other = "문제 리포트" + +[layouts_docs_partials_feedback_thanks] +other = "피드백 감사합니다. 쿠버네티스 사용 방법에 대해서 구체적이고 답변 가능한 질문이 있다면, 다음 링크에서 질문하십시오." + +[layouts_docs_search_fetching] +other = "결과를 가져오는 중.." + +[main_by] +other = ", 다음 변경에 의해서:" + +[main_cncf_project] +other = """쿠버네티스는 CNCF graduated 프로젝트입니다.

""" [main_community_explore] other = "커뮤니티 둘러보기" +[main_contribute] +other = "기여하기" + +[main_copyright_notice] +other = """The Linux Foundation ®. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page""" + +[main_documentation_license] +other = """The Kubernetes Authors | Documentation Distributed under CC BY 4.0""" + +[main_github_invite] +other = "쿠버네티스 핵심 코드 베이스를 살펴보는데 관심이 있으십니까?" + +[main_github_view_on] +other = "GitHub에서 보기" + [main_kubernetes_features] other = "쿠버네티스 기능" -[main_cncf_project] -other = """쿠버네티스는 CNCF graduated 프로젝트입니다.

""" - [main_kubeweekly_baseline] other = "최신 쿠버네티스 뉴스 수신에 관심이 있으십니까? KubeWeekly를 신청하세요." @@ -87,115 +171,62 @@ other = "과거 뉴스레터 보기" [main_kubeweekly_signup] other = "구독하기" -[main_contribute] -other = "기여하기" - -[main_edit_this_page] -other = "페이지 편집하기" - [main_page_history] other ="페이지 변경 이력" [main_page_last_modified_on] other = "최종 수정일시" -[main_by] -other = ", 다음 변경에 의해서:" +[main_read_about] +other = "읽어 보기" -[main_documentation_license] -other = """The Kubernetes Authors | Documentation Distributed under CC BY 4.0""" +[main_read_more] +other = "더 읽기" -[main_copyright_notice] -other = """The Linux Foundation ®. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page""" +[note] +other = "참고:" -# Labels for the docs portal home page. -[docs_label_browse] -other = "문서 둘러보기" +[objectives_heading] +other = "목적" -[docs_label_contributors] -other = "컨트리뷰터" +[options_heading] +other = "옵션" -[docs_label_users] -other = "사용자" +[post_create_issue] +other = "이슈 생성" -[docs_label_i_am] -other = "나는..." +[prerequisites_heading] +other = "시작하기 전에" -# layouts > blog > pager +[seealso_heading] +other = "더 보기" -[layouts_blog_pager_prev] -other = "<< 이전" +[subscribe_button] +other = "구독" -[layouts_blog_pager_next] -other = "다음 >>" +[synopsis_heading] +other = "시놉시스" -# layouts > blog > list +[thirdparty_message] +other = """이 섹션은 쿠버네티스에 필요한 기능을 제공하는 써드파티 프로젝트와 관련이 있다. 쿠버네티스 프로젝트 작성자는 써드파티 프로젝트에 책임이 없다. 이 페이지는 CNCF 웹사이트 가이드라인에 따라 프로젝트를 알파벳 순으로 나열한다. 이 목록에 프로젝트를 추가하려면 변경사항을 제출하기 전에 콘텐츠 가이드를 읽어본다.""" -[layouts_case_studies_list_tell] -other = "당신의 이야기를 들려주세요." - -# layouts > docs > glossary - -[layouts_docs_glossary_description] -other = "이 용어집은 쿠버네티스 용어의 종합적이고 표준화된 리스트를 제공한다. 용어집은 K8s 고유의 기술 용어 뿐만 아니라, 맥락을 이해하는데 유용한 더 일반적인 용어도 포함한다. " - -[layouts_docs_glossary_filter] -other = "태그에 따라 용어 필터링" - -[layouts_docs_glossary_select_all] -other = "모두 선택" - -[layouts_docs_glossary_deselect_all] -other = "모두 선택 해제" - -[layouts_docs_glossary_aka] -other = "또 다른 명칭" - -[layouts_docs_glossary_click_details_before] -other = "다음" - -[layouts_docs_glossary_click_details_after] -other = "표시를 클릭하면 각 용어에 대한 더 자세한 설명을 볼 수 있다." - -# layouts > docs > search - -[layouts_docs_search_fetching] -other = "결과를 가져오는 중.." - -# layouts > partial > feedback - -[layouts_docs_partials_feedback_thanks] -other = "피드백 감사합니다. 쿠버네티스 사용 방법에 대해서 구체적이고 답변 가능한 질문이 있다면, 다음 링크에서 질문하십시오." - -[layouts_docs_partials_feedback_issue] -other = "원한다면 GitHub 리포지터리에 이슈를 열어서" - -[layouts_docs_partials_feedback_problem] -other = "문제 리포트" - -[layouts_docs_partials_feedback_or] -other = "또는" - -[layouts_docs_partials_feedback_improvement] -other = "개선 제안이 가능합니다." - -# 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 = "이벤트 캘린더" - -# UI elements [ui_search_placeholder] other = "검색하기" -[input_placeholder_email_address] -other = "전자 우편 주소" +[version_check_mustbe] +other = "쿠버네티스 서버의 버전은 다음과 같아야 함. 버전: " + +[version_check_mustbeorlater] +other = "쿠버네티스 서버의 버전은 다음과 같거나 더 높아야 함. 버전: " + +[version_check_tocheck] +other = "버전 확인을 위해서, 다음 커맨드를 실행 " + +[version_menu] +other = "버전" + +[warning] +other = "경고:" + +[whatsnext_heading] +other = "다음 내용" From 4e0b66295404502aadf288ed35207ddf7da8b9d1 Mon Sep 17 00:00:00 2001 From: Tim Bannister Date: Sat, 10 Oct 2020 14:53:25 +0100 Subject: [PATCH 06/80] Tweak docs about Kubernetes API versions Co-authored-by: Karen Bradshaw --- .../docs/concepts/overview/kubernetes-api.md | 58 +++++++++++++------ 1 file changed, 39 insertions(+), 19 deletions(-) diff --git a/content/en/docs/concepts/overview/kubernetes-api.md b/content/en/docs/concepts/overview/kubernetes-api.md index 528e665407..5bcf9d7ea1 100644 --- a/content/en/docs/concepts/overview/kubernetes-api.md +++ b/content/en/docs/concepts/overview/kubernetes-api.md @@ -77,19 +77,10 @@ about this format, see the [Kubernetes Protobuf serialization](https://github.co Interface Definition Language (IDL) files for each schema located in the Go packages that define the API objects. -## API changes +## Persistence -Any system that is successful needs to grow and change as new use cases emerge or existing ones change. -Therefore, Kubernetes has designed its features to allow the Kubernetes API to continuously change and grow. -The Kubernetes project aims to _not_ break compatibility with existing clients, and to maintain that -compatibility for a length of time so that other projects have an opportunity to adapt. - -In general, new API resources and new resource fields can be added often and frequently. -Elimination of resources or fields requires following the -[API deprecation policy](/docs/reference/using-api/deprecation-policy/). - -What constitutes a compatible change, and how to change the API, are detailed in -[API changes](https://git.k8s.io/community/contributors/devel/sig-architecture/api_changes.md#readme). +Kubernetes stores the serialized state of objects by writing them into +{{< glossary_tooltip term_id="etcd" >}}. ## API groups and versioning @@ -107,17 +98,44 @@ To make it easier to evolve and to extend its API, Kubernetes implements [enabled or disabled](/docs/reference/using-api/#enabling-or-disabling). API resources are distinguished by their API group, resource type, namespace -(for namespaced resources), and name. The API server may serve the same -underlying data through multiple API version and handle the conversion between -API versions transparently. All these different versions are actually -representations of the same resource. For example, suppose there are two -versions `v1` and `v1beta1` for the same resource. An object created by the -`v1beta1` version can then be read, updated, and deleted by either the -`v1beta1` or the `v1` versions. +(for namespaced resources), and name. The API server handles the conversion between +API versions transparently: all the different versions are actually representations +of the same persisted data. The API server may serve the same underlying data +through multiple API versions. + +For example, suppose there are two API versions, `v1` and `v1beta1`, for the same +resource. If you originally created an object using the `v1beta1` version of its +API, you can later read, update, or delete that object +using either the `v1beta1` or the `v1` API version. + +### API changes + +Any system that is successful needs to grow and change as new use cases emerge or existing ones change. +Therefore, Kubernetes has designed the Kubernetes API to continuously change and grow. +The Kubernetes project aims to _not_ break compatibility with existing clients, and to maintain that +compatibility for a length of time so that other projects have an opportunity to adapt. + +In general, new API resources and new resource fields can be added often and frequently. +Elimination of resources or fields requires following the +[API deprecation policy](/docs/reference/using-api/deprecation-policy/). + +Kubernetes makes a strong commitment to maintain compatibility for official Kubernetes APIs +once they reach general availability (GA), typically at API version `v1`. Additionally, +Kubernetes keeps compatibility even for _beta_ API versions wherever feasible: +if you adopt a beta API you can continue to interact with your cluster using that API, +even after the feature goes stable. + +{{< note >}} +Although Kubernetes also aims to maintain compatibility for _alpha_ APIs versions, in some +circumstances this is not possible. If you use any alpha API versions, check the release notes +for Kubernetes when upgrading your cluster, in case the API did change. +{{< /note >}} Refer to [API versions reference](/docs/reference/using-api/#api-versioning) for more details on the API version level definitions. + + ## API Extension The Kubernetes API can be extended in one of two ways: @@ -135,3 +153,5 @@ The Kubernetes API can be extended in one of two ways: how the cluster manages authentication and authorization for API access. - Learn about API endpoints, resource types and samples by reading [API Reference](/docs/reference/kubernetes-api/). +- Learn about what constitutes a compatible change, and how to change the API, from + [API changes](https://git.k8s.io/community/contributors/devel/sig-architecture/api_changes.md#readme). From 18eb0bfc020b57cc3df2b79b3044014dcd8b5f98 Mon Sep 17 00:00:00 2001 From: ramnar Date: Sat, 24 Oct 2020 10:36:54 +0530 Subject: [PATCH 07/80] commands to create job and cronjob --- content/en/docs/reference/kubectl/cheatsheet.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/content/en/docs/reference/kubectl/cheatsheet.md b/content/en/docs/reference/kubectl/cheatsheet.md index e20826ca43..dae5e8c697 100644 --- a/content/en/docs/reference/kubectl/cheatsheet.md +++ b/content/en/docs/reference/kubectl/cheatsheet.md @@ -85,12 +85,14 @@ Kubernetes manifests can be defined in YAML or JSON. The file extension `.yaml`, `.yml`, and `.json` can be used. ```bash -kubectl apply -f ./my-manifest.yaml # create resource(s) -kubectl apply -f ./my1.yaml -f ./my2.yaml # create from multiple files -kubectl apply -f ./dir # create resource(s) in all manifest files in dir -kubectl apply -f https://git.io/vPieo # create resource(s) from url -kubectl create deployment nginx --image=nginx # start a single instance of nginx -kubectl explain pods # get the documentation for pod manifests +kubectl apply -f ./my-manifest.yaml # create resource(s) +kubectl apply -f ./my1.yaml -f ./my2.yaml # create from multiple files +kubectl apply -f ./dir # create resource(s) in all manifest files in dir +kubectl apply -f https://git.io/vPieo # create resource(s) from url +kubectl create deployment nginx --image=nginx # start a single instance of nginx +kubectl create job hello --image=busybox -- echo "Hello World" # create a job which prints "hello world" +kubectl create cronjob hello --image=busybox --schedule="*/1 * * * *" -- echo "Hello World" # create a cron job which prints "hello world" for every minute +kubectl explain pods # get the documentation for pod manifests # Create multiple YAML objects from stdin cat < Date: Sun, 25 Oct 2020 16:05:29 +0530 Subject: [PATCH 08/80] implementing review comments implementing review comments --- .../en/docs/reference/kubectl/cheatsheet.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/content/en/docs/reference/kubectl/cheatsheet.md b/content/en/docs/reference/kubectl/cheatsheet.md index dae5e8c697..283c17a436 100644 --- a/content/en/docs/reference/kubectl/cheatsheet.md +++ b/content/en/docs/reference/kubectl/cheatsheet.md @@ -85,14 +85,16 @@ Kubernetes manifests can be defined in YAML or JSON. The file extension `.yaml`, `.yml`, and `.json` can be used. ```bash -kubectl apply -f ./my-manifest.yaml # create resource(s) -kubectl apply -f ./my1.yaml -f ./my2.yaml # create from multiple files -kubectl apply -f ./dir # create resource(s) in all manifest files in dir -kubectl apply -f https://git.io/vPieo # create resource(s) from url -kubectl create deployment nginx --image=nginx # start a single instance of nginx -kubectl create job hello --image=busybox -- echo "Hello World" # create a job which prints "hello world" -kubectl create cronjob hello --image=busybox --schedule="*/1 * * * *" -- echo "Hello World" # create a cron job which prints "hello world" for every minute -kubectl explain pods # get the documentation for pod manifests +kubectl apply -f ./my-manifest.yaml # create resource(s) +kubectl apply -f ./my1.yaml -f ./my2.yaml # create from multiple files +kubectl apply -f ./dir # create resource(s) in all manifest files in dir +kubectl apply -f https://git.io/vPieo # create resource(s) from url +kubectl create deployment nginx --image=nginx # start a single instance of nginx +kubectl create job hello \ # create a job which prints "hello world" +--image=busybox -- echo "Hello World" +kubectl create cronjob hello --image=busybox \ # create a cron job which prints "hello world" for every minute +--schedule="*/1 * * * *" -- echo "Hello World" +kubectl explain pods # get the documentation for pod manifests # Create multiple YAML objects from stdin cat < Date: Wed, 28 Oct 2020 07:28:32 +0530 Subject: [PATCH 09/80] implemented review comments implemented review comments --- content/en/docs/reference/kubectl/cheatsheet.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/reference/kubectl/cheatsheet.md b/content/en/docs/reference/kubectl/cheatsheet.md index 283c17a436..12f1f33434 100644 --- a/content/en/docs/reference/kubectl/cheatsheet.md +++ b/content/en/docs/reference/kubectl/cheatsheet.md @@ -90,9 +90,9 @@ kubectl apply -f ./my1.yaml -f ./my2.yaml # create from multiple files kubectl apply -f ./dir # create resource(s) in all manifest files in dir kubectl apply -f https://git.io/vPieo # create resource(s) from url kubectl create deployment nginx --image=nginx # start a single instance of nginx -kubectl create job hello \ # create a job which prints "hello world" +kubectl create job hello # create a job which prints "hello world" --image=busybox -- echo "Hello World" -kubectl create cronjob hello --image=busybox \ # create a cron job which prints "hello world" for every minute +kubectl create cronjob hello --image=busybox # create a cron job which prints "hello world" for every minute --schedule="*/1 * * * *" -- echo "Hello World" kubectl explain pods # get the documentation for pod manifests From 1d08f1f6fa28daa6c04a61c6ef56755303a2a81c Mon Sep 17 00:00:00 2001 From: Carl Henrik Lunde Date: Thu, 29 Oct 2020 13:38:04 +0100 Subject: [PATCH 10/80] AWS ALB Ingress Controller renamed to AWS Load Balancer Controller AWS ALB Ingress Controller is now renamed to AWS Load Balancer Controller --- .../en/docs/concepts/services-networking/ingress-controllers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/concepts/services-networking/ingress-controllers.md b/content/en/docs/concepts/services-networking/ingress-controllers.md index 917f3412e3..f1078ddf10 100644 --- a/content/en/docs/concepts/services-networking/ingress-controllers.md +++ b/content/en/docs/concepts/services-networking/ingress-controllers.md @@ -27,7 +27,7 @@ Kubernetes as a project currently supports and maintains [GCE](https://git.k8s.i controller with [community](https://www.getambassador.io/docs) or [commercial](https://www.getambassador.io/pro/) support from [Datawire](https://www.datawire.io/). * [AppsCode Inc.](https://appscode.com) offers support and maintenance for the most widely used [HAProxy](https://www.haproxy.org/) based ingress controller [Voyager](https://appscode.com/products/voyager). -* [AWS ALB Ingress Controller](https://github.com/kubernetes-sigs/aws-alb-ingress-controller) enables ingress using the [AWS Application Load Balancer](https://aws.amazon.com/elasticloadbalancing/). +* [AWS Load Balancer Controller](https://github.com/kubernetes-sigs/aws-load-balancer-controller) (formerly known as AWS ALB Ingress Controller) enables ingress using the [AWS Application Load Balancer](https://aws.amazon.com/elasticloadbalancing/). * [Contour](https://projectcontour.io/) is an [Envoy](https://www.envoyproxy.io/) based ingress controller provided and supported by VMware. * Citrix provides an [Ingress Controller](https://github.com/citrix/citrix-k8s-ingress-controller) for its hardware (MPX), virtualized (VPX) and [free containerized (CPX) ADC](https://www.citrix.com/products/citrix-adc/cpx-express.html) for [baremetal](https://github.com/citrix/citrix-k8s-ingress-controller/tree/master/deployment/baremetal) and [cloud](https://github.com/citrix/citrix-k8s-ingress-controller/tree/master/deployment) deployments. From 5f5eca7866af51d8858183f624a64539b968c509 Mon Sep 17 00:00:00 2001 From: "wangjibao.lc" Date: Fri, 30 Oct 2020 15:41:48 +0800 Subject: [PATCH 11/80] update broken link --- README-pl.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-pl.md b/README-pl.md index 166bc5ef4e..7d89d518cb 100644 --- a/README-pl.md +++ b/README-pl.md @@ -17,7 +17,7 @@ Więcej informacji na temat współpracy przy tworzeniu dokumentacji znajdziesz * [Jak rozpocząć współpracę](https://kubernetes.io/docs/contribute/start/) * [Podgląd wprowadzanych zmian w dokumentacji](http://kubernetes.io/docs/contribute/intermediate#view-your-changes-locally) -* [Szablony stron](http://kubernetes.io/docs/contribute/style/page-templates/) +* [Szablony stron](https://kubernetes.io/docs/contribute/style/page-content-types/) * [Styl pisania dokumentacji](http://kubernetes.io/docs/contribute/style/style-guide/) * [Lokalizacja dokumentacji Kubernetes](https://kubernetes.io/docs/contribute/localization/) From 18e4eaff070089f0e491851fcb2b8ab9fc09caa1 Mon Sep 17 00:00:00 2001 From: ramnar Date: Tue, 10 Nov 2020 07:05:16 +0530 Subject: [PATCH 12/80] implemented feedback implemented feedback --- content/en/docs/reference/kubectl/cheatsheet.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/content/en/docs/reference/kubectl/cheatsheet.md b/content/en/docs/reference/kubectl/cheatsheet.md index 12f1f33434..4766919c5a 100644 --- a/content/en/docs/reference/kubectl/cheatsheet.md +++ b/content/en/docs/reference/kubectl/cheatsheet.md @@ -90,9 +90,10 @@ kubectl apply -f ./my1.yaml -f ./my2.yaml # create from multiple files kubectl apply -f ./dir # create resource(s) in all manifest files in dir kubectl apply -f https://git.io/vPieo # create resource(s) from url kubectl create deployment nginx --image=nginx # start a single instance of nginx -kubectl create job hello # create a job which prints "hello world" ---image=busybox -- echo "Hello World" -kubectl create cronjob hello --image=busybox # create a cron job which prints "hello world" for every minute +# create a job which prints "hello world" +kubectl create job hello --image=busybox -- echo "Hello World" +# create a cronjob which prints "hello world" for every minute +kubectl create cronjob hello --image=busybox --schedule="*/1 * * * *" -- echo "Hello World" kubectl explain pods # get the documentation for pod manifests From ba4b043336fdabaacd4be2c6ca9fe6381c5012a3 Mon Sep 17 00:00:00 2001 From: ramnar Date: Tue, 10 Nov 2020 07:08:40 +0530 Subject: [PATCH 13/80] updated review comments updated review comments --- content/en/docs/reference/kubectl/cheatsheet.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/content/en/docs/reference/kubectl/cheatsheet.md b/content/en/docs/reference/kubectl/cheatsheet.md index 4766919c5a..3c5eacb480 100644 --- a/content/en/docs/reference/kubectl/cheatsheet.md +++ b/content/en/docs/reference/kubectl/cheatsheet.md @@ -90,11 +90,13 @@ kubectl apply -f ./my1.yaml -f ./my2.yaml # create from multiple files kubectl apply -f ./dir # create resource(s) in all manifest files in dir kubectl apply -f https://git.io/vPieo # create resource(s) from url kubectl create deployment nginx --image=nginx # start a single instance of nginx + # create a job which prints "hello world" kubectl create job hello --image=busybox -- echo "Hello World" + # create a cronjob which prints "hello world" for every minute -kubectl create cronjob hello --image=busybox ---schedule="*/1 * * * *" -- echo "Hello World" +kubectl create cronjob hello --image=busybox --schedule="*/1 * * * *" -- echo "Hello World" + kubectl explain pods # get the documentation for pod manifests # Create multiple YAML objects from stdin From c82d8239d941e9e6b9a3c580e804de33bb0b15eb Mon Sep 17 00:00:00 2001 From: Qiming Teng Date: Tue, 10 Nov 2020 13:49:55 +0800 Subject: [PATCH 14/80] [zh] Resync docs/concepts/storage/volumes.md --- content/zh/docs/concepts/storage/volumes.md | 1532 ++++++++++--------- 1 file changed, 782 insertions(+), 750 deletions(-) diff --git a/content/zh/docs/concepts/storage/volumes.md b/content/zh/docs/concepts/storage/volumes.md index 1a6ba538a0..cd16a93a54 100644 --- a/content/zh/docs/concepts/storage/volumes.md +++ b/content/zh/docs/concepts/storage/volumes.md @@ -14,58 +14,55 @@ weight: 10 - -容器中的文件在磁盘上是临时存放的,这给容器中运行的特殊应用程序带来一些问题。 -首先,当容器崩溃时,kubelet 将重新启动容器,容器中的文件将会丢失——因为容器会以干净的状态重建。 -其次,当在一个 `Pod` 中同时运行多个容器时,常常需要在这些容器之间共享文件。 -Kubernetes 抽象出 `Volume` 对象来解决这两个问题。 +Container 中的文件在磁盘上是临时存放的,这给 Container 中运行的较重要的应用 +程序带来一些问题。问题之一是当容器崩溃时文件丢失。kubelet 会重新启动容器, +但容器会以干净的状态重启。 +第二个问题会在同一 `Pod` 中运行多个容器并共享文件时出现。 +Kubernetes {{< glossary_tooltip text="卷(Volume)" term_id="volume" >}} +这一抽象概念能够解决这两个问题。 -阅读本文前建议您熟悉一下 [Pods](/zh/docs/concepts/workloads/pods)。 +阅读本文前建议你熟悉一下 [Pods](/zh/docs/concepts/workloads/pods)。 +## 背景 {#background} -## 背景 - -Docker 也有 [Volume](https://docs.docker.com/storage/) 的概念,但对它只有少量且松散的管理。 -在 Docker 中,Volume 是磁盘上或者另外一个容器内的一个目录。 -直到最近,Docker 才支持对基于本地磁盘的 Volume 的生存期进行管理。 -虽然 Docker 现在也能提供 Volume 驱动程序,但是目前功能还非常有限 -(例如,截至 Docker 1.7,每个容器只允许有一个 Volume 驱动程序,并且无法将参数传递给卷)。 +Docker 也有 [卷(Volume)](https://docs.docker.com/storage/) 的概念,但对它只有少量且松散的管理。 +Docker 卷是磁盘上或者另外一个容器内的一个目录。 +Docker 提供卷驱动程序,但是其功能非常有限。 -另一方面,Kubernetes 卷具有明确的生命周期——与包裹它的 Pod 相同。 -因此,卷比 Pod 中运行的任何容器的存活期都长,在容器重新启动时数据也会得到保留。 -当然,当一个 Pod 不再存在时,卷也将不再存在。 -也许更重要的是,Kubernetes 可以支持许多类型的卷,Pod 也能同时使用任意数量的卷。 +Kubernetes 支持很多类型的卷。 +{{< glossary_tooltip term_id="pod" text="Pod" >}} 可以同时使用任意数目的卷类型。 +临时卷类型的生命周期与 Pod 相同,但持久卷可以比 Pod 的存活期长。 +因此,卷的存在时间会超出 Pod 中运行的所有容器,并且在容器重新启动时数据也会得到保留。 +当 Pod 不再存在时,卷也将不再存在。 -卷的核心是包含一些数据的目录,Pod 中的容器可以访问该目录。 -特定的卷类型可以决定这个目录如何形成的,并能决定它支持何种介质,以及目录中存放什么内容。 - - - -使用卷时, Pod 声明中需要提供卷的类型 (`.spec.volumes` 字段)和卷挂载的位置 (`.spec.containers.volumeMounts` 字段). +卷的核心是包含一些数据的一个目录,Pod 中的容器可以访问该目录。 +所采用的特定的卷类型将决定该目录如何形成的、使用何种介质保存数据以及目录中存放 +的内容。 -容器中的进程能看到由它们的 Docker 镜像和卷组成的文件系统视图。 +使用卷时, 在 `.spec.volumes` 字段中设置为 Pod 提供的卷,并在 +`.spec.containers[*].volumeMounts` 字段中声明卷在容器中的挂载位置。 +容器中的进程看到的是由它们的 Docker 镜像和卷组成的文件系统视图。 [Docker 镜像](https://docs.docker.com/userguide/dockerimages/) -位于文件系统层次结构的根部,并且任何 Volume 都挂载在镜像内的指定路径上。 -卷不能挂载到其他卷,也不能与其他卷有硬链接。 -Pod 中的每个容器必须独立地指定每个卷的挂载位置。 +位于文件系统层次结构的根部。各个卷则挂载在镜像内的指定路径上。 +卷不能挂载到其他卷之上,也不能与其他卷有硬链接。 +Pod 配置中的每个容器必须独立指定各个卷的挂载位置。 -## Volume 的类型 +## 卷类型 {#volume-types} Kubernetes 支持下列类型的卷: - - * [awsElasticBlockStore](#awselasticblockstore) - * [azureDisk](#azuredisk) - * [azureFile](#azurefile) - * [cephfs](#cephfs) - * [cinder](#cinder) - * [configMap](#configmap) - * [csi](#csi) - * [downwardAPI](#downwardapi) - * [emptyDir](#emptydir) - * [fc (fibre channel)](#fc) - * [flexVolume](#flexVolume) - * [flocker](#flocker) - * [gcePersistentDisk](#gcepersistentdisk) - * [gitRepo (deprecated)](#gitrepo) - * [glusterfs](#glusterfs) - * [hostPath](#hostpath) - * [iscsi](#iscsi) - * [local](#local) - * [nfs](#nfs) - * [persistentVolumeClaim](#persistentvolumeclaim) - * [projected](#projected) - * [portworxVolume](#portworxvolume) - * [quobyte](#quobyte) - * [rbd](#rbd) - * [scaleIO](#scaleio) - * [secret](#secret) - * [storageos](#storageos) - * [vsphereVolume](#vspherevolume) - - - -我们欢迎大家贡献其他的卷类型支持。 - ### awsElasticBlockStore {#awselasticblockstore} -`awsElasticBlockStore` 卷将 Amazon Web服务(AWS)[EBS 卷](https://aws.amazon.com/ebs/) 挂载到您的 Pod 中。 -与 `emptyDir` 在删除 Pod 时会被删除不同,EBS 卷的内容在删除 Pod 时会被保留,卷只是被卸载掉了。 -这意味着 EBS 卷可以预先填充数据,并且可以在 Pod 之间传递数据。 +`awsElasticBlockStore` 卷将 Amazon Web服务(AWS)[EBS 卷](https://aws.amazon.com/ebs/) +挂载到你的 Pod 中。与 `emptyDir` 在 Pod 被删除时也被删除不同,EBS 卷的内容在删除 Pod 时 +会被保留,卷只是被卸载掉了。 +这意味着 EBS 卷可以预先填充数据,并且该数据可以在 Pod 之间共享。 -{{< caution >}} -您在使用 EBS 卷之前必须先创建它,可以使用 `aws ec2 create-volume` 命令进行创建;也可以使用 AWS API 进行创建。 -{{< /caution >}} +{{< note >}} +你在使用 EBS 卷之前必须使用 `aws ec2 create-volume` 命令或者 AWS API 创建该卷。 +{{< /note >}} 使用 `awsElasticBlockStore` 卷时有一些限制: -* Pod 正在运行的节点必须是 AWS EC2 实例。 -* 这些实例需要与 EBS 卷在相同的地域(region)和可用区(availability-zone)。 +* Pod 运行所在的节点必须是 AWS EC2 实例。 +* 这些实例需要与 EBS 卷在相同的地域(Region)和可用区(Availability-Zone)。 * EBS 卷只支持被挂载到单个 EC2 实例上。 #### 创建 EBS 卷 -在将 EBS 卷用到 Pod 上之前,您首先要创建它。 +在将 EBS 卷用到 Pod 上之前,你首先要创建它。 ```shell aws ec2 create-volume --availability-zone=eu-west-1a --size=10 --volume-type=gp2 ``` -确保该区域与您的群集所在的区域相匹配。(也要检查卷的大小和 EBS 卷类型都适合您的用途!) +确保该区域与你的群集所在的区域相匹配。还要检查卷的大小和 EBS 卷类型都适合你的用途。 +#### AWS EBS CSI 卷迁移 + +{{< feature-state for_k8s_version="v1.17" state="beta" >}} + + +如果启用了对 `awsElasticBlockStore` 的 `CSIMigration` 特性支持,所有插件操作都 +不再指向树内插件(In-Tree Plugin),转而指向 `ebs.csi.aws.com` 容器存储接口 +(Container Storage Interface,CSI)驱动。为了使用此特性,必须在集群中安装 +[AWS EBS CSI 驱动](https://github.com/kubernetes-sigs/aws-ebs-csi-driver), +并确保 `CSIMigration` 和 `CSIMigrationAWS` Beta 功能特性被启用。 + + +#### AWS EBS CSI 迁移结束 + +{{< feature-state for_k8s_version="v1.17" state="alpha" >}} + + +如欲禁止 `awsElasticBlockStore` 存储插件被控制器管理器和 kubelet +组件加载,可将 `CSIMigrationAWSComplete` 特性门控设置为 `true`。此特性要求在 +集群中所有工作节点上安装 `ebs.csi.aws.com` 容器存储接口驱动。 + ### azureDisk {#azuredisk} -`azureDisk` 用来在 Pod 上挂载 Microsoft Azure [数据盘(Data Disk)](https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-linux-about-disks-vhds/) . -更多详情请参考[这里](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/azure_disk/README.md)。 +`azureDisk` 卷类型用来在 Pod 上挂载 Microsoft Azure +[数据盘(Data Disk)](https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-linux-about-disks-vhds/) 。 +若需了解更多详情,请参考 [`azureDisk` 卷插件](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/azure_disk/README.md)。 -#### CSI迁移 +#### azureDisk 的 CSI 迁移 {#azuredisk-csi-migration} -{{< feature-state for_k8s_version="v1.15" state="alpha" >}} +{{< feature-state for_k8s_version="v1.19" state="beta" >}} -启用azureDisk的CSI迁移功能后,它会将所有插件操作从现有的内建插件填添加disk.csi.azure.com容器存储接口(CSI)驱动程序中。 -为了使用此功能,必须在群集上安装 [Azure磁盘CSI驱动程序](https://github.com/kubernetes-sigs/azuredisk-csi-driver), -并且 `CSIMigration` 和 `CSIMigrationAzureDisk` Alpha功能 必须启用。 +启用 `azureDisk` 的 `CSIMigration` 功能后,所有插件操作从现有的树内插件重定向到 +`disk.csi.azure.com` 容器存储接口(CSI)驱动程序。 +为了使用此功能,必须在集群中安装 +[Azure 磁盘 CSI 驱动程序](https://github.com/kubernetes-sigs/azuredisk-csi-driver), +并且 `CSIMigration` 和 `CSIMigrationAzureDisk` 功能必须被启用。 ### azureFile {#azurefile} -`azureFile` 用来在 Pod 上挂载 Microsoft Azure 文件卷(File Volume) (SMB 2.1 和 3.0)。 -更多详情请参考[这里](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/azure_file/README.md)。 +`azureFile` 卷类型用来在 Pod 上挂载 Microsoft Azure 文件卷(File Volume)(SMB 2.1 和 3.0)。 +更多详情请参考 [`azureFile` 卷插件](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/azure_file/README.md)。 -#### CSI迁移 +#### CSI 迁移 {#azurefile-csi-migration} {{< feature-state for_k8s_version="v1.15" state="alpha" >}} -启用azureFile的CSI迁移功能后,它会将所有插件操作从现有的内建插件填添加file.csi.azure.com容器存储接口(CSI)驱动程序中。 -为了使用此功能,必须在群集上安装 [Azure文件CSI驱动程序](https://github.com/kubernetes-sigs/azurefile-csi-driver), -并且 `CSIMigration` 和 `CSIMigrationAzureFile` Alpha功能 必须启用。 +启用 `azureFile` 的 `CSIMigration` 功能后,所有插件操作将从现有的树内插件重定向到 +`file.csi.azure.com` 容器存储接口(CSI)驱动程序。 +要使用此功能,必须在集群中安装 [Azure 文件 CSI 驱动程序](https://github.com/kubernetes-sigs/azurefile-csi-driver), +并且 `CSIMigration` 和 `CSIMigrationAzureFile` Alpha 功能特性必须被启用。 ### cephfs {#cephfs} @@ -291,20 +286,21 @@ Alpha features must be enabled. A `cephfs` volume allows an existing CephFS volume to be mounted into your Pod. Unlike `emptyDir`, which is erased when a Pod is removed, the contents of a `cephfs` volume are preserved and the volume is merely -unmounted. This means that a CephFS volume can be pre-populated with data, and -that data can be "handed off" between Pods. CephFS can be mounted by multiple +unmounted. This means that a `cephfs` volume can be pre-populated with data, and +that data can be shared between Pods. The `cephfs` can be mounted by multiple writers simultaneously. --> -`cephfs` 允许您将现存的 CephFS 卷挂载到 Pod 中。 -不像 `emptyDir` 那样会在删除 Pod 的同时也会被删除,`cephfs` 卷的内容在删除 Pod 时会被保留,卷只是被卸载掉了。 -这意味着 CephFS 卷可以被预先填充数据,并且这些数据可以在 Pod 之间"传递"。CephFS 卷可同时被多个写者挂载。 +`cephfs` 卷允许你将现存的 CephFS 卷挂载到 Pod 中。 +不像 `emptyDir` 那样会在 Pod 被删除的同时也会被删除,`cephfs` 卷的内容在 Pod 被删除 +时会被保留,只是卷被卸载了。这意味着 `cephfs` 卷可以被预先填充数据,且这些数据可以在 +Pod 之间共享。同一 `cephfs` 卷可同时被多个写者挂载。 -{{< caution >}} -在您使用 Ceph 卷之前,您的 Ceph 服务器必须正常运行并且要使用的 share 被导出(exported)。 -{{< /caution >}} +{{< note >}} +在使用 Ceph 卷之前,你的 Ceph 服务器必须已经运行并将要使用的 share 导出(exported)。 +{{< /note >}} {{< note >}} -先决条件:配置了OpenStack Cloud Provider 的 Kubernetes。 +Kubernetes 必须配置了 OpenStack Cloud Provider。 {{< /note >}} -`cinder` 用于将 OpenStack Cinder 卷安装到 Pod 中。 +`cinder` 卷类型用于将 OpenStack Cinder 卷挂载到 Pod 中。 -#### Cinder Volume示例配置 +#### Cinder 卷示例配置 ```yaml apiVersion: v1 @@ -343,55 +339,55 @@ spec: name: test-volume volumes: - name: test-volume - # This OpenStack volume must already exist. + # 此 OpenStack 卷必须已经存在 cinder: - volumeID: + volumeID: "" fsType: ext4 ``` -#### CSI迁移 +#### OpenStack CSI 迁移 -{{< feature-state for_k8s_version="v1.14" state="alpha" >}} +{{< feature-state for_k8s_version="v1.18" state="beta" >}} +启用 Cinder 的 `CSIMigration` 功能后,所有插件操作会从现有的树内插件重定向到 +`cinder.csi.openstack.org` 容器存储接口(CSI)驱动程序。 +为了使用此功能,必须在集群中安装 [Openstack Cinder CSI 驱动程序](https://github.com/kubernetes/cloud-provider-openstack/blob/master/docs/using-cinder-csi-plugin.md), +并且 `CSIMigration` 和 `CSIMigrationOpenStack` Beta 功能必须被启用。 -启用Cinder的CSI迁移功能后,它会将所有插件操作从现有的内建插件填添加 `cinder.csi.openstack.org` 容器存储接口(CSI)驱动程序中。 -为了使用此功能,必须在群集上安装 [Openstack Cinder CSI驱动程序](https://github.com/kubernetes/cloud-provider-openstack/blob/master/docs/using-cinder-csi-plugin.md), -并且 `CSIMigration` 和 `CSIMigrationOpenStack` Alpha功能 必须启用。 - - -### configMap {#configmap} +### configMap -[`configMap`](/zh/docs/tasks/configure-pod-container/configure-pod-configmap/) 资源提供了向 Pod 注入配置数据的方法。 -`ConfigMap` 对象中存储的数据可以被 `configMap` 类型的卷引用,然后被应用到 Pod 中运行的容器化应用。 +[`configMap`](/zh/docs/tasks/configure-pod-container/configure-pod-configmap/) 卷 +提供了向 Pod 注入配置数据的方法。 +ConfigMap 对象中存储的数据可以被 `configMap` 类型的卷引用,然后被 Pod 中运行的 +容器化应用使用。 - -当引用 `configMap` 对象时,你可以简单的在 Volume 中通过它名称来引用。 -还可以自定义 ConfigMap 中特定条目所要使用的路径。 -例如,要将名为 `log-config` 的 ConfigMap 挂载到名为 `configmap-pod` 的 Pod 中,您可以使用下面的 YAML: +引用 configMap 对象时,你可以在 volume 中通过它的名称来引用。 +你可以自定义 ConfigMap 中特定条目所要使用的路径。 +下面的配置显示了如何将名为 `log-config` 的 ConfigMap 挂载到名为 `configmap-pod` +的 Pod 中: ```yaml apiVersion: v1 @@ -420,41 +416,41 @@ its `log_level` entry are mounted into the Pod at path "`/etc/config/log_level`" Note that this path is derived from the volume's `mountPath` and the `path` keyed with `log_level`. --> -`log-config` ConfigMap 是以卷的形式挂载的, -存储在 `log_level` 条目中的所有内容都被挂载到 Pod 的 "`/etc/config/log_level`" 路径下。 -请注意,这个路径来源于 Volume 的 `mountPath` 和 `log_level` 键对应的 `path`。 +`log-config` ConfigMap 以卷的形式挂载,并且存储在 `log_level` 条目中的所有内容 +都被挂载到 Pod 的 `/etc/config/log_level` 路径下。 +请注意,这个路径来源于卷的 `mountPath` 和 `log_level` 键对应的 `path`。 -{{< caution >}} -在使用 [ConfigMap](/zh/docs/tasks/configure-pod-container/configure-pod-configmap/) 之前您首先要创建它。 -{{< /caution >}} +* You must create a [ConfigMap](/docs/tasks/configure-pod-container/configure-pod-configmap/) + before you can use it. - {{< note >}} -容器以 [subPath](#using-subpath) 卷挂载方式使用 ConfigMap 时,将无法接收 ConfigMap 的更新。 +* 在使用 [ConfigMap](/zh/docs/tasks/configure-pod-container/configure-pod-configmap/) 之前你首先要创建它。 +* 容器以 [subPath](#using-subpath) 卷挂载方式使用 ConfigMap 时,将无法接收 ConfigMap 的更新。 +* 文本数据挂载成文件时采用 UTF-8 字符编码。如果使用其他字符编码形式,可使用 + `binaryData` 字段。 {{< /note >}} -### downwardAPI {#downwardapi} +### downwardAPI - `downwardAPI` 卷用于使 downward API 数据对应用程序可用。 -这种卷类型挂载一个目录并在纯文本文件中写入请求的数据。 +这种卷类型挂载一个目录并在纯文本文件中写入所请求的数据。 {{< note >}} -容器以挂载 [subPath](#using-subpath) 卷的方式使用 downwardAPI 时,将不能接收到它的更新。 +容器以 [subPath](#using-subpath) 卷挂载方式使用 downwardAPI 时,将不能接收到它的更新。 {{< /note >}} 更多详细信息请参考 [`downwardAPI` 卷示例](/zh/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/)。 -### emptyDir {#emptydir} +### emptyDir - -当 Pod 指定到某个节点上时,首先创建的是一个 `emptyDir` 卷,并且只要 Pod 在该节点上运行,卷就一直存在。 -就像它的名称表示的那样,卷最初是空的。 -尽管 Pod 中的容器挂载 `emptyDir` 卷的路径可能相同也可能不同,但是这些容器都可以读写 `emptyDir` 卷中相同的文件。 -当 Pod 因为某些原因被从节点上删除时,`emptyDir` 卷中的数据也会永久删除。 +当 Pod 分派到某个 Node 上时,`emptyDir` 卷会被创建,并且在 Pod 在该节点上运行期间,卷一直存在。 +就像其名称表示的那样,卷最初是空的。 +尽管 Pod 中的容器挂载 `emptyDir` 卷的路径可能相同也可能不同,这些容器都可以读写 +`emptyDir` 卷中相同的文件。 +当 Pod 因为某些原因被从节点上删除时,`emptyDir` 卷中的数据也会被永久删除。 {{< note >}} -容器崩溃并不会导致 Pod 被从节点上移除,因此容器崩溃时 `emptyDir` 卷中的数据是安全的。 +容器崩溃并**不**会导致 Pod 被从节点上移除,因此容器崩溃期间 `emptyDir` 卷中的数据是安全的。 {{< /note >}} -默认情况下, `emptyDir` 卷存储在支持该节点所使用的介质上;这里的介质可以是磁盘或 SSD 或网络存储,这取决于您的环境。 -但是,您可以将 `emptyDir.medium` 字段设置为 `"Memory"`,以告诉 Kubernetes 为您安装 tmpfs(基于 RAM 的文件系统)。 +取决于你的环境,`emptyDir` 卷存储在该节点所使用的介质上;这里的介质可以是磁盘或 SSD +或网络存储。但是,你可以将 `emptyDir.medium` 字段设置为 `"Memory"`,以告诉 Kubernetes +为你挂载 tmpfs(基于 RAM 的文件系统)。 虽然 tmpfs 速度非常快,但是要注意它与磁盘不同。 -tmpfs 在节点重启时会被清除,并且您所写入的所有文件都会计入容器的内存消耗,受容器内存限制约束。 +tmpfs 在节点重启时会被清除,并且你所写入的所有文件都会计入容器的内存消耗,受容器内存限制约束。 -#### Pod 示例 +#### emptyDir 配置示例 ```yaml apiVersion: v1 @@ -538,22 +534,23 @@ spec: ### fc (光纤通道) {#fc} -`fc` 卷允许将现有的光纤通道卷挂载到 Pod 中。 -可以使用卷配置中的参数 `targetWWNs` 来指定单个或多个目标 WWN。 -如果指定多个 WWN,targetWWNs 期望这些 WWN 来自多路径连接。 +`fc` 卷类型允许将现有的光纤通道块存储卷挂载到 Pod 中。 +可以使用卷配置中的参数 `targetWWNs` 来指定单个或多个目标 WWN(World Wide Names)。 +如果指定了多个 WWN,targetWWNs 期望这些 WWN 来自多路径连接。 {{< caution >}} -您必须配置 FC SAN Zoning,以便预先向目标 WWN 分配和屏蔽这些 LUN(卷),这样 Kubernetes 主机才可以访问它们。 +你必须配置 FC SAN Zoning,以便预先向目标 WWN 分配和屏蔽这些 LUN(卷), +这样 Kubernetes 主机才可以访问它们。 {{< /caution >}} -### flocker {#flocker} +### flocker (已弃用) {#flocker} [Flocker](https://github.com/ClusterHQ/flocker) 是一个开源的、集群化的容器数据卷管理器。 -Flocker 提供了由各种存储后备支持的数据卷的管理和编排。 +Flocker 提供了由各种存储后端所支持的数据卷的管理和编排。 -`flocker` 卷允许将一个 Flocker 数据集挂载到 Pod 中。 +使用 `flocker` 卷可以将一个 Flocker 数据集挂载到 Pod 中。 如果数据集在 Flocker 中不存在,则需要首先使用 Flocker CLI 或 Flocker API 创建数据集。 如果数据集已经存在,那么 Flocker 将把它重新附加到 Pod 被调度的节点。 -这意味着数据可以根据需要在 Pod 之间 "传递"。 +这意味着数据可以根据需要在 Pod 之间共享。 -{{< caution >}} -您在使用 Flocker 之前必须先安装运行自己的 Flocker。 -{{< /caution >}} +{{< note >}} +在使用 Flocker 之前你必须先安装运行自己的 Flocker。 +{{< /note >}} - 更多详情请参考 [Flocker 示例](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/flocker)。 - ### gcePersistentDisk {#gcepersistentdisk} -`gcePersistentDisk` 卷能将谷歌计算引擎 (GCE) [持久盘(PD)](http://cloud.google.com/compute/docs/disks) 挂载到您的 Pod 中。 -不像 `emptyDir` 那样会在删除 Pod 的同时也会被删除,持久盘卷的内容在删除 Pod 时会被保留,卷只是被卸载掉了。 -这意味着持久盘卷可以被预先填充数据,并且这些数据可以在 Pod 之间"传递"。 +`gcePersistentDisk` 卷能将谷歌计算引擎 (GCE) [持久盘(PD)](http://cloud.google.com/compute/docs/disks) +挂载到你的 Pod 中。 +不像 `emptyDir` 那样会在 Pod 被删除的同时也会被删除,持久盘卷的内容在删除 Pod +时会被保留,卷只是被卸载了。 +这意味着持久盘卷可以被预先填充数据,并且这些数据可以在 Pod 之间共享。 {{< caution >}} -您在使用 PD 前,必须使用 `gcloud` 或者 GCE API 或 UI 创建它。 +在使用 PD 前,你必须使用 `gcloud` 或者 GCE API 或 UI 创建它。 {{< /caution >}} -PD 的一个特点是它们可以同时被多个消费者以只读方式挂载。 -这意味着您可以用数据集预先填充 PD,然后根据需要并行地在尽可能多的 Pod 中提供该数据集。 -不幸的是,PD 只能由单个使用者以读写模式挂载——即不允许同时写入。 +GCE PD 的一个特点是它们可以同时被多个消费者以只读方式挂载。 +这意味着你可以用数据集预先填充 PD,然后根据需要并行地在尽可能多的 Pod 中提供该数据集。 +不幸的是,PD 只能由单个使用者以读写模式挂载 —— 即不允许同时写入。 -在由 ReplicationController 所管理的 Pod 上使用 PD 将会失败,除非 PD 是只读模式或者副本的数量是 0 或 1。 +在由 ReplicationController 所管理的 Pod 上使用 GCE PD 将会失败,除非 PD +是只读模式或者副本的数量是 0 或 1。 -#### 创建持久盘(PD) +#### 创建 GCE 持久盘(PD) {#gce-create-persistent-disk} -在 Pod 中使用 GCE 持久盘之前,您首先要创建它。 +在 Pod 中使用 GCE 持久盘之前,你首先要创建它。 ```shell gcloud compute disks create --size=500GB --zone=us-central1-a my-data-disk @@ -665,7 +665,7 @@ gcloud compute disks create --size=500GB --zone=us-central1-a my-data-disk -#### Pod 示例 +#### GCE 持久盘配置示例 {#gce-pd-configuration-example} ```yaml apiVersion: v1 @@ -681,7 +681,7 @@ spec: name: test-volume volumes: - name: test-volume - # This GCE PD must already exist. + # 此 GCE PD 必须已经存在 gcePersistentDisk: pdName: my-data-disk fsType: ext4 @@ -689,15 +689,18 @@ spec: -#### 区域持久盘(Regional Persistent Disks) - -{{< feature-state for_k8s_version="v1.10" state="beta" >}} +#### 区域持久盘 {#regional-persistent-disks} -[区域持久盘](https://cloud.google.com/compute/docs/disks/#repds) 功能允许您创建能在同一区域的两个可用区中使用的持久盘。 -要使用这个功能,必须以持久盘的方式提供卷;Pod 不支持直接引用这种卷。 +[区域持久盘](https://cloud.google.com/compute/docs/disks/#repds) 功能允许你创建能在 +同一区域的两个可用区中使用的持久盘。 +要使用这个功能,必须以持久卷(PersistentVolume)的方式提供卷;直接从 Pod 引用这种卷 +是不可以的。 -#### 手动供应基于区域 PD 的 PersistentVolume +#### 手动供应基于区域 PD 的 PersistentVolume {#manually-provisioning-regional-pd-pv} -使用 [为 GCE PD 定义的存储类](/zh/docs/concepts/storage/storage-classes/#gce) 也可以动态供应。 -在创建 PersistentVolume 之前,您首先要创建 PD。 +使用[为 GCE PD 定义的存储类](/zh/docs/concepts/storage/storage-classes/#gce) 可以 +实现动态供应。在创建 PersistentVolume 之前,你首先要创建 PD。 ```shell gcloud beta compute disks create --size=500GB my-data-disk @@ -719,7 +722,6 @@ gcloud beta compute disks create --size=500GB my-data-disk - PersistentVolume 示例: ```yaml @@ -737,14 +739,23 @@ spec: gcePersistentDisk: pdName: my-data-disk fsType: ext4 + nodeAffinity: + required: + nodeSelectorTerms: + - matchExpressions: + - key: failure-domain.beta.kubernetes.io/zone + operator: In + values: + - us-central1-a + - us-central1-b ``` -#### CSI迁移 +#### GCE CSI 迁移 {#gce-csi-migration} -{{< feature-state for_k8s_version="v1.14" state="alpha" >}} +{{< feature-state for_k8s_version="v1.17" state="beta" >}} -启用 GCE PD 的 CSI 迁移功能后,它会将所有插件操作从现有的内建插件填添加 `pd.csi.storage.gke.io` 容器存储接口( CSI )驱动程序中。 -为了使用此功能,必须在群集上安装 [GCE PD CSI驱动程序](https://github.com/kubernetes-sigs/gcp-compute-persistent-disk-csi-driver), -并且 `CSIMigration` 和 `CSIMigrationGCE` Alpha功能 必须启用。 - +启用 GCE PD 的 `CSIMigration` 功能后,所有插件操作将从现有的树内插件重定向到 +`pd.csi.storage.gke.io` 容器存储接口( CSI )驱动程序。 +为了使用此功能,必须在集群中上安装 +[GCE PD CSI驱动程序](https://github.com/kubernetes-sigs/gcp-compute-persistent-disk-csi-driver), +并且 `CSIMigration` 和 `CSIMigrationGCE` Beta 功能必须被启用。 -### gitRepo (已弃用) +### gitRepo (已弃用) {#gitrepo} {{< warning >}} -gitRepo 卷类型已经被废弃。如果需要在容器中提供 git 仓库,请将一个 [EmptyDir](#emptydir) 卷挂载到 InitContainer 中,使用 git 命令完成仓库的克隆操作,然后将 [EmptyDir](#emptydir) 卷挂载到 Pod 的容器中。 +`gitRepo` 卷类型已经被废弃。如果需要在容器中提供 git 仓库,请将一个 +[EmptyDir](#emptydir) 卷挂载到 InitContainer 中,使用 git 命令完成仓库的克隆操作, +然后将 [EmptyDir](#emptydir) 卷挂载到 Pod 的容器中。 {{< /warning >}} - `gitRepo` 卷是一个卷插件的例子。 -该卷类型挂载了一个空目录,并将一个 Git 代码仓库克隆到这个目录中供您使用。 -将来,这种卷可能被移动到一个更加解耦的模型中,而不是针对每个应用案例扩展 Kubernetes API。 +该查卷挂载一个空目录,并将一个 Git 代码仓库克隆到这个目录中供 Pod 使用。 -下面给出一个 gitRepo 卷的示例: +下面给出一个 `gitRepo` 卷的示例: ```yaml apiVersion: v1 @@ -806,7 +817,7 @@ spec: revision: "22f1d8406d464b0c0874075539c1f2e96c253775" ``` -### glusterfs {#glusterfs} +### glusterfs -`glusterfs` 卷能将 [Glusterfs](https://www.gluster.org) (一个开源的网络文件系统) 挂载到您的 Pod 中。 -不像 `emptyDir` 那样会在删除 Pod 的同时也会被删除,`glusterfs` 卷的内容在删除 Pod 时会被保存,卷只是被卸载掉了。 -这意味着 `glusterfs` 卷可以被预先填充数据,并且这些数据可以在 Pod 之间"传递"。GlusterFS 可以被多个写者同时挂载。 +`glusterfs` 卷能将 [Glusterfs](https://www.gluster.org) (一个开源的网络文件系统) +挂载到你的 Pod 中。不像 `emptyDir` 那样会在删除 Pod 的同时也会被删除,`glusterfs` +卷的内容在删除 Pod 时会被保存,卷只是被卸载。 +这意味着 `glusterfs` 卷可以被预先填充数据,并且这些数据可以在 Pod 之间共享。 +GlusterFS 可以被多个写者同时挂载。 -{{< caution >}} -在使用前您必须先安装运行自己的 GlusterFS。 -{{< /caution >}} +{{< note >}} +在使用前你必须先安装运行自己的 GlusterFS。 +{{< /note >}} 更多详情请参考 [GlusterFS 示例](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/volumes/glusterfs)。 -### hostPath {#hostpath} +### hostPath - -`hostPath` 卷能将主机节点文件系统上的文件或目录挂载到您的 Pod 中。 +`hostPath` 卷能将主机节点文件系统上的文件或目录挂载到你的 Pod 中。 虽然这不是大多数 Pod 需要的,但是它为一些应用程序提供了强大的逃生舱。 - 例如,`hostPath` 的一些用法有: -* 运行一个需要访问 Docker 引擎内部机制的容器;请使用 `hostPath` 挂载 `/var/lib/docker` 路径。 +* 运行一个需要访问 Docker 内部机制的容器;可使用 `hostPath` 挂载 `/var/lib/docker` 路径。 * 在容器中运行 cAdvisor 时,以 `hostPath` 方式挂载 `/sys`。 * 允许 Pod 指定给定的 `hostPath` 在运行 Pod 之前是否应该存在,是否应该创建以及应该以什么方式存在。 @@ -865,15 +876,13 @@ In addition to the required `path` property, user can optionally specify a `type The supported values for field `type` are: --> - 除了必需的 `path` 属性之外,用户可以选择性地为 `hostPath` 卷指定 `type`。 支持的 `type` 值如下: - - -| 取值 | 行为 | +| 取值 | 行为 | |:------|:---------| | | 空字符串(默认)用于向后兼容,这意味着在安装 hostPath 卷之前不会执行任何检查。 | -| `DirectoryOrCreate` | 如果在给定路径上什么都不存在,那么将根据需要创建空目录,权限设置为 0755,具有与 Kubelet 相同的组和所有权。 | +| `DirectoryOrCreate` | 如果在给定路径上什么都不存在,那么将根据需要创建空目录,权限设置为 0755,具有与 kubelet 相同的组和属主信息。 | | `Directory` | 在给定路径上必须存在的目录。| -| `FileOrCreate` | 如果在给定路径上什么都不存在,那么将在那里根据需要创建空文件,权限设置为 0644,具有与 Kubelet 相同的组和所有权。| +| `FileOrCreate` | 如果在给定路径上什么都不存在,那么将在那里根据需要创建空文件,权限设置为 0644,具有与 kubelet 相同的组和所有权。| | `File` | 在给定路径上必须存在的文件。| | `Socket` | 在给定路径上必须存在的 UNIX 套接字。| | `CharDevice` | 在给定路径上必须存在的字符设备。| @@ -898,28 +906,25 @@ The supported values for field `type` are: - 当使用这种类型的卷时要小心,因为: -* 具有相同配置(例如从 podTemplate 创建)的多个 Pod 会由于节点上文件的不同而在不同节点上有不同的行为。 -* 当 Kubernetes 按照计划添加资源感知的调度时,这类调度机制将无法考虑由 `hostPath` 使用的资源。 -* 基础主机上创建的文件或目录只能由 root 用户写入。您需要在 -[特权容器](/docs/tasks/configure-pod-container/security-context/) -中以 root 身份运行进程,或者修改主机上的文件权限以便容器能够写入 `hostPath` 卷。 +* 具有相同配置(例如基于同一 PodTemplate 创建)的多个 Pod 会由于节点上文件的不同 + 而在不同节点上有不同的行为。 +* 下层主机上创建的文件或目录只能由 root 用户写入。你需要在 + [特权容器](/zh/docs/tasks/configure-pod-container/security-context/) + 中以 root 身份运行进程,或者修改主机上的文件权限以便容器能够写入 `hostPath` 卷。 -#### Pod 示例 +#### hostPath 配置示例: ```yaml apiVersion: v1 @@ -936,25 +941,29 @@ spec: volumes: - name: test-volume hostPath: - # directory location on host + # 宿主上目录位置 path: /data - # this field is optional + # 此字段为可选 type: Directory ``` {{< caution >}} -应当注意,`FileOrCreate` 类型不会负责创建文件的父目录。 -如果挂载挂载文件的父目录不存在,pod 启动会失败。 -为了确保这种 `type` 能够工作,可以尝试把文件和它对应的目录分开挂载,如下所示: +`FileOrCreate` 模式不会负责创建文件的父目录。 +如果欲挂载的文件的父目录不存在,Pod 启动会失败。 +为了确保这种模式能够工作,可以尝试把文件和它对应的目录分开挂载,如 +[`FileOrCreate` 配置](#hostpath-fileorcreate-example) 所示。 {{< /caution >}} -#### FileOrCreate pod 示例 + +#### hostPath FileOrCreate 配置示例 {#hostpath-fileorcreate-example} ```yaml apiVersion: v1 @@ -982,36 +991,37 @@ spec: type: FileOrCreate ``` -### iscsi {#iscsi} +### iscsi - -`iscsi` 卷能将 iSCSI (基于 IP 的 SCSI) 挂载到您的 Pod 中。 -不像 `emptyDir` 那样会在删除 Pod 的同时也会被删除,持久盘 卷的内容在删除 Pod 时会被保存,卷只是被卸载掉了。 -这意味着 `iscsi` 卷可以被预先填充数据,并且这些数据可以在 Pod 之间"传递"。 +`iscsi` 卷能将 iSCSI (基于 IP 的 SCSI) 卷挂载到你的 Pod 中。 +不像 `emptyDir` 那样会在删除 Pod 的同时也会被删除,`iscsi` 卷的内容在删除 Pod 时 +会被保留,卷只是被卸载。 +这意味着 `iscsi` 卷可以被预先填充数据,并且这些数据可以在 Pod 之间共享。 {{< caution >}} -在您使用 iSCSI 卷之前,您必须拥有自己的 iSCSI 服务器,并在上面创建卷。 +在使用 iSCSI 卷之前,你必须拥有自己的 iSCSI 服务器,并在上面创建卷。 {{< /caution >}} iSCSI 的一个特点是它可以同时被多个用户以只读方式挂载。 -这意味着您可以用数据集预先填充卷,然后根据需要在尽可能多的 Pod 上提供它。不幸的是,iSCSI 卷只能由单个使用者以读写模式挂载——不允许同时写入。 +这意味着你可以用数据集预先填充卷,然后根据需要在尽可能多的 Pod 上使用它。 +不幸的是,iSCSI 卷只能由单个使用者以读写模式挂载。不允许同时写入。 +### local -### local {#local} - -{{< feature-state for_k8s_version="v1.14" state="stable" >}} - - -{{< note >}} -alpha 版本的 PersistentVolume NodeAffinity 注释已被取消,将在将来的版本中废弃。 -用户必须更新现有的使用该注解的 PersistentVolume,以使用新的 PersistentVolume `NodeAffinity` 字段。 -{{< /note >}} - - +### local -`local` 卷指的是所挂载的某个本地存储设备,例如磁盘、分区或者目录。 +`local` 卷所代表的是某个被挂载的本地存储设备,例如磁盘、分区或者目录。 `local` 卷只能用作静态创建的持久卷。尚不支持动态配置。 - -相比 `hostPath` 卷,`local` 卷可以以持久和可移植的方式使用,而无需手动将 Pod -调度到节点,因为系统通过查看 PersistentVolume 所属节点的亲和性配置,就能了解卷的节点约束。 +与 `hostPath` 卷相比,`local` 卷能够以持久和可移植的方式使用,而无需手动将 Pod +调度到节点。系统通过查看 PersistentVolume 的节点亲和性配置,就能了解卷的节点约束。 -然而,`local` 卷仍然取决于底层节点的可用性,并不是适合所有应用程序。 -如果节点变得不健康,那么`local` 卷也将变得不可访问,并且使用它的 Pod 将不能运行。 -使用 `local` 卷的应用程序必须能够容忍这种可用性的降低,以及因底层磁盘的耐用性特征而带来的潜在的数据丢失风险。 +然而,`local` 卷仍然取决于底层节点的可用性,并不适合所有应用程序。 +如果节点变得不健康,那么`local` 卷也将变得不可被 Pod 访问。使用它的 Pod 将不能运行。 +使用 `local` 卷的应用程序必须能够容忍这种可用性的降低,以及因底层磁盘的耐用性特征 +而带来的潜在的数据丢失风险。 下面是一个使用 `local` 卷和 `nodeAffinity` 的持久卷示例: @@ -1083,7 +1077,6 @@ metadata: spec: capacity: storage: 100Gi - # volumeMode field requires BlockVolume Alpha feature gate to be enabled. volumeMode: Filesystem accessModes: - ReadWriteOnce @@ -1102,35 +1095,35 @@ spec: ``` -使用 `local` 卷时,需要使用 PersistentVolume 对象的 `nodeAffinity` 字段。 -它使 Kubernetes 调度器能够将使用 `local` 卷的 Pod 正确地调度到合适的节点。 +使用 `local` 卷时,你需要设置 PersistentVolume 对象的 `nodeAffinity` 字段。 +Kubernetes 调度器使用 PersistentVolume 的 `nodeAffinity` 信息来将使用 `local` +卷的 Pod 调度到正确的节点。 -现在,可以将 PersistentVolume 对象的 `volumeMode` 字段设置为 "Block" +PersistentVolume 对象的 `volumeMode` 字段可被设置为 "Block" (而不是默认值 "Filesystem"),以将 `local` 卷作为原始块设备暴露出来。 -`volumeMode` 字段需要启用 Alpha 功能 `BlockVolume`。 - -当使用 `local` 卷时,建议创建一个 StorageClass,将 `volumeBindingMode` 设置为 `WaitForFirstConsumer`。 -请参考[示例](/zh/docs/concepts/storage/storage-classes/#local)。 -延迟卷绑定操作可以确保 Kubernetes 在为 PersistentVolumeClaim 作出绑定决策时, -会评估 Pod 可能具有的其他节点约束,例如:如节点资源需求、节点选择器、Pod 亲和性和 Pod 反亲和性。 +使用 `local` 卷时,建议创建一个 StorageClass 并将其 `volumeBindingMode` 设置为 +`WaitForFirstConsumer`。要了解更多详细信息,请参考 +[local StorageClass 示例](/zh/docs/concepts/storage/storage-classes/#local)。 +延迟卷绑定的操作可以确保 Kubernetes 在为 PersistentVolumeClaim 作出绑定决策时, +会评估 Pod 可能具有的其他节点约束,例如:如节点资源需求、节点选择器、Pod +亲和性和 Pod 反亲和性。 -您可以在 Kubernetes 之外单独运行静态驱动以改进对 local 卷的生命周期管理。 -请注意,此驱动不支持动态配置。 -有关如何运行外部 `local` 卷驱动的示例,请参考 +你可以在 Kubernetes 之外单独运行静态驱动以改进对 local 卷的生命周期管理。 +请注意,此驱动尚不支持动态配置。 +有关如何运行外部 `local` 卷驱动,请参考 [local 卷驱动用户指南](https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner)。 {{< note >}} -如果不使用外部静态驱动来管理卷的生命周期,则用户需要手动清理和删除 local 类型的持久卷。 +如果不使用外部静态驱动来管理卷的生命周期,用户需要手动清理和删除 local 类型的持久卷。 {{< /note >}} -### nfs {#nfs} +### nfs -`nfs` 卷能将 NFS (网络文件系统) 挂载到您的 Pod 中。 -不像 `emptyDir` 那样会在删除 Pod 的同时也会被删除,`nfs` 卷的内容在删除 Pod 时会被保存,卷只是被卸载掉了。 -这意味着 `nfs` 卷可以被预先填充数据,并且这些数据可以在 Pod 之间"传递"。 +`nfs` 卷能将 NFS (网络文件系统) 挂载到你的 Pod 中。 +不像 `emptyDir` 那样会在删除 Pod 的同时也会被删除,`nfs` 卷的内容在删除 Pod +时会被保存,卷只是被卸载。 +这意味着 `nfs` 卷可以被预先填充数据,并且这些数据可以在 Pod 之间共享。 {{< caution >}} -在您使用 NFS 卷之前,必须运行自己的 NFS 服务器并将目标 share 导出备用。 +在使用 NFS 卷之前,你必须运行自己的 NFS 服务器并将目标 share 导出备用。 {{< /caution >}} -`persistentVolumeClaim` 卷用来将[持久卷](/docs/concepts/storage/persistent-volumes/)(PersistentVolume)挂载到 Pod 中。 -持久卷是用户在不知道特定云环境细节的情况下"申领"持久存储(例如 GCE PersistentDisk 或者 iSCSI 卷)的一种方法。 +`persistentVolumeClaim` 卷用来将[持久卷](/zh/docs/concepts/storage/persistent-volumes/)(PersistentVolume) +挂载到 Pod 中。 +持久卷申领(PersistentVolumeClaim)是用户在不知道特定云环境细节的情况下"申领"持久存储 +(例如 GCE PersistentDisk 或者 iSCSI 卷)的一种方法。 +更多详情请参考[持久卷示例](/docs/concepts/storage/persistent-volumes/)。 -更多详情请参考[持久卷示例](/docs/concepts/storage/persistent-volumes/) +### portworxVolume {#portworxvolume} -### projected {#projected} + +`portworxVolume` 是一个可伸缩的块存储层,能够以超融合(hyperconverged)的方式与 Kubernetes 一起运行。 +[Portworx](https://portworx.com/use-case/kubernetes-storage/) 支持对服务器上存储的指纹处理、 +基于存储能力进行分层以及跨多个服务器整合存储容量。 +Portworx 可以以 in-guest 方式在虚拟机中运行,也可以在裸金属 Linux 节点上运行。 + + +`portworxVolume` 类型的卷可以通过 Kubernetes 动态创建,也可以预先配备并在 +Kubernetes Pod 内引用。 +下面是一个引用预先配备的 PortworxVolume 的示例 Pod: + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: test-portworx-volume-pod +spec: + containers: + - image: k8s.gcr.io/test-webserver + name: test-container + volumeMounts: + - mountPath: /mnt + name: pxvol + volumes: + - name: pxvol + # 此 Portworx 卷必须已经存在 + portworxVolume: + volumeID: "pxvol" + fsType: "" +``` + +{{< note >}} + +在 Pod 中使用 portworxVolume 之前,你要确保有一个名为 `pxvol` 的 PortworxVolume 存在。 +{{< /note >}} + + + +更多详情可以参考 [Portworx 卷](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/portworx/README.md)。 + +### projected - `projected` 卷类型能将若干现有的卷来源映射到同一目录上。 目前,可以映射的卷来源类型如下: @@ -1218,27 +1267,14 @@ Currently, the following types of volume sources can be projected: All sources are required to be in the same namespace as the Pod. For more details, see the [all-in-one volume design document](https://github.com/kubernetes/community/blob/{{< param "githubbranch" >}}/contributors/design-proposals/node/all-in-one-volume.md). --> - 所有的卷来源需要和 Pod 处于相同的命名空间。 更多详情请参考[一体化卷设计文档](https://github.com/kubernetes/community/blob/{{< param "githubbranch" >}}/contributors/design-proposals/node/all-in-one-volume.md)。 -服务帐户令牌的映射是 Kubernetes 1.11 版本中引入的一个功能,并在 1.12 版本中被提升为 Beta 功能。 -若要在 1.11 版本中启用此特性,需要显式设置 `TokenRequestProjection` -[功能开关](/zh/docs/reference/command-line-tools-reference/feature-gates/) 为 True。 - - - -#### 包含 secret、downwardAPI 和 configmap 的 Pod 示例如下: +#### 包含 Secret、downwardAPI 和 configMap 的 Pod 示例 {#example-configuration-secret-downwardapi-configmap} ```yaml apiVersion: v1 @@ -1279,10 +1315,10 @@ spec: ``` -带有非默认许可模式设置的多个 secret 的 Pod 示例如下: +下面是一个带有非默认访问权限设置的多个 secret 的 Pod 示例: ```yaml apiVersion: v1 @@ -1323,12 +1359,11 @@ parameters are nearly the same with two exceptions: volume source. However, as illustrated above, you can explicitly set the `mode` for each individual projection. --> +每个被投射的卷来源都在规约中的 `sources` 内列出。参数几乎相同,除了两处例外: -每个被投射的卷来源都在 spec 中的 `sources` 内列出。 -参数几乎相同,除了两处例外: - -* 对于 secret,`secretName` 字段已被变更为 `name` 以便与 ConfigMap 命名一致。 -* `defaultMode` 只能根据投射级别指定,而不是针对每个卷来源指定。不过,如上所述,您可以显式地为每个投射项设置 `mode` 值。 +* 对于 `secret`,`secretName` 字段已被变更为 `name` 以便与 ConfigMap 命名一致。 +* `defaultMode` 只能在整个投射卷级别指定,而无法针对每个卷来源指定。 + 不过,如上所述,你可以显式地为每个投射项设置 `mode` 值。 - 示例 Pod 具有包含注入服务帐户令牌的映射卷。 -例如,这个令牌可以被 Pod 容器用来访问 Kubernetes API服务器。 +该令牌可以被 Pod 中的容器用来访问 Kubernetes API 服务器。 `audience` 字段包含令牌的预期受众。 令牌的接收者必须使用令牌的受众中指定的标识符来标识自己,否则应拒绝令牌。 此字段是可选的,默认值是 API 服务器的标识符。 @@ -1380,142 +1414,91 @@ is optional and it defaults to the identifier of the API server. - -`expirationSeconds` 是服务帐户令牌的有效期。 +`expirationSeconds` 是服务帐户令牌的有效期时长。 默认值为 1 小时,必须至少 10 分钟(600 秒)。 -管理员还可以通过指定 API 服务器的 `--service-account-max-token-expiration` 选项来限制其最大值。 +管理员还可以通过设置 API 服务器的 `--service-account-max-token-expiration` 选项来 +限制其最大值。 `path` 字段指定相对于映射卷的挂载点的相对路径。 {{< note >}} 使用投射卷源作为 [subPath](#using-subpath) 卷挂载的容器将不会接收这些卷源的更新。 {{< /note >}} -### portworxVolume {#portworxvolume} - - - -`portworxVolume` 是一个可伸缩的块存储层,能够以超聚合(hyperconverged)的方式与 Kubernetes 一起运行。 -[Portworx](https://portworx.com/use-case/kubernetes-storage/) 支持对服务器上存储的指纹处理、基于存储能力进行分层以及跨多个服务器整合存储容量。 -Portworx 可以以 in-guest 方式在虚拟机中运行,也可以在裸金属 Linux 节点上运行。 - - - -`portworxVolume` 类型的卷可以通过 Kubernetes 动态创建,也可以在 Kubernetes Pod 内预先供应和引用。 -下面是一个引用预先配置的 PortworxVolume 的示例 Pod: - -```yaml -apiVersion: v1 -kind: Pod -metadata: - name: test-portworx-volume-pod -spec: - containers: - - image: k8s.gcr.io/test-webserver - name: test-container - volumeMounts: - - mountPath: /mnt - name: pxvol - volumes: - - name: pxvol - # This Portworx volume must already exist. - portworxVolume: - volumeID: "pxvol" - fsType: "" -``` - -{{< caution >}} - -在 Pod 中使用 portworxVolume 之前,请确保有一个名为 `pxvol` 的 PortworxVolume 存在。 -{{< /caution >}} - - - -更多详情和示例可以在[这里](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/portworx/README.md)找到。 - -### quobyte {#quobyte} +### quobyte -`quobyte` 卷允许将现有的 [Quobyte](https://www.quobyte.com) 卷挂载到您的 Pod 中。 +`quobyte` 卷允许将现有的 [Quobyte](https://www.quobyte.com) 卷挂载到你的 Pod 中。 -{{< caution >}} -在使用 Quobyte 卷之前,您首先要进行安装并创建好卷。 -{{< /caution >}} +{{< note >}} +在使用 Quobyte 卷之前,你首先要进行安装 Quobyte 并创建好卷。 +{{< /note >}} -Quobyte 支持{{< glossary_tooltip text="容器存储接口" term_id="csi" >}}。 +Quobyte 支持{{< glossary_tooltip text="容器存储接口(CSI)" term_id="csi" >}}。 推荐使用 CSI 插件以在 Kubernetes 中使用 Quobyte 卷。 -Quobyte 的 GitHub 项目具有[说明](https://github.com/quobyte/quobyte-csi#quobyte-csi)以及使用示例来部署 CSI 的 Quobyte。 +Quobyte 的 GitHub 项目包含以 CSI 形式部署 Quobyte 的[说明](https://github.com/quobyte/quobyte-csi#quobyte-csi) +及使用示例。 -### rbd {#rbd} +### rbd -`rbd` 卷允许将 [Rados 块设备](https://ceph.com/docs/master/rbd/rbd/) 卷挂载到您的 Pod 中. -不像 `emptyDir` 那样会在删除 Pod 的同时也会被删除,`rbd` 卷的内容在删除 Pod 时会被保存,卷只是被卸载掉了。 -这意味着 `rbd` 卷可以被预先填充数据,并且这些数据可以在 Pod 之间"传递"。 +`rbd` 卷允许将 [Rados 块设备](https://ceph.com/docs/master/rbd/rbd/) 卷挂载到你的 Pod 中. +不像 `emptyDir` 那样会在删除 Pod 的同时也会被删除,`rbd` 卷的内容在删除 Pod 时 +会被保存,卷只是被卸载。 +这意味着 `rbd` 卷可以被预先填充数据,并且这些数据可以在 Pod 之间共享。 {{< caution >}} -在使用 RBD 之前,您必须安装运行 Ceph。 +在使用 RBD 之前,你必须安装运行 Ceph。 {{< /caution >}} - -RBD 的一个特点是它可以同时被多个用户以只读方式挂载。 -这意味着您可以用数据集预先填充卷,然后根据需要从尽可能多的 Pod 中并行地提供卷。 -不幸的是,RBD 卷只能由单个使用者以读写模式安装——不允许同时写入。 +RBD 的一个特性是它可以同时被多个用户以只读方式挂载。 +这意味着你可以用数据集预先填充卷,然后根据需要在尽可能多的 Pod 中并行地使用卷。 +不幸的是,RBD 卷只能由单个使用者以读写模式安装。不允许同时写入。 更多详情请参考 [RBD 示例](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/volumes/rbd)。 -### scaleIO {#scaleio} + +### scaleIO (已弃用) {#scaleio} - ScaleIO 是基于软件的存储平台,可以使用现有硬件来创建可伸缩的、共享的而且是网络化的块存储集群。 -`scaleIO` 卷插件允许部署的 Pod 访问现有的 ScaleIO 卷(或者它可以动态地为持久卷申领提供新的卷,参见[ScaleIO 持久卷](/docs/concepts/storage/persistent-volumes/#scaleio))。 +`scaleIO` 卷插件允许部署的 Pod 访问现有的 ScaleIO 卷(或者它可以动态地为持久卷申领提供新的卷, +参见 [ScaleIO 持久卷](/zh/docs/concepts/storage/persistent-volumes/#scaleio))。 -{{< caution >}} -在使用前,您必须有个安装完毕且运行正常的 ScaleIO 集群,并且创建好了存储卷。 -{{< /caution >}} +{{< note >}} +在使用前,你必须有个安装完毕且运行正常的 ScaleIO 集群,并且创建好了存储卷。 +{{< /note >}} - 更多详情,请参考 [ScaleIO 示例](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/scaleio)。 -### secret {#secret} +### secret - -`secret` 卷用来给 Pod 传递敏感信息,例如密码。您可以将 secret 存储在 Kubernetes API 服务器上,然后以文件的形式挂在到 Pod 中,无需直接与 Kubernetes 耦合。 -`secret` 卷由 tmpfs(基于 RAM 的文件系统)提供存储,因此它们永远不会被写入非易失性(持久化的)存储器。 +`secret` 卷用来给 Pod 传递敏感信息,例如密码。你可以将 Secret 存储在 Kubernetes +API 服务器上,然后以文件的形式挂在到 Pod 中,无需直接与 Kubernetes 耦合。 +`secret` 卷由 tmpfs(基于 RAM 的文件系统)提供存储,因此它们永远不会被写入非易失性 +(持久化的)存储器。 -{{< caution >}} -使用前您必须在 Kubernetes API 中创建 secret。 -{{< /caution >}} +{{< note >}} +使用前你必须在 Kubernetes API 中创建 secret。 +{{< /note >}} {{< note >}} -容器以 [subPath](#using-subpath) 卷的方式挂载 Secret 时,它将感知不到 Secret 的更新。 +容器以 [subPath](#using-subpath) 卷挂载方式挂载 Secret 时,将感知不到 Secret 的更新。 {{< /note >}} -Secret 的更多详情请参考[这里](/zh/docs/concepts/configuration/secret/)。 +更多详情请参考[配置 Secrets](/zh/docs/concepts/configuration/secret/)。 ### storageOS {#storageos} @@ -1611,7 +1594,7 @@ Secret 的更多详情请参考[这里](/zh/docs/concepts/configuration/secret/) A `storageos` volume allows an existing [StorageOS](https://www.storageos.com) volume to be mounted into your Pod. --> -`storageos` 卷允许将现有的 [StorageOS](https://www.storageos.com) 卷挂载到您的 Pod 中。 +`storageos` 卷允许将现有的 [StorageOS](https://www.storageos.com) 卷挂载到你的 Pod 中。 -StorageOS 在 Kubernetes 环境中以容器的形式运行,这使得应用能够从 Kubernetes 集群中的任何节点访问本地或关联的存储。 -为应对节点失效状况,可以复制数据。 +StorageOS 在 Kubernetes 环境中以容器的形式运行,这使得应用能够从 Kubernetes +集群中的任何节点访问本地的或挂接的存储。为应对节点失效状况,可以复制数据。 若需提高利用率和降低成本,可以考虑瘦配置(Thin Provisioning)和数据压缩。 {{< caution >}} -您必须在每个希望访问 StorageOS 卷的或者将向存储资源池贡献存储容量的节点上运行 StorageOS 容器。 -有关安装说明,请参阅 [StorageOS 文档](https://docs.storageos.com)。 +你必须在每个希望访问 StorageOS 卷的或者将向存储资源池贡献存储容量的节点上运行 +StorageOS 容器。有关安装说明,请参阅 [StorageOS 文档](https://docs.storageos.com)。 {{< /caution >}} ```yaml @@ -1668,26 +1651,27 @@ spec: volumes: - name: redis-data storageos: - # The `redis-vol01` volume must already exist within StorageOS in the `default` namespace. + # `redis-vol01` 卷必须在 StorageOS 中存在,并位于 `default` 名字空间内 volumeName: redis-vol01 fsType: ext4 ``` -更多关于动态供应和持久卷申领的信息请参考 [StorageOS 示例](https://github.com/kubernetes/examples/blob/master/volumes/storageos)。 +关于 StorageOS 的进一步信息、动态供应和持久卷申领等等,请参考 +[StorageOS 示例](https://github.com/kubernetes/examples/blob/master/volumes/storageos)。 ### vsphereVolume {#vspherevolume} {{< note >}} -前提条件:配备了 vSphere 云驱动的 Kubernetes。云驱动的配置方法请参考 +你必须配置 Kubernetes 的 vSphere 云驱动。云驱动的配置方法请参考 [vSphere 使用指南](https://vmware.github.io/vsphere-storage-for-kubernetes/documentation/)。 {{< /note >}} @@ -1695,7 +1679,7 @@ configuration please refer [vSphere getting started guide](https://vmware.github A `vsphereVolume` is used to mount a vSphere VMDK Volume into your Pod. The contents of a volume are preserved when it is unmounted. It supports both VMFS and VSAN datastore. --> -`vsphereVolume` 用来将 vSphere VMDK 卷挂载到您的 Pod 中。 +`vsphereVolume` 用来将 vSphere VMDK 卷挂载到你的 Pod 中。 在卸载卷时,卷的内容会被保留。 vSphereVolume 卷类型支持 VMFS 和 VSAN 数据仓库。 @@ -1703,15 +1687,15 @@ vSphereVolume 卷类型支持 VMFS 和 VSAN 数据仓库。 You must create VMDK using one of the following methods before using with Pod. --> {{< caution >}} -在挂载到 Pod 之前,您必须用下列方式之一创建 VMDK。 +在挂载到 Pod 之前,你必须用下列方式之一创建 VMDK。 {{< /caution >}} -#### 创建 VMDK 卷 +#### 创建 VMDK 卷 {#creating-vmdk-volume} 选择下列方式之一创建 VMDK。 @@ -1737,9 +1721,9 @@ vmware-vdiskmanager -c -t 0 -s 40GB -a lsilogic myDisk.vmdk -#### vSphere VMDK 配置示例 +#### vSphere VMDK 配置示例 {#vsphere-vmdk-configuration} ```yaml apiVersion: v1 @@ -1755,22 +1739,86 @@ spec: name: test-volume volumes: - name: test-volume - # This VMDK volume must already exist. + # 此 VMDK 卷必须已经存在 vsphereVolume: volumePath: "[DatastoreName] volumes/myDisk" fsType: ext4 ``` -更多示例可以在[这里](https://github.com/kubernetes/examples/tree/master/staging/volumes/vsphere)找到。 +进一步信息可参考[vSphere 卷](https://github.com/kubernetes/examples/tree/master/staging/volumes/vsphere)。 +#### vSphere CSI 迁移 {#vsphere-csi-migration} -Sometimes, it is useful to share one volume for multiple uses in a single Pod. The `volumeMounts.subPath` -property can be used to specify a sub-path inside the referenced volume instead of its root. +{{< feature-state for_k8s_version="v1.19" state="beta" >}} + + +当 `vsphereVolume` 的 `CSIMigration` 特性被启用时,所有插件操作都被从树内插件重定向到 +`csi.vsphere.vmware.com` {{< glossary_tooltip text="CSI" term_id="csi" >}} 驱动。 +为了使用此功能特性,必须在集群中安装[vSphere CSI 驱动](https://github.com/kubernetes-sigs/vsphere-csi-driver), +并启用 `CSIMigration` 和 `CSIMigrationvSphere` +[特性门控](/zh/docs/reference/command-line-tools-reference/feature-gates/)。 + + +此特性还要求 vSphere vCenter/ESXi 的版本至少为 7.0u1,且 HW 版本至少为 +VM version 15。 + +{{< note >}} + +vSphere CSI 驱动不支持内置 `vsphereVolume` 的以下 StorageClass 参数: + +* `diskformat` +* `hostfailurestotolerate` +* `forceprovisioning` +* `cachereservation` +* `diskstripes` +* `objectspacereservation` +* `iopslimit` + + +使用这些参数创建的现有卷将被迁移到 vSphere CSI 驱动,不过使用 vSphere +CSI 驱动所创建的新卷都不会理会这些参数。 + +{{< /note >}} + + +#### vSphere CSI 迁移完成 {#vsphere-csi-migration-complete} + +{{< feature-state for_k8s_version="v1.19" state="beta" >}} + + +为了避免控制器管理器和 kubelet 加载 `vsphereVolume` 插件,你需要将 +`CSIMigrationVSphereComplete` 特性设置为 `true`。你还必须在所有工作节点上安装 +`csi.vsphere.vmware.com` {{< glossary_tooltip text="CSI" term_id="csi" >}} 驱动。 + + ## 使用 subPath {#using-path} @@ -1778,11 +1826,16 @@ property can be used to specify a sub-path inside the referenced volume instead `volumeMounts.subPath` 属性可用于指定所引用的卷内的子路径,而不是其根路径。 -下面是一个使用同一共享卷的、内含 LAMP 栈(Linux Apache Mysql PHP)的 Pod 的示例。 -HTML 内容被映射到卷的 `html` 文件夹,数据库将被存储在卷的 `mysql` 文件夹中: +下面例子展示了如何配置某包含 LAMP 堆栈(Linux Apache MySQL PHP)的 Pod 使用同一共享卷。 +此示例中的 `subPath` 配置不建议在生产环境中使用。 +PHP 应用的代码和相关数据映射到卷的 `html` 文件夹,MySQL 数据库存储在卷的 `mysql` 文件夹中: ```yaml apiVersion: v1 @@ -1813,28 +1866,30 @@ spec: ``` -### 使用带有扩展环境变量的 subPath +### 使用带有扩展环境变量的 subPath {#using-subpath-expanded-environment} -{{< feature-state for_k8s_version="v1.15" state="beta" >}} +{{< feature-state for_k8s_version="v1.17" state="stable" >}} -使用 `subPathExpr` 字段从 Downward API 环境变量构造 `subPath` 目录名。 -在使用此特性之前,必须启用 `VolumeSubpathEnvExpansion` 功能开关。 +使用 `subPathExpr` 字段可以基于 Downward API 环境变量来构造 `subPath` 目录名。 `subPath` 和 `subPathExpr` 属性是互斥的。 -在这个示例中,Pod 基于 Downward API 中的 Pod 名称,使用 `subPathExpr` -在 hostPath 卷 `/var/log/pods` 中创建目录 `pod1`。 -主机目录 `/var/log/pods/pod1` 挂载到了容器的 `/logs` 中。 +在这个示例中,Pod 使用 `subPathExpr` 来 hostPath 卷 `/var/log/pods` 中创建目录 `pod1`。 +`hostPath` 卷采用来自 `downwardAPI` 的 Pod 名称生成目录名。 +宿主目录 `/var/log/pods/pod1` 被挂载到容器的 `/logs` 中。 ```yaml apiVersion: v1 @@ -1872,44 +1927,43 @@ medium of the filesystem holding the kubelet root dir (typically `hostPath` volume can consume, and no isolation between Containers or between Pods. --> -## 资源 +## 资源 {#resources} -`emptyDir` 卷的存储介质(磁盘、SSD 等)是由保存 kubelet 根目录(通常是 `/var/lib/kubelet`)的文件系统的介质确定。 -`emptyDir` 卷或者 `hostPath` 卷可以消耗的空间没有限制,容器之间或 Pod 之间也没有隔离。 +`emptyDir` 卷的存储介质(磁盘、SSD 等)是由保存 kubelet 数据的根目录 +(通常是 `/var/lib/kubelet`)的文件系统的介质确定。 +Kubernetes 对 `emptyDir` 卷或者 `hostPath` 卷可以消耗的空间没有限制, +容器之间或 Pod 之间也没有隔离。 -将来,我们希望 `emptyDir` 卷和 `hostPath` 卷能够使用 -[resource](/zh/docs/concepts/configuration/manage-resources-containers/) -规约来请求一定量的空间, -并且能够为具有多种介质类型的集群选择要使用的介质类型。 +要了解如何使用资源规约来请求空间,可参考 +[如何管理资源](/zh/docs/concepts/configuration/manage-resources-containers/)。 + +## 树外(Out-of-Tree)卷插件 {#out-of-tree-volume-plugins} -## Out-of-Tree 卷插件 - -Out-of-Tree 卷插件包括容器存储接口(CSI)和 FlexVolume。 +Out-of-Tree 卷插件包括 +{{< glossary_tooltip text="容器存储接口(CSI)" term_id="csi" >}} (CSI) +和 FlexVolume。 它们使存储供应商能够创建自定义存储插件,而无需将它们添加到 Kubernetes 代码仓库。 - -在引入 CSI 和 FlexVolume 之前,所有卷插件(如上面列出的卷类型)都是 "in-tree" 的, -这意味着它们是与 Kubernetes 的核心组件一同构建、链接、编译和交付的,并且这些插件都扩展了 Kubernetes 的核心 API。 +以前,所有卷插件(如上面列出的卷类型)都是“树内(In-Tree)”的。 +“树内”插件是与 Kubernetes 的核心组件一同构建、链接、编译和交付的。 这意味着向 Kubernetes 添加新的存储系统(卷插件)需要将代码合并到 Kubernetes 核心代码库中。 +CSI 和 FlexVolume 都允许独立于 Kubernetes 代码库开发卷插件,并作为扩展部署 +(安装)在 Kubernetes 集群上。 -CSI 和 FlexVolume 都允许独立于 Kubernetes 代码库开发卷插件,并作为扩展部署(安装)在 Kubernetes 集群上。 - -对于希望创建 out-of-tree 卷插件的存储供应商,请参考[这个 FAQ](https://github.com/kubernetes/community/blob/master/sig-storage/volume-plugin-faq.md)。 +对于希望创建树外(Out-Of-Tree)卷插件的存储供应商,请参考 +[卷插件常见问题](https://github.com/kubernetes/community/blob/master/sig-storage/volume-plugin-faq.md)。 ### CSI -{{< feature-state for_k8s_version="v1.10" state="beta" >}} - - [容器存储接口](https://github.com/container-storage-interface/spec/blob/master/spec.md) (CSI) 为容器编排系统(如 Kubernetes)定义标准接口,以将任意存储系统暴露给它们的容器工作负载。 @@ -1944,17 +1996,14 @@ Please read the [CSI design proposal](https://github.com/kubernetes/community/bl CSI support was introduced as alpha in Kubernetes v1.9, moved to beta in Kubernetes v1.10, and is GA in Kubernetes v1.13. --> - 更多详情请阅读 [CSI 设计方案](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/storage/container-storage-interface.md)。 -CSI 的支持在 Kubernetes v1.9 中作为 alpha 特性引入,在 Kubernetes v1.10 中转为 beta 特性,并在 Kubernetes v1.13 正式 GA。 - {{< note >}} -Kubernetes v1.13中不支持 CSI 规范版本0.2和0.3,并将在以后的版本中删除。 +Kubernetes v1.13 废弃了对 CSI 规范版本 0.2 和 0.3 的支持,并将在以后的版本中删除。 {{< /note >}} {{< note >}} -CSI驱动程序可能并非在所有Kubernetes版本中都兼容。 -请查看特定CSI驱动程序的文档,以获取每个 Kubernetes 版本所支持的部署步骤以及兼容性列表。 +CSI 驱动可能并非兼容所有的 Kubernetes 版本。 +请查看特定 CSI 驱动的文档,以了解各个 Kubernetes 版本所支持的部署步骤以及兼容性列表。 {{< /note >}} +一旦在 Kubernetes 集群上部署了 CSI 兼容卷驱动程序,用户就可以使用 `csi` 卷类型来 +挂接、挂载 CSI 驱动所提供的卷。 + +`csi` 卷可以在 Pod 中以三种方式使用: + +* 通过 PersistentVolumeClaim(#persistentvolumeclaim) 对象引用 +* 使用[一般性的临时卷](/zh/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volume) + (Alpha 特性) +* 使用 [CSI 临时卷](/zh/docs/concepts/storage/ephemeral-volumes/#csi-ephemeral-volume), + 前提是驱动支持这种用法(Beta 特性) + + - -一旦在 Kubernetes 集群上部署了 CSI 兼容卷驱动程序,用户就可以使用 `csi` 卷类型来关联、挂载 CSI 驱动程序暴露出来的卷。 - -`csi` 卷类型不支持来自 Pod 的直接引用,只能通过 `PersistentVolumeClaim` 对象在 Pod 中引用。 - 存储管理员可以使用以下字段来配置 CSI 持久卷: - -- `driver`:指定要使用的卷驱动程序名称的字符串值。 - 这个值必须与 CSI 驱动程序在 `GetPluginInfoResponse` 中返回的值相对应;该接口定义在 [CSI 规范](https://github.com/container-storage-interface/spec/blob/master/spec.md#getplugininfo)中。 - Kubernetes 使用所给的值来标识要调用的 CSI 驱动程序;CSI 驱动程序也使用该值来辨识哪些 PV 对象属于该 CSI 驱动程序。 +- `driver`:指定要使用的卷驱动名称的字符串值。 + 这个值必须与 CSI 驱动程序在 `GetPluginInfoResponse` 中返回的值相对应; + 该接口定义在 [CSI 规范](https://github.com/container-storage-interface/spec/blob/master/spec.md#getplugininfo)中。 + Kubernetes 使用所给的值来标识要调用的 CSI 驱动程序;CSI 驱动程序也使用该值来辨识 + 哪些 PV 对象属于该 CSI 驱动程序。 - `volumeHandle`:唯一标识卷的字符串值。 - 该值必须与CSI 驱动程序在 `CreateVolumeResponse` 的 `volume_id` 字段中返回的值相对应;接口定义在 [CSI spec](https://github.com/container-storageinterface/spec/blob/master/spec.md#createvolume) 中。 + 该值必须与 CSI 驱动在 `CreateVolumeResponse` 的 `volume_id` 字段中返回的值相对应; + 接口定义在 [CSI spec](https://github.com/container-storageinterface/spec/blob/master/spec.md#createvolume) 中。 在所有对 CSI 卷驱动程序的调用中,引用该 CSI 卷时都使用此值作为 `volume_id` 参数。 -- `readOnly`:一个可选的布尔值,指示通过 `ControllerPublished` 关联该卷时是否设置该卷为只读。 - 默认值是 false。 - 该值通过 `ControllerPublishVolumeRequest` 中的 `readonly` 字段传递给 CSI 驱动程序。 +- `readOnly`:一个可选的布尔值,指示通过 `ControllerPublished` 关联该卷时是否设置 + 该卷为只读。默认值是 false。 + 该值通过 `ControllerPublishVolumeRequest` 中的 `readonly` 字段传递给 CSI 驱动。 - - `volumeAttributes`:一个字符串到字符串的映射表,用来设置卷的静态属性。 - 该映射必须与 CSI 驱动程序返回的 `CreateVolumeResponse` 中的 `volume.attributes` 字段的映射相对应;[CSI 规范](https://github.com/container-storage-interface/spec/blob/master/spec.md#createvolume) 中有相应的定义。 - 该映射通过`ControllerPublishVolumeRequest`、`NodeStageVolumeRequest`、和 `NodePublishVolumeRequest` 中的 `volume_attributes` 字段传递给 CSI 驱动。 + 该映射必须与 CSI 驱动程序返回的 `CreateVolumeResponse` 中的 `volume.attributes` + 字段的映射相对应; + [CSI 规范](https://github.com/container-storage-interface/spec/blob/master/spec.md#createvolume) 中有相应的定义。 + 该映射通过`ControllerPublishVolumeRequest`、`NodeStageVolumeRequest`、和 + `NodePublishVolumeRequest` 中的 `volume_attributes` 字段传递给 CSI 驱动。 -- `controllerPublishSecretRef`:对包含敏感信息的 secret 对象的引用;该敏感信息会被传递给 CSI 驱动来完成 CSI `ControllerPublishVolume` 和 `ControllerUnpublishVolume` 调用。 - 此字段是可选的;在不需要 secret 时可以是空的。 - 如果 secret 对象包含多个 secret,则所有的 secret 都会被传递。 +- `controllerPublishSecretRef`:对包含敏感信息的 Secret 对象的引用; + 该敏感信息会被传递给 CSI 驱动来完成 CSI `ControllerPublishVolume` 和 + `ControllerUnpublishVolume` 调用。 + 此字段是可选的;在不需要 Secret 时可以是空的。 + 如果 Secret 对象包含多个 Secret 条目,则所有的 Secret 条目都会被传递。 -- `nodeStageSecretRef`:对包含敏感信息的 secret 对象的引用,以传递给 CSI 驱动来完成 CSI `NodeStageVolume` 调用。 - 此字段是可选的,如果不需要 secret,则可能是空的。 - 如果 secret 对象包含多个 secret,则传递所有 secret。 +- `nodeStageSecretRef`:对包含敏感信息的 Secret 对象的引用。 + 该信息会传递给 CSI 驱动来完成 CSI `NodeStageVolume` 调用。 + 此字段是可选的,如果不需要 Secret,则可能是空的。 + 如果 Secret 对象包含多个 Secret 条目,则传递所有 Secret 条目。 -- `nodePublishSecretRef`:对包含敏感信息的 secret 对象的引用,以传递给 CSI 驱动来完成 CSI ``NodePublishVolume` 调用。 - 此字段是可选的,如果不需要 secret,则可能是空的。 - 如果 secret 对象包含多个 secret,则传递所有 secret。 +- `nodePublishSecretRef`:对包含敏感信息的 Secret 对象的引用。 + 该信息传递给 CSI 驱动来完成 CSI `NodePublishVolume` 调用。 + 此字段是可选的,如果不需要 Secret,则可能是空的。 + 如果 Secret 对象包含多个 Secret 条目,则传递所有 Secret 条目。 -#### CSI 原始块卷支持 +#### CSI 原始块卷支持 {#csi-raw-block-volume-support} -{{< feature-state for_k8s_version="v1.14" state="beta" >}} +{{< feature-state for_k8s_version="v1.18" state="stable" >}} - -从 1.11 版本开始,CSI 引入了对原始块卷的支持。该特性依赖于在 Kubernetes 的之前版本中引入的原始块卷(Raw Block Volume)功能。 -该特性将使具有外部 CSI 驱动程序的供应商能够在 Kubernetes 工作负载中实现原始块卷支持。 +具有外部 CSI 驱动程序的供应商能够在 Kubernetes 工作负载中实现原始块卷支持。 - -CSI块卷支持功能已启用,但默认情况下启用。必须为此功能启用的两个功能是“ BlockVolume”和“ CSIBlockVolume”。 - -``` ---feature-gates=BlockVolume=true,CSIBlockVolume=true -``` - -学习怎样[安装您的带有块卷支持的 PV/PVC](/docs/concepts/storage/persistent-volumes/#raw-block-volume-support)。 +你可以和以前一样,安装自己的 +[带有原始块卷支持的 PV/PVC](/zh/docs/concepts/storage/persistent-volumes/#raw-block-volume-support), +采用 CSI 对此过程没有影响。 - -#### CSI临时卷 +#### CSI 临时卷 {#csi-ephemeral-volumes} {{< feature-state for_k8s_version="v1.16" state="beta" >}} - -此功能使 CSI 卷可以直接嵌入 Pod 规范中,而不是 PersistentVolume 中。 以这种方式指定的卷是临时的,不会在 Pod 重新启动后持续存在。 - -实例: - -```yaml -kind: Pod -apiVersion: v1 -metadata: - name: my-csi-app -spec: - containers: - - name: my-frontend - image: busybox - volumeMounts: - - mountPath: "/data" - name: my-csi-inline-vol - command: [ "sleep", "1000000" ] - volumes: - - name: my-csi-inline-vol - csi: - driver: inline.storage.kubernetes.io - volumeAttributes: - foo: bar -``` +你可以直接在 Pod 规约中配置 CSI 卷。采用这种方式配置的卷都是临时卷, +无法在 Pod 重新启动后继续存在。 +进一步的信息可参阅[临时卷](/zh/docs/concepts/storage/ephemeral-volumes/#csi-ephemeral-volume)。 - -此功能需要启用 CSIInlineVolume 功能门。 从Kubernetes 1.16开始默认启用它。 - -CSI 临时卷仅由一部分 CSI 驱动程序支持。 请在[此处](https://kubernetes-csi.github.io/docs/drivers.html)查看 CSI 驱动程序列表。 - - +有关如何开发 CSI 驱动的更多信息,请参考 [kubernetes-csi 文档](https://kubernetes-csi.github.io/docs/)。 + + +#### 从树内插件迁移到 CSI 驱动程序 {#migrating-to-csi-drivers-from-in-tree-plugins} -# 开发人员资源 -有关如何开发 CSI 驱动程序的更多信息,请参考[kubernetes-csi文档](https://kubernetes-csi.github.io/docs/) - -#### 从 in-tree 插件迁移到 CSI 驱动程序 - -{{< feature-state for_k8s_version="v1.14" state="alpha" >}} +{{< feature-state for_k8s_version="v1.17" state="beta" >}} +启用 `CSIMigration` 功能后,针对现有树内插件的操作会被重定向到相应的 CSI 插件 +(应已安装和配置)。 +因此,操作员在过渡到取代树内插件的 CSI 驱动时,无需对现有存储类、PV 或 PVC +(指树内插件)进行任何配置更改。 -启用 CSI 迁移功能后,会将针对现有 in-tree 插件的操作定向到相应的 CSI 插件(应安装和配置)。 -该功能实现了必要的转换逻辑和填充以无缝方式重新路由操作。 因此,操作员在过渡到取代树内插件的CSI驱动程序时,无需对现有存储类,PV 或 PVC(指 in-tree 插件)进行任何配置更改。 -在 Alpha 状态下,受支持的操作和功能包括供应/删除,附加/分离,安装/卸载和调整卷大小。 -上面的 "卷类型" 部分列出了支持 CSI 迁移并已实现相应 CSI 驱动程序的树内插件。 +所支持的操作和功能包括:配备(Provisioning)/删除、挂接(Attach)/解挂(Detach)、 +挂载(Mount)/卸载(Unmount)和调整卷大小。 -### FlexVolume {#flexVolume} +上面的[卷类型](#volume-types)节列出了支持 `CSIMigration` 并已实现相应 CSI +驱动程序的树内插件。 + +### flexVolume -FlexVolume 是一个自 1.2 版本(在 CSI 之前)以来在 Kubernetes 中一直存在的 out-of-tree 插件接口。 +FlexVolume 是一个自 1.2 版本(在 CSI 之前)以来在 Kubernetes 中一直存在的树外插件接口。 它使用基于 exec 的模型来与驱动程序对接。 -用户必须在每个节点(在某些情况下是主节点)上的预定义卷插件路径中安装 FlexVolume 驱动程序可执行文件。 +用户必须在每个节点(在某些情况下是主控节点)上的预定义卷插件路径中安装 +FlexVolume 驱动程序可执行文件。 -Pod 通过 `flexvolume` in-tree 插件与 Flexvolume 驱动程序交互。 -更多详情请参考[这里](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-storage/flexvolume.md)。 +Pod 通过 `flexvolume` 树内插件与 Flexvolume 驱动程序交互。 +更多详情请参考 [FlexVolume](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-storage/flexvolume.md) 示例。 +## 挂载卷的传播 {#mount-propagation} -## 挂载卷的传播 +挂载卷的传播能力允许将容器安装的卷共享到同一 Pod 中的其他容器, +甚至共享到同一节点上的其他 Pod。 -挂载卷的传播能力允许将容器安装的卷共享到同一 Pod 中的其他容器,甚至共享到同一节点上的其他 Pod。 - -卷的挂载传播特性由 Container.volumeMounts 中的 `mountPropagation` 字段控制。 +卷的挂载传播特性由 `Container.volumeMounts` 中的 `mountPropagation` 字段控制。 它的值包括: - * `None` - 此卷挂载将不会感知到主机后续在此卷或其任何子目录上执行的挂载变化。 +* `None` - 此卷挂载将不会感知到主机后续在此卷或其任何子目录上执行的挂载变化。 类似的,容器所创建的卷挂载在主机上是不可见的。这是默认模式。 - 该模式等同于 [Linux 内核文档](https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt)中描述的 `private` 挂载传播选项。 + + 该模式等同于 [Linux 内核文档](https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt) + 中描述的 `private` 挂载传播选项。 - * `HostToContainer` - 此卷挂载将会感知到主机后续针对此卷或其任何子目录的挂载操作。 +* `HostToContainer` - 此卷挂载将会感知到主机后续针对此卷或其任何子目录的挂载操作。 换句话说,如果主机在此挂载卷中挂载任何内容,容器将能看到它被挂载在那里。 - 类似的,配置了 `Bidirectional` 挂载传播选项的 Pod 如果在同一卷上挂载了内容,挂载传播设置为 `HostToContainer` 的容器都将能看到这一变化。 + 类似的,配置了 `Bidirectional` 挂载传播选项的 Pod 如果在同一卷上挂载了内容, + 挂载传播设置为 `HostToContainer` 的容器都将能看到这一变化。 - 该模式等同于 [Linux 内核文档](https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt) 中描述的 `rslave` 挂载传播选项。 + 该模式等同于 [Linux 内核文档](https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt) + 中描述的 `rslave` 挂载传播选项。 - - * `Bidirectional` - 这种卷挂载和 `HostToContainer` 挂载表现相同。 - - 另外,容器创建的卷挂载将被传播回至主机和使用同一卷的所有 Pod 的所有容器。 - - 该模式等同于 [Linux 内核文档](https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt) 中描述的 `rshared` 挂载传播选项。 - - -{{< caution >}} -`Bidirectional` 形式的挂载传播可能比较危险。 -它可以破坏主机操作系统,因此它只被允许在特权容器中使用。 -强烈建议您熟悉 Linux 内核行为。 -此外,由 Pod 中的容器创建的任何卷挂载必须在终止时由容器销毁(卸载)。 -{{< /caution >}} +* `Bidirectional` - 这种卷挂载和 `HostToContainer` 挂载表现相同。 + 另外,容器创建的卷挂载将被传播回至主机和使用同一卷的所有 Pod 的所有容器。 + + 该模式等同于 [Linux 内核文档](https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt) + 中描述的 `rshared` 挂载传播选项。 + + + {{< warning >}} + `Bidirectional` 形式的挂载传播可能比较危险。 + 它可以破坏主机操作系统,因此它只被允许在特权容器中使用。 + 强烈建议你熟悉 Linux 内核行为。 + 此外,由 Pod 中的容器创建的任何卷挂载必须在终止时由容器销毁(卸载)。 + {{< /warning >}} -### 配置 +### 配置 {#configuration} -在某些部署环境中,挂载传播正常工作前,必须在 Docker 中正确配置挂载共享(mount share),如下所示。 +在某些部署环境中,挂载传播正常工作前,必须在 Docker 中正确配置挂载共享(mount share), +如下所示。 -编辑您的 Docker `systemd` 服务文件,按下面的方法设置 `MountFlags`: +编辑你的 Docker `systemd` 服务文件,按下面的方法设置 `MountFlags`: ```shell MountFlags=shared ``` + @@ -2330,14 +2364,12 @@ sudo systemctl daemon-reload sudo systemctl restart docker ``` - - ## {{% heading "whatsnext" %}} -* 参考[使用持久卷部署 WordPress 和 MySQL](/zh/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume/) 示例。 +参考[使用持久卷部署 WordPress 和 MySQL](/zh/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume/) 示例。 From 4ed2587df3ba3a27d1acf4220f04010cb17859d5 Mon Sep 17 00:00:00 2001 From: ramnar Date: Wed, 18 Nov 2020 10:03:23 +0530 Subject: [PATCH 15/80] implemented review comments --- content/en/docs/reference/kubectl/cheatsheet.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/reference/kubectl/cheatsheet.md b/content/en/docs/reference/kubectl/cheatsheet.md index 3c5eacb480..8ff32aa54e 100644 --- a/content/en/docs/reference/kubectl/cheatsheet.md +++ b/content/en/docs/reference/kubectl/cheatsheet.md @@ -91,10 +91,10 @@ kubectl apply -f ./dir # create resource(s) in all manif kubectl apply -f https://git.io/vPieo # create resource(s) from url kubectl create deployment nginx --image=nginx # start a single instance of nginx -# create a job which prints "hello world" +# create a Job which prints "Hello World" kubectl create job hello --image=busybox -- echo "Hello World" -# create a cronjob which prints "hello world" for every minute +# create a CronJob that prints "Hello World" every minute kubectl create cronjob hello --image=busybox --schedule="*/1 * * * *" -- echo "Hello World" kubectl explain pods # get the documentation for pod manifests From 937ddcea5acfb2b1b52cfcab841ca82a24e0dd0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9opold=20Jacquot?= Date: Thu, 19 Nov 2020 22:17:34 +0100 Subject: [PATCH 16/80] Improve Taints and Tolerations example --- .../scheduling-eviction/taint-and-toleration.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/content/en/docs/concepts/scheduling-eviction/taint-and-toleration.md b/content/en/docs/concepts/scheduling-eviction/taint-and-toleration.md index 731d2bc263..079024c9d6 100644 --- a/content/en/docs/concepts/scheduling-eviction/taint-and-toleration.md +++ b/content/en/docs/concepts/scheduling-eviction/taint-and-toleration.md @@ -32,15 +32,15 @@ You add a taint to a node using [kubectl taint](/docs/reference/generated/kubect For example, ```shell -kubectl taint nodes node1 key=value:NoSchedule +kubectl taint nodes node1 key1=value1:NoSchedule ``` -places a taint on node `node1`. The taint has key `key`, value `value`, and taint effect `NoSchedule`. +places a taint on node `node1`. The taint has key `key1`, value `value1`, and taint effect `NoSchedule`. This means that no pod will be able to schedule onto `node1` unless it has a matching toleration. To remove the taint added by the command above, you can run: ```shell -kubectl taint nodes node1 key=value:NoSchedule- +kubectl taint nodes node1 key1=value1:NoSchedule- ``` You specify a toleration for a pod in the PodSpec. Both of the following tolerations "match" the @@ -49,15 +49,15 @@ to schedule onto `node1`: ```yaml tolerations: -- key: "key" +- key: "key1" operator: "Equal" - value: "value" + value: "value1" effect: "NoSchedule" ``` ```yaml tolerations: -- key: "key" +- key: "key1" operator: "Exists" effect: "NoSchedule" ``` @@ -80,7 +80,7 @@ There are two special cases: An empty `key` with operator `Exists` matches all keys, values and effects which means this will tolerate everything. -An empty `effect` matches all effects with key `key`. +An empty `effect` matches all effects with key `key1`. {{< /note >}} From 4ba449d527bda4a20157a39b0f718a82e88470ed Mon Sep 17 00:00:00 2001 From: "M. Habib Rosyad" Date: Fri, 20 Nov 2020 14:32:12 +0700 Subject: [PATCH 17/80] Switch New York Times case study to use youtube shortcode --- .../en/case-studies/newyorktimes/index.html | 7 +++---- layouts/shortcodes/case-studies/quote.html | 6 +++--- static/css/new-case-studies.css | 19 +++++++++++++++++++ 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/content/en/case-studies/newyorktimes/index.html b/content/en/case-studies/newyorktimes/index.html index ae57a9ec7d..74bc5af627 100644 --- a/content/en/case-studies/newyorktimes/index.html +++ b/content/en/case-studies/newyorktimes/index.html @@ -26,10 +26,9 @@ case_study_details:

Speed of delivery increased. Some of the legacy VM-based deployments took 45 minutes; with Kubernetes, that time was "just a few seconds to a couple of minutes," says Engineering Manager Brian Balser. Adds Li: "Teams that used to deploy on weekly schedules or had to coordinate schedules with the infrastructure team now deploy their updates independently, and can do it daily when necessary." Adopting Cloud Native Computing Foundation technologies allows for a more unified approach to deployment across the engineering staff, and portability for the company.

-{{< case-studies/quote author="Deep Kapadia, Executive Director, Engineering at The New York Times">}} - - -
+{{< case-studies/quote author="Deep Kapadia, Executive Director, Engineering at The New York Times" >}} +{{< youtube DqS_IPw-c6o youtube-quote-sm >}} +{{< youtube Tm4VfJtOHt8 youtube-quote-sm >}} "I think once you get over the initial hump, things get a lot easier and actually a lot faster." {{< /case-studies/quote >}} diff --git a/layouts/shortcodes/case-studies/quote.html b/layouts/shortcodes/case-studies/quote.html index e0990c8c18..f59cdd9260 100644 --- a/layouts/shortcodes/case-studies/quote.html +++ b/layouts/shortcodes/case-studies/quote.html @@ -3,10 +3,10 @@ {{ else }} diff --git a/static/css/new-case-studies.css b/static/css/new-case-studies.css index fb8219835a..fbc6edb143 100644 --- a/static/css/new-case-studies.css +++ b/static/css/new-case-studies.css @@ -126,6 +126,13 @@ h4[id]:before { margin: 0 auto; } +.content .quote-text p { + color: #fff; + font-size: 100%; + line-height: 1.4em; + margin-bottom: 0; +} + .quote-author { display: block; margin-top: 3em; @@ -144,6 +151,18 @@ h4[id]:before { letter-spacing: 0.03em; } +.youtube-quote-sm { + display: inline-block; + width: 380px; + height: 215px; +} + +.youtube-quote-sm iframe { + width: 100%; + height: 100%; + border: 0; +} + @media screen and (max-width: 910px) { h1 { font-size: 32px; From b5c0e5ea148053d2aa5ed3b27617d783dfe64cd9 Mon Sep 17 00:00:00 2001 From: TAKAHASHI Shuuji Date: Mon, 23 Nov 2020 13:54:21 +0900 Subject: [PATCH 18/80] Replace the diagram on authentication page with the one by mermaid. --- assets/scss/_custom.scss | 16 +++++++++++ .../access-authn-authz/authentication.md | 28 ++++++++++++++++++- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/assets/scss/_custom.scss b/assets/scss/_custom.scss index 3c598673ad..5eb26c2e54 100644 --- a/assets/scss/_custom.scss +++ b/assets/scss/_custom.scss @@ -71,6 +71,22 @@ body.td-404 main .error-details { max-width: 80%; border: 1px solid rgb(222, 226, 230); border-radius: 5px; + margin-bottom: 1rem; + padding-top: 1rem; + padding-bottom: 1rem; + + // mermaid diagram - sequence diagram + .actor { + fill: #326ce5 !important; + } + text.actor { + font-size: 18px !important; + stroke: white !important; + fill: white !important; + } + .activation0 { + fill: #c9e9ec !important; + } } /* HEADER */ diff --git a/content/en/docs/reference/access-authn-authz/authentication.md b/content/en/docs/reference/access-authn-authz/authentication.md index c0ff47909c..8c0d1bf97b 100644 --- a/content/en/docs/reference/access-authn-authz/authentication.md +++ b/content/en/docs/reference/access-authn-authz/authentication.md @@ -282,7 +282,33 @@ from the OAuth2 [token response](https://openid.net/specs/openid-connect-core-1_ as a bearer token. See [above](#putting-a-bearer-token-in-a-request) for how the token is included in a request. -![Kubernetes OpenID Connect Flow](/images/docs/admin/k8s_oidc_login.svg) +{{< mermaid >}} +sequenceDiagram + participant user as User + participant idp as Identity Provider + participant kube as Kubectl + participant api as API Server + + user ->> idp: 1. Login to IdP + activate idp + idp -->> user: 2. Provide access_token,
id_token, and refresh_token + deactivate idp + activate user + user ->> kube: 3. Call Kubectl
with --token being the id_token
OR add tokens to .kube/config + deactivate user + activate kube + kube ->> api: 4. Authorization: Bearer... + deactivate kube + activate api + api ->> api: 5. Is JWT signature valid? + api ->> api: 6. Has the JWT expired?(iat+exp) + api ->> api: 7. user authorized? + api -->> kube: 8. Authorized: Perform
action and return result + deactivate api + activate kube + kube --x user: 9. Return result + deactivate kube +{{< /mermaid >}} 1. Login to your identity provider 2. Your identity provider will provide you with an `access_token`, `id_token` and a `refresh_token` From 499435dc14fd83117bdcea943526a1833b5347bf Mon Sep 17 00:00:00 2001 From: "Yamamoto, Hirotaka" Date: Mon, 23 Nov 2020 22:06:26 +0900 Subject: [PATCH 19/80] Add Coil CNI to networking.md Coil is a new open-source CNI plugin for Kubernetes. Resources: - https://github.com/cybozu-go/coil - https://blog.kintone.io/entry/coilv2 --- .../en/docs/concepts/cluster-administration/networking.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/content/en/docs/concepts/cluster-administration/networking.md b/content/en/docs/concepts/cluster-administration/networking.md index a124d788fd..184b40c8dc 100644 --- a/content/en/docs/concepts/cluster-administration/networking.md +++ b/content/en/docs/concepts/cluster-administration/networking.md @@ -158,6 +158,11 @@ tables to provide per-instance subnets to each host (which is limited to 50-100 entries per VPC). In short, cni-ipvlan-vpc-k8s significantly reduces the network complexity required to deploy Kubernetes at scale within AWS. +### Coil + +[Coil](https://github.com/cybozu-go/coil) is a CNI plugin designed for ease of integration, providing flexible egress networking. +Coil operates with a low overhead compared to bare metal, and allows you to define arbitrary egress NAT gateways for external networks. + ### Contiv [Contiv](https://github.com/contiv/netplugin) provides configurable networking (native l3 using BGP, overlay using vxlan, classic l2, or Cisco-SDN/ACI) for various use cases. [Contiv](https://contiv.io) is all open sourced. @@ -311,4 +316,4 @@ to run, and in both cases, the network provides one IP address per pod - as is s The early design of the networking model and its rationale, and some future plans are described in more detail in the -[networking design document](https://git.k8s.io/community/contributors/design-proposals/network/networking.md). \ No newline at end of file +[networking design document](https://git.k8s.io/community/contributors/design-proposals/network/networking.md). From d38bbe24eea036fe4b8593b3507798cb89238488 Mon Sep 17 00:00:00 2001 From: bl-ue <54780737+bl-ue@users.noreply.github.com> Date: Mon, 23 Nov 2020 16:02:21 -0500 Subject: [PATCH 20/80] Fix broken link In content/{en, ja, ko, zh}/docs/setup/production-environment/windows/user-guide-windows-containers.md: https://gist.github.com/{wagnerandrade => 19WAS85}/5424431 --- .../windows/user-guide-windows-containers.md | 2 +- .../windows/user-guide-windows-containers.md | 2 +- .../windows/user-guide-windows-containers.md | 2 +- .../windows/user-guide-windows-containers.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/content/en/docs/setup/production-environment/windows/user-guide-windows-containers.md b/content/en/docs/setup/production-environment/windows/user-guide-windows-containers.md index e28afeb9f2..b2399442eb 100644 --- a/content/en/docs/setup/production-environment/windows/user-guide-windows-containers.md +++ b/content/en/docs/setup/production-environment/windows/user-guide-windows-containers.md @@ -68,7 +68,7 @@ spec: command: - powershell.exe - -command - - "<#code used from https://gist.github.com/wagnerandrade/5424431#> ; $$listener = New-Object System.Net.HttpListener ; $$listener.Prefixes.Add('http://*:80/') ; $$listener.Start() ; $$callerCounts = @{} ; Write-Host('Listening at http://*:80/') ; while ($$listener.IsListening) { ;$$context = $$listener.GetContext() ;$$requestUrl = $$context.Request.Url ;$$clientIP = $$context.Request.RemoteEndPoint.Address ;$$response = $$context.Response ;Write-Host '' ;Write-Host('> {0}' -f $$requestUrl) ; ;$$count = 1 ;$$k=$$callerCounts.Get_Item($$clientIP) ;if ($$k -ne $$null) { $$count += $$k } ;$$callerCounts.Set_Item($$clientIP, $$count) ;$$ip=(Get-NetAdapter | Get-NetIpAddress); $$header='

Windows Container Web Server

' ;$$callerCountsString='' ;$$callerCounts.Keys | % { $$callerCountsString+='

IP {0} callerCount {1} ' -f $$ip[1].IPAddress,$$callerCounts.Item($$_) } ;$$footer='' ;$$content='{0}{1}{2}' -f $$header,$$callerCountsString,$$footer ;Write-Output $$content ;$$buffer = [System.Text.Encoding]::UTF8.GetBytes($$content) ;$$response.ContentLength64 = $$buffer.Length ;$$response.OutputStream.Write($$buffer, 0, $$buffer.Length) ;$$response.Close() ;$$responseStatus = $$response.StatusCode ;Write-Host('< {0}' -f $$responseStatus) } ; " + - "<#code used from https://gist.github.com/19WAS85/5424431#> ; $$listener = New-Object System.Net.HttpListener ; $$listener.Prefixes.Add('http://*:80/') ; $$listener.Start() ; $$callerCounts = @{} ; Write-Host('Listening at http://*:80/') ; while ($$listener.IsListening) { ;$$context = $$listener.GetContext() ;$$requestUrl = $$context.Request.Url ;$$clientIP = $$context.Request.RemoteEndPoint.Address ;$$response = $$context.Response ;Write-Host '' ;Write-Host('> {0}' -f $$requestUrl) ; ;$$count = 1 ;$$k=$$callerCounts.Get_Item($$clientIP) ;if ($$k -ne $$null) { $$count += $$k } ;$$callerCounts.Set_Item($$clientIP, $$count) ;$$ip=(Get-NetAdapter | Get-NetIpAddress); $$header='

Windows Container Web Server

' ;$$callerCountsString='' ;$$callerCounts.Keys | % { $$callerCountsString+='

IP {0} callerCount {1} ' -f $$ip[1].IPAddress,$$callerCounts.Item($$_) } ;$$footer='' ;$$content='{0}{1}{2}' -f $$header,$$callerCountsString,$$footer ;Write-Output $$content ;$$buffer = [System.Text.Encoding]::UTF8.GetBytes($$content) ;$$response.ContentLength64 = $$buffer.Length ;$$response.OutputStream.Write($$buffer, 0, $$buffer.Length) ;$$response.Close() ;$$responseStatus = $$response.StatusCode ;Write-Host('< {0}' -f $$responseStatus) } ; " nodeSelector: kubernetes.io/os: windows ``` diff --git a/content/ja/docs/setup/production-environment/windows/user-guide-windows-containers.md b/content/ja/docs/setup/production-environment/windows/user-guide-windows-containers.md index e19c795d63..9e218fae53 100644 --- a/content/ja/docs/setup/production-environment/windows/user-guide-windows-containers.md +++ b/content/ja/docs/setup/production-environment/windows/user-guide-windows-containers.md @@ -65,7 +65,7 @@ spec: command: - powershell.exe - -command - - "<#code used from https://gist.github.com/wagnerandrade/5424431#> ; $$listener = New-Object System.Net.HttpListener ; $$listener.Prefixes.Add('http://*:80/') ; $$listener.Start() ; $$callerCounts = @{} ; Write-Host('Listening at http://*:80/') ; while ($$listener.IsListening) { ;$$context = $$listener.GetContext() ;$$requestUrl = $$context.Request.Url ;$$clientIP = $$context.Request.RemoteEndPoint.Address ;$$response = $$context.Response ;Write-Host '' ;Write-Host('> {0}' -f $$requestUrl) ; ;$$count = 1 ;$$k=$$callerCounts.Get_Item($$clientIP) ;if ($$k -ne $$null) { $$count = $$k } ;$$callerCounts.Set_Item($$clientIP, $$count) ;$$ip=(Get-NetAdapter | Get-NetIpAddress); $$header='

Windows Container Web Server

' ;$$callerCountsString='' ;$$callerCounts.Keys | % { $$callerCountsString='

IP {0} callerCount {1} ' -f $$ip[1].IPAddress,$$callerCounts.Item($$_) } ;$$footer='' ;$$content='{0}{1}{2}' -f $$header,$$callerCountsString,$$footer ;Write-Output $$content ;$$buffer = [System.Text.Encoding]::UTF8.GetBytes($$content) ;$$response.ContentLength64 = $$buffer.Length ;$$response.OutputStream.Write($$buffer, 0, $$buffer.Length) ;$$response.Close() ;$$responseStatus = $$response.StatusCode ;Write-Host('< {0}' -f $$responseStatus) } ; " + - "<#code used from https://gist.github.com/19WAS85/5424431#> ; $$listener = New-Object System.Net.HttpListener ; $$listener.Prefixes.Add('http://*:80/') ; $$listener.Start() ; $$callerCounts = @{} ; Write-Host('Listening at http://*:80/') ; while ($$listener.IsListening) { ;$$context = $$listener.GetContext() ;$$requestUrl = $$context.Request.Url ;$$clientIP = $$context.Request.RemoteEndPoint.Address ;$$response = $$context.Response ;Write-Host '' ;Write-Host('> {0}' -f $$requestUrl) ; ;$$count = 1 ;$$k=$$callerCounts.Get_Item($$clientIP) ;if ($$k -ne $$null) { $$count = $$k } ;$$callerCounts.Set_Item($$clientIP, $$count) ;$$ip=(Get-NetAdapter | Get-NetIpAddress); $$header='

Windows Container Web Server

' ;$$callerCountsString='' ;$$callerCounts.Keys | % { $$callerCountsString='

IP {0} callerCount {1} ' -f $$ip[1].IPAddress,$$callerCounts.Item($$_) } ;$$footer='' ;$$content='{0}{1}{2}' -f $$header,$$callerCountsString,$$footer ;Write-Output $$content ;$$buffer = [System.Text.Encoding]::UTF8.GetBytes($$content) ;$$response.ContentLength64 = $$buffer.Length ;$$response.OutputStream.Write($$buffer, 0, $$buffer.Length) ;$$response.Close() ;$$responseStatus = $$response.StatusCode ;Write-Host('< {0}' -f $$responseStatus) } ; " nodeSelector: kubernetes.io/os: windows ``` diff --git a/content/ko/docs/setup/production-environment/windows/user-guide-windows-containers.md b/content/ko/docs/setup/production-environment/windows/user-guide-windows-containers.md index f129386a62..bae83b73a9 100644 --- a/content/ko/docs/setup/production-environment/windows/user-guide-windows-containers.md +++ b/content/ko/docs/setup/production-environment/windows/user-guide-windows-containers.md @@ -65,7 +65,7 @@ spec: command: - powershell.exe - -command - - "<#code used from https://gist.github.com/wagnerandrade/5424431#> ; $$listener = New-Object System.Net.HttpListener ; $$listener.Prefixes.Add('http://*:80/') ; $$listener.Start() ; $$callerCounts = @{} ; Write-Host('Listening at http://*:80/') ; while ($$listener.IsListening) { ;$$context = $$listener.GetContext() ;$$requestUrl = $$context.Request.Url ;$$clientIP = $$context.Request.RemoteEndPoint.Address ;$$response = $$context.Response ;Write-Host '' ;Write-Host('> {0}' -f $$requestUrl) ; ;$$count = 1 ;$$k=$$callerCounts.Get_Item($$clientIP) ;if ($$k -ne $$null) { $$count += $$k } ;$$callerCounts.Set_Item($$clientIP, $$count) ;$$ip=(Get-NetAdapter | Get-NetIpAddress); $$header='

Windows Container Web Server

' ;$$callerCountsString='' ;$$callerCounts.Keys | % { $$callerCountsString+='

IP {0} callerCount {1} ' -f $$ip[1].IPAddress,$$callerCounts.Item($$_) } ;$$footer='' ;$$content='{0}{1}{2}' -f $$header,$$callerCountsString,$$footer ;Write-Output $$content ;$$buffer = [System.Text.Encoding]::UTF8.GetBytes($$content) ;$$response.ContentLength64 = $$buffer.Length ;$$response.OutputStream.Write($$buffer, 0, $$buffer.Length) ;$$response.Close() ;$$responseStatus = $$response.StatusCode ;Write-Host('< {0}' -f $$responseStatus) } ; " + - "<#code used from https://gist.github.com/19WAS85/5424431#> ; $$listener = New-Object System.Net.HttpListener ; $$listener.Prefixes.Add('http://*:80/') ; $$listener.Start() ; $$callerCounts = @{} ; Write-Host('Listening at http://*:80/') ; while ($$listener.IsListening) { ;$$context = $$listener.GetContext() ;$$requestUrl = $$context.Request.Url ;$$clientIP = $$context.Request.RemoteEndPoint.Address ;$$response = $$context.Response ;Write-Host '' ;Write-Host('> {0}' -f $$requestUrl) ; ;$$count = 1 ;$$k=$$callerCounts.Get_Item($$clientIP) ;if ($$k -ne $$null) { $$count += $$k } ;$$callerCounts.Set_Item($$clientIP, $$count) ;$$ip=(Get-NetAdapter | Get-NetIpAddress); $$header='

Windows Container Web Server

' ;$$callerCountsString='' ;$$callerCounts.Keys | % { $$callerCountsString+='

IP {0} callerCount {1} ' -f $$ip[1].IPAddress,$$callerCounts.Item($$_) } ;$$footer='' ;$$content='{0}{1}{2}' -f $$header,$$callerCountsString,$$footer ;Write-Output $$content ;$$buffer = [System.Text.Encoding]::UTF8.GetBytes($$content) ;$$response.ContentLength64 = $$buffer.Length ;$$response.OutputStream.Write($$buffer, 0, $$buffer.Length) ;$$response.Close() ;$$responseStatus = $$response.StatusCode ;Write-Host('< {0}' -f $$responseStatus) } ; " nodeSelector: kubernetes.io/os: windows ``` diff --git a/content/zh/docs/setup/production-environment/windows/user-guide-windows-containers.md b/content/zh/docs/setup/production-environment/windows/user-guide-windows-containers.md index 80a470cfad..1fd7105edb 100644 --- a/content/zh/docs/setup/production-environment/windows/user-guide-windows-containers.md +++ b/content/zh/docs/setup/production-environment/windows/user-guide-windows-containers.md @@ -96,7 +96,7 @@ spec: command: - powershell.exe - -command - - "<#code used from https://gist.github.com/wagnerandrade/5424431#> ; $$listener = New-Object System.Net.HttpListener ; $$listener.Prefixes.Add('http://*:80/') ; $$listener.Start() ; $$callerCounts = @{} ; Write-Host('Listening at http://*:80/') ; while ($$listener.IsListening) { ;$$context = $$listener.GetContext() ;$$requestUrl = $$context.Request.Url ;$$clientIP = $$context.Request.RemoteEndPoint.Address ;$$response = $$context.Response ;Write-Host '' ;Write-Host('> {0}' -f $$requestUrl) ; ;$$count = 1 ;$$k=$$callerCounts.Get_Item($$clientIP) ;if ($$k -ne $$null) { $$count += $$k } ;$$callerCounts.Set_Item($$clientIP, $$count) ;$$ip=(Get-NetAdapter | Get-NetIpAddress); $$header='

Windows Container Web Server

' ;$$callerCountsString='' ;$$callerCounts.Keys | % { $$callerCountsString+='

IP {0} callerCount {1} ' -f $$ip[1].IPAddress,$$callerCounts.Item($$_) } ;$$footer='' ;$$content='{0}{1}{2}' -f $$header,$$callerCountsString,$$footer ;Write-Output $$content ;$$buffer = [System.Text.Encoding]::UTF8.GetBytes($$content) ;$$response.ContentLength64 = $$buffer.Length ;$$response.OutputStream.Write($$buffer, 0, $$buffer.Length) ;$$response.Close() ;$$responseStatus = $$response.StatusCode ;Write-Host('< {0}' -f $$responseStatus) } ; " + - "<#code used from https://gist.github.com/19WAS85/5424431#> ; $$listener = New-Object System.Net.HttpListener ; $$listener.Prefixes.Add('http://*:80/') ; $$listener.Start() ; $$callerCounts = @{} ; Write-Host('Listening at http://*:80/') ; while ($$listener.IsListening) { ;$$context = $$listener.GetContext() ;$$requestUrl = $$context.Request.Url ;$$clientIP = $$context.Request.RemoteEndPoint.Address ;$$response = $$context.Response ;Write-Host '' ;Write-Host('> {0}' -f $$requestUrl) ; ;$$count = 1 ;$$k=$$callerCounts.Get_Item($$clientIP) ;if ($$k -ne $$null) { $$count += $$k } ;$$callerCounts.Set_Item($$clientIP, $$count) ;$$ip=(Get-NetAdapter | Get-NetIpAddress); $$header='

Windows Container Web Server

' ;$$callerCountsString='' ;$$callerCounts.Keys | % { $$callerCountsString+='

IP {0} callerCount {1} ' -f $$ip[1].IPAddress,$$callerCounts.Item($$_) } ;$$footer='' ;$$content='{0}{1}{2}' -f $$header,$$callerCountsString,$$footer ;Write-Output $$content ;$$buffer = [System.Text.Encoding]::UTF8.GetBytes($$content) ;$$response.ContentLength64 = $$buffer.Length ;$$response.OutputStream.Write($$buffer, 0, $$buffer.Length) ;$$response.Close() ;$$responseStatus = $$response.StatusCode ;Write-Host('< {0}' -f $$responseStatus) } ; " nodeSelector: kubernetes.io/os: windows ``` From 30bf45ee5e65d8ddd0876738af052bd10e191173 Mon Sep 17 00:00:00 2001 From: Carl Henrik Lunde Date: Tue, 24 Nov 2020 22:00:16 +0100 Subject: [PATCH 21/80] Update with correct AWS product name Co-authored-by: Tim Bannister --- .../docs/concepts/services-networking/ingress-controllers.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/content/en/docs/concepts/services-networking/ingress-controllers.md b/content/en/docs/concepts/services-networking/ingress-controllers.md index f1078ddf10..73cfd6ce20 100644 --- a/content/en/docs/concepts/services-networking/ingress-controllers.md +++ b/content/en/docs/concepts/services-networking/ingress-controllers.md @@ -27,7 +27,7 @@ Kubernetes as a project currently supports and maintains [GCE](https://git.k8s.i controller with [community](https://www.getambassador.io/docs) or [commercial](https://www.getambassador.io/pro/) support from [Datawire](https://www.datawire.io/). * [AppsCode Inc.](https://appscode.com) offers support and maintenance for the most widely used [HAProxy](https://www.haproxy.org/) based ingress controller [Voyager](https://appscode.com/products/voyager). -* [AWS Load Balancer Controller](https://github.com/kubernetes-sigs/aws-load-balancer-controller) (formerly known as AWS ALB Ingress Controller) enables ingress using the [AWS Application Load Balancer](https://aws.amazon.com/elasticloadbalancing/). +* [AWS Load Balancer Controller](https://github.com/kubernetes-sigs/aws-load-balancer-controller) (formerly known as AWS ALB Ingress Controller) enables ingress using [AWS Elastic Load Balancing](https://aws.amazon.com/elasticloadbalancing/). * [Contour](https://projectcontour.io/) is an [Envoy](https://www.envoyproxy.io/) based ingress controller provided and supported by VMware. * Citrix provides an [Ingress Controller](https://github.com/citrix/citrix-k8s-ingress-controller) for its hardware (MPX), virtualized (VPX) and [free containerized (CPX) ADC](https://www.citrix.com/products/citrix-adc/cpx-express.html) for [baremetal](https://github.com/citrix/citrix-k8s-ingress-controller/tree/master/deployment/baremetal) and [cloud](https://github.com/citrix/citrix-k8s-ingress-controller/tree/master/deployment) deployments. @@ -72,4 +72,3 @@ Make sure you review your ingress controller's documentation to understand the c * Learn more about [Ingress](/docs/concepts/services-networking/ingress/). * [Set up Ingress on Minikube with the NGINX Controller](/docs/tasks/access-application-cluster/ingress-minikube). - From e97677e6de428560f32f8dd073338978861f1201 Mon Sep 17 00:00:00 2001 From: Qiming Teng Date: Fri, 13 Nov 2020 13:46:57 +0800 Subject: [PATCH 22/80] [zh] Sync changes from English site (5) --- ...ries-to-pod-etc-hosts-with-host-aliases.md | 98 ++-- .../connect-applications-service.md | 3 +- .../services-networking/dns-pod-service.md | 95 +++- .../services-networking/dual-stack.md | 12 +- .../ingress-controllers.md | 13 +- .../concepts/services-networking/ingress.md | 17 +- .../concepts/services-networking/service.md | 510 +++++++++--------- 7 files changed, 423 insertions(+), 325 deletions(-) diff --git a/content/zh/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases.md b/content/zh/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases.md index 6db722eed5..4229689422 100644 --- a/content/zh/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases.md +++ b/content/zh/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases.md @@ -2,52 +2,62 @@ title: 使用 HostAliases 向 Pod /etc/hosts 文件添加条目 content_type: concept weight: 60 +min-kubernetes-server-version: 1.7 --- -{{< toc >}} + +当 DNS 配置以及其它选项不合理的时候,通过向 Pod 的 /etc/hosts 文件中添加条目, +可以在 Pod 级别覆盖对主机名的解析。你可以通过 PodSpec 的 HostAliases +字段来添加这些自定义条目。 -当 DNS 配置以及其它选项不合理的时候,通过向 Pod 的 /etc/hosts 文件中添加条目,可以在 Pod 级别覆盖对主机名的解析。在 1.7 版本,用户可以通过 PodSpec 的 HostAliases 字段来添加这些自定义的条目。 - -建议通过使用 HostAliases 来进行修改,因为该文件由 Kubelet 管理,并且可以在 Pod 创建/重启过程中被重写。 - +建议通过使用 HostAliases 来进行修改,因为该文件由 Kubelet 管理,并且 +可以在 Pod 创建/重启过程中被重写。 ## 默认 hosts 文件内容 -让我们从一个 Nginx Pod 开始,给该 Pod 分配一个 IP: +让我们从一个 Nginx Pod 开始,该 Pod 被分配一个 IP: ```shell kubectl run nginx --image nginx --generator=run-pod/v1 ``` -```shell +``` pod/nginx created ``` -检查Pod IP: +检查 Pod IP: ```shell kubectl get pods --output=wide ``` -```shell +``` NAME READY STATUS RESTARTS AGE IP NODE nginx 1/1 Running 0 13s 10.200.0.4 worker0 ``` @@ -55,14 +65,13 @@ nginx 1/1 Running 0 13s 10.200.0.4 worker0 - 主机文件的内容如下所示: ```shell kubectl exec nginx -- cat /etc/hosts ``` -```none +``` # Kubernetes-managed hosts file. 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback @@ -77,63 +86,63 @@ fe00::2 ip6-allrouters By default, the `hosts` file only includes IPv4 and IPv6 boilerplates like `localhost` and its own hostname. --> -默认,hosts 文件只包含 ipv4 和 ipv6 的样板内容,像 `localhost` 和主机名称。 +默认情况下,hosts 文件只包含 IPv4 和 IPv6 的样板内容,像 `localhost` 和主机名称。 +## 通过 HostAliases 增加额外条目 -## 通过 HostAliases 增加额外的条目 - -除了默认的样板内容,我们可以向 hosts 文件添加额外的条目,将 `foo.local`、 `bar.local` 解析为`127.0.0.1`, -将 `foo.remote`、 `bar.remote` 解析为 `10.1.2.3`,我们可以在 `.spec.hostAliases` 下为 Pod 添加 HostAliases。 +除了默认的样板内容,我们可以向 hosts 文件添加额外的条目。 +例如,要将 `foo.local`、`bar.local` 解析为 `127.0.0.1`, +将 `foo.remote`、 `bar.remote` 解析为 `10.1.2.3`,我们可以在 +`.spec.hostAliases` 下为 Pod 配置 HostAliases。 {{< codenew file="service/networking/hostaliases-pod.yaml" >}} - -可以使用以下命令启动此Pod: +你可以使用以下命令用此配置启动 Pod: ```shell kubectl apply -f hostaliases-pod.yaml ``` -```shell +``` pod/hostaliases-pod created ``` -检查Pod IP 和状态: +检查 Pod 详情,查看其 IPv4 地址和状态: ```shell kubectl get pod --output=wide ``` -```shell -NAME READY STATUS RESTARTS AGE IP NODE -hostaliases-pod 0/1 Completed 0 6s 10.200.0.5 worker0 +``` +NAME READY STATUS RESTARTS AGE IP NODE +hostaliases-pod 0/1 Completed 0 6s 10.200.0.5 worker0 ``` - hosts 文件的内容看起来类似如下这样: ```shell kubectl logs hostaliases-pod ``` -```none +``` # Kubernetes-managed hosts file. 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback @@ -151,30 +160,31 @@ fe00::2 ip6-allrouters - 在最下面额外添加了一些条目。 +## 为什么 kubelet 管理 hosts 文件? -## 为什么 Kubelet 管理 hosts文件? +kubelet [管理](https://github.com/kubernetes/kubernetes/issues/14633) Pod +中每个容器的 hosts 文件,避免 Docker 在容器已经启动之后去 +[修改](https://github.com/moby/moby/issues/17190) 该文件。 -kubelet [管理](https://github.com/kubernetes/kubernetes/issues/14633) Pod 中每个容器的 hosts 文件,避免 Docker 在容器已经启动之后去 [修改](https://github.com/moby/moby/issues/17190) 该文件。 - -因为该文件是托管性质的文件,无论容器重启或 Pod 重新调度,用户修改该 hosts 文件的任何内容,都会在 Kubelet 重新安装后被覆盖。因此,不建议修改该文件的内容。 +{{< caution >}} + +请避免手工更改容器内的 hosts 文件内容。 +如果你对 hosts 文件做了手工修改,这些修改都会在容器退出时丢失。 +{{< /caution >}} diff --git a/content/zh/docs/concepts/services-networking/connect-applications-service.md b/content/zh/docs/concepts/services-networking/connect-applications-service.md index 25bebe4d01..06d1744eb2 100644 --- a/content/zh/docs/concepts/services-networking/connect-applications-service.md +++ b/content/zh/docs/concepts/services-networking/connect-applications-service.md @@ -205,9 +205,8 @@ about the [service proxy](/docs/concepts/services-networking/service/#virtual-ip Kubernetes supports 2 primary modes of finding a Service - environment variables and DNS. The former works out of the box while the latter requires the -[CoreDNS cluster addon](http://releases.k8s.io/{{< param "githubbranch" >}}/cluster/addons/dns/coredns). +[CoreDNS cluster addon](https://releases.k8s.io/{{< param "githubbranch" >}}/cluster/addons/dns/coredns). --> - ## 访问 Service Kubernetes支持两种查找服务的主要模式: 环境变量和DNS。 前者开箱即用,而后者则需要[CoreDNS集群插件] diff --git a/content/zh/docs/concepts/services-networking/dns-pod-service.md b/content/zh/docs/concepts/services-networking/dns-pod-service.md index 48453424da..fc23f799ae 100644 --- a/content/zh/docs/concepts/services-networking/dns-pod-service.md +++ b/content/zh/docs/concepts/services-networking/dns-pod-service.md @@ -42,8 +42,7 @@ considered implementation details and are subject to change without warning. For more up-to-date specification, see [Kubernetes DNS-Based Service Discovery](https://github.com/kubernetes/dns/blob/master/docs/specification.md). --> - -## 怎样获取 DNS 名字? +## 哪些对象会有 DNS 名字? {#what-things-get-dns-names} 在集群中定义的每个 Service(包括 DNS 服务器自身)都会被指派一个 DNS 名称。 默认,一个客户端 Pod 的 DNS 搜索列表将包含该 Pod 自己的名字空间和集群默认域。 @@ -74,7 +73,6 @@ Services, this resolves to the set of IPs of the pods selected by the Service. Clients are expected to consume the set or else use standard round-robin selection from the set. --> - ### 服务 {#services} #### A/AAAA 记录 @@ -117,17 +115,35 @@ Kubernetes 会为命名端口创建 SRV 记录,这些端口是普通服务或 ### A/AAAA 记录 -经由 Deployment 或者 DaemonSet 所创建的所有 Pods 都会有如下 DNS -解析项与之对应: +一般而言,Pod 会对应如下 DNS 名字解析: -`pod-ip-address.deployment-name.my-namespace.svc.cluster-domain.example.` +`pod-ip-address.my-namespace.pod.cluster-domain.example` + +例如,对于一个位于 `default` 名字空间,IP 地址为 172.17.0.3 的 Pod, +如果集群的域名为 `cluster.local`,则 Pod 会对应 DNS 名称: + +`172-17-0-3.default.pod.cluster.local`. + +Deployment 或通过 Service 暴露出来的 DaemonSet 所创建的 Pod 会有如下 DNS +解析名称可用: + +`pod-ip-address.deployment-name.my-namespace.svc.cluster-domain.example`. - ### Pod 的 hostname 和 subdomain 字段 当前,创建 Pod 时其主机名取自 Pod 的 `metadata.name` 值。 @@ -254,6 +269,51 @@ record unless `publishNotReadyAddresses=True` is set on the Service. 才会有与之对应的记录。 {{< /note >}} + +### Pod 的 setHostnameAsFQDN 字段 {#pod-sethostnameasfqdn-field} + +{{< feature-state for_k8s_version="v1.19" state="alpha" >}} + + +**前置条件**:`SetHostnameAsFQDN` +[特性门控](/zh/docs/reference/command-line-tools-reference/feature-gates/) +必须在 {{< glossary_tooltip text="API 服务器" term_id="kube-apiserver" >}} +上启用。 + +当你在 Pod 规约中设置了 `setHostnameAsFQDN: true` 时,kubelet 会将 Pod +的全限定域名(FQDN)作为该 Pod 的主机名记录到 Pod 所在名字空间。 +在这种情况下,`hostname` 和 `hostname --fqdn` 都会返回 Pod 的全限定域名。 + +{{< note >}} + +在 Linux 中,内核的主机名字段(`struct utsname` 的 `nodename` 字段)限定 +最多 64 个字符。 + +如果 Pod 启用这一特性,而其 FQDN 超出 64 字符,Pod 的启动会失败。 +Pod 会一直出于 `Pending` 状态(通过 `kubectl` 所看到的 `ContainerCreating`), +并产生错误事件,例如 +"Failed to construct FQDN from pod hostname and cluster domain, FQDN +`long-FQDN` is too long (64 characters is the max, 70 characters requested)." +(无法基于 Pod 主机名和集群域名构造 FQDN,FQDN `long-FQDN` 过长,至多 64 +字符,请求字符数为 70)。 +对于这种场景而言,改善用户体验的一种方式是创建一个 +[准入 Webhook 控制器](/zh/docs/reference/access-authn-authz/extensible-admission-controllers/#admission-webhooks), +在用户创建顶层对象(如 Deployment)的时候控制 FQDN 的长度。 +{{< /note >}} + +### Pod 的 DNS 策略 {#pod-s-dns-policy} -- "`Default`": Pod 从运行所在的节点继承名称解析配置。 - 参考[相关讨论](/zh/docs/tasks/administer-cluster/dns-custom-nameservers/#inheriting-dns-from-the-node) 获取更多信息。 -- "`ClusterFirst`": 与配置的集群域后缀不匹配的任何 DNS 查询(例如 “www.kubernetes.io”) +DNS 策略可以逐个 Pod 来设定。目前 Kubernetes 支持以下特定 Pod 的 DNS 策略。 +这些策略可以在 Pod 规约中的 `dnsPolicy` 字段设置: + +- "`Default`": Pod 从运行所在的节点继承名称解析配置。参考 + [相关讨论](/zh/docs/tasks/administer-cluster/dns-custom-nameservers/#inheriting-dns-from-the-node) + 获取更多信息。 +- "`ClusterFirst`": 与配置的集群域后缀不匹配的任何 DNS 查询(例如 "www.kubernetes.io") 都将转发到从节点继承的上游名称服务器。集群管理员可能配置了额外的存根域和上游 DNS 服务器。 参阅[相关讨论](/zh/docs/tasks/administer-cluster/dns-custom-nameservers/#impacts-on-pods) 了解在这些场景中如何处理 DNS 查询的信息。 @@ -293,10 +358,10 @@ following pod-specific DNS policies. These policies are specified in the {{< note >}} -"`Default`" 不是默认的 DNS 策略。如果未明确指定 `dnsPolicy`,则使用 "`ClusterFirst`"。 +"Default" 不是默认的 DNS 策略。如果未明确指定 `dnsPolicy`,则使用 "ClusterFirst"。 {{< /note >}} -公共路由和非公共路由的 IPv6 地址块的使用是可以的。提供底层 -{{< glossary_tooltip text="CNI" term_id="cni" >}} 的提供程序可以实现这种传输。 +可以使用可公共路由和非可公共路由的 IPv6 地址块,前提是下层的 +{{< glossary_tooltip text="CNI" term_id="cni" >}} 提供程序可以实现这种传输。 如果你拥有使用非公共路由 IPv6 地址的 Pod,并且希望该 Pod 到达集群外目的 (比如,公共网络),你必须为出口流量和任何响应消息设置 IP 伪装。 -[ip-masq-agent](https://github.com/kubernetes-incubator/ip-masq-agent) 可以感知双栈, +[ip-masq-agent](https://github.com/kubernetes-sigs/ip-masq-agent) 可以感知双栈, 所以你可以在双栈集群中使用 ip-masq-agent 来进行 IP 伪装。 - * Kubenet 强制 IPv4,IPv6 的 IPs 位置报告 (`--cluster-cidr`) +* Kubenet 强制 IPv4,IPv6 的 IPs 位置报告 (`--cluster-cidr`) ## {{% heading "whatsnext" %}} diff --git a/content/zh/docs/concepts/services-networking/ingress-controllers.md b/content/zh/docs/concepts/services-networking/ingress-controllers.md index 4071ea6189..6b31e610d6 100644 --- a/content/zh/docs/concepts/services-networking/ingress-controllers.md +++ b/content/zh/docs/concepts/services-networking/ingress-controllers.md @@ -25,7 +25,7 @@ Kubernetes as a project currently supports and maintains [GCE](https://git.k8s.i 为了让 Ingress 资源工作,集群必须有一个正在运行的 Ingress 控制器。 与作为 `kube-controller-manager` 可执行文件的一部分运行的其他类型的控制器不同,Ingress 控制器不是随集群自动启动的。 -基于此页面,您可选择最适合您的集群的 ingress 控制器实现。 +基于此页面,你可选择最适合你的集群的 ingress 控制器实现。 Kubernetes 作为一个项目,目前支持和维护 [GCE](https://git.k8s.io/ingress-gce/README.md) 和 [nginx](https://git.k8s.io/ingress-nginx/README.md) 控制器。 @@ -42,7 +42,7 @@ Kubernetes 作为一个项目,目前支持和维护 [GCE](https://git.k8s.io/i * [Ambassador](https://www.getambassador.io/) API Gateway is an [Envoy](https://www.envoyproxy.io) based ingress controller with [community](https://www.getambassador.io/docs) or [commercial](https://www.getambassador.io/pro/) support from [Datawire](https://www.datawire.io/). -* [AppsCode Inc.](https://appscode.com) offers support and maintenance for the most widely used [HAProxy](http://www.haproxy.org/) based ingress controller [Voyager](https://appscode.com/products/voyager). +* [AppsCode Inc.](https://appscode.com) offers support and maintenance for the most widely used [HAProxy](https://www.haproxy.org/) based ingress controller [Voyager](https://appscode.com/products/voyager). * [AWS ALB Ingress Controller](https://github.com/kubernetes-sigs/aws-alb-ingress-controller) enables ingress using the [AWS Application Load Balancer](https://aws.amazon.com/elasticloadbalancing/). * [Contour](https://projectcontour.io/) is an [Envoy](https://www.envoyproxy.io/) based ingress controller provided and supported by VMware. @@ -95,7 +95,8 @@ Kubernetes 作为一个项目,目前支持和维护 [GCE](https://git.k8s.io/i * [NGINX, Inc.](https://www.nginx.com/) offers support and maintenance for the [NGINX Ingress Controller for Kubernetes](https://www.nginx.com/products/nginx/kubernetes-ingress-controller). * [Skipper](https://opensource.zalando.com/skipper/kubernetes/ingress-controller/) HTTP router and reverse proxy for service composition, including use cases like Kubernetes Ingress, designed as a library to build your custom proxy -* [Traefik](https://github.com/containous/traefik) is a fully featured ingress controller + +* [Traefik](https://github.com/traefik/traefik) is a fully featured ingress controller ([Let's Encrypt](https://letsencrypt.org), secrets, http2, websocket), and it also comes with commercial support by [Containous](https://containo.us/services). --> @@ -107,9 +108,9 @@ Kubernetes 作为一个项目,目前支持和维护 [GCE](https://git.k8s.io/i [用于 Kubernetes 的 NGINX Ingress 控制器](https://www.nginx.com/products/nginx/kubernetes-ingress-controller) 提供支持和维护。 * [Skipper](https://opensource.zalando.com/skipper/kubernetes/ingress-controller/) HTTP 路由器和反向代理,用于服务组合,包括诸如 Kubernetes Ingress 之类的用例,被设计为用于构建自定义代理的库。 -* [Traefik](https://github.com/containous/traefik) 是一个全功能的 ingress 控制器 +* [Traefik](https://github.com/traefik/traefik) 是一个全功能的 Ingress 控制器。 ([Let's Encrypt](https://letsencrypt.org),secrets,http2,websocket), - 并且它也有来自 [Containous](https://containo.us/services) 的商业支持。 + 并且它也有来自 [Traefik Labs](https://traefik.io) 的商业支持。 {{< note >}} -确保您查看了 ingress 控制器的文档,以了解选择它的注意事项。 +确保你查看了 ingress 控制器的文档,以了解选择它的注意事项。 {{< /note >}} ## {{% heading "whatsnext" %}} diff --git a/content/zh/docs/concepts/services-networking/ingress.md b/content/zh/docs/concepts/services-networking/ingress.md index 6a5cb35739..e3dd00dede 100644 --- a/content/zh/docs/concepts/services-networking/ingress.md +++ b/content/zh/docs/concepts/services-networking/ingress.md @@ -708,6 +708,18 @@ Name (CN), also known as a Fully Qualified Domain Name (FQDN) for `https-example 你需要确保创建的 TLS Secret 创建自包含 `sslexample.foo.com` 的公用名称(CN)的证书。 这里的公共名称也被称为全限定域名(FQDN)。 +{{< note >}} + +注意,默认规则上无法使用 TLS,因为需要为所有可能的子域名发放证书。 +因此,`tls` 节区的 `hosts` 的取值需要域 `rules` 节区的 `host` +完全匹配。 +{{< /note >}} + {{< codenew file="service/networking/tls-example-ingress.yaml" >}} -使用 Kubernetes,您无需修改应用程序即可使用不熟悉的服务发现机制。 +使用 Kubernetes,你无需修改应用程序即可使用不熟悉的服务发现机制。 Kubernetes 为 Pods 提供自己的 IP 地址,并为一组 Pod 提供相同的 DNS 名, 并且可以在它们之间进行负载均衡。 @@ -60,12 +60,12 @@ Enter _Services_. Kubernetes {{< glossary_tooltip term_id="pod" text="Pod" >}} 是有生命周期的。 它们可以被创建,而且销毁之后不会再启动。 -如果您使用 {{< glossary_tooltip text="Deployment" term_id="deployment">}} -来运行您的应用程序,则它可以动态创建和销毁 Pod。 +如果你使用 {{< glossary_tooltip text="Deployment" term_id="deployment">}} +来运行你的应用程序,则它可以动态创建和销毁 Pod。 每个 Pod 都有自己的 IP 地址,但是在 Deployment 中,在同一时刻运行的 Pod 集合可能与稍后运行该应用程序的 Pod 集合不同。 -这导致了一个问题: 如果一组 Pod(称为“后端”)为群集内的其他 Pod(称为“前端”)提供功能, +这导致了一个问题: 如果一组 Pod(称为“后端”)为集群内的其他 Pod(称为“前端”)提供功能, 那么前端如何找出并跟踪要连接的 IP 地址,以便前端可以使用工作量的后端部分? 进入 _Services_。 @@ -79,13 +79,13 @@ Kubernetes {{< glossary_tooltip term_id="pod" text="Pod" >}} 是有生命周期 In Kubernetes, a Service is an abstraction which defines a logical set of Pods and a policy by which to access them (sometimes this pattern is called a micro-service). The set of Pods targeted by a Service is usually determined -by a {{< glossary_tooltip text="selector" term_id="selector" >}} -(see [below](#services-without-selectors) for why you might want a Service -_without_ a selector). +by a {{< glossary_tooltip text="selector" term_id="selector" >}}. +To learn about other ways to define Service endpoints, +see [Services _without_ selectors](#services-without-selectors). --> Kubernetes Service 定义了这样一种抽象:逻辑上的一组 Pod,一种可以访问它们的策略 —— 通常称为微服务。 这一组 Pod 能够被 Service 访问到,通常是通过 {{< glossary_tooltip text="选择算符" term_id="selector" >}} -(查看[下面](#services-without-selectors)了解,为什么你可能需要没有 selector 的 Service)实现的。 +要了解如何定义服务端点,请参阅[不带选择算符的服务](#services-without-selectors)。 ### 云原生服务发现 -如果您想要在应用程序中使用 Kubernetes API 进行服务发现,则可以查询 +如果你想要在应用程序中使用 Kubernetes API 进行服务发现,则可以查询 {{< glossary_tooltip text="API 服务器" term_id="kube-apiserver" >}} 的 Endpoints 资源,只要服务中的 Pod 集合发生更改,Endpoints 就会被更新。 @@ -126,6 +126,8 @@ balancer in between your application and the backend Pods. A Service in Kubernetes is a REST object, similar to a Pod. Like all of the REST objects, you can `POST` a Service definition to the API server to create a new instance. +The name of a Service object must be a valid +[DNS label name](/docs/concepts/overview/working-with-objects/names#dns-label-names). For example, suppose you have a set of Pods that each listen on TCP port 9376 and carry a label `app=MyApp`: @@ -135,6 +137,8 @@ and carry a label `app=MyApp`: Service 在 Kubernetes 中是一个 REST 对象,和 Pod 类似。 像所有的 REST 对象一样,Service 定义可以基于 `POST` 方式,请求 API server 创建新的实例。 +Service 对象的名称必须是合法的 +[DNS 标签名称](/zh/docs/concepts/overview/working-with-objects/names#dns-label-names)。 例如,假定有一组 Pod,它们对外暴露了 9376 端口,同时还被打上 `app=MyApp` 标签。 @@ -200,9 +204,9 @@ Each port definition can have the same `protocol`, or a different one. Pod 中的端口定义是有名字的,你可以在服务的 `targetPort` 属性中引用这些名称。 即使服务中使用单个配置的名称混合使用 Pod,并且通过不同的端口号提供相同的网络协议,此功能也可以使用。 这为部署和发展服务提供了很大的灵活性。 -例如,您可以更改Pods在新版本的后端软件中公开的端口号,而不会破坏客户端。 +例如,你可以更改 Pods 在新版本的后端软件中公开的端口号,而不会破坏客户端。 -服务的默认协议是TCP。 您还可以使用任何其他[受支持的协议](#protocol-support)。 +服务的默认协议是TCP。 你还可以使用任何其他[受支持的协议](#protocol-support)。 由于许多服务需要公开多个端口,因此 Kubernetes 在服务对象上支持多个端口定义。 每个端口定义可以具有相同的 `protocol`,也可以具有不同的协议。 @@ -231,7 +235,7 @@ For example: * 希望在生产环境中使用外部的数据库集群,但测试环境使用自己的数据库。 * 希望服务指向另一个 {{< glossary_tooltip term_id="namespace" >}} 中或其它集群中的服务。 - * 您正在将工作负载迁移到 Kubernetes。 在评估该方法时,您仅在 Kubernetes 中运行一部分后端。 + * 你正在将工作负载迁移到 Kubernetes。 在评估该方法时,你仅在 Kubernetes 中运行一部分后端。 在任何这些场景中,都能够定义没有选择算符的 Service。 实例: @@ -254,7 +258,7 @@ created automatically. You can manually map the Service to the network address a where it's running, by adding an Endpoint object manually: --> 由于此服务没有选择算符,因此 *不会* 自动创建相应的 Endpoint 对象。 -您可以通过手动添加 Endpoint 对象,将服务手动映射到运行该服务的网络地址和端口: +你可以通过手动添加 Endpoint 对象,将服务手动映射到运行该服务的网络地址和端口: ```yaml apiVersion: v1 @@ -267,6 +271,12 @@ subsets: ports: - port: 9376 ``` + +Endpoints 对象的名称必须是合法的 +[DNS 子域名](/zh/docs/concepts/overview/working-with-objects/names#dns-subdomain-names)。 -### Endpoint 切片 +### EndpointSlice -{{< feature-state for_k8s_version="v1.16" state="alpha" >}} +{{< feature-state for_k8s_version="v1.17" state="beta" >}} Endpoint 切片是一种 API 资源,可以为 Endpoint 提供更可扩展的替代方案。 尽管从概念上讲与 Endpoint 非常相似,但 Endpoint 切片允许跨多个资源分布网络端点。 @@ -323,26 +333,21 @@ Endpoint 切片是一种 API 资源,可以为 Endpoint 提供更可扩展的 届时将创建其他 Endpoint 切片来存储任何其他 Endpoint。 Endpoint 切片提供了附加的属性和功能,这些属性和功能在 -[Endpoint 切片](/zh/docs/concepts/services-networking/endpoint-slices/)中有详细描述。 +[EndpointSlices](/zh/docs/concepts/services-networking/endpoint-slices/) +中有详细描述。 -### 应用程序协议 +### 应用程序协议 {#application-protocol} -{{< feature-state for_k8s_version="v1.18" state="alpha" >}} +{{< feature-state for_k8s_version="v1.19" state="beta" >}} -`appProtocol` 字段提供了一种为每个 Service 端口指定应用程序协议的方式。 - -作为一个 alpha 特性,该字段默认未启用。要使用该字段,请启用 `ServiceAppProtocol` -[特性门控](/zh/docs/reference/command-line-tools-reference/feature-gates/)。 +`appProtocol` 字段提供了一种为每个 Service 端口指定应用协议的方式。 +此字段的取值会被映射到对应的 Endpoints 和 EndpointSlices 资源。 - -## VIP 和 Service 代理 {#virtual-ips-and-service-proxies} +## 虚拟 IP 和 Service 代理 {#virtual-ips-and-service-proxies} 在 Kubernetes 集群中,每个 Node 运行一个 `kube-proxy` 进程。 `kube-proxy` 负责为 Service 实现了一种 VIP(虚拟 IP)的形式,而不是 @@ -376,33 +380,17 @@ There are a few reasons for using proxying for Services: on the DNS records could impose a high load on DNS that then becomes difficult to manage. --> - ### 为什么不使用 DNS 轮询? -时不时会有人问到,就是为什么 Kubernetes 依赖代理将入站流量转发到后端。 那其他方法呢? -例如,是否可以配置具有多个A值(或IPv6为AAAA)的DNS记录,并依靠轮询名称解析? +时不时会有人问到为什么 Kubernetes 依赖代理将入站流量转发到后端。那其他方法呢? +例如,是否可以配置具有多个 A 值(或 IPv6 为 AAAA)的 DNS 记录,并依靠轮询名称解析? 使用服务代理有以下几个原因: - * DNS 实现的历史由来已久,它不遵守记录 TTL,并且在名称查找结果到期后对其进行缓存。 - * 有些应用程序仅执行一次 DNS 查找,并无限期地缓存结果。 - * 即使应用和库进行了适当的重新解析,DNS 记录上的 TTL 值低或为零也可能会给 DNS 带来高负载,从而使管理变得困难。 - - - -### 版本兼容性 - -从 Kubernetes v1.0 开始,您已经可以使用 [用户空间代理模式](#proxy-mode-userspace)。 -Kubernetes v1.1 添加了 iptables 模式代理,在 Kubernetes v1.2 中,kube-proxy 的 iptables 模式成为默认设置。 -Kubernetes v1.8 添加了 ipvs 代理模式。 +* DNS 实现的历史由来已久,它不遵守记录 TTL,并且在名称查找结果到期后对其进行缓存。 +* 有些应用程序仅执行一次 DNS 查找,并无限期地缓存结果。 +* 即使应用和库进行了适当的重新解析,DNS 记录上的 TTL 值低或为零也可能会给 + DNS 带来高负载,从而使管理变得困难。 - 在 `ipvs` 模式下,kube-proxy监视Kubernetes服务和端点,调用 `netlink` 接口相应地创建 IPVS 规则, 并定期将 IPVS 规则与 Kubernetes 服务和端点同步。 该控制循环可确保IPVS 状态与所需状态匹配。访问服务时,IPVS 将流量定向到后端Pod之一。 @@ -572,7 +559,7 @@ You can also set the maximum session sticky time by setting 则可以通过将 `service.spec.sessionAffinity` 设置为 "ClientIP" (默认值是 "None"),来基于客户端的 IP 地址选择会话关联。 -您还可以通过适当设置 `service.spec.sessionAffinityConfig.clientIP.timeoutSeconds` +你还可以通过适当设置 `service.spec.sessionAffinityConfig.clientIP.timeoutSeconds` 来设置最大会话停留时间。 (默认值为 10800 秒,即 3 小时)。 @@ -585,10 +572,10 @@ When using multiple ports for a Service, you must give all of your ports names so that these are unambiguous. For example: --> -## 多端口 Service +## 多端口 Service {#multi-port-services} -对于某些服务,您需要公开多个端口。 -Kubernetes 允许您在 Service 对象上配置多个端口定义。 +对于某些服务,你需要公开多个端口。 +Kubernetes 允许你在 Service 对象上配置多个端口定义。 为服务使用多个端口时,必须提供所有端口名称,以使它们无歧义。 例如: @@ -639,7 +626,6 @@ The IP address that you choose must be a valid IPv4 or IPv6 address from within If you try to create a Service with an invalid clusterIP address value, the API server will return a 422 HTTP status code to indicate that there's a problem. --> - ## 选择自己的 IP 地址 在 `Service` 创建的请求中,可以通过设置 `spec.clusterIP` 字段来指定自己的集群 IP 地址。 @@ -673,7 +659,7 @@ For example, the Service `"redis-master"` which exposes TCP port 6379 and has be allocated cluster IP address 10.0.0.11, produces the following environment variables: --> -### 环境变量 +### 环境变量 {#environment-variables} 当 Pod 运行在 `Node` 上,kubelet 会为每个活跃的 Service 添加一组环境变量。 它同时支持 [Docker links兼容](https://docs.docker.com/userguide/dockerlinks/) 变量 @@ -704,11 +690,11 @@ If you only use DNS to discover the cluster IP for a Service, you don't need to worry about this ordering issue. --> {{< note >}} -当您具有需要访问服务的Pod时,并且您正在使用环境变量方法将端口和群集 IP 发布到客户端 +当你具有需要访问服务的 Pod 时,并且你正在使用环境变量方法将端口和集群 IP 发布到客户端 Pod 时,必须在客户端 Pod 出现 *之前* 创建服务。 否则,这些客户端 Pod 将不会设定其环境变量。 -如果仅使用 DNS 查找服务的群集 IP,则无需担心此设定问题。 +如果仅使用 DNS 查找服务的集群 IP,则无需担心此设定问题。 {{< /note >}} ### DNS @@ -721,7 +707,14 @@ A cluster-aware DNS server, such as CoreDNS, watches the Kubernetes API for new Services and creates a set of DNS records for each one. If DNS has been enabled throughout your cluster then all Pods should automatically be able to resolve Services by their DNS name. +--> +你可以(几乎总是应该)使用[附加组件](/zh/docs/concepts/cluster-administration/addons/) +为 Kubernetes 集群设置 DNS 服务。 +支持集群的 DNS 服务器(例如 CoreDNS)监视 Kubernetes API 中的新服务,并为每个服务创建一组 DNS 记录。 +如果在整个集群中都启用了 DNS,则所有 Pod 都应该能够通过其 DNS 名称自动解析服务。 + + +例如,如果你在 Kubernetes 命名空间 `"my-ns"` 中有一个名为 `"my-service"` 的服务, +则控制平面和 DNS 服务共同为 `"my-service.my-ns"` 创建 DNS 记录。 +`"my-ns"` 命名空间中的 Pod 应该能够通过简单地对 `my-service` 进行名称查找来找到它 +(`"my-service.my-ns"` 也可以工作)。 +其他命名空间中的 Pod 必须将名称限定为 `my-service.my-ns`。 +这些名称将解析为为服务分配的集群 IP。 + + -您可以(几乎总是应该)使用[附加组件](/zh/docs/concepts/cluster-administration/addons/) -为 Kubernetes 集群设置 DNS 服务。 - -支持群集的 DNS 服务器(例如 CoreDNS)监视 Kubernetes API 中的新服务,并为每个服务创建一组 DNS 记录。 -如果在整个群集中都启用了 DNS,则所有 Pod 都应该能够通过其 DNS 名称自动解析服务。 - -例如,如果您在 Kubernetes 命名空间 `"my-ns"` 中有一个名为 `"my-service"` 的服务, -则控制平面和DNS服务共同为 `"my-service.my-ns"` 创建 DNS 记录。 -`"my-ns"` 命名空间中的 Pod 应该能够通过简单地对 `my-service` 进行名称查找来找到它 -(`"my-service.my-ns"` 也可以工作)。 - -其他命名空间中的Pod必须将名称限定为 `my-service.my-ns`。这些名称将解析为为服务分配的群集 IP。 - Kubernetes 还支持命名端口的 DNS SRV(服务)记录。 如果 `"my-service.my-ns"` 服务具有名为 `"http"` 的端口,且协议设置为 TCP, 则可以对 `_http._tcp.my-service.my-ns` 执行 DNS SRV 查询查询以发现该端口号, @@ -762,9 +751,9 @@ Kubernetes DNS 服务器是唯一的一种能够访问 `ExternalName` 类型的 更多关于 `ExternalName` 信息可以查看 [DNS Pod 和 Service](/zh/docs/concepts/services-networking/dns-pod-service/)。 + +## 无头服务(Headless Services) {#headless-services} + 有时不需要或不想要负载均衡,以及单独的 Service IP。 遇到这种情况,可以通过指定 Cluster IP(`spec.clusterIP`)的值为 `"None"` 来创建 `Headless` Service。 -您可以使用无头 Service 与其他服务发现机制进行接口,而不必与 Kubernetes 的实现捆绑在一起。 +你可以使用无头 Service 与其他服务发现机制进行接口,而不必与 Kubernetes +的实现捆绑在一起。 对这无头 Service 并不会分配 Cluster IP,kube-proxy 不会处理它们, 而且平台也不会为它们进行负载均衡和路由。 @@ -794,8 +786,7 @@ For headless Services that define selectors, the endpoints controller creates `Endpoints` records in the API, and modifies the DNS configuration to return records (addresses) that point directly to the `Pods` backing the Service. --> - -### 带选择算符的服务 +### 带选择算符的服务 {#with-selectors} 对定义了选择算符的无头服务,Endpoint 控制器在 API 中创建了 Endpoints 记录, 并且修改 DNS 配置返回 A 记录(地址),通过这个地址直接到达 Service 的后端 Pod 上。 @@ -807,18 +798,17 @@ For headless Services that do not define selectors, the endpoints controller doe not create `Endpoints` records. However, the DNS system looks for and configures either: - * CNAME records for [`ExternalName`](#externalname)-type Services. - * A records for any `Endpoints` that share a name with the Service, for all - other types. +* CNAME records for [`ExternalName`](#externalname)-type Services. +* A records for any `Endpoints` that share a name with the Service, for all + other types. --> - -### 无选择算符的服务 +### 无选择算符的服务 {#without-selectors} 对没有定义选择算符的无头服务,Endpoint 控制器不会创建 `Endpoints` 记录。 然而 DNS 系统会查找和配置,无论是: - * `ExternalName` 类型 Service 的 CNAME 记录 - * 记录:与 Service 共享一个名称的任何 `Endpoints`,以及所有其它类型 +* 对于 [`ExternalName`](#external-name) 类型的服务,查找其 CNAME 记录 +* 对所有其他类型的服务,查找与 Service 名称相同的任何 `Endpoints` 的记录 -## 发布服务 —— 服务类型 {#publishing-services-service-types} +## 发布服务(服务类型) {#publishing-services-service-types} -对一些应用(如前端)的某些部分,可能希望通过外部 Kubernetes 集群外部 IP 地址暴露 Service。 +对一些应用的某些部分(如前端),可能希望将其暴露给 Kubernetes 集群外部 +的 IP 地址。 -Kubernetes `ServiceTypes` 允许指定一个需要的类型的 Service,默认是 `ClusterIP` 类型。 +Kubernetes `ServiceTypes` 允许指定你所需要的 Service 类型,默认是 `ClusterIP`。 `Type` 的取值以及行为如下: - * `ClusterIP`:通过集群的内部 IP 暴露服务,选择该值,服务只能够在集群内部可以访问,这也是默认的 `ServiceType`。 - * [`NodePort`](#nodeport):通过每个 Node 上的 IP 和静态端口(`NodePort`)暴露服务。 - `NodePort` 服务会路由到 `ClusterIP` 服务,这个 `ClusterIP` 服务会自动创建。 - 通过请求 `:`,可以从集群的外部访问一个 `NodePort` 服务。 - * [`LoadBalancer`](#loadbalancer):使用云提供商的负载均衡器,可以向外部暴露服务。 - 外部的负载均衡器可以路由到 `NodePort` 服务和 `ClusterIP` 服务。 - * [`ExternalName`](#externalname):通过返回 `CNAME` 和它的值,可以将服务映射到 `externalName` - 字段的内容(例如, `foo.bar.example.com`)。 - 没有任何类型代理被创建。 + +* `ClusterIP`:通过集群的内部 IP 暴露服务,选择该值时服务只能够在集群内部访问。 + 这也是默认的 `ServiceType`。 +* [`NodePort`](#nodeport):通过每个节点上的 IP 和静态端口(`NodePort`)暴露服务。 + `NodePort` 服务会路由到自动创建的 `ClusterIP` 服务。 + 通过请求 `<节点 IP>:<节点端口>`,你可以从集群的外部访问一个 `NodePort` 服务。 +* [`LoadBalancer`](#loadbalancer):使用云提供商的负载均衡器向外部暴露服务。 + 外部负载均衡器可以将流量路由到自动创建的 `NodePort` 服务和 `ClusterIP` 服务上。 +* [`ExternalName`](#externalname):通过返回 `CNAME` 和对应值,可以将服务映射到 + `externalName` 字段的内容(例如,`foo.bar.example.com`)。 + 无需创建任何类型代理。 - {{< note >}} - 您需要 CoreDNS 1.7 或更高版本才能使用 `ExternalName` 类型。 - {{< /note >}} + {{< note >}} + 你需要 CoreDNS 1.7 或更高版本才能使用 `ExternalName` 类型。 + {{< /note >}} -您也可以使用 [Ingress](/zh/docs/concepts/services-networking/ingress/) 来暴露自己的服务。 -Ingress 不是服务类型,但它充当集群的入口点。 + +你也可以使用 [Ingress](/zh/docs/concepts/services-networking/ingress/) 来暴露自己的服务。 +Ingress 不是一种服务类型,但它充当集群的入口点。 它可以将路由规则整合到一个资源中,因为它可以在同一IP地址下公开多个服务。 ### NodePort 类型 {#nodeport} -如果将 `type` 字段设置为 `NodePort`,则 Kubernetes 控制平面将在 `--service-node-port-range` 标志指定的范围内分配端口(默认值:30000-32767)。 -每个节点将那个端口(每个节点上的相同端口号)代理到您的服务中。 -您的服务在其 `.spec.ports[*].nodePort` 字段中要求分配的端口。 +如果你将 `type` 字段设置为 `NodePort`,则 Kubernetes 控制平面将在 +`--service-node-port-range` 标志指定的范围内分配端口(默认值:30000-32767)。 +每个节点将那个端口(每个节点上的相同端口号)代理到你的服务中。 +你的服务在其 `.spec.ports[*].nodePort` 字段中要求分配的端口。 -如果您想指定特定的 IP 代理端口,则可以将 kube-proxy 中的 `--nodeport-addresses` +如果你想指定特定的 IP 代理端口,则可以将 kube-proxy 中的 `--nodeport-addresses` 标志设置为特定的 IP 块。从 Kubernetes v1.10 开始支持此功能。 该标志采用逗号分隔的 IP 块列表(例如,`10.0.0.0/8`、`192.0.2.0/25`)来指定 @@ -912,13 +905,16 @@ This means that you need to take care about possible port collisions yourself. You also have to use a valid port number, one that's inside the range configured for NodePort use. --> -例如,如果您使用 `--nodeport-addresses=127.0.0.0/8` 标志启动 kube-proxy,则 kube-proxy 仅选择 NodePort Services 的环回接口。 +例如,如果你使用 `--nodeport-addresses=127.0.0.0/8` 标志启动 kube-proxy, +则 kube-proxy 仅选择 NodePort Services 的本地回路接口。 `--nodeport-addresses` 的默认值是一个空列表。 这意味着 kube-proxy 应该考虑 NodePort 的所有可用网络接口。 (这也与早期的 Kubernetes 版本兼容)。 -如果需要特定的端口号,则可以在 `nodePort` 字段中指定一个值。控制平面将为您分配该端口或向API报告事务失败。 -这意味着您需要自己注意可能发生的端口冲突。您还必须使用有效的端口号,该端口号在配置用于NodePort的范围内。 +如果需要特定的端口号,你可以在 `nodePort` 字段中指定一个值。 +控制平面将为你分配该端口或报告 API 事务失败。 +这意味着你需要自己注意可能发生的端口冲突。 +你还必须使用有效的端口号,该端口号在配置用于 NodePort 的范围内。 -使用 NodePort 可以让您自由设置自己的负载平衡解决方案,配置 Kubernetes 不完全支持的环境, +使用 NodePort 可以让你自由设置自己的负载均衡解决方案,配置 Kubernetes 不完全支持的环境, 甚至直接暴露一个或多个节点的 IP。 -需要注意的是,Service 能够通过 `:spec.ports[*].nodePort` 和 `spec.clusterIp:spec.ports[*].port` 而对外可见。 +需要注意的是,Service 能够通过 `:spec.ports[*].nodePort` 和 +`spec.clusterIp:spec.ports[*].port` 而对外可见。 例如: @@ -998,24 +995,34 @@ status: +来自外部负载均衡器的流量将直接重定向到后端 Pod 上,不过实际它们是如何工作的,这要依赖于云提供商。 + +对于 LoadBalancer 类型的服务,当所定义的端口不止一个时,所有端口都必须 +使用相同的协议,并且其协议必须是 `TCP`、`UDP` 和 `SCTP` 之一。 + + -来自外部负载均衡器的流量将直接重定向到后端 Pod 上,不过实际它们是如何工作的,这要依赖于云提供商。 - +某些云提供商允许设置 `loadBalancerIP`。 在这些情况下,将根据用户设置的 `loadBalancerIP` 来创建负载均衡器。 -某些云提供商允许设置 `loadBalancerIP`。如果没有设置 `loadBalancerIP`,将会给负载均衡器指派一个临时 IP。 -如果设置了 `loadBalancerIP`,但云提供商并不支持这种特性,那么设置的 `loadBalancerIP` 值将会被忽略掉。 +如果没有设置 `loadBalancerIP` 字段,将会给负载均衡器指派一个临时 IP。 +如果设置了 `loadBalancerIP`,但云提供商并不支持这种特性,那么设置的 +`loadBalancerIP` 值将会被忽略掉。 {{< note >}} -如果您使用的是 SCTP,请参阅下面有关 `LoadBalancer` 服务类型的 +如果你使用的是 SCTP,请参阅下面有关 `LoadBalancer` 服务类型的 [注意事项](#caveat-sctp-loadbalancer-service-type)。 {{< /note >}} @@ -1028,13 +1035,16 @@ For example, `MC_myResourceGroup_myAKSCluster_eastus`. Specify the assigned IP address as loadBalancerIP. Ensure that you have updated the securityGroupName in the cloud provider configuration file. For information about troubleshooting `CreatingLoadBalancerFailed` permission issues see, [Use a static IP address with the Azure Kubernetes Service (AKS) load balancer](https://docs.microsoft.com/en-us/azure/aks/static-ip) or [CreatingLoadBalancerFailed on AKS cluster with advanced networking](https://github.com/Azure/AKS/issues/357). --> {{< note >}} -在 **Azure** 上,如果要使用用户指定的公共类型 `loadBalancerIP` ,则首先需要创建静态类型的公共IP地址资源。 -此公共IP地址资源应与群集中其他自动创建的资源位于同一资源组中。 例如,`MC_myResourceGroup_myAKSCluster_eastus`。 +在 **Azure** 上,如果要使用用户指定的公共类型 `loadBalancerIP`,则 +首先需要创建静态类型的公共 IP 地址资源。 +此公共 IP 地址资源应与集群中其他自动创建的资源位于同一资源组中。 +例如,`MC_myResourceGroup_myAKSCluster_eastus`。 -将分配的IP地址指定为 loadBalancerIP。 确保您已更新云提供程序配置文件中的 securityGroupName。 +将分配的 IP 地址设置为 loadBalancerIP。确保你已更新云提供程序配置文件中的 +securityGroupName。 有关对 `CreatingLoadBalancerFailed` 权限问题进行故障排除的信息, -请参阅 [与Azure Kubernetes服务(AKS)负载平衡器一起使用静态IP地址](https://docs.microsoft.com/en-us/azure/aks/static-ip) -或[通过高级网络在AKS群集上创建LoadBalancerFailed](https://github.com/Azure/AKS/issues/357)。 +请参阅 [与 Azure Kubernetes服务(AKS)负载平衡器一起使用静态 IP 地址](https://docs.microsoft.com/en-us/azure/aks/static-ip) +或[在 AKS 集群上使用高级联网时出现 CreatingLoadBalancerFailed](https://github.com/Azure/AKS/issues/357)。 {{< /note >}} -#### 内部负载均衡器 +#### 内部负载均衡器 {#internal-load-balancer} 在混合环境中,有时有必要在同一(虚拟)网络地址块内路由来自服务的流量。 -在水平分割 DNS 环境中,您需要两个服务才能将内部和外部流量都路由到您的端点(Endpoints)。 -您可以通过向服务添加以下注释之一来实现此目的。 -要添加的注释取决于您使用的云服务提供商。 +在水平分割 DNS 环境中,你需要两个服务才能将内部和外部流量都路由到你的端点(Endpoints)。 +你可以通过向服务添加以下注解之一来实现此目的。 +要添加的注解取决于你使用的云服务提供商。 {{< tabs name="service_tabs" >}} {{% tab name="Default" %}} @@ -1072,14 +1082,10 @@ metadata: cloud.google.com/load-balancer-type: "Internal" [...] ``` - -将 `cloud.google.com/load-balancer-type: "internal"` 节点用于版本1.7.0至1.7.3的主服务器。 -有关更多信息,请参见[文档](https://cloud.google.com/kubernetes-engine/docs/internal-load-balancing)。 + {{% /tab %}} {{% tab name="AWS" %}} + ```yaml [...] metadata: @@ -1088,8 +1094,10 @@ metadata: service.beta.kubernetes.io/aws-load-balancer-internal: "true" [...] ``` + {{% /tab %}} {{% tab name="Azure" %}} + ```yaml [...] metadata: @@ -1098,8 +1106,10 @@ metadata: service.beta.kubernetes.io/azure-load-balancer-internal: "true" [...] ``` + {{% /tab %}} {{% tab name="IBM Cloud" %}} + ```yaml [...] metadata: @@ -1108,8 +1118,10 @@ metadata: service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: "private" [...] ``` + {{% /tab %}} {{% tab name="OpenStack" %}} + ```yaml [...] metadata: @@ -1118,8 +1130,10 @@ metadata: service.beta.kubernetes.io/openstack-internal-load-balancer: "true" [...] ``` + {{% /tab %}} {{% tab name="Baidu Cloud" %}} + ```yaml [...] metadata: @@ -1128,8 +1142,10 @@ metadata: service.beta.kubernetes.io/cce-load-balancer-internal-vpc: "true" [...] ``` + {{% /tab %}} {{% tab name="Tencent Cloud" %}} + ```yaml [...] metadata: @@ -1137,8 +1153,10 @@ metadata: service.kubernetes.io/qcloud-loadbalancer-internal-subnetid: subnet-xxxxx [...] ``` + {{% /tab %}} {{% tab name="Alibaba Cloud" %}} + ```yaml [...] metadata: @@ -1146,6 +1164,7 @@ metadata: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet" [...] ``` + {{% /tab %}} {{< /tabs >}} @@ -1157,7 +1176,8 @@ annotations to a `LoadBalancer` service: --> ### AWS TLS 支持 {#ssl-support-on-aws} -为了对在AWS上运行的集群提供部分TLS / SSL支持,您可以向 `LoadBalancer` 服务添加三个注释: +为了对在 AWS 上运行的集群提供 TLS/SSL 部分支持,你可以向 `LoadBalancer` +服务添加三个注解: ```yaml metadata: @@ -1171,8 +1191,8 @@ The first specifies the ARN of the certificate to use. It can be either a certificate from a third party issuer that was uploaded to IAM or one created within AWS Certificate Manager. --> - -第一个指定要使用的证书的ARN。 它可以是已上载到 IAM 的第三方颁发者的证书,也可以是在 AWS Certificate Manager 中创建的证书。 +第一个指定要使用的证书的 ARN。 它可以是已上载到 IAM 的第三方颁发者的证书, +也可以是在 AWS Certificate Manager 中创建的证书。 ```yaml metadata: @@ -1197,14 +1217,15 @@ modifying the headers. In a mixed-use environment where some ports are secured and others are left unencrypted, you can use the following annotations: --> -第二个注释指定 Pod 使用哪种协议。 对于 HTTPS 和 SSL,ELB 希望 Pod 使用证书通过加密连接对自己进行身份验证。 +第二个注解指定 Pod 使用哪种协议。 对于 HTTPS 和 SSL,ELB 希望 Pod 使用证书 +通过加密连接对自己进行身份验证。 HTTP 和 HTTPS 选择第7层代理:ELB 终止与用户的连接,解析标头,并在转发请求时向 `X-Forwarded-For` 标头注入用户的 IP 地址(Pod 仅在连接的另一端看到 ELB 的 IP 地址)。 TCP 和 SSL 选择第4层代理:ELB 转发流量而不修改报头。 -在某些端口处于安全状态而其他端口未加密的混合使用环境中,可以使用以下注释: +在某些端口处于安全状态而其他端口未加密的混合使用环境中,可以使用以下注解: ```yaml metadata: @@ -1222,10 +1243,9 @@ be proxied HTTP. From Kubernetes v1.9 onwards you can use [predefined AWS SSL policies](http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-security-policy-table.html) with HTTPS or SSL listeners for your Services. To see which policies are available for use, you can use the `aws` command line tool: --> - 从 Kubernetes v1.9 起可以使用 [预定义的 AWS SSL 策略](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-security-policy-table.html) -为您的服务使用 HTTPS 或 SSL 侦听器。 +为你的服务使用 HTTPS 或 SSL 侦听器。 要查看可以使用哪些策略,可以使用 `aws` 命令行工具: ```bash @@ -1237,8 +1257,8 @@ You can then specify any one of those policies using the "`service.beta.kubernetes.io/aws-load-balancer-ssl-negotiation-policy`" annotation; for example: --> -然后,您可以使用 "`service.beta.kubernetes.io/aws-load-balancer-ssl-negotiation-policy`" 注解; -例如: +然后,你可以使用 "`service.beta.kubernetes.io/aws-load-balancer-ssl-negotiation-policy`" +注解; 例如: ```yaml metadata: @@ -1256,8 +1276,9 @@ annotation: --> #### AWS 上的 PROXY 协议支持 -为了支持在 AWS 上运行的集群,启用 [PROXY 协议](https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt)。 -您可以使用以下服务注释: +为了支持在 AWS 上运行的集群,启用 +[PROXY 协议](https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt)。 +你可以使用以下服务注解: ```yaml metadata: @@ -1270,7 +1291,7 @@ annotation: Since version 1.3.0, the use of this annotation applies to all ports proxied by the ELB and cannot be configured otherwise. --> -从 1.3.0 版开始,此注释的使用适用于 ELB 代理的所有端口,并且不能进行其他配置。 +从 1.3.0 版开始,此注解的使用适用于 ELB 代理的所有端口,并且不能进行其他配置。 #### AWS 上的 ELB 访问日志 -有几个注释可用于管理 AWS 上 ELB 服务的访问日志。 +有几个注解可用于管理 AWS 上 ELB 服务的访问日志。 -注释 `service.beta.kubernetes.io/aws-load-balancer-access-log-enabled` 控制是否启用访问日志。 +注解 `service.beta.kubernetes.io/aws-load-balancer-access-log-enabled` 控制是否启用访问日志。 注解 `service.beta.kubernetes.io/aws-load-balancer-access-log-emit-interval` -控制发布访问日志的时间间隔(以分钟为单位)。您可以指定 5 分钟或 60 分钟的间隔。 +控制发布访问日志的时间间隔(以分钟为单位)。你可以指定 5 分钟或 60 分钟的间隔。 -注释 `service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-name` +注解 `service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-name` 控制存储负载均衡器访问日志的 Amazon S3 存储桶的名称。 -注释 `service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-prefix` +注解 `service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-prefix` 指定为 Amazon S3 存储桶创建的逻辑层次结构。 ```yaml @@ -1348,13 +1369,13 @@ specifies the logical hierarchy you created for your Amazon S3 bucket. name: my-service annotations: service.beta.kubernetes.io/aws-load-balancer-access-log-enabled: "true" - # Specifies whether access logs are enabled for the load balancer + # 指定是否为负载均衡器启用访问日志 service.beta.kubernetes.io/aws-load-balancer-access-log-emit-interval: "60" - # The interval for publishing the access logs. You can specify an interval of either 5 or 60 (minutes). + # 发布访问日志的时间间隔。你可以将其设置为 5 分钟或 60 分钟。 service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-name: "my-bucket" - # The name of the Amazon S3 bucket where the access logs are stored + # 用来存放访问日志的 Amazon S3 Bucket 名称 service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-prefix: "my-bucket-prefix/prod" - # The logical hierarchy you created for your Amazon S3 bucket, for example `my-bucket-prefix/prod` + # 你为 Amazon S3 Bucket 所创建的逻辑层次结构,例如 `my-bucket-prefix/prod` ``` #### 其他 ELB 注解 -还有其他一些注释,用于管理经典弹性负载均衡器,如下所述。 +还有其他一些注解,用于管理经典弹性负载均衡器,如下所述。 ```yaml metadata: @@ -1421,8 +1442,16 @@ There are other annotations to manage Classic Elastic Load Balancers that are de # 此值必须小于 service.beta.kubernetes.io/aws-load-balancer-healthcheck-interval # 默认值为 5,必须介于 2 和 60 之间 + service.beta.kubernetes.io/aws-load-balancer-security-groups: "sg-53fae93f" + # 要添加到所创建的 ELB 之上的已有安全组列表。与注解 + # service.beta.kubernetes.io/aws-load-balancer-extra-security-groups 不同,此 + # 注解会替换掉之前指派给 ELB 的所有其他安全组 + service.beta.kubernetes.io/aws-load-balancer-extra-security-groups: "sg-53fae93f,sg-42efd82e" # 要添加到 ELB 上的额外安全组列表 + + service.beta.kubernetes.io/aws-load-balancer-target-node-labels: "ingress-gw,gw-name=public-api" + # 用逗号分隔的一个键-值偶对列表,用来为负载均衡器选择目标节点 ``` - {{< note >}} NLB 仅适用于某些实例类。有关受支持的实例类型的列表, 请参见 @@ -1540,7 +1568,7 @@ the `my-service` Service in the `prod` namespace to `my.database.example.com`: ### ExternalName 类型 {#externalname} 类型为 ExternalName 的服务将服务映射到 DNS 名称,而不是典型的选择器,例如 `my-service` 或者 `cassandra`。 -您可以使用 `spec.externalName` 参数指定这些服务。 +你可以使用 `spec.externalName` 参数指定这些服务。 例如,以下 Service 定义将 `prod` 名称空间中的 `my-service` 服务映射到 `my.database.example.com`: @@ -1578,7 +1606,7 @@ Service's `type`. 当查找主机 `my-service.prod.svc.cluster.local` 时,集群 DNS 服务返回 `CNAME` 记录, 其值为 `my.database.example.com`。 访问 `my-service` 的方式与其他服务的方式相同,但主要区别在于重定向发生在 DNS 级别,而不是通过代理或转发。 -如果以后您决定将数据库移到群集中,则可以启动其 Pod,添加适当的选择器或端点以及更改服务的 `type`。 +如果以后你决定将数据库移到集群中,则可以启动其 Pod,添加适当的选择器或端点以及更改服务的 `type`。 ### Service IP 地址 {#ips-and-vips} -不像 Pod 的 IP 地址,它实际路由到一个固定的目的地,Service 的 IP 实际上不能通过单个主机来进行应答。 -相反,我们使用 `iptables`(Linux 中的数据包处理逻辑)来定义一个虚拟IP地址(VIP),它可以根据需要透明地进行重定向。 +不像 Pod 的 IP 地址,它实际路由到一个固定的目的地,Service 的 IP 实际上 +不能通过单个主机来进行应答。 +相反,我们使用 `iptables`(Linux 中的数据包处理逻辑)来定义一个 +虚拟 IP 地址(VIP),它可以根据需要透明地进行重定向。 当客户端连接到 VIP 时,它们的流量会自动地传输到一个合适的 Endpoint。 环境变量和 DNS,实际上会根据 Service 的 VIP 和端口来进行填充。 @@ -1762,9 +1794,11 @@ of which Pods they are actually accessing. 作为一个例子,考虑前面提到的图片处理应用程序。 当创建后端 Service 时,Kubernetes master 会给它指派一个虚拟 IP 地址,比如 10.0.0.1。 假设 Service 的端口是 1234,该 Service 会被集群中所有的 `kube-proxy` 实例观察到。 -当代理看到一个新的 Service, 它会打开一个新的端口,建立一个从该 VIP 重定向到新端口的 iptables,并开始接收请求连接。 +当代理看到一个新的 Service, 它会打开一个新的端口,建立一个从该 VIP 重定向到 +新端口的 iptables,并开始接收请求连接。 -当一个客户端连接到一个 VIP,iptables 规则开始起作用,它会重定向该数据包到 "服务代理" 的端口。 +当一个客户端连接到一个 VIP,iptables 规则开始起作用,它会重定向该数据包到 +"服务代理" 的端口。 "服务代理" 选择一个后端,并将客户端的流量代理到后端上。 这意味着 Service 的所有者能够选择任何他们想使用的端口,而不存在冲突的风险。 @@ -1811,9 +1845,11 @@ through a load-balancer, though in those cases the client IP does get altered. iptables operations slow down dramatically in large scale cluster e.g 10,000 Services. IPVS is designed for load balancing and based on in-kernel hash tables. So you can achieve performance consistency in large number of Services from IPVS-based kube-proxy. Meanwhile, IPVS-based kube-proxy has more sophisticated load balancing algorithms (least conns, locality, weighted, persistence). --> -在大规模集群(例如 10000 个服务)中,iptables 操作会显着降低速度。 IPVS 专为负载平衡而设计,并基于内核内哈希表。 -因此,您可以通过基于 IPVS 的 kube-proxy 在大量服务中实现性能一致性。 -同时,基于 IPVS 的 kube-proxy 具有更复杂的负载平衡算法(最小连接,局部性,加权,持久性)。 +在大规模集群(例如 10000 个服务)中,iptables 操作会显着降低速度。 IPVS +专为负载平衡而设计,并基于内核内哈希表。 +因此,你可以通过基于 IPVS 的 kube-proxy 在大量服务中实现性能一致性。 +同时,基于 IPVS 的 kube-proxy 具有更复杂的负载均衡算法(最小连接、局部性、 +加权、持久性)。 ## API 对象 @@ -1821,57 +1857,48 @@ IPVS is designed for load balancing and based on in-kernel hash tables. So you c Service is a top-level resource in the Kubernetes REST API. You can find more details about the API object at: [Service API object](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#service-v1-core). --> -Service 是 Kubernetes REST API 中的顶级资源。您可以在以下位置找到有关A PI 对象的更多详细信息: +Service 是 Kubernetes REST API 中的顶级资源。你可以在以下位置找到有关 API 对象的更多详细信息: [Service 对象 API](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#service-v1-core). ## 受支持的协议 {#protocol-support} ### TCP -{{< feature-state for_k8s_version="v1.0" state="stable" >}} - -您可以将 TCP 用于任何类型的服务,这是默认的网络协议。 +你可以将 TCP 用于任何类型的服务,这是默认的网络协议。 ### UDP -{{< feature-state for_k8s_version="v1.0" state="stable" >}} - -您可以将 UDP 用于大多数服务。 对于 type=LoadBalancer 服务,对 UDP 的支持取决于提供此功能的云提供商。 +你可以将 UDP 用于大多数服务。 对于 type=LoadBalancer 服务,对 UDP 的支持取决于提供此功能的云提供商。 ### HTTP -{{< feature-state for_k8s_version="v1.1" state="stable" >}} - -如果您的云提供商支持它,则可以在 LoadBalancer 模式下使用服务来设置外部 HTTP/HTTPS 反向代理,并将其转发到该服务的 Endpoints。 +如果你的云提供商支持它,则可以在 LoadBalancer 模式下使用服务来设置外部 +HTTP/HTTPS 反向代理,并将其转发到该服务的 Endpoints。 {{< note >}} -您还可以使用 {{< glossary_tooltip text="Ingres" term_id="ingress" >}} 代替 Service 来公开 HTTP/HTTPS 服务。 +你还可以使用 {{< glossary_tooltip text="Ingres" term_id="ingress" >}} 代替 +Service 来公开 HTTP/HTTPS 服务。 {{< /note >}} -### PROXY 协议 -{{< feature-state for_k8s_version="v1.1" state="stable" >}} - - +### PROXY 协议 -如果您的云提供商支持它, +如果你的云提供商支持它, 则可以在 LoadBalancer 模式下使用 Service 在 Kubernetes 本身之外配置负载均衡器, -该负载均衡器将转发前缀为 [PROXY协议](https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) +该负载均衡器将转发前缀为 +[PROXY 协议](https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) 的连接。 负载平衡器将发送一系列初始字节,描述传入的连接,类似于此示例 @@ -1899,19 +1928,22 @@ followed by the data from the client. ### SCTP -{{< feature-state for_k8s_version="v1.12" state="alpha" >}} +{{< feature-state for_k8s_version="v1.19" state="beta" >}} +Kubernetes 支持 SCTP 作为 Service、Endpoint、EndpointSlice, NetworkPolicy +和 Pod 定义中的 `protocol` 值。 +作为一种 Beta 特性,此功能默认是启用的。集群管理员需要在 API 服务器上使用 +`--feature-gates=SCTPSupport=false,...` 来关闭 +`SCTPSupport` [特性门控](/zh/docs/reference/command-line-tools-reference/feature-gates/) +来在集群级别禁用 SCTP。 -作为一种 alpha 功能,Kubernetes 支持 SCTP 作为 Service、Endpoint、NetworkPolicy 和 Pod 定义中的 `protocol` 值。 -要启用此功能,集群管理员需要在 API 服务器上启用 `SCTPSupport` 特性门控, -例如 `--feature-gates=SCTPSupport=true,...`。 - -启用特性门控后,你可以将 Service、Endpoints、NetworkPolicy 或 Pod 的 `protocol` 字段设置为 `SCTP`。 +启用特性门控后,你可以将 Service、Endpoints、EndpointSlice、NetworkPolicy 或 +Pod 的 `protocol` 字段设置为 `SCTP`。 Kubernetes 相应地为 SCTP 关联设置网络,就像为 TCP 连接所做的一样。 -##### Service 类型为 LoadBalancer 的服务 {#caveat-sctp-loadbalancer-service-type} - - +##### Service 类型为 LoadBalancer 的服务 {#caveat-sctp-loadbalancer-service-type} {{< warning >}} 如果云提供商的负载平衡器实现支持将 SCTP 作为协议,则只能使用 `type` LoadBalancer 加上 @@ -1959,38 +1988,20 @@ SCTP is not supported on Windows based nodes. 基于 Windows 的节点不支持 SCTP。 {{< /warning >}} + ##### 用户空间 kube-proxy {#caveat-sctp-kube-proxy-userspace} +{{< warning >}} -{{< warning >}} 当 kube-proxy 处于用户空间模式时,它不支持 SCTP 关联的管理。 {{< /warning >}} - -## 未来工作 - -未来我们能预见到,代理策略可能会变得比简单的轮转均衡策略有更多细微的差别,比如主控节点选举或分片。 -我们也能想到,某些 Service 将具有 “真正” 的负载均衡器,这种情况下 VIP 将简化数据包的传输。 - -Kubernetes 项目打算为 L7(HTTP)服务改进支持。 - -Kubernetes 项目打算为 Service 实现更加灵活的请求进入模式, -这些模式包含当前的 `ClusterIP`、`NodePort` 和 `LoadBalancer` 模式,或者更多。 - ## {{% heading "whatsnext" %}} - * 阅读[使用服务访问应用](/zh/docs/concepts/services-networking/connect-applications-service/) * 阅读了解 [Ingress](/zh/docs/concepts/services-networking/ingress/) -* 阅读了解 [端点切片](/zh/docs/concepts/services-networking/endpoint-slices/) +* 阅读了解[端点切片(Endpoint Slices)](/zh/docs/concepts/services-networking/endpoint-slices/) From 7260dbf1c67a090425dab9d20a826fe924767d61 Mon Sep 17 00:00:00 2001 From: jialaijun Date: Wed, 25 Nov 2020 18:29:43 +0800 Subject: [PATCH 23/80] update the markdown file in the glossary directory. --- content/zh/docs/reference/glossary/addons.md | 36 ++++++----- .../glossary/admission-controller.md | 38 +++++++----- .../reference/glossary/aggregation-layer.md | 44 +++++++------ .../zh/docs/reference/glossary/annotation.md | 38 ++++++------ .../zh/docs/reference/glossary/api-group.md | 36 ++++++----- .../docs/reference/glossary/app-container.md | 34 +++++----- .../glossary/application-architect.md | 35 ++++++----- .../glossary/application-developer.md | 30 ++++----- .../docs/reference/glossary/applications.md | 28 +++++---- .../zh/docs/reference/glossary/approver.md | 30 +++++---- .../zh/docs/reference/glossary/certificate.md | 33 +++++----- content/zh/docs/reference/glossary/cgroup.md | 27 ++++---- content/zh/docs/reference/glossary/cidr.md | 33 +++++----- content/zh/docs/reference/glossary/cla.md | 30 +++++---- .../glossary/cloud-controller-manager.md | 62 +++++++++++-------- .../docs/reference/glossary/cloud-provider.md | 37 ++++++----- content/zh/docs/reference/glossary/cluster.md | 49 +++++++++------ content/zh/docs/reference/glossary/secret.md | 32 +++++----- .../reference/glossary/security-context.md | 50 ++++++++------- .../zh/docs/reference/glossary/selector.md | 38 ++++++------ .../reference/glossary/service-account.md | 43 +++++++------ .../docs/reference/glossary/service-broker.md | 45 ++++++++------ .../reference/glossary/service-catalog.md | 34 +++++----- content/zh/docs/reference/glossary/service.md | 22 ++++++- .../reference/glossary/shuffle-sharding.md | 36 ++++++----- content/zh/docs/reference/glossary/sig.md | 33 +++++----- .../zh/docs/reference/glossary/statefulset.md | 49 ++++++++------- .../zh/docs/reference/glossary/static-pod.md | 32 +++++----- .../docs/reference/glossary/storage-class.md | 38 ++++++------ content/zh/docs/reference/glossary/sysctl.md | 29 +++++---- content/zh/docs/reference/glossary/taint.md | 40 +++++++----- .../zh/docs/reference/glossary/toleration.md | 38 +++++++----- content/zh/docs/reference/glossary/uid.md | 30 +++++---- .../zh/docs/reference/glossary/upstream.md | 24 +++++-- .../docs/reference/glossary/volume-plugin.md | 30 ++++----- content/zh/docs/reference/glossary/volume.md | 49 +++++++++------ content/zh/docs/reference/glossary/wg.md | 30 +++++---- .../zh/docs/reference/glossary/workload.md | 43 ++++++++----- 38 files changed, 799 insertions(+), 586 deletions(-) diff --git a/content/zh/docs/reference/glossary/addons.md b/content/zh/docs/reference/glossary/addons.md index 00a871a227..d24c036178 100644 --- a/content/zh/docs/reference/glossary/addons.md +++ b/content/zh/docs/reference/glossary/addons.md @@ -1,23 +1,10 @@ ---- -title: 附加组件 -id: addons -date: 2019-12-15 -full_link: /zh/docs/concepts/cluster-administration/addons/ -short_description: > - 扩展 Kubernetes 功能的资源。 - -aka: -tags: -- tool ---- - 扩展 Kubernetes 功能的资源。 - + +--- +title: Add-ons(附加组件) +id: addons +date: 2019-12-15 +full_link: /zh/docs/concepts/cluster-administration/addons/ +short_description: > + 扩展 Kubernetes 功能的资源。 + +aka: +tags: +- tool +--- + + 扩展 Kubernetes 功能的资源。 [安装附加组件](/docs/concepts/cluster-administration/addons/) 阐释了更多关于如何在集群内使用附加组件,并列出了一些流行的附加组件。 diff --git a/content/zh/docs/reference/glossary/admission-controller.md b/content/zh/docs/reference/glossary/admission-controller.md index adbd681fae..d908098e93 100644 --- a/content/zh/docs/reference/glossary/admission-controller.md +++ b/content/zh/docs/reference/glossary/admission-controller.md @@ -1,5 +1,23 @@ + + +--- +title: Admission Controller(准入控制器) id: admission-controller date: 2019-06-28 full_link: /zh/docs/reference/access-authn-authz/admission-controllers/ @@ -12,24 +30,12 @@ tags: --- - 在对象持久化之前拦截 Kubernetes Api 服务器请求的一段代码 + + +--- +title: Aggregation Layer(聚合层) id: aggregation-layer date: 2018-10-08 full_link: /zh/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/ @@ -13,22 +32,6 @@ tags: - operation --- - + + -当您配置了 {{< glossary_tooltip text="Kubernetes API Server" term_id="kube-apiserver" >}} 来 [支持额外的 API](/docs/tasks/access-kubernetes-api/configure-aggregation-layer/),您就可以在 Kubernetes API 中增加 `APIService` 对象来 "申领(Claim)" 一个 URL 路径。 +当您配置了 {{< glossary_tooltip text="Kubernetes API Server" term_id="kube-apiserver" >}} 来 [支持额外的 API](/zh/docs/tasks/extend-kubernetes/configure-aggregation-layer/),您就可以在 Kubernetes API 中增加 `APIService` 对象来 "申领(Claim)" 一个 URL 路径。 diff --git a/content/zh/docs/reference/glossary/annotation.md b/content/zh/docs/reference/glossary/annotation.md index a5da0a060f..bcac78ed00 100644 --- a/content/zh/docs/reference/glossary/annotation.md +++ b/content/zh/docs/reference/glossary/annotation.md @@ -1,5 +1,22 @@ + + +--- +title: Annotation(注解) id: annotation date: 2018-04-12 full_link: /zh/docs/concepts/overview/working-with-objects/annotations/ @@ -11,21 +28,6 @@ tags: - fundamental --- - - @@ -35,8 +37,8 @@ tags: -注解中的元数据可大可小,可以是结构化的也可以是非结构化的,并且能包含标签不允许使用的字符。像工具和软件库这样的客户端可以检索这些元数据。 +注解中的元数据可大可小,可以是结构化的也可以是非结构化的,并且能包含{{< glossary_tooltip text="标签" term_id="label" >}}不允许使用的字符。像工具和软件库这样的客户端可以检索这些元数据。 diff --git a/content/zh/docs/reference/glossary/api-group.md b/content/zh/docs/reference/glossary/api-group.md index 07c222acbe..539af603b8 100644 --- a/content/zh/docs/reference/glossary/api-group.md +++ b/content/zh/docs/reference/glossary/api-group.md @@ -1,3 +1,21 @@ + + --- title: API Group id: api-group @@ -11,28 +29,14 @@ tags: - fundamental - architecture --- - Kubernetes API 中的一组相关路径。 - + -* 阅读 [API Group](/docs/concepts/overview/kubernetes-api/#api-groups) 了解更多信息。 +* 阅读 [API Group](/zh/docs/concepts/overview/kubernetes-api/#api-groups) 了解更多信息。 diff --git a/content/zh/docs/reference/glossary/app-container.md b/content/zh/docs/reference/glossary/app-container.md index a3238d65dd..462aca1da7 100644 --- a/content/zh/docs/reference/glossary/app-container.md +++ b/content/zh/docs/reference/glossary/app-container.md @@ -1,18 +1,5 @@ ---- -title: 应用程序容器 -id: app-container -date: 2019-02-12 -full_link: -short_description: > - 用于运行部分工作负载的容器。与初始化容器比较而言。 - -aka: -tags: -- workload ---- - 应用程序容器(或 app 容器){{< glossary_tooltip text="容器" term_id="container" >}} 在 {{< glossary_tooltip text="pod" term_id="pod" >}} 中,在 {{< glossary_tooltip text="初始化容器" term_id="init-container" >}} 启动完毕后才开始启动。 - + +--- +title: App Container(应用程序容器) +id: app-container +date: 2019-02-12 +full_link: +short_description: > + 用于运行部分工作负载的容器。与初始化容器比较而言。 + +aka: +tags: +- workload +--- + + 应用程序 {{< glossary_tooltip text="容器" term_id="container" >}} (或 app 容器)在 {{< glossary_tooltip text="pod" term_id="pod" >}} 中,在 {{< glossary_tooltip text="初始化容器" term_id="init-container" >}} 启动完毕后才开始启动。 + + diff --git a/content/zh/docs/reference/glossary/application-architect.md b/content/zh/docs/reference/glossary/application-architect.md index 849d1b7685..055f6d1499 100644 --- a/content/zh/docs/reference/glossary/application-architect.md +++ b/content/zh/docs/reference/glossary/application-architect.md @@ -1,18 +1,5 @@ ---- -title: 应用架构师 -id: application-architect -date: 2018-04-12 -full_link: -short_description: > - 应用架构师是负责应用高级设计的人。 - -aka: -tags: -- user-type ---- - 应用架构师是负责应用高级设计的人。 - + +--- +title: Application Architect(应用架构师) +id: application-architect +date: 2018-04-12 +full_link: +short_description: > + 应用架构师是负责应用高级设计的人。 + +aka: +tags: +- user-type +--- + + 应用架构师是负责应用高级设计的人。 + + + +--- +title: Application Developer(应用开发者) +id: application-developer +date: 2018-04-12 +full_link: +short_description: > + 编写可以在 Kubernetes 集群上运行的应用的人。 + +aka: +tags: +- user-type +--- + 编写可以在 Kubernetes 集群上运行的应用的人。 diff --git a/content/zh/docs/reference/glossary/applications.md b/content/zh/docs/reference/glossary/applications.md index cbff609142..67f07e793f 100644 --- a/content/zh/docs/reference/glossary/applications.md +++ b/content/zh/docs/reference/glossary/applications.md @@ -1,16 +1,5 @@ ---- -title: 应用 -id: applications -date: 2019-05-12 -full_link: -short_description: > - 各种容器化应用运行所在的层。 -aka: -tags: -- fundamental ---- - +--- +title: Applications(应用) +id: applications +date: 2019-05-12 +full_link: +short_description: > + 各种容器化应用运行所在的层。 +aka: +tags: +- fundamental +--- + 各种容器化应用运行所在的层。 diff --git a/content/zh/docs/reference/glossary/approver.md b/content/zh/docs/reference/glossary/approver.md index 879ef5e58b..b4f188e6ec 100644 --- a/content/zh/docs/reference/glossary/approver.md +++ b/content/zh/docs/reference/glossary/approver.md @@ -1,17 +1,5 @@ ---- -title: 批准者 -id: approver -date: 2018-04-12 -full_link: -short_description: > - 可以审核并批准 Kubernetes 代码贡献的人。 - -aka: -tags: -- community ---- - +--- +title: Approver(批准者) +id: approver +date: 2018-04-12 +full_link: +short_description: > + 可以审核并批准 Kubernetes 代码贡献的人。 + +aka: +tags: +- community +--- + 可以审核并批准 Kubernetes 代码贡献的人。 diff --git a/content/zh/docs/reference/glossary/certificate.md b/content/zh/docs/reference/glossary/certificate.md index c966aea2cb..933f19c420 100644 --- a/content/zh/docs/reference/glossary/certificate.md +++ b/content/zh/docs/reference/glossary/certificate.md @@ -1,5 +1,22 @@ + + +--- +title: Certificate(证书) id: certificate date: 2018-04-12 full_link: /zh/docs/tasks/tls/managing-tls-in-a-cluster/ @@ -11,20 +28,6 @@ tags: - security --- - +--- +title: cgroup (控制组) +id: cgroup +date: 2019-06-25 +full_link: +short_description: > + 一组具有可选资源隔离、审计和限制的 Linux 进程。 + +aka: +tags: +- fundamental +--- diff --git a/content/zh/docs/reference/glossary/cidr.md b/content/zh/docs/reference/glossary/cidr.md index 7e0a97d31e..f18e1b8947 100644 --- a/content/zh/docs/reference/glossary/cidr.md +++ b/content/zh/docs/reference/glossary/cidr.md @@ -1,18 +1,5 @@ ---- -title: CIDR -id: cidr -date: 2019-11-12 -full_link: -short_description: > - CIDR 是一种描述 IP 地址块的符号,被广泛使用于各种网络配置中。 - -aka: -tags: -- networking ---- -CIDR (无类域间路由) 是一种描述 IP 地址块的符号,被广泛使用于各种网络配置中。 - + +--- +title: CIDR +id: cidr +date: 2019-11-12 +full_link: +short_description: > + CIDR 是一种描述 IP 地址块的符号,被广泛使用于各种网络配置中。 + +aka: +tags: +- networking +--- + +CIDR (无类域间路由) 是一种描述 IP 地址块的符号,被广泛使用于各种网络配置中。 + diff --git a/content/zh/docs/reference/glossary/cla.md b/content/zh/docs/reference/glossary/cla.md index dae58a89e6..6f917d4826 100644 --- a/content/zh/docs/reference/glossary/cla.md +++ b/content/zh/docs/reference/glossary/cla.md @@ -1,17 +1,5 @@ ---- -title: CLA (贡献者许可协议) -id: cla -date: 2018-04-12 -full_link: https://github.com/kubernetes/community/blob/master/CLA.md -short_description: > - 贡献者对他们在开源项目中所贡献的代码的授权许可条款。 - -aka: -tags: -- community ---- - +--- +title: CLA (贡献者许可协议) +id: cla +date: 2018-04-12 +full_link: https://github.com/kubernetes/community/blob/master/CLA.md +short_description: > + 贡献者对他们在开源项目中所贡献的代码的授权许可条款。 + +aka: +tags: +- community +--- + {{< glossary_tooltip text="贡献者" term_id="contributor" >}} 对他们在开源项目中所贡献的代码的授权许可条款。 diff --git a/content/zh/docs/reference/glossary/cloud-controller-manager.md b/content/zh/docs/reference/glossary/cloud-controller-manager.md index 2fcd729f57..ca2fdc8d84 100644 --- a/content/zh/docs/reference/glossary/cloud-controller-manager.md +++ b/content/zh/docs/reference/glossary/cloud-controller-manager.md @@ -1,5 +1,28 @@ + + +--- +title: Cloud Controller Manager(云控制器管理器) id: cloud-controller-manager date: 2018-04-12 full_link: /zh/docs/tasks/administer-cluster/running-cloud-controller/ @@ -12,36 +35,23 @@ tags: - architecture - operation --- - - - -云控制器管理器是 1.8 的 alpha 特性。在未来发布的版本中,这是将 Kubernetes 与任何其他云集成的最佳方式。 +Cloud Controller Manager(云控制器管理器)是指 嵌入特定云的控制逻辑的 {{< glossary_tooltip text="控制平面" term_id="control-plane" >}} 组件 +。云控制器管理器允许您链接 +聚合到云提供商的应用编程接口中,并分离出相互作用的组件 +与您的集群交互的组件。 - -Kubernetes v1.6 包含一个新的可执行文件叫做 cloud-controller-manager。cloud-controller-manager 是一个守护进程,其中嵌入了特定于某云环境的控制环。 -这些特定于云环境的控制环最初位于 kube-controller-manager 中。 -由于云供应商的开发和发布节奏与 Kubernetes 项目不同步,将特定于供应商的代码抽象到 cloud-controller-manager 可执行文件可以允许云供应商独立于核心 Kubernetes 代码进行演进。 +通过分离Kubernates和底层云基础设置之间的互操作性逻辑,云控制器管理器组件使云提供商能够以不同于Kubernates主项目的速度进行发布新特征。 \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/cloud-provider.md b/content/zh/docs/reference/glossary/cloud-provider.md index 0c07cd6fb8..c4ad071638 100755 --- a/content/zh/docs/reference/glossary/cloud-provider.md +++ b/content/zh/docs/reference/glossary/cloud-provider.md @@ -1,5 +1,22 @@ + + +--- +title: Cloud Provider(云供应商) id: cloud-provider date: 2018-04-12 short_description: > @@ -10,22 +27,12 @@ aka: tags: - community --- - 一个提供云计算平台的商业机构或其他组织。 - + 一个提供云计算平台的商业机构或其他组织。 + + @@ -42,7 +49,7 @@ such as running a Kubernetes cluster. You can also find Kubernetes as a managed service; sometimes called Platform as a Service, or PaaS. With managed Kubernetes, your cloud provider is responsible for the Kubernetes control plane as well -as the glossary_tooltip term_id="node" text="nodes" and the +as the {{< glossary_tooltip term_id="node" text="nodes" >}} and the infrastructure they rely on: networking, storage, and possibly other elements such as load balancers. --> diff --git a/content/zh/docs/reference/glossary/cluster.md b/content/zh/docs/reference/glossary/cluster.md index 1046f9a223..1efc4bcb5d 100644 --- a/content/zh/docs/reference/glossary/cluster.md +++ b/content/zh/docs/reference/glossary/cluster.md @@ -1,36 +1,47 @@ ---- -title: 集群 -id: cluster -date: 2019-06-15 -full_link: -short_description: > - 集群由一组被称作节点的机器组成。这些节点上运行 Kubernetes 所管理的容器化应用。集群具有至少一个工作节点和至少一个主节点。 - -aka: -tags: -- fundamental -- operation ---- - - -集群由一组被称作节点的机器组成。这些节点上运行 Kubernetes 所管理的容器化应用。集群具有至少一个工作节点和至少一个主节点。 +--- +title: Cluster(集群) +id: cluster +date: 2019-06-15 +full_link: +short_description: > + 集群由一组被称作节点的机器组成。这些节点上运行 Kubernetes 所管理的容器化应用。集群具有至少一个工作节点。 + +aka: +tags: +- fundamental +- operation +--- + +集群由一组被称作节点的机器组成。这些节点上运行 Kubernetes 所管理的容器化应用。集群具有至少一个工作节点。 - -工作节点托管作为应用程序组件的 Pod 。主节点管理集群中的工作节点和 Pod 。多个主节点用于为集群提供故障转移和高可用性。 + +工作节点托管作为应用负载的组件的 Pod 。控制平面管理集群中的工作节点和 Pod 。为集群提供故障转移和高可用性,这些控制平面一般跨多主机运行,集群跨多个节点运行。 diff --git a/content/zh/docs/reference/glossary/secret.md b/content/zh/docs/reference/glossary/secret.md index 8bbb57df6b..8dae7030f6 100644 --- a/content/zh/docs/reference/glossary/secret.md +++ b/content/zh/docs/reference/glossary/secret.md @@ -1,18 +1,5 @@ ---- -title: Secret -id: secret -date: 2018-04-12 -full_link: /zh/docs/concepts/configuration/secret/ -short_description: > - Secret 用于存储敏感信息,如密码、OAuth 令牌和 SSH 密钥。 - -aka: -tags: -- core-object -- security ---- - +--- +title: Secret +id: secret +date: 2018-04-12 +full_link: /zh/docs/concepts/configuration/secret/ +short_description: > + Secret 用于存储敏感信息,如密码、OAuth 令牌和 SSH 密钥。 + +aka: +tags: +- core-object +- security +--- + + @@ -40,6 +42,6 @@ tags: Allows for more control over how sensitive information is used and reduces the risk of accidental exposure, including [encryption](/docs/tasks/administer-cluster/encrypt-data/#ensure-all-secrets-are-encrypted) at rest. A {{< glossary_tooltip text="Pod" term_id="pod" >}} references the secret as a file in a volume mount or by the kubelet pulling images for a pod. Secrets are great for confidential data and [ConfigMaps](/docs/tasks/configure-pod-container/configure-pod-configmap/) for non-confidential data. --> -Secret 允许用户对如何使用敏感信息进行更多的控制,并减少信息意外暴露的风险,包括静态[加密](/docs/tasks/administer-cluster/encrypt-data/#ensure-all-secrets-are-encrypted)。 +Secret 允许用户对如何使用敏感信息进行更多的控制,并减少信息意外暴露的风险,包括静态[encryption(加密)](/docs/tasks/administer-cluster/encrypt-data/#ensure-all-secrets-are-encrypted)。 {{< glossary_tooltip text="Pod" term_id="pod" >}} 通过挂载卷中的文件的方式引用 Secret,或者通过 kubelet 为 pod 拉取镜像时引用。 Secret 非常适合机密数据使用,而 [ConfigMaps](/docs/tasks/configure-pod-container/configure-pod-configmap/) 适用于非机密数据。 diff --git a/content/zh/docs/reference/glossary/security-context.md b/content/zh/docs/reference/glossary/security-context.md index 31b99c635c..21f890ab3c 100644 --- a/content/zh/docs/reference/glossary/security-context.md +++ b/content/zh/docs/reference/glossary/security-context.md @@ -1,8 +1,23 @@ + + --- title: 安全上下文(Security Context) id: security-context date: 2018-04-12 -full_link: /docs/tasks/configure-pod-container/security-context/ +full_link: /zh/docs/tasks/configure-pod-container/security-context/ short_description: > securityContext 字段定义 Pod 或容器的特权和访问控制设置,包括运行时 UID 和 GID。 @@ -12,32 +27,25 @@ tags: --- +securityContext 字段定义 {{< glossary_tooltip text="Pod" term_id="pod" >}} 或 {{< glossary_tooltip text="container(容器)" term_id="container" >}} 的特权和访问控制设置。 + + + -securityContext 字段定义 Pod 或容器的特权和访问控制设置,包括运行时 UID 和 GID。 - +在一个 securityContext 字段中,可以设置进程所属用户和用户组、权限相关设置。你也可以设置安全策略(例如:SELinux、AppArmor、seccomp) -{{< glossary_tooltip term_id="pod" >}} 或者容器中的 securityContext 字段(应用于所有容器)用于设置容器进程使用的用户(runAsUser)和组 (fsGroup)、权能字、特权设置和安全策略(SELinux/AppArmor/Seccomp)。 - - - +‘PodSpec.securityContext’字段配置会应用到一个Pod中的所有的container。 \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/selector.md b/content/zh/docs/reference/glossary/selector.md index a3dcd0b71b..c784526442 100644 --- a/content/zh/docs/reference/glossary/selector.md +++ b/content/zh/docs/reference/glossary/selector.md @@ -1,22 +1,10 @@ ---- -title: 选择算符 -id: selector -date: 2018-04-12 -full_link: /zh/docs/concepts/overview/working-with-objects/labels/ -short_description: > - 选择算符允许用户通过标签对一组资源对象进行筛选过滤。 - -aka: -tags: -- fundamental ---- - + +--- +title: Selector +id: selector +date: 2018-04-12 +full_link: /zh/docs/concepts/overview/working-with-objects/labels/ +short_description: > + Selector(选择器)允许用户通过标签对一组资源对象进行筛选过滤。 + +aka: +tags: +- fundamental +--- + -选择算符允许用户通过标签对一组资源对象进行筛选过滤。 +Selector 允许用户通过{{< glossary_tooltip text="labels(标签)" term_id="label" >}}对一组资源对象进行筛选过滤。 -在查询资源列表时,选择算符可以通过 {{< glossary_tooltip text="标签" term_id="label" >}} 对资源进行过滤筛选。 +在查询资源列表时,选择器可以通过标签对资源进行过滤筛选。 diff --git a/content/zh/docs/reference/glossary/service-account.md b/content/zh/docs/reference/glossary/service-account.md index 28c7ffd9b6..b3cd5c6d8e 100644 --- a/content/zh/docs/reference/glossary/service-account.md +++ b/content/zh/docs/reference/glossary/service-account.md @@ -1,5 +1,23 @@ + + +--- +title: ServiceAccount id: service-account date: 2018-04-12 full_link: /zh/docs/tasks/configure-pod-container/configure-service-account/ @@ -12,21 +30,6 @@ tags: - core-object --- - - - -当 Pod 中的进程访问集群时,API 服务器将它们作为特定的服务帐户进行身份验证,例如 `default`。当您创建 Pod 时,如果您没有指定服务帐户,它将在相同的命名空间 {{< glossary_tooltip text="命名空间" term_id="namespace" >}} 中自动分配 default 服务账户。 +当 Pod 中的进程访问集群时,API 服务器将它们作为特定的服务帐户进行身份验证,例如 `default`。当您创建 Pod 时,如果您没有指定服务帐户,它将在相同的{{< glossary_tooltip text="Namespace" term_id="namespace" >}} 中自动分配 default 服务账户。 diff --git a/content/zh/docs/reference/glossary/service-broker.md b/content/zh/docs/reference/glossary/service-broker.md index 8a017d127b..ef07e6873b 100644 --- a/content/zh/docs/reference/glossary/service-broker.md +++ b/content/zh/docs/reference/glossary/service-broker.md @@ -1,5 +1,22 @@ + + +--- +title: Service Broker(服务代理) id: service-broker date: 2018-04-12 full_link: @@ -11,32 +28,24 @@ tags: - extension --- - - -由第三方提供并维护的一组{{< glossary_tooltip text="托管服务" term_id="managed-service">}} 的访问端点。 +由第三方提供并维护的一组{{< glossary_tooltip text="Managed Services(托管服务)" term_id="managed-service">}} 的访问端点。 -{{< glossary_tooltip text="服务代理" term_id="service-broker">}}会实现 +{{< glossary_tooltip text="Service Brokers(服务代理)" term_id="service-broker">}}会实现 [开放服务代理 API 规范](https://github.com/openservicebrokerapi/servicebroker/blob/v2.13/spec.md) 并为应用提供使用其托管服务的标准接口。 -[服务目录(Service Catalog)](/docs/concepts/service-catalog/)则提供一种方法,用来列举、供应和绑定服务代理商所提供的托管服务。 +[服务目录(Service Catalog)](/zh/docs/concepts/extend-kubernetes/service-catalog/)则提供一种方法,用来列举、供应和绑定服务代理商所提供的托管服务。 diff --git a/content/zh/docs/reference/glossary/service-catalog.md b/content/zh/docs/reference/glossary/service-catalog.md index 726aff57c2..4879a35a60 100644 --- a/content/zh/docs/reference/glossary/service-catalog.md +++ b/content/zh/docs/reference/glossary/service-catalog.md @@ -1,18 +1,5 @@ ---- -title: 服务目录 -id: service-catalog -date: 2018-04-12 -full_link: -short_description: > - 服务目录是一种扩展 API,它能让 Kubernetes 集群中运行的应用易于使用外部托管的软件服务,例如云供应商提供的数据仓库服务。 - - An extension API that enables applications running in Kubernetes clusters to easily use external managed software offerings, such as a datastore service offered by a cloud provider. -aka: -tags: -- extension ---- - +--- +title: Service Catalog +id: service-catalog +date: 2018-04-12 +full_link: +short_description: > + Service Catalog(服务目录)是一种扩展 API,它能让 Kubernetes 集群中运行的应用易于使用外部托管的软件服务,例如云供应商提供的数据仓库服务。 + +aka: +tags: +- extension +--- + + -服务目录(Service Catalog)是一种扩展 API,它能让 Kubernetes 集群中运行的应用易于使用外部托管的的软件服务,例如云供应商提供的数据仓库服务。 +Service Catalog(服务目录)是一种扩展 API,它能让 Kubernetes 集群中运行的应用易于使用外部托管的的软件服务,例如云供应商提供的数据仓库服务。 @@ -39,5 +41,5 @@ tags: It provides a way to list, provision, and bind with external {{< glossary_tooltip text="Managed Services" term_id="managed-service" >}} from {{< glossary_tooltip text="Service Brokers" term_id="service-broker" >}} without needing detailed knowledge about how those services are created or managed. --> -服务目录可以检索、供应、和绑定由 {{< glossary_tooltip text="服务代理人(Service Brokers)" term_id="service-broker" >}} 提供的外部 {{< glossary_tooltip text="托管服务" term_id="managed-service" >}},而无需知道那些服务具体是怎样创建和托管的。 +服务目录可以检索、供应、和绑定由 {{< glossary_tooltip text="Service Brokers(服务代理人)" term_id="service-broker" >}} 提供的外部 {{< glossary_tooltip text="Managed Services(托管服务)" term_id="managed-service" >}},而无需知道那些服务具体是怎样创建和托管的。 diff --git a/content/zh/docs/reference/glossary/service.md b/content/zh/docs/reference/glossary/service.md index 95e3b9e007..43b89c9796 100644 --- a/content/zh/docs/reference/glossary/service.md +++ b/content/zh/docs/reference/glossary/service.md @@ -1,3 +1,22 @@ + + + --- title: Service id: service @@ -11,6 +30,7 @@ tags: - fundamental - core-object --- + @@ -22,4 +42,4 @@ An abstract way to expose an application running on a set of {{< glossary_toolti -服务所针对的Pod集(通常)由 {{< glossary_tooltip text="selector" term_id="selector" >}} 确定。 如果添加或删除了更多Pod,则与选择器匹配的Pod集将发生变化。 该服务确保可以将网络流量定向到该工作负载的当前Pod集。 +服务所针对的Pod集(通常)由 {{< glossary_tooltip text="Selector" term_id="selector" >}} 确定。 如果添加或删除了更多Pod,则与选择器匹配的Pod集将发生变化。 该服务确保可以将网络流量定向到该工作负载的当前Pod集。 diff --git a/content/zh/docs/reference/glossary/shuffle-sharding.md b/content/zh/docs/reference/glossary/shuffle-sharding.md index 1f8d8a0990..ea59cd62b1 100644 --- a/content/zh/docs/reference/glossary/shuffle-sharding.md +++ b/content/zh/docs/reference/glossary/shuffle-sharding.md @@ -1,18 +1,6 @@ ---- -title: 混排切片(Shuffle Sharding) -id: shuffle-sharding -date: 2020-03-04 -full_link: -short_description: > - 一种将请求指派给队列的技术,其隔离性好过对队列个数哈希取模的方式。 - -aka: -tags: -- fundamental ---- -一种将请求指派给队列的技术,其隔离性好过对队列个数哈希取模的方式。 - + +--- +title: Shuffle Sharding(混排切片) +id: shuffle-sharding +date: 2020-03-04 +full_link: +short_description: > + 一种将请求指派给队列的技术,其隔离性好过对队列个数哈希取模的方式。 + +aka: +tags: +- fundamental +--- + + +Shuffle Sharding(混排切片)是指一种将请求指派给队列的技术,其隔离性好过对队列个数哈希取模的方式。 + diff --git a/content/zh/docs/reference/glossary/sig.md b/content/zh/docs/reference/glossary/sig.md index a42a15b0b1..ce1cc9f1aa 100644 --- a/content/zh/docs/reference/glossary/sig.md +++ b/content/zh/docs/reference/glossary/sig.md @@ -1,3 +1,20 @@ + + --- title: SIG (特别兴趣小组) id: sig @@ -11,18 +28,6 @@ tags: - community --- - SIG 中的成员对推进某个领域(如体系结构、API 机制构件或者文档)具有相同的兴趣。 -SIGs 必须遵从 [SIG Governance](https://github.com/kubernetes/community/blob/master/sig-governance.md) 的规定, +SIGs 必须遵从 [governance guidelines](https://github.com/kubernetes/community/blob/master/committee-steering/governance/sig-governance.md) 的规定, 不过可以有自己的贡献策略以及通信渠道(方式)。 更多的详细信息可参阅 [kubernetes/community](https://github.com/kubernetes/community) 仓库以及 diff --git a/content/zh/docs/reference/glossary/statefulset.md b/content/zh/docs/reference/glossary/statefulset.md index 8003a09893..1a6469672d 100644 --- a/content/zh/docs/reference/glossary/statefulset.md +++ b/content/zh/docs/reference/glossary/statefulset.md @@ -1,10 +1,31 @@ + + --- title: StatefulSet id: statefulset date: 2018-04-12 full_link: /zh/docs/concepts/workloads/controllers/statefulset/ short_description: > - StatefulSet 用来管理 Deployment 和伸缩一组 Pod,并且能为这些 Pod 提供*序号和唯一性保证*。 + StatefulSet 用来管理部署和伸缩一组 Pod,包括这些 Pod 的持久存储和持久标识符。 aka: tags: - fundamental @@ -14,24 +35,9 @@ tags: --- - - StatefulSet 用来管理 Deployment 和扩展一组 Pod,并且能为这些 Pod 提供*序号和唯一性保证*。 + StatefulSet 用来管理部署和伸缩一组 {{< glossary_tooltip text="Pod" term_id="pod" >}},包括这些 Pod 的持久存储和持久标识符。 @@ -39,11 +45,10 @@ tags: Like a {{< glossary_tooltip term_id="deployment" >}}, a StatefulSet manages Pods that are based on an identical container spec. Unlike a Deployment, a StatefulSet maintains a sticky identity for each of their Pods. These pods are created from the same spec, but are not interchangeable: each has a persistent identifier that it maintains across any rescheduling. --> -和 {{< glossary_tooltip term_id="Deployment" >}} 相同的是,StatefulSet 管理了基于相同容器定义的一组 Pod。但和 Deployment 不同的是,StatefulSet 为它们的每个 Pod 维护了一个固定的 ID。这些 Pod 是基于相同的声明来创建的,但是不能相互替换:无论怎么调度,每个 Pod 都有一个永久不变的 ID。 +和 {{< glossary_tooltip text="Deployment" term_id="deployment" >}} 相同的是,StatefulSet 管理了基于相同容器定义的一组 Pod。但和 Deployment 不同的是,StatefulSet 为它们的每个 Pod 维护了一个固定的 ID。这些 Pod 是基于相同的声明来创建的,但是不能相互替换:无论怎么调度,每个 Pod 都有一个永久不变的 ID。 -StatefulSet 和其他控制器使用相同的工作模式。你在 StatefulSet *对象* 中定义你期望的状态,然后 StatefulSet 的 *控制器* 就会通过各种更新来达到那种你想要的状态。 - +如果希望使用存储卷为工作负载提供持久性,可以使用状态集作为解决方案的一部分。尽管状态完整集中的单个Pod很容易出现故障,但持久的Pod标识符使得将现有卷与替换任何出现故障的新Pod相匹配变得更加容易。如果希望使用存储卷为工作负载提供持久性,可以使用状态集作为解决方案的一部分。尽管状态完整集中的单个Pod很容易出现故障,但持久的Pod标识符使得将现有卷与替换任何出现故障的新Pod相匹配变得更加容易。 diff --git a/content/zh/docs/reference/glossary/static-pod.md b/content/zh/docs/reference/glossary/static-pod.md index 44e2a72bed..eb1c7fb7b4 100644 --- a/content/zh/docs/reference/glossary/static-pod.md +++ b/content/zh/docs/reference/glossary/static-pod.md @@ -1,22 +1,10 @@ ---- -title: 静态 Pod -id: static-pod -date: 2019-02-12 -full_link: /zh/docs/tasks/configure-pod-container/static-pod/ -short_description: > - 由特定节点上的 kubelet 守护进程直接管理的 pod。 - -aka: -tags: -- fundamental ---- - +--- +title: Static Pod +id: static-pod +date: 2019-02-12 +full_link: /zh/docs/tasks/configure-pod-container/static-pod/ +short_description: > + Static Pod(静态Pod)是指由特定节点上的 kubelet 守护进程直接管理的 pod。 + +aka: +tags: +- fundamental +--- + + + +--- +title: StorageClass +id: storageclass +date: 2018-04-12 +full_link: /zh/docs/concepts/storage/storage-classes/ +short_description: > + StorageClass(存储类别) 是管理员用来描述不同的可用存储类型的一种方法。 + +aka: +tags: +- core-object +- storage +--- + + - StorageClass 是管理员用来描述不同的可用存储类型的一种方法。 @@ -40,5 +42,5 @@ tags: StorageClasses can map to quality-of-service levels, backup policies, or to arbitrary policies determined by cluster administrators. Each StorageClass contains the fields `provisioner`, `parameters`, and `reclaimPolicy`, which are used when a {{< glossary_tooltip text="Persistent Volume" term_id="persistent-volume" >}} belonging to the class needs to be dynamically provisioned. Users can request a particular class using the name of a StorageClass object. --> -StorageClass 可以映射到服务质量等级(QoS)、备份策略、或者管理员随机定义的策略。每个 StorageClass 对象包含的域有 `provisioner`、 `parameters` 和 `reclaimPolicy`,属于该存储类别的 {{< glossary_tooltip text="永久卷" term_id="persistent-volume" >}} 需要动态分配时就要用到这些域参数。通过 StorageClass 对象的名称,用户可以请求他们需要的特定存储类别。 +StorageClass 可以映射到服务质量等级(QoS)、备份策略、或者管理员随机定义的策略。每个 StorageClass 对象包含的域有 `provisioner`、 `parameters` 和 `reclaimPolicy`,每个 StorageClass 对象包含字段`provisioner`、`parameters`、and `reclaimPolicy`,一般该存储类别的 {{< glossary_tooltip text="永久卷" term_id="persistent-volume" >}} 需要动态分配时就要用到这些字段参数。通过 StorageClass 对象的名称,用户可以请求他们需要的特定存储类别。 diff --git a/content/zh/docs/reference/glossary/sysctl.md b/content/zh/docs/reference/glossary/sysctl.md index 42ed215d6d..982a1bebd7 100644 --- a/content/zh/docs/reference/glossary/sysctl.md +++ b/content/zh/docs/reference/glossary/sysctl.md @@ -1,3 +1,19 @@ + + --- title: sysctl id: sysctl @@ -11,20 +27,7 @@ tags: - 工具 --- - +--- +title: Taint(污点) +id: taint +date: 2019-01-11 +full_link: /docs/concepts/configuration/taint-and-toleration/ +short_description: > + 一个核心对象,由三个必需的属性组成:键,值和效果。Taint(污点)会阻止在节点或节点组上调度 Pod。 + +aka: +tags: +- core-object +- fundamental +--- + + 一个核心对象,由三个必需的属性组成:键、值和效果。污点会阻止在{{< glossary_tooltip text="节点" term_id="node" >}}或节点组上调度 {{< glossary_tooltip text="Pods" term_id="pod" >}}。 + + + 污点和 {{< glossary_tooltip text="容忍度" term_id="toleration" >}} 一起工作,以确保不会将 Pod 调度到不适合的节点上。一个或多个污点应用于 {{< glossary_tooltip text="节点" term_id="node" >}}。节点应该仅能调度那些带着能与污点相匹配容忍度的 pod。 \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/toleration.md b/content/zh/docs/reference/glossary/toleration.md index ba59aed099..5fc976241b 100644 --- a/content/zh/docs/reference/glossary/toleration.md +++ b/content/zh/docs/reference/glossary/toleration.md @@ -1,24 +1,10 @@ ---- -title: 容忍度 -id: toleration -date: 2019-01-11 -full_link: /docs/concepts/configuration/taint-and-toleration/ -short_description: > - 一个核心对象,由三个必需的属性组成:key、value 和 effect。容忍度允许将 Pod 调度到具有对应污点的节点或节点组上。 -aka: -tags: -- core-object -- fundamental ---- - 一个核心对象,由三个必需的属性组成:key、value 和 effect。 - 容忍度允许将 Pod 调度到具有匹配 {{< glossary_tooltip text="污点" term_id="taint" >}} 的节点或节点组上。 - + +--- +title: toleration(容忍度) +id: toleration +date: 2019-01-11 +full_link: /zh/docs/concepts/scheduling-eviction/taint-and-toleration/ +short_description: > + 一个核心对象,由三个必需的属性组成:key、value 和 effect。容忍度允许将 Pod 调度到具有对应污点的节点或节点组上。 +aka: +tags: +- core-object +- fundamental +--- + + + 一个核心对象,由三个必需的属性组成:key、value 和 effect。容忍度允许将 Pod 调度到具有匹配 {{< glossary_tooltip text="污点" term_id="taint" >}} 的节点或节点组上。 + + diff --git a/content/zh/docs/reference/glossary/uid.md b/content/zh/docs/reference/glossary/uid.md index 01805ee534..983b61cd40 100644 --- a/content/zh/docs/reference/glossary/uid.md +++ b/content/zh/docs/reference/glossary/uid.md @@ -1,3 +1,20 @@ + + --- title: UID id: uid @@ -11,20 +28,7 @@ tags: - fundamental --- - + --- title: Upstream (disambiguation) id: upstream @@ -13,15 +30,14 @@ tags: +可以参考:核心 Kubernetes 仓库或作为当前仓库派生来源的来源仓库。 + + -可以参考:核心 Kubernetes 仓库或作为当前仓库派生来源的来源仓库。 - - - * 在 **Kubernetes社区**:对话中通常使用 *upstream* 来表示核心 Kubernetes 代码库,也就是更广泛的 kubernetes 生态系统、其他代码或第三方工具所依赖的仓库。 例如,[社区成员](#term-member)可能会建议将某个功能特性贡献到 upstream,使其位于核心代码库中,而不是维护于插件或第三方工具中。 * 在 **GitHub** 或 **git** 中:约定是将源仓库称为 *upstream*,而派生的仓库则被视为 *downstream*。 diff --git a/content/zh/docs/reference/glossary/volume-plugin.md b/content/zh/docs/reference/glossary/volume-plugin.md index ca4318d4ad..11e34573db 100644 --- a/content/zh/docs/reference/glossary/volume-plugin.md +++ b/content/zh/docs/reference/glossary/volume-plugin.md @@ -1,18 +1,5 @@ ---- -title: 卷(Volume)插件 -id: volumeplugin -date: 2018-04-12 -full_link: -short_description: > - 卷(Volume)插件可以让 Pod 集成存储。 - -aka: -tags: -- core-object -- storage ---- - +--- +title: Volume Plugin(卷插件) +id: volumeplugin +date: 2018-04-12 +full_link: +short_description: > + 卷插件可以让 Pod 集成存储。 + +aka: +tags: +- core-object +- storage +--- + diff --git a/content/zh/docs/reference/glossary/volume.md b/content/zh/docs/reference/glossary/volume.md index a170f0f3b8..a3f110201a 100644 --- a/content/zh/docs/reference/glossary/volume.md +++ b/content/zh/docs/reference/glossary/volume.md @@ -1,5 +1,23 @@ + + +--- +title: Volume(卷) id: volume date: 2018-04-12 full_link: /zh/docs/concepts/storage/volumes/ @@ -12,32 +30,23 @@ tags: - fundamental --- - +包含可被 {{< glossary_tooltip text="pod" term_id="pod" >}} 中{{< glossary_tooltip text="容器" term_id="container" >}}访问的数据的目录。 + + - -包含可被 {{< glossary_tooltip text="pod" term_id="pod" >}} 中容器访问的数据的目录。 - - - 每个 Kubernetes 卷在所处的{{< glossary_tooltip text="pod" term_id="pod" >}} 存在期间保持存在状态。 因此,卷的生命期会超出 {{< glossary_tooltip text="pod" term_id="pod" >}} 中运行的{{< glossary_tooltip text="容器" term_id="container" >}}, 并且保证{{< glossary_tooltip text="容器" term_id="container" >}}重启之后仍保留数据。 + +更多信息可参考[storage](/zh/docs/concepts/storage/) \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/wg.md b/content/zh/docs/reference/glossary/wg.md index 9a42e77ab0..5fe90888d2 100644 --- a/content/zh/docs/reference/glossary/wg.md +++ b/content/zh/docs/reference/glossary/wg.md @@ -1,3 +1,20 @@ + + --- title: WG (工作组) id: wg @@ -11,20 +28,7 @@ tags: - community --- - - +--- + +--> + +--- +title: Workload(工作负载) +id: workloads +date: 2019-02-13 +full_link: /zh/docs/concepts/workloads/ +short_description: > + 工作负载是在 Kubernetes 上运行的应用程序。 + +aka: +tags: +- fundamental +--- + + 工作负载是在 Kubernetes 上运行的应用程序。 - +in a {{< glossary_tooltip term_id="Deployment" >}}. +--> 代表不同类型或部分工作负载的各种核心对象包括 DaemonSet, Deployment, Job, ReplicaSet, and StatefulSet。 例如,具有 Web 服务器和数据库的工作负载可能在一个 {{< glossary_tooltip term_id="StatefulSet" >}} 中运行数据库,而 Web 服务器运行在 {{< glossary_tooltip term_id="Deployment" >}}。 \ No newline at end of file From f5132af21e584071054e88e9e7d9c05c547b2c24 Mon Sep 17 00:00:00 2001 From: Tim Hughes Date: Fri, 20 Nov 2020 16:11:28 +0000 Subject: [PATCH 24/80] Updates links to Dex --- .../en/docs/reference/access-authn-authz/authentication.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/en/docs/reference/access-authn-authz/authentication.md b/content/en/docs/reference/access-authn-authz/authentication.md index e2e2d5c437..a35dc4d11f 100644 --- a/content/en/docs/reference/access-authn-authz/authentication.md +++ b/content/en/docs/reference/access-authn-authz/authentication.md @@ -328,7 +328,7 @@ tokens on behalf of another. Kubernetes does not provide an OpenID Connect Identity Provider. You can use an existing public OpenID Connect Identity Provider (such as Google, or [others](https://connect2id.com/products/nimbus-oauth-openid-connect-sdk/openid-connect-providers)). -Or, you can run your own Identity Provider, such as CoreOS [dex](https://github.com/coreos/dex), +Or, you can run your own Identity Provider, such as [dex](https://dexidp.io/), [Keycloak](https://github.com/keycloak/keycloak), CloudFoundry [UAA](https://github.com/cloudfoundry/uaa), or Tremolo Security's [OpenUnison](https://github.com/tremolosecurity/openunison). @@ -339,13 +339,13 @@ For an identity provider to work with Kubernetes it must: 2. Run in TLS with non-obsolete ciphers 3. Have a CA signed certificate (even if the CA is not a commercial CA or is self signed) -A note about requirement #3 above, requiring a CA signed certificate. If you deploy your own identity provider (as opposed to one of the cloud providers like Google or Microsoft) you MUST have your identity provider's web server certificate signed by a certificate with the `CA` flag set to `TRUE`, even if it is self signed. This is due to GoLang's TLS client implementation being very strict to the standards around certificate validation. If you don't have a CA handy, you can use [this script](https://github.com/coreos/dex/blob/1ee5920c54f5926d6468d2607c728b71cfe98092/examples/k8s/gencert.sh) from the CoreOS team to create a simple CA and a signed certificate and key pair. +A note about requirement #3 above, requiring a CA signed certificate. If you deploy your own identity provider (as opposed to one of the cloud providers like Google or Microsoft) you MUST have your identity provider's web server certificate signed by a certificate with the `CA` flag set to `TRUE`, even if it is self signed. This is due to GoLang's TLS client implementation being very strict to the standards around certificate validation. If you don't have a CA handy, you can use [this script](https://github.com/dexidp/dex/blob/master/examples/k8s/gencert.sh) from the Dex team to create a simple CA and a signed certificate and key pair. Or you can use [this similar script](https://raw.githubusercontent.com/TremoloSecurity/openunison-qs-kubernetes/master/src/main/bash/makessl.sh) that generates SHA256 certs with a longer life and larger key size. Setup instructions for specific systems: - [UAA](https://docs.cloudfoundry.org/concepts/architecture/uaa.html) -- [Dex](https://github.com/dexidp/dex/blob/master/Documentation/kubernetes.md) +- [Dex](https://dexidp.io/docs/kubernetes/) - [OpenUnison](https://www.tremolosecurity.com/orchestra-k8s/) #### Using kubectl From e1bc6ac55575447a9fd9ff0e98b8bd9e1dbe8e0e Mon Sep 17 00:00:00 2001 From: Arhell Date: Thu, 26 Nov 2020 00:40:16 +0200 Subject: [PATCH 25/80] video block sync --- content/ru/_index.html | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/content/ru/_index.html b/content/ru/_index.html index e86c2bf206..aaf9f136f5 100644 --- a/content/ru/_index.html +++ b/content/ru/_index.html @@ -42,6 +42,11 @@ Kubernetes — это проект с открытым исходным кодо

Посетите KubeCon NA онлайн, 17-20 ноября 2020 +
+
+
+
+ Посетите KubeCon EU онлайн, 4 – 7 мая 2021

From f205837b9a4acdf4d8be29e16adcfea3944f34e8 Mon Sep 17 00:00:00 2001 From: Nate W <4453979+nate-double-u@users.noreply.github.com> Date: Wed, 25 Nov 2020 17:29:21 -0800 Subject: [PATCH 26/80] Updating docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes Adding the successThreshold default value of startupProbe in the Configure Probes section. fixes: https://github.com/kubernetes/website/issues/24049 Signed-off-by: Nate W <4453979+nate-double-u@users.noreply.github.com> --- .../configure-liveness-readiness-startup-probes.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes.md b/content/en/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes.md index e72c86255a..75d6b1e3cf 100644 --- a/content/en/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes.md +++ b/content/en/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes.md @@ -330,8 +330,8 @@ seconds. Minimum value is 1. * `timeoutSeconds`: Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. * `successThreshold`: Minimum consecutive successes for the probe to be -considered successful after having failed. Defaults to 1. Must be 1 for -liveness. Minimum value is 1. +considered successful after having failed. Defaults to 1. Must be 1 for liveness +and startup Probes. Minimum value is 1. * `failureThreshold`: When a probe fails, Kubernetes will try `failureThreshold` times before giving up. Giving up in case of liveness probe means restarting the container. In case of readiness probe the Pod will be marked Unready. Defaults to 3. Minimum value is 1. From 10c09ed84953997ffb866676190bb6cde56c8f94 Mon Sep 17 00:00:00 2001 From: jialaijun Date: Thu, 26 Nov 2020 10:34:37 +0800 Subject: [PATCH 27/80] update glossary --- .../glossary/cloud-controller-manager.md | 32 +++++++++---------- .../docs/reference/glossary/cloud-provider.md | 24 +++++++------- 2 files changed, 27 insertions(+), 29 deletions(-) diff --git a/content/zh/docs/reference/glossary/cloud-controller-manager.md b/content/zh/docs/reference/glossary/cloud-controller-manager.md index ca2fdc8d84..422376a4a9 100644 --- a/content/zh/docs/reference/glossary/cloud-controller-manager.md +++ b/content/zh/docs/reference/glossary/cloud-controller-manager.md @@ -1,3 +1,18 @@ +--- +title: Cloud Controller Manager(云控制器管理器) +id: cloud-controller-manager +date: 2018-04-12 +full_link: /zh/docs/tasks/administer-cluster/running-cloud-controller/ +short_description: > + 云控制器管理器是 1.8 的 alpha 特性。在未来发布的版本中,这是将 Kubernetes 与任何其他云集成的最佳方式。 + +aka: +tags: +- core-object +- architecture +- operation +--- + ---- -title: Cloud Controller Manager(云控制器管理器) -id: cloud-controller-manager -date: 2018-04-12 -full_link: /zh/docs/tasks/administer-cluster/running-cloud-controller/ -short_description: > - 云控制器管理器是 1.8 的 alpha 特性。在未来发布的版本中,这是将 Kubernetes 与任何其他云集成的最佳方式。 -aka: -tags: -- core-object -- architecture -- operation ---- ---- -title: Cloud Provider(云供应商) -id: cloud-provider -date: 2018-04-12 -short_description: > - 一个提供云计算平台的组织。 - -aka: -- 云服务供应商(Cloud Service Provider) -tags: -- community ---- From 7afd1bd2922762837e167a5307fca1211eff2c8e Mon Sep 17 00:00:00 2001 From: zhaojizhuang <571130360@qq.com> Date: Thu, 26 Nov 2020 10:58:56 +0800 Subject: [PATCH 28/80] [zh]sync Add 3rd party content warning to sync Add 3rd party content warning to Ingress Controllers concept and client-libraries --- .../docs/reference/using-api/client-libraries.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/content/zh/docs/reference/using-api/client-libraries.md b/content/zh/docs/reference/using-api/client-libraries.md index 20855fbe48..add068a61d 100644 --- a/content/zh/docs/reference/using-api/client-libraries.md +++ b/content/zh/docs/reference/using-api/client-libraries.md @@ -24,11 +24,11 @@ API from various programming languages. -在使用 [Kubernetes REST API](/docs/reference/using-api/api-overview/) 编写应用程序时, +在使用 [Kubernetes REST API](/zh/docs/reference/using-api/) 编写应用程序时, 您并不需要自己实现 API 调用和 “请求/响应” 类型。 您可以根据自己的编程语言需要选择使用合适的客户端库。 @@ -36,12 +36,12 @@ You can use a client library for the programming language you are using. Client libraries often handle common tasks such as authentication for you. Most client libraries can discover and use the Kubernetes Service Account to authenticate if the API client is running inside the Kubernetes cluster, or can -understand the [kubeconfig file](/docs/tasks/access-application-cluster/authenticate-across-clusters-kubeconfig/) +understand the [kubeconfig file](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/) format to read the credentials and the API Server address. --> 客户端库通常为您处理诸如身份验证之类的常见任务。 如果 API 客户端在 Kubernetes 集群中运行,大多数客户端库可以发现并使用 Kubernetes 服务帐户进行身份验证, -或者能够理解 [kubeconfig 文件](/docs/tasks/access-application-cluster/authenticate-across-clusters-kubeconfig/) +或者能够理解 [kubeconfig 文件](/zh/docs/tasks/access-application-cluster/authenticate-across-clusters-kubeconfig/) 格式来读取凭据和 API 服务器地址。 以下客户端库由 [Kubernetes SIG API Machinery](https://github.com/kubernetes/community/tree/master/sig-api-machinery) 正式维护。 @@ -80,6 +80,8 @@ Machinery](https://github.com/kubernetes/community/tree/master/sig-api-machinery --> ## 社区维护的客户端库 +{{% thirdparty-content %}} + `Secret` 对象类型用来保存敏感信息,例如密码、OAuth 令牌和 SSH 密钥。 将这些信息放在 `secret` 中比放在 {{< glossary_tooltip term_id="pod" >}} 的定义或者 {{< glossary_tooltip text="容器镜像" term_id="image" >}} 中来说更加安全和灵活。 参阅 [Secret 设计文档](https://git.k8s.io/community/contributors/design-proposals/auth/secrets.md) 获取更多详细信息。 + +Secret 是一种包含少量敏感信息例如密码、令牌或密钥的对象。 +这样的信息可能会被放在 Pod 规约中或者镜像中。 +用户可以创建 Secret,同时系统也创建了一些 Secret。 + -## Secret 概览 - -Secret 是一种包含少量敏感信息例如密码、令牌或密钥的对象。 -这样的信息可能会被放在 Pod 规约中或者镜像中。 -用户可以创建 Secret,同时系统也创建了一些 Secret。 - - +## Secret 概览 {#overview-of-secrets} + 要使用 Secret,Pod 需要引用 Secret。 Pod 可以用三种方式之一来使用 Secret: @@ -69,603 +70,624 @@ Pod 可以用三种方式之一来使用 Secret: - 由 [kubelet 在为 Pod 拉取镜像时使用](#using-imagepullsecrets) -### 内置 Secret - -#### 服务账号使用 API 凭证自动创建和附加 Secret - -Kubernetes 自动创建包含访问 API 凭据的 Secret,并自动修改你的 Pod 以使用此类型的 Secret。 - - -如果需要,可以禁用或覆盖自动创建和使用 API 凭据。 -但是,如果您需要的只是安全地访问 API 服务器,我们推荐这样的工作流程。 - -参阅[服务账号](/zh/docs/tasks/configure-pod-container/configure-service-account/) -文档了解关于服务账号如何工作的更多信息。 - - -### 创建您自己的 Secret - -#### 使用 `kubectl` 创建 Secret - -Secret 中可以包含 Pod 访问数据库时需要的用户凭证信息。 -例如,某个数据库连接字符串可能包含用户名和密码。 -你可以将用户名和密码保存在本地机器的 `./username.txt` 和 `./password.txt` 文件里。 - -```shell -# 创建本例中要使用的文件 -echo -n 'admin' > ./username.txt -echo -n '1f2d1e2e67df' > ./password.txt -``` - - - -`kubectl create secret` 命令将这些文件打包到一个 Secret 中并在 API server 中创建了一个对象。 Secret 对象的名称必须是合法的 [DNS 子域名](/zh/docs/concepts/overview/working-with-objects/names#dns-subdomain-names)。 +在为创建 Secret 编写配置文件时,你可以设置 `data` 与/或 `stringData` 字段。 +`data` 和 `stringData` 字段都是可选的。`data` 字段中所有键值都必须是 base64 +编码的字符串。如果不希望执行这种 base64 字符串的转换操作,你可以选择设置 +`stringData` 字段,其中可以使用任何字符串作为其取值。 + + +## Secret 的类型 {#secret-types} + +在创建 Secret 对象时,你可以使用 +[`Secret`](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#secret-v1-core) +资源的 `type` 字段,或者与其等价的 `kubectl` 命令行参数(如果有的话)为其设置类型。 +Secret 的类型用来帮助编写程序处理 Secret 数据。 + +Kubernetes 提供若干种内置的类型,用于一些常见的使用场景。 +针对这些类型,Kubernetes 所执行的合法性检查操作以及对其所实施的限制各不相同。 + + +| 内置类型 | 用法 | +|--------------|-------| +| `Opaque` | 用户定义的任意数据 | +| `kubernetes.io/service-account-token` | 服务账号令牌 | +| `kubernetes.io/dockercfg` | `~/.dockercfg` 文件的序列化形式 | +| `kubernetes.io/dockerconfigjson` | `~/.docker/config.json` 文件的序列化形式 | +| `kubernetes.io/basic-auth` | 用于基本身份认证的凭据 | +| `kubernetes.io/ssh-auth` | 用于 SSH 身份认证的凭据 | +| `kubernetes.io/tls` | 用于 TLS 客户端或者服务器端的数据 | +| `bootstrap.kubernetes.io/token` | 启动引导令牌数据 | + + +通过为 Secret 对象的 `type` 字段设置一个非空的字符串值,你也可以定义并使用自己 +Secret 类型。如果 `type` 值为空字符串,则被视为 `Opaque` 类型。 +Kubernetes 并不对类型的名称作任何限制。不过,如果你要使用内置类型之一, +则你必须满足为该类型所定义的所有要求。 + + +### Opaque Secret + +当 Secret 配置文件中未作显式设定时,默认的 Secret 类型是 `Opaque`。 +当你使用 `kubectl` 来创建一个 Secret 时,你会使用 `generic` 子命令来标明 +要创建的是一个 `Opaque` 类型 Secret。 +例如,下面的命令会创建一个空的 `Opaque` 类型 Secret 对象: ```shell -kubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txt -``` - -输出类似于: - -``` -secret "db-user-pass" created +kubectl create secret generic empty-secret +kubectl get secret empty-secret ``` -默认的键名是文件名。你也可以使用 `[--from-file=[key=]source]` 参数来设置键名。 +输出类似于 -```shell -kubectl create secret generic db-user-pass \ - --from-file=username=./username.txt \ - --from-file=password=./password.txt +``` +NAME TYPE DATA AGE +empty-secret Opaque 0 2m6s ``` -{{< note >}} -特殊字符(例如 `$`、`\`、`*`、`=` 和 `!`)可能会被你的 -[Shell](https://en.wikipedia.org/wiki/Shell_(computing)) 解析,因此需要转义。 -在大多数 Shell 中,对密码进行转义的最简单方式是使用单引号(`'`)将其扩起来。 -例如,如果您的实际密码是 `S!B\*d$zDsb=` ,则应通过以下方式执行命令: - -``` -kubectl create secret generic dev-db-secret \ - --from-literal=username=devuser \ - --from-literal=password='S!B\*d$zDsb=' -``` - -您无需对文件中保存(`--from-file`)的密码中的特殊字符执行转义操作。 -{{< /note >}} - - -您可以这样检查刚创建的 Secret: - -```shell -kubectl get secrets -``` - -其输出类似于: - -``` -NAME TYPE DATA AGE -db-user-pass Opaque 2 51s -``` +`DATA` 列显示 Secret 中保存的数据条目个数。 +在这个例子种,`0` 意味着我们刚刚创建了一个空的 Secret。 -你可以查看 Secret 的描述: +### 服务账号令牌 Secret {#service-account-token-secrets} -```shell -kubectl describe secrets/db-user-pass -``` +类型为 `kubernetes.io/service-account-token` 的 Secret 用来存放标识某 +服务账号的令牌。使用这种 Secret 类型时,你需要确保对象的注解 +`kubernetes.io/service-account-name` 被设置为某个已有的服务账号名称。 +某个 Kubernetes 控制器会填写 Secret 的其它字段,例如 +`kubernetes.io/service-account.uid` 注解以及 `data` 字段中的 `token` +键值,使之包含实际的令牌内容。 -其输出类似于: - -``` -Name: db-user-pass -Namespace: default -Labels: -Annotations: - -Type: Opaque - -Data -==== -password.txt: 12 bytes -username.txt: 5 bytes -``` +下面的配置实例声明了一个服务账号令牌 Secret: -{{< note >}} -默认情况下,`kubectl get` 和 `kubectl describe` 避免显示密码的内容。 -这是为了防止机密被意外地暴露给旁观者或存储在终端日志中。 -{{< /note >}} - - -请参阅[解码 Secret](#decoding-secret) 了解如何查看 Secret 的内容。 - - -#### 手动创建 Secret - -您也可以先以 JSON 或 YAML 格式文件创建一个 Secret,然后创建该对象。 -Secret 对象的名称必须是合法的 [DNS 子域名](/zh/docs/concepts/overview/working-with-objects/names#dns-subdomain-names)。 -[Secret](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#secret-v1-core) -包含两个映射:`data` 和 `stringData`。 -`data` 字段用于存储使用 base64 编码的任意数据。 -提供 `stringData` 字段是为了方便,允许您用未编码的字符串提供机密数据。 - - -例如,要使用 `data` 字段将两个字符串存储在 Secret 中,请按如下所示将它们转换为 base64: - -```shell -echo -n 'admin' | base64 -``` - - -输出类似于: - -``` -YWRtaW4= -``` - -```shell -echo -n '1f2d1e2e67df' | base64 -``` - - -输出类似于: - -``` -MWYyZDFlMmU2N2Rm -``` - - - -现在可以像这样写一个 Secret 对象: - ```yaml apiVersion: v1 kind: Secret metadata: - name: mysecret -type: Opaque + name: secret-sa-sample + annotations: + kubernetes.io/service-account.name: "sa-name" +type: kubernetes.io/service-account-token data: - username: YWRtaW4= - password: MWYyZDFlMmU2N2Rm + # You can include additional key value pairs as you do with Opaque Secrets + extra: YmFyCg== ``` - - -使用 [`kubectl apply`](/docs/reference/generated/kubectl/kubectl-commands#apply) 创建 Secret 对象: - -```shell -kubectl apply -f ./secret.yaml -``` - - -输出类似于: - -``` -secret "mysecret" created -``` - - -在某些情况下,你可能希望改用 stringData 字段。 -此字段允许您将非 base64 编码的字符串直接放入 Secret 中, -并且在创建或更新 Secret 时将为您编码该字符串。 - -下面的一个实践示例提供了一个参考。 -你正在部署使用 Secret 存储配置文件的应用程序,并希望在部署过程中填齐配置文件的部分内容。 - -如果您的应用程序使用以下配置文件: - ```yaml -apiUrl: "https://my.api.com/api/v1" -username: "user" -password: "password" +apiVersion: v1 +kind: Secret +metadata: + name: secret-sa-sample + annotations: + kubernetes.io/service-account.name: "sa-name" +type: kubernetes.io/service-account-token +data: + # 你可以像 Opaque Secret 一样在这里添加额外的键/值偶对 + extra: YmFyCg== ``` - + +Kubernetes 在创建 Pod 时会自动创建一个服务账号 Secret 并自动修改你的 Pod +以使用该 Secret。该服务账号令牌 Secret 中包含了访问 Kubernetes API +所需要的凭据。 + +如果需要,可以禁止或者重载这种自动创建并使用 API 凭据的操作。 +不过,如果你仅仅是希望能够安全地访问 API 服务器,这是建议的工作方式。 + + +参考 [ServiceAccount](/zh/docs/tasks/configure-pod-container/configure-service-account/) +文档了解服务账号的工作原理。你也可以查看 +[`Pod`](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#pod-v1-core) +资源中的 `automountServiceAccountToken` 和 `serviceAccountName` 字段文档,了解 +从 Pod 中引用服务账号。 + + +### Docker 配置 Secret {#docker-config-secrets} + +你可以使用下面两种 `type` 值之一来创建 Secret,用以存放访问 Docker 仓库 +来下载镜像的凭据。 + +- `kubernetes.io/dockercfg` +- `kubernetes.io/dockerconfigjson` + + +`kubernetes.io/dockercfg` 是一种保留类型,用来存放 `~/.dockercfg` 文件的 +序列化形式。该文件是配置 Docker 命令行的一种老旧形式。 +使用此 Secret 类型时,你需要确保 Secret 的 `data` 字段中包含名为 +`.dockercfg` 的主键,其对应键值是用 base64 编码的某 `~/.dockercfg` +文件的内容。 + + +类型 `kubernetes.io/dockerconfigjson` 被设计用来保存 JSON 数据的序列化形式, +该 JSON 也遵从 `~/.docker/config.json` 文件的格式规则,而后者是 +`~/.dockercfg` 的新版本格式。 +使用此 Secret 类型时,Secret 对象的 `data` 字段必须包含 `.dockerconfigjson` +键,其键值为 base64 编码的字符串包含 `~/.docker/config.json` 文件的内容。 + +下面是一个 `kubernetes.io/dockercfg` 类型 Secret 的示例: ```yaml apiVersion: v1 kind: Secret metadata: - name: mysecret -type: Opaque + name: secret-dockercfg +type: kubernetes.io/dockercfg +data: + .dockercfg: | + "" +``` + +{{< note >}} + +如果你不希望执行 base64 编码转换,可以使用 `stringData` 字段代替。 +{{< /note >}} + + +当你使用清单文件来创建这两类 Secret 时,API 服务器会检查 `data` 字段中是否 +存在所期望的主键,并且验证其中所提供的键值是否是合法的 JSON 数据。 +不过,API 服务器不会检查 JSON 数据本身是否是一个合法的 Docker 配置文件内容。 + +```shell +kubectl create secret docker-registry secret-tiger-docker \ + --docker-username=tiger \ + --docker-password=pass113 \ + --docker-email=tiger@acme.com +``` + + +上面的命令创建一个类型为 `kubernetes.io/dockerconfigjson` 的 Secret。 +如果你对 `data` 字段中的 `.dockerconfigjson` 内容进行转储,你会得到下面的 +JSON 内容,而这一内容是一个合法的 Docker 配置文件。 + +```json +{ + "auths": { + "https://index.docker.io/v1/": { + "username": "tiger", + "password": "pass113", + "email": "tiger@acme.com", + "auth": "dGlnZXI6cGFzczExMw==" + } + } +} +``` + + +### 基本身份认证 Secret {#basic-authentication-secret} + +`kubernetes.io/basic-auth` 类型用来存放用于基本身份认证所需的凭据信息。 +使用这种 Secret 类型时,Secret 的 `data` 字段必须包含以下两个键: + +- `username`: 用于身份认证的用户名; +- `password`: 用于身份认证的密码或令牌。 + + +以上两个键的键值都是 base64 编码的字符串。 +当然你也可以在创建 Secret 时使用 `stringData` 字段来提供明文形式的内容。 +下面的 YAML 是基本身份认证 Secret 的一个示例清单: + +```yaml +apiVersion: v1 +kind: Secret +metadata: + name: secret-basic-auth +type: kubernetes.io/basic-auth stringData: - config.yaml: |- - apiUrl: "https://my.api.com/api/v1" - username: {{username}} - password: {{password}} + username: admin + password: t0p-Secret ``` +提供基本身份认证类型的 Secret 仅仅是出于用户方便性考虑。 +你也可以使用 `Opaque` 类型来保存用于基本身份认证的凭据。 +不过,使用内置的 Secret 类型的有助于对凭据格式进行归一化处理,并且 +API 服务器确实会检查 Secret 配置中是否提供了所需要的主键。 -然后,您的部署工具可以在执行 `kubectl apply` 之前替换模板的 `{{username}}` 和 `{{password}}` 变量。 -stringData 是只写的便利字段。检索 Secrets 时永远不会被输出。例如,如果您运行以下命令: + +### SSH 身份认证 Secret {#ssh-authentication-secrets} + +Kubernetes 所提供的内置类型 `kubernetes.io/ssh-auth` 用来存放 SSH 身份认证中 +所需要的凭据。使用这种 Secret 类型时,你就必须在其 `data` (或 `stringData`) +字段中提供一个 `ssh-privatekey` 键值对,作为要使用的 SSH 凭据。 + +下面的 YAML 是一个 SSH 身份认证 Secret 的配置示例: + +```yaml +apiVersion: v1 +kind: Secret +metadata: + name: secret-ssh-auth +type: kubernetes.io/ssh-auth +data: + # 此例中的实际数据被截断 + ssh-privatekey: | + MIIEpQIBAAKCAQEAulqb/Y ... +``` + + +提供 SSH 身份认证类型的 Secret 仅仅是出于用户方便性考虑。 +你也可以使用 `Opaque` 类型来保存用于 SSH 身份认证的凭据。 +不过,使用内置的 Secret 类型的有助于对凭据格式进行归一化处理,并且 +API 服务器确实会检查 Secret 配置中是否提供了所需要的主键。 + + +### TLS Secret + +Kubernetes 提供一种内置的 `kubernetes.io/tls` Secret 类型,用来存放证书 +及其相关密钥(通常用在 TLS 场合)。 +此类数据主要提供给 Ingress 资源,用以终结 TLS 链接,不过也可以用于其他 +资源或者负载。当使用此类型的 Secret 时,Secret 配置中的 `data` (或 +`stringData`)字段必须包含 `tls.key` 和 `tls.crt` 主键,尽管 API 服务器 +实际上并不会对每个键的取值作进一步的合法性检查。 + +下面的 YAML 包含一个 TLS Secret 的配置示例: + +```yaml +apiVersion: v1 +kind: Secret +metadata: + name: secret-tls +type: kubernetes.io/tls +data: + # 此例中的数据被截断 + tls.crt: | + MIIC2DCCAcCgAwIBAgIBATANBgkqh ... + tls.key: | + MIIEpgIBAAKCAQEA7yn3bRHQ5FHMQ ... +``` + + +提供 TLS 类型的 Secret 仅仅是出于用户方便性考虑。 +你也可以使用 `Opaque` 类型来保存用于 TLS 服务器与/或客户端的凭据。 +不过,使用内置的 Secret 类型的有助于对凭据格式进行归一化处理,并且 +API 服务器确实会检查 Secret 配置中是否提供了所需要的主键。 + +当使用 `kubectl` 来创建 TLS Secret 时,你可以像下面的例子一样使用 `tls` +子命令: ```shell -kubectl get secret mysecret -o yaml +kubectl create secret tls my-tls-secret \ + --cert=path/to/cert/file \ + --key=path/to/key/file ``` -输出类似于: +这里的公钥/私钥对都必须事先已存在。用于 `--cert` 的公钥证书必须是 .PEM 编码的 +(Base64 编码的 DER 格式),且与 `--key` 所给定的私钥匹配。 +私钥必须是通常所说的 PEM 私钥格式,且未加密。对这两个文件而言,PEM 格式数据 +的第一行和最后一行(例如,证书所对应的 `--------BEGIN CERTIFICATE-----` 和 +`-------END CERTIFICATE----`)都不会包含在其中。 + +### 启动引导令牌 Secret {#bootstrap-token-secrets} + +通过将 Secret 的 `type` 设置为 `bootstrap.kubernetes.io/token` 可以创建 +启动引导令牌类型的 Secret。这种类型的 Secret 被设计用来支持节点的启动引导过程。 +其中包含用来为周知的 ConfigMap 签名的令牌。 + + +启动引导令牌 Secret 通常创建于 `kube-system` 名字空间内,并以 +`bootstrap-token-<令牌 ID>` 的形式命名;其中 `<令牌 ID>` 是一个由 6 个字符组成 +的字符串,用作令牌的标识。 + +以 Kubernetes 清单文件的形式,某启动引导令牌 Secret 可能看起来像下面这样: ```yaml apiVersion: v1 kind: Secret metadata: - creationTimestamp: 2018-11-15T20:40:59Z - name: mysecret - namespace: default - resourceVersion: "7225" - uid: c280ad2e-e916-11e8-98f2-025000000001 -type: Opaque + name: bootstrap-token-5emitj + namespace: kube-system +type: bootstrap.kubernetes.io/token data: - config.yaml: YXBpVXJsOiAiaHR0cHM6Ly9teS5hcGkuY29tL2FwaS92MSIKdXNlcm5hbWU6IHt7dXNlcm5hbWV9fQpwYXNzd29yZDoge3twYXNzd29yZH19 + auth-extra-groups: c3lzdGVtOmJvb3RzdHJhcHBlcnM6a3ViZWFkbTpkZWZhdWx0LW5vZGUtdG9rZW4= + expiration: MjAyMC0wOS0xM1QwNDozOToxMFo= + token-id: NWVtaXRq + token-secret: a3E0Z2lodnN6emduMXAwcg== + usage-bootstrap-authentication: dHJ1ZQ== + usage-bootstrap-signing: dHJ1ZQ== ``` +A bootstrap type has the following keys specified under `data`: -如果在 data 和 stringData 中都指定了某一字段,则使用 stringData 中的值。 -例如,以下是 Secret 定义: +- `token_id`: A random 6 character string as the token identifier. Required. +- `token-secret`: A random 16 character string as the actual token secret. Required. +- `description1`: A human-readable string that describes what the token is + used for. Optional. +- `expiration`: An absolute UTC time using RFC3339 specifying when the token + should be expired. Optional. +- `usage-bootstrap-`: A boolean flag indicating additional usage for + the bootstrap token. +- `auth-extra-groups`: A comma-separated list of group names that will be + authenticated as in addition to the `system:bootstrappers` group. +--> +启动引导令牌类型的 Secret 会在 `data` 字段中包含如下主键: + +- `token_id`:由 6 个随机字符组成的字符串,作为令牌的标识符。必需。 +- `token-secret`:由 16 个随机字符组成的字符串,包含实际的令牌机密。必需。 +- `description`:供用户阅读的字符串,描述令牌的用途。可选。 +- `expiration`:一个使用 RFC3339 来编码的 UTC 绝对时间,给出令牌要过期的时间。可选。 +- `usage-bootstrap-`:布尔类型的标志,用来标明启动引导令牌的其他用途。 +- `auth-extra-groups`:用逗号分隔的组名列表,身份认证时除被认证为 + `system:bootstrappers` 组之外,还会被添加到所列的用户组中。 + + -secret 中的生成结果: +上面的 YAML 文件可能看起来令人费解,因为其中的数值均为 base64 编码的字符串。 +实际上,你完全可以使用下面的 YAML 来创建一个一模一样的 Secret: ```yaml apiVersion: v1 kind: Secret metadata: - creationTimestamp: 2018-11-15T20:46:46Z - name: mysecret - namespace: default - resourceVersion: "7579" - uid: 91460ecb-e917-11e8-98f2-025000000001 -type: Opaque -data: - username: YWRtaW5pc3RyYXRvcg== + # 注意 Secret 的命名方式 + name: bootstrap-token-5emitj + # 启动引导令牌 Secret 通常位于 kube-system 名字空间 + namespace: kube-system +type: bootstrap.kubernetes.io/token +stringData: + auth-extra-groups: "system:bootstrappers:kubeadm:default-node-token" + expiration: "2020-09-13T04:39:10Z" + # 此令牌 ID 被用于生成 Secret 名称 + token-id: "5emitj" + token-secret: "kq4gihvszzgn1p0r" + # 此令牌还可用于 authentication (身份认证) + usage-bootstrap-authentication: "true" + # 且可用于 signing (证书签名) + usage-bootstrap-signing: "true" ``` -其中的 `YWRtaW5pc3RyYXRvcg==` 解码后即是 `administrator`。 +## 创建 Secret {#creating-a-secret} + +有几种不同的方式来创建 Secret: + +- [使用 `kubectl` 命令创建 Secret](/zh/docs/tasks/configmap-secret/managing-secret-using-kubectl/) +- [使用配置文件来创建 Secret](/zh/docs/tasks/configmap-secret/managing-secret-using-config-file/) +- [使用 kustomize 来创建 Secret](/docs/tasks/configmap-secret/managing-secret-using-kustomize/) -data 和 stringData 的键必须由字母数字字符 '-', '\_' 或者 '.' 组成。 +## 编辑 Secret {#editing-a-secret} -{{< note >}} -Secret 数据在序列化为 JSON 和 YAML 时,其值被编码为 base64 字符串。 -换行符在这些字符串中是非法的,因此必须省略。 -在 Darwin/macOS 上使用 `base64` 实用程序时,用户应避免使用 `-b` 选项来分隔长行。 -相反,Linux用户 *应该* 在 `base64` 命令中添加选项 `-w 0` , -或者,如果 `-w` 选项不可用的情况下,执行 `base64 | tr -d '\n'`。 -{{< /note >}} - - -#### 从生成器创建 Secret - -Kubectl 从 1.14 版本开始支持[使用 Kustomize 管理对象](/docs/tasks/manage-kubernetes-objects/kustomization/)。 -Kustomize 提供资源生成器创建 Secret 和 ConfigMaps。 -Kustomize 生成器要在当前目录内的 `kustomization.yaml` 中指定。 -生成 Secret 之后,使用 `kubectl apply` 在 API 服务器上创建对象。 - - -#### 从文件生成 Secret {#generating-a-secret-from-files} - -你可以通过定义基于文件 `./username.txt` 和 `./password.txt` 的 -`secretGenerator` 来生成一个 Secret。 - -```shell -cat <./kustomization.yaml -secretGenerator: -- name: db-user-pass - files: - - username.txt - - password.txt -EOF -``` - - -应用包含 `kustomization.yaml` 目录以创建 Secret 对象。 - -```shell -kubectl apply -k . -``` - - -输出类似于: - -``` -secret/db-user-pass-96mffmfh4k created -``` - - -您可以检查 Secret 是否创建成功: - -```shell -kubectl get secrets -``` - - -输出类似于: - -``` -NAME TYPE DATA AGE -db-user-pass-96mffmfh4k Opaque 2 51s - -$ kubectl describe secrets/db-user-pass-96mffmfh4k -Name: db-user-pass -Namespace: default -Labels: -Annotations: - -Type: Opaque - -Data -==== -password.txt: 12 bytes -username.txt: 5 bytes -``` - - -#### 基于字符串值来创建 Secret {#generating-a-secret-from-string-literals} - -你可以通过定义使用字符串值 `username=admin` 和 `password=secret` -的 `secretGenerator` 来创建 Secret。 - -```shell -cat <./kustomization.yaml -secretGenerator: -- name: db-user-pass - literals: - - username=admin - - password=secret -EOF -``` - -应用包含 `kustomization.yaml` 目录以创建 Secret 对象。 - -```shell -kubectl apply -k . -``` - - -输出类似于: - -``` -secret/db-user-pass-dddghtt9b5 created -``` - - - -{{< note >}} -Secret 被创建时,Secret 的名称是通过为 Secret 数据计算哈希值得到一个字符串, -并将该字符串添加到名称之后得到的。这会确保数据被修改后,会有新的 Secret -对象被生成。 -{{< /note >}} - - - -#### 解码 Secret {#decoding-secret} - -可以使用 `kubectl get secret` 命令获取 Secret。例如,获取在上一节中创建的 secret: - -```shell -kubectl get secret mysecret -o yaml -``` - - -输出类似于: - -```yaml -apiVersion: v1 -kind: Secret -metadata: - creationTimestamp: 2016-01-22T18:41:56Z - name: mysecret - namespace: default - resourceVersion: "164619" - uid: cfee02d6-c137-11e5-8d73-42010af00002 -type: Opaque -data: - username: YWRtaW4= - password: MWYyZDFlMmU2N2Rm -``` - - - -解码 `password` 字段: - -```shell -echo 'MWYyZDFlMmU2N2Rm' | base64 --decode -``` - - -输出类似于: - -``` -1f2d1e2e67df -``` - - -#### 编辑 Secret - -可以通过下面的命令可以编辑一个已经存在的 secret 。 +你可以通过下面的命令编辑现有的 Secret: ```shell kubectl edit secrets mysecret ``` -这将打开默认配置的编辑器,并允许更新 `data` 字段中的 base64 编码的 Secret 值: +这一命令会打开默认的编辑器,允许你更新 `data` 字段中包含的 +base64 编码的 Secret 值: -``` +```yaml # Please edit the object below. Lines beginning with a '#' will be ignored, # and an empty file will abort the edit. If an error occurs while saving this file will be # reopened with the relevant failures. @@ -696,8 +718,7 @@ system, without being directly exposed to the pod. For example, they can hold credentials that other parts of the system should use to interact with external systems on your behalf. --> - -## 使用 Secret +## 使用 Secret {#using-secrets} Secret 可以作为数据卷被挂载,或作为{{< glossary_tooltip text="环境变量" term_id="container-env-variables" >}} 暴露出来以供 Pod 中的容器使用。它们也可以被系统的其他部分使用,而不直接暴露在 Pod 内。 @@ -1048,71 +1069,18 @@ Secret updates. 不会收到 Secret 更新。 {{< /note >}} -{{< feature-state for_k8s_version="v1.18" state="alpha" >}} - - -Kubernetes 的 alpha 特性 _不可变的 Secret 和 ConfigMap_ 提供了一种可选配置, -可以设置各个 Secret 和 ConfigMap 为不可变的。 -对于大量使用 Secret 的集群(至少有成千上万各不相同的 Secret 供 Pod 挂载), -禁止变更它们的数据有下列好处: - - -- 防止意外(或非预期的)更新导致应用程序中断 -- 通过将 Secret 标记为不可变来关闭 kube-apiserver 对其的监视,从而显著降低 - kube-apiserver 的负载,提升集群性能。 - - -使用这个特性需要启用 `ImmutableEmphemeralVolumes` -[特性开关](/zh/docs/reference/command-line-tools-reference/feature-gates/) -并将 Secret 或 ConfigMap 的 `immutable` 字段设置为 `true`. 例如: - -```yaml -apiVersion: v1 -kind: Secret -metadata: - ... -data: - ... -immutable: true -``` - - -{{< note >}} -一旦一个 Secret 或 ConfigMap 被标记为不可变,撤销此操作或者更改 `data` 字段的内容都是 _不_ 可能的。 -只能删除并重新创建这个 Secret。现有的 Pod 将维持对已删除 Secret 的挂载点 - 建议重新创建这些 Pod。 -{{< /note >}} - - #### 以环境变量的形式使用 Secrets {#using-secrets-as-environment-variables} 将 Secret 作为 Pod 中的{{< glossary_tooltip text="环境变量" term_id="container-env-variables" >}}使用: @@ -1149,10 +1117,10 @@ spec: ``` #### 使用来自环境变量的 Secret 值 {#consuming-secret-values-from-environment-variables} @@ -1164,7 +1132,9 @@ This is the result of commands executed inside the container from the example ab echo $SECRET_USERNAME ``` - + 输出类似于: ``` @@ -1175,13 +1145,74 @@ admin echo $SECRET_PASSWORD ``` - + 输出类似于: ``` 1f2d1e2e67df ``` + +## 不可更改的 Secret {#secret-immutable} + +{{< feature-state for_k8s_version="v1.19" state="beta" >}} + + +Kubernetes 的 alpha 特性 _不可变的 Secret 和 ConfigMap_ 提供了一种可选配置, +可以设置各个 Secret 和 ConfigMap 为不可变的。 +对于大量使用 Secret 的集群(至少有成千上万各不相同的 Secret 供 Pod 挂载), +禁止变更它们的数据有下列好处: + +- 防止意外(或非预期的)更新导致应用程序中断 +- 通过将 Secret 标记为不可变来关闭 kube-apiserver 对其的监视,从而显著降低 + kube-apiserver 的负载,提升集群性能。 + + +这个特性通过 `ImmutableEmphemeralVolumes` +[特性门控](/zh/docs/reference/command-line-tools-reference/feature-gates/) +来控制,从 v1.19 开始默认启用。 +你可以通过将 Secret 的 `immutable` 字段设置为 `true` 创建不可更改的 Secret。 +例如: + +```yaml +apiVersion: v1 +kind: Secret +metadata: + ... +data: + ... +immutable: true +``` + +{{< note >}} + +一旦一个 Secret 或 ConfigMap 被标记为不可更改,撤销此操作或者更改 `data` 字段的内容都是 _不_ 可能的。 +只能删除并重新创建这个 Secret。现有的 Pod 将维持对已删除 Secret 的挂载点 - 建议重新创建这些 Pod。 +{{< /note >}} + +- 学习如何[使用 `kubectl` 管理 Secret](/zh/docs/tasks/configmap-secret/managing-secret-using-kubectl/) +- 学习如何[使用配置文件管理 Secret](/zh/docs/tasks/configmap-secret/managing-secret-using-config-file/) +- 学习如何[使用 kustomize 管理 Secret](/zh/docs/tasks/configmap-secret/managing-secret-using-kustomize/) + From 5cf5bf210ca8c3c0fc4d96740e1bbab19790504e Mon Sep 17 00:00:00 2001 From: Maciej Filocha Date: Tue, 24 Nov 2020 11:13:35 +0100 Subject: [PATCH 30/80] Synchronize Polish localization 2020-11-24 part 1. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update Polish localization up to 99bfbd5ffecfae724e2f8df3c50721eca4d55fbf. Part 1. Co-authored-by: Karol Pucyński <9209870+kpucynski@users.noreply.github.com> --- .../images/kub_video_banner_homepage.jpg | Bin 1889535 -> 709415 bytes content/pl/_index.html | 11 +- content/pl/docs/concepts/overview/_index.md | 2 + .../pl/docs/concepts/overview/components.md | 4 +- .../docs/concepts/overview/kubernetes-api.md | 139 +++++++----------- .../concepts/overview/what-is-kubernetes.md | 11 +- content/pl/docs/contribute/_index.md | 13 +- content/pl/docs/home/_index.md | 4 +- .../pl/docs/home/supported-doc-versions.md | 23 +-- content/pl/docs/search.md | 5 - content/pl/docs/tutorials/hello-minikube.md | 33 ++--- 11 files changed, 96 insertions(+), 149 deletions(-) delete mode 100644 content/pl/docs/search.md diff --git a/content/pl/_common-resources/images/kub_video_banner_homepage.jpg b/content/pl/_common-resources/images/kub_video_banner_homepage.jpg index 57582e493845ff480325b667f2dd26bbf0a38af8..e40d92a50363b659ea2b4eadf33e6639534e9442 100644 GIT binary patch literal 709415 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


~Zd?xuE*8(Y)l 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

Jwhzp+Zaj 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%0D4!(ci@L+XLvdyC^V$oYr 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�|mKQVsklecfC>e`}iY{5;#A;gJU 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≦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

tN|0xHBA~UiB8017^x&h$c4+u@A`96P%Co< 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%0D@+WT3>)Oe z;pxq8$K>YhBaYXSGPB5yIDklbu6G92jX$_A68UzY*p-RbkB?2js1w*-@ zlH_f}<%$O5LMoiln35lXj?@Q{B}Cwg1khwgDnvmfayX4*jQKgrXiF+Y8nK>Nbf=uV<^UFicQciL>2qf0m7ti zpiKm$0+1vLDh6lTizPxPDT;--^Vm=-5|jv%C>lV8LZWC2;4rEB(PUbo%GgQHh{Hl|}%dX$y7*0YL~eBO|>k6@tGknEmOrHOP{32V=!W14GVfGBg+% zsR@f6u}vxv#E=Q}=9P^hB$6^|j)#yvVxssH9V7ucq9S75ikMKyB$%W&i4bJOQzFo3 zB7z=jlv< zl(Xt_MS?)6o+u=Qf_-R0W6b0nP!&UiCMk-7NGCnHqzps});`l5jD34+YiE1-c2=e0$Ud=mi?-lEY0W>>h06&6BDiMNy} z0p6>BaD}I6(YC#D2?Wdz)s}F#!Q0o);~q^mZWOeI2_AsvD;%PAapvw;Ty5nkB1a-= zQEz>fZd2mOARPCrBIwJOJ=`-k>fI?p+68HZ&Q^R0D@H2P3cV(^F9#*M3^o7+nKaQ3 T;rul4C=0QqjBOO?bbtTZ7Cu~r literal 1889535 zcma%icQl;Qw)p712GP4ptn85%?Zxx z;Pe9ODbN0^qnn)->L|}{DXuT9@2%?O0@VugbutYyFoOiSL8Kko6%|r=FN2^P*^61+`pq~GzZrPQFloCr1rmFAvs#Mp_2?zgPisfJizy3Ofrp zOM)Z>Kn_k)0uCT)VF58QX)$Lp5m9@4h&21Z_#OX81plk2KGZyT;{9)fWbBG)LjUMI|D!YgyXv8b{-gMx)OdLK zPjWeVK4g^dL+acg0Z9Lu5CF%XhZM!QUj{@2F#i7m^S=S>KkzShObm<%?8EOri2vWh zeGh;FAKR0#9Seg3fJuRYMS*eO57>Gz5bvL|9}52j3`{I+99%qn00AKp#=nsN#yvRm zFDwBeIpDzz987F%EL?1CYzz##2NVT1fK7xFM;X`Hp8b(egeYD*2Nj}0#e^FF(^m(v z;|)%l6JJ$=$P81^<5I5o5OKm@H8a{NSd{q_iBreT%q%(z0LFtqm=7{>9{w-@3>Xxc zSO7Nc|0(o19ic*n*YL@NgZk@+!-*KaFDFf;>Vr(KQpjV1_r05H;#07))2L~)zH;>^ zboWaDVl0dYkFh8Kih!%<;6@V!jy5U&okh9hE5R-6u#70e*eso^UD{l81(xxw=ooKZ z%zjNB(e3Z}2qrVE*Q_MSigfn2m=deHzR~eUgX!J9*kj61OOjPQ{_Ld@CL=DsC;JK3 zSFf6tX5H8(PQG^2k%w>0?Synsb+FXSR%^H{MWpAGC|7KNW1m;Doet;|8A@Kg*>93m!Z zclo`i+CRwakv2ffzkXi}N6!#7eaEXYdAg0?S2|A9DYXmU!ENr|(Dt%5Hb zV<@ovch%6&G%=#RxHmG|pg5VYF;aqtJv&WHz9H?7NzyLZNs^qmtEeN8YoE*RMW%Z@Mc|~YND6XT_XHJGec2M(j={$dd)3=4xcoN)25EwH@Q^M_eX)nZu{@3Wu!D`{JFS^M;w+9BD#GVOK1>zDR6mz2zyk_`+Xf0wLVAAafNcw#2*@U1Uh5r@@Tvsh1# zouIwYfd+|6aUQ}goAe~^P{KoTTg%XHk{4TUoc_>pgWy=pGx1z!0e*ri94C+P1boLf z?7O0sN;B>L3Vg>PDRkLF+(Bx|!1nACt-N!|BgeYbhEsvf__q~%B&a&X;kS-H%UIjPDa|FO@o}+2kQ!ufOSb(;p~)=v?JWWwTq`jLWb~S^iKFRw^cQKJd6zYW<3djz-sl zcI(UFC9yO)kG(I&v{y`M`Cp1}id6|y@*_nH#*{O^RAwr6I8F6lR(1sDO8T&v2gNl? za};f}(ev#W+XpZTQ9-;_K0O8ee$r-wlvglk}>ogrn>J` zF=AAZ5ww%^F|Dnx6Y4PJHj+?&8Arw4lE1E=zCs_VgcBk*M8^O8gwCmMVTS;z^d+W3 znsE{>es=lmu}ke??b0|=Ds)X4s>S$7z0SODlxexKjdHP|pw>6VD#qV9xCLHc7p1uJ z!g1B-?Jpi?HlQwlCTG#NW)uOA`O{lX{$SM)u+r_;p-rPL+f+8{HGpH#9H&ff?_$FZMB7>r=t{BJj{!AQ7&QNyQEq5pon8}CXFKTERa}^L=-3e)?*sYk9myLwFiT>nwxM~jZ3iijeI!< z_fk}cA^4}vGpv-RziOmb4ykdTSlO9VkGFX;!72w@(HCD!u;7(|mCa6`$kMEtuZI1# z27c6N>c&R!ZWjLClW2;DAmVZGTz-N{8@#ut-56mjb1cnN9?S1qxs^x1VIQ9OL)}l+ zyWnet#p;34=r&CHhhZ#J3i(;RYgQq$;vS$~mT<_VZ=jM@t5Kv$Hkjl{NE+AshKB&K z^mdSmHfmR$MBPyD^*~K>FR3ewX;nTUS+Y(ag?P|<6eq- zvtJ182wQ#aT1~LM?Le9qFvx@-*&EB(^ut600=3U$ZzslSPlm1^e_pN)>^mxP1jw12 z@Tz$egrvlVrxpQ%BRI3D^fTQOtwRN=yc`S2+|4ujzi1p3Wn+=FYlN4^4>t<_2;sf0 z^lDmLA2H)us4jz{>{|<)R*ek!L|;BuKE448YVwPmv$h`S$9z24{}kG~{ZhLM>cn5P zL~e~510Ic(DH<9wHoV=IEn}cpJnF1nb&VtAcr(=6H&{Qk%~??#mbfmC&iSc$IGVnT z^RC5cl+iaPTeGFHbeoq0${teRbfGhd(dP0e z{*3z?YEyV|`8Oc4_bH{UMc`c5UWb>Zzcc4ol(KD{o_E;BZBM3v^(EV>c=Ng}Q<*?4 zt@Y3V;oN6=;rN?W0F_h=ITEC|1?4pRs+P0HN=?=+P8#qhpNLX znx5tfB;jDz)}OfYP|9HBb46x8ZGtMJ=x@9={unb2 z>hmP?FjT9DrBBkEy&YGwSFV;whH_$f0pr`ZIg+&niGbN``s!k1rlXG>27UJRb#9Zd zW>wSnHWCANBiE`UgRTOdtgRvI@~Z+y#A8++Gki~u1P}0;EObO1mJ3RZGIPW~29P^; zEExkU#l$=csA}y(7r$McsB9d$wfJAEs8m@GvA)pzJ#Y_*J=|wrrymKZxIs!1YK zXc&H?V15>SRQb*7_0+}M_~EleIrp{QJ@i%ws}dM%Csofs7xEe4{$5h&?3>@^`M6u_ z9jK{4OO1!@rVH!zps81WbmdYqQ|Hi!GtxqKMckj)K_^_BwU|F3OfofvwhugsKQ$ZP z*PF@pt!h;EyZEfFFBrpw@65P`9{j}n6xr*RjIAwGsy6nJ#F#T(lVGi)UG$!e!hY6nG zzQ!CCUR^G@3MQxI!kM;QGxjt(C=DF`M~jLt*EBMUYdnpb_d=(8>m}u)n*E?tR-n+I zIm00p%TRJW_dLseLjM^{@Lr;2nl)eOYd&jb?nzKp*wQBQV{0U5$?qCU%{QiEyNaH` zYvS0?gzcBrM_%%IlU=H%mVu#3f1!R~Y?ntm`X#0~5!im0%Rc8ARrt6sCK$^){zmdM zz5pn;uD>E2^#4VXz4EbPEO8na6kg2(i@CUIFP8bsa*vR30SR75fB> z;L<{OM@6pq^Wmgfs`&W7#-^yjtHt1q#L-tg9^iQ5ut&*fn$&M65A7BSWopms%|=_b zU~0>R@aoCOVU>3$1GNhXn5oBC&%OlfN{f0bG48Zh?-&}>8*P;xOIeMo@V=Yp%WjCq zstq~+JH3|fGr968F#eE<{MX1ke7;ski3sa}yYY3$;b1EUvKU|Hy%A4^J@I8Qefd3r z{wn=4wcB~St)uZV8OXTtd-asWKzX!Snt{IUVyc^eF7}EZ?$F#}I_6ExOVx~_;?}m; z-1$2TlSAN%9HiX2EpT`ErOj!md%3o118lq^|Da2i;U=(;zNM=IogdZIh1hKpun%cy zJ}t>C)X99_391k(y$3YX&+4E@KMQ%z*4)Mnv2o(Qi2 z2K%mO2YTU!{zDr$F5v7X-!T%c&yHgv->GJ?>tnUBetrov`?EVIt&l6EHL{Bg5PTK` zstxh(H)(zLiA3xu*id2d>AaZ^>iILFcW}JtCE+g6E!D($$2H8^aS7dbP3k*=Cz{T+ z0j>bd{GHbi!`|%rt~D9qcpH)FGjf1Vn$9E?Azr5^_C)x}?}q+D6w{@-%E3Zu0|K)N zo4KM)xsc#CuO>s$<9mqf9YKq<%(SjEuaSXkSdOWV*|gkeXfz%TgIRu$e*t}#;qyrV zy^9Q)LfoT99U^)0Nqd}LJajUujQc|iS>W6f?_W)slVy#4?fvMlMt}! zE3W`~B#MC!Zr1)BVdBp?BqFEyvw@brQ8{xUPI7&`H1Vp67ucNMT}?PhMh$euhXoDG z6-3EM8TjTHW9=Mt{>;!O(U@|%fT^?-UsfF_=;btt-au{jr_3shnO-gbS)~Et^`CHouZ46^{9UT{!4b^Ik>-Y9d((cRZn zTIs(O4>PFW=-LIF`RsAWB)QkRPRZ35h1&X>8Ncf)3ZuR?SifUKJ{=;g4w$Obu^eJK z87z7^PTadmFA2(gUeGfh?;t#MOu6Pa+u624An;yH;jo+y?UIHx;dw=yJa_<@EBwwf*`q#NF;B-_&W zoZi3|sG64qLgMc>yT-)x+P1GopMW(s;VO>K)cotfI#ha*yxZU4HI)Ej_evB1_u4Wy z_^gqsfA1cUySe3!eH5(Ja1Y4CItyId>~aWD#1Q|`s=fl8u-!pCNy0xbI3Fx)sDw1P zrs)WX_4+2|Bl@oh$3K6HxXq7{p4oFWP3Ig%d0~f!RFrbKrK8YF%Xka{Agc@36ooz?+Raj zo1B};W}8~JrJ@$vuWAgAWt#9Zs=$+vpfGYbLuPhhZdVk8e+EHFs&)XMYwUj(Rxs|U za=eYDW3W5N@Y%QIkp;@9kf)zqU+f+r2jq`aNtQ9$$kBrfewBIE_%oCFaULD!Dka zR6f!RQ08%`y)^R@NkAv=?(k$H%b$>tAGKkt_W``Ir7jpiH{}$Y zi3=LRV4@9-_eHO7&MU7JHb)Nk$6hw%pQP>r;yw&vIVe!CuEyOCg4ZgUAb;X#ca4VW zhqO!Ra_nC5r-7t4-tHZqFZ>EYR4(J0wfvp8?7f}b5`7Yv+DCfHJPQ!oS}(L{UvBC; z2GtNH#@gr1QR14kg{nPjoMueTI5Z;aZdSf=gGH>q1kPv*-?6X|erLuy3K7jyT}6me zQ3)!OZq^(FAdiZdHD|!17JCe>99)Ru*3z3F;LWfNWsV@vuOE=Eekjbg>xWryPiv?? zd!0y|v;4(WW0=s#vh3!+C~(%FWYPWSc@s`P*hGy9U5PT1Jft|lMUR!&PoAHevCxwk z+7h2w3NdbY3z*=VTJJoW6?}Uh96&&!Ju^f69@}&)J`U#|U;=*Ysj9K#mn@r@Ysv6z zhOuhHAe)0kmb^6Fq$riErjf#M>P~{y6I((lnMY2u(EHOMuWQ<(B^V1vXTAD?`n+K0 zm@bL-bGCMU z-VGy8X#?!TvLZKHM$$7*1!8Nvg`urNGeBMw;fmfJjcCwl5fPTQ)wJya`8L6Fj}eT$D!$5rz$p`1~Lt?JxBo+VGM_;nLbCHyKq_3+6oZ72)I{ z%(eu3+e#m1xaS+s0z$r1AKcY8%aro4IcdF`Grk9U9-+Bw4Rh4|H-p z*Vy|eKAy3qR19T2l_uBkk?}r5^fo^#u3NJOq2sp3J3aoUo0kF)2EZ-t44Qs0xZkF_ zaWXv_UrTwe^vDa5M*i+yk}JMFnDOkmKYk-v3n##Y1>^{f2EViY;(4Ib=rn5T9vMzr zwv{6wvdqVbG(l*6x2A%c3A(P~IrHhq5ZeI{)$JsynI!hmLiIbr265o(5ePm(sqNNN zL%$Od?bd95{|rli9r_YegtRlRs0<|GJ3LQyz9m7!q3X}ayyRXvh>CN zco*YxU*piGDx$`ulYP(GU8^C@!(x=g$EG*SE4l8cx*5A~q0d!KOJ*OHVq*=oO&vj; z9kn0%kiO#uQxhs~4Kn04V8>q#t4+Q0SrDZselb-Dy<}J=fwF?L@jTUsG22PXL~=MB zPcZ#6=YBH?MbZ)5a$JBHJAylJMKD-RFi3T&zgCx+C44my32DJj_|=Aaj`kY67_xk( zJY5TIUR_~K&~A18)#1Ts!b3YV)jFaWFTjj=TGbKqp%V4RYRB~Jr4~QZsifqbX1oi8 zs>q8D90dk_bj8>pdKxXTZ+T?YpUzgRgmx~IciW3@N%d}^NC-Lm2xoz!e%%uvL4pzdxqb5K*9BBRm7(hsiLgR-fvTlnP=7O={(Y=>~dmw z<9W8UKhbN}5kGCiS2-B7c zZ-6iM{54-1E0!VKwg|F6e?x}LtscfW@1c-2_udZJnJC=)p>{Zyi2YM919Pn&9BqX{$Usq}={6c~4?w&`{#=Z=`1R z`>qe~pHmD_qn0|2_@r5R{dI!;+mIx4enef0Z8s%&m&lbDE1h(9u5xZAI6}i19FBpY zIyn#y+BbeLx`3MUpIPlhsWu`Ucnjsc`!?OqdGsxYr4`WGl3t$iBZo&6I+N$P#eFuo z>|LT?>;EKM>ZW&3hSN7Jec_jVPHvLLIvMi5KVY-r!n?`T5x*FM1YaFl9KR1v0msQJ zE1q6CFy4eIOz*#2^CXp_>;e9D8f`cJy5C9|>(DnU#Au>Fpy@ry$Co+yUgI!ehAh$| zVgM#G5K)eiqA8XJLi<&Sy_7RcPz5U-3^|`nz`n-L`ZgTlA7pq?m6VX=@VwY$)}~~= zw(#P6old0vW5d#lIk0s_o+ypERzuB_?j}Vb$(P}#Mm+bkyEjqCwR!bmZrTiiI#85q zdJE0#D{OC)Y-&aq5{zNfQlp;AW9pU<)K=_QqB@(_Gck;63*`Z3audOHl?bk8BL$!H z#!#aclO~>b`dIvAYX7!lcIq?ndK6V98>Rtb$!EjsVe%o=)09;<+UXB2v@5L?xaJIU zw=WczzD^DiF_n1qNG3&4OHd`@aC`E6DnkgkP?3YVEYAPtpkAaDA@qi)enuR*P&*v)cA zIMw(h-=0&^qA^`{F=!uxq|zhntE#&?{}kJeQq>WbZt>QEJu0zp%ZlX7uN9rX*bsCJ zf1WkdkP~h)qi||gCF7=Z_s3q#SY2Y_bz41>yo~X)+dW`zXAh14l_qB)aK1&2pmcv) z?)0QbMu4F#H^@4H49>#^1@G(i9HSrAaxeSHT9X@b%zoc4rT|+CG&fh z-hRhb@}t|gX4APg^JONPm4gzncw@-WPv1PKkfSpWFdegF-%Y9}UET8tVmv?lB*3=b zK+gL^!%?~P(RzrXL8o_lDVb5BKFe}xLWz41Vl1Yj>9ogozg$8^KY3r`0Q;E>J{CWq zy%4IbKVzAVL)f17&8RL$6y0Vwtj}}vdH+eWuB+(GwO`2(J(}$qdMjonJ|vNf1Z6qn zT_CI3loh+;tTrvg)vHz`37@@tFOCW+xA=Stj+u1SIqduN`l}D5Y-AB-)U?V zm651cKVfN1X|lmLa|Ln5cq!JPHwD_+durET zB@%Te`hjUmqZjkoHQFw+wMw`@;|z~`)R8Ret8=NXNu8X2fRJM~zw-Kuc9WMhRVFU* zs!z4G23Sp9=KF+6L(3IU6|(e*O1UU(WH9lpX$rpPtrWq9!zz|leb2JIX6NK2$XM37z?wJ%5#Dh?DoW(pa9`tlvDOI&j4HAQ=Iq2@$z zV?i-}cn};3eVyL3NnTQAv_PemPg@R*{!a1^7cB`>t%z7ny^o+)FmQZYV7`B(gAfQ{t&1{i@##5s;>!{jW}n|o$ZQfE9CKQ7I<2HBI4 zNi*U@P8I+s)PWB>zonNZhDC$DyXVw5bMv}u1TCkQ3s6ikhHUV$uw7BTTaVV#J&zps9T#`Pkm6y7m`H%lQ(9wa+cKrJSfGqOD8V)wekl zjx&d9Sse?Pq3r(}8)Rv$_Xnb!7!FSH6>#+l)THuJ3Njb`m62gd`A7ca8QKn-C;{PJ z1iOdOF7$l>GfTNNJj?+D>Ds;V}>hNYM@BHYr zqLCu@(v0rm`(^vQf+-1PYhJ|xOZf1;x{~i;^#d!$k31yoM#Li};*-o=Tndk}cc=5) zXtJYU9%DfG)h>Dg85} zzD+ozO&%*_s)07UZOtbdshX6(u=#(!XyH`lFHFXRLQ{L7Z-=@GdQzZUxz-I39OH-LMvXr)rI_|sTDcpNG}1c zz0qVKS^Iu5*PiB9Jkduf*?<64IrTtc>hPuIQhQbou{>aqtFY5gU52lCLNnwh?#sBB zOJuQ4C%plUZn_Zc92}nWm*jGemO@$zFVA~hVq>gK%+tFeIT7Va;pi;bY!FMfoVQgk zI60YZIs2Ib<(x*McUHKo|KvU3v+!^sBVG*acC41F5@zvJZ;kJ9&hDwnGJEKJVs`iU z-^yc9ZE|ne@IDDq=I5a6NdDIl)f5 zg{QY)nH%Gyb!XjRRxrGKNuC_H;%y6@YCW3H0D%XpHB$?D;I(cEdTUBrmLm<)Z`aeU z$toI)9<_Kr%aK9|uqosy87lEr>OjOZ^U1j;WC({1^PgCMO2d;M7<#;6rRfpco@1%8 zW1s7u<;Xxw{KcbywU zf00F%R?`GdZ$f*9lL6BsdzV&QhNWFCvRJM*72CHQXfinLS{tf}KuwpSUrNFWs?bfN z*20$~Q_Vyufht?8xJ_c?A?Rv9KJ#(wQ?pj9rW)O0#@`G8R^lGc*lDCIX`p=y zfFswB|IM;adfbvrWZFLW479FL4wpl^yhEMpyXMoZ%DH)5(NRPH$R<}f(#=*ZI)1@x zF0PwXnPE$RdoRf}zGpcf0Ixz<_Av5nJm$qbN93JSY|glKZ3qvx4kfcv1M0C~y{;e? zRGe>&ev&6`K#4gS0c;HpAKyW?5~_=u*5&Y%F>*L38su|k2~MAY1}-}+Bq_q7dP6^K zv`-Md>sxP6TATCSCmf>AYuSW+H9rJ=td`Stf$kOMWsD0<7)_cW8Bw>Ln`0+BHP)9w zoH5wQKMhs(ulYB%8XlvBwi#N2g=kT2!HXz87@siGfgf;nM_c~_cbjY}vQ&HMy-Rnq zJBjkz=j&n zvQz%8w;(`}VP6oxNpCxB*J_E6_v0m{2KNe-w?!t|K+q@HuI-yj#E$XKkuzjrWZ*+} zLFMz%g^mPihSaVECqRxeca7dXAo20SZOJ0JySljXo3)K16!UyzApNNHM7J@xCUH4e zEF4Pzr)Dmk_>`M|O}4(^m}n3@=6v^a(;l)UMrxkzZ{Q@wZ)j#Nc;v;89p2@_qD0;8sa8k!H1w6xns(`}JfwT7j6b604+rd<@ z!;%!OJX_02jkPBWt@QH=qhp%t{*}y`(OUeS*w;`H$FIjd4s2F zH0}FHuYWSa`m;9bKn5dDm6oKb>Z|?0WTC49R2A30!;b(N^usW}ubIZrAccIMRawu0 zas~Gr0pFHt`o0SMQ`1H1rj-Lq{`z z`y8|%?6>H8{1JqFnvihLE!fI}CV9+i=5;30G&IHR<(l4fm>5}JF;z$;2%hdUjV>~d zT&`v|l%_dm+E=89L6>sBp;)qzSf)OvML|hbu}(XAv)%zCW!q<0T~nU2)jhHXH`IPD zl!TLCeVKzCu-cqE&bZ8&gQ-Aqa!oV!KY1&;3Ms6or$&p4q}V1JB%;exj&5a5L^mhs zeGBtL%9gAg?UhYi_&ak_aBH9D8^CT z*$ZFu34c1paikZ9Hr1bitcitUCj_#v#A56L4rq$*0h{i2;+;IQ6nnBSl*#F(jR-1} zHC__q!D?at=U0>R3qz5beifIYQAdI^hCXJd{%fUOV8%z%0}`VLRkVdO-~jUI>si;Z z>5Q?zZbXuQR0{SG2((%MF0AC%&ntC8GwX2N8*6Opkv}L`gf7~H#wvbU9sMf4KL@4{ zohwdkw;z171k3J}x%~(v_J2P2dx&&epErNhATMjpOm_c=h2W98S2>k9UBEJe#rZcY z6TURX9aZ1q4oSx5JCSSO-QY5?k^e0!DHhyzCvKc3Ln2%@EN4Rkdil1p+qWi%r}<`O6UDQ~C(GCv!{9he}$+xY-Ie_0xDumiQ~0`425*0 zzNU37$7m8454`&4TYp1_vW)(;Vz2W~&(Nq3JGT1cnHXEFISqBzr6zvnyB zSM#i)eTU}$Z-Dj0g94wzYcnm@09Yc{W718uB@=O%{UimY?xzIEfYg6i9zK`?;9kBvv z2{HN5YHrFg@s{S88M}oEGL!UJDzkI>^vrFUb9q_=tlz+_mU=FqQePZ62nC_$`9ThviIs&saUSwkH#|LJ{Q28F=DutO8^z#xY_=7AST~`N zmH@#SV#Q{-EE0FBe7^E{x)zt}dsG?&_m+B#o2q-(Q(F(ry+WjMQk*G4MU6|OW&+u~#W^exW+hVm1Ji{W5`5*# z=F4d%!YZ6ty8>1LTb&H3auM~+On!8=0!YUG9v1IeylxYF2BWoMqekX#e&Nz%nzg1>}3iJ@SW20W9iFgG%6OJYm z%w`CGS1`a+xR{VnRf*`=b5Ly(Z+k_Ol5U?xRb+D}Bq?PHjAx67NBLq^3FDWMX|cb7 zjg;B)tMQx5NMt)LdAeAqjVwjny*leNuv?LEX{5!ZKyp?;m6$%j@}|DtHmKxhYslCH zfi`5dR;ViyE7Tr;jX)WZxV0eWi9EVWDzd6O_+=6}K3F6WJ<2Ho$hmFea>m{{m;Nq; zfWhS@b;K8GhDaDc4BHRzLyrfCW-h80f+#c2cU_Degq|n-p56-21rx6Ji1rh*nkeR! z-|&dmjps=;=>JAO7P>1C!KNHNzyo%N*NW}iev4dEeOINu!n7{|V$g@yPai0fm5BxkD_{&H<4^~+ZEHU!hys9Np_Ba(1_yqP-jnWx+w*Z@d+oC+ey+nMfBL-n@GNzw$({r(TfxV}XSI1r|EZmfo)Fhl6&v_kc%t865n|OHx_= z6($wtp_P7QtwrccjuebFYuPf`TMT}5)WXM!1K|ZQUPogjE@G?S?O296`}gvpmtR=P z(j(SOtrXxd;{#Jf-SIS9Zhu9Jd2Ms9guUY)Kp~4%*h-+V$y{DR<#6KUbK=cZOJd^M z8dXoG62qVy3~6(F#I50luG4TuQ%`jzRXW*ff*(^&coZ9V%Rj5L9WUar{jKy;n*(i7z9z1Cga= zmGyjjXG_p&=IYyyqerQ^6ff_-vbl|YYn5+F%}iGCNey#T4)Hv|zthyYYFo2bYi3OD zZS>`C){(4KZH+RnHIQd`yRaA0Mm%{H2uIs5FUE1uihsM5BW<2Ps^-AN+$l5Kg{r`> z!d6Uik9fpuO`j8}A-8P4n3(Gnq?>4bBZpO0>S-si?}^`Po>n~H#z7eUt_tK>!2-n1 z_$N&3i_Xh=Nd-pr_%OM)zrdwj&ZZVj$6)1uV{nim|BM>xJ5s(CkP2{70k)k6QB({S zC(ET!FM^#+HIVvlNLL`UzvTB#&s2QC9_g98nhR5`X+qOhCRWX?qXP&B}db9OxNQ zY@;#(Kauvi6XLhgt=bNFW5RWHen-_c^~^=gr}EWd@05p@kn`uT z`l06Y!}#rKykC`8?Lpho8VT7=N&!Th7=S%9gEwNX;sLs4RqU4pkdOmhLWo>^USMfa z)1C5KJcAk&CeYVAyXNhmCz!;1G-%D-nR+9nXsA3tkkT-u4e(GRkVbLHxafOZ736{< zFEE1JT*1qUt*vSWiS;w)@14hza;qv>Cvt{tY7dC7zpCj5rIG+Q`u(|XZ>P#M*#{7X zGh8}H=1X`MuIaf&ydR`*LIM+4H2%B-IQl+H@*WhAvwZUUg1YfyZ$ZH}El0|+F|d?w z?2vg^hMr6Oy#C6P@mJ36=g$L4X(t^eHIM!41Tu&5*?k;Ic=lL!PH)^Q{|fzeh+5Hh zdauEP3U-E}jPBk7gh{~hyO-mT2Xrf}dSiS*$t;3pG_ z#Sj(S9UG?QZkO6kt$m00bfdDpuRnMTx^$qZRV?y$Zc_af)N%g2oU2x#Yx9X$_0P~g zzwzr{u=u;&?atAx)$d;l0vHLejBd*LO*8&YJL2W?;hL+(qh9V~>H)Fb>Fn*kit%LR zc8XUyiY5*xQC8KlDA{cta6WxA+*aEqL_0ajrGf+f_{vk2!l=GX1Wb>K6LgM*4fuy# zN}CT`jD5CqA#o-Au*f1DXan~FjuOO@^OvA;#JD7X7U;?+W(l1Su})4hEs~U zMku4|VthzW+eVuBK_s9`27H;L8B10GbD#J*9AgQXwwNbheh72V0@L&mE zJSlL-ksF79dYU0KS(4#o5*Dn{ewAJ#WeV0On(_O5z#g;^H=ztpjX$GJXC(DGzXe5x z{ds452Eyd)622j+EzD;m7VZ7vhxR|} zZks#d`>-Ny#F+C;5_{RieEtBuReF5ec#ZGkG4$g?XH0vAqW&J>bD=&tPjWl;_pcX( z`iqb;b>}wRl3@&BPRsT?=S7{)G}CgEET(mwaBNZT{^h*f(b~yY>q6q`juISjwZiUp zTKA^dC+vLf>=!&|e3Zyj#mQd&2E20v+_YG98UK8t{Vci}XSo zpSONXn1ft*<<-34>B`SbN@?h`?A824Sy{8F6O}ZCSTj!y8Y1Y)m-$O{X7=gugQVW479|W?AtgW}1vA zPH#Xw-Rfi}An}ud#~FKLu9FrTg?t6D!v3KMH%7E)w`VgtdgHHjS&JGRyM)SK#Q>bv zwk;C%WzYIDW7^j(?Nq*>Gke^g%N4xU3}Fol)m4$FLY35^wqdjh(l51C48Iw%@0R24 zH(t+LW^6pX5DrUN$xE`?7AUH|y2wFa6A!^#OqzmYhNL2V6BPOe-iHOvdSq{VD_033 zB8&j81(E77+K-mzJGvgA)6cWr4j(yF3`N?swdXh}an5`VuLZF1`#)dUR85P`(B6lmLr1sU#)N#-_=2vv zZ%1!GM{})4KhipsX~Ybah>k^R2Z`YMPBZu1)*nI*7I*P`;!f%$!*(wf_qPIA=$=(D zs0h5PZU=W6UdoSMS{h7Y9@(^ruu41=GTpb&-?t9(BVOMn!k6`qpkM!G7yE!tOf6XrF1!9Ia};DD~rj zI(XB|6#;Xg_1IUxbN@rBbiIDDwlrs{$S|YTawh(A>nPpDz;gyb7C(9`9DUsDR2e z?8=`#(8~kL=nlh}~0EaVXBQRA=MPgopA!_>j3L!RssM6%N z5^Anfx&LaL_W(8Sxno9C_4lO`KBr03lZUOy1fEsvAA4~acsf-DqRRXdRpNx}DD+B= zja*F7I$ofgQK-IbY~zv@9M2V?i#3_%0+9ahD*R%+DCI?IhqBT1V%M(?s_`a5r5`%i z8>BAWy7cek*s6jO3IOkkhxcnisMF(qXel<-bm6SAPREH;Cjd()s!*M@OnE2ar4RTt z$ShWC1D(yhuc~to_yoG~dANhw?*h!0kc@zML%%V+63E)f&VQO-w53F4MrIIJ?NBL6 z_r9@7oSH?5MlSDb4-Mf#YV*U0UYuIAv^##F%{D>HUkFXJ)a3UtZ4*arsa>e=9Dyeo@4y?%z;E8eN;)uH2d1F7uht?s4RpuBnL@L<6m^RjVH2 z^X1HY_0bT$#VD4rRIsO{xK{yATWTO{VRY*Gj#7vLAMK@@%GK=D5r+6XuZ|8+zO3vd zryat6UWBQUI$wo^oFV5fO(SLaTtLP^#?w*#Z&R(dN4a*jvxR@|vYA!t)LEfTQ6}9Z zWJR(Q?yv#gGMIJb?8G%%hB1%WkY&Y?Y|oae>*lt!?J#jS84{e>}y%T|R7 z3oT!`(7E_nAZcOcRX2l1r`w2p-|{t6)o?dAWA4fO_HW1BMw)SPG2WIwK4ebbKMoJE z8?cRPX?G6j%(iL=xmyQXncOUUPf3b|H{mSuz}iRda0^ayx;)QO{!;)6E{oDHZG3%O zxyO;}pMF?8fAlspC7sFfN%>Jq8)1O}*^~jR)B4}ubuj8$K_K6KN$Cm+_i_ms?7;kG z$C-o*>YgGyA-=Wchuzu63S_m3qor5m(R2cF4~q?clc670HO$pTlZKZ5CX3n8v?n#h zk8eq|`L9^A?MY!Utf=acW;dRMv=7DGQUy@1%~L8Lux{yuCHl zDxD#AH!XX{yUoRy;kKpmdjH0iQEo0;@`QfdRdnCPZ=#R1;y6XEMrGkWKLQw#bi|kF z5B}h3A`0Hi1C324Fj{VJk!73h`A}$0k+aq2w#Z&BJzNYjxVR)RvRZK@vfZ%ZMT^Q+ zVC^LJf|;<|x$IstuNDaXg5-*CX$q%p?3P}lQxAo@el$*x{yg(1=|Ex+DkAQn)K9xt}?kDt1M~&BnrQan}NYv;77)<7JqVW=L&*Vkdr_Q zl^!+DlmLuVP1{m4@|3A<Yt%C%xcdb|dvn2hcz#n%K1bY~X@X|*f=0CFKvf@Ipu z>8?hgXQ;^haF6kYu2d^aZee?W>_!lUKyD5DI`wx*|Egx0xX)^PGTrRp>J28FQQ@u=4CHDSNqpfVlBswq%eNI8EE zF(7d6(G5j+AW7U0S|fL?ZUGLDP&4-cBxRjH_^`I{rEU%BmuG}PLi}neyXGRzS(p9S zMMT^mBT5QTnp0d$93+9a2BABUS0eSMR~_#ZXLHUIIt}btmKCT9E4Yrhb(|}RC9NdW zgFVa&O_eDT-+&e>@f9c?PVfUO<_HFvpA0B)j&UB6qspBb(g2+eG=BV1lS>*@R2}K zoQ7KA)^JlEhv!Tj)-|iT)eC>$7SbVAeaxh@(nZLej#cpg0G2E*ZYc-u(TSu{0t; zmEQ5kTCvaRCr>ZkkhV&5%}Wv7@AwP!nYV$@ktsy zDrxrn3US2uWzD3>^33x_D6Dc6Drh}EURYx*ijC|$K-_7rLxF=Oghbu1{xz&{-RCUo z7_~Q%O~k5{83IY_af#317{Y??tOq08am0Qf#;y_fLlOvTfsv+!*QE}4rFRaEAu5CX z6GzmQAUmM?NtCFeBocEq&n%D25dQ$h5O$?7?hq4ZsrY@Cl^xSs1(SEfaHV|dp{@w= zPZvuHK;RfIXvevoy(E!CrAeoSbMP2n_|vY_MBW%Bo9Urm;9@;e6!8M2c;`$R<9tOC z;qHuXlqa32^vD=8f=MAy?aXES@Uh0x+}kPjk`%ckXw0=WB8TCNOmKgu)n^3G`ah{!alxs5U>JhRW^h;Cx4ilde-&MFbLHEqq6Wrd?^f<0Q(_5r3U@;Lp# zy+Nw!xTOW*!4pc*c>YiFR<3J7Pze+rG@!opz&YS{`cTfm*Q3I_M8vk4#rTk7RD!(x6Gl zL>z$usi-@X+uN8U(ijH(a_NfPjwrZ#ZYr`~5V>truy-6%?e!2&ftxRv%M{aa&uWk@ zRgd9bESIT7=h4R9>I&tPb<__5irIL__0p@~#6Bl!dO7Yn8I=`S?aHchIrR8puknD# zbWuR?yOr;71u9D4oeVuv1v*gpYlu>D&G4v_@gyn!6(V_!stU|N13FL){POU`2{_=Y z0-rj9c+qB%uBD;onC&~2mb#W3zB-)_8FmZOzyVCZjRL_zsW|zF%>xoe0W{OfzIcT$ z6pi|N)HyIE@wGZ$PS%W7$Z~2rb@-1wMs6IV&Y2ie5L8p7-9MC1}pa_B)7@us**jDw<6PsWxq ztv@<&B#nJQ*17oq0LHj)N{r?`)+Uw{BM|#G&}pa7FDwG7YtjsIwCx7|R6hJPJBbzO z4F+C5ct{SS5lPi(MA3s(`n)>R@jY;$PKQb(6uKJn1 zj`2+DC`kt@lV2K^u3i;OsU}<56Hx*hi*+N#Khf;Ou4_$B%{{T}>xRs=JKBcdT6({%82Tn97uq08! zS3}cKYx4MDgOvGF2|}9EY$;KdM_P~FgIZHbC*w&SGAci21v(HqlP<_TIg_aw;K*Gm zWugB7Dgz-}oPeiIa1*K4lq1~Xv@Ij=6+5bS`H`J`Gw{ILx@%540!EaZU&htlmroH; zX;H0k_q63faZ8U7guO6({j61U2OxCY=hMdy3}WIs)ZvQOD7iHsb9|tU@*g4o8lJe5 z9wT(?Ps5J#6{4c#M=Spfb`Qp|-H9*>%s^%Uj`$8g{ zs;kKJ_R_gmV?s88yTDSX%N98J6D|50yu#uniJ$-$sJyRn!2ls7VL?ofT{W&*V@rp| zID~c9wK#k$oZyJHN4oAoBQ%Px>IDJa`zg}3#jJdG$8B&*)8p{rjSL_IRg3OkS=fY) zg-vUz84iGA$}Dz91zqFu%#P=!5*wn(QblHFG!@g}HLe_dO)XZ~ia8-;PUa;$jlm&R zN)R+T0(=H^#B&*S$tIX{4yNl)h;2#R;htX|NWctea-s^3fxi`|@;FpJ;P)Db^Ev@d z0KtMBLSFqT)`H?TlpYmSzx=|*YNYrMhb;8zi&z31RsI@A2JLFN{A)_VS-m9ZO#t{D zShFCvOB%dpU}4&qsLQ?`5bcZyAXbEHPL#x`vR)n07N*CX=C~IUl~LsEe^2UoRRuKw z4Rt;>%NDTCU#YceF!J9c0u=_JX0}5Kkq$#Mo@dB(#Q5K|jiRT=kVE~q3)N}h_ZZZS zfuQjD(^}%zIRL%QUdKMhh9N^$%lm(IwotZyJ{}*2Eb*l+Jpikmc|DQ8p{PmXlHch- zqv5aa(-w_-i|bbS&t&@QD!+E}IUsyNrA2-|2ND<@8f&F|DXtg2prI6)+)ts}(_rF4Rz+G8X_5Z`fq-7l zfYarhTfLOwAdmPQP}eO_jv9Q8R65fxo#M`I=;>m`!BAV&4OX-O=hnH?4g2kAq`N7t zZ>p|#997has*#tiH61Bm4;)nF=P{SE)^{&H7~QzI)%S$$7mx`g1z6CsfNAC7Ook}3 zIVTa|Dco43rQ*aan)5FC1;*%qhdJ)#Knf$A^x$PxC*0kO`g4wb- zVsW~Lv4iE{GS?a0jzAKxKPtt|$+~Bf@xRG0TAv5mw=$F_Ct%dchf3v4XR|rzAy%l| zDW-7w{F&Vu_M#{A3)e$-uVdWCvAkSz5&$L2=DCWKTH~Ga-O8>g`&UfujuR)14RDQz z%z>}YxBeTprnpGW&cPgX8$y6aR0AyfW1jMyo8(g0T-Q&<5GQ zg*%C-K|xSFwV)WuO)Rn7q@^-^1u0V-|bM2ntSODjp3 zG|Y^(!TyN2C>EprYdk;y?)zkj%QW(d04BAjemUpU7BTRSchU;eGUkSr2Gsz);4b5N z1cksQL1yR=$Ila4!^s)iTBeFVMZhSv>I0DP7_5V|x2qPXZsA(^S6brA4hmd?8pfff z<>y?+l^_5ri*xs4)mfAJisg|cgOKyBYB75kY2`Ek8Ld&v-0?J$=d>rCQaPWx@U_7s zlu;0%G>|I!)CR@QFJ)$d^jP^;cQ?Dhd1LY-7~TNYUhnVs8^y`&$o}x521RPtwHUN# z?e1)+e#_Mh{{VA%%n3hA*M|f1`PCb`KKEMO#<#q6)TluN+li=6ejZrRasL3fva(Pn z3dEw${ldbB8}%?a5Kq!I`>QbJKJ?2hP5IZJ;1nm^rhPj3<6({1xQzUvKN`nne&f%R z=*45g^);Wr-V673{{W~bGeaz_bknF9zlXALqi@m+s)l~z?kUQ#RF$gdCHFU)lg)>Uu#O=7AnwsV@bC1KYbgLY0*?#Tw zxRLhx)pBm{xtOtOJ*wB!yHAIR#e;ar_JDP(R`&KY5V5M23wPZz5x3m+Fb6i$n&sn( zaq+ESum-H5;9^kiw(C&mxhEixQLaD%ukFKw4a_T`ss8}sVGdE!naj#NqehIMPDJOI z&m)I~TdG4an9{a293{Asv|~yRnS2cfBr&XJs+BM@7~6EG3Io+7S6$yx0*hZGnfS+d*x8rA(z>SHmDb~FxbkhOzLeEh;Q*viV7(V5yat_wMmW}P!gk?;L z9yG;#+_WvQKB}shp2T4wxeZzEdo3hVZiu%co{`tj!xfI@)S}v`rtW94!`K_gok`pF zq)|O0XLTA9wFGpgSY}RG4@!lo({~0$tXF^*trnfO0)r$AED0bO~cyr#wqP6uDWDSw5A|CmwU7}{#9L(%`~0PG_-xKXdIU; zC2excEk6t)+_U!jNLp#!{!g|W81xF1i?SAiRd)-o%ARAW#5p;)HQK4F_xD4ZO9&h3 z$Ni%OjZbK?8C0!5&jtQ=P|>*G<48TjEMa6Qel%m*$iGY=j|}jW&qzfN{v~sQF1i{Y z`&Hu1S|is=s3d=u6y9ybT&KdDZ#}&2_X|xB_QbjSwg>^sa8X|jj%4M8x13Unl(Wso zK8c)N;ArEs<8@*!^{!qWY3GCg06O4qX}|sg^t< zbk?{=On&Sx38<=GPY`56_LV1TL;S0c38LLGWmb-etwL6sgP|FGafHsq-y47i z)#o1Z;oGsrtwKS)cK-lpa_K2evjq?Bx3wni$9K|mQQ&g$#y2WAmYZBxn7faTb3s<< zxBGl+qq}csBQ>?VFbi9CIkCL%E0HpO4&l${_9TYBl6>a|N=6KwDa=B=5qy;6A zGQ}?YHvJLA6Xdkdxp+smmg?E!6<3n7f}}dHq#CKFxUl1M1kpz@)Y_df&BNxq2PA_e zPTCOK$5G-BLUgWa?#|t3S=Cgtuq95xnE?7hr9DH#8>|e?n?XMs>U;+?vCT3RZL5ZU z>~?6Ib>Ftg=nAMoLqKTN9Y4n%V}Z<$SWY?7!&>zpV0R&mjCEF@u=v*^axgudk_S?Y z6A)Kp7Aj2xWHTQM;x29>ieirREvwMjZ)QsYViHEH;ZfkL(P+%CRxG*DDBbGJk&x32 zdwaY>RJ3qcDmYsGSNQy>O>`Bb5t05{<*%Lzv64_J_?u86EOi2hd~5>lHK_~fG@|FO zU|~gsj{+$LvI3~BuWwqEug^TFf0~2=mI#OFs@hOvhp5q%sSTcDo+7$@GQ+Kn&IEx; zAUM&JP*B(N4M&z(ZHy(S z#-AtyqQ2>Gs14tv`t54t{tu z9`8^Tg5W(NSI_xTk+TE_G^dF9W`Ax5&;t3=OHa~uG$2=V)OFf7)YsusaN}bnDCtG2 zH}9f~63WLahA&fE4zwbsxKvCF>e80xxFT!PmQoRnm1RH;2s-WY13hr~X4CPcIG3Xk zEh;WRRV9ffi6Ww=nhd&%kG%LoXa58ajQx`aP)dm+48Z zK+h`X8oKA89wZ;0BR=jyr5OrsdLsg@>I~HtpvsDBN%>)?G=fJ&rG;}`)u4ys2F%-!`^?*UB8DwZ`4hg_+L!~Ont8>zfLD50mN|4)0 zCY7#Q9I!-mI#9AG(Nc&&GAjX4J_5b~?mjqMM}-@I?UtJrpp!ML1yfwe1dV)YN?}F5 zl{Q*7eMsAiDQc(;b}EoT&r#Nc)B(V2Ly8?KO==RCKXrJz=EP)82-<2`>C&Qy%LX>N z#ce<}=$;fCTmTE^q!K84ocu;Z!#p0>mu*|pfod0kgwg0K)MJ^@(?O?Rm@Su4O_S*! zBD@Jv^=&80zu|*u+SKVp2IFcnsd}gjRm_7y^A*dc91Kv2YA>hMwxVx9?~$WxLz9|( zO${)&MD1I5Qaa93y#=rz)&w5@gV!rs6F0Z7_OEN?@tIF3M*F5&cw z8fBJru7A4?y@Xl9)YF-{o>kF5Y`f}C8vf4j-e|ptgwGm2(>lQ};gHI%26)8td`If> z-x+F?SlJ(u!E(&xF+I<1uLaF%K;V9%bRP=)H}+HRWL%2bI^9Phk|9lm(`5(dDHRMy zl} zw&n^~H6R8w%A`~F;?Iti&`5%y=3_H2{^fAj-VVr)WxFOXc+9s9kLXZ$rqwJD(koG( zJCA8{`%G>H94npkyevXO*&Dh&gc|rs_xJ6)@qEW1sR~k7X`5=drPb;MMov7&J(b$r z+#HV*86pyb{{SlSpFa@ouIZ3QcHz%6jAKo<^$&+tt|q;rzfy(^2xq>xF0x0Q5CWknQfPCA=a*Mkg%|awK%mKn|Wb-D9J^HBB?i4UsHI1aYb>C!S`a{DeMHa`QK&iB9MW8K z8{A#0{{T9)4jTw>)kI@L%Dai((x7T;0V0Pl3?YDmSLyiDlhO;kC`zL#WsR77r25FE zN!EukOgruGZsBJQ2bBJubxl<~ShBa7mqXL9e_*5rMK~PlGlrU~0t~S%d$N}MtrT}ym5=jfaH0(w| z6sb|+k^D}%VfGE8_B9`PTcWKwir7fSMO3o}%xz7=pvIQ&0R6tnRJj?iV^L5zR_)n6lMg8{9@DK=Gh|~DxHJn9 zp+*d%wHa3|bH00?lM#+BaJccSuHNBCCg!^(Uf_C!A0j@lpWR)-*uQG5ZX&giS;U(Z zK z12?&}P>)tdqddA|${s%80DS5(nf(Z=Hz(a}m0x*iGN@|$hIH_*c)rHs7T_Bn!l2~l zIik)2vc7-4S`i^P1PT*DB84DoLh5N;YcM!5Ap>C`)g<{&B)B{MD+2D1xsY2Sk*=di zlR0Y3x%U>@pd84rfX71O`&c^LO8hF5FObKLr`|SAPw=is@BaY3&{(C?L2`hql4LR< zjuKhTOSKn6TIr6p+ue~YrK-{fnpP8;?o1pA9824`Ta+Jta1Y$i?k3{k$qyfRT2f|N zr;1_i$gBuJtUU*740pcR{k+GBhi0?;eF9#%2Xg-9&pf}R;-YKa>Q^tIbOaG{>u4;M z#QoFXe1|b3J?+fbQ?POF2^0WWoxYlifDSt@2NMLG}844^FteV_MIqv>2Fd2hvf$3aU*r$t75T&7MS2 zhlubvlrlDyHGdpT0R_k1O#Q`XD_SsL{s%w!uYf54cMo@|(?bp_z=4CS;BIf-=$NlS|dr!0?e_$jE^-a<-%(W;1%7hH@ z&-q?*RB}4x*CXfqibifOa$eQa{k7U*A%Fx3pshj!w@QkWp#vQIGm>-M=^W)+;=JEH zOpdy{<66C^2qT0Ph*3stNvR8w^w5*9%M?$`E_JLc0g=h?cd69Q_m4oX;B5)%DV<2I zYC!_E#H@K-@&PxgIQfnwG-!P5Fzy&*g=AGwGAwf$0yk?>k^cY;Xt0-hEpB*s$sq(A zS2*`%>`aiNfUF+1A-7bD0ZlUV#P^8Rg>Kj z?ACyRQ@?hV>5iYlaYgQFBhs}?E?XK54?KgA*=yTh=Wz|0=_+c+3ra>zEbHu#g^Q=%#i}VnI?L@ zWM8N%`QzHXqr=C6g3ua|OV^IO!sp*?%iHSKp`&JoMGgGK z(xRusDva>lXr6UEfcE(%S$O;M9Bg2u&=I?(YvYm25<}E&HmZEwMwXIl{l?ydwL=59 zGJgO-8JvN^h{n}A)=M`SfJ#;W0E@c!BPdvcNFt`2MMh*F5AnrjOla#1R!2Gwu2G^^ zfyP-ydoo8GvrjXsMG!*9Mk?Em<5d&`t~1$lI~W%{4{5h0MOH-t$&s)|f4cW=3_`yZ z&?R0++e@inNn-|2_ZX~;K+&diP>O*dYHb}waYB2l7CgrE1O0TXx%+c8VtbhKhf0K{ z(CyVc!k}GHrj-ppWkSD{)(~V%dX%)A!!p;xl?UgCf6cy7qCvO9x#RiVyh%)RNcPGJ z3DVX-h_yl7eZPWj#9NX{6xx&uX{KW^Fw?o$vcc9K3sWQR>6nV}iB+CQ?c4@7jzt-; zISLU?*%Gf0sI=jT~`I_+do}M*A*MW)a01P^GG@0Udvc)ci4|#^-U7rNmZ-9`D7J0QV42 zi2ndVRf#)#>fPiFvImTnA){&x{{WeV4m5G{P&g<=HFn-!2|zxSK7a1C0?Otz0o7O> z#YIV=@EQ?JOphgmt4-+6R4;KYC`FAqi0uGArZ&zMov0(l_vDY z>Pnr!WYj)cVxv0}IpQ&$PgJHd@Z-#k#_@7Kb=Cg>ZNB8)akp0YHutR?l}4BuO2;f^ z#Zzb?(wODE=WfS7=pNCq=xdeaLCJRZam(XeSPPNCs*Z0}`F+*(i|pUs$T>SJONeI& zc|>ST%07?-77jxw-;XwTZ)!glSsM0`FVe|gj_q!GDX<{Q_XF5KOXzx!jeR8hd){!} z#Q|y6HzMvp)gaS6{yJmNJpTX=_?|-trF<*4ae2_>0VDk=pLrkYT{**YNpk=KO~ud^ z^^Z{S=yJz8%Ev5r(h7rHEO}b?puIl6v==}tMmGVjObvWbmJ<}FD~&2)j5!o7V14u2 zP~0TNV?N;$kOG=++H$QanK<9@T)AY8X+Dybo#pu0rD<~l6JI$#_X!>CkB!y|^R7+a9kUK!4(utL{l~5Ph3d8O5AJ_p&&Bc= zut@~btZvO7_>5uJHed}JgsJI|YH&QxK6Wc5VO3yXBi6jDft8iQXFrV01Wgl*K_L~S z*!lcxmAPv-wVaKl0L64a4D=K@+rhS02RB;kynaJ6Aq1Y49;7ctrdy7Eb^I%djf@(U zZ>>#nJfzk#t9zvuwO|cvLsb-^8R8yh1amh}QdMsugBDa}p{ja+I^4TgzF0I6tFt*O zX}BtF4eF~J00l9Ht?e~dX_O$E^bnvaCh~`q_H7OtfkQ@@U3QlwbGI5m3#Mt8CEnL@; zNdysFjwiZ|WJaz4d@G*&m+itC2@s6cg?+rU z2T?+3e;jQ%{@_1Ja*vJcukfAZ;J~ixI@dXO2itp?ZQK%un_*6of z;+N{r{Xo;lCeE}Y4Hon%RuA^1VgM4Q?RopC2vF=}Cn3CwH$&dg+S!_|~1oF-feaBij*VdW2mQ<^I2gYup#ziENZZ z4=FTJDfcNKyY*&kr-f^Z43655DaF&q2=KLKCE&SyXv;9)EK#4z9D=s~(f;E(4n9w2 z^6p!^7KlVb%Sn=w76&t(X^h`1`+JFz9{5@tH;4Pymx1oid$(gS<~7+k{Q{%9old&{ z0LH?)Gq(Q#x;{9_s@D$^=+Vs>KC@1{h|3)R0FeE!pKF}Pg1-viVSepkmu$&}@sIh1 z{8*y4?ic%q;@qi&k%hhKc7ytmD09dY(-@53+w85V<~#1K20!i>6`bvu(?<7r2MX7C zuf8_Z80mDgM5(!gyAS@9ikh5da=Ri{3$X6^R+k&O+qr@61bG$y6`{~B_uV&PKU;)VEeBNTnOd8jyT6qXwpr26t>ZyPCLdF=~#msxugY_{jU0Q=(bH#*Rt24R~ z7s8^?$>PVWk;$dj{xw*a?$1F{6XwE{2+*7JmbNSp;ZNqoQ zqON}M+OMPah~BWo5kC-IBqA#p(XpXZyLM3;-Ugc zqmV+AkU8Z-epr?}Rz=&g{{Sk6{$mue&vU>5R-*^rD<_UgW4niSv#~|@fHJB2+uSE= zuqQ%mhmUE_*9Pq2n)Z?jOM!3a_VB9h_uno$BxD?bEgK1ujEgXXaV57E zuHwX;Sw-17PSJ;N!l1jmVUKWghoaUq2Su4`HcT7tg*;`oTs9r?Iex{c6@$+7!pQm4RyrEe%x|TvtW8Jg+l)Tib1Ko+JqjX?uaK_Si@AGW#0>gdaUVwrF5PYLw5DWvuEyZ)6C zbN$Kia{mDH$1xE^C4g8YkdoPbF|chhCO_M(#@I$nzx4`-H|{SIHJ!VBn&MB~wMOQ? z?(qDyYclr~a6+M#Kj|6H$0XBamr<}aJx(-ye`@C85Yvua;nR2@$kuC=?i@Zzt(FYq z8-nW@ArFyrbm`|rp8yya3}{E`r4XAC=irXzJ~JshY#ak=Ba$zY%D@!w=`dH+Gk^3zxKqaMQAfG%%M7XV^xXI za;);%b$1_OrJxiIKkIBxaTNPi#ur=sio$Q&Wq0 zyR(sE5An*M{d|A?D!Rt!_()^gWRZXLJN+uVFWO!f-Ib&7!6KIWM{i0$inXuxf(PM? z7WYf+?-Zcz3vM-b!`xr31-Ddj&u$i-0Bh+r z!e7ciA^VO#)8V~;`_WZ7oW?FhfWsS$dK(YE%Sq2WS~Bgs_X>(un*sj-;okT*W43#i z?LU1)jwa62=-R$C(q3-jAyE;Qppi+y%U}LvP8}RfFHc&3@;~oVBje$5LhZjL{$it_ zyyb$stXnNfybGto*qlpeZ?VBWz(M~2kN*ILQybf{OrPDi{*V6v3Yfp#c~JiV_O?T) z{{ZLxeCzrhFlV+JKlyTh@*n;cPG@Ms{{a49{{Yl~_;h6ZmmsBhscLio0PTiU{{a0Q zExoGOg);;H0LXv%RNK2XfSt2n{{Tn-0EbIO_dHam^l2D^Du1Yeb@2TTLkGubKm00V{{Vx? z1u_T!05Sgn;nTnVh#u`f`j+CSZB6o?x_|Sfbi&VW1|R!?{{Zqo{uMBLRnZNiaG&}Q z{{Wp!9_{xiM;gj?1YQOw#-H@KTX;f0`Cude08jq_g-CA#8Dl6v{Ez*QJ>*@ah@TlXI4VzoCgONV(Pa*99aOdb8 zw{R!n{`A-A9M7f7ejn~?LK3p5c;juOUsWkzEtqrI+x0u}sFJH4woj|UKi-{tTL$lG zh$C9p!Z{Y$`59?{2pg{cIzybsx=9 zo_b-2#RBv<^f)VydcU1}7(J6)iu zYhLal!pb(SGIOWx(-rwV3tZjoH>flA>IICA)nbde;B}-DQHbfSX-zZn#dG+1AqwE2 zc-2$*Iam+86}0v);ki*pxMT-FbU*lvKzALE_il7|6$#u#3cCTPmi@^TYz(&qijBY; z)1f-zyDN=zm9aC^QK#XY_M}ZgRu%4^Iz&~DVi=B<6s0o7Gq{|Fm2*jNg;YO*%8kX& zXme@hzjONrk+QniGVCi}lnhHgBgr&Ng-?L_-B?Y zAH{47w5>vS1on-AfVaf!QqXq}?^M$%@S_3YOjl%aw?I8rU6I2Ulw)b!eb7M>x%30| z15@SXaUI-gEl}T5Q!e0uZsw2fAGVbxA87cOK!ReN|s45g>66ZT=M{ z4{|jqW?i6;xt%}55N6}b*|(@taKl}K z0jm#gPsCzB=^8FUsBhx~Tua3}USa41NC_T# z{DuhP9moPV!kc#(muU3T>B=A#XAQX2_>6`K;z&vWl*E`F0;+wMov$kq$x5q{nbgxP zu+YVOT!1Yw{26s{wJ0wEZ}&$`x?s*c>1NU$idx+bw58JYA@xY0WkK`u!)F>tY7H>_ zVnv!)tttBOSbBvu>q0fmohyOtJuj^w;y5zxrz?9=>2v`7L#CKdu_uDlf22UJUn=um z^bQ(=qyv^;g#{P&Q4{qYY2ZFJ!1jpfX+Fb%UbKIH5-1*rI@JANx26l*ap+Qu+Ii>} zo0;MbsN1Hx5#?IpL67sNLnI**^mMtm^#dTvlYtEC{G4%Uv+^7%p|>`f6M_HUYx)$Y03BktSY5)ckxi#Ma?PEozne zGyw&?shsytYT`!J){JTR`PUD#9wb8DDnwX;6e81S_7i1Js(Qhuip6Jlxb|ngf?j-2pl4t|Ui>2SZjrU<1bx+8zU~SGu#u6V4O-Aw zI-FW#aqKQmm2HQ`5a3=Eb*in$a*Py%YXdEBb-ym8PHDNtyB70VWIae%xfT;lL( z@aGRmHAueYxb`%o8n>#2=RPglW3tE&WWIfTYmufc z;lWm*trj;B=~?I-PuuPDs7B<=NxCw2kzJtrGwYX_#FLNh>vXFzhFHz6`l)oic}_xv z>zxnm_+h89sYv}O{;Sl@ysW4bX=3yqVADDtrkI5*0UMPCR?g7EKqA#K9i?ObG6|_C zIv%}zaUb7nZrwnt$#MWFp=v@KYAN0c9Xvii97i)WgeJ>$s4tikVuq2LCEP-SM~KXP zFmaHm3JQKXNM+EPiMX)$n{c92DpHjc#OR)chZ1UZIc1|}wG$Ww7zR*ZTd@EBZj9oILfqLUz6M+&BLJZ!Tu3W1d8SI&pZ zzYJevOaQ)>qQuQ)UL|1_RFp`sf{m;dUQ=FB#0`qtJG^kM~1l!CBV1TXqxqKbA?BHd)v}C9X}7l z19A^mi&iDW+d|+QQygy`CUqggHicN4e#(=EG7DQ8-m3F+9TPTyt?{iBjqT#bHYym= zas*RT)8UNt*`cZ$Pg=(1^FgHeR++?cC0$YCRWt&$>rA{2F`det%Av(85yitMpSCo@z+x6=nRkD4!05HKaMqVL?+jv(N>H+c zN*es}gwA|&2N{YV<6TQ03B%g=usnEl6~1uy1uX){wmAxb+j{Baj(e0KeCS?wgJD}( zjOGnSfq~kgM>a?RxUg5h~!p9WL zDKr~^&cE<+ODsV*C97E+rR)r88>-K4ZQ+PY&+k6kvQnDm_+p{a$f`XxY_UfGvdd1P zo&iS|>N070i-=bu>nsbhb*?wvu6L9H8Ze})?vWS>nm()W~gAty5eul+Qu z02#GL;(mQF;Kf7h3UsFA$B}mfYK6M)X+27}F(?4kmKE1Ny+$WP#y3#ffj(0m>5Prb zdaQCC=WA?*q?RXef1hn=I%iI}wu85)nZSTUX|Pe3Ak`NC0PaYQkNrZ#fSk(;Q$w9~ zrY~Xbhb5Wns?3bZ`P`(;93~+x%xl4ntMzSx!&)ACr9k-x9^e@pY<;%6;hOZsR`v z*r5$p_ZXU=opFDO**Flpb7S@WysDEUySs}xhJm#8`&zT>kGLF^j^uJ`s@1M_G;Kv{ zXpL#ZHEe z*0eRQACHdQ>o%<*?WmmaeYHLZN`QXoBrto)2|YLNA20?b$HtbQNWEIc!Lm1h+i%@a zH$BRcv2k&}ta3FOYI^I5g8_c9pX*k!aK-j(65Rzbm%L1i?b}G;^(e$2-CRkFkBzr; zN%+*r`*gM5?BH!4H4fd?bqgKN&MTvIuZi))gAO+vu`0-L81u9HEZgE$Xp(aBT+&%2 zl}BBq{B#w;h*;8%6sF-aG3RuOdNAZY>U(mwS$e^#{3(_Z>@+(1&=_JR1OrOO zlFt7CQDa>X?dovrzqSayhy~Ozksn_wTLE5WO!24QGb(d2;LODeCsSOHFB9@(0M$fDwidEXICo)M3ssu1Ed8H0*Yw z00O|QMtg|N{y1#%rb48Ird`dtLV@T$H2pXNsu$S+u4f{D#+qT5=L2SyH4*%y97s~M z>K@-|6o!J7r9fH?>#5GQ!%pOVv{IzhcXIm<(DnG5ReNMqpKEB#GlU*Y8=H!4+{tMA zhr);c+8}O?7}Gjyk?1NgpYl=YQD~XX0_~*=(rMfG4BKRkEPhL!J~@mZ`38*$rytBh z)+O;^v+)0Ny8Z-J{o74 z>6Jz#H<2tV!YWLB!=v@a{i&_*QPOsOp>5vLACLU-`*}w??jdSe?n&M*cRHHfcC=Jg zju#Zv{{Z8O5%NTpE(ua1=g=$M50{7INDk6};kOc3AXp0g$QcUZQKLr@KsS+4 zKn9)^6#bZ#&Rvfv_aLi0Zg3DD_kz*VqQC8%-~MFZ?0X+b`n)h-+SdBZ{~#bVnL-hMhUKGAZk81k(mP}V{#kyJExLsUWDLzcIM(XQaxLIdes|b zb@ay3Ff^@q0)D^Y2YAaBVWCh0Kt2_z-6pSaa7FX~0BT+@MMiX7i&097=oGQYXHObo z!5LCO>F}o9LxSjhzn`C-0-6+d+)Qos&@EUn%Pg`4XNMZXT3SMy7G0<5BjeJyuEFL4 zT-&#}N44$IK{aL|s;L>|EBi4)$l-w30ue=Wj_c#MLhzcc`U~q_<@Wyongm1ohWx}4 zq6#@I%yI>Qr4V@Io^lxBr5cM~Rqp;Yw7JlMu&Fv}N@0iCi$Rq@{>(Nwr75@NA(|Htz@(XrH6TFZe=B^vvCvgRw zDD>j95dNLzjtBuze7;pp$mByLu*(4+;f!tBNqRt)aky(;&J&e;3(u1x!l+i}Yqt0TJwk(h+~*wlt2qKtH&12nX2Wv@Z@ zZ!-2s**5^y0AAzm_gBvkxZEV%ZzCj&v_$JbyG>XEYmv=q<}uM33|Uylbytrn_4j9T zapqx$8@wG>vSr8}tWjj#9R&f<)`q!)FpYS+cu`}0B{>ZvqQP*qjPKAeckm8C0*PKg=tsxCt# z+l|GyYJJtMaa=hnH!A*MQjJQEnGu;7qn>Tf+AE%C@*o=x03F3~c@B%&rPk&+n} zpjLnoGbV)LY7fTN0*>1A^5epcW^|dO1*_61zzyPmWuD zClVUfZssFE=}B`)a8RW6U$La=S}Aa$&!p6l4SFprhR!>SM&s%xmGqs!Tv7I>g@*9e zS}W>mGc^5}HpE$Tprn^Ll>)}SR8mU<#YGN8RF0X7kHZ16T)2c35$Dpjqq8!A$QGN0 zP>?}wXvaLM*Qb^pEL2|`QbTT9#!3*0I8#Y4FIi2juu*UG^7M=Itn)V z70&Vw;6YYK$W((-N|BdLATS3VR)K3vLIh7ba-Q7BYOy2_spzPuX#-*!H9;9+4vDT7 z9;#^WjP5#lYxDkenA^3zJBqg7sEPwn4Gmb1zIZ{5fJ22DyOh`(6|06?XG5A(DtVf9 z!W$Si0`x^1cP*(OXrUX+flv)aK(9mOYn~8dBJR?hGH-9B3Q<8~cF?dR(@>~=eWE>;ZN8zpnTnB0)8mly!;NV@5|q_zcWwxjlPf84`~j#K{WS-~ zMi0YE01{E5H;4HodF%od^$GsqHuhP5L+wKNpKvXkOy z0zlT(01+cTyJ#3@HR>yoz#z2WQ%fl5fLieSy+hJ8YUWKcsNGr|Da>$rP>rHgZN8)Y zKI$j9O?NVkt3afaT*WA)9PuFl=}H4_+pT(~39FWJXhMUj*QEgm&jiv#EPY=JJ3Byv zjuAJKB-$6Lu0(6o#}934Zn{!Qav>B|VMGWkw0is=q;;hL^x+#3Q|CrnZd_4xp&Nvo zSg)t}saoYh>K!z~T%dooB&Nj*hOAtFA^Ll@KCS3YX}3QSO8Md*LreM*B;f`sQj8|)dR__}ymx0jL>F$}M zdXULb#e$rd$4rPAfY^gw>H4bZ5JhDD@5I5$+R6-S##opZ01`%Y1FGfZF{|M-CC8PZ zA5U7Svi z^>%JXV_C>y2N_}|?L{}xw!+I_8h+vSvE#0%xk#iT=3wY{uE$1g$jea4RvmHaY)7{* z93mH>Pl9Xku3_4o#JMf~9O%iJVhV&!ReFyK${`ulZ$iyL3uZj34KX4H5pK1&mik`R zX0r*gYOO&+MG2{{pymZn#~UsrI5-NV$u15%NUNoUM8qF*1tx$MB#i)5l}E(TV`~Sd z$5gD&T!{UsR8-nq22-|+R0QUxq-MsMopAYjI8|fib6g4W`@Y_F3w;uXEJ-W00Cr|c z8c>Sqg}82N8nnfg+jjL^-%6x%QSK{HRF`Uca%xm)234aW}> z9-8M`mZoA1i3{g zxH9^QrD{!TDo%8zGTlrlM%{=lOAYlP)hTF{vB>&K$enYih8>0{79tf|Y3Ks=sTd<0 z>*@YlWz#Bnj9%d5mdU*6l@eE-s%ml=6JnEE6lI_!ROLZKxaH@THMp@jiy}6vq?GO; zc+}i>+n8=zR00NC0pM%?c)o#!to3VE@=LWy(xg92wL+i;hGbJp__6fXo_Lba9S@B{ z_sfd7prt*t>MXvR%d_XM%MPI0_zT}YHxM_+5ORg7mzFVH#&ej` zTH*?L06s+PRvb?a`iHR1?UQnwi912n8oDn{R=UrzETEu?B8uJ{c1X8TnC=W)F+m}z zJw`aMb59@z?gal0Z;RYGZQ*YSgVeioA>J+5rS@ zH3X0jxnwbu%ZcFXQ7G};A0iq2uFfb2B8Rcd2o za0=}yVa!COx3FrHw=m0{CEdcIuhA4ze+o&T zZkH6wer!^?s8LXB)`qkP#}2ax)pewtg%-6!OV31#NtH_$Br7&zz9i&798P8m+i6Nj z$Z)aJs~4Ts7pcRrD9nIo=_6L5)mzIfT0zA;wHgiTEAm_ln^h|R0KH>U#ic7u*!4Bh zs5K^-yvE?9C;+PYIRJ+Gc~*7Hck;&@87>u2v+XX_+$s2yDUB{4ZkMs&eaFZ+vyM5z_) znM7)-Z4hY{{Z6dSAO%o^U3z1=cHiyPjRDd((!El-7jXXK!;bB-$R8%#2HkFcU(UF9 zzP{`79ORQmCn*7HvI51YsXttsvPzm$%N?_a?QC2Y0$MkZD&!oleqV7*{nqWqT@I}_OIETm3z_t;;5{al^6|!*xW3)N3)0lQUL}#0ZHjnRKH~R$jN{V4 z&;#Nr*Qvyf1@)~AINMkSh)Rl*<;iv}Q(VB%55NPS8QxV!m0-wQv^6QNa<~U@W)%!7 zXf>gx7?NZu)}FH)Z=_W38^K=QGP0#p+yH1d0Zyis1o+~%eE8U`arJ@r@~W)fS05Ru zPpK=RdoQz7((45!Y8R|vjR2r(5HW}4xoJk=9F0okUCZ2$yGzHn(z<`N`%xiiWDx=i zP^pfaYBVS5%;$_2XCnCq({-*N+#SMXW1}ZSYyGcVj}yVHaH%LVuccQ;{vF)`Bk;y@ zY=A5e#<^yHC%xn;s|)ewB?M7uG|&=h;ZQ~+wq5QQ(yB&Sc|&{suT-vXHHjrMQFke! z=uL9kqNHW;#nu}8gT;Ru({XPva1FXwI(Mfb9A5H*tXXMVpGg&<$Z3tw8;oQlcD2}h zYZ3BoIt8wJx{h1xf_4WDC`ADJi6=U#A%OG7vuj~y@5(i5K@TS*F*iD`)hU1 z@)qgrNen*Xdy{))(A1rxfa{)pDUNg9JoJ2QPk3-Lp|_E$+%7XKyZKh}>@IEw@9sPT zNB)pUQ`f_vYN!WCVhZ94{e)Y83wW;jnX$cH)2H#OTh?mV@P zDd-iyah5ULMH_6ZA`wzoQ}fD$7^&s=TtHo>wUEXb0#i;~lSq-3i5qHa4M)J!>8DEJ z>`YfZz>O)%Bm(BJe(&y&Y8!(aG725rsYj-iBvT{Tt~v(|#e0%9t_$+2TPhggm%n*_=!vG9 z&LX_)B~k?m-ipOAb=cPeXhuJiUWU{9v>ST;(PM< zb4unhzGJvifKW3gfRI0KJI*+43=BF7^YbMadz=f4i722cDn^|RS1-8nwSz8n%Olij z;7Fz|Ba}Z)D$5rv?ggjkS@$KzDi$c8?oHuIjP*$Xa;fZ0O>TOxv%wScb;V)W06M64#-pAAw>{F#q zUjRjV;x0o7_*OeV7{&-_x1Dc2nL9(sTFMz}G7MCfLP%2j8kJT$V-wCqCC76Pho_HJ z{3{LqL~!}+eNLf~{Kdt@;y7czL`B3A)nZll0gnY+)O|5)xlenXJc^`*Z3tMQ%V9$Yd6vie*qU#@`FLP=N9f*5d=b zEw)D}KaFRchhkxWEVj7TI(OQe{yHyu48B=X!bg@LeAR?mjVIxmkARg zDdBPcwas%R%N+_iIo5&2$Tw*83Epm+oY9PpG z#F}BwSc{k(C|$)!+DC}XIvhyDozcs4>7?Z}zCF4-TICP8-Ju-IawLm-vPoU2)Z9lx zMFFY!W3Bf8057+0-9lCym&Gq@gNl$1zuakGB0ssGw9?)S&Th`o39UB9@a7rg75Wq% zrRYB#dhhnfx|<1a9XpmcA{|hg^3U!cYGh@`?q>=;xv-K57FKm0X1+`JzW~t7a2^(o zqjvO|%}J>pJP60AIP8|~YB(Ja%CbGT$*2t{)uFzL<5*t3N}O> z$SiUmpT`j=#Exc=LOE(4P8)I%}rRgxJNLKTHU$WR(o>7c|JH-qI=(g!x< zT6HCiGNl5B0Bt!^jb5R$KCB_KxrfS`8B#|gizQWgZqK|XniEohPr2oxcRP( z+giNi`RBmxt8X=|Z@50*$0xcKcN0>K7L_Dsa{z)4H8?!mw>4BWS4iSJz3tkkO>bCF zKlaT_mo|%YNaXc6soh#sgI>7V<8!ZQ9=)gU{uR|YuJ&+fXppk~D-P}twtlvf2qd>~ zNNTS5$^KCos||cHrNrlBk%6-~A3r+k98Y_C10{HSemDE;Gvs?WlDA{N4yBIN_-9c} z&MzU!iR1faYj26%m{T-+ZY%MsjGT1V@9K(B4q~cD%;k$n{j%PL^`LHKaU zjp&}@k*#ax^XhcN<)QZ)d??);9^X_(`Byw5PBJ&P{{T0$wBs%l>4%D3Wc>KLM*u()ZQ zf3m<&#;hadd#4GW)L9#YbllZnxj!1U@&5qaH+9;O{{YpbZOX_um1L1WnxL0jS1eRy z{@!r%kOVYw_h)%R?Z#F;Iu-zn@bL0NI@QC9{^q&pZqn&q3z-0N73zB*g~08isvhYkJHThFug3vq4{V?t~10@9z( zWmxx>3sX$A#$PA)neG1o=yJz=llaz-AKmy1M0v2w5b8i*xfiW$d=KC2ONk(BeoOVM zA=(%ts|8VArC2FDMLu}VW`5hv8%UZm(lk^>t-lf9{BB?mihpu5WC0J%YAa5U?_?4{ zX?UOjeJbFVWfd#wts0pD)a8uP>_;)lwEf?Y!_P|D!`*mhHEhg3$oO0Hd23bPU++-1 zM00$p`Ap_H91;yTC~9O4I%|t8F2!`tK^eDHs9BxoiHHm3k*#qWeYC6>xc>mT7@}#F zZiU4`06-X2P?8I6p`@8(b;o|!mk{F6%U3kzKXrDq@er_AQD!y6bi=jn5tN&f)kt$!q} zy8i(0{{TO7TifK8*-11Jp=MC0)47}w#Eo%p7hv&B^!p@{=0#9s_aAuWyg1Alf8q!5 za*D5AeevgRRhCXxV#J?T_Kfw+Y|K`_;fW3GzBUpAVh82;R2k*&teeS~HpBfW5Ayse zoBihJ-k#?xcOryEK(cxnQ9uQQFea4it{wjX;T}8{5XbjaSs>@+BmV$-I*Z-Kd^7<( z?@_JykD2`1-_9VF&gjg9db6(IRW<2}E$tiy1jN-#T7cp?U8SF@oR?hs&Hn(?uAVhp zy8EMk(yKM>`vWlCv$!l)yF`c%WY<1}6XNZxc8f;U_zHF|+{oDAWR=fw3a)p~ljnJ z)wMs6l5-$+!_DD{76?8Tr_X4x`gVfSd@R4|NDsIU1N%u0D55m0K%796Yr=00Qg=h$Z2R`_-pu5Z{O1F6uOc|{$1>< zKlq3P3mhw)cA!s{6MIT6$*>PJ6o>x+L^=MFSs3X_!3W|((+mFq1Vw@mkf|U19}o%= zJ_3m+e_iAq%_=FQpOXcl{rFG#PY@U3L7k}rr~se4`O@j$_a!Ut$xUdj8lS<4!)J(g zqfdo4{@9CkniJK6 z6(9XJ5+i$bAHt*louDgFP&!8FO9Bs$v>z-u*&MCSq)POqw0L5_gHk}PfbkQHov_WYj6H&0#6H(X7 zn0*i@S}%Ett&*O_Z1oT44?Z zlC=hGfbs1p+_hqY)piG{0PQpb{xZT;fAUpJB<0Tb&61{V`0sFg;p!hCnTlzkBA7#@ zYi#QpuF1}7`)H0H6)g`MlpDtEy7VTV8q*Cva0RVZvS(~79<@0IqC^xe6c4CsKWW4l z${hZ+RQ#7c#n<@L)V2~30})e7{{RT{_+g_b+$tmI*a;zi-^QflvSna5iUt$_5;YoR zF%|Oz@TjiKAwm;smP=)38>6j!=rYSc!wfm;*GhnAD1%W;HM-D)5F<>EgQgqzN~3kC z;$ljIcT%yZwyL0QT4V-zZN#{%u4%WtyzV;q(OxyypNGf%Fl=!KmLzf^G*FcUZXjn* z!wMucs#5*eH{fgA21?Wv(AUTC(*QriT1j$+)`grzwJZr53Rm}Of@pJ!9VnO!x>E_S z5`+_$bzMzG=8LBltOh+(qe$dv7CZxunPAQV-mMK&+Q~nhHN(1B&Um$r*DkoPe-0kITXRvL!0+{l$!$u<-xmIz(ln%H zMQUmA@Wn*kyDHoYu9vo6r(<@s_|(O}dW(_}6B^QiiKTos>r6$Pf|0GT3suv0!=Uw` zCZ{d?ve+-QBw*l=%x0)PF;6EEK8T(bS2qEW_nBPP9spFFecv2Dmw$Npr|iqFxUZ9o zkQ8vgjX-~HK0>=o2c1m8+{!}AZc;QVE4hbX!!b-jmyCH-X|p~*n5ei`Bq_}3deAgE`9*nLbz@~N91>6ra$O-Q7b0YxYY#96q@BYIU4LUVwDe=X0oPOKA zr7E&c8NeZGuisCi=Q0P~5@u@E(Ek9z!!N)t`g&Anab$(sl_w88rzUk_<4^{gd11fM z{!wH2)CoAJF6N8Vh36DV36ub64L0Ydo_K5YZUiD4Xz|jyr2@O*QX`syBn$2~bgp!z zbfyEbWa&`d#!IxTQNory#4Rr0eA8`3NvXmHEU2IjX`#nS?e2ShYfHz;s~qJZR8prS zt{VL@Cvj+BwzSjmUI4PwfyuAZC9Ql8L&NaG9RUaFQT!>Bgl=5RkHVa%Dgx7WNE)wS zkBBD-b~tfesA-dcNk%9h9(1De!!cS=W@tKBUycy$UBl8XNE~red?@FYLbWn{1!-Ko z0oM$iXDV$g<4OGtjW%i8e;V@hE2i*2C{1w4A;=Hor1OH-`CYup1@eMia73H=IoILVHNpA&~0h~gCKQ=7)Uqi)qt<4DQK zM-V6V6*R6y9Y65H@!|LiQ*hq%w6gUNCq7+*EThC`b2?KJ*@ol!YQ`QbXQ;7VO=RWP zMkw+H%DaPQ`1oQ&aGb+t)TsEk5}~JcM9a*>ys4Y$KUGNo01qrYFyuGdm0=$jJDL%R zQ1`vU0A+}Y5`-5mnaEOu_48=mb2S{h~i_0*3qo+ZV_J8&*42THStx4K--S0s<>jiNb=w;?i1`Q{;Pw=1Qb;uq|I!bsm3)En&iA zKA@>r_?%8WUZUF?V{LKoDfi}QbD`FR(A4>7haVeSJq`q=&zR_VR(UWT3f zMMwK$glF^D06S<^2~qvVlc`!_ZDoDI0_~|4Kjrho?U7sMQd^N5PpMX#O=Q4P>F`|! zdY>FT*^63@(xu0e5bV>&qouThF_`t5>zE&o9*S2N2XtDL$)t73^weF_uEA1;MnEoS zL9RngTSQvoqgt?lJEHEYz0@k(y=7}!QzASm(=1!SQLECfvE*}5pef^3endxY8!MyC z#1;oqpy)F5IJ3k%iXAHZ6WqvnAcp8GIJ??uLVl{e!DCB?@V2b`mYOC)0-Dh717F@X7`BO|xPBF_!inv8 zIyS1rhRf7ydW`eXobhDF?eeSrj~6LP8+eb@eX0^_O)7jTLx&89M$?U%?Fa_rKrQ1Y zo~a2r5uJQ00nZ3?oCS>oBhBmuN?LK%U{wevm8#{^wCPZB74q2}wGMo!wh-qKYWv1; zykv+NEhYpLT)jfMQk`*Ik&yCs-4e1{oQ7ud#<+WF_toEuvW^|9Dx)eBQ%{G-6xk1A zlozb7c0=U3BD4!Q5bYyiDgh@-^wyp@p_$iH^pja!i4~hlty`?+8&Ei0zn4Sh@ffVh zV|Ob>X7WKN(rs3YG91Rr`#`3;pCB{EUO;I0)h0mLzBQzy%+DYZjLa6pQ+GSEgb&^zNwf%r!BRnXF@rp1__pqBF?EYftw4^{a)Q z*5stt3lxOWS~5Ut_>)Xk$iX4iTUHp8`@4cT8ke<}?im9r0U08@2xCtTq<~1oC$b6UW87`5n8X+ia z736;S+QaV0S7{iq8!G<*E!u&Nu0QSUq_pj7d~2O@9sdBwzUqTAv_$U}TBKfm%jKRk6n9|6Jd3(5|g=BRKSdGG`I@8A!hZ522K)w}yA8!D__Fc(L?)#C{)+?re z3igFvY<@T}c-kBvjz_Z7o0uH$IxLswr6>DLcOg1~)3^*$~dE#8>wCSGRc z(u;8;1DW1vzm0S_nA})E+=yz)oLmtVEdkWsc{_k;(j4;i)Q{dUJ(#|uPCJf?0RT`v z)RN@H(zT_1Rj2O2_Sy9dQ;f#;?$joffC)WN%Id%k!juE!o^`_$1R->$=8&{)c=Xit z7Bb3;(r$J+4^4CPr%#3=Nh?}WQmSRiY;Ga8XsLUCCgh-2wsN%4=Za9ST(zMj0;PFHGH+;-pmN3w^?K$g*wm^&knK|VsiCL*R_sb$m?TqPD zcHOBo*%$WDhC-elDNI6}oY*%4wO^Oc!vnvzk~Y_?PZ`@1+nN_H1v5QIN_pasE1GQG zJylD{bFs?BkLo=ai}TfPU7LCjDXhPKA-sE5^`n3(r-wAF26xR@u?^{c%0BishxLII(d2G zGqa?BRj3nkZfUcvPmc*4dB#JQ`h@^LjS0gik$5`@sH2nwlBj&esPXptvE0Ch)Ymai znRtu?$ZXKwiTtPy+DHU-r>nrcg1N0chr`5pVTbY--0Q7G{{Se`NG@Nu#)JA3f>Z)X z@&dR6JQl8$gUPX_NeC;;z&OmUE1d>){{Soz&0T44!jBgN5Cd}!-UhjOVbh+P8ffy*->0I1xK*yi8^tuxR=6+n4)HYeITcq~ zJSdOAZ3UG}9X%qa#ENQgXF0%J-iUI$T)VBMH9Qz5lmWE^#=7|mU=BgvHm64@@%go; z&A>kD2*?M;ao*<=P^9I&QxWO_kUNB&XHJC?$L z_VEI$suxf)_~(a5B=A%l(~ad^6;j5g{#D#II` zV*z6ir17ZQ=ttOuR-=Naw%>s zr3Xvf@BC|(?l|eAB|9w_&`Ugnhm>HW?b_c<`pKT}>T!pk_2(wKZj-*18Nd>~j-~ zO}^SxhV3l$m33WvQvBQAs)DE_WigV}EJ0FeYd}xLVh1GwbZRaDtlv9}@8grI3;zJW zm%_W3?dLiPwo@mm3KpO_GU-wQuge_6lg2xoy=%*z8f;+I z0;^IoAXJcOPME;wL+yt+YPIH$;lTEuR1kjN3tQ(EBFz$p+qj_-?WIhV04{lBHut!N z142IP<=HH2CvhaL{uL9>SP#rT+lHs6xq65@mu+fJE--Qht`M)Dl`D+Mk*L=Yr2haN z56-#kzBrRCPqeVAoRnu%(x!rk8-61ovB(XpulC0v*yIDR$Ne;}4g0s-Ng_Pn&>qq; zEwpa}q#6-gK=^z3# z6(c_kCD8hT6bN54;YZ!INh}DU*IHx&70lAVEE6GWE2%DS@_;AU(1ir$>J6zTfE{RS zPNNEJVW!lA?yj*FJ;ucxr8e!{8)*WSG&OYsl=Ub+Rm6rjXczd^USyArS3}qMe=6Af zTZxW&H#&g911X~VVHu=kgHpw@6Fy?ljT+ZE=X2i^JqF8tey$rdl z8f~W9gSM@&&lySQ4RHkCxo;`S206+?f%n#oJ7znZHjE%=RocXl5njJor%{UU@&-5h z^j#|$?rreo2a=6d*X)&o_ord{+CN|+Qp_d(6O~0ygXfJV252#=ggrm&U1PTUsT;q2 zh)uo~%^bfAJ%z)opjB3Fj1J&HInV|_;ftrjBmji**1K07$ioI+LgG6k`WKvwyK?)0QQu>jx zy(lYH%vVF>gt?2Zw30MUC@8}vsU?FQRPEH%ngTNa0D*=KWmUgWy$fjV61_I|lU8dMExPnHy7YM1r!qV%+AYsE%jZBarh0R)O5vB_l@1bP=|s?*g~I7cm5es_P!Yfj=rp0AW*tEo1&9@CYUJ7t#SgZH zX!LEQ0Kkt@4Gvv1%lz;f!ir50aRo&aYmy_{cF>SOsBbY*T7DP-uK^3F>^)s*s|f*% z0;DkqHEf1rg>}mdiHEHz&$2NTE!VbZfRcjEd$(4_2p48(Koz#+2nQN0oJXT?vqTjsF0cs_WD0 zIbl0GgGK9V6u*TGb&T%}S^DK#9}kXr9@+6xMC5&qg>j3t2!j3#Urc|uue@eCV70rxQ!H|%KI^bmYjZ%d zI3xw9`f7Z!!+X!O-uT@-P5$5X*8c$ZzqqoQktBSirTGm;h5nP&^dBqN*B`eX?;YK= z8|96huqSTi_XR2fvr%&c9&_e+Cr2Shkeb)1c)Wq^U$z z@UM>_+>hFcp_h>4tnGGN%H`#V!ca*V1R0UXQB5^I81z=2-AM7NdoYDncbx}AKnT*LQ?4|edk}-xt8z=OQm*`Td(>z4{ZBmb2>({hd^CcHW`N5UAsmiK5epsNDU<~ zOhp)$5?BeyyRCmnRj||IK?|By z7MTJAdWfdtqJp51Na!-f5oi{vJ6uAJqP^)LuZx_9Lt1C&gDnYdC>_ABl{~hM{mKw_ z*U07L;Y_l`>^R;Uqv=|YGnyE^YQt@ADN`8SPNzfXmY+OoF(NJ+1zM?^UprLf7V;C2 z3!Mg9e`%i_(E6Qj|+66!qsD({8l z@HqFE{YTqkhuA15Z~>10xUUKUicX`)w5_E&#dMn%-OmdcSR45mPgs!2Yj zZCQ?fIOF{H1v@<k;q!RqjeF!9e9iUnu7=^h;aNflwRVCjVqBTjpUoxKm7ySm zu9)VT+!V-8)4H{|{ES2g2aUC?@gH+6p;d8qsEDzIF2ofKipGE`uH#;Z82sMdmQPOC zZunN08$Eyr2em#wYhJYOJMM*z1dDqg@X=O6RFkyO5&TVB(_CjVJ7Q9xwcmAK!;^?e zkiEOUHGQ)CmkR)gN@9Z}wn%Y1Nk0m=XC}q;X;zC*xDkpv&Ko1{ z4dm?r>=YoHpN1;s?dJit%qddh&r%0kosaGWTccOFS~lRmp+ldTQm+Bauj~_mTUh7Up4a zpq2GL`VEvc$+T}AtBoEvYMzZN@T&ZtZHxdYP-`pZzU^8>($@AjRShEz&g2Tvkm{s1 zeKR=K;dYeo+Kklr3d-ektP;D`ZlnFH0`A|xFhTCc`k<_Y?V3D-Cfb#dNB~x$AL=#7 zL*hSg=8?^MYIL!xK2y3daawmgD_ea)9$z2zt~>9~?kd?@;y7-noJaxo;(0=rEc>Kk zKoFfNj?Kb;+&#@{nTdUE<@2sR%>M21(a3S})_0;11-kxkAGccNF75lv$@0+804;5A zJD+f@fy+j;XvW&_R<6GsbuKrvG4LE7c9#z-=3KvY^4#MNG(bTMjnI-v@KS(RJ97Qi zadKV6rQDi4k{WN?NZO#*f}Kx}HrU*Jae(UpKH5|)9u6iIc)q{&^QukPBGWNub{p3q zwIEQMgG$#;aU_PYA+01Bf-sE%DlTi1R-Z@>ok*$EJgJr#I{8%i;J)LcRBVsDva=P> zda$pkfF0UH&hR&SN&qQ+vdjmUor=$_W>RCTt8YmJm@xAvVij1%z6rtTs%0@zfWkF9Y@tA%~*2h}qJf|{V;tPtePYSw6 zU?D|Zw}V>kP(Bp|gNTJmxvazT%ic}Wqd5(+hAl=2G#@%28dno>qg(U_tZ_jlG$ktv z?*3ilS=0fvhN)vhtTY+t(;JR2k7TI-0L&|?cK03b7L)aVF26eF9^x`z8Iq-+e&zt= ztEj6m0OjY7fr$%P8sIJkcOD!w7&YjOOH#jXyB6cPIinnVqf(6J%x=hqNZM7D6$Pu7 zAa@@zA0LD6TX^WY*5eC}&F*O(gNm$$jojyIE%`=+b=Ky|Usis{eW^Tcy@Wv|Dpolp zmtbw>i)yQw{5s>xo$1_Pt9#x}&p>O@9f8@T|<^1cY`+tjDXd?zXpcyyP zd}wp6O-4Dsc1O7Lbv3)f$8>Opyr>#f?cKz7@#VEb?$_l^M20gfkW|MM(^|y)$GDQ( zIm<9HfW_4hfU4BwqL|w7{ArcVXw_<)Hz~v*`h{^v+>f{`3{x-a3I-Bwj6EA|6#9i~ zst1l(?ftpH6C+A=y{iY#a|a4EX$D)U@B_!Ce9rsf_nE9Ey0o{sS&hVQkw^N9lr0z! zAqZH2Iur88s()|0F}X3bCRU(hfxl7n{{UL^Z|(ye8)7k%5a1J&vW_hZtS_|aoVBZ;8^OIHAV61ciqT$TyN*EN^=O@ zD*lj3D%A(mpfq0}*@vCwtyaiDDBHXF(w7#ZNZPDq0e4g(%j1wVrUX+KI+F~pW2_Lb zjZ?2|RqDG}bxV4MGN+i#;?a`tzeTMcHcOl8Cf-J~erJv`wL)c6>QD$PO$9R;o%KeE zTRuBCcm$u7P_FGABn$&yUR84cbk@IDb0pPRZ^RwvD~lZSA^5YLgso z?U;mnMM)3t9Wu*2avtF0Owt0u=|m&1#2*^S7nt)$BpMstN7O2i|%qYa%hEq*72;5o9ro#L@}R5 zYrSafrn?d{)D%v>INWi)#TulJ0M|m|`>r8rNCfo;-emlGR!z$Gxq*mOZR%Ux41{fA zS_4n2zdUX*xnTbQQi2U{usOjn^%1n`RSSy?h{S?HB`CW`wnCB^8fGa$Okc8gJvR7O zh8(!wL27y4noS9kB2g)|R2qTQtuiz|KLLl>;J&Jn9HKYvCt8S_(TE_RTGFm4c7R4% z6R5+jcuR`0k01h|)Ku22q!wI-cIlYZb;~~-GWLU|Pmd!|w>1%SW=Lv)wK-5Ju6kCw z=hqQm6I?v%!VHj5Evgyq$YQi3%n&mopnwh_ON;$F)r)07r%Idc?qcVRxuQD;r4gto zGxd*GQiSV@4o8lQC5a<$Dzld3;LeBE0Ubx%&bznlkKP-O7He)c?nNAR!^Q`yPj)9D zo#4h8eLw@#JaI1c?8x(&?8t}y>;j|2RYz`jJl&@$2ngA zf+nC->h)#QLMi8rsczCwQCi*YmAi(7RR_AbzkVm%03}tuM?RD}kxXbftg{&f&O|j) zmyFk)ENh9r?sg;>R+q5L5)_g$1A0AMl!qkOEw$^OJBMg<&xU45(nG_6tVeKQLiis8 zz}n-}sQy*)3-9mS3A=xkx|Lv4X)tZfM)g*5X_}G-?wvBnw>t~Do62FbGJn1Y;48;{ z;lew%xq+38(%czc)AG50H^<9b`R&}CU$JoQ8WOOU-&!RL)GkLeUn=9dU^u!f^{tN$ zo$f>f&E5R9_*F1_hEf8Zqw4ig(!Q!yy;@?-S+%6}Y*35S<4Tu}54MQR7;a`}(N3UN zo3uW4!L$>93TtcLH(?(-@08Z`72&vot*{BpOa88GFZiLb#fJj{1Cr_TW zruL_JJ(Q_$D^*&KWhIG>gOJE%0Ua@t=D0y8_hb6JD-X|h^KxS|Mw^9`$IiMtwf^8J zmNZsWkO1ayRar7(wCY%R-M8LLAdEb&rRd90qN1ZP za#AVhj(eTNg(afGxYsk=ZfSPbt3|EjTR#!b#c{PvqOQS1XRRyhpr(fze6BsrQiTO` zT>d6V!EgmdUhOUw_NZ{lk=$#U)Ke;q@k=CSr4F^0o&wTIsj#ugl|Cb(Ak@%g1x|Qr zYN+pHh;8Yu*AAB?k{8428R=0<=y0(+qtMg%{EOiz7w@WHC)v?V0Z5Q!^~jnva?5Tk zq2yfB-PRSR!tOW5QO+m%)?3bfzT6}}(p7;f;TY%Fr9scA#r_v8#@PydYj?$Wd1?^r z4?nWjN6US;-BBby1_?G}ezpw*EEHFgwd>^b)6{)>F;>wJgW}k7oMj z6;6845NllVrNQSKzO!$)O5X9E=zt`fkIu5rNA081RiE zw|IT#90HK1&aPZ}V+NC(jn}=fd)e7PdHD$BjSs_Ya*^<>GFj zAqbH{G^y({JdRG=Ofd2pjDpO^K zP@y)OL*JPKm1zK4md&UQGsq17Sd;C?)Lx$U<8dH{srXZx75(#=UD9AK?yE^xsoT; z3Md~7)`9;3cykE~Bi_i$kqF`@ielTJyCIJ^kkW%wia+ppKIY*YLYtspkY1i%G{NRM zXS3UE?gL6;^ieqX|66FNu)9`l1h*^R9b;>rgTT5z`mZanTDn4ZjN1;Biqk z&D9(h(dT4OtabdlM zsm5SqhbaL7@T5;8D05el!K(@n{Xz8rNv2w1Vi?HLDPsyZG#~^0I#Ykv&gXF?Z}n*B zZF4oCp(Epkdu;;1Q|A^YfY1R?#*&uuX51?vT$F_a)lZNjzIbtrQ*@_Uj~h`@X*Ri> zwNctIh&IM(cN3{3dTUP{EW;U6l%WJePzWaeR8w@ugl{YS$9NQ}=mtPxt%Xo&@TE5$ zx|9dQ>k||@A3X1%zPYfCl3)16kYwB(O z-x@43%DU|@(y@d4MpzqH>e81c!V%w1C?4USk5#Qm*y<~vMcl!E3?al1O_SkGkrNx} zBVP)43QHRXtbt7`OOB^Jg$c{c4LqQ_C&HsW>>+GV!lk1{Brr7U*%C?d8&GG4l}5D* zzFt$Bi>9sZ{X?E?(?v)*LWefTW(z+ASkKc*0%=VQAq(hk?JCvxpsZ0D{!Fa(>8bN;zq} z@uPhLl6O$BT8}f=EU_iIB$WKMBxdez;!q_!kBli@s52c`;rL-=B`gZmM`s6ElC-pZ zY{pSVA$E%7KpuJLhuJ@*higf8Ya?kYuBli!y^I-{um+`Tl{~NvztgQ(NyxOYwT-#z zYQin3sq99hr@&KRo+3Tv#a*panZYhH8;X>I(p-RC=opX*9}KY3b6PHMQ019~sB$;% zso3mYS)O66*?r`J5fJX-X<66#eFe_34C?^;D+aDIpS%R8TUnL!Zk5!S1(8 zX&mF{NV9`LC;;&}oH!VQq-}QH$5BLor1<%Ka91Xb1U+e~oJMvQR;aCNJ_Kvi4>lr% zjVeoFFSxZbmhn?~BpkZ`0Dw4kkh#c#DnwZ2*Gg(Hqm$ANJZq5rYeD{ac)<3Xignn< zr*%hNT*tbKD^W_5m3|nL3~vJUG6)_*pSq)-U5Z$fO?CV+EO-%986M-aN{f>Fa4P32 z&<(1)wcPJ>XU}W^qay6H54vMJO>Ltu7a}Oc=%CKu?u6d7uQn zTXtj`^`>+h;a^R)sWCC+2;6{p)MWgeh4$8z0YMc64>OrLV0&s7r?UR_qdPVP} zS{k`wp5W9K{{Rd$<^ysme#DYDZMOI&0p^|{7&*ugD&8MGMi`S02?97!Zy3paCAadU zFLM?Oj!8A8cYmF671$BC=@z996|t+f{{W>ui@FVxgA}4qB5Sny^{B;k+;_NC1QiNS z1Z5vnQlw$;rjmkL0@GR=Q^P$gh!XJuE(+8sds(dtz)yup$KP?veUH?XBS#Et@UB(Q z5Z%Kx1tOxmwY|2PHeRPKd%fb>OMxNrEm~Cd{Bcu14+$sJRdV*zW>sMg@~O4&7dso= zGLPi1q<#llV!B=q5*JFWcWt$*!V6DIvDtUJvV>M-Y_p&hJw<#giX4sw!a`9+QDpYR zgSRH(R(oFUZM#2ODnRrW9$92@0$v<1(rTJ+-e&E_BU0Ag*EB|~`-O8L)_{t5oI{g} zVNiu?1l$Zxy8<4c?^YWw@e;PuLB?qqp}Xt^IzVVOQ&BMiHbzgr53{uS(us3fn2N+&Yp5^hipN|T)_ z)6WeIR$K;?P@TrGTVbV#JfKtEI^{!J{>&HXRH$v~AL2qOVf(4feZ`RiQbwkoH28JG zMgZy#w87zp)x9X+_bOI~aw+(qEC+Gj18KkTuKt=?Iq3I+?~)i)W=%dhcwwK=6@c#e|qP;T|Bxp3i{R@)qwJ>;@UC^h){U{%wbW-J$I&CF~%=qPiIPgLi znoD?=IEH{$g?ok)pqWK~n{|Fvrk;2)#=lhb(%r*JuG@J~{{UMIY9&KjQ`R&2V86$U zo|Hq1+5s#ymB%`;AZaEGyFjFTMngOlTySwKr7k`%-f}UN$oEhhF+UITICybD*{YQJ z?eal@0K^WVDd_k=Y-w{%$8%fCz!|-h;!jgdExcUA{{T%p z{uWj%w(bUzm$?!$cHDc)D_S?~)ZxL!$=6DHE)DYN!Vkiu?t7vZ{{U*ckDUcNgHE_{ zyi0}Nrl&)|yjfSqqo25o3N(R5e}6!8!|mfkb<(F}@Z?>APr{<-=OfIA1*kx3jJ`wT ziP7N@-zu3G5`E3GC~sPUe&Tr9x5-ZeSb^n+ z!qy|@RoVNtU`mDr5NbgmEb1$Xtm5P9(^oNYENDN`7ZWa7Gobfs? zDlk5hrmXR}NPz*t%kZjyCEU?Evq>mfx)MMn3RZ&`7`O=G={2Lm;Ssm|B z>|+WM@u!=D*lt2MuS$OdT}s5tX;DgeXV46(gez0irA3$6ZPhw~c5PJZMO=bD*M73hPm&PAO)TG0H0+ zk(#nxb-uLh*s()Mmp-Q=G&Iu*69R6u!OCED^r-1#+DdFS>zVv1mROL(xGzeWC5_&; z=}5E^P!v#uO{D(aaN}G=_`v`!m0=W*1OP8pySN})jl@%-8T|64adVC=D(4zW9#ExL?>3M^u_r23 zf5)bHw~I?v&Ny>i6jf7_2^z6#u_1}62AOCDbj7YHUX_1{OWXjpWqhQ;9zqvxXXE=Z zqs1b?sjc=DB*p{0t25>=z~8m0O>5)uulyWoaN!RlcUszUxMZS*svMk>yR}6Pb=$hX zJYS4Zz&eW7HwEkgDGGasb!l37kJ*-ZbsC1opL_{aNE+B z9OeXQr`C3)Z7|e|=t%K8S4>B9tb*pDm}g*`r1>x;Zj-*ldavBXw>e&L4lm$13Dk#{fOm-ghaP?r)REAOENMngT> zXmPdUI|?_nJ;1ekRy&aW!gk`=2Iq?cG^~32?*;f-5K-B~`f5o8`2HB%;r4DM020;n zswelKaOQ&01Yqc%6_s+`>3PXW(oHMFQb-k|f(2@G&l;>w4hY-yim8>Hj&$3y9_Nau z%iWC@?ekO$`m0|qz7)m8Twc(Dswww&^Q9`$x~cr1b{1xMClVZqTGv7=q3AJb4;Rr0 zHKM@agBl|&ARe_?y6)YmT1fzrYBqv2Ig&+n#O85iA6T)gc)NI)?E=QDH(lC})DsGt z4RZw3sVA-_$HjmYk4;^{+r_Nh=9-AP=khWc17*^lb?~m3mfk!tTUxM(hf){<3a-u1 z%W)xX;Z~HdP&1|{!HE+af2ywH;@cBLcB`traeQ6PXJRU718MQ0#P-1-8@16ZjFggM~4w>)Z=|JB&&n8@ zss&l?yIE%duGC?bD?(}W8R86?!Xk>IsV3&kV{^1xxN$wJe2$JG-h=_B;4{-LD~fEq z_7w!yZ$G#(-U~M)t54(jUD559*ap*04(`7pjNJKdF7!X;Sj^5@;maHCRvTW;RFP+B zQ)xSfR2ukV6r7BW1zlA0_cMzs@>t)-mCe?{{(;>7_4Kkq1t|)T(7itabHJ8h= zjo%_4wzX-p?ResJY14b|6w6OC4k@JMoK$YC_E$P3VQfVz-Z*%u0Jk6jC^GpP(-qIl zApJm!&o_{ey3hXruisMEy|!dwNPq+k&qLxq7>xcwtp&h^sCgW_n!Cz7`Blq}?T1$0 z#*0r)Yf4a48SKtogzRmd*0R~$(>85sS5=BW-eT264?&U6x%8mYxU6<)AzbRJJg9Rv zxy=XTQ+9kwPfNhSRYfUNPKIOBD*eT zeMLo4oSbzt%KmdO)tIOhPt|PlAq5d@)xy&poNPkLJJ}fw_glCwb zKaY{aF3V^(sLsvWN?x6g9xwq|+r%96Kjnn}xD6?T$`Uq|{{VjqaUTxU+!X#4&bfKv zkJmNMMfp=M&tIv&pDL7xh@u8%+}&whtMJPVzce(XO{xT$=6=TCsn;IxpEXBggQ_jJPCbnEhx=uh&?Kmtv}DE2xPfdn{>{9)IxbuKcEf^h|_ST4wTP6 zm{FT?)|_Tjho^B`ERngY?Lwn3{5s(M=Yyq%E8cRdmGY*|#2^LLM&p^!TIPOueY1x6 zijp}KAlL#pYH6|JqhXyZ&=PB3F-l?Kl2gmZoEh!_C{s*j;?go3)3gCVO>`#3Vh?w#MtK^s2Y?mhd0^{{Z3t04;GZ-EW`KSKs7c z{{ZT|f8Mfg^z4V^iH;;cs9_?e=*la-9gJDfHsCr}9V3S283RL}h&3v<`+V!L_HIsQ zW_~^v8%Q}04PZ9)CB0e#5CtdBxEsAYaPj<<=rk+)kUt0j#A*csy0b1v$fT{d3ZgFB{WvHZe zt-dU!&DNl0fV(iL3=WMzpj7Hf0~xuocf7oswT0jT;Av>^$1mkE_C3MD1$j%mu$>d09twk| zy6Ih4+qZ&LiZ*hpwJPUE3rY}FF|AKsafg+myO-(cwZXYuaLISHU$2+({&jZeEuL5* zxZ1*7h*h?GP8VY2k_RZMMy{2q!#Fbgaylg&T5MOZTPpnYrt;ca=(3*QY|6zg5&L03 zE5QmR4i_#5UX_V=S0B9}a1{ZR`f4jeXerW}<88&vhgGd#1C-V~RUI$q_VTVX`;oz! zJ=&tQOsuA=#8Bm+qgO0-t_vlI)Ug`>06O%CW%7G=xP4%X`RCqzRGfYN)Fll)!ebt) z6f9_Z&|{^RwtP_b+@*T^w=?6-!(@#hTJ@bgObt%asiy4dO(~e`hz(7GCdFR&&_MC#(pw}CSL%7FHtz4*dt~YpGo1EYkSzY6|JGwyT?vdnL z+qL;6a<4bRT=DZbXvlST0zp6+1N5i|QRR(bh)W2PFR4D-*LdSOSaRb9r2%f2s-yd& zO0`0bTA*duD%9)K2=<-yfqK4RVP%i1jzMBh+T}$x11}&=Yx2W;0kBo14XqlLTJunZ zqf&=Dj-5wJ=Yg_=ZK$OhjK9p(pk*O){!l72!)1zTI+Zq4Kx*XxB`Ka}p!{_dI5OLS zbXo$-){Gb1a^|EFK~O@2prJGrJ~%DAO{i`z8%Ii5P}F1|GCey@LlSo9rextopr0{K zdV$l@XhnXiIOzHSK>!@d%Olq;A}YYKp{F%*20F2cC8m-Y6Sph zav2f`8hp+h_J#Z@CCv(Y(38D_fw>hnw4p!6W7nVR*d zUYH=pk?A*~p|X=iYUNr~Y5{8W9Wps#z|rMKJSYOW+9{Pc9;Yx3Gdksi*oA29zH~)l zK>n(2r92Lr4E4Yl(u|MGMk?OC`t8UPK?5#>=Y!g44FTwA#cFo7NGcoZP(l3s3(0V1 zDO}x!E4boidrW9hd}`Z$&6#2doDhUmRB*c z^r>=625)&e%Py(Im`PQlaB#sm+Rz z9MBIOvC#W>lF7ozY|)cy!FMkahsff(DTd;O0s2tt51(534flub^t?AQBsTWdfR~qg zL_#cV>_9GmmY{2oU3P~oIb0U|ht>f873GYa44&5IrsL;!>{9K~Kk|@DZC;yv(y&Nj z_9QW~?G-CuI?{rkABH+!9AYxl&>zC4O((kD;DT!H#6qJY+m*6on$nf1&ueAy#)!N7 zR;=E8)&8p`XwX^9G!sg*(Z!I4G#g-wK#D0FpGaod1x`fcJtXXoK*GX7a+7xvev749 zVdKq}j^`JJFt`Ntw1$Fqldj^U$!x1s9!3KlRnV)o8jJ|q8l(YQ8fG!1f>yY0X;41j zWU8nHk-Z)ZN@zkYQu!E)ZX3-7RPF?d`E4ZA4@iy$MU7~2Bn1jysds~EU`eTB2d0A} zYf9HD;}gw7NiG7wn$qKy18#s+PSRK%v{f#}nB+xrIqO!@;hhwK)DS z6q83E`LLJB8WzBOL8n5w)(g7Ux_#6#+tEG8j%?o`tr#Aa0lm})h;s14Bb8n@nLKa;*;POzFJ8nA zNkPaT3{=niSkm3>4RF1$T1;Qvh@m1mSt}YkxB@@=l_^`tZhvz2@};?cS_z0GZh1^| zMj447;>op1Bf_=DM?3b$W`aa69}idKTkbFSFN~dy_c9_5Jrw@{0)%}2Rk87Zec`wT zqQ6-cf}mkC1>e4;RY*hl<13T{GdM&R!@*2)g)#mNEC%)+HCYV~XPt_cFhW-?DE z_TDBAi2||r04i835<23VUd5I#Q-TdN>+q{4bIt@ecq(;Ueg6ROQt*A|h{CMAh)5E? z*?CJgZ9=}9pGoR+#3?%^;O#8+txFvHMbvFyx696$UH$5UGdLHyv4{|}ZuUhzQjiUH zopQtRc1(nS+pzdiJGr4@P0dqPoc(cpF{E(*i6`F|>*&F*NR zjjn5&Nb|SfSod)K_K6I><=pbljr;ey__lt-i;M#Unz&+!SXc+jeN`8)*ih(B+Pa#Qxr628Yf88WG}^ z%ensm+-%7t{XPp?=8#d#q4{6sSQl}9$>+IYE8TKJZ*jqL0fb5b3JR#FrF`=^-(dFE z4j3NHV#CVSfXn2$o@M^mBQwlq{woz5vOje(E8A#lyIRuYVUMZADEoA(xPnpc;h;Aj?=~EiU5w+GdlQ;)DQ2M<_ zv?jSxYf+XO2&vYb4P81?(b~Pth^tdt0k#t}$8sp4CEx zisKyTau+Fcj+$2c!gli8q(zka7x;iAw_Pih4_sv@%P(?+dgT14E@pFpHz)0_U1GA^ zKowUZ>Yx?zUmbNd#9<-))-{=zC2pjX`x!V_~AgUN^UA6dsh9xmv6w|PmJP#GD zv$**|0!)bDGAmJqMO2+>L0>;CYWUnUAZwgGHN4@t^DCP2JtxMwr@MJ3oXR)m9G9W5 zsZLa&Vs*z$<1pI6yx0%MyGL)~HYT*EOMEJ)!SMVb9cMLGoyP5YE- zsKmZUk%x_e(mgkUVO?Lh_-y`LA+Te{{{Yhm4bHZQR9#QP)$}{;_u3145on?YiUK3r z-q)>&2i#UP+;vIMOR+E^!;O%gkpKxDN@}N4we)xG=VFK< zw~b)|7KK}AQUR?2+n!kScX0Dz?s46JopnAxgOSCsurx%{cKHM2U2)r73fe(#yJ|&A z$dFE5NTy>Pmy*shNaLXR*F(j`{WBXFAezxm+go)H>DpT*6*M#>LVtdkp!GeWZI-kP0`|eM7n|SU+uxN@J z1d&uT5mC8`1OR$tvG(T-(pus55(brqnbzWlbE9AKPiYd9%KI-W(YvU{_>F5sd{D_?7&luaBL4 z$L@aSyykfei>sN0(z*QeRvxWu8nsGCPMGyq5sL>Oj4|VA3E^BaC??5~*_mf{M2=EV z@E$|>RBe=?gd{QEMKb_pnIIF9#r$rvnnp}zq=u!c;b`?ixlgHwwrf(rbUBcqei$bZ z^1Ah{ zUctX_wv|b|wvstj_LT%}VXkzoPSLJdj^IO(Yg%l1*(6&DQV-!%JYDy*A{U@2q=Q=S z(wbK@TH(1_xE7siw?7x$1UExlr)YDL21j`|5gcGE2F$4d=S=gb#~Hp)9mtHL=pNqXV^u~3 zC0HhU8ta`%ISh0DM--o^6-wm1t{lzW0_`I8wsBW+NfMQjThcQG>JNdgFu8F$H~NAV zu4BkR_CDbd{{XFAZKMpKo}*D;g=tK&N087Iiq6i`I$ovG6_si?SLP4Gpn;0VC{Q&f zt6t*Q8ejBk>O!cg11yO&{n>svV9mE$WMsLzn^bk@43lI~8VvRdk+-M(u(HLO6bzM(Hf80Qs0Ns`XCNDL4%)uQyny-<6I%YE$Y@RukHGi%A$?4#>~ilYE1#513c-aMJtGTF*E8) zo+o3_JLxrZ?cQ2@DV0_BzV+JKji3tdu5`v{k>lAYBn#GenZSo4GOY-oYaMIp5BB@_ zN+2zG%ZZg`g`;61kp64`0P`?2{{Sp`yY~~cpYA&@Ci)%_gwxKfKW_PWc-*nVN*xhz zsfAQMt8iCCUtIp$_t(5EV|E96D@W=S3ZpXG&<_KiJek~F8gFcE91`E8-{Ij@W)ad-!FAl6!fYGPz_?@-09`0qb2c?Vb-k znN5yHp=+25*9z^t?1(4*E>)*tEpYH7U%#h~bF}cZGsqoIhLt*s9Ebw61mk5GYpvBQ ztHkz63rkO{RHO`S3cghifQo}qXlq)KK_7s_z<5%@4kd%>MWLdz0aH*zR)kQg2AK@- zXaG}51DTOitt^ZQz?yeDzq*j>O&232_S zcFp75q>7CJ9}RI+pTonI5d;A1{{Yshc|IE(E(bLbkaXx$x*N5=;4GQUNCVRvNacXk zQ5Xs@sA_V@HRQW*X5`kn4>{UKFp+@bbvk|eUb-{4JL(1zmXs()Mn0oZ87N2!D%A4E z3y|PuXm-*3D~)p2x1@x+P~T7}LVdpq)_C4pIh8Y@0d|U-9Qx9a>Ks zTvMqAI+iB21JXWpulQg#cQ9Dqor{osMO6h>xgOQGoD~R+8&k9oSL`B~lNTWN9<_Ig z&q*HNQ3O_h$@VNVBY_bze+a8kf!4IzD^Dz4WAg87`t7Z57j(+kf?Penx6ZS^U+v<| zlA>Cja$ti>*16+BiO;$-yK!HMt$!We<~Oy@f5_Hl&3&~(6qH9K&?`qzNb6MwgZJZ0 ziQKLwb*;Y}-j30vf#S8Ca{mBr)s@s*MynCtWD$Q2b;~@DhBSCx!L+N5t7pe|o3{sV zB)C{DWc;t&300+?VkKB)0=*B)mCxmkjwfm>Yo_|$BjpLT>XhH5(GLKfNwfCE2}#F5Iv>)Y?CjqWI&ZOvMl z#A}66WpfzvHCpBo@fD+R{3XIDcY;7tsu-vsgZxw;0}y7-jM+tFxeihnAY+<`TC@KE zOOaz`+U#gD0Oi+0bHrcNu$@9x7wec_gn$;H`3^3BWR+9xkE%L@na?+3A7259xY=>; z+qf@Ew8PGedN}(0f7n{HK39d6$yAK`%MzqDe1%$@g%6G|qs)u|Ngfrqz~q>LNY`4; z`5q4Fy8x03GjAJoA&*f|Kp1iPacn~1wX($JVGRmL-&M&tJA!>c?yf+qR)?-anPM=? zkHl5fe55;7zfZ=6cnRcPfdz6jB81Z;LHtDEJ1QoNAwMcfIi zOknLU3rRf8T9b1`e%`u`L#$3w#@dBDYnb0xpsrXkl@M}n3r5ab2RmtS-aP*R3TFMe zKFz{88HSCwDr9S=NXrZTTMy0k*T0%_`U3@uM80xM4n5^&4%8>n?M?nRv(7M%_jQbT)Y zqe9sMo_gwjIBmHNCd4fu@^OHKjnuq+b=7FVFw&G1{jK}3mppVKX_K1?zU%$GDCuW9 z%ok#)1XR$HdRHPVhRlEjI-k0b?1XpEpJY8;2qMqhv#;v@GP)oF5EX;YS{ zc7hK208Z1GAaxa}#93Qq>s6Dvq?NI$+gS+!lS5JfrgZp<4Dk)ogRYfVEKLDPsmpl| zm0)rjhDFyifMB+^LW8tb1baBSjw z?*gZ&6tCbs@ZocS)YB&=>^_xHI@4C;{0bpV3@;OTudeTqi%Xh_nTe(Wid zZWP&h(^E;bg@~`D0n-cEHK$m>3iYCy2UAa$4`a0ydt6VeN^K*l$P#t)`T1c?jo_#> z>}@OMO`L#e52$n|mHql+LqP)dA)t}xO{KiZttjG)k<8b}<6JC9_fzeNyVQP~k86cW z@2z|?uk6FkjzZOLwJETHb)fpw)W>%vPCM{3Jirws2}G+g@(K3QzOS{Z>V0I$#bzzg{h+){608PjYZa^M-eAzRQOb6 zoQmcjB0Mq%npV9s!=a?0Xdgb6F_=%>j0&|GE&Of{&`AWEbszJ?rZC^B5~s(A_MN8A zrY7(ZSz4V4C&TAl6PV2t@Totha46uSm_H;&?{2lJ8IeQy^}zNC&;+TB!$eR4rk~Vh z1eeGkNXd8*izi{{RZ8 z%I%f|>2Kjv_I=~)0d7TD^*=p)FPExRL!nnzcjT$O4J4)f5bZy3`(? z6|HevI0;{1I^L)z?Q$Hj#7RCzq~P!P)c!>O0H`W_awjT{b2;HI?bm>tZBXUyDG2`S zc6rpI_rY9KD)tv2Dt#AxM6!CO5^l<&zM9uOjv728&*ajf$=dI8JuM^UQjvF* zmEJB@fy?U9A1dLm@S#*U@ThL>wjw#H{?z$<)rAR|Q~9e*y31|AKL@~=d}~coG*A)_Y&I_o^r@MW{8(f}cDsoM;*~C`H0EaaQg5Q+Dp93c|jjrY^$8LD_Rw%eFaXm#f)4F zQBZEF@%Gtq+EEXP{{U) z-|4!DK4&(}6G{RxWe*dz3tMWs#^7XP7cp8t8m->U=|2!{{SC|h9;JXw*%rYQ4P!8Gy02MjOy(}@TY+P z06a==8v{|_RalNU9iVL+e5ttX^Lz=*k;a{{V{Z z*nJ>GbqDF!uDGMg&vR70*YK>Se=tgwJG?7GvEfi`+Zk0QeI$Ru&lED}Jg8gNJ2R3l zCvo*v?~UUjP&cDigCmfxen8@%BP^1Q*0TAz(gH%>tTA!^wPQtE)YDKr@m}d=AnrD* zbC?59Un*W(G^1=RO>#BM4Yotn+M8}cBXJg}*{qFfV+YKdn)&BkKOE0C7OBw8;uWPE zQFFktH?0UHbg1#mS{*SyDFd5-s;ncKj|ppdR9(POq)>tdb)`N);!{acQXp~M4M546 zE#X@9{q)70K|o&`v}b_pRsKRf^=g19X*qi0pO(4XU{$ zMO>B2r0bPDfa{BL=OPhmxMYFNM_kjCE4MI7>(e|pr7-Y!B@!i8knHiH2DArGz8FYq z0!1oPLq_iknY3MwH)J!e-nrrw#ml8v&+2VhBA6BWPo|mITJ@(*F&;pJzL8;3sVu9VOCQHbd(%&lC!`~c!J6he2c^(}qMLzVw z?)zttWLo4)R-;apIEN=<0PVr#`3kXT?mig-ug7>{I?|k<-CJjbG*E9PO%S$K%f}94 z_H=?oc`a{^7EgY0%#4`9d;b8YvYvD9J^jKmtiH@_4P#c*E}4Klv8Tc9d}th^=fu`S zFSz+`NR~hhaT?4nyQX`c%J*)n+p;nmHb#W!L0oGw_^4tYhPQWHRA%7j0q#vB+`eY0 zoR>K8Nm$5iv<9{FC&L#IVJWjm#;!0psO4%(qN%t2%O|OpMOFfo8Rkb{hA!d32m^&_ zFt}FQ#;Lb_#mv=aysGZ5z|^4EJu99qS%lV)ruC(R0yxIkMs(FGv&eH3%nBp86eChA zL(uu+OmH!$at)%c@bFm~R0-i~sy+S0PTO6DPmW;M$F6vp6F>?ytH$FnjS`qob0mPw zT)P440<|OjDTmy5cr8wg96Htlqht}@8ZA-4%Q_R{d=JA41T9UC#uoa5ib0E8ueMp7 zoPj2}8q?${hgxGqaJ@K;lhnWgrsbIp8V_+PnH_uuD0<<>2KZW@XgY2o^pi#I(V~N6 zW>`|WX{9<-2I*oJBGh5dWu$V7lC-dvbtTb&1FD)-b*cE`EYrpu2o(~1sH07!FNIhw zIO~=n3gjp<%n{SbVkSmoT0I8!S(BTN;H^MY@vD`m1q-UYv8iGPi$Vz3peGd$%_7cn zn$2W#60n`F^sQNJ`(0#lBys!1f9a5DSK*$RuAi3Jp33eA4@%Z=lI}?(Xc0@fdRC9e_M%#$F-8jH zMRPf8k;ZE;o{~px4y<-ZaT%PCUCYv^?R#}6YI{Xa;Zj8hO>)I^xo0=jy(*?&QS2Lw zfoFo=t@eGd4%HII%zuQ8#RiqdT)e!6$JJ`iWb^JTuz)Id-?qeZA%RvsDi{;+&lR(B z#8{~nR(X*j{^4H=wA*lMO7Da-15LqoKeMhYWzJz!bu~kk%PWXsMy{1+hlElUUJ#@T zS8aOaei*EiH)v2v6-h59fm%+!bu(+g6(Nz74-L6_^~6az2NojLeEhI*N0L;0>d$S) z6tEuZ!aM~27wHXys;M&$?agtghRqPvE`JaFa>Res-B$G+=1AeRn^UN)$y%7# z%OPJ6z~Prp()Bu14$3i=2AnO4YSYqku3sFmPsv~wqzuNBx#bU)I*QsvG~5ndM@o;{ zF$wt~>7_<~Ok}91VJO590H;7U^uj$Qstx`$!I|!DiKP~_sagY|sjdj^X|Y;lp+0mY zd0or_2gk_MG1CLw1;~gf_5#(>D2|mG8tPbNYvD|**AJ@^TS{ZV79OfdN1vvHT)+f@ z(=R*`c}}$Hc+%9WRAj``v>5?f{IHc?l*`nVZOsxuj0p6c&U%qdv(E|*A=VV*L&9!R zO-hyeSdWHdQ`5&10diiYMmH2+^rU_AKi-W%sQsriuDCyiEJQuQ;ntCo=><$+fC;X& z&a~=qrUJJYr$h|hVnzP|oky+Gu_c274F-81KMYC@X|sxX)T0Rv8%@(nT1&raH%7ur zkO;{5_-B?JiYBpr%1k)myICebp4! zxp>zO0G1=IJqX@zFZ?Pw+^IiET8~vn?yeu&fn8Hu06Lp|zl9TgbS0P#Y5xE}3@L$x z`c-I)TpWzJrWX@LgnGpfjWFyD8o)F;NZ*o2~wq$1T;^py{$?-Z&0NF`tm4rmDZfyH~Yux1DV2t!!Fgo1sbg7u9-vtC+5oz*Sy7&A9G!N{qlc(-NH$InC%Rw!lQ7xupVWO^p=o0Bq<16>925 zO>oI*0>FGJ=7R51`nvfFEkG?ra8NGdYG_#bROeopY)0a3YCWXcL0vvnAo|r2fL5;X zYAOX!T4hzi7J}f>^!1}D?W>2Xp21X1#x zvK63eFdxK6o;mLz3Ikqd?nvDeo*b&bb?c$Hdv%o}0)XmjPla;_Ec~&Pno=G@^{ze1 zOy)SP>cxA)M{^AxFhb_bK|(4k=R$rsOnEM8Ky<2%ens%hxDo|n-P_tJBiuU1rA%r zxv`xV)!h4QyUQLU+~o5$%ALjAb68wRqTTi^g;UdCR-ltYzqcER-4;wBw1x7n^~Ccr z<-#Ah0++w?s%t_~&g!93O*8)h3hRb{P8#Jkq7sJ>N)@6q4V#E8)yvMAW+_ZG=)(A# zSaEZZSS2Ux3P+$+5HziS9dg813*V(H(yOXcp$SpCo}o%G$dk~JDghZ_(SEA~N!%9Q zE5@rt8Rtga#gSL3KsxwfkbJ0x?{Ai;<4T`f2Sy9@?^;rUXmzBE2K z2$Tr)?y^zTj({sv01v98$EX7V0i+dM{XKr&X-%LNEt@gR%DqNe{5-I&gbm4R8$>YC2>vG0*&-gX6h+L+C>N=zE~t}0$T31;stXhNDt{5 z>1Q30)U*4;nuhgYB=4~ymU{fL zG6rrI6vU+plU55|=uy_2mW6t3_~rrmV?hox41Tdx^X)1R(!YIfpKd$azTzDarWd~o+F58_Y%}yznFM_P)^qv@m{2Wws%KsrF}O0SND$A z{ur&=@#OT!LmCj#Fgb=Spc)abJj2~xmp&`p*;a8G#BgYf05{XZ^cJ14=9n{zh9+j>& zICu{Mu4p$ltZsI5Te+_~4>MeO_e+np=IpM2OE?lNLuiqxvK`x)0%$<|a>sM*jHlsB z*yaaitz4JAaAW0g9C4l+_Jtd?P~dj_>xlV23`27MH>3}`_#^q(AhLjmoU zFy{3G{*}jK&7F%2?D1kL#~l%gkt9$-HKiyiS`QIko*1@}?uWrGO-SZRDv{~a@A&xE z!)0p_u@;j^S_Xr9#~Fzcr2hbOd!b@jM%fyXx|s}Or|d12JYGvtsS^hN-%tS36X2(4L7|S1m@mn8;74w$F1lInW4#ZwVbV2SJUF61E0` zrI&8Mie9jpO>xO^S9MLu7U}5%z<2>+rBJyj*fhf`0vdryA1teuES!BS(JIRY;IY0b zRDMd8+{19LfO*$3kv<-H&hm^7W3A$AO@;{wHMK<$4K!g-pb8DWD_UokG0$%2Tms6l z1p*ryeF9Xe$yZeya?7Sb<(JP6wSvXAAHt%_QC9A$t4IT`@~TL3K`LrRa$%SJ@o|M8 zr+5DVEI-1lG9@i2ETXO!*2)!W{@p{i&}+P!^r@yVqHA7!Yd=0ig0THvJ{4rOvp(Yx z9gMX!R4xf1S937*Yn?GBNkd~zFIBnW3rdsy#{zA+S^r1 zs70S(CJ5(@n78f!09I!a4D2mpG?x&o)fZIM50zXu5#-F%BT67b00qdTF~M3KIw1m> z&t)8Fvl!=Cc0az=Ib2ieWNJGCI)O|*9K`0=~Yi>wBW*3%YV1Rt5-J$BHNDH0M@k% zJUu3ak1a6c(6wsH2!x5WdMdd+*Qo9Sv~8|xD!TNksrXc4uO$%l0nn4)K2)WNzfl2iWB(sk|E3KN%U!AXzSDiY>m~$F>V@8oSWd$dghAn9k+)ToM;-Z})WsrK?%T{@~@p z=0}!{2zM5@a2_ZL{Mz|c!u{vD5uD`MhDeg#RYa1+U(qE^04%xYLGi>B*l_Lz+jo!@ z`Sts%)PCh|Y6g@9pwi1@;HSVELT|hGaJjj3xiPTW4Y(1rGM# z!Q1$40l)`I)TjGaetzWSGCjsvMDTzm*quedQ|1)aCi9uRo;>bfZuY462y(|Z&Y%<> zGsWCkF~@XiPXSc%MT0cV$hx$GwV|L=*^otQ$EM-oo+ma23!wQ` zoOocO>HO-mb#~Px)DvC0nroFtKv!P4kQ%_=o2u&{9kxN~s0nA>TXlCR^wOXma?jz2 z@<`U}R`I}qXd6)16PKafcT+XihOJ+YAxQA+iyE+oAlm_Ij%KdmT!_ff6Yf0TwHoRQ3I&Y1sT$qZ~jQo7YA(>hg4eAv6 ztc|B@g4VCwJ)GA*+|Lm~xER3z?i2#L*IZF%@@$BflCDa@bA80vRxsdPMeC-!L$XxM z60Nuem07B!25JGgnsxZ&n{#}dNG|X-#Jh*NNn?p}q3Pk_T`Ah#p3yL7jaD#6qi&{y zF}j&!pYmLvxDmS77w3C~J*6CX75i&jw++C>0!9@m2+XJegQYX3G1)mXNaC(q<$RAS z`4qX;Zd*lxR;t;7T|G29pAgWZod-LxYGUaIJS0gk^hLMPZ!P&Be@)(aNB@yAovB z4MAOoqcgOUJ{ag6d<}*m2rKaa07~v%mD^*M$o)A4GB&CHUow9R%cJ2Z=I_iFb2R9{ ztL#^np2?%gOR7*+`eRP)_F?1uk_16rZ-DJtIX*$0ehb6EbGJF5lpZ6Y9RlA|U4iz8 z?Lduez+8TdG}wqUe=TaQuXZK$?V*IAB~3*43f2hUPh#< z{oY17~>6xu@$GLp}0CPoJ=vY|oiQ7QZwcAJ*7%HSwaG|9Ng|&Co-8mijFOI`ib)8rX77&S_Qk^^Y^-lWSa@bY^QVS7e*?xB zIe`(YS$;*&dXVJXUp&6>_t=8k=@w{=dx}i2Al?B6rD{PnC#F3K+FTQ4k)^>v)8|}o zyZO_Hj^;>Pv2MN|0=_)`+U`5vZ=AZCciJEg1+pb}`$$VDU^QwTaqI5Z;<5PNF_ADU z$ONA=(!7Dna&mKg+_^acrL8+ynl+>N{HvdWmYA?6NhKt)D%(zZsHj~rvx(_rVmj5a z+95)XYjmp(n4ld1$mR5(AVz;7i)h>&5~?REqgu7v$W;|r*FZM^01kT7)k+Fs!j(ah z9_MZ(4wY=u#}@wpZ&Km+ReK8{n7QDVp-c7Xr^2tc zoIHHxtR@99MQoBQPjCX8i8i0h0F`F|=THd7YE0+x^0}`&p66H%K(*^tjm0ya#*Nt9 zn;amG?zZP4P%eb3E0p=xbIb7$6SQ(Fs{+7mD&tb55`?Jz_|@TNwn6SOZaS#`HJFX^ z;!EwxcMWd84Ho`dj}0p_<+zq<7|`usNupCR)Me@v>y0E6hsS+uSI6h06R*azPEy3g z&rnFE2yH1^f(fO6ejjk$)f(2<2PiqAEPstvCV}ngBt+Jvl`2gD&bm`vFiLAz(Y>;I zUX^3wxn_w_v1Q0rO@1{1Q(l;lEI^etO`pfMLUw>_ZtWiG7H9)XWKuUNW`j>h@2d%58yJx!)#R~^A4WP1a2Wf4zAhuN*-;vC-q z;Un5TC{Q0C8r}PEyOb)cNI+m|P{On$BSB8TvluQ{~a0!C68U z8s3pOTGTLQ+IEr@njgZ4Kb9`zkRU1+ zu40+PUj_M8Eyaa*FltnQ%tcDmK7(;5rX{iK>FZW;Ex{Jk{=Yi+PL9Z)*AkPv9Xf+U$(@&eI)#>egeL0_cs{!w^9P^d=;`+S0cotav=pJV8o;0@Xz2KpS&0JB2Di6x*Je6XT0Eu|k^AF5!C$^?sEH zX$RCPu7HYwYEA%Z1EJ|a0_9(#y){&oARMWkDrz+ptvcas2*ng^Yf1Dv)RC#9ZrWEv zLr@1%OuAspL$#%Z0Jl}Cjz5#Qx07!?PKZ=2-1G~=nmcQSs4*tWmyX?BQH(B z5Og%mg;P>VU=QGOt}^8vf6hh_99+mpoX2qM;ez9)!|T@i929GuJ)7V!2RZ zVxnHB{t#N(pLAAnmT- zNX*wy9PwiZCiVpmtp*=($ijieYNLPI5J-wTGE_uq8eB^ z^?q2Q?mr3;4~AI1ho5pFeXC84-R}0d z^=}V(Awo-?@u*2Y-j!;LSe*&XvWV!tT7y59EZf{9pQ`n0-tMv&knf2Utz%P6hq6iW&VbZ`g^uG!{Y3>@GrU~U zXTR^ISM8!OqgzB=08!RFsg(gxE0DJry95BAw4YDsAksLGKH#)nV_bise|E5Wm^@uj!D9KpGgI1i4W^y%eEkG9Y( zY>mh6K}sM+2iz3(hpjf&xnY0&O(v~yQ|C%O>ocAnCL5DqF9iN|@BW8@lrQOb(ai(I z0{K#a)kjXaAN)k+2X*@1i~j(O5zDXCUf0Zyl zZ(tRb?FYC&g`+GyKZH3W}yBA;!oi&bJE_%wB|ooSK5{{ZnMz#%E~rybssrm65Wgx_xfB@hL! zL;y`bdrlNPhpow{S>6Q|#eVVp>687ti6~WrwuM50N@bZbsLK+W&zD)h&ZRTFoZ^M3 zK0ohK^7cDMXt4&%>h=rM=C#uj8_e$1k@wWbcROA+a2^Vu&YK?2ajw<}A{H_jd@2u2 zNN+59xYU;S3sG24!EOGO;y%wya8B1k!2N1zQ{g~=eiC^itF18p<9wwGCzW{i(?-Ou zeq~q>mJ|L%b;=4a^KE^fr`zF4w;6DTn@IzzgH`d=_;_K#ksHdb>DK1sy{JiAP*|4# z0MsC;^#)UwbQRA-g&9H6Q-7-$XljoUPGgH<+q-t$vIqRI8i(gmjGp6#ukokRswf-B zL#ZG0!U!PRqe%A^+5-7g)Cg&^g^qQpIS)K7N-aZic>46EWVevf$r-4vMMsZ@B*!4L zXqzJy6%v$%*@G*AL6ZDD^{p{9pGt(=NP3h*V?rX0<0dc*?$)_!O|-2BLj>2I4aFqN z_WE8(Z9anCS|RRNT=NE=Un7EZf*{tTx=o~?%TA!SU|VKta;0fadK@xd6nIo=G8%~C zdX~4eH5H(ttq1-Xk36kJy+X>#1Z@pUa_p$oug5ZJhFaaxTA{V2;ajCPo?t~5wWT$$ z@4}lCfKHV3Q8`rUO}+U2zgZ!($o%PvKHHEEl_AkTa*b*|?u!BdI^;puKi!Ah5*n7s z0J>hAwcg6-LNzp}%go_ziS9mB_{VeUoY#A*%4$YnYto(`SdiRu-EUIk#`NtV0yXof z$GW2vD^c2+4UH5QG&fD3tm_15wlR zKniZ$PJ`h(x{74i%kAvX{{S%Y@xa>twJER=G_k0byhLIc)Dw~NukFCt zNK%PY8;s|-)2&9_@&FbQkNzR^)58u%&;s@Isjy*^J%4pEYpu!}r+BWXBar>$3IV{a zlBYKq0F4SNJ?~Y?+`~+&dTC0MGQ+Lj-36*tc$c<E0X?K+*MnO?Z2A5{y zYh1xJCrrLrQ;8mfNFkfLEf7f|InYxO?j#@#mqb+SX_go+q6xSjNB-39UDXat3 zLYiyaX?odcjNs=`J{~?8R>5*8+6xNTh1j<$LhtKR0op;XM!tAy&^6wof|mG1?YTqc zPRAp0D=CWS+oqzlr^Iz0SYTtr)e@O*91RHOg{cJP?&DEgjpcJ27=!1hh8U9;17HF9 zR5$UM?r|gpG`jPWN{JI0gBB!`O?-Ov#8==#n}7nNyNZeXln31r}?H+sda0e9t6EN!&@=KsnIlPm#ng@ZQ)^ZB<|VF$*4AY|&1W zy(YC8L}dqD&b8^}Fx&W@{XI0xyKWhreMwSLcbSfpJ2LOqFlraXW^}}3#cl{2P@mhr z;r2#@txDT>yo?D##8e%8jWVu;;g9gKg#_zRrR`{jw>2c4`7;o*C!e$?{{UpE7<9O3$QxF3Z^KYiP*#68l5IZzTlRo6^B&fj?m zT54-MS0-kEZG;r2w_WeYl0B=CmGErX*Uq?;7X>7G1*uVXu51KvWzX=ad%p6w8-2Ty zq>7VJNzXlTWX>vWsFte+cI4!#j2dBc-@@G#BecZRFhDu$u2jnpGlqNqpank%XqjEQ zKpRoAci1Xfy()E9%$khqYfiY7&IpYGO0kQz%Uq3Lemurs4M6&E2I|=I;GnP|((Z zocdQ>@}?}K;Q=-Vu4C=H?QsI4WbQd`AKo64xqw=f`D>mfH;RriqMER84A>YWRTR#C z;JBP@_ajmcgIv1ht{)f!YNbnyh=L=$f_^m?*Y_J+bijjE`a#rJ>H`xa!wqib9yK+X zu(a8?rVV!?1T$^|xqN)J6~j+z9RgIL5d5H0Xp+ool@-ioQ}}C!q-#S|(ur#<>bLOx zW#zyM;Td`XMX$st2Q!Mfa$$?daH=jtHV6Xi^Q*OoYh1L7-=?aQs4O~lqYPE#@{I7c zWpg>`TGHLms*}3g=tf}KzZbOwaEB6hcYg&H`!0o2- zN6RukpOMVe<1wF-7jEnPYYED7%cs-!{uQY3{0wVDHfgR(0oSfFd6{nxR*_hY{#8ci zUDa}ff{5*s1*pp+a{c(KeqnJ(8qCYeNK{II)q);5BNSy{EUQC^rgbV6YN|}q_Zln3 z8j@PAPJre6>Tm>|SLH;>2`EBR3?n1Zq300n_Yisd!2qwAzknTd2k6C~07Jrmr#D9qK0Ht2gsU9Z)%8L+Y(*{#drh zYPodstGrm8GF?KX6bgkAL zV`w3_HCB*^VnJ0Sr;fRJV#*-W6#X@S0ocv1yG=1H@;9w06q-`HXZYdb_UH{sYa?aY zRcPhH)6mAgBMIIHl#;@>N)UDs(a;tZZzJ;fV7?P zh?3pPe(JBD+En}nPzPM{0k>DfIt+#*OyYed602nn8dUASvY<$08_s2EN*ucU@m%&7 zeInIWFqOqaeJfJ1%)5u@dwyWlf6rV+k}&HLRqu$n66UR0t#1M#j6c4A1D<&gA&3&O zsimruBOJNP2G)w4x4Dui#JW`1Z&Bs*7_4(Iu`N|ILfId)!mQT3pm;%7P(T%03g!E8 z0r0fC^-Yt4*1QXqshe&~^6FGD0Qpzt(-Gf{mtoecaxh48G}@;vxfGFoF|tr~rg)BV z+}oO}ml5$5E(97`IYkDc3kAsMPa*qoe$fci^;2%ak@hC$pGVFIAUr`r^(1xE2{@7q zqKc0%7wv#!KBGxp^GKu>c+`MEp%oZ*JWbs?^`*ha%eT}Vi&e{>>SiGpPzbF}bt5c> zCH{rYa=ZJDyFXDlN-R+;b2k~;ZQ77@bG03xj8 z!i3%HyUMHgHw`6sD5?Gb0J}4ZjA;aTRi-p82mvWjuLF}%hJ=zTO@ALOOjmVEw`_zr zX(}m{w(_~jN{r}yGpCn^4Gl?-c;gopA0?jBcgMI2(<)T!o*WKgZN9FxAY}(=NT}H@ z&fp@6g>}lKK9$o<4d822S&#tSTo#Ql6yO;a5-KWo>U^}pi5dk4=f?Xv*I$({ZNi(O z>PjC5)K^OBrW5*@+T=Q=GcP3^77i)+RD@l%D=-y}Tlq&?{>(Kde%}(*sE_7iXt{9} zVzKRU5eDKAz>L@m)}00^=jER7OnTKmUpVPU_8dX0U9WG$Dgy)x6nbbzVwCc!#0TO2X>c1I{kAeyJi=Gf9&=`IJtt~_^V2P)G> z5M(L_4WUUYNT*DWnd3c^$vvtUtz@%1 zhFJlQV`HUV?KlWRjq&eqs+(v(9Wh5QB=A%k%Vcu$fAY5wDq_=xyJJpxoG{v?KtgPmxqN# zIaJf>P%`qbjw_vz52)DHY@D;ufo7VrSa5AH&JDSWFt1H~^u!E|rZgiBQ{-~Zi0<63 z>ETwS;asA}1VO3wP-r#C{IOK*z@+u6IXP|bGRQy`Gh@LR$TI;(6$*6}(-9=iP)3HT zb2(EWNX`EM)~t~6UIS(xI7>zDi zAsbb5=Q#SCaZ<4G?5w3m^(UsEhlV2@#08?}ph=z+bM#cH=y>!{KPZ;-$Qle)$&Ke zN&LW%;Z7m7UDe1}&-V4gA2XZQnU-e;Zrlm{YC$3!>9mSeWGW81=ZNlmoGfin-0)eU z292@0Dz!Wp_G^|9Siz|(eCUJ2T0l>pw5&+aT8*?c{{WZ62y={O09Mm(b5%+bX>f#e z1N}tnPPD@=cH*Z>WVjNbQSupQluLBAMnpA;X$B_kd$h7Z6Je99&m)6j7sW2BzR@z zOh{~G5BSuEz~>Yf6qoe`AlD(4PPlcjoj^3>aU5I^N=dI)P*h1u9E~V?frW@mPUNRq ziq^Sgu%@O`oolHLT37sV=!~6or(F{X^xRT%T@bZ2Zw%^xeiS2Wr4t}mTABW+Gf|~g zr_WA=Vetsuhf1655$XfWN?~!xZ6p?`u2cjKd^+Lr14l}f%w54n=?3Iu+4ZkXss31b zxUK0;C{5;o*+mb*Wkys)D_h#EG99h z+-?38&|gZ1uD}fP@xgmBkE9`|KS>!D7q3akMaC_4Np=(Y2=`>?S{>}@##ZyZ+<3FB~G z43k3Ph>=ZKbYxKE2*;#9Y4V(3HaH}(p&mxcJd(N>a~9@DhahNc+bCyE5Tai~QElg6 zF8P)TF5|gljYvx9#g677bpcH}W4TK58od&(_}07I+Mc3s^0&^amjz^26sv+5Cg2HO zYni16D4ycy6IYOjF!(pe&Y6V`H9#@agzg;_3Y8-*P8lrpAn~b0ksi=@1L0Oa7US9E zAY#FzG6B9!v(RVL)r#!sgYn!PIxSQ3aQm2!Xdb<~S8e^bzkSx}BL+`tK9&Ru6*bp9 zjyYc^19rHkmF7P4!*BNseyzs4%d+oxEJP3$V^&%Unows$kQn9sgk%$BQ(jf>Tw*s5 z8tOjEypl;47~LaT!n}_v0v05%x{46)EhR>sF@)u#W13`eB{Txp=~+(NpC=oUek^Wa zia-mu0O7Tz9DstZa@YZ-`cx-ySfn?Xu|}msJ265-5Hs4@9E+2ZobhSJPG1{dO1OdY z@-Z^4rxAL87M+ekPS1=h@QYtB#6dO;T8V%Y( z7c@;HXbJP8`)jyKlLf9|3a;U_5Dhi18bYVWhV!(r>VNA?Mj9Z(rO(x~Xa<0a)v_4_ zUzP})(q4C=&{h8cvadu}hzt8s?k6)qC=R1tM_f|#P;Q39)CFX_n-|>2B?Fw5+~03G ze|ck8EADz0fPz*sqiYaN03hj(TggP`wNTo;z1}>3w&LO}SMC1w*gd&A&kS`wwF(#j zD_RW?QJyfjzT`( zHC^X>dO4IGxw^5S9&|a3g%6m;hAw$&7rk6@T(ps$eLu(H{*{FHH)+uu@`+GfkU%1o zI_E=NYq;#~@&$E|#=55k&-#HT{{YUptGl~CDPn3ss*GIh+PlHiaXkmm8_qL5?H~sg zA9Z%V-tIRs;JM_!*IOsTxnH`wLT)-nUu}tJEF3Odb0KTuF}%acW?X2aaIW#dcMN&V z0Fa~3vnimG+<-wfu0#+*=t%^4;c~RJpa7cMMMKA^N$HTLxI?0ELX=l6+9+Q=go8jRdJ#(NZrFyDAp1XxQF;ZAQ$xLS;{)`w#sA~W&J zGhVn1X6BM@Nqf2jKm~VXz?0RebR^d?pz*`xFXdB2Ng8QFN1;}WP}Mr=(36D#O@_1v zr{P{$&$zLP2b)mkO!Ldb0w~e;xuPxwyY}9t;D&^6^)S&uuI*1utDjt3V?q@w46`rM zVN(%X5@>*U6P0Rf>FZo*@z~PT=~a)I0I$-f5|PH@HLtR}q;pMaS`6#+rX-lj^pZBz z7oT!K=@DO|e;@YJuD!G0oSy@6ZzNZ@3k|ymNS}OkIe!vV&If_Yn9FmV7B+MaW7;+;g|l3s-6FA-IYhD28U)>R830iu$SXBBpP!BqvEISl? zoB-0G%QHii0#or?vD(HAi5OM^n<6L!W-386%DBCWjcY?jl}$5>7pSnSpC4=stZ|X9 zTZqlN&{S6wm|GhQmerofd)`Hr#;=xkZx^vKKp>q0%FQYd&IXJ^7Tmjl8B-8unXe9E zDE8k&r^o&3?*|yh=-n$v=%i>4R{#Mv-KZga7Ts-4xdQ}~g_sL{vJjJRFUtBihxzL(ZXda+w0jN-V{EjYKTNt%P#)K5w z567idZ!VAlxkxo2)Df4!jH`y^o6@JPUgN+{l?gkuH8P;o5DwL*bi5cc-MxvOT3=MX*Uo?(zH&+_4LkGLzT}c3%iVEg3(0_&| z!x}jVM5>3#T7ETPw6~}XJtUfK0+r}#uR)2eXlV1QoQaWIE-JwsMN1$8r3TT|k}7o2 z6XS!>EmX-STn2P^*35QpdtbV3rV~vZ&(2B&(d41G^Th?-KA2A z94-n9ikZp@D4-sQNF;cXnb#6n)zZSJM8NbeHmd#Y!q8_xGiDW~PPL|{gA!R8_zJeg zfRRy<2}4Jb3EX-<^FoYFMXu5qFydhdFLns%vT?%Rz;2oxGpgoBnEB?9!TNaJRW z2r4F7y(eoisi_C4H2F|d6|y|J#43uM)?dn)X6MtczaK9u;xo0WjRB!apjh3*Cd%Sk*z=f`Ms3Xms%z8vJpUmm%AVDpxno3zV z?AA0=%1>WTU;suTIPSUDvs2_3n;Xzv$r`VxEu*fWFV2+1kubT*(vB9$NIIIJb3C%d zk^sYLCpy>4lsW5-M<0c}+gjIgm<8?*{N5fligy<@4&_{o;O@> z0Bb>TxUQYS@rA?}02~nwylXQ_pOByQ&?4Q+^$yK9w2+*=xi-5Ybpyh<(mFOl8In>! z9vy$_UHi0fB5bD@4T4E!^p_U~wWNIxE9yXQgI>NB(cf*m9&7pR*rZHBMYwBNOlXQm zuEcINr@-TxcTYOVSn$_84?e#N_Ge>upXuU@B0$aP-Nmii6pvByDt<=3gZ;YfXp}*= zFhHOJL=lh{p-4fM9=eTj=RW1Z{@y4t(X8-l|hw-6+br>}*&S7P>uZ^v#S0wkdx zq7{bSfDW{-xZ=FeAo*PD-nKk$E23@ws@!iVf`>$J6nsLD4She5Oo)54{&oOn!YM@+o&+&gQD2VvW9`c^Brc_zmb zCp_X&S-9@$<;0mzkPcMNi6-eU<<;0eci;xn5jINF;> zpYpFd=Rp1^H`;i4X*-F&r%+E<4x|zdw5-~00!W=@+qImK6w_6uX`V)>t}XunR>E&| zsSM?#k)@*T9cYVc(a>$F3`qiniVV#(>x(>Tz#%j=Zk#-lJSpRqk7z1EN=qUs3spG{ zO*Qa1w_?A|MMh}eN}C%kN^$oBX%WF%kV5V>CDMX42aOzYtWRvlf%QUXuCr(W%gcV zCMJ^90I{Ij;ObncIoB0DXDIAxw#({_ zixPCdRZ6+%cp;gO?!rTISn^y2fju^&s;DIDQn4OShcK5(lju^Y<3pJ=HKiVdL!LSg zE^}Vc=D7#k@UDK@X2yTFB8LOv`26cTLC2< zNrTKr!U;Zs@gKwZRX+E$uA_{Vgyy;DSv9Q~DJl@tgr=!3v-whud1`+}{HHc|>k%NSavx05l&u(rh_3D26Eqs+475 zcMmM`pvGS(4DKP~u-QCw!;bM`_WOABt6iP`(zSC^hLt9i1M144QyJW>J$8<@oyf%( zO%|-Sw+ku{RS6?;tv_KOvtK+>&5r2ah*GI$hubAOY3ENsjmnJ9WvNW^8rGR-hERYFXENYH79fk(RouOg#`0Dc@*A^l$k4{e zIb#FGfeS)F>DL=RE4Z?7=02VH$L;u6r1&0Jws}4`92||Dy0!u!MK|c~+H@$pq&HP?9i^roq4k zvfVt@Itr%CY)Cb!8){id`m2~8G{yXL0#R>P5z0b%e=3ch*_g%yC@M*-DX8?E>H*A? zi42hz)~RsJ-%`5bcY@a+J-KtjLBISd&r1NM~r zd@2V4$)4KgnIwCEPb9OKugTI5eRHP)Ns% zyT`Y^nViP`C4TQ3^`8UHMLsZ{_LEBP{?zBAzK+}=9;k!vG8R$*sVp?0#|h=Q*JH>} z%1-pLimvYF3V8AT2-DQA|=cG7ao1(Z<0vtmC@4^t!d5Hd!Rxsz|Le zpkP2Xrg+rw*$!iXPe>x7O&Ho;<@Po5=lhoI8+)!Q_T*ZAs_7n0h*SoRSxqO-fB~*O zP5Wcq6EiuCbM`}F@vl98YmD@yp~<%AVL1?a&cqh%`# zG)jlpl}Rdgl5(J^BQu61A;#j=)6vgc8n|}<0C3#cIB0GrM@9_GBQXz{s(N(O6x@d$ z9!-z{Ydy?y82L>}8qyDkPdeUvckW6SiDY0MSy9D0{Jilx`ppp&Gg=?HYbwP5Gf=2cgQ0GzO z;g&Lad}Pqx_O5xz@KZofR*KQAd6?u11c{bkRVh(gitCCAaY!VU6^_c|UeZ;i4Oy*j zRG_0PH3&J9O-^GmrdWYAU>n-0W`Kv0(9_^yYBGUJUL8<0JZ6bi5}jjjkynJq#vC|Ps7IRR*!1b=azmz16q!lb-51)-6~{UjEyJ? zpSQxI=imYQKyymci&5c`)Ke0fowvrUqUDIWBp;1KT=vj?-;$vJ05;G`B=y#$Vr*QK zy1Lb42Q=oP+)tH5%i6JzLqwrS2SK1Fl*r{niH+qPPT^J!=UzteHCjvl(YFS^*ayK^_jzIS%gAh9_|m`lhF2Rn(%<%! zYmkf<>6UrZ;4`no0CO@PpwS-SdDYhV)1lhYmKzacG#Rq%(CY4aTMpVch067dl{$@`!K6PaeJm5vh8tYKf z_GEHb^6J`FglAu?!wdfaG(qcDQFklaZtqXVnt#}_{Y?oEk)ctUJ!%P{HT{?~%{grA zRFT~h5{j&%{{Yyrt#?LHS9MWMO?3q2nLmyQ^N#cQ(VppXcciV638l|vTfHb7B?MJQ zW|buL-CQ^RZeUa&O4CER=5D6T@}nNfh=r^qxXg+ts8chht>=UuZc=ROFa9Qa*}*7J zWJX9n$u*|hget%3pdgx4!vJ$qeMFm4fAK@L-El;I%0fzeOSlrIiCrmLAD#?z4mVO4 z&XnHeaT}J#`qDr4R6?{?I^+>@@)aWsZ!+~oKYcnoqCh_?dD0VhOiUOk)RM)cIT~i9 zk322B)7oxLIUjSpyK%R`(|G$LHP+Z1vZB7)d1*{Kd8az@)a6kZRQ>dx=Ve!(~T~(>XgCWE3{&fc-&$Q{|Z5p%ug9oGt24&ZNiP zJ4&_Wr7@GRZPPVWbKt*M{{T#*53`0GMBLd^?sLf*G!eE=Rz>} z=N>E^DqMZm)C~^+`JeTutDeNRK9z^tW}rE^0>6Nu#F)A18g6RB9_)Kcxb6esYCZc7 zI00Ry%V<*};hjho#Mbj$?p;#b-G)aiTnFJ%Q}!~TVzH1%!nOQJIGWC7LI)N2)cCug zyH^5!H6GoZKqZj1E0Lx^c>{;z3;2LfA^Q(M*PFFnxi5^;2Uh={L zkPEwS(ibpm)Er#Fko^g($TH+QmkNcia=RMkrSz1D#lep59^2(Wc zVb-;T{{YI6P#e;ak_Ko2%$&bz{4ppv0koQJ?NY01G$u7AN*}9r1!K}l@#~N#fwyHOtR}wjwLb&IR#5@GlC|S9@i2sVnPO6MSd8VAqs?Erh9BA!kS5N zYgTeaPGI=q_C>T>q{k8qSkq>?nJYjxc$!!L030|Y-BJWmkO$|etBdqvLmD?j)O<6; z&5Qx!l{PF_gmBPQJl9M&6D?3=N0;NCc#|03G!c$_Fl z=Tq5^PNUOIq`i=Txk_{yRMNDjndOBBHN7uV*^b_eOlG`C2Xc}RLy^nFK9$0Wa40mX zG2=O|^qbUVm%BkgXojIp1wcJ3u9$U<8j*kFRt?2cHxE@tyx^-czf6T|nDD}b8S|;J zzyp!u-c=a)vMoe~NUmp3kf)Xntc=vwG>8G-$ zuKTwi{%B|ga;Ya=u;4v9c~izst_*IJ5i*5kEkRN!GOj~U!wDrWI#7P?+ncR8fW)Bs zE3UcIPmUw*-}P%vxV#E}*R$m4SbKu7HV06Y;6 z79KRqgBs!i=|-SAD;kYz1rPaP^w(N$-WH_U92(bh^`QJeX~0mPbg){QSGJZQntU=J zw;_T=_)+g0c7a}E05uf@A~mP^;3z(HO$BXgJYL%-QFS7;p~6d9b?ZV`IJp4=hBTF2 znABu+IpRCEH&J>gNf2r{(&a8@lWAatWLlbm(P%vI)7;ajMW&kQ!AHgwuW2nL{?e+)8S*Bfb2WSSKvRcZ7qaIN`> z#8XAqzBLCd5iLX)N{u7pE%Xt&Xp_8!=*5;V4aas`_0-bDI~mkOkN(gpzMy{Y@~@WX-M3U~AomnmRRg+S4y zzO8iet|X2zjw%yMT%0UH>c=B#7VdJ?9@`_26G2g-*T)9VC5-X)RBQ79*^91?f6m0$FMur zzjYw|t=y_A!j;agk^CuLFzCc$`o5nkl^-7nadoMW>!xSTwiV0j&Y9?Imbh@@#zHqr zd}2fbB_kw^>`Jq-Cb_jw;fF+Vv?5xZV?D5h1o9L>@*k|ILEu1R^1_SuSS=pbIo4IA z{oSlW#_XpeXmtEAg2Lo*(v)KJ3MsUVH&<%|^Bqnc2nB(s+SP56)Z#05m6X&36em3L z)N4#K_W`D~)UrnyLG@Iec49{WE<}nQdW~y{a>=(^fc${gs_9oQD~(#J7>koY4$(^K z)21o2GREIYM^RUHkQ2ta=OfAu&f4nHIG!8xQ0%Fw+87FwIuqmm7|P{l z?otT`vH9GSL~a|pe5&hjz+A}Tf(2TNjSoYWF-bmPAc9oZYa^3mBlQ(2S{E0?6^sWX z#MD#@{CqJ(Hb^$svH6^v3yEkyZ7Oj%_KXdzHrG7qPm#no$k$v|L$dwPtR2+4+k;T9 zNv3%W69~}Le&|&+!e|v)On`t7L0ajpD~H>+UbQi^7qe?es*`_g3Ze>)4JrHj;ozY8 zQkvNZsm7xxMv&AJpl7&rIf@>XHN=pee(ITy<_}BynuNTK_ZYVZsUHmMnLb_^lMrDe zrCY@2hJxJ%R(T!J#ub@C%+Q>PuTK+;c*AypE-L2`nU09jRGw1!2%Q=|MnsS)S`Usd zaH9aU)|(3z?t4(6TFiM%mtFbopfvSkSBlW`0&CW`_*m>w*0K(I?Ta19c?U8*U1^PG z6kr4bx+f6{(UqEW7wCeK?cG9IS1+Dl#Brm>iABY$Z-I>W6qo5*&n_qTB_yuUbs5(# zxVvE5)H+tO7(*fmeN@Uo4L}S@$$mfQTs;}^`f5`Hhtz-yNp0?iY^3Q-#$UT!I$Yj{ zocG~ftu%B=82(~5)zs;)hv9^Kp|+u@R=WOlW)V~+HXenI0Tk*<@xh4-FG?UJ4KFU; z@TKE+j8G_X(5+5d9MFEMjVwF8K#Nqw zZpyob8GJIK9yR%5IRq2}pt)CRuu69e8CU>9=bbd^op8*J2T{_aJP^_bo)u!Ye`JPJ z>H{Vwxpl+`hP%=LswtS~`clhNw!DOrI;)UC(>hnCn6G>w0(#YMMiUs_;1KGR7ay1c z3KNk%J~?Gvu>sJq6)R9ZkmeT~kx$~gnm14$x#&(*>OUM8un}q-@uQF%UZt0snQ0z} zDx9hDuRt){pb256SHFy5^%OK`=Ol?q)aG*Q@cH3w#Y>Svyi)Z5RC9LrnWW}L?)yL0r^nVRx&dN4OIh5 zlkm&K4(rm?`vU+(8>u3)%KL#70+i@=!QHmjoZi^R-Ay-mBqwPV^A)8q>mxIOx|#z_{s45vRJ^=l-jafl?x~9i8db*Iv906+tO9@r!`H__*Axxw2%jVkQ^$aDb0Wh09H&$n?&*fi7tSa;d6mxhGxEK9kh{0Hsbv+w(SZAp=q1e5v7z z_vdWX-l}EgqhT#+sp~!k0aj!LWl^-B*_Cs|8M!Y>9eir5CzNqJK_kws7W^WOyHqck z9y;QtT=^eiR8sOqQN*Iul5qP7F~}=g6$3MtzIaFLHn;nUOv#@ZZQZz3q#Q6gxGkMX zq44m;X>&vFEGn*EMXO_TQxI_k?J+_~QU;n+O5zjqTX3~mE_1&zH>nik(FolisB1w} zua+UdC9eypsE*6sp{W=xk!e6_;6*9&&n!ikB#?vZsPj(ug;7#aLZzui16 zD5E{Kr$9e`6S>2!6Qp_2(L{=(fBNqSC#m9StP2+5$n#roSu?Y3QkHP-MdBepHyd zhBqV=xAy1dm+!)aPIGOoIC0%2fGbR{xfN{#fnJ1waVjiT3ZANy1`FG$zu{58)dIB( zI+3PlU!En5AX=n)s%Pj+!ng`6@*DCl2s&1k9ZhI@;mGk^3YDX7D_fwjsL5}N5)^?` znfM6T95^vT=t-xd;>dR3I@DA0v>ui^gPke( z;o*woWJ;XeB^yY!662m_jBaYzA+(Bt^1|DO<71$wA>u%BAZjUs^RdQvI}#{$K4T7k zjmM=*ZyNRVif1=38ycj(W`{vszGDuv42IkgYD_$9jf+jH66c$iJCq_r?PN)>)lF-O zQDASm7ppjUp!i5F{^b_;x(?M5vTx3f;o=XTC$ooZ?v|$^;9L*)+CViDJC5o>ws{A) zl?stkb2U12!>5Zef7=QwaN%+Eh#zzK(Ek8ei~j(doi}}7^TQvaKhsM802MF)06XfH zvNwI)#+Oo=*qMXJ6ni&D7wUN2xd4`7;fl6!aX7WCX+eK6@bRmD8@jnpI7uUp?1JK2 z1AQt`yLHW+N74tS4~=u@-rnu8?k?TBw|f_og)Up6pn{>||Be8h7 zxc)#$$pDCh(Lnw+pypg}87Eel3ak+^~UT2`x_3DjY^2Ii29QSuSZaM5e2 z{@L?FUu8oPBtG13Gui>#I?}#a=bX+Tv>u|y^}@T~joG=*9)|))%D#j41^lKsl#r@p zO|4O*Pyym=PnJ0+DUJfWt$7o>aTwP)gL>-D)twKp4(DQ390w`rG*%na)U{lyG_E=R zV|@=c1YY5Et}!WgHzO3F0ypSfTBFIps41dfq8%#p+;$=}D#Rii)nsM&3&^Ud7B>>H ztce&qOKJ|7tmASVP?ZNw5lKEHLVtx#=CE6dnE0{wppZO*;^(892yk(^Vkkj$%N6KtK@vK5JZ0_alW##oTD>2H9Mar_;3!6y=#>DUQ?Id3zqm5~=*_uJ$f_ zTQePy{f+*k>R*t(eCO|eIc;uap{VyAWKs(-VO)l}40dt0ctn=cy@lI3rg%d}yFmuP zC1pDlNw5&eNG#OSndp5~7>Y)ww_Ay7kdC7i^*l;<2P$`IKs{CS(+!ljjS~7poDhzm zg%OpMih8S%C@72UF^gaG^&akH8a$8Dlpk$HY6n@Y1#&(?fmLW z#^KfXDE7pP5ddt<15-~ANd35Kc-rtrr79*&OxTCiLalY5+b(1lR`&;`VxiqqN~l^> zT#h-yrHOlFr=l;NPh$l1>=RkYz&|D0gUt+@FP7`R*BG zNcL}d1A4N+yPDj0QQ^LX5c%GtU}k2NYonTzVPgcZQeD1*TGlRyyq zPV9)t<*$ZEsljbuSA`A12m<~U?W}5|wH|u(r_Tu5-Fnd|9_Ge5mTwbw0I4`c-MuN}A+6aM5XLqg1_?jnGwr z^*4=3Jprd&7sEC6?6d)4B(uipmLon(T1p9>e*#q#QZRb+Kuy|;t#13ox^NR8PE_0pwnKp9vFB= zHz}qhoHx=nsaUv{KEXK#6^e~g1x}!N;l{=m^#%FBZcRZ$@u=&Y86t2fMSPBVW_)Xf zz7eZ+sc>aBR;r3%%IZjALt1pm<&mXu%UDCbLZ$9sq|=yTatwxqp0uqisM5Jt4@Dh= zsfi?L^aZOum8em>Zgj4B)N7IO#m+Qj9o;I6DssDOZr<1y1bS40)ige;9VmQ8SiFce zp*q!Uv!EaqB8z;x5XyZ!@+lr(S@h|Lhff+-E4Mf>-83~^xtWQmayHXmohw{J%^)#q z;wAzv6dG5L=B{j|0cCxssu~}{xW;l=?aOK0h17H4Hb#=$JFU{TE*I`6BMPcVaPuO^ z?SU&6&1kCCHLV6Rv+%gG6p&xxRSe7KxaT-FV)mtji6DFsi`1RZcU;RPhu;qjft8_V zEnVsdxF{$#od&pzD&@HK>0L3FblY5B`!#-7)9&fzt#ok{i$rlDlWon3LEs1D)56u6cYUJU!t(@y zktV1`E=z(4XKMN0`%dR%$qeFZJ>zzVXgii+!=GHwX;@T;BPkCjW>pnAIJ>mroQ)YhbG4p^55 z)M~nSmikSKRi@G}QZZfBAb=}C4rfeTu}KN#R9P}3OH~%G))1t#K@jw#%a+6jW!;wH zQltBMKUiQ z#XZYqxDq&0Wnmk7P$@c+4~1}2WH{qAmX^4_{-Q0?n9cyWyPMjafD{WwKt;__DE zwjQ3le3q)bp3XHPg2MgTr1vJ8z@Pd?WpGiIhHB0(LVYJBXcr%fuIcYhtsvK4`#l#>3*+!b3!9^=t7H9GahtZ5rIy!w+< z{A#W7Zji}g8;aWh0EWMXRrv{`-$^7;^gEO?Rak$mNw4FFH?FQ-y z%PqyQHq0@G$x?d zxL)86-nCZe?r>v|s_9a(Lm(sr8WJ-tu2rbqDlmy21-xoGN8B4x;WF=N))67wCWG81 zMMY^^E<-9|4-F^_fc|uB4hm!SFF*3_n3Sz~>>NtM)58+OrAT}>!_M~)N$K0=ys ze$Cd{xACG6bZ;cbl}ic(Kt@{m;E3oiL^cs%Nb{yoIY0vn{Y)HEo~-&DsfTtFSFK19 z2Rm>-DulX}D=TJ6C4%Z$b*5Cy&k`EK8kJ{{5!#(MGnb-DWJg)$ty9-tAHn27WRY2elY4WZkIJ8|=DH2Z`T8>K(8oY3QyFKiw z5K1dI<~t$$z;=y*p1-pcnYqFSIqDL#9H%i3D?P;uG`^m7(Vd^z&c4#dih%-<3W7?V zRkhsJt~vK9&63hS$@ctfjrSjPwcDKHNhij-GqyV}K>p)IH*BB)?F1SIG!@hF#vhU9 z7+Q;J0ga+92aaXD-aRa(l(MSMm;@WO$IUp;GtHun0PKO79=fVy}`{>aKrE&`3MYS zoNcH2YQHMZ4YlRf%%)pLc;r@SoXUX07!?elKdDJS9BGXB(6?Vu*2n!T(%qlf+3`ju zn;UR@JtVoHw4E$fe!$k1*uQSxNv#^ZEdvY(|{Yw6ECWV?sCN3`a(=o{hI zyXRtl-n#-u$)6ivE1aZ|h5VHl45$Rb)C{ly*$DezT zxSV&197|4%(!E#2;0#!s9^X=5!^*ouvwLDVlG}0?B7uvb1z2ReX{rvG;oR3O=a&#{ zwZG!ALm9a*T?xZ+Vi1Ieb5G#{fkuPIxaV29e&IK@Y4M=|Y3em(mPEEf+kgrxp@`2- z)Tf3kSknIhGHPKVwl$ge7cS8WibxS?O$`oyIpjS2ajD}lLyK&r>s5IUa}~>K<<9i( zhXU;j1v;rT&sz1Ran`sV9fxbRtj1>|V{4q$Lbb+y@yj*qO-6ILk?90wTOJX+#+0BU<~a75~Ala=kl_LjZ7 zqafI{5%aEi?=QCz+1j<-5X>Dt*(6xD$g;>;v!k+wKnF_H;d`B;JB<8elxO|(FCu6pFH4VW!OA5aXZ)Su~fG$X?u9|C`L0IJp2u$XxQcWw13 z@v0{$$sz!XYf3BU{71y&X^j~z9u=s;!E>&9(~dUuB{pY*J;e7F*CgpgMHf|e)! zE2?{D-8tKMJ*e7eSl8Y35YfxD0xEWvB~O^gALXTX1hNO&i(tBsJ$_zQ-Z)7koCi6_cfkdDubRsL03VX}vQ4dRgG-g>;^(G>Rc3y~Sp2mTR6ZaeIX>x>k-3?r~`<;76`8GWGlFa8%olfi5?o#gA>V)K}RH*^RmNL zTEF)9a$Q@_rdOCpP_39JX#%-1r9C*ML>}N0b+8;Dd%|Xh)&&s#Mvtqm)V?OBP)yKnkMZx+6gYu1t>hz zs1>&x z%TB>LjH~P_naOc3!jIR=hix;`paF~gT*mrKEJbLrv)a(D8diPEa7x6ej1ox%=0II( zp0xuSoIXv<>e99NJgEnBkEg=2-fy>BCV7I!N|4Bu%BsMc*1ZSejeZX#TmUA-Jjjm|gFa$_7Qrxw15t?M8q{KtgHNMuc9u*SPz3PB!J0VRf_;Ke0F-iRyO5a0%$UJ(AE@x~_}1eWCEQlH$nnw@VEUcjL^5{7RaiKR+ajPiKxbmNV`(& zR_%BwhQ^zm+ua1w1El(!f+y_C)R>6dh`F86U?gVb;!1rD}Xx zAR?NIxv`Pkz*2-Q1!zG7G4$cY-ECHb+_A45{c*gv>;Ftm2J*FNIM60*9WA{rV9WL%3e8W0G_oIh~;Ru{0# zjKbHKUrU3kS5*DB?ib`nIQ+*fk&){DkOBZkw*y@VTKb>%=ewY|irty$zQUAJeZA`5 zl0uDh%9!$Zaq!Ya_eL*tTJ;YRosTmb)|B*u50!L0JewGiM29s}A_Ykbf0~u_la6yP z7;A}mP&)Kl)3N%o+Na^;QQVc|HsDx=2uO7mDAXlQGdki%EC_cuMbes?-jY1N`sHuB z{8;38`?^4~NXSv-kS5kl!B8qqMmoQ0WSDYVcObQ4IlOOv7qozEe}#M|`}Nwt(mRir zv^1{gxsWXafhOivs3lJAawlAS)3Lcho5jO1{*VR#03Vfk12Yxe7jsX9;-StDAN-xo zaUUga(Oo#&Li?(6$bcIna~%#?>kzyc#qV7&3Q;5gtx6x39a;0W{2 z4u>?@8`QM~B_z?%voTimlR;fbI#>4LOW?HQ9Pgl5DpFqB?c6F!rbN_dRnsjEFni8` z-i$lchoyOvfDOW+fWvN7soX2#4hwUaVTNnHq|63yvn1yociKRnKL(*%N(X54E> z8`KjKJHHN^20kR|f;wDM2x%zoDo)bsdv-<=eN-+qsT~N!X;~ZnDQbm2JW~P)(@M~L zd%W(fBxuV3jzL)!jRgpx%oCZ*6r6_=%%GtwCCql*89+#YmW>l%I_M7F@3|&|-PS@F zIZ^|9fd?>XX{IoIhYH3>K}zIY&uX$M9@ho3`BwAWz3`*jc_nZbfK{{BfKg3GeQ|>1 z_+qXJ=_a{HFWURJHLV2rC2hPXdTk&``<1f+*>@c2T7z7UF+7J1){jGLneu(KQ2SvW z)d8(TiSG1w+be-xD#TRNp&mHQW^qI}(hAlWknQI&s=@ewtzPUo^_gg0OL$krXPzl1 z!7W=_vYC8KqdSo8t5h7MO+r{4sz!CwGhU-jaa{a&HmKyndj<5VDDGpKXhMo0%`D?msZ z9Q3Vv{x~N{S{C%7knj|JR9EAX$z7vQt1QJlJZr8Exld`awHtFJX;MnkCx=0x00CVA z6{kv6>4!g7o24B%h}ck~?aXe_kC4n91IVX|G?Sj;cAK7_RFiRZDnf!u0gVSt zg+b3x#|Qf0sd``Qyh&fTN+ah0k#@)qtAK^_O zg;W0krU|L8RnoQ3sKT4cJXpH*A)J{PT2J~Q&w3I70MGyw9O%cU6m#5vHL2h7j~YAi zq|XSQY6xSI0-}`DQKk}k1N4VlmU&k-Hva$`@ZhVsJwdHNAZMthbJGhPjjU*oE|+Qe z*M|a&{{W^~`KT2&q4K6!OSva#)9IpjF5)cUEnYkV9O?#!l+#~MLpoCiITz??hb~bD zv_H^e2XP=&Q9_Ms4t1plcpv1RN(w*n&(o(`FZ3kNiCT573s77BgI`4XI7#3F@?)aOglGPL(8z=bcZM92w4bhL$-eEy<>@ z!=TMn(^~GQ#PzH1& zp!sA7755?hw$n^g945+9(T^Zx)rQ1{$aG_KO0B5STgrYte?o@&z@lAI8z zTc?Fqt~i*UrWRV%m#uRhM}~N_ZcD%b=~poF2kDR}!m8J{Dt98rSEX|#(=34KF=dY{ zoI!D`++3H0bIra#^{Q7P!>WcSV>Jl?gS+;MV(%X*!NCevpAVB3Yf0N#=O<#J*cf(< z&h50%N{)vbEG(xx)CbPB_<2$Q6su1|;Z(cJK^yKRlpPHX27Xk_8W<$p)jHOT9&+}E zv?=~I5>g<|{{XAuQL?z75HISLIj(zv{HO1xFL2S-RwV$MQnl;TuUuF%2WkyU_Cwqp zTz=|ilH4OPY6W(x*DZ6X>7m57MgX`&Qe7M_Ky{~TE(zQu+_f8u(;=6YG{V4Vg-3CS zSt;@#P$8CD0_qC8;?I^vGAkTsYR1{~8L{ELUaL>TgO#c9OLlT5&Z&PB$-+LuQOM4?%X<#aPH$A5!voOUjcL|mG|A}zdDJz<ncN03wddjLR9>R7|Qsf?4Ct9zSPhLy`)vmYEd zy+%B)R;wT;wF(Zj@)}^&0b$ao#?}WA@oyBU!#stXdbfphr|rQ7HX2mH z6Ijnqlu%EeXCq3Fo&%gkl9Uw`bffz${;j_-4w~0o8ib@eO@$q;5s`|~cV*+JPcJMj zui7t5X^j+`PDmY;F4j67z#(IHm{$`8%76n^l9J2>QnexJY>m|RP z1CqmLpHK6l5jXyvO|MXVx?!?V-iNsu9-~fH#%2N84Kmb!$Bq&1#nh!R?52w}-j+)+ z6n#XsM#^NTJget|_u}YQknEMZgzHWR7jRc_w>w8)9EN#e2O*&9l+&}I2+}|_qVV## z&0KkHI8W+S>M66yMm;6LK2)?^JEzqVdifl%)8^cDrX}QKHfxfce?@1Y{W0m#f@*(m zm}~U_FRGgV04UavuAfEQ#C}^x?dO>zJ#wZRIYaU}O+=HI3%EOQrz5rqt7xOB2mCsm zHga6L-kTio+p|(>((p^UR3nf-h%TA<^&sJcmRL^W6w?xN$LdfIg-9ORmDNayfGIsdv?*{6^QV#a ztcq2ok80)8gU32~Vj<3i9i_sezn%|J!ltDMYsTssBWi2uQb9gGS>dN=F{edB}+h>v<(Nx!^7%L$wr|8qjC|04y!Jt?Ck-gP4iVM;ldQ=Zm2tRTUMWB!gOM zkl$FIS#cEHJrsZmL#aw zwQ7&TwZx{M%%ZHBkk-k#+M*`1bgMHGGt6sRbssD}9rf#049gGGtwUUZDX@}y?i5k} zJuxW)CrYw~3sjL&mr>FpGNJIP@c2_)Nr}p8W;6Y3)}kX&Hv;8pQ(Y^d(zvi-4GXPL zB|?FJ3PNZ}AcOdVJbZjGWRr1EvQk12lw@NPZOW#fv+)=L_Y{W@aNHE6O9I5pQ(S-s zp97an8dL27twE(8n@&jEdS{UM*8q@8Q)Cx)K}PoBIk6%2s5KrRjtL#%NiQH;;*22m z5L_)f)BH&oGC20}%v%@tak_ftcV8dt>Yf-VgTXt$ugw3t~dw!1+zt!gP>*f5hQ zZidwObZ%;otW)LVo@yy|%;a*ZAG{ijGW>wciiUDq3YGa(t)~Ne(#94tQ!2R!X(VNr zTvtiSM!-Qgs97AoBypXj7v8kqBei5DT*QnGH5rV$gIW@CoX_O|uyyMT$oB{Uu~62l z!gkO`R~GR(8irAyhE%UiWiq)py+YO#ljbCpZQMm^Hhcp)S6G!Y0H6Y&9I=_7IaD~6 z2C+F@mcm&hm(H&oe-m&518?-uDcX8?`C^(}rBY4nGnL6k8d1QlXdGV;8EDw^-J- zCoH`G0OyFI`<>tqTCJ8%a&(m;WIE1!)9Uxp<{^5-DZq_7o7 zI{yG|Y6|0dBr9z-%pZjgSyvKB8k?H3$JpPjEkNB|q!md83H~B-HLha5Sd$BE6fIgs z3#E4WzMl%B^O7K6a895CT7-jN_@*=%aThocEn2=XZb<#I2&~7L=A$vZbqwTC5JqGX zLJl>UxUY88w$-=exaTN!^{k7S0ZS6fy% z-+GER;g`g8%;5JO8&cX^152Djo|Lp(pvjjZm46O{%|?{AXDfc{cNr44f3sS6 zXNH`5Q!j4D+MNyRcCO=G*F7txdT1~Ka-kNe=U@u@QahQTa9ElX^7(wQhejL_QXLFa z4^Fi#FJ*8Wc>s}!PsRfE2lUKrggT_H?{=tfbJjAU%9>Zh4LcWilWHbLGhF*O(Na)z zGZqWE0+C9V2O*YPVmt8~Yz5Y!OUJaf!2Q%)j$_-E54dYudUO;z>(>SPJ860-c*i-U z04+;DalXnUfI#b9^3$%T1l&Roq)|u02RQqK(@jr5dm-Aa2>E!_(=QA?`b&C%N_+f9 z8v_1nNv^?D?>P+G)Aov2DjYc2$+JbNZO00&78HS%DmJqb=hyb(=EUasQ;lI=FHT~Y zeojR{gn^wi%P)o!_=(p_L*f9f@2xxz0vfR*xmQuAOf&6|l|+8$y#;y$R{kQSihwfs zR=Hsg1nEhYj!O%HQ#RI3GgV2C(~$8M)}I_F>1iabK${>&)FDdL#g`FrG?^-}r%{NK zWi~NY)8|IklcH6E+qN#|sGt@pjGKz%-0xKm-6N zKO9G!mtl9L*i~el%q%}w^Qnt&)mX?ACPfkZKn4@j^48e)edl4vMicGiAgW>yv6 ze)^lR?RE|R$ScqV*Fj8HPs+5n>M2#3eAeaM`}nO-4%4*=_Z&PZmmy~OQ6Zq8h z97L=Eb<&+bW|bOZESaqb#;YHl69t?%A029X4k=Lw<djEVBc{_F8GP+-wGv#Agd7pdRlnz~w=&&sl`Oo^U#2R|&y*AK^rHy~B1 z5nx8*fu$-fxrmy(r(k?5uaz^dc#<&)a1}gp-kUd18jiZ>1Zu?rW8w+?PPt-ZIQ_%Y zt5b2f#XsC0gs5ijHKTihO$MOmF)A)PP1Y4Z{4i1Nhd1&607{O2;EQ=E^yxrqb2ak# zVr)EN154EJ@b7y;AOTD!?g)uBZOxSq?8OhBC5|b^hSo~3_>m;V5qpRIKKYf`=Li6xIY(pF|Hglp>Re*t zz-ZK2D-Q<^wog+?z0`I1{D+|*IHmOedl)O>Nbn4M3JcitV(jwZ0^FH~>Sjl*lu5I_er zx}z^De%wQlAwi{T450~2{jWrfCiYU*3Tav#m>h$AY3GEcyy)BspO(Qiw zNy|2^XbJN9VZFa~F!sm!jk^3RYWsJ8?A`=-Qie#(iaj}jk=@h+JaL%r7&peF!nwD2 zVTm#K0qOv!!oG+7xa5N^xvoYa3ET(-P^cgioiWBae0McK2E2XVSZ-^c2CAru<6VQ= zv#hb(x%D6`p#Zv_exOI=j(3?68-gMJK34IsJo60pXDSVr)wy3o4$~H8;!c60Omj$zZ)s?tE{-9p^Migmt ziLqG$)sFgs3KT76UCUu2{!GsDNFo7Yjv^W=WI=4|Pg;KLY&fi@IJm?Sgn~)xPf&ak z)m0G7f=Kb^Ki-Zo9NVjUmXLoiu_S5|xp%)fblY$}x2Z-adX*I)!&VeEIb*7Dd1p|T zuCv+nOZeC7MS+u{rP9w1^@UE7pWj$70#^w%@;$9nDjpVZ=QcA!_W zzi&BXHYjVraTfVkF-sARocm#$a}D{_=cOw_QHkZdTtL)xuHMNvup^PFr%G&4l3RAi z^<)XogTx(ZaLbxiQk@O}Cat4JjLN&(n;3=_9*}b%5Ka={K{Q3%UUuq5yy)9xkeagW zLVZ1126SJT7(xV7V?epBx*f-_g*kzNV(XsbwTxHMN@wAi7)c!|iCT@?>i`Y>YjOL3 zdazCvcLpv7qzy8l^Tu1AfqhBP*D&tvXG<3Is(4p({lDeZwX0{a`UzGflB#L|@dq4} zm&OhT+EQwb%Wteylo4bY2^sbZ8X(Yo0s1vs+}W zu|}ue&Mm52W`(>7&l_Gdk_F?`Q9SFgcK32OaNOcsw@_=8JKwVBM|O(b`)W%Wf>9SE zRW$f`W1;cfj4}Ynk?vP~?Vja{%mPP^>0nLGVK-KC#U_lDlVea*aIFX%sBwA&McbjS zr3CDeo+O17&)Xro)6A_Yo>UcV@H7ijcU%5cD;QD^q; zgHnAxawkkAfk;#LP;CkthjFDJp<49J^sWE^3O&TRO@$L-J56fY3XkQ}Y4fHNvh=;+ zYeG?mf}*`CPnHtqF0@6#!i+ZqRzd>ka`|b~07d0VRMT2HT7q}5XU>W$4tg4lg$@$v z!YcZxgN})6E9k302hC6!B=tIrL{Gv6cxe?0^DgtP0DFU4g!?~ z?g!G@W-Fhb01edz5NR%7DmL8doqRBdH>lE+yQtEh+S-WOUK=mWb2?RIPMXD_G zmW%6GJ}-s$BT^Kd7NvI$+HLT{A2HFUvw6IZ$D7@2Rp5ID{{WPDL^dwzArX&CiZMMm z70?gE6&bv~HXA)|8@@GB7x`X6;hc1DaNVzmnN<8K*Lr=hx#E?pYjDtl0^CIr2**sB z!0UqIdHj6ag4VzKNx$7vCuc3&*&8_k9gcrG9lvk-Ru9N_{l%1$2@}$fo9(SSQ^fqM zjRPLXw#U?KMTyJ9lNj0cJ5T!43tM(p8I}ZrOtq$Z`DKZ*0D+>U&p2>VV^*t3YZ%Gu z5QCpn&}Xd^>qWJ~L*l(%3MoT*CZrE5@s3{OxUVO6e~fRF;zMe&d$kVCkx z<~arjB?=8He5r?kRP(DGc7oy2wNSa0NqWZ2NF)G2u6c~e%7YLy9I@R16`+NV32>Df zSc2x7FQejf+m=~lEhs7Tsh|SiGp#$fxwwhrWO5X0rHuhPnpZk_;v|u^_e<1y;Dzlh zBh^-mZdkgNB-CU{O`?_PMrM`4LlcC$dTNe*2DGbmshF4!DwA74_O=rqI5NLhv7r~mT;xWNj-4u-&sp+D&^7Rbhqjf>3oVoa_kQ!Y z+MjyV%_V3}HrG1h^NgMmC>Z6_$^ww{u-fVqpcejBis##y>~HIv`p#=0PP^;NEOFH#m$Cz8t_1IYM@i` z`;BsEy^&`7E*nmbR0O5I0?ApQE?PD_;~`{3NaUqfP=cj}Dn&u-hO(RtR;?ZY4rtmz zEhR^VKr$0E6(WU>L&Co=9A;$t$@8mi-`e#HrA}E!MRu~2xYUIN0pMw!aP$N(omS+( zLPe6TRsin`&p>mGfCkY_st=Yem`DnIDvL0*jmTH6Y8|$gu=`h6Fv)Qwjrw?iRR~G+ z`-g7n3LR@fhRwvs*bMi02OGAf^Nk4dg7AmnC-Mu^Vm9Rrurbh>owTO6Jr9%jBbM;vlA zF6h;yw^SRHuR=b0R!iJ-9^H-`t}~T;iDgtnV)G(R9lQSkxTV#-vdd2#@uP-s)HJea zz#y;uN%6h@`o_hN6j=>!B+`xXxk`GYCsw&EL%foyM*jZlBXDik&R`N zxwBWmV!^UGJr)Gp>?whXixj`7na+04Q;H&!pa!cqaM@g3%WuhCUSCQxWrlMAEOHMR zjL^ou1cQcL1N}0oa&)WMCCJB#vtYJ3qdi>E;+_gciSim%eo&TjdrE;305G$&Gdc>> z+)=uOVyh|biKE+UG#yIbtr}gD(<_`@=Y2?)rZ+c>JnbB|{@E))(T%al+jkQg8Iep= z9)fi3P-L$33*5lo0QGz7PXEST{i9@!f{HC2%R0MZ4Sr+r#1 z>?4e#F;gPsB?z*tnUXf<4nc-Oh`kCnsDhLV)Br&djc#zjT zTn|-N&m{XxTE`ZAE_`>J-Z}Lt1pECAV?9 zRA3X*HK;k{jw0KM^&#Gks0O7eOti#;d@9B!Ip8ObwNt#E(N>R;ELCY!>NTk*rw>Hs zD0+VizQ>7OijV9+-+sT-C&F z8)>9~)MUUHBoGE*kUD3cBA2wN=(Qp;FQTPM+1Ol8)L2}m{YVw70Z%hrLY8Jk2_~TA zWy26xIBrVQdwa9)uIGdmD5R;W6$CNz%9RwxbCBgDjyE`cUR8g%wf&~Yvxn<#6 zd1C{g$+)$^6s|qa_Z!|Ej<`Q{Zd@;K#|TrfsM-c#WW&Q=l*U&hH+dIRT)&d$9U_2r zHKg&}Vj?Hys5PlMWPTlLF-wy(+~QRERx>v>&UsRx)s{F`H5wXJ0tZvlr>Pi#TnY24 zM@aV@4~;Xqm_($K5G_S2atElVo*iUm;+}$P&Zzpx*rw8dxfnB*VKKj zSk3n~{Egzn0f+#1$yOnq0I7~VzM?U+gBSGiZg5_TGy~4NPiS!tgEl#By`H2!LLnZ1 z3cq$|1$EA}GesPb#VhPFPwQm}`o>nPwT61v8QyD=hmUE2$8*5x=i}#Iwd_6{Ba?_4Ke5L<>vnYxa0r=dLQFn zpW^sNhKsAk!uWLm0DA2%$L*sM#!VI1Xlfuks690zzfL%hJ<9JS6#(B_-0_%hFAjKD z0xexB!EosWFrB+kTCTZ`w53j1<~g}#&u|2#ZQ#di0)T?9idNn-cd{KublfSau7CLA zn1dsc7N8;P!S?|$uABAH#( zuhKR?hM?0d^v6!%cvAPYq9tWHUQw||LG!=eT$9~h%PrNzMjUM=fduYl+*X;AH3J=k zisM@xV3BcL<2#Zv1Gdb)W=+P)%1%}$n7bMRRBTgHUVwEg*TWiDQ1f`#O5!%CtV_H*dI4t8#$b|S8JNflff|y)Y^K#G z#<(*ul298ZWBGm>Cu10pdycn|U-cF9f9|Alah#_lh>@&!d z3}9&&t^PhBiV#!PR&EmNM+mGzVUPx(6&ZjIg|PIEK)-cTa&R$+cb#lqvl+O!wSODkJ7o@pr< zXPfhKUF|ajs%#o-t~f7nG1(#W%=C?=f09+}d;2H1Gn>KULdV4L8oP(M-$>Q1QKwLK zTHRi2HGv?xjoqe+nW0*c&IoTyQy?40f|%!_vOZt!lmP3|D?Qzxx_oC77{%p1*>axJ zKxjm0JykmW;ZmsATqpG#gE6*MVrwSl10_C?0MuMjN}*1-!mBb)u|>#_aV*o$=@ zG*L};p(EvkJllh;;Z_iLIE}!$`kJZV_9RH#lHRVUK?Dj?xevz{F!Qeprd<1 z2o(-0q@Ihf_+wXx+%mc7tA3TL#O_>+wO8$}XZ(i_*0VWWQ51f&#Caf--(kxZ8_jyXqh@eYl|J}_Ch zkbJrW=Sacfo0BY=uufzzXc9#8yJ;k^OEjA_fT^!a=q?bzgY^aFBr$2?e%Jmg=>V%Kf;(<9*!h$lC94IUCS!Ab`=Lbn&TlzgTVH`_Lztkh?1AbABAjz1YHs7Ld8fO3c78jOm5ys!6pnM40bfeldbh&psaA^)QJe-! zP%stqre?b0lP3+agf}T%^DhNGBwZ@qWqcTt%mqLmL;z2QxXol@7KH+{nK;B~G^wo;7Q85R-{uF__yl%e!{csnGd+&5dLI z-NQq5#yy;-G%Cfdj>g{$gH~w>T*Ig%Ubx)wnes!I?nbJ9tJ%ZL=U$89d!LET;^M=e zMhwGnZUYpmcwa;E9V?f4o+?X8EJQfaPwI_Z6J;R0M50Td6CKJ zW135Pc-3`gMQt~ZhJ*@zJE%sr#iN?-wkYbda~wj8I+S!-BP_IL+w_5{sL+~p!3Vj7 z56jfjTJp#3c8je?&1ww`0kmXBV_un5jd1%VB&S}LGAYQgsOfD=u>nX8nAk`F4z)Sb zm{#E9>MK)Y$RAaKtrxI6hU16jVY!ZWi4?_eBQYg5ms-65%!L@rcOMlNZVQ{STtTK{ z&CKCB2=g$U86j{EO&r2T;C=%2^_T5$c`e0-i+ia*Yq9zY@O+8U!pU-Yin;CZCEvq=L5GD4*owq*d!gQiEOIF@%G?Mzw+ zqjLP~u;AskXhernDgEalRUg(W$a?FRN3OVy9zN%K29+jRhQwPXWWCh!+#^&Njr9TS!JN?ggtYYOkH9;auRw)r88~s6mk=$ev zSoJl>tv_q|XBZ9{HfS4b%OAR!4uduhUK6p(SnFyPLGbdgmp$ELV7{57Pfq=;KokVm zG7pF!vmTV=X5R<|`h`2&xnAZgL(S5ujEu{h04e|kR+@D1BP>|8<*rlKw4um+X|VK{ z3{5t*4Kx|oEh*~q!i$TX4@IXgKr~bayIPf?*eD4#^Bx#eqz(FL&92{_AKCzxZEAMb zq!Z`kTHzk!zEqvW*idW(MFUb#P&(5g;e~sa()6v~I?=+QKu5VlN*w_e)6Xv~5s>&& zNjs>6HY{9(QYcPBqfE3F>4M&F67-}XAPVHto(CutoQWett#uU@_~9A~V`k!dim=#o zbJ&xzM_ANuLZr~K=xS?Ru?HgtEQ^tPsLbNw%W9T-i9_(|T1N->0pL_;nvxO-ELbVb z8qkiO7@*DIOutB4#d4jZ$(%!4Hj3RiAGqJB5xALOWdq1SP^9!DQhr#&ay_)j%55oJ zvy|+^87(c^x&^J1i0_@EHIhNNdP&_}>yYxUF?oC&+~*+lpDO0uhieBH77HIL)p%a~ z-oha!)=F;NbTtQGkDfC*d=zoUT$ijTC)#0+_W)39P_XXxde%}2Y5-h+wi_yEu2{L-YJ`T<$(m*40Bd6(K{V>Rt|783Mn!+EIK+CWeEj&k-MrMUt!Jz?F&;;-#YG zmr9Jf9*0`jEXE?c8&WM$AB0hQ)QmUC-%zeq08>pmA-=8{xYZLSA*;Yar)47CFx;xi-v0H*7Pj^sh55RKp;8UZ5Ff`D@-l{p`g zr_Th01vCo^p`lqKF_D(-24IkXh;+)M3L(J>pj!Rc(vP|p08l9u2QjaY`f!`lHoRR_ zeZJaKY$G|Ls2Z^8l?c-;9_M(Pai!J{v7!8)wDD}lR2do_b2tihG>{}Jq}qwKDoF?k zsTBh{{4}lx;+oR8xY#ODK#Z%B0XvRW8Rl{sd3j(dT34ti^w0_oQAqI{b?cWxa0LQM z(9ko*;qH#*dN-NRA|Q(Wm!mr5R(me`&3ANHw?f=~hj_WOUeGkfTPATEA8fc^CS z_75(P~UMuDKN-CG&;_8d!QIqE7@ zShDZZ^uk-H+)yx~Ih_9h#}BoM>8bI-ByQXrf47}7d$=Q7tbp~PHT{|4_OR$LPlzRZ zfDIy|CBBYE+#MHM3W1-@VoY$j+^twgjUxgg)K%T=YNoENNz+rGhtCt?h>O*RK0Ap} z51m(LyHk@#?I|_gl`3>PpWTZlFs`d=w~hjTGX3>mzmhfFW8Eg|l2V%Gp~{rSj3C=` zgsY5J$mDB?0C?J}H#0*n<&YF?=~F}Up(7TNHOdHD(Ll#WM!>D|y-~SQ12Y2T58-N8 zcT8xp9Pj`p^{nIEat$$`YSVOk*~UplM9xkOD%zC_k8GmL348C~8De7lk6#4>ar({q^(7~@+&n!Ipw(14(INVWQO5MAo5c0ctgkLEH-Kl`}p# zcsr>VslijCQ*Uf-Bvds`Dl)Hu(+9n}Quo|=Q$~te4pAD4jmuhj8ho%fv>O_j$)jU+ zqRC}5pk1w)@H!GaE0z*wYi?+pl@ng2C}82*o0D-PJo5wp02~97)Ch)z+>Cp!iT6?4 zi=CT8{J9Rb*G(|r>Vf)Fh;mFzr7!&&WL)Fk2n1zZyl{W3X&$Q@Wb%w96+CIu@s}Gw zSg1DBA)oo-hvfuSwMRMe3p}kjgSX|B4av2&8BjNgIe1~O)wEonO*1Dg8y9J(Khdw$ zh5axn4L1eoG6zo#Fmj?oR`kf^ac=P^s9#!*Y;x8T^?JLr`Sr z15KQFQ@Hy!S3A}<0Dq>Uy5;AFUCN-^w9C7Vsj%JO8hpK~R0zQ(g)*jJ4x=jJuky`u z-6|vb)hpBEPOZCDm7Cr|6wm@jU-6z9JehyeP}380fz1LldU+RW$25Q}Yp?ujGs7p5 zdrjPGES&S>Wz9=BXSy;`0O}0}T4{*?0OZ`)YM}Vk26qcypt{{@!}eUVu=h7H10su4 z@Ht_bxn?)06qk1sV6Y!~IHXnZHDHVFmoCt&jw@&<(%VTjJu?;05Tx#0FQm(~d}_s< ze?IfQjB#PH3;xvZAGMvp^95cpR-@`8*YK{~@Wh?d$3_CoP5#|#bX*T{&hKU@$Y~xb zK6Pxe`zg!FJ<06~utLGq5@!GVABon1?rd2(%5o41e3+N@pGOxu|-7(x#*PEp)p<4r1%JA(nmtYlu(p zk{YerpKm&rKWyX<-z4(M=3$mikQ8^_RB5>IlDjI9E2vXJ@XxL;n==RpQ(AWBIJ7ayT$KmNSxF+WP-r!6 zx*F;!<%zJ)jtBYGmL5wQ;9PIg10&D`SW z8&(@PlWXO1+!({>SKcSK_n&fBXygLE-AEq_bv4Bnc1(R8V_4otnAm-`BbvI_hsAN% z6fp}yv55T29o>Ir1~ZwN@a?m`Lb4h8aQ^_@5_*SE_N@<#;0$|Tdyv2yQnd2MV=Ivt z8k)!E^38gJ0U>KjdQ8{7#5S>+S?&%feiy3+zZV=#rB`zUm&Ywe zE2hZxBZ9iA=FW4$X*M-G90O?*1wustr%f>&xz4$&*i@ zaX6O?73o(HLJN=z&-u5YCK6B^J!^;bdTxZ=&F!u6DL{EXncMna&iSn3Ce%NooW9N-$@61RMQ98N(X zx#?MVG0C&DD4X2`P=IKBhPh);iHcZkD|N?UHL10v8qKfXMS8|wHaZ&QH-C;aQ8BT% za$2^yqi9Efl?u%JiII$lI*Oe<>+r;nN-bEmfxwnnP%?X;O%$HK6dpqZ%RxXZexkIO z>E>E8%qTM|G$0XC^TC2N{xs`mXbH5?Ig(8PP&$E6+t*AaHEiuEBVa4ml#VEdvO8uf z2_~6+IpA#o(LM6`01})tg<3})3CnN;PMA>%dTD{Aqtz)rzUZTRPg-k&AUjko;#g zzT-kI1=PC$WMfjJN_qLI#b`KRghI^wOl3 z;!;2{miSZVP9mTMMMErz3ltS22o0N^hs@VMFDw(BMZl<1wA{z)6!IjPKcR-+g@GcU zff-W_x%N|GQORSQ>eO_r4W*k-0QAUCLu%7Mg)4|T87*Pfsq!)#2_=MpJZjNr+j5i+ zZKNkqfvH};BTY8p`DGZPS)~q~#0d*s&{WOt{DBi5TB;|ngS{hP>X_i{zuOmI32^CL~%x-ct^wnx!KG?N( z^~U7TQiG?!9PwQ4P_?SlRqy8HY-J7V*T(j(taN3!kk>OnK&RoBxTneHCUHlV9TKQ> zIqZi!YhKVkRbz{Rv;Z%#5v!@G>)}rfR7=Q6^J8kJmz2vwt_8I%ZNfBi28}~4IxS9J zDTvc$J7wIatMWNL%|78zolY+i?@CWfdREvyEumz?*W6(rfm2P zi%(?Mx)sc3bRJl)mpr_H9r)B4c{aI8Z~#=ad_5m;w8Z%W2+Pb@5g(RY)Gbv@$PGh) zZ9a>FlsILG5#UC8jPw|dHf6O7QKjWUjR`~JRts(&*+Qa#bvbFBPwg14lRMI`HCHbs z8;VF!c>e&kNyEfVv~B==LGhr_VWXQGU23`9gkU2`1pW0nYsa7hs&dz$ul_iNE=KOQ zs>!nC+E~l2O2uM^j1(OD0blUM2ffX5EvgC3Bq1KEm4@6%wK0LW(hV~-%yh#t$~5Uv zGBOm0G~S=bZox@a9(o-y5X{EgtwJ)oS_sZW-I)Cws%ZjdPjsZeqt8dJpQ)M4hv^wRWfh2_cxsffSY zDelx)EWSVIhuey!NU49NvVrQPXTOfSnooc|Mqe{bJNi?g2~RT-?rGZ41vhKr%Tzm* z>VM-nvQ-}IKgMsoU4&0zu}2-;l0NC)V5$b$7^(^a&s$6Z3G<-CAR>P zbg69Oo<)tRjJ$!VVJfQUm2>%cVgCTqJ%Yle#e^J@Y*+Y-gt+8)F{GiqbL;ZNsBvV~ z)-`Jv9N-bHDN&MgK?8b~Tu_ouM99#h&lTddZzyV;}PTBxe>*uZ? zZX2E~saG)Y#e;J?^fey*-JKZ8Cf4W~s23riu7?uiz>>%cREF_+1b{*X=qd{1xRnmo zWT0VI1X7+g^2DLWyp_5oTSdYU0dOVh@~E4x?GY;w%PvGv5NqT3V$&CldH{y3px~bJ zjs?DTUz@rkm{CHZ&Y-Xr@TEw_q&ITt4R2;VNPBhjUKSs_ zN`krX=wsY{5{|VaKM*Q)#e_Y-H~^s)X&-1g&H$GWl|kJ7!?s+<FL;m1@{{S45{{Wo#eP{kYcpu{NzodPB9ccdm#Qy-mf84Hv ze(XD0mB+T*LY<j zl?6k4gD?m>V#@~!@JJ8k2kxt`FNuCUssaFdkG`>O#)cjl4RYzkOgxS5-J58GSCdg zYAb}buOJ{%OKXq@yG_FWRJuM&MrsrjO+%<2ni>;??NVB7m!_WEkba_n4;s*WMrBL2 z4j8KyZ%C~haNDg3#YZa+__ufj`|Bax5f@{U)FcnWyW{PR^%mbhO%M&hDw9lwb*6aa z9PD1DD3#?7_Qd+n=KJiv72G|cD?PoqI{`@QO-L25rD-B@8{T2hs+xS5NQ3?AEKXc`Sl0)HlnZC9;b@%&dQoh*}PNwQGqI1tgh zX#UxG3ax2E0}7o^mCD`mYwwGdGMN!xQ5=OsBZb@p00E)vohWhFxJmW~63`xX@~9jp zNQ)?loL>+q4acMs2jTcv&#%24E6HsuM-g)n4##lXP`wGD)|&OlckL|OY;mtv{@Ze5 zIhx5_n~Gg^OIHo@R_zq*H&E_>NdPW>JxQiFQd#Ia*Ql_i5<|H<54Yh_C(un6giw*K zRgP=`u9dDDDwnC`2MujX2sa(nsdEH zS33A*m*IpuH)*SA7ZTKPK}x}~P&*$%B8)O5mIKlTVuazlDjg}gOUt&jdWBp&a{5R) z7-$+KSz|S3s9{|zT=c{Y_ypL+r|PWtF^tJ@oui3quGIT|%^k}CkOE{5tgS{zBm#h) zcLSz5UoVBQIHkg^d8@m4!Wd=SWJ>LB&g2%bt2;K;K&6dp)X%R$j#kT z9)|U+a#rwjHVJVJXK11^$1^F8X{Pqn?UZc_VyHeC&f`rc4oQX9X5~(e{{U0xTW(qi zJBJVTP#znAPCt7{Dah*8c#7 z=1U&ayUw}yySqoxB0`F)Seh^;ivV=X8(ue(Yo!+;kzI4Q`-9dWDLbwAS0s1GW=c0* zBq0$C2|z$L1=WZi8snyMS+U6wW6!F+1=`)o9?=V&NjeqO^c9ESajkDI-&du*CuKL% zq*A&ZT&UBnbsSvA&l=m{x-Z)G78OKJZt1Iu)@)$9^mCla8n>YqTubOUq6N&W;t_KncPp3QFav}K^5DWI-IIT zRlqPj3#F-hfeJLBqXR%TS2|_;e6Yb_ZnR;|AwjQgH6@j4;xxl9U^g1j+y%PPH!W#V ztqnoQ)N7YaHb56`#TpVkDSB1ca|1#&%l1&=4hzIAcjuVSnXaH}?DOto-X*NY?T+bIrCGN9DtEK_mvD^pi^GOl5h#ek>Li zM&MlCZ%=l|Y~*wEezPgA{TM!x)#<90QT*%ZPut(L_Li3LDX~raVtC81xMGwKQawg& zxZr&Ebju`#;r^bXYtfuPYGXr=kw(ybQnbG3`$cWaalYNnoKimBz{v{Mv@}r|Ql}I= zcXrEtNYl3$d?f(EL!sN-7#WX%IQp7(h>9)A@l4|lTkz0 zPlhQZ`czcd-ThXhP?17+S0&rm$M)fpI?_o}y?+XQZMZopzLYdM9P+Qim~t`dwMLi? zzNFl>Xt1btat32vl?H=0sLNbv;Jj@ETB6ELgby0fIB1?(kStPrXvpm#Z4!&QfYyT& zrh6F^i9VxYRBeh$vY5f@e&9$JA)@5&>1ydt*5mfYZzDWr+!E2uBMj3C6-^hz;%TNi zuPu}bENc6P-vlPRX911~)Ubm8FLw10p%9`Q1sOEcE&0H_8 zy=y2o&Sh+w5I)Vs8izVYN7NdgSd8Kejc+~Xh{H-7FU!WItP)7W5i|t=E9wq}5z&n+ zxE*l(4{#wW23d|rA#0afpMpj9&`B%WN(f;t#*t(+{t5z0pFCQz#TCNURVx+c%xh#} z)G872=~`E3&2!3JHy;-%9i-a?i1$i`e=3CSPfH*p_;kc<=fw*Ij$wLgfeBwfDtC#* z$aYc0hFG!SdrOPl6eD^E9==K!rCE9YR_@*#s8gP@mRC||lG}-qOkcv$NX*X~x`C!3 z;lRlVf3oH^w+iv6i0f8dry)E{IKwHkNcUVaGTw>xDMEB3!nyYT{#Uz}=H@oKv4Lst zTtKnJ$&jKqc?Z}iIY%TKOGV<_A~I^k!$VA$f04i-(T{MMzri+sdDT*n6; z${k_g5iL;{{l+dQjyPpjiK9|w_9TpeO=w2nMF`HgsL1Zt%Z^B>FSNXLM& z(wS61TcNTaAZaMgoyF5gwS)x`+<_HW+@J&(G}LE@Avls`lJZE<+tLq$(aHLlpaWm& zzfXlW$JEe|0D&k&q&O|wBPw7;Hx!~tsp7LtH#l`D(Pc_EHQ#SjKJ1Ezwr`BP0h zPr4=jLtX$x+5zfG{{UK^v*U#!o(T|dQc^TxRY*Cg28N*PUbwf3gnF5AS?rw0`lFSl z0l7cN!lf)FwzzQ9-74J2Gep+Xi6d5sF&mYTQNT2_&m!P^9`rSbA84rVXw3!B@C6bW2lm%Ey4Q zwV?Vu3yIL7K4>Xu-M}eo3UfI38Z($5+Do`^>>cxxy0Juu4HbsG^8e}s2pWJXPUY->8 zRQQem0O&YOPhkUbDqOni5qcB-HCLV0l2+PLx4EvWML;BVrEzH8jP$e=sG+X+H3{KW zo<>c`$J|tSg3vLh@AIY>p>J0hK()fk58+h{$=Il7p`}i%>K!z#KhFj3wm*$%vEydq zDhlF8s3l3>MHCT`(AI}4VTa01y49>K1R&HMYCGC#SZxPfh&BHJ%si+tPL|a$yf9S% z02RVZcQEv{tx%DosiE34&rFMFh&fp;jijg+s;urskTY(UQdjM*ZN0PEPwt5)Mgowt zN3hfiwOEYkF^J^3cI+)_^;adEL!WT1ZzIp-zF zxHzMU@>=8k?{bpo0Q-vHyMMIfMMZT4itJi?lvI!#@y0JVlOf2@opN4dxFmClY53OJ z!}j!1q->GY&~7Dq&}rbHV;`HI_ZJ?O%{d-j@;TS^{{X#cHoRggrb-6UR;6f0L}#X1 z;+fODgj?1>BRRyIsXrQ%3mhw;6f_LRo@8a>aLC^GAiY=ae5YDvb${)lQM6}T49=Q@ zKg zZuGU5y1x;_7)Ip1zTY}++PppIadS4dR?)Jfv~$fW9M%ZfGqM`}PxRtPE678}@z0sb zxP$}w*GKIB-^k~=$aws1%GWEL-CEJF`VWfquc5zdKHt5pP%>M`?3r2pw_-MjAc8W^ zOsYqYJmuYe!X}Z;F1YFqd&jgpYy4C!j5qsD3*xGV$K$E$Yr6X%wZBfWzqD97qlqN} zm=y$2k@O7l!8!h1O5(*TE3IPV2+~G0fS0bL?T#EkkiNhZXfz52@@t)X(;Tam&EL7L zHm$cE14M0kY7<&AtZ=6Nt?ATM0JIqmbvVr{pKVQBSX}5Tugvp8F(>CCpd)K^G!z3N zL5qw$667Erl+&I~*458_>E03B3y*S8p4!Ql;00*ANdma(94887EpTqBS?)uSYZ_Yj zTvsReKX!hhon7d)GVTPiede_wcn~qyIKC)CLW`wyzDtnz2?U@OlglgeHzcEi9z`W{ z+(53fF-09)rp}hAGyCOkw&+Nn-@`QV`KT4kpk&c(! zQOTC}HHPKG=U8s!_VFQekz5)|b+G>ct$cR-x!j|azPpw=n5Yt@Na0kZVc39nlEtgz zk6-r39^5=g+J``E$`}uumF4BmoG3Do)c$~dKZSD=%EsUw&6%YD3~OH!Kp5SN5PH`} zF%M|A%lB35fRRk=Qb1ixwL*iHN&%Hg!g6E0ED>&YKf3<-+GSc9m7Xfge39p!ildL_Ec$4B!J=kflv&T&cS(bKJmTZr0d% zeZKQtqq+GkoczaSWlH%aBkDaH(W&KE>rN&X{KHe9q*9TWVQK)PMy^2EGGY z)5i*LAUYe}xsXyJFpzYDQ}DvmZ~Uxlm`FPfToZ`H7n5yM2XhuzAUpdV&HgFud)3 zw*_HuZj1aw(rOQ)ok=*_Kf{TlkQQyoO2|icxXNd9DCJ<1AnH+@YZ^K0XQKsjjz=nT5_`!-q6%{X{!U zljtSaR+Dq0o{g*R_4QcZMI?J<5wTQaXezYY0P08>&SON>_8dJ;P`*F(uQ&ei_GV0c zoBM%{Z|R=ahctBXa6MXT)5BcLaEl_;2;*0AQYai!wKN%56`9dT8_N$;gX3O(e{N;u zM=Y!e$lJJ+Z%>WULGcS$Yc50SPjD6h3I-MHrg+WfVuE)kq}B&34MB2R{{Z!?osS?k z>^k+W0RZS)nbSIBHIszqo$dN-HLQk!q}wfD~E_ zi*=Dr7*wb<%;rsh9Q?3tbDCAUttuJa8>*wp@!30V3{Hdjy+g|vI9X1z=~^rt!@Ms~ z^sMWc;#Jg-Z(+~WbEoe)fsI}UX+Wm79CsjE;p(+xT>k(GB!$Pew4)Nt2GD6t`kMa$ zjyIfVBF6nj_0l+=O^iZZQm~HV?fFVg6CeafCeJ_$O%IM_byTM z9_GEJ$J7_?<6Py-ansq(;z;T3jjfQ$iQE)W(AQjbOf0CTU_zwVWaG0U$%$C&lD~Jx zq2irHi$hRJu111_n4cp7X${m0u#z%ZZFH#sv9bwS)|8+bQK~6VGAW4R?gwQ>-5_~m zMZo)gylDotc{fQxxk&cbpIVHF>!`u9RxsEprHR1QV@e3kScTSuJhIfC zFjGj`S~m(4%-I+TUvj#~?2p_z_}hizZiQ?XEJTgTB}vSKmN>tE_Ny`@{bWD{ zH}kHK`)S+;45PzN?@3a{UYd`WPPO#wvU`?0>li($m0(~Q6v#KMiakJrbgn$1&v8%3 z$a@^$Q1a>0y=lkh6C6wgdWYaD^)D?TEJFt+4$@Dg5CPqmWDHO@5IFz{n$@eaWL={5 zN#`$`dufr{jwJkvS2Zn4QktKE#jX}Pjo>$0teQghxRQ=SmBjx5d@QBqxQm-O1 z69U8xrbH}#O_)Su*0}B+g*!2`8zYGg3HR3*{l~_aKZ%kUP_XSm`L{Hx{Ojc3esINR zxS|N-NeY)EBee=M0jZ;mdasGe+}1g6foqa>w;%%=$q6!E-wi7hmfVJLpsq$bngB`2 z5Hg|98fKltb#$om2GQqC+A1pwZlaYZ#M4ar<%3shYDket3Y4D0TA&pa)Pa{mPrwhu z2C6*i!a(Y@h~Mf;hoghnN`qZIKV}U;3TbDd&?P8b1~nNGm1&+wUkczTB9au*I zqiNLZo>-vE;GlCApf8nUxgOQRm0ZxCNm~~I_Yx^eLHd*J08Fz~dTW=c<@IA5$nZ~$ z?k!&=u64_Habn0Bb+Ag;IKKQuC_V1K#`N*682WV282qjdLU$IQg>(Gw)N`-2ec#5k zzB9iTGn+YD*Xyl(jS1Sg(H_`C1CCS4+gWSr6S#2Rf#V9=;R+pU2M(o;S#+!kGU67Ibhy zM_y*9>YyN+mZ%lWT)%D*c=oqZLHuylDZ+CqY3d3q)a%nP4KTy7yg{a4#voEIlt0z- zs>rMfr9lK#bkD;xgu4pY1t}lnLZJw0$mT^U?ka*auS~zk2si~SDWk_8 z=5if$%lF~f@O@Vor{m*XLfdbRMBH=C8k_ckxSv*HhdSre6Jx*aeQ_n6YS}Kgsj+b7&Op+&4=-~nmMqE?k(sAZ4~`_Wi|7`t8NrkTX(plO z?sJ)rMPcLxei@K)Eu2ewkHV~C;Vc^VkxbjW?TInW;Y~H%00-fnaU^igXxzq{n0tO< zc-pPGP@W?dLhQ3omyHxZRa&TGL*gMKLly9mCaDarW^*ZBa6Jgd2*N8;x_Q_~r+WCbNi; zjS2V)pC4{aM&^P=M%{OMC?#Y^Kg(LT$Q(+ChH!EaYJNX&y->7|l~-r)LMkSF&1j1B zVd0U`Vt@FLRfVeIowK2g3-wB`Tz7P;#lKLIss0v{f}J|&Tv|uLhp-S2+u>Hw_VWl$ zgr9|1=kFymZ4)aI<_PiXGsO6~O|4fFwQmn?I5BpSQ5QYZle2GOk*4EKeqBCTv4e|q zG}EP7L&3=nnl5@&b8|6H3hwf+?aMy_izxA2)KY3|c)24*Y28q_7qQg(fX}T5{y4J7 ziOu?MD#i>~i;#BtR8_?2>UPYPHPy%AiztC#P&Ga%$akr(N{lX#mhec*fY;~crYs^< z(x$bqWzyB(A1cpkF^btN@n1tP^)K=u130H z&vyiYHKB_+Gvelxqke!!@^)1ffl4Tc+@GV*SC<@(enI$SbdU#VN+v~rrlRs zjhfli)lkq6P&$*)j7S+HsvFekazk}X)KvD21y|h~*CUt55BtnMkU~_(WHgj^(@akr zxEI|f>gi1X0A?E*Fz6f>rVOG&ovBHFf!LkO)bq%n469r=a-t5or$1W60?H}0oMpi$ zY-Eb$Y17LNeyS8gZBDm35SxfvNN}@8N!rJMLID-lzFOfUHWOgvN_6sY$bBwCDNp-) zc}OA}oQ^=#rg?Z_r*a{rp;1kqSVyag6!AM+XI-xb(U~W0Px|xu( z>1caaK>I{SmBZ3%l{D6zx|mp`tqNr8TZq%i)N}mLXKs zGtV?B-S!mg{?L*Y+xmY@hM5YH(ztK@tVij6=rg#YaQ6uo=~58(PSvQjELc{QHOK=& z_+Z`4AX4D9UjFE78SbABj4(C{FMAESC8yIQOS?=Qph?IhJaHn@+T}qmz;r@-rv57+=fiw+=>~TJeuqN z6#csl+8WJecCN=Vu*g6jR2^{-{QC=$u4;TmMm&!=+j}qC2Uef-t8W?hsreg5Ww4cc zs}&*JFXE`E{Bp%!Pj$l_zYXJLRoR6~n)wJHpjl>N?B-`S0+u#NhFMHv& zs=^7UM{9Q+lB1Xb9Y^C+kbQ~d%_K<%*36cSP!6^DVzK@Gj?17f_|>Fchs$I&A1H6g z{{XF8tv|Q*mN54h!e$`W1po@twXFdZ#cZFs1iNn5hK~(u<{#S(jk}If-R1uPN`D{r z^=?s0nGw7}>rPPw}5%Ab`ho(mSZ7RhFdEn6AtH!hS$3h@)!rj{UIWG15l* zoIGm!pJwc*jW%1Q6ac^|6|F0%&l#+a@yKhp2i4TQhle2B6j7Gb;r43Lo;WSySO6J- zpw_wOXf?w>{AVkgUAWbA{{U{<*8>P^KjHvNu-Sd3uz`K4EyKz_mf8WWb?crhvOB_8 zou$Pp+AhtG2$75)=ZaL+Uu{HZV#6p^T8-)H9|7Y`LmkpLDJXpEd_B7}W7+~g;nJUR z-);BYgDX%C0YE9!BZjhjmAiK-UyV<~?e~X!Z?jKLD)c_z+uOzp4^=2~s5RE36i)6b z9QA9fM;{E&64Y#+rK^SV(l}zhgx?tVUNZ_t=(}Rch$Si0B;nJQzXu}1v z(ip=MGbl2`2Qc!WxyY33_{O)^0Q;&BlI<0B_hwk0B~wpGT7U6kMn5X%^*_$5a`0a$ zBn1FgUCwsh)WOy$qV@;UO*Qe|F4} zwLqmtM?W!*UJo?1_3dFMMGpkhVvWy13sj+F5whI($G)$=Y-u16gl3!OawJ9I3gp6dC3!EAz&u3pKK{b*)+4 zIsX7plkLt+B?nKPWp|u2rtQnHRGl*)>7_cHYH{-wpdBk`jmZZ%0DV%Don=liMU)+FFp>D9jI+h9tuB(t}#JhH)tkZ%U|NMM(=p zp@FF&(0nz;ya1N3O3-6Ja7PrX{mrku^>ivJs^mKBkm-v^-?hG!C&I3y$P57r)q3V4 zj6n2({5qP}l{lRn!}ZtsRlHI)>9I|z5QT@KXy9vFS0h?{P88x9bx}($MlLbAOO=iy85lR#v_1oZj^LQuB8Idqe~9H>dQ%zf+~=;~eKn2c zIcG!aYm^_twLUMmAyG}DpleQ<^z+7JD?Q|+O<^=jyV#MgFrfT>!)02 z@^jq4LtT2x=kiiK5aNcfmK-g#@+o9s*--7sW;4cbCoS5SR!=LCnmGQUvb26LhK@BG zww20*ZfCC) zF$-xaVnHP+#2-4Ha|2B9U~UR+Ksnod1uoGnFp{cCsQR^~28NkoAd>F@lx&$w5^d6= zwQq5eJ<2=hMdm;ec= zZWYlV*^KrYg&vP$w(^LH;y z&ySub27y-rsC?-cP-(WA4E{fc2?ac+iS4axnfQOe!oE6C1xitZN7ry46QALOAR8Jr zDu7;riYNg{`GfvgBm$6+T_~Q~F{xkT1qSMQ zYxv-RvK?t8wCk-MBBpK#Kh3Q?%_?w329~539R`$(1usI##<>s$KWM>Ur8w6(gaFf| z3dAVdt@EKjv|thdy)ySXr*Y6x4#=gXgK-(u15Ew{1feWI6tHETyO~bKx?F(4g8}?1 zw5C<2ohyWy8ZFYJz0yK#6@GNOan#KL11gG&*I$m9W!WLVkZHGO4IVE`$8Rby0a=$q z0L%Cn?zWZO2Bc7&LYpbKxK5Q@k;=o2pa8!bw^?@N@(>wZ zu3CTx#yKF+h>@qMOnl3{zuS{oiIYv86RzsBLoc{o< zr_Qu%J`Ujmy%RDH!bN;@9R?_6&TENRSXMhHl#INGD*hF1v*A79uarejg>xsbh9OJH z>^`$ZAk;;$E6rjmX zGx5vE74GF5bRlY=BbCS6uGd<+*mksmLrGQ#tuv(o(_B(za;#e#&1G|dIT{cxSnW6j zjE#|*9-0x*XFxs}sh5&z2K7sm%kOCbqe-g@@pDBTL=1tBbY6f{ZkcC_w`Xp3oHq)n zc57b$0PeUJ{{T9bwBjI^jVyF(W(t~&{#s$D<+ueW@v8i;Mp%k4f)~c7mxqoZ3{mbn z6HhP0rYjxDIquqRRkCtYO6}8GYHG`hV%v_zCYcZ`o`g^wLY`yeP%=3P;damoZ;eYs z!%7~pm8}kR8E2k)9PtcFrsmZE@)5Wf0OdVD)||t|$|UtXY-yfZ)4+7ZY>CKn1*miK z40CioU+Yhnz$<^YPn|_RSd3>|6Y8c+?kxI;-%@Z{s?m!4hHZ%Me$(nUs@bw!d@4pe zNZ8SofHSUO978iWU2jmGkU-tio<(Gp%9Q?EW^~u3GsA9~448dQ{4NkBnC zxAss1jtqX;619J8M)>K*$XK9}gU`k8tQ!YA~77dWYRdM2lu%0i`kr zFWzvKDwKyg>Z9r!_*1qjr~nluMF>!K>8Y-`Z?F7m1g@yG(_m9l26^S?bHky)SZPZ# z4I8B@UuXqXnhv=G<~6QZD}D6d-O35MG~Mn^8i`(qG1u_%!h}Iq)cjb_aki9)>w+oV zpbr8~bm@R%bBb$Dex1eEH63xuZZ%AS%9TEP)5j8H#Ct&Tsd3?xcT-_@7!tD(@0 ziDoATh4HB$rXt$-RD9RVN*Mt;j~^OhL|Do+y;yj$xhgfT0*ddgGuNdx@XHg1 zJ+!4Z8>(KS?m03E3U`i`IpRckqgM;ngjiedZ3; z2=YZl+;SH#-&j6X8Xuk|wg!sKmL0*IYcyYLr60H`i264@l zEFk^9#-nEDV%kfvU=2oNQ(Zn-n-&Y4M~zR1ijl`?^op!fLC}88ST_i? zBSNo@T|>f1SP+G%o387&a8b)G4sH*Z$10pli-?pB;DtRZUN;9ca&P_>T${MyLQ2lc z1!ze%9v(QcgNc6a&K|12gN2$#sQ`};<5k=K<7o!uxFrDf8j~$|G$;IVJ-lpfD4Nx;_y@=8dJudn68`|3k(9Gcas<+}sPpNj zETQ69P*t8M85>*!S_$*2$?l|G$nH&Yp*d4Pab(UFt_aG$Z*NH8UeFWxR88M>qU5p# zIf`zm>!7YIvABZKwG>qBehOn`R@FO_?)HhYl+uQts&)PO;?52r7a7LOuon@jIf^!(e^oI2d_V;VK~muD%y{mE`5LU;cLc$!bvS+6 z6>pf-(-v{@&W))ZUd6^n)`5t`BUKju6$^LHh5rE7%Q^tV_E)YfBID$Lg-?r$k>}I` z)CI?K`bzIK@pc6N0LvDUajz%{3s%r@&-|%T$DEOr?P7d`WtYrpix%-vkgfner?-rB zZc8Oa+;dlQI0E6-atxl~r^r_e7!iyA04lO?9T;xn#us>?T14_v?Ig*V1d>?Rzp!EU zVMY0_Xg3dYvpF_GVaA?rV=&-%Qz1s|J8ZHK*66 zIiEJd$;6Cs-Ow-d{#`16WWAE&J0IC}PzP=@?ke{K{{YJL3?uWQLM?imzKS?f`eaE` z2?9$UKxri03K-+up~{^|t|4Q&&XO=l_eH;*@8esz#28P@ouSd<7=Z@mN!<3?kle>`YQaKo~K|*QPqh6D~oGt$*cBKR3d%90dF;Go0Y( z5aGDH>Gs^EKyT9E0yG14Ukc$ry8Ki|K0@BG$X#T4Cy&%6CZ$p|1M*cHGCJe8_Rd3^ z_}qj)sQ!N%?p>dfBFqkr``XtHq-oJfI-d_J`ODq5Pj7hDQW@nUGICQMV6`cw26*fu zUF{wyE7!fhlG(BKP#PEG(yF2qAxc$+O2|zKWjPOrs;3FiUavjZ1rFDx6{9E|vXx*) z&_!ys6*L(UL;EmxvI|n0{lq2P<3@}nRH+5dMH|$loQbKX$_koigt)i@lt*>e!^cWk z#0^L>g-R96_>b_93LHiuI)$da#}Rehb@)^3Uv{yR=weMpa}=!z@gUIQE^gtp=~3nk zyI40{_}55%x8~Pu5=gAUSVRLg1dOEBveVQtf#>l@x>(&vt})(xYk_kbMv6y(uIuc6 zYAGX$eZaG9Rw+_S8fF`%X^uz9VmXd3AnaQ5$8>R$G0q??N_uNuG28r`6h+)hjk}l) z)E@)mj6O^NNarF~73Hvl9$Z3J?c1Hr98e2efMiYE;iCEx3Nm{Px|d>WPx8h?lj9!e zd#ygMzCSuH6S*Yfqc|CA{5HJo8-NHw4i2)pp;d$WyedbLvun$AxwRIy>ZrEigwCcy zYFl!ZB(Pfa#9UeZhkH+R-bas55L2$Kg`A4q9F-6v3GRj|t86$iPS- z*ty60-cx9D5)>t6e76#kiBv|Ek))tNJ;3Xo9)^obV_%1s;6Np8DwYmW&zs$KgI3xN zq}e)NvF_mQf?=3ERQDCxY8a5dB7;MXULPVijiegrTyG~d60kfutu1N!8?Vl}=ec`I z31gJBAxw4Lp4p=Vm@QHCwK2Bi`8RF_j<8R@y3YyR5=QVE{d%o)A9i*NyGpk3dt|#w z?gdb#YEIR!T4SJb+{0d;>ziS%cK+Y)=K5UsbVOdhCb{#O;qELXaVivbWp*O;3(T5?K*(0Ned3qbX=rwJYrA%2cqS z0O?J7Q!RSp(kynSpM^KPk+^G0JW2v8`iY@FN+@=*@HNDS<47%|X$^V1jfFF0b&`}h zoz;$pfEo~U(wSk2SP;|Uz_nMU49cO9txILpWnC+uOjJsXt*GL2%TVb_k{3Gabk|(E zWJoxVN&t~X3Mj+XUDcr(llW+Gg2g`%3R!U|KPaaN1D^m$1e~c;PnAX*Elc#K9!oUV zwjRZ|j(e+HGL5ya;1BDoG6Vc4z>R$Io8^n4ib+~ZwSHc8lFf+Z@^D7$vRN9^2Z4BB z=9Tro?AL4Y_cqbWkp+obCXOwXb!EuNrkM_y^A~n<)5kdqeOlM5yK{-gfuYf~HI@nC zw?p&mUCr7Zs+5L6gJ_baVo^X1MSWU><&Hbba^GI!R98>qFq%C{>F}+lZqm29I$UP%ku<9|8it`QP7at@#gpNe*sV6f9#jkNvi;nVm7w z`+K^dj^>c!pBlq*{1aw*lr$3ULRSHO*82jtCi&XjiIfv(aZQZ{DMKhxNySDz7uo*+ zxFSDnG?LeSV4vY!OT0gAf6Be{u!!>i04vht$o~LPJ!^$K&+XqS+mpy8RFPFkk<^e~ zPC`{Qpi}tc(EJy0LCM6iS$s`#PGhyXKH6w@VQi3sJx%DE`gK9p^^#qMR&c?B&{0YB z`RiP(jdWx@Yn(zBsq0kR>1yGYP1%}?4M5AoEbvmj8|PX)W_nPAdV`eYboAs& z)2_A5<2{h)7hbI6X(cJ3^q?lJ3w~X5rg@Xnn1okBrAcsF8W5q^IulY)r&`y@)Zvm3 z%869%H6>^&&cKYBa_h8=+LY5gKLd9Z^Qf5u*Qq*#_H;wrK-INdZ=^((A|jj9JqoEB?C@!Za&TE}0P^QgRI z-5(^}lINJ&ATLd!8g&YFUklewcDFgiKI=FH%w%OLAL(1!UBs(5xX7TWW~Nx>{Jsuj zPrE4yJi`1n*R6LR8Q?bVmACh?fgox&z>dp82-giCAcCr=|;e&y!}8;2zS0NRf&q1zbc zbDZR}14Wdf`|B(hd`z4avGX^vtkPP~GTX@vfo8h*cgJp$ykQyQn3ZhCV;U*U@aL{8 zUAJ%q?nG)>k zfSm(+{Dn~@lGY(lQYw0+mFR$g1!Q8>P>08^En?}uN$3tGJGeNEW^a=s7J0qMKJ`KNN>SpuDGtf8 z@*f$nLA8DzY98zEKNStZj@yv6#3jgu`1qy3w|cm{;n99I1 zdR4}WENo=BcMX*oXN8(Wjf=VLYlVX@6s@FL}WbgPUm$K`V}U5|%{kaAB~ zF#ZI3bkNp8+@E`UOORWHPD$*RX_bVl4cQYEBXR|iK$K8_0+Ehu&wu1!?dKr_pl>N0 zF&ReU4U0$hc#rtkMdCkd`?mG$zu~+ z&LwM?h=R~Z5~z_S6&V^=rXI!r0Loqm6~Cp4=13$c9sniY162l>m-|QDZ2thnak;1(@isJbJLzj=X(r@Z zP3ti~Z^em_JsA#(y0o##q*$+jtBs6O+=}cMvRg+T-Nm}duzQh!2#szx1erQ*XkWfBq9_9 z8m@9zUA=e3S*W$VH&ENl71Us;TlX%^8pzf^ZrxU!h|C-#{FG5W=4S^&zJYLUt?UTu zJgP$@k|)O8GUiBE+;iLuK?IiB3KT$xT5rbB!o?6-t@&6bds5cR$J`bX`wc)%PT&454m} zuN;4vl>F88R;2*kK^h$Ei!5A*WGRe-d^*&5xalL6u5&hr8y<(}_DYVtx=BGIl9HmP znvJ#0k|4ITI6l{o6hdMJhyV?`d4WMgjDA*ol#pzzT(^_wUn86WBz%6$TCWwu#x}3B>rgYM zqJWB5&cB8;Sy^sUL98Z!BO$);Nvqwhkck$ilo===zMl+INg;iStgQJv)xh0<-lQ3p zIK?P(qctf;s3mA~s`&U}kO?B7qn_*A?X5vy-$xxiRU)(lBiCB^j95X8U34{TiHhf3 z3snP}=7dqZRYQ!FGwsNVf-!l8g}vdV9jRL0GmG~e*4&P@jdT6jBST3VU81eLfXLOR z)S;%#wZ^*(ig9uaHo8v}+vVkUhK`%2O$~i7g(m0hC{A*!{i4-x0v;{h^ zm1;2ydq|_+tQl6JXg0K{JJ2yDmx#PV%!6J@zSy4$O*Lllrd^5*J;W%Pk*EznC(A5TiB@1ILX-9vh zawmEBs$5BN0?S>(hCoa18Rj=>Om+?zhAnGkL?6PrzbneKbDE^IsanJjCnf91Be;>I z_XI0Y07Vr9&>Z)FhBpQeXa_g|1!2Eha%4uhs-Li}ce1;6uHHADOp^KpZAvK>Ju#Bz zxic6nVE_uyad?}auGH60aJ(#5*5Q4SB~YY_e=SK1&}4sZIfo&iB$AXiHM_&a*#Z%I zlDxN8jkY4HfkFdq%#62Jsl-@jaClu!E?Cu`b&&T-h6pA}l$JZpY8cjtDp>hb8vZS> zmO$p;#;T{0t&Hvn>iMVr$9J-E_BXb%TqIwqifH$4ZSt^8<4O=iCZ@Rbm+i*}?5wEe zdwncIZKZG@-5y}$U`Yf{+cd5WYU_UwmFwhBck*v@BP?pvMPOJunuF@8r>eF1jeHjC*^)Cb~XZ0KlryoSAEtIulcjhb!tHofOv>?o4vx zcIo`TF=baT~$_{fE-i+R);b)&=3ABtBB;Eokw$=H8hm=OER*ZifLSw zQllgLJn(SjIzOpMrySoobvnt3>Rj(7AQAoS}6k{4_s+D z{zS1}P5dik$8w<*ojO)y%J2Y6b|&{$-pUs+ple*bakRnZcQ855ww1i%dCzFJM;}I) z)5@sVoNc+9c9z{9ibuFtYO9cF#)7_&9BFa09vB$MkV*VJE2eQB!;Lh8K1rfTo;HHw zRe<#eR2~N7#-Ocid7dtK@1u2LWUDgC1A?z=&G~`BAhy&wgYw0MnHYJEFgOq&ZKqI1 znrOAO!x{Kl4COH74{S^YL22{?js!2N*G)~US?&Jqd)0;;sDTBQWR-TILm?+&j6|cx*v@it(3nA*B9Su+M zaL+Z$sb6Fo$j4{`HvTBfR+Ulm#cpGwjy=ss8xQyS*O~JB7b_!?k*;g;@e6ki;A#1q zoy`Z8S*B#{e{{Uup#t1EA$X|lhy4LMV zp#*&UkYmYfy3nI)Vib+I}DLTvw1mO008BN*!q% zh!yt{N}7R};qoK)VR5{&l@!Djs)s3Hz?!e5{0RIjUZC{F<`z*Q2DPKX$pj0b{vIn? zhc(9+GJzR26s}qZt!gx&6~?;@B{=BVHn)Ea2H=Up+s z;<*7BYLKccrtsX5Zqi7yS2}lhZ-uL@YF)@I#8jr$Y`!(i9YciW{lZvE5CwJ~-sTIe z=Xyf?^sFBK)>|odJu`M9GPGtD0)m?3qGRMUA)A5F3hLOCvo1eIfNMy_GNEcHbxIHk zK9-=$nu0LtV0V$HC5X5K^pp71yi;ya6ce}+yLZ!(`D=*IX3~V(tKAq5y_2VnE~s{r zP}NY>3RS8pkp{RzkXKr5NOsnpe&2OVaQBmOH#W1{yo)qNSUo1{o9_Pm!*bmzqM#%Qp5^3s|U7h8eAL z0FNAV0f696;FZ$<08qjLAI7TOr!^Zy5+`+)q&}x%v{IFCfTk=lxaT$doINSwRr#5F z;|z?J$PTs6-Ra3%7M?>Zd&wNjEH6#6u~wp}q1(Sfj)}nGWRlj9k*GxJ@veK^Jf=Q7 z9g_E*&0z!`3WA^f*NuGI?|U@6HxKNDtkcyAB#+EyIe7z*O7QO3#x$J+Z{n5a{tqqD zWH=Ipxqcejx#IVa*)+&wK9?0GauqcUe;VU&3wJa*Q7fzB<&ws^Y@cCJlG)KHS8u2d z$E{CFSL2BlX&y?x#1fRsTQ^hb1m~xi@xn?PlN{m0)oMV%P>@Heo}fl~<&{5X3CC!s zM4pny(umwq7XvKO4SGj6cN0dSHR>k9q=+w`+y&nM4J{VKyfpA{m!#J)G}ByB%fPu)YJufg?7q?tJ9ZOR+g|&Ma;mpr?#Nc4*R3%EZW+vO;??<9 ze8j~6ifU8Bnea9JaUvlKNsn0Du1u;=C2r3Avgcn?ml+JfB?iI%}2@{whOYDlzTXfSYJrykc5p&8r*5AMN#halXKx{bZM@NO+dUhjgNWZk-jg-tgO zpbYXD2Z(z}+6Cy{+p_*Z3uvv~(K444Qn`fOGOl5IQk`%=!=r+Nl(F0Lk515o%8+jE zfGJZT4N8w#%u=-iy>RK`B~XIj3UGGxgsWR_zi%pzo4g}c8)PPgl6QeXbNFS4qv6Yn z5LTu|+paFr2_6*{cizYeDZJF0pLAA-QZp2&#e^IZ*rixO+YWL9fDVb)pf3B}LcZ53 zpgQi}2s!0K4rJndd;tysinW8b4&`$~sOeS9zWNNK^J=|4MuEDF&PNuIa92PDT*2Dz zB>GX;s?5FaOtK$zDBNqhPzW{BmBi+7gnm)G;a73?xZ2URN_bQ?$9+1I7U7sygd^62 zt!hBT#_(=I>8m)qP&uHvzlB9zcg!t9w|nX+z&EI8*RCbS!O8`iDr`NgBTmrI!73_V z`GHXTmlPfbP?Yl&IFlD|Oke7aN5ZGW+Os*x$khBQ0&lpHDP&u%tK!qtoV--&i$?a@ zAUk3=;a1G-*$=44>hMa5xci6~>AMbxQSK54N@g)8F4|pNQ{n9AI>s^&!l5oc<-`uf zm(^Ml7=FW0Yn~>vwv;Qs3bKc?UYnfSjGyjAVO(zAC-AtEn|?LKsC#IGc9ij}2)i-L z6ncCTs`p=V?iq+lS=<^APD7@;kTGo!Y(fCs6XRFd{g)G33x?MIH34<^0`@?~m z&=Pvk9P5i1xCmo60V>uW)5ji`f|U^6>wPPdtjdR4WlxwmlsIfv`a$wFWB&ldIILWIV-z@3&_N3R)wdmhK+@0F45y_Hrh z2^qH0_)z?D0&d`fGOc(aD4^i^shVYD3s7j|{3>qK?T!5Vo)~35+4Us}3`VreOhJ>o z@fvoL4LOV2{m-2f-pJeORHLuj&T8gHWRLXfr)Wc&(A1o;kNz>iV^%|Ml&o&m?r9_b z>>)wwe}yr<`)kSW_5=!K*WC%~u9fh^k#~LxH+8BU+)q2lPwl=E;Oi$!h@Y{!OCn&n zwP!8#$Pk)TX{JXLfB2IT&H<0Hrt>iQY&Wsbh39y(U*%D6_WP1@Si->g#4*dr7)w+F*h`izMhYkX3fSo?>`#!y{9xD+WwrG7z4SX zWf}PqO5wM23`Hbs;weAnXVz9dj9UaDe+$yF_BSbTPW~EsL9W@7CRH@llTSQHcRh~7 zwbC>njahr#gIFbOa|lmOrkq;+wdD-W?pewfzLh9w2-3eSGVbEX0`fH}mvUL|AV-fQ zpYTt;YEIwnhbMJ2p|F`%2?2^6^y~4&DZ8c!LWhsOo(<=vYQu`=lY7}e8njydn&jk+ z7~>JO4FlwB<~E#;Dkbk+W)h?tb}kpW^E8Yi=;B38+5ME|ODUftLJ8Q#E97b`iurrz z0G+X}{{W3xj?L~D`Xnuld@ob>{{UnzR&^Hyn9V=ijDu6-sRFpKlfL5op=xY@x4feN z0COO1>VZGjtsH;Y%Qm}2luzxo31TQf1Zh#%6;pToic4BH)vSNEk-e!tM2q(FsZ0L= zu`n&nX~r2OLG_7A%9_(kWriEyq}+ysPf7b-h8!B%B`fEu)AROL2%ad7yw2~ouAuD< zawE)F5hd@Zn}-A)DbxE|g5(YkPmN!=zqA~09-vRgeyT|`qoAP3RE&*4t|;g49El~~ z*+?D>TP`oK_^cTBdm+*hq3cc;?AISP>dpN;Bwzf zG6lCD>9^BUAE*)HDTXBOthqIif$^zq;W2T7W5&(C8){lVw!D0Z5^FUlEd7yMjVel$ z*Gxrsb!D=~MIRat<8g@oG5^1+-;TxQ#qBBM@fiSYN%)-Aj**l@YBp>L0e!#ZxM^!fLVYp&9s* zgh||Ob1h-X_a#LG-XU%_>^k?eKIcAn0j9L7sJ?8saRR`@gFH02-J6 zIqqUO5KmE3adrugB8D=2JvATat|L2}-KiI-uHoF!O9H#jo<-Q#E~_5M&=3B{_DQHK;62 zD@O3C)Kd{3&M7TvMx{;1!i~3-IMkx{g^Ds3wvb3@Pp7ZWgApCfJbH-))6B#IUFdzk z3Y3er<1R#&?IP`{1wj3y%Ms+|jwT1aGxu^Y9~)#lcpx z&O?lVO0mSUG^-mcqXV$9uDNGiYVmRlz;HF1bWCfV8XxtnpPb+u-MCwr3`<4|5kbiL z<6DKvNwj-^Nd7gDJBH<0%yfU& zYtP-m!{-U4o+f&lRGkm|)-BHQ=uCz<@*h=td3ob)i7|UYCg!TRyqBQ&52#ji$#JoW znTpVgftma%mrQA})YTVkkF+4Ih zxo$<$s&|%=mNhCV{Jxr;^Z8=lKXXRuSJ>GP4G6cY&DdBs0!aq6I_2S(C4yV7wR?_T zA}v)e15E9(ZmHMie2#+_Fc1JPvr@D;q=2Ngz8y_<&IkJ16W>S z{s$EKT!*+UP*y`Xm@d1?tiRcAA~Kkb(2?>f*dc-4)-_PVJV3J#fkv6{%qdR9j( zI#;*qu=A_6rGjn$0BjvAKsslNStXFW%Ci|6jxIt_e;S##u&LZV1H-OgyAjKSH49af zWt|78)S5(yN~u11oqjls=^k9GYKrHFTx;b=c-g3TFcqy7&}D_S&fR;8X|gnF^;1bA z^)nZJaygo3Mw1 z@HN8O6N;vlV$esYtwLSjB7zC60j71#dE&z#9J=PltugUR?&@ll$a41Ux-llwNd|<} zpAMM4g9Yhp)}srJc_GicMN&C_UJ(-pa(08))mmkZ1_vJ@a4A}jJB^j^R^56bO3ArS zP3AHmb+%NB1JbAQ%NpEFa>s-SYk7x)$iN6UrDeUr%$s(2qa=nyP;$?y$n>r?n0TS! z7izV=;dsw>F(jx0>senR$vbag^>0xm{WR(aS}rv3VIU50^!Zlr2Lw47K-wyWcX-mw zvKFeXYDx3*>5Hs0F<1*0N1VvDAwYe_biB3lS^V+ zn*gE8wDHp{@RIhno&7)!LsAQ6>J0gkFg0b!jf z=S)X@g=|0++p@z4_Rq$wHe75-iUI&g^#Ce*Q!3&l^K1wYrm6Bd36!)Hy;!X{cwK;G zq1S24ca1zTQ6^iMRce-gLS!d(s@rYbODZn=LV}-G%7PApw8+rnvnP@x>UHZqH!}F1 zcE5L(S~$MV0f)B4IqA2hYp0GXW#w9RayF>*`;nx7aj4&oUTiyJc-?*V2@adefN4>$ zTOcnBpGWPU^VW@J#}$(C_J%wIg2RIdijVr8gmtw$ipV2Xh$;q@reSEU$4s=)0YH92L1_Z&i-8c(?5 z3LDYNuHb@-eyZ!`N>>2fKqJ2ey~w8hD2trnt~R1MHKK~sDu4IijtQf!DWo)dweg|c z2>ijfXaEsfoU1}J!50BJT&=X#^F2-FH>T}drg9}naO&T8yr%# zub6(64y2l>tq1vHOnB~jLM>Jhal%4}>ZnP%H;~nR zC(r&mV$Li^fTFD8fMFRbUln zD#Em-2=nW$F*_d-b*p@SHc3j5Hu?3cwbyWNbM4IQ;6_8oJkBlREt2Kfqzm$)F>e>^o#LWI(l)Z$w>($cL4tVb0&AsRkOP#1m5 zk(`RKG~Hhh$IlZP$H{A6t#SBgIi9dX`c!4#Hx%i*106^k!C(m#>8&wg4;?#CsivmG z#h73H?dj6hP2~Cb;sz@E^B#kj#GLX67kJ!ziC0#a2aS7zkdb~hTa&qeOuw3}R=U=p z4?MANA0A2iZ}6*z@FrJoh>x9C@B6OMZgja-)~YK{#-mJFN5nletK2@`%9W$sZHJ9j zZhPVt4Z7%&r3og3%UqA1Eb;hR3$&}adtyaa#?w_P`?ec~V3L}X_0#|}K4TW~aWck! zke@ogkGH0U96(N>Rb!Cu4`tcS@g$sv>SbP(>x-OR6gynnyTsxIfdqD{?e{*H2~&34 z>5$xW>MLJ7Tt&tKeYJCo#JV?a5rkbxs>}Bga$$KKB~PdksMj-|c(scOsd0L{X9}LZ zpdW=qTyop8iR20^Qc3wzhZC8G)2LHcaN@o(w17vQF&vW-SGaZXqth)2Juv?O_|__d zKI(koH%7!My~W?S1AFX1H5GG1m&TREhGIg^ZfV$}EcBKDJ{2D&#Dp~@cGD&#)KfE0 z5ODl(#?&BG$noOTfGRcIOxqZ`pXRPr{{Rt(*jmj6Ok)INZ~-WV-X;-ygsH6<9RaNY z_~1CkPUO8T#t1S2WucU^?WX2aQb?|zbnzHiXgUkh8R}k?5x=`wz<9|N1lEVZ>xUZ~ zQ`9d;=KE;kgj283P5%JR{{Z|OZl_NljuGw0{{YogZ`DQpKm4+~Fgl|$(2{6Cr_AIv z$DHm3arZR2psf~AWGZM?7NnfU^l^K+fS28QK zoEej8(5Tt1! zwJw!injGfs@z%Q&?Pd7c1FI5g5ETM~hck{>+)*U2X%<6XbnmQRTbkkH@vopAhj}B~ zsRcxhN*%(PjLk)9mN?%mz#d!qYsp>HjT>esvlXN3t3J07Ca(HQMOQo3Xl)bqF<8 z1nGLiyRVEkyljPS15YtmyP8C4L&hKS-X`3_AdOAc*Bt|g&G%;wk-)Ko(w4F6f78aO zarnn!aOLsDOwUd4AO0>6Ksnq}cAp14nrH`2PU4eBtl=6pr?2Sk%VtwwbZ5YpC?)j@bjqh!Ls^ z_AhE>x%ka+(6;?Q>seaBp=3}Fc?UfRYJdk?j7tt*QeL+vQlZDEN+FI=%1&=mGx}(u zkIIUF90wE@r57~|e=Qh683L%@;iyUvsEX2~A)wCyIJ;X>d#(zH(f0myZH0cJn9W5p zQ@B@kE1ujX&1n=t!7P8?myMJV%yUvUoWQ3+Pcw##P^C2HlVMsXX7deabrd9oQg>`} z1rG2_F*ypZn55-#TP#LY^`&HclaCn~?v=N332N-_%kBUtNj=0ULK1hokrtlAjADgDzJLVIh6nyVQs@x)Ezz#8s_lwdCX$ z?qpkeZH8b_yn`^2s0OcIo*1ZeWyOzvuUqS<@%~k+k0%G1%rQK=JV{|!AU>yq=^md! zcTfRel|Wv0>diwNE6ZPUNs&Fc=5bKb2pU<$S@;N)Dwg+N3<#Cc!us1kO`C)49#C<3OB!CCkr9C9D(;W{3 zlO`})bxO`h$jyP2>_A*3jG?f#hQA|NS95lZFT5-RZCi8g844QKnfi0avybGZ(QBaa zoxv+nUF$s-xwpML1{;w%Xb!+hSt3wb00i$neIR3^aU9W&fuw>fw075aJ`&O#sx&9h zO6IO}w66I70MuLA!#gag3Zc6Q3XK+E78y@0ZN61w*Y~5uc zk*Ea}fM^SK9R}Lh79P>~n$dotrJjNb>ryLd!iJ0m0o{frXWgGA13KqWs$^l;nJ4pTX1!a7hxkOJB2Ih6csv=tuQG?z!W0X zw$IE8*@}HbAPDg%&k1u>Afz>R?iL<(sP--5Ti@6;jYL_kpK&?wNkO9?l*+ix^3WL| zm4QifD>s;s@-XDL@=nw8QD0*|!E$ilTI`Z%5-a<%uwWE}{3-|;6OSf$+zy6K!^J*z z>rUF0xj5{2AslaCOM5muS)t>VRxPU;GBS}zA0C+V=PYGoH91=6{jzJA`Bgv|Ed>I4EeP$&&4wZE9t9b>ng}j=VKKR&`W)Rl ze^1ZGzFB?9>|5U3zLgRpw#1ng%Fsnj%E?^DJzv}1!4D~l*M~QM#=NV_an9iLOeB+u zBanF!`957dYoBifizJ)&f=OBr;U^^r<4j*n;N~xdT4R;I7U_{)lh0zQ?IBG zEK*MG&QYaU#z=J{5E2a+ASk7)yZq~h2^t+~=e&>SN(8IqJsm|4{8G7K61GbkZO%|h zDC(B7QM*{j@Q#`2Yf9@(OUH zTr6g_%zMJd8e92Tb{<7+?!5Xf1g5$qdejAyasa56n{O*Hvi1`Jng zu12Jjp(9Yy)}An9tFz=M+>9V3+y4MhhVKf1ypBF%USjob?%Mu)SzzHKk_e@1Aqp`@ zj%QK%lOh0VyJ^JuR|Yt7b}&H411SYJ`KOmk=bVF|$xWF&a!Ty?MYkQLps|PvP*dtU zINX3!rD8UA{m0&R_Es02!^iNk+1T98J&CjZb;OffU6l6jqX-Oh$fPq6de<5(_hWI7 zbdkp+-6NWv1;;{cT5WEcX$V7tJgSDZGSlUA~S0-v>70B}ZHyX!H z%4f$65$dmKu=o|N#{rAY^Dk_CPZ0NJy*9b(cX$#k2axctY5R-)$bGQwi(hZIr?uot zpjQ5<%{*j+SKam)d$&x)WTuKdF~ED*{{SpMZ96oaULHfp<}{%JOBzL&#s2`py#?9d zuphYG!T0(2&Ln2x2xEvk0nxu5O>?UK{{ZH@?(kZ6&jG}%`kFiLUN(Zkv)auCmAopf zTlhh)JnP=y`JtK2GB$DibWPgf{{VHN%|G%C2oKLn?_ItB0FI_NZOqJ&HGY`MC*Wjq zk>-N+WaK-0x!Tq^A@1HQh37d-XXH7K8pDMb^P!B=PwE_t6pM|wF;t>%ttpl`H!uGH zlO6Y)1h~9^wS>t@-00c^-n|@uD|`U1#e@47+fg~D+{@y zz4q=;8^d!-?QM4~e)po@<_mP&advl5$n?_;Z`}Q;30o@ElM-E_Lu{4;jmU9-p}x6> z4k`(tu$p$YH+=oluOlQTlU!a)8hbIx9F} z%vW5<;%#{OcTD#d-0_kD6xbR%vPx`qU3+KLH)PSl*t4t#)8c-bvKsPMd+#UzyWp?U8f?%WT| zjqRe2S^c%GPU`*`at`zE9A~x8o$hO0xcZ1w(&Jy9Ge2$c`3>0ob^t;GP}`{T{xxp4 z`jw%S-A>t@;*0^8a-tWLMk&q^lfd=-W1EW+W zhmCVyPxf23GhZZ-G5E#ZBYTKGKURyXR?FC*dAYRZ4V~X1zY*%{G#%0 zCAr^hFXMP2krUf*(?G9VbSyLir0b6T+nJagi9CdvEy-(}w6}7#t{3#TP`)31bN+4& z%xq(W6b1%0_IAP?LAcyc)O`ABTQ!B(2%I!dXE9t_+Zx3GFnl}s1N^Fn2}y0DT{ z45}iM;Wi?xW~8!;R+{05J;++ow)&k7Xqg;x0W32HJ>ucFxUv5LWTsNwM{tr!BvM#h z+c*iyajB9iK82i<>rJMbVYg(IE_$`h)y)cgzBM6{ItKL-vYFF9($*R zI>PNK2_3|1uv|7_NdqA>535Syf9B+h^B`(!EThE#0L#XaD`A1IEZhS^mYePPf5ddF zcOTnL$hzCyGa|eDM3vejVy2|G@dbTph`C+C5n?chA1cpfbAt$b_~BmAzA8M2jcMJj z*-|a6G2O)*G*ig}$jgyn!`t0T=HoHrjK+648=SC`5NXwG56<^1T``j!kkY{77f&CT zO58hhvEzz_TdK%bjJrJqS0X4n<1?4d$mZ=XwQ}BLx*aBtJ6Bb$r-tnD8mIj|DymN9 z0C;FK&Y5E~lgg0t3zpT*c`o8}i95d@m9X&rzOgK7=|ZTv3IL{>9I`mc<>rUDl`CB9 zkma|yp*KH$X&iqTh@db8&}^j*K%vajz+#IdCE5a3vALPfbB@w>{l5yb!)%cdPTBk|iYxGI&K^F6^7Y~Pp~LskQD2XBYMqZ%A;J;$M~ zj~m2D^et*L;aGQc_fd$;ERzrcDggBjb@8=g+>AcZ87TZt8808~31y#(c4 zSV<&sFuCX$1;?Ff83T^Ye0J`Y=V)luxc>ku>;C|>zh-Bi>dyO+EG65zHibzsNV=rT z!)b8XPU$og0Em2+{#%px9^_i;d~_r*2Lhx0D_^yO8(35p1(efnp()T)#~B$Ul0uCLJnH$a zYicu==3=&rb~OMY+m%7nL(-U)iG?Jxi;5{EBx!W6d+#3ciXk$rF~yLpX8&1bAKrOD*J=Mbg3cwk5A?B zuF~v|*=u`v<(?2Eps%C-wf-M3RSr16JIWV4wTD{i+&&m@smMUBdOJU56foJlFv=@Y ztxY;q>F11l=X1$IrnJB`Gyp2K%@{3GV^F{pcHB1Y`m^!Ofr~r<`CQPKs5xhAP!G3S z1wrU0IQAkshcT1rj3CWK~h0Jl0`EaVYvm+=xVnnGb2dU8r?f9o%F{Xj2Tpd z3g+k4_~SLnz&4$?3;e5>cP|u$&tM^X9SwBfYx3qfp_)b|2~i5v01r~$VQY?e$z!`~ zn%fgxOP#}%gYBf1^Ccn1?97Tq-hP}-{I)lBi zS0sv5kwx3nIvV)pr(9U$9@xl3_eMv8g);;w)}T28)s=$%lio7x1KhO*^q!G308`5G@5fCIE3HbqW}sUu(ERyKEb0z25!C=5Q#Osolrqrax< z=yCv&Ok4Z#Wjy0M)T4Kpww?+rR@_|NGZu7S*eu%Hk4X;v&OIA@t--Bxw!4T&DlOZ_ zj)FgPXc^D~teMwqe%xbuUMZ!e&?-4^A`st!qP= zk)Q$>kjU&EB2-l_tiT2axsJaqV$KtHjrU@Izu~2GPu$)EHauA-e z_|%LSH&(k|WONb%^{!=!I+~m{Bv8nrG749Ydxy07o**_}V;%8{S8Is{dYwA_dR4m0 z{zp|R>$-!|4G99Kv_5*`iz5tfy@hkUoHn$T8dbu=@tp-+8Usx8J!_chN>drE%x1>( zwzIi-;iVGaVk*FrB#Jc7o3bb1DdCoWIIBVrom9AOIwNVN+$%bfvXugYfao+e{BZOV zIwvSLsTlJXIYyO2z zqUzKjXVW}taC2PL0oN6~RY>bqrsOB>rGpN+#qH!F+PzXcU?crTd zgXVor4l3&A{_XA8-qi(6akCZ+>Lh3fiOU^Jh2?{Q0d=m^+x);S8%QlbVzr4(&kGI8 z+eD;D=OPFuo_n#o5_^{&MRdrT$AttJ7O3k_tuI9eZMM0Snw>x->IaSuz&l!xJ~r(K zs->;2gocWGkx`f)e}#S+Vpax_gIcVb4VN~xNi5=3RaRhj*1Ky^zs3F-V{b!H%uZo0 zcaQO{f9+>n+F9DQWL2ZBzu3tw2a|U8CWS4L=dHC;N@KKPvRLKQh;0w8r7; zZmIII6&HKVmXC7I%vP`UmM)-G=sdhJCLA4-ZBI!SLHsHlK4(sLR zdrOKh=G@Au42-!%AJVfwf+@z&isPef!4LMpU86!r^R8Xpyrj&*kjHsslW1`Zv}y?h z@{I{7J_fl*x;ETNaL3v$yoO{_6-wqwK4g5xI_DVIM8@srI)H!)*%NF*E}#g>=m6naYO-Z?3eTeWK@DaxF<}hbX}4MrZtJe`X0q zFlPW%rAS|pKZYZ`v>*7? zH_FYsS}*5Pu%*O>+A}FpKuc5#8hsuZg)YsvMW`~EnvH(d{vR5hhW7H+w?`zQT7kA2 zns^iP#0SL`o|m)%RZ?T)%r?9=D#OQjS0M>senzBh8G~2o({ZQ%IIqa#G2OVZ4aTZ7 zcpNziF|=HCtBt36n6?#>wWb1mSMjGu4< zn8CS505KprBsm0~Gucy?6wcmx)Ftgsv$Tl>Y$N5;n#td)R94_C5DCoIr(Jqs;oH)J z6@ZF$ou=lWp+~}*KYgSt?X}+aea@zpIp?;%AR1yrcn3V7ZN3#EKGk%tP{e4pM@!$i zF?*>3RQ*mB0MDgrK*Y$qe*TuKc~t28Q0^O83%(T#arY9{11nuAN`(h`C4i`?I{4EQ z+uN^DjH@WSI(H!q^?Wp{?a$nJP%^7KfPEu%PTEvdWlG}CKHho_$UaqZ7iK)8hydHA zRxf_!)UpvS-k=f)VW>WMvWK>bLQzd!<91mn`z=+j{^MNC%^XprVu3@p=8~iMoawmr z#iTvA8xhVetNeb=f;I<8;#|5QPnAMR-rS5uirzI_BB+J6*CUX`;lsgiNFuCb?VKl| zbYpLcwMI8`-nnNJ&cx9y1DofUmbM9$F_PUs!Iko)qdS8-qi9@qy!xF2AZ7B zE1nds0X3p*kT9LPRE@Qy#b|09z=Kn*02-5qoc4l%+M&%nO>rs`rfqDc6cWQg#Cph~ z%9#773uLCKmXwDfgFdokXLp(9Jyqrvb@!5LYz{{T&LHS4A_`Mir5qL`BkDT)RI zTR#iip69c+CQ^3P?K#)2X_3Z1JC$fvBBa5?!qBZ~4y}`g?Lq`!l3lW^Q!skd#~7|d znYr~K{3`ngjCnxi0@bMTy`E$X{{T$v*?P9nP@Oz9#!oMpjR`M9;I)4r5fiipI@W>4 zc65rsBKv8!htcY9D$~Omsrksmjq2+ghZ{%f)r=aC8g~7e3r^pcBu|m9(?;{lE|`b@ zZ9a!9JSs`!82LxI4XCg7`rcODQI&usJ1uD5d259p<$7&u0<{|_x8j-m2q*Wds9Wg1r%PUw~AL{8$jv^Mf+k9(H@T&as`nDUbq-DzH`%NJQ%HW;!yIL0C7a?8#@;_kHG;&fdUHp2G_VRJ|Derm~q* zPte666sQq`#0?1a;i290yrGrI4~QLe#nm=W+wXN_6+%ac+|puwzdEj zgD?d_LsdVAjvza@B@a^LQexnp7)PU%%AKd%_(2LSqd){v6zK;xZ-lDs#8q7JaED1WNL#Y=%eCxIb0M|i2D*-xlvNhk&uefby2Q# zrX#<&T)>War;ix+kaqf4!l%#M%SG7JD?=?ZprJH9M!C}vPjEi_PtKhjWRf^9&?-tV zxA9d=46@qWYDZ9X%Mj%57a}d{!Q63w{h+@pkcaK;p5nK_*10p7KGMV!3RI5r~VjWy};KFt4_ZY9X%{se-CLY zx8=Y(=qXCqtt*C~%>opZG|0pxBSIgA9Xm`J=|@x4P?h*;hF#2!wjk2mj`czHQ~5ha zLKFzW9U6sy95&u%y-HM;C%{TH-hPS2!nHd}BB_L-$ja?bWBPb~)2nFkC>%IwmcFt~g?DZ=*TihV&G zsmOuj@YfB0lR&C(MeUVPDfB(JDWO#gPPG{tivH|2?nn@%+LRzJDWymb-<<*mQM3_~ zii7?dVVCkC9l+D^;fn&d>r!X8ZOca9+Y?OvIRj6IBY%;)gHzjv#)NRC-?!Ce+yDwx z3IWvhuS_=nKx$QKLk1(DwGeO#8`LF3Wl>5Bb*MO3>eah}y&&SmA7n~tf5nK<0Hp4y zBzPTiuApIXObWS5({o|5#B2tuQ*kg`DI{(tgj8lV&*O^-GG1&o(P|X9%xM-&Rb!Cj z{nFczvKmm+pwIRkU1MYxw0TrhkJJnJ)jyEqB39Z+T!{dR_ZMOX*1Bn?Sh|KsyVTNFsd8CjHrlf;Zraj4&aeb6{9YCF#-{>llJ*st z%n`Nf=75!zbG8NdI!PH_q=MAYY2te0S;tEA8iH#znTs66mKAWlVLaWnt3A@)C?jhD zvVb)~p`iHVdB@2(iGz1q!17p_vzN4ywZBzz7k0A4eRU1G4{SLVr_-7J^v7x971-<~ z-7ACU;^M{1NZfZL1C6UHv~IF=trRT)AgayuYDp3eMnGwvgX4)mRqt1r zuW%lddWLAkXVQUcPGDCo^{TobKfI8>kI_NNBXNwIff2d@3CZ1XG zQae?Zih@s;Lklt&Gt@vn2BXcLAJSZvX5%<3o0*kSNsAz9o?d?pRAuHe0qNGMxei(^ zb`*8%Sh4Mh?P5wrp4{>To}#`vV=b4+I%nL2dgu9E{F6D&-RUN-+;4B(w%H?$MyE0x z(_hD~DkjSWZD|&))^{rq8y$Cj^=`A{)npL7KsY1wS3L7QGN3r7o_5Amy62^5ax!hb zkMtV2T5wW^Mkm}%h&0lswLgX`GPxLwOBVH=$>m~bA*a>Ud^D@|mk9*XqC7;lL#X^| zpsq5xe2d~FkEXI2JhZXAxDb_cu;CKa0I`*)`Hvh@$;gRy*0Y&Bk)7!w)~xp2cxF;p zZ-Y|484;FPtD7TrwW>U_Y7-dQf~Rh!RTVs!1~3;)E?N?1Uv>GtjP> zAnn0)G~V!jo6!m=$dCB>V9Oh=7$lkkPTJQ@!fJou;l?*`O94s^QiED4Z$V=~XiX3J z=avIn=Dj*n+6!Dj7pNP{rc+YFfKY&P(-T-MgIcwLn}7{bRr{ON_K9K=fQ_ND`0K7G zK?ApVwymMWaF7J5b=~|Uc@6+w-&HG?SpsXGFCoQwLWnCzi-jxD9XeKh$?{g^nW~`F zl1S;}t~5B9Z?Uaz796I=;T|}Y6A-nk;amPc1N8eq zD;B@>syx$!y-xKyQo7|`YfQ#8nCw=9PL-^V7CZs~s*{ke^CHKjE9 z)x>Z)!F)PW3q~W`^&bOT3j8UBlmgn*&Oiw&qP)n=cF42?AxeM;N_8U%LPeD+Eqhvb z3QRB*XNg>3gh8M*;dC&8n5#oo?pCRT9vh_MI(5iVV93z#{t_$ zl#%GrEgm?Pff6{Nrbue?uWF(|=MMqW?2caoJwlgPe9z3$!R zR*pNi_fk@x`(#Bxtu?P+xTT*t;1J7I9%m|0HLeYB-BxRE7KA3ir%)+D`vKP#->r0k z9#D#*$mF9<+l##FY7Q-<0hT@VG|$f}e%wZvBWbg)d}^*-;UbqGPsXfPd}~TKFbF^u z6v+HeT4KIg$rmYASy_Rkg|h3dKTbIeiUBO3<^a%-F^Epd0ClJ`=DCe2;ZxD^Y8Hwr z%}ljFuxo@I-PQutRQ&fIr7B9>juDEh?Rxz^I)9!Z%aW~B@~Bc}dxHA(shBMtfc1r@ zdTajx6~tFg9bzq2vgK|Y5o$>-UX|VlN_4{y$Rwxbs4tzm5qfnEt5D_}JjNL^DfF6R zN!rqs>0=A^45_Hs=cXBR-K%Odo?Y~7)0|0K_vP;0 zT5isOk37#z@L&zQe>DRe%T#?LjwVL*{XZQBei>kGD7w;2Z&W(bV=9hL>Y7t64xMm* zr)Vuf?A$iChDk#y6wbK~4J)r-3>ag#0yLwJ9i?@(H8Lm~)ahMF`E|qF7voX@aT}0) z=n~|rmEJQs7Sw*;xE{k^dV@g3;^20vrn6nBZJ~i-P-tig8vJnZ#d0f!g-d2B4fhl$ zQBktqkZQ?5JT&=bi7bRT054J-j>p_BG`QqenH=e%KZi_AZZIuUDqL7iFZCc4#qQL` zU8%SNK;4n>>4(_?8VY@wq)3D;Ypp`P%1B#0>e-X0!^mP|Vt62>T7I8tRsu)iQ1>?k zRBr?g1xeig45 zRHzHC>X;8n2v1T*x(rE=gd461t2j6)_gpPjZhMwiC*P1ZXZ{Tac(aR#+BLOkBH|d( zJ*L?z8gArV#=r;gxbxRKV!@nyNc8Nsb8O*N`@Z0jYqns@e}o#=nF{&h&l`&_ zDr(~shZ0@(cb!zPdG(Ny?s~TU3TR2ro>;w$j%L&%^?L^t=AyUKI@A=r^S}vnx4}!3 zUkpfZ9@0WK)oRWlN%RFCHC*I7qCrwf*hZk~L!C3OSh&aHn&1()TDipFTH=H1s%7_c z&Pg`+hB^wA+%b0t6w(7+)bp)QCkYr}Wbw7$1uB=x_r3mc#N@~gH-goaEL*~cq9tBIz%k$w;2J6pZsTd{L^RB6s2*6bhm31Jq!nh)9g)}@R7||x z=4z3YRy5tA1ID(xe853jsn(>MC2z>z|%jR`{J@D1%(n>pq%qG}5o75FNum zFP?`Fv;Y($Q}O#|Y7di-TOyQ1k~c zhE>6CYpl{mJN>t?HNgC6zp1Nc}!9{{U58Le(Cvq!K_Z06AyY zxeT%AD&dVFdRED$73;E~Gl0oZ27s`uAAlGFjf2#N$_*zZYDHN{ja}VUb32IyH3daA z!Q4}gbAdoc@&y%RNmPpMpsfOxGz3#Rf5E^XjT@f$%B6ZV^wA>(tt-1gw5CM$!Cr%% zea<$bm^yC(3lBjVjOqwIDS{{Qpe0=a_|y0nj4QUDpM`pK)SM;ZLXB!H?k;atO6o7R zHz*;2K_k?v5pu0*LGZ^i?l>GW3$!)Ed)gO!k5stUyYubchVRg+K_FRV#)3^P4&g<%77Z3XfcPx zEn|1M7aiSE02&`3w}p0&PB-K+?8hQMZZHn3>ITG{IS1619dB88DHx8z;ZL|@XiPzN z306d6(fh<4$}0+;F|WgMmm!27Uf@dDwFlBX&Z3&(-t0a-(Y%tv-G<5?bl%SZI{s3K zFI++QM~ZfW;)x0w7F1CJWVhjs|(0cg`|%k%}#FmFj-V z&2;$4>ofodMfg@9IvUZ4$%O*0(kQ^^O$9Z@u9ehcb5E!$Ct63^5@g`*-dOE4BhqQ7 zOz;8gOEPR8k~dI*P$De~)b7`C6f~w?2>dW8y)JQkl~3J5V;h0jsRLS_e*>S(0*3I1 zq4T2{%~b6%wU%&6JtnFUy z+|loUY*A?DK_vx0gdd|!bFBU-0I7cp;N1TJ0D##_^a#Hn8t6{n?r|rx8r+c82Bo#} z(@bQuIN%ilOV=XhxF<7n%WR){@U3f%=Fg&%*ZA3LDn)#}v6-I~hiPi(*_>;Gi-Sni z)}6uk1hCB-+sp2TKpG-JX-GS^AvFNyjNWbw9MWDK(|e_dokij%V4?+pMbu|Mry zbGPy^^YJ6fiWuDxd))SiueMM0ok8ihPZhN%$#B-u+Yu9Q4%0b;RuKTMDjnDV08LGP zy#@w8Yu@l2G;43FrlETO04krE$HR#b5FOF(k-@3~ZurZKQR*8TO1aOuB-_HVKH}jN zxp?E1(t2!WWR?~TJqrwgRksX=H+*J#0~^W~+>Zp;?ygJ7$?W9&u$d0>)4ZL`aeIFw zf~i)KeNgnQlejx_M&7Ry4W*)F+IK4v^fpv11v=wfg~&A(x@taMYWo`^UNTV@K|bKQ z@EUc|LW>H<`;W8$jf`-s5NN8~l&!xF+zt|Lc|lkQb9Q1~$10n6 z_c37g8+{}dU4RM(BxQ})8_AY9JQ8cI@O{YW9M=aMB44d@&o9|GHeaY#wv*cTO(xoQ z0(45ynw>GyFnKI|fZtcCG+OK&e{we^jF>vaC&$Oj&Zx5S&1_>q5zI+l;Lz>x+%qQ{ zjBSJ~R<%sZ61Q^tkRO*ykDdSkE9u^7!E|FV#* zcIBxVX1*B_f|^j)+Vx`_{UOIwOd1&Tb6kk6O*HA}ikzwU{W{d9%JXCiP5rp4#kT>L z+IX@3;}wo77Nj-Lww`owj2GJ#3s6hyO$}*XMjAdelHs_nz7^zQx$3m3rk_X}5rNW) z%_X1$v<*k6w??5AX)^0yBZ9h7wCyVGJSxG%U6>`IB%S+>4Gu=5XV3TIw<<8^?y7!9 z0V`B^SJE%-*X|bht>L-%e^5N{@wQx z%)@3h#GJ?;k9SR@=s)XUVLsIN92bilhEHfh8`SmO2n9@Hw9`L^Jg3~)E`&G$cP)Bn zhsoU=OT0eDy7Ra1QsOvcB(j6=~_j#sB~Je^=PaC zCb`$IOj15)Fsjs`-Qf*WdxN&2mNy>Udrm=FwfG8j>5INMm3thmCv`IXb^@p9@UC3% zzQ$LI0X2zSk^an zYb~s#F_Dy-14`9(%S=i48tbiVVV#r4p*PcI2w6+|g-v#o>8&VDJTO24R!;gw~EHj@&IlcD1DI>MykVTSCoTF zg(Dp2myPe4@kn+t#Z=gX;qf)wJ4$$l6fcldqvptR{}3^x$T46i$x zEg}+!d$S~aWsVXK;9-)r6v~**h>Xs3E(NV;)N~C_q`bDrmrM1d?y=!V0}xh7Y1aW=t|+xr{{Y%=+|Fk+b_`NO1k5|6 zk~XUx{{T~qQ~(3KTuL6ASI_UbKisd}4(Gd2Qf?!T=1jA{DP?ybZ*hEt21eY?adEQt z^(D+u0EC>f$A&xm{{S#MlbDg%-MsUUizlS}YSxAe3%k^9sM5VP*njxF+x#v=vU`z( zDpuWwLLA`zN!pu0T?iG*{D*z_7k^*!JXa34w|r%cMXv6|l3Vf7+d@jP7cPN{fVnU^ zeZMQi@>ZN*YVf>dyvs}NKQnfrc#bwoY$iC0ZCI5Lq>@R?6t9+NkY3_`CjS6B zw2nC8e%RQJ_*$(TtQ=ox!qNAabXv!0B*x>Bxja<>vCywZSDj-ygjYOhT?dng^7kfHd#P^QuPp>@(-!7wn)(J)g9`) zv<9K>`>VJ~yS!B8ZY}u(aTM*z*`zRA*c=UAp}##B-Vupr`}f zaNNK2{wKAquP=S5=#h#Z z5OwJ93dC}qfrBHQ{3oMaRnfcx(z>TnT^si6?&Y5&5?kK2tmvCf)zz$!z}BUzU)qrw zCEo4oE7arKzq8-@7sN@7INn@0+zwMHA&y{AtY}nqXx6;*`;Yr!Cl?^j`Bx=9ML+QjRRVep^3 zIS@o0kYml@-T{jyKS^M>rcdL2O?m5+>?{sMwro)@FEqy;`0pTzNc{1;LE~!Qc)mtE z-a5;b;qIe?K&c#yYe)^s$UcE;cYBdjR><|oe#gs?CJ1u?&OkB0vE%`=usYh3d`CjM z*Cfuwel}dZeM4*6-Ury)xW9Wh0msO|KaRRlo{sl?Ijh;*T$pXljB$@IQ@mu4|ZQ zwj9?M6*~AZ7R-uhckwBqp zYAQh#8R?4IW>BE~e5*Y+Q{Cx|l1ccVl}!kiB~MC%jZKt0)rLoKBc*f1P40330E%l+ zTqJ2OarG$#9Y@NU++3t;^z?#Sq|jy!Gx&`#rbJ7S(xZXTaCWZp=~avVU6D_yAQh%# zF`Y>HWs6LFK&3%LSGb&Tdyy2@Vb1puiYbq{pnW-!n`f1Etudj&;C|?e`X?>TVLLL(oeQ2Eudv67FA)m z9J68jvB`U*y=7>AJ~sKXE%+Ti?zPz+soNgKq(!4uWFP`) zXem)q(3)eA@?4(zN)kyG)^IRDfO%HC$62Hi14fC(8E7d|23va2<1djb=A zji%hUCbsc9$0*#nzT-nv&|%z6V-UL2wK9sue;jbDUZDvD^Pd1RomAa&Lf6w zk~D!-8F`X2GVp9Gi@xIh!(e9#GHoVB_VlbN*ACW21a- zb3qL~MzzG<$=y@(*G+8~xXfmg>SOFO?^>00KBgT9jyoqC#z%_?c|`;8uRU_S{F$@+ z5rTb3U!^|URnzVN0B&A#H~ZEw5#TDD*VIU0SzHlApxfh2Q}+ie6cCW0n!Dg}BsoFk z6B2dT%}0lYcgNd~&1jO{l^4<@IjwgZ9M-zf{utq1#m%+yxrFK~t8h3@BX9>|*HQ62 zF@*xMfUKZ73-py9mCH)zK3L{iS-bA1eRRA$ZIQL7>NNL}RJ1}$l_gYqvH?YU=|fyI zj!dozYLxc-Y7MIm@6Kdf!Egkj8DV!02H-Y;eMJ2=CoFHc3=-)Yp;Xm2d(XB{g4fHB z?kDbCmK=5TaC?nC)GVsy){(j&ThQbKSEq(OLHlvrEy>7@?;eH~Aoym(7BW#NSh4y_>T}1e@NwH5U^D>1psqi| zV!VHLPgL)6xSdJWO=OdXb0I?PKwZL_5KoRSnYArjn9v|{B?>J;e8Q*;Kt7@Sz^)fW zPeZAtlXYD63Oy_+b2J8mwZdFe!jMpp5msIj@=I%&_OmK_cNHdssUB50hmy~6iRn-( zkCew`@i{uexWHR{Yxl59{H!;CV;^!TxZY!cY zYr7Cd7)eG1Z$u<2a-RDtlt4ERiGPPLcG!7U_}Mf_^VYsj$zj1Jt7jdHC`diY|ZY#ZoS zsb|ANsd}(Mb{GS=Fk_&hAewG1;4w`$IRt@YRWjp|t&*G*y@=X;a|2P~<6IL4(dwoy z2DHNN(kWDvlUA9EngL2vAO?7m7DJ+P0cw*5OV~i^RL)0<0J#V&T^vvk6W69MakDG{ zDl1Ee$Phqr`>Q|X_>xvrm1|#0`f{#S{%mM*^NO`it6PJ}G$y;e>pJE*icpyM?)sH- zt!uWY!noFP`L4P+gXdd5Gm(1wTtTX&7KseT-s$5IIFe(MQ|Dxxan!7@WHs#7@S!jJUo0Z0??a zajO}Htyx+S79yM3{oTO;%#+hhRu{HlTJ$8FAVO=+ec{+=i^ywP85plCzT^N0kNc%q z>@PQM+DXcun$V4XRl3IUo`Y~BI+A<^ z2aN@MI^#Q)iM0A_FO`miaTPYAv^uG;o?bp3aas;3kQp{T3tQ7C30Qk?}g%AQ%A z@h=)<5k<9F;!auV>sjwH#swKG0Bg8bzF?8yYmE*rQ4R%cwXNfGi@MfJ&v5a`NGrK2 z#i{V9ABe`w12w|n^sa-%@-JurS^XBd@4C1nJ4ni<8F#9wUsD1N4s;r0qwyTCv=oq9 zYp?J;t0H4}mD5V)uJ7&nZDlhi(u%Dcpr|TqUv`w~raI>j%11i`O`M%;x_0+39MOoK z^&5lyt2h(1A=Q}EL7ucDA^2lP2r1%gW?}abv?1$KF!BHe3TS8=m8m)S;m>S11*lSC z-CiyDRJ>e>qcH}pNecBqKBVy*x?#6K4YcV{AB5sVThiYX<5Kn6`*Wp*ZUwd+#Lp_YW(qpt8h=7BlpAesoT3_xpzqSRua!C}jER$AR+(7jKnOFHi zI%$fQ_PoW#&v0abCW_LU5A~~=zj3kJ)+BPdkGs8Iw!8Qp0)5pB&hu9CyIM^Z#Lg_1 z<{4tS{J5m1Yy2{hdL8pmHFduiRni9ebtJ_lsU=}E&l-Y`45dy z?<^}Tlu<*wc3A*HBz!>9n7)clqgv8qWtOmRsEIhzKsz5Q5JC`PK zc<=!#rArFaJlDd6X`T|-uh&E~7g7?JHYApyQAUi`nF0X^PNKL3IiXr@O}8xq8`%Cd zujni4rF?R(RH3dH=S_aG%7*l;c5A=t8-TC3*Tdni0ra-?+wvS+Vd?Ry2yD=mSpimI z=mRR|bm^8NNbnn_M3W`gE&4{aXRzZHmLyeWU*ZVgQSdeEihPNXZgr}YD>=<`oK0LU z`%R=#N-1DS+%o;S5I=q?rR8Id`&=*KS?T%U#}Gj&s(rj^`0P8g=vc$mN4V&Py|a+@ z5DhcK4(D;&P}#>oO-3Ef8_wnjAkcmb_x?1}A@sVGG*Bx-M?i3>`DQxm z4M>Z*7`t9T+H4KJI`~w7{kw4+l=kK-p-UfZjk}J~Q_wNf4;=X3H&`B*sRx*jKpdnT0@kcaG@!0{L$V_+QUcS=&&D8^fI;x_qJKuZ2CU_nR=E-> z;sH7Qx?zJfM!^B29E=}I04c;geb{AUlD6Ttpc+w5ZIveCnv?V zRRN{8OnnB@4R}Rx<8Wr&Jlj#22hRkJTLG;TpBr7YfS)ggCh=afl086Ib7zt8C&U~$ z1Y*wCmf3N^8ny4sF+{FiprkIi@j>gIHsf^FZ zE-nNh7r)zDVt8BH$^uAp&(J~FF_;*T+?YW^il2Q+9F{T*w@(^xCjoTipKZw}FjVda zx)DQDOh_4UfTdQQZz}^rDB3AD?Q6QNA#Kc{(_yU*d`1>|D8NES+EC{qxKsf6(WC8Y zckFd2+L5)YPwcI54AHnl+j zRCjj_Om62$0`(?@_H>MPt(C$!rF|K%U1({BPck;#g!s`8;b6O-(!=2I<4Z@`H!M9# zxbm`LWK16%xQw|6`&DA(J_gr{lPS0ru_7g}dUJAOFgny=7@-mQjFT<$A4(DPXpzDu?LzBBAYj>Fm@~P;L$?jZG2;4sL{3Uk94w%7meb0>LEcJZrTgPK(Jsq=ad`)hA zC)@C;9U>cr4*iwVfOPN}=lT7{RH;GWwY0+Havnk7@=DY=uEe+nawZ@F^rls=m8XU> znSI9zcc}WlHKT)um7!hrc~!O^%eYxotYCnDmry)KF;OQy85-5Z9Am?MMDF-hvi2;@ z##e|EpipfCT{7xwaSiXuoGBoEtw}dxs;Z-+ zw~$SIaO1h%*9M39Ses_+OHJ6@J+-x6peO{Csq!BzA-vVKQncUr)&c{r?}a-50I-|# zox&M1B!sETpW%k&?f?~?DolK2Bh_+hVlLN-5FvmyL9J7#hMri0{!!Y8Ao$egV!4g< zi&MkeNo?r6J1 zPYh=^$P{@~)a^*sgER}cFGb7YLx|7j9#k}%P=Th-0e%$j-?vqm{{Yj_X}4hfNTwS9 z050+AE~Shpoa+HkSG1qp4IE)bLCFB8T4|hx6n zeig)La`GyJYIt#wkc0tBL)y`rueJ(`{{RkS<%Yk@J#Vk!Kw!ksjZi7#cGDpq-?kS( zth7JmHN!6Co=rZ;8r=Y28j+8-RA(X1lp$BAT2Of6EBQG=vIf+X2upwWni%mCYSZDby2|5IH6RV@LWIE|ju%-3O%)N}3w}%ryQ*uIoee zF9k(BPTwjA<*6&4YHCKkbHgW*BdyIi+!uXYY1(kHFalaHitMMu@xy13aJnr&9yvC3 z7CssiF4(~o$QopNS1bdbTsoyl7*WP|6sZXK800l&$PIS?0ON?~J>Z}=scnsn{HiI$ zybYAf5UpJRKS}5{KRh-wWIa?;U55mNbHW-{4i?`k$ET1v=So-02zG3g*ZBCgOVh){ zTaYN5NF4<$^20igc?EE8VfZLJYtN?{~Wi2cgez9-|;TIGo%M>zr3kchWYPWVwxZ^wvwx^8#md zj#gnpc66X0vl{+C5z(`Af{MoE=LuXzhsLqKbGTx+GCb_zRar`g=qsMRakS%j?{I+7 zfYuk5=cB@Vi-U)l(z%bjJM9Gb2H$g5pi`$$+m55b@Jnq{xX*C+hD)*wa2nQ!80yAI+wUNe-OuU0MsqQ$bO)D_uIgv1BUBR=c z{m1aeq8uQ?2{x^UCmv%V#XdEk@=W`K7htj(;+C2J}Cn_-?`1HfBkT4>t@TtwoWPS-xVc^~3sR7Lm z4ql%Ro*I`ejB2GbCnnJStORJaF=g9wx+nlHy$WSf#dYWpcSj#tCJC)~(jO z1G`pFKmbvCA1qTz$`sndcUFFWS}@bJ-maD$40}{03d}~OYJ9Ork;%BZNhY%Se5=)5 z@*7smJ`v(jjG;??D?yN^Lrhi4mm7}v6172<$p^b|TUEP?;tH^Ljc7C^YI+KF&lUMu zu6t6%RR(t?(f|agt4Fc{+G1R@tt($4mbj*n?mM)qM@;!WTa7pf6lEPMGSF6^EH+-3 z7pTOCAFA}As{kpspFhX&!Gd3NNpS%5G@x-xGLz@0@2(PI1=`X!skXF}6(ow&;Bx)F zaOebET6b%k)lD;&SmHZ33Y}^Wf44k3#yGeUrAcEP=I%?>E!Fspurv$!jd3h7#@&2s z&ld8=SlGc7s@3!uB#1*j|tVVyeS>k}Nf zr%yW5arhvQ8qV)|Dwhn^twGOEmt8TcgABES$SYlogrIG0#ZoT$I8oetra(y>N&f&I zgBQ5)JvQyJ>spL#DF_2@)8knWbaRozF;qgeJr0M&c?@d!>?b(^O6YtS6!*8(Ycu6} zIb@EjIrU}%@c#fhV^fWW*v-n;-;cmxn_+0RP^G(+&dkQDXg1d~S{l@5G{wwpLK3x+ zZjB!r2++vDfJqt#00K4mVF-avlpIL6 zN?uzgU@C*e1pt0E>M-8+wESr-nWEdT=S$o1N9x+t=xg}YA3QYdn8m*}MxQyYJ5+9| zICzh9)4Ma72BZ&;8##a!ZACnYXQ-O6TJSM4h~{HTYPo_BOuPmmO~|>rC&H>SIakK= z_`21C%eBzwZiT7_pyolPG_F{ro0XAoRP*z0bCV&-Q?}ikJ=Cg!J+oh`ricDmi6=DH zMyjT&@;i<=7+hSetrLgrhP4WAQ`|a&a~Y1AWHQEkH=GXztkif`H&olC*muub`o0a7!_cx%%vF+VQonY5u= zt&^RWJ8mVla^m}SVpS;wl=3bVt)KIL_RoDP5- z>Etm`?8brW`l~v5Mrh|FjaY5?RgsX(Xd@mJ)}P`r4ov4e(jE8JR!1i+Z6UG}wQ02B zhSk{~&@-hoWB&jwS4}<2ky+`vFHzoBry=2Fa4L z8XTpMD%Q0hAK6S-$(Tvjs<-Ju)n$Yc=tx{I}QFEmM^Zx*jn1LoqcT}iS=j;fzFBclo ziftQujI-M z>s4($MQN5Jx?+evkx*sGV&7ZTn6XlQ;s$@>aUIW5Vp6N!ks_A2MWy3_fHWX<_+buq z?}aewgGmEZPLpDa5D(+y^207`&x%tHaV2vR4J8Ps z&3^R(fu%JE_jzI8(+yJe_vxA7hKPAA`d8tf@4|*C@cVt#rs4z8(`j$_HejFGO7s|5 z#{$h4r=!G1sMe7eDdR)dt(dQdB?#TKN^r#Xji75yZZ2qjGSHEs&-UT$c*(H=DcE6u zR+@!t^e#&>k`B4&iOt7%%B`D@{l1o^FrMu*KIf-A^geifn9gyqwMc>z4$|6%yS{}L z+9xc-P&F0TOigYhN()u27`xG~2TN6Uepo3iK?gkPugAkYO@|G{CY5gv0CRTUq37ls zYgMW!K=^dS;{$W8YOsTh4t0ga>Z!!kIaZWC zX_&;=xTQB0e~H`AAUK7nDZ7Tb`-4oVbn9B;-YzWk7OOb;f`2Wlhs*a%TS#48?j1p? z%dcM?XfU{z$TpVVwY+}^9P#ZftoxDgUPf0eT$NU+rD%G51r9Vg-M@~SUbUEgwTBx~ zE_zjde(<@TsAp_}%DGawwH!PUiv%@s7j9$3cQLxvdT!#lGPNeC%RJ6>8D*AOogW(x zz`E7LI9zcUAYP*`ImskGx7+8`pT`oS0LZ>#D>HX8)}f~F~e1%9YAL?eISp+GvW@tFyM)z z=H`|f#)L{pNq4x13$WIwBbWGPhcyFQU$+nn+Zt18e6$Bb$NU9POaf^k;Cgz{2uihg z1JKgHcJDdKg*n*q3^cI8q&>URt& zE=H->JwMLBJPn{&g{EZ5m6~0&OO7{nJ+@*EOH(iL&s-tIN9r0HTp5J8?nS0;V9V(* z>B_xMX9{esaj?IgJj{??YdX9*uU%BX^BRv&PaLa-d!-bm8}r&5bXBD%Hqf!9c4}~+w z0NQk}PFz!ep0px5B}&u=1cOmgL;iRqq`F0S%7bcvLhT!?n)<2!nqYLLZY%25Xf`(7 z!PFfnGZfcaXM&?H^;qA+fQlLcRxAPA^ni09`QX#70qXk7T8dDxr~@-Va@2m~fB@=1 zS`Bv67M6~niYX;?H0wj1I%R~sTj5Q;9eozJkGA(h2_cb7u{rDv2(Fa!CYZx_3~hP% z*Ddcz49s%~01l~NKt9^uf{<3esMWTUxCX9djX)LoV~X=}66XP+uOxS#G8bJM57<{? zb|jHWeHu*(xrx<_2-LHxqKxCvhEj6JH0JlS7?wF5qW=IR+uJ)wQ6BfLLXt&>5j!G;@@iFI(yK*ISOWnLV#ac^8g{`PiiKTqR`@Lwf-0x&` zc^!dZ!1|Pzp#v%rua-R>+l~&#I%!?g_WLNw0BVB9kDdNC%@f8qv0{sv18F2SX1k9< zHO81Ta9*|AV|myb2TE>2jFE^3A}Osu=YlLtE$M1c)m~V};A>J1E8~`#(zrrWjE)0D zG<1k=&Z-S)bQz4k13V}Jy82Qa_ZAaklPp?@%npAppOjHe~Ru!AT~plMw5ob9;X8Ihe7>0LS7 zUD89XLs7yjvbWPwT5FNZ9P>Ah7akSFIlcqXQ*PxXS3>sRaR*4frwl*^OE@LaYC41G zj9(*+BY9~Tu0_r8`%8nx*61`ft?>NGmW+-!reGM8#T>CeUd`}w` z9)y3j>ssyZek)aX{K+MiVH-We?MlGZndp5CE0FQVQ;@)Puh_(FA;kXx%j5RxOz|18 z@ZR(GpMTN-UrX*!sZfo&f(`3b;JL^-NFU#VJBy2OQK8(snie1lM&bcfI@hi;+?O8w zQmuQN8_KF!c#CxYpBmlv{{V5t%)sdkxOkjF$ni%?hlp=7b0l)7aOQMd_mNLE`RjX{I?wrL4@vmWpUl^G&Q0& zp#g=27Tr(x5n4Pdm&ThTio zj+={iHcOag1Uzl^5Kt)viU1_3R0ToPOh=pTkpX0yIw!4Fz$~tI(7NTBj8y!wy~5<0 z@*bf^zr{b+vJCxq8I$Zx2f7LW0MbCQ4LwklDWR;Zo9vkvbkjrbDk8HW03U3f)F9}@ z9I>Xv<^l9D`p%WR!ph_zgvj<5vAX{N#cL?%J37i$xk4q0;0)*%h8ZiUlhSCa)USp% z9Ct4~Zfmz{K(3|0_Y*TQ1}>Nm`SoG1RzT;fhp&Ew%KRqgV+TJJIJA^MP_bVT;Cfd)a@MliF%KmI z$h2@hH7qvt*T);!C2Xwp>s#JBXz~Co3QJACRZ^5T=}3@nE=y(UVNqIAhe3w&W(^5f z>`zE7vQv2tP%{+`mf9{<%DcP{DWrbqZaPz}9;6DCglSU7LFptF)|KdT@xxB|tvvT4 zZPt{fcN!edKz|KRxJ@_K_2UsW0Gh2jYpKuUgC10%^!d_7RrfJxQb;;vf6oc>rEVhD zHl?8(7*N&!0P^QgEbxahuJn;_!kd%UKjT|}+kWqE3jQffk}OQoE2&y5P^dAU07aRTg$#Fm7ERHl%{k91FG)pk3!&cnE8>mMqGH0 z8uP?FmS+u>`VLMvGDi51tISp(b!gC?tffdLNu>cQ#Vh4fF{F-Gk@BsqIRZckL?M3) zQUw)Mb4}R+;0UEoemIa26{Jeyg~F};b+vXz0W1j2ick#qRGg{~Ccu3)oy?emNzp4s z?Yk}9f+&6?V6wX7$5O}!=iyg&o) zy{mbW9!eWz))p2V8w0=8XCtnvKKT4NY;RNHCJeIp0-PCRL)Dd_&yi)w-%R{78i$PaLILfaKShK z0J??cJ3mt?soM|-cU(_wE^{M`G@sLpn>DNb3Nnskm!0&aO8PU0qXe`*KcBydEcg`~(Z%-0-i z_b2z$u>SyW#F);SJe01ui{l4$M<1lAqu*Hol{VykD8b{LS zxbA!UAkfza{n`HFsqW!o30LR$4IUCFOW1`5-WQxe6Vn!~z z%f6?$>+0)Vkw0|a^SqAxX0p8IW`;z)?hfXZ+{11+kYup4Qn5bv&NLrJLmnK;$)7S; zWMw(enZxQOes@2GdXEjUF}~Xx8o&TRd^~`wXA9Yh%y$iizcGE!_Z7=QXD26f`dKe8 ze?b}tk~>>z*jaI0B0`~14_914Y=%EUx$>!vht#7=-nd`3o#)(k_k5ojZ)3!ETr9R$ zmaszCVnr{qD|@|)B;~n_wgI*w*%!cKB=fjEI*NO9VmnUT)!(?SJ2UOS2gh-J#eV(8 z-j|l}%|9K--v&HnN~$b)xudcT?c5@f?naC0r5Uh?yuV#(<_EdnlmfBd=I_qudztu$ z5pmpAls4Bh%f{WsVaD;qAYp8-#jZJSWG+wbGbAS?gp@sMSpX2OHu9|dh2)>T`-T{- zUdHA_x>JA8Odp8hZ0(k^Ute8G`Ac@ddQ_U0>4Xqc=E9x_a1K>k*0|nFjp8m%g{{XU zamZbuH+NR+1aoo`tw}9$bOd}|sTqiplwXb!aP$2%V(4nI-@WnL1#aywyO)*ajBr8v z&e-6s8hC8XdI#iVWPr%6sBQ6*a>9edtkR@V+|p3gH*fP?yIa}v$;Cs&_VdKwppUq3 zj28_PA8t9`&J-S^l^`s1Jq{9GAT~szcY<2B&f9)cOL-E*jQ*o9C3h4YcRPP=JUo0h z(I|OR#rYz(_U#d_>xl^^bis|wb4uD0v<@|9ia*d=_lIQN_YBjEfBS2-II9kF_U^9a zOMlAA8RINS{%K!!;g(dxqiBqf=6kDVqMDH#SXxket1<3Q=e_sWhW$r%bKI4rQpZ0H zY8#p5$ppo4BYOyAu;Q)aK7?5$uco6cCwSfJN{0B_G3x=x1GCpdlkxEm~Z&o;K5dC9adM6Gd5G$RHH;bs$=O7 z?0@dwA2|fPFY0~VppTA6y2d?9cs--iS~`mHr|z#|XTggfFAPqN(T6ff(2^W18h_&_ z)F07nxo)g@zC!DZj^5(q^Wld0a<)*jyA=xNNyrp|Bm$*P02uFCyvrnW14%Ihxj|hz z9|7VzSC-+*&&9`{NgBj!%zo3{01Imm%vQ=ZtrFtjj*GdtZYutDip!O-7c$?-S8H6v zw71=9Hp@>P^P0(th{#B}RJSPjz z``m5s5o;sfSu}iaDPo@J7tvSSJJG1S!q?9fnVhewrK)$<3y|cwJ||{oK16~zDKxhh0R5moyKHm6S6FZG{o?stpMM79en!M)x_}ENzP5maaNO9#dfVZjs%W-yPIn` zi!gZN{HthH>YKGB;Qs(t^xE>I1Yh^AYn{l!Cm75QMnLz*jRndW!uND1)Z&*xU@N5i zQ;k&Pt?nWa!j};()1sQXJmYh$j@rm8Lx>a1=Zo9pTvNES-6m_Jkh$_O>{LKQN&*1r zdUdOmZxSg)-zlXI$f^YnezBEn=ZI<_U~gI1wpW3@09z@y!74!Vp2Se9MLb1Mu0@SV zV89YcHSqZnhK@5_@~GfKYo$0G{f%o3O?w@<5n`k1AnKy_(x9(-=y$Uj91-=iji8*( zN$}~3@ZgX(up?HVXB|9_-yjZozN)Kor^K44ayYc4}U zubw>l+?~Mb3430Z>K+TXL>SRPK{7RJ?GzhLOH~u zuBrDQ5nbE%->||PStWon5ZNNtoDj4tL0TTT;r++X2Zx==zIEF;P7&MLAZiNi{@U&6 zEg_0H;|PILj8`>2uS-;9YmPz4XFgZ%E4bH5$H8PHV?gn>UzP)J5ntjRckQTZ(!M7w zQTv7O3+GnBg^0DD_a`G1G0J^gV+~rq`ZX)J$Qpd{pyM&jj%YfQQ1c`v-ZjIYc)QS8 z+26_TY%a zvbU0W(H+TFB<92tay>Ea9?;>L$MLKL0W-e(@gH(>ukKFckQMeKcF;fMH8sc_lSy>t zs&_jQpbbIHfv!4CKt=;kL0SwE91U%etrtFYj9etsC4HHhSPjgma`3G@FsEfk$0E|7 z%10ZMb9W5_)SbU&-%NHx3j}P?%T*pHI_FV{?&R^~BrV6CM4!2FBWk_De6DI>c2&e^ zpOUqx+*YpT#zjp9Y1a||0L#Uws>gRUFL5Eo6Rn5DRE@W1T!t+1n9+3fFf|(2Dx5bb zFBujhqEFl~?M9GXe8pL;I63Vd3hrRksVH(x%|WI^5uckJg$h+BS1TOtAfncX#K&*ZgK$fP=6ZA zV|Iu6EYk=Zm;rNwr>8=GRk*~>Z*FIbS1VOR6P@w{KuO**+5!1j7{)>z)dNT@znf$ zaB<{5H?1lu-x;teRNhmFG-V5x;AjO&BQT>{*B6+1WzAD+(cowLf}5vWqF?b!OpIcs zKmiKoD^a`TF`~xJPt97aPC$fe+f}UVk>Hbbgb>E0gV1MM6G1_ZRv#n?3=3Nb*;OE=WTASqum(^DgjqCP{4{+PJ2sZ0iS_14{&MI?0$8g zc-=ZOtJr9sbp9w7m{?nt}%6I#PrW5;Hi@uHOo^#K|@S)tYi#YQFHO#5GG) zQ!&wW)c(wBF*1>$C>6HB%q<|fz#yz^xi}!gR!E6(8jDPcJrBzo?mIoq0Z2e=qwu_| zo3&4&MRPxQa3~gEaY~0Q87NNbodoc$3It5KylW%oZrY2{nt5Uz*zGn=YNmcUvNW?pR!BL8Mn)~UThz<-ZSmZz zsKh5>w1n%@s$}E$H*Vbz!F;Mgd3JO~ecQ^qG=%MHHFg3rstVH)zeTmgfCD@{{AwBF z_C4EE+E7qjTlvy5Ty7h820x7}LFd;G#}?D!N{$pdTAKSv`-vi@ay8PPIS(92Qa<{S zUiOiy15MD)`eWxZq?ZVJ3i@k&&RNr83J35~onL zCM?~o0K4(1`FPXns0yh@s|o>J_SeMWLQ=LhGCaogDorq-ivf4+UtUKpr^BsI9%QaI z6)HU9yHwhkw-Xx>8C^|iDP2V}@acy=$5f%nI1SAp(kF=u-l~mrBd?Fo3lC7B5Gm2f z5-f{E{+e?X4!Ubb@U1DQjt_HIm-^6er4(_eL$oUptY~!4HS)^}P^r?4=QMPp9z4er zmH_(d3W9R#O*&=r!ne6>ZALQ$k~9knMeItTl}=ezde);{v(pE^)}1NlWi`(B&5w`z zcv2~DOrf%`m&d2aED0n5x>Jsq(BaajA+yazHie*6Q@Kc{s@ms@$)u{e@^wuPwRPex z6>cI7t+J=pP#5-Mk3L6iEf+PIKgacTAbHN1A00^GFlLo8vf*wI8}79{k`_>MW} zF~|%k-79tTs%|TX$mTNxPX7R4C@4^r)uOtOvHKg2WL1ZcmLTX%>v>ZK$G#2Be)j zZ?Q9qd!vmW4uI=S_0Bmoe^3%e!wfi~6a*zw3(Ll`aO|NZ2 z^dt}l+O{&syz;T1v)p#yjcuR%f5&Hkc32^Ew>ws@qM@$;0JlCaLnHp1Xkg?(Vxp3j zC;`;&>5B-zax$6&43`>}(yAlpyg{#vNte{G8qRiyI9pcitHD*{D! zMmE%itp+S&{mL#1p?)=!$^D}+JbM{4sq<=ltKa@jZc3Cb90Uj0@r96NDx^}CYGJ|q zmC)@Z^{CJNq{$B4awQGg1=8hI-kLY|-pb(&vz1`y*!I0EQcCV^pi+kqv-d0_qNt?* z0QM_zd3nj5plRu8C+AHh{@bn?7LHx62uPKqJ61gyx2B}!mLxOxG9rRT`h2M${fly( z&8*6Jcq{4}`FwsB@u#2uO^y~iCCpVDJ=V-SP-mKv>NrpT0A$#~D4SQttlRrc{FvJu zQc5NWT;&LU1En{A?VsBq$oEXoQ1PnzXr_Uf?aMqk-`yhXGz1=EpC7dn#s>Gyp!m1! zo_;jb{{YFBAU80$T3j(`)yN@3ni4kD3Siy)qb}6|EiC@n%t#EDa9936Pfwat$Nt-G z5hOw`RU`Gt#aR1`C0Y>~+v+P(TrfX#<}P1JZ^oUI_Np;<%|82~`&yI#0P<|Mtx3Bm zVgqWS-S6!?nMI#F4 zKXGHLv#FsZ1*Y;&et2?E+})%IeP10u`imFsOwPR7Qvy8g_P66nkL{`!xSQRQ?_fn} z)WTFq{{Y0IU9^serUCuXlr#X?&F_6GK>eyQKl_hE-<;!PEIoF)RN7vU~O+Kz=n2 zf7?u_W&2K=Q;pFMwDQ~gZbfo^fg_XYQbA$y8%BQ&N0aw7kzxS&(~$nu2f1d+m`Bl| zgZvZt(a-kPBTK$WT^6;X(zNmfG0fnZ`=CQmkiQxa{iMm>tjLx;VbgFbK4ss+o?8C^ zZdU1Vedulg11-5R9cX9{m}Xzxx!lEO)LjXwEd8j#jPJ>kcf;Tvr{F2X-`l)qMQ%P8 zgs2ra2_pmJU1~8H{^D-`0J!a^;wmR2`%eqVI4_Vx)G1W+Q~WAo53p$H4Axfi%7ZpY zjB%e5O#mkm{*K?Uw|}L$UE9VI4?O z_|=U*$lF5HYd9{3>LMy+l+zWj@0nx>WgrT=#_X(oXMc7mcJx6{)9nd=%Ql|sWEKsy z3E(~h{4p5!llAux#;xPv3oPc3YrqP#@!x1H?aKSs5Ui$zl!}znmGjFL^Y@gFu#xq1 z7Y7hxGBzb$c<;7|7!T7bsL5N~%Wq7`#THj|xa%X5oR7D$0gn?cPqH%B%`fYF>pBS00xAs{hwq*7)`Jfr3!#5DL^PP$m2bc&leI4 ztyZvcaY9wCtA(Fwl!}WE%=9ZzaY>QQT{Wv_VYIfw^(k%JE*JqFPmMIEhmN?2?p4U9 z)c5I&N`}}}knPD4#^~xQXgYlAJn6_+Z`1Jv~O$nDA^$ zf+**=BM)C}1UYHfug?+x0Le%S156wii4b0$Cuo3o1ww{|ejmR)2lB7_R-gR^)wJb% zayU+LDJP`?{{V_%lgK^#y42%wUZ_AyI`BxR(HKB{shxUxVK2`CE~b_+ovnykTmIL1 z2w{@c9<=%Cf;_g%Q2jEYBJ}b;+*0%ivNDQ!(<;+HEJb%D;%-O=oNpXods>|T078Wg z8UPzC)OGn_zgxIn#VF1ic~Bk&pZ%E6pO;(^_^{uJ#v7?c9)H)wW}4SrZ` zaxyKnr;Z-cxC&KxcovjZ6zXy{^UFN2LpA8Pqi!bSaHfO$Et|>iTGZt5;WAj&R+^EWKWV}loadEsS|6lv(@I%5m}3Fzk{wFWW#y%H!!l*a z=WV)D+m5GhhMqykh9rZxKco+jm2ij7=7gyX#A8AoY2WnNm20tge&3f&MmbLf5k*QE z@sOjXdOHB1?;)$E;4-hv3wB9cG$k|azWx-Tvp~X(tKfb$EV z?!!kSMMI?zX{7F?*d$d@zY|`*W|&iVN$M7<4SSk`+bGEtY#FwN@jtg-xINE|?eU{~ z1dUXr2E+jF01D?^v;P3c50K|lHwM~}xVZ`j*A>o$Va7yGw9Jns$SN{RgPSt}TILR8 z=hF`et?4w|+(-cH;ZaiG6|cP2QCbzxFP&;>i814;O;)2F$I{(uyLrj_wnWs?n|%ge zSC#nc#bOCXPL z&Z#o;J*F4E!Junc*E`z zyQ)MpM`OLbGx$NDQrHrAG)zlcb0LKTX%|*$2wNMK3QXbg@v)U2-|$?F^dcH z<}>63C!nmylD(Exed9dp-2ggLnO7Q|co}B_TI?)XnBnc;%dKaZbB}R?k?tOZ&}ESP zad5^p%oZS4zZwS?f?MdQOSGMU_qKp*w5ih*qGK4ztBmctX7^-*wBx`FC)l`=nW#>{xGZOPJVLOVN%D1YXT@VG$2#1880e}Q2o$HsTPW;pw*WY^bhnL|tEdPDyZSkOx1Q%PdKbCW4)6#vEU8SZ=r7P#1iJ z(jCaP1Nec-M~OXYix}~Xf)G-zaq#0*B`Upl$f_e5N}P^$#OSe#fB`91&|)l`V+-=C zA0^8+;K5l~l>m6EXnR+)L8wbx8o#~3V9Z&r{%*EJqS>T4X5 zNI-0}(CP8%g9Q%VML785j^HgBmt(UZQqwTH=s#{A+=FcfJ+C*lH#-_n%ci>3 zIU9bI=>!EjQOXq^G8Od-pT?ss5GB-*@NIepUCLKQIk7ztS`P|gNQ$>XuLz!>d9x*U)Ys0n z%wnG-EVHdr&&a&Axs`0T?bjl)LL^g{kKhI><>Z3}&FX@FVT?YvdaA)^*=)o-kTiMf zqbgJ9m2q1BaUHIeQiHI>yXc>#XQ{8-2VV7&t&&3#_S;~ z-^X^tA`=`+6fQ?1bkdrPRm;ge%edO8GP%<4t?5&?oDyUVWhBf70-5v`rg`G7ZcJPg zYN?l#Yl13-`x?6O+ysRJ{X&3xv!zE$`C~tknvN%OEoO6haTy_QYHr)M>mUt9%w`9k zno|%Y&v9ylRP%F3XQuUMgSU1lDxT+Dg>>;4u9rOR^*Jh@eqqi&w*lo=OCAW2HzN$P z8%U;<#bdL;>r`1>we0G#+HjPh*g&lbrg~x&`Q>*ls-A985~STf=~K{f3e;j)(2zmX z$1O2j{z(-LRL#skPL(@p!EK=`Y6evrd3-^|e7uc_7h0*Gl-*!$Q;_jwfUJO1Awik_ z-3B2Xg7+?!UoLZq8&yS2Tk&cJYnO#G)5pe`hc;c%Ra}|R-Rah(;p3xErE?xR=ZLP# zcJCU6CS%?e=EkHWf$2g4`E>YG4L(rgylGI~D+R?qirtjfpnt&f%MqV5O@_4^NjwnL zf7Xg)RBVH-&VAXa?S>VzvEvlDVRY#4LsZybrzr6?H5u0j6d~;IkO&gSwKvQ`|$dgih4qp?AAEu3qH#Z7bpaI9P*dLMh+S zSwe~-zf>& zLnU({b^X}1$Hi8S!qt0^hEnKiGJZ+P72CF%15d|3xSb9xY_-i;!HUL`NV-*W{`^#h zkOk0+(_Ki!_F@M-28y}G#%M=uR}oZhOOtpcJ0ByN&o=#Mv@eZC$;-;hRdl5ZVV}zr zqkuGMgUYA=hBlv2_5KwLxf)8DUc0NA%UTg!wZzu3fvVwpo*MQv4WnvPX(nMIRbxuz z1{NCBPy$oojdN8#`crfyQOGSy(AJ}-xOI;Jp#pwBw0gxHijKn;n4Wu!UL`a zsas2~H1nk1<=Vp2;2O%9YN1-VK(!lXF2Y9%>V$cIWCsfD8t(rr=8NxGs}sw+?^DWUQB8sS?( zus5Ov3p)OF=%QW4<$cTiqfmTk4wy@VSR2vE=Qw|0BdPR$#DJnGQ$RNzXirM@!p8IJ zTT~)vjr)nZ($U+6-B|@P(wY9;H0L~Ani5J~s#CJb8m>f>Ku84i{g?s5L-45KuYb`< zi(h%SM&h|0r0Q#s&phx?k)U3bWP5Dpl<}vcIYN78-S>EaXcG(J%PCuaE{{W*}eFFvW$L06Zf6QZe z8q?cvxTFFbZ>SvdsLGmyTygZe^{gn}w6#<%sXuAiSZ>``+ySVf)5qX&lF`$xEXdUs zN)?S!D9hHBIagov!(?qKNiHSUAt(*(Aa_xbXy9&=MH;TtxRd-}`A7KR zh)`%b%G0AxxBeBcb_f#3(cA#7QD1IB z(CLm@&o$17hUlRDhf3r;WAU;1gEZj#nlV@FBq34s{7M1iT{-RVvv^h0^5Tw3BUo4o z5r`X-r+2yjy%^(}mlouEiK(}d*8Wx98xviHBusJ!#0#1jcX<}4Rr*Sm3VbS)+%_uS z<+>S)NTl3)L&hO>)LdpGbm}!Y(Q&h#!Q_QiZ;s*omrAJ0#bmOG8s`|~Yj+UU1Z}%Z zlh6S9muPF4KI-w3OT|TctgRGDwSbXavIq9lElaQQcno!3)6ChG?6`ebUjx*9Kb@;n z&2iGn!9$$KENt6t%VgRJK&~U{DoO)t`HA;-%iI$?A>AC#X`X7z6gR-v9+mC4pJ#1! zf7|KZ7-2t4hQ29Wk#c|+KG;$mYg*<-PmVUR+Q(Y-1P@k#s-l|uLr0Y|13x;7{4>CD z8-b^;;6Wyi5LS(tb|e+fnwt4kkK2SeA@tDPQAV{R4ZAY>S2}~3p`atnpc&z(yJ@I0 z%mMWqRPCo4@~{8_yJ@Kz0n~Zcm~6|mEvl<0HL0cJ1ICMR(9-G#m4>}pz0;xLG zb*<#EO%n>CT7bkFD^TW1@WDPd$kN9PB}|_glSbfBg!}7P?auI;5gN|rwtidfCZ@S> z2BRutHJ`&o_ZKv4_f`j)?bxJOL;!KP{{Twq9@Fne5Fl5gDOC*5Mkv~mn65e3Bg3@H zTt(}QcL!{PDNwFLQ99QB+g;LS0JMb;&_rRX+Gk#+PPI77XJBo1&?}R3d>LY(P`cL7 z!E>JEYE^-)Gu@|{*F0r%@e$~B>s;5A;{#+N!%EnDf19$70?b`!DuIBKf=|t%Qhe0Z z^`tA)*#z0hH8A_*j9Xr+(W?ox%w1E8*c7^RA5!U2=%Xe<1e<6H02V`NO2 zTYbkkZF>+02LgSv07o^U3EgDUsa(%*0W^%wA&^Mhx5P|PQAph4lnQ?wUf^;_JuLym zDD_=Ut>;x7rw+#D{{V6CChk`>7~*A+g(@#%hjWY8!%80|z}wu}Tzir}!!SYxlO58> zN+#M8V<2WcF@256NfgN2ptr!;M~9v7;a4~fig;vxWbX}Q# z&;SZP2T~o>5TFGH;<4`I?ek;BOK&=~R}8K0N3b|4GL=M-XR#&?Ou8IwINnUlm>k3d zRR>h?_;s$kz;`3KUfzx@hb+%)zqhE`;)8dB`1z62xSPH^C4I>zf;5BMX<8_^N=bal z3=W})qSst@-W#23qibA!N%E~v1KhwJk`d}f4HjtV0XO?CbGIqR+*(TOA`~^LLZlK# zbQL;u^2UkN$16jEm9DRWnFd2zSX3sp2*K3nRo;G@gHxpkks}e@Y?Wxz4TZ?B6Ct-7=2Vg6^FCh>+k&L1R5jrq_MzRidM0M0;e+y{FZ89THj2`p zvcK{IxFn#oD^kcPD^8t7Kt5Oi-8#`50%~)Na}P;a+kLCt3w0WVWpF*6#IVnA)l=f9TyaiQkM>RVu8D?QEPIqKZJd4Dwoc$F zp{;doLXR{1ag3fPHoz6DCbw<6Qk<2VT*XvWbE!?Bx6EM}vzTN@Dp5@tm8#U;SeJHo zy3CT2shj$a(divY%PeiUu24x9fTk+N#;T9M*$wqJ&bQ zYmH-FxvSE&AFYY(JJf0T>G#y-kH78(LQzhoRDYDK{{*ib2E~1fXSD-P;u@qTgbOqhY!uepjKJjkpCz1Yao#=W zqer+#;%q{YTtL;zHl^)cao@jqEjx)!1Cfh`;^j-3udR56p6#tT2!U&eB;@Ysv)){g z0()oGs^v_4-2LbO0L$)cxJ$V1+bzQ5-165*6w2t5>P?#GXrjPaSFAs6zwxuS_(T3r zxMn%Iz=t(}?TL@+Z~=H|u<;>HaQ^^z_YXVI++Du_w;iv*B#RFr$Z}FOz1!KLBHqNP ztdIJbfUGdpnay7w59hnrl;$RUh3}3z0R(P4i1Tn?!{=U?<9lO`<50sNxczPst@r|h zvuESPe7egI6E8c>Ucje^;0!a}yf&(RgLwRXwSP()Ov#mw@8!lmG-MNw%Yxc zhCCt902`n`eROXX_WskiVK+R7H*d_|-SPnQyuFG`XUD^D0B`yZI^uQ~_c2<`rZy}2 zOa)GOg7O^gQNpYm*EHQ$pu3OnUEd$a{{T$w?n+qf;JCULk{i$Hy}xgCV>Z)>t^hN? zAtF#l(E@HCO>q>pNiNo&Y)x~<;kb&&`#bI9$2<4$+}>}UvW;eE(>$EXbN27O-gKKp&Oyqf0bYCJ9+r-KI#kZ8-?v|5O132wd^F0 zNdEv%iXJ87fa)228Szy3?(Vkw@SYt$VjQ{szWNg}3FcIPM;0Wrhyk z55`G*c_<3Dx7>?+qS_mE6=jWyuDRjI?k-EMSG)ltgKDgEA9K5Zi~UN=$aCGq>&e0{ z`+ti|i`gX*#K{^-$jm+Y$jXG8P>z^(INfsXXr`HrLV+p=obHMFs~dZpej?+6wY0W2 zaIZPZTk%}AymL{v!EX^4_r@58PJ)UE#D+6&v_DYivwUDL<5;A&U)KflcJCj{T(2Ar z)$c9KauNG@xJdTFB5HVX(@Ynjm6AH>?0skbp?yD za|$(R)Xtc4Mz}w5YP9*%VtZQ=3a&L;mfl_^IQ~k{kh>G!2bRuwI!| z)jF%IM#^X3{ z7F($V{D0|XyyT3>^wx06aCb;ibA7!t7~a1t2PZ7zz+83%xma6&D)YxLKR?BB5b`-s zkM;REL7=ux!Hf-3_cemU`c}1G-{UyjYpx%VzT+2+fi47h9lK`)sv`)#o>4Br_0K8- zSpgI{RM`wW0tSY+LEt+70Igv8oczh*$i~N=*$;C|o09T9N_|o6AR_^=D5u7c$zAbw z-Pz0wA!{dZ_XjD$+}mAU+M9k}-PVv@TiZFN#@cER@eJ`+WsFGq9zcn}AsUi=e%e!b zaA(iJW49p4-b)qX<`=QpkG<)v;tm47b*amVl%3nQyt^5>7L7rl7yB;Nu} zy00RbK_uy>ABIvMVsRUi%Urv;u^G!lHzyGR;yAs_qZ(Qf$@xY4Yg>P4%N5P7=zD3_ zYYs|yVK*SJw-@EekTs~yOn%|a>JAqv4q&?1FzzVihbkh;8Ma7TPR^#_xHztwP_ZO?+|L8URR!Q-0H(&6g+Yh7E3;S@LAYe@1%`)gTc z_bGSCKE|YUY86A7OpZhOvp+0oV}-FfT!Ob)_z+?@aJ{wYDsQ&CTKk*4TYD>WaU`Q` zLA@v{ax6}stVHB_I5A-|O#QJAgH@@Rc-g$hTX^m@yRuw<0DMoF>0RUYi|nL!@Ixic z5y{9Shn?7O_U722qMCoS7aSwIJJLy>V`Go7H0f^|^jBhj-^ay39h%YpOqF|vfS=0J zb!Z(r>(;)6eZTv64XWF_KsSK9L|{>c1zk?kNCzAjobE4i&TisC{43Gi9~m4lHZmK( z$3gNPE33E;*0+i{7%K@yJwbgXXgxLfFCOyTG7HXeJ16?bLSoqG6gQylX z(UA_(rDDC^+^KI1v+nerl@GPQ)I9ugyW#ksbcE_Y>Z;^28rXJ%hsXI>9eu#>_kc`- zX$UMtQ4g+FY>!&)uU?qz{2y;_Yf1zkg>!y$n;2{{+`ZqzxP!jA`_4{wiq2M!N4O-% z?p8Z#)PoRmYgJ}GuOW`f!g29p#tg#4uZ?-3uiWtGg*HA8~Y*L7byPy)K zX~P6ovZMhvpjv^nwE@~npQpRfLf7=^O4TG;IP(HbhS+I0cC?aX|$ z#!^|!+@Oe-Au$KHcJd$29`EY(6!g<#Qv%V|~u6@~@QN+&A1;iZ&M0)#RRN zBMQ}4B@i)Tok~<=)ql60z8>);jYc&V)(6hK<@>ANf8+S`9x++vcGh1)FT3D6{6&1v z=l$#XX7?SYc5+;`NR^q`lO9KP3C|vg!*GBAEC!Y59zJ(4dyo2@ReTPmekPi6U97SY zL+hK*0(RSxcu8eHew<5G**Vnrq5N+Rb~3<<3W8D!bl z5x>llcR5GKpdRacPo>3A*=UEcM%HM;g(;b!V6-5W0)m8{aO-)uXr(?hq1`$)kxX1 z(RQhaBP_l`@gsCCH@VurV)qrfaQuU^1-bQYbp|(jsY2UYMj6s@6bg78VDqtqUAiUO zn)L_3c~@A?#fy`OL6FA#TYy4TAwqxA39=&Axn(p76fJEUyE1@dl?6zpaum{|7|fXE zbI-a-0NAfz6Y{7$zhZIGVuQtEvDpU5fNDWi8Vg+Nik@b=j`n5~L1?JeAMMns16nVU z!Nlld9^2lbEDxWF{uSoV`RpEZBPLH{kJ?!4J*67)*KeOhC~Tn6MRP1JW0ZSkGzOzH zN{W026D$$DZjR&1y#2}W`8X4MIWf7CqL6=`S*{5qXgQ*~AT&b-A9v>W3$iuk^Lsc(@&2<_`qmVITqPdW0bkcr9-wDes`)C{vD z8XR2B2{#q1!Q><)7LcRI{cAPmxMfJ`6img98EOQTtp;Y42O91_lHB4RNFE}#++QN+ zNRl`wk4nz2ZQ--HdEV4LD6F+5gK4)RO~ZXU<5(uIawy`v==~pKpI-Id<8^*>7$Kba3eUn=6TyHmx&Oq$G zG)N;QptZ=>wdhUF(Qc(KG^=j|&q)XAVvr)VP$M*A@kES7)L^YpG9ZKS#V;erG462} z+~ab~XupkFH^v4s z9la=|jEh#Ei5S)5OhZNMbH-+tpeFwS8o>LwnjDpNJCI%gY_+2h=+{42HbQ!_F>%_>N!Xzs~YU`-Uzp8{#A>x(@q#!P*uY1hK0 zE%^df(VeJh1w|Be*HAFq+NDOTRr6vsLz;_Hu-+!n2x3U3LjpQe<%V3*y86@!ah^)p z3Y3ocgG%HSdbbUHaMPIGQuPJ+$khm|QxIRVBl9=x6{%{1MQ8_HGFa3hE|ps*BT(51 zsYrP+z!OZtAcL(97>!L7e(W>t6XLZ7OacwMeT6z(>J#e-Y6fjzQ5hd2rVH9VFHFA~ z!=XPadY5S1128R6G9ZKIMz~3d!uP0;$8%Kz1fz*ni3ETeqNhcup=0Gk^1?_Wi)jrM zp%F5wqedTf3js>gFl*Ow(+R$(N+M(gxQlprQbsilce0Ye>!D`Ieg_KNN5+&MNZg0* z){uK}eJ%k65^6t`AMw)$97VyUiHP+y-k3>dgl1SaL~ayKqddF|5r>;An(r!@%$EY9 zn7yb0Nm44!n`8w+15xLP!_-*RrcOyfRF0I?+XV_p3~B)BTq`>a`cpFi-Tc1djf#ByHN%0D? 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

k)Xw~!B- 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

J~?z4vV%P=YCN$mR4;pKCuU%xw9Fj$4K(Yn zE}-PgS}F^%S-6)~Cz0)6b;>kV1QiTd=>ya#XuiH3nQ(s-RzmX581?c&88fY%A)i1JK?%3X*jA9BQz8 zrO~Cw-&NCKvPO`G^_laZYVEF9Yg zf%fKp25LkM*1p`V?h|WAoj_(kQwr^`prVUF)w4mZZ z0BDpoD`@3gZt8B@ z4Jty=0g$Fu7$&$a>}V))OAeK4?Osgr_prCP%1MqzaKsdpFlfj%^p#*SP0Qj8ymHq7 zTU5Nf5> z=Gb+wMDckHFtw!WE3x=4S#E6hmkdn-AnI}hcA3{4JCVaNOW{|Ia^Iy*ynv|^^xSD5 z(g_)yv^B+Z0T1-+QV3yr3=%oxUBGp5m z7$V};@{9Y6?A7FL@6u~>VIkjg=2_GlRP~_)9>o2z=1x4Z7LXll8uRDwPY^jQIdP;1 z)Kn*k)BUUCk9KjgT1_yJI=ag&BxXHozyf?}OnZli$!zhrVqLqd%p63H5`LOs1dMVy zdJsr86Wd&bwzmZ~lq79Ut+cBHp3z*WP9^e~teO=GPxDxfnh^a{RqI`C*d4}JG`8Qh z9lgX7F{DmMsn8RXd5m$6<>Ge-O27<)$IMp{?mT(pf?QyxH=mcqKI-d^6O)Fvf)Yxt zu#KcHPrXm1D%a7M%N#>L5<$4R5P$VQ9~$Ca_s2mT%!US#_QcgHPVY46Jga8mr!oiq zJF811G-P!oMnK33DU~aXMtcB1-TFsCT>k)!88JRcvB>va!V%52-Lw!_)9I;ryHB0x zjDS)*MfYd8nzgOZL*W;yh9>)Eo z{l@*y?l?PlweV%j&XwoXLyH&#w(gQkfVzNA;s%$lYWvmq@9p2&9vWfW7tzh!2&}gq z$8Zqb%_V9_6>3TSJ-+aLB9+%3G5y;A0Lfl!llORD-2T@cqoiBy>V$q|(AVgr{{R(# z@I$pfW4OFt;_o(&L%w8*k9Z(DHUbo|0=5R=4!={4d?NnhKf8YA@9V3GSCP4r2<9zc zeaMxIRF)g*QgPz0MAd7_rkSUbMSaepoUl=z@UaNdExh&O>rU2H!u%mhCQUo`aFKn$L1w z38PzTPWwHPp_C{dfKHt;8!r|a*pF*VM~JH&KJw0ja2f%dq3K;+-Jf_n-@1EukL|15 z=YA89k{f}>plEFx{@yQUJDFKpw^Ab2S9XBY6nLB-6mC$^E>4|%el;UMxwG;DJcU*H z*FRrymzSRH?;!rgoMohTkyblL8Jc@!?re=R2O7AT#0}^Lb6ojyC6LQ0)SXYAZNJ+W z_T$ZeasL2vEjuf??+iWg-O{{T?Bh!uh`dV`M7`#Jkf zpZlH9ZEGJNZQ;46Dr=$}`%HJ{k>GT*b<(_*{{WP~`9s>D_}%+=lg;KillPWe9UmWt z2rhiu2_8B{86nSgi53<5yZdeS^MUO?(d_>KwqI|!NVtyI?CvaBanVN_tnxdMc|PIh z=8Zzhf5^0Z+O;(_>5rzExZE#g@lN*ryk0s8zzxx?V+W6_(eBo8( z8&#pLXx=pO$Im?1O4&Wv}k;TU(>vJKHsUS)DTYe)SNk98ry@8v|{_3~)4FxhSoe3O_JcIzCmP!HlS-a*wEe z)WFS-SNcz=8~9UcY~7HSU!?d_hy2Yj>t<*mE$Q~n@vHVr?OWgOP(vMHjS)Fk|kwrkydNk6{Rxt#o@_)f8RRFkOt)3MjQ8P<#j-aH1H%ooH={UC6%*c@+C-8zL!M zn)LA8NUkHjo5h9dG?4CBGfI8>fM|9ab<^cTm2nr^a8;<@!-vM4+shqlO9A1x{Og3s z!iw9}X`_&f3Y3QKBx+WxOoIdIBf^AJ5hR7r2;orQjPfo%>U$3)tV)TtfK397zF^`z zvFwPo9oTMZ(#EACHLu~7D~6qdTcD-~7+Yqy)k>#2p-X$P^jpRD8%F4p#~9IwrXfyE9-4HTfeWJP+uiZPuWdmAZZ2A50!0HtaCKYdGfs{ar0wfa35JH@BV8;SDRjFlx9P9aws!r zjYK{ScaT_D!x_o=@;xtXOmC8sehJs(ReX%OPhl`Q^5OV`&>DQ)b@^4ZgYH&SvT2g` zGAJU9I?RN0CA|cJ;fj3jBsHrTdtK&2R&EaB$!1UK@}0T{k4OqhPdzI^wC)Q~t1Oet zYZB6_BC5`&qbS*P)595=xXD-u4Qrn73y+;So7}J%gt;%8IL56gTz~YQm7wvQ{j*CO z+bck3uCEX*Yj^Ls40cuZ7PaIKt0@PofWzToO*T3Iso=$|d&2aG1399AKamZ&giEbJo z2=-ts>a5&%EbT0=(~%iIg>mX% z0a30ju{g+)2o$gKyn&I(;`p3xy68N-Dye^U6LPjP*RogYz}o{A+6M{>YGs#HyjH4OxpL3RZ-SiyUD&4t>r9wJU$e@Bygj zD*2T)zV`QQExJUl0zE*lwz=pvpw@#dbIwbcdz|XpV&MBhI-e@rcs|%wX#MDd#M=tj zI%qWUIKy&WyO8Z6YVtfMIk(ca-YrZ`xxxE1Y07ruE-OBLiMBA}Vf76vk4m$S@#0(^B+ke0Dt_RBV zS$vLJ*!K)0(?EVzl3y(KXOXuducQss9uyf9Tx}rR9lB7(_S(=GgXdJfP6HwzZHjA^ zG|TZAxWsr>=xaxVFpb`@p!wAf_SBSZ+m2?SgP)d_*BT60v^upo(}3WJl~1^}0Gh7a z)`v0k2c|9rjWwf+a&*?Bq_t>?U{S`USOf9Prnr|JjY|=FvSve20-)4$h6IWr9tt$i zrEu$9rux*Ty`)k?ILWAzKmo2ox%e7+VdN=#cXyC9le!XD+@{~8f5L3f2!k`Qo*X7oh7{-r7R@7k( zd&8?RtqlkSY1EwXi4To8?v&6Vr)?ZW4b4;GMZ*B0u@u02l|`vYY-5lYSvKuCjH-SB zU_N38l{YR^+39dv8Li_q2*)oh{uvX7*)esJjww%3bLT@Hv?OhK-lsm9{{Z4}Zkf%~ zUyT%!$PVqmQC`+H1PEP7{{Tqa^EJQ|KdzKbo$f+h(mpq&gc3*UR21?wBd(OfiDRk% z0CA5STtfNM@Z3oghC7E!6(oKj=5W)Y4;FXfO-m3hKtCF=+H+E)DwR@)E%}2|bf%-j z5T?R$3TmS#j)}m!GKa&ZX*?D9-xRURt018OJ6GTV%Uor-3}-x+00{9ljpeXIT3VZ! zbrrYv{{VKzjFC?R83>?!wK-O}!t$I`^|2Mpd4At}+Ft{}Z-s2!MRxXUBWhqw`@Pnk=^sx8L8lv#b2nbwpKKtpL<%l zSiFv_>HuVZvDEbyIH{R{6)Lrxosl$>K`tI&8n8rwkTTqQgJ1k{1 z-3>+D!hkxsMsAHz)EznyGQ{X#BiNvzrGn;2jU*xQs-@kUmfC1Xh&g=xac_?_fvZ=T z*+dP&R-i8U=-4vSqE8oWactW&LSFy>^@fYc2?3a`z|xLQgkE)JWTnPf8pxS8xi>wqfGJQg@B zHvPeAdwzc8Z1x^lww!{qk>&|z(=0}l0vCcD)|ICjjV?2{#`gj|2_Jy9X+P^-Kl*E8o_bKXm|@*+E$ z8q?rPS5e}-_l(Ygq$%7qZPK+4Ke|KhxrBNfF&j*%!!D{$x??Ss#WkLXuJ0g7t4X=? z91cC$d`JiGt8I^Z29bBlkdO{Vy+rtK8B^zqS@;(?Zevt^yl9~AM|-;*Kq;xI345B> z;lDO$#Xp`W&EcQwnDnxaoRhE4afM>n%?nwI2PJRPHPGFC z#a(&;MOH4ktNELJm(xT#DwCx;6**$!JREr2>0m!9#g1#3$}R^YR>pM=acKEp`P2=~ z>}&~|@@d$Uw|3$><|=X-V#){!`Xd3UO*rH{rQUj%ImG;LRjaN^gD?vw(NLu34@_Cd zib%G#IvgcT@Zp~^o;_4w0MmkgYzr(I3 zLx;4hfJ&1NG>(&VMM6(>3VLfm4wcLH3{8q64%)Vc7q-VrtKM=VHuRHFbE&OB8H!UD zkz$jt+wrTsd{ZNRL++~O_b84FI)Ou$(YL2ug>hvTF>j|sR~Xom4@lCgT!$@iHzX_- zXmbQmj}y@8i;O%r5;p}tVzgM8QIz)wsBn&szQXfU7vg(Yia$HLa8(`Bk%)PUF0DNPAK5AntG0E{bDYe@`X z1qbk`Sq{;;PzJA1Sbhf**2>*#(j<7;Q9QN#>C8oBj1~YLDh(<;2(O+JNk1Bn^5(pN zrjb|J%%O^m!P1|*3O=hHDZmxGoD_WM13|lK5=!k{=}gasG_Q^c4uKF+pM5tH0|gYo z0I5?L%U9eDd@?va$4XF{zm#q?ar$&$Sdv=hkpL<270(1(I?|e6@5~qnL|S=eGQ&n2 zD_n_VQaXY<;hEwOZK?)DW>P^^tA8EIoyrSs0+plCjLwzU6j?Z_bhT%*Fc2z!6{B$6 z{Bh41SCod$f6IX%6X?_vY3!Sb%a`+N5_E?ygtZC-Ftxp@eo_#CmsdzZ64 zy~Z+9_Db!2wcj!4J*|<)-ta^V@vh4454h0X2u;HyI?yV`xKrYMMmV=I+p{s{pxew> zcH;Rq%NV#*=UpY+z2^+Z72oWw2G(M8)61?ozbnKT*K<_-D@_htK=rsZn%j7eRiq0b zm`Z?+4pi~Zy5j|zi4;%VK?C7dERY7Ma{Mbqv*j(@Zo8-n&%%KD9A{>Tl1_}P2(kbh z6jiR;Xl_(fO(=3&5#V*p6>|d1jVfCn*N-}UoK3vSPqwsTY602^uDR=6Gy1aIEi2h; zta{W%{{ROF1!7ShYy1ORc+(Pb^N{^Un|3=k>3XMM_NTh6UDis2tY`daMlP}WceMa= zH{(@vVGDt3&Uqfof#hL87*?)}Lr*<4#+M(RA){$iRTJ^0>uXgrne3}oiH_-9>6(&h zOu+mxp~B|m2(ClrRT6RHKc%+#R&{mR5Y1Iqk$>~0Y3HX*U%}iPZlP;8$Z-Du0H#eB zt?Gl#{kWPkL@+J-8k3g7E1s07{n*lCcQT=o`%PlGPS%mY`wb2rb(`}40BUXTtM75L zKu9&%)zoNfjXoE6z63E!(tZ`odxQ4DysEQ428JG^TFiM5vr$_+Jb$VSU!``FkjMkJ zwK&#ecf_)QAMKO#u1U-O$Z`0}ab%qN0>8u>rC$BF=j|kEAhVKtVWU6$i~j(^02x;o z`2Ej`I{=q!UFBTEl>MsioMPuje30&JZ12c@9+0S5O{FINsN^5WK1L&0v4rpqvPoG=|haX8o-x{u&%y~yNr--RY zjWZ%uHLp^c^arLQJ8q3l$yM^TT!U`k#-w3pH1&X>jOps9&k)?ml=v^kE=|~p_lH4>J8aU(z(s!Ctx@Aw=1`J}f z{Am9GL|#DJQljPMmwf@L%=%4f;aU-{A8tAeRJL*M0Y$6FmNYd4b=*Zi#}0mvb?-`M z04~&S`+hWs{lFLUvSY1!j?P8zP_=q#h4{5c^bB1cW8nE{MXsDdtUTCiR`={Hb41bSOA)Tje+ z)cD~fbfq=ht~FXI0f@)}p=~O)9NW2SY|&mlg)R zP>9)763Xg#w^c1dJ_7+LZf@{OZA16hnk5E~MOB?m1sLd5RCE|SP!bRoqQnhoTWKV! zkaGl)oj>LV3*$ry1LsBCN`X>#oXMeD5uoXVqufaKP&`#G#YkZJv8`wpy7+itse8z1 zXg2Wh`|HLPP#S~RLI?t+b=^vw9V9%TO5TB2Z@4pU#1Z^NQ^LAnU#%OSr2q@1EP+io zh7|-?XceV)lS=i#)|+`E%qvDQ(Y8>5op%sZttc=MP%g5NhK4BiwFm=o)Mz!h{NPt^l#3bb(Y_l=d}!steF`@uAAP<%1-hEGZu09+fI7b&L|B1r%sH zhfzJjM73o0C^z@Rnac30(E9(9!2?fSljp3H{AnXDVd+~9C_h0S<3iOSka`aSK-AzkSklH+h=nNUjE+JI zmUgFspzEiA!dL{{X`V z+ZCtV%dgN#6v|!$XQ)S9fC8BX(B>#G0rdk<$IEUzcOm%G8F&GmV*oKbfGt6uqtEBA z6iU0wrn8mta++rSw-r6IjzA^V$fjq{sV6KY>;u)PsSW0&UEqt2J|F2(fA-3;VJLP1 zgMz>k1#$q;WrmA3rfZ*Mmbc2TqoMxcO5GJK5$8n+)dv=QSm)IsBgP!2|c-rGOS?MIw=s@sLC~E@u5kP5_Nsp6?e@FkVuEf#ILWLo=aMxoHyVVy!!s4DPa6~L1NEG8 zAKV_vlbqw9m4pMQ_FNpGDPu~Z^BS|pyI<{he!;@?0~pHKrvxP5*C z`q#%^qEPczEf>seIn!_xk>6;HR^}Q9u(!fe>1ju zxmhUN#YxoYuCrW6<$CG|TUXK!-tKNYyE}6mA`P$RSmzQ2$ZH1Yw0~0o(Z^6ng>Qds zxkF^ob5>GXhP8?gJG!i#J=|Bf++h~hw^x?$QL^MR0@@m5qV|08V!!opI2jQpZ$gCu zPP>kt70f&K2XYVnK1&?ulfNC}$j1%N0mrL!EdKynneML7vA(kA`@S1X$uCDFmo{+B zfh=wNZt?=RqB#Jn%?0W7u=-TucQ@PcPmMn?*qrQ={p}0s_FNI)Hk}Vjr{KG%FCRY- zf^*m~TLKhuFEhsFX#W7xSztVCE91M7J2!}*iMzFq&gMzl*3SKQu)DHl1szY-a3fRK z9(d$K_?*VYkc?vMt&d-oddrH-$K|m-_;)%-HB&+lht8)t{{Xuko7)!_f1q2t-gAhw zN0R6#vlNU`WCQg{m^+w^w5BX_`-_Li0yy^^kOjt-9lU2I>3zopW4`LoqWinfP0z{7 zLeVUjtqskT`}h8$XnlXCRtI!N<87>eh+`j-%{iH_$&HQNdinfoT@DK$h}a99o*g{v z3GOcXzPg`>3EBmoi#NwXd=m?awME?pV_KZx*y@_8L&+K*WjQFKYf#P@u?b3MsvG zCu8>uaT3WT!o8%O!`^XlSGN&M5Vo-6?4=39PWz}Jl53daP{7cpxTfSFabh<6Ks9~E z<`~}M^c#wKj}N}PGnwNiJ@v64?Ow3ggeZvrGQ~c3l0v;US(oUJmZk9#@}=ky_aC zJbkP$aAAxPuXV`X7pT<$pwk+jJ-hL}_v&je$jV!kAZ~+FD>vl%SLgewL?e*CBI(hbsv7tWd+;9@>u_G}x2V2yKxVeTR1&OStkF!HOt9u2)HOBc*09P#Cb|epa6`81}8Dj+?oWc$uYy2c8^d1)fc(A^^2dlyK7a2 zxl~KbDE7D}-t9qPjC~-)=DtT08vW3MR@GgR7TNb94L6{U;wiI@XG^<=jwxDMnTo>( z)mlAB6x)^%ZWg3O_K?(7TGqQ?k~VSA$NO+y*xsr;*<20I(*P+XGB!yhbgu5WfinU1 z6QyY|=6gT1P{w*1xN*0#akojxaq>-S_V4bjhkDV})EE)}04?Zx=y6*&_dO(7Rof+e zN6<(fRjtMMPmt!UrX2K^*Y@*9wl^17mWXev!)R-RZUXy+P;OzM7=&WlVa*`{{Y+9hT7%CoOJV`jzZ#QiaA*AA^x4Q<))Z)T-#Ahm+W#47S*}-f82gwgp$-< zUQIU{9mI_fy(38qt9otj0%jRN&~(IH{2Y1WAb=fKc-eEua_1HUqStpFg})*%{1uWtmI$Ml0hI^&u0{4=C)vKwKctO4xW;adrpZ zZUXKeF2?t`3UT*7`&wLI-36K!c4k(?PrA&|qY_c4QKJL}avcS6m(9Rz1N9pkU(?FE7au%X z5&K0Pnvv7}YpVFKzLu%V+VFSs+S)9Nl0z%4C3H}tDaOo_c@~XbbH!8Lp9F~ZqaD_- zna5$u!z>c4tr!0QL0dhqck^p-E@7VDZZ7H%%$6#;C?<;23ZHUAsVA-$Ms(?mOddiQ!NY0?w2jN6 zjR^Cs*E`0|EB)qzWBjRBZbOks;hJtXMP-B;W~-I})Dl3gK_{c&Cukxy_ zOnuJ{&P~LC)EB9a51548L(0oLC}dz8XaG9Y5&_Jbj4u-=J)Zl}g0|2SJgT#m!EBz%>0!%q7uV4$K^gZN=0O}V!E9ZnxuGCcLeiR=VWzVykuHuPuj&5) z5W4-^RR&AO40}eFKX$e7JMW+Ojbq(ObH{e_-QMyRcUOExpCM*|+73EvgActGy=gtn zppqETLTyq6QXEh9XYB$KW> z^l?Vkdu~++PJ+DaBgt@ceuJf3dw06-ZS3#+V&PeMYulJFtYJ(KQ-->&Op->)>Hr53apzgj9c3gOrSBW)VQ`Y|Gkp?@eoF(P%w^$)MgS(DmOH|m z@U3xY$TFlW`uk~0mCw{e=E`afY5N8r1dTNm&f?R!Yh581FxqmI8FC>G ziiMg$PIajKF>u_GByDNb4L;s9Z&Fm6xLRBeLzJ-NSbmVqViU_E(%GlB^(5qsn4Ewo z!wC03xHL*|yzNHxu7tVd?yTkEIM{8WU% z7WEQc!K8E|nQ^>zzZ&g($B}M0$mfdY(XE7cmT<_lC?#qeh;9akzq=bq%e}A~iKS=D zQRPO4vu^aVd#>G@TS#MAZ|1g$Z2Z~mo$r(pIW^cF2sF}%8EKs8vySZ)ekCgYLLbJU z0aRYPQ|Z#JC#_dHbdL?^s)X)HH(yXx>J=4P50$@D9eQbu^`cv8;Q^%9{zHOjNF zvGQ2=zA)zid=!0!RxNwl>-5&}fg6PeH4Xm&%+QcCIk8Gm*F0arHdCSvbDR^-xy;!7 zY)>cHX(O)De}~)7oF4YRiC9L(Xy6TwM%AFLDV|uhW^BCq{p!A6)5a_5Zr_DW+x^42Qe%1DOlVtp zVoMRCljn&{<>YHXbBQC)s^{$Z2oGaHQ=)z}{@?Ch&d^?Bpp*P$9JB{MqYg8hcs)V! zsIzud3R>2$%B(j30Cb%dKQw@TqrB7+kQJ_tiwODjK<6Fb8mF7FT1gv1{3>cMy8(96 zVht(0$VgCpQ_rR+H@H|jp{m#Z-YzTL59t%!m_D}$;eM7`m zM)SYgR&`lU(e8RnnrZ;bw5~UNUwC4BV9K$R)mQHDtNeb_YZ@F|>b26Ucm2@!6?rDz zv;vA+poS!pHO_+@Y##c-$4#;X_|}6Hf@~-QP#sEDb^DcAQJt$?hU(Mdo?qpSWIgc= zi0%8DbiRkD%f_yo!jM)l0HosQUPF|gpgklU=qvEbhZhicrYh|ZM`^EKpDI(hrZj2s zp>ArV`l-^RDw^x()8UI;e(s5^yVS3bUoR>%$9hK5YH=SZ94Ov8lS5OW+n-t-TfyDX zJpp(FsY8xD53o zgqmkUdjm0BK(mGN{D1_X_~CfgKGn{8u9NrG?^( z(dk^YG&RpEoUr^{;*+?9q<)x@ae6r90+lHAtpQL?4@~pw1}8_$M&_Y#LrDE8Anq5b zzAK%Q+Tt)IatxlJ7=cYXQ!McpGd3BRgxm`s!mG2mrp*hSKqvXvZT*@1qV|hxVAoQG zR}w~sT1F^ULeS_a*x_C6#=$vuLrS~-sm{^na`>E&@iV>N(@EH-*CNBpzKC|WdBY{G zyy+xTODG3^;M*V5N)mOYepvI@CkL&~LJC)U#pGEmO_9X~hs`TVw(mjhk+^PWP+4iZ zv?QAO0g5MK0++QWOpBK=k^!j?`_4Gj(&7EK08&G>LH;3H=GmvRC+ zl&q({JNgSxV&uEJ2b8>Uh4$DA5XM^WEV==vc-(LtQ}WtlZm5E>yyrEKh<7}ag6N-m z({9iEzilPVXeNp%5f0kabPacZCxXeVxXa*$;dqSB9;0*1K3X7S;4y? z?Kd{9F3Y%MniT>~#04U(Dk;HyC+M*DLHod&e?6#e*9TISd)_|r}xn^S46;VwRtxKv~Y zg1VlWVd&odq!mg?Xg;L9M9*amfvB5EJ#{9T&~?i^OOAK5s?wy5j|!Dtx!|Ian3W28 z&}3_+Ji*HrQ0KS+DkPY#`h{2SyK*zRf-xX^K^a%e#8Vb=a&EA-F#IQK-Fj6gmF>hT z;KYK8)Tk8)sU1P4F7Y`huHZ^7Lzf-sgj%r9^5E50X8)X{U- z;Z)gJodQ=J_umTyQQUeJh%Z$DA69hu9P!)xe?9MeTBhk)9!n9ouq6*l;19dKzKw5l z8z;NIDVZQz6h=S9pUUEyW6}MW$w=84@nRel^(o_AH@&!+<;Ic(1+HU&Z->LezI1n8 zffWpGq;zc^+#r@^LJ~znJBm!&JyeA{?W5(u?se1Yq*uBXFv2FJm zi9k_u&%}|BHFp;kByTPwOIG_6AW0C_Yh6x7eWhZ;i~%{*rghgCqlvZN6*JriTBr9M zFp3DfLk6k9_tg zCGTM~bHkk0rOngAyjR><&Eor>VY6c=JI6-2uc2agl5&$1$zywZpkrO%`ji+6(4!0IPRy zTPKJs^ru?xPQ&86UxDN8dx!2PGWJ}5B%$nh3vn7>awM2z$nFF{1A*FnNYH#;uS)lK{wx0g_P)8_-PxJl{qZE&9icE`IOUsPBP{E<=+r10 z)N*}Q%>Mx0NB4W%yl)#XZ}y`@!*DhbGR0$QGJEpPPp)$r1(@|GA3FP!_iMZR%Q61| zH5w8ELpS6}rphHiUWIkTmcW#-H~Uk0S)q&2R*)BljZO z(CjrFE@IU`4uJ`}$bz$Y~xo|q}*?MPz|3)o)Y)9 zfn7_5zTh!7`)<7|)fXkh_PYo;u@&^b%f%zTj~^rP|h_d9G!I@)vRjP7}7c)o=Q%%cp8W;wWlSPHaXy5A84Q4{?6# z^Zx+i_=JaxhzTDrJwE3?Kf)upzXdd?VsEGIM^(q`QBCCB%ir?c#tIgrR@7d zJ)8^~p$=$^Kr!`~f$V(Eh`U+S11E##Xl}YAZG2 z{I|T70Wqsc31^Bn=~`pu@BUPOjHe?YqUh zU`jB~qN5)^cmB1cvl_ms9C|c0Nb{^ue}3(D z_wCnf=XZZ_<$jxqz>UvwBn`zCv9uHFFDM7!T_wr!yxqSGW82r3(cW@gb);#^+|1jg zd;b8_NMyISIo2CTBsO`tIQ!T85&Li3{{XaInTy-pQ_GvQ7dQmo@_kQ#iu5O?ep3Gc z@}vI%E<4-*03d&IxgK0V$oOn$x;$u5hSr_QpTYz2U-HFMdKpdeG!N1ir3dye2py=r*kvWGY)<5<5t z9Ceo?=yumqdeb5J<8y+2H|t#|i+g}*TM<+_RFdw+b7D{sNv5D5Axvo6@YD_Py=xn+4J%y0^EC0pj)Vs9 zX+H`l<1wvPs(rr-axPXj3e4NjQJBor!z{4Kgpf)DO?z9LVW)*GIRgm;-*Mo(a{b;o zZ}f&ixVEF5HpmpR{xt4BQOeaDF+*PuGBTzcIGaj2wy5sGYVB~ZFD-E+9n%08O`|@V zgOzf^P8(Vk1t{P{7#@-wY02fK83qLTnpfgQX@vfa5UEVN0y2N;LH$-m^*G+X0nhl? z2{>)h05p-uwbp4ze5qvR$n`8cd>Ldlr-dnz!%o2(EjI2vA4zhR(J6Dyu>e$>WI;KB z=1mR@^a*fn@T49og5uwA3iO=3Nl8CYDB0``ay}F~;Vr`7qi8pdd#$slS}*m*Bs$1K zfGb*^)bcvu#~*z@RH4P+X=o0otIx1iH6dF-1v2p?#}VJhDLa6uuHstv8+w-YEo;vL zLbc448Ph@K>cmNS=50^`{A#v-B`($qv{`eYC4W)0?*2O0<6TI_O#EwieLX6hCx|89 zrV6vz^X`rrWnJQgNV<{Gk~7m489ZcUTwB7Zb2y;p?Q>4vqO=|#y02lCHnE*Qj7w6Y zw5bYm#%DK%#e6Qd)At&tc08C(NQyK1UFu=^R*}VX{{X0$+(!{U&CH?pfP5*YGI`u< zA&1*7RW>I70F7h$Tsd-bH#s0{iM_*W=VQ+Mt^<(m9R})|1%6o^QsiI^b`G1qRgmR) zr@~BTLm_sAY53LahVBV1s=nm&B!Y%CkRSuVX-sCbc-Fi7iR&IUQ;PwLeT@?Of)Ljt z{knKoox*c)L%ZC&duSyU_GY*wlh6VQ)Z;0gg_A48y|7#~AOZK*j~5>g9v7F&ao&IV ztfxF_LO zXt`Ib7q*TU0FdiHr1%yZj8hy}pG$#rYRQpef@fqxISIMl>R&%97;e%@Ug7Q{j!fzZ z-4j#&WYpz^x&j&_4R*oMRCe*Wv1A;@X?fJH;C>|OOs_dxc;9??AsigSr@I?<_^ojB zF(r|k8qc1FsB@#iZb#}vfoLdNz~_&-wiMR$om+U)RtX7ZJDw7w-6yCNARjD0je_}A zt+@xm5~A`WkHv+#O=DvYAC!XPPlz`aLA>V?o>oa;)s+~7_<@ZUKOEz38Drx`Gz>MkBbHB;6U@Kk?|~*8s@t9-PiD{?dNh!FR8-D zY4rn6ojPLT4kfJ~HEWH-GCMSqDzkIXkV_J*xq?Z{!0Vp4vyYBx05lE4v^e}Ja0&MR z0Hstp9()Hf#^kL%N*aM^e}=jNi)>CVLPJut7+guvkD668k?x4t5Ywp8P`DI7`KwYg z#)lt?cq_KFc)Tl%fec@kwMyhWki%EEliXqaggTFj1e{;v@s4vBY6{fi@VosogdP=E zmzuid3mIkGr~zn6ui>sI#fH{u(N}Eaaj{3BU(T8pl#l`%ogK*|@EClEnmtV@I*O9e zzN9V#psVKr+Lt_-K`EPQ^#N+NG@v=xJZCexc=23)r#9c!TMh%WXXeu)Vq1iIH`MRD zrENXE_Uui=Y~J%w z>wR%i4Mox!D~*;V$cIyZyvR-aGjxWf;U*w1=M;)NT8*E3}ZPSWyF*q z)wVP*RB*WKT1}q>BMH5Olp>V?0YVNyV=t4R?gd0~tC*t$=+>`x)__K?3YGv;pb8oe zl**XT%{K0rsSSiGxLT$y%K{9FtwCChh|>^WLxCq+elQ~l)dH51a#(w9v=Qe}Y19lM zqjl*{Q}tAB-Ri=Jbj;0}3fTg6$kg~^L@+u+fKoli1Fco=dBGRCAt;GVs=>!+)E)6d za0H4;D)K2b@FW4d8eA>`9lhWo@~W(ivTVa@%(;&80=1bp)a6pZ9M4RF#-|5`YJi93 zRT)oXnxx$LR%gk5#P$n<$Y>bUFckx)WD#6zvHN7W2LNj;m!8;7iSVqep8K0@)se^% zRf8_$sHJoN04!^`?$(jb2-CP$CqJ2v4Z-Js{;yB*tdqGu=ej9xUMF#KvNfDD|~L`+q9Ld5+<@zLm_RY&9N|POafxbH_l# z<0Hpl+C4(KwpLbWEiU}$w{r9d1yt@XU43y=O&d}xO8iL0%xxP~3;oo#Le`&c4SLhp~xkkSM3% zl!Lba0CiWct=8ZXlGnzk3GGn#K#5X@nA;Z-Z!KW3`sO>!9u=le*g#k3g~ww0j8 z%XFj`617#lvuJ^FwvC}Bem)*}w1#l+g=leRFSC#1Rhi(Gs!FK@SJEge=Rh%K8=CDu z8oI}otvg%znuIp@3oB57qNi$_7V*RN4bIk1kmrH#ZQ&~EgRS9;KG>NBoq<%OUqv|#~M zA36jOf_KGJTIy;%b*39EJq-fqA_H%gC?t$JgjPi~4OIrY^(5tlh|g78Y_y>yug;}y zVE2wr0)bEs4QbE}vcx=x7TAGMCzP_rpBrINq9DZORjAL(xl<5Kg*B+6V{%-TBX7q# zsFbI-kkoFd^QWF0biEa7B)Lo{VRF=(SeuN!lsRgnZGJ>zFw5Ff>rma9?G;*e4;KO* zrZx@%&VrTvd~nOKiq+o6(WZ+D_)xXjw&*m#M}{Tiz{THkZVuk zu1FEeSQ=8kIa5#x#&0qfIhIANPbG{2F}CYlUv6^(b&Uz!7i}xMcDd6mVL41P4(jH7 z&l~L*NZSsfYhbaz8)I59PzO!a&s_Rvj8$D9I%M-s| z94_j$Zz|U{3%y?&1md6EQ?=CAr22p#3^63z$EQkh+>}1n&;hG8y`#nwjzL;ib2WY$ zWlThpW}+QxhFpfZR07lGR%;$tk+5Yp_b(U)f7^5WLt>*R4;v@``$LDFGmW2@h`*zi z@q7)c_U;!58Ujyf&Ty~&vAORUZv#ky99FZ#dsRE zQ1b2rU-cfR75@PIKb7?5du4;DAMI7#x9${q3hp);L(f+o58p-~ae46Hl{`;xQAA}X zLNwO22RtBl*BbAydiiNtsef?$p~Nss(BC%y05zje-yFQ_vvZ;mnu2NZt!OjB$H4K? zxkE{HRb}_ban7tWG%-2_{Aw{fla-8;ISYkSY7|Nz;wX1wLE^B>lr^CIDxJN-+z~t7 zW>l?t@HYN*o#%1hT}QS_<$SZP218wGTsY1)HWg@3l|#(rIZjF7=S=Abnj!e5SD%@k zSd8}QOPu~7S6okzk7L@XwBP6=b9WHY@Y0%1$ukQ3l&Q|A@B)X&5@W$4!4jT_j`FCv zxkb}?W&qUqXNTK?Au67ln;roU^$S!T&nGLB>jhMhDX9Mdo-J|k+Mn{PSg@mLMz_^b za&iqNR--Pp&;J0XBNF|B-70K&jcOFRsOhfOyIqtF{5K!phuIs_!D?i15q5)B?n9CG zD?;IDXhk$VYnRItV8h%(>sL6KVqxkC>ZacEut`#G6>D8Vt$b<*F5$v^KrIVeY<@CW z(1wRqUi+4CghwQDrkjVr^MUjiqq;E(g>0J+&g9chawFZr&&_4Q6Wkpf22CIMS5nqQ- zmJml&q`9wFsLRh>Hui^$iYXW# zHL3f4PDorb0_-(V)HLW$V@yMS3nXePAB9#;g#+4#-zvUvUDP6QCk{GNy>+QH{{ReS zIUX6u=|U?j%WwujtgV~3d(vBJBa+tQXu#D$AP_zVn8b2i6D0&n0@f+m+5B9);C9kH zE2ujc?(EUDDI|^vWnJ5;sT%ai{4vVAi?gAaIqU&I`PPSq@9fMBw!z7{;iTB~uGj3p zxpCe_4*RiG3N-?RQ!LJS;C%0E%NyJ_6h2kxE+e0Zkb$zrA@SC_hqZp92ue29Z4|_hU07`xOe)PA*XCE@TGJKJ0k!~&d=;^$Z)X&WNlLXP-AUQXd0i7hAwfrasm=o zp~;9HbVpTE@3p1a)hkV{Ps>r$JiyBqxcs)~Sb%Dlem%!f0IEgDZ9=7x#!QvTl}S)X zO(;Rd^EqWe;-ku{CgVXW{VKhG+I3Q0K@FkXN`3=8TH|uA(Wc*xRA%w-drJ#iSyXGz z%3w@_11b#I8dY}+!QT-{iHnkSkxaO+7Ot?NS-$!RY|YqG4Sf3t*W)QIZ59OZW$5|UmB92V$`+< zri)n6NY&?W-$D9=7$~%+ga+I|`BzL3RkLkM{X3pFrKl1_8=u}_f0U>{EbG?++g9TA zqS9?*?}Ztzr6P$gnbn3`=SomzgnMzgqEZA*Hh4kh{(_NiN^1LZ63gNS-0S0(SU=MS zk4RHP^f0dI^`sj7MhU4W@u&VcF^qquDfZ%%V3bwmK^aZ7*1Jtk5A<8Els`e@&}qB# z(ydc_$y)kFKpqq)rW_o5dVx|07RL?506eLLoTTCR?kUs|N%)MbOgP>>pVMlU78D4E z^ww^9*ad5{y#-E($2{=!IPd9dtvuc-jdu9hqN87){VRH>GLkE}XG-N$pIkoN0&TXe zW8vK}-1e5XlpW1(SN{N>NP2$}GzZLAz~Ijs=a8){K=6|XSSvo>G=T0)eaC$CeuHt( z_F+eik%@1@ll~S^eJvY)6mR>oFaB(PoxfV?`0IoJ033We_*9?p@_$JBHr12a1wlFN zBAJ?~&*`s;#{p;{FIvr+NOB8Wj8q>>p(9aVpk-D*IpG_3I^igREh^o5(oGUIK@A?? zrn<6ML*-h0@IA3knI0|@{{UsL1l3hQEP8>G=bw%nAcBU0aoVmvpXWpENDBe#+zxdV zEGbIqkfsK-ZIy%p`IqjbjR-VK%2-u^HQZ_|yDv}dz_Hek)YG(|?WHNO>Pzhzxfznx z^soL>FbyYo)u1m=^`uJIb9#U+O}l6|>P;#sT3~5@l)cVS3J{w4(Uv#d-jPODBXIq> z=5Q_YqI23VD8?X)zM{-}8s$UfpaTFU5PIAM6dNkuv_VXefk4$7k<@|va44Khev(L| z2>OK#23uU@Hwsi|To4`37=v1>S&gVum@`oAjlr4d?{APQEB z236@?3T5O2Vymqfr?>`))hBj@{Cbmt@u9r5kZ#1%gj7{4yE>fmG$8Kt{{TD>jS)MB z?I~K8pb6>Bp1OiFz&;e$5LYlyo?i?ST9RB=;>M0DL7~i6hLk41F9C&VNhB|oDv*K;(1kPr{{Rqb zjL%wlV5u&8T8>n!G2K&5PN&09EDz&I4hR}8dQd9>ShaTzcM?ZZDO?XaBIc+>6uPcq zfi*Na_yM8JlupxW){GR8+kGUD$H?JqJ4N&qM1TV5DN`FEU`mhxDzy4R8jk{SV3Mbx zq`2)w>p&G)W&-6})BZKUjY_FeYC&=vUi5d3Xq5^}nzcauvNQw2q+!sDP94B*T3xMU zO`=pJk-Skr0L?%$zYID8DfE$qwcx2~ur%zAk`x3T>8F~Vek1M)KzPVKsXYx)v7NvJ zvwV~l@Cr2tpu)_avEx#j$#%L$D$qOzx)Z1Z<6Ga#nKvAi8zT%`a8iIO)kpCGt{gHQ zDl281X(fH2J7L)@muT3`*^(g+@YYAQMS zky52e6f8#E{X-xHKA#$3!&c!bEYCek9+ubb)8|q0@j!}fQlf#XqJq5*de=-FRA@?6 zrsoh&(mt*KZNLGy%fJmOOgPxwd=j4=iCwlt)}v+N)R1-_y)!-pA1~R3?H(06 zE=9>>*T$mc;uxs}6|E{*7WfZ54Xs2=RN=_Ca*apvrdJ$PN*$dPs;yaxq5^3`iB5#z zwzSy=Nrye|K;Nlq2aw`T$Fgl>63DV6tkQu^jHhOa{Z-zhsa&m6IqTp&by#?oC2 zj?!J{9)u6Aw&`CgIPMFa?H>OC9k<9`!^eKMXaT&1Gh<;^6dMDs*G5Io z=GZ$#wORRJzC536cGdS~T%;VYC&pTGTr`(R-sP3&1vSG-B=@t>gLe$l1VgAnOikrK zaHrw;!^21fv$3y*dKin8lja>@x(cS_e`@gg{%$Vi#x8>nXT>;av)MCR&;uL&1Oi+Q zmi5Rt-Ob2y+^vN77tL|8{h<<*?AXG@4UldnQA+FMjsu^WlgLaZnZ%-i3F+ltmcqk_ z1|MyW_Ry}Kd}!R~BC;}D3&C}EOuwvSQjZ#npsC1|7^{#S%i~rmcKEbZR}ahnlI(Au z=h<~H6iBr)NfcFbPM)x|sKjTtMAoH1^2?fmx#SvtMmy_gC5^##M>|-%6T95;BpQ4$ zMMDRPH0URKrK?rpxptSgq~fk-xsXq7D_Yx@F~cNY;~5oO{{UT)j!JUGcYq!9s~Ds& zfW}RQXdG88E`G{)KNoSnbm04sjO61|YbBks#LyOrO?|bO+}iZ(hRQZjG$y7o%f>u9 z<*pxfWBr-RTK@pu==`LO6_v%k-x}?1wNY^`sTOwD>VAd&N{acMN|ZG=fn=(foITR# z6SRwYR=&K|<;QMu7dPBYS3G0!2E&`Nj%J49+mPdVDdTJPVVLA&V5&*Zn5dbm^4%*?oda$I-Z53-j$h5Qrpe79|{WP5Xaz#EGWI_fxW4hf(Q$FhUPkCH zCR=kLjsY?C$qpX_f#ip-A%{MYstJ$C5?h? zo?0~UTqunGNIPUyEGd>I%^7=Eqv1TUgLo-gb8*(LBM?l)dnpTz=4cjCLsXFZp>jT0s(X+q_*RBC z0sv-$lDOgTU?xbbX!0VrskeKvtw33NG0O~Z=$EG*6PkK~N!>*q?UbhJJ;~t}Dx=U; z48JJQ01kBVz-ii7r3W{AQ0vm9J5v7sv6Xe2TWk2%^NjAN zMd@iJtLjr5tp5yBuZD6>%)w*p?MzZmVYNJ+P8?GAjm+*oQ#$ z2}&Jtki~$&)o>s!mr+}1$?vhV62P7sioPGX(p*H4OWn#IZy91h@Hm;}bU%K396~%zR>-xx|ZcFS~&Z&n6V!6%Y2Lf09j^lQ0;;=Ek{K(2BRHEfZ%blgEQr{ zrMh?z3gUgi&dEHk#DP_$g5Y)Wy?o-hP%bw1_aNfoaP0J!#!_+z`|%9*&{ z-Qy4%O>uEC21gnpAme3^jW;Wn%vf9fqE*MpYQBCIkL5YMUJH(sk(h1~F*XZ1?mtLx zn(O6XoUgqFRApM@ zuw!F48y&F1&>GMHOMLz{=8j91pPI^keq)wLojN!EAaqSCs{}FJt)%g@#c?chJ=k$Y zm_TV%Zj(6I#}k76Zn3JDI5*NR1wZBZ=y;#$yv3}tTv^{jK~~M;x)t}W?mSgmpBxjK z;p#dXaw(PjdWu*2jHx_4sD-voZ1CMg*`vDAchKZYgO`RHEd{7GsbXY4;VR=n%3fU9 zeuCj7jko(UA!vk*v8`ArkPf-!(*(^t>B(esbT%T8Zb}&WsCiK)$!>kOc>SOd6X{~7 zqflYM5UnsAH!9YvX>|i!B+#?kaW`>9mzQz5c82(F{K3^0O09kvn+p}nETWl_=v8ZD z?K^pIII(g1luNr%@rm54{-P*}X!bF!J;2l>TH<%<+*)1&fk}@iarV?!)o03Cagz3w z{H4Ux%y`?G!>v?8WO;4U(Uj{Lbqq(ICg3sBOu*{})}6?ZF{a~o+K%oHR#6APJhtDg zGDl=#g~(f&rD7tC!nOBWCMAi+)?e&K(k@Gr{p&o^>7+j5Z~j#kWp#Zd^6@6!rLk|) zTi!|RhE2_Mj~k*j6ue9*4xr+>*oPw|xh$jj+wQ5)%WOD>gpEP_wXWUfyH*>Xz`NuG zNdixQ!$HMQ6NQ>+>>yR1Ipb5fZXl0_JLe0E-*zVecL;!Ag|A*;?#!1A9EXzCc2fD= z{{W?B{AVXLH!ei3CAXGFQf6dX2>=*q2n`Tko_Odu5JvXDc)0QD@UAh+=VZq?_MA*% z*B)9Y!i=BwCR>$AUKApIo&039gCHjUgf zuq7(M5<^y*gH36H?MM#qI&3+v7DOL!x``ZnloK?ORlN%2koD97(ATaX{X3j5Zz>LU z&&nKA>}fJy0OL9t0oq%015B#G)Psb%jt;oJC?teB-%0p=)B@qvh?jQLmco1eNhj&h z0&>d<4pnhl2L>mQ(v)=Orl5B$#eoZ%>5(8|)=K?JBf^_JY2DGT==h{a36a`|c zBwzv7wCS!M8B(-Zkx6$M68$Y(bf$xucOX^kP+0FYV@{;zO$Hy2k)5M!T;}}E>GyH0 z0YDo-@Y0h!mB`%EJri*Qa~2^$&`{-x4dyf2QSUo?UY0PREe&Gs_*#hR1I=twxZgZDx2^cmT2sCjfxj+D!=8DfW8RXK)HxXW6p)cT8P zG8H{F#oj;ejyWwJ`&z@}(D->$9mloK(w2vsl&A%tB2|v&V0G!`jSe^Nd@lilZOmJp zZTzVZf~T!*5q-zHw|M0jv9M}- zV>$y`$kjRR1NP#Odkz&ZBbl9y+S17Ac|G}`?7Big1cYj!9|A6wO5?lc=F0LWg5i=#pK#kD3I=s2I()IE z$&r&|mdYAI){7qxKLyRm#F9q2x?KMN3hn;@w4Z#UxNbVi?rk~x!0*;(_AAPIbWzki^$ za{yN|{c*xMjv@OT3sBdkF*z2-&|z@f@vfom-?=E|0#6^U8ObkQqzsoc*0|<5+*6K% zwHW-Ub4RFqiCZTN-@&6m(+V-B;MLj=RT<hg!Eo-pIr^ zyc&mST7f`6h-Xa3xPb0Ft*KwGB!-iEnUB2S+y4A(={aN=5IjN9VUvXY64fc0Ad5c# z02+{sy&wXHbu3T?_2syl1L0gU?lnrKNM>VO^|)=RD0{{#RLdFBYr3Qw=6tflPvgHX z(x!*&qv?8(i@Tzy`^qboLup$70D;3Nj!WGs=4Ow}Wv7YU(QW?#bxC8PVdL?_AA}SD zw6l;=T5nHNxS@3vWZY>|4s^=7{016!8`jk0CUFYmPZyny!uo+Z5mw#Ow5AB*xY$&N z&lqmfX;IBa)T@G4lq3qM8t1N=eDI&ryc9}UnS)=Zk0&c^^ifK-VvIiu*Gk}-k0I8G zOB=NyR8`j_3Wg-8aHOydCIfq$k_LS=r^f?Z5k?xV+C}LxO~8{-)Tktk%_J81(}kwG8;7o7DF=2W(n<`q9%+wOuiX6sc zA^Wg&r5*x^^-3zUy$JBnrkGnws)0*w)Q|;PI1XM;D&{HE{m9%D%$gd3N_a5H;;)dw zk1hin{*-(DIu|GH*3bN9ttiztLg{aUhi2Wvy@ERqFBAf zGGs$8O7+aBCmu}ho)OKGNVbF|-7CNGncjfqu@%<5UpWo+sxlP%Xo@I5F@Bga;6K!xQ<9fej+ncx>Q;Vy`ngR<~ML! zewOjT+edQDraEoUT?H}g4mNg80)uf}mx{>uvBvML1gU=5y*B$*nV5{@EOJxQz8PXK zD~u!-04}vz&SQJZS`l@wtnKdk{{XOiT=xW)hU1d=V~2`+#8GPm51f~RDKofb-T7qc z^2djN@@MxeiT%3mtcgAN$1Nm9u)+$t(&!a54b|Q?+CTAk{{SAD`;q&Djof|3i!c8G z3gJ%2?sF13OK)W!vNQx(A5~xGf(q5)xFEk5Y|^X9vk zm6?Uz#7lHbymC&`83lAErnom^LfxbQzBOB&%gp(AMw?MSRm{Axla-c98d%%iC7)xL zA?kfZoem#h0?n`$O!s@Ic9g$seYNI$x0|uy_%1GfT6@ZF{W`kj4pLvtS8cVr_#8*c z%E!Zm&5%%d52~y+%Z>~<-63)CMEIKPKIrTY3+&Hf-*6EuJdbj7kViK;ei

LGITbU-;6)u_8mc;YG@(v4Pi3JO&f~dBvYnnn3QCyGIh=BmT7M zJ0T^?Ga7&8j+CxcCYp>#e?FFar7-^JOUbyNm#2_+JdsoAJ_B9A4;mU}h_2__sng?8 zX6|-L^zHu~Tr}=*5QSIcP~F^dxcZ8Ue;;HQA&p0kR=*Lm@A?;0rafZHW*Dkdh;v>0c8#&gh=kx2MszrNt z;gksAqIk6yqv1p2hF!`=+wLNxJDQA@GB~^NrIWQ82f8DtiUKHpZJrVSU4$Vt+qv*h zwo0`1T7MsHx%Cv=QS{TLd~`L#PURR1Tkoinb6ebsqTa{5p|N zp!i|G@<*XsPx&%V)uoRHT9l0{KZw*2e8ng*kMe)=zl9U|TiwRgq~Y9-h0_tGL2a^BMj$jGZ#;%Iu{#F870 zDMm-2-DY&X8)Bwx0b!v7(_WRYo)Baj9cY^7y2^JgCgEHX@+&r=Da%a&%9-HzxND^> z7w-*49yRDftwuo8r(FJ6YjGx%D(NEvv1u_id)o;2`@&T64rNXUw4Xntey*9$R| z@uT*hbff;V)pDwWKB1A%=6rBQ30&10QH*KI*r(e{DdjAZp{vvbps$rHg|`O=DNh`~@xzV7m<27Qy9QyaRMU6l)psA&1_0)&Go^CyIbp_O%J(2? z9~~*!@Eq^Ro@SZP&Le_}BCb@?+?By6^W-3tKuOc%;apFL1}IO`4P9elKn>UjpIWNkUd(7cS&>pnC;YKs z$k^{qffav`iyCU%e5wlhWRXLDrNvMCY<(lbnrlo-jm>YR0jq2y3ko@*d}^)ATz-}! z9fsx~Sj^{^UKPc}5N`nyzbd}Li}ezZ{&u=nWywt-+(E5s!mUBqI_7btf;SKr;C=PC z#Epg9T!jZpr{3I2B9vkc0QG54AC4~Jjeu?f^`OU!Hr=4DS1#3<*LfaJYH8)urY5k0 z7ig=Tc`dYs6#*zf)Fw*jN@!0*@x_cR1TCu8B6R?K>N0k9uePAQbd*&oQ<>^cBsXB` zQ{rnK^^v#BT4K)cldMR5Vh2KF< zi%z4DMhw6l=}jx~u9yl3#-qMO^e8nkY7I8;2DIHo)Mh+1&kek#$g0`M)}>;%q4Y6k zI;hAGhszNhO6yQxC^kQRPTE)o0J(oLr~d#=PuYmBn2P~=tjNi8evxmI)XlxDFt^bp zm7uDzBB#U*u^rAQTCI~NSN{M=`BaKqB|#!VU#HRre}yZ8UkZmNLy;UosoPsA02@kE zU96+_;fKj|ZByiAw4J4DT03SRQoyE}5V>O z93|2MEI_7RC?82fPwj2@4T~8Ks4k<-)M7K`4Y;_dGR#`#P+Lz@(SW3`RO%=3_|u3+)vT2%nam1-@Yf8v z8ht9X)Q5YKwlpS=#KiucC`CN**=v^M(m)_1#puV|E4yK72Zlo|`sJ1vt%dyPk-+U= zO(ni3Qq=*CeKj=)PMLJVgmO3IPY9*_pnNAayjU_+cZOjn)n#jlICvS|nfLOeO6S zAADiaN0-N;&pbHZSPr1nws!+lWUg2FT8RCiNZe7Y{8dc6v(u&=9LQ)Itv5yN0@hN`Z;+a?!Z1;@Y>u=bGr%&jZh`R_^B8Z);n^=nGGw{n1WOxGRqfaB)-&OBZ5kc*M3i^Bq zEOYb4Y?JQMYOT`;l(N)>5E_k zw^7SDD5$%Bbv|AhVaT?$?r}#`@VYo$6q8imPl}OQi^rK63JOrxgqmXS6C^nrbQPw> zKr8p4pK@?Iy_;bt0%RMlg_)<%bl;8qWP<5?!z&7~NdPb&^jf7PNSQ?tp zR}Qcgx*?^NJ_$stu`ia>pgHB^@xq9@3(*#^3n_QPyb()Pnx0Fq{upMAxb4#P@(YJg zPW3C}w?D%KiZ4vQ5iQM)Jy{XhC@;9vC8)1Y+lCy#;-aEU35+O0Jn3`pq{~ELfK-y% z6XC6J)1yFuda13fF_#qGQ<2WQ0WD1dp(NMLbsl(#=);O7RY@JtHuWcGc&b1WP!a(Q z#2=C9aR(P0G5jdIWTVzO9clEt-0CO5bXWomgH4PUrU zeqTz=O94SvJw7_(gEx(h3xe*frzyn8eU?50O4BSkhH{Fos-=3c>C-&*7|Y9qgoguI zjIKGYP(c^@Rm+X#XDzoST8~&_e-5CWQRd;Wl-9GEoOEpUEz_W@wYM!Y6+-E>(2VOt zm2=jV#Vpt%32IhvBaUDjy7_dg8gr%)sk{JaO$Z}DG2x2G;dLU_M*b+gmjNez#9YeKu@Rri`DcJ+csPd}MBnHx|j>sI17 zxqudtQ5Tn>wKoa@kfNU~h^8!Y;NEViYR?lHfvbJhS-ibe2kScKI(0aw=5!vP3WQ)1vS zV`*uKtt7qWIyGcdBaDjzNUvXoa9`pgBE%u`r8l}6T%_0)!_&%hk3hGgR74JbV#n45#fa4iV6Yp~^RZ}ttN zI%X?e`kt9r6xkTjHAu6nk0$~Qa6*Cn>g#7L_UTqYJMlhs&g6Vmt64rs$odIyr2IfTzb1CzS!)X4P!jOmP0*-JW8s*7lCWa}iv#YD5+ z03RBqpCzlJeY#Vh(=|ebV_t%vj_Tqr_NutrqZ#7?R3D8?#l$H}ta2Cdb5#J)(+xi= zHr%?^0$xeFSOw`z$HdKA7}A+*l{~&!jQse?My)b=7J#bnzMLKx`JzTWH+X!op_;~p zQYn+k^;ac$aBP3ufeGtMxB20h@`0xMQJz(woS(fY%fPb&ButLAU;GXa{HR0;N&f&Q zNBy^7<3>HbZb1epyw2MGI7#IkmNb#eN)OcUk*2NM=`BofC3FRAPs0tKS8vq%eVo&W z)bmZ_?FmuIq;x$qIsW_@=GfaUKJI=uH4XlBw4JQv0qw-q$ci<7Ik3TwVQvUYY;#Q> zpyWPApMTmb{{YNl{{Zb)-{b!P^8nmHBfs>-U-JX{hyCil{{TFHsQ&=;6@1`Wj?ko^ zSl$aTV52dzmFiACNJs+u*QpGkDNBNsBnCT4p&pv+O>!obu3xhZ2RH;8PzC6yw7RD4 zl_dhVrKnAEI-PQ^8z*R9w9$AQh`HOPJQl`N?fRr(!i7l()Wn*a=uWt0(xAFjXU<~^ zQK1t4Re9~c-j?%_f+vZ=S`h3*4XQqpG|s=X8SYa(nDM-?O3U*+%Q5j@=Dn(I;a!8+ zeWL9pvl#ZPByp8h-e@VJjOs|I&m2#m;M`yCuRV7kJRI{AON-q5CZwBwD_=pr z+4hG9l1Cd`i6w#xDI}w@byMzb%8l2@JbC{Bxw%a8((S`ziqiNlH@5OQQyi@h%!)my zbBd|H?WgH?!ou~`d^ZUU5fY&yBHwBww)q?#Xik&^9H%oi?r>=8Yk7^uK-Wm-Z5BI2 zl+C#l6WZpeUD?qWGNN*f4N4nweU9`k*d<_1>nn#KH{{ZU)2=!{6OJN#T;{AGh3nSeHS6JBLk|iFF~qR{0NrzZQuTmLj%9tznzV^^ zF!w7Vk|@;#JBeMSocyuU;~^U6n>jX%SqUXmN`}x%`+#mkxP<`P+kA&#I%OnjyWCjO zl~ECdk`hvl>19LdIrZs@0q!6-uH#E&ar>K!Y}h)JZnmU9QD*^>6<9m$_Y8<$q_7GX zrqcA!pu?g$oEqf_Jn3dgBXgM`H~ddeh)root$oXg;GR70oeW;XZvaL_gznNaMd{;) zlbAzqM<_D1$`^&ugbO48TWI} zbM>p3@PKFz3Tdt9WXB?v_5d&HF2aOTnb7KU!_af@X;5w9ME*UpC>?7p?q0x&qklt% z0fM@q$eL$BGuEFxYq+lEdk9*o$>G|?Ce5x}?|-!M-V1>(ipv~o&+CuUg0v5iCbc~= z)c9WQbbB_)K_^bNjO9CcWCuL4VoUg?aL3(G?ateic`koN0|i$s2J3k@07|qh5qA)L zNXK~XAKa;N+97k@sMM(YtBvU^t%^L>@vd<>3~Hi@tW!5W77j~c=G9uDu1 zVv;Ac{^b#No%@YxT(YhzXEgb1YK;cw-0a-qo~Jp038B|O zX@?7Amf$F<2@JlX0bMG=$M*%?ez9>nv~*f~gw~WfQo8tJ9Q<@oE3{s!b2xl=yKCcS z(|s#Q?f&<=w3xF7mM7SyLy;*p0PJeyPK929$$r*2syHCb2nPw!mpp(9DgFl z@_bycjqQyb!{fPA%gHsaqV4WoogqnFN>~tFxzVHANICTUam=%@g1PM-YhQ!FO!hR+ zH#t#H!|i=MD^|4RqeYAzq^xcK0H{IJpfu_=##VecZzOf7nV2oW$xB#xnz6%u9Pu=p zk$oXOPr1EWZpi8h#bl5@j@nygsW|15HAw#eZ~AHTruQ?z$a4$5STh6_VHm9e)YNJ5 z!;vyZKXLkMR7`}tmudG8zf)0Hh9yPX411yuu1gBE@vAI(s`ymJYLw;0%0a_p$kMYLa zh{TE6El{uij)%^sL!B!yiCcJ|Pw=i5@9s@6E-sc`v$p!hJu5Qp&tY#C10Cao$8<3@ z-%C6zjq{wD&CYagXmDv8UDXusUm_6#S3UDi9kwIw_rA71or*Ic14Bw3uA#~PucXRrdX;I>~E1$Iry+qZ@j^oD-WH^YN<64Y385ZisG3V0OjVSRrbDH<$wZj{Tj_!Mp zsqOgvTRaC^$2m^+cjf;8P2LyNUB??ti`twU4{9i_iP>++%^4<6Lhj@J#{U4*8e`1e z(a*%(=VNnI7f3b7XXV?`$@!e?70_2t;(Jl@<2Bu{16z?M)B2f$7Z++`Zh|(m=^B%* zVn2Dl=q1-9V_|Cy^ITf8OM0=*?S8o@09tTdRhT~2j}02-l_Zo^$*w%b`;FfmW3vV> zEKWYv)qNnlqJK|_uTcKk{@C*v5uD8FV>^YAl3Y4CofX|eS0DF`9Bg-!++T7Mb3Dv; z%_H#(Y5Gpv;{(;L;1>!vU4$~w>zK!!`3&juWpiBp&96vd@%Xs$u&^EKFepUU;X&TA?)}s&~BZO_Kdjn+N-D)-qj$^nk zY@AwLtTv|OmgJi5XPu~(d9N<6F1LQ7MUUx>^b`XuKp?ftQwvz_uXT02-_hBK0e=PN*5IxVmn^{0CbL(X4s-JHO8~<;1RsG zeC5n?-CB0_oR+*@lO2-xcX2RrGU8b8Z^p7-=&`Wm zxod6`ep=x<3Aof8z0IYX#U~NNL2zcC&?;pJop#1)nXU!Wokx^&Kv79?-Lua3ZPzK= z9h+%OzGmv*iWkKXx5x2~7<-Wnj090aY~kB1j71G_f*eSC(ptwjuUenwyLYv0xI11W zhwd0Bx^6)%d5JBM$G6&H$1R*UKyH$B+QJeEPzy<|Fh)SWbuElfOO!ZN(e=*{@yV65n4;Zb7YmPJHkh;_wT!T3dl>DO{%C*Y29$ zYuh`knQiTDEqiOXRv**ZaeuA7^xks8HVLjS?iiJct0e3w-jRtF6^hnvEmxORw>R7C zWpVlhy_)x)u!*ia+n<6clHM!1OCRjY~nU;RJr z(sP`zC4I%(@|>?DZqrY0TI%)Tu#Vywog*ef9LjQF6w?hk;98#;+Z(*PvCe;!p4!~U zewSRu@Z;_O07GkdUuBd6G)wY+7*uDMqVS0|rJZ)**Xhpk$RZh#GI{bK5n23i(Mj5O)Cw4qmcQ;cV&570`A?612& zb~|r@PA7`D;undu9kDk9+8w9DKj`hPrMN)+q{j9tOK-r~jgU(rqe#W6TH+a!NeY`9 zl6`LhmI-?09(TQNJ6pE5S;O1&_b+hTPai3LaR;+u+Pr&KJ8NrYLAW!T2SJpAgywMg zF93Pb7Bs&43eI~{(DsC_-966NJcl>QKoZhxlr1gXcRr3cj^k`tZMC$TLtOw1h3s=0 zUV746Sf|FMt_LIAw^tnRHZ3`x?ly8k!uI8ip7HI;c@t52a-f)@z4i%M)lFAiA)Xy6 zWeO&hYVDrNz#d7`C zg%~+l?uJDkx0Prg(hubXYPz3|VSV4kb6u;-*~i3?EZg3eI9^whHEF#dOvfgajOnN* znC4u+8IggI83nPNR0352@juGD4+F^Jb6Br-Lt1h}Kyen(uiQL(>sF51=G$y(cGLUI z5?ehU``{*ASi`6#oE@l}XKU0j!H1%?*2Z zDFWd5eCl#8U9K-BnYL|?kSf%xOlJC6jEzlkVBST}n7j~Lq+6=>_|;pu@fJ9VtG(C1 zKs6ufQ8)JyLlVYSl%>R;`w~vVq!B~lLB(!M_Qr&e1Bj~(SYG$<2l52?8qPbh&BRZ6 zZ#e=uN&`T_o$3_VGHHrThkLRIw5w9Jd`leze@y17B-h~c{{XsQ`+p=qa(>Tu(p$zG z^xU^@USFbZ_b0e5e{O*2On%AG^~a;XZKsd?7=*j~o5j46xL@x6JS@tGC7~s_`3*mf zepGoAD)E-Eyv^+0&ncM$dKy)4OR)1NTy%f|vDUbA_Y3r@;>r3+LeFOn({7-takz9} zL8gNQ99wqA?`w#Z-zpUW7pS!I&4r{gMxrSvIFwep)oV}MYfyb}(=V)IN zGRLDh><`s;z8^7;U;aWco0>F091p}A;~AX5#pbg(e8w=~NEE5M{{Yh8Ghc2$_V)X) z%X9w#Xn1eC-IpSN^mG2#IKEmBx&67w+_jzO-Co4yxi!3)$88-yTYtsHaU}6Gf;TD0 zq`OCxhn(&Fd|pRzk;??mI`+`j%ho$6~( z^+j>C^aIAfO`mPM%G@H`0Xzo}IndL$Iap~UB>=v{MvRVsle+u*GdH&$KHRHIIIe~zv`dSZCKb3KRH_q}L zoR<^aPV>m+%Z90KvNr9idV%}#+i_+ZSe04}uC^P@uLsYp1-+!at!by-83hwRJ7iU?zkg z@Wnn;fb|^$)eN$Uq%pLqaRUB!t^WYB{p&}xTc3V3*jL<82@v|XG;Lo>4uj7e_nV26 zM&lS#zs9%X`6mY^zv1t|vQejz*n6#;#mP-N;gQ5=kgh%p;LzB^c8-BD5JC zQswqj+&49-K&y^FpMjED%X`*~#QoQ{nq-LGg$SFRPq`Jv!)|+A-p5|l3|`}EpUHNlQwCy`r>eB-0R#dvCl@%p%i4jZ zYPwtigjQe8c2si-2ExELhPe<85ADXc3!QTlX+V`plfwrc%hs_D;`?}#te`?Gx|E@% zJw)e9Wz!qpGr0&xmsJjT7|_z@`k!3m-al!@%u)ktvI$rfQ@V=E7zgy4)C1QnbnX|t zOJ3ctAhy+xpSF%#x_r0e5vAmXbV8C}<`2 zNiG|C=n1K(?8l)yf4jKuN+!NHk8v-035 z1{;x;1G1X>M*5$J&l}8a$fZIKwC*n@21`g$y)^4k@?Jbg+j3)+XjHM>HDTqJCpI>c zqe`C4c1Sn2@zP(flm=9nHUyGRi>qW!4p?=uFu6L@t;J)F+i$W^uOed+?Q+dR4OWD7 z*IHpl4c`GqaLdV2_WuB18k4i+{Yz3Q{6dr`#1EDU%v&0-$--8hx}{sVeq|!|!njXC zrteh=eJQ9X6`6RO!G5B%{Er;xhXM%z{{SlAyED2D=pZ*Ann>C1Fsmr3U3=OnI3j z0Xo*Zi{!F#9vzJG#<+zI)yP3lzLv4MyOFle$OHS4tqEsgT8dB~Ruz#PE&l+v1+Ht< zAGZD7$>bQFn<D;l-g+;2d449Ff?`HvBbIpNyk({o(EA{~xCRcS`t zss$**gc5$9x@Ah@fxr(>ol-fw2J7ol9FzzMrA18uG|HY7%QK5CDO^#5#;0M(?F~?Q z6q+f8#6e31dNXLHYfZzze(Y)S3tt|`_@#6n-Q>;&TXLiNnC}z^b*m`5TbS==3}ap4 z$yu3%O(d1bs04&0n)zd80ffTGF-UE#t-L(NcaPh?=*-6Cj9&9Zaou z(}LUo0H)M@!tE3}XnX-U&%2Q%>JS^$`|CxTXR_VBGpIn0tZZ}P8xS0=XEJjpUl2RjJa0kl9RR7^Jvcgv^pB< zNhhWaoQs;>ZB7n#;44Z;_WuB-Q#+Hk!U(@EhuvXW2IHZ~9R@GBzC<{ZU3$`R+|hAy z-D1&H#o#56ErPOVv!`70=uR&VU_Y3xXx+-O{Y^>1z~^5{H1PQ1JM&hfMX?c7bOx?W7SHwS)tvDo(1^R~r?Y0_D?7e%6qQnh+*9zTXE z@;O#8E8Vrt>Gsy6vTWS41|((9@IsrD$3a?e6ZZO7A*DnR%eUS3-lf9$Zp$rt*BLy{ z<%j|pOQdaG;&y*8mm?jP=KFr63@Yy(%51CYJ_59h9>*3}MdG!NG%P(^j@JNx=-275 z@5WMo;1kES?>@L13=7B$S1$8le&YX1OZ#Kw&b0ud&Jx|$GjsU)1U z*BPnvWOnHbty+k1!)9zC2L=4Lskp2e;b`MjRYUj($h3AiE=Lgpcb_{)$-` zTF?Pg>G7vfqQwxBj2tU_j1428*Dk(zWzXLtc-3}p7;YIZXkCVx{KkPB*`a?q359IJN99)e^g|s(XYk7AAEQ{_#yg-PJ?q;uChP416-G^X->Kun| z^ZY-Za=z*8m^oN78!xx|hr~8LF2dV^^F2ECHC~II{XDM(l588o`m+_&c+W6#IsA9H z-*Kv`US;LGZ!ZdWLzNkBQ$mmpi0FQGWwqzS5(J^fYvn+Ml12u!CYlkEIp%cAn1JYZG}Tm? zu48@_^g1`rhPfL2x>pRNn|h2}BW^lUPYg^>SsK=~)S6}FMieA_eiZ8;D?st6_pw6E zKpBIQfGTvQdLKMK+1;&6W>bIw_)`gZuW$m%)2SP@I`sq$Jlvc}A*JMeSJqTcKcj0xR+9QHR^i zJNl|u`Po5D!kD*dM$c7)I`|Cy^~(-7nR8FqQwMN6X>oO_DLY1oaYq1ZsG^{Jg-F8x z0L_9nk~dQ0?j6Aa^?1@>_P}6i2_%0sbmiNPpTJJMLnR0{{Tq|t!l~pavI>zF(#{IrGN1g$=kSr@uXz! zS7xW_q9IO9S8a3XXfnc^%@L{ljXKVBFe!Qael)o3_A8VTrr}ec`Hw6Uxu9-JkxU-r z4t?B7q7KTaE^W}T{$hH0Qkr2Sonv~MSN{MKh1(UY{1b%8@_XaNJ_2(AhI+gwz- zjorh)=`KO%OODl;l`C%(CRyzjBcY~R3^sX~MXsM3Wb^Gp3y%7BJ4(3)8*-@$mc4vN z5bkIvr(cane{c?`)lL_+RX>1_3TC8y4tQbQ%b)NS9o+Jp6{$#jZ2~HkQ@mb7m>M5Gbb$L)yq!@0+}d@bLzkh{4m($ zU$s{C7yPTgsMEOkIOE91gKaXPrg`N}P8vD#bvpP{F63VI^X@!D1tvkBP;up%3F(9i6 zD8p4_Pk;l<0Fn)WN^!DT03^~RfnQn6BFodqKA1ILf|QGLDKhA}BNnfgW2U-O&jtVo zN?2$&AwJ(KOqzjF^7Nnb!nD?n8`9LlPjJdaYj zsji=f8~~AJr%<&NT9RrmY~PNj;5Ewywb~^**1hgfq*5yTs!-H;F&g}8F!LH(+o&}l zw)(9$mUU8h$be9tx@ppBJmca9%s3H-v;7exjW&DhhaRcrmZqCf?OJ8hl{k=a;c480 zpJp^0k*!C3DZjZpwG_Jy=p3tLg?iiunoP2b6v|nUFu)@eCn;2BI!_ z$D5JR zN~`o3nG}(>V8BJ{ejKt!M^?M9L0O+OZ!FbcX??XIZzP(L)}014m~Zv$)wQ(arH&vM z{^#H-k$q-LkV55AN*ZOSmbkc$?PIT6Oni{4Ebrq~%gac{;J|~_)|uvgIJJs!dW5YO zK10Y`B}2~&BxEdNO4sYuWt9#kwcwQnD#|GdaJqadw(*u@MFO2N$oU$1V!@6BLwdOm z+w~fco)#gF)q0;AwrBh?F^^)RmHaAXFAHT_iIU0LflyTHLguvnl*9YmpdzQUDXrG` zrweAl06_$J0YmY^y~d@;rr(vgt8}N3L%qNxns_M6hLqC?E)5D2qsuFZQYyi360HD2 z+ERd5PNNZIl}TMHqIVTiQl((GQhi%j;yyp&h%S_yH9)HQr*Ib1r)}+$m2m6@C~5%w zGQ(tspH)>&Bhf+%o3^!zS_E>r=}k1$(-GYvR25qJWNNOz8krVe&;I~q9ce@7T*er5 z$3s<*$uA@-8h;ciw{czGO2iTI7-htp)JMJD2&a+77P~@`0YGu(70 z^&t(~$LT0R=s?PzM?FRubWeY)^3-WDx0NpWQ;&7zDf$J_a?u;)U|otUP}eEXpMX5~Nj10(J4$n5@d=BaHiLda29Kf-$wkua#c- z{w1ip%u;1SDMMcn*<(GGo4HGVs>@{ZEK*`6uJh8YF!4~9R3kH%mFweAJXF7tmN2f; zswdBxpt!gnFn^6t!NJCZa7@YZ>;4+zu3l7^dPP#p$;eIJO0Ng{gZ|O<<)}IM;Qs*0 zqi;!fDeW~};AwH&(GU0G1$q!E`{{;9EcHgyKjtKIY;_g5BxAKGsu5v%){Hg-~ z0JGziH?tbZ2+gHWRZl=pgA=0WgItbqUyWJgcN5s*?l^+I4N$Ls-%PAz+z`~Ash}0< zp{6fk=b=lGYgvum(CrM>Mzs+qY)b-~qDV$tg8G5{1|M%M$qkAMvWuIFQl;B%NypnS zI6Ix!%9JDHT4ja1lZ~2dOLs8H^b7nbAGXXwg~oD9y*D754;$oW{XLKl8zifZ&bStvC9u?%NRr z3Tkc9-_nGi^=I;~49EadwD6h2;ElBU8xjCv7JvD+<%p8xx9LMsUy!Q0Q}v1BAfpsC z8Bi1QID+>H0uU-IoFoY3BByx!*&}83Y#@(N>(Jt_FBO|rqN+1-nDKD6sc^jIJ-EyJ zjA#oJLNWvAjCO7o;z$5iACu!$7nY-IM76z?G8LC{8X8wRQ%@{r@**)hNteixP+mki;B07F&2M~fsj(?UjDz#voMQfhH`kDasyCa*Dbnh?24 zAN8#7o#B+i`;}eANHkJvb)|C@7|~#5lHf@}TP`b-adqkB)rt>7`6hkAuESl9wKZffekPx)d-_ke@xr<_*HMiIFcAXC8q0O5dLy2gWu zRIdVq>T&R{01XDjnj#3e7NKI=?I2~QWB1|TjS$*RmXj2Eg*7$lTKuqnbm6smD2?hr zCa>(v4K#w}>p+4=hKQ+t z#?k6+NXID|g3QC=L!r>(Gou4kN`mP3ltdKbK2}(mZi!Tl2sHWmVY7=G+VsSnbZ%c# z)q=~Ol7Xv3T>}o9SH~6e;Ic)kjGiIClq-G}X|nF~9ErM9v;Yls%AbvKQ8y0PG}%p3 zWOnbk($=!(v<@%6;TZ`@CV)`TQk`pFn9t7Ub{y=ZX~ zZYixrTCAUgb3HBs)n>8o8C93tlrpxe$2`t;8H(Zr+;Q4VO}+xDvp9wZ-ABTuM=`n8 z+Fh;>(@eh#;t0Ve$SM%ySRyNP_|%c)%&~zc)vYK&q4@kT)R4F7(bZne2C>A2K2&v@ zLWehH@XQK+?C_Sv29%dT&C1Y~8*;m<1ZuzezZ&I-;`ExC3*6KWaWz}Mwqh!wsttV= zr~I*HjVnX$ZC5z6HKkmLd}^;cTrn}39R_)jEBkSI8>4vKD)uKt8@wU%s^=qODMlt% zVU}Je%S=y)C^E-NxWUUim4j$n&biJS;x;U$&gzhrG#?6A7x-CBElVYBc-}?_Gy;R= zR6EWN`I~TAwvm?5)E-q7@Wtyg@!G^FwX4VE@tV!9*iXu%NTpQJoa;RPsukg@@@})*9WaJu~LIYWxj!HJJ#MZ6W z9lXi4qGE@nPnA#jVwWd96xffAXY#pbxREFYz97|tE;>Xb-;dbP2URCtx(rvINxMoX z-&FEtvCHf@Kgz83JRG+xy+1Vv@i(XEL#`?3K*ph`4r;xQ8xLk;$f;|&Jx1k&(u_VHy;GXl(T-Kk@FV3?AJ7Ma{{Zur-=nADhQC^T{{ZfI z{{X#P{{WVk%l`nN{A=SWg@XaKBa#YGA5@w8e1$4;?vWq@{{U5c{{Y-+X+b)qL3v zj1>w%TDm7wFU4RIZ zK&sQA38Lv?bvCtjH)wWBz|cn;#|_Q9D7twn;bn59M;VTh`l-{y98Z|$i?=#Lu(*1B z$BF*{dgDCwZp_VWJX@SHVsZBh?N@HITcY|@fZP5R*Zqy##sqtdnA3a6K#&8T)m*dj z$06srKXu|5zJd1pC3Mcr;-4qG$YwMQm%IVc2BIpdaBAEGd)~E`1|R~jsZ@X{4(h3( zHOwwr^u|AMbG?7mE2a9_(h#)xCWzEhe<(c<-&E_V-V{PymTHGYKIXvAe~jj%%S>Ej z#3U!esWEVJWq-PKPM7PUI(^#ps+Tp&szU0Uqm2-&I#G#pqV4D#_G3YVh+N^gE7sN7 z_{=Du$HYSw;V)SK0C01{8+qoF-H^$>LRPGxE?<|W4_s|{{y08Xw@=|+{{XkKTHZB| znU({=ZSbrsmE`8UykAcFJ+dWIzT8FvGTy^I>NLke#KndN6)4R|ivIwofU9TBOZK%< z3bce9f7+^#Zn72H@u4UcdnX!Q=Q;Rz}iSacODO#B>!K za>5eJJYWYy99z^b&?L`2eL(cr65{^g1{WX&Ncd5_HX`Q8HMXdLTVFLwfV{s^6k=K*BQdiD`Sqo&2eIlRI#YuHHeh@DnaBpj0yrVzfx*r}`;s_T@*Kqb6DJ8Nn^a#Q#L{3G9W}{jSemL{*aLo2d zfGH$}t*0He%wD3ptF+?Y(KD1`?W&aV$m`*rIS(%&0FI`%98(F9k@VKvVQC)K-LP&8 zL8v2MfaQ!fMD7HTRMx4HGys8Cu6FiN1@r|3f$AEc4}~#DEYA*CX;XwT1O=jzpNfV` zpKV;4(z;jTdf{>9J-s0PXx0+*|0HGuSmrVZvelGF(5W=l;JFP{R4bl`f zlJnh^j$HdBQ*os?De=N!NTT&Kj;46Y@+4_1+-U_IgX;wzPtZL-O@FlF{e z)~2A)XmQZ^PUn1Dy&Sea6_d{5z-xme2t{(2etny_y0@KwL?aID8MXzEN{VcHXR|zY zz6-sjibnePX;>ahw*LTH*GKJw5fZqo?kD#9Z8TR4ZNKrQDQ`at;+&^xbNp68{XBl|C<@XDP|>Q^J9paLhaEhE zcuX@ZD;SYTQ3N(Q8U{1lT1ebrZ&md5~>HLrGLoSz$c`joPf)`4o`i)qZfjk%Y*!`!0OCK|ww^1vpq4XnEWsK9q`s=48;I&g zLl}I{GFYGO2B>w{!mT9Xu=5;cjiJsunz-6?i|LWJGEW<{KGg>5twOhk;&eEpn*@bm z)Em_-oG6LrIHMbB`g2k3jB7yu08l4mP@ST>8sa&?cJ=Y7M~QT09NK4p%LWVX`(RR` zPGselL(dPvg|&A0(w@T-Ze6Ka_cP1e#T1fDC1XmK3_w`O1cW4?O?)wbhl4BK?X|S$ z>BEpaQWm*8zkBl1b-9WQ;PWI`NS53EDZRkRlRyn}t~%#$@DfJmz43rI1G}jSSRUo> z2pJo(aU>>Wa7}i&*!?yiI^}*!^gFbU#=Fks409%+e0^BzFhT~_v{@^k;p4d2-N*A* zTg=>Vp5h&pWVUHZaZ-e~YhR8nST?XGmAd0$+Y@95&|U}JDv8NM`sgGQT{LjTEI^3z z-t+_5&s9@~@*($_8eEmC!j$7o3~_@af!Cn%sB61RVa*F7lC`y^rM&LtfvoPdV0=z1 zWtK6T=!KfbRh$#e{xkJ0E%&5*hMg*YPEIIMZ7g8iqLIYt4%9(R*|bqXhVyxd@nS83 zo0GPfmgKQZi~uGu6DtDLds zzUlqST#^~J=0sDV9=w>K$ulRe`DN{s7|DffTxBs?xgcOAzEezlRjHfJB9 z+kT?stJ~pSSAzYX$nGqBK3A9wcNqCtT?lKvY-_C0&=55EeBE5+{bZ2+aM%=N~+h#VJx*YyqPOw ziGs+(SqJ^59knCgQSs7t{qVhOSLd#-EEnIfge9jDZm{hlHORv5($~?)P-rv`z^y+g2VUlHjAZ zw+NQKy~J@`WWMBai;JE@@0et)+`K${ZCT{Aw)9(pNWt|S#us5~8#lC({{V0rZEebM zad4NHwtPjW9dG)`EmxDfy8Ul(bB1UhWo}9=#kG~1u##39vtbS)Hn&qtY;FpvrBC*a zuOSt+`f>cV*BQgh3r){U$IOfx#(3H1ir0ACCA|j6E%fihG8drR;Y*F7zXYq_+g=B> zIZMfY<@bG+rxo_Mv#-qDY?g6@FMju;NMqoB-*9%|2<{aojV9z~6$uittxh3JHpYha zTAzy;FZZ4F3aI}8aGlF{b;@@C03T_{TJoHXQs4JiFtEZ}-ab}o<1nqnWFKNF44&FX zK81h|n3)uT;`EGy3(0PZYdc=aA8*eI-Cf%!^D@AR(&vu?_lC zmffa%gShScD~`WuEbUg-+n%|G2A*y|jE`)*&}9m0&Q+bIKg7biU_7ID3Pegt9(Anq z-N)N^Ja=#o-;(w|*X^!a*NE*aRJY%3_PkdfB2z1+5#hF(8cBClmwYi4jd>tzQ^|OV z4@#_dR|Cs;O~(mt+NHuN7;U58s47|Mgvxe< zN@D}&38)p*{3W%Ya&wlw!_C~>FJXPY?Z&#bNMJ|@d2>;-TJiR#wD;z|zV{`G4spbR z^~6|XFAh7cQXCOHMPtxK%zeo3u49r;7V2`+i0=5SbViChSR?nip4GR#kf@4N8X4}M zs<~#^HZ&&DNHqiAycZW8+|hBjkat7fT0_ipy};IQX~J=kSU0eEt`a7of`*Rlq$8voC0DE0e#Bp;%7TO77AJ%z0_lUd} zu{b71Z z+gV#Qdd~t+qqo$exNb=t)*anVNn={~E1Iq8T?fIpC)s_k#{I&$v$D1C9%A>9;C|NG zTp!d+!|_~nZEwi)&1}1ih@0Dj15c@#jSeEY%`xt>RlYt8^53zb1wa1J<5OQ{dooYA zecd+SsJ$&DoUC9Bh2ZDjEtHL%6!IDT1;+!}WqhXg-jmGmR+kM~(0-F{Nni{-E8 zlr_9^+1xJZB2da7-?J>tmwU!z_^|daXFDco!R4L02I%gZEo@-H;^4=0++0l(5p>eJ z=EJ#dY~IPDmQ(J{8+I=hk0I1BqlhYRcsVM-oKuf=CGIuK? zbmX^gr>Dh9u=1?ubz=K6;@moBQH%LrE#xq^bOQ%YyJ*hkpyV-l59b`QgpYk2?#a+W4!_O3U(yNvw6e$Fd z9_?(QwQ8!~JzVUi-UNknM(6<^^9 ztW9cuc&9lq-%c$uIDi^z2g4n z@U0EO2X(!@&ArvV$_)rFxL3;_f&HYE$sF;UqlIyw-he+y*CL(u_;J39N#XXRQtHg? zwe=XnwQH4qG{VZrr&C#(;&}2xOIg`t5HaE zHotR^_K)$UZKu4LM-S>Gj!^p}GXDS$=RqRw>6UnUGU7ZQR)gBcIe#Ko)<5kzqwcS< zUvv9&oV-gLf46+6ZFlbxd3MVh-NJcTc6Je@_nr~G{p`p zn(^mwHvA2FxA!+@4?HA<5;8{AzP2_#AR!+L@4x-IJA&WsANRrcAB?iLm!0g+>f`Qv zdyIZWw3AQ8_cs+Ova*T?t*o-!&$)j$Asc1tIO`p&!{*1$^0-Vc7{}U~uISJJcHe+2 zT<4SJIPAP`BRD;*%S?z%63%j=aq!&GKlvrEz8~8U+^b&1lkPX!>5}J+wBoz2_Q$sE zxjsT$xa|3xNmG$9M)D2z$#o6M1|y?XjE*{AHNu`vkaF?37pJW{wAp;kK@Wz)HZEz}n1He~)UH!mbP7W>Lx=(5cS+8b|ipC^#0NL)#a>jDTZyUG74taAz zl>^~j1N@5~*1e<_^-spK{`vcb`dB6_Iy=c^+Ok z!3V8zU)(>uknzhQp5%s>Dr}MV!iq^1Dl*&%*B#HcdoB5I4T+!@n&!Occ3^Ss-<0th z{$fA_-Jo!|V+biS%8p%iS1fvj%UjVqq8 zfb%QK-s_TeC&c;FDD7owXs9*;m;V43WYmxPkJm zCl%W>64NskVgT`{gz>mVMHoM`sXro4oWN{iIlaeteGaWi?rYWXtA13#eXbOH` z8+iHFiUBhraE>>!W)uSG04Hkr_&aTigzHf^l5>(rG|^o&A_rC2j~dL&m?~Yv5|slb z{kWL}FqtD*TDyTaR8!(Ls5#H)pA)CYcx#%T8_=$sCVmB6L%u9=!rLHbQ1GbA< zP>TS%6RklGZ``G7BOhTBI|<5qax?apHj&Ma_oxI=QL{{T9%S$*;3VVX7lO~FQa9&gPquMj{M zFHscQ+2XS!urXcU^ZXc2+e%NSh$0NV!_IL6gC`+q9malg9Uf3`nVT^y@+y8C)-=c?A_+TYw2 zz01pQ4>1I-Az2v!-0^~GvTD+-4_tHpWA@%?M(H6zbT!a;uiP#xH`9$X9`po&#G@X8nWYmC$(p<&Hufxj`N^(jBq) zJtq;r>tpuGQq4v54FaQAJdeX1%b4v~Mo*{Im9U4E5)f4v`PS#bchoa`YPU&7e3Vg3 zW%X;B$3M^Q`55AM)%1BW$P~PTTF(#M@y@wUr`tJQizW2lK5L zj^<;T0rym;2c%?4Bv1~&EN3!si%F?bWHh)DR#7Fr#9@chNE>=qhd+_UQ4fX4HLDLx zz^L1<78`)XrE5wMI?|vK<_;yrp7_X8hNDZ42uh;zeXt*L3vkO)!!1bN{ut2Wa=UIF z>Po4X3wn-~l5?Gs9J%%s9oexR2sIjKt~MNZJ++}-dZe3*c_n_8tV6nf-M~^*HnGSz zRBuY>nFmgo-|+p-Dzt}?G^%XQIySJYcOMGnUi|w_X?l|zn+WQtLb^nxrEBULe+bIG zD~`F_-QSY~fR017k#8Tiwa$6I2la-{1Q3WqqW=Io`R(^V`*hze#orTZVs{17+>P+I z-Nso=nG})FOnN)De{#bEV9j!{6y5Rv07~I~*ZWfVq<0~}xWyx{?S4{v>!CdbaEEpF zFD1lXTwB~*m?erpHZb+Ltvv^*$9&>ByllAr*dM)wU&z-l$K@o$oZ#oR%*kSh1JL<+ zkA-D-oPEu_jHWsT&vhzjbzYjBYN45rVve<{#><9g1S@KVk*88Cn(oqo070ms*1lMp z1a2N_R!nRp6xAuh+?eTI-mzAvLb?2~O=FxaZBfht_8N+lw7=1oq1l1la-}Kb<%Z;m z%kro>7?&Z}6@THmziw#Q$W_$Vz9446d`4KN%)=7K;kM*fQqYxgN(2y#8Z8DHB3EMbs< zUqEv-_~V!I{8~7g0Ggl%YZe-!%`Pk6YQ-A~217Q;R=H=DG_6J}i2LfD z>~k+(bq%jgYw^$Ft_i1Zlwlf+)~mdYw&vWvE14D6l&vzQadU+z+K$$)Fmg6HCyha^ z-QApOsTu{|``rZ_cIpzkQ0*AF5XCt=oTV$NcK3M8#6CD<07lmrIR)-+o_-#6BXG9& zN|W0-jRJ0vHC36lU=1s-Be2OE_RD_?^{;OCCmqgU#gUHmYlDg%Lx8X=ecmMWs-4tQ zTRCrVETDU@Yq+#q0{|Fhw3Ax+;@&6wjSWQy^Br{4?WI=oVek==?l?F%)GzdtU`^G; zn0yE*ebMepBw7KyiiIF&LxPFMGU*-kkOgIX!-;P>hTc99xkGVogKOG~ z5a_F*J~XAJ$Fknbjj}BjmpTf67_PPQ!#PkFk8(et*Otf&!lqHKh;y3{lUF2dL{=Iq}+;)pV!VBYb*iPdbxLI%)935qcaGN{0b0d1$JC zC2vx9f~wzB4L~4N*T+3^eTOmv8jD(N7lxrXzMpkgWbLVLZW2Uov&S~sqi`SGfw* zw*1XW^&0#!f#)-Wfj$Pi*KFeLfD@`$S@yRQBDakcME?MmR29h7j=wB%o?|q<V85Ndk)kDi&l55lvRO^X^{;CyIDzl1nD&q^c3UcM$EkidLFqxAw0fSmwO?S^|J8 zoOcu~b}4DI$-R8k@BZ9x`;t~j$cV}5o$O?Y!D|TaBQ4GM8m=YCgVSc6u5%Yqseb~fYDUAdZtmle8qQSqF32WE%|JqHL!B24 zWOI>5cW?UGDcmj-kjZSVbWRB_)AWQvbSkO`{{SNHm#JBMEXxHR)*E#ws3b+BTq@Jl z*T;<#(j6sj&snsohmROR`%2(&F7> zP$QYv3HL|1pKMeG+gkZz?+>34Oe7}m3U#ag4~u^*3-F`@BFB0i={Hep9=&=ZjcYMa zx6>rjtdmC@LgG5KY<)EYKr9(dOtIVNY?E>ADge?_tl4s z`+ZA`t5>yGg0=lc!b=s?{{X5OfeNdN%)aFQ(t9}U%Ih1ywDWxfg8u(Luz zY={28(&3cej~kgWIC}#I|Olg1FD+bLLk2vpf5Zk*Mye zYTEJLyN!vy40a|y#|@vCcc$xCD-PC(TE!ESIM4K~wW`Ra)S#2@#5l4@R!RsH=&F-0?@JIxYH3_+c>Xd;5vRtumv_UD1aFc%e{62( zzti~WmOW~U-P|U)W^z@=&F5O}027hjo_M_+G?BzWZF%#X4w`2t<7*c>7 z^Tjq_4A-=^wv(k%W^e_~A(nF0#!Rc;q{!B=$&h1Rsqu`I=#D zo&Nvo0|d*!z;KQFiQrtM$>ud+TOgZ5-_@XK(w zU%rfH7g)N~AE7QlDimdz0-xe=XCw=dxA3K$!q%dx_|j*J6#+ecXem#|m{83cQk$Og zZnfdYM!<(%txpOAl`wy)9Ze`_I0SFgMLc4Gv>_u(f!F^43aI33fqn){=8vgo<(fJyk_Tbg%g5hQ#jB8&d}@?lg3=QKA43{JuH) z;QjaML-jAzn~&p0YapanhcT6Nr|ioJ84f1YU#okwgWHiA!?Cof6|loQ(6*7N^9j&U2u>|D@tsRcBYA11EK?}oa^D99#f&C+)1*Pq<7aPDx@8A z{n!Sa_Rw`SoP}$(h-UDuKl)tjhgjdtwDTHWrG+K=U>b$poizDjcU#exxM);Uc9x!y z1w1NgUy%a1bK2@@)<&&YUYoqZawG%NzrQc>!G<*JQW(v{=@i}WN`D=HXs63eIt9F` zZGbybYHHU?PV(VF>VM0w3;^S|tx9e-)D2&{n#p*Cnli8e<_Hz}Yg{?C!&IlnEB^p8 ztw+hrLmB@7bx?KO4L(OI;qi+x8eXKwfh(@ir^=bh&D+x}g*xN`9~``}<8WkDEj1u< zlUSJ2qNeT(XzEEWD_SU{ei@8RW&?^ef-1%yA@6Vm5Gp;pjye|oPqx3p90Go0p%|7p z+<<*08`h^YhkBqJzuWj!WZlzlHx-=9!lt24Uxp<&iJic7s|dI$p3r3Uw0*xCfPUon ztF~Da#DYK|c+l3kmd-WoIxSf@gxG|%I@$rHF}Uty649kf|9}Xb;CC z1|>6ydx%EWgFAjj3ec4X-QX3Nd!~Y>rRzcRBNN-fO5is()oCAYZUB*gg+k5UTjU`m z40F$UTKq{g#f*G2n8n-jt5$Gfv8if#r}C)#j^zthdyTF-ZYG3jp&;jnVd6{gwxmPC zm-<6gAI6yf0Nvt6JFY!lDtdr*ug4PO;o3#nYM488f`nR$A9G715$^yA%S!lR-|>+& z?JczjaI9dnZ&ESyGO_mFU;}8%n~AUbfUX;M6fC$E9P!LWPMvB_JDI7J=1(dS`*7Kb zgXsdG%LFa3AB9O;z1-(&Zr(qX25Nr#Qw+K$H`F$_LdPOhWLFfqoc5Ry5?{{R}hi?sONp4>4)*n!hvM5PTQymLr9G-dNE+=Pop6uy zGdtieX>zhy-NhVX!vrw^qNl`CwHVM~^0UGOk+`VU zZ&{vWfWpj;*jY>rW3(*@7O>vq?NP=4cdyI+FWJ>T&r+G*mJRBD!@m1WpGf$241#-^;SpNX%L z_~Gr&7h0Cbx!pmf;f5J<2_<^bwWWW<1ADrarsR@FTo46FM`;=ig=?zj8|HM&2=`af z)}#KR=EYaar67rRkED2Kp1u{sQX8Q)T|3A%F$yI%y6d4o^3M&Dm0tIHloj!*Yj_Y- z)XY2ptvb`^hReF0D!zGMyMLWcBxyw03R6-tI_F$PaV6ant6ujKOSGrqq(Bxq6~!n< zMS%0`g4tz2YBRQ}RlP48gaoU$^QyA`G&x~{5cNuF>?J&D#B(aCX^R^F04{l*0RshY zwHihjIRXGEwJhL?3NF5{@&hayAB`-Ar=%6HPk4(&1Ak5RqSxYSf$b7eE@hM|NdXqG%*w5yd(bFbBxhFW7cmB{<9Cb9Xv zgP!%b$Xc$PeWV*u8iP$gh-IyDn##;}_Aqdn_lDeBaU z6jS8Yt{El0O*82QK~E|Xv}9BTJvIDr+n!U<=M(XwE)D!Z-2_34R zoi=2CNTw?T~sbXvd6>QMX`-(?W!U z;%iJHxrRLt-$?yy<2#;I(`h?kxDW0M493+XFP2zzaxNtmt4_tuwWn)>QXkR8ZWW1Y zA5K~2O+_&I%Rr~OiVc+E>IsqYE^PuK#YCGXx&fyOb8>$j+Dg4%&lIj(y~&zXk;-trH|?l z``4n4HvnkA9e-vTkh#qy>E}$mxawEoQg+jOGb;ulDX!(I$b33tvQ`2JH$MuAJWrY; z#Q9d6!*Y?hO}7HM0vH~Y_<^5}GaQB_gr?h8Ba*-&cQr3pi1`h{7Nl00t#cnd!Nmm7 z?NC8l%u9$Esw%^8avCr<9n|#Hda@dW*E~ZJ28&fh(6kUz%k!sk$n_>bR1GQ!Cbbwz zYbiQg9q83i%M!U0M?@x z_&G8X27?mqB^{D;0 zv2Um;v8$F7^*CCRF`wa(u<+lnmKF*XH=(>88f(E64C1ez>?psW6lZZZAW~vftqeqp zkx<$k`s64uZ3K@|rMukf;77uRj?Y|A8jW&bb3Qp?W8r#2Zu-HahiSjueZ*AJX}dp# zGQt|xhbY#8YZw+V<@2ETLbtV6_%fX{>*8>Lk7W>Dv@he}{LsPprt zW|gEPhgxwvG5|`r6{SMZSMk>jmNCZWnu(>~MJFhkww7J0em@aV2&MrMkBupgiK?Gf z6p$&mc3P+yAtf{e)7HKq=5Y#0o1r500(@wkQAf`9t1KLq#?@v?HqZ*Nr4CtT@Wo88N3eMzVLM7-$T=)yCxfxbjec?=jW9b?A z;)^aQnoiIwHOu4U#?o5dr^dA2I9~1>bIeggW&83N&CXg0RNGjrv5L^I0FpTh#>0&CY269Yv~sHjpmT;gAfJ0bl$nh?{__w*d7m z32Jt>Mp5o5)KZ5($IA?v<7=-`e^ki54!NXevD=cRT;|ylFt+7JdfJyBR^p_idQ&O8 zd|nS)6mJz;Yu8HDQxYTOeVayBr8AZ|YT>=b3~dPV4KSCo<&bPKEMRyj zub1J6$8g5&38&)jcE(k&CZqoV?1>PSCvY^$g4Ai5I^f4}L=CS~&vb%1QBPzu9i&q% zfCJUzPMTq-cMF%&fvZX#)EZVgBla;xs-X>~O6!;G!jEyFvA4#IcUzp~kosvj`y`+D zAT6Fu1qeFkO)$~!GJcYVgZrEh`))ztZ%-lYwN~{;Nb_I-!%pYP3JiLyjPfA3?tiD_{{Tv#wc!5%FLm5#2>MJzGAocZtubFNbdPO`N~_4^ke}0%pYp3M zmlq7n?F)F^Xg9C#CoEPwHSGM!RCyV$jPEZY{#7$;!5CNofmGD(O6?v4Ex3U$dtAGg zpwGz{w{ZdI#Pq8a9AqQ^08EkwLZ7=@;<9YAEYfP0OvxNnIit%;kWM6#=#6sEGeSON z5kFYs?M*~~Bn6~*^QX4fjI#S}7R2N=9oh~@Uak$GG z(<(MtWadcGd%BwaVP$|(OC^uCKCSiWg1!T;5Hie{b)Dd}hvfoy3p=KXN-cv(14IA- z`h#S0>4qeof!?B5%9=UBwv|3YoPLrQQ5z{q1t>;qP%`lp!*0uCbthq_{{UF=cArHh z{Wf3zY(BlePw@W$Cb(DYA@Mp?uh&KWZvOzZntmGB#3(FkrP$o<4&* zU8c&bUrgr8Dwe6sYYAjxHUsNcH9<)fRBCdr;xNRM1=T9DY{teB#TW3cAGNzi{{WP@ ziq;!ji6)vwW>}#PjZy-ktruuRTK@p28QxQs$Ha)sBY*>{rB^kXJfy}fMwb)mYp#H; z$s<4ln(Lm}`#~%gym|#+aLU427zCDOVm;O=pZg%tV~q0M~bdPLycd@o|7FSl>1AA@|FQfnz z1O6E19KSMTC867Gukxy1AGTy{ry^0lP0Mt7KLe<``Hd@Kv4`~VGP;IjAcRQOSOZ^O za>;Rwo$it2VgA|F`PWFmfa9^ua1MJ&vswndLGT4P9+d;iax^mS+<{|g_N$gISdUSZ znl9RCHN^Z}RcOB8pwujrQk{J9r^bVE zL`vzso!dDXI8Dfg?X1tA*>~ z7py~_o_o zu%SaEVB59BKrVc$4n)9+%z^vEwdg8CCN5>ls zE;2_jF;UKFzwv5S27f7!j^{c{v_I#22M;sh*Gf;fyN23(t65%1+{*0hI!Fv~QL+xF z>MSxDYlGyt*O+2!YC#Wrp?{kQ(?@*12@3^TlJ~dkGEJm%LM_5ly!-v{t_{(+xL#WUi!B<7bsgXAk=}WIN$Mo)aD{OvOJFjB)h_z=bq~OGiQ9WLp7(kjITh@DAvmhVu=9vPc48Q-X6 z2k1Ftsqw$K^D(U^O2YC#w|F_b+W6EEQ0)j$iTGAIef_*aV=ENnr1zs#Dr1Xn7{unW z5Ct4`>M^;-{l;|c3njettQ7wMwH#(KbE1hPCtZHw`DwJjYA)@F3fBaylW!Q0IF(eE zG6PUo$Hx9%0r=qGpO2Em7%3ZxQ{XoX(^GL%;z-vtD?k?Uav$eX21(+KfEo$d#_esY zgai^utt;h-<*~~B#_<4v_|%x&G;Pysjm=Bjb7mTQlGfej+Wzxx_ZQk_wnmoPx1(9v+?YtI`)wGQLuW4h_K-HmRhR1EbanN7!`1H3* zXD2EMoHr7w*HV_(`fqBfbH8+;w^v=u6QWj6Zd$s~eq4EUuA{Ck@Owf>+yd&(=kr*w zMviC*zIBTCH{F4E$i-yyo5&!y_vVQd3wiG(17gkm%@FIJHoRwO`!E?3+nAefx!cyT zyr+0XCTk#BAq^|E01NsLfbscO5zY4;SN9h)m|==ZU)LVdwF-=lY4~GviGb{Qn-KL6 z8s{&EBQGrFydaROHpAuo>oL3JLp-G=X$W9LANIu!LZ|+1J~+FMJ&p9%jto7mYh2N% z*wsF1ouj*+XW1psxFlJ~B_al@pw|l|26$GIIGEQ*9Cr*v+x=Z?vCDD`YhxU1NhM;G zrFS`~rqS1M>*I>vM<7EFqyFOQ)~@*cM`UF=@ASq2^ZWiLprML0c|GSVBG~Wz<`Yd( z5Qox4y$fSDkTWIo=e@9}tJLqmcSG`8wS1BcW@F%kFHcK#-TgivDxmY-UpU2uJ+ zZF2Gd0JCgkh@{uh5=588fC5=t=p5$590&Iw_X{sG8eSWOaf1N*1f6Cdncwh@zn81J z*5iWhD5HEie5y&5@5((}3T_df84u=5H?3z}%0t_5O)bULFUdWu2=YR{>-!`R`b!Pe zG09y{JZ1Zr-NUsp#so#bs+K#KdtQ()a<#{$NrL7z}i-@qfh%mA<`c2G0SKb>(xl@&K;!fn{@-rurNu*YNOlRf= z-_>5Fz{QM58zT(#_58IT{T6xPsP}Ucx+?qs}rr)0ckH4#2N3eOv82T4jE9)J%~dq8iEFNJu}34GB*aAvWFS4G0ip3 zz4hJD+up~(@xJdPEaq7*?#q%SBP*%Q`ubcLz8Yd8zjE!pO0%L3CZ@Xr;`Tdh{&$jt zYFpO=iRazzIx z6lMihw&A$x(66;=T$#ih%}@Xgu0w3LsFT!%C()`aW#({3(iU@0ftd&7?qVgZPF}{jWA&PQi{uJ+~kjq zm$vMMoNBE-fM&Rg(M9lqB%?C50cZ#nALzp`E!()!k+hT5D_TpA&4;vjZr1NeIlt(9 zig7pH*$-?@Z*R-<+%rz+itP5}Ty5gtl5`SY&YrmKi4D^c7#=1scm2AX8{-f)u5YfY zUvm5M)9w#&_D!v&mt*#)Z7=lB)9wB;3v?2%6UW35@>fz^ArkU3*6Qv= zFI}e&mq#HIHMcgPUa}T=1**4WwXY?4-<{RS?7g?JJWZW|yP1XE*%C+^b^SqMG*Qc& zll5zd7}kL1(?}DOtKQ|}tfV&lS2Nwy zi%90Xy1YV7-My{iiXqB^m}pAthq}h6BbwcVM7?Hwia|Fb)_mNkI8GAPxgO)Ywz_zq zlJ1*mz0N+;$tpd$ts^^OIw}fbE<${gn||;H-77WaFZ+1e+xIW(Ic_S(-aCKj9D6g~ z@*L+X^2r>x2{h#Gj%Lk9k;zgr!7iUnDsm1De$M^B9l?LhPsaDx+>Rzb zM6IOJz14?m^Ab$2V|dvYxVnu9eyv*Rg*HdZt#8sSX~sliYPj6qo^m{O-Pd4tJ+koJ zUlqaI@tlV@$wdOH-Q7>i-Yk4=w5q@U73@I1=32fRY@XYYRF+2PN4V&;zXQT^cf9g; z+-xT0-dj<~+Hul*);vwr`(d!Mzfo28Y%J?HuriU-rw1f}G>1}vcetGrw=VX6*x&s-gXadTS;xg@s|M;k?t?(@F|WNsYGrrE5&k2)$GuA9 ze(K$LczC{VjQfO~{{Uw3)-pkFW646CPX%$?*V0>BD<5V_zJHHRXWpsZ9k<XQyH+4k;hTw4rCyL|Uk@{xNM20>7ov#JmTIU0|Ujn{Wsdp*d zki@whVJusi(cO9tYl*w>o$bCKwX7SwxnAe&KIdzhBa^qj;eD|0ZqvB3LZ{rgZffU& zZVK`}=Cxabpc+=A5u@TIWMXkFQaujlG&q)cT{hey`P9bu4gZc4qf2?piNPTethM z!UW#E-^E`naenyi=y=XG+4!t*g^vz!9w2lT)4NZV%Y5w;$abAYevp3N{qno+D<;2& z;z_QhLlPMrOKSvm9eA5EBQ{}jr#m6n)2M=8^Ngd{pp$pzeu%w&*DG#m+pQ-`VKX$ zmeza8E>;eHQEffMF@~gf7e!W&Bvr_q&NOm<-$8|n=QQqfZS?wr>w3z6@$<4IEe&H^ z)5Gqrx9!jU!+zoS=Mlv5Tz7WzoyT`;?%iMCOJG-rdslTZK_rn%13XSCK$RG!m$mWT z$Cz`ac0*%whB#^V=~oyX&+fdo7ck0!cDJWN@ve&PPwvmYrLda+0E*)K%GP(kg*gs> z!`_>Wv4Yennn*3@FtSEni8)Y=VkPbDAMy^!#fnJgvv;$1q-%7teT{7Kd03{$4#?fS zD((uu2K4yXAAjz*_h#e!lm5}UUeDz$E&J2Bc)n&HQ;Os)=Nu)x&0}u<>T>rC%!2ya zNN}V5)}T1_7wslvv2ta`%6f+Z>qK9Vov&Vg{paJM$>I)9BQ6f@zGFk>@abQOs9x)i zd&_dK4ds-Q#WlQvgn?1bV`U(+@Xs`BN_dJzl=qr!n^Z&m!^J3wvu0S)5F;UdYz5 zTq+i0EEh5#(>jnnBkIfHhl2^$-x@OSZsB&8pXFVj{km~o!3;g$VRJ3bpt`e)9!zM zT0b`3^}=$mW6t;AF~Ij132Nwx7bDGfM zf+o4HBcoo`XU^2mIn6@doR%D*NtE_JCiHulLtH$D-^5pHNB0s-KGV90+$#l^ON5>+ zl01oX8c1dK*DuN4y1LZj7B_6NZbCQ4Hn8;Y`)gZQb5Y~rNY{`E{+^>yes#^={{Z)K zV2)!XtiIKi5nRa4KHyKeu@2NS>rHEpv)etIW^-D>ZQ9o{?ymd7;^TC=54dfG%KQ`a zEpc~w_unDUJdAFN+q4J_A|feMUv7_G!kuy6cuwBM<5)ko3)NTTmF52C?;QT($pSOC z41y4Xru|9s@T|R{{YfR$X*2+B36TbxWl}T7v98GJy;xmk8S=lvL9n`U+e7P34}6wpX|1{kNGoX2Q!UsEst02A=5oNn9X za*R%phKXETZCXGj9pJt-cH?^)ic(0E-IYirpcb`<)HbaSWDNZAN0ZNiV&m=jes5K1 z@Vhs7-;&UBNH$OHsM6LcWhHJc)~2og+lK{aAE=RKj50?Xv`L&683} z^u-oeKQxkmaoY9i@E;o0;C7}SGaAU4u{Geee=C4Kryj0qk>gSjcEd8d%8|VgmY!59 z9%gYt8|s@VemIRUEJAHi?*{bwby~55fP06w@ZGwrf;714@IHNM@BO${=0$X9%zu~^ zcqsRMXE`cq@TMa>lHAs~uHfOX;ck^VoHGF-rC65uvUV6p)T zqr9%i+uGeWtv)!p!=6&+m#*+olcEiNWZ61Z4t^v}iblt^%^?8M3$73PTISV|bBjLt z7FeN*lE1JdU(S*CDW7@k=%q2Yxpu}lR^2ZnM58DZ2W95Wz9v&6dct73Paxz(on%85_ZR;ux>;hX) zop&!`{phj0NEz-CKs#o6q|%^Kq9(KiWsV8Y_B`-C!>!6!cjCL2Jf^gVw4W_&sQXLq zEK{sOrAXv$<`W#1_hBRe#8X0Pj!n#V)0j$yBmL`NiJHkTxGL8~aJ}M^7}7c8+#-#( zYIjzfsxr`=b6nmT%~D#ItpjCp4TjaSaNWj|#){IZsP%#T*&2d;hwa8QH;qRhD!0d% z(R#nxauGkpyUfkQ_`SIhS!8YO6gg@HQJF$P-7!OOSFmkXJD zK=oRy=i=j#mWwT8UBlQY%OF?-jD<=8Kx_>108`Xy{8;JSH*-CWYDuA5$Y*g6$a&rL0bC*XZ~J?LmX7B7I~X9l zw?P ze`YyO1@0$EJP zrBmgOXij9VWHF^YXebYkE#unsHKAjplv?%VKHXTbmvWIq{-I8_&pfcQ(x@m9U1UV- zQr5T8!s%C*KStU}NhXVsQa|FDjVu7Kx2IZzJ}abYC=F{Jr`<1OaHXXDmP#^I(YFGs z)aq24<0s4ULn1xQZ>$RE{Qm$1%&2VN?hoZ%VcK2FuLLZU6B|;p6V$KMPPv?M-eZf{ z;vCxrt_R#4F>KCj+x@_`(tWSYjjDapDu{R2DiSj4DAfJ98zn^L%PJs~1~V z*~9Xx<}#v(t!tU4Mlw>!F~kQ(CF=BO#2wL{5#~ zs>fyH7C5v4_WOKlQibVH;?xjEU3@8)B9FqW!VP*;dx!%mP=J62;gxDN@u(*cLo1l& zr(>6EybnsP-CNS(H$@Q}iKL;KGX+NQgf>UR7kJW_Mo1)igkQ$reQ7wnhWoADLG^xR zBK{~rPlX~bqk?GdcSw&L1d=vIHqOj9Wxld1?XH-W?Y;4tkE-1@`K7D8c8_sKfuA1` z$3Id?`kG5X(cYIX)#!Q;IwvW|NMex;v4pq+Qp3=(42(JIDgHQCCP)ts4RfB;*R6UM zXbyKA$2IL_5`|N6JP8B&{U-GR5Z`$cL;?k(O)N`Smu{hCIRYuJES`;k`-Mrk9u-!| z%k$$A4XqY-(Y@%J5^RMxE~DX1`Brqeitp0l(>92D5F!3OeRch~cMof#_D-u@fA?F8 zl5EKHA^za@LrH6FLw_-MiSY2LPCoB>1RULR^Czt+aR)L0#)HvofM(;lrBm*!2%p@H zBMru&uC+S;Irw6v!bA593a9q=Nxx5xAtX(5^2W?JG!h7-rCxa{MTAsj9+b~aNMoA= zT39_hhUawy$K_gnCMRXh?8xvWEFdPXcjaRACvDG#dx?owHHga;{{WO@G(abT_tRl+ zlsFkrE4>ge-(IBsrff~d_S*Q|0Ypa!HRkVa&!jaGtEp7htQIh@ys;LS>j5_rwye}r za{6jUAY@4Gn}cixduz5c(U8E`C_!r6dq&6!tz-_KkX67Lmab%LQCxHWVq@(%AEe&B zC)=gMCXjWmq3xSGz@Uw}gSw)uYp0F?{Xhc0c;tMv&1=h>*1BF33!CcJw3w{_04-^j zlo_1s<4tjxe4};h>8wpE2c5ES(>N>C=ayRM^uwHOF(frpET~ z^+E_E;s&X$ysCQFgjbqL7C8d!1(>iN=b7o(5GBrYSQ_KjoQ4?Lkm3jT9Ke6|Q>(5m zSyB;bC?y}7r#gf>0iYO<7E{-L`=Phaq~$sQ>NfmCHEplRAIHY5BB9C z)@81j2dTx|Gs~mc@A~;4_>Poaxf>at7g6f_{{Z{%AI75Fw;a)9=$Iu(;f%!4&{h z`?aMy(9;pU(;;bYnjiS>sV#-Dx&G#zKjr@bN_i1d-@Pe z=-oun7~<+YYZ|p!xCc79s0YHnM+8YWZnUr(+q+MIYly9j&Ndw;TUkY@_j}M6xG%I}#KZ@R~GI>_O$20_y zEm((ichg!Vmaz8*gcQ+C@;)id{ zbY%K$)-9CovGdz{!uc-xPfl-;7zS^k^Kx#8lj)RTc_|cRE1pXON0=9?gq`m8;DFoq5~}5n?8ddI@z2i|r-KeFLA|osT%>Dyd29CoZBr%7 zDbbwN6<;EJw8RXa-f1ct7w@Rq9iZiKV*wv;<5yb_{P#fiZa2iy3fFFXTjxWSaY2#W z#i~nfS**U*bYUcKt!n=O#CM#Tk7+KS{e)4+^ClZ}xSw_2@#4Ja21KG&%@x%kSGWHqVF#+l_>;$i0{D-C&W}|@lFaIs6Wn~uP&qyP~WNYT6E6395Qgo z3sKJ;LfJ(sIap3bn!f^nei8aPHR(E1OI?PpnN)L%|{vHj$pgAJIEU1^ub?v|wk?tR6! z#%c#pY0!A!gGwS?Q$c~KI{4Csq5y3q6Y#0?rAZhhBI$Y#VI*ttq?MGN%tH~=u9yK% zlzSYO7V@Q4(D{Fd{P0VytxY&QX-0o*TG5YM)Yqn1KxlBbi$XIZl2nAGs1N?2_)vm= zWK%3F(mE-pE&`?g6enR{Q3jnUpN^PNQd2`j-Q=TfNP?B3`g0vB4SM+;1U+fO2>Otk zSfbE2M4t-Rrl8<}@Dzn3t>~0PQb|&Ju3x-h_ghLZUeyf>KN=x)L$#b0ua#+nx%DC% zP;8Q2FGMp1CWT4?k=^P#cw`5b6}8UjX@1aDM-xa%bf@@&(@gb0x|maA8USh01DDbd z-A$yuTKc3JQ|TIO`*85bbFX@NxUU03w3A*%LU-1lAe#L8Va7t?WTk$Y;M^%R&Q3-! zrn&UgemIcG3#n9eppHlbQ*{M1ZJq@trES^?Mg;a{YAD0HXU#!At+w$&duJsfO9O{QL& zumldhDTm|1dA+r%(Q!_2R)ju(WTvmrBZ`}aDl?!Uw~Z(;`>;VNw1e=chZyj7mR_PR zd!7^<5s7U*Mu7bEAC4qL#0M2Zl|Bv%M|$2pH3@Ot@*35bZ$PY0-9ARRn;#I+eL~e~ z9}2(*(RzuOyH!I4`tzaG*XNcdH-!Zb(v>-#zUQHFwL@KZJ1DKgfm-cmIRJhdQx-9C zdq?)#rmP^~+NlbZ@Te)fnHMoHxEP=I+d=W`iIMTIKUlxQu35pj{{Y--9}`f|-EHqx zS>7-++(2M_F*I>1)Y?+4nZP&OHbT18P3Lny^3kwWC+T7{^3R|+nGX)SjXY}88--`K z8?jH0l@D>=NDT-o%1A!mb^K0a77_4%=8mcHcGH2}ZanW$SDohS42!>D6@A-PXf>@4 zn4KSQl)3w=(;K%~yGZqPwd%V+enBWZUJz8()ux~zYo>XFizs_+o1Hw?t|RS98k@_H zf`zK}-`q&*MYvEFpnyv+{{ShdX^HW6{jP0RxZR-t0RCHZ(yJF;{{VLN2WDp?KjblG z7X-!+P&IcCX+qRDs`TC6dd*WOw5K&;r(JU#~EoOQB_ZDEDj9;r_Qc?b)=0L3a(CBmEB** zEL2S9M|E1wWk}C+Yp%WqubdwTe|F>9wvuMkFxvp@l@IviJDs7`qtyye{83`i{9i_qD-i;xePSQgENd@E!~mDAZ|N=@~yuC`&Bk$OZkB3 zAL(zTkBO~!w!YL`s~Iir<0=RSN!6M{K7BEe<-5*lTkX3406OV?z58#&U`R|+o!TAB zPyYZlTXzH4RwyHlt;0TEl|WLy6gkl25y*EOh)Y~SuAPV5c%B2bSUCPLWjLNoI<3Wv;G(b41s);Zn$v)J8 zIhxn@LJ|h z^t85FW)}8saVZT~_D7)8TA-j5$5QS2iQ3~Lx5K4zPVd2j5KJ&WT$Q_nexJIz^OUri ziSz+RH3dl9 z4D8=vP}OSc*r+90m=i((sMB3C#e*Ku)LOcNV1aBZzjX!&t1}54GdLiFsa*$|sPV;{NFz(t%wFDsNj?!vQ8q$qu zN|S~^Xb+`@b!DKY8%5Tk$XfDP$!RVg5I7in~v3EO89L9 z<$#XsdW>QX8{MTpLhDMBfB32o;&9WWX}?;Fusu^+kV}Zb9_b22D019KjYb*R;D6&# z<%U4(3Rm2TmZ>8@%$gq!GOh@XqTIR5GAOo(t{0<*A9DU!2Q(o@i(+Jz>!TRJ#E&{u;cSh_uCS-$!x1ogO)|RV zjALe5{{Ztdpv%sfGy&aBOp6pq6j%?965jeopi)35EyPgQ;fF|KUeqMTXi`xHPTI|I zS#}0vPzcpe&rZ0nlt$29rBzQ9C`*tJ8q+&|%1J+Pd2$NE38qXiY^)r=FP3&nui# z>shJX`3cxU)tc4q*+2j$T5T2i(wKoMaJi}}*(fUFYE5JW5V_Mje~N>haMG0WsE2=D zDO6wx1btMg>r>^^2ysT)7Mge|=`{W}0FMfI{@gLHx>Pp;H5aE#B%eaEl{EEG)p~WV z7;tGROqMfnar&uX3XIr2HT2Ye%r;!@-gHjdN;E0!N~w*Mw)Ijp^y~1h6yt8INcAXg z-%0t8Nn=ci)AkP>OOH9t)Y`1Ec_i>p3)O1lw?HMoFcDHt+_lWshZDyn zt=9fp)x>QchEWLO&WS@xfR*b!HiXv%~!G4pYe5xA@c1=giwQf3-@%#T%G} zlfeX~a|jRz1EzHAh|=Y~gK1JcR@KtD42~{bU~@f}1^WvO}Bil|=*-{HlX{!#%qda}i)p zYE3fNGoM^v!Ja4d`o8MqoR=G$#L4Z>iO~=8sPSx679ki4OGN;}i=tj2F2 z2?RCOcecLwLNs{+L(?xK*AzK8;x{NH)>|VG#O;nMD#(|nWK|L9C{I#;RMQY&5IQAO zO#>MH%+YD=F@F&|K{fSLJhkz|YWVCz)HlE5yT+Q{+9aef+DB3;PJm=^{8Bx)(A1n+ zi1g@IseHc|3!`QZx(r-l=Dm&pn$mIkvc~WfrDa^-6%=tXQnmF8FxM=y#^;L8B>IW1 z{{S1EE9DKi7OV@pJ9J-`0*Z5?WeTKp74fb*7aPbCq5G?>a9qpr&^W3ftQWXA6UVHJ z>{qW2X@n0ZS9jQ7BQ43qJk?=jy4$CK(RV`*7F-F zS|f2$;%W)mV>BwmI#PzU#e`m?>8n7=6L2=7wN8p?bgh5qhqk=jQLgiH7LY8;C?gf> z5Bv-mKv3yR0{3-!BNVT*Pv!$ow9K6FWZhQOZa2HB(y9^}!H9URYx@Nb6R5tF%D7p# zryi0$3M2Ba_kW*{)hqu16v92mfohBHq1-j65ZF7PS|JCasU&=` z+owya3T|Azg3c>aU(+LGP?7B`o^>A@bvTCnkPf!+s3S4^k{G(lRL$KGHoX$JL*WPPnI+IjvU# z>hP@YR%04VcBxyPD#d5TD>&X6D00hjJ|`;WikbN*9|Sc?HhF0N*Qoyh3b;YW#uZUb z4LtVNf`b)uWbZqaEoZWF)bCcWfcsvitvK0ZAT((rnr5RgJWqxz=gZr2N8eQw<}vpK zgI0Jr_n-nb0Dkf7`&2b}ceKz18!m&kP<(&Ao*y{IO=Lp9=JyunAJJ2CwpDqpo!t;cewh zn{#?oIk0S?4?pyzo3}^=6>xOOoWEuec~C5(mHuE0hXn?Z{{Xh`0sN#cKh!k*bHax! z3VP5}jpm~Iq%^8_)R~t+&E$U^w95@UmS8BSTcx4C_BIUOi72mEm! zPEa}4H>i?xMWbI&#-GL8kpdK{4P1i_zu}1QB~mYRMZz_xrf|i zy6N$!aoELCy=#ygfFI?EkIHbc(wUPsXAYOAi)N{)G}KbMbj)HeymhF~o$7>z`BK8! zB^y>cZT==EhJy%n}F@mnveV5#d$<(Ep~u_S}VD8r;aI|VTPJYUcM0I%Ts{yO3B zdH(>@`D#w{{{ZUi;}0FfyY3KHeDY{gds*xV*KIRZd7B%}V-wvBNp;=zd;9 zp6B{{Td&)#Z05w{IHrD*CXfS2cG9>0VH5auu7u$G8cAk`ijgFH8Jx#il~f8Jdr+qw z*O2Gh#<&x?$D-@&z+#ElUh7nd~7zgjRnw!Dm5Of(+mDb-rV@tR=v3#p(7j5Af zi&_+?@~p#@8G7`Zqwq978Gq@MF;s- zLC*6i3}QqIzUl(=s*pX{{S)9%BkneXx$Mb-7hE=8*Nj-c-BGOecI6b@hrP! z5!<>cnTQ3DfmF{R4MXbMV{66mq3Gu|M)zGmpYa_HWI3*WJRu;7z(^xw(75ZM+&>lS zD+=X%ntQ1(Wx8dP-cb`(Hh;Fkle|h6gwa$1~usI1s_k1<3!|dO^5VSVPE=I)&5oEYKT+|A%(9@HR7A*J0!PlOA$|pst6L4z%DAGRj&x?7_u4ALoUCscC8~9$Gj5cv zX`OLiah%hoI@y}xN>(}BXagnPQ>9IQ8sQ`sU#%ad+SE1o9d9D-ZM*A{r&4n1o+m?< zBOIedsPBP})~I}sYsWKg1904GDd11=(Cdr*Zc*%NXzHiR#Pjlsfa#_Uhe9A|I-?kR?e6GAW=q*Wvd>gaBQo zP~~xjfonA6e%gs!@{*3St0^(iZ3emPN*!^k#qOP`O@S3ic!x;++iz4ZTkW8XNYTR^ z8-VR5(Vpmm(D>z+GG`ZrL0Z==bZks0 zVrbi~a(Oalv#*;^-7^$a@Ua+9>&K7jRR!iwP8%D;fo;yRIar;4nG;; zONxIAt;@(<&XXYCrAa4RZfa7$JS;}R@T;is;Em04Q+1kY5JsC^RC{MiOfqBez$|Zx zT6NJekKF$NN$c?GQ5=sPC$+tM$@aMwQoq5s_-T=&cw!{cd$Bont1L{@9z7WB7PzGmAW}S^RulMG5@NCue*}Y9_<;%y$XvJf8 z9b8ANadxEm+Q3yqxcLaVE%vrAXC0NJ0XHFVNt*Kb5x&oj8r(vZ%=lxC_lGTy$>qro z8{-(TlrD3xEBc7MTHOn})&Bqwi2OFTY>^?zkXk1FEN4k2=p1@Bt2~c!!NFVd7bl%g z-e_Z@B#4^Zx)wBlP1xFm#SXS6J+Bc!SwOe0kC$TAt1|-6)GCR&6 zYPE^dktl2A+}i2uD>&fnJKjR_*V~@W;81=40DM@Rx&g%7!==s4s%uV_#8J0@s)V7Y zKUS4``+I3MfVl1O=)Bh}Y7wn%=_6U&^58@vxR_KaWMR2_U`#>U?zC9W2h!Svp3{?) zg|XqLhH7yaJft?M9LzSNOENt4)D_v55dQ#HwIQ}&6{_bkBpg3%aJ``w^l}bnX|G|5 z^}VGr0a=4E=_?Y(z8GzS)VCv88a1j6HWqMk@!oM#A9B`7II(LgiBWm^orBFKX;@y= zig{t-w`Hlah!26SN45A%-szLKg{LB7p6{Bm`+sR~9F&1)ONj0-=Ky2`aI@qz#Bxi{ z!BXLecxdXhpM3WWDP`VpN)E_7s(uTCzl@J%py5oGS8p9NGBin2d~nX)jYjKEOSBYs zLsbqVkmKazUMrt|MN12#aPXxkvEfoUthk`HrEacn337js;W3pafK3~vME6%W#c=$8 z6TopdZ4WElFLC`#a>Q-yc=%MTVFyVrU{hZ+hnnrD%Az<+?v>FiNBc6UEfbPhk@=)$ z?Y`D>^lN#HcNY`#1`(8Br?-e5!}+kx#OOYQ{OU$LXbbD2ExV_QprUsxdFXKGtoZPx*5muPnX0RI3)F8Sj*o?1J2I9BI) z?gxnC`1lLj*~c1)q_wq2{{Yd3%~=G8R|MdTf_rW2O|gzI-sad=*WNI8=XrOhadX_v zaC3ZjW^y;3zuPoEvE!niZ{p)SX3{@)Rnu%>e-KAcQ;_Fg-EUgPSF`QgW^-?0ad?sbm3h-?rP3wipJE=NP~h51+}@sZKv(q^0=f_T zZ|r_MhqJu9zOuZRk+#3Qy5{*Sn~@E-_1Nv*MW??H=3SMzlt;Md9a(T5=De1kl^nIr zD1M_+e{Q=6mcP5@yVJbmyo0z8{o~EaB)17+CFJtOGH~%*!v3>kZ2-!>1#s5zG^bj} zlCEls#O(R&Zpq_0u6Kow)3|Q#;7%uxo?>pSEctuciM^6L1pLd%Y~y2?^a|Gwuooub zr2^GyTVAtn6O**!`N{6NSif0!wfPQ1jk8M2$jwvwZZ_U1Pq^mY*=q{^TQdsji3Neg z3MQ*x=+p||zS&vL+RNS@!QGtaYc7HUe^!X7B;A|xwhb~ zWsXa!U7>;*2mz`N5iANVsHs>ED&lph9wY82AHpXo$V4)XJn=VRyo>vuFTO~|c; zQQEI=-CTn#vNX@@NuyT)p+2)#>4ig%XLiQ?>O{HDfr3{!gwR(NL-*6ZZ+Ul~UheL5 zI4>2tT65PHFk7>dPqMK#%YfwWukjOJxK2lJ;>^diuorcu);m-aga3EJvxOvjNVh zI+r2lrf3bwYh;gY(LpxqP=WA4RQWx*#moK14{IT&&W+n$dxhJrylY1LTiD-yc< z=KDk59Dm%)i%AoaA8tPL*rx&9w?tGMJ_o*dt+p4J672M}jTZWhtBmJ27j1Kqews-g ziIVbw65F1KX-2sC0N_u?toSJVw}N@j{{UH+=#U*ley)hM`fUE$EzDQ5KOtkxg}Sk{7RxseJk~NKh>bL{%HQdiwG5Co?0F=6jce=?2j*!W z1uIGZZW3@S3sH6QKA1$2r*9#yi1W3rWbl3=wamo-pAdR|)$vQZyKdL+LtSz` z!OPt8H#crxAuzaAwh#28n*K(?p&H|;;W@BI83mf(x8LJj=R1sNAin&BxVrxU>rh>x z_6pVu^@EADyX2;pMv4|lrn!|Te7!KXQm*Pyo|v6BekMd_Io-9ukDW7t+BhO%9^#Mu z-_u`nf3m;*y6*X3>HWdoG8+jEv{Nq)$a4IJftGAnekkp(d7B%>DQbh?%))?vOWu=0G!(|Kg@zy0H}oTF4bQqQ#bbMxc(bq{7E^2w zqjhY6A4y(`_ z@!nif`|`&aNW_jo;1^1(jvM-y8~sy(63soguadKj*Vv7|mQkrCfvqtpIelyu4Xq@W zKj})A;wHJ~`1^}Ho>Bof9TR(ecQB7x5ad5ebc7h@L!dfhL`2G==D-_MayQ!}!n%L4 zJD&G|?1qclxq|Z6*v0zAy^-UWi;?1aBe^YK)F$Z8)zBPwF2Uw`wSYJ-C%l10cx349ZNYNu{xLIa~ z0U7#dq)Y7&5^?V@+pH`+?&`?Nf$ouw%EH!$=nts|ixRnVMI z-J7|)DrRe^7xyp-Jy$H=;D*lD7j;vj=2QxF#>*G8aaorWh}{DayXHu$k^7I49|a~p zQ<^z4O90f607GkqA1hXG&36s=IUr}6VGBZwv1_uR4aAP5oNl=OFB<|qtO(%a_>~pO zyMwrMIf;Rt&JeYrA?in88~M~6Jafv1iqeH`wIG^TJo3{Pj*+cCryxqt8Dt~-V3Fhv zyz1Ly+ILqe5NKIiNflxt6~d;_ea1RQNy~7|V!mEZ7+g;8N_@Uvb!m;m=j4W+rLK^M zivj>6>T+~G9Xi^yZZEQxf}6WIi$q zUe=tLn&*M^hbTU0#d?2FO1|;^p$t$YaYD+mvdbbz9D{0uK+U$QV-?Q1<3E+oJjh(~ z3z0e{{x@HRZE(AO7-0e^+Qy5Z2#IT@iB7$0>&EuEF@~aV_g%xr5Fu93C`u7Qt#hs@ zGI?MhvBaS9Rr%J77ljPk#6Z)#r-wxA@vBvzY_+^8ALTGcX&5-G26768&nl0{6%+E? zL6ba|ql(6Vk4mtM45&bo z^!Rn91*{R=Rsa=(lEh`Plz$dk?*{~OBz!@#{Yy^A6B{@7tknMitw!8B1Oi7`lu8-q z_?)TxaUv+maiQ(Mm z8C)Dz#dN<>@K46DT=#N8jvE6^Wvy^T2vxTLfp;p{>1)VF04h@%Se0?^5w=2g*11#9 z4pg=@0xX3oyUn>(H6IbvEe5zz7E?~PJ*1IEOP7q%2>~c*1$R@W26=0SiyG?yv}Pu_ zdcv(v+4Hw{ML#rwy} zaPpv@cDaVAukJQ+sLy%~w?0~9oOcIf;^wfB#Cq%FZ7SD-?yg_ACJo3h$iuL?SFjWL zN!RCU?;p26ee7<(N$lU2Ef7~p$G0Fm(9_!o>91UQ-?_U2XoJLzRs*k<>%Vr-e{sBy z*W<_uR3O>GE$Sc4TDzCBzUsko1RMDnRz_tjSqQ3RC@5)CPB=e3+HZ~IHHg3~tK)Oe znV?4W2D-1cd)!SFC-ocm5M$gGV`imA8nq^X`D2mt{261=Hr;*|v&7_AJ6tVR>vCa$taqL52w#0-0I(-- z^HQ}WYn5@d%!MUoIbq**%nuS3_bg?!5UxAqS6h%YUrlSOY67GG_B#b60wcji+~ zDV{x1+5Z5z(B^>LhpetZE6RP{*%=%LL$mmXBn4J5qz?k$1sxB{xQDp=aqVT5j3lx) zc{V^A6Hb+;JHH*siI^1De~9Ki)&>)_svnPs%CmW(kwddB5uHbvqf}*Z`m|w;^Nv|Wfv95`>%rD zOspGPHT!wjTK2a*3=l^og-D?k$Qq2g^~V(Dxc#!Z#9F-h&hbCobd7GSdg#vD<-^3G zWUEm?UV^{kX^w5mVYocm8(eFeP^O3{~ zM&E^B?PmQ%N>%qAx)K4%XP=fcvNvPPO=TyG+Ieo&^QGBXDa$;oO{4*qc~>m(*z?kw z1S(X0%oQ8d(9qBffjNqwEc)VBJfW{gXliCW`(6i~RIcHYHg;;Pia{o$ASi34DUBQx zFth@jPNucET&`48jF{fZ(^s0%z`B8R1R4G)$jLnCI7+#y^7{Ohdc z!1yM1G)~&d2vfDL*TkQv!D*GsJZ{ATlx?sWOllQANA#4V8New8`L z3wW(1VQcM3UP>z+rQ!EQWuo;15Hbv}nXN9pzV!RQoqEsq!MM=j7~2=LRD?RYp~|It zpURbF<5t?@;S6KaP%L>+5CHc<8q*b-PJD5eyT-kV+Ht`%V|#z3R`uGp;5>5CLnF(W$uEu1(7OtG_Xb>zdP33?Ue2!TR`eT!F&vn7^u9wHL zn*kcurELumZb4K2vVV1aF_M|@-RZ3pB5HV=f#+?4#a)S;07sEDKMYUf<=*5vimlIy zMXW2Hd&>E|HB^dY?@)eS z6aWaVNhDL_hW*y=^&Ke>nZ)~TZJm0Lxq>KV+OUceK|MXjV-z1$W<@)wMc|kHgCra8B*5X-e(bZ;DuhqW3RMUNWCkdowmhOye<{ z(`^9Hb{=bkkM&3P{uN*vS%0^e{{S^dl|6Nl7`%V&$NV+ORfx+fVGVM((@S$v?cH+9 zJdf^>;WC0+`VM|OtCelDIbfPL4ZU1C{l2g1sV4sbA99NEBD|7&g0g|KKYY{P8T_!e z$l}(3H2(mPN;4Z7>MjcJ`BBp#kjmcc8fHZY!kz&BI7z>)o|<)~p}yRnr&D=7zj;y1 zMd&G7su2`226XZ5ubMdC+ z$YsF2W<1w)dtU4>aqoK$B@jetq=Qv8^B){+FgR`DuG_S_+p32%lw>~ROSkNBtV6oH z+9gYoZf^HVtZn2hD6%lDYw%xIH{3r0=Q*ZdZ(t}|nx?;ftDN^YaE3tk;}`qS1hL)( z*nEZ4&al2$n`!FoRp>o$EZ*z512AN2m8a~-LBZqwkbofYO6DHSxig7m-ef2)cRI6< zSCKL)Kl)^xmbDp*49zMrr^Ll;Pn~G+aN5UNM1#hucigE=gAgc4uD+Ahd*`IawKq3(Lr6_(+gCaoXaznPeBm%3NUMnWxJRH^b@6efK#Za$2?|pJ9Nl53dHhV ztGtp0>sjG@;T#v=vm;YlgF%*Eb;duD?eeMTSPoCM%SZ^n$NrUhwC_c9W@*V3LNgUP zWJgNlJwE{8Y%431+hwjm)IWtzLEaF8vKxjQ03keTHK(0%T_*!={LekLC zq}059<5p7~j70&a?1e>X*Gxc{gmiyXY_(ec-9TFQ-lnbl!m1DI3Y9s6-A$6 zpp^}^R?FMS@1PKsKW*MSNG4xNrf2zx8T`n_e4HlYPTeY|ZrlWI4brBe?$>rxQR)EH z5>LyoU)hLfg=hqwYPMeAV*v)IBJNS?-dlE6&no;i&s;%&5<`?VMODed6(PTGDwh8M zxCv20a|5R8gRKDY#Aoq|a@$k~aUeNfbo+UK8g!iWVU#JW6QvG$bOh7z!!F~jp=vAm zr#VR;nv!01ScQ6l=UN|_8R9ee=dYv%sBYq(F3Y7z#mUCwDZLcQO#l=%H0g#Nh~VUN zLew{5JUJZSSCuH7x+5P{Y&6eP^3>pdh1#J?Nx&o`9eh9QN+&H7siPol@&`{ZEH>;X zf~ZoEc-J@7K~D-+E=^bc!n7u!la+jMpVD{&X{X@52GvEcHz1++F$||Pp~wp5oiLBn z9SYK&hUB#>c?2L3NFz~Db3O!|C-jUrKf;^+FNicx>QR%UlTWLs!l2;)07z5HkMu4f zNk-7M@~GUbE2+=?>81!|me;3Y9i4AON1cQdR~MbMM0rBnI8=9ti4-B!7B#l6(4Iac7+#iKn#oLaK&1o$)2XWp+Rb(<4!JwKpqBrfS6~xH+ z0;)8tSbJr=Rio5KiBPva=@e$GJ20o!xQZVNoa>7?xGzd2{uN;dZ9T;cK=@Qd{p|wA z>}GdkT$%Ippv(|4GAb(+$!=O z({qB57sWNI{QdC}MAb^HaKXPX+D zd`>Ll;2{l1C0WPYPzyK&sB4b%WU~gb(dBA0HZz{acgiVkw*2+tO)T6Q~3GhBg8N8n3!GNr?07X@{enXLe z{?<1<`E^>=_#d;ka!U~8;F3orXowjAJppQd9WjvQJLU#2>4+`ztv?spyr&>jGu&c} zHMbu!MZQ(g952}iEpCrv9lf({+{H;HbSrEeX*_MXR!*$*9T(mfY>Fpq7k{52ygoOA5%^U2I7-g}edT|@#RAr?!*)X2$_MC?WjSrx>8@Gk2e$H^0jXMIfN@&>haRA_FacFOYWp% zHzU;&&P zJ`9cVAXT>4x2S+H_g82+(=(~B#}#sN5)!U9@~ehMQ`9d?w-p)@?LrU^hye1>Dqz1@ z=Zl;8^`(BFaM7UDW$lz`DhSqy0-5C&sCG0^zg8;`YI zRY%&@gwKjegP9u}?jh-~#<_#KZN0mR2j$m$)T@eu^u4j*A}p~&T8sv?iNf)P^PLk_mIW72LMp|h^;()vmO|<$A(8DgcW~_i7bdn zAXO^!mA9isQ6X&d6tA9H;^~l*)fJ`2z?38I8Vy66s7|V*%$j_tFywHqfYk8}y$Pk@ zyNbSqjMjpivi-g|k?cL%f|T5t@BGBC+rpMhsnyO=suF*TAzd;AVFw(2wWJthb5JRF z!la_Q%qvQ}a>!Kc(4M$#z*-d4Ngz!DT97v?inNHWYgbm?=Us5nZSDS*6WVKu3wm`O z)m3(}Ivp}UvkKT(OVn4wMP=7evr1O4LZUDGl#G6 zlTrK58bY_G#AZtnKokRzsHg%l@t{6=k%jD0dM9Ej@}PV2ev?8qC29|tIrYJNe+$xv z8d=(X)XDFZ)}c)WeMXcN)}&#^#z0TE-BRPnB>7Y&&msX}6QBTsc9UGrM-l`paaIvw zerx1N^a{y z^E$GWp#;&rK$G(F!xC5{XqyX54)v+4RWgMnpwHn-oI{bsHmhdX#njfH+njSs5~Mm* zWKMb4AacfAKR7g&oof%wX0?wXsQ6Z|#@Lwlg@wZ9q1*`4hg@T`GQm0(tQR4Y9O6|R zdK$j*(F7_slpQ@aHK$BaWlCJz1G~nuc|<)+omSguebo|glA!%AKn9vncw&j}Dq3qj zktl1uwgq0bClsMY79mkunrB-0j~p`gIag6oUl4W6ic_C?vv4-kL(;!GVWl9VQy$1& zn$gzr%>gv?pfx|V;D`=46mG@?jmYGLpdrv~hQ3!ODme-4;y z+GsbXzf6`R@TX8-fwr>H*CAT<%pRHH1{BcK663p8ww^WIbY|YH-4>%W{lC_bsXzJ zJqD-vvuYlvFh&TFFHAln5Bz+;-kl@H!T|L^3crLQ`DgphaNFE^Ek`XaJyM(n2Rw*6 z4WlFDU2xc6s))Sk(t?vPD;kgnbv;Eqg>a(sQ7uL8J3*~Ap5M~N2qQ6C50R%)TpM2H zL#;@PR|2mZRAJ)_sd*SNIZ;<3UX=J8J@2`Wvekjla3g2Zl@|PBRJe=+KbtC3&YoD3 z$&?{AF_}`9i~3C?91uw1S_(Ib`h2P9gLJ2NjXGZ_ZsxyAUTY~L&Ml=)G7Qxpu$(q! zYu$E|N83sm+=QT(hd4X$rxw=o+{pxgsfsP6ZxcsQbQA`aG{adF?P1q&@U?F{UzVFQ zDVRn_F~IdI2>5h0d;WtOKqpxtoq(uRLl^{j(@;ppc;-3s6n57SoqE55+Azj6fW7Ij z`WkH&jor+F9@}UiOGa4JKBJ}$`7!NBIZa<-$V?Kf_Cr-ME=!T2I^hsyLkqUF7Rg5Z zNo9xD=E(u^7x`5yp5XYKi&pmHt;qxt?J&wYqHM1`N07BM7xcg^-&cJh| zXm&~zu>>EDWtSbX$Xdqpl(k4I!~-QH+BEb~^z+8DK1L~=8sM)@MS0to?EX^(KPl!f z(}Gjg>Q9A3i0hJObD*USdUYD%*$avFeKmwGDyL5xbqJmlSpiy#06+&^u@X@cYByR$ zzTBY{7gd{$znnTE%(0<0p~|}T>x#MY!33KhI;G9UZo*4QO3-bt)nZb2xg%5rjXDvY zc%YIn*W6Y%d}lr7EZ;hlwvfugnjVbXO4Be%G{Z7_f{g`1ou1QuT8}Dt>g_>T$Q7@s z&{N^B?ZQ|`Ra#~<`IGOaH++A%r0x|UiUF5Q&K_gV;6SxXgD`>s1fi-oCBwuK{n*k% zcT+0oPL$IcJRG-JHOX4ME=Fy`+E8q^tb>^0B~dYw(y}I%`~RILz$=S2GgwbeN8Og$G{BGzel35G%r_VYBRT|OfkSX><2Sk~SNJ=Ov=rp+XE z`kj9Ye6cN}M7q=Aq-kC(kC5q}fd2rF6jd)ot{Tu2Otl^rp!tD<){PW+P;LhzO+1ba zQHGX!fkR55Z{Ps0f&JJP>q#ZF_8A&BJCiMaIh`}l5#|9srtO5E!%SB`M=z;Q!m1>iLG%(&f~8AC#~}e$HIWZrZ)x~exUQQpvBU)h zbgKDs_7!_&hf2WILV}O z>T~cSqbg~Nxe3sk&*sMyTVZon+ZiR^0;-yIEw58Spv4YJZOOe*We6S$g1^K4YVB(w zbq8QZ6czf0nfPmpNt_*Itlmz>g;VeqYO-HX<^a_I?gE4#BZ_II*ilKW_Cvi&(PgV8 zmAF;}63Tj1f-~{?Vybyb7OGsVj-yXHwA+Z(0MYB0rj_|r*A&x8{)VU~CB;LKRJ<`p zO=DUbf9ez0!j#VuOUSvXGCkp|BZ7G^@~83IM&R$K{{RUezYRW1f)DekhF347kDWb^ z!W0!yd}X60L-JUGoYb9L>z`2GpVtq{;(1C0G>3WaqUdjL^@CmzF2BW+Da-KY1xg`mHE^7 zc%sWw2qL+&WZ#E|8FoiPqSX=Eu4?Uf%AS8kj8TElDvIa$bi`wm>PrH9b4Lc!pMDwObY=updoF$xKQ(&(`GN;E3exQnJ*>WM=O*l(52lFem z<}%Kd@xlzQBKnGB^$sV>mHj*m^n!kMr=A)!lVe3Bgtc04;Y;n>HaSwH^%XxHtKozP zl2@fQy~>1K(#Z<{007-xJO*8QW-!~F6*?4xQ zz3mf|NwT_ED){_xWT#6|4=nXD4JIQ15n9vuL1J_N01POF_)^^WxU03HMRllB$|+x` zGJZK{hNc#>QEqSN(vL$!xwG(acXaDrFxy`7VWk3CLbFfClnS&JWKwhmt5f7j!Fr7m zblM>zyj&>D+9yoSa~?f#sMz9Bz@;QH#HlGwzfgacKlgWiU4P3GHV?w2qkrY}C)(A- zy_xo^BQzH`O3^p7DVV{LyNY;TQt<;pu_aXmcpQ3no$m=69}GxXp$X6xPgj{2Un=_h z!gi!s&t$FyJd#{nqpT4C=*!qx>TD~gdrPs!fVMW)qCMx^HwvObPs=JJQYZ$|R`bUz z<@xiHU++J04Hi@*U3`3vT~Cob4H)=?Y$ZV>>ONoaU--jYNk zS(vQ`)0JCxIjG9r!;@;%2r&T4v6=u-Y3AMH^0Jf6`VQJzID?(fZNbf$DTnHC8l zTl5>%d|3H;ZX!6|=Zlr{>s4F6Rn~Pr>O~Vsq>hEN_~Ppuk5(WXidLJqcs!{&7^cbp z0JI#1zi$esbDWm+m)j{uVx~nooXH}lln4AVf5+kgS{@Ky-gW5g4&T5T4akNy+Lo-N zo8+c-k>Qm#fUwCLCi$5U*2zsAQzO$G3=CFo*(gJ(>G%10RiQF{Xkk6M88Y@CbYdT1#FD*z$@A`>K;I`=stRG8TC^ zOumAU?K@B}gp{Gig_xnyu#2=IMeEbV?bq0>WcNm?@5UeYMMB1X05s z15?MYG?+YV+z}H zH@I&&`2)i{M?PNG#`OcIrL!7jaa)(hW8^pcz&V{k(9&Qz7;h6{xUtP&Q0Z#k`ycOj zC&Eb_H)Z97jiIJu$g^!ewqNv8zafr&&-NZSARR0rfytn*h1>rCxfz^cWL$@>fuqzq zbW`KwU0vCK+!{;mTfNgW`)eSbSnQBgdh@PpUkq`sXZGGmy+yXYc8&}82M;*yj$Pz^ zw|^?@p3D2nt`fIGSr{RfI*s!n^?R9hT`|bHuFG>(p}HFB{8v5+-q{oprF6eDwBQMD(L%R{LgTjWm2`z!1Tt4ADVky2Jb>zt7hVZn}1WQ zKjphBHf9D89*63sNh3gOO8)F=FuCWo5!PCv%Hre>A&s%DvzP3>%_1eW1y18pq12C- zHTXRJl)Cjz{yE#oePR8__U$kI{gKKHwOqhqNb5?jhfOp%-*J7)>~s%z)BNfNX9p9T zxi$NKHOamE_Ia;F_Z*dy%M5S6DB%@^kbSjz4G+5hEBqMi-M!xe4Y1<7`-ETN{JuSF zn{%C`4V2s%ff&ua-Lh01w{` zk|sIjBoA=g{a$s-d7s;{6Qp)1+IF`80Mc(|y7(re#Veb+p2p>DOo{qgHb(BIVF`E~ z8v4-FEQYig=$PE*9!fcm+T_x?l-RtV9V>=hFDz}hHskN`toq}GxrXKAe@tx{+LR~V z%C)YhxVC0gayN5yr=#Sed_m&xTb&cinZ3N0{(?zG=zk<2AHoJ-w+?P=+NWBO*;zH) zX%GJZB~da)ZYKBUh^?wA8$hc}$0a*@(BV$I0X1O92wCj0-`_g_0K|A!LEap_{jvUy zVk9%&&oRDO{{SX&WFZ4&j54>4`uSs&_t!VcV@3Wm3BUIocR9aNXMjJDCWpehKW*S* zWS{bRU-si`L}%)5^|1r<5zu_9!jiG+)h5F@J(ujOEp_ z!ud&Y_@3X$?g_&l_*v<1^tYoK;7h+XYKx?oEu2&jlVq}Pk>8o`IvG5NM)a;@?#r%E zoVIJuPDx4R?mf$B-hxgU+znp$IcJj{@~=hhc(=XCnotHA@F!X<*j&{1uCY7RJ8A)3f>pB#?< z6_IRQ5$rse^67a49(>BRF__?Tm!OEGlLlW+GO zT4p!W4@#@@edhePbzgF}QZ&48AAiVyN*=~iWpQr>&Bj^|n2hIcJE`_NV}pfe9M=uT zz>94v2fmRK^6GhHthaZCi4z)BTWu!|J-ba9a=UY>6yd+4t);s+jNwzfdrXx5j z>QmZ3Oe(F}Jk;C=+)mSG6Eu9i_XR!8&BUKYwa+bRk8`QbZEJ?-X=dY0;>5FubgrEH ziEj@R%-)*?XheL>7jxVX%Z^(#7?BwpY9>r>E^E3|Uhd%&iHn$>FCmu3*SS{K7@(Ss z$jNEOq|?rP;JT8ZEE`H1IT^GMg>8RirMTdDkFsqQsl4QqyZgJ7xq{-~bW_jE@v>XP z$V7U*oUXa`rW*%n8+>Zp0Btdys#V{@vrhEmBjmYWCxqi9ws_+1p5nPnM*Pk}E*D~7 z+|2-}YkR34MyG(oC)5i^T4n9r>r-wUhp795aMNuaza5VidJVWMe;ijZ$ct|;{*iP> zAaub;52TtlLgxoKeJl!Vo-eLv=5M&m*kW(h-FuvUtZr)2N_hzyBytXHmdGoI3sIxO zpzjh$9bL1>OKbN30EO*NX?VxFzHZy(xqex0S!Ls`ZhM^EaIoC$htw{=N|jJ^3|9>~ z(FYG2l69!gTb52QwfNr4v634*8(1aoE?VmFAJlT!JcOz^=n}r5wp=s}MRWYzG~%Uc zXyx*(_n+kX8}2&(%ZpdIeo{Ld7kevxvm}zf>sXlmK%yF0CCx8h-nS*ocd5L>W%WH&w;d20((R23pN zxz0PZ0;YLh2b$tIKHu$fwsFtN+FaaoJguuiJ;jeDcqP5=8QNsXUCSw0BVm@@Hz`uS zbuKoBh4Q8y-(_vv{J$S_%DP?I_Wu9@W6xS~@UVA^D=sl0;pSqdjQ6~Rkva2B0N~c& zT79kDwX$<<$o7xg&$d0I#PfCM`?raoyL+RO_f4yDe7_-kadig~H7I0;#wYitJz21a zzj42fC867kNI<&OXWZWUleu_)-{kvjGCyE;Un|(WrR;C+L(Ou0rN8|zB`Nw$*AH_t zd3y*Q`MZ-5EX!m^AcygBK zC%P8PwixsY5_a@>z|Tm9Iym1X5-?jFs!MdmJ<(%?#*rL=7y z6!D5dW$XOZeQ<|HTJ`*-Q~Y^mM3O?jt(Dv#Z2sL`ab1SoUk7E!a-G-8I@;UM$wG+5Z4;@qNX!?W>M6neJYG z%ICGL;J0_Yx8p3LZ+P;N&P1sPCZLojSi+vTV<(rAW(Dt~(j%Ndg>($w%NR)Zu^cW!C3FwlFSh)Daq@rA`MxgZ-;uVoo-RfM1KUkyc^uFG z08ZA@{#>C5qLk@QxP>NY$9L8Jw{@!aaZuz)BMtSPYwCCQtJoHupUj8l>~EUh-Ba|% zY`yD5wGC2cX~CAc*F1s9WHHS9(tJN@lfvgc?JI3X>!)`A03DAGANE`Qz~Bvi7yJJJ z{jz^*f8KZ6Tkp2tbbDUQk>zHvpZ?PByK6MF?oQC=W3jqxPFIfPErQ%7wY#7%2l0_! zxKCyN=)V`1$KogVrHdj~MjG%)zv7L#BSNX;RlVc;eIGZ*%PfJc3alg95GaUA>eKu)wahzEPBaF~zZqh(zR7D0{eK!)xnly9tuhKtvfA>K@ z`&|9y`(xY^MfXR%{?_+p&unsS2V;HU`)SVE-_6MjNgC6Llak{txo+N)E8Ch4{^o0$ zrZX7bwaw)6?Z(XGGBMbM7l%bOWa@UkjwCg7FJlSn0kw1-PGf}Q_}_W_#}_PngOECG zc}G-qGsPRh8Y4+*=%V%c2JY|fckGvQbN#{H-0$8?J1$R{u;O1>o7LrfX z+1c1zS_MF{?NDA=Q^PEE4nMQz$s!zy8;ciLAtgM6K`Zb|#q(de{3K!XK_jvpuG1H#b5H)cYHr1-aLnI_754!aB)2!+2A09xI40A$fvFw zsw&2&yIU8Na2=nB4maxZGBO%Pj@a$jZ>hz62>_28rp4}F_T^Y}G4W%^h4%&T>E<;H zc* z{{Z`iebwXE)9m+f{{Zdl_mq~kVF<@GZ+JR6+r&cJD0OrkE=#$&Oi|2W@p!rM?e!S)B#&V_`hB@9dTN!n ze{?_IH~!=t$M)a%OSgXd{{Zb>$XoDy_XQ=Tx7_cu{{VhFSG)T{!IeF@FRyH67aWDf zp_9}{xf!JZ#-Fx3Q#9w7L6Ht#IsyYDa~?cK=DtRszvL^Qcb|1*;PI|Gymm$|QxqN3 zMIUh8B^Mz z45fjlM;(rAd7+7nk&bTAELZ*i0F`;1w^sN zZW07JOCMEy#bYB5!s6yR{ToPm8-q_S`>kEOqn-x(~8=(mOx8_lwJmc`fWMEFnf4E#;B78_5$yjYt45`n>Vl zdmkO{;wE$3y`}8{e@XGICvjvEmlnq~0Hm&{I(+M}e!-+M_QyAV%_Y_U06J|rcy8v9 zp*Pl%l@UNZB0>-zq+{Nn`1gamiJLQWQ5*`09RD^dq|Od1-#!_8Z(;!7P2dcL#4;#~T-U4c+oJ%#)nYy>9nKz6T!s#>QlD zwenjnV-Fq$1WEVD1JdwLm~WQyKa zMS+qhB|&L}w&>MgHV4NP`8$mi>6pd3VkU|PEua0=4&gK|N>PK4IaXq};ZoaZKAO@;<4ScIZ<9k#p$|Oy# z>Dwo{xBw~irkhXi#&0W@(1%$oS&6|lmve4De{(o~xfUR48 zkg`zl+a;<=EaH!9kg$R_h6}kJ@*pE<0UF{V$a{|C>L>8?sh-Oe7ldgR_|v~_U46+= zLeynYt+>e1sS4ETm2k%AvBj-Bldr~}G45)~{{V1(g&{TUQKz9mRB=;UmOB8D4uYo+ zvIn@{?lcUcqy7M1sobY65>=J`)jJF*(V@rd>N=ruHKwr1R#>&?p)lN9M-pM9HY}`6-|8n zx(ii0^5c0d%&(G$EWk0=m7(+bXN#z#4HnX~t={vw+qFyUYJ|CYD0UDK*L5i3odE{D ze;i7Pw3KyBfvnuF`lA z>87}p*;(~?Rg`XEAh@kWPO}QD*K&bDT(i@zT4GZk928ZIPGar|hNER^fgylpBd&BK zE|t__*1GHAQ)3a9sHR2asRc$tpnyNi4}-WZN!uDIrvBv{*YzKuf2;OW(}Sh#QR&mI z4(XMVn;}y|50!PG%wPjYwmXK=i^ytMQJp+~9c!KoV@|Yy)(aYU6!Llw;7M>RQ|X{B zw?H~#JJ`~#)KgMK!b<3scJ2Q0zvAxTxwoC8cpPS~Q5jcMll=^Oc;b(d;PJCzERnl` zs`zo|4M7@%{A;p)+I{|%bS5EE!0Nk+zf(}Folc_?&R0DlLJpr(Kn=A{ z;*C;s$WY^pa=o(l?gfcm3y;qPDy{Eb9ov1~6PtRv`hhOR%Z=Fp2-Bvx=6sh9=7$Zb zT1axDaRhxev~ZoovM;7l)cQ_(iuicr6Pw1lq$_ILIro$mp;>YZAON{)3e)35TGOU8 zv*S6WphC4Vk8&ZWvO^U4({_haKXA+O!ye<~vC^G$LxLKs^4tH zwE@zh&y1}uZ`D~}IoqaK-CixksR|06GX&S*ajwAR_Bp6hsPZCKI?C$7d!Mr6l^G0R zFskKB=1I>=jC5`%opTBYdTS$>hzUNMt#X&#FSW~a4bdYLr83f>;-`?sW=wlcifi{(M=OCARAq{aKbQMgSoSA!8-|Z_ zdcsCF)F`J~W(TBa^2Z?O_@=Q?DZT!6z`L)75j5=z#W$|1?Otw8(S;!F0Eq+Fai>jA zha88O<5=eZ0Lr*OJ;kuK+rH$kg5bF^DUIv7oB+dGkSkxu9MeA=VDnn!9HtYP3wjMJ zR^sn>BB-TL?bohDFWZccW;=to3c=^&Ij&JwH8oAzR-w9e^4CmOq8g@fM|t$2AQ3}C z4!^U=U=3(1h3XFS)7*L}3K-LKX;3R&Y8Hd%i(Fii#%c8QtDZZ2k81$|PP%mab*SqR zX=8QziP*QOsi7+w9&80i#}+b~av?FW06<#of401*7sc}tW@NwC-$`Fc^?%7w>8<>! z#o4pFV(J!MnIH@pp*j%fEWd6O2fY(Ob$YXn=CC=kjSO=@vJm6fPQQKpDxEt@CXzTB zi|XGYYMs4CS?PnwUpgVK3bi!5{Y4{vY+Mzi{@>A2Y>E41zz^mbuIztJ)ehE;@mwt|>k~~%#b^CSFwS13jWo6;)Y>ji+;9dQ& z6~&f4T!F0t!oUWt>Gg%}X&SMHSkq;;Hu}CF%DU(6)27FJ zv1HuI+8Q1KYB_qjHM^{Vpaj;hoFFoj?EsqrXr29?zv?7_4Kl`ikRgZF*Z%-l+wJ9E z)$Dk^=vnQe05Q67~t@pK|DDjyDbu7M!n!AZn>Zq=iufrVcmUweq8|Pk{?byp8 z^{Vgux@q=W>2B4CvccE#u`fpbwYpoTkhiBHOl)qkByTiOJa zdVSX1-nb|itqBzxb;NmQSk(GQ{HvN6gmV&`dtLsbeZ%dXh$k`d z!!L7A*~icYHyL*KV}5rO`|tI2q#oB`non=itw_gQsy5V|IN7(BxAWA@cfHfK?a{J- zA5B*I2$6r>cS3Rp{{WfzEkMPVJKS#8?!9)t4UKWU?qzUN&?6{cqsAjS@Ha6eTuCQjD1yMCIZ z^4-ZCQHdkGj220*3~#G#h}S`uFYx%6z3pS8useSGrp(QWjrT;Al5@T9Bg8i!({CQ8 z5&&hJExQJP^y98JymxQ4k3s6&r~aO+{{Sk(09s?|$8fez$aA4w*(&bbV1@$g6r09vby3TX%rEAgsr{{SqF?$=rx*E3$C zr^CxkTtkTV)%GVG=9Ym}jz^RY>1UuKfdijFIx*As;@%8((zQ68cy0FHsn<7eBZ&## zBPCU`qK}>}BZ;hT-x|=xj@aAnjYz1OrmU0=NXmMTTJQa}ICM3kq*a7b?Pl-JzsiyGC zBp#t5U85oJr57xQLl7m#WV+QP*sPRoBU+IE0J*Ot+QL^-DMbfb0YgtbMLbS3t>aO@ z!a(aLwC+Cfx>B+<&lylZEx(L`KtUAO48Mbjw6p~Vn15}+L2DVgt8?N107{U9?gi9L z?7&DRB|phrKoRAw zXnc2cL{>UVqE{rKSI8-?6b#Q!xX$Eoa)Wl*Ry#L?cySv@XxIJf<6+zqI-qw`QJ1ee zR8SBro+)y;ziG-_bgcGI5XKTfN}U|u&^^bIKqEDMK0`WUB%FJk-=?ZR#sa7TU$>o0 z!`#p?R5vm18Z~Nv3V320_^AcUO;*2zkT|YE<`-hpZ^PUVhbREKE>L7l{7Z^Dc)=;CBy+q4$c(ZaeQ2td=*ZT|p` zK~LRl8?r|wTodRmKzw~!1NdUf9uSbP1fL4Ci?^KShsY70KV_&}p7mKvB->6C#}mij zix{{E7N*?cJc7hP?0H+enyEPJXP&@yK<=_`7(tdWBj++F%sh>LQ>o`~G=N zAacT#Ak+^tu461%L))>idWfq`Uek?(`@jQGmp$ork&?@}>q^&3WIQoEaJcE_ohsH2 z*?>6$C!ImJcVAqn8|6@HHt!;o@Tu?^dAwdb3cO$8R&C%hVYP`ApY>~r6V*Fsp2Fs} z_}3B!6b&i`FZ^^2afgW_-w-CUOIPmf|BL(g4B2(`PD zHjYK;K$3$$1DL@pKPg&IzXNR70zMS&czc;tRwqy?MphfM_-1m$W_E{krd`QI!)G;q z6)9)H$v}3=OzWA~!lt7UXUS-|b^Jf+P%^o8CEN+C9j9tbG@vXD-vdwue7vy=PDPAm z-&EN={86!7;00dnI|}k}v8Ne&=Cm@y8E`5`N)`jHr=!PzHI|9Q%;&nKB$neZDof#q3@u5F|L@0n`91N#p+8Jd(#G*6^wV zrk>aYQ%aGo4l|SYIEjU!%I}R^!P^WE4si63w@TG4`wrYk8^-G%)fJ*{q5lBl2N@~3 zx4q@ZQ(8#4wu?dOZ&U;Et9_?spolckl9eBxhhtNwOF(nQUQaUOeZUz10P>H9D6%3lkiXp75X4FYvBW<@=-cvdKGbMl4Gngc|)m zcKN2iWCD#oo}}Xc022Z~0xM&S#6{41U?se2i+jyn%G9CQ z4u|8R7`%%LAU#0Vn;VXWtWuk)iM?U#2m$KUHOy&4h5JoiqQa$&b_29JfZP}UT9ZOX zS$~ce*!J0dG=9^g(AvD9GYSSIk@T8Z;Y_QC04SlVP?K)7& zb?B*eFpw^YZRJMXP`!ToL|rVawYIe~$mh`gI`qS>jn4XM&(l4J)7QqD zOL`$-tnC=nCM0~TT47>6ws2Z~xXy4;hMLJP{{T^%wft$~Ks|9Kv4K(;z|w>TrcH4G zBC-PKO?vqJ@MzZC!k=t16Q`o1?k5lER|{Hbr#}xNg$9*Up9-5CA)c$6JTWs0hd_M6 zujA6A1osAyIw>3lJ-4-IkPW4n5JuXv>zOt2#eB932o(}(Lt`Y61!!DdllE?w%?n>rdzFYm` z;N>5G^Q{Yu<3w!3bd(f1wnHws&Ciy{Hsw#1W3%%d;;0AltBsYsV35Op-#(pbOjF4_ zonT5S`RtGOIbvTDCHjNsUHi2E0CnW{P_M zI>u-~>S<6E961bt8%BsSG zx)L`2>}a^oUGtAvDO@YQe{PQsPbI^r=*`^H;ctLG6+_q&;}Ggyc}FUNaQNp z8sp8G%yO|dpDI=zg@~uNS4`-7X^8SP>TgZV8%bD(pKw8W1i9xK&Weo)T<4I)}wP0fAGYZTqAnbj50fL zJBg|fCtw*QJKCA*PFncaBV1~*a!Es4%nZUF+g`DLZ;V&>YUYHuq|}2<{LK*@aD)`i%xVwT! z60LWpwa^&az~?zhqLi6H*|lj(g*`m$sl&wXG&e@#hfg{>l|S$F*Td(nG{FT01rY=v zMd>?)O`D?YO$|Q}Dqza3>2XQRj#8DC1cC3f6}XEjzRVGv<1TOQdcM!I;$z&u_l_iC9{{S3ka^#nCf|Z`+4EvN8k0DlQ{{S()E0@Bc z>t3E%seH0Gty4Z%G3$wm|u{{WtN zrO5&IXdrxRJ(UaOaoW>*wpd>1+rtXbROT|w5nQoNkp|z5XR@Fp)3pzftBsxV;X~G`@-e-=dVSSpwv?3x&!?f=`_3z5XPr_`#a*bsKl)UZa)Q9T%gy+JyBKYeit!NWmN-yO+yI!8i%3A@L4PlaoSePAPvM=W<* zdm1b10P!RN{y2`}hU4+5k8{-(d@0|t8w{NJWq{J*Zj{Ho@Z_NWuc%WL#+)?7%eE2r=jb5SUh{Hy1CaOPs1~o2m)!RG0KNS_O$~{s=%*~ zdRO-mg8|wlC)z=9cF|hmx<~~plMzAkAYofig)7-%7HRwF7UDp1XxLLqE_wLUxM}eh zizqZdPR9fz@uM5jS~2-hQok;^PwCyMX{0+D$*D9StA>Z$W9Ca0q4*ChE7^InAG)1p zG>+61@uU}#lXs=62ZNFhUKl~gcZcCX;j?ejR-C=}xTD-<8fbIV1R{HE0@4N`Z_+6d zbO9`6CoekXPx8W>3(kQlM;~>7Pn8(*VuZ%jYVD;3YxAxYahz=ZD25RqSW!uSxuk8f z8lM{0gWv!e;KnPP^rBP44W{e~YBSFo^#QsAsPh@%%ms8>N4E9Sgk1V{O$Kz&@vdhB z*-b$-9T+wu{{RY4^@GKK+^^I7aDLbPdQ-onkN#gz+ogMl;O(uWx7?AeamcIgNGee6 zCbSvoJhjHBKRRiiN~_${_gC6{mI&b30uWJrD_-IFl}(bQP{|JPQc|QWjg>a^Ew}bp z7`)uV;#zlZ1E#<9TBFL2Ll7kGAIHwLUOwFwpLXrbB1jd8F%7v5SG)j&d6z z3Fldd$G%TdQZH61Z)IJ<8Po@e61r1zf-}!tRW})h#n13R!l^T{=F8n2F51FJ@u=&b zRyfrYY?2l-)G+{kZKl2$mmUkA?fxI=DU5yrfHl&M&K5s;s?Q_K!5-!hv6KVt?*r$i zL}J$)3P)KKS487GQx)N_#$XTHx2hK{%PCeWBxeAyCQuTO>CpW|*G{<6VquU*>kkUt z;c(cEj72nU5)PwU&-uIg9bP6}+9ibme{JdjU{*aDg>pF1;Nvl;aQvlfMFuoj=pt?F zDZjjnJ+H9WD=I9?f%B(Gp0!%q(nnrmFIxH-8qBz80;hPG0! z@wNPsbV|u@@8pz+W-i9HZ9s31x#M3HEsdxw-wMq^2dI}7cB@tEi-|o{1)K&13TIG8 zURaeAKqS?qFfjo(7O0n%eY7tU23od%RaY}gX+k}A@wv<*@a0;HNI?@vLWrLaV?zg0NbHZofv*8c!C7GaxxKvYth*A2OVUAj_SEE+UEs$MYY-q@9ye!BEv& z$4wk}Hz>)qBUf1H>=5qQD8jieFnq^iU}dn$6H(q3&^SNbPEU(_W6wj5KQbx=>#zN5 zr+X*wyI!r&wS669jowism_$Q(R&Uc9?Ee7G*Bqyu{k;7-Zury^Yp(GhxUljpbMYQ` zv@OaXnDDNl?SH;D%C7Lxw} zSw*gl?XSD(Ah$zufcuQBqHWAo`e;t-NA)T})#r2AX$G$jOc z-NYu12GG)eVMEYTfHrvMysv7=**~<~Rk!&7`FA$ft(%AMVK&cdKnVaU`<2^WB&M{+ zFEfEGVGnKAud%bE+3VJ{J09g(053A_Rjn4giw=V-R~gy(qQZfwwJY^-$UYTdwdbOe zr+BFY>-wm2rYmLR+}cOF*CJG){ZhL`!Pnr4RdInP-jn70A5G9aS^nM&D0`bB}X&wV2H!h0C;x@TCH)IH5G9N{Zv7alEYi zc86Q}R&O(mf#nZc!8@a{tV}$LGzll`9yKj0QP3jOWG1u``Siy@;`@sv%O1ylAuAKh zcGez5b4FS}x&ZREamRl4oN>%E9NdjjR?nP?fzx*G&3em zrTquh@ITJH=iS}9%xN7j9}JrS??4d08R>r3`YqrGsoxQ_S3dFg4)TYbJYGY=weTRJ>3{isSG`6v9m3Vt=uH})5HJbxp|b575H z%gb$Za?!>A08<5nI~c8FdVkX>I*$x<9&3<-J~C;u%Ox0)rnfB=2_iHK;R>7t*WJYW0C z-RBz{{Ctw_;~*_EF~6QfP~U?>51n?-%;2NV$lA!0I%8+M^0V_h_|`Gs9mgLPeI?K7 zUS%^`iwk+=5I~T7r)@2N{2+ioW;`L>T%424?3{-BpY*r-8(yv9v0~$)W+Zwu^Hveh zU8gMb%4DzVFSp&@<~{ly*B&`Depa~UJdt#cbgul>wTec#Y;CI9XKl}(H1{3J97hYs zO%UX#l95?mpJU$R_+!=UM|^0>K)zIHuVagdyXQ9BO3iI+6j06iz}{V*t2qEvQw^I1r6%iDTZ4`7 z-cD-!d01~@C2tpAJ7;J7#ki5a)$6=&1P( zbDBTmRVMP^%HufuTRCHfSOC^ZR)&~}`9PQ#I@M#wmWf&pjbW@) zjpTpr{{Xu$$lKZevxVg>dD-}hl2253x3-To{rduWyYbe1dZ3{RWlpjzv3T zu_EPUOM6>u&SmXh)epS9tk*X3nXazaQ7x^rEj-2(47=Q8@GJc3xg-r~UZ$}A*s!%c z&jReMB9`Zsy0Uf@x4bJ6c*B8ByTvQ<#MhN*H4Y#P?WJ@Fb#gbCJ-=^kE_a?qc&;Yy z*}*YDsTIB2K#^opIK9oG{01UOI@Fg1DNcK|K_%7HQ5G%7ah!J!zTpfW{@oJAIQUzt zJX7um!w98|1gh5qY_{F~+g6_Z(c9Zzl)9E7{?w9NPM+jik9Nq-_?!nj&_yku_eFKj zYVe8L9L>94&Moh+W?p_su2?eL@TSqfM&;YnA15Rev$wgBX?-|?OSgjU18Pues2Yb< zHRmm9E7>m(Eycer&c!H-Thu@FR=krng_Ws|&gWPJ>h}|z%V&hS%2d`#?AGa?ef_ZJ{I$0U5>JNqstv?e~mv~f{dh%S)a6xm; zTW*Th>)fZeID3n0WROK~#E6g89MTo_(+E-xKHwYy8tGOWTSV>dD~IfR>m)o~@spe7 zEUx9aTVLw$Vqk{j-;T3N)&^{pdOh4hpC$1>)8keU;jly*yViB9tM+#h#dc?B_Ncmn zOniSO$@dQ_AP`x=vq0!_1OMXF{$3f@uP+ZyuJ zzlB%(AM7pX+fVKrvO5!==dA7fckX?x{g>N(wXidA);yK$TbG99?>75$av!cxo9pV_ z2+I>B@IqV#DPY;=|&}a7Z{hae%q0cNm)9OK7f0EEe)|9$vEURmVNc=UI&@YsUAxM)>)k_}6gY_>6W&*Tl`Z z&D44QuU}NY(OUh-;$i-&_Ve#2^bR+QN2f5 zV-1y^mHL-WkC`SuLr(Uw!DBA9lSKI5x@1`VHcSzW>^=LA$Gik~-w z-*LaU-|d_3cP$OXLfe+(Amlg>;p5+8DEAm~HxM*-tT$vO73wq(P2C;W4kx*hi^XM= zakb8gLW6&uN5$-(+&P5tnVHyx8+)vdMyLFLF!_=2t3Nl}9k=&SjkDuE=Y50i zODIuX+h2cJp7PQd(aDAwE$(B63yB^etN=w6G^Q&Z++3biO&q=xV0NUoLPGf<1Msa+ z6~woNo%tL$B`mVIAs*X5>fgGedyoGBZ?CmqeYx+q{ma@N#l-!w?r*oZa1Ps#g6$g{ zD;ucxD81r&nfUFq-df#i!S#`cOh(9>4(0aY#mZ(rY*G(x#fkwJ+TwZ?s9cvhnZRPb z+=dy+g~Yl?m#dt*05wL~+PUNVvi{M2&hh+&J>Agkg!37)eMf3%{rz1E}y7Q@{+I`8VX4ofMA_iQkws z-(jX7XFF@Q`(uaX`}?`(n~3e39v$wvn~9}`cauLNiNV4)9|%^eZKzy{{Zg~{{VCS&-!NM&rHtopXJ_15GfeLA0?6wCelo!n+u6UN4l3~cLx+i9t7$Ne{&yqKIih2Uhw?CeQ-QX+!x#a)VRE!`f2z{`Jy0Xk_sA*6a4~_J_0E z*aMmG-c8(ZHOf8H0>^Eck&)B?|44ncVBvayzLHh!hZ7OcsssBiL>K-rq6&;#_~L@mfqE*!g#~aMH=E4 z1N)ud?e2(p&hp`L`0Q+u=C*hXo?7r6TGtaBR5-Ohrw~Z6TD;~zWxF?x?TLAQ-R>DV zh+09G7bV(ykM2I>{{TpGSK#;ikN(+vNA1UU{g&ptbA;rqBJU1sw5-14b}hBh?jGCX zuDQG08{Q7cq6^WkgzSxsAJbu15ybwG#lF11K zfKG&J2)%i0o9xV7F5}~ygvkdVmz5hfo1Mkrqei}_n^)Y6U$p)8_j9p^@^V`t5EvxwuL3vfKUR83F$Q z)8Sp~use&A;5nRma2)2u*#CvW!mV?5ka z@`yw8oSmJxXT8`hDk+s5J$1$d_D2tp#L1hAo?XykM&LZbI@Z(o!A0lG zgl&oBFxzVG2HNfZb>s$^oV&m-A7rg(iROOT{m^Oc{^a(pmuqr24yg~^FSl0kaOT=$ z8xMQ9dqv#wS6q2#-8`1pkDr}bV#}W|tI%z=xx{?j6n)Ck4as=-U{@5pR)wSH; zXKhCnB-U#z(p$$YT!$HDE=d*ajS8rG5=;A_{IT>4_6rhjGbCb6Noa7AD2~44&=7tE z6Y{See&=Mz$V>W|0B+(~`3Lk3#eVAV%h;xavF79Flij+0LyP6D2#~0X?hCVZaTrrg z!*Y^NK8AZPIIL^RygD}@h#;TDn({tAM058Lo+jn(Xhj9kCttv){Jj zhThd&fB+K67H6)TzPv~74ou?)M<3L0P`e+BXD64Jl`s96<=8wdRDS_o17X|E9Or6> z3y`f1Bc*l@pjYKwVX`?9?W6jt{8qZ=KNi431x*i@wQ;cEp%jq`c3KUfkIMf5MtN7R zD5vCJn;Z0=wPP0_7=GYY)oQS?Qqop3+ehXSl0p;e~b&QqMp zB?rjihfbvzYlYYOeDqp%v27c*=$;;H<>5`=+lhU-CJh`!ZF7<{5l|Q(NFtQOjaLor z2;5WvH(arobgwH{(xkIhPTc6Z zjF!3MMGhw4NC1KS>Hx=@LX!HO_@_nq)N|hwz=tdwJoV|Xh$P|PWG%uaI^0AA5QI|D z&RPEeFpZ-?X^_so2TU;L1@zNWL;(KYwKrpGE~Je5qFH5Fw`_L=vk*t4F-qdLe4`HU z5lpfsDj(i(!t{`! z8dbDii^$0XcFF|E)zKAwS1IZ8QS+u;pV=-*HOfN)mK0TxmxtSze$3II_^5he>~8tQ zEd}oCX?b0d&f`k?Fr*KSpG!{QzblWJB}HePzuI1A(lTY@=K@3Hno04WJOQx#hg5ZJv?g5ADV&aS8^R{ z0&YHN6Kf%3xMU7yzq4FUWXyO`dbDO-a=UOKT9S2SC0Pg$LAd8buHOpKdEwo`6jOoC zcdeyJqAg=0F-j9sdQ-xu&j=@TeiUUMH=1xA(RS9GhyzUsKRh4;O{t;-ii(x9Mq{vD^vhP`ma_>7bt!ATVhBN9A?4+&T!F1|!#Td#V_M*2x>~xg9m~fwCufayhirGmH%2;0T{5GM zOH@;*mN@Sx+tNf1@$#)6HgRzSrEh#Ea-`nVnHgD#P)%t;k*#wT#sfQyb2l{cGS0Bo&BGva~#G$ihG0m3oY`BN~h@P2mRX zRTTIwVJoF#UDes*qT$ zpND2t8<-B2*WH!RRbw^D@}(+r8?`j3#}?*!n%XCx#V<=5$FLx z%dIoZ#=nj^FE7TB3x|zx{@~)A*Ez@Pt-pxAqaj-DDkw&xr{GBk%NT6TVA4U>xpyIn zVhzgHm1i%y6w;umH9uCKuQOAOw9MG@+QwwF+f}vdMa4pbC^#jq3CjB z@Wr%w4fg|D75znR_`>+`KTzp5czT!c76bZ4-cFTV<72sbCj>E4BiTd&H`cq!=rMDU z_=eIA(&xl@S7iOHv{C3Fq7LWp>Dd?^X>F`>IzKxRTO7AM5MpG1ClsLT_I zxX%xP7=*81v9ChK8{d)cO!C+5x%7l9>QV)qnpHEDx|L=z+Q_l3yrL^tKsT{`$dk&a z7kH61%-txv!o762hy8w48LNs=$3Q|tawjkW@$kesuqBKbIEVu1&qK9KbXxUKZaL=_ySyu>yJC(Y0ki=A1RCd< z%wv*r+nKod*F@tQH?;Li*{qXvYAPzKY4WM*o-s2xHPxw%7g$t(EpE*fdhKu7Ujtl8 z#E=K6rY2_aMPNPEYek!Wv~8oUNXx_OKOA%}B5zYj&{i{)fD1agFYXi(KICvw?a`d& zLsF;D#QbsEJ8kZ2C;hh{=UkV&VUA2kHSM@xz*jdU>7JAC@6x7X#_~E11a0o0IDQ z0O*djIIANqr?YPq(*|dh)Q`wud`?stfw(lhz0dacg#Q55MmLbb3s~v*o!|OU{k&*o ziT$M{L`S&Wj+-ITMM=x|;4$d`06JV{%zIok_ZR;FnYZ-SXOf0LZi^P_tE_hw11^;$ z>5E)vxH)=%>8`8W)BgbN{{Xh{SDUJ#b0S9y^y z>+KK3jLm+p#}Z=Wog;pq?b4;n40gcal}YD2oJR~W#s}t0?wgPO4|rw)Bv4~P$8h_c z=et4qKQ&Y5a#6+U>-~R_fBRLL^S^PURrgFSJSro$Gsg7)0H`1S4j{{1YPjy$BoXzroG=o44}2!*yc(zuXJC-O?~)hNT9Z-34fS7~KpBtH{Frl%ULddCx#$~GuWlZhdirDzr{{)R^efV<*(;fU%TZTQh{}(tfpAw*sTApHG3q?Ax;XtywVw?)qtrp7K-{DqlRZ)SA?J;ZAFJ z9|fr`_S}dSDfb`lplV2cN`|%8wEg&xGg<;2DmGY+;Y)O@*Bd1MiaVMr$vU|>)D}=@8R8S6EU|6A-ZfP$Z)3|qJ67LgPvN?CG!l{luGVJ%05OQK z#)Zb=50yod7Lj(-`1u*P1zD8<6fylpshP~vTt|Kq6aeh;sK*JCS*&qBRPHWYX+D>Q zl;pq_2U^yo0x=lk2OX`}kp3o6jeAbh)Q<`==BBNE!k>c%_~6GL#}Xbd@TUI&#xRn^ zx5A2hidD-~{KOIXWkY~CkbV?j;p6L(|JF6L>cgwpw&>F9BK-qOQA$Ff5a{f5N7XQ_v{W24~1M}@SB20(|@;Ghi>UDR$GG+6v{T}E3WEdTX>cOcI#Fnf@mPQo4z$2 zaoxp94>*x@tDUb?(<7cFvxo_16{(SS`%kHi+I)pV-gji{SB_z`_*E1WPl;;cR9sVR z*EXy%`+hf&$4Be)s{Ebu>f0V-4wYsr@dVOIC^7xKPFb`PGDcdwr#{Q+tcaO&BRP$k4Ww%Ojw}h7iH( z{uH=z;}$9Nq9oECzTI-^QhyBkV2dN`tu4_o6S*%=KQ>A$ISg_Es0YHPqX^!`A#|jJ z69u)WFpy<@2Y}@vUD|sHxDL&RUGR;g?7p;j~(y zKP+?=Cm$0k(5xh@Q`Ji3bkACK!+z@#38-(+iNkA(I8?+vyFI`g5=K2}l>qsXo*=)F zWJIl2%gez5^*9fWS*&|9>9&dikQ87K$c~t)%I4SA*bQ>Q7&&VF zF@sM(O%5vG&$c1BAoC)r+h^#faRLS)(~(l*iuh!i9d z&|-rxzBt@sTRefT`_`^;c&_W_Qfycq6HV3SHLW9x`w4w4duKnUAdhx8imG(WcZPV( zW&Y#hF@2?XfvfmGZ#jwNY?;zKe~>})HL7r5+qh3{x0R^@OmLPJIaG{fc`w}JT0sGR z-D^dU`%i;2+Wf;SoDPae`GZ@x3-)wzcJan$j(H6MQxQp)gk%6(X^amc-$Nng!Bg-x z)p&l*!NY_@6lehcfYVy{Z~d<}s<$EuU9u%5P{?wwLs48}IS%CauGb}Pakwzn0jqon ztq#MoW0qB81IEC8F&|D;{sWZ;GPzvjqU~_`8`P+{$8XwOwzMugvNkH2EZyT`2{iQ& zKA51&=Nwdn>Z^QgU59ECMPB&M%Y-Tz;FW4e)D0`(LFtw$C+17RzvEW%;jzUuHEWBu zYQh;KNWq{EsB#A^%>^lnnK?ANg{ketw!jE&T5Nk(8)2k#?im&oT*q1pgNmG2L~Z{G4P;quaNQPhF}M z^zb@iuhd;stsm)_2h&J3t41?WqQAvje*7p%({(FIF%hFec~U0a3b8~a^-|Rydf?R! zwWc;+^&fDKY86PPdxK;%>spLVg}{$GjXMY_RW3$ZBan$!IS^_=&~&XbI%3)ewnNlA z%BvnjEatYT{H^j8WmhTvA542>&HY`ESkNuC1&)qX~NUfC~l zd~2Bd@9sUcX)G4^TVzKk^3KO0dJ~m#)OZfoo=HRHVG*XOT<@9gEKE>dUW9lW{0!`+{PnNF-)!kQnSdCu%k_9N-A}S10DX;h6>4_>pgMvXl4eT(Elof;5yQ?)Qd_V_0v3-w=w$80rAI6CNQiZDEnnY3z zueqv7HK5lMOBxNus@TOFjhjq~l$w?eu9X^{O>5H+g41BNDZbNfwt<=U?fKU#4=|LGH&&22%9-d69((%d{4!Hb26K8PrG-WX$L*L*i+jYH&TGg-TK%5!zf@ zwDn|N{{WcHm-3y&e6Y$N3XLpI4OW3mnM&r07;9IcK0Qu&BGPG=v7{r32ArkdT zNAi)-ifLaAH0aX$)OX{7c7pGSqZ`073B3ORHFfj+FrAG*8ZTfQ=qT|{{{Y0r3Cs#H zA0Nj6v=0QNIwmfPDRCvjw&LKa(!D{8At$x7B(=d8cNhR4!x+W&Sn6{%UeIM$nB#q*a)(+6X`D1XuhpT7M!BKGWvL;GNj2n5s4qPQl#FjIuQly4D=I30 zbL&jH)`u)z;&HBc*yaO$de)Z%jB$t!q`209$@i_aYGZb1Z0N(t=but>qJx4|JAPHG z!R^UkZ~$u7eS668R;KT3x2Q|OL+Ysw zPlHi>QEG4Pb zR++_fvfP@_GA^0!u73`d#%D8)V+Dol5uL>{FQ8ocRqEH8jT9hoL7=H1)ajLTrYN6> zBM;MR%FoA2wi?vbSKjGX6e5F4Q2F@cG?2Na1y#$67ziaP-@Wc+3g^&PzqbtiHagUC z32uhMl~~-P0>Ew*6{Ts{JxRkxU8Pcq(vVT1MK$(JXCTIhu46wAw7~aw4^rNqY?rw$ zK2+ie#$}chY*NT;i6 z{{R=95JDM_#=#)ew`nKh9d)U`Bavwo#vr+1Dfy`&VV`e`>9wP64d7H+3$`JDy;$Rfc_bodx&XncB}rkPD=6`0v`Iby<}m+GNvYd~@s zb+Q))3rn6IgKk5KH5&vX*5lk(Eg8y=rM1sMDV8K}R_!O#f_%JrRwsXHYO|i=`0hqBCxA&2A5GG+e&_AE?B(~YZILa& zt0;`nD9X7FC~>*tIS6HsY>on78uG7u_ItS8w`Fm-;9_gEDz!X1RWe8`LZAcuTWggm zo_b=`$aJ&3>y;S^aonLgRF$IyrGIXf0-bWsn2jKFh4iZF)!vb%Pg~poMFFN;f{+Ku zXNu`!YA;%=d=A%N#MO!lOcspdgFw{-OtAoq-Az);kvOQQyW@(1ir3Dh_;mQ;q`j7+ zmdNm-cG09%XxYt5&<&%hBRW*qBZCgp#*P!VM0TR9ceblIDiVvC+g!iPOk3j2V$_jC*$go>k7>&BV35k1wiIQZmUrYeCl?CydQ&*cw7tV&J(D z_68IUPn~4Eox7depd-g+R8z!&Gp05;^1T888(aQ9P`-x`oj`^5foQiLq&X)sttt+9 znj8s7AM~qWvL8}>sG?%z2^OO|P;Ec3d0}bcLCpf~G>c6TZHh8JR3kkrk;24pr-L7} zb*REe6bcZE{YOvm{kQ>+A64nHz%EIp_Bl}K>NTp?py#G~V2b`>ND>dB!NgL~+(-|o z6$7Grg+C2&)0?Re7((oHs{k}0XXJdbTQq3x!&;-BAjfV?Q|RLg zYwk%vYeobE=Rt_h4ybZS;xrXKXE{&-j5kW@QSmxui0)w*6;qKKf`uw}2_Jg6Qo0jH z2A?deh%&emfO%D1n?NAl-ZgQyl&nZut6ZwUQ&BrX63bHE9$NB2_AHmO@g zw?+K5UD_H{R}mcRUf|SBnIw@K?v*Hz445W#({cX*JXTAvk{Xp<`2agjzEvx0B#<)t zC=DyQsalF0K$Wa;PPGbVGD`<3t7W~~Z3TTtDuDF>`PVUusbF58%Bb>jox9XfRFpiE ztAJw^uBE;mXV75h_7CljQnN0f>nID1gTPjq*IX$YZ(BKG5-LLBfA)FJBrj7VUR}pkc#<@ zJ;F(^r!2hj4oCpINLq&`A^f2#L~?lr`g(eR{{Y7kganl!tweSp=%iAHOqX)7yU9__sHQExF7Y|SO0rC_dy9hC{*F+vmObCM5TAQ@Y zTh!Gb`Lr2mGQxe9BB9+<1Se{+74oD0t~i0AQhL^vK7Sx^3nYD#)J=**^$+!?@5#mi z0QJvm>7JDu;cUctHw7td!g0S(5A~*h)K2Qu?FT9x$HZariEC?8{{Tp>LvTLVsOzpx zmGX9{jSq$$W+5(8EmGseX2fGg+C*~^ultj_o`FaF@c#hlT7HlglsMw=rM9Fc=8=Zg zowcsxw0PxO>x6!Z>WP%2P^sn5$gVPE6O`b8!_EQcQ&Ddy_Cef1u7q5OUr1CKg7 z;+z~%4%~$O^hM>P1TmO4f5LkBnrni09!JyRMtJ*e+iyBe`-PFl-&U0*kZITA1_``# zkvdYF!~)xrzFJeU%_OP`at}&oe{K+X_Y+~IGyXm71+4QE&F;9g-!oNb~ zM7=637Z)p<6X8w&0IJLU@8hpu^1^>Yd@1kI9|2tn#X%Rg(U1$R0b7qnGZn2V?rHU6 zmnuhYX$$h#{k|3U10psMTI#)6JTVBODnlyNY&-4uR0@U8jsgAn&rT$9E^1t*{;&Ff zwNmCW#fByY2~Jx1R$(BNsELI{YE*`y0;fEOh8q~$nY4v9nRgGBnJAEYSkbS}i+S8p zjpy7(XvGMwdmCDlopQpU<6Yo_rNhBW(l@q|!hL%U%ax zalp71{aRL|j^JZmuWHD*_;sqS$2=c%w2Km`B96b9=Wqel%_~gtZ66+EA)qPz2bapW zxO{XtK!|>WsH&ykHE81DKUl_LB!yA3X)1=PPzl=Dw~Gc=p>sdCZ-%=31wAPP(h3@* zUEQ%+8KYz}q)q<-z{5?M`fVau<>1dH&Z{{XmA{{T+E&b-0U7{~;u+-vl<>H=$( zb2@n7kxJ1u9^mHaX%}h%Kyp@0>^`XQ`v7;qRZYhUDwayJ)#3$RWX&eW9^HvW8aY{qP z=a$yX9G|$mA)1Q~pjIOafqDBnS`>vTRZa|?r zWCl3DG1?4aAY9(NM-|;oF}202O?2mM{m5;QshMd-Xtt0gu3ty`>yBN@cDM>ddX=q~ zH#8+;w4v~=zk~1VYnA^1eL+R6r+(+BUCEp_92SB}Vq=Kx^Zf zlc(*b3A|+OD(2dT;6;r@P23jpRyMdz=hIIT!*7nKN@8<3=^N_}xB62K4l14%SiI!o zF|(7B$PgNuYfmav`Siu47|${R z6;syEYmgb7ZaCN`l(nJ1Z{=D1$r%`Pj=yf5Yn=O=p5$*?;^KRAlf5Cp{YBNyw-;_u zpH|4`KdChp$mVp%MB^~xjjNF?Y;QzYJLk5soR=e(M%*lEC3jy_V{gbC{{TAVFS#7= zao^s{!9&B@y|lmdlHW&n?%dnCJHJHba$U6APFmxx_U1kW5RAu3C-ouvT%Bvref!Ju zv&!x+3}zNQ>@sRMAFYIqp@a)7wLW!@a=oK*ZF2-LarZVnjg_yx1-nFUf2mHXzG&k= z{LBXUQyPYIO>+r+k?mjpWONnD^RY6pvX374auw|LbtMp&w6&vXXz6rMI>$Nrp)4G}XeCd2b&h{gOK^sTTSl*U(;=48pr5V)jl3HM*`y{gBEh4`3n%E$G} z>ot8lx7ay)?H41)uy_pRSOWM%{fY{n>W^0LQ8E zKnbs(Jnt*bcQ>`n$z-qq2iPVg;)Mu z-|DYn_TDEM+u2RPY`dn%V@saz&i;u){6y}13aZ}kJNnSgrW26b_yIS8wdB8z9+lW^O8iRI&x?xX|h znu5;0Rl`a?lTtQ;8+=V?1D~6Y?XE6PJ!tkeH>&|L{{Yj<^3D1-F+tYramxU^(Ara6 zP^bOM=>FjC{yyJ{?JFTE7yOTC+II1q+^4t7-4Vzo#$QQRIpQ!ba4mID_MX@So%yX? z&S6Un&Pw-u%{&}5R?*E7&NW%s++0_$>aG%)VrJjfr2*;sZC4(5yg44^y8CH!$t3bG zYVqfgcw_$nb|t!SZQ+B(=V8C)h>^9iu^X*Ve9n7-cZF-cw`I&;TvEoGs;) z&m=bj>L2S@X6F7x%Q)fU$=-j}gNELdMK0~9`s%B|NyXeT(=%66)8 zzVx>7-53sR7Sh}w{yZ5gyWvr!Y1q(pt8dzV>$Btj;C9C!fBLEH`DwXJ3%D6XD6Py` zT=DjC0BPuwSyrA{teua0w=%3SU+v@%2QZ4~iw<`EJLNbF_*7l+JkK+2d2F&~v)M~E zzqj#NBB#V+K*n#ixH{?h)Mw82$Xe$0qkYuA9LH+#_k!N%WAa>$)F|d~uLZm*X;Dn6 z6iULr0}f+1X;Do~?d=Ck(EYi#gOTL>Y72XJo-Q&8X57Qu3MGgnv4Vc3kx{@nl>Y#v zts)l#C2qt^&GDV8W487Oad&0^03Qv^@vhtbeJo<1G}zEoNxiJBF1d zs>I%;fH6t~m>5O3g6@KxXx#D-g;@9wCx-3YFS&yDXvZVWb|f}Ey=`&EnC7v$yuT99 z$=O}zCuCoBOOLC52}b1}6*2~fG3)h~1gcH!SMqW&!xTaZuFn(4Sx%CfuOhPI-r9Ss zyK8KQ>!7VkbN2Sr4f;d8$fsMVF8ZrxJj7km+_u-&7PnGb4nkfQ(hg3sU){~ME+lu4 zSpYGTPh3>wHS9OLPL*+r=17IDxD~l}r(j=q^jy66(lx&m$==%9+7TAW<%5ZF?N~u> zf8KydTit&gRL#iZ;>sbB$sr3`E;ovHXfi+k+SgBTU)t|8ameyF(OPmGeT25wi8I{9 zRqvy*jb08a-f!W8;aer}#a|=IVLxP(N&~{!YxAw&5!=Tb(Gyjq{r+Dn`WJKkwtb}g zoBg`meTDCS*^1cmT%Q@;{iEERWH9ml)7V}0V#_V3b8x(ik8)efHH+IevL9~YeIq<# z_}=oH0&JW|z4CFhD?;i9maE=pu(X>6o}q=6g$b?&N+};Vs@stZi>A3NCbbqR(oT^6!n-?aP`ThRd{{XTM z#Qx%cxn9=(*}mM_CD+-{vsb)#cz<(U)o*ho@b?EQISS1V++}6d;ZAp0*Zmi-`W3;r)%+d^d9UVHnYa+MH~gr+6p( zvTDe;9YHsLgFzpfzoJL>pW0oy*`1vS55w^sPXlGgS=m_eycZt~7Vz0wT12o~*sOUU z`go%Xe8xH7?cQ;86S_wLK|YYDa-S1=-2Ua6A3SY@yW3I&fN%{0zyK_XrCa|1yC3c6 zvi|_MpSAtT_WQc{*yNA6_(|<7Za+@5$-{DO1c#30VgCT^mUm2!3L1f2bgZVuJL8Uf zhX6qEJstAWusyBI~~YFk^L8@71f8ad|{QG2$gV>V(#o-~37&)R&C z9mb<`-Gw`LhXCT@$A(+U#X;0BT`H3@eoq6v@V{5?yN8EA9#*8k_(G)u}5=xEQFZp zy1t`aa-JWQz>A2*k{GA=UyTuV@(YLzM*><)L$?EPFXFZ6K6@j&dAx%cC6SC_Y_C8* zmE2IL=4fgqa<6`WZlBqQKg+?%^51a&?fr-D3#&`6AD0~OZ{71;L>7%Hj=^pvipu3C zv<$;!n}J2}rYAw(y{Q{we=9Cd49#&4_al3N3V^Ev*LI=B60rTl`*qzJ@j7e_d`#HG zM$;6nYn^NQTt&x~>xuj8{{U_8u~S{$TK7-h@3#Hp+XDRF@>d)mZqFZm^1MyGC%0R1 zcCT*?7d2hei2*tl7}@^-@ooemxp?_-%FRIr?i~sn=~yfu+MMrr9!DB>PHv7C2dLbo zQ{!I@f4YzTxVT@mUv{`Jx!r@#_XGXA?q2N{aq;}u4IQjJUF_gBrJ}(V(-CiR5MO17 z)M{}zGq`c{xS4qf&(b!KiS>0)=US+{ek>kFCPN!zEI?GRtFQel=pXmP_QSb*Gyec& zPrH{FG4Ml+<-7Ooo$|pIwe7DlZyl#8AGS<&XiRL%YDv$oGrzQQiMcLMA~29Wsq-5D z04k#W>JJ=FG*fOfHb$RHY(uA-jr1a4BQ1h*3+=bm_E^0)!cEs?&M+~S%deTUAiq2W0kc*MC;ZD#Nl+W7s| zxBmd{amv_T{rCHO+x&Ixcc-v_wx6(_oyg4-2ln|}9?G}mFRhr39@b7wMn_G!g~mZH zFA2xvxyvJP!;k*}Cg;2lkRVjf#47z{{U~24-Kx?5!c9M_e6#E{c+s zrbzclim2|3{N>24Dl0%KjC-;lBeu!)bgkfmIM^QFrlsuAM<&!+Pr9ux=?>EvCWRNR zDl7BE9ETS*Nzm!`{3*zo(EY8^*QrH^-mcj*NcQc^CoNH^6{n6Om+kzz-G1MVNetZe zXZ^}_(IhBZbtIId`2&{x&S$0>4lZ|~si$8W0AKYQYj=3I(XQO%Py|kBJtSsmayw6f z#E4-sxVNubW?5SkLF-iO?nMNXF_(FK!TmsX2^YW8ye8F|FJD>Z>Cyh0Z10 zt@l<@&G!^O$LZSQJ91=~^J0@^n}8u4sr~?RIN9KFvipJUZsY>TL*?i9@xrNR!%)p_SWwaWGf*uMp+=jFdR(JVzAGtDf`chD~xlz z^W8hKV0QKv-KwE(kB;W(hvJoxU-L7%l5Rb~ftPU}wlzMZpVC0f8!T)%+4*)8(z9)b zN!&f{#PskV500nKs#Ef9C4baOVW2bs3Vt}XZaZ35ts=r}3XYW+*RLsf*EK>7NXohY z0G1zgdr`-&P8h9fNb3_yMLBY;8*!lmnSo75Sl?(G82DeV$;UJgtOat7Ggp^&SHwq2Zsi7m~j(^GK$kidmCRjYVNoYLLBDgOZf07C9M`Ux$+OKiZ3 zio$jZoVGFRmUxUiuOb(R?)3GfKet&tPJ}UC@~ro`{{XkHH<5;TPa7YIOlMH@IBnQnv2gYd+3bBL(IjL9UKMbRyp)R6C9m=G;4! zWZ7My=ye$i>x;OvB9_BixQmm5RA?%-6Z&^m1myd{$aDkzNvXuPqTZ~1(INDYNC`<& zP0Y%Gs6r3=nxNCKL5J*=p|Jq!wBi}0g@dH5-jFt_+EuqHp*d7g9I(`pvPP1NO}&hJ zOI*?MHKz85ee!$_$+@z=k_QZ|cFCNCP#DP5F^s=A+t{3hL`cO6_|<$eavUyGa`?BF zJY0{;@zra({?z^WTc2Xq;zWX2m`<{^z!2-TU909^l*gX?xAyPY-7F)}Y@ZtJ{h|Aq z{HaC`On%I)xC^d|N0QgjpSS-2boaq-$#9XD4ZCc+jI6~-kS~D$033P0xI0JNk-^RJ zuKxhTbB)U&s<&U^U3=OeafQmlCAbt(=ry4CJs@q%9Cw=Se{FrX`m3SiXEopk*rjw| z1>Nf~h?&uejJDC$g(z|WQyj}bhB1;69JO-Elqo7JUE+E4ofj}j0h?OXQk_mQ*?e=O zeM^fZBDY$*THkxo?js;6Ly)h-Oi;^@?K^9Js+{K+3(+raA)Pa(;#W%3%j8ZE9%*AY z*7U@&d!T`>QMqmezVWwmocx6k)H;e&7x;PP5KV}xxpAB;7w$gQ_k{F@qiF^#9S{0c%*fe1TL@jlU3~uljdUkt zcPx;|fu&`)xKOAJo3^roYDbwA$2sS?hCFRWEv`k~93v!YJ3*P6*(95fT;q_#2vw+jYV8ER;sOmTN^6&m z4^VpIh0WS;rDkP}M&b^XyJt~SPRdi$nA;O+d>YV6;>Nb1zI@VzwMY zH#n=jH2K$|dsn$~yN)R~APsQb9On8@L+L~R0MxHVss|@D_Uwr>AcP~v&$g!A9c0_r z^*Uogi4<~=?XLB;)8+E}yeqF@zId1hNMV41ak*Qs^&`DP$hLN-vQBfK7VYmw1tF57 zb8or#l%I9V8hdeU9|~hGarW;-vZ3)Aswi66$4TliOrynT}qq#AY)dqA`W;ULnx2!P-}&KW$jeqC($O zLLcK@wb*>TbKBdNlzWw=yQ87hdvrC)tJfSGxNuz8xx0NSYV`jA3>f@jv#oXKXk5}b z6@5W~YJhT~8Pc6G#d)Z~E_Z=S-|^+lb6R=|-Z-W&8iVTCq}M$g;%Q9r&ocmOrmI@G z3ekCJmE$FIs+!ZTMz~fR%SyV7A+>~eY9We4U4hQsG}-%lX^w-#yVN|ZC&@F=S4!j$ zxF#izX#@L|ic{>2nW)Fs4F+mQ%N@731IyY!?e5U+b1;;# z_W+ij;h@i^xa>Ii(o2p(`V;>EO?iKmhBz`2{x1GBHr&SB%Y;7BssI4!PC!*^a`V8O z3;RtY@vaTe@+K~Nc+Sm*pbzQ!e=5IO-&<8uMFIZ+PNAtxfYcM6a>jOeCEMxKd8ydB z_`*=xKDV$R{`Q^q@A%%a z-glmO7|*=YI)F0JifL1>HvE4Z?uN3uhBqq1i|-H1Sw}J6@kMMAo>)zHLw6i?_WuAy z`L_n5y*0+m3xIRw+!5dL{{YqLZB=IXE;KPC%h-Rf{{T;^-~Jc>03}o&WA1FR3!l-; z3;vpDW{Y?~^;6}cK3LIVc9UM#nZiisZT|q$pZ*nPIUf3I$lM^u?UB28esAj^)wlXw z?@vn1`F{E2FQ#c;cSMv-e@re9<@jq#5>7SvUB8Wv#>UoyTlu!uCy?$APm!I{2R)HE zeLJ@>_HXu6VPD6)#~|nAjmpng_NjvvwK!wbHruC#k?XUs^+*wTf4IRPBwKmTlm;WuPU~(iCJV;wUi=d0N&c zwON-qY(a$-)yl(;%v69XDNn>xGeB#KnP#%qYcnwwqguP$Sx_wl8Y-TY&{CDAxTl(b zRc0p21;>7s>x)82KA{n*C3W3jReT6z<%5oE8aQVH$Li@(H#W5_5HLG_vGr7SIc9bF z;&d`C>U=YuP47@QRwja6%TOV%v;Yjq%A%NxDW4R$@2dItzEdtWL=cZy+N&VDl1J6d19w6{RWkp&3JW=pJ7(pU<_#C zzc7lrk^Fzfp#+-Zo?YretnBI@LHb6Y3VtOkK>Ks*!B6;Z#Bdtx9cnUkVvmI^ofuOr z$pDYpmKrQ-(^52n)eSipC+Rf!|@C#X8mi~+|+T%ZtqY2ValO5fADcKFn2 zYq=blGe>4^=(wTUECGGU1TV-!Ejtu~XGW9r_%-E^jOBAI#OLvd+rF3_BJM z^PyUmkHx-c?wB2?8GE*97@RCK(of|ZoERihf^;Zichrr@ytTAv>u5IeU1 z6%RKwsK;=0H9by${E$U4A=pk{sqm@s@y0-QC*e%4xutmh05PU@kg50&LBsK35pqx6 zQt`Ob9F8eaa&k%pc`Z)AAcr)47NGjeb-f7?#X`N)QE1j}*De^r+!~BUA?1 z563SWVL}Fr^{HnSg6T~sxs|E;hC${Jkk4E?*qAIesS!ZN>NeAMdW`A+0Lnjr!jUve zd8`BJG>XQeMPRfG)G!sV`C!9{y*^|GyB&X(Ixug|PG>yG8Tpfl?s4C`qx*rjCe-E| zY2~i+00+vSfH|BuETHIbQRSJDi)&Jr)()q3MS4=dx5F$%c0hKe4MUqCfz%q7kBpVr zFpqeys44)}zXQoRT*FUh1F2Oi|=>F~SL%#jNqHUyaJpz;X zEoj_N+TLT3bq9`_7eo0hs0U7i8Qi|?!Nm$C+z*{Sg@@ccvDdus|RMRTwjJ{v)6z&Ez4f9&u@c#g_*jT_nHF6xEnEwDSm8)gFD*BP0+p-r7?w#V(b7)HQK zbk?t2ciYQVWoC+3ps%3<0Zi&BGSd{fUBLG=fax4v+d9-JZu;Nnjx;96eAS!bFw<+KKio8!vxuW z>a*MSYPt=v(0Guc$oUH5t^DKI{VLi%Ij`t9d@6d&wblwLNm`Vm`hw@ynb#F_@~)lg zT$K3ZaRBg+F9_6FGb5@}P;4wNT-lJqlV;+FN z%B$C0iXdR>Bl9O{C(FkZVaG2jG^)As0|9lFDvQYTTT2CT)kfDVU3Jc#F{8%70UTbrn-7j9fQErpEzTv#^0k|H7jee|5=@15*U|NU z-7%xUz>-G>v;|ssE0T&h$^xlaH$C0)+evXeG9-qC`!b(jfi*oVjsE}{#5zr^crIT7 zrD8cAPCrzxAV194C;h0~If{@^?8jf@I0*3&u~*F6xW;!k$#YIElWSoo zKoI@)iSvBLHxTYwiLC%NCa2Y&T7KMZxcn`pLM=<Q&lnTCPt_xl>~$4GbaHY(uU{CpDlAr zCF{a8da#mBwaS^(!OlIUNp|QBYQYf&(orL(tQa=U6(E!TRKlF%ZfMJ#?F}zgW(J@Upxx8)^TI(*G@@}K zyGZ;gQq%&ZQ>J-&<(2{iOc?r#8mjGP6;oOeGV{{7Er9DlHQj%WIE|5jDNl*W{upV^ zAfvUW9@jP3D@qw90-%#j=~MnW;Tu}IQ$eg-(vaQHC!j)Fl%}WUl{CU+0k<|3Qb8L% zLCH=Q*5+5;?69fNX{YY%f)X${(rJ@CQMc`Ekt)A z0|ngD<5J7O&*`NoHqbHG;3zAI=RJYSY6H1Ql>Y!KnuCLFfS6m%u2ug40f>`kl28!aI)=)*(zhL0QDWg ziKe*|ikbOWMr=pIv-w=xnESe~d=G4TcNN`2C`im_pvdDp$a3vAM0I5OZg46Bo>i>z zTwIVU1&miOsY7L!d5Y_dE_Pn`8{6Yt{{TNeIf*VMel?+4@zsr4<67lbrhO| zq^k<_6#3&mku%jH32>}uThP^9~+C5Tvtfq8sjJd zHvB6TznC$0XJi1e*G*|dolP;Z$BdQ>3hB6!AZr>F)dP{bjaiDw#O89(cYtj3#ndeH zp%tvd$9;o>R4QJ(dP35q{aSuK1|BiA6-)V5t8pVmeb1FBF6W5Ql^~x;Q(Ulq(;jXw zOg|nc6S01ED{smBdr$&RK_s;ePnU<58J7|#H+NczHy)t9#KWl4 zgHIY9SIdsz2(nci_+XT9+~2ydyhnB2*@O#n9c!V;9)ybcVuvq>hEGs8@Jh{RaCp-w zdjKOu*XLTtZ}&{s4jkPAL9W7e@&g%c{u&LdwGDI5UxH&=foNCda>{Akg~N`O&G_!52_df=o>b*A1))NZK@S*3)q zjU#YH7|6SaohmXoiuN(#9`f2KGDa)6kivW%7Nl+GnPmnk1-bq$s5YGHXemL6lEn}R zf##;*^7#d1pHU9uX9WWCYl&lgKw4t= z61^gvO2Ak1Ra67>08mp7?O@WOoQJ~V$Ab9J=QcE9X=+zx&@)?+>r(reDc4U7DY8u+ z*hNt1;9*ST`t9;!zQj93_=?Uuzqa_eklk?5O&AqtQW&Y~-6@~rjUN@rJvL-GZa#JA z{{YKj}<4LXU# zsoJGT(X^(2u) zd%^Q@x&Hu|e)2RqVl(0mDB6Nr;qa%4B~b6oYfS5(`Qf&-2UK0Yz3c!bAo0e=n?((B z{{VxD1g$&^`dHONnz4>WZ%L&Ngr6RSV)Fsvqzb>|G9K3i*0J8=L?{E`2m2gHk;6>4#kPV(Mw( zF4iWZo*0Ut(TUe-+Qd^s(?_* zqZQ8x2_H>U%Ntk?tyA{W(5UEXoj-W^;xSU+I;NS5sZ)?nt3yytMKU#}T`>Z7bro4G zN(ch1D|k!;XwIWr{=tZ4k557`hB>-j{e#1TQM&{DlRYl^&_MwXXqDxWVB zGQyWDS`Qn@7Li%#KolgCKqx%?ahS@+L+KXyR#P(#qBjBccqLfVkby|t;2P9zY>%Fp zt#&ac7_w_E1K)J)bif>RMtWl{a;9@<4i*^ zl75nY6vViN?NGk}DqwQf=mDzuYP*lXj6{A5o>YRh0sMYWf?fb159(kGyV!B=mP!zFhmnVQLx$RR{n_lAH02fCfGpVL^)SnzuPsIk6 z+J>m-;r&anCrX%uxS1Jf$oYy2ka9YF@g7bzIi8>@vR)me5Q3){xjoXp>!d(*Mynd1 zEQK*sCm0#@wAE~!L%^_Kh^eLSIFu@jhB^&?A24wc@vZ@OkyWqaBr2@EPQlIlkdU$| zuk(FWBO*HDBk)KnT9s8V7)1INr*^!un#S`e&!`5p>7JO4CMEupOv!*+<=9uuElNem zM_>07UaB+l7-879M<^8nOh<vBtM>_Tc&;6+v@glfb$7s+kI55b#x$^%2dSfRbzv&~%>rDJI z#Fjw)K&dUkar1HTsOh<7KuDM=({5clc;ZuV%e56UE;;V87WmX;{F!hW=gj5+IZ~SS zrXFqpT@6ly0nI4J65l$ApP6ClS4Pa{+2k@BVq|zN8Ut35@mq%H0v+HgDt={D)#chn zGFnjd`f(^=mxOC-bUbkfYgnR_{{XlXX#zyZYS~xz<)#dAj~cd}Zwy}LEkAWdKXFUE z(%>lRwu}c~8e!4K`hJosNa0zg$`9MWd8B}e*& zNk1Qk5;)zV9EnXH7B;TtnqU6lx$$qNzfi(|#<#+c{8WAiUkdE|YxIaC$dR+|*vhro z%v&WN>Zk0-G?oWC%+u}m{4451@n1X01J(ShO*wehQxJCd5+>LI$qO>kbFQ1Q5a778 ze?|L$)1^6&#E9Oq1+^tVH4G8O?@W<^%#|jLWongDPJ)2b;f2S5`5pbBu1own)W>nn z1UuS!+`z zeMHig70>61jf6(WdbZBD9$E@A*Sg2)BmL?Q?)hU>5k(MXmT4c}FHdc0xoU*A?+%!< zhaFt5+**KHHTl$8Bm%?gH~Z?B%k%k3D?ag6SkYZ0NQG$5vLDPYy$4)g;PHw>Pyz5H z{KlW@Ra53PG}temm5g^sb;oOKG|hB~t2Be!ue#HgrqL)B^#h;F8?Gydl37~N#kQ!4 z<~05loaOm!d@N}vl12d6XaP6U>Cjg-^S#9-^T|WJ2Wm^Yp5G@)#QfZY&VCz~}5=3G!uB#SA80CJn*ci=y!d-yfv^W7pFf6Kd~mOA zooPd0H`bC00e#xgdUHR-qJ&fqxH1BVbQGmFO(*p6Et>Ggg76?4Mz*-+&P zn@er~0Mm?)rx={x-&udQ(t+Q1m(H{}+~mpXa<`>v9BO%tvu%HH3Zjh2 z4VE(*J+RQP4fUZrTz%>A(J(yN8q5 zS9eNz{{YcUEH4_%?G*>oWcM4%_jCgh$7p)Pi)zWd_}RCuG(UAwj7l$posGQKfKY4H z`h0NnJ4FFL-&&YCqFmebsA>M|!Uop5{wK^iG|bjgd=p=mB{Q^Sa8Vs8+_)h(3ToeV z?WYd0Ujov)4UHuPdreJrAW72;{{Z1R7~o8IN@e_u90#h^A2-}vP3^k;yMG;D(Jr-A z%#zXKOFM34{{Xj4zcw|ylvN*=`LyFaS`xqlM%2uFF{8)fve?$K ztxdsdmR?2&0_gt$?zH`_*17ZUPj@Z7wcGLb^TU4a5<@iCF+#TuaLSD4Sx)o;T%UP! zL6*4RcHa-~N*O5z02RZjBc*em?c|OmON`W=ZR*$@=W3^>)m`6}E1vlat{50B-s6Yi zzowzQH-g}Dw>Nk5Irrp1r)|WFK`PREt3!@~1UapV(zUOV&-8}{l1_X6&0+4uP>3oV=ma~?Nop1 z{{RjnWy$(z3761;cC;_vHFa|?SCup6$@(vG@@*0Ol9sr-H(0-L`Uy)m=n~b)-Pzu< z_Mb5GSaF}$Iajqd+$E0fvEAQtYzy3SXIF;TWdvg|aml%^?#Sb3EyaW0%YCC@J9jzX zna8Hz>FHX&-tDII{AiCZf74(#K=0;OSv*~lXZZ*>T zU%EJ6F9Jq!p7*fahQ$u&wX)7Z3S8mqY;DyW^&W<~$A|3u341HJUh?h^C;E2_b9R!w zyI!kvvupnVZ)fFH3S*A{0D!=EYGuQdD93Dg&Tw&QbDZtPe4D#Q?de^o zk?uUmJEI6=M(l@8lGc{)42`YY6pzgI#tNO+Ce_KD-!^!AE-#IO>)xI3%5oe30N6H$ zfo;Clf zEjj|mnB}?Ntc{*k(6L6?w+(5xbYI`adBoZC3Sona;%zB!p^91={fcEno-1SyZo1Wz z9_a#5a2H?JCA{RWB$hvBJ5c`sm+n&B9KRZ2pix|D?TP8@Rz6pkbb`+4#@B7iT*Y<+ z6ZFS7>A(ZS=*tZdu2PiYF5Bf!?5xyH2MIDV#cgu8b3h^yms=;Bkb8Z^8t$BHggl0g zwBs4!t!e$u&#m8QCp&1f*~!N6+_SCC)W9*lni$}XZG6|=%fk#h!Orrlb!mVewa=Fv zyu5T4)-C9s>xttmns(3iDeSe|jPj``KaL|jsn(JJ+3M1zcpJCnQ;3!cj91BdExfA( z0W;dzLRQXEDXOShoaKg`fvMw8M<8>y*IROv@+tPem*zQ6V)pssw(Y*xS#GYLVeH-A zNj=Jsaa3+tBc@#jBZAR-alnFyO3ph9+m62FX5#Kbi#D{kt&G9&V#*H9Te&@L2=W3U$2YGVW z5L@tEZC&jJwbkSZ<0pdfG*c1bS`&pw8(DsohcC1|7OlOBV{gG86P;>ZS@PDA$HhT! zH@1e_-P+db)i~y?t08F)si5O@xZ`4zbC6ip-Ro}N~ zv+hX#;q&PB-015 zU#)e{Hx3x~lVw9+SH9Sk7(&M$~uHvL4eQ~Jc@ZMk&NAEes52f05)5^0v zhdg3H}3WmFwa?e}X{-@5+**(ci1y7rO(0N=l7J74Y<`nm{tE_1Z3$9C8(zER2dsY@4d{_H0?ouHxi~_&$ za0GQa)UOl$gZ}`0cUQpn&;H_F(ZFqaW}d_DXZFqZbG>ZtzfhorOWrGu?Q8F9hd*y& zPp76DcN*S8LmZE8FmY6DdwoXe(i~bEoi|Jp5_z%{C3%+)4d0ah`+&UAGqIX zKle!cQQNnCPi%j2U)aChODSzloz2&KeT(~#_UoT_E4V7&_SbrH))BVW+Dco6pwhL( zOspI}HyQ9UXyjWsmuw+*+Diy`nkCkYjpZ}@gC)5irr716N^VgB%AoHtFynif9%uk{{Z%z*jxt(_M4Bl z?HDcQmTpda)c&E}J;%t-?{jn9ozcnMf7RdeH`fU4tbGs$2)O}_4{`Fcb59wWjcMe9 zw|V-SI)v%vCxei-Rrd-{u@Wz9a=DZEfMZH@$8^n#Je&>tWErvCfKdnib+0aQ84tnagA0T4 zUb{}JR=ytn^ZNnCEtmK6_WPcTiI?pc_p#Us+uZy-<+Y^TKWu%`o3^Fmc&_Jx3jV0x zHOzL`B3kW^Nb9J^d$u{e?hC#j$j0d;;xh3gidf$Cjyam3J$3a5db%JAE3)#Puf_L= zZsOxiWp6J7-1co%bZ#3Q)g2Txk<^OfFYE{VyyZLR`%>+1u>SyYthn9}`-=Y0Ahr7k z_jiVp`}ADJ{g-ALEW0bd+STbL-v`|s9C1q>*sAaJ*BQP_EUqh&$nA$RHsZk}--jaw zrN@!wz!Il(@!sPbk5-1bfDLK8ONN&-jy!|rd-K@f%*dT_49)bH0jpz`fIc#8RJ7IS zxqrQ`XMp6d`2OzUc>Zg*p|*QII@RnWn%48%G!wM#Z!1L_6RB*@cw$~pmcx+ayhkQ8 zLIr3)kB9v$Q<2*oNoX+3BpCtX?JB+k+7B+3sC}>g;r_?>tWiLm2WvsfUnzoimeEwC zv#!$=Z|$URBRK-}Q_~S&+&GwR{^mSFW7BSnp{O}sy~;>k`h1ryAp#g|O||`)`Ds{^0Iz zYUkU&Gu>EN@VtDt4#f$qBMdCiz+4+6<(2G>t!}4#fGO}7KMIkQ%nZrd1c%$lYhLF+ z!)V+-^aJN#6Ti8R`Qv`({rLN>-n+XB!l(Bj_2x+1ZPSc>& zVwJCr&u}3vT1WeiV`L>%{{RbAga`+=S&=nT&7DclV9TgK5r}d)q8$d8`!B<-NG$as z)|~GMrKODmM_9lBQccHjj=Gbbei&_|ar7TkulDfxP;JYhV0_n6> zSZL9co@+%Se!-W~m#dTF=)us`{s)MG)1fX%ze zD5FhO{{Sx@!UHh zZNf=!u=4P(LCW(}<~YRA$FszO=O;i`z>C&X$nxycNDHAGnzSU4GRS!k3~Vv*_Ov+Z zP_giXfO!Nz&-qmy?10c@I{jF-jsyy8MUR3IR5Z6_t$jg_XvCU%jdHFZ z0<77N&}lW8`Ur1qkjPZ^(ucs-my=& zY-XO|5{)2Yp;bvFcu?a5+)a?YkO)E2wcU{R2D%v#m&P|VXbdCVL{!{#Gdy4>bfFDuQ<$B!sdu3?j%WIGnWxAkg8DlS#l0%NQVT}+C9wx5K+t5oBv!NgbV9A|oX`Wfv6mI0@ zjzP4eYQST(r-elFU56FuFC=BREdmwYRR^U;Rq@2kPU3tvW772#BadW)<66i2lkEQh z8_3osv?;bhAx(h{gk%xNsKXyBh3;UsoBL}?TUF0qI*CFNq0BAFD zoFw7oF~%3t@?F(>T`QHllkJxw+xJfu&9kspar%K2n-|j5UBqpzKXy9T72R08gBv7o zQ{m-Y*O45*4>Pg32*}%Q!Anj2NU`$PvOYtDxwSh0ZJ;>}T7ZJZvP$%(xYpw4GEjDv z2CQ*;NM~ts^%nV5A%aNyZZ)BwoiK83OfQtP&=kmvyd!w=E$C1tU_B+GGSE0Br z@QafTni(Q<9o4#&>s^`Izj5N5Vf{n2WK=u-HOh(cBOFhh?UylH<`u4^#`2*3Wm{c6 z+r8l&i*Dv{h-ue0(v`<2y$Eg-Eq5JT!VfzO^#T70P8m#Yxat&bWfFjouvT#+ELD|5Q9|TKb<3>>jyi`2+)i%L=UCQDli-@? z7i(N4_jBzPw=9#i(6K($$WvwktX(VtiBo*$ZB=RALTgd zTnK1DwZVDbE=Ma%Pz`H%;WcM9Yu1kPXK~iE&|%ME-v+C z8-wVzU}|fXDbp-tb8+^)0IVi%JDcfClU9hcDAflsP-|8hR8vwy)bzzu)uaAZRU1FJ zHy=zU8`-Qh*aN%CauCF_TJQ;*_-9p{q%8iyrCm+J8(O03k-@ z3Av%#g6@M#rt*Ar)CFUht0U4ig|{VWOXf%vu6{VZ!pvf;oGhB@SD3KM*6s~?Zr1)& zf93~*-l;d1SGMt+xUK6G23g(XJEcKg$e;~RhBSED5z3Ic=^~A(qV!tp{e_p4#5m`< zyCDMZb6iOpqX9rk^G$wLoN|**d}n>Aixh0LM#MWwF#iBzps_PquhHxB5tlTEFc)RNKyTujI_FSsSf|YXqouC~KcsKAE z#U4kfY4WM#ipY)!MY+i#Ci+{ilIUw``$gXOFMsSydnhB)o14f{Dao^D^q_|0h z(G)q2g1vI4mB{CgVaP^XB8_WDjNzq7a!7^%zeu6lpl4bd4SaDQ5S{zKH(GjNtxmOr zcY*enRAe<$TgNsOr_A*0jsE}*>OP$-FUT+l?XETZhZ-=QpYvC7-YR4E{{YiN)5{&# zwp`|hhWc$>)3|Wj=*#x*ub*B20M9=g$hu69=BH%lWxvrK)}YTbserDM-- zM_z{(9IqW8>AelyTjA;adi*QNb2pKjxE+_0t;d=|O8Swe!3FRAHWjf++)=T$jpm*Q zf%is82i}Ihl4(LiV-DUqz&N$Lntrb%Q+e)YJV_yIr*v|%zy|uBJP+kT`HziQZTY6S zSCS}^gE@+d{@E0!fSl=y=`f6TbApPr!sgwQ(<2zy2S{0GHK>E?S9)*d@~WRVe<=6n zwu5vF1d$o0BvxwXb0i8JTHwOdwl}zM`+bjvX?VVJc;4q?!cI8!hd=thldq?xhvr)6 zPWk0t(}%v1V?OXu(7`9>5n7LY(EkAQzlJ)WZ{ad*=-B6fZ}U4(yZ&Bv(P8G_4{u8@ z)B1wuhPPB-%zxn4=m({zt#R)s&CIPKnrD2;p_GxHW`jYy_T#tW;6{kn-m;KmOO?0W zad*zE)AK~NS+YNwuhE}}fW@R(HuTi^_|w_C0&8D#w9bPf1`pe}ri?TN za@>8?WsJ!piay|Ssmy1g1FZ%dC8O!0bAuRkss28~MhYYqQ@()xX;NxNBTFv9=T%vG zZEe_nUxi;do;@}ykatjp%fM=BifpOMs@}4B*^k|CrE2xZ*lksBX^){s-10xp0Tlr5 zKoP$r;(}~~sk^DHu4Z8;ZsfgKQq5C0QkC^=(xm-QU4QY!FLhj_TC09jo=_D!Eit>c z_SKnvy-NX+ug0fSo+L)_T&}0#nOp;xK~?Lh$sVkS`gGQm6gpzk2VUKO=~npe3WKdy zF69N01!xN>-hCAr3LPw9<4IG52k}a7r<#>3@z6RDnyJWo^@%n za%gu_qjfe8qe{~{ei*HvTXm{DmhCz!RhrI4RTO5C_bFg9BEABn)1E43YB@S3Qe?5^ z>PFC?Z^Es1^3X=v{VGU50Z~(miI}3Z^Dwx(samnYc^bwVK@&cEOJ$Z++~th05yVXiT2uA*>KcqH2BNj{$ea+yk#wZ~ zmP7SieY(>Z<-~Q|#uXp>gCa$B^24pcbB)5($oS{F>v;Z|dRq?K7xRT5Vx9qiJ9};8#0JuqQGk$Txdv^?s ze}=D^A1ppFl&eKP-Z8tkLB7R}q-+oeS} zJ#!in?z01xSOJ!lsLF>E;^Twe>a|Y)02K?I99w#bo0bzcOhL}HdS~H7i4DO+r~<5+ zfv{L1rgL&}$CtRzC34&i0k2YNTs+)$J|d*Ug(J@5n`%1alVe8R9(n-4HBPyCQxY4F z&}JTbrmBL z4l(FWPi_l`&;b;}Zd5Sa8FnAcQ!(wdp{0 z#Ghy)B}^Ex5E>X)$LuMYn3|U%iSSZC15->WH{b8=c=vIiiqrs^Kmp z(S&5HqilrdV!F zhU_JzRB1CJ2hv9Bv)gv$%z&&6S1zKt=a{Z4pPb&LEm2R)usDG0)sD-x{lL2-cOd7L zDV=FgEL6+N?I&^rRWtKR`H*>#hVyr6(8u{K_3A*L!a`DlgYa2{(^lJb*e z`Y~Gf$hJjF)VNQy{N?*0w6cMbwy0JFH&5XJ=Uiqv4(!0iZ}%R*15xV7Wis97ZsV3%jb;vyA<#Uhjd$`I`&sX?(R-+5GGH{4Hf3!`%=~`bE_VbMo zxouY3V4{+!6er=WPBPgY!;<1dUFog1Cl?zd9^+2xyz%{+Y_06PKdLRGI)#s1s(NCN zCz_ErIp2+3LyZv#)}b|d;`<^U9`}Cn+Iqijh*rIB-XO9u;G>?dXwLWw>y4+`0b%m2pci zB_Vn_#8dI$!U1zy+tj=~3}`|2l|BkG&(B;&eUv_`oN@44hJ-!;9Koi2ai+%O+~N=gthQ!rSno--WW3jOq+y=Y zU{n%zm-T1h4mLO(QPNOH!u3s;$u+Is#|_>e?^y41_oE0|l42&>eG?J}hcHRT&xzoJ zoVy7N(zBWU${8BWb|;Tto|Va+{r56hW1bShE=XnEja8>lQuR3OJ+<2r$mYsIU#)R& z@9&6<&MrI2$xCgx{40}ru5jM8v&kr$M=Z^mBsOB19+>R7SPjNwT8Po5a%Mx3lau z>srmb0U_Q7kuwnCcM+HcOk`5IW<>$<*8~wM&us#A_|uniidj`#L8VWIqdX_)Ot1~t zq~l8ZstY!Crg`c!%x8seU2G{&B^w{?$V~McxReG1X81QZKrOu%DEgvmynINs;T)X;%Ozoik`Ra znT+ZkS;3(OnbXW^ir4bM6%J1-tDl;PFqV)KtoEI$B1{N^p!k8G$ZLqR^30GTm8wjR zcs?sQRhr+n7{B{W7pNI)@XHm?P2PQzx6 zlA;9~oa_7l0K*XEmD-f@s>yN-exg_9{*?WA=&A`S1uIcPe`v!V^R@o~T8MLAK9J)> zJ(wBQSw($RK3Ql66ej7`mmWi;)mP#F07`|pfK-4JO>-Zgb6jxdrY`Xt1PnZDg$P zmx3l)5n4e|*)xBhH25Td2t8|I$H?ZL=n;BW6WsRnk%zdn&Y_&suC)IEjIqDtOUnXj zU0Z~mu8bX}YaZrc_T!MCN|rj*eH?r z1-gOirR;GlM~Xn87LbMpfKsF8+M3}-yOg3@gqz>#YketFw)gCmN&qYMZRkc>*Gxuq zLDv;qE)!gL8k@Ji8}x?ED%LnoQ3y~bVA*{} znd(MhVT;psSz@@a=|9~yqFo{~Lebgtjw&Y9<)Be_VjRA({Z zDF{v1T6DjfP>ued;S|cb4Ns04EpiZ^uNrJ`*jQ5MUmulf-KRPTkqS_OwyYO^MCqtG z<0s59;rCNr)ArAo#l*+`IcrCahy7~Z@2Hf6R|iFPuZX6U&X}bE+dNHoo;$hWf#3pm z`B7xHj&cvMP@KUBD*3OL39=`p+E-HH`Q~M`1yX7f^3vcjQzH8-qRI4BbfC);nr%{Pp}2-@wDw16}YxT!hpe^U<2*`f6cD!_^dj&;{86K8figW_VJ8iUB- z<8m-M4ARY~^0lgTtW&wTIBaeV&>u-8k&v!=P-tlf-`dk6? z)1`5%<8lFVJI1zLZ0bOGzlgnIUE9Z*s!bVl^u=0%*Flbl#?IK#it3%co9!ZNT=(4^ zd76q8Wsw*l=2=xK-Pqx}4awn8l&7?4W(`73K?c1*!hvZv0e=dH zL$|2|Z8cY#f|4Q%){MfZ$l!}q)9w)}hMg&7mFq&N+0vP7)2YG;jA?U7A-ye9iE(uT zjf$ai{!(-K*Ae7|A6AtO(MIxzTC#EXz@RThW75AZF$wt33gQh>7oLwCdF%gE+|s1R@Vf$MN;0Mq>9ro5tb|DjI`X^sON#KS2&=lyE8jJ zYqVCB(=QD%3Rbk6nyJVUrlEXl*KcsKQGLP*8G){U3{y_c#dQ@$G*T&W0M(<9HA>fg zb0xLZWuKNRr(;1xwNYk**MQ)k3Y&<&fkiUu`_3z*+6oG+m^1~alL^dVDk&LjQ~R*n zKu`3j@xCB^NWN6T0QhkglVA|cwjN!qgHs_TT6EkcJ%P3&D=XFONkY_ji)b} z>xH)tB5o;e;sJ7PX&yA%PVti8C7sEy)IrP0^~0azA%9C#(e~?P=n|e=ckI9lPG&tu zL6^*Bh9uyka9gL9Mw_(Q3cb5Wjqg@l4)&f$P_jy=BkBau{xr&%te=9%132= z5V?6!P)jq|{b(Ba7Nj(x#@Zxx{Am&g;+`)58&^ z<93B;TCSUpkT*pYD!j$Yf$hy3Cr#8O{7$%vaBu2ws-Ye}KCS#|Gs#ZJagb-=C@^CT z19plp(ZtcU2%&4)9cpN_%Z+UmypPb z`GiDvsbJO5c%jr&;Bct;)}R8%T2Ywp^?fvi^Q^408|fuj;tUo{(l!hQ0_(fgugeOG zH!zSGo~>zb_TJSFR%)Jq%8-@bK(H2(A@Lz|cmU8S` z*+QFnA}_c`uR>&}`pSx8XvGDa8|!n3a6SZdq!)mF#~z4&2C6)_A!`YeMrkCNs|$dY zJJ{!Laybl*ae0Z4ks>jGF}B)IPZ9E}$+i^^3i1k%;aJ~t_h^O-*xjKMTwAe#8U?s$ zMOHQFC5opTjw^-tq-2PFwz&_Jf2jErSiWPL7;#92hb8fl-S!V7ME?Mgy{n#ktGS-= zPY}3LvbDdup2=Am<3K=1r_&kN#~mw%;+qL;i&5ipUfyTtt#bZPlb4b&Y)@&0?rQo- zK9QpN8+e|znA}`M>SX}#$Obi~6x584HG(M`5h?^QNY{I2>C&L?9!K4}RRElobs%I0 zT@UTU>|kh9^;MifjW%s0u8|N_F_4DL{V7pG2(EPpEF`eG#ZRJ^TIYhK2Kacg_D7N`|4&G6*%) z^veQ^TZ#?4i%8NBNXP+Rv>%OdDEAcsE@&GexPw;|2ReLp&j8U2l<=YeD^0tBH9v^* zuS^i7f<@>LUFZF#$bvmJ^o)kJErCi4uk{1|zsiajFSwm!0g#U*;*M$s;25L)?-NqVxe>T zw%1Hn%KMoI)B}W`F_NE8)NE3nZzSd}@1-qN-e2xC=`0cpsY5fgLPQ>fsVlXJ=rlOJ!R>Z! zEi4Wiq1WY5AHxy86hh#s(HO!p6v8BW8hD^}#&7#>9D$ZEp%O{@@R`_flL<8Azl^qfF+OU8Es(Ix9B5SV{f5M~H)cB&qmQ z(f;d1_{^@}B@HMBq@{rxU&K^hr{9~4kNReoNGyVxZtfWR?)f#*AikmaWS?0~@1_O$Ijr3tv) zY17MEs&V{<)R)lQ?T+b2*JveQawteTWv(C1!)qgSZLs@Zx#aLc6mH#T4yOCQAnH7- zYq>juNvy9e?QS^!Hr=*bwe%6i8r#b;Q*yCBL|l7iw|HZX_gwPhLg*uqFz!P4czDx1 zekZ@17EV+p(y4o5YePabdP!*fs)Tr&fb1W)w!PWT^WFE$h$Z|$dfbA0XJ9}WKiA3c$eij9gwR`8q4RyJHDGh5Xry<|J2 zi0MOIMdSq2%<$3+2q83EeLJ+Q#~I$ezs7M<<;fJy$=xXcxmtF-2h8B>wSa_ckIKGa zzuVq=#^bp=R$={8^7p(s>qz-|uV#Q-T6X!D^#_fLANp70t+&!k1|Km4%n`o(&;wq>41 z`{F?JAqvs|0Lq5nr~d#~^;UVu+}bZaCB@rs_b=j^phHt7l}6YFdidj(%v$W17uQk8 z+Ko*=omKnuky&{==`KXFE#E75ExP-nro;jT4!EtHy>^1GaTLG+57YkdmKc5AQlTAcFTVLCw(Ofu z-ZG1cFL_&DI`VXJ8h=fJh19KWT2z2F!%qWhRJOP_AjA1@SZ6)W%gOSTNH*DV7XJXG zb-yK zrd+&*Fx-v&v>NYH{{TgFFMD?#(*2}?y5u>DdzSIm`5GH*d#Dy32FiE_V(Jwn z(-DQ;wxqekZu-c0KK$ctXLYm_TD6}M?cB={Ec~475DUCki5OsTp$kF1A+xp3TCBhy zo8=|BK#`Ne-AgN%-emU~pD+*AR`}os>~L)pUL51M!m1KnrMw2xDR$Xi@-`FuJ1g!> zVGHluTAazlw7}eiojTQvljLprUIOlT+kD-&vRO+3Q(0^;YjJLBboTBUljnqz1Bvpd zLw(5G;I(q>KH=l|p4#QO*_h7Ur)F`NoO?W=3m$eJcs2CvQ|MccE-ioxW-#1=&O#~n zxvV>C!#6gZ&9@Q6L2Vt(=laF$(t}@W*V;+V@ug}l;kR@+ZZYfI;8vaw2Gu_IKmP7; zGFoz0qT*XFTZuPQysYBdCl@xB{^I2vPYW7&3@zcV(v;@`8V?$2+qQkhbI7fn9DlO+ zKIbPT&9v~)UfG3}5;SwVU?Ybjb2v`GM%1HVklblnHJ>@nTlcK}(H|3Wd35|MG#1<7 zX^`7XbkX0|zmg=paKvTwQxP5-(`{DuCMP@G-a^?bli1zQec8S1%Jc52KPz>^_b&w` zSF!uaHODc72Xkp{$U($+Cu4U7 z&ojl`${X3|`2PTNiffB{eNjU=5-)(n0ulcJ8nubZ8XZWgpK7dj9l-YYH%>U-W==nj zvX#vyxW1U%0dj5Q6l8&-YO`c|;toWGh&(F80yFP7b%vGLPQCYZR1`wSg)t_tuhUyc;c6knexZEnj#w7;bAsBg?~eDg>-*l{lUHBZY*QrqkFDN zIO}^9iaFJPO>xPvkCeEJ+#!-%TTRkcJaLB0#oN8k&}m%<48Biot@2v>AKQO>duO%m zxX#7lxZX$f@bUZj*>2>LOZ6qyB)XN@?r|m5k1c#8BR3Bzk~Ko6 z6#oEpSJZv3r8C86nyVj@3Y*8{k0@FlT8-w#mox6+>0Y0ZDrZ~sK1UN^WNjgI^{{U#8Cy!6Yy%hvc zlZBfviF=#N;H<4^{{ZEYI?@6E0HofyGy9hR0NT&DJHxto-@84X-5tsHTkpSV!~HX~ z{`vj0xwfC1zu{Ix?eJf6J6DoPduQ$kY3=}ilKwL)p(`7%I#hxmVZ3K08zsSrpKa#v zjA^(4T6Yilxvujf)scgen=>f$9Cl7dCpP$YytM;fdNxL%OpQJc1v(+DCyIaW_w41N z*-_toV-Y<>QdUEZEP9Q(dT5#F+yudR*7j z@3MXQ#$Is!yJPm}yZb}GdjjSgW5!-~=W}p9#K~_Y>LO>k;rUy+U1VRTpb?C5$j9Qi z@f343;k*SB5XS{K8(fYAdETu#ELQR|%bAeZjK-6=gd=Dgf-GC$MRP~~_WaUtU)WFg z55ySx2eIxyw*1|sd*b%LN3z_@A!&-Jo*^K~bzF4r!g-6hWA;_hy{HLI5NMq%i}!m> z-Kjj1Y!b7pbk@t}n%DCk>~7@yk$)|h7u!7FJr&*D0@5_%7WV2=ZPij3-X1>M?&CGu zLaKtyG3i!u_)aY)jVHwT`42B1mF9NxypI0>W;s!}`>X0t71;g#{h$8;X#W6m{{H}d z!H<=*`}6njhMVlC+HO0$Zf1v_?0>i2%CV>14)>bJkoN9v`;)r(=}ncCDyt>6v%Io^ z8F34aV>3CIX9%3!TmX@{w6s2X0cnvx`rKsf@p0YKtz_g|hs3)USNqwSC=dStTZ~

*pyMl-nFjNG0^dai_9- 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 hM~~q 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 z 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

CZ|kdiOhh0TpRD^W^xE8u)9&Hdkz&p$n* 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 z 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

diff --git a/content/pl/docs/concepts/overview/_index.md b/content/pl/docs/concepts/overview/_index.md index 32ab47ea71..1c0ee2815d 100755 --- a/content/pl/docs/concepts/overview/_index.md +++ b/content/pl/docs/concepts/overview/_index.md @@ -2,4 +2,6 @@ title: "Przegląd" weight: 20 description: Ogólny zarys Kubernetesa i komponentów, z których jest zbudowany. +sitemap: + priority: 0.9 --- diff --git a/content/pl/docs/concepts/overview/components.md b/content/pl/docs/concepts/overview/components.md index ce4ea28ff2..dba2d1e782 100644 --- a/content/pl/docs/concepts/overview/components.md +++ b/content/pl/docs/concepts/overview/components.md @@ -11,7 +11,7 @@ card: --- -W wyniku instalacji Kubernetes otrzymujesz klaster. +W wyniku instalacji Kubernetesa otrzymujesz klaster. {{< glossary_definition term_id="cluster" length="all" prepend="Klaster Kubernetes to">}} @@ -19,7 +19,7 @@ W tym dokumencie opisujemy składniki niezbędne do zbudowania kompletnego, popr Poniższy rysunek przedstawia klaster Kubernetes i powiązania pomiędzy jego różnymi częściami składowymi. -![Składniki Kubernetes](/images/docs/components-of-kubernetes.png) +![Składniki Kubernetes](/images/docs/components-of-kubernetes.svg) diff --git a/content/pl/docs/concepts/overview/kubernetes-api.md b/content/pl/docs/concepts/overview/kubernetes-api.md index 5761b20c61..cd376dab1d 100644 --- a/content/pl/docs/concepts/overview/kubernetes-api.md +++ b/content/pl/docs/concepts/overview/kubernetes-api.md @@ -1,5 +1,5 @@ --- -title: API Kubernetes +title: API Kubernetesa content_type: concept weight: 30 description: > @@ -18,32 +18,25 @@ API poprzez HTTP, umożliwiając wzajemną komunikację pomiędzy użytkownikami API Kubernetes pozwala na sprawdzanie i zmianę stanu obiektów (przykładowo: pody, _Namespaces_, _ConfigMaps_, _Events_). -Punkt dostępowe _(endpoints)_ API, typy zasobów i przykłady opisane są w [API Reference](/docs/reference/kubernetes-api/). +Większość operacji może zostać wykonana poprzez +interfejs linii komend (CLI) [kubectl](/docs/reference/kubectl/overview/) lub inne +programy, takie jak [kubeadm](/docs/reference/setup-tools/kubeadm/), które używają +API. Możesz też korzystać z API bezpośrednio przez wywołania typu REST. + +Jeśli piszesz aplikację używającą API Kubernetesa, +warto rozważyć użycie jednej z [bibliotek klienckich](/docs/reference/using-api/client-libraries/). -## Zmiany w API - -Jednym z wymagań, które odnoszą się do każdego systemu, który odniósł sukces, jest zdolność do rozwoju i ewolucji w miarę pojawiających się i zmieniających potrzeb. -Dlatego Kubernetes został zaprojektowany tak, aby umożliwić ciągły rozwój i zmiany w API. -Celem projektu Kubernetes jest _zachowanie_ zgodności z istniejącymi klientami i utrzymanie tej zgodności -przez odpowiednio długi czas, pozwalający innym projektom na stopniowe dostosowanie. - -W skrócie, nowe zasoby API i nowe pola dla konkretnych zasobów mogą być dodawane stosunkowo często. -Usunięcie zasobów lub pól wymaga stosowania -[API deprecation policy](/docs/reference/using-api/deprecation-policy/). - -Szczegółowe objaśnienia, jak wygląda zmiana, która zachowuje zgodność i jak zmieniać API, znajdują się w dokumencie -[API changes](https://git.k8s.io/community/contributors/devel/sig-architecture/api_changes.md#readme). - ## Specyfikacja OpenAPI {#api-specification} Pełną specyfikację API udokumentowano za pomocą [OpenAPI](https://www.openapis.org/). Serwer API Kubernetes API udostępnia specyfikację OpenAPI poprzez ścieżkę `/openapi/v2`. -Aby wybrać format odpowiedzi, użyj nagłówków żądania zgodnie z: +Aby wybrać format odpowiedzi, użyj nagłówków żądania zgodnie z tabelą: + @@ -71,93 +64,63 @@ Aby wybrać format odpowiedzi, użyj nagłówków żądania zgodnie z: -
Dopuszczalne wartości nagłówka żądania dla zapytań OpenAPI v2
Nagłówekudostępnia application/json
Dozwolone nagłówki żądań dla zapytania OpenAPI v2
-W Kubernetes zaimplementowany jest alternatywny format serializacji na potrzeby API oparty o Protobuf, który jest przede wszystkim przeznaczony na potrzeby wewnętrznej komunikacji w klastrze i opisany w [design proposal](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/protobuf.md). Pliki IDL dla każdego ze schematów można znaleźć w pakietach Go, które definiują obiekty API. +W Kubernetesie zaimplementowany jest alternatywny format serializacji na potrzeby API oparty o Protobuf, +który jest przede wszystkim przeznaczony na potrzeby wewnętrznej komunikacji w klastrze +i opisany w [design proposal](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/protobuf.md). +Pliki IDL dla każdego ze schematów można znaleźć w pakietach Go, które definiują obiekty API. -## Obsługa wersji API +## Zmiany API + +Z naszego doświadczenia wynika, że każdy system, który odniósł sukces, musi się nieustająco rozwijać w miarę zmieniających się potrzeb. +Dlatego Kubernetes został tak zaprojektowany, aby API mogło się zmieniać i rozrastać. +Projekt Kubernetes dąży do tego, aby nie wprowadzać zmian niezgodnych z istniejącymi aplikacjami klienckimi +i utrzymywać zgodność przez wystarczająco długi czas, aby inne projekty zdążyły się dostosować do zmian. + +W ogólności, nowe zasoby i pola definiujące zasoby API są dodawane stosunkowo często. Usuwanie zasobów lub pól +jest regulowane przez [API deprecation policy](/docs/reference/using-api/deprecation-policy/). +Definicja zmiany zgodnej (kompatybilnej) oraz metody wprowadzania zmian w API opisano w szczegółach +w [API change document](https://git.k8s.io/community/contributors/devel/sig-architecture/api_changes.md). + +## Grupy i wersje API Aby ułatwić usuwanie poszczególnych pól lub restrukturyzację reprezentacji zasobów, Kubernetes obsługuje równocześnie wiele wersji API, każde poprzez osobną ścieżkę API, na przykład: `/api/v1` lub `/apis/rbac.authorization.k8s.io/v1alpha1`. -Zdecydowaliśmy się na rozdział wersji na poziomie całego API, a nie na poziomie poszczególnych zasobów lub pól, aby być pewnym, +Rozdział wersji wprowadzony jest na poziomie całego API, a nie na poziomach poszczególnych zasobów lub pól, aby być pewnym, że API odzwierciedla w sposób przejrzysty i spójny zasoby systemowe i ich zachowania i pozwala na kontrolowany dostęp do tych API, które są w fazie wycofywania lub fazie eksperymentalnej. -Schematy serializacji JSON i Protobuf stosują się do tych samych reguł wprowadzania zmian schematów — cały opis poniżej odnosi się do obydwu z nich. +Aby ułatwić rozbudowę API Kubernetes, wprowadziliśmy [*grupy API*](https://git.k8s.io/community/contributors/design-proposals/api-machinery/api-group.md), +które mogą być [włączane i wyłączane](/docs/reference/using-api/#enabling-or-disabling). -Należy mieć na uwadze, że wersje API i wersje oprogramowania są powiązane ze sobą w sposób niebezpośredni. Proponowany -[Kubernetes Release Versioning](https://git.k8s.io/community/contributors/design-proposals/release/versioning.md) opisuje związki pomiędzy zarządzaniem wersjami API i oprogramowania. +Zasoby API są rozróżniane poprzez przynależność do grupy API, typ zasobu, przestrzeń nazw (_namespace_, +o ile ma zastosowanie) oraz nazwę. Serwer API może obsługiwać +te same dane poprzez różne wersje API i przeprowadzać konwersję między +różnymi wersjami API w sposób niewidoczny dla użytkownika. Wszystkie te różne wersje +reprezentują w rzeczywistości ten sam zasób. Załóżmy przykładowo, że istnieją dwie +wersje `v1` i `v1beta1` tego samego zasobu. Obiekt utworzony przez +wersję `v1beta1` może być odczytany, zaktualizowany i skasowany zarówno przez wersję +`v1beta1`, jak i `v1`. -Różne wersje API oznaczają inną stabilność i poziom wsparcia. Kryteria dla każdego z tych poziomów opisano szczegółowo -w [API Changes documentation](https://git.k8s.io/community/contributors/devel/sig-architecture/api_changes.md#alpha-beta-and-stable-versions). -Podsumowanie zamieszczono poniżej: +Zajrzyj do [API versions reference](/docs/reference/using-api/#api-versioning) +po szczegółowe informacje, jak definiuje się poziomy wersji API. -- Poziom Alfa: - - Nazwa wersji zawiera słowo `alpha` (np. `v1alpha1`). - - Może zawierać błędy. Włączenie tej funkcjonalności może wyeksponować różne błędy. Domyślnie jest wyłączona. - - Wsparcie dla tej funkcjonalności może być zakończone w dowolnej chwili bez uprzedniego powiadomienia. - - W kolejnych wersjach API może zostać zmienione w sposób niezgodny z wersjami wcześniejszymi. - - Rekomendowana do użycia tylko na często przebudowywanych klastrach testowych ze względu na duże ryzyko wystąpienia błędów i brak gwarancji wsparcia w dalszym horyzoncie. -- Poziom Beta: - - Nazwa wersji zawiera słowo `beta` (np. `v2beta3`). - - Oprogramowanie jest dobrze przetestowane. Włączenie tej funkcjonalności uznaje się za bezpieczne. Funkcjonalność domyślnie włączona. - - Wsparcie dla funkcjonalności będzie utrzymywane, choć może zmieniać się w niektórych szczegółach. - - Schemat lub semantyka obiektu może się zmienić w sposób niezgodny z poprzednimi wersjami w następnych wydaniach beta lub stabilnych. Jeśli taka zmiana będzie miała miejsce, - dostarczymy instrukcję migracji do kolejnej wersji. Możemy wymagać skasowania, zmiany i odtworzenia obiektów API. - Proces zmiany może wymagać dodatkowych wstępnych analiz. W czasie wprowadzania zmian mogą wystąpić przerwy w dostępności aplikacji, które z tej funkcjonalności korzystają. - - Rekomendowane tylko dla zastosowań niekrytycznych dla biznesu ze względu na potencjalnie niezgodne zmiany w kolejnych wersjach oprogramowania. - Jeśli masz wiele klastrów, które mogą być aktualizowane niezależnie, można to ograniczenie pominąć. - - **Testuj nasze funkcjonalności w fazie beta i zgłaszaj swoje uwagi! Po wyjściu z fazy beta, możemy nie mieć już możliwości — ze względów praktycznych — wprowadzać w nich żadnych zmian.** -- Poziom Stabilny: - - Nazwa wersji jest w postaci `vX`, gdzie `X` jest liczbą naturalną. - - Stabilne funkcjonalności będą dostępne w wielu kolejnych wersjach oprogramowania. +## Rozbudowa API -## Grupy API +API Kubernetesa można rozbudowywać (rozszerzać) na dwa sposoby: -Aby ułatwić rozbudowę API Kubernetes, wprowadziliśmy [*grupy API*](https://git.k8s.io/community/contributors/design-proposals/api-machinery/api-group.md). -Grupa API jest określona przez ścieżkę API i pole `apiVersion` serializowanego obiektu. - -Obecne w użyciu jest kilka grup API: - -1. Grupa *podstawowa* (*core*), nazywana także *legacy group*, jest dostępna przez ścieżkę REST `/api/v1` i używa `apiVersion: v1`. - -1. Nazwane grupy udostępnione są przez ścieżkę REST `/apis/$GROUP_NAME/$VERSION` i używają `apiVersion: $GROUP_NAME/$VERSION` - (np. `apiVersion: batch/v1`). Pełna lista wpieranych grup API jest dostępna w [Kubernetes API reference](/pl/docs/reference/). - -API może być rozbudowane na dwa sposoby przy użyciu [custom resources](/docs/concepts/extend-kubernetes/api-extension/custom-resources/): - -1. [CustomResourceDefinition](/docs/tasks/access-kubernetes-api/extend-api-custom-resource-definitions/) - jest przewidziana dla użytkowników z minimalnymi wymaganiami CRUD. -1. Użytkownicy, którzy potrzebują pełnej semantyki API Kubernetes, mogą zaimplementować własny apiserver - i użyć [agregatora](/docs/tasks/access-kubernetes-api/configure-aggregation-layer/), - aby zintegrować je w sposób niezauważalny dla klientów. - -## Włączanie i wyłączanie grup API - -Określone zasoby i grupy API są włączone domyślnie. Włączanie i wyłączanie odbywa się poprzez ustawienie `--runtime-config` -w kube-apiserver. - -`--runtime-config` przyjmuje wartości oddzielane przecinkami. Przykładowo, aby wyłączyć batch/v1, należy ustawić -`--runtime-config=batch/v1=false`, aby włączyć batch/v2alpha1, należy ustawić `--runtime-config=batch/v2alpha1`. -Ta opcja przyjmuje rozdzielony przecinkami zbiór par klucz=wartość, który opisuje konfigurację wykonawczą serwera API. - -{{< note >}}Włączenie lub wyłączenie grup lub zasobów wymaga restartu kube-apiserver i kube-controller-manager, -aby zmiany w `--runtime-config` zostały wprowadzone.{{< /note >}} - -## Trwałość - -Kubernetes przechowuje swój stan w postaci serializowanej jako zasoby API zapisywane w -{{< glossary_tooltip term_id="etcd" >}}. +1. [Definicje zasobów własnych](/docs/concepts/extend-kubernetes/api-extension/custom-resources/) + pozwalają deklaratywnie określać, jak serwer API powinien dostarczać wybrane zasoby API. +1. Można także rozszerzać API Kubernetesa implementując + [warstwę agregacji](/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/). ## {{% heading "whatsnext" %}} -[Controlling API Access](/docs/reference/access-authn-authz/controlling-access/) opisuje -sposoby, jakimi klaster zarządza dostępem do API. - -Ogólne wytyczne dotyczące API opisano w -[API conventions](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#api-conventions). - -Punkty dostępowe API _(endpoints)_, typy zasobów i przykłady zamieszczono w [API Reference](/docs/reference/kubernetes-api/). +- Naucz się, jak rozbudowywać API Kubernetesa poprzez dodawanie własnych + [CustomResourceDefinition](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/). +- [Controlling API Access](/docs/reference/access-authn-authz/controlling-access/) opisuje + sposoby, jakimi klaster zarządza dostępem do API. +- Punkty dostępowe API _(endpoints)_, typy zasobów i przykłady zamieszczono w [API Reference](/docs/reference/kubernetes-api/). diff --git a/content/pl/docs/concepts/overview/what-is-kubernetes.md b/content/pl/docs/concepts/overview/what-is-kubernetes.md index 75321bfbb5..db8ea18b70 100644 --- a/content/pl/docs/concepts/overview/what-is-kubernetes.md +++ b/content/pl/docs/concepts/overview/what-is-kubernetes.md @@ -7,6 +7,8 @@ weight: 10 card: name: concepts weight: 10 +sitemap: + priority: 0.9 --- @@ -35,7 +37,7 @@ Wirtualizacja pozwala lepiej wykorzystywać zasoby fizycznego serwera i lepiej s Każda maszyna wirtualna jest pełną maszyną zawierającą własny system operacyjny pracujący na zwirtualizowanej warstwie sprzętowej. **Era wdrożeń w kontenerach:** -Kontenery działają w sposób zbliżony do maszyn wirtualnych, ale mają mniejszy stopnień wzajemnej izolacji, współdzieląc ten sam system operacyjny. Kontenery określane są mianem "lekkich". Podobnie, jak maszyna wirtualna, kontener posiada własny system plików, procesor, pamięć, przestrzeń procesów itd. Ponieważ kontenery nie są związane z leżącymi poniżej warstwami infrastruktury, mogą być łatwiej przenoszone pomiędzy chmurami i różnymi dystrybucjami systemu operacyjnego. +Kontenery działają w sposób zbliżony do maszyn wirtualnych, ale mają mniejszy stopnień wzajemnej izolacji, współdzieląc ten sam system operacyjny. Kontenery określane są mianem "lekkich". Podobnie, jak maszyna wirtualna, kontener posiada własny system plików, udział w zasobach procesora, pamięć, przestrzeń procesów itd. Ponieważ kontenery nie są związane z leżącymi poniżej warstwami infrastruktury, mogą być łatwiej przenoszone pomiędzy chmurami i różnymi dystrybucjami systemu operacyjnego. Kontenery zyskały popularność ze względu na swoje zalety, takie jak: @@ -85,10 +87,7 @@ Kubernetes: * Nie zapewnia, ani nie wykorzystuje żadnego ogólnego systemu do zarządzania konfiguracją, utrzymaniem i samo-naprawianiem maszyn. * Co więcej, nie jest zwykłym systemem planowania *(orchestration)*. W rzeczywistości, eliminuje konieczność orkiestracji. Zgodnie z definicją techniczną, orkiestracja to wykonywanie określonego ciągu zadań: najpierw A, potem B i następnie C. Dla kontrastu, Kubernetes składa się z wielu niezależnych, możliwych do złożenia procesów sterujących, których zadaniem jest doprowadzenie stanu faktycznego do stanu oczekiwanego. Nie ma znaczenia, w jaki sposób przechodzi się od A do C. Nie ma konieczności scentralizowanego zarządzania. Dzięki temu otrzymujemy system, który jest potężniejszy, bardziej odporny i niezawodny i dający więcej możliwości rozbudowy. - - ## {{% heading "whatsnext" %}} -* Dowiedz się o [komponentach Kubernetesa](/pl/docs/concepts/overview/components/) -* Jesteś gotowy [zacząć pracę](/pl/docs/setup/)? - +* Dowiedz się o [komponentach Kubernetesa](/pl/docs/concepts/overview/components/) +* Jesteś gotowy [zacząć pracę](/pl/docs/setup/)? diff --git a/content/pl/docs/contribute/_index.md b/content/pl/docs/contribute/_index.md index a6f9356a58..c107ec357d 100644 --- a/content/pl/docs/contribute/_index.md +++ b/content/pl/docs/contribute/_index.md @@ -1,17 +1,24 @@ --- content_type: concept -title: Współtwórz dokumentację Kubernetesa +title: Współtwórz dokumentację K8s linktitle: Weź udział main_menu: true weight: 80 card: name: contribute weight: 10 - title: Weź udział + title: Współtwórz K8s --- +Kubernetes zaprasza do współpracy wszystkich - zarówno nowicjuszy, jak i doświadczonych! + +{{< note >}} +Aby dowiedzieć się więcej ogólnych informacji o współpracy przy tworzeniu Kubernetesa, zajrzyj +do [contributor documentation](https://www.kubernetes.dev/docs/). +{{< /note >}} + Tym serwisem www opiekuje się [Kubernetes SIG Docs](/docs/contribute/#get-involved-with-sig-docs). Współtwórcy dokumentacji Kubernetesa: @@ -21,8 +28,6 @@ Współtwórcy dokumentacji Kubernetesa: - 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! - ## Jak zacząć? diff --git a/content/pl/docs/home/_index.md b/content/pl/docs/home/_index.md index 5c8facdbc5..1e2ecfe14b 100644 --- a/content/pl/docs/home/_index.md +++ b/content/pl/docs/home/_index.md @@ -30,7 +30,7 @@ cards: button: "Samouczki" button_path: "/docs/tutorials" - name: setup - title: "Uruchom klaster" + title: "Uruchom klaster K8s" description: "Uruchom klaster Kubernetes dopasowany do Twoich potrzeb i możliwości." button: "Uruchom Kubernetesa" button_path: "/docs/setup" @@ -55,7 +55,7 @@ cards: button: Weź udział button_path: /docs/contribute - name: release-notes - title: Informacje o wydaniu + title: Informacje o wydaniu K8s description: Jeśli instalujesz lub aktualizujesz Kubernetesa, zajrzyj do informacji o najnowszym wydaniu. - name: about title: O dokumentacji diff --git a/content/pl/docs/home/supported-doc-versions.md b/content/pl/docs/home/supported-doc-versions.md index 19e08be721..0ad302706a 100644 --- a/content/pl/docs/home/supported-doc-versions.md +++ b/content/pl/docs/home/supported-doc-versions.md @@ -1,25 +1,12 @@ --- -title: Wspierane wersje dokumentacji Kubernetesa -content_type: concept +title: Dostępne wersje dokumentacji +content_type: custom +layout: supported-versions card: name: about weight: 10 - title: Wspierane wersje dokumentacji + title: Dostępne wersje dokumentacji + --- - - Ten serwis zawiera dokumentację do bieżącej i czterech poprzednich wersji Kubernetesa. - - - - - -## Bieżąca wersja - -Bieżąca wersja to -[{{< param "version" >}}](/). - -## Poprzednie wersje - -{{< versions-other >}} diff --git a/content/pl/docs/search.md b/content/pl/docs/search.md deleted file mode 100644 index 9ae06bfa7d..0000000000 --- a/content/pl/docs/search.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -layout: search -title: Wyniki wyszukiwania ---- - diff --git a/content/pl/docs/tutorials/hello-minikube.md b/content/pl/docs/tutorials/hello-minikube.md index a56396843c..2c68bc3b5f 100644 --- a/content/pl/docs/tutorials/hello-minikube.md +++ b/content/pl/docs/tutorials/hello-minikube.md @@ -16,40 +16,35 @@ card: Ten samouczek pokaże, jak uruchomić przykładową aplikację -na Kubernetes przy użyciu [Minikube](/docs/setup/learning-environment/minikube) oraz Katacoda. +na Kubernetesie przy użyciu minikube oraz Katacoda. Katacoda to darmowe środowisko Kubernetes dostępne bezpośrednio z przeglądarki web. {{< note >}} -Możesz też skorzystać z tego samouczka, jeśli już zainstalowałeś [Minikube lokalnie](/docs/tasks/tools/install-minikube/). +Możesz też skorzystać z tego samouczka, jeśli już zainstalowałeś minikube. +Odwiedź stronę [minikube start](https://minikube.sigs.k8s.io/docs/start/), aby dowiedzieć się, jak go zainstalować. {{< /note >}} - - ## {{% heading "objectives" %}} - -* Skonfiguruj przykładową aplikację do uruchomienia w Minikube. +* Skonfiguruj przykładową aplikację do uruchomienia w minikube. * Uruchom aplikację. * Przejrzyj jej logi. - - ## {{% heading "prerequisites" %}} - W tym samouczku wykorzystamy obraz kontenera, który korzysta z NGINX, aby wyświetlić z powrotem wszystkie przychodzące zapytania. - - -## Stwórz klaster Minikube +## Stwórz klaster minikube 1. Kliknij w **Launch Terminal** {{< kat-button >}} - {{< note >}}Jeśli masz Minikube zainstalowane lokalnie, uruchom `minikube start`.{{< /note >}} + {{< note >}} + Jeśli masz minikube zainstalowane lokalnie, uruchom `minikube start`. + {{< /note >}} 2. Otwórz panel Kubernetes w przeglądarce: @@ -135,6 +130,9 @@ jako [*Serwis*](/docs/concepts/services-networking/service/) Kubernetes. Opcja `--type=LoadBalancer` wskazuje, że chcesz udostępnić swój Serwis na zewnątrz klastra. + Aplikacja, która jest umieszczona w obrazie kontenera `k8s.gcr.io/echoserver`, nasłuchuje jedynie na porcie TCP 8080. Jeśli użyłeś + `kubectl expose` do wystawienia innego portu, aplikacje klienckie mogą nie móc się podłączyć do tamtego innego portu. + 2. Sprawdź Serwis, który właśnie utworzyłeś: ``` @@ -151,7 +149,7 @@ jako [*Serwis*](/docs/concepts/services-networking/service/) Kubernetes. U dostawców usług chmurowych, którzy obsługują *load balancers*, zostanie przydzielony zewnętrzny adres IP na potrzeby serwisu. - W Minikube, typ `LoadBalancer` udostępnia serwis poprzez polecenie + W minikube, typ `LoadBalancer` udostępnia serwis poprzez polecenie `minikube service`. 3. Uruchom poniższe polecenie: @@ -168,7 +166,7 @@ jako [*Serwis*](/docs/concepts/services-networking/service/) Kubernetes. ## Włącz dodatki -Minikube ma zestaw wbudowanych {{< glossary_tooltip text="dodatków" term_id="addons" >}}, które mogą być włączane, wyłączane i otwierane w lokalnym środowisku Kubernetes. +Narzędzie minikube dysponuje zestawem wbudowanych {{< glossary_tooltip text="dodatków" term_id="addons" >}}, które mogą być włączane, wyłączane i otwierane w lokalnym środowisku Kubernetes. 1. Lista aktualnie obsługiwanych dodatków: @@ -272,13 +270,8 @@ minikube stop minikube delete ``` - - ## {{% heading "whatsnext" %}} - * Dowiedz się więcej o [obiektach typu Deployment](/docs/concepts/workloads/controllers/deployment/). * Dowiedz się więcej o [instalowaniu aplikacji](/docs/tasks/run-application/run-stateless-application-deployment/). * Dowiedz się więcej o [obiektach typu Serwis](/docs/concepts/services-networking/service/). - - From 2bc7fbad27ce94372942187a4122a6bcdcc35f57 Mon Sep 17 00:00:00 2001 From: TAKAHASHI Shuuji Date: Thu, 26 Nov 2020 19:09:42 +0900 Subject: [PATCH 31/80] Fix the text in the authorization diagram --- .../en/docs/reference/access-authn-authz/authentication.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/reference/access-authn-authz/authentication.md b/content/en/docs/reference/access-authn-authz/authentication.md index 05bd0c9b9e..032b96f168 100644 --- a/content/en/docs/reference/access-authn-authz/authentication.md +++ b/content/en/docs/reference/access-authn-authz/authentication.md @@ -301,8 +301,8 @@ sequenceDiagram deactivate kube activate api api ->> api: 5. Is JWT signature valid? - api ->> api: 6. Has the JWT expired?(iat+exp) - api ->> api: 7. user authorized? + api ->> api: 6. Has the JWT expired? (iat+exp) + api ->> api: 7. User authorized? api -->> kube: 8. Authorized: Perform
action and return result deactivate api activate kube From e41eb58bc2c2e143098e6ec2085408cd3479b4fe Mon Sep 17 00:00:00 2001 From: zhaojizhuang <571130360@qq.com> Date: Fri, 27 Nov 2020 01:01:56 +0800 Subject: [PATCH 32/80] [zh]sync remoed file for content/en/docs/reference --- .../access-authn-authz/controlling-access.md | 134 ---------- content/zh/docs/reference/glossary/rkt.md | 44 ---- .../docs/reference/using-api/api-overview.md | 232 ------------------ 3 files changed, 410 deletions(-) delete mode 100644 content/zh/docs/reference/access-authn-authz/controlling-access.md delete mode 100644 content/zh/docs/reference/glossary/rkt.md delete mode 100644 content/zh/docs/reference/using-api/api-overview.md diff --git a/content/zh/docs/reference/access-authn-authz/controlling-access.md b/content/zh/docs/reference/access-authn-authz/controlling-access.md deleted file mode 100644 index 933072d606..0000000000 --- a/content/zh/docs/reference/access-authn-authz/controlling-access.md +++ /dev/null @@ -1,134 +0,0 @@ ---- -approvers: -- erictune -- lavalamp -title: Kubernetes API 访问控制 ---- - -用户通过 `kubectl`、客户端库或者通过发送 REST 请求[访问 API](/zh/docs/tasks/access-application-cluster/access-cluster/)。 用户和 [Kubernetes 服务账户](/zh/docs/tasks/configure-pod-container/configure-service-account/) 都可以被授权进行 API 访问。 -请求到达 API 服务器后会经过几个阶段,具体说明如图: - -![Diagram of request handling steps for Kubernetes API request](/images/docs/admin/access-control-overview.svg) - -## 传输层安全 - -在典型的 Kubernetes 集群中,API 通过 443 端口提供服务。 -API 服务器会提供一份证书。 该证书一般是自签名的, 所以用户机器上的 `$USER/.kube/config` 目录通常 -包含该 API 服务器证书的根证书,用来代替系统默认根证书。 当用户使用 `kube-up.sh` 创建集群时,该证书通常会被自动写入用户的 `$USER/.kube/config`。 如果集群中存在多个用户,则创建者需要与其他用户共享证书。 - -## 认证 - -一旦 TLS 连接建立,HTTP 请求就进入到了认证的步骤。即图中的步骤 **1** 。 -集群创建脚本或集群管理员会为 API 服务器配置一个或多个认证模块。 -更具体的认证相关的描述详见[这里](/zh/docs/reference/access-authn-authz/authentication/)。 - -认证步骤的输入是整个 HTTP 请求,但这里通常只是检查请求头和 / 或客户端证书。 - -认证模块支持客户端证书,密码和 Plain Tokens, -Bootstrap Tokens,以及 JWT Tokens(用于服务账户)。 - -(管理员)可以同时设置多种认证模块,在设置了多个认证模块的情况下,每个模块会依次尝试认证, -直到其中一个认证成功。 - -在 GCE 平台中,客户端证书,密码和 Plain Tokens,Bootstrap Tokens,以及 JWT Tokens 同时被启用。 - -如果请求认证失败,则请求被拒绝,返回 401 状态码。 -如果认证成功,则被认证为具体的 `username`,该用户名可供随后的步骤中使用。一些认证模块还提供了用户的组成员关系,另一些则没有。 - -尽管 Kubernetes 使用“用户名”来进行访问控制和请求记录,但它实际上并没有 `user` 对象,也不存储用户名称或其他相关信息。 - -## 授权 - -当请求被认证为来自某个特定的用户后,该请求需要被授权。 即图中的步骤 **2** 。 - -请求须包含请求者的用户名,请求动作,以及该动作影响的对象。 如果存在相应策略,声明该用户具有进行相应操作的权限,则该请求会被授权。 - -例如,如果 Bob 有如下策略,那么他只能够读取 `projectCaribou` 命名空间下的 pod 资源: - -```json -{ - "apiVersion": "abac.authorization.kubernetes.io/v1beta1", - "kind": "Policy", - "spec": { - "user": "bob", - "namespace": "projectCaribou", - "resource": "pods", - "readonly": true - } -} -``` -如果 Bob 发起以下请求,那么请求能够通过授权,因为 Bob 被允许访问 `projectCaribou` 命名空间下的对象: - -```json -{ - "apiVersion": "authorization.k8s.io/v1beta1", - "kind": "SubjectAccessReview", - "spec": { - "resourceAttributes": { - "namespace": "projectCaribou", - "verb": "get", - "group": "unicorn.example.org", - "resource": "pods" - } - } -} -``` -如果 Bob 对 `projectCaribou` 命名空间下的对象发起一个写(`create` 或者 `update`)请求,那么它的授权会被拒绝。 如果 Bob 请求读取 (`get`)其他命名空间,例如 `projectFish` 下的对象,其授权也会被拒绝。 - -Kubernetes 的授权要求使用通用的 REST 属性与现有的组织或云服务提供商的访问控制系统进行交互。 采用 REST 格式是必要的,因为除 Kubernetes 外,这些访问控制系统还可能与其他的 API 进行交互。 - -Kubernetes 支持多种授权模块,例如 ABAC 模式,RBAC 模式和 Webhook 模式。 管理员创建集群时,会配置 API 服务器应用的授权模块。 如果多种授权模式同时被启用,Kubernetes 将检查所有模块,如果其中一种通过授权,则请求授权通过。 如果所有的模块全部拒绝,则请求被拒绝(HTTP 状态码 403)。 - -要了解更多的 Kubernetes 授权相关信息,包括使用授权模块创建策略的具体说明等,可参考[授权概述](/zh/docs/reference/access-authn-authz/authorization/)。 - - -## 准入控制 - -准入控制模块是能够修改或拒绝请求的软件模块。 -作为授权模块的补充,准入控制模块会访问被创建或更新的对象的内容。 -它们作用于对象的创建,删除,更新和连接(proxy)阶段,但不包括对象的读取。 - -可以同时配置多个准入控制器,它们会按顺序依次被调用。 - -即图中的步骤 **3** 。 - -与认证和授权模块不同的是,如果任一个准入控制器拒绝请求,那么整个请求会立即被拒绝。 - -除了拒绝请求外,准入控制器还可以为对象设置复杂的默认值。 - -可用的准入控制模块描述 [如下](/zh/docs/reference/access-authn-authz/admission-controllers/)。 - -一旦请求通过所有准入控制器,将使用对应 API 对象的验证流程对其进行验证,然后写入对象存储 (如步骤 **4**)。 - - -## API 的端口和 IP - -上述讨论适用于发送请求到 API 服务器的安全端口(典型情况)。 -实际上 API 服务器可以通过两个端口提供服务: - -默认情况下,API 服务器在 2 个端口上提供 HTTP 服务: - - 1. `Localhost Port`: - - - 用于测试和启动,以及管理节点的其他组件 - (scheduler, controller-manager)与 API 的交互 - - 没有 TLS - - 默认值为 8080,可以通过 `--insecure-port` 标记来修改。 - - 默认的 IP 地址为 localhost, 可以通过 `--insecure-bind-address` 标记来修改。 - - 请求会 **绕过** 认证和鉴权模块。 - - 请求会被准入控制模块处理。 - - 其访问需要主机访问的权限。 - - 2. `Secure Port`: - - - 尽可能使用该端口访问 - - 应用 TLS。 可以通过 `--tls-cert-file` 设置证书, 通过 `--tls-private-key-file` 设置私钥。 - - 默认值为 6443,可以通过 `--secure-port` 标记来修改。 - - 默认 IP 是首个非本地的网络接口地址,可以通过 `--bind-address` 标记来修改。 - - 请求会经过认证和鉴权模块处理。 - - 请求会被准入控制模块处理。 - - 要求认证和授权模块正常运行。 - -通过 `kube-up.sh` 创建集群时, 对 Google Compute Engine(GCE) -和一些其他的云供应商来说, API 通过 443 端口提供服务。 对 -GCE 而言,项目上配置了防火墙规则,允许外部的 HTTPS 请求访问 API,其他(厂商的)集群设置方法各不相同。 diff --git a/content/zh/docs/reference/glossary/rkt.md b/content/zh/docs/reference/glossary/rkt.md deleted file mode 100644 index 6ba0e19d7d..0000000000 --- a/content/zh/docs/reference/glossary/rkt.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: rkt -id: rkt -date: 2019-01-24 -translater: Coffey Gao -full_link: https://coreos.com/rkt/ -short_description: > - 一个安全的、基于标准的容器引擎。 - -aka: -tags: -- security -- tool ---- - - - - - - 一个安全的、基于标准的容器引擎。 - - - - - -rkt 是一个应用程序 {{< glossary_tooltip text="容器" term_id="container" >}} 引擎,它具有原生的 {< glossary_tooltip text="Pod" term_id="pod" >}} 方法、可插拔的执行环境和定义良好的接口。rkt 允许用户在 Pod 和应用程序级别应用不同的配置。每个 Pod 在一个自包含的、独立的经典 Unix 进程模型中直接执行。 \ No newline at end of file diff --git a/content/zh/docs/reference/using-api/api-overview.md b/content/zh/docs/reference/using-api/api-overview.md deleted file mode 100644 index 4c08851654..0000000000 --- a/content/zh/docs/reference/using-api/api-overview.md +++ /dev/null @@ -1,232 +0,0 @@ ---- -title: Kubernetes API 总览 -content_type: concept -weight: 10 -card: - name: reference - weight: 50 - title: API 总览 ---- - - - - - - -此页提供 Kubernetes API 的总览 - - - - - - - -REST API 是 Kubernetes 的基础架构。组件之间的所有操作和通信,以及外部用户命令都是 API Server 处理的 REST API 调用。因此,Kubernetes 平台中的所有资源被视为 API 对象,并且在 -[API](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/) 中都有对应的定义项。 - -大多数操作可以通过 [kubectl](/docs/reference/kubectl/overview/) 命令行界面或其他命令行工具执行,例如 [kubeadm](/docs/reference/setup-tools/kubeadm/kubeadm/),它们本身也使用 API。但是,您也可以使用 REST 调用直接访问 API。 - -如果您正在使用 Kubernetes API 编写应用程序,请考虑使用 [客户端库](/docs/reference/using-api/client-libraries/)。 - - -## API 版本控制 - -为了消除字段或重组资源表示形式,Kubernetes 支持多个 API 版本,每个版本在不同的 API 路径下。例如:`/api/v1` 或者 `/apis/extensions/v1beta1`。 - -版本是在 API 级别而非资源或字段级别配置的: - -- 确保 API 呈现出清晰一致的系统资源和行为视图。 -- 允许控制对已寿终正寝的 API 和/或实验性 API 的访问。 - -JSON 和 Protobuf 序列化模式在出现模式变更时均遵循这些准则。以下说明同时适用于这两种格式。 - - - -{{< note >}} -API 版本和软件版本是间接相关的。[API 和发布版本建议](https://git.k8s.io/community/contributors/design-proposals/release/versioning.md) 描述了 API 版本和软件版本之间的关系。 -{{< /note >}} - - -不同的 API 版本表示不同级别的稳定性和支持级别。您可以在 [API 变更文档](https://git.k8s.io/community/contributors/devel/sig-architecture/api_changes.md#alpha-beta-and-stable) 中找到有关每个级别的条件的更多信息。 - -以下是每个级别的摘要: - -- Alpha: - - 版本名称包含 `alpha`(例如,`v1alpha1`)。 - - 该软件可能包含错误。启用功能可能会暴露错误。默认情况下,功能可能被禁用。 - - 对功能的支持随时可能被删除,但不另行通知。 - - 在以后的软件版本中,API 可能会以不兼容的方式更改,亦不另行通知。 - - 由于存在更高的错误风险和缺乏长期支持,建议仅在短期测试集群中使用该软件。 - -- Beta: - - 版本名称包含`beta`(例如,`v2beta3`)。 - - 该软件已经过充分测试。启用功能被认为是安全的。默认情况下启用功能。 - - 尽管细节可能会发生变更,对应功能不会被废弃。 - - 在随后的 Beta 或稳定版本中,对象的模式和/或语义可能会以不兼容的方式更改。发生这种情况时,将提供迁移说明。迁移时可能需要删除、编辑和重新创建 API 对象。编辑过程可能需要一些思考。对于依赖该功能的应用程序,可能需要停机。 - - 该软件仅建议用于非关键业务用途,因为在后续版本中可能会发生不兼容的更改。如果您有多个可以独立升级的群集,则可以放宽此限制。 - - {{< note >}} - - - -请试用 Beta 版功能并提供反馈。功能结束 Beta 版之后,再进行变更可能是不切实际的。 - - {{< /note >}} - - - -- 稳定版: - - 版本名称为 `vX`,其中`X`为整数。 - - 功能特性的稳定版本会持续出现在许多后续版本的发行软件中。 - - - -## API 组 - -[ *API 组*](https://git.k8s.io/community/contributors/design-proposals/api-machinery/api-group.md) 使扩展 Kubernetes API 更容易。API 组在 REST 路径和序列化对象的 apiVersion 字段中指定。 - -当前,有几个正在使用的 API 组: - -* *core*(也称为 *legacy*)组,它位于 REST 路径`/api/v1`上,未指定为 apiVersion 字段的一部分,例如`apiVersion: v1`。 -* 特定名称的组位于 REST 路径`/apis/$GROUP_NAME/$VERSION`下,并使用`apiVersion:$GROUP_NAME/$VERSION`(例如,`apiVersion:batch/v1`)。您可以在 [Kubernetes API 参考](/docs/reference/) 中找到受支持的 API Group 的完整列表。 - -有两种途径来使用 [自定义资源](/docs/concepts/api-extension/custom-resources/) 扩展 API,分别是: - - - [CustomResourceDefinition](/docs/tasks/access-kubernetes-api/extend-api-custom-resource-definitions/) 提供基本的 CRUD 需求。 - - [聚合器(Aggregator)](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/aggregated-api-servers.md)具有完整的 Kubernetes API 语义,用以实现用户自己的 apiserver。 - - -## 启用 API 组 - -默认情况下,某些资源和 API 组处于启用状态。您可以通过设置`--runtime-config`来启用或禁用它们。 -`--runtime-config` 接受逗号分隔的值。例如: - - 要禁用 `batch/v1`,请配置`--runtime-config=batch/v1=false` - - 要启用 `batch/2alpha1`,请配置`--runtime-config=batch/v2alpha1` -该标志接受描述 apiserver 的运行时配置的以逗号分隔的`key=value` 对集合。 - -{{< note >}} - - -启用或禁用组或资源时,需要重新启动 apiserver 和控制器管理器以刷新 `--runtime-config` 的更改。 - -{{< /note >}} - - - -## 启用 extensions/v1beta1 组中具体资源 - -在 `extensions/v1beta1` API 组中,DaemonSets,Deployments,StatefulSet, NetworkPolicies, PodSecurityPolicies 和 ReplicaSets 是默认禁用的。 -例如:要启用 deployments 和 daemonsets,请设置 `--runtime-config=extensions/v1beta1/deployments=true,extensions/v1beta1/daemonsets=true`。 - -{{< note >}} - - -出于遗留原因,仅在 `extensions / v1beta1` API 组中支持各个资源的启用/禁用。 - -{{< /note >}} - - From 8388ca4593bc53e315262cbd4ddedc40b61a4494 Mon Sep 17 00:00:00 2001 From: Arhell Date: Fri, 27 Nov 2020 01:03:28 +0200 Subject: [PATCH 33/80] improve Taints and Tolerations example (zh) --- .../scheduling-eviction/taint-and-toleration.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/content/zh/docs/concepts/scheduling-eviction/taint-and-toleration.md b/content/zh/docs/concepts/scheduling-eviction/taint-and-toleration.md index caef0f6311..685f75bbdc 100644 --- a/content/zh/docs/concepts/scheduling-eviction/taint-and-toleration.md +++ b/content/zh/docs/concepts/scheduling-eviction/taint-and-toleration.md @@ -45,11 +45,11 @@ For example, 您可以使用命令 [kubectl taint](/docs/reference/generated/kubectl/kubectl-commands#taint) 给节点增加一个污点。比如, ```shell -kubectl taint nodes node1 key=value:NoSchedule +kubectl taint nodes node1 key1=value1:NoSchedule ``` 给节点 `node1` 增加一个污点,它的键名是 `key`,键值是 `value`,效果是 `NoSchedule`。 @@ -81,15 +81,15 @@ to schedule onto `node1`: ```yaml tolerations: -- key: "key" +- key: "key1" operator: "Equal" - value: "value" + value: "value1" effect: "NoSchedule" ``` ```yaml tolerations: -- key: "key" +- key: "key1" operator: "Exists" effect: "NoSchedule" ``` @@ -123,7 +123,7 @@ There are two special cases: An empty `key` with operator `Exists` matches all keys, values and effects which means this will tolerate everything. -An empty `effect` matches all effects with key `key`. +An empty `effect` matches all effects with key `key1`. --> {{< note >}} 存在两种特殊情况: From ad8b32ffce090cbaa04ffe86d9055c721dcd2242 Mon Sep 17 00:00:00 2001 From: jialaijun Date: Fri, 27 Nov 2020 08:57:08 +0800 Subject: [PATCH 34/80] update glossary --- content/zh/docs/reference/glossary/addons.md | 33 +++++++-------- .../glossary/admission-controller.md | 28 ++++++------- .../reference/glossary/aggregation-layer.md | 37 ++++++++-------- .../zh/docs/reference/glossary/annotation.md | 34 +++++++-------- .../zh/docs/reference/glossary/api-group.md | 34 +++++++-------- .../docs/reference/glossary/app-container.md | 33 +++++++-------- .../glossary/application-architect.md | 33 +++++++-------- .../glossary/application-developer.md | 33 +++++++-------- .../docs/reference/glossary/applications.md | 32 +++++++------- .../zh/docs/reference/glossary/approver.md | 33 +++++++-------- .../zh/docs/reference/glossary/certificate.md | 32 +++++++------- content/zh/docs/reference/glossary/cgroup.md | 33 +++++++-------- content/zh/docs/reference/glossary/cidr.md | 33 +++++++-------- content/zh/docs/reference/glossary/cla.md | 33 +++++++-------- .../glossary/cloud-controller-manager.md | 2 - .../docs/reference/glossary/cloud-provider.md | 3 +- .../glossary/cluster-infrastructure.md | 4 +- .../reference/glossary/cluster-operations.md | 22 +++++++--- .../reference/glossary/cluster-operator.md | 3 +- content/zh/docs/reference/glossary/cluster.md | 35 ++++++++-------- content/zh/docs/reference/glossary/cncf.md | 2 +- content/zh/docs/reference/glossary/cni.md | 4 +- .../reference/glossary/code-contributor.md | 2 +- .../zh/docs/reference/glossary/configmap.md | 15 ++++--- .../glossary/container-env-variables.md | 12 +++--- .../glossary/container-lifecycle-hooks.md | 6 +-- .../reference/glossary/container-runtime.md | 8 ++-- .../zh/docs/reference/glossary/container.md | 6 +-- .../docs/reference/glossary/control-plane.md | 33 ++++++++++++--- .../zh/docs/reference/glossary/controller.md | 36 ++++++++++++---- content/zh/docs/reference/glossary/cri-o.md | 29 ++++++++----- content/zh/docs/reference/glossary/cri.md | 4 +- content/zh/docs/reference/glossary/cronjob.md | 12 +++--- content/zh/docs/reference/glossary/csi.md | 14 +++---- .../glossary/customresourcedefinition.md | 5 +-- .../zh/docs/reference/glossary/daemonset.md | 2 +- .../zh/docs/reference/glossary/data-plane.md | 2 +- .../zh/docs/reference/glossary/deployment.md | 14 ++++--- .../zh/docs/reference/glossary/developer.md | 2 +- .../docs/reference/glossary/device-plugin.md | 42 ++++++++++++++----- .../zh/docs/reference/glossary/disruption.md | 8 ++-- content/zh/docs/reference/glossary/docker.md | 10 ++--- .../zh/docs/reference/glossary/downstream.md | 2 +- .../glossary/dynamic-volume-provisioning.md | 6 +-- .../docs/reference/glossary/endpoint-slice.md | 6 +-- .../zh/docs/reference/glossary/endpoint.md | 14 ++++--- .../reference/glossary/ephemeral-container.md | 4 +- content/zh/docs/reference/glossary/etcd.md | 13 ++++-- .../zh/docs/reference/glossary/extensions.md | 4 +- .../zh/docs/reference/glossary/flexvolume.md | 20 +++++---- .../glossary/horizontal-pod-autoscaler.md | 12 +++--- content/zh/docs/reference/glossary/image.md | 6 +-- content/zh/docs/reference/glossary/ingress.md | 4 +- .../docs/reference/glossary/init-container.md | 10 ++--- content/zh/docs/reference/glossary/istio.md | 4 +- content/zh/docs/reference/glossary/job.md | 4 +- content/zh/docs/reference/glossary/kops.md | 19 ++++++--- .../reference/glossary/shuffle-sharding.md | 33 +++++++-------- content/zh/docs/reference/glossary/sig.md | 32 +++++++------- .../zh/docs/reference/glossary/statefulset.md | 33 +++++++-------- .../zh/docs/reference/glossary/static-pod.md | 30 ++++++------- .../docs/reference/glossary/storage-class.md | 34 +++++++-------- content/zh/docs/reference/glossary/sysctl.md | 29 ++++++------- content/zh/docs/reference/glossary/taint.md | 35 ++++++++-------- .../zh/docs/reference/glossary/toleration.md | 34 +++++++-------- content/zh/docs/reference/glossary/uid.md | 30 ++++++------- .../zh/docs/reference/glossary/upstream.md | 33 +++++++-------- .../docs/reference/glossary/volume-plugin.md | 34 +++++++-------- content/zh/docs/reference/glossary/volume.md | 34 +++++++-------- content/zh/docs/reference/glossary/wg.md | 31 +++++++------- .../zh/docs/reference/glossary/workload.md | 33 +++++++-------- 71 files changed, 723 insertions(+), 658 deletions(-) diff --git a/content/zh/docs/reference/glossary/addons.md b/content/zh/docs/reference/glossary/addons.md index d24c036178..2d252d93cd 100644 --- a/content/zh/docs/reference/glossary/addons.md +++ b/content/zh/docs/reference/glossary/addons.md @@ -1,20 +1,3 @@ - - --- title: Add-ons(附加组件) id: addons @@ -27,6 +10,22 @@ aka: tags: - tool --- + + + diff --git a/content/zh/docs/reference/glossary/admission-controller.md b/content/zh/docs/reference/glossary/admission-controller.md index d908098e93..e3c66df271 100644 --- a/content/zh/docs/reference/glossary/admission-controller.md +++ b/content/zh/docs/reference/glossary/admission-controller.md @@ -1,5 +1,18 @@ - ---- -title: Admission Controller(准入控制器) -id: admission-controller -date: 2019-06-28 -full_link: /zh/docs/reference/access-authn-authz/admission-controllers/ -short_description: > - 在对象持久化之前拦截 Kubernetes Api 服务器请求的一段代码 -aka: -tags: -- extension -- security ---- - --- title: Aggregation Layer(聚合层) id: aggregation-layer @@ -31,6 +12,24 @@ tags: - extension - operation --- + + + - --- title: Annotation(注解) id: annotation @@ -28,6 +11,23 @@ tags: - fundamental --- + + + + diff --git a/content/zh/docs/reference/glossary/api-group.md b/content/zh/docs/reference/glossary/api-group.md index 539af603b8..00314e5da9 100644 --- a/content/zh/docs/reference/glossary/api-group.md +++ b/content/zh/docs/reference/glossary/api-group.md @@ -1,21 +1,3 @@ - - --- title: API Group id: api-group @@ -30,6 +12,22 @@ tags: - architecture --- + + - --- title: App Container(应用程序容器) id: app-container @@ -27,6 +10,22 @@ aka: tags: - workload --- + + + diff --git a/content/zh/docs/reference/glossary/application-architect.md b/content/zh/docs/reference/glossary/application-architect.md index 055f6d1499..5619654d98 100644 --- a/content/zh/docs/reference/glossary/application-architect.md +++ b/content/zh/docs/reference/glossary/application-architect.md @@ -1,20 +1,3 @@ - - --- title: Application Architect(应用架构师) id: application-architect @@ -27,6 +10,22 @@ aka: tags: - user-type --- + + + diff --git a/content/zh/docs/reference/glossary/application-developer.md b/content/zh/docs/reference/glossary/application-developer.md index 8a79a30fad..53d6bc35b4 100644 --- a/content/zh/docs/reference/glossary/application-developer.md +++ b/content/zh/docs/reference/glossary/application-developer.md @@ -1,20 +1,3 @@ - - --- title: Application Developer(应用开发者) id: application-developer @@ -28,6 +11,22 @@ tags: - user-type --- + + + diff --git a/content/zh/docs/reference/glossary/applications.md b/content/zh/docs/reference/glossary/applications.md index 67f07e793f..032b4c2204 100644 --- a/content/zh/docs/reference/glossary/applications.md +++ b/content/zh/docs/reference/glossary/applications.md @@ -1,19 +1,3 @@ - - --- title: Applications(应用) id: applications @@ -25,6 +9,22 @@ aka: tags: - fundamental --- + + + + diff --git a/content/zh/docs/reference/glossary/approver.md b/content/zh/docs/reference/glossary/approver.md index b4f188e6ec..09752a83e4 100644 --- a/content/zh/docs/reference/glossary/approver.md +++ b/content/zh/docs/reference/glossary/approver.md @@ -1,20 +1,3 @@ - - --- title: Approver(批准者) id: approver @@ -27,6 +10,22 @@ aka: tags: - community --- + + + diff --git a/content/zh/docs/reference/glossary/certificate.md b/content/zh/docs/reference/glossary/certificate.md index 933f19c420..f2080a26cb 100644 --- a/content/zh/docs/reference/glossary/certificate.md +++ b/content/zh/docs/reference/glossary/certificate.md @@ -1,20 +1,3 @@ - - --- title: Certificate(证书) id: certificate @@ -28,6 +11,21 @@ tags: - security --- + + - --- title: cgroup (控制组) id: cgroup @@ -27,6 +10,22 @@ aka: tags: - fundamental --- + + + diff --git a/content/zh/docs/reference/glossary/cidr.md b/content/zh/docs/reference/glossary/cidr.md index f18e1b8947..143eab0919 100644 --- a/content/zh/docs/reference/glossary/cidr.md +++ b/content/zh/docs/reference/glossary/cidr.md @@ -1,20 +1,3 @@ - - --- title: CIDR id: cidr @@ -27,6 +10,22 @@ aka: tags: - networking --- + + + diff --git a/content/zh/docs/reference/glossary/cla.md b/content/zh/docs/reference/glossary/cla.md index 6f917d4826..07670c53bd 100644 --- a/content/zh/docs/reference/glossary/cla.md +++ b/content/zh/docs/reference/glossary/cla.md @@ -1,20 +1,3 @@ - - --- title: CLA (贡献者许可协议) id: cla @@ -27,6 +10,22 @@ aka: tags: - community --- + + + diff --git a/content/zh/docs/reference/glossary/cloud-controller-manager.md b/content/zh/docs/reference/glossary/cloud-controller-manager.md index 422376a4a9..71fbf83d95 100644 --- a/content/zh/docs/reference/glossary/cloud-controller-manager.md +++ b/content/zh/docs/reference/glossary/cloud-controller-manager.md @@ -14,7 +14,6 @@ tags: --- diff --git a/content/zh/docs/reference/glossary/cloud-provider.md b/content/zh/docs/reference/glossary/cloud-provider.md index 6c4eb11e45..7a33b6159d 100755 --- a/content/zh/docs/reference/glossary/cloud-provider.md +++ b/content/zh/docs/reference/glossary/cloud-provider.md @@ -10,8 +10,8 @@ aka: tags: - community --- - - 诸如升级集群、实现安全、存储、Ingress、网络、日志和监控之类的活动,以及管理 Kubernetes 集群所涉及的其他操作。 \ No newline at end of file +Kubernates管理相关工作包括:日常管理操作和协调升级。 + + +群集操作工作的示例包括:部署新节点来扩容集群;执行软件升级;实施安全控制;添加或删除存储;配置集群网络; +管理集群范围的可观测性;响应集群事件。 \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/cluster-operator.md b/content/zh/docs/reference/glossary/cluster-operator.md index 8318dd46ed..944c7de3fb 100644 --- a/content/zh/docs/reference/glossary/cluster-operator.md +++ b/content/zh/docs/reference/glossary/cluster-operator.md @@ -1,5 +1,5 @@ --- -title: 集群操作者 +title: Cluster Operator(集群操作者) id: cluster-operator date: 2018-04-12 full_link: @@ -35,6 +35,7 @@ tags: diff --git a/content/zh/docs/reference/glossary/cluster.md b/content/zh/docs/reference/glossary/cluster.md index 1efc4bcb5d..55832b16ba 100644 --- a/content/zh/docs/reference/glossary/cluster.md +++ b/content/zh/docs/reference/glossary/cluster.md @@ -1,21 +1,3 @@ - - --- title: Cluster(集群) id: cluster @@ -29,6 +11,23 @@ tags: - fundamental - operation --- + + + - ConfigMap 是一种 API 对象,用来将非机密性的数据保存到健值对中。使用时可以用作环境变量、命令行参数或者存储卷中的配置文件。 + ConfigMap 是一种 API 对象,用来将非机密性的数据保存到健值对中。使用时,{{< glossary_tooltip text="Pods" term_id="pod" >}} 可以将其用作环境变量、命令行参数或者存储卷中的配置文件。 -ConfigMap 将您的环境配置信息和 {{< glossary_tooltip text="容器镜像" term_id="container" >}} 解耦,便于应用配置的修改。当您需要储存机密信息时可以使用 [Secret](/docs/concepts/configuration/secret/) 对象。 +ConfigMap 将您的环境配置信息和 {{< glossary_tooltip text="容器镜像" term_id="image" >}} 解耦,便于应用配置的修改。 diff --git a/content/zh/docs/reference/glossary/container-env-variables.md b/content/zh/docs/reference/glossary/container-env-variables.md index ae2b134643..3274444c20 100644 --- a/content/zh/docs/reference/glossary/container-env-variables.md +++ b/content/zh/docs/reference/glossary/container-env-variables.md @@ -1,10 +1,10 @@ --- -title: 容器环境变量 +title: Container Environment Variables(容器环境变量) id: container-env-variables date: 2018-04-12 full_link: /zh/docs/concepts/containers/container-environment/ short_description: > - 容器环境变量提供了运行容器化应用所必须的一些重要信息。 + 容器环境变量提供了name=value形式的、运行容器化应用所必须的一些重要信息。 aka: tags: @@ -16,7 +16,7 @@ tags: title: Container Environment Variables id: container-env-variables date: 2018-04-12 -full_link: /zh/docs/concepts/containers/container-environment/ +full_link: /docs/concepts/containers/container-environment/ short_description: > Container environment variables are name=value pairs that provide useful information into containers running in a Pod. @@ -27,14 +27,14 @@ tags: --> - 容器环境变量提供了运行容器化应用所必须的一些重要信息。 + 容器环境变量提供了name=value形式的、在{{< glossary_tooltip text="pod" term_id="pod" >}}中运行的容器所必须的一些重要信息。 容器环境变量为运行中的容器化应用提供必要的信息,同时还提供与 {{< glossary_tooltip text="容器" term_id="container" >}} 重要资源相关的其他信息,例如:文件系统信息、容器自身的信息以及其他像服务端点(Service endpoints)这样的集群资源信息。 diff --git a/content/zh/docs/reference/glossary/container-lifecycle-hooks.md b/content/zh/docs/reference/glossary/container-lifecycle-hooks.md index 20e65157a0..d0996a82f2 100644 --- a/content/zh/docs/reference/glossary/container-lifecycle-hooks.md +++ b/content/zh/docs/reference/glossary/container-lifecycle-hooks.md @@ -1,5 +1,5 @@ --- -title: 容器生命周期钩子 +title: Container Lifecycle Hooks(容器生命周期钩子) id: container-lifecycle-hooks date: 2018-10-08 full_link: /zh/docs/concepts/containers/container-lifecycle-hooks/ @@ -15,11 +15,11 @@ tags: title: Container Lifecycle Hooks id: container-lifecycle-hooks date: 2018-10-08 -full_link: /zh/docs/concepts/containers/container-lifecycle-hooks/ +full_link: /docs/concepts/containers/container-lifecycle-hooks/ short_description: > The lifecycle hooks expose events in the container management lifecycle and let the user run code when the events occur. -aka: +aka: tags: - extension --- diff --git a/content/zh/docs/reference/glossary/container-runtime.md b/content/zh/docs/reference/glossary/container-runtime.md index 7a68b6fd5c..ccc2d4540a 100644 --- a/content/zh/docs/reference/glossary/container-runtime.md +++ b/content/zh/docs/reference/glossary/container-runtime.md @@ -1,10 +1,10 @@ --- -title: 容器运行环境(Container Runtime) +title: Container Runtime(容器运行时) id: container-runtime date: 2019-06-05 -full_link: /docs/setup/production-environment/container-runtimes +full_link: /zh/docs/setup/production-environment/container-runtimes short_description: > - 容器运行环境是负责运行容器的软件。 + 容器运行时是负责运行容器的软件。 aka: tags: @@ -28,7 +28,7 @@ tags: --> 容器运行环境是负责运行容器的软件。 diff --git a/content/zh/docs/reference/glossary/container.md b/content/zh/docs/reference/glossary/container.md index 1b2a98d43b..6c552a42fa 100644 --- a/content/zh/docs/reference/glossary/container.md +++ b/content/zh/docs/reference/glossary/container.md @@ -1,5 +1,5 @@ --- -title: 容器 +title: Container(容器) id: container date: 2018-04-12 full_link: /zh/docs/concepts/overview/what-is-kubernetes/#why-containers @@ -17,7 +17,7 @@ tags: title: Container id: container date: 2018-04-12 -full_link: /zh/docs/concepts/overview/what-is-kubernetes/#why-containers +full_link: /docs/concepts/containers/ short_description: > A lightweight and portable executable image that contains software and all of its dependencies. @@ -32,7 +32,7 @@ tags: A lightweight and portable executable image that contains software and all of its dependencies. --> - 容器是可移植、可执行的轻量级的镜像,镜像中包含软件及其相关依赖。 + 容器是可移植、可执行的轻量级的镜像,包含其中的软件及其相关依赖。 diff --git a/content/zh/docs/reference/glossary/control-plane.md b/content/zh/docs/reference/glossary/control-plane.md index 05f3f57978..11cce769ba 100644 --- a/content/zh/docs/reference/glossary/control-plane.md +++ b/content/zh/docs/reference/glossary/control-plane.md @@ -1,15 +1,15 @@ --- -title: 控制平面 +title: Control Plane(控制平面) id: control-plane date: 2019-05-12 full_link: short_description: > - 容器编排层,它暴露 API 和接口来定义、部署容器和管理容器的生命周期。 + Control Plane(控制平面)是指容器编排层,它暴露 API 和接口来定义、部署容器和管理容器的生命周期。 aka: tags: - fundamental ---- +--- - 容器编排层,它暴露 API 和接口来定义、部署容器和管理容器的生命周期。 + Control Plane(控制平面)是指容器编排层,它暴露 API 和接口来定义、部署容器和管理容器的生命周期。 + + +这个编排层是由多个不同的组件组成,例如以下(但不限于)几种: + + * {{< glossary_tooltip text="etcd" term_id="etcd" >}} + * {{< glossary_tooltip text="API Server" term_id="kube-apiserver" >}} + * {{< glossary_tooltip text="Scheduler" term_id="kube-scheduler" >}} + * {{< glossary_tooltip text="Controller Manager" term_id="kube-controller-manager" >}} + * {{< glossary_tooltip text="Cloud Controller Manager" term_id="cloud-controller-manager" >}} + +这些组件可以以传统的系统服务运行也可以以容器的形式运行.运行这些组件的主机过去称为master节点。 \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/controller.md b/content/zh/docs/reference/glossary/controller.md index 2b523c8b76..9e86088f12 100644 --- a/content/zh/docs/reference/glossary/controller.md +++ b/content/zh/docs/reference/glossary/controller.md @@ -1,8 +1,8 @@ --- -title: 控制器 +title: Controller(控制器) id: controller date: 2018-04-12 -full_link: /docs/admin/kube-controller-manager/ +full_link: /zh/docs/concepts/architecture/controller/ short_description: > 控制器通过 apiserver 监控集群的公共状态,并致力于将当前状态转变为期望的状态。 @@ -17,7 +17,7 @@ tags: title: Controller id: controller date: 2018-04-12 -full_link: /docs/admin/kube-controller-manager/ +full_link: /docs/concepts/architecture/controller/ short_description: > A control loop that watches the shared state of the cluster through the apiserver and makes changes attempting to move the current state towards the desired state. @@ -27,14 +27,36 @@ tags: - fundamental --- --> + + + + - 控制器通过 {{< glossary_tooltip text="apiserver" term_id="kube-apiserver" >}} 监控集群的公共状态,并致力于将当前状态转变为期望的状态。 + 在Kubernates中,控制器通过监控 {{< glossary_tooltip text="集群" term_id="kube-cluster" >}} 的公共状态,并致力于将当前状态转变为期望的状态。 + + + +控制器({{< glossary_tooltip text="控制平面" term_id="control-plane" >}}的一部分)通过{{< glossary_tooltip text="apiserver" term_id="kube-apiserver" >}}监控你的集群中的公共状态。 - -Kubernetes 当前提供的部分控制器例子包括:副本控制器(replication controller)、端点控制器(endpoints controller)、命名空间控制器(namespace controller)、服务账号控制器(serviceaccounts controller)。 +其中一些控制器是运行在控制平面内部的,对Kubernates来说,他们提供核心控制操作。比如:部署控制器(deployment controller)、守护控制器(daemonset controller)、命名空间控制器(namespace controller)、持久化数据卷控制器(persistent volume +controller)(等)都是运行在{{< glossary_tooltip text="kube-controller-manager" term_id="kube-controller-manager" >}}中的。 diff --git a/content/zh/docs/reference/glossary/cri-o.md b/content/zh/docs/reference/glossary/cri-o.md index 8eb19ddbbb..c59a60eff4 100644 --- a/content/zh/docs/reference/glossary/cri-o.md +++ b/content/zh/docs/reference/glossary/cri-o.md @@ -2,20 +2,21 @@ title: CRI-O id: cri-o date: 2019-05-14 -full_link: https://cri-o.io/docs/ +full_link: https://cri-o.io/#what-is-cri-o short_description: > - 专用于 Kubernetes 的轻量级容器运行环境 + 专用于 Kubernetes 的轻量级容器运行时软件 aka: tags: - tool --- - - + 该工具可让您通过 Kubernetes CRI 使用 OCI 容器运行环境。 - -CRI-O 是 {{< glossary_tooltip term_id="cri" >}} 的实现,可启用与开放容器倡议 Open Container Initiative(OCI)兼容的 {{< glossary_tooltip text="container" term_id="container" >}} 运行环境[运行时规范](http://www.github.com/opencontainers/runtime-spec)。 +[runtime spec](https://www.github.com/opencontainers/runtime-spec). +--> +CRI-O 是 {{< glossary_tooltip text="cri" term_id="cri" >}} 的实现,与开放容器倡议 Open Container Initiative(OCI)兼容的 {{< glossary_tooltip text="container" term_id="container" >}} [运行时规范](https://www.github.com/opencontainers/runtime-spec)。 - -部署 CRI-O 允许 Kubernetes 使用任何符合 OCI 运行环境,作为容器运行环境去运行 {{< glossary_tooltip text="Pods" term_id="pod" >}},并从远程注册表获取 OCI 容器镜像。 \ No newline at end of file +OCI container images from remote registries. +--> +部署 CRI-O 允许 Kubernetes 使用任何符合 OCI 的运行时,作为容器运行环境去运行 {{< glossary_tooltip text="Pods" term_id="pod" >}},并从远程注册表获取 OCI 容器镜像。 \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/cri.md b/content/zh/docs/reference/glossary/cri.md index 96fd7f4bf4..9ca5436d87 100644 --- a/content/zh/docs/reference/glossary/cri.md +++ b/content/zh/docs/reference/glossary/cri.md @@ -1,5 +1,5 @@ --- -title: 容器运行时接口 (CRI) +title: CRI(容器运行时接口) id: cri date: 2019-03-07 full_link: /zh/docs/concepts/overview/components/#container-runtime @@ -18,7 +18,7 @@ tags: title: Container runtime interface (CRI) id: cri date: 2019-03-07 -full_link: /zh/docs/concepts/overview/components/#container-runtime +full_link: /docs/concepts/overview/components/#container-runtime short_description: > An API for container runtimes to integrate with kubelet diff --git a/content/zh/docs/reference/glossary/cronjob.md b/content/zh/docs/reference/glossary/cronjob.md index e6838de86c..98d6766d4d 100644 --- a/content/zh/docs/reference/glossary/cronjob.md +++ b/content/zh/docs/reference/glossary/cronjob.md @@ -1,10 +1,10 @@ --- -title: CronJob +title: CronJob(周期调度任务) id: cronjob date: 2018-04-12 full_link: /zh/docs/concepts/workloads/controllers/cron-jobs/ short_description: > - 管理定期运行的 [Job](/docs/concepts/workloads/controllers/jobs-run-to-completion/)。 + 周期调度的任务(作业)。 aka: tags: @@ -17,9 +17,9 @@ tags: title: CronJob id: cronjob date: 2018-04-12 -full_link: /zh/docs/concepts/workloads/controllers/cron-jobs/ +full_link: /docs/concepts/workloads/controllers/cron-jobs/ short_description: > - Manages a [Job](/docs/concepts/workloads/controllers/jobs-run-to-completion/) that runs on a periodic schedule. + A repeating task (a Job) that runs on a regular schedule. aka: tags: @@ -29,10 +29,10 @@ tags: --> - 管理定期运行的 [Job](/docs/concepts/workloads/controllers/jobs-run-to-completion/)。 + 管理定期运行的 [任务](/zh/docs/concepts/workloads/controllers/job/)。 diff --git a/content/zh/docs/reference/glossary/csi.md b/content/zh/docs/reference/glossary/csi.md index 2b77146757..46e2efef32 100644 --- a/content/zh/docs/reference/glossary/csi.md +++ b/content/zh/docs/reference/glossary/csi.md @@ -1,5 +1,5 @@ --- -title: 容器存储接口 (CSI) +title: Container Storage Interface(CSI)(容器存储接口) id: csi date: 2018-06-25 full_link: /zh/docs/concepts/storage/volumes/#csi @@ -17,7 +17,7 @@ tags: title: Container Storage Interface (CSI) id: csi date: 2018-06-25 -full_link: /zh/docs/concepts/storage/volumes/#csi +full_link: /docs/concepts/storage/volumes/#csi short_description: > The Container Storage Interface (CSI) defines a standard interface to expose storage systems to containers. @@ -36,13 +36,13 @@ tags: -CSI 允许存储驱动提供商为 Kubernetes 创建定制化的存储插件,而无需将这些插件的代码添加到 Kubernetes 代码仓库(外部插件)。要使用某个存储提供商的 CSI 驱动,你首先要[将它部署到你的集群上](https://kubernetes-csi.github.io/docs/Setup.html)。然后你才能创建使用该 CSI 驱动的 {{< glossary_tooltip text="Storage Class" term_id="storage-class" >}} 。 +CSI 允许存储驱动提供商为 Kubernetes 创建定制化的存储插件,而无需将这些插件的代码添加到 Kubernetes 代码仓库(外部插件)。要使用某个存储提供商的 CSI 驱动,你首先要[将它部署到你的集群上](https://kubernetes-csi.github.io/docs/deploying.html)。然后你才能创建使用该 CSI 驱动的 {{< glossary_tooltip text="Storage Class" term_id="storage-class" >}} 。 -* [Kubernetes 文档中关于 CSI 的描述](/docs/concepts/storage/volumes/#csi) -* [可用的 CSI 驱动列表](https://kubernetes-csi.github.io/docs/Drivers.html) +* [Kubernetes 文档中关于 CSI 的描述](/zh/docs/concepts/storage/volumes/#csi) +* [可用的 CSI 驱动列表](https://kubernetes-csi.github.io/docs/drivers.html) diff --git a/content/zh/docs/reference/glossary/customresourcedefinition.md b/content/zh/docs/reference/glossary/customresourcedefinition.md index 510d26d3bc..ee0548e78d 100644 --- a/content/zh/docs/reference/glossary/customresourcedefinition.md +++ b/content/zh/docs/reference/glossary/customresourcedefinition.md @@ -2,7 +2,7 @@ title: CustomResourceDefinition id: CustomResourceDefinition date: 2018-04-12 -full_link: docs/tasks/access-kubernetes-api/extend-api-custom-resource-definitions/ +full_link: /zh/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/ short_description: > 通过定制化的代码给您的 Kubernetes API 服务器增加资源对象,而无需编译完整的定制 API 服务器。 @@ -18,8 +18,7 @@ tags: title: CustomResourceDefinition id: CustomResourceDefinition date: 2018-04-12 -full_link: docs/tasks/access-kubernetes-api/extend-api-custom-resource-definitions/ -short_description: > +full_link: /docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/ Custom code that defines a resource to add to your Kubernetes API server without building a complete custom server. aka: diff --git a/content/zh/docs/reference/glossary/daemonset.md b/content/zh/docs/reference/glossary/daemonset.md index ea250d02bc..5f35ae5012 100644 --- a/content/zh/docs/reference/glossary/daemonset.md +++ b/content/zh/docs/reference/glossary/daemonset.md @@ -18,7 +18,7 @@ tags: title: DaemonSet id: daemonset date: 2018-04-12 -full_link: /zh/docs/concepts/workloads/controllers/daemonset/ +full_link: /docs/concepts/workloads/controllers/daemonset short_description: > Ensures a copy of a Pod is running across a set of nodes in a cluster. diff --git a/content/zh/docs/reference/glossary/data-plane.md b/content/zh/docs/reference/glossary/data-plane.md index addd1b032b..b32b7a68fc 100644 --- a/content/zh/docs/reference/glossary/data-plane.md +++ b/content/zh/docs/reference/glossary/data-plane.md @@ -1,5 +1,5 @@ --- -title: 数据平面 +title: Data Plane(数据平面) id: data-plane date: 2019-05-12 full_link: diff --git a/content/zh/docs/reference/glossary/deployment.md b/content/zh/docs/reference/glossary/deployment.md index 05bce1377b..c7e218699e 100644 --- a/content/zh/docs/reference/glossary/deployment.md +++ b/content/zh/docs/reference/glossary/deployment.md @@ -18,9 +18,9 @@ tags: title: Deployment id: deployment date: 2018-04-12 -full_link: /zh/docs/concepts/workloads/controllers/deployment/ +full_link: /docs/concepts/workloads/controllers/deployment/ short_description: > - An API object that manages a replicated application. + Manages a replicated application on your cluster. aka: tags: @@ -31,15 +31,17 @@ tags: --> - Deployment 是管理应用副本的 API 对象。 + Deployment 是管理应用副本的 API 对象,通常通过运行没有本地状态的Pods来实现。 -应用的每个副本就是一个 {{< glossary_tooltip term_id="pod" >}},并且这些 Pod 会分散运行在集群的节点上。 +应用的每个副本就是一个 {{< glossary_tooltip text="Pod" term_id="pod" >}},并且这些 Pod 会分散运行在集群的{{< glossary_tooltip text="节点" term_id="node" >}}上。 diff --git a/content/zh/docs/reference/glossary/developer.md b/content/zh/docs/reference/glossary/developer.md index 2efbeea6e2..73f68f79fe 100644 --- a/content/zh/docs/reference/glossary/developer.md +++ b/content/zh/docs/reference/glossary/developer.md @@ -1,5 +1,5 @@ --- -title: 开发者 (释疑) +title: Developer(开发者) id: developer date: 2018-04-12 full_link: diff --git a/content/zh/docs/reference/glossary/device-plugin.md b/content/zh/docs/reference/glossary/device-plugin.md index af7e491426..5f9c2896bb 100644 --- a/content/zh/docs/reference/glossary/device-plugin.md +++ b/content/zh/docs/reference/glossary/device-plugin.md @@ -1,32 +1,52 @@ --- -title: 驱动插件 +title: Device Plugin(设备插件) id: device-plugin date: 2019-02-02 full_link: /zh/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/ short_description: > - 在 Kubernetes 中运行的容器提供对供应商特定资源的访问权限。 + 一种软件扩展,可以使Pod访问由特定厂商初始化或者安装的设备。 aka: tags: - fundamental - extension --- - - -设备插件是在 Kubernetes 中运行的容器,可用于访问供应商特定资源。 - +--- +--> + +设备插件工作在节点主机上,给{{< glossary_tooltip term_id="pod" text="Pods ">}}提供访问资源的权限,比如特定厂商初始化或者安装的本地硬件。 - -[驱动插件](/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/) 是运行在 Kubernetes 中的容器,它提供对供应商特定资源的访问。驱动插件将这些资源发布到 {{< glossary_tooltip term_id="kubelet" >}}。并且可以手动部署或做为 {{< glossary_tooltip term_id="daemonset" >}},而不用编写定制的 Kubernetes 代码。 + +设备插件将资源告知给{{< glossary_tooltip term_id="kubelet" text="kubelet" >}},以便相关节点上运行的工作负载Pod可以访问硬件功能。 + +更多信息请查阅[设备插件](/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/) \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/disruption.md b/content/zh/docs/reference/glossary/disruption.md index e175b930d7..4cd01856fe 100644 --- a/content/zh/docs/reference/glossary/disruption.md +++ b/content/zh/docs/reference/glossary/disruption.md @@ -1,5 +1,5 @@ --- -title: 干扰 +title: Disruption(干扰) id: disruption date: 2019-09-10 full_link: /zh/docs/concepts/workloads/pods/disruptions/ @@ -17,7 +17,7 @@ tags: title: Disruption id: disruption date: 2019-09-10 -full_link: /zh/docs/concepts/workloads/pods/disruptions/ +full_link: /docs/concepts/workloads/pods/disruptions/ short_description: > An event that leads to Pod(s) going out of service aka: @@ -42,4 +42,6 @@ Kubernetes terms that an _involuntary disruption_. See [Disruptions](/docs/concepts/workloads/pods/disruptions/) for more information. --> 如果您作为一个集群操作人员,销毁了一个从属于某个应用的 Pod, Kubernetes 视之为 _自愿干扰_。如果由于节点故障 -或者影响更大区域故障的断电导致 Pod 离线,Kubrenetes 视之为 _非愿干扰_。 \ No newline at end of file +或者影响更大区域故障的断电导致 Pod 离线,Kubrenetes 视之为 _非愿干扰_。 + +更多信息请查阅[Disruptions](/zh/docs/concepts/workloads/pods/disruptions/) \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/docker.md b/content/zh/docs/reference/glossary/docker.md index 55782a84c8..7025ddab05 100644 --- a/content/zh/docs/reference/glossary/docker.md +++ b/content/zh/docs/reference/glossary/docker.md @@ -1,5 +1,5 @@ --- -title: docker +title: Docker id: docker date: 2018-04-12 full_link: /zh/docs/reference/kubectl/docker-cli-to-kubectl/ @@ -13,10 +13,10 @@ tags: - Docker 是一种可以提供操作系统级别虚拟化(也称作容器)的软件技术 + Docker(这里特指Docker引擎) 是一种可以提供操作系统级别虚拟化(也称作{{< glossary_tooltip text="容器" term_id="container" >}})的软件技术。 diff --git a/content/zh/docs/reference/glossary/downstream.md b/content/zh/docs/reference/glossary/downstream.md index 575d9c74e0..01cf99b743 100644 --- a/content/zh/docs/reference/glossary/downstream.md +++ b/content/zh/docs/reference/glossary/downstream.md @@ -1,5 +1,5 @@ --- -title: 下游(消除歧义) +title: Downstream(下游)(消除歧义) id: downstream date: 2018-04-12 full_link: diff --git a/content/zh/docs/reference/glossary/dynamic-volume-provisioning.md b/content/zh/docs/reference/glossary/dynamic-volume-provisioning.md index 1d3c67e285..dd86e126cd 100644 --- a/content/zh/docs/reference/glossary/dynamic-volume-provisioning.md +++ b/content/zh/docs/reference/glossary/dynamic-volume-provisioning.md @@ -1,5 +1,5 @@ --- -title: 动态卷供应 +title: Dynamic Volume Provisioning(动态卷供应) id: dynamicvolumeprovisioning date: 2018-04-12 full_link: /zh/docs/concepts/storage/dynamic-provisioning/ @@ -17,7 +17,7 @@ tags: title: Dynamic Volume Provisioning id: dynamicvolumeprovisioning date: 2018-04-12 -full_link: /zh/docs/concepts/storage/dynamic-provisioning/ +full_link: /docs/concepts/storage/dynamic-provisioning short_description: > Allows users to request automatic creation of storage Volumes. @@ -41,4 +41,4 @@ Dynamic provisioning eliminates the need for cluster administrators to pre-provi --> 动态供应让集群管理员无需再预先供应存储。相反,它通过用户请求自动地供应存储。 -动态卷供应是基于 API 对象 {{< glossary_tooltip text="StorageClass" term_id="storage-class" >}} 的,StorageClass 可以引用 {{< glossary_tooltip text="卷插件(Volume Plugin)" term_id="volume-plugin" >}} 提供的 {{< glossary_tooltip text="卷(Volume)" term_id="volume" >}} ,也可以引用传递给卷插件(Volume Plugin)的参数集。 +动态卷供应是基于 API 对象 {{< glossary_tooltip text="StorageClass" term_id="储存类别(storage-class)" >}} 的,StorageClass 可以引用 {{< glossary_tooltip text="卷插件(Volume Plugin)" term_id="volume-plugin" >}} 提供的 {{< glossary_tooltip text="卷(Volume)" term_id="volume" >}} ,也可以引用传递给卷插件(Volume Plugin)的参数集。 diff --git a/content/zh/docs/reference/glossary/endpoint-slice.md b/content/zh/docs/reference/glossary/endpoint-slice.md index c108efd602..52e9231e14 100644 --- a/content/zh/docs/reference/glossary/endpoint-slice.md +++ b/content/zh/docs/reference/glossary/endpoint-slice.md @@ -1,5 +1,5 @@ --- -title: 端点切片 +title: Endpoint Slice(端点切片) id: endpoint-slice date: 2018-04-12 full_link: /zh/docs/concepts/services-networking/endpoint-slices/ @@ -14,10 +14,10 @@ tags: -端点可以手动配置到{{< glossary_tooltip text="服务(Service)" term_id="service" >}}上,而不必设置选择算符。 -{{< glossary_tooltip text="EndpointSlice" term_id="endpoint-slice" >}} 资源为 Endpoints -提供了一种可伸缩、可扩展的替代方案。 +端点可以手动配置到{{< glossary_tooltip text="服务(Service)" term_id="service" >}}上,而不必指定选择器标识。 + +{{< glossary_tooltip text="EndpointSlice" term_id="endpoint-slice" >}}提供了一种可伸缩、可扩展的替代方案。 diff --git a/content/zh/docs/reference/glossary/ephemeral-container.md b/content/zh/docs/reference/glossary/ephemeral-container.md index fa95887e8d..5e3b98d11f 100644 --- a/content/zh/docs/reference/glossary/ephemeral-container.md +++ b/content/zh/docs/reference/glossary/ephemeral-container.md @@ -1,5 +1,5 @@ --- -title: 临时容器 +title: Ephemeral Container(临时容器) id: ephemeral-container date: 2019-08-26 full_link: /zh/docs/concepts/workloads/pods/ephemeral-containers/ @@ -16,7 +16,7 @@ tags: title: Ephemeral Container id: ephemeral-container date: 2019-08-26 -full_link: /zh/docs/concepts/workloads/pods/ephemeral-containers/ +full_link: /docs/concepts/workloads/pods/ephemeral-containers/ short_description: > A type of container type that you can temporarily run inside a Pod diff --git a/content/zh/docs/reference/glossary/etcd.md b/content/zh/docs/reference/glossary/etcd.md index e0e11082a8..9dec928b29 100644 --- a/content/zh/docs/reference/glossary/etcd.md +++ b/content/zh/docs/reference/glossary/etcd.md @@ -17,7 +17,7 @@ tags: title: etcd id: etcd date: 2018-04-12 -full_link: /zh/docs/tasks/administer-cluster/configure-upgrade-etcd/ +full_link: /docs/tasks/administer-cluster/configure-upgrade-etcd/ short_description: > Consistent and highly-available key value store used as Kubernetes' backing store for all cluster data. @@ -35,9 +35,14 @@ tags: etcd 是兼具一致性和高可用性的键值数据库,可以作为保存 Kubernetes 所有集群数据的后台数据库。 - +您的 Kubernetes 集群的 etcd 数据库通常需要有个备份计划。 + -您的 Kubernetes 集群的 etcd 数据库通常需要有个备份计划。要了解 etcd 更深层次的信息,请参考 [etcd 文档](https://etcd.io/docs)。 +要了解 etcd 更深层次的信息,请参考 [etcd 文档](https://etcd.io/docs/)。 diff --git a/content/zh/docs/reference/glossary/extensions.md b/content/zh/docs/reference/glossary/extensions.md index ebc25eca05..880a59fb53 100644 --- a/content/zh/docs/reference/glossary/extensions.md +++ b/content/zh/docs/reference/glossary/extensions.md @@ -1,5 +1,5 @@ --- -title: 扩展组件 +title: Extensions(扩展组件) id: Extensions date: 2019-02-01 full_link: /zh/docs/concepts/extend-kubernetes/extend-cluster/#extensions @@ -17,7 +17,7 @@ tags: title: Extensions id: Extensions date: 2019-02-01 -full_link: /zh/docs/concepts/extend-kubernetes/extend-cluster/#extensions +full_link: /docs/concepts/extend-kubernetes/extend-cluster/#extensions short_description: > Extensions are software components that extend and deeply integrate with Kubernetes to support new types of hardware. diff --git a/content/zh/docs/reference/glossary/flexvolume.md b/content/zh/docs/reference/glossary/flexvolume.md index af28200f40..e74aabee45 100644 --- a/content/zh/docs/reference/glossary/flexvolume.md +++ b/content/zh/docs/reference/glossary/flexvolume.md @@ -16,7 +16,7 @@ tags: title: FlexVolume id: flexvolume date: 2018-06-25 -full_link: /zh/docs/concepts/storage/volumes/#flexvolume +full_link: /docs/concepts/storage/volumes/#flexvolume short_description: > FlexVolume is an interface for creating out-of-tree volume plugins. The {{< glossary_tooltip text="Container Storage Interface" term_id="csi" >}} is a newer interface which addresses several problems with FlexVolumes. @@ -25,17 +25,23 @@ aka: tags: - storage --- --> - + Flexvolume 是创建 out-of-tree 卷插件的一种接口。 {{< glossary_tooltip text="容器存储接口(CSI)" term_id="csi" >}} 是比 Flexvolume 更新的接口,它解决了 Flexvolume 的一些问题。 - + Flexvolume 允许用户编写自己的驱动程序,并在 Kubernetes 中加入对用户自己的数据卷的支持。FlexVolume 驱动程序的二进制文件和依赖项必须安装在主机上。这需要 root 权限。如果可能的话,SIG Storage 建议实现 {{< glossary_tooltip text="CSI" term_id="csi" >}} 驱动程序,因为它解决了 Flexvolumes 的限制。 - + * [Kubernetes 文档中的 Flexvolume](/docs/concepts/storage/volumes/#flexvolume) -* [更多关于 Flexvolumes 的信息](https://github.com/kubernetes/community/blob/master/contributors/devel/flexvolume.md) +* [更多关于 Flexvolumes 的信息](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-storage/flexvolume.md) * [存储供应商的卷插件 FAQ](https://github.com/kubernetes/community/blob/master/sig-storage/volume-plugin-faq.md) \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/horizontal-pod-autoscaler.md b/content/zh/docs/reference/glossary/horizontal-pod-autoscaler.md index 3a94a04b5a..2abdd685d3 100644 --- a/content/zh/docs/reference/glossary/horizontal-pod-autoscaler.md +++ b/content/zh/docs/reference/glossary/horizontal-pod-autoscaler.md @@ -1,5 +1,5 @@ --- -title: Pod 水平自动扩缩器 +title: Horizontal Pod Autoscaler(Pod 水平自动扩缩器) id: horizontal-pod-autoscaler date: 2018-04-12 full_link: /zh/docs/tasks/run-application/horizontal-pod-autoscale/ @@ -7,6 +7,7 @@ short_description: > Pod 水平自动扩缩器(Horizontal Pod Autoscaler)是一种 API 资源,它根据目标 CPU 利用率或自定义度量目标扩缩 Pod 副本的数量。 aka: +- HPA tags: - operation --- @@ -16,22 +17,23 @@ tags: title: Horizontal Pod Autoscaler id: horizontal-pod-autoscaler date: 2018-04-12 -full_link: /zh/docs/tasks/run-application/horizontal-pod-autoscale/ +full_link: /docs/tasks/run-application/horizontal-pod-autoscale/ short_description: > An API resource that automatically scales the number of pod replicas based on targeted CPU utilization or custom metric targets. aka: +- HPA tags: - operation --- --> - Pod 水平自动扩缩器(Horizontal Pod Autoscaler)是一种 API 资源,它根据目标 CPU 利用率或自定义度量目标扩缩 Pod 副本的数量。 + Horizontal Pod Autoscaler(Pod 水平自动扩缩器)是一种 API 资源,它根据目标 CPU 利用率或自定义度量目标扩缩 Pod 副本的数量。 -HPA 通常用于 {{< glossary_tooltip text="Replication Controllers" term_id="replication-controller" >}}、{{< glossary_tooltip text="Deployments" term_id="deployment" >}} 或者 Replica Sets 上。HPA 不能用于不支持扩缩的对象,例如 {{< glossary_tooltip text="DaemonSets" term_id="daemonset" >}}。 +HPA 通常用于 {{< glossary_tooltip text="ReplicationControllers" term_id="replication-controller" >}}、{{< glossary_tooltip text="Deployments" term_id="deployment" >}} 或者 {{< glossary_tooltip text="ReplicaSets" term_id="replica-set" >}} 上。HPA 不能用于不支持扩缩的对象,例如 {{< glossary_tooltip text="DaemonSets" term_id="daemonset" >}}。 diff --git a/content/zh/docs/reference/glossary/image.md b/content/zh/docs/reference/glossary/image.md index 1fc7db55e5..b32598776e 100644 --- a/content/zh/docs/reference/glossary/image.md +++ b/content/zh/docs/reference/glossary/image.md @@ -1,5 +1,5 @@ --- -title: 镜像 +title: Image(镜像) id: image date: 2018-04-12 full_link: @@ -27,10 +27,10 @@ tags: --> -镜像是保存的容器实例,它打包了应用运行所需的一组软件。 +镜像是保存的{{< glossary_tooltip text="容器" term_id="container" >}}实例,它打包了应用运行所需的一组软件。 diff --git a/content/zh/docs/reference/glossary/ingress.md b/content/zh/docs/reference/glossary/ingress.md index 972c2b0873..2b08741574 100644 --- a/content/zh/docs/reference/glossary/ingress.md +++ b/content/zh/docs/reference/glossary/ingress.md @@ -18,7 +18,7 @@ tags: title: Ingress id: ingress date: 2018-04-12 -full_link: /zh/docs/concepts/services-networking/ingress/ +full_link: /docs/concepts/services-networking/ingress/ short_description: > An API object that manages external access to the services in a cluster, typically HTTP. @@ -39,7 +39,7 @@ tags: Ingress 可以提供负载均衡、SSL 终结和基于名称的虚拟托管。 diff --git a/content/zh/docs/reference/glossary/init-container.md b/content/zh/docs/reference/glossary/init-container.md index cf8cead312..a454cc3100 100644 --- a/content/zh/docs/reference/glossary/init-container.md +++ b/content/zh/docs/reference/glossary/init-container.md @@ -1,5 +1,5 @@ --- -title: 初始化容器 +title: Init Container(初始化容器) id: init-container date: 2018-04-12 full_link: @@ -18,7 +18,7 @@ id: init-container date: 2018-04-12 full_link: short_description: > - One or more initialization containers that must run to completion before any app containers run. + One or more initialization containers that must run to completion before any app containers run. aka: tags: @@ -27,15 +27,15 @@ tags: --> - 应用容器运行前必须先运行完成的一个或多个初始化容器。 + 应用{{< glossary_tooltip text="容器" term_id="container" >}}运行前必须先运行完成的一个或多个初始化容器。 初始化(init)容器像常规应用容器一样,只有一点不同:初始化(init)容器必须在应用容器启动前运行完成。Init 容器的运行顺序:一个初始化(init)容器必须在下一个初始化(init)容器开始前运行完成。 diff --git a/content/zh/docs/reference/glossary/istio.md b/content/zh/docs/reference/glossary/istio.md index 58c4cfffcc..6641e000a9 100644 --- a/content/zh/docs/reference/glossary/istio.md +++ b/content/zh/docs/reference/glossary/istio.md @@ -2,7 +2,7 @@ title: Istio id: istio date: 2018-04-12 -full_link: https://istio.io/docs/concepts/what-is-istio/overview.html +full_link: https://istio.io/docs/concepts/what-is-istio/ short_description: > Istio 是个开放平台(非 Kubernetes 特有),提供了一种统一的方式来集成微服务、管理流量、实施策略和汇总度量数据。 aka: @@ -17,7 +17,7 @@ tags: title: Istio id: istio date: 2018-04-12 -full_link: https://istio.io/docs/concepts/what-is-istio/overview.html +full_link: https://istio.io/docs/concepts/what-is-istio/ short_description: > An open platform (not Kubernetes-specific) that provides a uniform way to integrate microservices, manage traffic flow, enforce policies, and aggregate telemetry data. diff --git a/content/zh/docs/reference/glossary/job.md b/content/zh/docs/reference/glossary/job.md index 8ce421f280..a02d51031b 100644 --- a/content/zh/docs/reference/glossary/job.md +++ b/content/zh/docs/reference/glossary/job.md @@ -2,7 +2,7 @@ title: Job id: job date: 2018-04-12 -full_link: /docs/concepts/workloads/controllers/jobs-run-to-completion +full_link: /zh/docs/concepts/workloads/controllers/job/ short_description: > Job 是需要运行完成的确定性的或批量的任务。 @@ -18,7 +18,7 @@ tags: title: Job id: job date: 2018-04-12 -full_link: /docs/concepts/workloads/controllers/jobs-run-to-completion +full_link: /docs/concepts/workloads/controllers/job/ short_description: > A finite or batch task that runs to completion. diff --git a/content/zh/docs/reference/glossary/kops.md b/content/zh/docs/reference/glossary/kops.md index c1024390e7..d3241b763e 100644 --- a/content/zh/docs/reference/glossary/kops.md +++ b/content/zh/docs/reference/glossary/kops.md @@ -4,7 +4,7 @@ id: kops date: 2018-04-12 full_link: /docs/getting-started-guides/kops/ short_description: > - kops 是一个命令行工具,可以帮助您创建、销毁、升级和维护生产级,高可用性的 Kubernetes 集群。注意:官方仅支持 AWS,GCE 和 VMware vSphere 的支持还处于 alpha* 阶段。 + kops 是一个命令行工具,可以帮助您创建、销毁、升级和维护生产级,高可用性的 Kubernetes 集群。 aka: tags: @@ -19,7 +19,7 @@ id: kops date: 2018-04-12 full_link: /docs/getting-started-guides/kops/ short_description: > - A CLI tool that helps you create, destroy, upgrade and maintain production-grade, highly available, Kubernetes clusters. *NOTE: Officially supports AWS only, with GCE and VMware vSphere in alpha*. + A CLI tool that helps you create, destroy, upgrade and maintain production-grade, highly available, Kubernetes clusters. aka: tags: @@ -29,13 +29,22 @@ tags: --> -kops 是一个命令行工具,可以帮助您创建、销毁、升级和维护生产级,高可用性的 Kubernetes 集群。*注意:官方仅支持 AWS,GCE 和 VMware vSphere 的支持还处于 alpha 阶段*。 +kops 是一个命令行工具,可以帮助您创建、销毁、升级和维护生产级,高可用性的 Kubernetes 集群。 + +注意:官方仅支持 AWS,GCE 和 VMware vSphere 的支持还处于 alpha* 阶段。 + + `kops` 为您的集群提供了: diff --git a/content/zh/docs/reference/glossary/shuffle-sharding.md b/content/zh/docs/reference/glossary/shuffle-sharding.md index ea59cd62b1..1610e41e51 100644 --- a/content/zh/docs/reference/glossary/shuffle-sharding.md +++ b/content/zh/docs/reference/glossary/shuffle-sharding.md @@ -1,20 +1,3 @@ - - --- title: Shuffle Sharding(混排切片) id: shuffle-sharding @@ -28,6 +11,22 @@ tags: - fundamental --- + + + diff --git a/content/zh/docs/reference/glossary/sig.md b/content/zh/docs/reference/glossary/sig.md index ce1cc9f1aa..b8b83c543d 100644 --- a/content/zh/docs/reference/glossary/sig.md +++ b/content/zh/docs/reference/glossary/sig.md @@ -1,20 +1,3 @@ - - --- title: SIG (特别兴趣小组) id: sig @@ -28,6 +11,21 @@ tags: - community --- + + ---- -title: StatefulSet -id: statefulset -date: 2018-04-12 -full_link: /zh/docs/concepts/workloads/controllers/statefulset/ -short_description: > - StatefulSet 用来管理部署和伸缩一组 Pod,包括这些 Pod 的持久存储和持久标识符。 -aka: -tags: -- fundamental -- core-object -- workload -- storage ---- - diff --git a/content/zh/docs/reference/glossary/static-pod.md b/content/zh/docs/reference/glossary/static-pod.md index eb1c7fb7b4..3123cf381a 100644 --- a/content/zh/docs/reference/glossary/static-pod.md +++ b/content/zh/docs/reference/glossary/static-pod.md @@ -1,20 +1,3 @@ - - --- title: Static Pod id: static-pod @@ -28,7 +11,20 @@ tags: - fundamental --- + - --- title: StorageClass id: storageclass @@ -31,6 +13,22 @@ tags: --- + + diff --git a/content/zh/docs/reference/glossary/sysctl.md b/content/zh/docs/reference/glossary/sysctl.md index 982a1bebd7..317b20ff4d 100644 --- a/content/zh/docs/reference/glossary/sysctl.md +++ b/content/zh/docs/reference/glossary/sysctl.md @@ -1,19 +1,3 @@ - - --- title: sysctl id: sysctl @@ -27,7 +11,20 @@ tags: - 工具 --- + - --- title: Taint(污点) id: taint @@ -29,6 +11,23 @@ tags: - core-object - fundamental --- + + + diff --git a/content/zh/docs/reference/glossary/toleration.md b/content/zh/docs/reference/glossary/toleration.md index 5fc976241b..9acb47e892 100644 --- a/content/zh/docs/reference/glossary/toleration.md +++ b/content/zh/docs/reference/glossary/toleration.md @@ -1,21 +1,3 @@ - - --- title: toleration(容忍度) id: toleration @@ -29,6 +11,22 @@ tags: - fundamental --- + + diff --git a/content/zh/docs/reference/glossary/uid.md b/content/zh/docs/reference/glossary/uid.md index 983b61cd40..74faf6d1e7 100644 --- a/content/zh/docs/reference/glossary/uid.md +++ b/content/zh/docs/reference/glossary/uid.md @@ -1,20 +1,3 @@ - - --- title: UID id: uid @@ -28,7 +11,20 @@ tags: - fundamental --- + - --- title: Upstream (disambiguation) id: upstream @@ -27,6 +10,22 @@ aka: tags: - community --- + + + diff --git a/content/zh/docs/reference/glossary/volume-plugin.md b/content/zh/docs/reference/glossary/volume-plugin.md index 11e34573db..c115252819 100644 --- a/content/zh/docs/reference/glossary/volume-plugin.md +++ b/content/zh/docs/reference/glossary/volume-plugin.md @@ -1,21 +1,3 @@ - - --- title: Volume Plugin(卷插件) id: volumeplugin @@ -30,6 +12,22 @@ tags: - storage --- + + diff --git a/content/zh/docs/reference/glossary/volume.md b/content/zh/docs/reference/glossary/volume.md index a3f110201a..1e23b77f0e 100644 --- a/content/zh/docs/reference/glossary/volume.md +++ b/content/zh/docs/reference/glossary/volume.md @@ -1,21 +1,3 @@ - - --- title: Volume(卷) id: volume @@ -30,6 +12,22 @@ tags: - fundamental --- + + - --- title: WG (工作组) id: wg @@ -28,6 +11,20 @@ tags: - community --- + - --- title: Workload(工作负载) id: workloads @@ -28,6 +11,22 @@ tags: - fundamental --- + + + From 72fb7e4d30325e7f82dc0fdfdd77d46c4ed91064 Mon Sep 17 00:00:00 2001 From: jialaijun Date: Fri, 27 Nov 2020 11:33:02 +0800 Subject: [PATCH 35/80] update referenced file in directory of glossary --- content/zh/docs/reference/glossary/addons.md | 2 +- .../glossary/admission-controller.md | 2 +- .../reference/glossary/aggregation-layer.md | 2 +- .../zh/docs/reference/glossary/annotation.md | 2 +- .../docs/reference/glossary/app-container.md | 2 +- .../glossary/application-architect.md | 2 +- .../glossary/application-developer.md | 2 +- .../docs/reference/glossary/applications.md | 2 +- .../zh/docs/reference/glossary/approver.md | 2 +- .../zh/docs/reference/glossary/certificate.md | 2 +- content/zh/docs/reference/glossary/cgroup.md | 2 +- content/zh/docs/reference/glossary/cla.md | 2 +- .../glossary/cloud-controller-manager.md | 2 +- .../docs/reference/glossary/cloud-provider.md | 2 +- .../reference/glossary/cluster-architect.md | 2 +- .../glossary/cluster-infrastructure.md | 2 +- .../reference/glossary/cluster-operations.md | 2 +- .../reference/glossary/cluster-operator.md | 2 +- content/zh/docs/reference/glossary/cluster.md | 2 +- content/zh/docs/reference/glossary/cncf.md | 2 +- content/zh/docs/reference/glossary/cni.md | 2 +- .../reference/glossary/code-contributor.md | 2 +- .../glossary/container-env-variables.md | 2 +- .../glossary/container-lifecycle-hooks.md | 2 +- .../reference/glossary/container-runtime.md | 2 +- .../zh/docs/reference/glossary/container.md | 2 +- .../zh/docs/reference/glossary/contributor.md | 2 +- .../docs/reference/glossary/control-plane.md | 2 +- .../zh/docs/reference/glossary/controller.md | 2 +- content/zh/docs/reference/glossary/cri.md | 2 +- content/zh/docs/reference/glossary/cronjob.md | 2 +- content/zh/docs/reference/glossary/csi.md | 2 +- .../zh/docs/reference/glossary/data-plane.md | 2 +- .../zh/docs/reference/glossary/developer.md | 2 +- .../docs/reference/glossary/device-plugin.md | 2 +- .../zh/docs/reference/glossary/disruption.md | 2 +- .../zh/docs/reference/glossary/downstream.md | 2 +- .../glossary/dynamic-volume-provisioning.md | 2 +- .../docs/reference/glossary/endpoint-slice.md | 2 +- .../zh/docs/reference/glossary/endpoint.md | 2 +- .../reference/glossary/ephemeral-container.md | 2 +- .../zh/docs/reference/glossary/extensions.md | 2 +- .../glossary/horizontal-pod-autoscaler.md | 2 +- .../docs/reference/glossary/host-aliases.md | 2 +- content/zh/docs/reference/glossary/proxy.md | 2 +- .../zh/docs/reference/glossary/qos-class.md | 2 +- content/zh/docs/reference/glossary/rbac.md | 2 +- .../glossary/replication-controller.md | 2 +- .../docs/reference/glossary/resource-quota.md | 2 +- .../zh/docs/reference/glossary/reviewer.md | 2 +- content/zh/docs/reference/glossary/secret.md | 32 ++++++++-------- .../reference/glossary/security-context.md | 26 ++++++------- .../zh/docs/reference/glossary/selector.md | 26 ++++++------- .../reference/glossary/service-account.md | 30 +++++++-------- .../docs/reference/glossary/service-broker.md | 30 +++++++-------- .../reference/glossary/service-catalog.md | 32 ++++++++-------- content/zh/docs/reference/glossary/service.md | 38 +++++++++---------- .../reference/glossary/shuffle-sharding.md | 2 +- content/zh/docs/reference/glossary/sig.md | 2 +- .../zh/docs/reference/glossary/statefulset.md | 2 +- .../docs/reference/glossary/storage-class.md | 2 +- content/zh/docs/reference/glossary/taint.md | 2 +- .../zh/docs/reference/glossary/toleration.md | 2 +- .../docs/reference/glossary/volume-plugin.md | 2 +- content/zh/docs/reference/glossary/volume.md | 2 +- content/zh/docs/reference/glossary/wg.md | 2 +- .../zh/docs/reference/glossary/workload.md | 2 +- 67 files changed, 161 insertions(+), 173 deletions(-) diff --git a/content/zh/docs/reference/glossary/addons.md b/content/zh/docs/reference/glossary/addons.md index 2d252d93cd..686a79a92a 100644 --- a/content/zh/docs/reference/glossary/addons.md +++ b/content/zh/docs/reference/glossary/addons.md @@ -1,5 +1,5 @@ --- -title: Add-ons(附加组件) +title: 附加组件(Add-ons) id: addons date: 2019-12-15 full_link: /zh/docs/concepts/cluster-administration/addons/ diff --git a/content/zh/docs/reference/glossary/admission-controller.md b/content/zh/docs/reference/glossary/admission-controller.md index e3c66df271..22567c4861 100644 --- a/content/zh/docs/reference/glossary/admission-controller.md +++ b/content/zh/docs/reference/glossary/admission-controller.md @@ -1,5 +1,5 @@ --- -title: Admission Controller(准入控制器) +title: 准入控制器(Admission Controller) id: admission-controller date: 2019-06-28 full_link: /zh/docs/reference/access-authn-authz/admission-controllers/ diff --git a/content/zh/docs/reference/glossary/aggregation-layer.md b/content/zh/docs/reference/glossary/aggregation-layer.md index 0324e75560..9ad14962cf 100644 --- a/content/zh/docs/reference/glossary/aggregation-layer.md +++ b/content/zh/docs/reference/glossary/aggregation-layer.md @@ -1,5 +1,5 @@ --- -title: Aggregation Layer(聚合层) +title: 聚合层(Aggregation Layer) id: aggregation-layer date: 2018-10-08 full_link: /zh/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/ diff --git a/content/zh/docs/reference/glossary/annotation.md b/content/zh/docs/reference/glossary/annotation.md index 8d6308391b..93b75980cc 100644 --- a/content/zh/docs/reference/glossary/annotation.md +++ b/content/zh/docs/reference/glossary/annotation.md @@ -1,5 +1,5 @@ --- -title: Annotation(注解) +title: 注解(Annotation) id: annotation date: 2018-04-12 full_link: /zh/docs/concepts/overview/working-with-objects/annotations/ diff --git a/content/zh/docs/reference/glossary/app-container.md b/content/zh/docs/reference/glossary/app-container.md index 100b93f297..3c903e7bc6 100644 --- a/content/zh/docs/reference/glossary/app-container.md +++ b/content/zh/docs/reference/glossary/app-container.md @@ -1,5 +1,5 @@ --- -title: App Container(应用程序容器) +title: 应用程序容器(App Container) id: app-container date: 2019-02-12 full_link: diff --git a/content/zh/docs/reference/glossary/application-architect.md b/content/zh/docs/reference/glossary/application-architect.md index 5619654d98..538054db18 100644 --- a/content/zh/docs/reference/glossary/application-architect.md +++ b/content/zh/docs/reference/glossary/application-architect.md @@ -1,5 +1,5 @@ --- -title: Application Architect(应用架构师) +title: 应用架构师(Application Architect) id: application-architect date: 2018-04-12 full_link: diff --git a/content/zh/docs/reference/glossary/application-developer.md b/content/zh/docs/reference/glossary/application-developer.md index 53d6bc35b4..b379b5092a 100644 --- a/content/zh/docs/reference/glossary/application-developer.md +++ b/content/zh/docs/reference/glossary/application-developer.md @@ -1,5 +1,5 @@ --- -title: Application Developer(应用开发者) +title: 应用开发者(Application Developer) id: application-developer date: 2018-04-12 full_link: diff --git a/content/zh/docs/reference/glossary/applications.md b/content/zh/docs/reference/glossary/applications.md index 032b4c2204..c1420495fe 100644 --- a/content/zh/docs/reference/glossary/applications.md +++ b/content/zh/docs/reference/glossary/applications.md @@ -1,5 +1,5 @@ --- -title: Applications(应用) +title: 应用(Applications) id: applications date: 2019-05-12 full_link: diff --git a/content/zh/docs/reference/glossary/approver.md b/content/zh/docs/reference/glossary/approver.md index 09752a83e4..a59e38c398 100644 --- a/content/zh/docs/reference/glossary/approver.md +++ b/content/zh/docs/reference/glossary/approver.md @@ -1,5 +1,5 @@ --- -title: Approver(批准者) +title: 批准者(Approver) id: approver date: 2018-04-12 full_link: diff --git a/content/zh/docs/reference/glossary/certificate.md b/content/zh/docs/reference/glossary/certificate.md index f2080a26cb..05b50e37dc 100644 --- a/content/zh/docs/reference/glossary/certificate.md +++ b/content/zh/docs/reference/glossary/certificate.md @@ -1,5 +1,5 @@ --- -title: Certificate(证书) +title: 证书(Certificate) id: certificate date: 2018-04-12 full_link: /zh/docs/tasks/tls/managing-tls-in-a-cluster/ diff --git a/content/zh/docs/reference/glossary/cgroup.md b/content/zh/docs/reference/glossary/cgroup.md index 10d274a5e5..b1af5e9d9d 100644 --- a/content/zh/docs/reference/glossary/cgroup.md +++ b/content/zh/docs/reference/glossary/cgroup.md @@ -1,5 +1,5 @@ --- -title: cgroup (控制组) +title: 控制组(cgroup) id: cgroup date: 2019-06-25 full_link: diff --git a/content/zh/docs/reference/glossary/cla.md b/content/zh/docs/reference/glossary/cla.md index 07670c53bd..8230fd1715 100644 --- a/content/zh/docs/reference/glossary/cla.md +++ b/content/zh/docs/reference/glossary/cla.md @@ -1,5 +1,5 @@ --- -title: CLA (贡献者许可协议) +title: 贡献者许可协议(CLA) id: cla date: 2018-04-12 full_link: https://github.com/kubernetes/community/blob/master/CLA.md diff --git a/content/zh/docs/reference/glossary/cloud-controller-manager.md b/content/zh/docs/reference/glossary/cloud-controller-manager.md index 71fbf83d95..2799a7f448 100644 --- a/content/zh/docs/reference/glossary/cloud-controller-manager.md +++ b/content/zh/docs/reference/glossary/cloud-controller-manager.md @@ -1,5 +1,5 @@ --- -title: Cloud Controller Manager(云控制器管理器) +title: 云控制器管理器(Cloud Controller Manager) id: cloud-controller-manager date: 2018-04-12 full_link: /zh/docs/tasks/administer-cluster/running-cloud-controller/ diff --git a/content/zh/docs/reference/glossary/cloud-provider.md b/content/zh/docs/reference/glossary/cloud-provider.md index 7a33b6159d..4051cf441f 100755 --- a/content/zh/docs/reference/glossary/cloud-provider.md +++ b/content/zh/docs/reference/glossary/cloud-provider.md @@ -1,5 +1,5 @@ --- -title: Cloud Provider(云供应商) +title: 云供应商(Cloud Provider) id: cloud-provider date: 2018-04-12 short_description: > diff --git a/content/zh/docs/reference/glossary/cluster-architect.md b/content/zh/docs/reference/glossary/cluster-architect.md index c45bcfbe34..8636eede42 100644 --- a/content/zh/docs/reference/glossary/cluster-architect.md +++ b/content/zh/docs/reference/glossary/cluster-architect.md @@ -1,5 +1,5 @@ --- -title: 集群架构师 +title: 集群架构师(Cluster Architect) id: cluster-architect date: 2018-04-12 full_link: diff --git a/content/zh/docs/reference/glossary/cluster-infrastructure.md b/content/zh/docs/reference/glossary/cluster-infrastructure.md index e5dc5347d4..ab1954e591 100644 --- a/content/zh/docs/reference/glossary/cluster-infrastructure.md +++ b/content/zh/docs/reference/glossary/cluster-infrastructure.md @@ -1,5 +1,5 @@ --- -title: Cluster Infrastructure(集群基础设施) +title: 集群基础设施(Cluster Infrastructure) id: cluster-infrastructure date: 2019-05-12 full_link: diff --git a/content/zh/docs/reference/glossary/cluster-operations.md b/content/zh/docs/reference/glossary/cluster-operations.md index 63eb933308..1c0cf5d981 100644 --- a/content/zh/docs/reference/glossary/cluster-operations.md +++ b/content/zh/docs/reference/glossary/cluster-operations.md @@ -1,5 +1,5 @@ --- -title: Cluster Operations(集群操作) +title: 集群操作(Cluster Operations) id: cluster-operations date: 2019-05-12 full_link: diff --git a/content/zh/docs/reference/glossary/cluster-operator.md b/content/zh/docs/reference/glossary/cluster-operator.md index 944c7de3fb..4be92284b0 100644 --- a/content/zh/docs/reference/glossary/cluster-operator.md +++ b/content/zh/docs/reference/glossary/cluster-operator.md @@ -1,5 +1,5 @@ --- -title: Cluster Operator(集群操作者) +title: 集群操作者(Cluster Operator) id: cluster-operator date: 2018-04-12 full_link: diff --git a/content/zh/docs/reference/glossary/cluster.md b/content/zh/docs/reference/glossary/cluster.md index 55832b16ba..ea850590d6 100644 --- a/content/zh/docs/reference/glossary/cluster.md +++ b/content/zh/docs/reference/glossary/cluster.md @@ -1,5 +1,5 @@ --- -title: Cluster(集群) +title: 集群(Cluster) id: cluster date: 2019-06-15 full_link: diff --git a/content/zh/docs/reference/glossary/cncf.md b/content/zh/docs/reference/glossary/cncf.md index 376431c634..7910885461 100644 --- a/content/zh/docs/reference/glossary/cncf.md +++ b/content/zh/docs/reference/glossary/cncf.md @@ -1,5 +1,5 @@ --- -title: CNCF(云原生计算基金会) +title: 云原生计算基金会(CNCF) id: cncf date: 2019-05-26 full_link: https://cncf.io/ diff --git a/content/zh/docs/reference/glossary/cni.md b/content/zh/docs/reference/glossary/cni.md index 0b3bdf6a1d..6d64e8fe7e 100644 --- a/content/zh/docs/reference/glossary/cni.md +++ b/content/zh/docs/reference/glossary/cni.md @@ -1,5 +1,5 @@ --- -title: CNI (容器网络接口) +title: 容器网络接口(CNI) id: cni date: 2018-05-25 full_link: /zh/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/#cni diff --git a/content/zh/docs/reference/glossary/code-contributor.md b/content/zh/docs/reference/glossary/code-contributor.md index 6646d49b8d..d42e7d8ae1 100644 --- a/content/zh/docs/reference/glossary/code-contributor.md +++ b/content/zh/docs/reference/glossary/code-contributor.md @@ -1,5 +1,5 @@ --- -title: Code Contributor(代码贡献者) +title: 代码贡献者(Code Contributor) id: code-contributor date: 2018-04-12 full_link: /docs/community/devel/ diff --git a/content/zh/docs/reference/glossary/container-env-variables.md b/content/zh/docs/reference/glossary/container-env-variables.md index 3274444c20..9cb49eb7af 100644 --- a/content/zh/docs/reference/glossary/container-env-variables.md +++ b/content/zh/docs/reference/glossary/container-env-variables.md @@ -1,5 +1,5 @@ --- -title: Container Environment Variables(容器环境变量) +title: 容器环境变量(Container Environment Variables) id: container-env-variables date: 2018-04-12 full_link: /zh/docs/concepts/containers/container-environment/ diff --git a/content/zh/docs/reference/glossary/container-lifecycle-hooks.md b/content/zh/docs/reference/glossary/container-lifecycle-hooks.md index d0996a82f2..6a43d283c9 100644 --- a/content/zh/docs/reference/glossary/container-lifecycle-hooks.md +++ b/content/zh/docs/reference/glossary/container-lifecycle-hooks.md @@ -1,5 +1,5 @@ --- -title: Container Lifecycle Hooks(容器生命周期钩子) +title: 容器生命周期钩子(Container Lifecycle Hooks) id: container-lifecycle-hooks date: 2018-10-08 full_link: /zh/docs/concepts/containers/container-lifecycle-hooks/ diff --git a/content/zh/docs/reference/glossary/container-runtime.md b/content/zh/docs/reference/glossary/container-runtime.md index ccc2d4540a..badb4bcfcd 100644 --- a/content/zh/docs/reference/glossary/container-runtime.md +++ b/content/zh/docs/reference/glossary/container-runtime.md @@ -1,5 +1,5 @@ --- -title: Container Runtime(容器运行时) +title: 容器运行时(Container Runtime) id: container-runtime date: 2019-06-05 full_link: /zh/docs/setup/production-environment/container-runtimes diff --git a/content/zh/docs/reference/glossary/container.md b/content/zh/docs/reference/glossary/container.md index 6c552a42fa..ac7526eeec 100644 --- a/content/zh/docs/reference/glossary/container.md +++ b/content/zh/docs/reference/glossary/container.md @@ -1,5 +1,5 @@ --- -title: Container(容器) +title: 容器(Container) id: container date: 2018-04-12 full_link: /zh/docs/concepts/overview/what-is-kubernetes/#why-containers diff --git a/content/zh/docs/reference/glossary/contributor.md b/content/zh/docs/reference/glossary/contributor.md index 32f21a5e54..de79a4c984 100644 --- a/content/zh/docs/reference/glossary/contributor.md +++ b/content/zh/docs/reference/glossary/contributor.md @@ -1,5 +1,5 @@ --- -title: 贡献者 +title: 贡献者(Contributor) id: contributor date: 2018-04-12 full_link: diff --git a/content/zh/docs/reference/glossary/control-plane.md b/content/zh/docs/reference/glossary/control-plane.md index 11cce769ba..d0d57cd87f 100644 --- a/content/zh/docs/reference/glossary/control-plane.md +++ b/content/zh/docs/reference/glossary/control-plane.md @@ -1,5 +1,5 @@ --- -title: Control Plane(控制平面) +title: 控制平面(Control Plane) id: control-plane date: 2019-05-12 full_link: diff --git a/content/zh/docs/reference/glossary/controller.md b/content/zh/docs/reference/glossary/controller.md index 9e86088f12..9997165c1b 100644 --- a/content/zh/docs/reference/glossary/controller.md +++ b/content/zh/docs/reference/glossary/controller.md @@ -1,5 +1,5 @@ --- -title: Controller(控制器) +title: 控制器(Controller) id: controller date: 2018-04-12 full_link: /zh/docs/concepts/architecture/controller/ diff --git a/content/zh/docs/reference/glossary/cri.md b/content/zh/docs/reference/glossary/cri.md index 9ca5436d87..8c8da979e9 100644 --- a/content/zh/docs/reference/glossary/cri.md +++ b/content/zh/docs/reference/glossary/cri.md @@ -1,5 +1,5 @@ --- -title: CRI(容器运行时接口) +title: 容器运行时接口(CRI) id: cri date: 2019-03-07 full_link: /zh/docs/concepts/overview/components/#container-runtime diff --git a/content/zh/docs/reference/glossary/cronjob.md b/content/zh/docs/reference/glossary/cronjob.md index 98d6766d4d..fe16d58762 100644 --- a/content/zh/docs/reference/glossary/cronjob.md +++ b/content/zh/docs/reference/glossary/cronjob.md @@ -1,5 +1,5 @@ --- -title: CronJob(周期调度任务) +title: 周期调度任务(CronJob) id: cronjob date: 2018-04-12 full_link: /zh/docs/concepts/workloads/controllers/cron-jobs/ diff --git a/content/zh/docs/reference/glossary/csi.md b/content/zh/docs/reference/glossary/csi.md index 46e2efef32..bf365a5c09 100644 --- a/content/zh/docs/reference/glossary/csi.md +++ b/content/zh/docs/reference/glossary/csi.md @@ -1,5 +1,5 @@ --- -title: Container Storage Interface(CSI)(容器存储接口) +title: 容器存储接口(Container Storage Interface)(CSI) id: csi date: 2018-06-25 full_link: /zh/docs/concepts/storage/volumes/#csi diff --git a/content/zh/docs/reference/glossary/data-plane.md b/content/zh/docs/reference/glossary/data-plane.md index b32b7a68fc..7c476d4560 100644 --- a/content/zh/docs/reference/glossary/data-plane.md +++ b/content/zh/docs/reference/glossary/data-plane.md @@ -1,5 +1,5 @@ --- -title: Data Plane(数据平面) +title: 数据平面(Data Plane) id: data-plane date: 2019-05-12 full_link: diff --git a/content/zh/docs/reference/glossary/developer.md b/content/zh/docs/reference/glossary/developer.md index 73f68f79fe..2d6dbf7eba 100644 --- a/content/zh/docs/reference/glossary/developer.md +++ b/content/zh/docs/reference/glossary/developer.md @@ -1,5 +1,5 @@ --- -title: Developer(开发者) +title: 开发者(Developer) id: developer date: 2018-04-12 full_link: diff --git a/content/zh/docs/reference/glossary/device-plugin.md b/content/zh/docs/reference/glossary/device-plugin.md index 5f9c2896bb..287a302ae4 100644 --- a/content/zh/docs/reference/glossary/device-plugin.md +++ b/content/zh/docs/reference/glossary/device-plugin.md @@ -1,5 +1,5 @@ --- -title: Device Plugin(设备插件) +title: 设备插件(Device Plugin) id: device-plugin date: 2019-02-02 full_link: /zh/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/ diff --git a/content/zh/docs/reference/glossary/disruption.md b/content/zh/docs/reference/glossary/disruption.md index 4cd01856fe..9158a8a8cf 100644 --- a/content/zh/docs/reference/glossary/disruption.md +++ b/content/zh/docs/reference/glossary/disruption.md @@ -1,5 +1,5 @@ --- -title: Disruption(干扰) +title: 干扰(Disruption) id: disruption date: 2019-09-10 full_link: /zh/docs/concepts/workloads/pods/disruptions/ diff --git a/content/zh/docs/reference/glossary/downstream.md b/content/zh/docs/reference/glossary/downstream.md index 01cf99b743..cba0229cb9 100644 --- a/content/zh/docs/reference/glossary/downstream.md +++ b/content/zh/docs/reference/glossary/downstream.md @@ -1,5 +1,5 @@ --- -title: Downstream(下游)(消除歧义) +title: 下游(Downstream) id: downstream date: 2018-04-12 full_link: diff --git a/content/zh/docs/reference/glossary/dynamic-volume-provisioning.md b/content/zh/docs/reference/glossary/dynamic-volume-provisioning.md index dd86e126cd..5fd134e333 100644 --- a/content/zh/docs/reference/glossary/dynamic-volume-provisioning.md +++ b/content/zh/docs/reference/glossary/dynamic-volume-provisioning.md @@ -1,5 +1,5 @@ --- -title: Dynamic Volume Provisioning(动态卷供应) +title: 动态卷供应(Dynamic Volume Provisioning) id: dynamicvolumeprovisioning date: 2018-04-12 full_link: /zh/docs/concepts/storage/dynamic-provisioning/ diff --git a/content/zh/docs/reference/glossary/endpoint-slice.md b/content/zh/docs/reference/glossary/endpoint-slice.md index 52e9231e14..bfb99fc643 100644 --- a/content/zh/docs/reference/glossary/endpoint-slice.md +++ b/content/zh/docs/reference/glossary/endpoint-slice.md @@ -1,5 +1,5 @@ --- -title: Endpoint Slice(端点切片) +title: 端点切片(Endpoint Slice) id: endpoint-slice date: 2018-04-12 full_link: /zh/docs/concepts/services-networking/endpoint-slices/ diff --git a/content/zh/docs/reference/glossary/endpoint.md b/content/zh/docs/reference/glossary/endpoint.md index 945126716e..642d7c46d2 100644 --- a/content/zh/docs/reference/glossary/endpoint.md +++ b/content/zh/docs/reference/glossary/endpoint.md @@ -1,5 +1,5 @@ --- -title: Endpoints(端点) +title: 端点(Endpoints) id: endpoints date: 2020-04-23 full_link: diff --git a/content/zh/docs/reference/glossary/ephemeral-container.md b/content/zh/docs/reference/glossary/ephemeral-container.md index 5e3b98d11f..215aaee4c5 100644 --- a/content/zh/docs/reference/glossary/ephemeral-container.md +++ b/content/zh/docs/reference/glossary/ephemeral-container.md @@ -1,5 +1,5 @@ --- -title: Ephemeral Container(临时容器) +title: 临时容器(Ephemeral Container) id: ephemeral-container date: 2019-08-26 full_link: /zh/docs/concepts/workloads/pods/ephemeral-containers/ diff --git a/content/zh/docs/reference/glossary/extensions.md b/content/zh/docs/reference/glossary/extensions.md index 880a59fb53..234ebb2f09 100644 --- a/content/zh/docs/reference/glossary/extensions.md +++ b/content/zh/docs/reference/glossary/extensions.md @@ -1,5 +1,5 @@ --- -title: Extensions(扩展组件) +title: 扩展组件(Extensions) id: Extensions date: 2019-02-01 full_link: /zh/docs/concepts/extend-kubernetes/extend-cluster/#extensions diff --git a/content/zh/docs/reference/glossary/horizontal-pod-autoscaler.md b/content/zh/docs/reference/glossary/horizontal-pod-autoscaler.md index 2abdd685d3..c1fb3dfd13 100644 --- a/content/zh/docs/reference/glossary/horizontal-pod-autoscaler.md +++ b/content/zh/docs/reference/glossary/horizontal-pod-autoscaler.md @@ -1,5 +1,5 @@ --- -title: Horizontal Pod Autoscaler(Pod 水平自动扩缩器) +title: Pod水平自动扩缩器(Horizontal Pod Autoscaler) id: horizontal-pod-autoscaler date: 2018-04-12 full_link: /zh/docs/tasks/run-application/horizontal-pod-autoscale/ diff --git a/content/zh/docs/reference/glossary/host-aliases.md b/content/zh/docs/reference/glossary/host-aliases.md index 6581acf209..84de317fb5 100644 --- a/content/zh/docs/reference/glossary/host-aliases.md +++ b/content/zh/docs/reference/glossary/host-aliases.md @@ -1,5 +1,5 @@ --- -title: HostAliases +title: 主机别名(HostAliases) id: HostAliases date: 2019-01-31 full_link: /docs/reference/generated/kubernetes-api/{{< param "version" >}}/#hostalias-v1-core diff --git a/content/zh/docs/reference/glossary/proxy.md b/content/zh/docs/reference/glossary/proxy.md index e8ab669393..889037e3ad 100644 --- a/content/zh/docs/reference/glossary/proxy.md +++ b/content/zh/docs/reference/glossary/proxy.md @@ -1,5 +1,5 @@ --- -title: 代理 +title: 代理(Proxy) id: proxy date: 2019-09-10 short_description: > diff --git a/content/zh/docs/reference/glossary/qos-class.md b/content/zh/docs/reference/glossary/qos-class.md index 82b18bfe38..b7eac1defe 100644 --- a/content/zh/docs/reference/glossary/qos-class.md +++ b/content/zh/docs/reference/glossary/qos-class.md @@ -1,5 +1,5 @@ --- -title: QoS 类 +title: QoS 类(QoS Class) id: qos-class date: 2019-04-15 full_link: diff --git a/content/zh/docs/reference/glossary/rbac.md b/content/zh/docs/reference/glossary/rbac.md index e0efa640e7..d0a8eaf88a 100644 --- a/content/zh/docs/reference/glossary/rbac.md +++ b/content/zh/docs/reference/glossary/rbac.md @@ -1,5 +1,5 @@ --- -title: RBAC(基于角色的访问控制) +title: 基于角色的访问控制(RBAC) id: rbac date: 2018-04-12 full_link: /zh/docs/reference/access-authn-authz/rbac/ diff --git a/content/zh/docs/reference/glossary/replication-controller.md b/content/zh/docs/reference/glossary/replication-controller.md index 8fd910e799..daee67c2a1 100644 --- a/content/zh/docs/reference/glossary/replication-controller.md +++ b/content/zh/docs/reference/glossary/replication-controller.md @@ -1,5 +1,5 @@ --- -title: Replication Controller +title: 副本控制器(Replication Controller) id: replication-controller date: 2018-04-12 full_link: diff --git a/content/zh/docs/reference/glossary/resource-quota.md b/content/zh/docs/reference/glossary/resource-quota.md index 658a1633ce..4e35800abe 100644 --- a/content/zh/docs/reference/glossary/resource-quota.md +++ b/content/zh/docs/reference/glossary/resource-quota.md @@ -1,5 +1,5 @@ --- -title: 资源配额 +title: 资源配额(Resource Quotas) id: resource-quota date: 2018-04-12 full_link: /zh/docs/concepts/policy/resource-quotas/ diff --git a/content/zh/docs/reference/glossary/reviewer.md b/content/zh/docs/reference/glossary/reviewer.md index a181122927..fb1ffcdf83 100644 --- a/content/zh/docs/reference/glossary/reviewer.md +++ b/content/zh/docs/reference/glossary/reviewer.md @@ -1,5 +1,5 @@ --- -title: 评审者 +title: 评审者(Reviewer) id: reviewer date: 2018-04-12 full_link: diff --git a/content/zh/docs/reference/glossary/secret.md b/content/zh/docs/reference/glossary/secret.md index 8dae7030f6..a13ce75c0c 100644 --- a/content/zh/docs/reference/glossary/secret.md +++ b/content/zh/docs/reference/glossary/secret.md @@ -1,20 +1,3 @@ - - --- title: Secret id: secret @@ -29,6 +12,21 @@ tags: - security --- + ---- -title: 安全上下文(Security Context) -id: security-context -date: 2018-04-12 -full_link: /zh/docs/tasks/configure-pod-container/security-context/ -short_description: > - securityContext 字段定义 Pod 或容器的特权和访问控制设置,包括运行时 UID 和 GID。 - -aka: -tags: -- security ---- - ---- -title: Selector -id: selector -date: 2018-04-12 -full_link: /zh/docs/concepts/overview/working-with-objects/labels/ -short_description: > - Selector(选择器)允许用户通过标签对一组资源对象进行筛选过滤。 - -aka: -tags: -- fundamental ---- - diff --git a/content/zh/docs/reference/glossary/service-account.md b/content/zh/docs/reference/glossary/service-account.md index b3cd5c6d8e..a98b60ba89 100644 --- a/content/zh/docs/reference/glossary/service-account.md +++ b/content/zh/docs/reference/glossary/service-account.md @@ -1,5 +1,18 @@ - ---- -title: ServiceAccount -id: service-account -date: 2018-04-12 -full_link: /zh/docs/tasks/configure-pod-container/configure-service-account/ -short_description: > - 为在 Pod 中运行的进程提供标识。 - -aka: -tags: -- fundamental -- core-object ---- - ---- -title: Service Broker(服务代理) -id: service-broker -date: 2018-04-12 -full_link: -short_description: > - 由第三方提供并维护的一组托管服务的访问端点。 - -aka: -tags: -- extension ---- - - - diff --git a/content/zh/docs/reference/glossary/service-catalog.md b/content/zh/docs/reference/glossary/service-catalog.md index 4879a35a60..c2e5b23b91 100644 --- a/content/zh/docs/reference/glossary/service-catalog.md +++ b/content/zh/docs/reference/glossary/service-catalog.md @@ -1,20 +1,3 @@ - - --- title: Service Catalog id: service-catalog @@ -28,6 +11,21 @@ tags: - extension --- + + - - ---- -title: Service +title: 服务(Service) id: service date: 2018-04-12 full_link: /zh/docs/concepts/services-networking/service/ @@ -31,6 +12,23 @@ tags: - core-object --- + + + diff --git a/content/zh/docs/reference/glossary/shuffle-sharding.md b/content/zh/docs/reference/glossary/shuffle-sharding.md index 1610e41e51..fd3aeb7c65 100644 --- a/content/zh/docs/reference/glossary/shuffle-sharding.md +++ b/content/zh/docs/reference/glossary/shuffle-sharding.md @@ -1,5 +1,5 @@ --- -title: Shuffle Sharding(混排切片) +title: 混排切片(Shuffle Sharding) id: shuffle-sharding date: 2020-03-04 full_link: diff --git a/content/zh/docs/reference/glossary/sig.md b/content/zh/docs/reference/glossary/sig.md index b8b83c543d..3c2ff7b191 100644 --- a/content/zh/docs/reference/glossary/sig.md +++ b/content/zh/docs/reference/glossary/sig.md @@ -1,5 +1,5 @@ --- -title: SIG (特别兴趣小组) +title: 特别兴趣小组(SIG) id: sig date: 2018-04-12 full_link: https://github.com/kubernetes/community/blob/master/sig-list.md#master-sig-list diff --git a/content/zh/docs/reference/glossary/statefulset.md b/content/zh/docs/reference/glossary/statefulset.md index 2f9af4cc27..c84bf4e383 100644 --- a/content/zh/docs/reference/glossary/statefulset.md +++ b/content/zh/docs/reference/glossary/statefulset.md @@ -1,5 +1,5 @@ --- -title: StatefulSet +title: 状态集(StatefulSet) id: statefulset date: 2018-04-12 full_link: /zh/docs/concepts/workloads/controllers/statefulset/ diff --git a/content/zh/docs/reference/glossary/storage-class.md b/content/zh/docs/reference/glossary/storage-class.md index b948ab1068..d5b7d7bd7c 100644 --- a/content/zh/docs/reference/glossary/storage-class.md +++ b/content/zh/docs/reference/glossary/storage-class.md @@ -1,5 +1,5 @@ --- -title: StorageClass +title: 存储类别(StorageClass) id: storageclass date: 2018-04-12 full_link: /zh/docs/concepts/storage/storage-classes/ diff --git a/content/zh/docs/reference/glossary/taint.md b/content/zh/docs/reference/glossary/taint.md index 8d4c60c098..5a01076312 100644 --- a/content/zh/docs/reference/glossary/taint.md +++ b/content/zh/docs/reference/glossary/taint.md @@ -1,5 +1,5 @@ --- -title: Taint(污点) +title: 污点(Taint) id: taint date: 2019-01-11 full_link: /docs/concepts/configuration/taint-and-toleration/ diff --git a/content/zh/docs/reference/glossary/toleration.md b/content/zh/docs/reference/glossary/toleration.md index 9acb47e892..4b622bae08 100644 --- a/content/zh/docs/reference/glossary/toleration.md +++ b/content/zh/docs/reference/glossary/toleration.md @@ -1,5 +1,5 @@ --- -title: toleration(容忍度) +title: 容忍度(toleration) id: toleration date: 2019-01-11 full_link: /zh/docs/concepts/scheduling-eviction/taint-and-toleration/ diff --git a/content/zh/docs/reference/glossary/volume-plugin.md b/content/zh/docs/reference/glossary/volume-plugin.md index c115252819..aa310caaaf 100644 --- a/content/zh/docs/reference/glossary/volume-plugin.md +++ b/content/zh/docs/reference/glossary/volume-plugin.md @@ -1,5 +1,5 @@ --- -title: Volume Plugin(卷插件) +title: 卷插件(Volume Plugin) id: volumeplugin date: 2018-04-12 full_link: diff --git a/content/zh/docs/reference/glossary/volume.md b/content/zh/docs/reference/glossary/volume.md index 1e23b77f0e..3889422df9 100644 --- a/content/zh/docs/reference/glossary/volume.md +++ b/content/zh/docs/reference/glossary/volume.md @@ -1,5 +1,5 @@ --- -title: Volume(卷) +title: 卷(Volume) id: volume date: 2018-04-12 full_link: /zh/docs/concepts/storage/volumes/ diff --git a/content/zh/docs/reference/glossary/wg.md b/content/zh/docs/reference/glossary/wg.md index 4ae51ee483..168729c57a 100644 --- a/content/zh/docs/reference/glossary/wg.md +++ b/content/zh/docs/reference/glossary/wg.md @@ -1,5 +1,5 @@ --- -title: WG (工作组) +title: 工作组(WG) id: wg date: 2018-04-12 full_link: https://github.com/kubernetes/community/blob/master/sig-list.md#master-working-group-list diff --git a/content/zh/docs/reference/glossary/workload.md b/content/zh/docs/reference/glossary/workload.md index 91629bff86..fff6d819b9 100644 --- a/content/zh/docs/reference/glossary/workload.md +++ b/content/zh/docs/reference/glossary/workload.md @@ -1,5 +1,5 @@ --- -title: Workload(工作负载) +title: 工作负载(Workload) id: workloads date: 2019-02-13 full_link: /zh/docs/concepts/workloads/ From cbffc023e91d9024656f19ff700c436bdc7448b8 Mon Sep 17 00:00:00 2001 From: Saintmalik Date: Fri, 27 Nov 2020 04:27:04 +0000 Subject: [PATCH 36/80] Fix broken url in docs --- content/en/docs/setup/best-practices/multiple-zones.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/setup/best-practices/multiple-zones.md b/content/en/docs/setup/best-practices/multiple-zones.md index 501e954642..f24c3bdcca 100644 --- a/content/en/docs/setup/best-practices/multiple-zones.md +++ b/content/en/docs/setup/best-practices/multiple-zones.md @@ -111,7 +111,7 @@ see [Allowed topologies](/docs/concepts/storage/storage-classes/#allowed-topolog ## Networking By itself, Kubernetes does not include zone-aware networking. You can use a -[network plugin](docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/) +[network plugin](/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/) to configure cluster networking, and that network solution might have zone-specific elements. For example, if your cloud provider supports Services with `type=LoadBalancer`, the load balancer might only send traffic to Pods running in the From a121748b84aa4dd682b2c6cd6a5443ae745c5a52 Mon Sep 17 00:00:00 2001 From: guzj11 <67083623+guzj11@users.noreply.github.com> Date: Fri, 27 Nov 2020 16:37:08 +0800 Subject: [PATCH 37/80] Sync tasks/configure-pod-container/configure-liveness-readiness-startup-probes.md --- .../configure-liveness-readiness-startup-probes.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/zh/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes.md b/content/zh/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes.md index a2aa986464..9c3e1cf6fd 100644 --- a/content/zh/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes.md +++ b/content/zh/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes.md @@ -497,7 +497,7 @@ seconds. Minimum value is 1. to 1 second. Minimum value is 1. * `successThreshold`: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for -liveness. Minimum value is 1. +liveness and startup Probes. Minimum value is 1. * `failureThreshold`: When a probe fails, Kubernetes will try `failureThreshold` times before giving up. Giving up in case of liveness probe means restarting the container. In case of readiness probe the Pod will be marked Unready. Defaults to 3. Minimum value is 1. @@ -506,7 +506,7 @@ Defaults to 3. Minimum value is 1. * `periodSeconds`:执行探测的时间间隔(单位是秒)。默认是 10 秒。最小值是 1。 * `timeoutSeconds`:探测的超时后等待多少秒。默认值是 1 秒。最小值是 1。 * `successThreshold`:探测器在失败后,被视为成功的最小连续成功数。默认值是 1。 - 存活探测的这个值必须是 1。最小值是 1。 + 存活和启动探测的这个值必须是 1。最小值是 1。 * `failureThreshold`:当探测失败时,Kubernetes 的重试次数。 存活探测情况下的放弃就意味着重新启动容器。 就绪探测情况下的放弃 Pod 会被打上未就绪的标签。默认值是 3。最小值是 1。 From 04c6868a1a1e5d6aeccdf0f8025b6735d1cb94c8 Mon Sep 17 00:00:00 2001 From: Michael Werner Date: Fri, 27 Nov 2020 09:40:00 +0100 Subject: [PATCH 38/80] Remove minion from germen nodes.md --- content/de/docs/concepts/architecture/nodes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/de/docs/concepts/architecture/nodes.md b/content/de/docs/concepts/architecture/nodes.md index 8f3cd0f785..b790e68035 100644 --- a/content/de/docs/concepts/architecture/nodes.md +++ b/content/de/docs/concepts/architecture/nodes.md @@ -6,7 +6,7 @@ weight: 10 -Ein Knoten (Node in Englisch) ist eine Arbeitsmaschine in Kubernetes, früher als `minion` bekannt. Ein Node +Ein Knoten (Node in Englisch) ist eine Arbeitsmaschine in Kubernetes. Ein Node kann je nach Cluster eine VM oder eine physische Maschine sein. Jeder Node enthält die für den Betrieb von [Pods](/docs/concepts/workloads/pods/pod/) notwendigen Dienste und wird von den Master-Komponenten verwaltet. From 7aa6abab2573ec729032eb98ee9c8a40f5d9ba67 Mon Sep 17 00:00:00 2001 From: Pascal Verdage Date: Fri, 27 Nov 2020 10:44:49 +0100 Subject: [PATCH 39/80] Update configure-liveness-readiness-startup-probes.md --- .../configure-liveness-readiness-startup-probes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes.md b/content/fr/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes.md index 1c45b2b071..4b8b736336 100644 --- a/content/fr/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes.md +++ b/content/fr/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes.md @@ -260,7 +260,7 @@ L'utilisation des deux peut garantir que le trafic n'atteigne pas un conteneur q * `periodSeconds`: La fréquence (en secondes) à laquelle la probe doit être effectuée. La valeur par défaut est de 10 secondes. La valeur minimale est de 1. * `timeoutSeconds`: Nombre de secondes après lequel la probe time out. Valeur par défaut à 1 seconde. La valeur minimale est de 1. * `successThreshold`: Le minimum de succès consécutifs pour que la probe soit considérée comme réussie après avoir échoué. La valeur par défaut est 1. Doit être 1 pour la liveness probe. La valeur minimale est de 1. -* `failureThreshold`: Quand un Pod démarre et que la probe échoue, Kubernetes va tenter pour un temps de `failureThreshold` avant d'abandonner. Abandonner en cas de liveness probe signifie le redémarrage du conteneur. En cas de readiness probe, le Pod sera marqué Unready. +* `failureThreshold`: Quand un Pod démarre et que la probe échoue, Kubernetes va tenter `failureThreshold` fois avant d'abandonner. Abandonner en cas de liveness probe signifie le redémarrage du conteneur. En cas de readiness probe, le Pod sera marqué Unready. La valeur par défaut est 3, la valeur minimum est 1. [HTTP probes](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#httpgetaction-v1-core) From 64f9f3ebd42894f85e79fbf02344af4f3cc12692 Mon Sep 17 00:00:00 2001 From: "kosehy@gmail.com" Date: Thu, 12 Nov 2020 22:40:40 +0900 Subject: [PATCH 40/80] Fifth Korean l10n work for release-1.19 - Update outdated in concept secret.md (#25254) - Update outdated resource quotas for ko5 (#25261) - Mistranslation on kubelet-authentication authorization.md in korean (#25223) - Update outdated files in dev-1.19-ko.5 part-03 (#25159) - Update outdated files in the upstream/dev-1.19-ko.5 branch (#25103) - Update outdated files in dev-1.19-ko.5 part-02 (#25152) - Translate reference/glossary/container-lifecycle-hooks.md in Korean (#25071) - Translate reference/command-line-tools-reference/kube-proxy into korean (#24817) - Translate reference/scheduling/config.md into Korean (#24489) - Translate reference/kubectl/jsonpath into Korean (#24868) Co-authored-by: seokho-son Co-authored-by: Jerry Park Co-authored-by: kosehy@gmail.com Co-authored-by: santachopa --- .../docs/concepts/architecture/controller.md | 12 +- .../concepts/cluster-administration/_index.md | 2 +- .../cluster-administration/logging.md | 2 +- .../cluster-administration/networking.md | 12 +- .../cluster-administration/system-metrics.md | 8 + .../ko/docs/concepts/configuration/secret.md | 383 +++++++- content/ko/docs/concepts/containers/images.md | 4 +- .../docs/concepts/extend-kubernetes/_index.md | 2 +- .../api-extension/custom-resources.md | 2 +- .../extend-kubernetes/extend-cluster.md | 2 +- .../extend-kubernetes/service-catalog.md | 2 +- .../docs/concepts/overview/kubernetes-api.md | 20 +- .../concepts/overview/what-is-kubernetes.md | 2 +- .../kubernetes-objects.md | 3 +- .../overview/working-with-objects/labels.md | 2 +- .../concepts/policy/pod-security-policy.md | 16 +- .../docs/concepts/policy/resource-quotas.md | 194 ++-- .../scheduling-eviction/kube-scheduler.md | 6 +- .../security}/controlling-access.md | 0 content/ko/docs/concepts/security/overview.md | 4 +- .../services-networking/dual-stack.md | 2 +- .../concepts/services-networking/ingress.md | 7 + .../concepts/storage/persistent-volumes.md | 8 +- .../docs/concepts/storage/storage-classes.md | 2 +- .../docs/concepts/storage/volume-snapshots.md | 2 + content/ko/docs/concepts/storage/volumes.md | 837 +++++++++--------- content/ko/docs/concepts/workloads/_index.md | 2 +- .../workloads/controllers/replicaset.md | 2 +- .../concepts/workloads/pods/pod-lifecycle.md | 15 +- .../pods/pod-topology-spread-constraints.md | 12 +- .../contribute/participate/pr-wranglers.md | 2 +- content/ko/docs/reference/_index.md | 6 +- .../reference/access-authn-authz/_index.md | 26 +- .../access-authn-authz/authorization.md | 6 +- .../feature-gates.md | 4 +- .../kube-proxy.md | 343 +++++++ .../kubelet-authentication-authorization.md | 2 +- .../glossary/container-lifecycle-hooks.md | 17 + .../ko/docs/reference/glossary/container.md | 2 +- content/ko/docs/reference/kubectl/jsonpath.md | 113 +++ .../ko/docs/reference/scheduling/config.md | 253 ++++++ content/ko/docs/reference/tools.md | 4 +- content/ko/docs/reference/using-api/_index.md | 119 ++- .../docs/reference/using-api/api-overview.md | 113 --- .../reference/using-api/client-libraries.md | 2 +- .../docs/setup/learning-environment/_index.md | 29 + .../setup/learning-environment/minikube.md | 512 ----------- .../container-runtimes.md | 454 +++++----- .../windows/intro-windows-in-kubernetes.md | 2 +- .../access-cluster.md | 3 +- .../administer-cluster/access-cluster-api.md | 4 +- .../administer-cluster/cluster-management.md | 2 +- .../kubeadm/kubeadm-certs.md | 2 +- .../romana-network-policy.md | 2 +- .../weave-network-policy.md | 2 +- .../assign-memory-resource.md | 4 +- .../configure-persistent-volume-storage.md | 2 +- .../resource-metrics-pipeline.md | 4 +- .../resource-usage-monitoring.md | 2 +- .../define-environment-variable-container.md | 13 +- .../horizontal-pod-autoscale-walkthrough.md | 4 +- .../horizontal-pod-autoscale.md | 4 +- content/ko/docs/tasks/tools/_index.md | 30 +- .../ko/docs/tasks/tools/install-kubectl.md | 2 +- content/ko/docs/tutorials/hello-minikube.md | 18 +- .../stateful-application/cassandra.md | 2 +- .../guestbook-logs-metrics-with-elk.md | 212 +++-- content/ko/includes/task-tutorial-prereqs.md | 2 +- 68 files changed, 2295 insertions(+), 1595 deletions(-) rename content/ko/docs/{reference/access-authn-authz => concepts/security}/controlling-access.md (100%) create mode 100644 content/ko/docs/reference/command-line-tools-reference/kube-proxy.md create mode 100644 content/ko/docs/reference/glossary/container-lifecycle-hooks.md create mode 100644 content/ko/docs/reference/kubectl/jsonpath.md create mode 100644 content/ko/docs/reference/scheduling/config.md delete mode 100644 content/ko/docs/reference/using-api/api-overview.md delete mode 100644 content/ko/docs/setup/learning-environment/minikube.md diff --git a/content/ko/docs/concepts/architecture/controller.md b/content/ko/docs/concepts/architecture/controller.md index 836b4a5b6b..b65cf13803 100644 --- a/content/ko/docs/concepts/architecture/controller.md +++ b/content/ko/docs/concepts/architecture/controller.md @@ -96,7 +96,17 @@ weight: 30 컨트롤러가 있다. [클러스터 오토스케일링](/ko/docs/tasks/administer-cluster/cluster-management/#클러스터-오토스케일링)을 본다.) -## 원하는 상태와 현재 상태 {#desired-vs-current} +여기서 중요한 점은 컨트롤러가 의도한 상태를 가져오기 위해 약간의 변화를 주고, +현재 상태를 클러스터의 API 서버에 다시 보고한다는 것이다. +다른 컨트롤 루프는 보고된 데이터를 관찰하고 자체 조치를 할 수 있다. + +온도 조절기 예에서 방이 매우 추우면 다른 컨트롤러가 +서리 방지 히터를 켤 수도 있다. 쿠버네티스 클러스터에서는 +[쿠버네티스 확장](/ko/docs/concepts/extend-kubernetes/)을 통해 +IP 주소 관리 도구, 스토리지 서비스, 클라우드 제공자 APIS 및 +기타 서비스 등과 간접적으로 연동하여 이를 구현한다. + +## 의도한 상태와 현재 상태 {#desired-vs-current} 쿠버네티스는 클라우드-네이티브 관점에서 시스템을 관찰하며, 지속적인 변화에 대응할 수 있다. diff --git a/content/ko/docs/concepts/cluster-administration/_index.md b/content/ko/docs/concepts/cluster-administration/_index.md index daa1dfd702..ffeb3a58fb 100755 --- a/content/ko/docs/concepts/cluster-administration/_index.md +++ b/content/ko/docs/concepts/cluster-administration/_index.md @@ -47,7 +47,7 @@ no_list: true * [쿠버네티스 컨테이너 환경](/ko/docs/concepts/containers/container-environment/)은 쿠버네티스 노드에서 Kubelet으로 관리하는 컨테이너에 대한 환경을 설명한다. -* [쿠버네티스 API에 대한 접근 제어](/ko/docs/reference/access-authn-authz/controlling-access/)는 사용자와 서비스 어카운트에 대한 권한을 설정하는 방법을 설명한다. +* [쿠버네티스 API에 대한 접근 제어](/ko/docs/concepts/security/controlling-access)는 쿠버네티스가 자체 API에 대한 접근 제어를 구현하는 방법을 설명한다. * [인증](/docs/reference/access-authn-authz/authentication/)은 다양한 인증 옵션을 포함한 쿠버네티스에서의 인증에 대해 설명한다. diff --git a/content/ko/docs/concepts/cluster-administration/logging.md b/content/ko/docs/concepts/cluster-administration/logging.md index 4a0b700e02..48044b0460 100644 --- a/content/ko/docs/concepts/cluster-administration/logging.md +++ b/content/ko/docs/concepts/cluster-administration/logging.md @@ -22,7 +22,7 @@ weight: 60 이 섹션에서는, 쿠버네티스에서 표준 출력 스트림으로 데이터를 출력하는 기본 로깅의 예시를 볼 수 있다. 이 데모에서는 일부 텍스트를 초당 한 번씩 표준 출력에 쓰는 컨테이너와 함께 -[파드 명세](/examples/debug/counter-pod.yaml)를 사용한다. +파드 명세를 사용한다. {{< codenew file="debug/counter-pod.yaml" >}} diff --git a/content/ko/docs/concepts/cluster-administration/networking.md b/content/ko/docs/concepts/cluster-administration/networking.md index 63877bc535..9b378aed79 100644 --- a/content/ko/docs/concepts/cluster-administration/networking.md +++ b/content/ko/docs/concepts/cluster-administration/networking.md @@ -122,6 +122,10 @@ Azure CNI는 [Azure 쿠버네티스 서비스(Azure Kubernetes Service, AKS)](ht 가트너는 최신의 [매직 쿼드런트(Magic Quadrant)](https://go.bigswitch.com/17GatedDocuments-MagicQuadrantforDataCenterNetworking_Reg.html)에서 BCF를 비저너리(Visionary)로 인정했다. BCF 쿠버네티스 온-프레미스 디플로이먼트 중 하나(지리적으로 다른 리전에 걸쳐 여러 DC에서 실행되는 쿠버네티스, DC/OS 및 VMware 포함)도 [여기](https://portworx.com/architects-corner-kubernetes-satya-komala-nio/)에서 사례로 참조된다. +### 캘리코 + +[캘리코](https://docs.projectcalico.org/)는 컨테이너, 가상 시스템 및 기본 호스트 기반 워크로드를 위한 오픈소스 네트워킹 및 네트워크 보안 솔루션이다. 캘리코는 순수 리눅스 eBPF 데이터플레인, 표준 리눅스 네트워킹 데이터플레인, 윈도우 HNS 데이터플레인을 포함한 여러 데이터플레인을 지원한다. 캘리코는 완전한 네트워킹 스택을 제공하지만, [클라우드 제공자 CNI](https://docs.projectcalico.org/networking/determine-best-networking#calico-compatible-cni-plugins-and-cloud-provider-integrations)와 함께 사용하여 네트워크 정책 시행을 제공할 수도 있다. + ### 실리움(Cilium) [실리움](https://github.com/cilium/cilium)은 애플리케이션 컨테이너 간에 @@ -289,14 +293,6 @@ OVN은 Open vSwitch 커뮤니티에서 개발한 오픈소스 네트워크 [ovn-kubernetes](https://github.com/openvswitch/ovn-kubernetes)에 특정 쿠버네티스 플러그인 및 문서가 있다. -### 프로젝트 캘리코 - -[프로젝트 캘리코](https://docs.projectcalico.org/)는 오픈소스 컨테이너 네트워킹 공급자 및 네트워크 정책 엔진이다. - -캘리코는 리눅스(오픈소스)와 윈도우(독점 - [Tigera](https://www.tigera.io/essentials/)에서 사용 가능) 모두에서 인터넷과 동일한 IP 네트워킹 원칙을 기반으로 쿠버네티스 파드를 연결하기 위한 확장성이 뛰어난 네트워킹 및 네트워크 정책 솔루션을 제공한다. 캘리코는 캡슐화나 오버레이 없이 구축되어 고성능의 대규모 데이터센터 네트워킹을 제공할 수 있다. 또한 캘리코는 분산 방화벽을 통해 쿠버네티스 파드에 대해 세분화된 의도기반의 네트워크 보안 정책을 제공한다. - -캘리코는 플라넬, 일명 [canal](https://github.com/tigera/canal) 또는 네이티브 GCE, AWS나 Azure 네트워킹과 같은 다른 네트워킹 솔루션과 함께 정책 적용 모드로 실행될 수도 있다. - ### 로마나 [로마나](https://romana.io)는 오버레이 네트워크 없이 쿠버네티스를 배포할 수 있는 오픈소스 네트워크 및 보안 자동화 솔루션이다. 로마나는 쿠버네티스 [네트워크 폴리시](/ko/docs/concepts/services-networking/network-policies/)를 지원하여 네트워크 네임스페이스에서 격리를 제공한다. diff --git a/content/ko/docs/concepts/cluster-administration/system-metrics.md b/content/ko/docs/concepts/cluster-administration/system-metrics.md index 440da51dd8..e4dedb068a 100644 --- a/content/ko/docs/concepts/cluster-administration/system-metrics.md +++ b/content/ko/docs/concepts/cluster-administration/system-metrics.md @@ -97,6 +97,14 @@ some_counter 0 릴리스 `1.12` 에서 `1.13` 으로 업그레이드 중이지만, `1.12` 에서 사용 중단된 메트릭 `A` 를 사용하고 있다면, 커맨드 라인에서 `--show-hidden-metrics=1.12` 플래그로 히든 메트릭을 설정해야 하고, `1.14` 로 업그레이드하기 전에 이 메트릭을 사용하지 않도록 의존성을 제거하는 것을 기억해야 한다. +## 액셀러레이터 메트릭 비활성화 + +kubelet은 cAdvisor를 통해 액셀러레이터 메트릭을 수집한다. NVIDIA GPU와 같은 액셀러레이터의 경우, 이러한 메트릭을 수집하기 위해 kubelet은 드라이버에 열린 핸들을 가진다. 이는 인프라 변경(예: 드라이버 업데이트)을 수행하기 위해 클러스터 관리자가 kubelet 에이전트를 중지해야 함을 의미한다. + +액셀러레이터 메트릭을 수집하는 책임은 이제 kubelet이 아닌 공급 업체에 있다. 공급 업체는 메트릭을 수집하여 메트릭 서비스(예: 프로메테우스)에 노출할 컨테이너를 제공해야 한다. + +[`DisableAcceleratorUsageMetrics` 기능 게이트](/ko/docs/reference/command-line-tools-reference/feature-gates/#알파-또는-베타-기능을-위한-기능-게이트:~:text= DisableAcceleratorUsageMetrics,-false)는 [이 기능을 기본적으로 사용하도록 설정하는 타임라인](https://github.com/kubernetes/enhancements/tree/411e51027db842355bd489691af897afc1a41a5e/keps/sig-node/1867-disable-accelerator-usage-metrics#graduation-criteria)를 사용하여 kubelet에서 수집한 메트릭을 비활성화한다. + ## 컴포넌트 메트릭 ### kube-controller-manager 메트릭 diff --git a/content/ko/docs/concepts/configuration/secret.md b/content/ko/docs/concepts/configuration/secret.md index a934d173d1..e75beb8666 100644 --- a/content/ko/docs/concepts/configuration/secret.md +++ b/content/ko/docs/concepts/configuration/secret.md @@ -12,51 +12,380 @@ weight: 30 쿠버네티스 시크릿을 사용하면 비밀번호, OAuth 토큰, ssh 키와 같은 민감한 정보를 저장하고 관리할 수 ​​있다. 기밀 정보를 시크릿에 저장하는 것이 -{{< glossary_tooltip term_id="pod" text="파드" >}} 정의나 -{{< glossary_tooltip text="컨테이너 이미지" term_id="image" >}} 내에 그대로 두는 것보다 안전하고 유연하다. 자세한 내용은 [시크릿 디자인 문서](https://git.k8s.io/community/contributors/design-proposals/auth/secrets.md)를 참고한다. - +{{< glossary_tooltip term_id="pod" >}} 정의나 +{{< glossary_tooltip text="컨테이너 이미지" term_id="image" >}} +내에 그대로 두는 것보다 안전하고 유연하다. +자세한 내용은 [시크릿 디자인 문서](https://git.k8s.io/community/contributors/design-proposals/auth/secrets.md)를 참고한다. +시크릿은 암호, 토큰 또는 키와 같은 소량의 중요한 데이터를 +포함하는 오브젝트이다. 그렇지 않으면 이러한 정보가 파드 +명세나 이미지에 포함될 수 있다. 사용자는 시크릿을 만들 수 있고 시스템도 +일부 시크릿을 만들 수 있다. ## 시크릿 개요 -시크릿은 비밀번호, 토큰 또는 키와 같은 소량의 -민감한 데이터를 포함하는 오브젝트이다. 그렇지 않으면 이러한 정보가 -파드 명세 또는 이미지에 포함될 수 있다. 사용자는 시크릿을 생성할 수 있으며 시스템도 -일부 시크릿을 생성한다. - 시크릿을 사용하려면, 파드가 시크릿을 참조해야 한다. 시크릿은 세 가지 방법으로 파드와 함께 사용할 수 있다. - 하나 이상의 컨테이너에 마운트된 -{{< glossary_tooltip text="볼륨" term_id="volume" >}} 내의 -[파일](#시크릿을-파드의-파일로-사용하기)로써 사용. + {{< glossary_tooltip text="볼륨" term_id="volume" >}} 내의 + [파일](#시크릿을-파드의-파일로-사용하기)로써 사용. - [컨테이너 환경 변수](#시크릿을-환경-변수로-사용하기)로써 사용. - 파드의 [이미지를 가져올 때 kubelet](#imagepullsecrets-사용하기)에 의해 사용. 시크릿 오브젝트의 이름은 유효한 [DNS 서브도메인 이름](/docs/concepts/overview/working-with-objects/names#dns-subdomain-names)이어야 한다. +사용자는 시크릿을 위한 파일을 구성할 때 `data` 및 (또는) `stringData` 필드를 +명시할 수 있다. 해당 `data` 와 `stringData` 필드는 선택적으로 명시할 수 있다. +`data` 필드의 모든 키(key)에 해당하는 값(value)은 base64로 인코딩된 문자열이어야 한다. +만약 사용자에게 base64로의 문자열 변환이 적합하지 않다면, +임의의 문자열을 값으로 받는 `stringData` 필드를 대신 사용할 수 있다. -`data` 와 `stringData` 의 키는 영숫자 및 `-`, `_` 또는 `.` 으로 -구성되어야 한다. +`data` 및 `stringData`의 키는 영숫자 문자, +`-`, `_`, 또는 `.` 으로 구성되어야 한다. `stringData` 필드의 모든 키-값 쌍은 의도적으로 +`data` 필드로 합쳐진다. 만약 키가 `data` 와 `stringData` 필드 모두에 정의되어 +있으면, `stringData` 필드에 지정된 값이 +우선적으로 사용된다. -### 빌트인 시크릿 +## 시크릿 타입 {#secret-types} -#### 서비스 어카운트는 API 자격 증명으로 시크릿을 자동으로 생성하고 연결함 +시크릿을 생성할 때, [`Secret`](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#secret-v1-core) +리소스의 `type` 필드를 사용하거나, (활용 가능하다면) `kubectl` 의 +유사한 특정 커맨드라인 플래그를 사용하여 시크릿의 타입을 명시할 수 있다. +시크릿 타입은 시크릿 데이터의 프로그래믹 처리를 촉진시키기 위해 사용된다. -쿠버네티스는 API 접근을 위한 자격 증명이 포함된 -시크릿을 자동으로 생성하고 이러한 유형의 시크릿을 사용하도록 파드를 자동으로 -수정한다. +쿠버네티스는 일반적인 사용 시나리오를 위해 몇 가지 빌트인 타입을 제공한다. +이 타입은 쿠버네티스가 부과하여 수행되는 검증 및 제약에 +따라 달라진다. -원하는 경우 API 자격 증명의 자동 생성 및 사용을 비활성화하거나 -오버라이드할 수 있다. 그러나, API 서버에 안전하게 접근하기만 하면 되는 경우, -자동 생성 및 사용이 권장되는 워크플로이다. +| 빌트인 타입 | 사용처 | +|--------------|-------| +| `Opaque` | 임의의 사용자 정의 데이터 | +| `kubernetes.io/service-account-token` | 서비스 어카운트 토큰 | +| `kubernetes.io/dockercfg` | 직렬화 된(serialized) `~/.dockercfg` 파일 | +| `kubernetes.io/dockerconfigjson` | 직렬화 된 `~/.docker/config.json` 파일 | +| `kubernetes.io/basic-auth` | 기본 인증을 위한 자격 증명(credential) | +| `kubernetes.io/ssh-auth` | SSH를 위한 자격 증명 | +| `kubernetes.io/tls` | TLS 클라이언트나 서버를 위한 데이터 | +| `bootstrap.kubernetes.io/token` | 부트스트랩 토큰 데이터 | -서비스 어카운트 작동 방식에 대한 자세한 내용은 -[서비스어카운트(ServiceAccount)](/docs/tasks/configure-pod-container/configure-service-account/) 문서를 참고한다. +사용자는 시크릿 오브젝트의 `type` 값에 비어 있지 않은 문자열을 할당하여 자신만의 시크릿 +타입을 정의하고 사용할 수 있다. 비어 있는 문자열은 `Opaque` 타입으로 인식된다. +쿠버네티스는 타입 명칭에 제약을 부과하지는 않는다. 그러나 만약 +빌트인 타입 중 하나를 사용한다면, 해당 타입에 정의된 모든 요구 사항을 +만족시켜야 한다. -### 시크릿 생성하기 +### 불투명(Opaque) 시크릿 + +`Opaque` 은 시크릿 구성 파일에서 누락된 경우의 기본 시크릿 타입이다. +`kubectl` 을 사용하여 시크릿을 생성할 때 `Opaque` 시크릿 타입을 나타내기 +위해서는 `generic` 하위 커맨드를 사용할 것이다. 예를 들어, 다음 커맨드는 +타입 `Opaque` 의 비어 있는 시크릿을 생성한다. + +```shell +kubectl create secret generic empty-secret +kubectl get secret empty-secret +``` + +출력은 다음과 같다. + +``` +NAME TYPE DATA AGE +empty-secret Opaque 0 2m6s +``` + +해당 `DATA` 열은 시크릿에 저장된 데이터 아이템의 수를 보여준다. +이 경우, `0` 은 비어 있는 시크릿을 방금 하나 생성하였다는 것을 의미한다. + +### 서비스 어카운트 토큰 시크릿 + +`kubernetes.io/service-account-token` 시크릿 타입은 서비스 어카운트를 확인하는 토큰을 저장하기 위해서 사용한다. 이 시크릿 타입을 사용할 때는, +`kubernetes.io/service-account.name` 어노테이션이 존재하는 서비스 +어카운트 이름으로 설정되도록 해야 한다. 쿠버네티스 컨트롤러는 +`kubernetes.io/service-account.uid` 및 실제 토큰 +콘텐츠로 설정된 `data` 필드의 `token` 키와 같은, +몇 가지 다른 필드들을 채운다. + +다음은 서비스 어카운트 토큰 시크릿의 구성 예시이다. + +```yaml +apiVersion: v1 +kind: Secret +metadata: + name: secret-sa-sample + annotations: + kubernetes.io/service-account.name: "sa-name" +type: kubernetes.io/service-account-token +data: + # 사용자는 불투명 시크릿을 사용하므로 추가적인 키 값 쌍을 포함할 수 있다. + extra: YmFyCg== +``` + +`Pod` 를 생성할 때, 쿠버네티스는 자동으로 서비스 어카운트 시크릿을 +생성하고 자동으로 파드가 해당 시크릿을 사용하도록 수정한다. 해당 서비스 +어카운트 토큰 시크릿은 API 접속을 위한 자격 증명을 포함한다. + +이러한 API 자격 증명의 자동 생성과 사용은 원하는 경우 해제하거나 +기각할 수 있다. 그러나 만약 사용자가 API 서버에 안전하게 접근하는 것만 +필요하다면, 이것이 권장되는 워크플로우이다. + +[서비스 어카운트](/docs/tasks/configure-pod-container/configure-service-account/) 문서를 보면 +서비스 어카운트가 동작하는 방법에 대한 더 자세한 정보를 얻을 수 있다. +또한 파드에서 서비스 어카운트를 참조하는 방법을 +[`Pod`](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#secret-v1-core)의 +`automountServiceAccountToken` 필드와 `serviceAccountName` +필드를 통해 확인할 수 있다. + +### 도커 컨피그 시크릿 + +이미지에 대한 도커 레지스트리 접속 자격 증명을 저장하기 위한 +시크릿을 생성하기 위해서 다음의 `type` 값 중 하나를 사용할 수 있다. + +- `kubernetes.io/dockercfg` +- `kubernetes.io/dockerconfigjson` + +`kubernetes.io/dockercfg` 는 직렬화 된 도커 커맨드라인 구성을 +위한 기존(legacy) 포맷 `~/.dockercfg` 를 저장하기 위해 할당된 타입이다. +시크릿 타입을 사용할 때는, `data` 필드가 base64 포맷으로 +인코딩된 `~/.dockercfg` 파일의 콘텐츠를 값으로 가지는 `.dockercfg` 키를 포함하고 있는지 +확실히 확인해야 한다. + +`kubernetes/dockerconfigjson` 타입은 `~/.dockercfg` 의 +새로운 포맷인 `~/.docker/config.json` 파일과 동일한 포맷 법칙을 +따르는 직렬화 된 JSON의 저장을 위해 디자인되었다. +이 시크릿 타입을 사용할 때는, 시크릿 오브젝트의 `data` 필드가 `.dockerconfigjson` 키를 +꼭 포함해야 한다. `~/.docker/config.json` 파일을 위한 콘텐츠는 +base64로 인코딩된 문자열으로 제공되어야 한다. + +아래는 시크릿의 `kubernetes.io/dockercfg` 타입 예시이다. + +```yaml +apiVersion: v1 +kind: Secret +metadata: + name: secret-dockercfg +type: kubernetes.io/dockercfg +data: + .dockercfg: | + "" +``` + +{{< note >}} +만약 base64 인코딩 수행을 원하지 않는다면, 그 대신 `stringData` 필드의 +사용을 선택할 수 있다. +{{< /note >}} + +이러한 타입들을 매니페스트를 사용하여 생성하는 경우, API +서버는 해당 `data` 필드에 기대하는 키가 존재하는지 확인하고, +제공된 값이 유효한 JSON으로 파싱될 수 있는지 검증한다. API +서버가 해당 JSON이 실제 도커 컨피그 파일인지를 검증하지는 않는다. + +도커 컨피그 파일을 가지고 있지 않거나 도커 레지스트리 시크릿을 생성하기 +위해 `kubectl` 을 사용하고 싶은 경우, 다음과 같이 처리할 수 있다. + +```shell +kubectl create secret docker-registry secret-tiger-docker \ + --docker-username=tiger \ + --docker-password=pass113 \ + --docker-email=tiger@acme.com +``` + +이 커맨드는 `kubernetes.io/dockerconfigjson` 타입의 시크릿을 생성한다. +만약 `data` 필드로부터 `.dockerconfigjson` 콘텐츠를 복사(dump)해오면, +다음과 같이 유효한 도커 JSON 콘텐츠를 +즉석에서 얻게 될 것이다. + +```json +{ + "auths": { + "https://index.docker.io/v1/": { + "username": "tiger", + "password": "pass113", + "email": "tiger@acme.com", + "auth": "dGlnZXI6cGFzczExMw==" + } + } +} +``` + +### 기본 인증 시크릿 + +`kubernetes.io/basic-auth` 타입은 기본 인증을 위한 자격 증명을 저장하기 +위해 제공된다. 이 시크릿 타입을 사용할 때는 시크릿의 `data` 필드가 +다음의 두 키를 포함해야 한다. + +- `username`: 인증을 위한 사용자 이름 +- `password`: 인증을 위한 암호나 토큰 + +위의 두 키에 대한 두 값은 모두 base64로 인코딩된 문자열이다. 물론, +시크릿 생성 시 `stringData` 를 사용하여 평문 텍스트 콘텐츠(clear text content)를 제공할 +수도 있다. + +다음의 YAML은 기본 인증 시크릿을 위한 구성 예시이다. + +```yaml +apiVersion: v1 +kind: Secret +metadata: + name: secret-basic-auth +type: kubernetes.io/basic-auth +stringData: + username: admin + password: t0p-Secret +``` + +이 기본 인증 시크릿 타입은 사용자 편의만을 위해서 제공된다. +사용자는 기본 인증에서 사용되는 자격 증명을 위한 `Opaque` 를 생성할 수도 있다. +그러나, 빌트인 시크릿 타입을 사용하는 것은 사용자의 자격 증명들의 포맷을 통합하는 데 도움이 되고, +API 서버는 요구되는 키가 시크릿 구성에서 제공되고 있는지 +검증도 한다. + +### SSH 인증 시크릿 + +이 빌트인 타입 `kubernetes.io/ssh-auth` 는 SSH 인증에 사용되는 데이터를 +저장하기 위해서 제공된다. 이 시크릿 타입을 사용할 때는 `ssh-privatekey` +키-값 쌍을 사용할 SSH 자격 증명으로 `data` (또는 `stringData`) +필드에 명시해야 할 것이다. + +다음 YAML은 SSH 인증 시크릿의 구성 예시이다. + +```yaml +apiVersion: v1 +kind: Secret +metadata: + name: secret-ssh-auth +type: kubernetes.io/ssh-auth +data: + # 본 예시를 위해 축약된 데이터임 + ssh-privatekey: | + MIIEpQIBAAKCAQEAulqb/Y ... +``` + +SSH 인증 시크릿 타입은 사용자 편의만을 위해서 제공된다. +사용자는 SSH 인증에서 사용되는 자격 증명을 위한 `Opaque` 를 생성할 수도 있다. +그러나, 빌트인 시크릿 타입을 사용하는 것은 사용자의 자격 증명들의 포맷을 통합하는 데 도움이 되고, +API 서버는 요구되는 키가 시크릿 구성에서 제공되고 있는지 +검증도 한다. + +### TLS 시크릿 + +쿠버네티스는 보통 TLS를 위해 사용되는 인증서와 관련된 키를 저장하기 위해서 +빌트인 시크릿 타입 `kubernetes.io/tls` 를 제공한다. +이 데이터는 인그레스 리소스의 TLS 종료에 주로 사용되지만, 다른 +리소스나 워크로드에 의해 직접적으로 사용될 수도 있다. +이 타입의 시크릿을 사용할 때는 `tls.key` 와 `tls.crt` 키가 시크릿 구성의 +`data` (또는 `stringData`) 필드에서 제공되어야 한다. 그러나, API +서버가 각 키에 대한 값이 유효한지 실제로 검증하지는 않는다. + +다음 YAML은 TLS 시크릿을 위한 구성 예시를 포함한다. + +```yaml +apiVersion: v1 +kind: Secret +metadata: + name: secret-tls +type: kubernetes.io/tls +data: + # 본 예시를 위해 축약된 데이터임 + tls.crt: | + MIIC2DCCAcCgAwIBAgIBATANBgkqh ... + tls.key: | + MIIEpgIBAAKCAQEA7yn3bRHQ5FHMQ ... +``` + +TLS 시크릿 타입은 사용자 편의만을 위해서 제공된다. 사용자는 TLS 서버 및/또는 +클라이언트를 위해 사용되는 자격 증명을 위한 `Opaque` 를 생성할 수도 있다. 그러나, 빌트인 +시크릿 타입을 사용하는 것은 사용자의 자격 증명들의 포맷을 통합하는 데 도움이 되고, +API 서버는 요구되는 키가 시크릿 구성에서 제공되고 있는지 검증도 한다. + +`kubectl` 를 사용하여 TLS 시크릿을 생성할 때, `tls` 하위 커맨드를 +다음 예시와 같이 사용할 수 있다. + +```shell +kubectl create secret tls my-tls-secret \ + --cert=path/to/cert/file \ + --key=path/to/key/file +``` + +공개/개인 키 쌍은 사전에 존재해야 한다. `--cert` 를 위한 공개 키 인증서는 +.PEM 으로 인코딩(Base64로 인코딩된 DER 포맷)되어야 하며, `--key` 를 위해 주어진 +개인 키에 맞아야 한다. +개인 키는 일반적으로 PEM 개인 키 포맷이라고 하는, +암호화되지 않은 형태(unencrypted)이어야 한다. 두 가지 방식 모두에 대해서, PEM의 +시작과 끝 라인(예를 들면, 인증서의 `--------BEGIN CERTIFICATE-----` 및 `-------END CERTIFICATE----`) +은 포함되면 *안* 된다. + +### 부트스트랩 토큰 시크릿 + +부트스트랩 토큰 시크릿은 시크릿 `type` 을 `bootstrap.kubernetes.io/token` 으로 +명확하게 지정하면 생성할 수 있다. 이 타입의 시크릿은 노드 부트스트랩 과정 중에 사용되는 +토큰을 위해 디자인되었다. 이것은 잘 알려진 컨피그맵에 서명하는 데 사용되는 +토큰을 저장한다. + +부트스트랩 토큰 시크릿은 보통 `kube-system` 네임스페이스에 생성되며 +`` 가 해당 토큰 ID의 6개 문자의 문자열으로 구성된 `bootstrap-token-` 형태로 +이름이 지정된다. + +쿠버네티스 매니페스트로서, 부트스트렙 토큰 시크릿은 다음과 유사할 +것이다. + +```yaml +apiVersion: v1 +kind: Secret +metadata: + name: bootstrap-token-5emitj + namespace: kube-system +type: bootstrap.kubernetes.io/token +data: + auth-extra-groups: c3lzdGVtOmJvb3RzdHJhcHBlcnM6a3ViZWFkbTpkZWZhdWx0LW5vZGUtdG9rZW4= + expiration: MjAyMC0wOS0xM1QwNDozOToxMFo= + token-id: NWVtaXRq + token-secret: a3E0Z2lodnN6emduMXAwcg== + usage-bootstrap-authentication: dHJ1ZQ== + usage-bootstrap-signing: dHJ1ZQ== +``` + +부트스트랩 타입은 `data` 아래 명시된 다음의 키들을 가진다. + +- `token_id`: 토큰 식별자로 임의의 6개 문자의 문자열. 필수 사항. +- `token-secret`: 실제 토큰 시크릿으로 임의의 16개 문자의 문자열. 필수 사항. +- `description1`: 토큰의 사용처를 설명하는 사람이 읽을 수 있는 + 문자열. 선택 사항. +- `expiration`: 토큰이 만료되어야 하는 시기를 명시한 RFC3339를 + 사용하는 절대 UTC 시간. 선택 사항. +- `usage-bootstrap-`: 부트스트랩 토큰의 추가적인 사용처를 나타내는 + 불리언(boolean) 플래그. +- `auth-extra-groups`: system:bootstrappers 그룹에 추가로 인증될 + 쉼표로 구분된 그룹 이름 목록. + +위의 YAML은 모두 base64로 인코딩된 문자열 값이므로 혼란스러워 보일 +수 있다. 사실은 다음 YAML을 사용하여 동일한 시크릿 오브젝트 결과를 만드는 +동일한 시크릿을 생성할 수 있다. + +```yaml +apiVersion: v1 +kind: Secret +metadata: + # 시크릿 이름이 어떻게 지정되었는지 확인 + name: bootstrap-token-5emitj + # 부트스트랩 토큰 시크릿은 일반적으로 kube-system 네임스페이스에 포함 + namespace: kube-system +type: bootstrap.kubernetes.io/token +stringData: + auth-extra-groups: "system:bootstrappers:kubeadm:default-node-token" + expiration: "2020-09-13T04:39:10Z" + # 이 토큰 ID는 이름에 사용됨 + token-id: "5emitj" + token-secret: "kq4gihvszzgn1p0r" + # 이 토큰은 인증을 위해서 사용될 수 있음 + usage-bootstrap-authentication: "true" + # 또한 서명(signing)에도 사용될 수 있음 + usage-bootstrap-signing: "true" +``` + +## 시크릿 생성하기 시크릿을 생성하기 위한 몇 가지 옵션이 있다. @@ -64,7 +393,7 @@ weight: 30 - [구성 파일로 시크릿 생성하기](/docs/tasks/configmap-secret/managing-secret-using-config-file/) - [kustomize를 사용하여 시크릿 생성하기](/docs/tasks/configmap-secret/managing-secret-using-kustomize/) -### 시크릿 편집하기 +## 시크릿 편집하기 기존 시크릿은 다음 명령을 사용하여 편집할 수 있다. @@ -791,11 +1120,11 @@ spec: HTTP 요청을 처리하고, 복잡한 비즈니스 로직을 수행한 다음, HMAC이 있는 일부 메시지에 서명해야 하는 프로그램을 고려한다. 애플리케이션 로직이 복잡하기 때문에, 서버에서 눈에 띄지 않는 원격 파일 읽기 공격이 -있을 수 있으며, 이로 인해 프라이빗 키가 공격자에게 노출될 수 있다. +있을 수 있으며, 이로 인해 개인 키가 공격자에게 노출될 수 있다. 이는 두 개의 컨테이너의 두 개 프로세스로 나눌 수 있다. 사용자 상호 작용과 -비즈니스 로직을 처리하지만, 프라이빗 키를 볼 수 없는 프론트엔드 컨테이너와 -프라이빗 키를 볼 수 있고, 프론트엔드의 간단한 서명 요청(예를 들어, localhost 네트워킹을 통해)에 +비즈니스 로직을 처리하지만, 개인 키를 볼 수 없는 프론트엔드 컨테이너와 +개인 키를 볼 수 있고, 프론트엔드의 간단한 서명 요청(예를 들어, localhost 네트워킹을 통해)에 응답하는 서명자 컨테이너로 나눌 수 있다. 이 분할된 접근 방식을 사용하면, 공격자는 이제 애플리케이션 서버를 속여서 diff --git a/content/ko/docs/concepts/containers/images.md b/content/ko/docs/concepts/containers/images.md index 497f4cbfda..2f1ae4a27c 100644 --- a/content/ko/docs/concepts/containers/images.md +++ b/content/ko/docs/concepts/containers/images.md @@ -61,9 +61,9 @@ weight: 10 `imagePullPolicy` 가 특정값 없이 정의되면, `Always` 로 설정된다. -## 매니페스트가 있는 다중 아키텍처 이미지 +## 이미지 인덱스가 있는 다중 아키텍처 이미지 -바이너리 이미지를 제공할 뿐만 아니라, 컨테이너 레지스트리는 컨테이너 [이미지 매니페스트](https://github.com/opencontainers/image-spec/blob/master/manifest.md)를 제공할 수도 있다. 매니페스트는 아키텍처별 버전의 컨테이너에 대한 이미지 매니페스트를 참조할 수 있다. 아이디어는 이미지의 이름(예를 들어, `pause`, `example/mycontainer`, `kube-apiserver`)을 가질 수 있다는 것이다. 그래서 다른 시스템들이 사용하고 있는 컴퓨터 아키텍처에 적합한 바이너리 이미지를 가져올 수 있다. +바이너리 이미지를 제공할 뿐만 아니라, 컨테이너 레지스트리는 [컨테이너 이미지 인덱스](https://github.com/opencontainers/image-spec/blob/master/image-index.md)를 제공할 수도 있다. 이미지 인덱스는 컨테이너의 아키텍처별 버전에 대한 여러 [이미지 매니페스트](https://github.com/opencontainers/image-spec/blob/master/manifest.md)를 가리킬 수 있다. 아이디어는 이미지의 이름(예를 들어, `pause`, `example/mycontainer`, `kube-apiserver`)을 가질 수 있다는 것이다. 그래서 다른 시스템들이 사용하고 있는 컴퓨터 아키텍처에 적합한 바이너리 이미지를 가져올 수 있다. 쿠버네티스 자체는 일반적으로 `-$(ARCH)` 접미사로 컨테이너 이미지의 이름을 지정한다. 이전 버전과의 호환성을 위해, 접미사가 있는 오래된 이미지를 생성한다. 아이디어는 모든 아키텍처에 대한 매니페스트가 있는 `pause` 이미지와 이전 구성 또는 이전에 접미사로 이미지를 하드 코딩한 YAML 파일과 호환되는 `pause-amd64` 라고 하는 이미지를 생성한다. diff --git a/content/ko/docs/concepts/extend-kubernetes/_index.md b/content/ko/docs/concepts/extend-kubernetes/_index.md index ec09e00446..81cc38337f 100644 --- a/content/ko/docs/concepts/extend-kubernetes/_index.md +++ b/content/ko/docs/concepts/extend-kubernetes/_index.md @@ -126,7 +126,7 @@ API를 추가해도 기존 API(예: 파드)의 동작에 직접 영향을 미치 ### API 접근 익스텐션 -요청이 쿠버네티스 API 서버에 도달하면 먼저 인증이 되고, 그런 다음 승인된 후 다양한 유형의 어드미션 컨트롤이 적용된다. 이 흐름에 대한 자세한 내용은 [쿠버네티스 API에 대한 접근 제어](/ko/docs/reference/access-authn-authz/controlling-access/)를 참고하길 바란다. +요청이 쿠버네티스 API 서버에 도달하면 먼저 인증이 되고, 그런 다음 승인된 후 다양한 유형의 어드미션 컨트롤이 적용된다. 이 흐름에 대한 자세한 내용은 [쿠버네티스 API에 대한 접근 제어](/ko/docs/concepts/security/controlling-access/)를 참고하길 바란다. 이러한 각 단계는 익스텐션 포인트를 제공한다. diff --git a/content/ko/docs/concepts/extend-kubernetes/api-extension/custom-resources.md b/content/ko/docs/concepts/extend-kubernetes/api-extension/custom-resources.md index f4301e2933..68e529549b 100644 --- a/content/ko/docs/concepts/extend-kubernetes/api-extension/custom-resources.md +++ b/content/ko/docs/concepts/extend-kubernetes/api-extension/custom-resources.md @@ -13,7 +13,7 @@ weight: 10 ## 커스텀 리소스 -*리소스* 는 [쿠버네티스 API](/ko/docs/reference/using-api/api-overview/)에서 특정 종류의 +*리소스* 는 [쿠버네티스 API](/ko/docs/concepts/overview/kubernetes-api/)에서 특정 종류의 [API 오브젝트](/ko/docs/concepts/overview/working-with-objects/kubernetes-objects/) 모음을 저장하는 엔드포인트이다. 예를 들어 빌트인 *파드* 리소스에는 파드 오브젝트 모음이 포함되어 있다. *커스텀 리소스* 는 쿠버네티스 API의 익스텐션으로, 기본 쿠버네티스 설치에서 반드시 diff --git a/content/ko/docs/concepts/extend-kubernetes/extend-cluster.md b/content/ko/docs/concepts/extend-kubernetes/extend-cluster.md index 3fe6451755..9775299a3c 100644 --- a/content/ko/docs/concepts/extend-kubernetes/extend-cluster.md +++ b/content/ko/docs/concepts/extend-kubernetes/extend-cluster.md @@ -127,7 +127,7 @@ API를 추가해도 기존 API(예: 파드)의 동작에 직접 영향을 미치 ### API 접근 익스텐션 -요청이 쿠버네티스 API 서버에 도달하면 먼저 인증이 되고, 그런 다음 승인된 후 다양한 유형의 어드미션 컨트롤이 적용된다. 이 흐름에 대한 자세한 내용은 [쿠버네티스 API에 대한 접근 제어](/ko/docs/reference/access-authn-authz/controlling-access/)를 참고하길 바란다. +요청이 쿠버네티스 API 서버에 도달하면 먼저 인증이 되고, 그런 다음 승인된 후 다양한 유형의 어드미션 컨트롤이 적용된다. 이 흐름에 대한 자세한 내용은 [쿠버네티스 API에 대한 접근 제어](/ko/docs/concepts/security/controlling-access/)를 참고하길 바란다. 이러한 각 단계는 익스텐션 포인트를 제공한다. diff --git a/content/ko/docs/concepts/extend-kubernetes/service-catalog.md b/content/ko/docs/concepts/extend-kubernetes/service-catalog.md index 6e27220d68..3ac6a2df7d 100644 --- a/content/ko/docs/concepts/extend-kubernetes/service-catalog.md +++ b/content/ko/docs/concepts/extend-kubernetes/service-catalog.md @@ -227,7 +227,7 @@ spec: * 만약 당신이 {{< glossary_tooltip text="Helm Charts" term_id="helm-chart" >}}에 익숙하다면, 당신의 쿠버네티스 클러스터에 [Helm을 이용하여 서비스 카탈로그를 설치](/docs/tasks/service-catalog/install-service-catalog-using-helm/)할 수 있다. 다른 방법으로 [SC tool을 이용하여 서비스 카탈로그를 설치](/docs/tasks/service-catalog/install-service-catalog-using-sc/)할 수 있다. * [샘플 서비스 브로커](https://github.com/openservicebrokerapi/servicebroker/blob/master/gettingStarted.md#sample-service-brokers) 살펴보기 -* [kubernetes-incubator/service-catalog](https://github.com/kubernetes-incubator/service-catalog) 프로젝트 탐색 +* [kubernetes-sigs/service-catalog](https://github.com/kubernetes-sigs/service-catalog) 프로젝트 탐색 * [svc-cat.io](https://svc-cat.io/docs/) 살펴보기 diff --git a/content/ko/docs/concepts/overview/kubernetes-api.md b/content/ko/docs/concepts/overview/kubernetes-api.md index 65662da9d0..89871bd83a 100644 --- a/content/ko/docs/concepts/overview/kubernetes-api.md +++ b/content/ko/docs/concepts/overview/kubernetes-api.md @@ -22,7 +22,7 @@ card: 대부분의 작업은 [kubectl](/docs/reference/kubectl/overview/) 커맨드 라인 인터페이스 또는 API를 사용하는 -[kubeadm](/docs/reference/setup-tools/kubeadm/kubeadm/)과 +[kubeadm](/ko/docs/reference/setup-tools/kubeadm/)과 같은 다른 커맨드 라인 도구를 통해 수행할 수 있다. 그러나, REST 호출을 사용하여 API에 직접 접근할 수도 있다. @@ -101,8 +101,20 @@ API가 시스템 리소스 및 동작에 대한 명확하고 일관된 보기를 제어할 수 있도록 한다. 보다 쉽게 발전하고 API를 확장하기 위해, 쿠버네티스는 -[활성화 또는 비활성화](/ko/docs/reference/using-api/api-overview/#api-그룹-활성화-또는-비활성화-하기)가 -가능한 [API 그룹](/ko/docs/reference/using-api/api-overview/#api-그룹)을 구현한다. +[활성화 또는 비활성화](/ko/docs/reference/using-api/#api-그룹-활성화-또는-비활성화)가 +가능한 [API 그룹](/ko/docs/reference/using-api/#api-그룹)을 구현한다. + +API 리소스는 API 그룹, 리소스 유형, 네임스페이스 +(네임스페이스 리소스용) 및 이름으로 구분된다. API 서버는 +여러 API 버전을 통해 동일한 기본 데이터를 제공하고 API 버전 간의 +변환을 투명하게 처리할 수 있다. 이 모든 다른 버전은 실제로 +같은 리소스의 표현이다. 예를 들어 동일한 리소스에 대해 +두 가지 버전 `v1`과 `v1beta1`이 있다고 가정해 보자. +`v1beta1` 버전에서 생성된 오브젝트를 `v1beta1` 또는 `v1` 버전에서 +읽기, 업데이트 및 삭제할 수 있다. + +API 버전 수준 정의에 대한 자세한 내용은 +[API 버전 레퍼런스](/ko/docs/reference/using-api/#api-버전-규칙)를 참조한다. API 리소스는 해당 API 그룹, 리소스 유형, 네임스페이스 (네임스페이스 리소스용) 및 이름으로 구분된다. API 서버는 여러 API 버전을 통해 동일한 @@ -129,7 +141,7 @@ API 버전 수준 정의에 대한 자세한 내용은 - 자체 [CustomResourceDefinition](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/)을 추가하여 쿠버네티스 API를 확장하는 방법에 대해 배우기. -- [API 접근 제어하기](/ko/docs/reference/access-authn-authz/controlling-access/)는 +- [쿠버네티스 API 접근 제어하기](/ko/docs/concepts/security/controlling-access/)는 클러스터가 API 접근을 위한 인증 및 권한을 관리하는 방법을 설명한다. - [API 레퍼런스](/docs/reference/kubernetes-api/)를 읽고 API 엔드포인트, 리소스 유형 및 샘플에 대해 배우기. diff --git a/content/ko/docs/concepts/overview/what-is-kubernetes.md b/content/ko/docs/concepts/overview/what-is-kubernetes.md index 7d6c8c1f0e..449cae4393 100644 --- a/content/ko/docs/concepts/overview/what-is-kubernetes.md +++ b/content/ko/docs/concepts/overview/what-is-kubernetes.md @@ -35,7 +35,7 @@ sitemap: 각 VM은 가상화된 하드웨어 상에서 자체 운영체제를 포함한 모든 구성 요소를 실행하는 하나의 완전한 머신이다. -**컨테이너 개발 시대:** 컨테이너는 VM과 유사하지만 격리 속성을 완화하여 애플리케이션 간에 운영체제(OS)를 공유한다. 그러므로 컨테이너는 가볍다고 여겨진다. VM과 마찬가지로 컨테이너에는 자체 파일 시스템, CPU, 메모리, 프로세스 공간 등이 있다. 기본 인프라와의 종속성을 끊었기 때문에, 클라우드나 OS 배포본에 모두 이식할 수 있다. +**컨테이너 개발 시대:** 컨테이너는 VM과 유사하지만 격리 속성을 완화하여 애플리케이션 간에 운영체제(OS)를 공유한다. 그러므로 컨테이너는 가볍다고 여겨진다. VM과 마찬가지로 컨테이너에는 자체 파일 시스템, CPU 점유율, 메모리, 프로세스 공간 등이 있다. 기본 인프라와의 종속성을 끊었기 때문에, 클라우드나 OS 배포본에 모두 이식할 수 있다. 컨테이너는 다음과 같은 추가적인 혜택을 제공하기 때문에 인기가 있다. 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 c43acf468c..6bfdda943f 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 @@ -91,6 +91,7 @@ deployment.apps/nginx-deployment created ## {{% heading "whatsnext" %}} -* API 개념의 더 많은 설명은 [Kubernetes API 개요](/ko/docs/reference/using-api/api-overview/)를 본다. + * [파드](/ko/docs/concepts/workloads/pods/)와 같이, 가장 중요하고 기본적인 쿠버네티스 오브젝트에 대해 배운다. * 쿠버네티스의 [컨트롤러](/ko/docs/concepts/architecture/controller/)에 대해 배운다. +* API 개념의 더 많은 설명은 [쿠버네티스 API 사용](/ko/docs/reference/using-api/)을 본다. diff --git a/content/ko/docs/concepts/overview/working-with-objects/labels.md b/content/ko/docs/concepts/overview/working-with-objects/labels.md index a6f03a907f..631f0347d4 100644 --- a/content/ko/docs/concepts/overview/working-with-objects/labels.md +++ b/content/ko/docs/concepts/overview/working-with-objects/labels.md @@ -185,7 +185,7 @@ kubectl get pods -l 'environment,environment notin (frontend)' [`services`](/ko/docs/concepts/services-networking/service/) 와 [`replicationcontrollers`](/ko/docs/concepts/workloads/controllers/replicationcontroller/)와 같은 일부 쿠버네티스 오브젝트는 레이블 셀렉터를 사용해서 -[파드](/ko/docs/concepts/workloads/pods/pod/)와 같은 다른 리소스 집합을 선택한다. +[파드](/ko/docs/concepts/workloads/pods/)와 같은 다른 리소스 집합을 선택한다. #### 서비스와 레플리케이션 컨트롤러 diff --git a/content/ko/docs/concepts/policy/pod-security-policy.md b/content/ko/docs/concepts/policy/pod-security-policy.md index c1e7bc56a9..93f2093952 100644 --- a/content/ko/docs/concepts/policy/pod-security-policy.md +++ b/content/ko/docs/concepts/policy/pod-security-policy.md @@ -138,12 +138,16 @@ RBAC 바인딩에 대한 자세한 예는, ### 문제 해결 - [컨트롤러 관리자](/docs/reference/command-line-tools-reference/kube-controller-manager/)는 -[보안 API 포트](/ko/docs/reference/access-authn-authz/controlling-access/)에 대해 실행해야 하며, -슈퍼유저 권한이 없어야 한다. 그렇지 않으면 요청이 인증 및 권한 부여 모듈을 우회하고, -모든 파드시큐리티폴리시 오브젝트가 허용되며 -사용자는 특권있는 컨테이너를 만들 수 있다. 컨트롤러 관리자 권한 구성에 대한 자세한 -내용은 [컨트롤러 역할](/docs/reference/access-authn-authz/rbac/#controller-roles)을 -참고하길 바란다. +보안 API 포트에 대해 실행되어야 하며 수퍼유저 권한이 없어야 한다. +API 서버 접근 제어에 대한 자세한 내용은 +[쿠버네티스 API에 대한 접근 제어](/ko/docs/concepts/security/controlling-access)를 참고하길 바란다. +컨트롤러 관리자가 신뢰할 수 있는 API 포트(`localhost` 리스너라고도 함)를 +통해 연결된 경우, 요청이 인증 및 권한 부여 모듈을 우회하고, +모든 파드시큐리티폴리시 오브젝트가 허용되며 사용자는 특권을 가진 컨테이너를 +만들 수 있는 권한을 부여할 수 있다. + +컨트롤러 관리자 권한 구성에 대한 자세한 내용은 +[컨트롤러 역할](/docs/reference/access-authn-authz/rbac/#controller-roles)을 참고하기 바란다. ## 정책 순서 diff --git a/content/ko/docs/concepts/policy/resource-quotas.md b/content/ko/docs/concepts/policy/resource-quotas.md index 028209a07e..ffda9f5eda 100644 --- a/content/ko/docs/concepts/policy/resource-quotas.md +++ b/content/ko/docs/concepts/policy/resource-quotas.md @@ -15,7 +15,7 @@ weight: 10 `ResourceQuota` 오브젝트로 정의된 리소스 쿼터는 네임스페이스별 총 리소스 사용을 제한하는 제약 조건을 제공한다. 유형별로 네임스페이스에서 만들 수 있는 오브젝트 수와 -해당 프로젝트의 리소스가 사용할 수 있는 총 컴퓨트 리소스의 양을 +해당 네임스페이스의 리소스가 사용할 수 있는 총 컴퓨트 리소스의 양을 제한할 수 있다. 리소스 쿼터는 다음과 같이 작동한다. @@ -23,10 +23,10 @@ weight: 10 - 다른 팀은 다른 네임스페이스에서 작동한다. 현재 이것은 자발적이지만 ACL을 통해 이 필수 사항을 적용하기 위한 지원이 계획되어 있다. -- 관리자는 각 네임스페이스에 대해 하나의 `ResourceQuota`를 생성한다. +- 관리자는 각 네임스페이스에 대해 하나의 리소스쿼터를 생성한다. - 사용자는 네임스페이스에서 리소스(파드, 서비스 등)를 생성하고 쿼터 시스템은 - 사용량을 추적하여 `ResourceQuota`에 정의된 하드(hard) 리소스 제한을 초과하지 않도록 한다. + 사용량을 추적하여 리소스쿼터에 정의된 하드(hard) 리소스 제한을 초과하지 않도록 한다. - 리소스를 생성하거나 업데이트할 때 쿼터 제약 조건을 위반하면 위반된 제약 조건을 설명하는 메시지와 함께 HTTP 상태 코드 `403 FORBIDDEN`으로 요청이 실패한다. @@ -38,7 +38,7 @@ weight: 10 이 문제를 회피하는 방법에 대한 예제는 [연습](/ko/docs/tasks/administer-cluster/manage-resources/quota-memory-cpu-namespace/)을 참고하길 바란다. -`ResourceQuota` 오브젝트의 이름은 유효한 +리소스쿼터 오브젝트의 이름은 유효한 [DNS 서브도메인 이름](/ko/docs/concepts/overview/working-with-objects/names#dns-서브도메인-이름)이어야 한다. 네임스페이스와 쿼터를 사용하여 만들 수 있는 정책의 예는 다음과 같다. @@ -59,7 +59,7 @@ weight: 10 API 서버 `--enable-admission-plugins=` 플래그의 인수 중 하나로 `ResourceQuota`가 있는 경우 활성화된다. -해당 네임스페이스에 `ResourceQuota`가 있는 경우 특정 네임스페이스에 +해당 네임스페이스에 리소스쿼터가 있는 경우 특정 네임스페이스에 리소스 쿼터가 적용된다. ## 컴퓨트 리소스 쿼터 @@ -70,10 +70,14 @@ API 서버 `--enable-admission-plugins=` 플래그의 인수 중 하나로 | 리소스 이름 | 설명 | | --------------------- | ----------------------------------------------------------- | -| `limits.cpu` | 터미널이 아닌 상태의 모든 파드에서 CPU 제한의 합은 이 값을 초과할 수 없음 | -| `limits.memory` | 터미널이 아닌 상태의 모든 파드에서 메모리 제한의 합은 이 값을 초과할 수 없음 | -| `requests.cpu` | 터미널이 아닌 상태의 모든 파드에서 CPU 요청의 합은 이 값을 초과할 수 없음 | -| `requests.memory` | 터미널이 아닌 상태의 모든 파드에서 메모리 요청의 합은 이 값을 초과할 수 없음 | +| `limits.cpu` | 터미널이 아닌 상태의 모든 파드에서 CPU 제한의 합은 이 값을 초과할 수 없음. | +| `limits.memory` | 터미널이 아닌 상태의 모든 파드에서 메모리 제한의 합은 이 값을 초과할 수 없음. | +| `requests.cpu` | 터미널이 아닌 상태의 모든 파드에서 CPU 요청의 합은 이 값을 초과할 수 없음. | +| `requests.memory` | 터미널이 아닌 상태의 모든 파드에서 메모리 요청의 합은 이 값을 초과할 수 없음. | +| `hugepages-` | 터미널 상태가 아닌 모든 파드에 걸쳐서, 지정된 사이즈의 +휴즈 페이지 요청은 이 값을 초과하지 못함. | +| `cpu` | `requests.cpu` 와 같음. | +| `memory` | `requests.memory` 와 같음. | ### 확장된 리소스에 대한 리소스 쿼터 @@ -103,7 +107,7 @@ GPU 리소스를 다음과 같이 쿼터를 정의할 수 있다. | `requests.storage` | 모든 퍼시스턴트 볼륨 클레임에서 스토리지 요청의 합은 이 값을 초과할 수 없음 | | `persistentvolumeclaims` | 네임스페이스에 존재할 수 있는 총 [퍼시스턴트 볼륨 클레임](/ko/docs/concepts/storage/persistent-volumes/#퍼시스턴트볼륨클레임) 수 | | `.storageclass.storage.k8s.io/requests.storage` | storage-class-name과 관련된 모든 퍼시스턴트 볼륨 클레임에서 스토리지 요청의 합은 이 값을 초과할 수 없음 | -| `.storageclass.storage.k8s.io/persistentvolumeclaims` | storage-class-name과 관련된 모든 퍼시스턴트 볼륨 클레임에서 네임스페이스에 존재할 수 있는 총 [퍼시스턴트 볼륨 클레임](/ko/docs/concepts/storage/persistent-volumes/#퍼시스턴트볼륨클레임) 수 | +| `.storageclass.storage.k8s.io/persistentvolumeclaims` | `` 과 관련된 모든 퍼시스턴트 볼륨 클레임에서 네임스페이스에 존재할 수 있는 총 [퍼시스턴트 볼륨 클레임](/ko/docs/concepts/storage/persistent-volumes/#퍼시스턴트볼륨클레임) 수 | 예를 들어, 운영자가 `bronze` 스토리지 클래스와 별도로 `gold` 스토리지 클래스를 사용하여 스토리지에 쿼터를 지정하려는 경우 운영자는 다음과 같이 쿼터를 정의할 수 있다. @@ -115,14 +119,17 @@ GPU 리소스를 다음과 같이 쿼터를 정의할 수 있다. | 리소스 이름 | 설명 | | ------------------------------- |----------------------------------------------------------- | -| `requests.ephemeral-storage` | 네임스페이스의 모든 파드에서 로컬 임시 스토리지 요청의 합은 이 값을 초과할 수 없음 | -| `limits.ephemeral-storage` | 네임스페이스의 모든 파드에서 로컬 임시 스토리지 제한의 합은 이 값을 초과할 수 없음 | +| `requests.ephemeral-storage` | 네임스페이스의 모든 파드에서 로컬 임시 스토리지 요청의 합은 이 값을 초과할 수 없음. | +| `limits.ephemeral-storage` | 네임스페이스의 모든 파드에서 로컬 임시 스토리지 제한의 합은 이 값을 초과할 수 없음. | +| `ephemeral-storage` | `requests.ephemeral-storage` 와 같음. | ## 오브젝트 수 쿼터 -1.9 릴리스는 다음 구문을 사용하여 모든 표준 네임스페이스 리소스 유형에 쿼터를 지정하는 지원을 추가했다. +다음 구문을 사용하여 모든 표준 네임스페이스 처리된(namespaced) 리소스 유형에 대한 +특정 리소스 전체 수에 대하여 쿼터를 지정할 수 있다. -* `count/.` +* 코어 그룹이 아닌(non-core) 리소스를 위한 `count/.` +* 코어 그룹의 리소스를 위한 `count/` 다음은 사용자가 오브젝트 수 쿼터 아래에 배치하려는 리소스 셋의 예이다. @@ -136,32 +143,29 @@ GPU 리소스를 다음과 같이 쿼터를 정의할 수 있다. * `count/statefulsets.apps` * `count/jobs.batch` * `count/cronjobs.batch` -* `count/deployments.extensions` -1.15 릴리스는 동일한 구문을 사용하여 사용자 정의 리소스에 대한 지원을 추가했다. +사용자 정의 리소스를 위해 동일한 구문을 사용할 수 있다. 예를 들어 `example.com` API 그룹에서 `widgets` 사용자 정의 리소스에 대한 쿼터를 생성하려면 `count/widgets.example.com`을 사용한다. `count/*` 리소스 쿼터를 사용할 때 서버 스토리지 영역에 있다면 오브젝트는 쿼터에 대해 과금된다. 이러한 유형의 쿼터는 스토리지 리소스 고갈을 방지하는 데 유용하다. 예를 들어, 크기가 큰 서버에서 시크릿 수에 쿼터를 지정할 수 있다. 클러스터에 시크릿이 너무 많으면 실제로 서버와 -컨트롤러가 시작되지 않을 수 있다! 네임스페이스에 너무 많은 작업을 생성하는 -잘못 구성된 크론 잡으로 인해 서비스 거부를 유발하는 것으로부터 보호하기 위해 작업의 쿼터를 지정하도록 선택할 수 있다. - -1.9 릴리스 이전에는 제한된 리소스 셋에서 일반 오브젝트 수 쿼터를 적용할 수 있었다. -또한, 특정 리소스에 대한 쿼터를 유형별로 추가로 제한할 수 있다. +컨트롤러가 시작되지 않을 수 있다. 잘못 구성된 크론 잡으로부터의 보호를 위해 +잡의 쿼터를 설정할 수 있다. 네임스페이스 내에서 너무 많은 잡을 생성하는 크론 잡은 서비스 거부를 유발할 수 있다. +또한 제한된 리소스 셋에 대해서 일반 오브젝트 수(generic object count) 쿼터를 적용하는 것도 가능하다. 다음 유형이 지원된다. | 리소스 이름 | 설명 | | ------------------------------- | ------------------------------------------------- | -| `configmaps` | 네임스페이스에 존재할 수 있는 총 구성 맵 수 | +| `configmaps` | 네임스페이스에 존재할 수 있는 총 컨피그맵 수 | | `persistentvolumeclaims` | 네임스페이스에 존재할 수 있는 총 [퍼시스턴트 볼륨 클레임](/ko/docs/concepts/storage/persistent-volumes/#퍼시스턴트볼륨클레임) 수 | | `pods` | 네임스페이스에 존재할 수 있는 터미널이 아닌 상태의 파드의 총 수. `.status.phase in (Failed, Succeeded)`가 true인 경우 파드는 터미널 상태임 | -| `replicationcontrollers` | 네임스페이스에 존재할 수 있는 총 레플리케이션 컨트롤러 수 | -| `resourcequotas` | 네임스페이스에 존재할 수 있는 총 [리소스 쿼터](/docs/reference/access-authn-authz/admission-controllers/#resourcequota) 수 | +| `replicationcontrollers` | 네임스페이스에 존재할 수 있는 총 레플리케이션컨트롤러 수 | +| `resourcequotas` | 네임스페이스에 존재할 수 있는 총 리소스쿼터 수 | | `services` | 네임스페이스에 존재할 수 있는 총 서비스 수 | -| `services.loadbalancers` | 네임스페이스에 존재할 수 있는 로드 밸런서 유형의 총 서비스 수 | -| `services.nodeports` | 네임스페이스에 존재할 수 있는 노드 포트 유형의 총 서비스 수 | +| `services.loadbalancers` | 네임스페이스에 존재할 수 있는 `LoadBalancer` 유형의 총 서비스 수 | +| `services.nodeports` | 네임스페이스에 존재할 수 있는 `NodePort` 유형의 총 서비스 수 | | `secrets` | 네임스페이스에 존재할 수 있는 총 시크릿 수 | 예를 들어, `pods` 쿼터는 터미널이 아닌 단일 네임스페이스에서 생성된 `pods` 수를 @@ -171,7 +175,7 @@ GPU 리소스를 다음과 같이 쿼터를 정의할 수 있다. ## 쿼터 범위 -각 쿼터에는 연결된 범위 셋이 있을 수 있다. 쿼터는 열거된 범위의 교차 부분과 일치하는 경우에만 +각 쿼터에는 연결된 `scopes` 셋이 있을 수 있다. 쿼터는 열거된 범위의 교차 부분과 일치하는 경우에만 리소스 사용량을 측정한다. 범위가 쿼터에 추가되면 해당 범위와 관련된 리소스를 지원하는 리소스 수가 제한된다. @@ -183,22 +187,60 @@ GPU 리소스를 다음과 같이 쿼터를 정의할 수 있다. | `NotTerminating` | `.spec.activeDeadlineSeconds is nil`에 일치하는 파드 | | `BestEffort` | 최상의 서비스 품질을 제공하는 파드 | | `NotBestEffort` | 서비스 품질이 나쁜 파드 | +| `PriorityClass` | 지정된 [프라이올리티 클래스](/docs/concepts/configuration/pod-priority-preemption)를 참조하여 일치하는 파드. | -`BestEffort` 범위는 다음의 리소스(파드)를 추적하도록 쿼터를 제한한다. +`BestEffort` 범위는 다음의 리소스를 추적하도록 쿼터를 제한한다. -`Terminating`, `NotTerminating` 및 `NotBestEffort` 범위는 쿼터를 제한하여 다음의 리소스를 추적한다. - -* `cpu` -* `limits.cpu` -* `limits.memory` -* `memory` * `pods` + +`Terminating`, `NotTerminating`, `NotBestEffort` 및 `PriorityClass` +범위는 쿼터를 제한하여 다음의 리소스를 추적한다. + +* `pods` +* `cpu` +* `memory` * `requests.cpu` * `requests.memory` +* `limits.cpu` +* `limits.memory` + +`Terminating` 과 `NotTerminating` 범위를 동일한 쿼터 내에 모두 +명시하지는 못하며, 마찬가지로 `BestEffort` 와 +`NotBestEffort` 범위도 동일한 쿼터 내에서 모두 명시하지는 못한다. + +`scopeSelector` 는 `operator` 필드에 다음의 값을 지원한다. + +* `In` +* `NotIn` +* `Exists` +* `DoesNotExist` + +`scopeSelector` 를 정의할 때, `scopeName` 으로 다음의 값 중 하나를 사용하는 +경우, `operator` 는 `Exists` 이어야 한다. + +* `Terminating` +* `NotTerminating` +* `BestEffort` +* `NotBestEffort` + +만약 `operator` 가 `In` 또는 `NotIn` 인 경우, `values` 필드는 적어도 하나의 값은 +가져야 한다. 예를 들면 다음과 같다. + +```yaml + scopeSelector: + matchExpressions: + - scopeName: PriorityClass + operator: In + values: + - middle +``` + +만약 `operator` 가 `Exists` 또는 `DoesNotExist` 이라면, `values` 필드는 명시되면 +*안된다*. ### PriorityClass별 리소스 쿼터 -{{< feature-state for_k8s_version="v1.12" state="beta" >}} +{{< feature-state for_k8s_version="v1.17" state="stable" >}} 특정 [우선 순위](/ko/docs/concepts/configuration/pod-priority-preemption/#파드-우선순위)로 파드를 생성할 수 있다. 쿼터 스펙의 `scopeSelector` 필드를 사용하여 파드의 우선 순위에 따라 파드의 시스템 리소스 사용을 @@ -281,7 +323,7 @@ items: kubectl create -f ./quota.yml ``` -```shell +``` resourcequota/pods-high created resourcequota/pods-medium created resourcequota/pods-low created @@ -293,7 +335,7 @@ resourcequota/pods-low created kubectl describe quota ``` -```shell +``` Name: pods-high Namespace: default Resource Used Hard @@ -358,7 +400,7 @@ kubectl create -f ./high-priority-pod.yml kubectl describe quota ``` -```shell +``` Name: pods-high Namespace: default Resource Used Hard @@ -386,13 +428,6 @@ memory 0 20Gi pods 0 10 ``` -`scopeSelector`는 `operator` 필드에서 다음 값을 지원한다. - -* `In` -* `NotIn` -* `Exist` -* `DoesNotExist` - ## 요청과 제한의 비교 {#requests-vs-limits} 컴퓨트 리소스를 할당할 때 각 컨테이너는 CPU 또는 메모리에 대한 요청과 제한값을 지정할 수 있다. @@ -456,7 +491,7 @@ kubectl create -f ./object-counts.yaml --namespace=myspace kubectl get quota --namespace=myspace ``` -```shell +``` NAME AGE compute-resources 30s object-counts 32s @@ -466,7 +501,7 @@ object-counts 32s kubectl describe quota compute-resources --namespace=myspace ``` -```shell +``` Name: compute-resources Namespace: myspace Resource Used Hard @@ -482,7 +517,7 @@ requests.nvidia.com/gpu 0 4 kubectl describe quota object-counts --namespace=myspace ``` -```shell +``` Name: object-counts Namespace: myspace Resource Used Hard @@ -504,7 +539,7 @@ kubectl create namespace myspace ``` ```shell -kubectl create quota test --hard=count/deployments.extensions=2,count/replicasets.extensions=4,count/pods=3,count/secrets=4 --namespace=myspace +kubectl create quota test --hard=count/deployments.apps=2,count/replicasets.apps=4,count/pods=3,count/secrets=4 --namespace=myspace ``` ```shell @@ -515,29 +550,29 @@ kubectl create deployment nginx --image=nginx --namespace=myspace --replicas=2 kubectl describe quota --namespace=myspace ``` -```shell +``` Name: test Namespace: myspace Resource Used Hard -------- ---- ---- -count/deployments.extensions 1 2 +count/deployments.apps 1 2 count/pods 2 3 -count/replicasets.extensions 1 4 +count/replicasets.apps 1 4 count/secrets 1 4 ``` ## 쿼터 및 클러스터 용량 -`ResourceQuotas`는 클러스터 용량과 무관하다. 그것들은 절대 단위로 표현된다. +리소스쿼터는 클러스터 용량과 무관하다. 그것들은 절대 단위로 표현된다. 따라서 클러스터에 노드를 추가해도 각 네임스페이스에 더 많은 리소스를 사용할 수 있는 기능이 자동으로 부여되지는 *않는다*. 가끔 다음과 같은 보다 복잡한 정책이 필요할 수 있다. - - 여러 팀으로 전체 클러스터 리소스를 비례적으로 나눈다. - - 각 테넌트가 필요에 따라 리소스 사용량을 늘릴 수 있지만, 실수로 리소스가 고갈되는 것을 - 막기 위한 충분한 제한이 있다. - - 하나의 네임스페이스에서 요구를 감지하고 노드를 추가하며 쿼터를 늘린다. +- 여러 팀으로 전체 클러스터 리소스를 비례적으로 나눈다. +- 각 테넌트가 필요에 따라 리소스 사용량을 늘릴 수 있지만, 실수로 리소스가 고갈되는 것을 + 막기 위한 충분한 제한이 있다. +- 하나의 네임스페이스에서 요구를 감지하고 노드를 추가하며 쿼터를 늘린다. 이러한 정책은 쿼터 사용을 감시하고 다른 신호에 따라 각 네임스페이스의 쿼터 하드 제한을 조정하는 "컨트롤러"를 작성하여 `ResourceQuotas`를 구성 요소로 @@ -548,14 +583,16 @@ count/secrets 1 4 ## 기본적으로 우선 순위 클래스 소비 제한 -파드가 특정 우선 순위, 예를 들어 일치하는 쿼터 오브젝트가 존재하는 경우에만 "cluster-services"가 네임스페이스에 허용되어야 힌다. +파드가 특정 우선 순위, 예를 들어 일치하는 쿼터 오브젝트가 존재하는 +경우에만 "cluster-services"가 네임스페이스에 허용되어야 한다. -이 메커니즘을 통해 운영자는 특정 우선 순위가 높은 클래스의 사용을 제한된 수의 네임스페이스로 제한할 수 있으며 모든 네임스페이스가 기본적으로 이러한 우선 순위 클래스를 사용할 수 있는 것은 아니다. +이 메커니즘을 통해 운영자는 특정 우선 순위가 높은 클래스의 사용을 +제한된 수의 네임스페이스로 제한할 수 있으며 모든 네임스페이스가 +기본적으로 이러한 우선 순위 클래스를 사용할 수 있는 것은 아니다. -이를 적용하려면 kube-apiserver 플래그 `--admission-control-config-file`을 사용하여 다음 구성 파일의 경로를 전달해야 한다. +이를 적용하려면 kube-apiserver 플래그 `--admission-control-config-file` 을 +사용하여 다음 구성 파일의 경로를 전달해야 한다. -{{< tabs name="example1" >}} -{{% tab name="apiserver.config.k8s.io/v1" %}} ```yaml apiVersion: apiserver.config.k8s.io/v1 kind: AdmissionConfiguration @@ -571,30 +608,10 @@ plugins: operator: In values: ["cluster-services"] ``` -{{% /tab %}} -{{% tab name="apiserver.k8s.io/v1alpha1" %}} -```yaml -# Deprecated in v1.17 in favor of apiserver.config.k8s.io/v1 -apiVersion: apiserver.k8s.io/v1alpha1 -kind: AdmissionConfiguration -plugins: -- name: "ResourceQuota" - configuration: - # Deprecated in v1.17 in favor of apiserver.config.k8s.io/v1, ResourceQuotaConfiguration - apiVersion: resourcequota.admission.k8s.io/v1beta1 - kind: Configuration - limitedResources: - - resource: pods - matchScopes: - - scopeName: PriorityClass - operator: In - values: ["cluster-services"] -``` -{{% /tab %}} -{{< /tabs >}} 이제 "cluster-services" 파드는 `scopeSelector`와 일치하는 쿼터 오브젝트가 있는 네임스페이스에서만 허용된다. 예를 들면 다음과 같다. + ```yaml scopeSelector: matchExpressions: @@ -603,12 +620,9 @@ plugins: values: ["cluster-services"] ``` -자세한 내용은 [LimitedResources](https://github.com/kubernetes/kubernetes/pull/36765)와 [우선 순위 클래스에 대한 쿼터 지원 디자인 문서](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/scheduling/pod-priority-resourcequota.md)를 참고하길 바란다. - -## 예제 - -[리소스 쿼터를 사용하는 방법에 대한 자세한 예](/docs/tasks/administer-cluster/quota-api-object/)를 참고하길 바란다. - ## {{% heading "whatsnext" %}} -- 자세한 내용은 [리소스쿼터 디자인 문서](https://git.k8s.io/community/contributors/design-proposals/resource-management/admission_control_resource_quota.md)를 참고하길 바란다. +- 자세한 내용은 [리소스쿼터 디자인 문서](https://git.k8s.io/community/contributors/design-proposals/resource-management/admission_control_resource_quota.md)를 참고한다. +- [리소스 쿼터를 사용하는 방법에 대한 자세한 예](/docs/tasks/administer-cluster/quota-api-object/)를 참고한다. +- [우선 순위 클래스에 대한 쿼터 지원 디자인 문서](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/scheduling/pod-priority-resourcequota.md)를 읽는다. +- [제한된 자원](https://github.com/kubernetes/kubernetes/pull/36765)을 참고한다. diff --git a/content/ko/docs/concepts/scheduling-eviction/kube-scheduler.md b/content/ko/docs/concepts/scheduling-eviction/kube-scheduler.md index a3bf6a5a25..6bbe7a6767 100644 --- a/content/ko/docs/concepts/scheduling-eviction/kube-scheduler.md +++ b/content/ko/docs/concepts/scheduling-eviction/kube-scheduler.md @@ -78,7 +78,7 @@ _스코어링_ 단계에서 스케줄러는 목록에 남아있는 노드의 순 방법이 있다. 1. [스케줄링 정책](/docs/reference/scheduling/config/#profiles)을 사용하면 필터링을 위한 _단정(Predicates)_ 및 스코어링을 위한 _우선순위(Priorities)_ 를 구성할 수 있다. -1. [스케줄링 프로파일](/docs/reference/scheduling/profiles)을 사용하면 `QueueSort`, `Filter`, `Score`, `Bind`, `Reserve`, `Permit` 등의 다른 스케줄링 단계를 구현하는 플러그인을 구성할 수 있다. 다른 프로파일을 실행하도록 kube-scheduler를 구성할 수도 있다. +1. [스케줄링 프로파일](/docs/reference/scheduling/config/#profiles)을 사용하면 `QueueSort`, `Filter`, `Score`, `Bind`, `Reserve`, `Permit` 등의 다른 스케줄링 단계를 구현하는 플러그인을 구성할 수 있다. 다른 프로파일을 실행하도록 kube-scheduler를 구성할 수도 있다. ## {{% heading "whatsnext" %}} @@ -88,8 +88,8 @@ _스코어링_ 단계에서 스케줄러는 목록에 남아있는 노드의 순 * kube-scheduler의 [레퍼런스 문서](/docs/reference/command-line-tools-reference/kube-scheduler/) 읽기 * [멀티 스케줄러 구성하기](/docs/tasks/extend-kubernetes/configure-multiple-schedulers/)에 대해 배우기 * [토폴로지 관리 정책](/docs/tasks/administer-cluster/topology-manager/)에 대해 배우기 -* [파드 오버헤드](/ko/docs/concepts/configuration/pod-overhead/)에 대해 배우기 -* 볼륨을 사용하느 파드의 스케줄링에 대해 배우기 +* [파드 오버헤드](/ko/docs/concepts/scheduling-eviction/pod-overhead/)에 대해 배우기 +* 볼륨을 사용하는 파드의 스케줄링에 대해 배우기 * [볼륨 토폴리지 지원](/ko/docs/concepts/storage/storage-classes/#볼륨-바인딩-모드) * [스토리지 용량 추적](/docs/concepts/storage/storage-capacity/) * [노드별 볼륨 한도](/ko/docs/concepts/storage/storage-limits/) diff --git a/content/ko/docs/reference/access-authn-authz/controlling-access.md b/content/ko/docs/concepts/security/controlling-access.md similarity index 100% rename from content/ko/docs/reference/access-authn-authz/controlling-access.md rename to content/ko/docs/concepts/security/controlling-access.md diff --git a/content/ko/docs/concepts/security/overview.md b/content/ko/docs/concepts/security/overview.md index af5c9ba574..86240a4116 100644 --- a/content/ko/docs/concepts/security/overview.md +++ b/content/ko/docs/concepts/security/overview.md @@ -102,7 +102,7 @@ etcd 암호화 | 가능한 한 모든 드라이브를 암호화하는 것이 좋 워크로드 보안에서 고려할 영역 | 추천 | ------------------------------ | ------------ | RBAC 인증(쿠버네티스 API에 대한 접근) | https://kubernetes.io/docs/reference/access-authn-authz/rbac/ -인증 | https://kubernetes.io/docs/reference/access-authn-authz/controlling-access/ +인증 | https://kubernetes.io/ko/docs/concepts/security/controlling-access/ 애플리케이션 시크릿 관리(및 유휴 상태에서의 etcd 암호화 등) | https://kubernetes.io/docs/concepts/configuration/secret/
https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/ 파드 보안 정책 | https://kubernetes.io/docs/concepts/policy/pod-security-policy/ 서비스 품질(및 클러스터 리소스 관리) | https://kubernetes.io/docs/tasks/configure-pod-container/quality-service-pod/ @@ -146,8 +146,8 @@ TLS를 통한 접근 | 코드가 TCP를 통해 통신해야 한다면, 미리 * [파드 보안 표준](/docs/concepts/security/pod-security-standards/) * [파드에 대한 네트워크 정책](/ko/docs/concepts/services-networking/network-policies/) +* [쿠버네티스 API 접근 제어하기](/ko/docs/concepts/security/controlling-access) * [클러스터 보안](/docs/tasks/administer-cluster/securing-a-cluster/) -* [API 접근 통제](/ko/docs/reference/access-authn-authz/controlling-access/) * 컨트롤 플레인을 위한 [전송 데이터 암호화](/docs/tasks/tls/managing-tls-in-a-cluster/) * [Rest에서 데이터 암호화](/docs/tasks/administer-cluster/encrypt-data/) * [쿠버네티스 시크릿](/ko/docs/concepts/configuration/secret/) diff --git a/content/ko/docs/concepts/services-networking/dual-stack.md b/content/ko/docs/concepts/services-networking/dual-stack.md index 844ff7bd2b..4206a2d9d4 100644 --- a/content/ko/docs/concepts/services-networking/dual-stack.md +++ b/content/ko/docs/concepts/services-networking/dual-stack.md @@ -94,7 +94,7 @@ IPv6가 활성화된 외부 로드 밸런서를 지원하는 클라우드 공급 ## 이그레스 트래픽 -근본적으로 {{< glossary_tooltip text="CNI" term_id="cni" >}} 공급자가 전송을 구현할 수 있는 경우 공개적으로 라우팅 하거나 비공개 라우팅만 가능한 IPv6 주소 블록의 사용은 허용된다. 만약 비공개 라우팅만 가능한 IPv6를 사용하는 파드가 있고, 해당 파드가 오프 클러스터 목적지(예: 공용 인터넷)에 도달하기를 원하는 경우에는 이그레스 트래픽과 모든 응답을 위한 마스커레이딩 IP를 설정해야 한다. [ip-masq-agent](https://github.com/kubernetes-incubator/ip-masq-agent) 는 이중 스택을 인식하기에, 이중 스택 클러스터에서 마스커레이딩 IP에 ip-masq-agent 를 사용할 수 있다. +근본적으로 {{< glossary_tooltip text="CNI" term_id="cni" >}} 공급자가 전송을 구현할 수 있는 경우 공개적으로 라우팅 하거나 비공개 라우팅만 가능한 IPv6 주소 블록의 사용은 허용된다. 만약 비공개 라우팅만 가능한 IPv6를 사용하는 파드가 있고, 해당 파드가 오프 클러스터 목적지(예: 공용 인터넷)에 도달하기를 원하는 경우에는 이그레스 트래픽과 모든 응답을 위한 마스커레이딩 IP를 설정해야 한다. [ip-masq-agent](https://github.com/kubernetes-sigs/ip-masq-agent)는 이중 스택을 인식하기에, 이중 스택 클러스터에서 마스커레이딩 IP에 ip-masq-agent를 사용할 수 있다. ## 알려진 이슈들 diff --git a/content/ko/docs/concepts/services-networking/ingress.md b/content/ko/docs/concepts/services-networking/ingress.md index c4d18ada98..5b91356437 100644 --- a/content/ko/docs/concepts/services-networking/ingress.md +++ b/content/ko/docs/concepts/services-networking/ingress.md @@ -411,6 +411,13 @@ type: kubernetes.io/tls TLS 시크릿이 `https-example.foo.com` 의 정규화 된 도메인 이름(FQDN)이라고 하는 일반 이름(CN)을 포함하는 인증서에서 온 것인지 확인해야 한다. +{{< note >}} +가능한 모든 하위 도메인에 대해 인증서가 발급되어야 하기 때문에 +TLS는 기본 규칙에서 작동하지 않는다. 따라서 +`tls` 섹션의 `hosts`는 `rules`섹션의 `host`와 명시적으로 일치해야 +한다. +{{< /note >}} + {{< codenew file="service/networking/tls-example-ingress.yaml" >}} {{< note >}} diff --git a/content/ko/docs/concepts/storage/persistent-volumes.md b/content/ko/docs/concepts/storage/persistent-volumes.md index 4cf129a3e6..a74dd45de6 100644 --- a/content/ko/docs/concepts/storage/persistent-volumes.md +++ b/content/ko/docs/concepts/storage/persistent-volumes.md @@ -177,27 +177,29 @@ spec: 퍼시스턴트볼륨이 존재하고 `claimRef` 필드를 통해 퍼시스턴트볼륨클레임을 예약하지 않은 경우, 퍼시스턴트볼륨 및 퍼시스턴트볼륨클레임이 바인딩된다. 바인딩은 노드 선호도(affinity)를 포함하여 일부 볼륨 일치(matching) 기준과 관계없이 발생한다. -컨트롤 플레인은 여전히 [스토리지 클래스](https://kubernetes.io/ko/docs/concepts/storage/storage-classes/), 접근 모드 및 요청된 스토리지 크기가 유효한지 확인한다. +컨트롤 플레인은 여전히 [스토리지 클래스](/ko/docs/concepts/storage/storage-classes/), 접근 모드 및 요청된 스토리지 크기가 유효한지 확인한다. -``` +```yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: foo-pvc namespace: foo spec: + storageClassName: "" # 빈 문자열은 명시적으로 설정해야 하며 그렇지 않으면 기본 스토리지클래스가 설정됨 volumeName: foo-pv ... ``` 이 메서드는 퍼시스턴트볼륨에 대한 바인딩 권한을 보장하지 않는다. 다른 퍼시스턴트볼륨클레임에서 지정한 PV를 사용할 수 있는 경우, 먼저 해당 스토리지 볼륨을 예약해야 한다. PV의 `claimRef` 필드에 관련 퍼시스턴트볼륨클레임을 지정하여 다른 PVC가 바인딩할 수 없도록 한다. -``` +```yaml apiVersion: v1 kind: PersistentVolume metadata: name: foo-pv spec: + storageClassName: "" claimRef: name: foo-pvc namespace: foo diff --git a/content/ko/docs/concepts/storage/storage-classes.md b/content/ko/docs/concepts/storage/storage-classes.md index 38d59b6fb0..7526aff98d 100644 --- a/content/ko/docs/concepts/storage/storage-classes.md +++ b/content/ko/docs/concepts/storage/storage-classes.md @@ -89,7 +89,7 @@ volumeBindingMode: Immediate 등에 대한 완전한 재량권을 가진다. [kubernetes-sigs/sig-storage-lib-external-provisioner](https://github.com/kubernetes-sigs/sig-storage-lib-external-provisioner) 리포지터리에는 대량의 사양을 구현하는 외부 프로비저너를 작성하기 위한 라이브러리가 있다. 일부 외부 프로비저너의 목록은 -[kubernetes-incubator/external-storage](https://github.com/kubernetes-incubator/external-storage) 리포지터리에 있다. +[kubernetes-sigs/external-storage](https://github.com/kubernetes-sigs/external-dns) 리포지터리에 있다. 예를 들어, NFS는 내부 프로비저너를 제공하지 않지만, 외부 프로비저너를 사용할 수 있다. 타사 스토리지 업체가 자체 외부 diff --git a/content/ko/docs/concepts/storage/volume-snapshots.md b/content/ko/docs/concepts/storage/volume-snapshots.md index 5ad5a938eb..5903905d59 100644 --- a/content/ko/docs/concepts/storage/volume-snapshots.md +++ b/content/ko/docs/concepts/storage/volume-snapshots.md @@ -24,6 +24,8 @@ API 리소스 `PersistentVolume` 및 `PersistentVolumeClaim` 가 사용자 및 `VolumeSnapshotClass` 을 사용하면 `VolumeSnapshot` 에 속한 다른 속성을 지정할 수 있다. 이러한 속성은 스토리지 시스템에의 동일한 볼륨에서 가져온 스냅샷마다 다를 수 있으므로 `PersistentVolumeClaim` 의 `StorageClass` 를 사용하여 표현할 수는 없다. +볼륨 스냅샷은 쿠버네티스 사용자에게 완전히 새로운 볼륨을 생성하지 않고도 특정 시점에 볼륨의 콘텐츠를 복사하는 표준화된 방법을 제공한다. 예를 들어, 데이터베이스 관리자는 이 기능을 사용하여 수정 사항을 편집 또는 삭제하기 전에 데이터베이스를 백업할 수 있다. + 사용자는 이 기능을 사용할 때 다음 사항을 알고 있어야 한다. * API 객체인 `VolumeSnapshot`, `VolumeSnapshotContent`, `VolumeSnapshotClass` 는 핵심 API가 아닌, {{< glossary_tooltip term_id="CustomResourceDefinition" text="CRDs" >}}이다. diff --git a/content/ko/docs/concepts/storage/volumes.md b/content/ko/docs/concepts/storage/volumes.md index 9077eec5d2..d89c0b7241 100644 --- a/content/ko/docs/concepts/storage/volumes.md +++ b/content/ko/docs/concepts/storage/volumes.md @@ -7,13 +7,14 @@ weight: 10 컨테이너 내의 디스크에 있는 파일은 임시적이며, 컨테이너에서 실행될 때 -애플리케이션에 적지 않은 몇 가지 문제가 발생한다. 첫째, 컨테이너가 충돌되면, -kubelet은 컨테이너를 재시작시키지만, 컨테이너는 깨끗한 상태로 -시작되기 때문에 기존 파일이 유실된다. 둘째, `파드` 에서 컨테이너를 함께 실행할 때 -컨테이너 사이에 파일을 공유해야 하는 경우가 자주 발생한다. 쿠버네티스의 -`볼륨` 추상화는 이 두 가지 문제를 모두 해결한다. +애플리케이션에 적지 않은 몇 가지 문제가 발생한다. 한 가지 문제는 +컨테이너가 크래시될 때 파일이 손실된다는 것이다. kubelet은 컨테이너를 다시 시작하지만 +초기화된 상태이다. 두 번째 문제는 `Pod`에서 같이 실행되는 컨테이너간에 +파일을 공유할 때 발생한다. +쿠버네티스 {{< glossary_tooltip text="볼륨" term_id="volume" >}} 추상화는 +이러한 문제를 모두 해결한다. -[파드](/ko/docs/concepts/workloads/pods/pod/)에 대해 익숙해지는 것을 추천한다. +[파드](/ko/docs/concepts/workloads/pods/)에 대해 익숙해지는 것을 추천한다. @@ -21,86 +22,47 @@ kubelet은 컨테이너를 재시작시키지만, 컨테이너는 깨끗한 상 도커는 다소 느슨하고, 덜 관리되지만 [볼륨](https://docs.docker.com/storage/)이라는 -개념을 가지고 있다. 도커에서 볼륨은 단순한 디스크 내 디렉터리 또는 -다른 컨테이너에 있는 디렉터리다. 수명은 관리되지 않으며 최근까지는 -로컬 디스크 백업 볼륨만 있었다. 도커는 이제 볼륨 드라이버를 -제공하지만, 현재 기능은 매우 제한되어 있다(예: 도커 1.7부터 -컨테이너 당 하나의 볼륨 드라이버만 허용되고 매개 변수를 볼륨에 -전달할 방법이 없다). +개념을 가지고 있다. 도커 볼륨은 디스크에 있는 디렉터리이거나 +다른 컨테이너에 있다. 도커는 볼륨 +드라이버를 제공하지만, 기능이 다소 제한된다. -반면에, 쿠버네티스 볼륨은 그것을 둘러싼 파드와 -동일한 명시적인 수명을 가진다. 그 결과로, 볼륨은 파드 내에서 실행되는 모든 컨테이너보다 -수명이 길고, 컨테이너를 다시 시작해도 데이터가 보존된다. 물론 파드가 -존재하지 않으면, 볼륨도 존재하지 않는다. 이보다 더 중요한 것은 -쿠버네티스가 많은 유형의 볼륨을 지원하고, 파드는 -여러 볼륨을 동시에 사용할 수 있다. +쿠버네티스는 다양한 유형의 볼륨을 지원한다. {{< glossary_tooltip term_id="pod" text="파드" >}}는 +여러 볼륨 유형을 동시에 사용할 수 있다. +임시 볼륨 유형은 파드의 수명을 갖지만, 퍼시스턴트 볼륨은 +파드의 수명을 넘어 존재한다. 결과적으로, 볼륨은 파드 내에서 +실행되는 모든 컨테이너보다 오래 지속되며, 컨테이너를 다시 시작해도 데이터가 보존된다. 파드가 +더 이상 존재하지 않으면, 볼륨은 삭제된다. 기본적으로 볼륨은 디렉터리일 뿐이며, 일부 데이터가 있을 수 있으며, 파드 -내 컨테이너에서 접근할 수 있다. 디렉터리의 생성 방식, 이를 지원하는 +내 컨테이너에서 접근할 수 있다. 디렉터리의 생성 방식, 이를 지원하는 매체와 내용은 사용된 특정 볼륨의 유형에 따라 결정된다. -볼륨을 사용하기 위해 파드는 파드에 제공할 볼륨( -`.spec.volumes` -필드)과 컨테이너에 마운트 할 위치( -`.spec.containers[*].volumeMounts` -필드)를 지정한다. +볼륨을 사용하려면, `.spec.volumes` 에서 파드에 제공할 볼륨을 지정하고 +`.spec.containers[*].volumeMounts` 의 컨테이너에 해당 볼륨을 마운트할 위치를 선언한다. -컨테이너 내 프로세스는 도커 이미지와 볼륨으로 구성된 파일시스템 뷰를 -본다. [도커 -이미지](https://docs.docker.com/userguide/dockerimages/)는 파일 -시스템 계층의 루트에 있으며 모든 볼륨은 이미지 내에 지정된 경로에 -마운트된다. 볼륨은 다른 볼륨에 마운트할 수 없거나 다른 볼륨에 대한 하드 링크를 -가질 수 없다. 파드 내 각각의 컨테이너는 각각의 볼륨을 마운트 할 위치를 독립적으로 +컨테이너의 프로세스는 도커 이미지와 볼륨으로 구성된 파일시스템 +뷰를 본다. [도커 이미지](https://docs.docker.com/userguide/dockerimages/)는 +파일시스템 계층의 루트에 있다. 볼륨은 이미지 내에 지정된 경로에 +마운트된다. 볼륨은 다른 볼륨에 마운트할 수 없거나 다른 볼륨에 대한 하드 링크를 +가질 수 없다. 파드 구성의 각 컨테이너는 각 볼륨을 마운트할 위치를 독립적으로 지정해야 한다. -## 볼륨 유형들 +## 볼륨 유형들 {#volume-types} 쿠버네티스는 여러 유형의 볼륨을 지원한다. - * [awsElasticBlockStore](#awselasticblockstore) - * [azureDisk](#azuredisk) - * [azureFile](#azurefile) - * [cephfs](#cephfs) - * [cinder](#cinder) - * [configMap](#configmap) - * [csi](#csi) - * [downwardAPI](#downwardapi) - * [emptyDir](#emptydir) - * [fc (파이버 채널)](#fc) - * [flexVolume](#flexVolume) - * [flocker](#flocker) - * [gcePersistentDisk](#gcepersistentdisk) - * [gitRepo (사용중단(deprecated))](#gitrepo) - * [glusterfs](#glusterfs) - * [hostPath](#hostpath) - * [iscsi](#iscsi) - * [local](#local) - * [nfs](#nfs) - * [persistentVolumeClaim](#persistentvolumeclaim) - * [projected](#projected) - * [portworxVolume](#portworxvolume) - * [quobyte](#quobyte) - * [rbd](#rbd) - * [scaleIO](#scaleio) - * [secret](#secret) - * [storageos](#storageos) - * [vsphereVolume](#vspherevolume) - -우리는 추가 기여를 환영한다. - ### awsElasticBlockStore {#awselasticblockstore} -`awsElasticBlockStore` 볼륨은 아마존 웹 서비스 (AWS) [EBS -볼륨](https://aws.amazon.com/ebs/)을 파드에 마운트 한다. 파드를 +`awsElasticBlockStore` 볼륨은 아마존 웹 서비스 (AWS) +[EBS 볼륨](https://aws.amazon.com/ebs/)을 파드에 마운트 한다. 파드를 제거할 때 지워지는 `emptyDir` 와는 다르게 EBS 볼륨의 -내용은 유지되고, 볼륨은 마운트 해제만 된다. 이 의미는 EBS 볼륨에 -데이터를 미리 채울 수 있으며, 파드간에 데이터를 "전달(handed off)" -할 수 있다. +내용은 유지되고, 볼륨은 마운트 해제만 된다. 이 의미는 EBS 볼륨에 +데이터를 미리 채울 수 있으며, 파드 간에 데이터를 "전달(handed off)"할 수 있다. -{{< caution >}} +{{< note >}} 이를 사용하려면 먼저 `aws ec2 create-volume` 또는 AWS API를 사용해서 EBS 볼륨을 생성해야 한다. -{{< /caution >}} +{{< /note >}} `awsElasticBlockStore` 볼륨을 사용할 때 몇 가지 제한이 있다. @@ -108,7 +70,7 @@ kubelet은 컨테이너를 재시작시키지만, 컨테이너는 깨끗한 상 * 이러한 인스턴스는 EBS 볼륨과 동일한 지역과 가용성 영역에 있어야 함 * EBS는 볼륨을 마운트하는 단일 EC2 인스턴스만 지원함 -#### EBS 볼륨 생성하기 +#### AWS EBS 볼륨 생성하기 파드와 함께 EBS 볼륨을 사용하려면, 먼저 EBS 볼륨을 생성해야 한다. @@ -116,8 +78,8 @@ kubelet은 컨테이너를 재시작시키지만, 컨테이너는 깨끗한 상 aws ec2 create-volume --availability-zone=eu-west-1a --size=10 --volume-type=gp2 ``` -클러스터를 띄운 영역과 생성하는 영역이 일치하는지 확인한다. (그리고 크기와 EBS 볼륨 유형이 -사용에 적합한지 확인한다!) +클러스터를 띄운 영역과 생성하는 영역이 일치하는지 확인한다. 크기와 EBS 볼륨 유형이 +사용에 적합한지 확인한다. #### AWS EBS 구성 예시 @@ -137,37 +99,38 @@ spec: - name: test-volume # 이 AWS EBS 볼륨은 이미 존재해야 한다. awsElasticBlockStore: - volumeID: + volumeID: "" fsType: ext4 ``` -#### CSI 마이그레이션 +#### AWS EBS CSI 마이그레이션 {{< feature-state for_k8s_version="v1.17" state="beta" >}} -awsElasticBlockStore 의 CSI 마이그레이션 기능이 활성화된 경우, 기존 트리 내 플러그인에서 -`ebs.csi.aws.com` 컨테이너 스토리지 인터페이스(CSI) -드라이버로 모든 플러그인 작업을 수행한다. 이 기능을 사용하려면, 클러스터에 [AWS EBS CSI -드라이버](https://github.com/kubernetes-sigs/aws-ebs-csi-driver) -를 설치하고 `CSIMigration` 과 `CSIMigrationAWS` +`awsElasticBlockStore` 의 `CSIMigration` 기능이 활성화된 경우, 기존 인-트리 플러그인의 +모든 플러그인 작업을 `ebs.csi.aws.com` 컨테이너 스토리지 인터페이스(CSI) +드라이버로 리디렉션한다. 이 기능을 사용하려면, 클러스터에 [AWS EBS CSI +드라이버](https://github.com/kubernetes-sigs/aws-ebs-csi-driver)를 +설치하고 `CSIMigration` 과 `CSIMigrationAWS` 베타 기능을 활성화해야 한다. -#### CSI 마이그레이션 완료 +#### AWS EBS CSI 마이그레이션 완료 {{< feature-state for_k8s_version="v1.17" state="alpha" >}} -컨트롤러 매니저와 kubelet에 의해 로드되지 않도록 awsElasticBlockStore 스토리지 플러그인을 끄려면, 이 기능의 플래그를 true로 설정해야 한다. 이는 모든 워커 노드에서 `ebs.csi.aws.com` 컨테이너 스토리지 인터페이스(CSI) 드라이버 설치를 필요로 한다. +컨트롤러 관리자와 kubelet에 의해 로드되지 않도록 `awsElasticBlockStore` 스토리지 +플러그인을 끄려면, `CSIMigrationAWSComplete` 플래그를 `true` 로 설정한다. 이 기능은 모든 워커 노드에서 `ebs.csi.aws.com` 컨테이너 스토리지 인터페이스(CSI) 드라이버 설치를 필요로 한다. ### azureDisk {#azuredisk} -`azureDisk` 는 Microsoft Azure [데이터 디스크](https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-linux-about-disks-vhds/)를 파드에 마운트하는 데 사용한다. +`azureDisk` 볼륨 유형은 Microsoft Azure [데이터 디스크](https://docs.microsoft.com/en-us/azure/aks/csi-storage-drivers)를 파드에 마운트한다. -더 자세한 내용은 [여기](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/azure_disk/README.md)에서 확인할 수 있다. +더 자세한 내용은 [`azureDisk` 볼륨 플러그인](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/azure_disk/README.md)을 참고한다. -#### CSI 마이그레이션 +#### azureDisk CSI 마이그레이션 {{< feature-state for_k8s_version="v1.19" state="beta" >}} -azureDisk의 CSI 마이그레이션 기능이 활성화된 경우, 기존 트리 내 플러그인에서 +`azureDisk` 의 `CSIMigration` 기능이 활성화된 경우, 기존 트리 내 플러그인에서 `disk.csi.azure.com` 컨테이너 스토리지 인터페이스(CSI) 드라이버로 모든 플러그인 작업을 수행한다. 이 기능을 사용하려면, 클러스터에 [Azure 디스크 CSI 드라이버](https://github.com/kubernetes-sigs/azuredisk-csi-driver) @@ -176,46 +139,46 @@ azureDisk의 CSI 마이그레이션 기능이 활성화된 경우, 기존 트리 ### azureFile {#azurefile} -`azureFile` 은 Microsoft Azure 파일 볼륨 (SMB 2.1과 3.0)을 파드에 마운트하는데 -사용한다. +`azureFile` 볼륨 유형은 Microsoft Azure 파일 볼륨(SMB 2.1과 3.0)을 파드에 +마운트한다. -더 자세한 내용은 [여기](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/azure_file/README.md)에서 확인할 수 있다. +더 자세한 내용은 [`azureFile` 볼륨 플러그인](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/azure_file/README.md)을 참고한다. -#### CSI 마이그레이션 +#### azureFile CSI 마이그레이션 {{< feature-state for_k8s_version="v1.15" state="alpha" >}} -azureFile의 CSI 마이그레이션 기능이 활성화된 경우, 기존 트리 내 플러그인에서 +`azureFile` 의 `CSIMigration` 기능이 활성화된 경우, 기존 트리 내 플러그인에서 `file.csi.azure.com` 컨테이너 스토리지 인터페이스(CSI) 드라이버로 모든 플러그인 작업을 수행한다. 이 기능을 사용하려면, 클러스터에 [Azure 파일 CSI 드라이버](https://github.com/kubernetes-sigs/azurefile-csi-driver) 를 설치하고 `CSIMigration` 과 `CSIMigrationAzureFile` 알파 기능을 활성화해야 한다. -### cephfs {#cephfs} +### cephfs `cephfs` 볼륨은 기존 CephFS 볼륨을 파드에 마운트 할 수 있다. 파드를 제거할 때 지워지는 `emptyDir` 와는 다르게 cephfs 볼륨의 내용은 유지되고, 볼륨은 그저 마운트 -해제만 된다. 이 의미는 `cephfs` 볼륨에 데이터를 미리 채울 수 있으며, -파드 간에 데이터를 "전달(handed off)" 할 수 있다. CephFS는 여러 작성자가 +해제만 된다. 이 의미는 `cephfs` 볼륨에 데이터를 미리 채울 수 있으며, +해당 데이터는 파드 간에 공유될 수 있다. `cephfs` 볼륨은 여러 작성자가 동시에 마운트할 수 있다. -{{< caution >}} +{{< note >}} CephFS를 사용하기 위해선 먼저 Ceph 서버를 실행하고 공유를 내보내야 한다. -{{< /caution >}} +{{< /note >}} 더 자세한 내용은 [CephFS 예시](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/volumes/cephfs/)를 참조한다. -### cinder {#cinder} +### cinder {{< note >}} -전제 조건: 오픈스택 클라우드 공급자로 구성된 쿠버네티스. +쿠버네티스는 오픈스택 클라우드 공급자로 구성되어야 한다. {{< /note >}} -`cinder` 는 오픈스택 Cinder 볼륨을 파드에 마운트하는 데 사용한다. +`cinder` 볼륨 유형은 오픈스택 Cinder 볼륨을 파드에 마운트하는데 사용된다. -#### Cinder 볼륨 예시 구성 +#### Cinder 볼륨 구성 예시 ```yaml apiVersion: v1 @@ -233,33 +196,32 @@ spec: - name: test-volume # 이 오픈스택 볼륨은 이미 존재해야 한다. cinder: - volumeID: + volumeID: "" fsType: ext4 ``` -#### CSI 마이그레이션 +#### 오픈스택 CSI 마이그레이션 {{< feature-state for_k8s_version="v1.18" state="beta" >}} -Cinder의 CSI 마이그레이션 기능이 활성화된 경우, 기존 트리 내 플러그인에서 +Cinder의 `CSIMigration` 기능이 활성화된 경우, 기존 트리 내 플러그인에서 `cinder.csi.openstack.org` 컨테이너 스토리지 인터페이스(CSI) 드라이버로 모든 플러그인 작업을 수행한다. 이 기능을 사용하려면, 클러스터에 [오픈스택 Cinder CSI 드라이버](https://github.com/kubernetes/cloud-provider-openstack/blob/master/docs/using-cinder-csi-plugin.md) 를 설치하고 `CSIMigration` 과 `CSIMigrationOpenStack` 베타 기능을 활성화해야 한다. -### configMap {#configmap} +### 컨피그맵(configMap) {#configmap} -[`configMap`](/docs/tasks/configure-pod-container/configure-pod-configmap/) 리소스는 +[컨피그맵](/docs/tasks/configure-pod-container/configure-pod-configmap/)은 구성 데이터를 파드에 주입하는 방법을 제공한다. -`ConfigMap` 오브젝트에 저장된 데이터는 `configMap` 유형의 볼륨에서 참조되고 +컨피그맵에 저장된 데이터는 `configMap` 유형의 볼륨에서 참조되고 그런 다음에 파드에서 실행되는 컨테이너화된 애플리케이션이 소비한다. -`configMap` 오브젝트를 참조할 때, 간단하게 참조하기 위한 볼륨의 이름을 -제공할 수 있다. ConfigMap의 특정 항목에 사용할 경로를 -사용자 정의할 수 있다. -예를 들어, `log-config` ConfigMap을 `configmap-pod` 라 부르는 파드에 마운트하려면 -아래 YAML을 사용할 수 있다. +컨피그맵을 참조할 때, 볼륨에 컨피그맵의 이름을 +제공한다. 컨피그맵의 특정 항목에 사용할 경로를 +사용자 정의할 수 있다. 다음 구성은 `log-config` 컨피그맵을 +`configmap-pod` 라 부르는 파드에 마운트하는 방법을 보여준다. ```yaml apiVersion: v1 @@ -282,48 +244,42 @@ spec: path: log_level ``` -`log-config` ConfigMap은 볼륨으로 마운트되며, `log_level` 항목에 -저장된 모든 컨텐츠는 파드의 "`/etc/config/log_level`" 경로에 마운트 된다. +`log-config` 컨피그맵은 볼륨으로 마운트되며, `log_level` 항목에 +저장된 모든 컨텐츠는 파드의 `/etc/config/log_level` 경로에 마운트된다. 이 경로는 볼륨의 `mountPath` 와 `log_level` 로 키가 지정된 `path` 에서 파생된다. -{{< caution >}} -ConfigMap 볼륨을 사용하려면 먼저 [ConfigMap](/docs/tasks/configure-pod-container/configure-pod-configmap/)을 생성해야 한다. -{{< /caution >}} - {{< note >}} -ConfigMap을 [subPath](#subpath-사용하기) 볼륨 마운트로 사용하는 컨테이너는 ConfigMap +* 컨피그맵을 [`subPath`](#subpath-사용하기) 볼륨 마운트로 사용하는 컨테이너는 컨피그맵 업데이트를 수신하지 않는다. -{{< /note >}} -{{< note >}} -텍스트 데이터는 UTF-8 문자 인코딩을 사용하는 파일로 노출된다. 다른 문자 인코딩을 사용하려면, binaryData를 사용한다. +* 텍스트 데이터는 UTF-8 문자 인코딩을 사용하는 파일로 노출된다. 다른 문자 인코딩의 경우, `binaryData` 를 사용한다. {{< /note >}} - ### downwardAPI {#downwardapi} -`downwardAPI` 볼륨은 애플리케이션에서 다운워드(downward) API 데이터를 사용할 수 있도록 하는데 사용된다. +`downwardAPI` 볼륨은 애플리케이션에서 다운워드(downward) API 데이터를 사용할 수 있도록 한다. 이것은 디렉터리를 마운트하고 요청된 데이터를 일반 텍스트 파일로 작성한다. {{< note >}} -Downward API를 [subPath](#subpath-사용하기) 볼륨 마운트로 사용하는 컨테이너는 Downward API +다운워드 API를 [`subPath`](#subpath-사용하기) 볼륨 마운트로 사용하는 컨테이너는 다운워드 API 업데이트를 수신하지 않는다. {{< /note >}} -더 자세한 내용은 [`downwardAPI` 볼륨 예시](/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/)를 참조한다. +더 자세한 내용은 [다운워드 API 예시](/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/)를 참고한다. ### emptyDir {#emptydir} -`emptyDir` 볼륨은 파드가 노드에 할당 될 때 처음 생성되며, -해당 노드에서 파드가 실행되는 동안에만 존재한다. 이름에서 알 수 있듯이 -`emptyDir` 볼륨은 처음에는 비어있다. 파드내 모든 컨테이너는 `emptyDir` 볼륨에서 동일한 -파일을 읽고 쓸수 있지만, 볼륨은 각각의 컨테이너에서 동일하거나 -다른 경로에 마운트 될 수 있다. 어떤 이유로든 노드에서 파드를 제거하면 +`emptyDir` 볼륨은 파드가 노드에 할당될 때 처음 생성되며, +해당 노드에서 파드가 실행되는 동안에만 존재한다. 이름에서 알 수 있듯이 +`emptyDir` 볼륨은 처음에는 비어있다. 파드 내 모든 컨테이너는 `emptyDir` 볼륨에서 동일한 +파일을 읽고 쓸 수 있지만, 해당 볼륨은 각각의 컨테이너에서 동일하거나 +다른 경로에 마운트될 수 있다. 어떤 이유로든 노드에서 파드가 제거되면 `emptyDir` 의 데이터가 영구적으로 삭제된다. {{< note >}} -컨테이너의 충돌은 노드에서 파드를 제거하지 *않기* 때문에, `emptyDir` 볼륨의 데이터는 컨테이너 충돌에서 안전하다. +컨테이너가 크래시되는 것은 노드에서 파드를 제거하지 *않는다*. `emptyDir` 볼륨의 데이터는 +컨테이너 크래시로부터 안전하다. {{< /note >}} `emptyDir` 의 일부 용도는 다음과 같다. @@ -333,15 +289,14 @@ Downward API를 [subPath](#subpath-사용하기) 볼륨 마운트로 사용하 * 웹 서버 컨테이너가 데이터를 처리하는 동안 컨텐츠 매니저 컨테이너가 가져오는 파일을 보관 -기본적으로, `emptyDir` 볼륨은 노드를 지원하는 모든 매체에 -저장된다(환경에 따라 디스크, SSD 또는 네트워크 스토리지일 -수 있다). 그러나 `emptyDir.medium` 필드를 `"Memory"` 로 설정해서 -쿠버네티스에 tmpfs(RAM 기반 파일 시스템)를 마운트하도록 할 수 있다. +환경에 따라, `emptyDir` 볼륨은 디스크, SSD 또는 네트워크 스토리지와 +같이 노드를 지원하는 모든 매체에 저장된다. 그러나, `emptyDir.medium` 필드를 +`"Memory"`로 설정하면, 쿠버네티스에 tmpfs(RAM 기반 파일시스템)를 마운트하도록 할 수 있다. tmpfs는 매우 빠르지만, 디스크와 다르게 노드 재부팅시 tmpfs가 지워지고, 작성하는 모든 파일이 컨테이너 메모리 제한에 포함된다. -#### 파드 예시 +#### emptyDir 구성 예시 ```yaml apiVersion: v1 @@ -362,69 +317,72 @@ spec: ### fc (파이버 채널) {#fc} -`fc` 볼륨은 기존 파이버 채널 볼륨을 파드에 마운트할 수 있게 한다. -볼륨 구성에서 `targetWWNs` 파라미터를 사용하여 단일 또는 -다중 대상 월드 와이드 이름을 지정할 수 있다. 만약 여러 WWN이 지정된 경우, +`fc` 볼륨 유형은 기존 파이버 채널 블록 스토리지 볼륨을 +파드에 마운트할 수 있게 한다. 볼륨 구성에서 `targetWWNs` 파라미터를 사용하여 +단일 또는 다중 대상 월드 와이드 이름(WWN)을 지정할 수 있다. 만약 여러 WWN이 지정된 경우, targetWWN은 해당 WWN이 다중 경로 연결에서 온 것으로 예상한다. -{{< caution >}} -이러한 LUN (볼륨)을 할당하고 대상 WWN에 마스킹하도록 FC SAN Zoning을 구성해야만 쿠버네티스 호스트가 해당 LUN에 접근할 수 있다. -{{< /caution >}} +{{< note >}} +이러한 LUN (볼륨)을 할당하고 대상 WWN에 마스킹하도록 FC SAN Zoning을 구성해야만 +쿠버네티스 호스트가 해당 LUN에 접근할 수 있다. +{{< /note >}} -더 자세한 내용은 [FC 예시](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/fibre_channel) 를 참조한다. +더 자세한 내용은 [파이버 채널 예시](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/fibre_channel)를 참고한다. -### flocker {#flocker} +### flocker (사용 중단됨(deprecated)){#flocker} -[Flocker](https://github.com/ClusterHQ/flocker)는 오픈소스 클러스터 컨테이너 데이터 볼륨 매니저이다. 다양한 +[Flocker](https://github.com/ClusterHQ/flocker)는 오픈소스이고, 클러스터 +컨테이너 데이터 볼륨 매니저이다. Flocker는 다양한 스토리지 백엔드가 지원하는 데이터 볼륨 관리와 오케스트레이션을 제공한다. `flocker` 볼륨은 Flocker 데이터셋을 파드에 마운트할 수 있게 한다. 만약 Flocker내에 데이터셋이 없는 경우, 먼저 Flocker CLI 또는 Flocker API를 사용해서 생성해야 한다. 만약 데이터셋이 이미 있다면 Flocker는 파드가 스케줄 되어있는 노드에 다시 연결한다. 이는 필요에 -따라 파드 간에 데이터를 "전달(handed off)" 할 수 있다는 의미이다. +따라 파드 간에 데이터를 공유할 수 있다는 의미이다. -{{< caution >}} +{{< note >}} `flocker` 볼륨을 사용하기 위해서는 먼저 Flocker를 설치하고 실행한다. -{{< /caution >}} +{{< /note >}} 더 자세한 내용은 [Flocker 예시](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/flocker)를 참조한다. -### gcePersistentDisk {#gcepersistentdisk} +### gcePersistentDisk -`gcePersistentDisk` 볼륨은 구글 컴퓨트 엔진 (GCE) -[퍼시스턴트 디스크](https://cloud.google.com/compute/docs/disks)를 파드에 마운트 한다. 파드를 -제거할 때 지워지는 `emptyDir` 와는 다르게 PD의 내용은 유지되고, -볼륨은 마운트 해제만 된다. 이는 PD에 데이터를 -미리 채울 수 있으며, 파드간에 데이터를 "전달(handed off)" 할 수 있다는 것을 의미한다. +`gcePersistentDisk` 볼륨은 구글 컴퓨트 엔진(GCE) +[영구 디스크](https://cloud.google.com/compute/docs/disks)(PD)를 파드에 마운트한다. +파드를 제거할 때 지워지는 `emptyDir` 와는 다르게, PD의 내용은 유지되고, +볼륨은 마운트 해제만 된다. 이는 PD에 데이터를 +미리 채울 수 있으며, 파드 간에 데이터를 공유할 수 있다는 것을 의미한다. -{{< caution >}} +{{< note >}} `gcePersistentDisk` 를 사용하려면 먼저 PD를 `gcloud`, GCE API 또는 UI를 사용해서 생성해야 한다. -{{< /caution >}} +{{< /note >}} -`gcePersistentDisk` 를 사용할 때 몇가지 제한이 있다. +`gcePersistentDisk` 를 사용할 때 몇 가지 제한이 있다. -* 파드가 실행중인 노드는 GCE VM이어야 함 -* 이러한 VM은 PD와 동일한 GCE 프로젝트와 영역에 있어야 함 +* 파드가 실행 중인 노드는 GCE VM이어야 함 +* 이러한 VM은 영구 디스크와 동일한 GCE 프로젝트와 영역에 있어야 함 -PD의 특징은 여러 고객이 동시에 읽기 전용으로 마운트할 수 -있다는 것이다. 즉, 데이터셋으로 PD를 미리 채운 다음, 필요한 -만큼 많은 파드에서 병렬로 제공할수 있다. 불행하게도, -PD는 읽기-쓰기 모드에서 단일 고객만 마운트할 수 있으며 -동시 쓰기는 허용되지 않는다. +GCE 영구 디스크의 한 가지 기능은 영구 디스크에 대한 동시 읽기 전용 접근이다. +`gcePersistentDisk` 볼륨을 사용하면 여러 사용자가 영구 디스크를 읽기 전용으로 +동시에 마운트할 수 있다. 즉, PD를 데이터 세트로 미리 채운 다음 +필요한 만큼 많은 파드에서 병렬로 제공할 수 있다. 불행히도, +PD는 읽기-쓰기 모드에서 단일 사용자만 마운트할 수 있다. 동시 +쓰기는 허용되지 않는다. -ReplicationController가 제어하는 파드에서 PD를 사용하는 것은 -PD가 읽기 전용이거나 레플리카의 수가 0 또는 1이 아니라면 실패할 것이다. +PD가 읽기 전용이거나 레플리카의 수가 0 또는 1이 아니라면 레플리카셋(ReplicaSet)으로 제어되는 +파드가 있는 GCE 영구 디스크를 사용할 수 없다. -#### PD 생성하기 +#### GCE 영구 디스크 생성하기 {#gce-create-persistent-disk} -GCE PD를 파드와 함께 사용하려면 디스크를 먼저 생성해야 한다. +GCE 영구 디스크를 파드와 함께 사용하려면, 디스크를 먼저 생성해야 한다. ```shell gcloud compute disks create --size=500GB --zone=us-central1-a my-data-disk ``` -#### 예시 파드 +#### GCE 영구 디스크 구성 예시 ```yaml apiVersion: v1 @@ -446,18 +404,26 @@ spec: fsType: ext4 ``` -#### 지역(Regional) 퍼시스턴트 디스크 -[지역(Regional) 퍼시스턴트 디스크](https://cloud.google.com/compute/docs/disks/#repds) 기능을 사용하면 동일한 영역 내의 두 영역에서 사용할 수 있는 퍼시스턴트 디스크를 생성할 수 있다. 이 기능을 사용하려면 볼륨을 퍼시스턴트볼륨으로 프로비저닝 해야 한다. 파드에서 직접 볼륨을 참조하는 것은 지원되지 않는다. +#### 리전 영구 디스크 + +[리전 영구 디스크](https://cloud.google.com/compute/docs/disks/#repds) +기능을 사용하면 동일한 영역 내의 두 영역에서 사용할 수 있는 영구 디스크를 +생성할 수 있다. 이 기능을 사용하려면 볼륨을 퍼시스턴트볼륨(PersistentVolume)으로 +프로비저닝해야 한다. 파드에서 직접 볼륨을 참조하는 것은 지원되지 않는다. + +#### 리전 PD 퍼시스턴트볼륨을 수동으로 프로비저닝하기 + +[GCE PD용 스토리지클래스](/ko/docs/concepts/storage/storage-classes/#gce-pd)를 +사용해서 동적 프로비저닝이 가능하다. +퍼시스턴트볼륨을 생성하기 전에 영구 디스크를 생성해야만 한다. -#### 지역(Regional) PD 퍼시스턴트볼륨을 수동으로 프로비저닝하기 -[GCE PD용 스토리지클래스](/ko/docs/concepts/storage/storage-classes/#gce-pd)를 사용해서 동적 프로비저닝이 가능하다. -PersistentVolume을 생성하기 전에 PD를 생성해야만 한다. ```shell gcloud compute disks create --size=500GB my-data-disk - --region us-central1 - --replica-zones us-central1-a,us-central1-b + --region us-central1 + --replica-zones us-central1-a,us-central1-b ``` -PersistentVolume 사양 예시 + +#### 리전 영구 디스크 구성 예시 ```yaml apiVersion: v1 @@ -483,29 +449,28 @@ spec: - us-central1-b ``` -#### CSI 마이그레이션 +#### GCE CSI 마이그레이션 {{< feature-state for_k8s_version="v1.17" state="beta" >}} -GCE PD의 CSI 마이그레이션 기능이 활성화된 경우 기존 트리 내 플러그인에서 +GCE PD의 `CSIMigration` 기능이 활성화된 경우 기존 인-트리 플러그인에서 `pd.csi.storage.gke.io` 컨테이너 스토리지 인터페이스(CSI) -드라이버로 모든 플러그인 작업을 수행한다. 이 기능을 사용하려면, 클러스터에 [GCE PD CSI +드라이버로 모든 플러그인 작업을 리디렉션한다. 이 기능을 사용하려면, 클러스터에 [GCE PD CSI 드라이버](https://github.com/kubernetes-sigs/gcp-compute-persistent-disk-csi-driver) 를 설치하고 `CSIMigration` 과 `CSIMigrationGCE` 베타 기능을 활성화해야 한다. -### gitRepo (사용 중단(deprecated)) {#gitrepo} +### gitRepo (사용 중단됨) {#gitrepo} {{< warning >}} -gitRepo 볼륨 유형은 사용 중단(deprecated)되었다. git repo가 있는 컨테이너를 프로비전 하려면 초기화 컨테이너(InitContainer)에 [EmptyDir](#emptydir)을 마운트하고, 여기에 git을 사용해서 repo를 복제하고, [EmptyDir](#emptydir)을 파드 컨테이너에 마운트 한다. +`gitRepo` 볼륨 유형은 사용 중단되었다. git repo가 있는 컨테이너를 프로비전 하려면 초기화 컨테이너(InitContainer)에 [EmptyDir](#emptydir)을 마운트하고, 여기에 git을 사용해서 repo를 복제하고, [EmptyDir](#emptydir)을 파드 컨테이너에 마운트 한다. {{< /warning >}} -`gitRepo` 볼륨은 볼륨 플러그인으로 할 수 있는 예시이다. 빈 -디렉터리를 마운트하고 파드가 사용할 수 있도록 해당 디렉터리에 git 리포지트리를 -복제한다. 미래에는 모든 이용 사례에 대해 쿠버네티스 API를 확장하는 대신에 -이런 볼륨은 훨씬 더 분리된 모델로 이동될 수 있다. +`gitRepo` 볼륨은 볼륨 플러그인의 예시이다. 이 플러그인은 +빈 디렉터리를 마운트하고 파드가 사용할 수 있도록 이 디렉터리에 git 리포지터리를 +복제한다. -여기 gitRepo 볼륨의 예시가 있다. +여기 `gitRepo` 볼륨의 예시가 있다. ```yaml apiVersion: v1 @@ -526,19 +491,19 @@ spec: revision: "22f1d8406d464b0c0874075539c1f2e96c253775" ``` -### glusterfs {#glusterfs} +### glusterfs `glusterfs` 볼륨을 사용하면 [Glusterfs](https://www.gluster.org) (오픈 -소스 네트워크 파일시스템) 볼륨을 파드에 마운트 할수 있다. 파드를 +소스 네트워크 파일시스템) 볼륨을 파드에 마운트할 수 있다. 파드를 제거할 때 지워지는 `emptyDir` 와는 다르게 `glusterfs` 볼륨의 내용은 유지되고, 볼륨은 마운트 해제만 된다. 이 의미는 -glusterfs 볼륨에 데이터를 미리 채울 수 있으며, 파드간에 데이터를 -"전달(handed off)" 할 수 있다. GlusterFS는 여러 작성자가 동시에 +glusterfs 볼륨에 데이터를 미리 채울 수 있으며, 파드 간에 데이터를 +공유할 수 있다. GlusterFS는 여러 작성자가 동시에 마운트할 수 있다. -{{< caution >}} +{{< note >}} 사용하려면 먼저 GlusterFS를 설치하고 실행해야 한다. -{{< /caution >}} +{{< /note >}} 더 자세한 내용은 [GlusterFS 예시](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/volumes/glusterfs)를 본다. @@ -576,14 +541,12 @@ glusterfs 볼륨에 데이터를 미리 채울 수 있으며, 파드간에 데 * 동일한 구성(파드템플릿으로 생성한 것과 같은)을 가진 파드는 노드에 있는 파일이 다르기 때문에 노드마다 다르게 동작할 수 있다. -* 쿠버네티스가 계획한 대로 리소스 인식 스케줄링을 추가하면 `hostPath` 에서 - 사용되는 리소스를 설명할 수 없다. * 기본 호스트에 생성된 파일 또는 디렉터리는 root만 쓸 수 있다. 프로세스를 [특권을 가진(privileged) 컨테이너](/docs/tasks/configure-pod-container/security-context/)에서 루트로 실행하거나 `hostPath` 볼륨에 쓸 수 있도록 호스트의 파일 권한을 수정해야 한다. -#### 파드 예시 +#### hostPath 구성 예시 ```yaml apiVersion: v1 @@ -607,10 +570,13 @@ spec: ``` {{< caution >}} -`FileOrCreate` 모드에서는 파일의 상위 디렉터리가 생성되지 않는다. 마운트된 파일의 상위 디렉터리가 없으면 파드가 시작되지 않는다. 이 모드가 작동하도록 하기 위해 다음과 같이 디렉터리와 파일을 별도로 마운트할 수 있다. +`FileOrCreate` 모드는 파일의 상위 디렉터리를 생성하지 않는다. 마운트된 파일의 상위 디렉터리가 +없으면 파드가 시작되지 않는다. 이 모드가 작동하는지 확인하려면, +[`FileOrCreate` 구성](#hostpath-fileorcreate-example)에 표시된대로 +디렉터리와 파일을 별도로 마운트할 수 있다. {{< /caution >}} -#### FileOrCreate 파드 예시 +#### hostPath FileOrCreate 구성 예시 {#hostpath-fileorcreate-example} ```yaml apiVersion: v1 @@ -638,49 +604,47 @@ spec: type: FileOrCreate ``` -### iscsi {#iscsi} +### iscsi `iscsi` 볼륨을 사용하면 기존 iSCSI (SCSI over IP) 볼륨을 파드에 마운트 -할수 있다. 파드를 제거할 때 지워지는 `emptyDir` 와는 +할수 있다. 파드를 제거할 때 지워지는 `emptyDir` 와는 다르게 `iscsi` 볼륨의 내용은 유지되고, 볼륨은 그저 마운트 해제만 된다. 이 의미는 iscsi 볼륨에 데이터를 미리 채울 수 있으며, -파드간에 데이터를 "전달(handed off)" 할 수 있다는 것이다. +파드간에 데이터를 공유할 수 있다는 것이다. -{{< caution >}} +{{< note >}} 사용하려면 먼저 iSCSI 서버를 실행하고 볼륨을 생성해야 한다. -{{< /caution >}} +{{< /note >}} iSCSI 특징은 여러 고객이 읽기 전용으로 마운트할 수 -있다는 것이다. 즉, 데이터셋으로 사전에 볼륨을 채운다음, -필요한 만큼 많은 파드에서 병렬로 제공할 수 있다. 불행하게도, -iSCSI 볼륨은 읽기-쓰기 모드에서는 단일 고객만 마운트할 수 있으며 +있다는 것이다. 즉, 데이터셋으로 사전에 볼륨을 채운다음, +필요한 만큼 많은 파드에서 병렬로 제공할 수 있다. 불행하게도, +iSCSI 볼륨은 읽기-쓰기 모드에서는 단일 고객만 마운트할 수 있다. 동시 쓰기는 허용되지 않는다. 더 자세한 내용은 [iSCSI 예시](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/volumes/iscsi)를 본다. -### local {#local} - -{{< feature-state for_k8s_version="v1.14" state="stable" >}} +### local `local` 볼륨은 디스크, 파티션 또는 디렉터리 같은 마운트된 로컬 스토리지 장치를 나타낸다. -로컬 볼륨은 정적으로 생성된 퍼시스턴트볼륨(PersistentVolume)으로만 사용할 수 있다. 동적으로 -프로비저닝된 것은 아직 지원되지 않는다. +로컬 볼륨은 정적으로 생성된 퍼시스턴트볼륨으로만 사용할 수 있다. 동적으로 +프로비저닝된 것은 지원되지 않는다. -`hostPath` 볼륨에 비해 로컬 볼륨은 퍼시스턴트볼륨의 노드 어피니티를 살펴봄으로써 -볼륨의 노드 제약 조건을 인식하기 때문에 수동으로 파드를 노드에 예약하지 않고도 -내구성과 휴대성을 갖춘 방식으로 사용할 수 있다. +`hostPath` 볼륨에 비해 `local` 볼륨은 수동으로 파드를 노드에 예약하지 않고도 +내구성과 휴대성을 갖춘 방식으로 사용된다. 시스템은 +퍼시스턴트볼륨의 노드 어피니티를 확인하여 볼륨의 노드 제약 조건을 인식한다. -그러나 로컬 볼륨은 여전히 기본 노드의 가용성을 따르며 +그러나 `local` 볼륨은 여전히 기본 노드의 가용성을 따르며 모든 애플리케이션에 적합하지는 않는다. 만약 노드가 비정상 상태가 -되면 로컬 볼륨도 접근할 수 없게 되고, 파드를 실행할 수 -없게 된다. 로컬 볼륨을 사용하는 애플리케이션은 기본 디스크의 +되면 `local` 볼륨도 접근할 수 없게 되고, 파드를 실행할 수 +없게 된다. `local` 볼륨을 사용하는 애플리케이션은 기본 디스크의 내구 특성에 따라 이러한 감소되는 가용성과 데이터 손실 가능성도 허용할 수 있어야 한다. -다음은 `local` 볼륨과 `nodeAffinity` 를 사용하는 퍼시스턴트볼륨 -사양 예시이다. +다음의 예시는 `local` 볼륨과 `nodeAffinity` 를 사용하는 퍼시스턴트볼륨을 +보여준다. ```yaml apiVersion: v1 @@ -707,18 +671,18 @@ spec: - example-node ``` -로컬 볼륨을 사용할 때는 퍼시스턴트볼륨의 `nodeAffinity` 가 필요하다. 이를 통해 -쿠버네티스 스케줄러는 올바른 노드의 로컬 볼륨을 파드가 사용할 수 있도록 올바르게 -스케줄할 수 있다. +`local` 볼륨을 사용하는 경우 퍼시스턴트볼륨 `nodeAffinity` 를 설정해야 합니다. +쿠버네티스 스케줄러는 퍼시스턴트볼륨 `nodeAffinity` 를 사용하여 +파드를 올바른 노드로 스케줄한다. 퍼시스턴트볼륨의 `volumeMode` 을 "Block" (기본값인 "Filesystem"을 대신해서)으로 설정하면 로컬 볼륨을 원시 블록 장치로 노출할 수 있다. 로컬 볼륨을 사용할 때는 `volumeBindingMode` 가 `WaitForFirstConsumer` 로 설정된 -스토리지클래스(StorageClass)를 생성하는 것을 권장한다. -[예시](/ko/docs/concepts/storage/storage-classes/#local)를 본다. 볼륨 바인딩을 지연시키는 것은 -퍼시스턴트볼륨클래임 바인딩 결정도 노드 리소스 요구사항, 노드 셀렉터, -파드 어피니티 그리고 파드 안티 어피니티와 +스토리지클래스(StorageClass)를 생성하는 것을 권장한다. 자세한 내용은 +local [스토리지클래스(StorageClas)](/ko/docs/concepts/storage/storage-classes/#local) 예제를 참고한다. +볼륨 바인딩을 지연시키는 것은 퍼시스턴트볼륨클래임 바인딩 결정도 +노드 리소스 요구사항, 노드 셀렉터, 파드 어피니티 그리고 파드 안티 어피니티와 같이 파드가 가질 수 있는 다른 노드 제약 조건으로 평가되도록 만든다. 로컬 볼륨 라이프사이클의 향상된 관리를 위해 외부 정적 @@ -733,18 +697,18 @@ spec: 필요하다. {{< /note >}} -### nfs {#nfs} +### nfs `nfs` 볼륨을 사용하면 기존 NFS (네트워크 파일 시스템) 볼륨을 파드에 마운트 -할수 있다. 파드를 제거할 때 지워지는 `emptyDir` 와는 +할수 있다. 파드를 제거할 때 지워지는 `emptyDir` 와는 다르게 `nfs` 볼륨의 내용은 유지되고, 볼륨은 그저 마운트 해제만 된다. 이 의미는 NFS 볼륨에 데이터를 미리 채울 수 있으며, -파드간에 데이터를 "전달(handed off)" 할 수 있다는 뜻이다. NFS는 여러 작성자가 +파드 간에 데이터를 공유할 수 있다는 뜻이다. NFS는 여러 작성자가 동시에 마운트할 수 있다. -{{< caution >}} +{{< note >}} 사용하려면 먼저 NFS 서버를 실행하고 공유를 내보내야 한다. -{{< /caution >}} +{{< /note >}} 더 자세한 내용은 [NFS 예시](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/nfs)를 본다. @@ -758,27 +722,59 @@ iSCSI 볼륨와 같은)를 "클레임" 할 수 있는 방법이다. 더 자세한 내용은 [퍼시스턴트볼륨 예시](/ko/docs/concepts/storage/persistent-volumes)를 본다. -### projected {#projected} +### portworxVolume {#portworxvolume} + +`portworxVolume` 은 쿠버네티스와 하이퍼컨버지드(hyperconverged)를 실행하는 탄력적인 블록 스토리지 +계층이다. [Portworx](https://portworx.com/use-case/kubernetes-storage/)는 서버의 +스토리지를 핑거프린팅하고(fingerprints), 기능에 기반하여 계층화하고, 그리고 여러 서버에 걸쳐 용량을 집계한다. +Portworx는 가상 머신 내 게스트 또는 베어 메탈 리눅스 노드 위에서 실행된다. + +`portworxVolume` 은 쿠버네티스를 통해 동적으로 생성되거나 +사전에 프로비전할 수 있으며 쿠버네티스 파드 내에서 참조할 수 있다. +다음은 사전에 프로비저닝된 Portworx 볼륨을 참조하는 파드의 예시이다. + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: test-portworx-volume-pod +spec: + containers: + - image: k8s.gcr.io/test-webserver + name: test-container + volumeMounts: + - mountPath: /mnt + name: pxvol + volumes: + - name: pxvol + # 이 Portworx 볼륨은 이미 존재해야 한다. + portworxVolume: + volumeID: "pxvol" + fsType: "" +``` + +{{< note >}} +파드에서 사용하기 이전에 먼저 이름이 `pxvol` 인 PortworxVolume이 +있는지 확인한다. +{{< /note >}} + +자세한 내용은 [Portworx 볼륨](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/portworx/README.md) 예제를 참고한다. + +### projected `Projected` 볼륨은 여러 기존 볼륨 소스를 동일한 디렉터리에 매핑한다. 현재, 다음 유형의 볼륨 소스를 프로젝티드한다. -- [`secret`](#secret) -- [`downwardAPI`](#downwardapi) -- [`configMap`](#configmap) -- `serviceAccountToken` +* [`secret`](#secret) +* [`downwardAPI`](#downwardapi) +* [`configMap`](#configmap) +* `serviceAccountToken` 모든 소스는 파드와 동일한 네임스페이스에 있어야 한다. 더 자세한 내용은 [올인원 볼륨 디자인 문서](https://github.com/kubernetes/community/blob/{{< param "githubbranch" >}}/contributors/design-proposals/node/all-in-one-volume.md)를 본다. -서비스 어카운트 토큰의 프로젝션은 쿠버네티스 1.11에 기능이 -도입되었고 1.12에서 베타로 승격되었다. -1.11에서 이 기능을 활성화 하려면 `TokenRequestProjection` -[기능 게이트](/ko/docs/reference/command-line-tools-reference/feature-gates/)를 -True로 명시적인 설정이 필요하다. - -#### 시크릿, downward API 그리고 configmap이 있는 파드 예시. +#### 시크릿, 다운워드 API 그리고 컨피그맵이 있는 구성 예시 {#example-configuration-secret-downwardapi-configmap} ```yaml apiVersion: v1 @@ -818,7 +814,7 @@ spec: path: my-group/my-config ``` -#### 기본값이 아닌 모드 설정과 여러 시크릿을 가진 파드 예시 +#### 구성 예시: 기본값이 아닌 소유권 모드 설정의 시크릿 {#example-configuration-secrets-nondefault-permission-mode} ```yaml apiVersion: v1 @@ -853,7 +849,7 @@ spec: 각각의 projected 볼륨 소스는 `source` 아래 사양 목록에 있다. 파라미터는 두 가지 예외를 제외하고 거의 동일하다. -* 시크릿의 경우 `secretName` 필드는 ConfigMap 이름과 일치하도록 +* 시크릿의 경우 `secretName` 필드는 컨피그맵 이름과 일치하도록 `name` 으로 변경되었다. * `defaultMode` 는 각각의 볼륨 소스에 대해 projected 수준에서만 지정할 수 있다. 그러나 위에서 설명한 것처럼 각각의 개별 projection 에 대해 `mode` @@ -861,7 +857,7 @@ spec: `TokenRequestProjection` 기능이 활성화 되면, 현재 [서비스 어카운트](/docs/reference/access-authn-authz/authentication/#service-account-tokens)에 -대한 토큰을 파드의 지정된 경로에 주입할 수 있다. 아래는 예시이다. +대한 토큰을 파드의 지정된 경로에 주입할 수 있다. 예를 들면 다음과 같다. ```yaml apiVersion: v1 @@ -887,7 +883,7 @@ spec: ``` 예시 파드에 주입된 서비스 어카운트 토큰이 포함된 projected 볼륨이 -있다. 예를 들어 이 토큰은 파드 컨테이너에서 쿠버네티스 API 서버에 접근하는데 +있다. 이 토큰은 파드의 컨테이너에서 쿠버네티스 API 서버에 접근하는데 사용할 수 있다. `audience` 필드는 토큰에 의도하는 대상을 포함한다. 토큰 수령은 토큰 대상에 지정된 식별자로 자신을 식별해야 하며, 그렇지 않으면 토큰을 거부해야 한다. 이 필드는 @@ -900,95 +896,60 @@ API 서버에 대해 `--service-account-max-token-expiration` 옵션을 지정 상대 경로를 지정한다. {{< note >}} -projected 볼륨 소스를 [subPath](#subpath-사용하기) 볼륨으로 마운트해서 사용하는 컨테이너는 해당 볼륨 소스의 업데이트를 수신하지 않는다. +projected 볼륨 소스를 [`subPath`](#subpath-사용하기) 볼륨으로 마운트해서 사용하는 컨테이너는 해당 볼륨 소스의 업데이트를 수신하지 않는다. {{< /note >}} -### portworxVolume {#portworxvolume} - -`portworxVolume` 은 쿠버네티스와 하이퍼컨버지드(hyperconverged)를 실행하는 탄력적인 블록 스토리지 -계층이다. [Portworx](https://portworx.com/use-case/kubernetes-storage/)는 서버에 스토리지 지문을 남기고, 역량에 기반하여 계층화 하고, -그리고 여러 서버에 걸쳐 용량을 집계한다. Portworx는 가상 머신 내 게스트 또는 베어 메탈 리눅스 노드 위에서 실행된다. - -`portworxVolume` 은 쿠버네티스를 통해 동적으로 생성되거나 -사전 프로비전할 수 있으며 쿠버네티스 파드 내에서 참조할 수 있다. -여기에 사전에 프로비전 된 PortworxVolume을 참조하는 파드의 예시가 있다. - -```yaml -apiVersion: v1 -kind: Pod -metadata: - name: test-portworx-volume-pod -spec: - containers: - - image: k8s.gcr.io/test-webserver - name: test-container - volumeMounts: - - mountPath: /mnt - name: pxvol - volumes: - - name: pxvol - # 이 Portworx 볼륨은 이미 존재해야 한다. - portworxVolume: - volumeID: "pxvol" - fsType: "" -``` - -{{< caution >}} -파드에서 사용하기 이전에 먼저 이름이 `pxvol` 인 PortworxVolume -이 있는지 확인한다. -{{< /caution >}} - -더 자세한 내용과 예시는 [여기](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/portworx/README.md)에서 찾을 수 있다. - -### quobyte {#quobyte} +### quobyte `quobyte` 볼륨을 사용하면 기존 [Quobyte](http://www.quobyte.com) 볼륨을 파드에 마운트할 수 있다. -{{< caution >}} +{{< note >}} 사용하기 위해선 먼저 Quobyte를 설정하고 생성한 볼륨과 함께 실행해야 한다. -{{< /caution >}} +{{< /note >}} Quobyte는 {{< glossary_tooltip text="컨테이너 스토리지 인터페이스" term_id="csi" >}}를 지원한다. CSI 는 쿠버네티스 내에서 Quobyte 볼륨을 사용하기 위해 권장하는 플러그인이다. Quobyte의 깃헙 프로젝트에는 예시와 함께 CSI를 사용해서 Quobyte를 배포하기 위한 [사용 설명서](https://github.com/quobyte/quobyte-csi#quobyte-csi)가 있다. -### rbd {#rbd} +### rbd `rbd` 볼륨을 사용하면 -[Rados Block Device](https://ceph.com/docs/master/rbd/rbd/)를 파드에 마운트할 수 -있다. 파드를 제거할 때 지워지는 `emptyDir` 와는 다르게 `rbd` 볼륨의 -내용은 유지되고, 볼륨은 마운트 해제만 된다. 이 +[Rados Block Device](https://ceph.com/docs/master/rbd/rbd/)(RBD) 볼륨을 파드에 마운트할 수 +있다. 파드를 제거할 때 지워지는 `emptyDir` 와는 다르게 `rbd` 볼륨의 +내용은 유지되고, 볼륨은 마운트 해제만 된다. 이 의미는 RBD 볼륨에 데이터를 미리 채울 수 있으며, 데이터를 -"전달(handed off)" 할 수 있다는 것이다. +공유할 수 있다는 것이다. -{{< caution >}} +{{< note >}} RBD를 사용하기 위해선 먼저 Ceph를 설치하고 실행해야 한다. -{{< /caution >}} +{{< /note >}} RBD의 특징은 여러 고객이 동시에 읽기 전용으로 마운트할 수 -있다는 것이다. 즉, 데이터셋으로 볼륨을 미리 채운 다음, 필요한 -만큼 많은 파드에서 병렬로 제공할수 있다. 불행하게도, -RBD는 읽기-쓰기 모드에서 단일 고객만 마운트할 수 있으며 +있다는 것이다. 즉, 데이터셋으로 볼륨을 미리 채운 다음, 필요한 +만큼 많은 파드에서 병렬로 제공할수 있다. 불행하게도, +RBD는 읽기-쓰기 모드에서 단일 고객만 마운트할 수 있다. 동시 쓰기는 허용되지 않는다. -더 자세한 내용은 [RBD 예시](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/volumes/rbd)를 본다. +더 자세한 내용은 [RBD 예시](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/volumes/rbd)를 +참고한다. -### scaleIO {#scaleio} +### scaleIO (사용 중단됨) {#scaleio} ScaleIO는 기존 하드웨어를 사용해서 확장 가능한 공유 블럭 네트워크 스토리지 클러스터를 -생성할 수 있는 소프트웨어 기반 스포티리 플랫폼이다. `scaleIO` 볼륨 +생성하는 소프트웨어 기반 스토리지 플랫폼이다. `scaleIO` 볼륨 플러그인을 사용하면 배포된 파드가 기존 ScaleIO에 접근할 수 -있다(또는 퍼시스턴트 볼륨 클래임을 위한 새 볼륨을 동적 프로비전할 수 있음, -[ScaleIO 퍼시스턴트 볼륨](/ko/docs/concepts/storage/persistent-volumes/#scaleio)을 본다). +있다. 퍼시스턴트 볼륨 클레임을 위해 새로운 볼륨을 동적으로 프로비저닝하는 +방법에 대한 자세한 내용은 +[ScaleIO 퍼시스턴트 볼륨](/ko/docs/concepts/storage/persistent-volumes/#scaleio)을 참고한다. -{{< caution >}} +{{< note >}} 사용하기 위해선 먼저 기존에 ScaleIO 클러스터를 먼저 설정하고 생성한 볼륨과 함께 실행해야 한다. -{{< /caution >}} +{{< /note >}} -다음은 파드 구성을 ScaleIO와 함께 하는 예시이다. +다음의 예시는 ScaleIO를 사용하는 파드 구성이다. ```yaml apiVersion: v1 @@ -1015,26 +976,26 @@ spec: fsType: xfs ``` -자세한 내용은 [ScaleIO 예시](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/scaleio)를 본다. +더 자세한 내용은 [ScaleIO](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/scaleio) 예제를 참고한다. -### secret {#secret} +### secret `secret` 볼륨은 암호와 같은 민감한 정보를 파드에 전달하는데 -사용된다. 쿠버네티스 API에 시크릿을 저장하고 쿠버네티스에 직접적으로 연결하지 않고도 -파드에서 사용할 수 있도록 파일로 마운트 할 수 있다. `secret` 볼륨은 +사용된다. 쿠버네티스 API에 시크릿을 저장하고 쿠버네티스에 직접적으로 연결하지 않고도 +파드에서 사용할 수 있도록 파일로 마운트 할 수 있다. `secret` 볼륨은 tmpfs(RAM 기반 파일시스템)로 지원되기 때문에 비 휘발성 스토리지에 절대 기록되지 않는다. -{{< caution >}} +{{< note >}} 사용하기 위해선 먼저 쿠버네티스 API에서 시크릿을 생성해야 한다. -{{< /caution >}} +{{< /note >}} {{< note >}} -시크릿을 [subPath](#subpath-사용하기) 볼륨 마운트로 사용하는 컨테이너는 시크릿 +시크릿을 [`subPath`](#subpath-사용하기) 볼륨 마운트로 사용하는 컨테이너는 시크릿 업데이트를 수신하지 못한다. {{< /note >}} -시크릿에 대해서 [여기](/ko/docs/concepts/configuration/secret/)에 더 자세한 설명이 있다. +더 자세한 내용은 [시크릿 구성하기](/ko/docs/concepts/configuration/secret/)를 참고한다. ### storageOS {#storageos} @@ -1058,6 +1019,8 @@ StorageOS 볼륨에 접근하거나 스토리지 용량을 [StorageOS 문서](https://docs.storageos.com)를 찾아본다. {{< /caution >}} +다음의 예시는 StorageOS를 사용한 파드 구성이다. + ```yaml apiVersion: v1 kind: Pod @@ -1086,24 +1049,24 @@ spec: fsType: ext4 ``` -동적 프로비저닝과 퍼시스턴트 볼륨 클래임을 포함한 더 많은 정보는 -[StorageOS 예시](https://github.com/kubernetes/examples/blob/master/volumes/storageos)를 본다. +StorageOS, 동적 프로비저닝과 퍼시스턴트 볼륨 클래임에 대한 더 자세한 정보는 +[StorageOS 예제](https://github.com/kubernetes/examples/blob/master/volumes/storageos)를 참고한다. ### vsphereVolume {#vspherevolume} {{< note >}} -전제조건: 쿠버네티스와 함께 vSphere Cloud Provider가 구성됨. 클라우드공급자 +쿠버네티스 vSphere 클라우드 공급자를 구성해야 한다. 클라우드공급자 구성에 대해선 [vSphere 시작 가이드](https://vmware.github.io/vsphere-storage-for-kubernetes/documentation/)를 참조한다. {{< /note >}} `vsphereVolume` 은 vSphere VMDK 볼륨을 파드에 마운트하는데 사용된다. 볼륨을 마운트 해제해도 볼륨의 내용이 유지된다. VMFS와 VSAM 데이터스토어를 모두 지원한다. -{{< caution >}} -파드와 함께 사용하기 위해선 먼저 다음 방법중 하나를 사용해서 VMDK를 생성해야 한다. -{{< /caution >}} +{{< note >}} +파드와 함께 사용하기 위해선 먼저 다음 방법 중 하나를 사용하여 vSphere VMDK 볼륨을 생성해야 한다. +{{< /note >}} -#### VMDK 볼륨 생성하기 +#### VMDK 볼륨 생성하기 {#creating-vmdk-volume} 다음 중 하나를 선택해서 VMDK를 생성한다. @@ -1114,6 +1077,7 @@ spec: ```shell vmkfstools -c 2G /vmfs/volumes/DatastoreName/volumes/myDisk.vmdk ``` + {{% /tab %}} {{% tab name="vmware-vdiskmanager를 사용해서 생성" %}} 다음 명령을 사용해서 VMDK를 생성한다. @@ -1121,12 +1085,13 @@ vmkfstools -c 2G /vmfs/volumes/DatastoreName/volumes/myDisk.vmdk ```shell vmware-vdiskmanager -c -t 0 -s 40GB -a lsilogic myDisk.vmdk ``` + {{% /tab %}} {{< /tabs >}} -#### vSphere VMDK 예시 구성 +#### vSphere VMDK 구성 예시 {#vsphere-vmdk-configuration} ```yaml apiVersion: v1 @@ -1148,23 +1113,23 @@ spec: fsType: ext4 ``` -더 많은 예시는 [여기](https://github.com/kubernetes/examples/tree/master/staging/volumes/vsphere)에서 확인할 수 있다. +더 자세한 내용은 [vSphere 볼륨](https://github.com/kubernetes/examples/tree/master/staging/volumes/vsphere) 예제를 참고한다. -#### CSI 마이그레이션 +#### vSphere CSI 마이그레이션 {#vsphere-csi-migration} {{< feature-state for_k8s_version="v1.19" state="beta" >}} -vsphereVolume용 CSI 마이그레이션 기능이 활성화되면, 기존 인-트리 플러그인에서 -`csi.vsphere.vmware.com` {{< glossary_tooltip text="CSI" term_id="csi" >}} 드라이버로 모든 플러그인 작업을 shim한다. -이 기능을 사용하려면, [vSphere CSI -드라이버](https://github.com/kubernetes-sigs/vsphere-csi-driver)가 +`vsphereVolume` 용 `CSIMigration` 기능이 활성화되면, 기존 인-트리 플러그인에서 +`csi.vsphere.vmware.com` {{< glossary_tooltip text="CSI" term_id="csi" >}} 드라이버로 모든 플러그인 작업을 리디렉션한다. +이 기능을 사용하려면, +[vSphere CSI 드라이버](https://github.com/kubernetes-sigs/vsphere-csi-driver)가 클러스터에 설치되어야 하며 `CSIMigration` 및 `CSIMigrationvSphere` [기능 게이트](/ko/docs/reference/command-line-tools-reference/feature-gates/)가 활성화되어 있어야 한다. 또한 최소 vSphere vCenter/ESXi 버전은 7.0u1이고 최소 HW 버전은 VM 버전 15여야 한다. {{< note >}} -빌트인 vsphereVolume 플러그인의 다음 스토리지클래스 파라미터는 vSphere CSI 드라이버에서 지원되지 않는다. +빌트인 `vsphereVolume` 플러그인의 다음 스토리지클래스 파라미터는 vSphere CSI 드라이버에서 지원되지 않는다. * `diskformat` * `hostfailurestotolerate` @@ -1174,22 +1139,28 @@ vsphereVolume용 CSI 마이그레이션 기능이 활성화되면, 기존 인- * `objectspacereservation` * `iopslimit` -이러한 파라미터를 사용하여 생성된 기존 볼륨은 vSphere CSI 드라이버로 마이그레이션되지만, vSphere CSI 드라이버에서 생성된 새 볼륨은 이러한 파라미터를 따르지 않는다. +이러한 파라미터를 사용하여 생성된 기존 볼륨은 vSphere CSI 드라이버로 마이그레이션되지만, +vSphere CSI 드라이버에서 생성된 새 볼륨은 이러한 파라미터를 따르지 않는다. {{< /note >}} -#### CSI 마이그레이션 완료 +#### vSphere CSI 마이그레이션 완료 {#vsphere-csi-migration-complete} + {{< feature-state for_k8s_version="v1.19" state="beta" >}} -vsphereVolume 플러그인이 컨트롤러 관리자와 kubelet에 의해 로드되지 않도록 기능을 비활성화하려면, 이 기능 플래그를 true로 설정해야 한다. 이를 위해서는 모든 워커 노드에 `csi.vsphere.vmware.com` {{< glossary_tooltip text="CSI" term_id="csi" >}} 드라이버가 설치되어 있어야 한다. +`vsphereVolume` 플러그인이 컨트롤러 관리자와 kubelet에 의해 로드되지 않도록 기능을 비활성화하려면, 이 기능 플래그를 `true` 로 설정해야 한다. 이를 위해서는 모든 워커 노드에 `csi.vsphere.vmware.com` {{< glossary_tooltip text="CSI" term_id="csi" >}} 드라이버가 설치해야 한다. +## subPath 사용하기 {#using-subpath} -## subPath 사용하기 +때로는 단일 파드에서 여러 용도의 한 볼륨을 공유하는 것이 유용하다. +`volumeMounts.subPath` 속성을 사용해서 root 대신 참조하는 볼륨 내의 하위 경로를 +지정할 수 있다. -때로는 단일 파드에서 여러 용도의 한 볼륨을 공유하는 것이 유용하다. `volumeMounts.subPath` -속성을 사용해서 root 대신 참조하는 볼륨 내의 하위 경로를 지정할 수 있다. +다음의 예시는 단일 공유 볼륨을 사용하여 LAMP 스택(리눅스 Apache MySQL PHP)이 +있는 파드를 구성하는 방법을 보여준다. 이 샘플 `subPath` 구성은 프로덕션 용도로 +권장되지 않는다. -여기에 단일 공유 볼륨을 사용하는 LAMP 스택(리눅스 아파치 Mysql PHP)이 포함된 파드의 예시가 있다. -HTML 내용은 `html` 폴더에 매핑되고 데이터베이스는 `mysql` 폴더에 저장된다. +PHP 애플리케이션의 코드와 자산은 볼륨의 `html` 폴더에 매핑되고 +MySQL 데이터베이스는 볼륨의 `mysql` 폴더에 저장된다. 예를 들면 다음과 같다. ```yaml apiVersion: v1 @@ -1219,15 +1190,18 @@ spec: claimName: my-lamp-site-data ``` -### subPath를 확장된 환경 변수와 함께 사용하기 +### subPath를 확장된 환경 변수와 함께 사용하기 {#using-subpath-expanded-environment} {{< feature-state for_k8s_version="v1.17" state="stable" >}} - -`subPathExpr` 필드를 사용해서 Downward API 환경 변수로부터 `subPath` 디렉터리 이름을 구성한다. +`subPathExpr` 필드를 사용해서 다운워드 API 환경 변수로부터 +`subPath` 디렉터리 이름을 구성한다. `subPath` 와 `subPathExpr` 속성은 상호 배타적이다. -이 예제는 파드가 `subPathExpr` 을 사용해서 Downward API로부터 파드 이름을 사용해서 hostPath 볼륨 `/var/log/pods` 내에 `pod1` 디렉터리를 생성한다. 호스트 디렉터리 `/var/log/pods/pod1` 은 컨테이너의 `/logs` 에 마운트 된다. +이 예제는 `Pod` 가 `subPathExpr` 을 사용해서 `hostPath` 볼륨 +`/var/log/pods` 내에 `pod1` 디렉터리를 만든다. +`hostPath` 볼륨은 `downwardAPI` 에서 `Pod` 이름을 사용한다. +호스트 디렉토리 `/var/log/pods/pod1` 은 컨테이너의 `/logs` 에 마운트된다. ```yaml apiVersion: v1 @@ -1258,47 +1232,41 @@ spec: ## 리소스 -`emptyDir` 볼륨의 스토리지 매체(디스크, SSD, 등)는 kubelet root +`emptyDir` 볼륨의 스토리지 매체(디스크나 SSD와 같은)는 kubelet root 디렉터리(보통 `/var/lib/kubelet`)를 보유한 파일시스템의 -매체에 의해 결정 된다. `emptyDir` 또는 `hostPath` 볼륨이 -사용할 수 있는 공간의 크기는 제한이 없으며, 컨테이너간 또는 파드간 -격리는 없다. +매체에 의해 결정 된다. `emptyDir` 또는 `hostPath` 볼륨이 +사용할 수 있는 공간의 크기는 제한이 없으며, 컨테이너 간 또는 파드 간 격리는 +없다. -앞으로 `emptyDir` 과 `hostPath` 볼륨이 [리소스](/ko/docs/concepts/configuration/manage-resources-containers/) -사양을 사용해서 일정량의 공간을 요청하고, 여러 매체 유형이 -있는 클러스터에 사용할 매체 유형을 선택할 수 -있을 것으로 기대한다. +리소스 사양을 사용한 공간 요청에 대한 자세한 내용은 +[리소스 관리 방법](/ko/docs/concepts/configuration/manage-resources-containers/)을 참고한다. -## 아웃 오브 트리 볼륨 플러그인 +## 아웃-오브-트리(out-of-tree) 볼륨 플러그인 -아웃 오브 트리 볼륨 플러그인에는 컨테이너 스토리지 인터페이스 (CSI) 그리고 -FlexVolume이 포함된다. 스토리지 벤더들은 이 플러그인을 쿠버네티스 리포지터리에 +아웃-오브-트리 볼륨 플러그인에는 +{{< glossary_tooltip text="컨테이너 스토리지 인터페이스" term_id="csi" >}}(CSI) 그리고 +FlexVolume이 포함된다. 이러한 플러그인을 사용하면 스토리지 벤더들은 플러그인 소스 코드를 쿠버네티스 리포지터리에 추가하지 않고도 사용자 정의 스토리지 플러그인을 만들 수 있다. -CSI 와 FlexVolume을 도입하기 전에는 모든 볼륨 플러그인(위 -목록의 볼륨 유형과 같은)은 "인 트리(in-tree)" 로 쿠버네티스 핵심 -바이너리와 함께 빌드, 링크, 컴파일 그리고 전달되었고 쿠버네티스 -핵심 API를 확장했다. 이는 새로운 스토리지 시스템을 쿠버네티스( -볼륨 플러그인)에 추가하려면 쿠버네티스 핵심 코드 리포지토리의 코드 확인이 필요했음을 의미한다. +이전에는 모든 볼륨 플러그인이 "인-트리(in-tree)"에 있었다. "인-트리" 플러그인은 쿠버네티스 핵심 바이너리와 +함께 빌드, 링크, 컴파일 및 배포되었다. 즉, 쿠버네티스(볼륨 플러그인)에 +새로운 스토리지 시스템을 추가하려면 쿠버네티스 핵심 코드 리포지토리의 코드 확인이 필요했음을 의미한다. CSI와 FlexVolume을 통해 쿠버네티스 코드 베이스와는 독립적으로 볼륨 플러그인을 개발하고, 쿠버네티스 클러스터의 확장으로 배포(설치) 할 수 있다. 아웃 오브 트리(out-of-tree) 볼륨 플러그인을 생성하려는 스토리지 벤더는 -[이 FAQ](https://github.com/kubernetes/community/blob/master/sig-storage/volume-plugin-faq.md)를 참조한다. +[볼륨 플러그인 FAQ](https://github.com/kubernetes/community/blob/master/sig-storage/volume-plugin-faq.md)를 참조한다. -### CSI +### csi -[컨테이너 스토리지 인터페이스](https://github.com/container-storage-interface/spec/blob/master/spec.md) (CSI) -는 컨테이너 오케스트레이션 시스템(쿠버네티스와 같은)을 위한 표준 인터페이스를 +[컨테이너 스토리지 인터페이스](https://github.com/container-storage-interface/spec/blob/master/spec.md)(CSI)는 +컨테이너 오케스트레이션 시스템(쿠버네티스와 같은)을 위한 표준 인터페이스를 정의하여 임의의 스토리지 시스템을 컨테이너 워크로드에 노출시킨다. 더 자세한 정보는 [CSI 디자인 제안](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/storage/container-storage-interface.md)을 읽어본다. -CSI 지원은 쿠버네티스 v1.9에서 알파로 도입이 되었고, 쿠버네티스 v1.10에서 -베타로 이동되고 쿠버네티스 v1.13에서 정식(GA)이 되었다. - {{< note >}} CSI 규격 버전 0.2와 0.3에 대한 지원은 쿠버네티스 v1.13에서 사용중단(deprecated) 되었고, 향후 릴리스에서 제거될 예정이다. @@ -1311,57 +1279,59 @@ CSI 드라이버는 일부 쿠버네티스 릴리스에서 호환되지 않을 {{< /note >}} CSI 호환 볼륨 드라이버가 쿠버네티스 클러스터에 배포되면 -`csi` 볼륨 유형을 사용해서 CSI 드라이버에 의해 노출된 볼륨에 연결, 마운트, -등을 할 수 있다. +사용자는 `csi` 볼륨 유형을 사용해서 CSI 드라이버에 의해 노출된 볼륨에 연결하거나 +마운트할 수 있다. `csi` 볼륨은 세 가지 방법으로 파드에서 사용할 수 있다. -- [`persistentVolumeClaim`](#persistentvolumeclaim)에 대한 참조를 통해서 -- [일반 임시 볼륨](/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volume)과 함께 (알파 기능) -- 드라이버가 지원하는 경우 - [CSI 임시 볼륨](/docs/concepts/storage/ephemeral-volumes/#csi-ephemeral-volume) (베타 기능) + +* [퍼시스턴트볼륨클레임](#persistentvolumeclaim)에 대한 참조를 통해서 +* [일반 임시 볼륨](/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volume)과 함께 +(알파 기능) +* 드라이버가 지원하는 경우 +[CSI 임시 볼륨](/docs/concepts/storage/ephemeral-volumes/#csi-ephemeral-volume)과 함께 (베타 기능) 스토리지 관리자가 다음 필드를 사용해서 CSI 퍼시스턴트 볼륨을 구성할 수 있다. -- `driver`: 사용할 볼륨 드라이버의 이름을 지정하는 문자열 값. +* `driver`: 사용할 볼륨 드라이버의 이름을 지정하는 문자열 값. 이 값은 [CSI 사양](https://github.com/container-storage-interface/spec/blob/master/spec.md#getplugininfo)에 정의된 CSI 드라이버가 `GetPluginInfoResponse` 에 반환하는 값과 일치해야 한다. 쿠버네티스에서 호출할 CSI 드라이버를 식별하고, CSI 드라이버 컴포넌트에서 CSI 드라이버에 속하는 PV 오브젝트를 식별하는데 사용한다. -- `volumeHandle`: 볼륨을 식별하게 하는 고유한 문자열 값. +* `volumeHandle`: 볼륨을 식별하게 하는 고유한 문자열 값. 이 값은 [CSI 사양](https://github.com/container-storage-interface/spec/blob/master/spec.md#createvolume)에 정의된 CSI 드라이버가 `CreateVolumeResponse` 의 `volume.id` 필드에 반환하는 값과 일치해야 한다. 이 값은 볼륨을 참조할 때 CSI 볼륨 드라이버에 대한 모든 호출에 `volume_id` 값을 전달한다. -- `readOnly`: 볼륨을 읽기 전용으로 "ControllerPublished" (연결)할지 +* `readOnly`: 볼륨을 읽기 전용으로 "ControllerPublished" (연결)할지 여부를 나타내는 선택적인 불리언(boolean) 값. 기본적으로 false 이다. 이 값은 `ControllerPublishVolumeRequest` 의 `readonly` 필드를 통해 CSI 드라이버로 전달된다. -- `fsType`: 만약 PV의 `VolumeMode` 가 `Filesystem` 인 경우에 이 필드는 +* `fsType`: 만약 PV의 `VolumeMode` 가 `Filesystem` 인 경우에 이 필드는 볼륨을 마운트하는 데 사용해야 하는 파일시스템을 지정하는 데 사용될 수 있다. 만약 볼륨이 포맷되지 않았고 포맷이 지원되는 경우, 이 값은 볼륨을 포맷하는데 사용된다. 이 값은 `ControllerPublishVolumeRequest`, `NodeStageVolumeRequest` 그리고 `NodePublishVolumeRequest` 의 `VolumeCapability` 필드를 통해 CSI 드라이버로 전달된다. -- `volumeAttributes`: 볼륨의 정적 속성을 지정하는 문자열과 문자열을 +* `volumeAttributes`: 볼륨의 정적 속성을 지정하는 문자열과 문자열을 매핑한다. 이 매핑은 [CSI 사양](https://github.com/container-storage-interface/spec/blob/master/spec.md#createvolume)에 정의된 대로 CSI 드라이버의 `CreateVolumeResponse` 와 `volume.attributes` 필드에서 반환되는 매핑과 일치해야 한다. 이 매핑은 `ControllerPublishVolumeRequest`, `NodeStageVolumeRequest`, 그리고 `NodePublishVolumeRequest` 의 `volume_context` 필드를 통해 CSI 드라이버로 전달된다. -- `controllerPublishSecretRef`: CSI의 `ControllerPublishVolume` +* `controllerPublishSecretRef`: CSI의 `ControllerPublishVolume` 그리고 `ControllerUnpublishVolume` 호출을 완료하기 위해 CSI 드라이버에 전달하려는 민감한 정보가 포함된 시크릿 오브젝트에 대한 참조이다. 이 필드는 - 선택사항이며, 시크릿이 필요하지 않은 경우 비어있을 수 있다. 만약 시크릿 오브젝트에 + 선택사항이며, 시크릿이 필요하지 않은 경우 비어있을 수 있다. 만약 시크릿에 둘 이상의 시크릿이 포함된 경우에도 모든 시크릿이 전달된다. -- `nodeStageSecretRef`: CSI의 `NodeStageVolume` 호출을 완료하기위해 +* `nodeStageSecretRef`: CSI의 `NodeStageVolume` 호출을 완료하기위해 CSI 드라이버에 전달하려는 민감한 정보가 포함 된 시크릿 오브젝트에 대한 참조이다. 이 필드는 선택 사항이며, 시크릿이 필요하지 않은 - 경우 비어있을 수 있다. 만약 시크릿 오브젝트에 둘 이상의 시크릿이 포함된 경우에도 + 경우 비어있을 수 있다. 만약 시크릿에 둘 이상의 시크릿이 포함된 경우에도 모든 시크릿이 전달된다. -- `nodePublishSecretRef`: CSI의 `NodePublishVolume` 호출을 완료하기위해 +* `nodePublishSecretRef`: CSI의 `NodePublishVolume` 호출을 완료하기위해 CSI 드라이버에 전달하려는 민감한 정보가 포함 된 시크릿 오브젝트에 대한 참조이다. 이 필드는 선택 사항이며, 시크릿이 필요하지 않은 경우 비어있을 수 있다. 만약 시크릿 오브젝트에 둘 이상의 시크릿이 포함된 경우에도 @@ -1375,7 +1345,7 @@ CSI 호환 볼륨 드라이버가 쿠버네티스 클러스터에 배포되면 지원을 구현할 수 있다. CSI 설정 변경 없이 평소와 같이 -[원시 블록 볼륨 지원으로 PV/PVC 설정](/ko/docs/concepts/storage/persistent-volumes/#원시-블록-볼륨-지원)을 할 수 있다. +[원시 블록 볼륨 지원으로 퍼시스턴트볼륨/퍼시스턴트볼륨클레임](/ko/docs/concepts/storage/persistent-volumes/#원시-블록-볼륨-지원) 설정을 할 수 있다. #### CSI 임시(ephemeral) 볼륨 @@ -1384,105 +1354,104 @@ CSI 설정 변경 없이 평소와 같이 파드 명세 내에서 CSI 볼륨을 직접 구성할 수 있다. 이 방식으로 지정된 볼륨은 임시 볼륨이며 파드가 다시 시작할 때 지속되지 않는다. 자세한 내용은 [임시 -볼륨](/docs/concepts/storage/ephemeral-volumes/#csi-ephemeral-volume)을 +볼륨](/docs/concepts/storage/ephemeral-volumes/#csi-ephemeral-volumes)을 참고한다. -#### {{% heading "whatsnext" %}} +CSI 드라이버의 개발 방법에 대한 더 자세한 정보는 +[쿠버네티스-csi 문서](https://kubernetes-csi.github.io/docs/)를 참조한다. -CSI 드라이버의 개발 방법에 대한 더 자세한 정보는 [쿠버네티스-csi -문서](https://kubernetes-csi.github.io/docs/)를 참조한다. +#### 인-트리 플러그인으로부터 CSI 드라이버로 마이그레이션하기 -#### 인 트리 플러그인으로부터 CSI 드라이버로 마이그레이션하기 +{{< feature-state for_k8s_version="v1.17" state="beta" >}} -{{< feature-state for_k8s_version="v1.14" state="alpha" >}} - -TCSI 마이그레이션 기능이 활성화 되면 기존의 인 트리 플러그인에 +`CSIMigration` 기능이 활성화 되면 기존의 인-트리 플러그인에 대한 작업을 해당 CSI 플러그인(설치와 구성이 될 것으로 예상한)으로 유도한다. -이 기능은 필요한 변환 논리와 심(shims)을 구현하여 작업을 완전한 -방식으로 재 라우팅 한다. 결과적으로 운영자는 인 트리 플러그인을 대체하는 -CSI 드라이버로 전환할 때 기존 스토리지 클래스, PV 또는 PVC(인 트리 -플러그인 참조)에 대한 구성을 변경할 필요가 없다. +결과적으로, 운영자는 인-트리 플러그인을 대체하는 +CSI 드라이버로 전환할 때 기존 스토리지 클래스, 퍼시스턴트볼륨 또는 퍼시스턴트볼륨클레임(인-트리 플러그인 참조)에 +대한 구성 변경을 수행할 필요가 없다. -알파 상태에서 지원되는 작업과 기능에는 프로비저닝/삭제, +지원되는 작업 및 기능은 프로비저닝/삭제, 연결/분리, 마운트/마운트 해제 그리고 볼륨 크기 재조정이 포함된다. -CSI 마이그레이션을 지원하고 해당 CSI 드라이버가 구현된 인 트리 플러그인은 -위의 "볼륨 유형" 섹션에 나열되어 있다. +`CSIMigration` 을 지원하고 해당 CSI 드라이버가 구현된 인-트리 플러그인은 +[볼륨 유형들](#volume-types)에 나열되어 있다. -### FlexVolume {#flexVolume} +### flexVolume -FlexVolume은 버전 1.2 (CSI 이전) 이후 쿠버네티스에 존재하는 -아웃 오브 트리 플러그인 인터페이스이다. 이것은 exec 기반 모델을 사용해서 드라이버에 -접속한다. FlexVolume 드라이버 바이너리 파일은 각각의 노드(그리고 일부 경우에 마스터)에 +FlexVolume은 버전 1.2(CSI 이전) 이후 쿠버네티스에 존재하는 +아웃-오브-트리 플러그인 인터페이스이다. 이것은 exec 기반 모델을 사용해서 드라이버에 +접속한다. FlexVolume 드라이버 바이너리 파일은 각각의 노드와 일부 경우에 컨트롤 플레인 노드의 미리 정의된 볼륨 플러그인 경로에 설치해야 한다. -파드는 `flexvolume` 인 트리 플러그인을 통해 FlexVolume 드라이버와 상호 작용 한다. -더 자세한 내용은 [여기](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-storage/flexvolume.md)에서 찾아볼 수 있다. +파드는 `flexvolume` 인-트리 볼륨 플러그인을 통해 FlexVolume 드라이버와 상호 작용한다. +더 자세한 내용은 [FlexVolume](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-storage/flexvolume.md) 예제를 참고한다. ## 마운트 전파(propagation) 마운트 전파를 통해 컨테이너가 마운트한 볼륨을 동일한 파드의 다른 컨테이너 또는 동일한 노드의 다른 파드로 공유할 수 있다. -볼륨 마운트 전파는 Container.volumeMounts의 `mountPropagation` 필드에 의해 제어된다. -그 값은 다음과 같다. +볼륨 마운트 전파는 `Container.volumeMounts` 의 `mountPropagation` 필드에 +의해 제어된다. 그 값은 다음과 같다. - * `None` - 이 볼륨 마운트는 호스트의 볼륨 또는 해당 서브디렉터리에 - 마운트된 것을 마운트 이후에 수신하지 않는다. - 비슷한 방식으로, 컨테이너가 생성 한 마운트는 호스트에서 볼 수 없다. - 이것이 기본 모드이다. +* `None` - 이 볼륨 마운트는 호스트의 볼륨 또는 해당 서브디렉터리에 + 마운트된 것을 마운트 이후에 수신하지 않는다. + 비슷한 방식으로, 컨테이너가 생성한 마운트는 호스트에서 볼 수 없다. + 이것이 기본 모드이다. - 이 모드는 [리눅스 커널 문서](https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt)에 - 설명된 `rshared` 마운트 전파와 같다. + 이 모드는 [리눅스 커널 문서](https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt)에 + 설명된 `rshared` 마운트 전파와 같다. - * `HostToContainer` - 이 볼륨 마운트는 볼륨 또는 해당 - 서브디렉터리를 마운트한 정보를 수신한다. +* `HostToContainer` - 이 볼륨 마운트는 볼륨 또는 해당 + 서브디렉터리를 마운트한 정보를 수신한다. - 다시 말하면, 만약 호스트가 볼륨 마운트 내부에 다른 것을 마운트 - 하더라도 컨테이너가 마운트 된 것을 볼 수 있다. + 다시 말하면, 만약 호스트가 볼륨 마운트 내부에 다른 것을 마운트 + 하더라도 컨테이너가 마운트된 것을 볼 수 있다. - 마찬가지로 `Bidirectional` 마운트 전파가 있는 파드가 동일한 마운트가 된 경우에 - 파드에 `HostToContainer` 마운트 전파가 있는 - 컨테이너가 이를 볼 수 있다. + 마찬가지로 `Bidirectional` 마운트 전파가 있는 파드가 동일한 마운트가 된 경우에 + 파드에 `HostToContainer` 마운트 전파가 있는 + 컨테이너가 이를 볼 수 있다. - 이 모드는 [리눅스 커널 문서](https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt)에 - 설명된 `rshared` 마운트 전파와 같다. + 이 모드는 [리눅스 커널 문서](https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt)에 + 설명된 `rshared` 마운트 전파와 같다. - * `Bidirectional` - 이 볼륨 마운트는 `HostToContainer` 마운트와 동일하게 작동한다. - 추가로 컨테이너에서 생성된 모든 볼륨 마운트는 동일한 볼륨을 - 사용하는 모든 파드의 모든 컨테이너와 호스트로 다시 전파된다. +* `Bidirectional` - 이 볼륨 마운트는 `HostToContainer` 마운트와 동일하게 작동한다. + 추가로 컨테이너에서 생성된 모든 볼륨 마운트는 동일한 볼륨을 + 사용하는 모든 파드의 모든 컨테이너와 호스트로 다시 전파된다. - 이 모드의 일반적인 유스 케이스로는 FlexVolume 또는 CSI 드라이버를 사용하는 파드 또는 - `hostPath` 볼륨을 사용하는 호스트에 무언가를 마운트해야 하는 파드이다. + 이 모드의 일반적인 유스 케이스로는 FlexVolume 또는 CSI 드라이버를 사용하는 파드 또는 + `hostPath` 볼륨을 사용하는 호스트에 무언가를 마운트해야 하는 파드이다. - 이 모드는 [리눅스 커널 문서](https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt)에 - 설명된 `rshared` 마운트 전파와 같다. + 이 모드는 [리눅스 커널 문서](https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt)에 + 설명된 `rshared` 마운트 전파와 같다. -{{< caution >}} +{{< warning >}} `Bidirectional` 마운트 전파는 위험할 수 있다. 이것은 -호스트 운영체제를 손상시킬수 있기에 권한이 있는 컨테이너에서만 +호스트 운영체제를 손상시킬 수 있기에 권한이 있는 컨테이너에서만 허용된다. 리눅스 커널 동작을 숙지하는 것을 권장한다. -또한 파드내 컨테이너에 의해 생성된 볼륨 마운트는 종료시 -컨테이너에의해 파괴(마운트 해제)되어야 한다. -{{< /caution >}} +또한 파드 내 컨테이너에 의해 생성된 볼륨 마운트는 종료 시 +컨테이너에 의해 파괴(마운트 해제)되어야 한다. +{{< /warning >}} ### 구성 + 일부 배포판(CoreOS, RedHat/Centos, Ubuntu)에서 마운트 전파가 제대로 작동하려면 아래와 같이 도커에서의 마운트 공유를 올바르게 구성해야 한다. -도커의 `systemd` 서비스 파일을 편집한다. `MountFlags` 를 다음과 같이 설정한다. +도커의 `systemd` 서비스 파일을 편집한다. `MountFlags` 를 다음과 같이 설정한다. + ```shell MountFlags=shared ``` + 또는 `MountFlags=slave` 가 있으면 제거한다. 이후 도커 데몬을 재시작 한다. + ```shell sudo systemctl daemon-reload sudo systemctl restart docker ``` - - ## {{% heading "whatsnext" %}} -* [퍼시스턴트 볼륨과 함께 워드프레스와 MySQL 배포하기](/ko/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume/)의 예시를 따른다. +[퍼시스턴트 볼륨과 함께 워드프레스와 MySQL 배포하기](/ko/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume/)의 예시를 따른다. diff --git a/content/ko/docs/concepts/workloads/_index.md b/content/ko/docs/concepts/workloads/_index.md index a020124b6d..efd6fa1ff7 100644 --- a/content/ko/docs/concepts/workloads/_index.md +++ b/content/ko/docs/concepts/workloads/_index.md @@ -32,7 +32,7 @@ no_list: true 파드를 실행하기 위한 [데몬셋(DaemonSet)](/ko/docs/concepts/workloads/controllers/daemonset/) * 완료될 때까지 실행되는 작업에 대한 [잡(Job)](/ko/docs/concepts/workloads/controllers/job/) 및 - [크론잡(CronJob)](/ko/docs/concepts/workloads/controllers/cronjob/) + [크론잡(CronJob)](/ko/docs/concepts/workloads/controllers/cron-jobs/) 관련성을 찾을 수 있는 두 가지 지원 개념도 있다. * [가비지(Garbage) 수집](/ko/docs/concepts/workloads/controllers/garbage-collection/)은 _소유하는 리소스_ 가 diff --git a/content/ko/docs/concepts/workloads/controllers/replicaset.md b/content/ko/docs/concepts/workloads/controllers/replicaset.md index 5c0852dc12..c5a6832fd9 100644 --- a/content/ko/docs/concepts/workloads/controllers/replicaset.md +++ b/content/ko/docs/concepts/workloads/controllers/replicaset.md @@ -229,7 +229,7 @@ API 버전에 대해서는 `frontend.yaml` 예제의 첫 번째 줄을 참고한 ### 파드 템플릿 -`.spec.template`은 레이블을 붙이도록 되어있는 [파드 템플릿](/ko/docs/concepts/workloads/pods/pod-overview/#파드-템플릿)이다. +`.spec.template`은 레이블을 붙이도록 되어있는 [파드 템플릿](/ko/docs/concepts/workloads/pods/#파드-템플릿)이다. 우리는 `frontend.yaml` 예제에서 `tier: frontend`이라는 레이블을 하나 가지고 있다. 이 파드를 다른 컨트롤러가 취하지 않도록 다른 컨트롤러의 셀렉터와 겹치지 않도록 주의해야 한다. diff --git a/content/ko/docs/concepts/workloads/pods/pod-lifecycle.md b/content/ko/docs/concepts/workloads/pods/pod-lifecycle.md index 00aed3c13d..e80c36aee4 100644 --- a/content/ko/docs/concepts/workloads/pods/pod-lifecycle.md +++ b/content/ko/docs/concepts/workloads/pods/pod-lifecycle.md @@ -77,13 +77,13 @@ UID로 정의된 특정 파드는 다른 노드로 절대 "다시 스케줄"되 `phase`에 가능한 값은 다음과 같다. -값 | 의미 -:-----|:----------- -`Pending` | 파드가 쿠버네티스 클러스터에서 승인되었지만, 하나 이상의 컨테이너가 설정되지 않았고 실행할 준비가 되지 않았다. 여기에는 파드가 스케줄되기 이전까지의 시간 뿐만 아니라 네트워크를 통한 컨테이너 이미지 다운로드 시간도 포함된다. -`Running` | 파드가 노드에 바인딩되었고, 모든 컨테이너가 생성되었다. 적어도 하나의 컨테이너가 아직 실행 중이거나, 시작 또는 재시작 중에 있다. +값 | 의미 +:-----------|:----------- +`Pending` | 파드가 쿠버네티스 클러스터에서 승인되었지만, 하나 이상의 컨테이너가 설정되지 않았고 실행할 준비가 되지 않았다. 여기에는 파드가 스케줄되기 이전까지의 시간 뿐만 아니라 네트워크를 통한 컨테이너 이미지 다운로드 시간도 포함된다. +`Running` | 파드가 노드에 바인딩되었고, 모든 컨테이너가 생성되었다. 적어도 하나의 컨테이너가 아직 실행 중이거나, 시작 또는 재시작 중에 있다. `Succeeded` | 파드에 있는 모든 컨테이너들이 성공적으로 종료되었고, 재시작되지 않을 것이다. -`Failed` | 파드에 있는 모든 컨테이너가 종료되었고, 적어도 하나 이상의 컨테이너가 실패로 종료되었다. 즉, 해당 컨테이너는 non-zero 상태로 빠져나왔거나(exited) 시스템에 의해서 종료(terminated)되었다. -`Unknown` | 어떤 이유에 의해서 파드의 상태를 얻을 수 없다. 이 단계는 일반적으로 파드가 실행되어야 하는 노드와의 통신 오류로 인해 발생한다. +`Failed` | 파드에 있는 모든 컨테이너가 종료되었고, 적어도 하나 이상의 컨테이너가 실패로 종료되었다. 즉, 해당 컨테이너는 non-zero 상태로 빠져나왔거나(exited) 시스템에 의해서 종료(terminated)되었다. +`Unknown` | 어떤 이유에 의해서 파드의 상태를 얻을 수 없다. 이 단계는 일반적으로 파드가 실행되어야 하는 노드와의 통신 오류로 인해 발생한다. 노드가 죽거나 클러스터의 나머지와의 연결이 끊어지면, 쿠버네티스는 손실된 노드의 모든 파드의 `phase` 를 Failed로 설정하는 정책을 적용한다. @@ -229,7 +229,8 @@ kubelet은 파드의 [조건](#파드의-조건)을 `ContainerReady` 로 설정 ## 컨테이너 프로브(probe) [프로브](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#probe-v1-core)는 -컨테이너에서 [kubelet](/docs/admin/kubelet/)에 의해 주기적으로 수행되는 진단(diagnostic)이다. +컨테이너에서 [kubelet](/docs/reference/command-line-tools-reference/kubelet/)에 의해 +주기적으로 수행되는 진단(diagnostic)이다. 진단을 수행하기 위해서, kubelet은 컨테이너에 의해서 구현된 [핸들러](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#handler-v1-core)를 호출한다. diff --git a/content/ko/docs/concepts/workloads/pods/pod-topology-spread-constraints.md b/content/ko/docs/concepts/workloads/pods/pod-topology-spread-constraints.md index e45d00eef7..c8224ea76c 100644 --- a/content/ko/docs/concepts/workloads/pods/pod-topology-spread-constraints.md +++ b/content/ko/docs/concepts/workloads/pods/pod-topology-spread-constraints.md @@ -4,11 +4,21 @@ content_type: concept weight: 40 --- +{{< feature-state for_k8s_version="v1.19" state="stable" >}} + + 사용자는 _토폴로지 분배 제약 조건_ 을 사용해서 지역, 영역, 노드 그리고 기타 사용자-정의 토폴로지 도메인과 같이 장애-도메인으로 설정된 클러스터에 걸쳐 파드가 분산되는 방식을 제어할 수 있다. 이를 통해 고가용성뿐만 아니라, 효율적인 리소스 활용의 목적을 이루는 데 도움이 된다. - +{{< note >}} +v1.19 이전 버전의 쿠버네티스에서는 파드 토폴로지 분배 제약조건을 사용하려면 +[API 서버](/ko/docs/concepts/overview/components/#kube-apiserver)와 +[스케줄러](/docs/reference/generated/kube-scheduler/)에서 +`EvenPodsSpread`[기능 게이트](/ko/docs/reference/command-line-tools-reference/feature-gates/)를 +활성화해야 한다 +{{< /note >}} diff --git a/content/ko/docs/contribute/participate/pr-wranglers.md b/content/ko/docs/contribute/participate/pr-wranglers.md index a70374295f..30c0979969 100644 --- a/content/ko/docs/contribute/participate/pr-wranglers.md +++ b/content/ko/docs/contribute/participate/pr-wranglers.md @@ -6,7 +6,7 @@ weight: 20 -SIG Docs [승인자](/ko/docs/contribute/participating/roles-and-responsibilites/#승인자)는 리포지터리에 대해 일주일 동안 교대로 [풀 리퀘스트 관리](https://github.com/kubernetes/website/wiki/PR-Wranglers)를 수행한다. +SIG Docs [승인자](/ko/docs/contribute/participate/roles-and-responsibilities/#승인자)는 리포지터리에 대해 일주일 동안 교대로 [풀 리퀘스트 관리](https://github.com/kubernetes/website/wiki/PR-Wranglers)를 수행한다. 이 섹션은 PR 랭글러의 의무에 대해 다룬다. 좋은 리뷰 제공에 대한 자세한 내용은 [Reviewing changes](/ko/docs/contribute/review/)를 참고한다. diff --git a/content/ko/docs/reference/_index.md b/content/ko/docs/reference/_index.md index 86c67f4b06..8f2f5c48a6 100644 --- a/content/ko/docs/reference/_index.md +++ b/content/ko/docs/reference/_index.md @@ -16,8 +16,8 @@ content_type: concept ## API 레퍼런스 -* [쿠버네티스 API 개요](/ko/docs/reference/using-api/api-overview/) - 쿠버네티스 API에 대한 개요 -* [Kubernetes API 레퍼런스 {{< latest-version >}}](/docs/reference/generated/kubernetes-api/{{< latest-version >}}/) +* [쿠버네티스 API 레퍼런스 {{< latest-version >}}](/docs/reference/generated/kubernetes-api/{{< latest-version >}}/) +* [쿠버네티스 API 사용](/ko/docs/reference/using-api/) - 쿠버네티스 API에 대한 개요 ## API 클라이언트 라이브러리 @@ -34,7 +34,7 @@ content_type: concept * [kubectl](/ko/docs/reference/kubectl/overview/) - 명령어를 실행하거나 쿠버네티스 클러스터를 관리하기 위해 사용하는 주된 CLI 도구. * [JSONPath](/docs/reference/kubectl/jsonpath/) - kubectl에서 [JSONPath 표현](https://goessner.net/articles/JsonPath/)을 사용하기 위한 문법 가이드. -* [kubeadm](/docs/reference/setup-tools/kubeadm/kubeadm/) - 안정적인 쿠버네티스 클러스터를 쉽게 프로비전하기 위한 CLI 도구. +* [kubeadm](/ko/docs/reference/setup-tools/kubeadm/) - 안정적인 쿠버네티스 클러스터를 쉽게 프로비전하기 위한 CLI 도구. ## 컴포넌트 레퍼런스 diff --git a/content/ko/docs/reference/access-authn-authz/_index.md b/content/ko/docs/reference/access-authn-authz/_index.md index c075922ad1..9e23c5d767 100644 --- a/content/ko/docs/reference/access-authn-authz/_index.md +++ b/content/ko/docs/reference/access-authn-authz/_index.md @@ -1,4 +1,26 @@ --- -title: API 접근하기 +title: API 접근 제어 weight: 20 ---- \ No newline at end of file +no_list: true +--- + +쿠버네티스가 API 접근을 구현 및 제어하는 방법에 대한 자세한 내용은 +[쿠버네티스 API에 대한 접근 제어](/ko/docs/concepts/security/controlling-access/)를 참고한다. + +참조 문헌 + +- [인증](/docs/reference/access-authn-authz/authentication/) + - [부트스트랩 토큰 인증](/docs/reference/access-authn-authz/bootstrap-tokens/) +- [승인 컨트롤러](/docs/reference/access-authn-authz/admission-controllers/) + - [동적 승인 제어](/docs/reference/access-authn-authz/extensible-admission-controllers/) +- [인가](/ko/docs/reference/access-authn-authz/authorization/) + - [역할 기반 접근 제어](/docs/reference/access-authn-authz/rbac/) + - [속성 기반 접근 제어](/docs/reference/access-authn-authz/abac/) + - [노드 인가](/docs/reference/access-authn-authz/node/) + - [웹훅 인가](/docs/reference/access-authn-authz/webhook/) +- [인증서 서명 요청](/docs/reference/access-authn-authz/certificate-signing-requests/) + - [CSR 승인](/docs/reference/access-authn-authz/certificate-signing-requests/#approval-rejection)과 + [인증서 서명](/docs/reference/access-authn-authz/certificate-signing-requests/#signing)을 포함함 +- 서비스 어카운트 + - [개발자 가이드](/docs/tasks/configure-pod-container/configure-service-account/) + - [관리](/ko/docs/reference/access-authn-authz/service-accounts-admin/) diff --git a/content/ko/docs/reference/access-authn-authz/authorization.md b/content/ko/docs/reference/access-authn-authz/authorization.md index 3fe13d7ced..40d0a37c92 100644 --- a/content/ko/docs/reference/access-authn-authz/authorization.md +++ b/content/ko/docs/reference/access-authn-authz/authorization.md @@ -11,7 +11,7 @@ weight: 60 쿠버네티스에서는 사용자의 요청이 인가(접근 권한을 부여) 받기 전에 사용자가 인증(로그인)되어야 한다. -인증에 대한 자세한 내용은 [쿠버네티스 API 접근 제어하기](/ko/docs/reference/access-authn-authz/controlling-access/)를 +인증에 대한 자세한 내용은 [쿠버네티스 API 접근 제어하기](/ko/docs/concepts/security/controlling-access/)를 참고한다. 쿠버네티스는 REST API 요청에 공통적인 속성을 요구한다. @@ -47,7 +47,7 @@ weight: 60 * **Resource** - 접근 중인 리소스의 ID 또는 이름(리소스 요청만 해당) -- `get`, `update`, `patch`, `delete` 동사를 사용하는 리소스 요청의 경우 리소스 이름을 지정해야 한다. * **Subresource** - 접근 중인 하위 리소스(리소스 요청만 해당). * **Namespace** - 접근 중인 오브젝트의 네임스페이스(네임스페이스에 할당된 리소스 요청만 해당) - * **API group** - 접근 중인 {{< glossary_tooltip text="API 그룹" term_id="api-group" >}}(리소스 요청에만 해당). 빈 문자열은 [핵심(core) API 그룹](/ko/docs/reference/using-api/api-overview/#api-그룹)을 지정한다. + * **API group** - 접근 중인 {{< glossary_tooltip text="API 그룹" term_id="api-group" >}}(리소스 요청에만 해당). 빈 문자열은 _핵심(core)_ [API 그룹](/ko/docs/reference/using-api/#api-그룹)을 지정한다. ## 요청 동사 결정 @@ -197,5 +197,5 @@ status: ## {{% heading "whatsnext" %}} -* 인증에 대한 자세한 내용은 [쿠버네티스 API 접근 제어하기](/ko/docs/reference/access-authn-authz/controlling-access/)에서 **인증**을 참조한다. +* 인증에 대한 자세한 내용은 [쿠버네티스 API 접근 제어하기](/ko/docs/concepts/security/controlling-access/)에서 **인증** 을 참조한다. * 어드미션 제어에 대한 자세한 내용은 [어드미션 컨트롤러 사용하기](/docs/reference/access-authn-authz/admission-controllers/)를 참조한다. diff --git a/content/ko/docs/reference/command-line-tools-reference/feature-gates.md b/content/ko/docs/reference/command-line-tools-reference/feature-gates.md index 11dc7f26b6..f5b7fa8dad 100644 --- a/content/ko/docs/reference/command-line-tools-reference/feature-gates.md +++ b/content/ko/docs/reference/command-line-tools-reference/feature-gates.md @@ -485,7 +485,7 @@ kubelet과 같은 컴포넌트의 기능 게이트를 설정하려면, 기능 - `PersistentLocalVolumes`: 파드에서 `local` 볼륨 유형의 사용을 활성화한다. `local` 볼륨을 요청하는 경우 파드 어피니티를 지정해야 한다. - `PodDisruptionBudget`: [PodDisruptionBudget](/docs/tasks/run-application/configure-pdb/) 기능을 활성화한다. -- `PodOverhead`: 파드 오버헤드를 판단하기 위해 [파드오버헤드(PodOverhead)](/ko/docs/concepts/configuration/pod-overhead/) 기능을 활성화한다. +- `PodOverhead`: 파드 오버헤드를 판단하기 위해 [파드오버헤드(PodOverhead)](/ko/docs/concepts/scheduling-eviction/pod-overhead/) 기능을 활성화한다. - `PodPriority`: [우선 순위](/ko/docs/concepts/configuration/pod-priority-preemption/)를 기반으로 파드의 스케줄링 취소와 선점을 활성화한다. - `PodReadinessGates`: 파드 준비성 평가를 확장하기 위해 `PodReadinessGate` 필드 설정을 활성화한다. 자세한 내용은 [파드의 준비성 게이트](/ko/docs/concepts/workloads/pods/pod-lifecycle/#pod-readiness-gate)를 @@ -511,7 +511,7 @@ kubelet과 같은 컴포넌트의 기능 게이트를 설정하려면, 기능 - `RuntimeClass`: 컨테이너 런타임 구성을 선택하기 위해 [런타임클래스(RuntimeClass)](/ko/docs/concepts/containers/runtime-class/) 기능을 활성화한다. - `ScheduleDaemonSetPods`: 데몬셋(DaemonSet) 컨트롤러 대신 기본 스케줄러로 데몬셋 파드를 스케줄링할 수 있다. - `SCTPSupport`: 파드, 서비스, 엔드포인트, 엔드포인트슬라이스 및 네트워크폴리시 정의에서 _SCTP_ `protocol` 값을 활성화한다. -- `ServerSideApply`: API 서버에서 [SSA(Sever Side Apply)](/docs/reference/using-api/api-concepts/#server-side-apply) 경로를 활성화한다. +- `ServerSideApply`: API 서버에서 [SSA(Sever Side Apply)](/docs/reference/using-api/server-side-apply/) 경로를 활성화한다. - `ServiceAccountIssuerDiscovery`: API 서버에서 서비스 어카운트 발행자에 대해 OIDC 디스커버리 엔드포인트(발급자 및 JWKS URL)를 활성화한다. 자세한 내용은 [파드의 서비스 어카운트 구성](/docs/tasks/configure-pod-container/configure-service-account/#service-account-issuer-discovery)을 참고한다. - `ServiceAppProtocol`: 서비스와 엔드포인트에서 `AppProtocol` 필드를 활성화한다. - `ServiceLoadBalancerFinalizer`: 서비스 로드 밸런서에 대한 Finalizer 보호를 활성화한다. diff --git a/content/ko/docs/reference/command-line-tools-reference/kube-proxy.md b/content/ko/docs/reference/command-line-tools-reference/kube-proxy.md new file mode 100644 index 0000000000..565c3b4faf --- /dev/null +++ b/content/ko/docs/reference/command-line-tools-reference/kube-proxy.md @@ -0,0 +1,343 @@ +--- +title: kube-proxy +content_type: tool-reference +weight: 30 +--- + +## {{% heading "synopsis" %}} + + +쿠버네티스 네트워크 프록시는 각 노드에서 실행된다. +이는 각 노드의 쿠버네티스 API에 정의된 서비스를 반영하며 단순한 +TCP, UDP 및 SCTP 스트림 포워딩 또는 라운드 로빈 TCP, UDP 및 SCTP 포워딩을 백엔드 셋에서 수행 할 수 있다. +서비스 클러스트 IP 및 포트는 현재 서비스 프록시에 의해 열린 포트를 지정하는 +Docker-links-compatible 환경 변수를 통해 찾을 수 있다. +이러한 클러스터 IP에 클러스터 DNS를 제공하는 선택적 애드온이 있다. 유저는 apiserver API로 +서비스를 생성하여 프록시를 구성해야 한다. + +``` +kube-proxy [flags] +``` + +## {{% heading "options" %}} + + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
--azure-container-registry-config string
Azure 컨테이너 레지스트리 구성 정보가 들어 있는 파일의 경로.
--bind-address ip     기본값: 0.0.0.0
프록시 서버가 서비스할 IP 주소(모든 IPv4 인터페이스의 경우 '0.0.0.0'으로 설정, 모든 IPv6 인터페이스의 경우 '::'로 설정)
--bind-address-hard-fail
true인 경우 kube-proxy는 포트 바인딩 실패를 치명적인 것으로 간주하고 종료한다.
--cleanup
true인 경우 iptables 및 ipvs 규칙을 제거하고 종료한다.
--cluster-cidr string
클러스터에 있는 파드의 CIDR 범위. 구성 후에는 이 범위 밖에서 서비스 클러스터 IP로 전송되는 트래픽은 마스커레이드되고 파드에서 외부 LoadBalancer IP로 전송된 트래픽은 대신 해당 클러스터 IP로 전송된다
--config string
설정 파일의 경로.
--config-sync-period duration     기본값: 15m0s
apiserver의 설정이 갱신되는 빈도. 0보다 커야 한다.
--conntrack-max-per-core int32     기본값: 32768
CPU 코어당 추적할 최대 NAT 연결 수(한도(limit)를 그대로 두고 contrack-min을 무시하려면 0으로 설정한다)(
--conntrack-min int32     기본값: 131072
conntrack-max-per-core와 관계없이 할당할 최소 conntrack 항목 수(한도를 그대로 두려면 conntrack-max-per-core값을 0으로 설정).
--conntrack-tcp-timeout-close-wait duration     기본값: 1h0m0s
CLOSE_WAIT 상태의 TCP 연결에 대한 NAT 시간 초과
--conntrack-tcp-timeout-established duration     기본값: 24h0m0s
설정된 TCP 연결에 대한 유휴시간 초과(값이 0이면 그대로 유지)
--detect-local-mode LocalMode
로컬 트래픽을 탐지하는 데 사용할 모드
--feature-gates mapStringBool
알파/실험 기능에 대한 기능 게이트를 설명하는 키=값 쌍 집합. 옵션은 다음과 같다.
APIListChunking=true|false (BETA - 기본값=true)
APIPriorityAndFairness=true|false (ALPHA - 기본값=false)
APIResponseCompression=true|false (BETA - 기본값=true)
AllAlpha=true|false (ALPHA - 기본값=false)
AllBeta=true|false (BETA - 기본값=false)
AllowInsecureBackendProxy=true|false (BETA - 기본값=true)
AnyVolumeDataSource=true|false (ALPHA - 기본값=false)
AppArmor=true|false (BETA - 기본값=true)
BalanceAttachedNodeVolumes=true|false (ALPHA - 기본값=false)
BoundServiceAccountTokenVolume=true|false (ALPHA - 기본값=false)
CPUManager=true|false (BETA - 기본값=true)
CRIContainerLogRotation=true|false (BETA - 기본값=true)
CSIInlineVolume=true|false (BETA - 기본값=true)
CSIMigration=true|false (BETA - 기본값=true)
CSIMigrationAWS=true|false (BETA - 기본값=false)
CSIMigrationAWSComplete=true|false (ALPHA - 기본값=false)
CSIMigrationAzureDisk=true|false (BETA - 기본값=false)
CSIMigrationAzureDiskComplete=true|false (ALPHA - 기본값=false)
CSIMigrationAzureFile=true|false (ALPHA - 기본값=false)
CSIMigrationAzureFileComplete=true|false (ALPHA - 기본값=false)
CSIMigrationGCE=true|false (BETA - 기본값=false)
CSIMigrationGCEComplete=true|false (ALPHA - 기본값=false)
CSIMigrationOpenStack=true|false (BETA - 기본값=false)
CSIMigrationOpenStackComplete=true|false (ALPHA - 기본값=false)
CSIMigrationvSphere=true|false (BETA - 기본값=false)
CSIMigrationvSphereComplete=true|false (BETA - 기본값=false)
CSIStorageCapacity=true|false (ALPHA - 기본값=false)
CSIVolumeFSGroupPolicy=true|false (ALPHA - 기본값=false)
ConfigurableFSGroupPolicy=true|false (ALPHA - 기본값=false)
CustomCPUCFSQuotaPeriod=true|false (ALPHA - 기본값=false)
DefaultPodTopologySpread=true|false (ALPHA - 기본값=false)
DevicePlugins=true|false (BETA - 기본값=true)
DisableAcceleratorUsageMetrics=true|false (ALPHA - 기본값=false)
DynamicKubeletConfig=true|false (BETA - 기본값=true)
EndpointSlice=true|false (BETA - 기본값=true)
EndpointSliceProxying=true|false (BETA - 기본값=true)
EphemeralContainers=true|false (ALPHA - 기본값=false)
ExpandCSIVolumes=true|false (BETA - 기본값=true)
ExpandInUsePersistentVolumes=true|false (BETA - 기본값=true)
ExpandPersistentVolumes=true|false (BETA - 기본값=true)
ExperimentalHostUserNamespaceDefaulting=true|false (BETA - 기본값=false)
GenericEphemeralVolume=true|false (ALPHA - 기본값=false)
HPAScaleToZero=true|false (ALPHA - 기본값=false)
HugePageStorageMediumSize=true|false (BETA - 기본값=true)
HyperVContainer=true|false (ALPHA - 기본값=false)
IPv6DualStack=true|false (ALPHA - 기본값=false)
ImmutableEphemeralVolumes=true|false (BETA - 기본값=true)
KubeletPodResources=true|false (BETA - 기본값=true)
LegacyNodeRoleBehavior=true|false (BETA - 기본값=true)
LocalStorageCapacityIsolation=true|false (BETA - 기본값=true)
LocalStorageCapacityIsolationFSQuotaMonitoring=true|false (ALPHA - 기본값=false)
NodeDisruptionExclusion=true|false (BETA - 기본값=true)
NonPreemptingPriority=true|false (BETA - 기본값=true)
PodDisruptionBudget=true|false (BETA - 기본값=true)
PodOverhead=true|false (BETA - 기본값=true)
ProcMountType=true|false (ALPHA - 기본값=false)
QOSReserved=true|false (ALPHA - 기본값=false)
RemainingItemCount=true|false (BETA - 기본값=true)
RemoveSelfLink=true|false (ALPHA - 기본값=false)
RotateKubeletServerCertificate=true|false (BETA - 기본값=true)
RunAsGroup=true|false (BETA - 기본값=true)
RuntimeClass=true|false (BETA - 기본값=true)
SCTPSupport=true|false (BETA - 기본값=true)
SelectorIndex=true|false (BETA - 기본값=true)
ServerSideApply=true|false (BETA - 기본값=true)
ServiceAccountIssuerDiscovery=true|false (ALPHA - 기본값=false)
ServiceAppProtocol=true|false (BETA - 기본값=true)
ServiceNodeExclusion=true|false (BETA - 기본값=true)
ServiceTopology=true|false (ALPHA - 기본값=false)
SetHostnameAsFQDN=true|false (ALPHA - 기본값=false)
StartupProbe=true|false (BETA - 기본값=true)
StorageVersionHash=true|false (BETA - 기본값=true)
SupportNodePidsLimit=true|false (BETA - 기본값=true)
SupportPodPidsLimit=true|false (BETA - 기본값=true)
Sysctls=true|false (BETA - 기본값=true)
TTLAfterFinished=true|false (ALPHA - 기본값=false)
TokenRequest=true|false (BETA - 기본값=true)
TokenRequestProjection=true|false (BETA - 기본값=true)
TopologyManager=true|false (BETA - 기본값=true)
ValidateProxyRedirects=true|false (BETA - 기본값=true)
VolumeSnapshotDataSource=true|false (BETA - 기본값=true)
WarningHeaders=true|false (BETA - 기본값=true)
WinDSR=true|false (ALPHA - 기본값=false)
WinOverlay=true|false (ALPHA - 기본값=false)
WindowsEndpointSliceProxying=true|false (ALPHA - 기본값=false)
--healthz-bind-address ipport     기본값: 0.0.0.0:10256
헬스 체크 서버가 서비스할 포트가 있는 IP 주소(모든 IPv4의 인터페이스의 경우 '0.0.0.0:10256', 모든 IPv6의 인터페이스인 경우 '[::]:10256'로 설정). 사용 안 할 경우 빈칸으로 둠.
-h, --help
kube-proxy에 대한 도움말.
--hostname-override string
문자열 값이 있으면, 이 값을 실제 호스트네임 대신에 ID로 사용한다.
--iptables-masquerade-bit int32     기본값: 14
순수 iptable 프록시를 사용하는 경우 SNAT가 필요한 패킷을 표시하는 fwmark 스페이스 비트. [0, 31] 범위 안에 있어야 한다.
--iptables-min-sync-period duration     기본값: 1s
엔드포인트 및 서비스가 변경될 때 iptable 규칙을 새로 고칠 수 있는 빈도의 최소 간격(예: '5s', '1m', '2h22m').
--iptables-sync-period duration     기본값: 30s
iptable 규칙을 새로 고치는 빈도의 최대 간격(예: '5s', '1m', '2h22m'). 0 보다 커야 한다.
--ipvs-exclude-cidrs stringSlice
IPVS 규칙을 정리할 때 ipvs 프록시가 건드리지 않아야 하는 쉼표로 구분된 CIDR 목록.
--ipvs-min-sync-period duration
엔드포인트 및 서비스가 변경될 때 ipvs 규칙을 새로 고칠 수 있는 빈도의 최소 간격(예: '5s', '1m', '2h22m').
--ipvs-scheduler string
프록시 모드가 ipvs인 경우 ipvs 스케줄러 유형.
--ipvs-strict-arp
arp_ignore를 1로 설정하고 arp_annotes를 2로 설정하여 엄격한 ARP를 사용.
--ipvs-sync-period duration     기본값: 30s
ipvs 규칙이 새로 갱신되는 빈도의 최대 간격(예: '5s', '1m', '2h22m'). 0 보다 커야 한다.
--ipvs-tcp-timeout duration
유휴 IPVS TCP 연결에 대한 시간 초과. 0이면 그대로 유지(예: '5s', '1m', '2h22m').
--ipvs-tcpfin-timeout duration
FIN 패킷을 수신한 후 IPVS TCP 연결에 대한 시간 초과. 0이면 그대로 유지(예: '5s', '1m', '2h22m').
--ipvs-udp-timeout duration
IPVS UDP 패킷에 대한 시간 초과. 0이면 그대로 유지(예: '5s', '1m', '2h22m').
--kube-api-burst int32     기본값: 10
쿠버네티스 api 서버와 통신하는 동안 사용할 burst.
--kube-api-content-type string     기본값: "application/vnd.kubernetes.protobuf"
api 서버에 보낸 요청의 내용 유형.
--kube-api-qps float32     기본값: 5
쿠버네티스 api 서버와 통신할 때 사용할 QPS.
--kubeconfig string
인증 정보가 있는 kubeconfig 파일의 경로(마스터 위치는 마스터 플래그로 설정됨).
--log-flush-frequency duration     기본값: 5s
로그 플러시 사이의 최대 시간
--masquerade-all
순수 iptables 프록시를 사용하는 경우 서비스 클러스터 IP를 통해 전송된 모든 트래픽을 SNAT함(일반적으로 필요하지 않음).
--master string
쿠버네티스 API 서버의 주소(kubeconfig의 모든 값 덮어쓰기).
--metrics-bind-address ipport     기본값: 127.0.0.1:10249
메트릭 서버가 서비스할 포트가 있는 IP 주소(모든 IPv4 인터페이스의 경우 '0.0.0.0:10249', 모든 IPv6 인터페이스의 경우 '[::]:10249'로 설정됨). 사용하지 않으려면 비워둘 것.
--nodeport-addresses stringSlice
NodePort에 사용할 주소를 지정하는 값의 문자열 조각. 값은 유효한 IP 블록(예: 1.2.3.0/24, 1.2.3.4/32). 기본값인 빈 문자열 조각값은([]) 모든 로컬 주소를 사용하는 것을 의미한다.
--oom-score-adj int32     기본값: -999
kube-proxy 프로세스에 대한 oom-score-adj 값. 값은 [-1000, 1000] 범위 내에 있어야 한다.
--profiling
값이 true이면 /debug/pprof 핸들러에서 웹 인터페이스를 통한 프로파일링을 활성화한다.
--proxy-mode ProxyMode
사용할 프록시 모드: 'userspace' (이전) or 'iptables' (빠름) or 'ipvs' or 'kernelspace' (윈도우). 공백인 경우 가장 잘 사용할 수 있는 프록시(현재는 iptables)를 사용한다. iptables 프록시를 선택했지만, 시스템의 커널 또는 iptables 버전이 맞지 않으면, 항상 userspace 프록시로 변경된다.
--proxy-port-range port-range
서비스 트래픽을 프록시하기 위해 사용할 수 있는 호스트 포트 범위(beginPort-endPort, single port 또는 beginPort+offset 포함). 만약 범위가 0, 0-0, 혹은 지정되지 않으면, 포트는 무작위로 선택된다.
--show-hidden-metrics-for-version string
숨겨진 메트릭을 표시할 이전 버전.
--udp-timeout duration     기본값: 250ms
유휴 UDP 연결이 열린 상태로 유지되는 시간(예: '250ms', '2s'). 값은 0보다 커야 한다. 프록시 모드 userspace에만 적용 가능함.
--version version[=true]
버전 정보를 인쇄하고 종료.
--write-config-to string
기본 구성 값을 이 파일에 옮겨쓰고 종료한다.
+ + + diff --git a/content/ko/docs/reference/command-line-tools-reference/kubelet-authentication-authorization.md b/content/ko/docs/reference/command-line-tools-reference/kubelet-authentication-authorization.md index 61f0b35d1f..6f9060dba4 100644 --- a/content/ko/docs/reference/command-line-tools-reference/kubelet-authentication-authorization.md +++ b/content/ko/docs/reference/command-line-tools-reference/kubelet-authentication-authorization.md @@ -5,7 +5,7 @@ title: Kubelet 인증/인가 ## 개요 -kubelet의 HTTPS 엔드포인트는 다양한 민감도의 데이터에 대한 접근을 노출시키며, +kubelet의 HTTPS 엔드포인트는 다양한 민감도의 데이터에 대한 접근을 제공하는 API를 노출하며, 노드와 컨테이너 내에서 다양한 수준의 권한으로 작업을 수행할 수 있도록 허용한다. 이 문서는 kubelet의 HTTPS 엔드포인트에 대한 접근을 인증하고 인가하는 방법을 설명한다. diff --git a/content/ko/docs/reference/glossary/container-lifecycle-hooks.md b/content/ko/docs/reference/glossary/container-lifecycle-hooks.md new file mode 100644 index 0000000000..7b1ebd27a4 --- /dev/null +++ b/content/ko/docs/reference/glossary/container-lifecycle-hooks.md @@ -0,0 +1,17 @@ +--- +title: 컨테이너 라이프사이클 훅(Container Lifecycle Hooks) +id: container-lifecycle-hooks +date: 2018-10-08 +full_link: /ko/docs/concepts/containers/container-lifecycle-hooks/ +short_description: > + 라이프사이클 훅은 컨테이너 관리 라이프사이클에 이벤트를 노출하고 이벤트가 발생할 때 사용자가 코드를 실행할 수 있도록 한다. + +aka: +tags: +- extension +--- + 라이프사이클 훅은 {{< glossary_tooltip text="컨테이너" term_id="container" >}} 관리 라이프사이클에 이벤트를 노출하고 이벤트가 발생할 때 사용자가 코드를 실행할 수 있도록 한다. + + + +컨테이너에는 두 개의 훅(컨테이너가 생성된 직후에 실행되는 PostStart와 컨테이너가 종료되기 직전에 차단되고 호출되는 PreStop)이 노출된다. diff --git a/content/ko/docs/reference/glossary/container.md b/content/ko/docs/reference/glossary/container.md index 2420a42112..9d01041f9e 100755 --- a/content/ko/docs/reference/glossary/container.md +++ b/content/ko/docs/reference/glossary/container.md @@ -2,7 +2,7 @@ title: 컨테이너(Container) id: container date: 2018-04-12 -full_link: /ko/docs/concepts/overview/what-is-kubernetes/#왜-컨테이너인가 +full_link: /ko/docs/concepts/containers/ short_description: > 소프트웨어와 그것에 종속된 모든 것을 포함한 가볍고 휴대성이 높은 실행 가능 이미지. diff --git a/content/ko/docs/reference/kubectl/jsonpath.md b/content/ko/docs/reference/kubectl/jsonpath.md new file mode 100644 index 0000000000..4a910829f8 --- /dev/null +++ b/content/ko/docs/reference/kubectl/jsonpath.md @@ -0,0 +1,113 @@ +--- +title: JSONPath 지원 +content_type: concept +weight: 25 +--- + + +Kubectl은 JSONPath 템플릿을 지원한다. + + + + +JSONPath 템플릿은 중괄호 {}로 둘러싸인 JSONPath 표현식으로 구성된다. +Kubectl은 JSONPath 표현식을 사용하여 JSON 오브젝트의 특정 필드를 필터링하고 출력 형식을 지정한다. +원본 JSONPath 템플릿 구문 외에도 다음과 같은 기능과 구문이 유효하다. + +1. 큰따옴표를 사용하여 JSONPath 표현식 내부의 텍스트를 인용한다. +2. 목록을 반복하려면 `range`, `end` 오퍼레이터를 사용한다. +3. 목록에서 뒤로 이동하려면 negative slice 인덱스를 사용한다. negative 인덱스는 목록을 "순환(wrap around)" 하지 않으며, `-index + listLength >= 0` 인 한 유효하다. + +{{< note >}} + +- 표현식은 항상 루트 오브젝트에서 시작하므로 `$` 오퍼레이터는 선택 사항이다. + +- 결과 오브젝트는 String() 함수로 출력된다. + +{{< /note >}} + +JSON 입력 시 다음과 같다. + +```json +{ + "kind": "List", + "items":[ + { + "kind":"None", + "metadata":{"name":"127.0.0.1"}, + "status":{ + "capacity":{"cpu":"4"}, + "addresses":[{"type": "LegacyHostIP", "address":"127.0.0.1"}] + } + }, + { + "kind":"None", + "metadata":{"name":"127.0.0.2"}, + "status":{ + "capacity":{"cpu":"8"}, + "addresses":[ + {"type": "LegacyHostIP", "address":"127.0.0.2"}, + {"type": "another", "address":"127.0.0.3"} + ] + } + } + ], + "users":[ + { + "name": "myself", + "user": {} + }, + { + "name": "e2e", + "user": {"username": "admin", "password": "secret"} + } + ] +} +``` + +Function | Description | Example | Result +--------------------|---------------------------|-----------------------------------------------------------------|------------------ +`text` | 일반 텍스트 | `kind is {.kind}` | `kind is List` +`@` | 현재 오브젝트 | `{@}` | 입력과 동일 +`.` or `[]` | 자식 오퍼레이터 | `{.kind}`, `{['kind']}` or `{['name\.type']}` | `List` +`..` | 재귀 하향(recursive descent)| `{..name}` | `127.0.0.1 127.0.0.2 myself e2e` +`*` | 와일드 카드. 모든 오브젝트 가져오기 | `{.items[*].metadata.name}` | `[127.0.0.1 127.0.0.2]` +`[start:end:step]` | 아래 첨자 오퍼레이터 | `{.users[0].name}` | `myself` +`[,]` | 조합 오퍼레이터 | `{.items[*]['metadata.name', 'status.capacity']}` | `127.0.0.1 127.0.0.2 map[cpu:4] map[cpu:8]` +`?()` | 필터 | `{.users[?(@.name=="e2e")].user.password}` | `secret` +`range`, `end` | 반복 목록 | `{range .items[*]}[{.metadata.name}, {.status.capacity}] {end}` | `[127.0.0.1, map[cpu:4]] [127.0.0.2, map[cpu:8]]` +`''` | 해석된 문자열 인용 | `{range .items[*]}{.metadata.name}{'\t'}{end}` | `127.0.0.1 127.0.0.2` + +`kubectl` 및 JSONPath 표현식을 사용하는 예는 다음과 같다. + +```shell +kubectl get pods -o json +kubectl get pods -o=jsonpath='{@}' +kubectl get pods -o=jsonpath='{.items[0]}' +kubectl get pods -o=jsonpath='{.items[0].metadata.name}' +kubectl get pods -o=jsonpath="{.items[*]['metadata.name', 'status.capacity']}" +kubectl get pods -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.startTime}{"\n"}{end}' +``` + +{{< note >}} +윈도우에서 공백이 포함된 JSONPath 템플릿을 큰따옴표(위의 bash에 표시된 작은따옴표가 아님)로 묶어야 한다. 즉, 템플릿의 모든 문자 주변에 작은따옴표 또는 이스케이프된 큰따옴표를 사용해야 한다. 예를 들면, 다음과 같다. + +```cmd +kubectl get pods -o=jsonpath="{range .items[*]}{.metadata.name}{'\t'}{.status.startTime}{'\n'}{end}" +kubectl get pods -o=jsonpath="{range .items[*]}{.metadata.name}{\"\t\"}{.status.startTime}{\"\n\"}{end}" +``` +{{< /note >}} + +{{< note >}} + +JSONPath 정규식은 지원되지 않는다. 정규 표현식을 이용해 매치하려면 `jq`와 같은 도구를 사용하면 된다. + +```shell +# kubectl은 JSONPath 출력에 대한 정규 표현식을 지원하지 않는다. +# 다음 커맨드는 작동하지 않는다. +kubectl get pods -o jsonpath='{.items[?(@.metadata.name=~/^test$/)].metadata.name}' + +# 다음 커맨드는 원하는 결과를 얻는다. +kubectl get pods -o json | jq -r '.items[] | select(.metadata.name | test("test-")).spec.containers[].image' +``` +{{< /note >}} diff --git a/content/ko/docs/reference/scheduling/config.md b/content/ko/docs/reference/scheduling/config.md new file mode 100644 index 0000000000..0f3f120d77 --- /dev/null +++ b/content/ko/docs/reference/scheduling/config.md @@ -0,0 +1,253 @@ +--- +title: 스케줄러 구성 +content_type: concept +weight: 20 +--- + +{{< feature-state for_k8s_version="v1.19" state="beta" >}} + +구성 파일을 작성하고 해당 경로를 커맨드 라인 인수로 전달하여 +`kube-scheduler` 의 동작을 사용자 정의할 수 있다. + + + + + +스케줄링 프로파일(Profile)을 사용하면 {{< glossary_tooltip text="kube-scheduler" term_id="kube-scheduler" >}}에서 +여러 단계의 스케줄링을 구성할 수 있다. +각 단계는 익스텐션 포인트(extension point)를 통해 노출된다. 플러그인은 이러한 +익스텐션 포인트 중 하나 이상을 구현하여 스케줄링 동작을 제공한다. + +컴포넌트 구성 API([`v1alpha1`](https://pkg.go.dev/k8s.io/kube-scheduler@v0.18.0/config/v1alpha1?tab=doc#KubeSchedulerConfiguration) +또는 [`v1alpha2`](https://pkg.go.dev/k8s.io/kube-scheduler@v0.18.0/config/v1alpha2?tab=doc#KubeSchedulerConfiguration))를 +사용하고, `kube-scheduler --config `을 실행하여 +스케줄링 프로파일을 지정할 수 있다. +`v1alpha2` API를 사용하면 [여러 프로파일](#여러-프로파일)을 +실행하도록 kube-scheduler를 구성할 수 있다. + +최소 구성은 다음과 같다. + +```yaml +apiVersion: kubescheduler.config.k8s.io/v1beta1 +kind: KubeSchedulerConfiguration +clientConnection: + kubeconfig: /etc/srv/kubernetes/kube-scheduler/kubeconfig +``` + +## 프로파일 + +스케줄링 프로파일을 사용하면 {{< glossary_tooltip text="kube-scheduler" term_id="kube-scheduler" >}}에서 +여러 단계의 스케줄링을 구성할 수 있다. +각 단계는 [익스텐션 포인트](#익스텐션-포인트)에 노출된다. +[플러그인](#스케줄링-플러그인)은 이러한 익스텐션 포인트 중 +하나 이상을 구현하여 스케줄링 동작을 제공한다. + +`kube-scheduler` 의 단일 인스턴스를 구성하여 +[여러 프로파일](#여러-프로파일)을 실행할 수 있다. + +### 익스텐션 포인트 + +스케줄링은 다음 익스텐션 포인트를 통해 노출되는 일련의 단계에서 +발생한다. + +1. `QueueSort`: 이 플러그인은 스케줄링 대기열에서 보류 중인 파드를 + 정렬하는 데 사용되는 정렬 기능을 제공한다. 대기열 정렬 플러그인은 한 번에 단 하나만 활성화될 수 있다. + 사용할 수 있다. +1. `PreFilter`: 이 플러그인은 필터링하기 전에 파드 또는 클러스터에 대한 정보를 + 사전 처리하거나 확인하는 데 사용된다. 이 플러그인은 파드를 unschedulable로 + 표시할 수 있다. +1. `Filter`: 이 플러그인은 스케줄링 정책의 단정(Predicates)과 동일하며 + 파드를 실행할 수 없는 노드를 필터링하는 데 사용된다. 필터는 + 구성된 순서대로 호출된다. 노드가 모든 필터를 통과하지 않으면 파드는 unschedulable로 + 표시된다. +1. `PreScore`: 이것은 사전 스코어링 작업을 수행하는 데 사용할 수 있는 + 정보성 익스텐션 포인트이다. +1. `Score`: 이 플러그인은 필터링 단계를 통과한 각 노드에 점수를 + 제공한다. 그런 다음 스케줄러는 가중치 합계가 가장 높은 + 노드를 선택한다. +1. `Reserve`: 지정된 파드에 리소스가 예약된 경우 플러그인에 + 알리는 정보성 익스텐션 포인트이다. 플러그인은 또한 + `Reserve` 도중 또는 이후에 실패한 경우 호출 되는 `Unreserve` 호출을 + 구현한다. +1. `Permit`: 이 플러그인은 파드 바인딩을 방지하거나 지연시킬 수 있다. +1. `PreBind`: 이 플러그인은 파드가 바인딩되기 전에 필요한 모든 작업을 수행한다. +1. `Bind`: 플러그인은 파드를 노드에 바인딩한다. Bind 플러그인은 순서대로 호출되며 + 일단 바인딩이 완료되면 나머지 플러그인은 건너뛴다. Bind + 플러그인은 적어도 하나 이상 필요하다. +1. `PostBind`: 파드가 바인드된 후 호출되는 + 정보성 익스텐션 포인트이다. + +각 익스텐션 포인트에 대해 특정 [기본 플러그인](#스케줄링-플러그인)을 비활성화하거나 +자체 플러그인을 활성화할 수 있다. 예를 들면, 다음과 같다. + +```yaml +apiVersion: kubescheduler.config.k8s.io/v1beta1 +kind: KubeSchedulerConfiguration +profiles: + - plugins: + score: + disabled: + - name: NodeResourcesLeastAllocated + enabled: + - name: MyCustomPluginA + weight: 2 + - name: MyCustomPluginB + weight: 1 +``` + +비활성화된 배열의 이름으로 `*` 를 사용하여 해당 익스텐션 포인트에 대한 +모든 기본 플러그인을 비활성화할 수 있다. 원하는 경우, 플러그인 순서를 재정렬하는 데 +사용할 수도 있다. + +### 스케줄링 플러그인 + +1. `UnReserve`: 파드가 예약된 후 거부되고 `Permit` 플러그인에 의해 보류된 경우 + 호출되는 정보성 익스텐션 포인트이다. + +## 스케줄링 플러그인 + +기본적으로 활성화된 다음의 플러그인은 이들 익스텐션 포인트 중 +하나 이상을 구현한다. + +- `SelectorSpread`: {{< glossary_tooltip text="서비스" term_id="service" >}}, + {{< glossary_tooltip text="레플리카셋(ReplicaSets)" term_id="replica-set" >}} 및 + {{< glossary_tooltip text="스테이트풀셋(StatefulSets)" term_id="statefulset" >}}에 + 속하는 파드에 대해 노드 간 분산을 선호한다. + 익스텐션 포인트: `PreScore`, `Score`. +- `ImageLocality`: 파드가 실행하는 컨테이너 이미지가 이미 있는 노드를 + 선호한다. + 익스텐션 포인트: `Score`. +- `TaintToleration`: [테인트(taint)와 톨러레이션(toleration)](/ko/docs/concepts/scheduling-eviction/taint-and-toleration/)을 + 구현한다. + 익스텐션 포인트 구현: `Filter`, `Prescore`, `Score`. +- `NodeName`: 파드 명세 노드 이름이 현재 노드와 일치하는지 확인한다. + 익스텐션 포인트: `Filter`. +- `NodePorts`: 노드에 요청된 파드 포트에 대해 사용 가능한 포트가 있는지 확인한다. + 익스텐션 포인트: `PreFilter`, `Filter`. +- `NodePreferAvoidPods`: 노드 {{< glossary_tooltip text="어노테이션" term_id="annotation" >}} + `scheduler.alpha.kubernetes.io/preferAvoidPods` 에 따라 + 노드 점수를 매긴다. + 익스텐션 포인트: `Score`. +- `NodeAffinity`: [노드 셀렉터](/ko/docs/concepts/scheduling-eviction/assign-pod-node/#노드-셀렉터-nodeselector)와 + [노드 어피니티](/ko/docs/concepts/scheduling-eviction/assign-pod-node/#노드-어피니티)를 + 구현한다. + 익스텐션 포인트: `Filter`, `Score`. +- `PodTopologySpread`: [파드 토폴로지 분배](/ko/docs/concepts/workloads/pods/pod-topology-spread-constraints/)를 + 구현한다. + 익스텐션 포인트: `PreFilter`, `Filter`, `PreScore`, `Score`. +- `NodeUnschedulable`: `.spec.unschedulable` 이 true로 설정된 노드를 + 필터링한다. + 익스텐션 포인트: `Filter`. +- `NodeResourcesFit`: 노드에 파드가 요청하는 모든 리소스가 있는지 + 확인한다. + 익스텐션 포인트: `PreFilter`, `Filter`. +- `NodeResourcesBalancedAllocation`: 파드가 스케줄된 경우, 보다 균형잡힌 리소스 사용량을 + 얻을 수 있는 노드를 선호한다. + 익스텐션 포인트: `Score`. +- `NodeResourcesLeastAllocated`: 리소스 할당이 적은 노드를 + 선호한다. + 익스텐션 포인트: `Score`. +- `VolumeBinding`: 노드에 요청된 {{< glossary_tooltip text="볼륨" term_id="volume" >}}이 있는지 + 또는 바인딩할 수 있는지 확인한다. + 익스텐션 포인트: `PreFilter`, `Filter`, `Reserve`, `PreBind`. +- `VolumeRestrictions`: 노드에 마운트된 볼륨이 볼륨 제공자에 특정한 + 제한 사항을 충족하는지 확인한다. + 익스텐션 포인트: `Filter`. +- `VolumeZone`: 요청된 볼륨이 가질 수 있는 영역 요구 사항을 충족하는지 + 확인한다. + 익스텐션 포인트: `Filter`. +- `NodeVolumeLimits`: 노드에 대해 CSI 볼륨 제한을 충족할 수 있는지 + 확인한다. + 익스텐션 포인트: `Filter`. +- `EBSLimits`: 노드에 대해 AWS EBS 볼륨 제한을 충족할 수 있는지 확인한다. + 익스텐션 포인트: `Filter`. +- `GCEPDLimits`: 노드에 대해 GCP-PD 볼륨 제한을 충족할 수 있는지 확인한다. + 익스텐션 포인트: `Filter`. +- `AzureDiskLimits`: 노드에 대해 Azure 디스크 볼륨 제한을 충족할 수 있는지 + 확인한다. + 익스텐션 포인트: `Filter`. +- `InterPodAffinity`: [파드 간 어피니티 및 안티-어피니티](/ko/docs/concepts/scheduling-eviction/assign-pod-node/#파드간-어피니티와-안티-어피니티)를 + 구현한다. + 익스텐션 포인트: `PreFilter`, `Filter`, `PreScore`, `Score`. +- `PrioritySort`: 기본 우선 순위 기반 정렬을 제공한다. + 익스텐션 포인트: `QueueSort`. +- `DefaultBinder`: 기본 바인딩 메커니즘을 제공한다. + 익스텐션 포인트: `Bind`. +- `DefaultPreemption`: 기본 선점 메커니즘을 제공한다. + 익스텐션 포인트: `PostFilter`. + +기본으로 활성화되지 않는 다음의 플러그인을 +컴포넌트 구성 API를 통해 활성화할 수도 있다. + +- `NodeResourcesMostAllocated`: 리소스 할당이 많은 노드를 + 선호한다. + 익스텐션 포인트: `Score`. +- `RequestedToCapacityRatio`: 할당된 리소스의 구성된 기능에 따라 노드를 + 선호한다. + 익스텐션 포인트: `Score`. +- `NodeResourceLimits`: 파드 리소스 제한을 충족하는 노드를 선호한다. + 익스텐션 포인트: `PreScore`, `Score`. +- `CinderVolume`: 노드에 대해 OpenStack Cinder 볼륨 제한을 충족할 수 있는지 + 확인한다. + 익스텐션 포인트: `Filter`. +- `NodeLabel`: Filters and / or scores a node according to configured + {{< glossary_tooltip text="label(s)" term_id="label" >}}. + 익스텐션 포인트: `Filter`, `Score`. +- `ServiceAffinity`: {{< glossary_tooltip text="서비스" term_id="service" >}}에 + 속한 파드가 구성된 레이블로 정의된 노드 집합에 맞는지 + 확인한다. 이 플러그인은 또한 서비스에 속한 파드를 노드 간에 + 분산하는 것을 선호한다. + 익스텐션 포인트: `PreFilter`, `Filter`, `Score`. + +### 여러 프로파일 + +둘 이상의 프로파일을 실행하도록 `kube-scheduler` 를 구성할 수 있다. +각 프로파일에는 연관된 스케줄러 이름이 있으며 [익스텐션 포인트](#익스텐션-포인트)에 구성된 +다른 플러그인 세트를 가질 수 있다. + +다음의 샘플 구성을 사용하면, 스케줄러는 기본 플러그인이 있는 +프로파일과 모든 스코어링 플러그인이 비활성화된 프로파일의 두 가지 프로파일로 +실행된다. + +```yaml +apiVersion: kubescheduler.config.k8s.io/v1beta1 +kind: KubeSchedulerConfiguration +profiles: + - schedulerName: default-scheduler + - schedulerName: no-scoring-scheduler + plugins: + preScore: + disabled: + - name: '*' + score: + disabled: + - name: '*' +``` + +특정 프로파일에 따라 스케줄하려는 파드는 +`.spec.schedulerName` 에 해당 스케줄러 이름을 포함할 수 있다. + +기본적으로, 스케줄러 이름 `default-scheduler` 를 가진 하나의 프로파일이 생성된다. +이 프로파일에는 위에서 설명한 기본 플러그인이 포함되어 있다. 둘 이상의 +프로파일을 선언할 때, 각각에 대한 고유한 스케줄러 이름이 필요하다. + +파드가 스케줄러 이름을 지정하지 않으면, kube-apiserver는 이를 `default-scheduler` 로 +설정한다. 따라서, 해당 파드를 스케줄하려면 이 스케줄러 이름을 가진 프로파일이 +있어야 한다. + +{{< note >}} +파드의 스케줄링 이벤트에는 ReportingController로 `.spec.schedulerName` 이 있다. +리더 선출을 위한 이벤트는 목록에서 첫 번째 프로파일의 스케줄러 이름을 +사용한다. +{{< /note >}} + +{{< note >}} +모든 프로파일은 QueueSort 익스텐션 포인트에서 동일한 플러그인을 사용해야 하며 +동일한 구성 파라미터(해당하는 경우)를 가져야 한다. 그 이유는 스케줄러가 보류 중 상태인 파드 대기열을 +단 하나만 가질 수 있기 때문이다. +{{< /note >}} + +## {{% heading "whatsnext" %}} + +* [kube-scheduler 레퍼런스](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-scheduler/) 읽어보기 +* [스케줄링](/ko/docs/concepts/scheduling-eviction/kube-scheduler/)에 대해 알아보기 diff --git a/content/ko/docs/reference/tools.md b/content/ko/docs/reference/tools.md index ceac0a5101..ac0a5fb6c5 100644 --- a/content/ko/docs/reference/tools.md +++ b/content/ko/docs/reference/tools.md @@ -20,7 +20,7 @@ content_type: concept ## Minikube -[`minikube`](/ko/docs/tasks/tools/install-minikube/)는 개발과 테스팅 목적으로 하는 +[`minikube`](https://minikube.sigs.k8s.io/docs/)는 개발과 테스팅 목적으로 하는 단일 노드 쿠버네티스 클러스터를 로컬 워크스테이션에서 쉽게 구동시키는 도구이다. @@ -44,7 +44,7 @@ Helm의 용도 ## Kompose -[`Kompose`](https://github.com/kubernetes-incubator/kompose)는 도커 컴포즈 유저들이 쿠버네티스로 이동하는데 도움이 되는 도구이다. +[`Kompose`](https://github.com/kubernetes/kompose)는 도커 컴포즈 유저들이 쿠버네티스로 이동하는데 도움이 되는 도구이다. Kompose의 용도 diff --git a/content/ko/docs/reference/using-api/_index.md b/content/ko/docs/reference/using-api/_index.md index 7751aef2f4..427cebf529 100644 --- a/content/ko/docs/reference/using-api/_index.md +++ b/content/ko/docs/reference/using-api/_index.md @@ -1,4 +1,121 @@ --- -title: 쿠버네티스 API 사용하기 +title: 쿠버네티스 API 개요 +content_type: concept weight: 10 +card: + name: 레퍼런스 + weight: 50 + title: API 개요 --- + + + +이 섹션은 쿠버네티스 API에 대한 참조 정보를 제공한다. + +REST API는 쿠버네티스의 근본적인 구조이다. 모든 조작, +컴포넌트 간의 통신과 외부 사용자의 명령은 API 서버에서 처리할 수 있는 +REST API 호출이다. 따라서, 쿠버네티스 플랫폼 안의 모든 것은 +API 오브젝트로 취급되고, +[API](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/)에 상응하는 항목이 있다. + +[쿠버네티스 API 참조](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/)는 +쿠버네티스 버전 {{< param "version" >}}에 대한 API가 나열되어 있다. + +일반적인 배경 정보를 보려면, +[쿠버네티스 API](/ko/docs/concepts/overview/kubernetes-api/)를 참고한다. +[쿠버네티스 API에 대한 접근 제어](/ko/docs/concepts/security/controlling-access/)는 +클라이언트가 쿠버네티스 API 서버에 인증하는 방법과 +요청이 승인되는 방법을 설명한다. + + +## API 버전 규칙 + +JSON과 Protobuf 직렬화 스키마 모두 스키마 변경에 대해서 +동일한 가이드라인을 따른다. 이후 설명에서는 이 형식 모두를 다룬다. + +API 버전 규칙과 소프트웨어 버전 규칙은 간접적으로 연관된다. +[API와 릴리스 버전 부여에 관한 제안](https://git.k8s.io/community/contributors/design-proposals/release/versioning.md)에는 +API 버전 규칙과 소프트웨어 버전 규칙 간의 관계가 기술되어 있다. + +API 버전의 차이는 수준의 안정성과 지원의 차이를 나타낸다. +[API 변경 문서](https://git.k8s.io/community/contributors/devel/sig-architecture/api_changes.md#alpha-beta-and-stable-versions)에서 +각 수준의 기준에 대한 더 많은 정보를 찾을 수 있다. + +아래는 각 수준의 기준에 대한 요약이다. + +- 알파(Alpha): + - 버전 이름에 `alpha`가 포함된다(예: `v1alpha1`). + - 버그가 있을 수도 있다. 이 기능을 활성화하면 버그에 노출될 수 있다. + 기본적으로 비활성화되어 있다. + - 기능에 대한 기술 지원이 언제든 공지 없이 중단될 수 있다. + - 다음 소프트웨어를 릴리스할 때 공지 없이 API의 호환성이 깨지는 방식으로 변경될 수 있다. + - 버그에 대한 위험이 높고 장기간 지원되지 않으므로 + 단기간 테스트 용도의 클러스터에서만 사용하기를 권장한다. + +- 베타(Beta): + - 버전 이름에 `beta`가 포함된다(예: `v2beta3`). + - 코드가 잘 테스트 되었다. 이 기능을 활성화해도 안전하다. + 기본적으로 활성화되어 있다. + - 구체적인 내용이 바뀔 수는 있지만, 전반적인 기능에 대한 기술 지원이 중단되지 않는다. + + - 오브젝트에 대한 스키마나 문법이 다음 베타 또는 안정화 릴리스에서 + 호환되지 않는 방식으로 바뀔 수도 있다. 이런 경우, 다음 버전으로 + 이관할 수 있는 가이드가 제공된다. 스키마 변경은 API 오브젝트의 삭제, 편집 또는 재생성이 + 필요할 수도 있다. 편집 절차는 좀 생각해볼 필요가 있다. + 이 기능에 의존하고 있는 애플리케이션은 다운타임이 필요할 수도 있다. + - 이 소프트웨어는 프로덕션 용도로 권장하지 않는다. 이후 여러 버전에서 + 호환되지 않는 변경 사항이 적용될 수 있다. 복수의 클러스터를 가지고 있어서 + 독립적으로 업그레이드할 수 있다면, 이런 제약에서 벗어날 수도 있다. + + {{< note >}} + 베타 기능을 사용해보고 피드백을 제공하자. 기능이 베타 수준을 벗어난 이후에는 + 실질적으로 더 많은 변경이 어렵다. + {{< /note >}} + +- 안정화(Stable): + - 버전 이름이 `vX`이고 `X` 는 정수다. + - 안정화 버전의 기능은 이후 여러 버전에 걸쳐서 소프트웨어 릴리스에 포함된다. + +## API 그룹 + +[API 그룹](https://git.k8s.io/community/contributors/design-proposals/api-machinery/api-group.md)은 +쿠버네티스 API를 더 쉽게 확장하게 해준다. +API 그룹은 REST 경로와 직렬화된 오브젝트의 `apiVersion` 필드에 +명시된다. + +쿠버네티스에는 다음과 같은 다양한 API 그룹이 있다. + +* *핵심* (또는 *레거시* 라고 불리는) 그룹은 REST 경로 `/api/v1`에 있다. + 핵심 그룹은 `apiVersion` 필드의 일부로 명시되지 않는다. 예를 + 들어, `apiVersion: v1` 과 같다. +* 이름이 있는 그룹은 REST 경로 `/apis/$GROUP_NAME/$VERSION`에 있으며 + `apiVersion: $GROUP_NAME/$VERSION`을 사용한다(예를 들어, `apiVersion: batch/v1`). + 지원되는 API 그룹 전체의 목록은 + [쿠버네티스 API 참조 문서](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#-strong-api-groups-strong-)에서 확인할 수 있다. + +## API 그룹 활성화 또는 비활성화 + +특정 리소스 및 API 그룹은 기본적으로 활성화된다. API 서버에서 +`--runtime-config` 를 설정하여 활성화 또는 비활성화할 수 있다. +`--runtime-config` 플래그는 API 서버의 런타임 구성을 설명하는 +쉼표로 구분된 `=` 쌍을 허용한다. 만약 `=` +부분을 생략하면, `=true` 가 명시된 것처럼 취급한다. 예를 들면, 다음과 같다. + + - `batch/v1` 을 비활성화하려면, `--runtime-config=batch/v1=false` 로 설정 + - `batch/v2alpha1` 을 활성화하려면, `--runtime-config=batch/v2alpha1` 으로 설정 + +{{< note >}} +그룹이나 리소스를 활성화 또는 비활성화하려면, apiserver와 controller-manager를 재시작하여 +`--runtime-config` 변경을 반영해야 한다. +{{< /note >}} + +## 지속성 + +쿠버네티스는 {{< glossary_tooltip term_id="etcd" >}}에 기록하여 API 리소스 측면에서 +직렬화된 상태를 저장한다. + +## {{% heading "whatsnext" %}} + +- [API 규칙](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#api-conventions)에 대해 자세히 알아보기 +- [애그리게이터(aggregator)](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/aggregated-api-servers.md)에 + 대한 디자인 문서 읽기 diff --git a/content/ko/docs/reference/using-api/api-overview.md b/content/ko/docs/reference/using-api/api-overview.md deleted file mode 100644 index 4bf982fc1b..0000000000 --- a/content/ko/docs/reference/using-api/api-overview.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: 쿠버네티스 API 개요 -content_type: concept -weight: 10 -card: - name: 레퍼런스 - weight: 50 - title: API 개요 ---- - - - -이 페이지는 쿠버네티스 API에 대한 개요를 제공한다. - - - - -REST API는 쿠버네티스의 근본적인 구조이다. 모든 조작, -컴포넌트 간의 통신과 외부 사용자의 명령은 API 서버에서 처리할 수 있는 -REST API 호출이다. 따라서, 쿠버네티스 플랫폼 안의 모든 것은 -API 오브젝트로 취급되고, -[API](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/)에 상응하는 항목이 있다. - -## API 버전 규칙 - -JSON과 Protobuf 직렬화 스키마 모두 스키마 변경에 대해서 -동일한 가이드라인을 따른다. 이후 설명에서는 이 형식 모두를 다룬다. - -API 버전 규칙과 소프트웨어 버전 규칙은 간접적으로 연관된다. -[API와 릴리스 버전 부여에 관한 제안](https://git.k8s.io/community/contributors/design-proposals/release/versioning.md)에는 -API 버전 규칙과 소프트웨어 버전 규칙 간의 관계가 기술되어 있다. - -API 버전의 차이는 수준의 안정성과 지원의 차이를 나타낸다. -[API 변경 문서](https://git.k8s.io/community/contributors/devel/sig-architecture/api_changes.md#alpha-beta-and-stable-versions)에서 -각 수준의 기준에 대한 더 많은 정보를 찾을 수 있다. - -아래는 각 수준의 기준에 대한 요약이다. - -- 알파(Alpha) 수준: - - 버전 이름에 `alpha`가 포함된다. (예: `v1alpha1`) - - 버그가 있을 수도 있다. 이 기능을 활성화하면 버그가 노출될 수 있다. - 기본적으로 비활성화되어 있다. - - 기능에 대한 기술 지원이 언제든 공지 없이 중단될 수 있다. - - 다음 소프트웨어를 릴리스할 때 공지 없이 API의 호환성이 깨지는 방식으로 변경될 수 있다. - - 버그의 위험이 높고 장기간 지원되지 않으므로 - 단기간 테스트 용도의 클러스터에서만 사용하기를 권장한다. - -- 베타(Beta) 수준: - - 버전 이름에 `beta`가 포함된다. (예: `v2beta3`). - - 코드가 잘 테스트되었다. 이 기능을 활성화 시켜도 안전하다. - 기본적으로 활성화되어 있다. - - 구체적인 내용이 바뀔 수는 있지만, 전반적인 기능에 대한 기술 지원이 중단되지 않는다. - - - 오브젝트에 대한 스키마나 문법이 다음 베타 또는 안정화 릴리스에서 - 호환되지 않는 방식으로 바뀔 수도 있다. 이런 경우, 다음 버전으로 - 이관할 수 있는 가이드가 제공된다. 스키마 변경은 API 오브젝트의 삭제, 편집 또는 재생성이 - 필요할 수도 있다. 편집 절차는 좀 생각해볼 필요가 있다. - 이 기능에 의존하고 있는 애플리케이션은 다운타임이 필요할 수도 있다. - - 이 소프트웨어는 프로덕션 용도로 권장되지 않는다. 이후 여러 버전에서 - 호환되지 않는 변경 사항이 적용될 수 있다. 복수의 클러스터를 가지고 있어서 - 독립적으로 업그레이드할 수 있다면, 이런 제약에서 벗어날 수도 있다. - - {{< note >}} - 베타 기능을 사용해보고 피드백을 제공하자. 기능이 베타 수준을 벗어난 이후에는 - 실질적으로 더 많은 변경이 어렵다. - {{< /note >}} - -- 안정화(stable) 수준: - - 버전 이름이 `vX`이고 `X` 는 정수다. - - 안정화 버전의 기능은 이후 여러 버전에 걸쳐서 소프트웨어 릴리스에 포함된다. - -## API 그룹 - -[API 그룹](https://git.k8s.io/community/contributors/design-proposals/api-machinery/api-group.md)은 -쿠버네티스 API를 더 쉽게 확장하게 해준다. -API 그룹은 REST 경로와 직렬화된 객체의 `apiVersion` 필드에 -명시된다. - -현재 다음과 같은 다양한 API 그룹이 사용되고 있다. - -* *핵심* (또는 *레거시* 라고 불리는) 그룹은 REST 경로 `/api/v1`에 있다. - 핵심 그룹은 `apiVersion` 필드의 일부로 명시되지 않는다. 예를 - 들어, `apiVersion: v1` 와 같다. -* 이름이 있는 그룹은 REST 경로 `/apis/$GROUP_NAME/$VERSION`에 있으며 - `apiVersion: $GROUP_NAME/$VERSION`을 사용한다(예를 들어, `apiVersion: batch/v1`). - 지원되는 API 그룹 전체의 목록은 - [쿠버네티스 API 참조 문서](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/)에서 확인할 수 있다. - -## API 그룹 활성화 또는 비활성화 {#enabling-or-disabling} - -특정 리소스 및 API 그룹은 기본적으로 활성화된다. API 서버에서 -`--runtime-config` 를 설정하여 활성화 또는 비활성화할 수 있다. -`--runtime-config` 플래그는 API 서버의 런타임 구성을 설명하는 -쉼표로 구분된 `=` 쌍을 허용한다. 예를 들면, 다음과 같다. - - - `batch/v1` 을 비활성화하려면, `--runtime-config=batch/v1=false` 로 설정 - - `batch/v2alpha1` 을 활성화하려면, `--runtime-config=batch/v2alpha1` 으로 설정 - -{{< note >}} -그룹이나 리소스를 활성화 또는 비활성화하려면, apiserver와 controller-manager를 재시작하여 -`--runtime-config` 변경을 반영해야 한다. -{{< /note >}} - -## 지속성 - -쿠버네티스는 {{< glossary_tooltip term_id="etcd" >}}에 기록하여 API 리소스 측면에서 -직렬화된 상태를 저장한다. - -## {{% heading "whatsnext" %}} - -- [API 규칙](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#api-conventions)에 대해 자세히 알아보기 -- [애그리게이터(aggregator)](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/aggregated-api-servers.md)에 - 대한 디자인 문서 읽기 diff --git a/content/ko/docs/reference/using-api/client-libraries.md b/content/ko/docs/reference/using-api/client-libraries.md index 9a6e07293f..9391072163 100644 --- a/content/ko/docs/reference/using-api/client-libraries.md +++ b/content/ko/docs/reference/using-api/client-libraries.md @@ -10,7 +10,7 @@ weight: 30 -[쿠버네티스 REST API](/ko/docs/reference/using-api/api-overview/)를 사용해 애플리케이션을 작성하기 위해 +[쿠버네티스 REST API](/ko/docs/reference/using-api/)를 사용해 애플리케이션을 작성하기 위해 API 호출 또는 요청/응답 타입을 직접 구현할 필요는 없다. 사용하고 있는 프로그래밍 언어를 위한 클라이언트 라이브러리를 사용하면 된다. diff --git a/content/ko/docs/setup/learning-environment/_index.md b/content/ko/docs/setup/learning-environment/_index.md index cd7005bf79..1c035d5bae 100644 --- a/content/ko/docs/setup/learning-environment/_index.md +++ b/content/ko/docs/setup/learning-environment/_index.md @@ -2,3 +2,32 @@ title: 학습 환경 weight: 20 --- + + + +## kind + +[`kind`](https://kind.sigs.k8s.io/docs/)를 사용하면 로컬 컴퓨터에서 +쿠버네티스를 사용할 수 있다. 이 툴을 사용하려면 +[도커](https://docs.docker.com/get-docker/)를 설치 및 구성해야 한다. + +kind [빠른 시작](https://kind.sigs.k8s.io/docs/user/quick-start/) 페이지에는 +kind를 시작하고 실행하기 위해 해야 할 일이 나와 있다. + +## minikube + +`kind`와 마찬가지로, [`minikube`](https://minikube.sigs.k8s.io/)는 로컬에서 쿠버네티스를 실행할 수 있는 툴이다. +`minikube`는 개인용 컴퓨터(윈도우, 맥OS, 리눅스 포함)에서 +단일 노드 쿠버네티스 클러스터를 실행하므로 +쿠버네티스를 시험해 보거나 일상적인 개발 작업에 사용할 수 있다. + +툴을 설치하고 싶으면 +[시작하기!](https://minikube.sigs.k8s.io/docs/start/) 공식 가이드를 +참조하기 바란다. diff --git a/content/ko/docs/setup/learning-environment/minikube.md b/content/ko/docs/setup/learning-environment/minikube.md deleted file mode 100644 index 191da08404..0000000000 --- a/content/ko/docs/setup/learning-environment/minikube.md +++ /dev/null @@ -1,512 +0,0 @@ ---- -title: Minikube로 쿠버네티스 설치 -weight: 30 -content_type: concept ---- - - - -Minikube는 쿠버네티스를 로컬에서 쉽게 실행하는 도구이다. Minikube는 매일 쿠버네티스를 사용하거나 개발하려는 사용자들을 위해 가상 머신(VM) 이나 노트북에서 단일 노드 쿠버네티스 클러스터를 실행한다. - - - - - -## Minikube 특징 - -Minikube는 다음과 같은 쿠버네티스의 기능을 제공한다. - -* DNS -* 노드 포트 -* 컨피그 맵과 시크릿 -* 대시보드 -* 컨테이너 런타임: [Docker](https://www.docker.com/), [CRI-O](https://cri-o.io/) 와 [containerd](https://github.com/containerd/containerd) -* CNI(Container Network Interface) 사용 -* 인그레스 - -## 설치 - -[Minikube 설치](/ko/docs/tasks/tools/install-minikube/) 항목을 보자. - -## 빠른 시작 - -여기서 기술하는 간단한 데모는 어떻게 로컬에서 Minikube를 시작하고, 사용하고 삭제하는지를 안내한다. 다음의 주어진 단계를 따라서 Minikube를 시작하고 탐구한다. - -1. Minikube를 시작하고 클러스터를 생성 - - ```shell - minikube start - ``` - - 결과는 다음과 비슷하다. - - ``` - Starting local Kubernetes cluster... - Running pre-create checks... - Creating machine... - Starting local Kubernetes cluster... - ``` - - 특정 쿠버네티스 버전, VM, 컨테이너 런타임 상에서 클러스터를 시작하기 위한 보다 상세한 정보는 [클러스터 시작하기](#클러스터-시작하기)를 참조한다. - -2. 이제, kubectl을 통해서 클러스터와 상호작용할 수 있다. 보다 상세한 정보는 [클러스터와 상호 작용하기](#클러스터와-상호-작용하기)를 참조한다. - - 간단한 HTTP 서버인 `echoserver` 이미지를 사용해서 쿠버네티스 디플로이먼트를 만들고 `--port`를 이용해서 8080 포트로 노출해보자. - - ```shell - kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.10 - ``` - - 결과는 다음과 비슷하다. - - ``` - deployment.apps/hello-minikube created - ``` -3. `hello-minikube` 디플로이먼트에 액세스하기 위해, 서비스로 노출시킨다. - - ```shell - kubectl expose deployment hello-minikube --type=NodePort --port=8080 - ``` - - `--type=NodePort` 옵션은 서비스 타입을 지정한다. - - 결과는 다음과 비슷하다. - - ``` - service/hello-minikube exposed - ``` - -4. `hello-minikube` 파드가 이제 시작되었지만 노출된 서비스를 통해서 접근하기 전에 파드가 뜨기를 기다려야한다. - - 파드가 시작되고 실행 중인지 확인한다. - - ```shell - kubectl get pod - ``` - - 출력에서 `STATUS`가 `ContainerCreating`으로 나타나는 경우, 파드는 아직 생성 중이다. - - ``` - NAME READY STATUS RESTARTS AGE - hello-minikube-3383150820-vctvh 0/1 ContainerCreating 0 3s - ``` - - 출력에서 `STATUS`가 `Running`으로 나타나는 경우, 파드는 이제 시작돼서 실행 중이다. - - ``` - NAME READY STATUS RESTARTS AGE - hello-minikube-3383150820-vctvh 1/1 Running 0 13s - ``` - -5. 서비스 상세를 보기 위해서 노출된 서비스의 URL을 얻는다. - - ```shell - minikube service hello-minikube --url - ``` - -6. 로컬 클러스터의 상세를 보기위해서, 출력에서 얻은 URL을 브라우저에 복사해서 붙여넣는다. - - 출력은 다음과 비슷하다. - - ``` - Hostname: hello-minikube-7c77b68cff-8wdzq - - Pod Information: - -no pod information available- - - Server values: - server_version=nginx: 1.13.3 - lua: 10008 - - Request Information: - client_address=172.17.0.1 - method=GET - real path=/ - query= - request_version=1.1 - request_scheme=http - request_uri=http://192.168.99.100:8080/ - - Request Headers: - accept=*/* - host=192.168.99.100:30674 - user-agent=curl/7.47.0 - - Request Body: - -no body in request- - ``` - - 서비스나 클러스터가 더 이상 구동되지 않도록 하려면, 삭제한다. - -7. `hello-minikube` 서비스 삭제 - - ```shell - kubectl delete services hello-minikube - ``` - - The output is similar to this: - - ``` - service "hello-minikube" deleted - ``` - -8. `hello-minikube` 디플로이먼트 삭제 - - ```shell - kubectl delete deployment hello-minikube - ``` - - The output is similar to this: - - ``` - deployment.extensions "hello-minikube" deleted - ``` - -9. 로컬 Minikube 클러스터 중지 - - ```shell - minikube stop - ``` - - The output is similar to this: - - ``` - Stopping "minikube"... - "minikube" stopped. - ``` - - 보다 상세한 정보는 [클러스터 중지하기](#클러스터-중지하기)를 참조한다. - -10. 로컬 Minikube 클러스터 삭제 - - ```shell - minikube delete - ``` - 출력은 다음과 비슷하다. - ``` - Deleting "minikube" ... - The "minikube" cluster has been deleted. - ``` - 보다 상세한 정보는 [Deleting a cluster](#클러스터-삭제하기)를 참조한다. - -## 클러스터 관리하기 - -### 클러스터 시작하기 - -클러스터를 시작하기 위해서 `minikube start` 커멘드를 사용할 수 있다. -이 커멘드는 단일 노드 쿠버네티스 클러스터를 구동하는 가상 머신을 생성하고 구성한다. -이 커멘드는 또한 [kubectl](/ko/docs/reference/kubectl/overview/)도 설정해서 클러스터와 통신할 수 있도록 한다. - -{{< note >}} -웹 프록시 뒤에 있다면, `minikube start` 커맨드에 해당 정보를 전달해야 한다. - -```shell -https_proxy= minikube start --docker-env http_proxy= --docker-env https_proxy= --docker-env no_proxy=192.168.99.0/24 -``` -불행하게도, 환경 변수 설정만으로는 되지 않는다. - -Minikube는 또한 "minikube" 콘텍스트를 생성하고 이를 kubectl의 기본값으로 설정한다. -이 콘텍스트로 돌아오려면, 다음의 코멘드를 입력한다. `kubectl config use-context minikube`. -{{< /note >}} - -#### 쿠버네티스 버전 지정하기 - -`minikube start` 코멘드에 `--kubernetes-version` 문자열을 -추가해서 Minikube에서 사용할 쿠버네티스 버전을 지정할 수 있다. -예를 들어 버전 {{< param "fullversion" >}}를 구동하려면, 다음과 같이 실행한다. - -``` -minikube start --kubernetes-version {{< param "fullversion" >}} -``` -#### VM 드라이버 지정하기 -`minikube start` 코멘드에 `--driver=` 플래그를 추가해서 VM 드라이버를 변경할 수 있다. -코멘드를 예를 들면 다음과 같다. -```shell -minikube start --driver= -``` -Minikube는 다음의 드라이버를 지원한다. -{{< note >}} -지원되는 드라이버와 플러그인 설치 방법에 대한 보다 상세한 정보는 [드라이버](https://minikube.sigs.k8s.io/docs/reference/drivers/)를 참조한다. -{{< /note >}} - -* docker ([드라이버 설치](https://minikube.sigs.k8s.io/docs/drivers/docker/)) -* virtualbox ([드라이버 설치](https://minikube.sigs.k8s.io/docs/drivers/virtualbox/)) -* podman ([드라이버 설치](https://minikube.sigs.k8s.io/docs/drivers/podman/)) (EXPERIMENTAL) -* vmwarefusion -* kvm2 ([드라이버 설치](https://minikube.sigs.k8s.io/docs/reference/drivers/kvm2/)) -* hyperkit ([드라이버 설치](https://minikube.sigs.k8s.io/docs/reference/drivers/hyperkit/)) -* hyperv ([드라이버 설치](https://minikube.sigs.k8s.io/docs/reference/drivers/hyperv/)) -다음 IP는 동적이며 변경할 수 있다. `minikube ip`로 알아낼 수 있다. -* vmware ([드라이버 설치](https://minikube.sigs.k8s.io/docs/reference/drivers/vmware/)) (VMware unified driver) -* parallels ([드라이버 설치](https://minikube.sigs.k8s.io/docs/reference/drivers/parallels/)) -* none (쿠버네티스 컴포넌트를 가상 머신이 아닌 호스트 상에서 구동한다. 리눅스를 실행중이어야 하고, {{< glossary_tooltip term_id="docker" >}}가 설치되어야 한다.) - -{{< caution >}} -`none` 드라이버를 사용한다면 일부 쿠버네티스 컴포넌트는 Minikube 환경 외부에 있는 부작용이 있는 권한을 가진 컨테이너로 실행된다. 이런 부작용은 개인용 워크스테이션에는 `none` 드라이버가 권장하지 않는 것을 의미 한다. -{{< /caution >}} - -#### 대안적인 컨테이너 런타임 상에서 클러스터 시작하기 -Minikube를 다음의 컨테이너 런타임에서 기동할 수 있다. -{{< tabs name="container_runtimes" >}} -{{% tab name="containerd" %}} -[containerd](https://github.com/containerd/containerd)를 컨테이너 런타임으로 사용하려면, 다음을 실행한다. -```bash -minikube start \ - --network-plugin=cni \ - --enable-default-cni \ - --container-runtime=containerd \ - --bootstrapper=kubeadm -``` - -혹은 확장 버전을 사용할 수 있다. - -```bash -minikube start \ - --network-plugin=cni \ - --enable-default-cni \ - --extra-config=kubelet.container-runtime=remote \ - --extra-config=kubelet.container-runtime-endpoint=unix:///run/containerd/containerd.sock \ - --extra-config=kubelet.image-service-endpoint=unix:///run/containerd/containerd.sock \ - --bootstrapper=kubeadm -``` -{{% /tab %}} -{{% tab name="CRI-O" %}} -[CRI-O](https://cri-o.io/)를 컨테이너 런타임으로 사용하려면, 다음을 실행한다. -```bash -minikube start \ - --network-plugin=cni \ - --enable-default-cni \ - --container-runtime=cri-o \ - --bootstrapper=kubeadm -``` -혹은 확장 버전을 사용할 수 있다. - -```bash -minikube start \ - --network-plugin=cni \ - --enable-default-cni \ - --extra-config=kubelet.container-runtime=remote \ - --extra-config=kubelet.container-runtime-endpoint=/var/run/crio.sock \ - --extra-config=kubelet.image-service-endpoint=/var/run/crio.sock \ - --bootstrapper=kubeadm -``` -{{% /tab %}} -{{< /tabs >}} - -#### Docker 데몬 재사용을 통한 로컬 이미지 사용하기 - -쿠버네티스 단일 VM을 사용하면 Minikube에 내장된 도커 데몬을 재사용하기에 매우 간편하다. 이 경우는 호스트 장비에 도커 레지스트리를 설치하고 이미지를 푸시할 필요가 없다. 또 로컬에서 빠르게 실행할 수 있는데 이는 Minikube와 동일한 도커 데몬 안에서 이미지를 빌드하기 때문이다. - -{{< note >}} -Docker 이미지를 'latest'가 아닌 다른 태그로 태그했는지 확인하고 이미지를 풀링할 때에는 그 태그를 이용한다. 혹시 이미지 태그 버전을 지정하지 않았다면, 기본값은 `:latest`이고 이미지 풀링 정책은 `Always`가 가정하나, 만약 기본 Docker 레지스트리(보통 DockerHub)에 해당 Docker 이미지 버전이 없다면 `ErrImagePull`의 결과가 나타날 것이다. -{{< /note >}} - -맥이나 리눅스 호스트에서 해당 Docker 데몬을 사용하려면 `minikube docker-env` 에서 마지막 줄을 실행한다. - -이제 개인의 맥/리눅스 머신 내 커멘드 라인에서 도커를 사용해서 Minikube VM 안의 도커 데몬과 통신할 수 있다. - -```shell -docker ps -``` - -{{< note >}} -Centos 7 에서 Docker는 아래와 같은 오류를 발생한다. - -``` -Could not read CA certificate "/etc/docker/ca.pem": open /etc/docker/ca.pem: no such file or directory -``` - -/etc/sysconfig/docker를 업데이트하고 Minikube의 환경에 변경이 반영되었는지 확인해서 고칠 수 있다. - -```shell -< DOCKER_CERT_PATH=/etc/docker ---- -> if [ -z "${DOCKER_CERT_PATH}" ]; then -> DOCKER_CERT_PATH=/etc/docker -> fi -``` -{{< /note >}} - -### 쿠버네티스 구성하기 - -Minikube는 사용자가 쿠버네티스 컴포넌트를 다양한 값으로 설정할 수 있도록 하는 '설정기' 기능이 있다. -이 기능을 사용하려면, `--extra-config` 플래그를 `minikube start` 명령어에 추가하여야 한다. - -이 플래그는 여러번 쓸 수 있어 여러 옵션 설정을 전달 할 수 있다. - -이 플래그는 `component.key=value`형식의 문자열로, -앞에 `component`는 아래 목록에 하나의 문자열이며 `key`는 configuration struct의 값이고 `value`는 설정할 값이다(역주: key는 struct의 맴버명). - -올바른 키들은 각 컴포넌트의 쿠버네티스 `componentconfigs` 문서에서 찾아 볼 수 있다. -다음은 각각의 지원하는 설정에 대한 문서이다. - -* [kubelet](https://godoc.org/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig#KubeletConfiguration) -* [apiserver](https://godoc.org/k8s.io/kubernetes/cmd/kube-apiserver/app/options#ServerRunOptions) -* [proxy](https://godoc.org/k8s.io/kubernetes/pkg/proxy/apis/config#KubeProxyConfiguration) -* [controller-manager](https://godoc.org/k8s.io/kubernetes/pkg/controller/apis/config#KubeControllerManagerConfiguration) -* [etcd](https://godoc.org/github.com/coreos/etcd/etcdserver#ServerConfig) -* [scheduler](https://godoc.org/k8s.io/kubernetes/pkg/scheduler/apis/config#KubeSchedulerConfiguration) - -#### 예제 - -쿠블렛에서 `MaxPods` 설정을 5로 바꾸려면 `--extra-config=kubelet.MaxPods=5` 플래그를 전달하자. - -이 기능은 또한 중첩 구조를 지원한다. 스케쥴러에서 `LeaderElection.LeaderElect` 설정을 `true`로 하려면, `--extra-config=scheduler.LeaderElection.LeaderElect=true` 플래그를 전달하자. - -`apiserver`에서 `AuthorizationMode`를 `RBAC`으로 바꾸려면, `--extra-config=apiserver.authorization-mode=RBAC`를 사용할 수 있다. - -### 클러스터 중지 -`minikube stop` 명령어는 클러스터를 중지하는데 사용할 수 있다. -이 명령어는 Minikube 가상 머신을 종료하지만, 모든 클러스터 상태와 데이터를 보존한다. -클러스터를 다시 시작하면 이전의 상태로 돌려준다. - -### 클러스터 삭제 -`minikube delete` 명령은 클러스터를 삭제하는데 사용할 수 있다. -이 명령어는 Minikube 가상 머신을 종료하고 삭제한다. 어떤 데이터나 상태도 보존되지 않다. - -### Minikube 업그레이드 -macOS를 사용하고 있고 [Brew 패키지 관리자](https://brew.sh/)가 설치되어 있다면 다음과 같이 실행한다. - -```shell -brew update -brew upgrade minikube -``` - -## 클러스터와 상호 작용하기 - -### Kubectl - -`minikube start` 명령어는 Minikube로 부르는 [kubectl 콘텍스트](/docs/reference/generated/kubectl/kubectl-commands/#-em-set-context-em-)를 생성한다. -이 콘텍스트는 Minikube 클러스터와 통신하는 설정을 포함한다. - -Minikube는 이 콘텍스트를 자동적으로 기본으로 설정한다. 만약 미래에 이것을 바꾸고 싶다면 다음을 실행하자. - -`kubectl config use-context minikube` - -혹은 다음과 같이 커맨드를 실행할 때마다 매번 콘텍스트를 전달한다. - -`kubectl get pods --context=minikube` - -### 대시보드 - -[쿠버네티스 대시보드](/ko/docs/tasks/access-application-cluster/web-ui-dashboard/)를 이용하려면, Minikube를 실행한 후 쉘에서 아래 명령어를 실행하여 주소를 확인한다. - -```shell -minikube dashboard -``` - -### 서비스 - -노드 포트로 노출된 서비스를 접근하기 위해, Minikube를 시작한 이후 쉘에서 아래 명령어를 실행하여 주소를 확인하자. - -```shell -minikube service [-n NAMESPACE] [--url] NAME -``` - -## 네트워킹 - -Minikube VM은 host-only IP 주소를 통해 호스트 시스템에 노출되고, 이 IP 주소는 `minikube ip` 명령어로 확인할 수 있다. -`NodePort` 서비스 타입은 IP 주소에 해당 노드 포트로 접근할 수 있다. - -서비스의 NodePort를 확인하려면 `kubectl` 명령어로 아래와 같이 하면 된다. - -`kubectl get service $SERVICE --output='jsonpath="{.spec.ports[0].nodePort}"'` - -## 퍼시스턴트 볼륨 -Minikube는 [퍼시스턴트 볼륨](/ko/docs/concepts/storage/persistent-volumes/)을 `hostPath` 타입으로 지원한다. -이런 퍼시스턴트 볼륨은 Minikube VM 내에 디렉터리로 매핑됩니다. - -Minikube VM은 tmpfs에서 부트하는데, 매우 많은 디렉터리가 재부트(`minikube stop`)까지는 유지되지 않다. -그러나, Minikube는 다음의 호스트 디렉터리 아래 파일은 유지하도록 설정되어 있다. - -* `/data` -* `/var/lib/minikube` -* `/var/lib/docker` - -이것은 `/data` 디렉터리에 데이터를 보존하도록 한 퍼시스턴트 볼륨 환경설정의 예이다. - -```yaml -apiVersion: v1 -kind: PersistentVolume -metadata: - name: pv0001 -spec: - accessModes: - - ReadWriteOnce - capacity: - storage: 5Gi - hostPath: - path: /data/pv0001/ -``` - -## 호스트 폴더 마운트 -어떤 드라이버는 VM 안에 호스트 폴더를 마운트하여 VM과 호스트 사이에 쉽게 파일을 공유할 수 있게 한다. 이들은 지금 설정할 수 없고 사용하는 드라이버나 운영체제에 따라 다르다. - -{{< note >}} -호스트 폴더 공유는 KVM 드라이버에서 아직 구현되어 있지 않다. -{{< /note >}} - -| Driver | OS | HostFolder | VM | -| --- | --- | --- | --- | -| VirtualBox | 리눅스 | `/home` | `/hosthome` | -| VirtualBox | macOS | `/Users` | `/Users` | -| VirtualBox | 윈도우 | `C://Users` | `/c/Users` | -| VMware Fusion | macOS | `/Users` | `/mnt/hgfs/Users` | -| Xhyve | macOS | `/Users` | `/Users` | - -## 프라이빗 컨테이너 레지스트리 - -프라이빗 컨테이너 레지스트리를 이용하려면, [이 페이지](/ko/docs/concepts/containers/images/)의 단계를 따르자. - -`ImagePullSecrets`를 이용하기를 권하지만, Minikube VM 상에서 설정하려 한다면 `/home/docker` 디렉터리에 `.dockercfg`를 두거나 `/home/docker/.docker` 디렉터리에 `config.json`을 둘 수 있다. - -## 애드온 - -Minikube에서 커스텀 애드온을 적절히 시작하고 재시작할 수 있으려면, -Minikube와 함께 시작하려는 애드온을 `~/.minikube/addons` 디렉터리에 두자. -폴더 내부의 애드온은 Minikube VM으로 이동되어 -Minikube가 시작하거나 재시작될 때에 함께 실행된다. - -## HTTP 프록시 환경에서 Minikube 사용하기 - -Minikube는 쿠버네티스와 Docker 데몬을 포함한 가상 머신을 생성한다. -쿠버네티스가 Docker를 이용하여 컨테이너를 스케쥴링 시도할 때에, Docker 데몬은 컨테이너 이미지를 풀링하기 위해 외부 네트워크를 이용해야 한다. - -HTTP 프록시 내부라면, Docker에서 프록시 설정을 해야 한다. -이를 하기 위해서 요구되는 환경 변수를 `minikube start` 중에 플래그로 전달한다. - -예를 들어: - -```shell -minikube start --docker-env http_proxy=http://$YOURPROXY:PORT \ - --docker-env https_proxy=https://$YOURPROXY:PORT -``` - -만약 가상 머신 주소가 192.168.99.100 이라면 프록시 설정이 `kubectl`에 직접적으로 도달하지 못할 수도 있다. -이 IP 주소에 대해 프록시 설정을 지나치게 하려면 no_proxy 설정을 수정해야 한다. 다음과 같이 할 수 있다. - -```shell -export no_proxy=$no_proxy,$(minikube ip) -``` - -## 알려진 이슈 - -다중 노드가 필요한 기능은 Minukube에서 동작하지 않는다. - -## 설계 - -Minikube는 VM 프로비저닝을 위해서 [libmachine](https://github.com/docker/machine/tree/master/libmachine)를 사용하고, 쿠버네티스 클러스터를 프로비저닝하기 위해 [kubeadm](https://github.com/kubernetes/kubeadm)을 사용한다. - -Minikube에 대한 더 자세한 정보는, [제안](https://git.k8s.io/community/contributors/design-proposals/cluster-lifecycle/local-cluster-ux.md) 부분을 읽어보자. - -## 추가적인 링크: - -* **목표와 비목표**: Minikube 프로젝트의 목표와 비목표에 대해서는 [로드맵](https://minikube.sigs.k8s.io/docs/contrib/roadmap/)을 살펴보자. -* **개발 가이드**: 풀 리퀘스트를 보내는 방법에 대한 개요는 [기여하기](https://minikube.sigs.k8s.io/docs/contrib/)를 살펴보자. -* **Minikube 빌드**: Minikube를 소스에서 빌드/테스트하는 방법은 [빌드 가이드](https://minikube.sigs.k8s.io/docs/contrib/building/)를 살펴보자. -* **새 의존성 추가하기**: Minikube에 새 의존성을 추가하는 방법에 대해서는, [의존성 추가 가이드](https://minikube.sigs.k8s.io/docs/contrib/drivers/)를 보자. -* **새 애드온 추가하기**: Minikube에 새 애드온을 추가하는 방법에 대해서는, [애드온 추가 가이드](https://minikube.sigs.k8s.io/docs/contrib/addons/)를 보자. -* **MicroK8s**: 가상 머신을 사용하지 않으려는 리눅스 사용자는 대안으로 [MicroK8s](https://microk8s.io/)를 고려할 수 있다. - -## 커뮤니티 - -컨트리뷰션, 질문과 의견은 모두 환영하며 격려한다! Minikube 개발자는 [슬랙](https://kubernetes.slack.com)에 `#minikube` 채널(초청받으려면 [여기](https://slack.kubernetes.io/))에 상주하고 있다. 또한 [kubernetes-dev 구글 그룹 메일링 리스트](https://groups.google.com/forum/#!forum/kubernetes-dev)도 있다. 메일링 리스트에 포스팅한다면 제목에 "minikube: "라는 접두어를 사용하자. diff --git a/content/ko/docs/setup/production-environment/container-runtimes.md b/content/ko/docs/setup/production-environment/container-runtimes.md index 0bc616419b..5f6051d59c 100644 --- a/content/ko/docs/setup/production-environment/container-runtimes.md +++ b/content/ko/docs/setup/production-environment/container-runtimes.md @@ -4,126 +4,133 @@ content_type: concept weight: 10 --- -{{< feature-state for_k8s_version="v1.6" state="stable" >}} -파드에서 컨테이너를 실행하기 위해 쿠버네티스는 컨테이너 런타임을 사용한다. -이 페이지는 다양한 런타임들에 대한 설치 지침을 담고 있다. - +파드가 노드에서 실행될 수 있도록 클러스터의 각 노드에 +{{< glossary_tooltip text="컨테이너 런타임" term_id="container-runtime" >}}을 +설치해야 한다. 이 페이지에서는 관련된 항목을 설명하고 +노드 설정 관련 작업을 설명한다. +이 페이지에는 리눅스 환경의 쿠버네티스에서 여러 공통 컨테이너 런타임을 사용하는 방법에 대한 +세부 정보가 있다. -{{< caution >}} -컨테이너를 실행할 때 runc가 시스템 파일 디스크립터를 처리하는 방식에서 결함이 발견되었다. -악성 컨테이너는 이 결함을 사용하여 runc 바이너리의 내용을 덮어쓸 수 있으며 -따라서 컨테이너 호스트 시스템에서 임의의 명령을 실행할 수 있다. - -문제에 대한 자세한 내용은 [CVE-2019-5736](https://access.redhat.com/security/cve/cve-2019-5736) -를 참고한다. -{{< /caution >}} - -### 적용 가능성 +- [containerd](#containerd) +- [CRI-O](#cri-o) +- [도커](#도커) {{< note >}} -이 문서는 리눅스에 CRI를 설치하는 사용자를 위해 작성되었다. 다른 운영 체제의 경우, 해당 플랫폼과 관련된 문서를 찾아보자. {{< /note >}} -### Cgroup 드라이버 - -리눅스 배포판의 init 시스템이 systemd인 경우, init 프로세스는 -root control group(`cgroup`)을 생성 및 사용하는 cgroup 관리자로 작동한다. -Systemd는 cgroup과의 긴밀한 통합을 통해 프로세스당 cgroup을 할당한다. -컨테이너 런타임과 kubelet이 `cgroupfs`를 사용하도록 설정할 수 있다. -systemd와 함께`cgroupfs`를 사용하면 두 개의 서로 다른 cgroup 관리자가 존재하게 된다는 뜻이다. +## Cgroup 드라이버 Control group은 프로세스에 할당된 리소스를 제한하는데 사용된다. -단일 cgroup 관리자는 할당된 리소스가 무엇인지를 단순화하고, -기본적으로 사용가능한 리소스와 사용중인 리소스를 일관성있게 볼 수 있다. -관리자가 두 개인 경우, 이런 리소스도 두 개의 관점에서 보게 된다. kubelet과 Docker는 -`cgroupfs`를 사용하고 나머지 프로세스는 -`systemd`를 사용하도록 노드가 설정된 경우, -리소스가 부족할 때 불안정해지는 사례를 본 적이 있다. + +리눅스 배포판의 init 시스템이 [systemd](https://www.freedesktop.org/wiki/Software/systemd/)인 +경우, init 프로세스는 root control group(`cgroup`)을 +생성 및 사용하는 cgroup 관리자로 작동한다. +Systemd는 cgroup과의 긴밀한 통합을 통해 프로세스당 cgroup을 할당한다. +컨테이너 런타임과 kubelet이 `cgroupfs`를 사용하도록 설정할 수 있다. systemd와 함께 +`cgroupfs`를 사용하면 두 개의 서로 다른 cgroup 관리자가 존재하게 된다는 뜻이다. + +단일 cgroup 관리자는 할당되는 리소스가 무엇인지를 단순화하고, +기본적으로 사용할 수 있는 리소스와 사용 중인 리소스를 일관성있게 볼 수 있다. +시스템에 두 개의 cgroup 관리자가 있으면, 이런 리소스도 두 개의 관점에서 보게 된다. +현장에서 사람들은 kubelet과 도커에 `cgroupfs`를 사용하고, +나머지 프로세스는 `systemd`를 사용하도록 노드가 설정된 경우, 리소스가 부족할 때 +불안정해지는 사례를 보고했다. 컨테이너 런타임과 kubelet이 `systemd`를 cgroup 드라이버로 사용하도록 설정을 변경하면 -시스템이 안정화된다. 아래의 도커 설정에서 `native.cgroupdriver=systemd` 옵션을 확인하라. +시스템이 안정화된다. 도커에 대해 구성하려면, `native.cgroupdriver=systemd`를 설정한다. {{< caution >}} -클러스터에 결합되어 있는 노드의 cgroup 관리자를 변경하는 것은 권장하지 않는다. +클러스터에 결합되어 있는 노드의 cgroup 관리자를 변경하는 것은 강력하게 권장하지 *않는다*. 하나의 cgroup 드라이버의 의미를 사용하여 kubelet이 파드를 생성해왔다면, -컨테이너 런타임을 다른 cgroup 드라이버로 변경하는 것은 존재하는 기존 파드에 대해 PodSandBox를 재생성을 시도할 때, 에러가 발생할 수 있다. -kubelet을 재시작 하는 것은 에러를 해결할 수 없을 것이다. -추천하는 방법은 워크로드에서 노드를 제거하고, 클러스터에서 제거한 다음 다시 결합시키는 것이다. +컨테이너 런타임을 다른 cgroup 드라이버로 변경하는 것은 존재하는 기존 파드에 대해 파드 샌드박스 재생성을 시도할 때, 에러가 발생할 수 있다. +kubelet을 재시작하는 것은 에러를 해결할 수 없을 것이다. + +자동화가 가능하다면, 업데이트된 구성을 사용하여 노드를 다른 노드로 +교체하거나, 자동화를 사용하여 다시 설치한다. {{< /caution >}} -## 도커 +## 컨테이너 런타임 -각 머신들에 대해서, 도커를 설치한다. -버전 19.03.11이 추천된다. 그러나 1.13.1, 17.03, 17.06, 17.09, 18.06 그리고 18.09도 동작하는 것으로 알려져 있다. -쿠버네티스 릴리스 노트를 통해서, 최신에 검증된 도커 버전의 지속적인 파악이 필요하다. +{{% thirdparty-content %}} -시스템에 도커를 설치하기 위해서 아래의 커맨드들을 사용한다. +### containerd -{{< tabs name="tab-cri-docker-installation" >}} -{{% tab name="Ubuntu 16.04+" %}} +이 섹션에는 `containerd` 를 CRI 런타임으로 사용하는 데 필요한 단계가 포함되어 있다. + +필수 구성 요소를 설치 및 구성한다. ```shell -# (도커 CE 설치) -## 리포지터리 설정 -### apt가 HTTPS 리포지터리를 사용할 수 있도록 해주는 패키지 설치 -sudo apt-get update && sudo apt-get install -y \ - apt-transport-https ca-certificates curl software-properties-common gnupg2 -``` - -```shell -# 도커 공식 GPG 키 추가 -curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - -``` - -```shell -# 도커 apt 리포지터리 추가. -sudo add-apt-repository \ - "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ - $(lsb_release -cs) \ - stable" -``` - -```shell -# 도커 CE 설치. -sudo apt-get update && sudo apt-get install -y \ - containerd.io=1.2.13-2 \ - docker-ce=5:19.03.11~3-0~ubuntu-$(lsb_release -cs) \ - docker-ce-cli=5:19.03.11~3-0~ubuntu-$(lsb_release -cs) -``` - -```shell -# 도커 데몬 설정 -cat <}} +{{% tab name="Ubuntu 16.04" %}} + +```shell +# 도커의 공식 GPG 키 추가 +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - +# (containerd 설치) +## 리포지터리 설정 +### HTTPS를 통해 리포지터리를 사용할 수 있도록 패키지 설치 +sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common ``` ```shell -sudo mkdir -p /etc/systemd/system/docker.service.d +## 도커의 공식 GPG 키 추가 +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key --keyring /etc/apt/trusted.gpg.d/docker.gpg add - ``` ```shell -# 도커 재시작. -sudo systemctl daemon-reload -sudo systemctl restart docker +## 도커 apt 리포지터리 추가 +sudo add-apt-repository \ + "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ + $(lsb_release -cs) \ + stable" +``` + +```shell +## containerd 설치 +sudo apt-get update && sudo apt-get install -y containerd.io +``` + +```shell +# containerd 구성 +sudo mkdir -p /etc/containerd +sudo containerd config default > /etc/containerd/config.toml +``` + +```shell +# containerd 재시작 +sudo systemctl restart containerd ``` {{% /tab %}} {{% tab name="CentOS/RHEL 7.4+" %}} ```shell -# (도커 CE 설치) +# (containerd 설치) ## 리포지터리 설정 ### 필요한 패키지 설치 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 @@ -131,64 +138,73 @@ sudo yum install -y yum-utils device-mapper-persistent-data lvm2 ```shell ## 도커 리포지터리 추가 -sudo yum-config-manager --add-repo \ - https://download.docker.com/linux/centos/docker-ce.repo +sudo yum-config-manager \ + --add-repo \ + https://download.docker.com/linux/centos/docker-ce.repo ``` ```shell -# 도커 CE 설치. -sudo yum update -y && sudo yum install -y \ - containerd.io-1.2.13 \ - docker-ce-19.03.11 \ - docker-ce-cli-19.03.11 +# containerd 설치 +sudo yum update -y && sudo yum install -y containerd.io ``` ```shell -## /etc/docker 생성. -sudo mkdir /etc/docker +## containerd 구성 +sudo mkdir -p /etc/containerd +sudo containerd config default > /etc/containerd/config.toml ``` ```shell -# 도커 데몬 설정. -cat <}} -부팅 시 도커 서비스를 시작하려면, 다음 명령을 실행한다. +#### systemd {#containerd-systemd} -```shell -sudo systemctl enable docker +`/etc/containerd/config.toml` 의 `systemd` cgroup 드라이버를 `runc` 에서 사용하려면, 다음과 같이 설정한다. + +``` +[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] + ... + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] + SystemdCgroup = true ``` -자세한 내용은 [공식 도커 설치 가이드](https://docs.docker.com/engine/installation/) -를 참고한다. +kubeadm을 사용하는 경우, +[kubelet용 cgroup 드라이버](/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#configure-cgroup-driver-used-by-kubelet-on-control-plane-node)를 수동으로 구성한다. -## CRI-O +### CRI-O -이 섹션은 `CRI-O`를 CRI 런타임으로 설치하는 필수적인 단계를 담고 있다. +이 섹션은 CRI-O를 컨테이너 런타임으로 설치하는 필수적인 단계를 담고 있다. 시스템에 CRI-O를 설치하기 위해서 다음의 커맨드를 사용한다. @@ -197,7 +213,7 @@ CRI-O 메이저와 마이너 버전은 쿠버네티스 메이저와 마이너 더 자세한 정보는 [CRI-O 호환 매트릭스](https://github.com/cri-o/cri-o)를 본다. {{< /note >}} -### 선행 조건 +필수 구성 요소를 설치하고 구성한다. ```shell sudo modprobe overlay @@ -216,9 +232,10 @@ sudo sysctl --system {{< tabs name="tab-cri-cri-o-installation" >}} {{% tab name="Debian" %}} -다음의 운영 체제에서 CRI-O를 설치하려면, 환경 변수 $OS를 아래의 표에서 적절한 필드로 설정한다. +다음의 운영 체제에서 CRI-O를 설치하려면, 환경 변수 `OS` 를 +아래의 표에서 적절한 필드로 설정한다. -| 운영 체제 | $OS | +| 운영 체제 | `$OS` | | ---------------- | ----------------- | | Debian Unstable | `Debian_Unstable` | | Debian Testing | `Debian_Testing` | @@ -233,14 +250,14 @@ sudo sysctl --system 그런 다음, 아래를 실행한다. ```shell cat < /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list -echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.list +cat <}} -### CRI-O 시작 +CRI-O를 시작한다. ```shell sudo systemctl daemon-reload @@ -340,78 +361,75 @@ sudo systemctl start crio 자세한 사항은 [CRI-O 설치 가이드](https://github.com/kubernetes-sigs/cri-o#getting-started)를 참고한다. -## Containerd +### 도커 -이 섹션은 `containerd`를 CRI 런타임으로써 사용하는데 필요한 단계를 담고 있다. +각 노드에 도커 CE를 설치한다. -Containerd를 시스템에 설치하기 위해서 다음의 커맨드들을 사용한다. +쿠버네티스 릴리스 정보에서 해당 버전의 쿠버네티스와 호환되는 도커 버전을 찾을 수 있다. -### 선행 조건 +사용자의 시스템에서 다음의 명령을 이용해 도커를 설치한다. + +{{< tabs name="tab-cri-docker-installation" >}} +{{% tab name="Ubuntu 16.04+" %}} ```shell -cat <}} -{{% tab name="Ubuntu 16.04" %}} - -```shell -# (containerd 설치) +# (도커 CE 설치) ## 리포지터리 설정 ### apt가 HTTPS로 리포지터리를 사용하는 것을 허용하기 위한 패키지 설치 -sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common +sudo apt-get update && sudo apt-get install -y \ + apt-transport-https ca-certificates curl software-properties-common gnupg2 ``` ```shell -## 도커 공식 GPG 키 추가 -curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - +# 도커 공식 GPG 키 추가: +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key --keyring /etc/apt/trusted.gpg.d/docker.gpg add - ``` ```shell -## 도커 apt 리포지터리 추가. +# 도커 apt 리포지터리 추가: sudo add-apt-repository \ - "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ - $(lsb_release -cs) \ - stable" + deb [arch=amd64] https://download.docker.com/linux/ubuntu \ + $(lsb_release -cs) \ + stable" ``` ```shell -## containerd 설치 -sudo apt-get update && sudo apt-get install -y containerd.io +# 도커 CE 설치 +sudo apt-get update && sudo apt-get install -y \ + containerd.io=1.2.13-2 \ + docker-ce=5:19.03.11~3-0~ubuntu-$(lsb_release -cs) \ + docker-ce-cli=5:19.03.11~3-0~ubuntu-$(lsb_release -cs) ``` ```shell -# containerd 설정 -sudo mkdir -p /etc/containerd -sudo containerd config default > /etc/containerd/config.toml +# 도커 데몬 설정 +cat < /etc/containerd/config.toml +## /etc/docker 생성 +sudo mkdir /etc/docker ``` ```shell -# containerd 재시작 -sudo systemctl restart containerd -``` -{{% /tab %}} -{{% tab name="윈도우 (PowerShell)" %}} -```powershell -# (containerd 설치) -# containerd 다운로드 -cmd /c curl -OL https://github.com/containerd/containerd/releases/download/v1.4.0-beta.2/containerd-1.4.0-beta.2-windows-amd64.tar.gz -cmd /c tar xvf .\containerd-1.4.0-beta.2-windows-amd64.tar.gz +# 도커 데몬 설정 +cat <}} -### systemd - -`systemd` cgroup driver를 사용하려면, `/etc/containerd/config.toml`에 다음을 설정한다. +부팅 시 `docker` 서비스를 시작하려면, 다음 명령을 실행한다. +```shell +sudo systemctl enable docker ``` -[plugins.cri] -systemd_cgroup = true -``` -kubeadm을 사용하는 경우에도 마찬가지로, 수동으로 -[kubelet을 위한 cgroup 드라이버](/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#configure-cgroup-driver-used-by-kubelet-on-control-plane-node)를 설정한다. -## 다른 CRI 런타임: frakti - -자세한 정보는 [Frakti 빠른 시작 가이드](https://github.com/kubernetes/frakti#quickstart)를 참고한다. +자세한 내용은 [공식 도커 설치 가이드](https://docs.docker.com/engine/installation/)를 +참조한다. diff --git a/content/ko/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md b/content/ko/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md index b41120f7be..7eb0f8f706 100644 --- a/content/ko/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md +++ b/content/ko/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md @@ -600,7 +600,7 @@ PodSecurityContext 필드는 윈도우에서 작동하지 않는다. 참조를 쿠버네티스 파드에서는 컨테이너 엔드포인트를 호스팅하기 위해 먼저 인프라 또는 "pause" 컨테이너가 생성된다. 인프라 및 워커 컨테이너를 포함하여 동일한 파드에 속하는 컨테이너는 공통 네트워크 네임스페이스 및 엔드포인트(동일한 IP 및 포트 공간)를 공유한다. 네트워크 구성을 잃지 않고 워커 컨테이너가 충돌하거나 다시 시작되도록 하려면 pause 컨테이너가 필요하다. - "pause" (인프라) 이미지는 Microsoft Container Registry(MCR)에서 호스팅된다. `docker pull mcr.microsoft.com/k8s/core/pause:1.2.0`을 사용하여 접근할 수 있다. 자세한 내용은 [DOCKERFILE](https://github.com/kubernetes-sigs/sig-windows-tools/tree/master/cmd/wincat)을 참고한다. + "pause" (인프라) 이미지는 Microsoft Container Registry(MCR)에서 호스팅된다. `docker pull mcr.microsoft.com/k8s/core/pause:1.2.0`을 사용하여 접근할 수 있다. 자세한 내용은 [DOCKERFILE](https://github.com/kubernetes-sigs/windows-testing/blob/master/images/pause/Dockerfile)을 참고한다. ### 추가 조사 diff --git a/content/ko/docs/tasks/access-application-cluster/access-cluster.md b/content/ko/docs/tasks/access-application-cluster/access-cluster.md index 39226c89be..e78046f0ee 100644 --- a/content/ko/docs/tasks/access-application-cluster/access-cluster.md +++ b/content/ko/docs/tasks/access-application-cluster/access-cluster.md @@ -149,9 +149,8 @@ root 인증서를 사용하려면 특수한 설정을 필요로 할 것이다. localhost에서 제공되거나 방화벽으로 보호되는 몇몇 클러스터들에서는 apiserver가 인증을 요구하지 않지만 이는 표준이 아니다. -[API에 대한 접근 구성](/ko/docs/reference/access-authn-authz/controlling-access/)은 +[API에 대한 접근 제어](/ko/docs/concepts/security/controlling-access)은 클러스터 관리자가 이를 어떻게 구성할 수 있는지를 설명한다. -이 방식들은 미래의 고가용성 지원과 충돌될 수 있다. ## API에 프로그래밍 방식으로 접근 diff --git a/content/ko/docs/tasks/administer-cluster/access-cluster-api.md b/content/ko/docs/tasks/administer-cluster/access-cluster-api.md index ba4a794d23..efb489b18d 100644 --- a/content/ko/docs/tasks/administer-cluster/access-cluster-api.md +++ b/content/ko/docs/tasks/administer-cluster/access-cluster-api.md @@ -148,8 +148,8 @@ http 클라이언트가 루트 인증서를 사용하도록 하려면 특별한 일부 클러스터에서, API 서버는 인증이 필요하지 않다. 로컬 호스트에서 제공되거나, 방화벽으로 보호될 수 있다. 이에 대한 표준은 -없다. [API에 대한 접근 구성](/ko/docs/reference/access-authn-authz/controlling-access/)은 -클러스터 관리자가 이를 구성하는 방법에 대해 설명한다. 이러한 접근 방식은 향후 +없다. [쿠버네티스 API에 대한 접근 제어](/docs/concepts/security/controlling-access)은 +클러스터 관리자로서 이를 구성하는 방법에 대해 설명한다. 이러한 접근 방식은 향후 고 가용성 지원과 충돌할 수 있다. ### API에 프로그래밍 방식으로 접근 diff --git a/content/ko/docs/tasks/administer-cluster/cluster-management.md b/content/ko/docs/tasks/administer-cluster/cluster-management.md index b57e07db65..0f241c87f4 100644 --- a/content/ko/docs/tasks/administer-cluster/cluster-management.md +++ b/content/ko/docs/tasks/administer-cluster/cluster-management.md @@ -69,7 +69,7 @@ Oracle은 당신이 고가용성의 관리형 쿠버네티스 컨트롤 플레 다른 제공자들과 도구들은 업그레이드를 다른 방식으로 관리한다. 이들의 업그레이드를 위해서는 이들의 주요 문서를 참조하기를 권장한다. * [kops](https://github.com/kubernetes/kops) -* [kubespray](https://github.com/kubernetes-incubator/kubespray) +* [kubespray](https://github.com/kubernetes-sigs/kubespray) * [CoreOS Tectonic](https://coreos.com/tectonic/docs/latest/admin/upgrade.html) * [Digital Rebar](https://provision.readthedocs.io/en/tip/doc/content-packages/krib.html) * ... diff --git a/content/ko/docs/tasks/administer-cluster/kubeadm/kubeadm-certs.md b/content/ko/docs/tasks/administer-cluster/kubeadm/kubeadm-certs.md index ac3ac3f695..aea9411eda 100644 --- a/content/ko/docs/tasks/administer-cluster/kubeadm/kubeadm-certs.md +++ b/content/ko/docs/tasks/administer-cluster/kubeadm/kubeadm-certs.md @@ -8,7 +8,7 @@ weight: 10 {{< feature-state for_k8s_version="v1.15" state="stable" >}} -[kubeadm](/docs/reference/setup-tools/kubeadm/kubeadm/)으로 생성된 클라이언트 인증서는 1년 후에 만료된다. 이 페이지는 kubeadm으로 인증서 갱신을 관리하는 방법을 설명한다. +[kubeadm](/ko/docs/reference/setup-tools/kubeadm/)으로 생성된 클라이언트 인증서는 1년 후에 만료된다. 이 페이지는 kubeadm으로 인증서 갱신을 관리하는 방법을 설명한다. ## {{% heading "prerequisites" %}} diff --git a/content/ko/docs/tasks/administer-cluster/network-policy-provider/romana-network-policy.md b/content/ko/docs/tasks/administer-cluster/network-policy-provider/romana-network-policy.md index 1b0873f74a..8623aadbc8 100644 --- a/content/ko/docs/tasks/administer-cluster/network-policy-provider/romana-network-policy.md +++ b/content/ko/docs/tasks/administer-cluster/network-policy-provider/romana-network-policy.md @@ -12,7 +12,7 @@ weight: 40 ## {{% heading "prerequisites" %}} -[kubeadm 시작하기](/ko/docs/reference/setup-tools/kubeadm/kubeadm/)의 1, 2, 3 단계를 완료하자. +[kubeadm 시작하기](/ko/docs/reference/setup-tools/kubeadm/)의 1, 2, 3 단계를 완료하자. diff --git a/content/ko/docs/tasks/administer-cluster/network-policy-provider/weave-network-policy.md b/content/ko/docs/tasks/administer-cluster/network-policy-provider/weave-network-policy.md index 736572c808..5b32655017 100644 --- a/content/ko/docs/tasks/administer-cluster/network-policy-provider/weave-network-policy.md +++ b/content/ko/docs/tasks/administer-cluster/network-policy-provider/weave-network-policy.md @@ -11,7 +11,7 @@ weight: 50 ## {{% heading "prerequisites" %}} 쿠버네티스 클러스터가 필요하다. 맨 땅에서부터 시작하기를 위해서 -[kubeadm 시작하기 안내서](/ko/docs/reference/setup-tools/kubeadm/kubeadm/)를 따른다. +[kubeadm 시작하기 안내서](/ko/docs/reference/setup-tools/kubeadm/)를 따른다. diff --git a/content/ko/docs/tasks/configure-pod-container/assign-memory-resource.md b/content/ko/docs/tasks/configure-pod-container/assign-memory-resource.md index 980d71d9b5..a798018b91 100644 --- a/content/ko/docs/tasks/configure-pod-container/assign-memory-resource.md +++ b/content/ko/docs/tasks/configure-pod-container/assign-memory-resource.md @@ -21,8 +21,8 @@ weight: 10 클러스터의 각 노드에 최소 300 MiB 메모리가 있어야 한다. 이 페이지의 몇 가지 단계를 수행하기 위해서는 클러스터 내 -[metrics-server](https://github.com/kubernetes-incubator/metrics-server) -서비스 실행이 필요하다. 이미 실행중인 metrics-server가 있다면 +[metrics-server](https://github.com/kubernetes-sigs/metrics-server) +서비스 실행이 필요하다. 이미 실행 중인 metrics-server가 있다면 다음 단계를 건너뛸 수 있다. Minikube를 사용 중이라면, 다음 명령어를 실행해 metric-server를 diff --git a/content/ko/docs/tasks/configure-pod-container/configure-persistent-volume-storage.md b/content/ko/docs/tasks/configure-pod-container/configure-persistent-volume-storage.md index 4c1679b8a3..dc4acf8411 100644 --- a/content/ko/docs/tasks/configure-pod-container/configure-persistent-volume-storage.md +++ b/content/ko/docs/tasks/configure-pod-container/configure-persistent-volume-storage.md @@ -31,7 +31,7 @@ weight: 60 아직 단일 노드 클러스터를 가지고 있지 않다면, [Minikube](/ko/docs/setup/learning-environment/minikube/)를 사용하여 클러스터 하나를 생성할 수 있다. -* [퍼시스턴트 볼륨](/ko/docs/concepts/storage/persistent-volumes/)의 +* [퍼시스턴트 볼륨](https://minikube.sigs.k8s.io/docs/)의 관련 자료에 익숙해지도록 한다. diff --git a/content/ko/docs/tasks/debug-application-cluster/resource-metrics-pipeline.md b/content/ko/docs/tasks/debug-application-cluster/resource-metrics-pipeline.md index a9c9bf182d..e4bf6a1715 100644 --- a/content/ko/docs/tasks/debug-application-cluster/resource-metrics-pipeline.md +++ b/content/ko/docs/tasks/debug-application-cluster/resource-metrics-pipeline.md @@ -51,8 +51,8 @@ kubelet은 비율 계산에 사용할 윈도우를 선택한다. ## 메트릭 서버 -[메트릭 서버](https://github.com/kubernetes-incubator/metrics-server)는 클러스터 전역에서 리소스 사용량 데이터를 집계한다. -기본적으로, `kube-up.sh` 스크립트에 의해 생성된 클러스터에는 메트릭 서버가 +[메트릭 서버](https://github.com/kubernetes-sigs/metrics-server)는 클러스터 전역에서 리소스 사용량 데이터를 집계한다. +`kube-up.sh` 스크립트에 의해 생성된 클러스터에는 기본적으로 메트릭 서버가 디플로이먼트 오브젝트로 배포된다. 만약 다른 쿠버네티스 설치 메커니즘을 사용한다면, 제공된 [디플로이먼트 components.yaml](https://github.com/kubernetes-sigs/metrics-server/releases) 파일을 사용하여 메트릭 서버를 배포할 수 있다. diff --git a/content/ko/docs/tasks/debug-application-cluster/resource-usage-monitoring.md b/content/ko/docs/tasks/debug-application-cluster/resource-usage-monitoring.md index 87856b9cfe..21c5c3decf 100644 --- a/content/ko/docs/tasks/debug-application-cluster/resource-usage-monitoring.md +++ b/content/ko/docs/tasks/debug-application-cluster/resource-usage-monitoring.md @@ -28,7 +28,7 @@ title: 리소스 모니터링 도구 컨트롤러와 같은 클러스터 구성요소나 `kubectl top` 유틸리티에 관련되어 있는 메트릭들로 제한된 집합을 제공한다. 이 메트릭은 경량의 단기 인메모리 저장소인 -[metrics-server](https://github.com/kubernetes-incubator/metrics-server)에 +[metrics-server](https://github.com/kubernetes-sigs/metrics-server)에 의해서 수집되며 `metrics.k8s.io` API를 통해 노출된다. metrics-server는 클러스터 상의 모든 노드를 발견하고 각 노드의 diff --git a/content/ko/docs/tasks/inject-data-application/define-environment-variable-container.md b/content/ko/docs/tasks/inject-data-application/define-environment-variable-container.md index 191e82021c..22372813e9 100644 --- a/content/ko/docs/tasks/inject-data-application/define-environment-variable-container.md +++ b/content/ko/docs/tasks/inject-data-application/define-environment-variable-container.md @@ -47,17 +47,10 @@ weight: 20 envar-demo 1/1 Running 0 9s ``` -1. 파드 안에 실행되고 있는 컨테이너의 셸에 접근한다. +1. 파드의 컨테이너 환경 변수를 나열한다. ```shell - kubectl exec -it envar-demo -- /bin/bash - ``` - -1. 셸 안에서, 환경 변수를 나열하기 위해 `printenv` 커맨드를 실행한다. - - ```shell - # 컨테이너 내 셸에서 다음을 실행한다. - printenv + kubectl exec envar-demo -- printenv ``` 출력은 아래와 비슷할 것이다. @@ -71,8 +64,6 @@ weight: 20 DEMO_FAREWELL=Such a sweet sorrow ``` -1. 셸에서 빠져나오기 위해, `exit`을 입력한다. - {{< note >}} `env` 나 `envFrom` 필드를 이용해 설정된 환경 변수들은 컨테이너 이미지 안에서 명시된 모든 환경 변수들을 오버라이딩한다. diff --git a/content/ko/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md b/content/ko/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md index c9c694e237..b81329c24a 100644 --- a/content/ko/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md +++ b/content/ko/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md @@ -18,9 +18,9 @@ Horizontal Pod Autoscaler 동작과 관련된 더 많은 정보를 위해서는 이 예제는 버전 1.2 또는 이상의 쿠버네티스 클러스터와 kubectl을 필요로 한다. -[메트릭-서버](https://github.com/kubernetes-incubator/metrics-server/) 모니터링을 클러스터에 배포하여 리소스 메트릭 API를 통해 메트릭을 제공해야 한다. +[메트릭-서버](https://github.com/kubernetes-sigs/metrics-server) 모니터링을 클러스터에 배포하여 리소스 메트릭 API를 통해 메트릭을 제공해야 한다. Horizontal Pod Autoscaler가 메트릭을 수집할때 해당 API를 사용한다. -메트릭-서버를 배포하는 지침은 [메트릭-서버](https://github.com/kubernetes-incubator/metrics-server/)의 GitHub 저장소에 있고, [GCE 가이드](/docs/setup/turnkey/gce/)로 클러스터를 올리는 경우 메트릭-서버 모니터링은 디폴트로 활성화된다. +메트릭-서버를 배포하는 지침은 [메트릭-서버](https://github.com/kubernetes-sigs/metrics-server)의 GitHub 저장소에 있고, [GCE 가이드](/docs/setup/turnkey/gce/)로 클러스터를 올리는 경우 메트릭-서버 모니터링은 디폴트로 활성화된다. Horizontal Pod Autoscaler에 다양한 자원 메트릭을 적용하고자 하는 경우, 버전 1.6 또는 이상의 쿠버네티스 클러스터와 kubectl를 사용해야 한다. diff --git a/content/ko/docs/tasks/run-application/horizontal-pod-autoscale.md b/content/ko/docs/tasks/run-application/horizontal-pod-autoscale.md index 7a7d129525..5afca02371 100644 --- a/content/ko/docs/tasks/run-application/horizontal-pod-autoscale.md +++ b/content/ko/docs/tasks/run-application/horizontal-pod-autoscale.md @@ -264,12 +264,12 @@ API에 접속하려면 클러스터 관리자는 다음을 확인해야 한다. * 해당 API 등록: - * 리소스 메트릭의 경우, 일반적으로 이것은 [메트릭-서버](https://github.com/kubernetes-incubator/metrics-server)가 제공하는 `metrics.k8s.io` API이다. + * 리소스 메트릭의 경우, 일반적으로 이것은 [메트릭-서버](https://github.com/kubernetes-sigs/metrics-server)가 제공하는 `metrics.k8s.io` API이다. 클러스터 애드온으로 시작할 수 있다. * 사용자 정의 메트릭의 경우, 이것은 `custom.metrics.k8s.io` API이다. 메트릭 솔루션 공급 업체에서 제공하는 "어댑터" API 서버에서 제공한다. 메트릭 파이프라인 또는 [알려진 솔루션 목록](https://github.com/kubernetes/metrics/blob/master/IMPLEMENTATIONS.md#custom-metrics-api)으로 확인한다. - 직접 작성하고 싶다면 [샘플](https://github.com/kubernetes-incubator/custom-metrics-apiserver)을 확인하라. + 직접 작성하고 싶다면 [샘플](https://github.com/kubernetes-sigs/custom-metrics-apiserver)을 확인한다. * 외부 메트릭의 경우, 이것은 `external.metrics.k8s.io` API이다. 위에 제공된 사용자 정의 메트릭 어댑터에서 제공될 수 있다. diff --git a/content/ko/docs/tasks/tools/_index.md b/content/ko/docs/tasks/tools/_index.md index 9753772c5f..74abf8d981 100755 --- a/content/ko/docs/tasks/tools/_index.md +++ b/content/ko/docs/tasks/tools/_index.md @@ -17,11 +17,23 @@ no_list: true kubectl 설치 및 설정 가이드 보기 -[`kubectl` 레퍼런스 문서](/ko/docs/reference/kubectl/)를 읽어볼 수도 있다. +[`kubectl` 레퍼런스 문서](/ko/docs/reference/kubectl/)를 +읽어볼 수도 있다. + +## kind + +[kind](https://kind.sigs.k8s.io/docs/)를 사용하면 로컬 컴퓨터에서 +쿠버네티스를 실행할 수 있다. 이 도구를 사용하려면 +[도커](https://docs.docker.com/get-docker/)를 설치하고 구성해야 한다. + +kind [퀵 스타트](https://kind.sigs.k8s.io/docs/user/quick-start/) 페이지는 +kind를 시작하고 실행하기 위해 수행해야 하는 작업을 보여준다. + +kind 시작하기 가이드 보기 ## minikube -[`minikube`](https://minikube.sigs.k8s.io/)는 쿠버네티스를 로컬에서 실행할 수 있는 +`kind` 와 마찬가지로, [`minikube`](https://minikube.sigs.k8s.io/)는 쿠버네티스를 로컬에서 실행할 수 있는 도구이다. `minikube` 는 개인용 컴퓨터(윈도우, macOS 및 리눅스 PC 포함)에서 단일 노드 쿠버네티스 클러스터를 실행하여 쿠버네티스를 사용해보거나 일상적인 개발 작업을 수행할 수 있다. @@ -35,14 +47,12 @@ no_list: true `minikube` 가 작동하면, 이를 사용하여 [샘플 애플리케이션을 실행](/ko/docs/tutorials/hello-minikube/)해볼 수 있다. -## kind +## kubeadm -`minikube` 와 마찬가지로, [kind](https://kind.sigs.k8s.io/docs/)를 사용하면 로컬 컴퓨터에서 -쿠버네티스를 실행할 수 있다. `minikube` 와 달리, `kind` 는 단일 컨테이너 런타임에서만 작동한다. -`kind` 는 [도커](https://docs.docker.com/get-docker/)를 설치하고 -구성해야 한다. +{{< glossary_tooltip term_id="kubeadm" text="kubeadm" >}} 도구를 사용하여 쿠버네티스 클러스터를 만들고 관리할 수 있다. +사용자 친화적인 방식으로 최소한의 실행 가능하고 안전한 클러스터를 설정하고 실행하는 데 필요한 작업을 수행한다. -[퀵 스타트](https://kind.sigs.k8s.io/docs/user/quick-start/)는 `kind` 를 시작하고 실행하기 위해 -수행해야 하는 작업을 보여준다. +[kubeadm 설치](/docs/setup/production-environment/tools/kubeadm/install-kubeadm/) 페이지는 kubeadm 설치하는 방법을 보여준다. +설치가 끝나면, [클러스터 생성](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/)이 가능하다. -kind 시작하기 가이드 보기 +kubeadm 설치 가이드 보기 diff --git a/content/ko/docs/tasks/tools/install-kubectl.md b/content/ko/docs/tasks/tools/install-kubectl.md index 2f2e6c4fe0..04801d4ff8 100644 --- a/content/ko/docs/tasks/tools/install-kubectl.md +++ b/content/ko/docs/tasks/tools/install-kubectl.md @@ -521,7 +521,7 @@ compinit ## {{% heading "whatsnext" %}} -* [Minikube 설치](/ko/docs/tasks/tools/install-minikube/) +* [Minikube 설치](https://minikube.sigs.k8s.io/docs/start/) * 클러스터 생성에 대한 자세한 내용은 [시작하기](/ko/docs/setup/)를 참고한다. * [애플리케이션을 시작하고 노출하는 방법에 대해 배운다.](/ko/docs/tasks/access-application-cluster/service-access-application-cluster/) * 직접 생성하지 않은 클러스터에 접근해야하는 경우, diff --git a/content/ko/docs/tutorials/hello-minikube.md b/content/ko/docs/tutorials/hello-minikube.md index 699902295e..8f3f515f31 100644 --- a/content/ko/docs/tutorials/hello-minikube.md +++ b/content/ko/docs/tutorials/hello-minikube.md @@ -15,25 +15,23 @@ card: -이 튜토리얼에서는 [Minikube](/ko/docs/setup/learning-environment/minikube)와 Katacoda를 이용하여 +이 튜토리얼에서는 Minikube와 Katacoda를 이용하여 쿠버네티스에서 샘플 애플리케이션을 어떻게 실행하는지 살펴본다. Katacode는 무료로 브라우저에서 쿠버네티스 환경을 제공한다. {{< note >}} -[로컬에서 Minikube](/ko/docs/tasks/tools/install-minikube/)를 설치했다면 이 튜토리얼도 따라 할 수 있다. +로컬에서 Minikube를 설치했다면 이 튜토리얼도 따라 할 수 있다. +설치 안내는 [minikube 시작](https://minikube.sigs.k8s.io/docs/start/)을 참고한다. {{< /note >}} ## {{% heading "objectives" %}} - -* 샘플 애플리케이션을 Minikube에 배포한다. +* 샘플 애플리케이션을 minikube에 배포한다. * 배포한 애플리케이션을 실행한다. * 애플리케이션의 로그를 확인한다. - - ## {{% heading "prerequisites" %}} @@ -43,14 +41,14 @@ Katacode는 무료로 브라우저에서 쿠버네티스 환경을 제공한다. -## Minikubue 클러스터 만들기 +## minikubue 클러스터 만들기 1. **Launch Terminal** 을 클릭 {{< kat-button >}} {{< note >}} - Minikube를 로컬에 설치했다면 `minikube start`를 실행한다. + minikube를 로컬에 설치했다면 `minikube start`를 실행한다. {{< /note >}} 2. 브라우저에서 쿠버네티스 대시보드를 열어보자. @@ -156,7 +154,7 @@ Katacode는 무료로 브라우저에서 쿠버네티스 환경을 제공한다. 로드 밸런서를 지원하는 클라우드 공급자의 경우에는 서비스에 접근할 수 있도록 외부 IP 주소가 프로비저닝 한다. - Minikube에서 `LoadBalancer`타입은 `minikube service` 명령어를 통해서 해당 서비스를 접근할 수 + minikube에서 `LoadBalancer`타입은 `minikube service` 명령어를 통해서 해당 서비스를 접근할 수 있게 한다. 3. 다음 명령어를 실행한다 @@ -173,7 +171,7 @@ Katacode는 무료로 브라우저에서 쿠버네티스 환경을 제공한다. ## 애드온 사용하기 -Minikube에는 활성화하거나 비활성화 할 수 있고 로컬 쿠버네티스 환경에서 접속해 볼 수 있는 내장 {{< glossary_tooltip text="애드온" term_id="addons" >}} 셋이 있다. +minikube 툴은 활성화하거나 비활성화할 수 있고 로컬 쿠버네티스 환경에서 접속해 볼 수 있는 내장 {{< glossary_tooltip text="애드온" term_id="addons" >}} 셋이 포함되어 있다. 1. 현재 지원하는 애드온 목록을 확인한다. diff --git a/content/ko/docs/tutorials/stateful-application/cassandra.md b/content/ko/docs/tutorials/stateful-application/cassandra.md index 33fdcb4dbe..8273f3bcd9 100644 --- a/content/ko/docs/tutorials/stateful-application/cassandra.md +++ b/content/ko/docs/tutorials/stateful-application/cassandra.md @@ -50,7 +50,7 @@ weight: 30 ### 추가적인 Minikube 설정 요령 {{< caution >}} -[Minikube](/docs/getting-started-guides/minikube/)는 1024MiB 메모리와 1개 CPU가 기본 설정이다. +[Minikube](https://minikube.sigs.k8s.io/docs/)는 1024MiB 메모리와 1개 CPU가 기본 설정이다. 이 튜토리얼에서 Minikube를 기본 리소스 설정으로 실행하면 리소스 부족 오류가 발생한다. 이런 오류를 피하려면 Minikube를 다음 설정으로 실행하자. diff --git a/content/ko/docs/tutorials/stateless-application/guestbook-logs-metrics-with-elk.md b/content/ko/docs/tutorials/stateless-application/guestbook-logs-metrics-with-elk.md index cc02b6651d..faf5fd5303 100644 --- a/content/ko/docs/tutorials/stateless-application/guestbook-logs-metrics-with-elk.md +++ b/content/ko/docs/tutorials/stateless-application/guestbook-logs-metrics-with-elk.md @@ -17,8 +17,6 @@ card: * Metricbeat * Packetbeat - - ## {{% heading "objectives" %}} * Redis를 이용한 PHP 방명록 시작. @@ -27,7 +25,6 @@ card: * Beats 배포. * 로그와 메트릭의 대시보드 보기. - ## {{% heading "prerequisites" %}} @@ -38,16 +35,20 @@ card: * 실행 중인 [Redis를 이용한 PHP 방명록](/ko/docs/tutorials/stateless-application/guestbook) 튜토리얼의 배포본. -* 실행 중인 Elasticsearch와 Kibana 디플로이먼트. [Elastic Cloud의 Elasticsearch 서비스](https://cloud.elastic.co)를 사용하거나, [파일을 내려받아](https://www.elastic.co/guide/en/elastic-stack-get-started/current/get-started-elastic-stack.html) 워크스테이션이나 서버에서 운영하거나, [Elastic의 Helm 차트](https://github.com/elastic/helm-charts)를 이용한다. +* 실행 중인 Elasticsearch와 Kibana 디플로이먼트. [Elastic Cloud의 Elasticsearch 서비스](https://cloud.elastic.co)를 사용하거나, + [파일을 내려받아](https://www.elastic.co/guide/en/elastic-stack-get-started/current/get-started-elastic-stack.html) + 워크스테이션이나 서버에서 운영하거나, [Elastic의 Helm 차트](https://github.com/elastic/helm-charts)를 이용한다. ## Redis를 이용한 PHP 방명록 시작 + 이 튜토리얼은 [Redis를 이용한 PHP 방명록](/ko/docs/tutorials/stateless-application/guestbook)을 기반으로 한다. 방명록 애플리케이션을 실행 중이라면, 이를 모니터링할 수 있다. 실행되지 않은 경우라면 지침을 따라 방명록을 배포하고 **정리하기** 단계는 수행하지 말자. 방명록을 실행할 때 이 페이지로 돌아오자. ## 클러스터 롤 바인딩 추가 + [클러스터 단위 롤 바인딩](/docs/reference/access-authn-authz/rbac/#rolebinding-and-clusterrolebinding)을 생성하여, 클러스터 수준(kube-system 안에)으로 kube-state-metrics와 Beats를 배포할 수 있게 한다. ```shell @@ -58,31 +59,39 @@ kubectl create clusterrolebinding cluster-admin-binding \ ## kube-state-metrics 설치 [*kube-state-metrics*](https://github.com/kubernetes/kube-state-metrics)는 쿠버네티스 API 서버를 모니터링하며 오브젝트 상태에 대한 메트릭을 생성하는 간단한 서비스이다. 이런 메트릭을 Metricbeat이 보고한다. 방명록이 실행된 쿠버네티스 클러스터에서 kube-state-metrics을 추가한다. + ```shell git clone https://github.com/kubernetes/kube-state-metrics.git kube-state-metrics kubectl apply -f kube-state-metrics/examples/standard ``` ### kube-state-metrics 실행 여부 확인 + ```shell kubectl get pods --namespace=kube-system -l app.kubernetes.io/name=kube-state-metrics ``` + 출력 -```shell + +``` NAME READY STATUS RESTARTS AGE kube-state-metrics-89d656bf8-vdthm 1/1 Running 0 21s ``` + ## Elastic의 예제를 GitHub 리포지터리에 클론한다. + ```shell git clone https://github.com/elastic/examples.git ``` 나머지 커맨드는 `examples/beats-k8s-send-anywhere` 디렉터리의 파일을 참조할 것이라서, 그쪽으로 현재 디렉터리를 변경한다. + ```shell cd examples/beats-k8s-send-anywhere ``` ## 쿠버네티스 시크릿 만들기 + 쿠버네티스 {{< glossary_tooltip text="시크릿" term_id="secret" >}}은 암호나 토큰, 키 같이 소량의 민감한 데이터를 포함하는 오브젝트이다. 이러한 정보는 다른 방식으로도 파드 스펙이나 이미지에 넣을 수 있을 것이다. 시크릿 오브젝트에 넣으면 이것이 어떻게 사용되는지 다양하게 제어할 수 있고, 우발적인 노출 사고의 위험이 줄일 수 있다. {{< note >}} @@ -93,55 +102,68 @@ cd examples/beats-k8s-send-anywhere {{% tab name="자체 관리(Self Managed)" %}} ### 자체 관리 + Elastic Cloud의 Elasticsearch 서비스로 연결한다면 **관리 서비스** 탭으로 전환한다. ### 자격증명(credentials) 설정 + 자체 관리 Elasticsearch와 Kibana(자체 관리는 사실상 Elastic Cloud의 관리 서비스 Elasticsearch와 다르다) 서비스에 접속할 때에 4개 파일을 수정하여 쿠버네티스 시크릿을 생성한다. 파일은 다음과 같다. -1. ELASTICSEARCH_HOSTS -1. ELASTICSEARCH_PASSWORD -1. ELASTICSEARCH_USERNAME -1. KIBANA_HOST +1. `ELASTICSEARCH_HOSTS` +1. `ELASTICSEARCH_PASSWORD` +1. `ELASTICSEARCH_USERNAME` +1. `KIBANA_HOST` 이 정보를 Elasticsearch 클러스터와 Kibana 호스트에 지정한다. 여기 예시(또는 [*이 구성*](https://stackoverflow.com/questions/59892896/how-to-connect-from-minikube-to-elasticsearch-installed-on-host-local-developme/59892897#59892897)을 본다)가 있다. #### `ELASTICSEARCH_HOSTS` + 1. Elastic의 Elasticsearch Helm 차트에서 노드 그룹(nodeGroup). - ```shell - ["http://elasticsearch-master.default.svc.cluster.local:9200"] - ``` + ``` + ["http://elasticsearch-master.default.svc.cluster.local:9200"] + ``` + 1. Mac을 위한 Docker에서 Beats를 운영 중인 Mac에서 운영하는 단일 Elasticsearch 노드. - ```shell - ["http://host.docker.internal:9200"] - ``` + ``` + ["http://host.docker.internal:9200"] + ``` + 1. VM이나 물리 장비에서 운영 중인 두 개의 ELASTICSEARCH 노드. - ```shell - ["http://host1.example.com:9200", "http://host2.example.com:9200"] - ``` -`ELASTICSEARCH_HOSTS` 수정한다. + ``` + ["http://host1.example.com:9200", "http://host2.example.com:9200"] + ``` + +`ELASTICSEARCH_HOSTS` 를 수정한다. + ```shell vi ELASTICSEARCH_HOSTS ``` #### `ELASTICSEARCH_PASSWORD` -화이트 스페이스나 인용 부호나 <> 도 없는 암호이다. +화이트 스페이스나 인용 부호나 `<` 또는 `>` 도 없는 암호이다. - <사용자의 시크릿 암호> +``` +<사용자시크릿암호> +``` + +`ELASTICSEARCH_PASSWORD` 를 수정한다. -`ELASTICSEARCH_PASSWORD` 수정한다. ```shell vi ELASTICSEARCH_PASSWORD ``` #### `ELASTICSEARCH_USERNAME` -화이트 스페이스나 인용 부호나 <> 도 없는 이름이다. +화이트 스페이스나 인용 부호나 `<` 또는 `>` 도 없는 이름이다. - +``` + +``` + +`ELASTICSEARCH_USERNAME` 을 수정한다. -`ELASTICSEARCH_USERNAME` 수정한다. ```shell vi ELASTICSEARCH_USERNAME ``` @@ -150,78 +172,97 @@ vi ELASTICSEARCH_USERNAME 1.Elastic의 Kibana Helm 차트의 인스턴스이다. 하위 도메인 `default`는 기본 네임스페이스를 참조한다. 다른 네임스페이스를 사용하여 Helm 차트를 배포한 경우 하위 도메인이 다릅니다. - ```shell - "kibana-kibana.default.svc.cluster.local:5601" - ``` + ``` + "kibana-kibana.default.svc.cluster.local:5601" + ``` + 1. Mac 용 Docker에서 실행하는 Beats가 있는 Mac에서 실행하는 Kibana 인스턴스 - ```shell - "host.docker.internal:5601" - ``` + ``` + "host.docker.internal:5601" + ``` 1. 가상머신이나 물리적 하드웨어에서 실행 중인 두 개의 Elasticsearch 노드 - ```shell - "host1.example.com:5601" - ``` -`KIBANA_HOST`를 편집한다. + ``` + "host1.example.com:5601" + ``` + +`KIBANA_HOST` 를 편집한다. + ```shell vi KIBANA_HOST ``` ### 쿠버네티스 시크릿 만들기 -이 커맨드는 방금 편집한 파일을 기반으로 쿠버네티스의 시스템 수준의 네임스페이스(kube-system)에 시크릿을 만든다. - kubectl create secret generic dynamic-logging \ - --from-file=./ELASTICSEARCH_HOSTS \ - --from-file=./ELASTICSEARCH_PASSWORD \ - --from-file=./ELASTICSEARCH_USERNAME \ - --from-file=./KIBANA_HOST \ - --namespace=kube-system +이 커맨드는 방금 편집한 파일을 기반으로 쿠버네티스의 시스템 수준의 네임스페이스(`kube-system`)에 시크릿을 만든다. + +```shell +kubectl create secret generic dynamic-logging \ + --from-file=./ELASTICSEARCH_HOSTS \ + --from-file=./ELASTICSEARCH_PASSWORD \ + --from-file=./ELASTICSEARCH_USERNAME \ + --from-file=./KIBANA_HOST \ + --namespace=kube-system +``` {{% /tab %}} {{% tab name="관리 서비스(Managed service)" %}} ## 관리 서비스 + 이 탭은 Elastic Cloud에서 Elasticsearch 서비스 만에 대한 것으로, 이미 자체 관리 Elasticsearch와 Kibana 배포로 시크릿을 생성했다면, [Beats 배포](#deploy-the-beats)를 계속한다. + ### 자격증명(credentials) 설정 + Elastic Cloud에서 관리되는 Elastic 서비스에 연결할 때, 쿠버네티스 시크릿을 생성하기 위해 편집할 두 파일이 있다. 파일은 다음과 같다. -1. ELASTIC_CLOUD_AUTH -1. ELASTIC_CLOUD_ID +1. `ELASTIC_CLOUD_AUTH` +1. `ELASTIC_CLOUD_ID` 디플로이먼트를 생성할 때에 Elasticsearch 콘솔에서 제공한 정보로 이를 설정한다. 여기 예시들이 있다. -#### ELASTIC_CLOUD_ID -```shell +#### `ELASTIC_CLOUD_ID` + +``` devk8s:ABC123def456ghi789jkl123mno456pqr789stu123vwx456yza789bcd012efg345hijj678klm901nop345zEwOTJjMTc5YWQ0YzQ5OThlN2U5MjAwYTg4NTIzZQ== ``` -#### ELASTIC_CLOUD_AUTH +#### `ELASTIC_CLOUD_AUTH` + 사용자 이름, 콜론(`:`) 및 비밀번호인데, 공백 또는 따옴표는 없다. -```shell + +``` elastic:VFxJJf9Tjwer90wnfTghsn8w ``` ### 필요 파일 편집하기 + ```shell vi ELASTIC_CLOUD_ID vi ELASTIC_CLOUD_AUTH ``` + ### 쿠버네티스 시크릿 생성하기 -이 커맨드는 방금 편집한 파일을 기반으로 쿠버네티스의 시스템 수준의 네임스페이스(kube-system)에 시크릿을 생성한다. - kubectl create secret generic dynamic-logging \ - --from-file=./ELASTIC_CLOUD_ID \ - --from-file=./ELASTIC_CLOUD_AUTH \ - --namespace=kube-system +이 커맨드는 방금 편집한 파일을 기반으로 쿠버네티스의 시스템 수준의 네임스페이스(`kube-system`)에 시크릿을 생성한다. - {{% /tab %}} +```shell +kubectl create secret generic dynamic-logging \ + --from-file=./ELASTIC_CLOUD_ID \ + --from-file=./ELASTIC_CLOUD_AUTH \ + --namespace=kube-system +``` + +{{% /tab %}} {{< /tabs >}} ## Beats 배포하기 {#deploy-the-beats} + 각 Beat마다 메니페스트 파일을 제공한다. 이 메니페스트 파일은 앞서 생성한 시크릿을 사용하여, Elasticsearch 및 Kibana 서버에 연결하도록 Beats를 구성한다. ### Filebeat에 대해 + Filebeat는 쿠버네티스 노드와 해당 노두에서 실행되는 각 파드에서 실행되는 컨테이너의 로그를 수집한다. Filebeat는 {{< glossary_tooltip text="데몬 셋" term_id="daemonset" >}}으로 배포한다. Filebeat는 쿠버네티스 클러스터에서 실행 중인 애플리케이션을 자동 검색할 수 있다. 시작시에 Filebeat는 기존 컨테이너를 검색하고 이에 적절한 구성을 시작하고 새 시작/종료 이벤트를 감시한다. 아래 내용은 Filebeat가 방명록 애플리케이션과 함께 배포된 Redis 컨테이너에서 Redis 로그를 찾아 구문분석할 수 있게 하는 자동 검색 구성이다. 이 구성은 `filebeat-kubernetes.yaml`파일에 있다. @@ -240,20 +281,25 @@ Filebeat는 쿠버네티스 노드와 해당 노두에서 실행되는 각 파 enabled: true var.hosts: ["${data.host}:${data.port}"] ``` + 이것은 `redis` 컨테이너가 `app` 문자열을 포함하는 레이블로 감지될 때에 Filebeat 모듈 `redis`를 적용하도록 Filebeat를 구성한다. Redis 모듈은 Docker 입력 유형을 사용하여 컨테이너에서 `로그` 스트림을 수집할 수 있다(이 Redis 컨테이너의 STDOUT 스트림과 연관된 쿠버네티스 노드에서 파일 읽기). 또한 이 모듈은 컨테이너 메타 데이터에 제공되는 적절한 파드 호스트와 포트에 연결하여 Redis의 `slowlog` 항목을 수집할 수 있다. ### Filebeat 배포 + ```shell kubectl create -f filebeat-kubernetes.yaml ``` #### 확인 + ```shell kubectl get pods -n kube-system -l k8s-app=filebeat-dynamic ``` ### Metricbeat에 대해 + Metricbeat 자동 검색은 Filebeat와 같은 방식으로 구성된다. 다음은 Redis 컨테이너에 대한 Metricbeat의 자동 검색 구성이다. 이 구성은 `metricbeat-kubernetes.yaml`에 있다. + ```yaml - condition.equals: kubernetes.labels.tier: backend @@ -265,18 +311,23 @@ Metricbeat 자동 검색은 Filebeat와 같은 방식으로 구성된다. 다음 # Redis hosts hosts: ["${data.host}:${data.port}"] ``` + 이것은 컨테이너가 `tier` 레이블이 `backend` 문자열과 같은 레이블로 감지될 때에 Metricbeat 모듈 `redis`를 적용하도록 Metricbeat를 구성한다. `redis` 모듈은 컨테이너 메타데이터에 제공되는 적절한 파드 호스트와 포트에 연결하여 컨테이너에서 `info` 및 `keyspace` 메트릭을 수집할 수 있다. ### Metricbeat 배포 + ```shell kubectl create -f metricbeat-kubernetes.yaml ``` + #### 확인 + ```shell kubectl get pods -n kube-system -l k8s-app=metricbeat ``` ### Packetbeat에 대해 + Packetbeat 구성은 Filebeat와 Metricbeat와는 다르다. 컨테이너 레이블과 일치시킬 패턴을 지정하지 않고, 구성은 관련 프로토콜 및 포트 번호를 기반으로 한다. 아래는 포트 번호의 하위 집합이다. {{< note >}} @@ -307,11 +358,13 @@ packetbeat.flows: ``` #### Packetbeat 배포하기 + ```shell kubectl create -f packetbeat-kubernetes.yaml ``` #### 확인하기 + ```shell kubectl get pods -n kube-system -l k8s-app=packetbeat-dynamic ``` @@ -328,13 +381,16 @@ Metricbeat에서 Apache 메트릭을 가져올 수 있게 하려면, mod-status ## 디플로이먼트를 확장하고 모니터링중인 새 파드를 확인하기 + 기존 디플로이먼트를 확인한다. + ```shell kubectl get deployments ``` 출력 -```shell + +``` NAME READY UP-TO-DATE AVAILABLE AGE frontend 3/3 3 3 3h27m redis-master 1/1 1 1 3h27m @@ -342,54 +398,56 @@ redis-slave 2/2 2 2 3h27m ``` front의 디플로이먼트를 두 개의 파드로 축소한다. + ```shell kubectl scale --replicas=2 deployment/frontend ``` + 출력 -```shell + +``` deployment.extensions/frontend scaled ``` + frontend의 파드를 최대 3개의 파드로 확장한다. + ```shell kubectl scale --replicas=3 deployment/frontend ``` ## Kibana에서 변화 확인하기 + 스크린 캡처를 확인하여, 표시된 필터를 추가하고 해당 열을 뷰에 추가한다. ScalingReplicaSet 항목이 표시되고, 여기에서 이벤트 목록의 맨 위에 풀링되는 이미지, 마운트된 볼륨, 파드 시작 등을 보여준다. ![Kibana 디스커버리](https://raw.githubusercontent.com/elastic/examples/master/beats-k8s-send-anywhere/scaling-up.png) - - ## {{% heading "cleanup" %}} 디플로이먼트와 서비스를 삭제하면 실행중인 파드도 삭제된다. 한 커맨드로 여러 개의 리소스를 삭제하기 위해 레이블을 이용한다. 1. 다음 커맨드를 실행하여 모든 파드, 디플로이먼트, 서비스를 삭제한다. - ```shell - kubectl delete deployment -l app=redis - kubectl delete service -l app=redis - kubectl delete deployment -l app=guestbook - kubectl delete service -l app=guestbook - kubectl delete -f filebeat-kubernetes.yaml - kubectl delete -f metricbeat-kubernetes.yaml - kubectl delete -f packetbeat-kubernetes.yaml - kubectl delete secret dynamic-logging -n kube-system - ``` + ```shell + kubectl delete deployment -l app=redis + kubectl delete service -l app=redis + kubectl delete deployment -l app=guestbook + kubectl delete service -l app=guestbook + kubectl delete -f filebeat-kubernetes.yaml + kubectl delete -f metricbeat-kubernetes.yaml + kubectl delete -f packetbeat-kubernetes.yaml + kubectl delete secret dynamic-logging -n kube-system + ``` 1. 실행 중인 파드가 없음을 확인하기 위해 파드 목록을 조회한다. - ```shell - kubectl get pods - ``` - - 커맨드의 출력은 다음과 같아야 한다. - - ``` - No resources found. - ``` + ```shell + kubectl get pods + ``` + 출력은 다음과 같아야 한다. + ``` + No resources found. + ``` ## {{% heading "whatsnext" %}} diff --git a/content/ko/includes/task-tutorial-prereqs.md b/content/ko/includes/task-tutorial-prereqs.md index b05dc3ac8c..90aa725d6c 100644 --- a/content/ko/includes/task-tutorial-prereqs.md +++ b/content/ko/includes/task-tutorial-prereqs.md @@ -1,7 +1,7 @@ 쿠버네티스 클러스터가 필요하고, kubectl 커맨드-라인 툴이 클러스터와 통신할 수 있도록 설정되어 있어야 한다. 만약, 아직 클러스터를 가지고 있지 않다면, -[Minikube](/ko/docs/setup/learning-environment/minikube/)를 사용해서 생성하거나, +[minikube](/ko/docs/tasks/tools/#minikube)를 사용해서 생성하거나 다음의 쿠버네티스 플레이그라운드 중 하나를 사용할 수 있다. * [Katacoda](https://www.katacoda.com/courses/kubernetes/playground) From 53739e799706efa4b2b2cd464e96c8f919399811 Mon Sep 17 00:00:00 2001 From: Tim Bannister Date: Fri, 13 Nov 2020 18:36:56 +0000 Subject: [PATCH 41/80] Revise ingress controller list - note that AWS load balancer integration is now in-project - sort alphabetically - link to documentation for the product - revise wording to always describe the ingress controller rather than the service / product that the ingress controller integrates with --- .../ingress-controllers.md | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/content/en/docs/concepts/services-networking/ingress-controllers.md b/content/en/docs/concepts/services-networking/ingress-controllers.md index dcfba66a40..df0e3ffd22 100644 --- a/content/en/docs/concepts/services-networking/ingress-controllers.md +++ b/content/en/docs/concepts/services-networking/ingress-controllers.md @@ -13,9 +13,8 @@ Unlike other types of controllers which run as part of the `kube-controller-mana are not started automatically with a cluster. Use this page to choose the ingress controller implementation that best fits your cluster. -Kubernetes as a project currently supports and maintains [GCE](https://git.k8s.io/ingress-gce/README.md) and - [nginx](https://git.k8s.io/ingress-nginx/README.md) controllers. - +Kubernetes as a project supports and maintains [AWS](https://github.com/kubernetes-sigs/aws-load-balancer-controller#readme), [GCE](https://git.k8s.io/ingress-gce/README.md#readme), and + [nginx](https://git.k8s.io/ingress-nginx/README.md#readme) ingress controllers. @@ -24,31 +23,31 @@ Kubernetes as a project currently supports and maintains [GCE](https://git.k8s.i {{% thirdparty-content %}} -* [AKS Application Gateway Ingress Controller](https://github.com/Azure/application-gateway-kubernetes-ingress) is an ingress controller that enables ingress to [AKS clusters](https://docs.microsoft.com/azure/aks/kubernetes-walkthrough-portal) using the [Azure Application Gateway](https://docs.microsoft.com/azure/application-gateway/overview). -* [Ambassador](https://www.getambassador.io/) API Gateway is an [Envoy](https://www.envoyproxy.io) based ingress - controller with [community](https://www.getambassador.io/docs) or - [commercial](https://www.getambassador.io/pro/) support from [Datawire](https://www.datawire.io/). -* [AppsCode Inc.](https://appscode.com) offers support and maintenance for the most widely used [HAProxy](https://www.haproxy.org/) based ingress controller [Voyager](https://appscode.com/products/voyager). -* [AWS Load Balancer Controller](https://github.com/kubernetes-sigs/aws-load-balancer-controller) (formerly known as AWS ALB Ingress Controller) enables ingress using [AWS Elastic Load Balancing](https://aws.amazon.com/elasticloadbalancing/). -* [Contour](https://projectcontour.io/) is an [Envoy](https://www.envoyproxy.io/) based ingress controller - provided and supported by VMware. -* Citrix provides an [Ingress Controller](https://github.com/citrix/citrix-k8s-ingress-controller) for its hardware (MPX), virtualized (VPX) and [free containerized (CPX) ADC](https://www.citrix.com/products/citrix-adc/cpx-express.html) for [baremetal](https://github.com/citrix/citrix-k8s-ingress-controller/tree/master/deployment/baremetal) and [cloud](https://github.com/citrix/citrix-k8s-ingress-controller/tree/master/deployment) deployments. -* F5 Networks provides [support and maintenance](https://support.f5.com/csp/article/K86859508) - for the [F5 BIG-IP Container Ingress Services for Kubernetes](https://clouddocs.f5.com/containers/latest/userguide/kubernetes/). -* [Gloo](https://gloo.solo.io) is an open-source ingress controller based on [Envoy](https://www.envoyproxy.io) which offers API Gateway functionality with enterprise support from [solo.io](https://www.solo.io). -* [HAProxy Ingress](https://haproxy-ingress.github.io) is a highly customizable community-driven ingress controller for HAProxy. -* [HAProxy Technologies](https://www.haproxy.com/) offers support and maintenance for the [HAProxy Ingress Controller for Kubernetes](https://github.com/haproxytech/kubernetes-ingress). See the [official documentation](https://www.haproxy.com/documentation/hapee/1-9r1/traffic-management/kubernetes-ingress-controller/). -* [Istio](https://istio.io/) based ingress controller - [Control Ingress Traffic](https://istio.io/docs/tasks/traffic-management/ingress/). -* [Kong](https://konghq.com/) offers [community](https://discuss.konghq.com/c/kubernetes) or - [commercial](https://konghq.com/kong-enterprise/) support and maintenance for the - [Kong Ingress Controller for Kubernetes](https://github.com/Kong/kubernetes-ingress-controller). -* [NGINX, Inc.](https://www.nginx.com/) offers support and maintenance for the - [NGINX Ingress Controller for Kubernetes](https://www.nginx.com/products/nginx/kubernetes-ingress-controller). -* [Skipper](https://opensource.zalando.com/skipper/kubernetes/ingress-controller/) HTTP router and reverse proxy for service composition, including use cases like Kubernetes Ingress, designed as a library to build your custom proxy -* [Traefik](https://github.com/traefik/traefik) is a fully featured ingress controller - ([Let's Encrypt](https://letsencrypt.org), secrets, http2, websocket), and it also comes with commercial - support by [Traefik Labs](https://traefik.io). +* [AKS Application Gateway Ingress Controller](https://azure.github.io/application-gateway-kubernetes-ingress/) is an ingress controller that configures the [Azure Application Gateway](https://docs.microsoft.com/azure/application-gateway/overview). +* [Ambassador](https://www.getambassador.io/) API Gateway is an [Envoy](https://www.envoyproxy.io)-based ingress + controller. +* The [Citrix ingress controller](https://github.com/citrix/citrix-k8s-ingress-controller#readme) works with + Citrix Application Delivery Controller. +* [Contour](https://projectcontour.io/) is an [Envoy](https://www.envoyproxy.io/) based ingress controller. +* F5 BIG-IP [Container Ingress Services for Kubernetes](https://clouddocs.f5.com/containers/latest/userguide/kubernetes/) + lets you use an Ingress to configure F5 BIG-IP virtual servers. +* [Gloo](https://gloo.solo.io) is an open-source ingress controller based on [Envoy](https://www.envoyproxy.io), + which offers API gateway functionality. +* [HAProxy Ingress](https://haproxy-ingress.github.io/) is an ingress controller for + [HAProxy](http://www.haproxy.org/#desc). +* The [HAProxy Ingress Controller for Kubernetes](https://github.com/haproxytech/kubernetes-ingress#readme) + is also an ingress controller for [HAProxy](http://www.haproxy.org/#desc). +* [Istio Ingress](https://istio.io/latest/docs/tasks/traffic-management/ingress/kubernetes-ingress/) + is an [Istio](https://istio.io/) based ingress controller. +* The [Kong Ingress Controller for Kubernetes](https://github.com/Kong/kubernetes-ingress-controller#readme) + is an ingress controller driving [Kong Gateway](https://konghq.com/kong/). +* The [NGINX Ingress Controller for Kubernetes](https://www.nginx.com/products/nginx/kubernetes-ingress-controller) + works with the [NGINX](https://www.nginx.com/resources/glossary/nginx/) webserver (as a proxy). +* [Skipper](https://opensource.zalando.com/skipper/kubernetes/ingress-controller/) HTTP router and reverse proxy for service composition, including use cases like Kubernetes Ingress, designed as a library to build your custom proxy. +* The [Traefik Kubernetes Ingress provider](https://doc.traefik.io/traefik/providers/kubernetes-ingress/) is an + ingress controller for the [Traefik](https://traefik.io/traefik/) proxy. +* [Voyager](https://appscode.com/products/voyager) is an ingress controller for + [HAProxy](http://www.haproxy.org/#desc). ## Using multiple Ingress controllers @@ -74,3 +73,4 @@ Make sure you review your ingress controller's documentation to understand the c * Learn more about [Ingress](/docs/concepts/services-networking/ingress/). * [Set up Ingress on Minikube with the NGINX Controller](/docs/tasks/access-application-cluster/ingress-minikube). + From 04df324331029674c3ad1a75e779f48551c3194b Mon Sep 17 00:00:00 2001 From: jialaijun Date: Sat, 28 Nov 2020 09:42:08 +0800 Subject: [PATCH 42/80] update markdown file in glossary directory --- content/zh/docs/reference/glossary/addons.md | 2 +- content/zh/docs/reference/glossary/annotation.md | 2 +- content/zh/docs/reference/glossary/api-group.md | 2 +- content/zh/docs/reference/glossary/approver.md | 5 +---- .../reference/glossary/cloud-controller-manager.md | 7 ++----- content/zh/docs/reference/glossary/cloud-provider.md | 6 +++--- .../zh/docs/reference/glossary/cluster-operations.md | 5 ++--- content/zh/docs/reference/glossary/cni.md | 2 +- content/zh/docs/reference/glossary/configmap.md | 2 +- .../reference/glossary/container-env-variables.md | 4 ++-- content/zh/docs/reference/glossary/contributor.md | 2 +- content/zh/docs/reference/glossary/control-plane.md | 2 +- content/zh/docs/reference/glossary/controller.md | 2 +- content/zh/docs/reference/glossary/csi.md | 4 ++-- content/zh/docs/reference/glossary/device-plugin.md | 8 ++++---- content/zh/docs/reference/glossary/disruption.md | 4 ++-- content/zh/docs/reference/glossary/docker.md | 2 +- .../glossary/dynamic-volume-provisioning.md | 2 +- content/zh/docs/reference/glossary/endpoint-slice.md | 2 +- .../reference/glossary/horizontal-pod-autoscaler.md | 2 +- content/zh/docs/reference/glossary/host-aliases.md | 2 +- content/zh/docs/reference/glossary/image.md | 2 +- content/zh/docs/reference/glossary/init-container.md | 2 +- .../reference/glossary/kube-controller-manager.md | 4 ++-- content/zh/docs/reference/glossary/kube-proxy.md | 4 ++-- content/zh/docs/reference/glossary/secret.md | 10 +++++----- .../zh/docs/reference/glossary/security-context.md | 4 ++-- content/zh/docs/reference/glossary/selector.md | 8 ++++---- .../zh/docs/reference/glossary/service-account.md | 5 ++--- content/zh/docs/reference/glossary/service-broker.md | 2 +- .../zh/docs/reference/glossary/service-catalog.md | 8 ++++---- content/zh/docs/reference/glossary/service.md | 2 +- .../zh/docs/reference/glossary/shuffle-sharding.md | 2 +- content/zh/docs/reference/glossary/statefulset.md | 12 +++++------- content/zh/docs/reference/glossary/static-pod.md | 4 ++-- content/zh/docs/reference/glossary/storage-class.md | 7 +++---- content/zh/docs/reference/glossary/taint.md | 8 +++----- content/zh/docs/reference/glossary/toleration.md | 2 +- content/zh/docs/reference/glossary/upstream.md | 4 ++-- content/zh/docs/reference/glossary/volume.md | 6 +++--- content/zh/docs/reference/glossary/wg.md | 2 +- 41 files changed, 77 insertions(+), 90 deletions(-) diff --git a/content/zh/docs/reference/glossary/addons.md b/content/zh/docs/reference/glossary/addons.md index 686a79a92a..31fc1f0098 100644 --- a/content/zh/docs/reference/glossary/addons.md +++ b/content/zh/docs/reference/glossary/addons.md @@ -37,4 +37,4 @@ tags: -[安装附加组件](/docs/concepts/cluster-administration/addons/) 阐释了更多关于如何在集群内使用附加组件,并列出了一些流行的附加组件。 +[安装附加组件](/zh/docs/concepts/cluster-administration/addons/) 阐释了更多关于如何在集群内使用附加组件,并列出了一些流行的附加组件。 diff --git a/content/zh/docs/reference/glossary/annotation.md b/content/zh/docs/reference/glossary/annotation.md index 93b75980cc..46514d2401 100644 --- a/content/zh/docs/reference/glossary/annotation.md +++ b/content/zh/docs/reference/glossary/annotation.md @@ -40,5 +40,5 @@ tags: The metadata in an annotation can be small or large, structured or unstructured, and can include characters not permitted by {{< glossary_tooltip text="labels" term_id="label" >}}. Clients such as tools and libraries can retrieve this metadata. --> -注解中的元数据可大可小,可以是结构化的也可以是非结构化的,并且能包含{{< glossary_tooltip text="标签" term_id="label" >}}不允许使用的字符。像工具和软件库这样的客户端可以检索这些元数据。 +注解中的元数据可大可小,可以是结构化的也可以是非结构化的,并且能包含 {{< glossary_tooltip text="标签" term_id="label" >}} 不允许使用的字符。像工具和软件库这样的客户端可以检索这些元数据。 diff --git a/content/zh/docs/reference/glossary/api-group.md b/content/zh/docs/reference/glossary/api-group.md index 00314e5da9..21f0c20621 100644 --- a/content/zh/docs/reference/glossary/api-group.md +++ b/content/zh/docs/reference/glossary/api-group.md @@ -39,7 +39,7 @@ Kubernetes API 中的一组相关路径。 -通过更改 API server 的配置,可以启用或禁用每个 API Group。你还可以禁用或启用指向特定资源的路径。API group 使扩展 Kubernetes API 更加的容易。API group 在 REST 路径和序列化对象的 `apiVersion` 字段中指定。 +通过更改 API server 的配置,可以启用或禁用每个 API Group。你还可以禁用或启用指向特定资源的路径。 API group 使扩展 Kubernetes API 更加的容易。 API group 在 REST 路径和序列化对象的 `apiVersion` 字段中指定。 -代码审核的重点是代码质量和正确性,而批准的重点是对贡献的整体接受。 -整体接受包括向后/向前兼容性、遵守 API 和参数约定、细微的性能和正确性问题、与系统其他部分的交互等。 -批准者状态的作用域是代码库的一部分。 -审批者以前被称为维护者。 +代码审核的重点是代码质量和正确性,而批准的重点是对贡献的整体接受。整体接受包括向后/向前兼容性、遵守 API 和参数约定、细微的性能和正确性问题、与系统其他部分的交互等。批准者状态的作用域是代码库的一部分。审批者以前被称为维护者。 diff --git a/content/zh/docs/reference/glossary/cloud-controller-manager.md b/content/zh/docs/reference/glossary/cloud-controller-manager.md index 2799a7f448..ec76c8aab8 100644 --- a/content/zh/docs/reference/glossary/cloud-controller-manager.md +++ b/content/zh/docs/reference/glossary/cloud-controller-manager.md @@ -38,10 +38,7 @@ cluster into your cloud provider's API, and separates out the components that in with that cloud platform from components that just interact with your cluster. --> -Cloud Controller Manager(云控制器管理器)是指 嵌入特定云的控制逻辑的 {{< glossary_tooltip text="控制平面" term_id="control-plane" >}} 组件 -。云控制器管理器允许您链接 -聚合到云提供商的应用编程接口中,并分离出相互作用的组件 -与您的集群交互的组件。 +云控制器管理器是指嵌入特定云的控制逻辑的 {{< glossary_tooltip text="控制平面" term_id="control-plane" >}} 组件。云控制器管理器允许您链接聚合到云提供商的应用编程接口中,并分离出相互作用的组件与您的集群交互的组件。 @@ -50,4 +47,4 @@ By decoupling the interoperability logic between Kubernetes and the underlying c infrastructure, the cloud-controller-manager component enables cloud providers to release features at a different pace compared to the main Kubernetes project. --> -通过分离Kubernates和底层云基础设置之间的互操作性逻辑,云控制器管理器组件使云提供商能够以不同于Kubernates主项目的速度进行发布新特征。 \ No newline at end of file +通过分离 Kubernetes 和底层云基础设置之间的互操作性逻辑,云控制器管理器组件使云提供商能够以不同于 Kubernetes 主项目的速度进行发布新特征。 \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/cloud-provider.md b/content/zh/docs/reference/glossary/cloud-provider.md index 4051cf441f..86f3c1f3f5 100755 --- a/content/zh/docs/reference/glossary/cloud-provider.md +++ b/content/zh/docs/reference/glossary/cloud-provider.md @@ -58,8 +58,8 @@ elements such as load balancers. 针对托管的基础设施,云供应商负责服务器、存储和网络,而用户(你) 负责管理其上运行的各层软件,例如运行一个 Kubernetes 集群。 -你也会看到 Kubernetes 被作为托管服务提供;有时也称作平台即服务或 PaaS。 -针对托管的 Kubernetes,你的云供应商负责 Kubernetes 的控制面以及 -{{< glossary_tooltip term_id="node" text="节点" >}}及他们所依赖的基础设施: +你也会看到 Kubernetes 被作为托管服务提供;有时也称作平台即服务或 PaaS 。 +针对托管的 Kubernetes ,你的云供应商负责 Kubernetes 的控制面以及 + {{< glossary_tooltip term_id="node" text="节点" >}} 及他们所依赖的基础设施: 网络、存储以及其他一些诸如负载均衡器之类的元素。 diff --git a/content/zh/docs/reference/glossary/cluster-operations.md b/content/zh/docs/reference/glossary/cluster-operations.md index 1c0cf5d981..4c3787eb61 100644 --- a/content/zh/docs/reference/glossary/cluster-operations.md +++ b/content/zh/docs/reference/glossary/cluster-operations.md @@ -30,7 +30,7 @@ tags: The work involved in managing a Kubernetes cluster: managing day-to-day operations, and co-ordinating upgrades. --> -Kubernates管理相关工作包括:日常管理操作和协调升级。 + Kubernetes 管理相关工作包括:日常管理操作和协调升级。 -群集操作工作的示例包括:部署新节点来扩容集群;执行软件升级;实施安全控制;添加或删除存储;配置集群网络; -管理集群范围的可观测性;响应集群事件。 \ No newline at end of file +群集操作工作的示例包括:部署新节点来扩容集群;执行软件升级;实施安全控制;添加或删除存储;配置集群网络;管理集群范围的可观测性;响应集群事件。 \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/cni.md b/content/zh/docs/reference/glossary/cni.md index 6d64e8fe7e..64febe0215 100644 --- a/content/zh/docs/reference/glossary/cni.md +++ b/content/zh/docs/reference/glossary/cni.md @@ -41,4 +41,4 @@ tags: * For information on Kubernetes and CNI, see ["Network plugins"](/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/#cni). --> -* 想了解 Kubernetes 和 CNI 请参考 ["网络插件"](/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/#cni)。 +* 想了解 Kubernetes 和 CNI 请参考 ["网络插件"](/zh/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/#cni)。 diff --git a/content/zh/docs/reference/glossary/configmap.md b/content/zh/docs/reference/glossary/configmap.md index 807f59d2c1..eb936aca66 100644 --- a/content/zh/docs/reference/glossary/configmap.md +++ b/content/zh/docs/reference/glossary/configmap.md @@ -33,7 +33,7 @@ environment variables, command-line arguments, or as configuration files in a {{< glossary_tooltip text="volume" term_id="volume" >}}. --> - ConfigMap 是一种 API 对象,用来将非机密性的数据保存到健值对中。使用时,{{< glossary_tooltip text="Pods" term_id="pod" >}} 可以将其用作环境变量、命令行参数或者存储卷中的配置文件。 + ConfigMap 是一种 API 对象,用来将非机密性的数据保存到健值对中。使用时, {{< glossary_tooltip text="Pods" term_id="pod" >}} 可以将其用作环境变量、命令行参数或者存储卷中的配置文件。 diff --git a/content/zh/docs/reference/glossary/container-env-variables.md b/content/zh/docs/reference/glossary/container-env-variables.md index 9cb49eb7af..e8796a12bd 100644 --- a/content/zh/docs/reference/glossary/container-env-variables.md +++ b/content/zh/docs/reference/glossary/container-env-variables.md @@ -4,7 +4,7 @@ id: container-env-variables date: 2018-04-12 full_link: /zh/docs/concepts/containers/container-environment/ short_description: > - 容器环境变量提供了name=value形式的、运行容器化应用所必须的一些重要信息。 + 容器环境变量提供了 name=value 形式的、运行容器化应用所必须的一些重要信息。 aka: tags: @@ -30,7 +30,7 @@ tags: Container environment variables are name=value pairs that provide useful information into containers running in a {{< glossary_tooltip text="pod" term_id="pod" >}} --> - 容器环境变量提供了name=value形式的、在{{< glossary_tooltip text="pod" term_id="pod" >}}中运行的容器所必须的一些重要信息。 + 容器环境变量提供了 name=value 形式的、在 {{< glossary_tooltip text="pod" term_id="pod" >}} 中运行的容器所必须的一些重要信息。 -贡献形式包括提交拉取请求(PRs)、问题报告(Issues)、反馈、参与{{< glossary_tooltip text="特别兴趣小组(SIG)" term_id="sig" >}}或者组织社区活动等等。 +贡献形式包括提交拉取请求(PRs)、问题报告(Issues)、反馈、参与 {{< glossary_tooltip text="特别兴趣小组(SIG)" term_id="sig" >}} 或者组织社区活动等等。 diff --git a/content/zh/docs/reference/glossary/control-plane.md b/content/zh/docs/reference/glossary/control-plane.md index d0d57cd87f..8ffd6c9a25 100644 --- a/content/zh/docs/reference/glossary/control-plane.md +++ b/content/zh/docs/reference/glossary/control-plane.md @@ -52,4 +52,4 @@ tags: * {{< glossary_tooltip text="Controller Manager" term_id="kube-controller-manager" >}} * {{< glossary_tooltip text="Cloud Controller Manager" term_id="cloud-controller-manager" >}} -这些组件可以以传统的系统服务运行也可以以容器的形式运行.运行这些组件的主机过去称为master节点。 \ No newline at end of file +这些组件可以以传统的系统服务运行也可以以容器的形式运行.运行这些组件的主机过去称为 master 节点。 \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/controller.md b/content/zh/docs/reference/glossary/controller.md index 9997165c1b..c24a7fa65c 100644 --- a/content/zh/docs/reference/glossary/controller.md +++ b/content/zh/docs/reference/glossary/controller.md @@ -38,7 +38,7 @@ state. - 在Kubernates中,控制器通过监控 {{< glossary_tooltip text="集群" term_id="kube-cluster" >}} 的公共状态,并致力于将当前状态转变为期望的状态。 + 在 Kubernetes 中,控制器通过监控 {{< glossary_tooltip text="集群" term_id="cluster" >}} 的公共状态,并致力于将当前状态转变为期望的状态。 diff --git a/content/zh/docs/reference/glossary/csi.md b/content/zh/docs/reference/glossary/csi.md index bf365a5c09..a02c07acc5 100644 --- a/content/zh/docs/reference/glossary/csi.md +++ b/content/zh/docs/reference/glossary/csi.md @@ -1,5 +1,5 @@ --- -title: 容器存储接口(Container Storage Interface)(CSI) +title: 容器存储接口(Container Storage Interface,CSI) id: csi date: 2018-06-25 full_link: /zh/docs/concepts/storage/volumes/#csi @@ -31,7 +31,7 @@ tags: The Container Storage Interface (CSI) defines a standard interface to expose storage systems to containers. --> - 容器存储接口 (CSI)定义了存储系统暴露给容器的标准接口。 + 容器存储接口 (CSI) 定义了存储系统暴露给容器的标准接口。 diff --git a/content/zh/docs/reference/glossary/device-plugin.md b/content/zh/docs/reference/glossary/device-plugin.md index 287a302ae4..30664b8c31 100644 --- a/content/zh/docs/reference/glossary/device-plugin.md +++ b/content/zh/docs/reference/glossary/device-plugin.md @@ -4,7 +4,7 @@ id: device-plugin date: 2019-02-02 full_link: /zh/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/ short_description: > - 一种软件扩展,可以使Pod访问由特定厂商初始化或者安装的设备。 + 一种软件扩展,可以使 Pod 访问由特定厂商初始化或者安装的设备。 aka: tags: - fundamental @@ -32,7 +32,7 @@ tags: such as local hardware, that require vendor-specific initialization or setup steps. --> -设备插件工作在节点主机上,给{{< glossary_tooltip term_id="pod" text="Pods ">}}提供访问资源的权限,比如特定厂商初始化或者安装的本地硬件。 +设备插件工作在节点主机上,给 {{< glossary_tooltip term_id="pod" text="Pods ">}} 提供访问资源的权限,比如特定厂商初始化或者安装的本地硬件。 -设备插件将资源告知给{{< glossary_tooltip term_id="kubelet" text="kubelet" >}},以便相关节点上运行的工作负载Pod可以访问硬件功能。 +设备插件将资源告知 {{< glossary_tooltip term_id="kubelet" text="kubelet" >}} ,以便相关节点上运行的工作负载Pod可以访问硬件功能。 -更多信息请查阅[设备插件](/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/) \ No newline at end of file +更多信息请查阅[设备插件](/zh/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/) \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/disruption.md b/content/zh/docs/reference/glossary/disruption.md index 9158a8a8cf..29c7e1ebe6 100644 --- a/content/zh/docs/reference/glossary/disruption.md +++ b/content/zh/docs/reference/glossary/disruption.md @@ -41,7 +41,7 @@ Kubernetes terms that an _involuntary disruption_. See [Disruptions](/docs/concepts/workloads/pods/disruptions/) for more information. --> -如果您作为一个集群操作人员,销毁了一个从属于某个应用的 Pod, Kubernetes 视之为 _自愿干扰_。如果由于节点故障 -或者影响更大区域故障的断电导致 Pod 离线,Kubrenetes 视之为 _非愿干扰_。 +如果您作为一个集群操作人员,销毁了一个从属于某个应用的 Pod, Kubernetes 视之为 _自愿干扰(Voluntary Disruption)_。如果由于节点故障 +或者影响更大区域故障的断电导致 Pod 离线,Kubrenetes 视之为 _非愿干扰(Involuntary Disruption)_。 更多信息请查阅[Disruptions](/zh/docs/concepts/workloads/pods/disruptions/) \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/docker.md b/content/zh/docs/reference/glossary/docker.md index 7025ddab05..5a7f5e871e 100644 --- a/content/zh/docs/reference/glossary/docker.md +++ b/content/zh/docs/reference/glossary/docker.md @@ -30,7 +30,7 @@ tags: Docker (specifically, Docker Engine) is a software technology providing operating-system-level virtualization also known as {{< glossary_tooltip text="containers" term_id="container" >}}. --> - Docker(这里特指Docker引擎) 是一种可以提供操作系统级别虚拟化(也称作{{< glossary_tooltip text="容器" term_id="container" >}})的软件技术。 + Docker(这里特指 Docker 引擎) 是一种可以提供操作系统级别虚拟化(也称作{{< glossary_tooltip text="容器" term_id="container" >}})的软件技术。 diff --git a/content/zh/docs/reference/glossary/dynamic-volume-provisioning.md b/content/zh/docs/reference/glossary/dynamic-volume-provisioning.md index 5fd134e333..839afdd471 100644 --- a/content/zh/docs/reference/glossary/dynamic-volume-provisioning.md +++ b/content/zh/docs/reference/glossary/dynamic-volume-provisioning.md @@ -41,4 +41,4 @@ Dynamic provisioning eliminates the need for cluster administrators to pre-provi --> 动态供应让集群管理员无需再预先供应存储。相反,它通过用户请求自动地供应存储。 -动态卷供应是基于 API 对象 {{< glossary_tooltip text="StorageClass" term_id="储存类别(storage-class)" >}} 的,StorageClass 可以引用 {{< glossary_tooltip text="卷插件(Volume Plugin)" term_id="volume-plugin" >}} 提供的 {{< glossary_tooltip text="卷(Volume)" term_id="volume" >}} ,也可以引用传递给卷插件(Volume Plugin)的参数集。 +动态卷供应是基于 API 对象 {{< glossary_tooltip text="储存类别" term_id="storage-class" >}} 的, StorageClass 可以引用 {{< glossary_tooltip text="卷插件" term_id="volume-plugin" >}} 提供的 {{< glossary_tooltip text="卷" term_id="volume" >}} ,也可以引用传递给卷插件(Volume Plugin)的参数集。 diff --git a/content/zh/docs/reference/glossary/endpoint-slice.md b/content/zh/docs/reference/glossary/endpoint-slice.md index bfb99fc643..8e918dfb67 100644 --- a/content/zh/docs/reference/glossary/endpoint-slice.md +++ b/content/zh/docs/reference/glossary/endpoint-slice.md @@ -1,5 +1,5 @@ --- -title: 端点切片(Endpoint Slice) +title: EndpointSlice id: endpoint-slice date: 2018-04-12 full_link: /zh/docs/concepts/services-networking/endpoint-slices/ diff --git a/content/zh/docs/reference/glossary/horizontal-pod-autoscaler.md b/content/zh/docs/reference/glossary/horizontal-pod-autoscaler.md index c1fb3dfd13..0c8856a374 100644 --- a/content/zh/docs/reference/glossary/horizontal-pod-autoscaler.md +++ b/content/zh/docs/reference/glossary/horizontal-pod-autoscaler.md @@ -1,5 +1,5 @@ --- -title: Pod水平自动扩缩器(Horizontal Pod Autoscaler) +title: Pod 水平自动扩缩器(Horizontal Pod Autoscaler) id: horizontal-pod-autoscaler date: 2018-04-12 full_link: /zh/docs/tasks/run-application/horizontal-pod-autoscale/ diff --git a/content/zh/docs/reference/glossary/host-aliases.md b/content/zh/docs/reference/glossary/host-aliases.md index 84de317fb5..6581acf209 100644 --- a/content/zh/docs/reference/glossary/host-aliases.md +++ b/content/zh/docs/reference/glossary/host-aliases.md @@ -1,5 +1,5 @@ --- -title: 主机别名(HostAliases) +title: HostAliases id: HostAliases date: 2019-01-31 full_link: /docs/reference/generated/kubernetes-api/{{< param "version" >}}/#hostalias-v1-core diff --git a/content/zh/docs/reference/glossary/image.md b/content/zh/docs/reference/glossary/image.md index b32598776e..ea8a7ffda1 100644 --- a/content/zh/docs/reference/glossary/image.md +++ b/content/zh/docs/reference/glossary/image.md @@ -1,5 +1,5 @@ --- -title: Image(镜像) +title: 镜像(Image) id: image date: 2018-04-12 full_link: diff --git a/content/zh/docs/reference/glossary/init-container.md b/content/zh/docs/reference/glossary/init-container.md index a454cc3100..daf9ee2307 100644 --- a/content/zh/docs/reference/glossary/init-container.md +++ b/content/zh/docs/reference/glossary/init-container.md @@ -1,5 +1,5 @@ --- -title: Init Container(初始化容器) +title: 初始化容器(Init Container) id: init-container date: 2018-04-12 full_link: diff --git a/content/zh/docs/reference/glossary/kube-controller-manager.md b/content/zh/docs/reference/glossary/kube-controller-manager.md index c24234e501..7d737d439e 100644 --- a/content/zh/docs/reference/glossary/kube-controller-manager.md +++ b/content/zh/docs/reference/glossary/kube-controller-manager.md @@ -31,9 +31,9 @@ tags: -在主节点上运行{{< glossary_tooltip text="控制器" term_id="controller" >}}的组件。 +在主节点上运行 {{< glossary_tooltip text="控制器" term_id="controller" >}} 的组件。 -从逻辑上讲,每个{{< glossary_tooltip text="控制器" term_id="controller" >}}都是一个单独的进程,但是为了降低复杂性,它们都被编译到同一个可执行文件,并在一个进程中运行。 +从逻辑上讲,每个 {{< glossary_tooltip text="控制器" term_id="controller" >}} 都是一个单独的进程,但是为了降低复杂性,它们都被编译到同一个可执行文件,并在一个进程中运行。 diff --git a/content/zh/docs/reference/glossary/kube-proxy.md b/content/zh/docs/reference/glossary/kube-proxy.md index 79c7e2b82a..998e1c0e28 100644 --- a/content/zh/docs/reference/glossary/kube-proxy.md +++ b/content/zh/docs/reference/glossary/kube-proxy.md @@ -27,7 +27,7 @@ tags: - [kube-proxy](/docs/reference/command-line-tools-reference/kube-proxy/) 是集群中每个节点上运行的网络代理,实现 Kubernetes {{< glossary_tooltip term_id="service">}} 概念的一部分。 + [kube-proxy](/zh/docs/reference/command-line-tools-reference/kube-proxy/) 是集群中每个节点上运行的网络代理,实现 Kubernetes {{< glossary_tooltip term_id="service">}} 概念的一部分。 @@ -38,4 +38,4 @@ kube-proxy 维护节点上的网络规则。这些网络规则允许从集群内 -如果操作系统提供了数据包过滤层并可用的话,kube-proxy会通过它来实现网络规则。否则,kube-proxy 仅转发流量本身。 +如果操作系统提供了数据包过滤层并可用的话,kube-proxy 会通过它来实现网络规则。否则, kube-proxy 仅转发流量本身。 diff --git a/content/zh/docs/reference/glossary/secret.md b/content/zh/docs/reference/glossary/secret.md index a13ce75c0c..ef1c8e9516 100644 --- a/content/zh/docs/reference/glossary/secret.md +++ b/content/zh/docs/reference/glossary/secret.md @@ -4,7 +4,7 @@ id: secret date: 2018-04-12 full_link: /zh/docs/concepts/configuration/secret/ short_description: > - Secret 用于存储敏感信息,如密码、OAuth 令牌和 SSH 密钥。 + Secret 用于存储敏感信息,如密码、 OAuth 令牌和 SSH 密钥。 aka: tags: @@ -17,7 +17,7 @@ tags: title: Secret id: secret date: 2018-04-12 -full_link: /zh/docs/concepts/configuration/secret/ +full_link: /docs/concepts/configuration/secret/ short_description: > Stores sensitive information, such as passwords, OAuth tokens, and ssh keys. @@ -32,7 +32,7 @@ tags: Stores sensitive information, such as passwords, OAuth tokens, and ssh keys. --> - Secret 用于存储敏感信息,如密码、OAuth 令牌和 SSH 密钥。 + Secret 用于存储敏感信息,如密码、 OAuth 令牌和 SSH 密钥。 @@ -40,6 +40,6 @@ tags: Allows for more control over how sensitive information is used and reduces the risk of accidental exposure, including [encryption](/docs/tasks/administer-cluster/encrypt-data/#ensure-all-secrets-are-encrypted) at rest. A {{< glossary_tooltip text="Pod" term_id="pod" >}} references the secret as a file in a volume mount or by the kubelet pulling images for a pod. Secrets are great for confidential data and [ConfigMaps](/docs/tasks/configure-pod-container/configure-pod-configmap/) for non-confidential data. --> -Secret 允许用户对如何使用敏感信息进行更多的控制,并减少信息意外暴露的风险,包括静态[encryption(加密)](/docs/tasks/administer-cluster/encrypt-data/#ensure-all-secrets-are-encrypted)。 +Secret 允许用户对如何使用敏感信息进行更多的控制,并减少信息意外暴露的风险,包括静态[encryption(加密)](/zh/docs/tasks/administer-cluster/encrypt-data/#ensure-all-secrets-are-encrypted)。 {{< glossary_tooltip text="Pod" term_id="pod" >}} 通过挂载卷中的文件的方式引用 Secret,或者通过 kubelet 为 pod 拉取镜像时引用。 -Secret 非常适合机密数据使用,而 [ConfigMaps](/docs/tasks/configure-pod-container/configure-pod-configmap/) 适用于非机密数据。 +Secret 非常适合机密数据使用,而 [ConfigMaps](/zh/docs/tasks/configure-pod-container/configure-pod-configmap/) 适用于非机密数据。 diff --git a/content/zh/docs/reference/glossary/security-context.md b/content/zh/docs/reference/glossary/security-context.md index cac88a57d2..3398a7c53a 100644 --- a/content/zh/docs/reference/glossary/security-context.md +++ b/content/zh/docs/reference/glossary/security-context.md @@ -42,10 +42,10 @@ the group that processes run as, and privilege settings. You can also configure security policies (for example: SELinux, AppArmor or seccomp). --> -在一个 securityContext 字段中,可以设置进程所属用户和用户组、权限相关设置。你也可以设置安全策略(例如:SELinux、AppArmor、seccomp) +在一个 `securityContext` 字段中,你可以设置进程所属用户和用户组、权限相关设置。你也可以设置安全策略(例如:SELinux、AppArmor、seccomp)。 -‘PodSpec.securityContext’字段配置会应用到一个Pod中的所有的container。 \ No newline at end of file +`PodSpec.securityContext` 字段配置会应用到一个 Pod 中的所有的 container 。 \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/selector.md b/content/zh/docs/reference/glossary/selector.md index f3c6c49378..8afe309b36 100644 --- a/content/zh/docs/reference/glossary/selector.md +++ b/content/zh/docs/reference/glossary/selector.md @@ -1,10 +1,10 @@ --- -title: 选择标识符(Selector) +title: 选择算符(Selector) id: selector date: 2018-04-12 full_link: /zh/docs/concepts/overview/working-with-objects/labels/ short_description: > - Selector(选择标识符)允许用户通过标签对一组资源对象进行筛选过滤。 + 选择算符允许用户通过标签对一组资源对象进行筛选过滤。 aka: tags: @@ -32,7 +32,7 @@ tags: Allows users to filter a list of resources based on {{< glossary_tooltip text="labels" term_id="label" >}}. --> -Selector 允许用户通过{{< glossary_tooltip text="labels(标签)" term_id="label" >}}对一组资源对象进行筛选过滤。 +选择算符允许用户通过 {{< glossary_tooltip text="标签(labels)" term_id="label" >}} 对一组资源对象进行筛选过滤。 @@ -40,5 +40,5 @@ Selector 允许用户通过{{< glossary_tooltip text="labels(标签)" term_i Selectors are applied when querying lists of resources to filter them by labels. --> -在查询资源列表时,选择器可以通过标签对资源进行过滤筛选。 +在查询资源列表时,选择算符可以通过标签对资源进行过滤筛选。 diff --git a/content/zh/docs/reference/glossary/service-account.md b/content/zh/docs/reference/glossary/service-account.md index a98b60ba89..60e030eaed 100644 --- a/content/zh/docs/reference/glossary/service-account.md +++ b/content/zh/docs/reference/glossary/service-account.md @@ -1,5 +1,5 @@ --- -title: 服务账户(ServiceAccount) +title: ServiceAccount id: service-account date: 2018-04-12 full_link: /zh/docs/tasks/configure-pod-container/configure-service-account/ @@ -39,6 +39,5 @@ tags: -当 Pod 中的进程访问集群时,API 服务器将它们作为特定的服务帐户进行身份验证,例如 `default`。当您创建 Pod 时,如果您没有指定服务帐户,它将在相同的{{< glossary_tooltip text="Namespace" term_id="namespace" >}} 中自动分配 default 服务账户。 - +当 Pod 中的进程访问集群时,API 服务器将它们作为特定的服务帐户进行身份验证,例如 `default` ,创建 Pod 时,如果你没有指定服务帐户,它将自动被赋予同一个 {{< glossary_tooltip text="名字空间" term_id="namespace" >}} 中的 default 服务账户。 diff --git a/content/zh/docs/reference/glossary/service-broker.md b/content/zh/docs/reference/glossary/service-broker.md index f788b5f18c..c74975521d 100644 --- a/content/zh/docs/reference/glossary/service-broker.md +++ b/content/zh/docs/reference/glossary/service-broker.md @@ -29,7 +29,7 @@ tags: -由第三方提供并维护的一组{{< glossary_tooltip text="Managed Services(托管服务)" term_id="managed-service">}} 的访问端点。 +由第三方提供并维护的一组 {{< glossary_tooltip text="托管服务(Managed Services)" term_id="managed-service">}} 的访问端点。 diff --git a/content/zh/docs/reference/glossary/service-catalog.md b/content/zh/docs/reference/glossary/service-catalog.md index c2e5b23b91..cdfeae75ba 100644 --- a/content/zh/docs/reference/glossary/service-catalog.md +++ b/content/zh/docs/reference/glossary/service-catalog.md @@ -1,10 +1,10 @@ --- -title: Service Catalog +title: 服务目录(Service Catalog) id: service-catalog date: 2018-04-12 full_link: short_description: > - Service Catalog(服务目录)是一种扩展 API,它能让 Kubernetes 集群中运行的应用易于使用外部托管的软件服务,例如云供应商提供的数据仓库服务。 + 服务目录是一种扩展 API,它能让 Kubernetes 集群中运行的应用易于使用外部托管的软件服务,例如云供应商提供的数据仓库服务。 aka: tags: @@ -31,7 +31,7 @@ tags: An extension API that enables applications running in Kubernetes clusters to easily use external managed software offerings, such as a datastore service offered by a cloud provider. --> -Service Catalog(服务目录)是一种扩展 API,它能让 Kubernetes 集群中运行的应用易于使用外部托管的的软件服务,例如云供应商提供的数据仓库服务。 +服务目录是一种扩展 API,它能让 Kubernetes 集群中运行的应用易于使用外部托管的的软件服务,例如云供应商提供的数据仓库服务。 @@ -39,5 +39,5 @@ Service Catalog(服务目录)是一种扩展 API,它能让 Kubernetes 集 It provides a way to list, provision, and bind with external {{< glossary_tooltip text="Managed Services" term_id="managed-service" >}} from {{< glossary_tooltip text="Service Brokers" term_id="service-broker" >}} without needing detailed knowledge about how those services are created or managed. --> -服务目录可以检索、供应、和绑定由 {{< glossary_tooltip text="Service Brokers(服务代理人)" term_id="service-broker" >}} 提供的外部 {{< glossary_tooltip text="Managed Services(托管服务)" term_id="managed-service" >}},而无需知道那些服务具体是怎样创建和托管的。 +服务目录可以检索、供应、和绑定由 {{< glossary_tooltip text="Service Brokers(服务代理人)" term_id="service-broker" >}} 提供的外部 {{< glossary_tooltip text="托管服务(Managed Services)" term_id="managed-service" >}},而无需知道那些服务具体是怎样创建和托管的。 diff --git a/content/zh/docs/reference/glossary/service.md b/content/zh/docs/reference/glossary/service.md index 1d3514fe0c..7b4556dac7 100644 --- a/content/zh/docs/reference/glossary/service.md +++ b/content/zh/docs/reference/glossary/service.md @@ -40,4 +40,4 @@ An abstract way to expose an application running on a set of {{< glossary_toolti -服务所针对的Pod集(通常)由 {{< glossary_tooltip text="Selector" term_id="selector" >}} 确定。 如果添加或删除了更多Pod,则与选择器匹配的Pod集将发生变化。 该服务确保可以将网络流量定向到该工作负载的当前Pod集。 +服务所针对的 Pod 集(通常)由 {{< glossary_tooltip text="选择算符" term_id="selector" >}} 确定。 如果有 Pod 被添加或被删除,则与选择算符匹配的 Pod 集合将发生变化。服务确保可以将网络流量定向到该工作负载的当前 Pod 集合。 \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/shuffle-sharding.md b/content/zh/docs/reference/glossary/shuffle-sharding.md index fd3aeb7c65..4bc7f91189 100644 --- a/content/zh/docs/reference/glossary/shuffle-sharding.md +++ b/content/zh/docs/reference/glossary/shuffle-sharding.md @@ -30,7 +30,7 @@ tags: -Shuffle Sharding(混排切片)是指一种将请求指派给队列的技术,其隔离性好过对队列个数哈希取模的方式。 +混排切片(Shuffle Sharding)是指一种将请求指派给队列的技术,其隔离性好过对队列个数哈希取模的方式。 diff --git a/content/zh/docs/reference/glossary/statefulset.md b/content/zh/docs/reference/glossary/statefulset.md index c84bf4e383..6c23f796d4 100644 --- a/content/zh/docs/reference/glossary/statefulset.md +++ b/content/zh/docs/reference/glossary/statefulset.md @@ -1,10 +1,10 @@ --- -title: 状态集(StatefulSet) +title: StatefulSet id: statefulset date: 2018-04-12 full_link: /zh/docs/concepts/workloads/controllers/statefulset/ short_description: > - StatefulSet 用来管理部署和伸缩一组 Pod,包括这些 Pod 的持久存储和持久标识符。 + StatefulSet 用来管理某 Pod 集合的部署和扩缩,并为这些 Pod 提供持久存储和持久标识符。 aka: tags: - fundamental @@ -34,18 +34,16 @@ tags: - StatefulSet 用来管理部署和伸缩一组 {{< glossary_tooltip text="Pod" term_id="pod" >}},包括这些 Pod 的持久存储和持久标识符。 - +StatefulSet 用来管理某 {{< glossary_tooltip text="Pod" term_id="pod" >}} 集合的部署和扩缩,并为这些 Pod 提供持久存储和持久标识符。 -和 {{< glossary_tooltip text="Deployment" term_id="deployment" >}} 相同的是,StatefulSet 管理了基于相同容器定义的一组 Pod。但和 Deployment 不同的是,StatefulSet 为它们的每个 Pod 维护了一个固定的 ID。这些 Pod 是基于相同的声明来创建的,但是不能相互替换:无论怎么调度,每个 Pod 都有一个永久不变的 ID。 - +和 {{< glossary_tooltip text="Deployment" term_id="deployment" >}} 类似,StatefulSet 管理基于相同容器规约的一组 Pod。但和 Deployment 不同的是,StatefulSet 为它们的每个 Pod 维护了一个有粘性的 ID。这些 Pod 是基于相同的规约来创建的,但是不能相互替换:无论怎么调度,每个 Pod 都有一个永久不变的 ID。 -如果希望使用存储卷为工作负载提供持久性,可以使用状态集作为解决方案的一部分。尽管状态完整集中的单个Pod很容易出现故障,但持久的Pod标识符使得将现有卷与替换任何出现故障的新Pod相匹配变得更加容易。如果希望使用存储卷为工作负载提供持久性,可以使用状态集作为解决方案的一部分。尽管状态完整集中的单个Pod很容易出现故障,但持久的Pod标识符使得将现有卷与替换任何出现故障的新Pod相匹配变得更加容易。 +如果希望使用存储卷为工作负载提供持久存储,可以使用 StatefulSet 作为解决方案的一部分。尽管 StatefulSet 中的单个 Pod 仍可能出现故障,但持久的 Pod 标识符使得将现有卷与替换已失败 Pod 的新 Pod 相匹配变得更加容易。 \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/static-pod.md b/content/zh/docs/reference/glossary/static-pod.md index 3123cf381a..e785a96a85 100644 --- a/content/zh/docs/reference/glossary/static-pod.md +++ b/content/zh/docs/reference/glossary/static-pod.md @@ -1,10 +1,10 @@ --- -title: Static Pod +title: 静态 Pod(Static Pod) id: static-pod date: 2019-02-12 full_link: /zh/docs/tasks/configure-pod-container/static-pod/ short_description: > - Static Pod(静态Pod)是指由特定节点上的 kubelet 守护进程直接管理的 pod。 + 静态Pod(Static Pod)是指由特定节点上的 kubelet 守护进程直接管理的 Pod。 aka: tags: diff --git a/content/zh/docs/reference/glossary/storage-class.md b/content/zh/docs/reference/glossary/storage-class.md index d5b7d7bd7c..92fbea586b 100644 --- a/content/zh/docs/reference/glossary/storage-class.md +++ b/content/zh/docs/reference/glossary/storage-class.md @@ -1,10 +1,10 @@ --- -title: 存储类别(StorageClass) +title: StorageClass id: storageclass date: 2018-04-12 full_link: /zh/docs/concepts/storage/storage-classes/ short_description: > - StorageClass(存储类别) 是管理员用来描述不同的可用存储类型的一种方法。 + StorageClass 是管理员用来描述可用的不同存储类型的一种方法。 aka: tags: @@ -40,5 +40,4 @@ tags: StorageClasses can map to quality-of-service levels, backup policies, or to arbitrary policies determined by cluster administrators. Each StorageClass contains the fields `provisioner`, `parameters`, and `reclaimPolicy`, which are used when a {{< glossary_tooltip text="Persistent Volume" term_id="persistent-volume" >}} belonging to the class needs to be dynamically provisioned. Users can request a particular class using the name of a StorageClass object. --> -StorageClass 可以映射到服务质量等级(QoS)、备份策略、或者管理员随机定义的策略。每个 StorageClass 对象包含的域有 `provisioner`、 `parameters` 和 `reclaimPolicy`,每个 StorageClass 对象包含字段`provisioner`、`parameters`、and `reclaimPolicy`,一般该存储类别的 {{< glossary_tooltip text="永久卷" term_id="persistent-volume" >}} 需要动态分配时就要用到这些字段参数。通过 StorageClass 对象的名称,用户可以请求他们需要的特定存储类别。 - +StorageClass 可以映射到服务质量等级(QoS)、备份策略、或者管理员任意定义的策略。每个 StorageClass 对象包含的字段有 `provisioner`、`parameters` 和 `reclaimPolicy`。动态制备该存储类别的 {{< glossary_tooltip text="持久卷" term_id="persistent-volume" >}}时需要用到这些字段值。通过设置 StorageClass 对象的名称,用户可以请求特定存储类别。 \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/taint.md b/content/zh/docs/reference/glossary/taint.md index 5a01076312..30b4b9fb88 100644 --- a/content/zh/docs/reference/glossary/taint.md +++ b/content/zh/docs/reference/glossary/taint.md @@ -4,8 +4,7 @@ id: taint date: 2019-01-11 full_link: /docs/concepts/configuration/taint-and-toleration/ short_description: > - 一个核心对象,由三个必需的属性组成:键,值和效果。Taint(污点)会阻止在节点或节点组上调度 Pod。 - + 污点是一种一个核心对象,包含三个必需的属性:key、value 和 effect。污点会阻止在节点或节点组上调度 Pod。 aka: tags: - core-object @@ -31,8 +30,7 @@ tags: - 一个核心对象,由三个必需的属性组成:键、值和效果。污点会阻止在{{< glossary_tooltip text="节点" term_id="node" >}}或节点组上调度 {{< glossary_tooltip text="Pods" term_id="pod" >}}。 - +污点是一种一个核心对象,包含三个必需的属性:key、value 和 effect。污点会阻止在{{< glossary_tooltip text="节点" term_id="node" >}}或节点组上调度 {{< glossary_tooltip text="Pods" term_id="pod" >}}。 @@ -41,4 +39,4 @@ tags: Taints and {{< glossary_tooltip text="tolerations" term_id="toleration" >}} work together to ensure that pods are not scheduled onto inappropriate nodes. One or more taints are applied to a node. A node should only schedule a Pod with the matching tolerations for the configured taints. --> -污点和 {{< glossary_tooltip text="容忍度" term_id="toleration" >}} 一起工作,以确保不会将 Pod 调度到不适合的节点上。一个或多个污点应用于 {{< glossary_tooltip text="节点" term_id="node" >}}。节点应该仅能调度那些带着能与污点相匹配容忍度的 pod。 \ No newline at end of file +污点和 {{< glossary_tooltip text="容忍度" term_id="toleration" >}} 一起工作,以确保不会将 Pod 调度到不适合的节点上。同一 {< glossary_tooltip text="节点" term_id="node" >}}上可应用一个或多个污点。节点应该仅调度那些带着能与污点相匹配容忍度的 Pod。 \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/toleration.md b/content/zh/docs/reference/glossary/toleration.md index 4b622bae08..db16d20fa1 100644 --- a/content/zh/docs/reference/glossary/toleration.md +++ b/content/zh/docs/reference/glossary/toleration.md @@ -1,5 +1,5 @@ --- -title: 容忍度(toleration) +title: 容忍度(Toleration) id: toleration date: 2019-01-11 full_link: /zh/docs/concepts/scheduling-eviction/taint-and-toleration/ diff --git a/content/zh/docs/reference/glossary/upstream.md b/content/zh/docs/reference/glossary/upstream.md index 8b3e39a2c7..39d7207da8 100644 --- a/content/zh/docs/reference/glossary/upstream.md +++ b/content/zh/docs/reference/glossary/upstream.md @@ -1,5 +1,5 @@ --- -title: Upstream (disambiguation) +title: 上游(Uptream) id: upstream date: 2018-04-12 full_link: @@ -29,7 +29,7 @@ tags: -可以参考:核心 Kubernetes 仓库或作为当前仓库派生来源的来源仓库。 +可能指的是:核心 Kubernetes 仓库或作为当前仓库派生来源的仓库。 diff --git a/content/zh/docs/reference/glossary/volume.md b/content/zh/docs/reference/glossary/volume.md index 3889422df9..7ef39eee2f 100644 --- a/content/zh/docs/reference/glossary/volume.md +++ b/content/zh/docs/reference/glossary/volume.md @@ -32,7 +32,7 @@ tags: -包含可被 {{< glossary_tooltip text="pod" term_id="pod" >}} 中{{< glossary_tooltip text="容器" term_id="container" >}}访问的数据的目录。 +包含可被 {{< glossary_tooltip text="Pod" term_id="pod" >}} 中{{< glossary_tooltip text="容器" term_id="container" >}}访问的数据的目录。 @@ -40,8 +40,8 @@ tags: A Kubernetes volume lives as long as the Pod that encloses it. Consequently, a volume outlives any containers that run within the Pod, and data in the volume is preserved across container restarts. --> -每个 Kubernetes 卷在所处的{{< glossary_tooltip text="pod" term_id="pod" >}} 存在期间保持存在状态。 -因此,卷的生命期会超出 {{< glossary_tooltip text="pod" term_id="pod" >}} 中运行的{{< glossary_tooltip text="容器" term_id="container" >}}, +每个 Kubernetes 卷在所处的 {{< glossary_tooltip text="Pod" term_id="pod" >}} 存在期间保持存在状态。 +因此,卷的生命期会超出 {{< glossary_tooltip text="Pod" term_id="pod" >}} 中运行的{{< glossary_tooltip text="容器" term_id="container" >}}, 并且保证{{< glossary_tooltip text="容器" term_id="container" >}}重启之后仍保留数据。 +--allow-missing-template-keys     默认值:true + + + + + +如果设置为 true,则在模板中缺少字段或哈希表的键时忽略模板中的任何错误。 +仅适用于 golang 和 jsonpath 输出格式。 + + + + + + +-o, --experimental-output string     默认值:"text" + + + + + +输出格式:text|json|yaml|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file 其中之一 + + + --config string @@ -48,7 +79,10 @@ kubeadm 配置文件的路径。 -一组键值对(key=value),用于描述各种特征。选项有:
Auditing=true|false (ALPHA - 默认值=false)
CoreDNS=true|false (默认值=true)
DynamicKubeletConfig=true|false (BETA - 默认值=false) +一组键值对(key=value),用于描述各种特征。选项是: +
Auditing=true|false (ALPHA - 默认=false) +
CoreDNS=true|false (默认=true) +
DynamicKubeletConfig=true|false (BETA - 默认=false) @@ -64,6 +98,19 @@ list 操作的帮助命令 + + + +--image-repository string     默认值:"k8s.gcr.io" + + + + + +选择要从中拉取控制平面镜像的容器仓库 + + + -用于存储 kustomize 为静态 pod 清单所提供的补丁的路径。 +包含名为 "target[suffix][+patchtype].extension" 的文件的目录路径。 +例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 +"patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 +默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 +"suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_apiserver-etcd-client.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_apiserver-etcd-client.md index af818dcf7f..00444ac3f4 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_apiserver-etcd-client.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_apiserver-etcd-client.md @@ -65,27 +65,6 @@ kubeadm 配置文件的路径。 - ---csr-dir string - - - - -输出 CSR 和私钥的路径 - - - - - ---csr-only - - - - -创建 CSR 而不是生成证书 - - - -h, --help diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_apiserver-kubelet-client.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_apiserver-kubelet-client.md index 81f3965c94..49b2749c06 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_apiserver-kubelet-client.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_apiserver-kubelet-client.md @@ -69,30 +69,6 @@ kubeadm 配置文件路径。 - ---csr-dir string - - - - -输出 CSR 和私钥的路径 - - - - ---csr-only - - - - -创建 CSR 而不是生成证书 - - - -h, --help diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_apiserver.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_apiserver.md index d7a28e7ff4..1b096a7424 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_apiserver.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_apiserver.md @@ -111,30 +111,6 @@ Specify a stable IP address or DNS name for the control plane. - ---csr-dir string - - - - -输出 CSR 和私钥的路径 - - - - ---csr-only - - - - -创建 CSR 而不是生成证书 - - - -h, --help diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_etcd-healthcheck-client.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_etcd-healthcheck-client.md index 8d8e7f3c54..706d70614e 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_etcd-healthcheck-client.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_etcd-healthcheck-client.md @@ -69,27 +69,6 @@ kubeadm 配置文件的路径。 - ---csr-dir string - - - - -CSR 和私钥的输出路径 - - - - ---csr-only - - - -创建 CSR 而不是生成证书 - - - -h, --help diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_etcd-peer.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_etcd-peer.md index 271ca5ed6e..9933975b92 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_etcd-peer.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_etcd-peer.md @@ -71,26 +71,6 @@ kubeadm 配置文件的路径。 - ---csr-dir string - - - - -输出 CSR 和私钥的路径 - - - - ---csr-only - - - - -创建 CSR 而不是生成证书 - - - -h, --help diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_etcd-server.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_etcd-server.md index f8d9abb026..0f5fb4726e 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_etcd-server.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_etcd-server.md @@ -70,30 +70,6 @@ kubeadm 配置文件的路径。 - ---csr-dir string - - - - -输出 CSR 和私钥的路径 - - - - ---csr-only - - - - -创建 CSR 而不是生成证书 - - - -h, --help diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_front-proxy-client.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_front-proxy-client.md index 50651388ee..fb39d4a6cf 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_front-proxy-client.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_certs_front-proxy-client.md @@ -60,30 +60,6 @@ kubeadm 配置文件的路径。 - ---csr-dir string - - - - -输出 CSR 和私钥的路径 - - - - ---csr-only - - - - -创建 CSR 而不是生成证书 - - - -h, --help diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_control-plane_all.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_control-plane_all.md index c2f833b8b4..fe02e3d078 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_control-plane_all.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_control-plane_all.md @@ -141,27 +141,17 @@ A set of extra flags to pass to the Controller Manager or override default ones - --k, --experimental-kustomize string - - - - -用于存储 kustomize 为静态 pod 清单所提供的补丁的路径。 - - - --feature-gates string -一组用来描述各种功能特性的键值(key=value)对。选项是:
IPv6DualStack=true|false (ALPHA - default=false) +一组用来描述各种功能特性的键值(key=value)对。选项是: +
IPv6DualStack=true|false (ALPHA - 默认=false) +
PublicKeysECDSA=true|false (ALPHA - 默认=false) diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_control-plane_apiserver.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_control-plane_apiserver.md index e74a615053..e480efd952 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_control-plane_apiserver.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_control-plane_apiserver.md @@ -109,27 +109,17 @@ Specify a stable IP address or DNS name for the control plane. - --k, --experimental-kustomize string - - - - -用于存储 kustomize 为静态 pod 清单所提供的补丁的路径。 - - - --feature-gates string -一组键值对,用于描述各种特征的特征事项。选项是:
IPv6DualStack=true|false (ALPHA - default=false) +一组键值对,用于描述各种特征的特征事项。选项是: +
IPv6DualStack=true|false (ALPHA - 默认=false) +
PublicKeysECDSA=true|false (ALPHA - 默认=false) diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_control-plane_controller-manager.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_control-plane_controller-manager.md index f8701e8f43..f13f966676 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_control-plane_controller-manager.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_control-plane_controller-manager.md @@ -69,18 +69,6 @@ A set of extra flags to pass to the Controller Manager or override default ones - --k, --experimental-kustomize string - - - - -用于存储 kustomize 为静态 pod 清单所提供的补丁的路径。 - - - -h, --help diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_control-plane_scheduler.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_control-plane_scheduler.md index 159b5b8258..fea8bf741a 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_control-plane_scheduler.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_control-plane_scheduler.md @@ -57,18 +57,6 @@ kubeadm 配置文件的路径。 - --k, --experimental-kustomize string - - - - -用于存储 kustomize 为静态 pod 清单所提供的补丁的路径。 - - - -h, --help diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_etcd_local.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_etcd_local.md index 05e9534c48..0a09b80c86 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_etcd_local.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init_phase_etcd_local.md @@ -75,12 +75,18 @@ kubeadm 配置文件的路径。 --k, --experimental-kustomize string +--experimental-patches string - -用于存储 kustomize 为静态 pod 清单所提供的补丁的路径。 + +包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 +例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 +"patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 +默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 +"suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_join.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_join.md index fe166d7196..e113203a1a 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_join.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_join.md @@ -7,8 +7,8 @@ 当节点加入 kubeadm 初始化的集群时,我们需要建立双向信任。 @@ -21,7 +21,7 @@ provide a file - a subset of the standard kubeconfig file. This file can be a local file or downloaded via an HTTPS URL. The forms are kubeadm join --discovery-token abcdef.1234567890abcdef 1.2.3.4:6443, kubeadm join --discovery-file path/to/file.conf, or kubeadm join ---discovery-file `https://url/file.conf`. Only one form can be used. If +--discovery-file https://url/file.conf. Only one form can be used. If the discovery information is loaded from a URL, HTTPS must be used. Also, in that case the host installed CA bundle is used to verify the connection. @@ -39,7 +39,9 @@ the connection. -用于存储 kustomize 为静态 pod 清单所提供的补丁的路径。 +包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 +例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 +"patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 +默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 +"suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_join_phase_control-plane-join_etcd.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_join_phase_control-plane-join_etcd.md index 6f04c064a1..196f9f6840 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_join_phase_control-plane-join_etcd.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_join_phase_control-plane-join_etcd.md @@ -65,14 +65,18 @@ Create a new control plane instance on this node --k, --experimental-kustomize string +--experimental-patches string - -用于存储 kustomize 为静态 pod 清单所提供的补丁的路径。 +包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 +例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 +"patchtype" 可以是"strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 +默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 +"suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_join_phase_control-plane-prepare_all.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_join_phase_control-plane-prepare_all.md index bc44492c4a..7a75089abb 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_join_phase_control-plane-prepare_all.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_join_phase_control-plane-prepare_all.md @@ -142,14 +142,18 @@ For token-based discovery, allow joining without --discovery-token-ca-cert-hash --k, --experimental-kustomize string +--experimental-patches string - -用于存储 kustomize 为静态 pod 清单所提供的补丁的路径。 +包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 +例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 +"patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 +默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 +"suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_join_phase_control-plane-prepare_control-plane.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_join_phase_control-plane-prepare_control-plane.md index 21f9a8c627..7f3da71e80 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_join_phase_control-plane-prepare_control-plane.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_join_phase_control-plane-prepare_control-plane.md @@ -82,14 +82,18 @@ Create a new control plane instance on this node --k, --experimental-kustomize string +--experimental-patches string - -用于存储 kustomize 为静态 pod 清单所提供的补丁的路径。 +包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 +例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 +"patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 +默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 +"suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_token_list.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_token_list.md index 69806e77db..de796ebe3a 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_token_list.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_token_list.md @@ -27,6 +27,37 @@ kubeadm token list [flags] + + + +--allow-missing-template-keys     默认值:true + + + + + +如果设置为 true,则在模板中缺少字段或哈希表的键时忽略模板中的任何错误。 +仅适用于 golang 和 jsonpath 输出格式。 + + + + + + +-o, --experimental-output string     默认值:"text" + + + + + +输出格式:text|json|yaml|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file 其中之一 + + + -h, --help diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_upgrade_apply.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_upgrade_apply.md index ffef1c5e70..e31467b0c5 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_upgrade_apply.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_upgrade_apply.md @@ -106,14 +106,18 @@ Perform the upgrade of etcd. --k, --experimental-kustomize string +--experimental-patches string - -用于存储 kustomize 为静态 pod 清单所提供的补丁的路径。 +包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 +例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 +"patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 +默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 +"suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 @@ -125,7 +129,9 @@ The path where kustomize patches for static pod manifests are stored. -一组键值对,用于描述各种功能。选项包括:
IPv6DualStack=true|false (ALPHA - 默认值=false) +一组键值对,用于描述各种功能。选项包括: +
IPv6DualStack=true|false (ALPHA - 默认=false) +
PublicKeysECDSA=true|false (ALPHA - 默认=false) @@ -165,23 +171,6 @@ A list of checks whose errors will be shown as warnings. Example: 'IsPrivilegedU - - - ---image-pull-timeout duration     默认值:15m0s - - - - - -等待控制面板 pod 下载的最长时间。 - - - ``` +preflight 执行节点升级前检查 control-plane 如果存在的话,升级部署在该节点上的管理面实例 kubelet-config 更新该节点上的 kubelet 配置 ``` @@ -87,14 +89,18 @@ Perform the upgrade of etcd. --k, --experimental-kustomize string +--experimental-patches string - -用于存储 kustomize 为静态 pod 清单所提供的补丁的路径。 +包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 +例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 +"patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 +默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 +"suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 diff --git a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_upgrade_node_phase_control-plane.md b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_upgrade_node_phase_control-plane.md index 133f6451c2..4235ef59b5 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_upgrade_node_phase_control-plane.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_upgrade_node_phase_control-plane.md @@ -62,10 +62,19 @@ kubeadm upgrade node phase control-plane [flags] --> --k, --experimental-kustomize string +--experimental-patches string -用于存储 kustomize 为静态 pod 清单所提供的补丁的路径。 + + +包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 +例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 +"patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 +默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 +"suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 + +Kubernetes 证书的操作集合。 + +{{< tabs name="tab-certs" >}} +{{< tab name="overview" include="generated/kubeadm_alpha_certs.md" />}} +{{< /tabs >}} + + ## kubeadm alpha certs renew {#cmd-certs-renew} -使用 `all` 子命令来更新所有 Kubernetes 证书或有选择性地更新它们。有关证书到期和续订的更多详细信息,请参见[证书管理文档](/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/)。 +使用 `all` 子命令来更新所有 Kubernetes 证书或有选择性地更新它们。 +有关证书到期和续订的更多详细信息, +请参见[证书管理文档](/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/)。 {{< tabs name="tab-certs-renew" >}} {{< tab name="renew" include="generated/kubeadm_alpha_certs_renew.md" />}} @@ -53,19 +65,34 @@ This command can be used to generate a new control-plane certificate key. The key can be passed as `--certificate-key` to `kubeadm init` and `kubeadm join` to enable the automatic copy of certificates when joining additional control-plane nodes. --> -该命令可用于生成新的控制平面证书密钥。密钥可以作为 `--certificate-key` 参数传递给 `kubeadm init` 和 `kubeadm join` 操作,以在加入其他控制平面节点时启用证书的自动复制。 +该命令可用于生成新的控制平面证书密钥。 +密钥可以作为 `--certificate-key` 参数传递给 `kubeadm init` 和 `kubeadm join` 操作, +以在加入其他控制平面节点时启用证书的自动复制。 {{< tabs name="tab-certs-certificate-key" >}} {{< tab name="certificate-key" include="generated/kubeadm_alpha_certs_certificate-key.md" />}} {{< /tabs >}} +## kubeadm alpha certs generate-csr {#cmd-certs-generate-csr} + + +该命令可用于生成证书签名请求(CSR),CSR 可以将其提交给证书颁发机构(CA)进行签名。 + +{{< tabs name="tab-certs-generate-csr" >}} +{{< tab name="certificate-generate-csr" include="generated/kubeadm_alpha_certs_generate-csr.md" />}} +{{< /tabs >}} + ## kubeadm alpha certs check-expiration {#cmd-certs-check-expiration} -此命令检查 kubeadm 管理的本地 PKI 中证书的到期时间。有关证书到期和续订的更多详细信息,请参见[证书管理文档](/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/)。 +此命令检查 kubeadm 管理的本地 PKI 中证书的到期时间。 +有关证书到期和续订的更多详细信息,请参见[证书管理文档](/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/)。 {{< tabs name="tab-certs-check-expiration" >}} {{< tab name="check-expiration" include="generated/kubeadm_alpha_certs_check-expiration.md" />}} @@ -101,7 +128,7 @@ Use the following command to enable the DynamicKubeletConfiguration feature. -子命令 `pivot` 可用于将 Pod 托管的静态控制平面转换为自托管的控制平面。有关 `pivot` 更多信息,请参见[文档](/docs/setup/production-environment/tools/kubeadm/self-hosting/)。 +子命令 `pivot` 可用于将 Pod 托管的静态控制平面转换为自托管的控制平面。有关 `pivot` 更多信息,请参见[文档](zh/docs/setup/production-environment/tools/kubeadm/self-hosting/)。 -* [kubeadm init](/docs/reference/setup-tools/kubeadm/kubeadm-init/) 引导 Kubernetes 控制平面节点 -* [kubeadm join](/docs/reference/setup-tools/kubeadm/kubeadm-join/) 将节点连接到集群 -* [kubeadm reset](/docs/reference/setup-tools/kubeadm/kubeadm-reset/) 会还原 `kubeadm init` 或 `kubeadm join` 操作对主机所做的任何更改。 +* [kubeadm init](/zh/docs/reference/setup-tools/kubeadm/kubeadm-init/) 引导 Kubernetes 控制平面节点 +* [kubeadm join](/zh/docs/reference/setup-tools/kubeadm/kubeadm-join/) 将节点连接到集群 +* [kubeadm reset](/zh/docs/reference/setup-tools/kubeadm/kubeadm-reset/) 会还原 `kubeadm init` 或 `kubeadm join` 操作对主机所做的任何更改。 diff --git a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-config.md b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-config.md index d36201165e..6cb9305b6c 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-config.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-config.md @@ -6,32 +6,39 @@ weight: 50 - -从 v1.8.0 开始,kubeadm 将集群的配置上传到名为 kube-system 的 ConfigMap 对象中,对象位于 kube-system 命名空间内。并在以后的升级中读取这个 ConfigMap 配置对象。 -这样可以保证系统组件的正确配置,提供无缝的用户体验。 +在 `kubeadm init` 执行期间,kubeadm 将 `ClusterConfiguration` 对象上传到你的集群的 `kube-system` 名字空间下 +名为 `kubeadm-config` 的 ConfigMap 对象中。 +然后在 `kubeadm join`、`kubeadm reset` 和 `kubeadm upgrade` 执行期间读取此配置。 +要查看此 ConfigMap,请调用 `kubeadm config view`。 - -您可以执行 kubeadm config view 来查看 ConfigMap。如果使用 kubeadm v1.7.x 或更低版本来初始化群集,必须先使用 kubeadm config upload 创建 ConfigMap,然后才能使用 kubeadm upgrade。 +你可以使用 `kubeadm config print` 命令打印默认配置, +并使用 `kubeadm config migrate` 命令将旧版本的配置转化成新版本。 +`kubeadm config images list` 和 `kubeadm config images pull` +命令可以用来列出并拉取 kubeadm 所需的镜像。 +For more information navigate to +[Using kubeadm init with a configuration file](/docs/reference/setup-tools/kubeadm/kubeadm-init/#config-file) +or [Using kubeadm join with a configuration file](/docs/reference/setup-tools/kubeadm/kubeadm-join/#config-file). -在 Kubernetes v1.11.0 中,添加了一些新命令。你可以使用 kubeadm config print-default -打印默认配置,可以用 kubeadm config migrate 来将旧的配置文件转换到较新的版本,还可以使用 kubeadm config images list 和 kubeadm config images pull -列出并拉取 kubeadm 所需的镜像。 +In Kubernetes v1.13.0 and later to list/pull kube-dns images instead of the CoreDNS image +the `--config` method described [here](/docs/reference/setup-tools/kubeadm/kubeadm-init-phase/#cmd-phase-addon) +has to be used. +--> +更多信息请浏览[使用带配置文件的 kubeadm init](/zh/docs/reference/setup-tools/kubeadm/kubeadm-init/#config-file) +或[使用带配置文件的 kubeadm join](/zh/docs/reference/setup-tools/kubeadm/kubeadm-join/#config-file). + +在 Kubernetes v1.13.0 及更高版本中,要列出/拉取 kube-dns 镜像而不是 CoreDNS 镜像, +必须使用[这里](/zh/docs/reference/setup-tools/kubeadm/kubeadm-init-phase/#cmd-phase-addon)所描述的 `--config` 方法。 @@ -65,6 +72,6 @@ to list and pull the images that kubeadm requires. * [kubeadm upgrade](/docs/reference/setup-tools/kubeadm/kubeadm-upgrade/) to upgrade a Kubernetes cluster to a newer version --> -* [kubeadm upgrade](/docs/reference/setup-tools/kubeadm/kubeadm-upgrade/) 将 Kubernetes 集群升级到更新版本 [kubeadm upgrade] +* [kubeadm upgrade](/zh/docs/reference/setup-tools/kubeadm/kubeadm-upgrade/) 将 Kubernetes 集群升级到更新版本 [kubeadm upgrade] diff --git a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-init-phase.md b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-init-phase.md index 70f058f594..69cbc59b4c 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-init-phase.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-init-phase.md @@ -23,7 +23,7 @@ if you wish to apply customization. `kubeadm init phase` is consistent with the [kubeadm init workflow](/docs/reference/setup-tools/kubeadm/kubeadm-init/#init-workflow), and behind the scene both use the same code. --> -`kubeadm init phase` 与 [kubeadm init 工作流程](/docs/reference/setup-tools/kubeadm/kubeadm-init/#init-workflow)一致,后台都使用相同的代码。 +`kubeadm init phase` 与 [kubeadm init 工作流](/zh/docs/reference/setup-tools/kubeadm/kubeadm-init/#init-workflow)一致,后台都使用相同的代码。 -可以使用此命令将 kubeadm 配置文件上传到集群。或者,使用 [kubeadm config](/docs/reference/setup-tools/kubeadm/kubeadm-config/) 方式。 +可以使用此命令将 kubeadm 配置文件上传到集群。或者使用 [kubeadm config](/zh/docs/reference/setup-tools/kubeadm/kubeadm-config/)。 {{< tabs name="upload-config" >}} {{< tab name="upload-config" include="generated/kubeadm_init_phase_upload-config.md" />}} @@ -198,6 +198,21 @@ Use the following phase to configure bootstrap tokens. {{< tab name="bootstrap-token" include="generated/kubeadm_init_phase_bootstrap-token.md" />}} {{< /tabs >}} +## kubeadm init phase kubelet-finialize {#cmd-phase-kubelet-finalize-all} + + +使用以下阶段在 TLS 引导后更新与 kubelet 相关的设置。 +你可以使用 `all` 子命令来运行所有 `kubelet-finalize` 阶段。 + +{{< tabs name="tab-kubelet-finalize" >}} +{{< tab name="kublet-finalize" include="generated/kubeadm_init_phase_kubelet-finalize.md" />}} +{{< tab name="kublet-finalize-all" include="generated/kubeadm_init_phase_kubelet-finalize_all.md" />}} +{{< tab name="kublet-finalize-cert-rotation" include="generated/kubeadm_init_phase_kubelet-finalize_experimental-cert-rotation.md" />}} +{{< /tabs >}} -* [kubeadm init](/docs/reference/setup-tools/kubeadm/kubeadm-init/) 引导 Kubernetes 控制平面节点 -* [kubeadm join](/docs/reference/setup-tools/kubeadm/kubeadm-join/) 将节点连接到集群 -* [kubeadm reset](/docs/reference/setup-tools/kubeadm/kubeadm-reset/) 恢复通过 `kubeadm init` 或 `kubeadm join` 操作对主机所做的任何更改 -* [kubeadm alpha](/docs/reference/setup-tools/kubeadm/kubeadm-alpha/) 尝试实验性功能 +* [kubeadm init](/zh/docs/reference/setup-tools/kubeadm/kubeadm-init/) 引导 Kubernetes 控制平面节点 +* [kubeadm join](/zh/docs/reference/setup-tools/kubeadm/kubeadm-join/) 将节点连接到集群 +* [kubeadm reset](/zh/docs/reference/setup-tools/kubeadm/kubeadm-reset/) 恢复通过 `kubeadm init` 或 `kubeadm join` 操作对主机所做的任何更改 +* [kubeadm alpha](/zh/docs/reference/setup-tools/kubeadm/kubeadm-alpha/) 尝试实验性功能 diff --git a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-init.md b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-init.md index 50042ea558..9d0e64bec5 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-init.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-init.md @@ -40,28 +40,25 @@ following steps: 1. Runs a series of pre-flight checks to validate the system state before making changes. Some checks only trigger warnings, others are considered errors and will exit kubeadm until the problem is corrected or the - user specifies `-ignore-preflight-errors=`. + user specifies `--ignore-preflight-errors=`. --> 1. 在做出变更前运行一系列的预检项来验证系统状态。一些检查项目仅仅触发警告, 其它的则会被视为错误并且退出 kubeadm,除非问题得到解决或者用户指定了 `--ignore-preflight-errors=` 参数。 -2. 生成一个自签名的 CA 证书 (或者使用现有的证书,如果提供的话) 来为集群中的每一个组件建立身份标识。 - 如果用户已经通过 `--cert-dir` 配置的证书目录(默认为 `/etc/kubernetes/pki`)提供了他们自己的 - CA 证书以及/或者密钥,那么将会跳过这个步骤,正如文档[使用自定义证书](#custom-certificates)所述。 - 如果指定了 `--apiserver-cert-extra-sans` 参数, APIServer 的证书将会有额外的 SAN 条目, - 如果必要的话,将会被转为小写。 +2. 生成一个自签名的 CA 证书来为集群中的每一个组件建立身份标识。 + 用户可以通过将其放入 `--cert-dir` 配置的证书目录中(默认为 `/etc/kubernetes/pki`) + 来提供他们自己的 CA 证书以及/或者密钥。 + APIServer 证书将为任何 `--apiserver-cert-extra-sans` 参数值提供附加的 SAN 条目,必要时将其小写。 4. 为 API 服务器、控制器管理器和调度器生成静态 Pod 的清单文件。假使没有提供一个外部的 etcd 服务的话,也会为 etcd 生成一份额外的静态 Pod 清单文件。 - -静态 Pod 的清单文件被写入到 `/etc/kubernetes/manifests` 目录; kubelet 会监视这个目录以便在系统启动的时候创建 Pod。 - -一旦控制平面的 Pod 都运行起来, `kubeadm init` 的工作流程就继续往下执行。 + 一旦控制平面的 Pod 都运行起来, `kubeadm init` 的工作流程就继续往下执行。 -1. 对控制平面节点应用 labels 和 taints 标记以便不会在它上面运行其它的工作负载。 +5. 对控制平面节点应用标签和污点标记以便不会在它上面运行其它的工作负载。 -2. 生成令牌以便其它节点以后可以使用这个令牌向控制平面节点注册它们自己。 - (可选),用户可以通过 `--token` 提供一个令牌,正如文档 - [kubeadm token](/zh/docs/reference/setup-tools/kubeadm/kubeadm-token/) 所述。 +6. 生成令牌,将来其他节点可使用该令牌向控制平面注册自己。 + 如文档 [kubeadm token](/zh/docs/reference/setup-tools/kubeadm/kubeadm-token/) 所述, + 用户可以选择通过 `--token` 提供令牌。 -3. 为了使得节点能够遵照[启动引导令牌](/zh/docs/reference/access-authn-authz/bootstrap-tokens/) +7. 为了使得节点能够遵照[启动引导令牌](/zh/docs/reference/access-authn-authz/bootstrap-tokens/) 和 [TLS 启动引导](/zh/docs/reference/command-line-tools-reference/kubelet-tls-bootstrapping/) 这两份文档中描述的机制加入到集群中,kubeadm 会执行所有的必要配置: - 创建一份 ConfigMap 提供添加集群节点所需的信息,并为该 ConfigMap 设置相关的 RBAC 访问规则。 + - 使得 Bootstrap Tokens 可以访问 CSR 签名 API。 - - 对新的 CSR 请求配置为自动签发。 - -查阅[kubeadm join](/zh/docs/reference/setup-tools/kubeadm/kubeadm-join/)文档以获取更多信息。 + - 配置自动签发新的 CSR 请求。 + 获取更多信息,请查看[kubeadm join](/zh/docs/reference/setup-tools/kubeadm/kubeadm-join/)。 + -1. 通过 API 服务器安装一个 DNS 服务器 (CoreDNS) 和 kube-proxy 附加组件。 - 在 1.11 版本以及更新版本的 Kubernetes 中 CoreDNS 是默认的 DNS 服务器。 + To install kube-dns instead of CoreDNS, the DNS addon has to be configured in the kubeadm `ClusterConfiguration`. + For more information about the configuration see the section `Using kubeadm init with a configuration file` below. + Please note that although the DNS server is deployed, it will not be scheduled until CNI is installed. + + {{< warning >}} + kube-dns usage with kubeadm is deprecated as of v1.18 and will be removed in a future release. + {{< /warning >}} +--> +8. 通过 API 服务器安装一个 DNS 服务器 (CoreDNS) 和 kube-proxy 附加组件。 + 在 Kubernetes 版本 1.11 和更高版本中,CoreDNS 是默认的 DNS 服务器。 要安装 kube-dns 而不是 CoreDNS,必须在 kubeadm `ClusterConfiguration` 中配置 DNS 插件。 有关配置的更多信息,请参见下面的"带配置文件使用 kubeadm init" 一节。 请注意,尽管已部署 DNS 服务器,但直到安装 CNI 时才调度它。 + {{< warning >}} + 从 v1.18 开始,在 kubeadm 中使用 kube-dns 已废弃,并将在以后的版本中将其删除。 + {{< /warning >}} + @@ -209,28 +229,35 @@ The config file is still considered beta and may change in future versions. 通过一份配置文件而不是使用命令行参数来配置 `kubeadm init` 命令是可能的, -但是一些更加高级的功能只能够通过配置文件设定。这份配置文件通过 `--config` 选项参数指定。 +但是一些更加高级的功能只能够通过配置文件设定。 +这份配置文件通过 `--config` 选项参数指定的, +它必须包含 `ClusterConfiguration` 结构,并可能包含更多由 `---\n` 分隔的结构。 +在某些情况下,可能不允许将 `--config` 与其他标志混合使用。 可以使用 [kubeadm config print](/zh/docs/reference/setup-tools/kubeadm/kubeadm-config/)命令打印出默认配置。 +如果你的配置没有使用最新版本, **推荐**使用 [kubeadm config migrate](/zh/docs/reference/setup-tools/kubeadm/kubeadm-config/) -命令将旧的 `v1beta1` 版本的配置迁移到 `v1beta2` 版本。 +命令进行迁移。 -获取 `v1beta2` 版本配置中每个字段的细节说明,查看我们的 -[API 参考页面](https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2)。 +有关配置的字段和用法的更多信息, +你可以导航到我们的 API 参考页面并从 +[列表](https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm#pkg-subdirectories)中选择一个版本。 有关向控制平面组件传递命令行参数的说明请查看: -[控制平面命令行参数](//zh/docs/setup/production-environment/tools/kubeadm/control-plane-flags/) +[控制平面命令行参数](/zh/docs/setup/production-environment/tools/kubeadm/control-plane-flags/) 以下阶段命令可用于证书到期后重新上传证书: -``` -kubeadm init phase upload-certs --upload-certs --certificate-key=SOME_VALUE +```shell +kubeadm init phase upload-certs --upload-certs --certificate-key=SOME_VALUE --config=SOME_YAML_FILE ``` 以下命令可用于按需生成新密钥: -``` +```shell kubeadm alpha certs certificate-key ``` - -### 使用自定义的证书 {#custom-certificates} + +### 使用 kubeadm 管理证书 - -默认情况下, kubeadm 会生成运行一个集群所需的全部证书。 -你可以通过提供你自己的证书来改变这个行为策略。 - - -如果要这样做, 你必须将证书文件放置在通过 `--cert-dir` 命令行参数或者配置文件里的 -`CertificatesDir` 配置项指明的目录中。默认的值是 `/etc/kubernetes/pki`。 - - -如果在运行 `kubeadm init` 之前存在给定的证书和私钥对,则 kubeadm 将不会重写它们。 -例如,这意味着你可以将现有的 CA 复制到 `/etc/kubernetes/pki/ca.crt` 和 -`/etc/kubernetes/pki/ca.key` 中,而 kubeadm 将使用此 CA 对其余证书进行签名。 - - -#### 外部 CA 模式 {#external-ca-mode} - - -如果只提供了 `ca.crt` 文件但是没有提供 `ca.key` 文件也是可以的 (这只对 CA 根证书可用,其它证书不可用)。 -如果所有的其它证书和 kubeconfig 文件已就绪, kubeadm 检测到满足以上条件就会激活 "外部 CA" 模式。 -kubeadm 将会在没有 CA 密钥文件的情况下继续执行。 - - -否则, kubeadm 将独立运行 controller-manager,附加一个 `--controllers=csrsigner` 的参数, -并且指明 CA 证书和密钥。 +有关使用 kubeadm 进行证书管理的详细信息,请参阅[使用 kubeadm 进行证书管理](/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/)。 +该文档包括有关使用外部 CA,自定义证书和证书更新的信息。 1. 生成一个令牌。这个令牌必须具有以下格式:`< 6 个字符的字符串>.< 16 个字符的字符串>`。 更加正式的说法是,它必须符合以下正则表达式:`[a-z0-9]{6}\.[a-z0-9]{16}`。 + kubeadm 可以为你生成一个令牌: ```shell @@ -536,7 +523,7 @@ provisioned). For details, see the [kubeadm join](/docs/reference/setup-tools/ku * [kubeadm upgrade](/docs/reference/setup-tools/kubeadm/kubeadm-upgrade/) to upgrade a Kubernetes cluster to a newer version * [kubeadm reset](/docs/reference/setup-tools/kubeadm/kubeadm-reset/) to revert any changes made to this host by `kubeadm init` or `kubeadm join` --> -* 进一步阅读了解[kubeadm init 阶段](/zh/docs/reference/setup-tools/kubeadm/kubeadm-init-phase/) +* 进一步阅读了解[kubeadm init phase](/zh/docs/reference/setup-tools/kubeadm/kubeadm-init-phase/) * [kubeadm join](/zh/docs/reference/setup-tools/kubeadm/kubeadm-join/)启动一个 Kubernetes 工作节点并且将其加入到集群 * [kubeadm upgrade](/zh/docs/reference/setup-tools/kubeadm/kubeadm-upgrade/)将 Kubernetes 集群升级到新版本 * [kubeadm reset](/zh/docs/reference/setup-tools/kubeadm/kubeadm-reset/)使用 `kubeadm init` 或 `kubeadm join` 来恢复对节点的变更 diff --git a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-join-phase.md b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-join-phase.md index 17e604629a..7463121ced 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-join-phase.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-join-phase.md @@ -14,7 +14,7 @@ weight: 90 Hence, you can let kubeadm do some of the work and you can fill in the gaps if you wish to apply customization. --> -`kubeadm join phase` 使您能够调用 `join` 过程的基本原子步骤。因此,如果希望执行自定义操作,可以让 kubeadm 做一些工作,然后由用户来补足剩余操作。 +`kubeadm join phase` 使你能够调用 `join` 过程的基本原子步骤。因此,如果希望执行自定义操作,可以让 kubeadm 做一些工作,然后由用户来补足剩余操作。 -使用此阶段,您可以准备一个作为控制平面的节点。 +使用此阶段,你可以准备一个作为控制平面的节点。 {{< tabs name="tab-control-plane-prepare" >}} {{< tab name="control-plane-prepare" include="generated/kubeadm_join_phase_control-plane-prepare.md" />}} @@ -60,7 +60,7 @@ Using this phase you can prepare a node for serving a control-plane. -使用此阶段,您可以配置 kubelet 设置、证书和(重新)启动 kubelet。 +使用此阶段,你可以配置 kubelet 设置、证书和(重新)启动 kubelet。 {{< tabs name="tab-kubelet-start" >}} {{< tab name="kubelet-start" include="generated/kubeadm_join_phase_kubelet-start.md" />}} @@ -71,7 +71,7 @@ Using this phase you can write the kubelet settings, certificates and (re)start -使用此阶段,您可以将节点作为控制平面实例加入。 +使用此阶段,你可以将节点作为控制平面实例加入。 {{< tabs name="tab-control-plane-join" >}} {{< tab name="control-plane-join" include="generated/kubeadm_join_phase_control-plane-join.md" />}} diff --git a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-join.md b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-join.md index 00e024ecdd..edb4e56369 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-join.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-join.md @@ -18,14 +18,14 @@ This command initializes a Kubernetes worker node and joins it to the cluster. {{< include "generated/kubeadm_join.md" >}} +### join 工作流 {#join-workflow} + - -### 加入流程 - `kubeadm join` 初始化 Kubernetes 工作节点并将其加入集群。 该操作过程包含下面几个步骤: @@ -39,85 +39,160 @@ This action consists of the following steps: 默认情况下,它使用引导令牌和 CA 密钥哈希来验证数据的真实性。 也可以通过文件或 URL 直接发现根 CA。 - - -1. 如果调用 kubeadm 时启用了 `--feature-gates=DynamicKubeletConfig`,它首先从主机上检索 kubelet 初始化配置并将其写入磁盘。 - 当 kubelet 启动时,kubeadm 更新节点的 `Node.spec.configSource` 属性。 - 进一步了解动态 kubelet 配置 请参考 [使用配置文件设置 Kubelet 参数](/docs/tasks/administer-cluster/kubelet-config-file/) 和 [重新配置集群中节点的 Kubelet](/docs/tasks/administer-cluster/reconfigure-kubelet/)。 - - + 1. 一旦知道集群信息,kubelet 就可以开始 TLS 引导过程。 + TLS 引导程序使用共享令牌与 Kubernetes API 服务器进行临时的身份验证,以提交证书签名请求 (CSR); 默认情况下,控制平面自动对该 CSR 请求进行签名。 - - + 1. 最后,kubeadm 配置本地 kubelet 使用分配给节点的确定标识连接到 API 服务器。 + +对于控制平面节点,执行额外的步骤: + +1. 从集群下载控制平面节点之间共享的证书(如果用户明确要求)。 + +1. 生成控制平面组件清单、证书和 kubeconfig。 + +1. 添加新的本地 etcd 成员。 + +1. 将此节点添加到 kubeadm 集群的 ClusterStatus。 + + +### 使用 kubeadm 的 join phase 命令 {#join-phases} + + +Kubeadm 允许你使用 `kubeadm join phase` 分阶段将节点加入集群。 + + +要查看阶段和子阶段的有序列表,可以调用 `kubeadm join --help`。 +该列表将位于帮助屏幕的顶部,每个阶段旁边都有一个描述。 +注意,通过调用 `kubeadm join`,所有阶段和子阶段都将按照此确切顺序执行。 + + +有些阶段具有唯一的标志,因此,如果要查看可用选项列表,请添加 `--help`,例如: + +```shell +kubeadm join phase kubelet-start --help +``` + + +类似于 [kubeadm init phase](/zh/docs/reference/setup-tools/kubeadm/kubeadm-init/#init-phases)命令, +`kubeadm join phase` 允许你使用 `--skip-phases` 标志跳过阶段列表。 + +例如: + +```shell +sudo kubeadm join --skip-phases=preflight --config=config.yaml +``` + +### 发现要信任的集群 CA + - -### 发现要信任的集群 CA - Kubeadm 的发现有几个选项,每个选项都有安全性上的优缺点。 -适合您的环境的正确方法取决于节点是如何准备的以及您对网络的安全性期望和节点的生命周期特点。 +适合你的环境的正确方法取决于节点是如何准备的以及你对网络的安全性期望和节点的生命周期特点。 +#### 带 CA 锁定模式的基于令牌的发现 + - -#### 带 CA 锁定模式的基于令牌的发现 - 这是 Kubernetes 1.8 及以上版本中的默认模式。 -在这种模式下,kubeadm 下载集群配置(包括根CA)并使用令牌验证它,并且会验证根 CA 的公钥与所提供的哈希是否匹配,以及 API 服务器证书在根 CA 下是否有效。 +在这种模式下,kubeadm 下载集群配置(包括根CA)并使用令牌验证它, +并且会验证根 CA 的公钥与所提供的哈希是否匹配, +以及 API 服务器证书在根 CA 下是否有效。 - CA 键哈希格式为 `sha256:`。 -默认情况下,在 `kubeadm init` 最后打印的 `kubeadm join` 命令或者 `kubeadm token create --print-join-command` 的输出信息中返回哈希值。 -它使用标准格式 (请参考 [RFC7469](https://tools.ietf.org/html/rfc7469#section-2.4)) 并且也能通过第三方工具或者驱动系统进行计算。 +默认情况下,在 `kubeadm init` 最后打印的 `kubeadm join` 命令 +或者 `kubeadm token create --print-join-command` 的输出信息中返回哈希值。 +它使用标准格式 (请参考 [RFC7469](https://tools.ietf.org/html/rfc7469#section-2.4)) +并且也能通过第三方工具或者制备系统进行计算。 例如,使用 OpenSSL CLI: -```bash +```shell openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //' ``` + - **`kubeadm join` 命令示例** -```bash + +对于工作节点: + +```shell kubeadm join --discovery-token abcdef.1234567890abcdef --discovery-token-ca-cert-hash sha256:1234..cdef 1.2.3.4:6443 ``` + +对于控制面节点: + +```shell +kubeadm join --discovery-token abcdef.1234567890abcdef --discovery-token-ca-cert-hash sha256:1234..cdef --control-plane 1.2.3.4:6443 +``` + + +如果使用 `--upload-certs` 调用 `kubeadm init` 命令, +你也可以对控制平面节点调用带 `--certificate-key` 参数的 `join` 命令, +将证书复制到该节点。 + +#### 无 CA 锁定模式的基于令牌的发现 + - -#### 无 CA 锁定模式的基于令牌的发现 - _这是 Kubernetes 1.7 和早期版本_中的默认设置;使用时要注意一些重要的补充说明。 此模式仅依赖于对称令牌来签名(HMAC-SHA256)发现信息,这些发现信息为主节点建立信任根。 -在 Kubernetes 1.8 及以上版本中仍然可以使用 `--discovery-token-unsafe-skip-ca-verification` 参数,但是如果可能的话,您应该考虑使用一种其他模式。 +在 Kubernetes 1.8 及以上版本中仍然可以使用 `--discovery-token-unsafe-skip-ca-verification` 参数,但是如果可能的话,你应该考虑使用一种其他模式。 **`kubeadm join` 命令示例** -``` -kubeadm join --token abcdef.1234567890abcdef --discovery-token-unsafe-skip-ca-verification 1.2.3.4:6443` +```shell +kubeadm join --token abcdef.1234567890abcdef --discovery-token-unsafe-skip-ca-verification 1.2.3.4:6443 ``` - #### 基于 HTTPS 或文件发现 + 这种方案提供了一种带外方式在主节点和引导节点之间建立信任根。 如果使用 kubeadm 构建自动配置,请考虑使用此模式。 +发现文件的格式为常规的 Kubernetes [kubeconfig](/zh/docs/tasks/access-application-cluster/configure-access-multiple-clusters/) 文件。 + +如果发现文件不包含凭据,则将使用 TLS 发现令牌。 - **`kubeadm join` 命令示例:** - `kubeadm join --discovery-file path/to/file.conf` (本地文件) @@ -245,82 +326,116 @@ using kubeadm. **劣势:** - - 要求您有某种方法将发现信息从主节点传送到引导节点。 + - 要求你有某种方法将发现信息从主节点传送到引导节点。 例如,这可以通过云提供商或驱动工具实现。 该文件中的信息不是加密的,而是需要 HTTPS 或等效文件来保证其完整性。 +### 确保你的安装更加安全 {#securing-more} + - -### 确保您的安装更加安全 {#securing-more} - Kubeadm 的默认值可能不适用于所有人。 本节说明如何以牺牲可用性为代价来加强 kubeadm 安装。 +#### 关闭节点客户端证书的自动批准 + - -#### 关闭节点客户端证书的自动批准 - 默认情况下,Kubernetes 启用了 CSR 自动批准器,如果在身份验证时使用 Bootstrap Token,它会批准对 kubelet 的任何客户端证书的请求。 如果不希望集群自动批准kubelet客户端证书,可以通过执行以下命令关闭它: -```console -$ kubectl delete clusterrole kubeadm:node-autoapprove-bootstrap +```shell +kubectl delete clusterrolebinding kubeadm:node-autoapprove-bootstrap ``` + - 关闭后,`kubeadm join` 操作将会被阻断,直到管理员已经手动批准了在途中的 CSR 才会继续: -```console -$ kubectl get csr +```shell +kubectl get csr +``` + + +输出类似于: + +``` NAME AGE REQUESTOR CONDITION node-csr-c69HXe7aYcqkS1bKmH4faEnHAWxn6i2bHZ2mD04jZyQ 18s system:bootstrap:878f07 Pending +``` -$ kubectl certificate approve node-csr-c69HXe7aYcqkS1bKmH4faEnHAWxn6i2bHZ2mD04jZyQ +```shell +kubectl certificate approve node-csr-c69HXe7aYcqkS1bKmH4faEnHAWxn6i2bHZ2mD04jZyQ +``` + + +输出类似于: + +``` certificatesigningrequest "node-csr-c69HXe7aYcqkS1bKmH4faEnHAWxn6i2bHZ2mD04jZyQ" approved +``` -$ kubectl get csr +```shell +kubectl get csr +``` + + +输出类似于: + +``` NAME AGE REQUESTOR CONDITION node-csr-c69HXe7aYcqkS1bKmH4faEnHAWxn6i2bHZ2mD04jZyQ 1m system:bootstrap:878f07 Approved,Issued ``` + + +这迫使工作流只有在运行了 kubectl 证书批准后,kubeadm join 才能成功。 + +#### 关闭对集群信息 ConfigMap 的公开访问 + - -只有执行了 `kubectl certificate approve` 后,`kubeadm join` 才会继续。 - -#### 关闭对集群信息 ConfigMap 的公开访问 - 为了实现使用令牌作为唯一验证信息的加入工作流,默认情况下会公开带有验证主节点标识所需数据的 ConfigMap。 虽然此 ConfigMap 中没有私有数据,但一些用户可能希望无论如何都关闭它。 这样做需要禁用 `kubeadm join` 工作流的 `--discovery-token` 参数。 以下是实现步骤: -```console -$ kubectl -n kube-public get cm cluster-info -o yaml | grep "kubeconfig:" -A11 | grep "apiVersion" -A10 | sed "s/ //" | tee cluster-info.yaml + +* 从 API 服务器获取 `cluster-info` 文件: + +```shell +kubectl -n kube-public get cm cluster-info -o yaml | grep "kubeconfig:" -A11 | grep "apiVersion" -A10 | sed "s/ //" | tee cluster-info.yaml +``` + + +输出类似于: + +``` apiVersion: v1 +kind: Config clusters: - cluster: certificate-authority-data: @@ -328,7 +443,6 @@ clusters: name: "" contexts: [] current-context: "" -kind: Config preferences: {} users: [] ``` @@ -343,18 +457,18 @@ users: [] * 关闭 `cluster-info` ConfigMap 的公开访问: -```console -$ kubectl -n kube-public delete rolebinding kubeadm:bootstrap-signer-clusterinfo +```shell +kubectl -n kube-public delete rolebinding kubeadm:bootstrap-signer-clusterinfo ``` - 这些命令应该在执行 `kubeadm init` 之后、在`kubeadm join` 之前执行。 + ### 使用带有配置文件的 kubeadm join {{< caution >}} @@ -366,25 +480,33 @@ These commands should be run after `kubeadm init` but before `kubeadm join`. It's possible to configure `kubeadm join` with a configuration file instead of command line flags, and some more advanced features may only be available as configuration file options. This file is passed using the `--config` flag and it must -contain a `JoinConfiguration` structure. - -To print the default values of `JoinConfiguration` run the following command: +contain a `JoinConfiguration` structure. Mixing `--config` with others flags may not be +allowed in some cases. --> - 可以用配置文件替代命令行参数的方法配置 `kubeadm join`,一些高级功能也只有在使用配置文件时才可选用。 该文件通过 `--config` 参数来传递,并且文件中必须包含 `JoinConfiguration` 结构。 +在某些情况下,不允许将 `--config` 与其他标志混合使用。 -执行下面的命令可以查看 `JoinConfiguration` 默认值: + +使用 [kubeadm config print](/zh/docs/reference/setup-tools/kubeadm/kubeadm-config/) +命令可以打印默认配置。 + +如果你的配置没有使用最新版本, +**推荐**使用 [kubeadm config migrate](/zh/docs/reference/setup-tools/kubeadm/kubeadm-config/) +命令转换。 - -要了解 `JoinConfiguration` 中各个字段的详细信息请参考 [godoc](https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm#JoinConfiguration)。 +有关配置的字段和用法的更多信息,你可以导航到我们的 API 参考页 +并从[列表]中选择一个版本(https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm#pkg-subdirectories)。 ## {{% heading "whatsnext" %}} @@ -394,7 +516,7 @@ For details on individual fields in `JoinConfiguration` see [the godoc](https:// * [kubeadm token](/docs/reference/setup-tools/kubeadm/kubeadm-token/) to manage tokens for `kubeadm join` * [kubeadm reset](/docs/reference/setup-tools/kubeadm/kubeadm-reset/) to revert any changes made to this host by `kubeadm init` or `kubeadm join` --> -* [kubeadm init](/docs/reference/setup-tools/kubeadm/kubeadm-init/) 初始化 Kubernetes 主节点 -* [kubeadm token](/docs/reference/setup-tools/kubeadm/kubeadm-token/) 管理 `kubeadm join` 的令牌 -* [kubeadm reset](/docs/reference/setup-tools/kubeadm/kubeadm-reset/) 将 `kubeadm init` 或 `kubeadm join` 对主机的更改恢复到之前状态 +* [kubeadm init](/zh/docs/reference/setup-tools/kubeadm/kubeadm-init/) 初始化 Kubernetes 主节点 +* [kubeadm token](/zh/docs/reference/setup-tools/kubeadm/kubeadm-token/) 管理 `kubeadm join` 的令牌 +* [kubeadm reset](/zh/docs/reference/setup-tools/kubeadm/kubeadm-reset/) 将 `kubeadm init` 或 `kubeadm join` 对主机的更改恢复到之前状态 diff --git a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-reset-phase.md b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-reset-phase.md index 785c983d99..74a5118599 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-reset-phase.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-reset-phase.md @@ -16,7 +16,7 @@ weight: 90 Hence, you can let kubeadm do some of the work and you can fill in the gaps if you wish to apply customization. --> -`kubeadm reset phase` 使您能够调用 `reset` 过程的基本原子步骤。因此,如果希望执行自定义操作,可以让 kubeadm 做一些工作,然后由用户来补足剩余操作。 +`kubeadm reset phase` 使你能够调用 `reset` 过程的基本原子步骤。因此,如果希望执行自定义操作,可以让 kubeadm 做一些工作,然后由用户来补足剩余操作。 -使用此阶段,您可以在要重置的节点上执行启动前检查阶段。 +使用此阶段,你可以在要重置的节点上执行启动前检查阶段。 {{< tabs name="tab-preflight" >}} {{< tab name="preflight" include="generated/kubeadm_reset_phase_preflight.md" />}} @@ -49,7 +49,7 @@ Using this phase you can execute preflight checks on a node that is being reset. -使用此阶段,您可以从 ClusterStatus 对象中删除此控制平面节点。 +使用此阶段,你可以从 ClusterStatus 对象中删除此控制平面节点。 {{< tabs name="tab-update-cluster-status" >}} {{< tab name="update-cluster-status" include="generated/kubeadm_reset_phase_update-cluster-status.md" />}} @@ -63,7 +63,7 @@ Using this phase you can remove this control-plane node from the ClusterStatus o -使用此阶段,您可以从 etcd 集群中删除此控制平面节点的 etcd 成员。 +使用此阶段,你可以从 etcd 集群中删除此控制平面节点的 etcd 成员。 {{< tabs name="tab-remove-etcd-member" >}} {{< tab name="remove-etcd-member" include="generated/kubeadm_reset_phase_remove-etcd-member.md" />}} @@ -77,7 +77,7 @@ Using this phase you can remove this control-plane node's etcd member from the e -使用此阶段,您可以在此节点上执行清理工作。 +使用此阶段,你可以在此节点上执行清理工作。 {{< tabs name="tab-cleanup-node" >}} {{< tab name="cleanup-node" include="generated/kubeadm_reset_phase_cleanup-node.md" />}} diff --git a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-reset.md b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-reset.md index ca87f78ba8..3df205658d 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-reset.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-reset.md @@ -35,16 +35,16 @@ etcd member of this node from the etcd cluster and also removes this node's info To skip a list of phases you can use the `--skip-phases` flag, which works in a similar way to the `kubeadm join` and `kubeadm init` phase runners. --> `kubeadm reset phase` 可用于执行上述工作流程的各个阶段。 -要跳过阶段列表,您可以使用 `--skip-phases` 参数,该参数的工作方式类似于 `kubeadm join` 和 `kubeadm init` 阶段运行器。 +要跳过阶段列表,你可以使用 `--skip-phases` 参数,该参数的工作方式类似于 `kubeadm join` 和 `kubeadm init` 阶段运行器。 ### 外部 etcd 清理 -如果使用了外部 etcd,`kubeadm reset` 将不会删除任何 etcd 中的数据。这意味着,如果再次使用相同的 etcd 端点运行 `kubeadm init`,您将看到先前集群的状态。 +如果使用了外部 etcd,`kubeadm reset` 将不会删除任何 etcd 中的数据。这意味着,如果再次使用相同的 etcd 端点运行 `kubeadm init`,你将看到先前集群的状态。 -要清理 etcd 中的数据,建议您使用 etcdctl 这样的客户端,例如: +要清理 etcd 中的数据,建议你使用 etcdctl 这样的客户端,例如: ```bash etcdctl del "" --prefix @@ -58,6 +58,6 @@ etcdctl del "" --prefix -* 参考 [kubeadm init](/docs/reference/setup-tools/kubeadm/kubeadm-init/) 来初始化 Kubernetes 主节点。 -* 参考 [kubeadm join](/docs/reference/setup-tools/kubeadm/kubeadm-join/) 来初始化 Kubernetes 工作节点并加入集群。 +* 参考 [kubeadm init](/zh/docs/reference/setup-tools/kubeadm/kubeadm-init/) 来初始化 Kubernetes 主节点。 +* 参考 [kubeadm join](/zh/docs/reference/setup-tools/kubeadm/kubeadm-join/) 来初始化 Kubernetes 工作节点并加入集群。 diff --git a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-token.md b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-token.md index ba49bc9834..4409371db7 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-token.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-token.md @@ -1,5 +1,5 @@ --- -title: kubeadm 令牌 +title: kubeadm token content_type: concept weight: 70 --- @@ -22,14 +22,14 @@ Bootstrap tokens are used for establishing bidirectional trust between a node jo the cluster and a master node, as described in [authenticating with bootstrap tokens](/docs/reference/access-authn-authz/bootstrap-tokens/). --> -如[使用引导令牌进行身份验证](/docs/reference/access-authn-authz/bootstrap-tokens/)所描述的,引导令牌用于在即将加入集群的节点和主节点间建立双向认证。 +如[使用引导令牌进行身份验证](/zh/docs/reference/access-authn-authz/bootstrap-tokens/)所描述的,引导令牌用于在即将加入集群的节点和主节点间建立双向认证。 -`kubeadm init` 创建了一个有效期为 24 小时的令牌,下面的命令允许您管理令牌,也可以创建和管理新的令牌。 +`kubeadm init` 创建了一个有效期为 24 小时的令牌,下面的命令允许你管理令牌,也可以创建和管理新的令牌。 @@ -49,10 +49,7 @@ such a token and also to create and manage new ones. ## {{% heading "whatsnext" %}} -* [kubeadm join](/docs/reference/setup-tools/kubeadm/kubeadm-join/) 引导 Kubernetes 工作节点并将其加入群集 - - - +* [kubeadm join](/zh/docs/reference/setup-tools/kubeadm/kubeadm-join/) 引导 Kubernetes 工作节点并将其加入集群 diff --git a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-upgrade-phase.md b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-upgrade-phase.md index 22633af056..1b970b5097 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-upgrade-phase.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-upgrade-phase.md @@ -27,6 +27,7 @@ be called on a primary control-plane node. {{< tabs name="tab-phase" >}} {{< tab name="phase" include="generated/kubeadm_upgrade_node_phase.md" />}} +{{< tab name="preflight" include="generated/kubeadm_upgrade_node_phase_preflight.md" />}} {{< tab name="control-plane" include="generated/kubeadm_upgrade_node_phase_control-plane.md" />}} {{< tab name="kubelet-config" include="generated/kubeadm_upgrade_node_phase_kubelet-config.md" />}} {{< /tabs >}} @@ -40,8 +41,8 @@ be called on a primary control-plane node. * [kubeadm upgrade](/docs/reference/setup-tools/kubeadm/kubeadm-upgrade/) to upgrade a kubeadm node * [kubeadm alpha](/docs/reference/setup-tools/kubeadm/kubeadm-alpha/) to try experimental functionality --> -* [kubeadm init](/docs/reference/setup-tools/kubeadm/kubeadm-init/) 引导一个 Kubernetes 控制平面节点 -* [kubeadm join](/docs/reference/setup-tools/kubeadm/kubeadm-join/) 将节点加入到群集 -* [kubeadm reset](/docs/reference/setup-tools/kubeadm/kubeadm-reset/) 还原 `kubeadm init` 或 `kubeadm join` 命令对主机所做的任何更改 -* [kubeadm upgrade](/docs/reference/setup-tools/kubeadm/kubeadm-upgrade/) 升级 kubeadm 节点 -* [kubeadm alpha](/docs/reference/setup-tools/kubeadm/kubeadm-alpha/) 尝试实验性功能 +* [kubeadm init](/zh/docs/reference/setup-tools/kubeadm/kubeadm-init/) 引导一个 Kubernetes 控制平面节点 +* [kubeadm join](/zh/docs/reference/setup-tools/kubeadm/kubeadm-join/) 将节点加入到集群 +* [kubeadm reset](/zh/docs/reference/setup-tools/kubeadm/kubeadm-reset/) 还原 `kubeadm init` 或 `kubeadm join` 命令对主机所做的任何更改 +* [kubeadm upgrade](/zh/docs/reference/setup-tools/kubeadm/kubeadm-upgrade/) 升级 kubeadm 节点 +* [kubeadm alpha](/zh/docs/reference/setup-tools/kubeadm/kubeadm-alpha/) 尝试实验性功能 diff --git a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-upgrade.md b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-upgrade.md index f387963503..4388edcfe4 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-upgrade.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-upgrade.md @@ -31,18 +31,18 @@ behind one command, with support for both planning an upgrade and actually perfo The steps for performing a upgrade using kubeadm are outlined in [this document](/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/). For older versions of kubeadm, please refer to older documentation sets of the Kubernetes website. --> -[本文档](/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/)概述了使用 kubeadm 执行升级的步骤。 +[本文档](/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/)概述了使用 kubeadm 执行升级的步骤。 有关 kubeadm 旧版本,请参阅 Kubernetes 网站的旧版文档。 -您可以使用 `kubeadm upgrade diff` 来查看将应用于静态 pod 清单的更改。 +你可以使用 `kubeadm upgrade diff` 来查看将应用于静态 pod 清单的更改。 -要在 Kubernetes v1.13.0 及更高版本中使用 kube-dns 进行升级,请遵循[本指南](/docs/reference/setup-tools/kubeadm/kubeadm-init-phase/#cmd-phase-addon)。 +要在 Kubernetes v1.13.0 及更高版本中使用 kube-dns 进行升级,请遵循[本指南](/zh/docs/reference/setup-tools/kubeadm/kubeadm-init-phase/#cmd-phase-addon)。 在 Kubernetes v1.15.0 和更高版本中,`kubeadm upgrade apply` 和 `kubeadm upgrade node` 也将自动续订该节点上的 kubeadm 托管证书,包括存储在 kubeconfig 文件中的证书。 -要选择退出,可以传递参数 `--certificate-renewal=false`。有关证书续订的更多详细信息请参见[证书管理文档](/docs/tasks/administer-cluster/kubeadm/kubeadm-certs)。 +要选择退出,可以传递参数 `--certificate-renewal=false`。有关证书续订的更多详细信息请参见[证书管理文档](/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-certs)。 +{{< note >}} + +`kubeadm upgrade apply` 和 `kubeadm upgrade plan` 命令都具有遗留的 `--config` 标志, +可以在执行特定控制平面节点的规划或升级时重新配置集群。 +请注意,升级工作流不是为这种情况而设计的,并且有意外结果的报告。 +{{}} + ## kubeadm upgrade plan {#cmd-upgrade-plan} {{< include "generated/kubeadm_upgrade_plan.md" >}} @@ -72,5 +84,5 @@ renewal see the [certificate management documentation](/docs/tasks/administer-cl -* 如果您使用 kubeadm v1.7.x 或更低版本初始化集群,则可以参考[kubeadm 配置](/docs/reference/setup-tools/kubeadm/kubeadm-config/)配置集群用于 `kubeadm upgrade`。 +* 如果你使用 kubeadm v1.7.x 或更低版本初始化集群,则可以参考[kubeadm 配置](/zh/docs/reference/setup-tools/kubeadm/kubeadm-config/)配置集群用于 `kubeadm upgrade`。 From f979037143d4416d41cfd07d7d238894e55d293d Mon Sep 17 00:00:00 2001 From: Zhang Yong Date: Mon, 30 Nov 2020 10:19:00 +0800 Subject: [PATCH 47/80] CronJob example should include imagePullPolicy: IfNotPresent --- content/en/examples/application/job/cronjob.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/content/en/examples/application/job/cronjob.yaml b/content/en/examples/application/job/cronjob.yaml index c9d3893027..3ca130289e 100644 --- a/content/en/examples/application/job/cronjob.yaml +++ b/content/en/examples/application/job/cronjob.yaml @@ -11,6 +11,7 @@ spec: containers: - name: hello image: busybox + imagePullPolicy: IfNotPresent args: - /bin/sh - -c From 7b63fc064531a0f3f6bdf47a99efeda26d812d7a Mon Sep 17 00:00:00 2001 From: epiclen Date: Mon, 30 Nov 2020 14:05:12 +0800 Subject: [PATCH 48/80] Update assign-pod-node.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix 分表 to 分别 --- content/zh/docs/concepts/scheduling-eviction/assign-pod-node.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/docs/concepts/scheduling-eviction/assign-pod-node.md b/content/zh/docs/concepts/scheduling-eviction/assign-pod-node.md index 9a50a835c8..2318f59e6f 100644 --- a/content/zh/docs/concepts/scheduling-eviction/assign-pod-node.md +++ b/content/zh/docs/concepts/scheduling-eviction/assign-pod-node.md @@ -368,7 +368,7 @@ and an example `preferredDuringSchedulingIgnoredDuringExecution` anti-affinity w --> 与节点亲和一样,当前有两种类型的 pod 亲和与反亲和,即 `requiredDuringSchedulingIgnoredDuringExecution` 和 -`preferredDuringSchedulingIgnoredDuringExecution`,分表表示“硬性”与“软性”要求。请参阅前面节点亲和部分中的描述。`requiredDuringSchedulingIgnoredDuringExecution` 亲和的一个示例是“将服务 A 和服务 B 的 pod 放置在同一区域,因为它们之间进行大量交流”,而 `preferredDuringSchedulingIgnoredDuringExecution` 反亲和的示例将是“将此服务的 pod 跨区域分布”(硬性要求是说不通的,因为你可能拥有的 pod 数多于区域数)。 +`preferredDuringSchedulingIgnoredDuringExecution`,分别表示“硬性”与“软性”要求。请参阅前面节点亲和部分中的描述。`requiredDuringSchedulingIgnoredDuringExecution` 亲和的一个示例是“将服务 A 和服务 B 的 pod 放置在同一区域,因为它们之间进行大量交流”,而 `preferredDuringSchedulingIgnoredDuringExecution` 反亲和的示例将是“将此服务的 pod 跨区域分布”(硬性要求是说不通的,因为你可能拥有的 pod 数多于区域数)。 -给节点 `node1` 增加一个污点,它的键名是 `key`,键值是 `value`,效果是 `NoSchedule`。 +给节点 `node1` 增加一个污点,它的键名是 `key1`,键值是 `value1`,效果是 `NoSchedule`。 这表示只有拥有和这个污点相匹配的容忍度的 Pod 才能够被分配到 `node1` 这个节点。 若要移除上述命令所添加的污点,你可以执行: From 4bd18020051af99765dd9ecb3944dd43b7f490ca Mon Sep 17 00:00:00 2001 From: zamataku Date: Sun, 29 Nov 2020 08:09:19 +0900 Subject: [PATCH 50/80] Update Chained selectors shell command Let me propose change to follow the English version. https://github.com/kubernetes/website/blame/79c1ab1fd2836726379c3debef18e955faeedbb2/content/en/docs/concepts/overview/working-with-objects/field-selectors.md#L46 --- .../concepts/overview/working-with-objects/field-selectors.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/ja/docs/concepts/overview/working-with-objects/field-selectors.md b/content/ja/docs/concepts/overview/working-with-objects/field-selectors.md index 78930a469a..714e48e943 100644 --- a/content/ja/docs/concepts/overview/working-with-objects/field-selectors.md +++ b/content/ja/docs/concepts/overview/working-with-objects/field-selectors.md @@ -46,7 +46,7 @@ kubectl get services --all-namespaces --field-selector metadata.namespace!=defa 下記の`kubectl`コマンドは、`status.phase`が`Runnning`でなく、かつ`spec.restartPolicy`フィールドが`Always`に等しいような全てのPodを選択します。 ```shell -kubectl get statefulsets,services --all-namespaces --field-selector metadata.namespace!=default +kubectl get pods --field-selector=status.phase!=Running,spec.restartPolicy=Always ``` ## 複数のリソースタイプ From 533d9006e10fe03db42657815841b5890ece6b12 Mon Sep 17 00:00:00 2001 From: Jerry Park Date: Mon, 30 Nov 2020 17:19:42 +0900 Subject: [PATCH 51/80] Update README-ko.md file --- README-ko.md | 161 +++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 118 insertions(+), 43 deletions(-) diff --git a/README-ko.md b/README-ko.md index e23027c32a..c4038212c6 100644 --- a/README-ko.md +++ b/README-ko.md @@ -1,69 +1,144 @@ # 쿠버네티스 문서화 -[![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) -환영합니다! 이 저장소는 쿠버네티스 웹사이트 및 문서화를 만드는 데 필요로 하는 모든 asset에 대한 공간을 제공합니다. 여러분이 기여를 원한다는 사실에 매우 기쁩니다! +이 저장소에는 [쿠버네티스 웹사이트 및 문서](https://kubernetes.io/)를 빌드하는 데 필요한 자산이 포함되어 있습니다. 기여해주셔서 감사합니다! -## 문서에 기여하기 +# 저장소 사용하기 -이 저장소에 대한 복제본을 여러분의 GitHub 계정에 생성하기 위해 화면 오른쪽 위 영역에 있는 **Fork** 버튼을 클릭 가능합니다. 이 복제본은 *fork* 라고 부릅니다. 여러분의 fork에서 원하는 임의의 변경 사항을 만들고, 해당 변경 사항을 보낼 준비가 되었다면, 여러분의 fork로 이동하여 새로운 풀 리퀘스트를 만들어 우리에게 알려주시기 바랍니다. +Hugo(확장 버전)를 사용하여 웹사이트를 로컬에서 실행하거나, 컨테이너 런타임에서 실행할 수 있습니다. 라이브 웹사이트와의 배포 일관성을 제공하므로, 컨테이너 런타임을 사용하는 것을 적극 권장합니다. -여러분의 풀 리퀘스트가 생성된 이후에는, 쿠버네티스 리뷰어가 명료하고 실행 가능한 피드백을 제공하는 책임을 담당할 것입니다. 풀 리퀘스트의 오너로서, **쿠버네티스 리뷰어로부터 제공받은 피드백을 수용하기 위해 풀 리퀘스트를 수정하는 것은 여러분의 책임입니다.** 또한, 참고로 한 명 이상의 쿠버네티스 리뷰어가 여러분에게 피드백을 제공하는 상황에 처하거나, 또는 여러분에게 피드백을 제공하기로 원래 할당된 사람이 아닌 다른 쿠버네티스 리뷰어로부터 피드백을 받는 상황에 처할 수도 있습니다. 그뿐만 아니라, 몇몇 상황에서는, 필요에 따라 리뷰어 중 한 명이 [쿠버네티스 기술 리뷰어](https://github.com/kubernetes/website/wiki/Tech-reviewers)로부터의 기술 리뷰를 요청할지도 모릅니다. 리뷰어는 제시간에 피드백을 제공하기 위해 최선을 다할 것이지만, 응답 시간은 상황에 따라 달라질 수도 있습니다. +## 사전 준비 사항 -쿠버네티스 문서화에 기여하기와 관련된 보다 자세한 정보는, 다음을 살펴봅니다: +이 저장소를 사용하기 위해, 로컬에 다음의 소프트웨어들이 설치되어 있어야 합니다. -* [기여 시작하기](https://kubernetes.io/docs/contribute/start/) -* [문서화 변경 사항 스테이징하기](http://kubernetes.io/docs/contribute/intermediate#view-your-changes-locally) -* [페이지 템플릿 사용하기](https://kubernetes.io/docs/contribute/style/page-content-types/) -* [문서화 스타일 가이드](http://kubernetes.io/docs/contribute/style/style-guide/) -* [쿠버네티스 문서화 로컬라이징](https://kubernetes.io/docs/contribute/localization/) +- [npm](https://www.npmjs.com/) +- [Go](https://golang.org/) +- [Hugo(확장 버전)](https://gohugo.io/) +- [도커](https://www.docker.com/)와 같은 컨테이너 런타임. -## `README.md`에 대한 쿠버네티스 문서화 번역 +시작하기 전에 의존성이 있는 소프트웨어를 설치합니다. 저장소를 복제(clone)하고 디렉터리로 이동합니다. -### 한국어 - -`README.md` 번역 및 한국어 기여자를 위한 보다 자세한 가이드를 [한국어 README](README-ko.md) 페이지 혹은 [쿠버네티스 문서 한글화 가이드](https://kubernetes.io/ko/docs/contribute/localization_ko/)에서 살펴봅니다. - -한국어 번역 메인테이너에게 다음을 통해 연락 가능합니다. - -* 이덕준 ([GitHub - @gochist](https://github.com/gochist)) -* [Slack channel](https://kubernetes.slack.com/messages/kubernetes-docs-ko) - -## 도커를 사용하여 사이트를 로컬에서 실행하기 - -쿠버네티스 웹사이트를 로컬에서 실행하기 위한 추천하는 방식은 [Hugo](https://gohugo.io) 정적 사이트 생성기를 포함하는 특별한 [도커](https://docker.com) 이미지를 실행하는 것입니다. - -> Windows에서 실행하는 경우, [Chocolatey](https://chocolatey.org)로 설치할 수 있는 명명 추가 도구를 필요로 할 것입니다. `choco install make` - -> 도커를 사용하지 않고 웹사이트를 로컬에서 실행하기를 선호하는 경우에는, 아래 [Hugo를 사용한 로컬 사이트 실행하기](#hugo를-사용한-로컬-사이트-실행하기)를 살펴봅니다. - -도커 [동작 및 실행](https://www.docker.com/get-started) 환경이 있는 경우, 로컬에서 `kubernetes-hugo` 도커 이미지를 빌드 합니다: - -```bash -make container-image +``` +git clone https://github.com/kubernetes/website.git +cd website ``` -해당 이미지가 빌드 된 이후, 사이트를 로컬에서 실행할 수 있습니다: +쿠버네티스 웹사이트는 [Docsy Hugo 테마](https://github.com/google/docsy#readme)를 사용합니다. 웹사이트를 컨테이너에서 실행하려는 경우에도, 다음을 실행하여 하위 모듈 및 기타 개발 종속성을 가져오는 것이 좋습니다. -```bash +``` +# Docsy 하위 모듈 가져오기 +git submodule update --init --recursive --depth 1 +``` + +## 컨테이너를 사용하여 웹사이트 실행하기 + +컨테이너에서 사이트를 빌드하려면, 다음을 실행하여 컨테이너 이미지를 빌드하고 실행합니다. + +``` +make container-image make container-serve ``` -브라우저에서 http://localhost:1313 를 열어 사이트를 살펴봅니다. 소스 파일에 변경 사항이 있을 때, Hugo는 사이트를 업데이트하고 브라우저를 강제로 새로고침합니다. +웹사이트를 보려면 브라우저를 http://localhost:1313 으로 엽니다. 소스 파일을 변경하면 Hugo가 웹사이트를 업데이트하고 브라우저를 강제로 새로 고칩니다. -## Hugo를 사용한 로컬 사이트 실행하기 +## Hugo를 사용하여 로컬에서 웹사이트 실행하기 -Hugo 설치 안내를 위해서는 [공식 Hugo 문서화](https://gohugo.io/getting-started/installing/)를 살펴봅니다. [`netlify.toml`](netlify.toml#L9) 파일에 있는 `HUGO_VERSION` 환경 변수에서 지정된 Hugo 버전이 설치되었는지를 확인합니다. +[`netlify.toml`](netlify.toml#L10) 파일의 `HUGO_VERSION` 환경 변수에 지정된 Hugo 확장 버전을 설치해야 합니다. -Hugo가 설치되었을 때 로컬에서 사이트를 실행하기 위해 (다음을 실행합니다): +사이트를 로컬에서 빌드하고 테스트하려면, 다음을 실행합니다. ```bash +# 의존성 있는 소프트웨어 설치 +npm ci make serve ``` -이를 통해 로컬 Hugo 서버를 1313번 포트에 시작합니다. 브라우저에서 http://localhost:1313 를 열어 사이트를 살펴봅니다. 소스 파일에 변경 사항이 있을 때, Hugo는 사이트를 업데이트하고 브라우저를 강제로 새로고침합니다. +그러면 포트 1313에서 로컬 Hugo 서버가 시작됩니다. 웹사이트를 보려면 http://localhost:1313 으로 브라우저를 엽니다. 소스 파일을 변경하면, Hugo가 웹사이트를 업데이트하고 브라우저를 강제로 새로 고칩니다. -## 감사합니다! +## 문제 해결 +### error: failed to transform resource: TOCSS: failed to transform "scss/main.scss" (text/x-scss): this feature is not available in your current Hugo version -쿠버네티스는 커뮤니티 참여와 함께 생존하며, 우리는 사이트 및 문서화에 대한 여러분의 컨트리뷰션에 대해 정말 감사하게 생각합니다! +Hugo는 기술적인 이유로 2개의 바이너리 세트로 제공됩니다. 현재 웹사이트는 **Hugo 확장** 버전 기반에서만 실행됩니다. [릴리스 페이지](https://github.com/gohugoio/hugo/releases)에서 이름에 `extended` 가 포함된 아카이브를 찾습니다. 확인하려면, `hugo version` 을 실행하고 `extended` 라는 단어를 찾습니다. + +### too many open files 이슈에 대한 macOS 문제 해결 + +macOS에서 `make serve` 를 실행하면 다음의 오류 메시지가 출력됩니다. + +``` +ERROR 2020/08/01 19:09:18 Error: listen tcp 127.0.0.1:1313: socket: too many open files +make: *** [serve] Error 1 +``` + +파일 오픈 개수에 대한 현재 제한값을 확인합니다. + +`launchctl limit maxfiles` + +그리고 다음의 명령을 실행합니다(https://gist.github.com/tombigel/d503800a282fcadbee14b537735d202c 를 참고하여 적용). + +``` +#!/bin/sh + +# 코멘트 처리한 것은 원래 gist 링크들이며, 그 아래는 수정된 tombigel의 gist 링크입니다. +# curl -O https://gist.githubusercontent.com/a2ikm/761c2ab02b7b3935679e55af5d81786a/raw/ab644cb92f216c019a2f032bbf25e258b01d87f9/limit.maxfiles.plist +# curl -O https://gist.githubusercontent.com/a2ikm/761c2ab02b7b3935679e55af5d81786a/raw/ab644cb92f216c019a2f032bbf25e258b01d87f9/limit.maxproc.plist + +curl -O https://gist.githubusercontent.com/tombigel/d503800a282fcadbee14b537735d202c/raw/ed73cacf82906fdde59976a0c8248cce8b44f906/limit.maxfiles.plist +curl -O https://gist.githubusercontent.com/tombigel/d503800a282fcadbee14b537735d202c/raw/ed73cacf82906fdde59976a0c8248cce8b44f906/limit.maxproc.plist + +sudo mv limit.maxfiles.plist /Library/LaunchDaemons +sudo mv limit.maxproc.plist /Library/LaunchDaemons + +sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist +sudo chown root:wheel /Library/LaunchDaemons/limit.maxproc.plist + +sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist +``` + +이 내용은 Catalina와 Mojave macOS에서 작동합니다. + + +# SIG Docs에 참여하기 + +[커뮤니티 페이지](https://github.com/kubernetes/community/tree/master/sig-docs#meetings)에서 SIG Docs 쿠버네티스 커뮤니티 및 회의에 대한 자세한 내용을 확인합니다. + +이 프로젝트의 메인테이너에게 연락을 할 수도 있습니다. + +- [슬랙](https://kubernetes.slack.com/messages/sig-docs) [슬랙에 초대 받기](https://slack.k8s.io/) +- [메일링 리스트](https://groups.google.com/forum/#!forum/kubernetes-sig-docs) + +# 문서에 기여하기 + +이 저장소에 대한 복제본을 여러분의 GitHub 계정에 생성하기 위해 화면 오른쪽 위 영역에 있는 **Fork** 버튼을 클릭하면 됩니다. 이 복제본은 *fork* 라고 부릅니다. 여러분의 fork에서 원하는 임의의 변경 사항을 만들고, 해당 변경 사항을 보낼 준비가 되었다면, 여러분의 fork로 이동하여 새로운 풀 리퀘스트를 만들어 우리에게 알려주시기 바랍니다. + +여러분의 풀 리퀘스트가 생성된 이후에는, 쿠버네티스 리뷰어가 명료하고 실행 가능한 피드백을 제공하는 책임을 담당할 것입니다. 풀 리퀘스트의 오너로서, **쿠버네티스 리뷰어로부터 제공받은 피드백을 수용하기 위해 풀 리퀘스트를 수정하는 것은 여러분의 책임입니다.** + +또한, 참고로 한 명 이상의 쿠버네티스 리뷰어가 여러분에게 피드백을 제공하는 상황이거나, 또는 원래 여러분에게 피드백을 제공하기로 할당된 사람이 아닌 다른 쿠버네티스 리뷰어로부터 피드백을 받는 상황도 있습니다. + +그뿐만 아니라, 몇몇 상황에서는, 필요에 따라 리뷰어 중 한 명이 [쿠버네티스 기술 리뷰어](https://github.com/kubernetes/website/wiki/Tech-reviewers)로부터의 기술 리뷰를 요청할지도 모릅니다. 리뷰어는 제시간에 피드백을 제공하기 위해 최선을 다할 것이지만, 응답 시간은 상황에 따라 달라질 수도 있습니다. + +쿠버네티스 문서화에 기여하기와 관련된 보다 자세한 정보는, 다음을 참고합니다. + +* [쿠버네티스 문서에 기여하기](https://kubernetes.io/docs/contribute/) +* [페이지 콘텐트 타입](https://kubernetes.io/docs/contribute/style/page-content-types/) +* [문서화 스타일 가이드](http://kubernetes.io/docs/contribute/style/style-guide/) +* [쿠버네티스 문서 현지화](https://kubernetes.io/docs/contribute/localization/) + +# `README.md`에 대한 쿠버네티스 문서 현지화(localization) + +## 한국어 + +`README.md` 번역 및 한국어 기여자를 위한 보다 자세한 가이드는 [쿠버네티스 문서 한글화 가이드](https://kubernetes.io/ko/docs/contribute/localization_ko/)를 참고합니다. + +한국어 번역 메인테이너에게 다음을 통해 연락할 수 있습니다. + +* 손석호 ([GitHub - @seokho-son](https://github.com/seokho-son)) +* [슬랙 채널](https://kubernetes.slack.com/messages/kubernetes-docs-ko) + +# 행동 강령 + +쿠버네티스 커뮤니티 참여는 [CNCF 행동 강령](https://github.com/cncf/foundation/blob/master/code-of-conduct-languages/ko.md)을 따릅니다. + +# 감사합니다! + +쿠버네티스는 커뮤니티 참여를 통해 번창하며, 우리는 웹사이트 및 문서화에 대한 당신의 기여에 감사드립니다! From 6935846fce72f0dba691cb26a717a2acd73b8dca Mon Sep 17 00:00:00 2001 From: guzj11 <67083623+guzj11@users.noreply.github.com> Date: Mon, 30 Nov 2020 16:36:33 +0800 Subject: [PATCH 52/80] [zh] Sync feature-gates.md #25165 --- .../reference/command-line-tools-reference/feature-gates.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/content/zh/docs/reference/command-line-tools-reference/feature-gates.md b/content/zh/docs/reference/command-line-tools-reference/feature-gates.md index bd27310314..202b798491 100644 --- a/content/zh/docs/reference/command-line-tools-reference/feature-gates.md +++ b/content/zh/docs/reference/command-line-tools-reference/feature-gates.md @@ -134,8 +134,6 @@ different Kubernetes components. | `CSIVolumeFSGroupPolicy` | `false` | Alpha | 1.19 | | | `ConfigurableFSGroupPolicy` | `false` | Alpha | 1.18 | | | `CustomCPUCFSQuotaPeriod` | `false` | Alpha | 1.12 | | -| `CustomResourceDefaulting` | `false` | Alpha| 1.15 | 1.15 | -| `CustomResourceDefaulting` | `true` | Beta | 1.16 | | | `DefaultPodTopologySpread` | `false` | Alpha | 1.19 | | | `DevicePlugins` | `false` | Alpha | 1.8 | 1.9 | | `DevicePlugins` | `true` | Beta | 1.10 | | @@ -271,6 +269,9 @@ different Kubernetes components. | `CustomPodDNS` | `false` | Alpha | 1.9 | 1.9 | | `CustomPodDNS` | `true` | Beta| 1.10 | 1.13 | | `CustomPodDNS` | `true` | GA | 1.14 | - | +| `CustomResourceDefaulting` | `false` | Alpha| 1.15 | 1.15 | +| `CustomResourceDefaulting` | `true` | Beta | 1.16 | 1.16 | +| `CustomResourceDefaulting` | `true` | GA | 1.17 | - | | `CustomResourcePublishOpenAPI` | `false` | Alpha| 1.14 | 1.14 | | `CustomResourcePublishOpenAPI` | `true` | Beta| 1.15 | 1.15 | | `CustomResourcePublishOpenAPI` | `true` | GA | 1.16 | - | From 0c858f8813aba1f861077b1610021a110f60f7ed Mon Sep 17 00:00:00 2001 From: ausias-armesto Date: Mon, 30 Nov 2020 13:38:40 +0100 Subject: [PATCH 53/80] Wrong participate --- content/en/docs/concepts/containers/images.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/concepts/containers/images.md b/content/en/docs/concepts/containers/images.md index be25fd4e14..99698668c4 100644 --- a/content/en/docs/concepts/containers/images.md +++ b/content/en/docs/concepts/containers/images.md @@ -84,7 +84,7 @@ Credentials can be provided in several ways: provider) can implement your mechanism for authenticating the node to the container registry. -These options are explaind in more detail below. +These options are explained in more detail below. ### Configuring nodes to authenticate to a private registry From 84fbb5db42c1937550e57ea348b7d74168768196 Mon Sep 17 00:00:00 2001 From: Tim Bannister Date: Mon, 30 Nov 2020 17:54:52 +0000 Subject: [PATCH 54/80] Use appropriate name for control plane in kubeadm reference (#24990) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Replace several references to “master” * Revise parameter for kubeadm join --- .../setup-tools/kubeadm/implementation-details.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 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 6abc42c131..6da8963f17 100644 --- a/content/en/docs/reference/setup-tools/kubeadm/implementation-details.md +++ b/content/en/docs/reference/setup-tools/kubeadm/implementation-details.md @@ -32,7 +32,7 @@ The cluster that `kubeadm init` and `kubeadm join` set up should be: - `kubeadm init` - `export KUBECONFIG=/etc/kubernetes/admin.conf` - `kubectl apply -f ` - - `kubeadm join --token :` + - `kubeadm join --token :` - **Extendable**: - It should _not_ favor any particular network provider. Configuring the cluster network is out-of-scope - It should provide the possibility to use a config file for customizing various parameters @@ -206,7 +206,7 @@ Please note that: 1. All images will be pulled from k8s.gcr.io by default. See [using custom images](/docs/reference/setup-tools/kubeadm/kubeadm-init/#custom-images) for customizing the image repository 2. In case of kubeadm is executed in the `--dry-run` mode, static Pods files are written in a temporary folder -3. Static Pod manifest generation for master components can be invoked individually with the [`kubeadm init phase control-plane all`](/docs/reference/setup-tools/kubeadm/kubeadm-init-phase/#cmd-phase-control-plane) command +3. Static Pod manifest generation for control plane components can be invoked individually with the [`kubeadm init phase control-plane all`](/docs/reference/setup-tools/kubeadm/kubeadm-init-phase/#cmd-phase-control-plane) command #### API server @@ -344,7 +344,7 @@ state and make new decisions based on that data. Please note that: 1. Before saving the ClusterConfiguration, sensitive information like the token is stripped from the configuration -2. Upload of master configuration can be invoked individually with the [`kubeadm init phase upload-config`](/docs/reference/setup-tools/kubeadm/kubeadm-init-phase/#cmd-phase-upload-config) command +2. Upload of control plane node configuration can be invoked individually with the [`kubeadm init phase upload-config`](/docs/reference/setup-tools/kubeadm/kubeadm-init-phase/#cmd-phase-upload-config) command ### Mark the node as control-plane @@ -355,7 +355,7 @@ As soon as the control plane is available, kubeadm executes following actions: Please note that: -1. Mark control-plane phase phase can be invoked individually with the [`kubeadm init phase mark-control-plane`](/docs/reference/setup-tools/kubeadm/kubeadm-init-phase/#cmd-phase-mark-master) command +1. Mark control-plane phase phase can be invoked individually with the [`kubeadm init phase mark-control-plane`](/docs/reference/setup-tools/kubeadm/kubeadm-init-phase/#cmd-phase-mark-control-plane) command ### Configure TLS-Bootstrapping for node joining @@ -415,7 +415,7 @@ Additionally it creates a Role and a RoleBinding granting access to the ConfigMa Please note that: -1. The access to the `cluster-info` ConfigMap _is not_ rate-limited. This may or may not be a problem if you expose your master +1. The access to the `cluster-info` ConfigMap _is not_ rate-limited. This may or may not be a problem if you expose your cluster's API server to the internet; worst-case scenario here is a DoS attack where an attacker uses all the in-flight requests the kube-apiserver can handle to serving the `cluster-info` ConfigMap. @@ -430,8 +430,8 @@ Please note that: A ServiceAccount for `kube-proxy` is created in the `kube-system` namespace; then kube-proxy is deployed as a DaemonSet: -- The credentials (`ca.crt` and `token`) to the master come from the ServiceAccount -- The location of the master comes from a ConfigMap +- The credentials (`ca.crt` and `token`) to the control plane come from the ServiceAccount +- The location (URL) of the API server comes from a ConfigMap - The `kube-proxy` ServiceAccount is bound to the privileges in the `system:node-proxier` ClusterRole #### DNS From fdc3b6ce295516a6e0c0c452405f4cfd44195dc1 Mon Sep 17 00:00:00 2001 From: jialaijun Date: Tue, 1 Dec 2020 10:25:54 +0800 Subject: [PATCH 55/80] update markdown files in glossary dirctory. --- content/zh/docs/reference/glossary/annotation.md | 4 +++- content/zh/docs/reference/glossary/api-group.md | 5 ++++- .../zh/docs/reference/glossary/app-container.md | 3 ++- .../reference/glossary/application-architect.md | 3 ++- content/zh/docs/reference/glossary/approver.md | 4 +++- content/zh/docs/reference/glossary/cidr.md | 5 ++++- content/zh/docs/reference/glossary/cla.md | 2 +- .../reference/glossary/cloud-controller-manager.md | 8 ++++++-- .../zh/docs/reference/glossary/cloud-provider.md | 4 ++-- .../docs/reference/glossary/cluster-operations.md | 5 +++-- content/zh/docs/reference/glossary/cluster.md | 3 ++- content/zh/docs/reference/glossary/containerd.md | 2 +- content/zh/docs/reference/glossary/contributor.md | 2 +- content/zh/docs/reference/glossary/controller.md | 14 ++++++++------ content/zh/docs/reference/glossary/cri-o.md | 4 +++- content/zh/docs/reference/glossary/csi.md | 6 +++++- content/zh/docs/reference/glossary/deployment.md | 3 ++- content/zh/docs/reference/glossary/developer.md | 4 +++- content/zh/docs/reference/glossary/docker.md | 3 ++- .../glossary/dynamic-volume-provisioning.md | 4 +++- .../zh/docs/reference/glossary/endpoint-slice.md | 4 +++- .../docs/reference/glossary/ephemeral-container.md | 5 +++-- content/zh/docs/reference/glossary/extensions.md | 4 +++- content/zh/docs/reference/glossary/flexvolume.md | 5 ++++- content/zh/docs/reference/glossary/helm-chart.md | 3 ++- .../glossary/horizontal-pod-autoscaler.md | 5 ++++- content/zh/docs/reference/glossary/host-aliases.md | 3 ++- .../zh/docs/reference/glossary/init-container.md | 3 ++- content/zh/docs/reference/glossary/istio.md | 4 +++- content/zh/docs/reference/glossary/job.md | 3 ++- .../reference/glossary/kube-controller-manager.md | 3 ++- content/zh/docs/reference/glossary/kube-proxy.md | 3 ++- .../zh/docs/reference/glossary/security-context.md | 3 ++- content/zh/docs/reference/glossary/selector.md | 2 +- .../zh/docs/reference/glossary/service-account.md | 4 +++- .../zh/docs/reference/glossary/service-broker.md | 4 ++-- .../zh/docs/reference/glossary/service-catalog.md | 4 +++- content/zh/docs/reference/glossary/service.md | 4 +++- content/zh/docs/reference/glossary/statefulset.md | 12 +++++++++--- .../zh/docs/reference/glossary/storage-class.md | 5 ++++- content/zh/docs/reference/glossary/sysctl.md | 2 +- content/zh/docs/reference/glossary/taint.md | 8 ++++++-- content/zh/docs/reference/glossary/toleration.md | 8 ++++++-- .../zh/docs/reference/glossary/volume-plugin.md | 4 +++- content/zh/docs/reference/glossary/workload.md | 5 +++-- 45 files changed, 138 insertions(+), 60 deletions(-) diff --git a/content/zh/docs/reference/glossary/annotation.md b/content/zh/docs/reference/glossary/annotation.md index 46514d2401..a305352e32 100644 --- a/content/zh/docs/reference/glossary/annotation.md +++ b/content/zh/docs/reference/glossary/annotation.md @@ -40,5 +40,7 @@ tags: The metadata in an annotation can be small or large, structured or unstructured, and can include characters not permitted by {{< glossary_tooltip text="labels" term_id="label" >}}. Clients such as tools and libraries can retrieve this metadata. --> -注解中的元数据可大可小,可以是结构化的也可以是非结构化的,并且能包含 {{< glossary_tooltip text="标签" term_id="label" >}} 不允许使用的字符。像工具和软件库这样的客户端可以检索这些元数据。 +注解中的元数据可大可小,可以是结构化的也可以是非结构化的, +并且能包含{{< glossary_tooltip text="标签" term_id="label" >}}不允许使用的字符。 +像工具和软件库这样的客户端可以检索这些元数据。 diff --git a/content/zh/docs/reference/glossary/api-group.md b/content/zh/docs/reference/glossary/api-group.md index 21f0c20621..d2c360a214 100644 --- a/content/zh/docs/reference/glossary/api-group.md +++ b/content/zh/docs/reference/glossary/api-group.md @@ -39,7 +39,10 @@ Kubernetes API 中的一组相关路径。 -通过更改 API server 的配置,可以启用或禁用每个 API Group。你还可以禁用或启用指向特定资源的路径。 API group 使扩展 Kubernetes API 更加的容易。 API group 在 REST 路径和序列化对象的 `apiVersion` 字段中指定。 +通过更改 API server 的配置,可以启用或禁用每个 API Group。 +你还可以禁用或启用指向特定资源的路径。 +API group 使扩展 Kubernetes API 更加的容易。 +API group 在 REST 路径和序列化对象的 `apiVersion` 字段中指定。 -初始化容器使您可以分离对于 {{< glossary_tooltip text="工作负载" term_id="workload" >}} 整体而言很重要的初始化细节,并且一旦应用容器启动,它不需要继续运行。 +初始化容器使您可以分离对于{{< glossary_tooltip text="工作负载" term_id="workload" >}} +整体而言很重要的初始化细节,并且一旦应用容器启动,它不需要继续运行。 如果 pod 没有配置任何初始化容器,则该 pod 中的所有容器都是应用程序容器。 \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/application-architect.md b/content/zh/docs/reference/glossary/application-architect.md index 538054db18..2ef153ab91 100644 --- a/content/zh/docs/reference/glossary/application-architect.md +++ b/content/zh/docs/reference/glossary/application-architect.md @@ -39,5 +39,6 @@ tags: An architect ensures that an app's implementation allows it to interact with its surrounding components in a scalable, maintainable way. Surrounding components include databases, logging infrastructure, and other microservices. --> -应用架构师确保应用的实现允许它和周边组件进行可扩展的、可持续的交互。周边组件包括数据库、日志基础设施和其他微服务。 +应用架构师确保应用的实现允许它和周边组件进行可扩展的、可持续的交互。 +周边组件包括数据库、日志基础设施和其他微服务。 diff --git a/content/zh/docs/reference/glossary/approver.md b/content/zh/docs/reference/glossary/approver.md index e1433da55f..b28762cf16 100644 --- a/content/zh/docs/reference/glossary/approver.md +++ b/content/zh/docs/reference/glossary/approver.md @@ -37,4 +37,6 @@ tags: While code review is focused on code quality and correctness, approval is focused on the holistic acceptance of a contribution. Holistic acceptance includes backwards/forwards compatibility, adhering to API and flag conventions, subtle performance and correctness issues, interactions with other parts of the system, and others. Approver status is scoped to a part of the codebase. Approvers were previously referred to as maintainers. --> -代码审核的重点是代码质量和正确性,而批准的重点是对贡献的整体接受。整体接受包括向后/向前兼容性、遵守 API 和参数约定、细微的性能和正确性问题、与系统其他部分的交互等。批准者状态的作用域是代码库的一部分。审批者以前被称为维护者。 +代码审核的重点是代码质量和正确性,而批准的重点是对贡献的整体接受。 +整体接受包括向后/向前兼容性、遵守 API 和参数约定、细微的性能和正确性问题、与系统其他部分的交互等。 +批准者状态的作用域是代码库的一部分。审批者以前被称为维护者。 diff --git a/content/zh/docs/reference/glossary/cidr.md b/content/zh/docs/reference/glossary/cidr.md index 143eab0919..c99695543c 100644 --- a/content/zh/docs/reference/glossary/cidr.md +++ b/content/zh/docs/reference/glossary/cidr.md @@ -37,4 +37,7 @@ CIDR (无类域间路由) 是一种描述 IP 地址块的符号,被广泛使 -在 Kubernetes 的上下文中,每个 {{< glossary_tooltip text="节点" term_id="node" >}} 以 CIDR 形式(含起始地址和子网掩码)获得一个 IP 地址段,从而能够为每个 {{< glossary_tooltip text="Pod" term_id="pod" >}} 分配一个独一无二的 IP 地址。虽然其概念最初源自 IPv4,CIDR 已经被扩展为涵盖 IPv6。 +在 Kubernetes 的上下文中,每个{{< glossary_tooltip text="节点" term_id="node" >}} +以 CIDR 形式(含起始地址和子网掩码)获得一个 IP 地址段, +从而能够为每个 {{< glossary_tooltip text="Pod" term_id="pod" >}} 分配一个独一无二的 IP 地址。 +虽然其概念最初源自 IPv4,CIDR 已经被扩展为涵盖 IPv6。 diff --git a/content/zh/docs/reference/glossary/cla.md b/content/zh/docs/reference/glossary/cla.md index 8230fd1715..5d9f4229cd 100644 --- a/content/zh/docs/reference/glossary/cla.md +++ b/content/zh/docs/reference/glossary/cla.md @@ -29,7 +29,7 @@ tags: - {{< glossary_tooltip text="贡献者" term_id="contributor" >}} 对他们在开源项目中所贡献的代码的授权许可条款。 + {{< glossary_tooltip text="贡献者" term_id="contributor" >}}对他们在开源项目中所贡献的代码的授权许可条款。 diff --git a/content/zh/docs/reference/glossary/cloud-controller-manager.md b/content/zh/docs/reference/glossary/cloud-controller-manager.md index ec76c8aab8..e2f10617e2 100644 --- a/content/zh/docs/reference/glossary/cloud-controller-manager.md +++ b/content/zh/docs/reference/glossary/cloud-controller-manager.md @@ -38,7 +38,10 @@ cluster into your cloud provider's API, and separates out the components that in with that cloud platform from components that just interact with your cluster. --> -云控制器管理器是指嵌入特定云的控制逻辑的 {{< glossary_tooltip text="控制平面" term_id="control-plane" >}} 组件。云控制器管理器允许您链接聚合到云提供商的应用编程接口中,并分离出相互作用的组件与您的集群交互的组件。 +云控制器管理器是指嵌入特定云的控制逻辑的 +{{< glossary_tooltip text="控制平面" term_id="control-plane" >}}组件。 +云控制器管理器允许您链接聚合到云提供商的应用编程接口中, +并分离出相互作用的组件与您的集群交互的组件。 @@ -47,4 +50,5 @@ By decoupling the interoperability logic between Kubernetes and the underlying c infrastructure, the cloud-controller-manager component enables cloud providers to release features at a different pace compared to the main Kubernetes project. --> -通过分离 Kubernetes 和底层云基础设置之间的互操作性逻辑,云控制器管理器组件使云提供商能够以不同于 Kubernetes 主项目的速度进行发布新特征。 \ No newline at end of file +通过分离 Kubernetes 和底层云基础设置之间的互操作性逻辑, +云控制器管理器组件使云提供商能够以不同于 Kubernetes 主项目的速度进行发布新特征。 \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/cloud-provider.md b/content/zh/docs/reference/glossary/cloud-provider.md index 86f3c1f3f5..8ab7e7a06f 100755 --- a/content/zh/docs/reference/glossary/cloud-provider.md +++ b/content/zh/docs/reference/glossary/cloud-provider.md @@ -58,8 +58,8 @@ elements such as load balancers. 针对托管的基础设施,云供应商负责服务器、存储和网络,而用户(你) 负责管理其上运行的各层软件,例如运行一个 Kubernetes 集群。 -你也会看到 Kubernetes 被作为托管服务提供;有时也称作平台即服务或 PaaS 。 -针对托管的 Kubernetes ,你的云供应商负责 Kubernetes 的控制面以及 +你也会看到 Kubernetes 被作为托管服务提供;有时也称作平台即服务或 PaaS。 +针对托管的 Kubernetes,你的云供应商负责 Kubernetes 的控制面以及 {{< glossary_tooltip term_id="node" text="节点" >}} 及他们所依赖的基础设施: 网络、存储以及其他一些诸如负载均衡器之类的元素。 diff --git a/content/zh/docs/reference/glossary/cluster-operations.md b/content/zh/docs/reference/glossary/cluster-operations.md index 4c3787eb61..43a9bba4b0 100644 --- a/content/zh/docs/reference/glossary/cluster-operations.md +++ b/content/zh/docs/reference/glossary/cluster-operations.md @@ -30,7 +30,7 @@ tags: The work involved in managing a Kubernetes cluster: managing day-to-day operations, and co-ordinating upgrades. --> - Kubernetes 管理相关工作包括:日常管理操作和协调升级。 +Kubernetes 管理相关工作包括:日常管理操作和协调升级。 -群集操作工作的示例包括:部署新节点来扩容集群;执行软件升级;实施安全控制;添加或删除存储;配置集群网络;管理集群范围的可观测性;响应集群事件。 \ No newline at end of file +群集操作工作的示例包括:部署新节点来扩容集群;执行软件升级;实施安全控制; +添加或删除存储;配置集群网络;管理集群范围的可观测性;响应集群事件。 \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/cluster.md b/content/zh/docs/reference/glossary/cluster.md index ea850590d6..74d48ff2c2 100644 --- a/content/zh/docs/reference/glossary/cluster.md +++ b/content/zh/docs/reference/glossary/cluster.md @@ -43,4 +43,5 @@ nodes and the Pods in the cluster. In production environments, the control plane runs across multiple computers and a cluster usually runs multiple nodes, providing fault-tolerance and high availability. --> -工作节点托管作为应用负载的组件的 Pod 。控制平面管理集群中的工作节点和 Pod 。为集群提供故障转移和高可用性,这些控制平面一般跨多主机运行,集群跨多个节点运行。 +工作节点托管作为应用负载的组件的 Pod 。控制平面管理集群中的工作节点和 Pod 。 +为集群提供故障转移和高可用性,这些控制平面一般跨多主机运行,集群跨多个节点运行。 diff --git a/content/zh/docs/reference/glossary/containerd.md b/content/zh/docs/reference/glossary/containerd.md index e764362cc6..00d465b8c4 100644 --- a/content/zh/docs/reference/glossary/containerd.md +++ b/content/zh/docs/reference/glossary/containerd.md @@ -35,5 +35,5 @@ that runs as a daemon on Linux or Windows. containerd takes care of fetching and storing container images, executing containers, providing network access, and more. --> -containerd 是一种 {{< glossary_tooltip text="容器" term_id="container" >}} 运行时,能在 Linux 或者 Windows 后台运行。 +containerd 是一种{{< glossary_tooltip text="容器" term_id="container" >}}运行时,能在 Linux 或者 Windows 后台运行。 containerd 能取回、存储容器镜像,执行容器实例,提供网络访问等。 diff --git a/content/zh/docs/reference/glossary/contributor.md b/content/zh/docs/reference/glossary/contributor.md index daebea1511..de79a4c984 100644 --- a/content/zh/docs/reference/glossary/contributor.md +++ b/content/zh/docs/reference/glossary/contributor.md @@ -35,5 +35,5 @@ tags: Contributions include pull requests (PRs), issues, feedback, {{< glossary_tooltip text="special interest groups (SIG)" term_id="sig" >}} participation, or organizing community events. --> -贡献形式包括提交拉取请求(PRs)、问题报告(Issues)、反馈、参与 {{< glossary_tooltip text="特别兴趣小组(SIG)" term_id="sig" >}} 或者组织社区活动等等。 +贡献形式包括提交拉取请求(PRs)、问题报告(Issues)、反馈、参与{{< glossary_tooltip text="特别兴趣小组(SIG)" term_id="sig" >}}或者组织社区活动等等。 diff --git a/content/zh/docs/reference/glossary/controller.md b/content/zh/docs/reference/glossary/controller.md index c24a7fa65c..e60b710603 100644 --- a/content/zh/docs/reference/glossary/controller.md +++ b/content/zh/docs/reference/glossary/controller.md @@ -35,10 +35,9 @@ changes where needed. Each controller tries to move the current cluster state closer to the desired state. --> - - - 在 Kubernetes 中,控制器通过监控 {{< glossary_tooltip text="集群" term_id="cluster" >}} 的公共状态,并致力于将当前状态转变为期望的状态。 +在 Kubernetes 中,控制器通过监控{{< glossary_tooltip text="集群" term_id="cluster" >}} +的公共状态,并致力于将当前状态转变为期望的状态。 @@ -48,7 +47,8 @@ Controllers watch the shared state of your cluster through the {{< glossary_tooltip text="apiserver" term_id="kube-apiserver" >}} (part of the {{< glossary_tooltip term_id="control-plane" >}}). --> -控制器({{< glossary_tooltip text="控制平面" term_id="control-plane" >}}的一部分)通过{{< glossary_tooltip text="apiserver" term_id="kube-apiserver" >}}监控你的集群中的公共状态。 +控制器({{< glossary_tooltip text="控制平面" term_id="control-plane" >}}的一部分) +通过 {{< glossary_tooltip text="apiserver" term_id="kube-apiserver" >}} 监控你的集群中的公共状态。 -其中一些控制器是运行在控制平面内部的,对Kubernates来说,他们提供核心控制操作。比如:部署控制器(deployment controller)、守护控制器(daemonset controller)、命名空间控制器(namespace controller)、持久化数据卷控制器(persistent volume -controller)(等)都是运行在{{< glossary_tooltip text="kube-controller-manager" term_id="kube-controller-manager" >}}中的。 +其中一些控制器是运行在控制平面内部的,对 Kubernetes 来说,他们提供核心控制操作。 +比如:部署控制器(deployment controller)、守护控制器(daemonset controller)、 +命名空间控制器(namespace controller)、持久化数据卷控制器(persistent volume +controller)(等)都是运行在 {{< glossary_tooltip text="kube-controller-manager" term_id="kube-controller-manager" >}} 中的。 diff --git a/content/zh/docs/reference/glossary/cri-o.md b/content/zh/docs/reference/glossary/cri-o.md index c59a60eff4..c5b0e824a5 100644 --- a/content/zh/docs/reference/glossary/cri-o.md +++ b/content/zh/docs/reference/glossary/cri-o.md @@ -44,4 +44,6 @@ Deploying CRI-O allows Kubernetes to use any OCI-compliant runtime as the contai runtime for running {{< glossary_tooltip text="Pods" term_id="pod" >}}, and to fetch OCI container images from remote registries. --> -部署 CRI-O 允许 Kubernetes 使用任何符合 OCI 的运行时,作为容器运行环境去运行 {{< glossary_tooltip text="Pods" term_id="pod" >}},并从远程注册表获取 OCI 容器镜像。 \ No newline at end of file +部署 CRI-O 允许 Kubernetes 使用任何符合 OCI 的运行时, +作为容器运行环境去运行 {{< glossary_tooltip text="Pods" term_id="pod" >}}, +并从远程注册表获取 OCI 容器镜像。 \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/csi.md b/content/zh/docs/reference/glossary/csi.md index a02c07acc5..89bb66cafd 100644 --- a/content/zh/docs/reference/glossary/csi.md +++ b/content/zh/docs/reference/glossary/csi.md @@ -42,7 +42,11 @@ CSI allows vendors to create custom storage plugins for Kubernetes without addin * [List of available CSI drivers](https://kubernetes-csi.github.io/docs/drivers.html) --> -CSI 允许存储驱动提供商为 Kubernetes 创建定制化的存储插件,而无需将这些插件的代码添加到 Kubernetes 代码仓库(外部插件)。要使用某个存储提供商的 CSI 驱动,你首先要[将它部署到你的集群上](https://kubernetes-csi.github.io/docs/deploying.html)。然后你才能创建使用该 CSI 驱动的 {{< glossary_tooltip text="Storage Class" term_id="storage-class" >}} 。 +CSI 允许存储驱动提供商为 Kubernetes 创建定制化的存储插件, +而无需将这些插件的代码添加到 Kubernetes 代码仓库(外部插件)。 +要使用某个存储提供商的 CSI 驱动,你首先要 +[将它部署到你的集群上](https://kubernetes-csi.github.io/docs/deploying.html)。 +然后你才能创建使用该 CSI 驱动的 {{< glossary_tooltip text="Storage Class" term_id="storage-class" >}} 。 * [Kubernetes 文档中关于 CSI 的描述](/zh/docs/concepts/storage/volumes/#csi) * [可用的 CSI 驱动列表](https://kubernetes-csi.github.io/docs/drivers.html) diff --git a/content/zh/docs/reference/glossary/deployment.md b/content/zh/docs/reference/glossary/deployment.md index c7e218699e..ca52523e46 100644 --- a/content/zh/docs/reference/glossary/deployment.md +++ b/content/zh/docs/reference/glossary/deployment.md @@ -44,4 +44,5 @@ Each replica is represented by a {{< glossary_tooltip term_id="pod" >}}, and the For workloads that do require local state, consider using a {{< glossary_tooltip term_id="StatefulSet" >}}. --> -应用的每个副本就是一个 {{< glossary_tooltip text="Pod" term_id="pod" >}},并且这些 Pod 会分散运行在集群的{{< glossary_tooltip text="节点" term_id="node" >}}上。 +应用的每个副本就是一个 {{< glossary_tooltip text="Pod" term_id="pod" >}}, +并且这些 Pod 会分散运行在集群的{{< glossary_tooltip text="节点" term_id="node" >}}上。 diff --git a/content/zh/docs/reference/glossary/developer.md b/content/zh/docs/reference/glossary/developer.md index 2d6dbf7eba..1ca23e374f 100644 --- a/content/zh/docs/reference/glossary/developer.md +++ b/content/zh/docs/reference/glossary/developer.md @@ -28,7 +28,9 @@ tags: --- --> - 指的是: {{< glossary_tooltip text="应用开发者" term_id="application-developer" >}}、 {{< glossary_tooltip text="代码贡献者" term_id="code-contributor" >}}、或 {{< glossary_tooltip text="平台开发者" term_id="platform-developer" >}}。 + 指的是:{{< glossary_tooltip text="应用开发者" term_id="application-developer" >}}、 + {{< glossary_tooltip text="代码贡献者" term_id="code-contributor" >}}、 + 或{{< glossary_tooltip text="平台开发者" term_id="platform-developer" >}}。 diff --git a/content/zh/docs/reference/glossary/docker.md b/content/zh/docs/reference/glossary/docker.md index 5a7f5e871e..bec6c834f2 100644 --- a/content/zh/docs/reference/glossary/docker.md +++ b/content/zh/docs/reference/glossary/docker.md @@ -38,4 +38,5 @@ Docker (specifically, Docker Engine) is a software technology providing operatin Docker uses the resource isolation features of the Linux kernel such as cgroups and kernel namespaces, and a union-capable file system such as OverlayFS and others to allow independent "containers" to run within a single Linux instance, avoiding the overhead of starting and maintaining virtual machines (VMs). --> -Docker 使用了 Linux 内核中的资源隔离特性(如 cgroup 和内核命名空间)以及支持联合文件系统(如 OverlayFS 和其他),允许多个相互独立的“容器”一起运行在同一 Linux 实例上,从而避免启动和维护虚拟机(VMs)的开销。 +Docker 使用了 Linux 内核中的资源隔离特性(如 cgroup 和内核命名空间)以及支持联合文件系统(如 OverlayFS 和其他), +允许多个相互独立的“容器”一起运行在同一 Linux 实例上,从而避免启动和维护虚拟机(VMs)的开销。 diff --git a/content/zh/docs/reference/glossary/dynamic-volume-provisioning.md b/content/zh/docs/reference/glossary/dynamic-volume-provisioning.md index 839afdd471..5606af15a4 100644 --- a/content/zh/docs/reference/glossary/dynamic-volume-provisioning.md +++ b/content/zh/docs/reference/glossary/dynamic-volume-provisioning.md @@ -41,4 +41,6 @@ Dynamic provisioning eliminates the need for cluster administrators to pre-provi --> 动态供应让集群管理员无需再预先供应存储。相反,它通过用户请求自动地供应存储。 -动态卷供应是基于 API 对象 {{< glossary_tooltip text="储存类别" term_id="storage-class" >}} 的, StorageClass 可以引用 {{< glossary_tooltip text="卷插件" term_id="volume-plugin" >}} 提供的 {{< glossary_tooltip text="卷" term_id="volume" >}} ,也可以引用传递给卷插件(Volume Plugin)的参数集。 +动态卷供应是基于 API 对象 {{< glossary_tooltip text="StorageClass" term_id="storage-class" >}} 的, +StorageClass 可以引用 {{< glossary_tooltip text="卷插件" term_id="volume-plugin" >}} 提供的 +{{< glossary_tooltip text="卷" term_id="volume" >}},也可以引用传递给卷插件(Volume Plugin)的参数集。 diff --git a/content/zh/docs/reference/glossary/endpoint-slice.md b/content/zh/docs/reference/glossary/endpoint-slice.md index 8e918dfb67..dcfc35e308 100644 --- a/content/zh/docs/reference/glossary/endpoint-slice.md +++ b/content/zh/docs/reference/glossary/endpoint-slice.md @@ -37,4 +37,6 @@ establish network routes on each {{< glossary_tooltip text="node" term_id="node" --> -一种将网络端点组合在一起的可扩缩、可扩展方式。它们将被 {{< glossary_tooltip text="kube-proxy" term_id="kube-proxy" >}} 用于在每个 {{< glossary_tooltip text="节点" term_id="node">}} 上建立网络路由。 +一种将网络端点组合在一起的可扩缩、可扩展方式。 +它们将被 {{< glossary_tooltip text="kube-proxy" term_id="kube-proxy" >}} 用于在 +每个 {{< glossary_tooltip text="节点" term_id="node">}} 上建立网络路由。 diff --git a/content/zh/docs/reference/glossary/ephemeral-container.md b/content/zh/docs/reference/glossary/ephemeral-container.md index 215aaee4c5..d937404797 100644 --- a/content/zh/docs/reference/glossary/ephemeral-container.md +++ b/content/zh/docs/reference/glossary/ephemeral-container.md @@ -9,7 +9,7 @@ aka: tags: - fundamental --- - 您可以在 {{< glossary_tooltip term_id="pod" >}} 中临时运行的一种 {{< glossary_tooltip term_id="container" >}} 类型 + 您可以在 {{< glossary_tooltip term_id="pod" >}} 中临时运行的一种 {{< glossary_tooltip term_id="container" >}} 类型。 -如果想要调查运行中有问题的 Pod,可以向该 Pod 添加一个临时容器并进行诊断。临时容器没有资源或调度保证,因此不应该使用它们来运行任何部分的工作负荷本身。 \ No newline at end of file +如果想要调查运行中有问题的 Pod,可以向该 Pod 添加一个临时容器并进行诊断。 +临时容器没有资源或调度保证,因此不应该使用它们来运行任何部分的工作负荷本身。 \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/extensions.md b/content/zh/docs/reference/glossary/extensions.md index 234ebb2f09..dca292faf6 100644 --- a/content/zh/docs/reference/glossary/extensions.md +++ b/content/zh/docs/reference/glossary/extensions.md @@ -35,4 +35,6 @@ tags: Most cluster administrators will use a hosted or distribution instance of Kubernetes. As a result, most Kubernetes users will need to install [extensions](/docs/concepts/extend-kubernetes/extend-cluster/#extensions) and fewer will need to author new ones. --> -大多数集群管理员会使用托管的 Kubernetes 或其某种发行包。因此,大多数 Kubernetes 用户将需要安装 [扩展组件](/docs/concepts/extend-kubernetes/extend-cluster/#extensions),较少用户会需要编写新的扩展组件。 \ No newline at end of file +大多数集群管理员会使用托管的 Kubernetes 或其某种发行包。因此,大多数 Kubernetes 用户将需要 +安装 [扩展组件](/docs/concepts/extend-kubernetes/extend-cluster/#extensions), +较少用户会需要编写新的扩展组件。 \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/flexvolume.md b/content/zh/docs/reference/glossary/flexvolume.md index e74aabee45..51b0690392 100644 --- a/content/zh/docs/reference/glossary/flexvolume.md +++ b/content/zh/docs/reference/glossary/flexvolume.md @@ -35,7 +35,10 @@ tags: -Flexvolume 允许用户编写自己的驱动程序,并在 Kubernetes 中加入对用户自己的数据卷的支持。FlexVolume 驱动程序的二进制文件和依赖项必须安装在主机上。这需要 root 权限。如果可能的话,SIG Storage 建议实现 {{< glossary_tooltip text="CSI" term_id="csi" >}} 驱动程序,因为它解决了 Flexvolumes 的限制。 +Flexvolume 允许用户编写自己的驱动程序,并在 Kubernetes 中加入对用户自己的数据卷的支持。 +FlexVolume 驱动程序的二进制文件和依赖项必须安装在主机上。 +这需要 root 权限。如果可能的话,SIG Storage 建议实现 {{< glossary_tooltip text="CSI" term_id="csi" >}} 驱动程序, +因为它解决了 Flexvolumes 的限制。 Chart 提供了一种可重现的用来创建和共享 Kubernetes 应用的方法。 -单个 Chart 可用来部署简单的系统(例如一个 memcached Pod),也可以用来部署复杂的系统(例如包含 HTTP 服务器、数据库、缓存等组件的完整 Web 应用堆栈)。 +单个 Chart 可用来部署简单的系统(例如一个 memcached Pod), +也可以用来部署复杂的系统(例如包含 HTTP 服务器、数据库、缓存等组件的完整 Web 应用堆栈)。 diff --git a/content/zh/docs/reference/glossary/horizontal-pod-autoscaler.md b/content/zh/docs/reference/glossary/horizontal-pod-autoscaler.md index 0c8856a374..45e5033a5a 100644 --- a/content/zh/docs/reference/glossary/horizontal-pod-autoscaler.md +++ b/content/zh/docs/reference/glossary/horizontal-pod-autoscaler.md @@ -36,4 +36,7 @@ tags: HPA is typically used with {{< glossary_tooltip text="ReplicationControllers" term_id="replication-controller" >}}, {{< glossary_tooltip text="Deployments" term_id="deployment" >}}, or {{< glossary_tooltip text="ReplicaSets" term_id="replica-set" >}}. It cannot be applied to objects that cannot be scaled, for example {{< glossary_tooltip text="DaemonSets" term_id="daemonset" >}}. --> -HPA 通常用于 {{< glossary_tooltip text="ReplicationControllers" term_id="replication-controller" >}}、{{< glossary_tooltip text="Deployments" term_id="deployment" >}} 或者 {{< glossary_tooltip text="ReplicaSets" term_id="replica-set" >}} 上。HPA 不能用于不支持扩缩的对象,例如 {{< glossary_tooltip text="DaemonSets" term_id="daemonset" >}}。 +HPA 通常用于 {{< glossary_tooltip text="ReplicationControllers" term_id="replication-controller" >}} +、{{< glossary_tooltip text="Deployments" term_id="deployment" >}} +或者 {{< glossary_tooltip text="ReplicaSets" term_id="replica-set" >}} 上。 +HPA 不能用于不支持扩缩的对象,例如 {{< glossary_tooltip text="DaemonSets" term_id="daemonset" >}}。 diff --git a/content/zh/docs/reference/glossary/host-aliases.md b/content/zh/docs/reference/glossary/host-aliases.md index 6581acf209..c2be10bee2 100644 --- a/content/zh/docs/reference/glossary/host-aliases.md +++ b/content/zh/docs/reference/glossary/host-aliases.md @@ -33,5 +33,6 @@ tags: -[HostAliases](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#hostalias-v1-core) 是一个包含主机名和 IP 地址的可选列表,配置后将被注入到 Pod 内的 hosts 文件中。 +[HostAliases](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#hostalias-v1-core) +是一个包含主机名和 IP 地址的可选列表,配置后将被注入到 Pod 内的 hosts 文件中。 该选项仅适用于没有配置 hostNetwork 的 Pod. diff --git a/content/zh/docs/reference/glossary/init-container.md b/content/zh/docs/reference/glossary/init-container.md index daf9ee2307..7efeddb4e5 100644 --- a/content/zh/docs/reference/glossary/init-container.md +++ b/content/zh/docs/reference/glossary/init-container.md @@ -38,4 +38,5 @@ tags: Initialization (init) containers are like regular app containers, with one difference: init containers must run to completion before any app containers can start. Init containers run in series: each init container must run to completion before the next init container begins. --> -初始化(init)容器像常规应用容器一样,只有一点不同:初始化(init)容器必须在应用容器启动前运行完成。Init 容器的运行顺序:一个初始化(init)容器必须在下一个初始化(init)容器开始前运行完成。 +初始化(init)容器像常规应用容器一样,只有一点不同:初始化(init)容器必须在应用容器启动前运行完成。 +Init 容器的运行顺序:一个初始化(init)容器必须在下一个初始化(init)容器开始前运行完成。 diff --git a/content/zh/docs/reference/glossary/istio.md b/content/zh/docs/reference/glossary/istio.md index 6641e000a9..4a3300f4f6 100644 --- a/content/zh/docs/reference/glossary/istio.md +++ b/content/zh/docs/reference/glossary/istio.md @@ -41,5 +41,7 @@ Istio 是个开放平台(非 Kubernetes 特有),提供了一种统一的 Adding Istio does not require changing application code. It is a layer of infrastructure between a service and the network, which when combined with service deployments, is commonly referred to as a service mesh. Istio's control plane abstracts away the underlying cluster management platform, which may be Kubernetes, Mesosphere, etc. --> -添加 Istio 时不需要修改应用代码。它是基础设施的一层,介于服务和网络之间。当它和服务的 Deployment 相结合时,就构成了通常所谓的服务网格(Service Mesh)。Istio 的控制面抽象掉了底层的集群管理平台,这一集群管理平台可以是 Kubernetes、Mesosphere 等。 +添加 Istio 时不需要修改应用代码。它是基础设施的一层,介于服务和网络之间。 +当它和服务的 Deployment 相结合时,就构成了通常所谓的服务网格(Service Mesh)。 +Istio 的控制面抽象掉了底层的集群管理平台,这一集群管理平台可以是 Kubernetes、Mesosphere 等。 diff --git a/content/zh/docs/reference/glossary/job.md b/content/zh/docs/reference/glossary/job.md index a02d51031b..aa557297be 100644 --- a/content/zh/docs/reference/glossary/job.md +++ b/content/zh/docs/reference/glossary/job.md @@ -42,4 +42,5 @@ tags: Creates one or more {{< glossary_tooltip term_id="pod" >}} objects and ensures that a specified number of them successfully terminate. As Pods successfully complete, the Job tracks the successful completions. --> -Job 创建一个或多个 {{< glossary_tooltip term_id="Pod" >}} 对象,并确保指定数量的 Pod 成功终止。随着各 Pod 成功结束,Job 会跟踪记录成功完成的个数。 +Job 创建一个或多个 {{< glossary_tooltip term_id="Pod" >}} 对象,并确保指定数量的 Pod 成功终止。 +随着各 Pod 成功结束,Job 会跟踪记录成功完成的个数。 diff --git a/content/zh/docs/reference/glossary/kube-controller-manager.md b/content/zh/docs/reference/glossary/kube-controller-manager.md index 7d737d439e..5d18857fde 100644 --- a/content/zh/docs/reference/glossary/kube-controller-manager.md +++ b/content/zh/docs/reference/glossary/kube-controller-manager.md @@ -35,5 +35,6 @@ tags: -从逻辑上讲,每个 {{< glossary_tooltip text="控制器" term_id="controller" >}} 都是一个单独的进程,但是为了降低复杂性,它们都被编译到同一个可执行文件,并在一个进程中运行。 +从逻辑上讲,每个{{< glossary_tooltip text="控制器" term_id="controller" >}}都是一个单独的进程, +但是为了降低复杂性,它们都被编译到同一个可执行文件,并在一个进程中运行。 diff --git a/content/zh/docs/reference/glossary/kube-proxy.md b/content/zh/docs/reference/glossary/kube-proxy.md index 998e1c0e28..2b1048147f 100644 --- a/content/zh/docs/reference/glossary/kube-proxy.md +++ b/content/zh/docs/reference/glossary/kube-proxy.md @@ -27,7 +27,8 @@ tags: - [kube-proxy](/zh/docs/reference/command-line-tools-reference/kube-proxy/) 是集群中每个节点上运行的网络代理,实现 Kubernetes {{< glossary_tooltip term_id="service">}} 概念的一部分。 +[kube-proxy](/zh/docs/reference/command-line-tools-reference/kube-proxy/) 是集群中每个节点上运行的网络代理, +实现 Kubernetes {{< glossary_tooltip term_id="service">}} 概念的一部分。 diff --git a/content/zh/docs/reference/glossary/security-context.md b/content/zh/docs/reference/glossary/security-context.md index 3398a7c53a..864e693735 100644 --- a/content/zh/docs/reference/glossary/security-context.md +++ b/content/zh/docs/reference/glossary/security-context.md @@ -32,7 +32,8 @@ a {{< glossary_tooltip text="Pod" term_id="pod" >}} or {{< glossary_tooltip text="container" term_id="container" >}}. --> -securityContext 字段定义 {{< glossary_tooltip text="Pod" term_id="pod" >}} 或 {{< glossary_tooltip text="container(容器)" term_id="container" >}} 的特权和访问控制设置。 +securityContext 字段定义 {{< glossary_tooltip text="Pod" term_id="pod" >}} 或 +{{< glossary_tooltip text="容器" term_id="container" >}}的特权和访问控制设置。 diff --git a/content/zh/docs/reference/glossary/selector.md b/content/zh/docs/reference/glossary/selector.md index 8afe309b36..7a1343090f 100644 --- a/content/zh/docs/reference/glossary/selector.md +++ b/content/zh/docs/reference/glossary/selector.md @@ -32,7 +32,7 @@ tags: Allows users to filter a list of resources based on {{< glossary_tooltip text="labels" term_id="label" >}}. --> -选择算符允许用户通过 {{< glossary_tooltip text="标签(labels)" term_id="label" >}} 对一组资源对象进行筛选过滤。 +选择算符允许用户通过{{< glossary_tooltip text="标签(labels)" term_id="label" >}}对一组资源对象进行筛选过滤。 diff --git a/content/zh/docs/reference/glossary/service-account.md b/content/zh/docs/reference/glossary/service-account.md index 60e030eaed..e54a4ef98b 100644 --- a/content/zh/docs/reference/glossary/service-account.md +++ b/content/zh/docs/reference/glossary/service-account.md @@ -39,5 +39,7 @@ tags: -当 Pod 中的进程访问集群时,API 服务器将它们作为特定的服务帐户进行身份验证,例如 `default` ,创建 Pod 时,如果你没有指定服务帐户,它将自动被赋予同一个 {{< glossary_tooltip text="名字空间" term_id="namespace" >}} 中的 default 服务账户。 +当 Pod 中的进程访问集群时,API 服务器将它们作为特定的服务帐户进行身份验证, +例如 `default` ,创建 Pod 时,如果你没有指定服务帐户,它将自动被赋予同一个 +{{< glossary_tooltip text="名字空间" term_id="namespace" >}}中的 default 服务账户。 diff --git a/content/zh/docs/reference/glossary/service-broker.md b/content/zh/docs/reference/glossary/service-broker.md index c74975521d..b8afe97d70 100644 --- a/content/zh/docs/reference/glossary/service-broker.md +++ b/content/zh/docs/reference/glossary/service-broker.md @@ -29,7 +29,7 @@ tags: -由第三方提供并维护的一组 {{< glossary_tooltip text="托管服务(Managed Services)" term_id="managed-service">}} 的访问端点。 +由第三方提供并维护的一组{{< glossary_tooltip text="托管服务" term_id="managed-service">}}的访问端点。 @@ -41,7 +41,7 @@ and provide a standard interface for applications to use their Managed Services. list, provision, and bind with Managed Services offered by Service Brokers. --> -{{< glossary_tooltip text="Service Brokers(服务代理)" term_id="service-broker">}}会实现 +{{< glossary_tooltip text="服务代理(Service Brokers)" term_id="service-broker">}}会实现 [开放服务代理 API 规范](https://github.com/openservicebrokerapi/servicebroker/blob/v2.13/spec.md) 并为应用提供使用其托管服务的标准接口。 [服务目录(Service Catalog)](/zh/docs/concepts/extend-kubernetes/service-catalog/)则提供一种方法,用来列举、供应和绑定服务代理商所提供的托管服务。 diff --git a/content/zh/docs/reference/glossary/service-catalog.md b/content/zh/docs/reference/glossary/service-catalog.md index cdfeae75ba..134085e034 100644 --- a/content/zh/docs/reference/glossary/service-catalog.md +++ b/content/zh/docs/reference/glossary/service-catalog.md @@ -39,5 +39,7 @@ tags: It provides a way to list, provision, and bind with external {{< glossary_tooltip text="Managed Services" term_id="managed-service" >}} from {{< glossary_tooltip text="Service Brokers" term_id="service-broker" >}} without needing detailed knowledge about how those services are created or managed. --> -服务目录可以检索、供应、和绑定由 {{< glossary_tooltip text="Service Brokers(服务代理人)" term_id="service-broker" >}} 提供的外部 {{< glossary_tooltip text="托管服务(Managed Services)" term_id="managed-service" >}},而无需知道那些服务具体是怎样创建和托管的。 +服务目录可以检索、供应、和绑定由 {{< glossary_tooltip text="服务代理人(Service Brokers)" term_id="service-broker" >}} +提供的外部{{< glossary_tooltip text="托管服务(Managed Services)" term_id="managed-service" >}}, +而无需知道那些服务具体是怎样创建和托管的。 diff --git a/content/zh/docs/reference/glossary/service.md b/content/zh/docs/reference/glossary/service.md index 7b4556dac7..b6a0fab287 100644 --- a/content/zh/docs/reference/glossary/service.md +++ b/content/zh/docs/reference/glossary/service.md @@ -40,4 +40,6 @@ An abstract way to expose an application running on a set of {{< glossary_toolti -服务所针对的 Pod 集(通常)由 {{< glossary_tooltip text="选择算符" term_id="selector" >}} 确定。 如果有 Pod 被添加或被删除,则与选择算符匹配的 Pod 集合将发生变化。服务确保可以将网络流量定向到该工作负载的当前 Pod 集合。 \ No newline at end of file +服务所针对的 Pod 集(通常)由{{< glossary_tooltip text="选择算符" term_id="selector" >}}确定。 +如果有 Pod 被添加或被删除,则与选择算符匹配的 Pod 集合将发生变化。 +服务确保可以将网络流量定向到该工作负载的当前 Pod 集合。 \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/statefulset.md b/content/zh/docs/reference/glossary/statefulset.md index 6c23f796d4..6e796d9419 100644 --- a/content/zh/docs/reference/glossary/statefulset.md +++ b/content/zh/docs/reference/glossary/statefulset.md @@ -34,16 +34,22 @@ tags: -StatefulSet 用来管理某 {{< glossary_tooltip text="Pod" term_id="pod" >}} 集合的部署和扩缩,并为这些 Pod 提供持久存储和持久标识符。 +StatefulSet 用来管理某 {{< glossary_tooltip text="Pod" term_id="pod" >}} 集合的部署和扩缩, +并为这些 Pod 提供持久存储和持久标识符。 -和 {{< glossary_tooltip text="Deployment" term_id="deployment" >}} 类似,StatefulSet 管理基于相同容器规约的一组 Pod。但和 Deployment 不同的是,StatefulSet 为它们的每个 Pod 维护了一个有粘性的 ID。这些 Pod 是基于相同的规约来创建的,但是不能相互替换:无论怎么调度,每个 Pod 都有一个永久不变的 ID。 +和 {{< glossary_tooltip text="Deployment" term_id="deployment" >}} 类似, +StatefulSet 管理基于相同容器规约的一组 Pod。但和 Deployment 不同的是, +StatefulSet 为它们的每个 Pod 维护了一个有粘性的 ID。这些 Pod 是基于相同的规约来创建的, +但是不能相互替换:无论怎么调度,每个 Pod 都有一个永久不变的 ID。 -如果希望使用存储卷为工作负载提供持久存储,可以使用 StatefulSet 作为解决方案的一部分。尽管 StatefulSet 中的单个 Pod 仍可能出现故障,但持久的 Pod 标识符使得将现有卷与替换已失败 Pod 的新 Pod 相匹配变得更加容易。 \ No newline at end of file +如果希望使用存储卷为工作负载提供持久存储,可以使用 StatefulSet 作为解决方案的一部分。 +尽管 StatefulSet 中的单个 Pod 仍可能出现故障, +但持久的 Pod 标识符使得将现有卷与替换已失败 Pod 的新 Pod 相匹配变得更加容易。 \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/storage-class.md b/content/zh/docs/reference/glossary/storage-class.md index 92fbea586b..1ad1834b15 100644 --- a/content/zh/docs/reference/glossary/storage-class.md +++ b/content/zh/docs/reference/glossary/storage-class.md @@ -40,4 +40,7 @@ tags: StorageClasses can map to quality-of-service levels, backup policies, or to arbitrary policies determined by cluster administrators. Each StorageClass contains the fields `provisioner`, `parameters`, and `reclaimPolicy`, which are used when a {{< glossary_tooltip text="Persistent Volume" term_id="persistent-volume" >}} belonging to the class needs to be dynamically provisioned. Users can request a particular class using the name of a StorageClass object. --> -StorageClass 可以映射到服务质量等级(QoS)、备份策略、或者管理员任意定义的策略。每个 StorageClass 对象包含的字段有 `provisioner`、`parameters` 和 `reclaimPolicy`。动态制备该存储类别的 {{< glossary_tooltip text="持久卷" term_id="persistent-volume" >}}时需要用到这些字段值。通过设置 StorageClass 对象的名称,用户可以请求特定存储类别。 \ No newline at end of file +StorageClass 可以映射到服务质量等级(QoS)、备份策略、或者管理员任意定义的策略。 +每个 StorageClass 对象包含的字段有 `provisioner`、`parameters` 和 `reclaimPolicy`。 +动态制备该存储类别的{{< glossary_tooltip text="持久卷" term_id="persistent-volume" >}}时需要用到这些字段值。 +通过设置 StorageClass 对象的名称,用户可以请求特定存储类别。 \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/sysctl.md b/content/zh/docs/reference/glossary/sysctl.md index 317b20ff4d..b987583df7 100644 --- a/content/zh/docs/reference/glossary/sysctl.md +++ b/content/zh/docs/reference/glossary/sysctl.md @@ -48,4 +48,4 @@ uses. network plugins may rely on `sysctl` values being set a certain way. --> -{{< glossary_tooltip text="容器" term_id="container" >}} 运行时和网络插件可能对 `sysctl` 的取值有一定的要求。 +{{< glossary_tooltip text="容器" term_id="container" >}}运行时和网络插件可能对 `sysctl` 的取值有一定的要求。 diff --git a/content/zh/docs/reference/glossary/taint.md b/content/zh/docs/reference/glossary/taint.md index 30b4b9fb88..39f2c0ff5d 100644 --- a/content/zh/docs/reference/glossary/taint.md +++ b/content/zh/docs/reference/glossary/taint.md @@ -30,7 +30,9 @@ tags: -污点是一种一个核心对象,包含三个必需的属性:key、value 和 effect。污点会阻止在{{< glossary_tooltip text="节点" term_id="node" >}}或节点组上调度 {{< glossary_tooltip text="Pods" term_id="pod" >}}。 +污点是一种一个核心对象,包含三个必需的属性:key、value 和 effect。 +污点会阻止在{{< glossary_tooltip text="节点" term_id="node" >}} +或节点组上调度 {{< glossary_tooltip text="Pods" term_id="pod" >}}。 @@ -39,4 +41,6 @@ tags: Taints and {{< glossary_tooltip text="tolerations" term_id="toleration" >}} work together to ensure that pods are not scheduled onto inappropriate nodes. One or more taints are applied to a node. A node should only schedule a Pod with the matching tolerations for the configured taints. --> -污点和 {{< glossary_tooltip text="容忍度" term_id="toleration" >}} 一起工作,以确保不会将 Pod 调度到不适合的节点上。同一 {< glossary_tooltip text="节点" term_id="node" >}}上可应用一个或多个污点。节点应该仅调度那些带着能与污点相匹配容忍度的 Pod。 \ No newline at end of file +污点和{{< glossary_tooltip text="容忍度" term_id="toleration" >}}一起工作,以确保不会将 Pod 调度到不适合的节点上。 +同一{< glossary_tooltip text="节点" term_id="node" >}}上可应用一个或多个污点。 +节点应该仅调度那些带着能与污点相匹配容忍度的 Pod。 \ No newline at end of file diff --git a/content/zh/docs/reference/glossary/toleration.md b/content/zh/docs/reference/glossary/toleration.md index db16d20fa1..bc5b84e7e9 100644 --- a/content/zh/docs/reference/glossary/toleration.md +++ b/content/zh/docs/reference/glossary/toleration.md @@ -30,7 +30,8 @@ tags: - 一个核心对象,由三个必需的属性组成:key、value 和 effect。容忍度允许将 Pod 调度到具有匹配 {{< glossary_tooltip text="污点" term_id="taint" >}} 的节点或节点组上。 + 一个核心对象,由三个必需的属性组成:key、value 和 effect。 + 容忍度允许将 Pod 调度到具有匹配{{< glossary_tooltip text="污点" term_id="taint" >}}的节点或节点组上。 @@ -39,4 +40,7 @@ tags: - 容忍度 和 {{< glossary_tooltip text="污点" term_id="taint" >}} 共同作用以确保不会将 Pod 调度在不适合的节点上。在同一 {{< glossary_tooltip text="pod" term_id="pod" >}} 上可以设置一个或者多个容忍度。容忍度表示在匹配节点或节点组上的 {{< glossary_tooltip text="污点" term_id="taint" >}} 调度 {{< glossary_tooltip text="pod" term_id="pod" >}} 是允许的(但不必要)。 + 容忍度 和{{< glossary_tooltip text="污点" term_id="taint" >}}共同作用以确保不会将 Pod 调度在不适合的节点上。 + 在同一 {{< glossary_tooltip text="pod" term_id="pod" >}} 上可以设置一个或者多个容忍度。 + 容忍度表示在匹配节点或节点组上的{{< glossary_tooltip text="污点" term_id="taint" >}} + 调度 {{< glossary_tooltip text="pod" term_id="pod" >}} 是允许的(但不必要)。 diff --git a/content/zh/docs/reference/glossary/volume-plugin.md b/content/zh/docs/reference/glossary/volume-plugin.md index aa310caaaf..b04b8d8fbc 100644 --- a/content/zh/docs/reference/glossary/volume-plugin.md +++ b/content/zh/docs/reference/glossary/volume-plugin.md @@ -40,5 +40,7 @@ tags: A Volume Plugin lets you attach and mount storage volumes for use by a {{< glossary_tooltip text="Pod" term_id="pod" >}}. Volume plugins can be _in tree_ or _out of tree_. _In tree_ plugins are part of the Kubernetes code repository and follow its release cycle. _Out of tree_ plugins are developed independently. --> -卷插件让您能给 {{< glossary_tooltip text="Pod" term_id="pod" >}} 附加和挂载存储卷。卷插件既可以是 _in tree_ 也可以是 _out of tree_ 。_in tree_ 插件是 Kubernetes 代码库的一部分,并遵循其发布周期。而 _Out of tree_ 插件则是独立开发的。 +卷插件让您能给 {{< glossary_tooltip text="Pod" term_id="pod" >}} 附加和挂载存储卷。 +卷插件既可以是 _in tree_ 也可以是 _out of tree_ 。_in tree_ 插件是 Kubernetes 代码库的一部分, +并遵循其发布周期。而 _Out of tree_ 插件则是独立开发的。 diff --git a/content/zh/docs/reference/glossary/workload.md b/content/zh/docs/reference/glossary/workload.md index fff6d819b9..394b42bd1c 100644 --- a/content/zh/docs/reference/glossary/workload.md +++ b/content/zh/docs/reference/glossary/workload.md @@ -42,6 +42,7 @@ For example, a workload that has a web server and a database might run the database in one {{< glossary_tooltip term_id="StatefulSet" >}} and the web server in a {{< glossary_tooltip term_id="Deployment" >}}. --> -代表不同类型或部分工作负载的各种核心对象包括 DaemonSet, Deployment, Job, ReplicaSet, and StatefulSet。 +代表不同类型或部分工作负载的各种核心对象包括 DaemonSet, Deployment, Job, ReplicaSet, and StatefulSet。 -例如,具有 Web 服务器和数据库的工作负载可能在一个 {{< glossary_tooltip term_id="StatefulSet" >}} 中运行数据库,而 Web 服务器运行在 {{< glossary_tooltip term_id="Deployment" >}}。 \ No newline at end of file +例如,具有 Web 服务器和数据库的工作负载可能在一个 {{< glossary_tooltip term_id="StatefulSet" >}} 中运行数据库, +而 Web 服务器运行在 {{< glossary_tooltip term_id="Deployment" >}}。 \ No newline at end of file From 9af43634cc0f7abc0eaba7a4080a12db25e99b34 Mon Sep 17 00:00:00 2001 From: zhaojizhuang <571130360@qq.com> Date: Mon, 30 Nov 2020 21:43:31 +0800 Subject: [PATCH 56/80] [zh] Sync using-api --- .../docs/reference/using-api/api-concepts.md | 854 ++---------------- .../reference/using-api/client-libraries.md | 38 +- .../reference/using-api/deprecation-policy.md | 16 +- .../reference/using-api/server-side-apply.md | 4 +- 4 files changed, 87 insertions(+), 825 deletions(-) diff --git a/content/zh/docs/reference/using-api/api-concepts.md b/content/zh/docs/reference/using-api/api-concepts.md index c3b7f54fec..32ae97bfa5 100644 --- a/content/zh/docs/reference/using-api/api-concepts.md +++ b/content/zh/docs/reference/using-api/api-concepts.md @@ -198,7 +198,7 @@ A given Kubernetes server will only preserve a historical list of changes for a To mitigate the impact of short history window, we introduced a concept of `bookmark` watch event. It is a special kind of event to mark that all changes up to a given `resourceVersion` the client is requesting have already been sent. Object returned in that event is of the type requested by the request, but only `resourceVersion` field is set, e.g.: --> -### 监视书签(Watch Bookmark) +### 监视书签 {#Watch-bookmark} 为了处理历史窗口过短的问题,我们引入了 `bookmark(书签)` 监视事件的概念。 该事件是一种特殊事件,用来标示客户端所请求的、指定的 `resourceVersion` 之前 @@ -233,7 +233,7 @@ Content-Type: application/json -## 分块检视大体量结果 +## 分块检视大体量结果 {#retrieving-large-results-sets-in-chunks} {{< feature-state for_k8s_version="v1.9" state="beta" >}} @@ -367,7 +367,7 @@ list 请求时不指定 `continue` 令牌。 The output from the `kubectl get` command is a simple tabular representation of one or more instances of a particular resource type. In the past, clients were required to reproduce the tabular and describe output implemented in `kubectl` to perform simple lists of objects. A few limitations of that approach include non-trivial logic when dealing with certain objects. Additionally, types provided by API aggregation or third party resources are not known at compile time. This means that generic implementations had to be in place for types unrecognized by a client. --> -## 以表格形式接收资源 +## 以表格形式接收资源 {#receiving-resources-as-tables} `kubectl get` 命令的输出是一个包含一个或多个资源的简单表格形式。 过去,客户端需要重复 `kubectl` 中所实现的表格输出和描述输出逻辑,以执行 @@ -469,7 +469,7 @@ See the API documentation for a list of supported content types for each API. For example: --> -## 资源的其他表示形式 +## 资源的其他表示形式 {#alternate-representations-of-resources} 默认情况下,Kubernetes 返回 JSON 序列化的的对象并设定内容类型为 `application/json`。这是 API 的默认序列化格式。 @@ -531,7 +531,7 @@ their `Accept` header to support fallback to JSON: API 扩展而加入的资源。如果客户端必须能够处理所有资源类型,则应在其 `Accept` 头部指定多种内容类型以便可以回退到 JSON 格式: -``` +```console Accept: application/vnd.kubernetes.protobuf, application/json ``` @@ -553,7 +553,7 @@ Kubernetes 使用封套形式来对 Protobuf 响应进行编码。 封套格式如下: -``` +```console 四个字节的特殊数字前缀: 字节 0-3: "k8s\x00" [0x6b, 0x38, 0x73, 0x00] @@ -623,7 +623,7 @@ Clients that receive a response in `application/vnd.kubernetes.protobuf` that do Resources are deleted in two phases: 1) finalization, and 2) removal. --> -## 资源删除 +## 资源删除 {#resource-deletion} 资源删除要经过两个阶段:1) 终止(finalization),和 2)去除。 @@ -811,775 +811,18 @@ Some values of an object are typically generated before the object is persisted. {{< feature-state for_k8s_version="v1.16" state="beta" >}} -从 Kubernetes v1.18 开始,如果你启动了服务器端应用(Service Side Apply)功能 -特性,则控制面会跟踪所有新创建的对象的托管字段(Managed Fields)。 - - -### 介绍 {#introduction} - -服务器端应用可以通过声明式配置帮助用户和控制器管理其资源。此功能特性允许 -用户和控制器通过将完全设定的意愿发送到服务器以声明式方式创建与/或更改其对象。 - -完全设定的意愿(Fully Specified Intent)是对象的一个部分,仅包含用户希望表达 -其意愿的字段和取值。此意愿或者是要创建一个新的对象,或者是由服务器来负责 -完成的、与现有对象的[合并](#merge-strategy)。 - -系统支持多个施加者(Applier)同一个对象上进行协作。 - - -对对象字段的变更是通过“[字段管理](#field-management)”来进行跟踪的。 -当字段的值发生变化时,其属主从其当前的管理器切换为作出变更的管理器。 -尝试应用对象时,取值不同的字段以及由另一个管理器所拥有的字段都会导致 -[冲突](#conflicts)。引发冲突的目的是通告该操作可能会撤销掉另一协作方 -所做的变更。冲突可以被强制解决,从而导致字段取值被覆盖且其属主关系 -被转移。 - - -如果你从配置中去除了一个字段并应用该配置,服务器端应用组件会检查是否有其他字段 -管理器也拥有该字段。如果该字段不再被任何其他字段管理器所拥有,则或者它会被 -从现时对象上删除,或者会被重置为其默认值(假设有的话)。 -同样的规则也适用于关联列表或映射条目。 - -服务器端应用旨在成为原来的 `kubectl apply` 的替代技术,同时也作为控制器来 -施加其变更的一种更简单的机制。 - - -### 字段管理 {#field-management} - -与 `kubectl` 所管理的 `last-applied` 注解相比,服务器端应用机制使用的是一种 -更为贴近声明式管理的方法。该方法会跟踪用户的字段管理而不是其上一次应用的 -状态。这就意味着,作为服务器端应用的一种副作用,关于哪个字段管理器管理对象中 -哪个字段的信息也变得透明。 - -从服务器端应用的角度,让用户来管理字段意味着用户可以相信并期望字段不会发生变更。 -上次对某字段取值做出断言的用户会被记录为当前的字段管理器。 -这一记录操作可以通过使用 `POST`、`PUT` 或非应用性(non-apply)的 `PATCH` 去 -更改字段值来实现,或者将字段包含在发送该服务器端应用末端的配置中来实现。 -当使用服务器端应用特性时,尝试更给由其他人所管理的字段会导致请求被拒绝 -(这里指非强制应用场景,参见[冲突](#conflicts))。 - - -当两个或者多个施加者将某字段设置为相同的值,它们会共享字段的属主地位。 -由任何施加者所发起的、尝试变更共享字段取值的请求都会导致冲突。 -共享字段的属主可以通过将字段从其配置中去除来放弃其属主角色。 - -字段管理信息保存在 `managedFields` 字段中,而该字段是对象 -[`metadata`](/docs/reference/generated/kubernetes-api/{{< latest-version >}}/#objectmeta-v1-meta) -的一部分。 - -通过服务器端应用创建的对象的一个简单例子看起来可能像这样: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: test-cm - namespace: default - labels: - test-label: test - managedFields: - - manager: kubectl - operation: Apply - apiVersion: v1 - time: "2010-10-10T0:00:00Z" - fieldsType: FieldsV1 - fieldsV1: - f:metadata: - f:labels: - f:test-label: {} - f:data: - f:key: {} -data: - key: some value -``` - - -上面的对象在其 `metadata.managedFields` 中包含了唯一的管理器。管理器记录中 -包含了管理实体自身的一些基本信息,例如操作类型、API 版本以及所管理的字段。 - -此字段由 API 服务器管理,因而不应被用户修改。 - -尽管如此,通过 `Update` 操作来更改 `metadata.managedFields` 字段值还是可能的。 -这样做是非常不鼓励的,但在某些场合也可能是一种合理的选择。例如,`managedFields` -陷入了某种不一致的状态(很明显这种事不应该发生)。 - -`managedFields` 的格式在[API](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#fieldsv1-v1-meta) -中有详细描述。 - -### 冲突 {#conflicts} - - -冲突是一种特殊的状态错误,发生在某 `Apply` 操作尝试变更某字段,而另一个用户 -也声称要管理之的时候。冲突的检测可以避免某一施加者不小心覆盖另一个用户所设置 -的字段值。当发生冲突时,解决它的方法有三种: - - -- **覆盖字段值,成为唯一的管理器:** 如果有意要覆盖字段值(或者施加者本身是 - 一个控制器这种自动化进程),施加者应该设置查询参数 `force` 为 `true,并 - 再次发出请求。这样做会强迫操作成功,更改字段值,将字段从 `managedFields` - 中其他管理器项中去除。 - -- **不重载字段值,放弃管理主张:** 如果施加者不再关心字段取值,它们可以将字段 - 从其配置中删除并再次发出请求。这样做会保留字段值不变,同时从 `managedFields` - 中施加者条目中删除该字段。 - -- **不重载字段值,成为共享管理器:** 如果施加者仍然关心字段取值,但不想重载 - 其当前值,它可以将其配置中该字段的值更改为与服务器端对象上的值匹配,并再次 - 发出请求。这样做会保留字段取值不变,同时使得字段的管理权力被施加者以及所有 - 原来声称要管理该字段的其他字段管理器一起分享。 - - -### 管理器 {#managers} - -管理器标示更改对象的不同工作流(尤其是在有冲突的场合),可以作为更改对象的请求 -的一部分,在 `fieldManager` 查询参数中设定。该参数对于 Apply 操作的端点是必需 -的,尽管 `kubectl` 会将其默认设置为 `kubectl`。对于其他更新操作,其默认值是 -基于用户代理(User-agent)计算而来的。 - - -### 应用与更新 {#apply-and-update} - -服务器端应用所考虑的两种操作分别是 `Apply` (内容类型设置为 -`application/apply-patch+yaml` 的 `PATCH` 操作)和 `Update`(所有其他会更改 -对象的操作)。这两种操作都会更新 `managedFields` 字段值,但其行为略有不同。 - - -{{< note >}} -无论你所提交的是 JSON 数据或者 YAML 数据,都应将 `Content-Type` 头部字段 -的值设置为 `application/apply-patch+yaml`。 - -所有 JSON 文档也都是合法的 YAML 文档。 -{{< /note >}} - - -例如,发生冲突时只有 Apply 操作会失败,而 Update 操作不会失败。 -还有,Apply 操作要求通过提供一个 `fieldManager` 查询参数来标识自身,而 -对于 Update 操作而言,这一查询参数是可选的。 -最后,使用 Apply 操作时,被应用的对象中不能包含 `managedFields` 字段。 - -带有多个管理器的一个对象示例可能看起来是这个样子: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: test-cm - namespace: default - labels: - test-label: test - managedFields: - - manager: kubectl - operation: Apply - apiVersion: v1 - fields: - f:metadata: - f:labels: - f:test-label: {} - - manager: kube-controller-manager - operation: Update - apiVersion: v1 - time: '2019-03-30T16:00:00.000Z' - fields: - f:data: - f:key: {} -data: - key: new value -``` - - -在此例中,第二个操作是由一个称作 `kube-controller-manager` 的管理器所发起的 -`Update` 执行的。该 Update 操作更改了 data 字段的值,导致该字段的管理者被更改 -为 `kube-controller-manager`。 - - -{{< note >}} -如果此操作是一个 Apply 操作,则操作可能已因为属主冲突而失败。 -{{< /note >}} - - -### 合并策略 {#merge-strategy} - -服务器端应用所实现的合并策略能够支持相对更为稳定的对象生命周期。 -服务器端应用机制尝试基于字段的管理器是谁来合并字段而不是仅仅基于字段取值来判断。 -这种机制旨在通过减少意外的干扰而将多个主体更新同一对象的操作变得更为简单和稳定。 - -当用户发送一个“完全指定的意愿”对象到服务器端应用端点,如果字段值同时出现在现时 -对象中和所给的意愿对象中,服务器会优先选择应用配置中的字段值。 -如果应用的配置中存在的条目集合不是同一用户上次应用的条目集合的超集,所有未被其他 -施加者管理的、在应用的配置中缺失的条目都会被移除。 -关于如何使用对象的模式定义(Schema)来决定合并行为的更多信息,可参阅 -[sigs.k8s.io/structured-merge-diff](https://sigs.k8s.io/structured-merge-diff)。 - - -Kubernetes 1.16 和 1.17 中都添加了若干的标志(Markers),便于 API 开发人员 -描述 list、map 和 struct 所支持的合并策略。这些标志可以应用到 Go 文件中 -对应类型的对象或者 [CRD 的 OpenAPI 模式定义](/docs/reference/generated/kubernetes-api/{{< param "version" >}}#jsonschemaprops-v1-apiextensions-k8s-io): - - -| Golang 标志 | OpenAPI 扩展 | 可接受的值 | 描述 | 引入版本 | -|---|---|---|---|---| -| `//+listType` | `x-kubernetes-list-type` | `atomic`/`set`/`map` | 可应用到 list 类型。`atomic` 和 `set` 适用于仅包含标量的 list。`map` 适用于由内嵌类型组成的 list。如果配置为 `atomic`,则整个 list 会在合并时被替换掉;每次只会有一个管理器负责总体管理这个 list。如果配置为 `granular`,则不同的管理器可以分别管理不同的表项。 | 1.16 | -| `//+listMapKey` | `x-kubernetes-list-map-keys` | 由 map 主键构成的可唯一标识表项的切片,例如 `["port", "protocol"]` | 仅当标记了 `+listType=map` 时适用。切片中各个字符串对应的取值的组合必须能够唯一性地标识 list 中的表项。尽管主键可以有多个,由于在 Go 语言类型中每个键需要独立设置,这里的 `listMapKey` 是单数形式。 | 1.16 | -| `//+mapType` | `x-kubernetes-map-type` | `atomic`/`granular` | 适用于 map 类型。`atomic` 意味着 map 只能被某管理器整体替换。`granular` 则意味着 map 支持使用不同管理器来更新不同字段。 | 1.17 | -| `//+structType` | `x-kubernetes-map-type` | `atomic`/`granular` | 适用于 struct 类型。除此以外,其用法和 OpenAPI 注解都与 `//+mapType` 相同。 | 1.17 | - - -### 定制资源 {#custom-resources} - -默认情况下,服务器端应用机制会将定制资源视为无结构的数据。其中所有键都会 -被视同 struct 的字段,而所有 list 都会被视为 atomic。 - -如果定制资源定义(CRD)定义了包含如[合并策略](#merge-strategy)节所述的注解的 -[模式定义(Schema)](/docs/reference/generated/kubernetes-api/{{< param "version" >}}#jsonschemaprops-v1-apiextensions-k8s-io), -则在合并该类型对象时会使用到这些注解。 - - -### 在控制器中使用服务器端应用机制 {#using-server-side-apply-in-a-controller} - -作为控制器的开发人员,你可以将服务器端应用机制作为一种方法来简化你的控制器中的更新逻辑。 -与“读出-更改-写回”或“读出-更改-打补丁”方式相比,区别如下: - -* 所应用的对象必需包含控制器所关心的所有字段; -* 没有办法移除控制器之前未曾应用过的字段(控制器在这些使用场景中仍然可以发送一个 - PATCH/UPDATE 请求)。 -* 对象不需要事先读出,且不必指定 `resourceVersion` 值。 - -强烈建议控制器总是“强制解决”冲突,因为它们可能无法更好地解决或者处理这些冲突。 - - -### 转移属主关系 {#transferring-ownership} - -除了[冲突解决](#conflicts)机制所提供的并发控制外,服务器端应用机制还提供了一些 -方法,通过协作式途径将字段属主从用户转移到控制器。 - -这一转移操作最好通过示例来阐明。我们来看如何安全地将 `replicas` 字段的属主从 -一个用户转移给一个控制器,同时允许使用 HorizontalPodAutoscaler 资源及其相配套 -的控制器为 Deployment 提供自动的水平扩缩。 - -假定一个用户定义了一个 Deployment,并将其 `replicas` 设置为其期望值: - -{{< codenew file="application/ssa/nginx-deployment.yaml" >}} - - -用户使用服务器端应用机制创建了 Deployment: - -```shell -kubectl apply -f application/ssa/nginx-deployment.yaml --server-side -``` - - -再接下来,为 Deployment 启用了 HPA,例如: - -```shell -kubectl autoscale deployment nginx-deployment --cpu-percent=50 --min=1 --max=10 -``` - - -现在,用户希望将 `replicas` 从其配置中移除,这样它们就不会与 HPA -控制器产生冲突。不过,仍然会有竞争条件出现:在 HPA 觉得需要调整 `replicas` -之前可能还有一段时间。如果用户在向 `replicas` 字段写入新值进而成为其属主之前, -已经从配置中移除了该字段,则 API 服务器会将 `replicas` 设置为 1,也就是该字段 -的默认值。这一复位操作并非用户希望发生的事情,即使是临时性的复位也不可以。 - - -解决方案有两种: - -- (较容易的方案)在配置中保留 `replicas`,当 HPA 终于向该字段中写入取值时, - 系统会向用户报告一个冲突事件。在这一刻,从配置中移除该字段是相对安全的。 - -- (更高级的方案)如果用户不想等待 HPA 写入字段值的事件,例如他们希望集群状态对 - 他们的同事而言也是清晰明确的,则他们可以采取以下步骤安全地从他们的配置中移除 - `replicas` 字段。 - - -首先,用户定义一个新的,仅包含 `replicas` 字段的配置: - -{{< codenew file="application/ssa/nginx-deployment-replicas-only.yaml" >}} - - -接下来使用名为 `handover-to-hpa` 的字段管理器应用该配置: - -```shell -kubectl apply -f application/ssa/nginx-deployment-replicas-only.yaml --server-side --field-manager=handover-to-hpa --validate=false -``` - - -如果应用操作与 HPA 控制器发生冲突,则什么也不做。冲突恰好表明控制器比平时早了 -一点发出对该字段的主张: - -这时,用户可以从其配置中删除 `replicas` 字段。 - -{{< codenew file="application/ssa/nginx-deployment-no-replicas.yaml" >}} - - -注意,无论 HPA 控制器何时将 `replicas` 字段设置为新的取值,临时性的字段管理器 -都不再拥有任何字段,并且会被自动删除。用户不需要执行清理操作。 - - -### 在用户间移交属主角色 {#transferring-ownership-between-users} - -用户之间可以通过在他们所应用的配置中将字段设置为相同的值来转移字段属主关系, -这样做会共享对字段的拥有权。一旦用户间共享了字段的属主关系,其中一个用户就 -可以从其所应用的配置中移除该字段,放弃属主角色,从而完成了属主关系的移交。 - - -### 与客户端应用的比较 {#comparison-with-client-side-apply} - -服务器端应用机制所实现的冲突检测和解决方案的后果之一是施加者在其本地状态中总是 -能够看到最新的字段值。如果他们看不到,则在下次执行 Apply 操作时会收到冲突事件。 -解决冲突的三种方法中,任何一种都会让所应用的配置成为服务器端对象字段的最新 -子集。 - -这点与客户端应用不同,施加者本地配置中保留的可能是已经被其他用户更改过了的过时 -的取值。只有用户更新该字段时,相应的字段值才会变得准确。施加者也无法知道他们 -下次执行 Apply 操作时是否会重载其他用户做出的变更。 - -另外一点区别在于使用客户端应用的施加者无法更改他们所使用的 API -版本,但是服务器端应用能够支持这种使用场景。 - - -### 从客户端应用升级到服务器端应用 {#upgrading-from-client-side-apply-to-server-side-apply} - -客户端应用机制的用户如果在使用 `kubectl apply` 来管理资源,可以使用下面的标志 -来开始使用服务器端应用: - -```shell -kubectl apply --server-side [--dry-run=server] -``` - - -默认情况下,对象的字段管理会从客户端应用转移到 kubectl -服务器端应用,且不会出现冲突状况。 - - -{{< caution >}} -请保持 `last-applied-configuration` 注解内容是最新的。该注解用来推测客户端 -应用所管理的字段。所有没有被客户端应用管理的字段都会引发冲突。 - -例如,如果你在客户端应用操作后使用 `kubectl scale` 命令更新了 `replicas` -字段,该字段不再由客户端应用所拥有,在 `kubectl apply --server-side` 时会 -引发冲突。 -{{< /caution >}} - - -此行为适用于使用 `kubectl` 字段管理器执行的服务器端应用。 -作为一种例外情况,你也可以选择不采用这种行为,而是像下面的例子中所给的那样, -指定一个不同的、非默认的字段管理器。用 `kubectl` 来执行服务器端应用时,默认 -的字段管理器总是 `kubectl`。 - -```shell -kubectl apply --server-side --field-manager=my-manager [--dry-run=server] -``` - - -### 从服务器端应用降格为客户端应用 {#downgrading-from-server-side-apply-to-client-side-apply} - -如果你使用 `kubectl apply --server-side` 来管理资源,你可以直接使用 -`kubectl apply` 来降格到客户端应用机制。 - -降格操作之所以能够有效是因为 kubectl 服务器端应用在你使用 `kubectl apply` -时会保持 `last-applied-configuration` 注解内容一直是最新的。 - -这一行为适用于使用 `kubectl` 字段管理器执行的服务器端应用。 -作为一种例外情况,你也可以选择不采用这种默认行为,而像下面例子中所展示的 -那样,设置一个不同的、非默认的字段管理器。`kubectl` 所触发的服务器端应用 -默认会将字段管理器设置为 `kubectl`。 - -```shell -kubectl apply --server-side --field-manager=my-manager [--dry-run=server] -``` - - -### API 端点 {#api-endpoint} - -启用了服务器端应用功能特性之后,`PATCH` 操作的端点能够接受 -`application/apply-patch+yaml` 内容类型。 -服务器端应用机制的用户可以以 YAML 格式将部分设定的对象发送到该端点。 -在应用配置时,用户应该包含希望设置的所有字段在内。 - - -### 清除 `managedFields` {#clearing-managedfields} - -通过 `MergePatch`、`StrategicMergePatch`、`JSONPatch` 或 `Update` 等非 Apply -操作是可以清除对象上的所有 `managedFields` 内容的。通过这些操作,用户可以将 -`managedFields` 字段重新设置为空的列表。 -下面是两个例子: - - -```console -PATCH /api/v1/namespaces/default/configmaps/example-cm -Content-Type: application/merge-patch+json -Accept: application/json - -Data: {"metadata":{"managedFields": [{}]}} -``` - -```console -PATCH /api/v1/namespaces/default/configmaps/example-cm -Content-Type: application/json-patch+json -Accept: application/json - -Data: [{"op": "replace", "path": "/metadata/managedFields", "value": [{}]}] -``` - - -上面的操作会覆盖 `managedFields` 字段取值,使之成为一个只有一个空表项的列表, -进而使得 `managedFields` 整个会被充对象上剥离。 -注意,仅仅将 `managedFields` 设为空列表还不足以将字段取值复位。 -这样的设计是有意为之的,目的是避免 `managedFields` 字段被不了解该字段的客户端 -意外清除。 - -如果此复位操作和对 `managedFields` 字段之外的其它字段的变更一起提交,则 -`managedFields` 的内容会首先被重置,之后才会处理其他字段变更。因此,施加者会 -成为同一请求中被更新的字段的属主。 - - -{{< caution >}} -服务器端应用机制无法正确地跟踪某些子资源的属主,如果这些子资源不能接收资源 -对象类型数据的话。如果你针对这类子资源使用服务器端应用机制,则所变更的字段 -不会被跟踪记录。 -{{< /caution >}} - - -### 禁用此功能特性 {#disabling-the-feature} - -服务器端应用是一种 Beta 阶段的特性,因此默认是被启用的。如要将此 -[特性门控](/zh/docs/reference/command-line-tools-reference/feature-gates)关闭, -你需要在启动 `kube-apiserver` 时包含 `--feature-gates ServerSideApply=false` -标志。如果你运行了多个 `kube-apiserver` -副本,则每个副本上都要作同样的标志设置。 +从 Kubernetes v1.18 开始,可以启用[服务器端应用](/zh/docs/reference/using-api/server-side-apply/)功能 +特性,启用该特性后,控制面会跟踪所有新创建的对象的托管字段。服务器端应用提供了一种简洁的模式来管理字段冲突,提供服务器端的 `Apply` 和 `Update` 操作,并取代了 +`kubectl apply` 的客户端功能。有关该特性的详细描述,请参见[服务器端应用](/zh/docs/reference/using-api/server-side-apply/)章节 -### `metadata` 中的 `resourceVersion` +### `metadata` 中的 `resourceVersion` {#resourceVersion-in-metadata} 客户端可以在资源中看到资源版本信息,这里的资源包括从服务器返回的 Watch 事件 以及 list 操作响应: @@ -1694,40 +937,42 @@ quorum read to be served. 集群性能和可扩缩性。后者需要提供带票选能力的读操作。 + +{{< table caption="list 操作的 resourceVersionMatch 与分页参数" >}} + | resourceVersionMatch 参数 | 分页参数 | resourceVersion 未设置 | resourceVersion="0" | resourceVersion="\<非零值\>" | |-----------------------------------------|---------------------------------|-------------------------|-----------------------------------------|----------------------------------| -| resourceVersionMatch 未设置 | limit 未设置 | 最新版本 | 任意版本 | 不老于指定版本 | -| resourceVersionMatch 未设置 | limit=n, continue 未设置 | 最新版本 | 任意版本 | 精确匹配 | -| resourceVersionMatch 未设置 | limit=n, continue=\ | Continue 令牌、精确匹配 | 非法请求,视为 Continue 令牌、精确匹配 | 非法请求,HTTP `400 Bad Request` | -| resourceVersionMatch=Exact\* | limit 未设置 | 非法请求 | 非法请求 | 精确匹配 | -| resourceVersionMatch=Exact\* | limit=n, continue 未设置 | 非法请求 | 非法请求 | 精确匹配 | -| resourceVersionMatch=NotOlderThan\* | limit 未设置 | 非法请求 | 任意版本 | 不老于指定版本 | -| resourceVersionMatch=NotOlderThan\* | limit=n, continue 未设置 | 非法请求 | 任意版本 | 不老于指定版本 | +| resourceVersionMatch 未设置 | limit 未设置 | 最新版本 | 任意版本 | 不老于指定版本 | +| resourceVersionMatch 未设置 | limit=\, continue 未设置 | 最新版本 | 任意版本 | 精确匹配 | +| resourceVersionMatch 未设置 | limit=\, continue=\ | 从 token 开始、精确匹配 | 非法请求,视为从 token 开始、精确匹配 | 非法请求,返回 HTTP `400 Bad Request` | +| resourceVersionMatch=Exact [1] | limit 未设置 | 非法请求 | 非法请求 | 精确匹配 | +| resourceVersionMatch=Exact [1] | limit=\, continue 未设置 | 非法请求 | 非法请求 | 精确匹配 | +| resourceVersionMatch=NotOlderThan [1] | limit 未设置 | 非法请求 | 任意版本 | 不老于指定版本 | +| resourceVersionMatch=NotOlderThan [1] | limit=\, continue 未设置 | 非法请求 | 任意版本 | 不老于指定版本 | -
- +{{< /table >}} **脚注:** -\* 如果服务器无法正确处理 `resourceVersionMatch` 参数,其行为与未设置该参数相同。 +[1] 如果服务器无法正确处理 `resourceVersionMatch` 参数,其行为与未设置该参数相同。 + +{{< table caption="watch 操作的 resourceVersion 设置" >}} + | resourceVersion 未设置 | resourceVersion="0" | resourceVersion="\<非零值\>" | |---------------------------|--------------------------|------------------------------| | 读取状态并从最新版本开始 | 读取状态并从任意版本开始 | 从指定版本开始 | +{{< /table >}} + 客户端库通常为您处理诸如身份验证之类的常见任务。 如果 API 客户端在 Kubernetes 集群中运行,大多数客户端库可以发现并使用 Kubernetes 服务帐户进行身份验证, -或者能够理解 [kubeconfig 文件](/zh/docs/tasks/access-application-cluster/authenticate-across-clusters-kubeconfig/) +或者能够理解 [kubeconfig 文件](/zh/docs/tasks/access-application-cluster/configure-access-multiple-clusters/) 格式来读取凭据和 API 服务器地址。 -## 官方支持的 Kubernetes 客户端库 +## 官方支持的 Kubernetes 客户端库 {#officially-supported-kubernetes-client-libraries} -## 社区维护的客户端库 +## 社区维护的客户端库 {#community-maintained-client-libraries} {{% thirdparty-content %}} @@ -95,29 +95,33 @@ their authors, not the Kubernetes team. | Go | [github.com/ericchiang/k8s](https://github.com/ericchiang/k8s) | | Java (OSGi) | [bitbucket.org/amdatulabs/amdatu-kubernetes](https://bitbucket.org/amdatulabs/amdatu-kubernetes) | | Java (Fabric8, OSGi) | [github.com/fabric8io/kubernetes-client](https://github.com/fabric8io/kubernetes-client) | +| Java | [github.com/manusa/yakc](https://github.com/manusa/yakc) | | Lisp | [github.com/brendandburns/cl-k8s](https://github.com/brendandburns/cl-k8s) | | Lisp | [github.com/xh4/cube](https://github.com/xh4/cube) | | Node.js (TypeScript) | [github.com/Goyoo/node-k8s-client](https://github.com/Goyoo/node-k8s-client) | -| Node.js | [github.com/tenxcloud/node-kubernetes-client](https://github.com/tenxcloud/node-kubernetes-client) | -| Node.js | [github.com/godaddy/kubernetes-client](https://github.com/godaddy/kubernetes-client) | | Node.js | [github.com/ajpauwels/easy-k8s](https://github.com/ajpauwels/easy-k8s) +| Node.js | [github.com/godaddy/kubernetes-client](https://github.com/godaddy/kubernetes-client) | +| Node.js | [github.com/tenxcloud/node-kubernetes-client](https://github.com/tenxcloud/node-kubernetes-client) | | Perl | [metacpan.org/pod/Net::Kubernetes](https://metacpan.org/pod/Net::Kubernetes) | -| PHP | [github.com/maclof/kubernetes-client](https://github.com/maclof/kubernetes-client) | | PHP | [github.com/allansun/kubernetes-php-client](https://github.com/allansun/kubernetes-php-client) | +| PHP | [github.com/maclof/kubernetes-client](https://github.com/maclof/kubernetes-client) | | PHP | [github.com/travisghansen/kubernetes-client-php](https://github.com/travisghansen/kubernetes-client-php) | | PHP | [github.com/renoki-co/php-k8s](https://github.com/renoki-co/php-k8s) | | Python | [github.com/eldarion-gondor/pykube](https://github.com/eldarion-gondor/pykube) | +| Python | [github.com/fiaas/k8s](https://github.com/fiaas/k8s) | | Python | [github.com/mnubo/kubernetes-py](https://github.com/mnubo/kubernetes-py) | -| Ruby | [github.com/Ch00k/kuber](https://github.com/Ch00k/kuber) | +| Python | [github.com/tomplus/kubernetes_asyncio](https://github.com/tomplus/kubernetes_asyncio) | | Ruby | [github.com/abonas/kubeclient](https://github.com/abonas/kubeclient) | +| Ruby | [github.com/Ch00k/kuber](https://github.com/Ch00k/kuber) | | Ruby | [github.com/kontena/k8s-client](https://github.com/kontena/k8s-client) | | Rust | [github.com/clux/kube-rs](https://github.com/clux/kube-rs) | | Rust | [github.com/ynqa/kubernetes-rust](https://github.com/ynqa/kubernetes-rust) | | Scala | [github.com/doriordan/skuber](https://github.com/doriordan/skuber) | -| dotNet | [github.com/tonnyeremin/kubernetes_gen](https://github.com/tonnyeremin/kubernetes_gen) | +| Scala | [github.com/joan38/kubernetes-client](https://github.com/joan38/kubernetes-client) | +| DotNet | [github.com/tonnyeremin/kubernetes_gen](https://github.com/tonnyeremin/kubernetes_gen) | | DotNet (RestSharp) | [github.com/masroorhasan/Kubernetes.DotNet](https://github.com/masroorhasan/Kubernetes.DotNet) | | Elixir | [github.com/obmarg/kazan](https://github.com/obmarg/kazan/) | -| Haskell | [github.com/soundcloud/haskell-kubernetes](https://github.com/soundcloud/haskell-kubernetes) | +| Elixir | [github.com/coryodaniel/k8s](https://github.com/coryodaniel/k8s) | --> | 语言 | 客户端库 | | -------------------- | ---------------------------------------- | @@ -125,29 +129,33 @@ their authors, not the Kubernetes team. | Go | [github.com/ericchiang/k8s](https://github.com/ericchiang/k8s) | | Java (OSGi) | [bitbucket.org/amdatulabs/amdatu-kubernetes](https://bitbucket.org/amdatulabs/amdatu-kubernetes) | | Java (Fabric8, OSGi) | [github.com/fabric8io/kubernetes-client](https://github.com/fabric8io/kubernetes-client) | +| Java | [github.com/manusa/yakc](https://github.com/manusa/yakc) | | Lisp | [github.com/brendandburns/cl-k8s](https://github.com/brendandburns/cl-k8s) | | Lisp | [github.com/xh4/cube](https://github.com/xh4/cube) | | Node.js (TypeScript) | [github.com/Goyoo/node-k8s-client](https://github.com/Goyoo/node-k8s-client) | -| Node.js | [github.com/tenxcloud/node-kubernetes-client](https://github.com/tenxcloud/node-kubernetes-client) | -| Node.js | [github.com/godaddy/kubernetes-client](https://github.com/godaddy/kubernetes-client) | | Node.js | [github.com/ajpauwels/easy-k8s](https://github.com/ajpauwels/easy-k8s) +| Node.js | [github.com/godaddy/kubernetes-client](https://github.com/godaddy/kubernetes-client) | +| Node.js | [github.com/tenxcloud/node-kubernetes-client](https://github.com/tenxcloud/node-kubernetes-client) | | Perl | [metacpan.org/pod/Net::Kubernetes](https://metacpan.org/pod/Net::Kubernetes) | -| PHP | [github.com/maclof/kubernetes-client](https://github.com/maclof/kubernetes-client) | | PHP | [github.com/allansun/kubernetes-php-client](https://github.com/allansun/kubernetes-php-client) | +| PHP | [github.com/maclof/kubernetes-client](https://github.com/maclof/kubernetes-client) | | PHP | [github.com/travisghansen/kubernetes-client-php](https://github.com/travisghansen/kubernetes-client-php) | | PHP | [github.com/renoki-co/php-k8s](https://github.com/renoki-co/php-k8s) | | Python | [github.com/eldarion-gondor/pykube](https://github.com/eldarion-gondor/pykube) | +| Python | [github.com/fiaas/k8s](https://github.com/fiaas/k8s) | | Python | [github.com/mnubo/kubernetes-py](https://github.com/mnubo/kubernetes-py) | -| Ruby | [github.com/Ch00k/kuber](https://github.com/Ch00k/kuber) | +| Python | [github.com/tomplus/kubernetes_asyncio](https://github.com/tomplus/kubernetes_asyncio) | | Ruby | [github.com/abonas/kubeclient](https://github.com/abonas/kubeclient) | +| Ruby | [github.com/Ch00k/kuber](https://github.com/Ch00k/kuber) | | Ruby | [github.com/kontena/k8s-client](https://github.com/kontena/k8s-client) | | Rust | [github.com/clux/kube-rs](https://github.com/clux/kube-rs) | | Rust | [github.com/ynqa/kubernetes-rust](https://github.com/ynqa/kubernetes-rust) | | Scala | [github.com/doriordan/skuber](https://github.com/doriordan/skuber) | -| dotNet | [github.com/tonnyeremin/kubernetes_gen](https://github.com/tonnyeremin/kubernetes_gen) | +| Scala | [github.com/joan38/kubernetes-client](https://github.com/joan38/kubernetes-client) | +| DotNet | [github.com/tonnyeremin/kubernetes_gen](https://github.com/tonnyeremin/kubernetes_gen) | | DotNet (RestSharp) | [github.com/masroorhasan/Kubernetes.DotNet](https://github.com/masroorhasan/Kubernetes.DotNet) | | Elixir | [github.com/obmarg/kazan](https://github.com/obmarg/kazan/) | -| Haskell | [github.com/soundcloud/haskell-kubernetes](https://github.com/soundcloud/haskell-kubernetes) | +| Elixir | [github.com/coryodaniel/k8s](https://github.com/coryodaniel/k8s) | diff --git a/content/zh/docs/reference/using-api/deprecation-policy.md b/content/zh/docs/reference/using-api/deprecation-policy.md index a5fa369e96..84e2137528 100644 --- a/content/zh/docs/reference/using-api/deprecation-policy.md +++ b/content/zh/docs/reference/using-api/deprecation-policy.md @@ -39,7 +39,7 @@ Kubernetes 是一个组件众多、贡献者人数众多的大系统。 Since Kubernetes is an API-driven system, the API has evolved over time to reflect the evolving understanding of the problem space. The Kubernetes API is actually a set of APIs, called "API groups", and each API group is -independently versioned. [API versions](/docs/reference/using-api/api-overview/#api-versioning) fall +independently versioned. [API versions](/docs/reference/using-api/#api-versioning) fall into 3 main tracks, each of which has different policies for deprecation: --> ## 弃用 API 的一部分 {#deprecating-parts-of-the-api} @@ -47,7 +47,7 @@ into 3 main tracks, each of which has different policies for deprecation: 由于 Kubernetes 是一个 API 驱动的系统,API 会随着时间推移而演化,以反映 人们对问题共建的认识的变化。Kubernetes API 实际上是一个 API 集合,其中每个 成员称作“API 组(API Group)”,并且每个 API 组都是独立管理版本的。 -[API 版本](/zh/docs/reference/using-api/api-overview/#api-versioning)会有 +[API 版本](/zh/docs/reference/using-api/#api-versioning)会有 三类,每类有不同的废弃策略: -### REST 资源(也即 API 对象) +### REST 资源(也即 API 对象) {#rest-resources-aka-api-objects} 考虑一个假想的名为 Widget 的 REST 资源,在上述时间线中位于 API v1, 而现在打算将其弃用。 @@ -450,12 +450,12 @@ Starting in Kubernetes v1.19, making an API request to a deprecated REST API end 2. Adds a `"k8s.io/deprecated":"true"` annotation to the [audit event](/docs/tasks/debug-application-cluster/audit/) recorded for the request. 3. Sets an `apiserver_requested_deprecated_apis` gauge metric to `1` in the `kube-apiserver` process. The metric has labels for `group`, `version`, `resource`, `subresource` that can be joined - to the `apiserver_request_total` metric, and a `removed_version` label that indicates the + to the `apiserver_request_total` metric, and a `removed_release` label that indicates the Kubernetes release in which the API will no longer be served. The following Prometheus query returns information about requests made to deprecated APIs which will be removed in v1.22: - + ```promql - apiserver_requested_deprecated_apis{removed_version="1.22"} * on(group,version,resource,subresource) group_right() apiserver_request_total + apiserver_requested_deprecated_apis{removed_release="1.22"} * on(group,version,resource,subresource) group_right() apiserver_request_total ``` --> 从 Kubernetes v1.19 开始,当 API 请求被发送到一个已弃用的 REST API 末端时: @@ -468,12 +468,12 @@ Starting in Kubernetes v1.19, making an API request to a deprecated REST API end 设置为 `1`。 该度量值还附带 `group`、`version`、`resource` 和 `subresource` 标签 (可供添加到度量值 `apiserver_request_total` 上), - 和一个 `removed_version` 标签,标明该 API 将消失的 Kubernetes 发布版本。 + 和一个 `removed_release` 标签,标明该 API 将消失的 Kubernetes 发布版本。 下面的 Prometheus 查询会返回对 v1.22 中将移除的、已弃用的 API 的请求的信息: ```promql - apiserver_requested_deprecated_apis{removed_version="1.22"} * on(group,version,resource,subresource) group_right() apiserver_request_total + apiserver_requested_deprecated_apis{removed_release="1.22"} * on(group,version,resource,subresource) group_right() apiserver_request_total ``` | Golang 标记 | OpenAPI extension | 可接受的值 | 描述 | 引入版本 | |---|---|---|---|---| -| `//+listType` | `x-kubernetes-list-type` | `atomic`/`set`/`map` | 适用于 list。 `atomic` 和 `set` 适用于只包含标量元素的 list。 `map` 适用于只包含嵌套类型的 list。 如果配置为 `atomic`, 合并时整个列表会被替换掉; 任何时候,唯一的管理器都把列表作为一个整体来管理。如果是细粒度管理,不同的管理器也可以分开管理条目。 | 1.16 | +| `//+listType` | `x-kubernetes-list-type` | `atomic`/`set`/`map` | 适用于 list。 `atomic` 和 `set` 适用于只包含标量元素的 list。 `map` 适用于只包含嵌套类型的 list。 如果配置为 `atomic`, 合并时整个列表会被替换掉; 任何时候,唯一的管理器都把列表作为一个整体来管理。如果是 `set` 或 `map` ,不同的管理器也可以分开管理条目。 | 1.16 | | `//+listMapKey` | `x-kubernetes-list-map-keys` | 用来唯一标识条目的 map keys 切片,例如 `["port", "protocol"]` | 仅当 `+listType=map` 时适用。组合值的字符串切片必须唯一标识列表中的条目。尽管有多个 key,`listMapKey` 是单数的,这是因为 key 需要在 Go 类型中单独的指定。 | 1.16 | | `//+mapType` | `x-kubernetes-map-type` | `atomic`/`granular` | 适用于 map。 `atomic` 指 map 只能被单个的管理器整个的替换。 `granular` 指 map 支持多个管理器各自更新自己的字段。 | 1.17 | | `//+structType` | `x-kubernetes-map-type` | `atomic`/`granular` | 适用于 structs;否则就像 `//+mapType` 有相同的用法和 openapi 注释.| 1.17 | From 4f9b919a8802bccbd594c566d2f574292e88c299 Mon Sep 17 00:00:00 2001 From: Xu Yuandong <786018072@qq.com> Date: Tue, 1 Dec 2020 17:02:50 +0800 Subject: [PATCH 57/80] [zh]Sync changes under ` content/zh/docs/reference` folder for Issues kubernetes/website#25247. (#25308) * sync sys labels-annotations-taints.md * sync 'scheduling/config.md' * sync issues-security/security.md * sync _index.md * sync reference/tools.md * update * update * misssing words * update * update to fix some lines * update to fix some lines * update to delete wihtpsace * line is too long --- content/zh/docs/reference/_index.md | 6 +- .../reference/issues-security/security.md | 33 ++-- .../labels-annotations-taints.md | 176 +++++++++--------- .../zh/docs/reference/scheduling/config.md | 21 ++- content/zh/docs/reference/tools.md | 8 +- 5 files changed, 119 insertions(+), 125 deletions(-) diff --git a/content/zh/docs/reference/_index.md b/content/zh/docs/reference/_index.md index 76a6199865..75000a7708 100644 --- a/content/zh/docs/reference/_index.md +++ b/content/zh/docs/reference/_index.md @@ -29,13 +29,13 @@ This section of the Kubernetes documentation contains references. ## API 参考 -* [Kubernetes API 概述](/zh/docs/reference/using-api/api-overview/) - Kubernetes API 概述。 -* [Kubernetes API 参考 {{< latest-version >}}](/docs/reference/generated/kubernetes-api/{{< latest-version >}}/) +* [Kubernetes API 参考 {{< latest-version >}}](/docs/reference/generated/kubernetes-api/{{< latest-version >}}/)。 +* [使用 Kubernetes API ](/zh/docs/reference/using-api/) - Kubernetes 的 API 概述 -加入 [kubernets-announce](https://groups.google.com/forum/#!forum/kubernetes-announce) 组,以获取关于安全性和主要 API 公告的电子邮件。 +加入 [kubernetes-security-announce](https://groups.google.com/forum/#!forum/kubernetes-security-announce) 组,以获取关于安全性和主要 API 公告的电子邮件。 -您也可以使用[此链接](https://groups.google.com/forum/feed/kubernetes-announce/msgs/rss_v2_0.xml?num=50)订阅上述的 RSS 反馈。 +你也可以使用[此链接](https://groups.google.com/forum/feed/kubernetes-security-announce/msgs/rss_v2_0.xml?num=50) 订阅上述的 RSS 反馈。 -如需报告,请连同安全细节以及预期的[所有 Kubernetes bug 报告](https://git.k8s.io/kubernetes/.github/ISSUE_TEMPLATE/bug-report.md)详细信息电邮到[security@kubernetes.io](mailto:security@kubernetes.io) 列表。 +如需报告,请连同安全细节以及预期的[所有 Kubernetes bug 报告](https://git.k8s.io/kubernetes/.github/ISSUE_TEMPLATE/bug-report.md) +详细信息电子邮件到[security@kubernetes.io](mailto:security@kubernetes.io)列表。 -您还可以通过电子邮件向私有 [security@kubernetes.io](mailto:security@kubernetes.io) 列表发送电子邮件,邮件中应该包含[所有 Kubernetes 错误报告](https://git.k8s.io/kubernetes/.github/ISSUE_TEMPLATE/bug-report.md)所需的详细信息。 +你还可以通过电子邮件向私有 [security@kubernetes.io](mailto:security@kubernetes.io) 列表发送电子邮件,邮件中应该包含[所有 Kubernetes 错误报告](https://git.k8s.io/kubernetes/.github/ISSUE_TEMPLATE/bug-report.md)所需的详细信息。 -您可以使用[产品安全团队成员](https://git.k8s.io/sig-release/security-release-process-documentation/security-release-process.md#product-security-team-pst)的 GPG 密钥加密您的电子邮件到此列表。 -使用 GPG 加密不需要公开。 +你可以使用[产品安全团队成员](https://git.k8s.io/security/README.md#product-security-committee-psc) +的 GPG 密钥加密你的电子邮件到此列表。使用 GPG 加密不需要公开。 -- 您认为在 Kubernetes 中发现了一个潜在的安全漏洞 -- 您不确定漏洞如何影响 Kubernetes -- 您认为您在 Kubernetes 依赖的另一个项目中发现了一个漏洞 - - 对于具有漏洞报告和披露流程的项目,请直接在该项目处报告 +- 你认为在 Kubernetes 中发现了一个潜在的安全漏洞 +- 你不确定漏洞如何影响 Kubernetes +- 你认为你在 Kubernetes 依赖的另一个项目中发现了一个漏洞 +- 对于具有漏洞报告和披露流程的项目,请直接在该项目处报告 -- 您需要帮助调整 Kubernetes 组件的安全性 -- 您需要帮助应用与安全相关的更新 -- 您的问题与安全无关 +- 你需要帮助调整 Kubernetes 组件的安全性 +- 你需要帮助应用与安全相关的更新 +- 你的问题与安全无关 -该标签已被弃用。请使用 `kubernetes.io/arch`。 +该标签已被弃用。请使用 `kubernetes.io/os`。 ## kubernetes.io/hostname @@ -89,6 +89,11 @@ The Kubelet populates this label with the hostname. Note that the hostname can b Kubelet 用 hostname 值来填充该标签。注意:可以通过向 `kubelet` 传入 `--hostname-override` 参数对 “真正的” hostname 进行修改。 + +此标签还用作拓扑层次结构的一部分。有关更多信息,请参见 [topology.kubernetes.io/zone](#topologykubernetesiozone)。 + @@ -98,7 +103,7 @@ Kubelet 用 hostname 值来填充该标签。注意:可以通过向 `kubelet` -从 kubernetes 1.17 版本开始,不推荐使用此标签,而推荐使用[node.kubernetes.io/instance-type](#nodekubernetesioinstance-type)。 +从 kubernetes 1.17 版本开始,不推荐使用此标签,而推荐使用 [node.kubernetes.io/instance-type](#nodekubernetesioinstance-type)。 {{< /note >}} ## node.kubernetes.io/instance-type {#nodekubernetesioinstance-type} @@ -118,92 +123,47 @@ to rely on the Kubernetes scheduler to perform resource-based scheduling. You sh 用于:Node -Kubelet 用 `cloudprovider` 中定义的实例类型来填充该标签。未使用 `cloudprovider` 时不会设置该标签。该标签在想要将某些负载定向到特定实例类型的节点上时会很有用,但通常用户更希望依赖 Kubernetes 调度器来执行基于资源的调度,所以用户应该致力于基于属性而不是实例类型来进行调度(例如:需要一个 GPU,而不是 `g2.2xlarge`)。 +Kubelet 用 `cloudprovider` 中定义的实例类型来填充该标签。未使用 `cloudprovider` 时不会设置该标签。 +该标签在想要将某些负载定向到特定实例类型的节点上时会很有用,但通常用户更希望依赖 Kubernetes 调度器来执行基于资源的调度, +所以用户应该致力于基于属性而不是实例类型来进行调度(例如:需要一个 GPU,而不是 `g2.2xlarge`)。 ## failure-domain.beta.kubernetes.io/region (已弃用) {#failure-domainbetakubernetesioregion} -参考 [failure-domain.beta.kubernetes.io/zone](#failure-domainbetakubernetesiozone)。 +参考 [topology.kubernetes.io/region](#topologykubernetesioregion)。 {{< note >}} -从 kubernetes 1.17 版本开始,不推荐使用此标签,而推荐使用[topology.kubernetes.io/region](#topologykubernetesioregion)。 +从 kubernetes 1.17 版本开始,不推荐使用此标签,而推荐使用 [topology.kubernetes.io/region](#topologykubernetesioregion)。 {{< /note >}} ## failure-domain.beta.kubernetes.io/zone (已弃用) {#failure-domainbetakubernetesiozone} -示例: - -`failure-domain.beta.kubernetes.io/region=us-east-1` - -`failure-domain.beta.kubernetes.io/zone=us-east-1c` - -用于:Node、PersistentVolume - -对于 Node: Kubelet 用 `cloudprovider` 中定义的区域(zone)信息来填充该标签。未使用 `cloudprovider` 时不会设置该标签,但如果该标签在你的拓扑中有意义的话,应该考虑设置。 - - -用于 PersistentVolume:在 GCE 和 AWS 中,`PersistentVolumeLabel` 准入控制器会自动添加区域标签。 - - - -在单区的集群中,Kubernetes 会自动将同一副本控制器或服务下的 pod 分散到不同的节点上 (以降低故障的影响)。在多区的集群中,这种分散的行为扩展到跨区的层面 (以降低区域故障的影响)。跨区分散通过 _SelectorSpreadPriority_ 来实现。 - - -_SelectorSpreadPriority_ 是一种尽力而为(best-effort)的处理方式,如果集群中的区域是异构的 (例如:不同区域之间的节点数量、节点类型或 pod 资源需求不同),可能使得 pod 在各区域间无法均匀分布。如有需要,用户可以使用同质的区域(节点数量和类型相同) 来减小 pod 分布不均的可能性。 - - -由于卷不能跨区域挂载(attach),调度器 (通过 _VolumeZonePredicate_ 预选) 也会保证需要特定卷的 pod -被调度到卷所在的区域中。 - - -区域和地域(region)的实际值无关紧要,两者的层次含义也没有严格的定义。最终期望是,除非整个地域故障, -否则某一区域节点的故障不应该影响到其他区域的节点。例如,通常区域间应该避免共用同一个网络交换机。 -具体的规划取决于特定的基础设备 - three-rack 设备所选择的设置与多数据中心截然不同。 - - -如果 `PersistentVolumeLabel` 准入控制器不支持自动为 PersistentVolume 打标签,且用户希望防止 pod -跨区域进行卷的挂载,应考虑手动打标签 (或对 `PersistentVolumeLabel` 增加支持)。如果用户的基础设施没有这种约束,则不需要为卷添加区域标签。 +参考 [topology.kubernetes.io/zone](#topologykubernetesiozone)。 {{< note >}} -从 kubernetes 1.17 版本开始,不推荐使用此标签,而推荐使用[topology.kubernetes.io/zone](#topologykubernetesiozone)。 +从 kubernetes 1.17 版本开始,不推荐使用此标签,而推荐使用 [topology.kubernetes.io/zone](#topologykubernetesiozone)。 {{< /note >}} ## topology.kubernetes.io/region {#topologykubernetesioregion} + +示例: + +`topology.kubernetes.io/region=us-east-1` 示例: -`topology.kubernetes.io/region=us-east-1` - `topology.kubernetes.io/zone=us-east-1c` 用于:Node、PersistentVolume -对于 Node: Kubelet 用 `cloudprovider` 中定义的区域(zone)信息来填充该标签。未使用 `cloudprovider` 时不会设置该标签,但如果该标签在你的拓扑中有意义的话,应该考虑设置。 +对于 Node: `Kubelet` 或外部 `cloud-controller-manager` 用 `cloudprovider` 中定义的区域信息来填充该标签。 +未使用 `cloudprovider` 时不会设置该标签,但如果该标签在你的拓扑中有意义的话,应该考虑设置。 -用于 PersistentVolume:在 GCE 和 AWS 中,`PersistentVolumeLabel` 准入控制器会自动添加区域标签。 +对于 PersistentVolume:可感知拓扑的卷制备程序将自动在 `PersistentVolumes` 上设置节点亲和性约束。 -在单区的集群中,Kubernetes 会自动将同一副本控制器或服务下的 pod 分散到不同的节点上 (以降低故障的影响)。在多区的集群中,这种分散的行为扩展到跨区的层面 (以降低区域故障的影响)。跨区分散通过 _SelectorSpreadPriority_ 来实现。 +区域代表逻辑故障域。Kubernetes 集群通常跨越多个区域以提高可用性。 +虽然区域的确切定义留给基础架构实现,但是区域的常见属性包括区域内的网络延迟非常低,区域内的免费网络流量以及与其他区域的故障独立性。 +例如,一个区域内的节点可能共享一个网络交换机,但不同区域内的节点则不应共享。 +地区代表一个更大的域,由一个或多个区域组成。 +Kubernetes 集群跨越多个地域是不常见的,而地域或区域的确切定义则留给基础设施实现, +地域的共同属性包括它们之间的网络延迟比它们内部更高,它们之间的网络流量成本不为零,故障独立于其他区域或域。 +例如,一个地域内的节点可能共享电力基础设施(例如 UPS 或发电机),但不同地域的节点通常不会共享。 + + +Kubernetes 对区域和区域的结构做了一些假设: +1) 地域和区域是分层的:区域是地域的严格子集,任何区域都不能位于两个地域中。 +2) 区域名称在地域之间是唯一的;例如,地域 “africa-east-1” 可能包含区域 “africa-east-1a” 和 “africa-east-1b”。 + + +标签的使用者可以安全地假设拓扑标签不变。 +即使标签是严格可变的,标签的使用者也可以认为节点只能通过被销毁并重建才能从一个区域迁移到另一个区域。 + + +Kubernetes 可以以各种方式使用这些信息。 +例如,调度器自动尝试将 ReplicaSet 中的多个 Pods 分布到单区域集群中的多个节点上(为了减少节点故障的影响, +请参阅 [kubernetesiohostname](#kubernetesiohostname))。 +对于多区域集群,这种分布行为也被应用到区域上(以减少区域故障的影响)。 +这是通过 _SelectorSpreadPriority_ 实现的。 + + _SelectorSpreadPriority_ 是一种尽力而为(best-effort)的处理方式,如果集群中的区域是异构的 -(例如:不同区域之间的节点数量、节点类型或 pod 资源需求不同),可能使得 pod 在各区域间无法均匀分布。 -如有需要,用户可以使用同质的区域(节点数量和类型相同) 来减小 pod 分布不均的可能性。 +(例如:不同区域之间的节点数量、节点类型或 Pod 资源需求不同),可能使得 Pod 在各区域间无法均匀分布。 +如有需要,用户可以使用同质的区域(节点数量和类型相同) 来减小 Pod 分布不均的可能性。 -由于卷不能跨区域挂载(attach),调度器 (通过 _VolumeZonePredicate_ 预选) 也会保证需要特定卷的 pod 被调度到卷所在的区域中。 - - -区域和地域(region)的实际值无关紧要,两者的层次含义也没有严格的定义。最终期望是,除非整个地域故障, -否则某一区域节点的故障不应该影响到其他区域的节点。例如,通常区域间应该避免共用同一个网络交换机。 -具体的规划取决于特定的基础设备 - 三机架安装所选择的设置与多数据中心截然不同。 +由于卷不能跨区域挂载(Attach),调度器(通过 _VolumeZonePredicate_ 预选)也会保证需要特定卷的 Pod 被调度到卷所在的区域中。 如果 `PersistentVolumeLabel` 准入控制器不支持自动为 PersistentVolume 打标签,且用户希望防止 pod 跨区域进行卷的挂载, -应考虑手动打标签 (或对 `PersistentVolumeLabel` 增加支持)。如果用户的基础设施没有这种约束,则不需要为卷添加区域标签。 +应考虑手动打标签 (或增加对 `PersistentVolumeLabel` 的支持)。如果用户的基础设施没有这种约束,则不需要为卷添加区域标签。 diff --git a/content/zh/docs/reference/scheduling/config.md b/content/zh/docs/reference/scheduling/config.md index 5fa8497097..15a324fbe6 100644 --- a/content/zh/docs/reference/scheduling/config.md +++ b/content/zh/docs/reference/scheduling/config.md @@ -19,19 +19,22 @@ file and passing its path as a command line argument. + +调度模板(Profile)允许你配置 {{< glossary_tooltip text="kube-scheduler" term_id="kube-scheduler" >}} +中的不同调度阶段。每个阶段都暴露于某个扩展点中。插件通过实现一个或多个扩展点来提供调度行为。 - -你可以通过运行 `kube-scheduler --config ` 来设置调度配置, -配置文件使用组件配置的 API ([`v1alpha1`](https://pkg.go.dev/k8s.io/kube-scheduler@v0.18.0/config/v1alpha1?tab=doc#KubeSchedulerConfiguration) -或 [`v1alpha2`](https://pkg.go.dev/k8s.io/kube-scheduler@v0.18.0/config/v1alpha2?tab=doc#KubeSchedulerConfiguration))。 -`v1alpha2` 可以配置 kube-scheduler 运行[多个配置文件](#multiple-profiles)。 +你可以通过运行 `kube-scheduler --config ` 来设置调度模板, +配置文件使用组件配置的 API ([`v1alpha1`](https://pkg.go.dev/k8s.io/kube-scheduler@v0.19.0/config/v1beta1?tab=doc#KubeSchedulerConfiguration))。 最简单的配置如下: diff --git a/content/zh/docs/reference/tools.md b/content/zh/docs/reference/tools.md index caec8028c9..eb348c89ce 100644 --- a/content/zh/docs/reference/tools.md +++ b/content/zh/docs/reference/tools.md @@ -41,11 +41,11 @@ Kubernetes 包含一些内置工具,可以帮助用户更好的使用 Kubernet ## Minikube -[`minikube`](/docs/tasks/tools/install-minikube/) 是一个可以方便用户在其工作站点本地部署一个单节点 Kubernetes 集群的工具,用于开发和测试。 +[`minikube`](https://minikube.sigs.k8s.io/docs/) 是一个可以方便用户在其工作站点本地部署一个单节点 Kubernetes 集群的工具,用于开发和测试。 ## Dashboard @@ -84,9 +84,9 @@ Use Helm to: ## Kompose -[`Kompose`](https://github.com/kubernetes-incubator/kompose) 一个转换工具,用来帮助 Docker Compose 用户迁移至 Kubernetes。 +[`Kompose`](https://github.com/kubernetes/kompose) 一个转换工具,用来帮助 Docker Compose 用户迁移至 Kubernetes。 -另见: [Kubectl 概述](/zh/docs/reference/kubectl/overview/) 和 [JsonPath 指南](/zh/docs/reference/kubectl/jsonpath)。 - -本页面是 `kubectl` 命令的概述。 +本页列举了常用的 “kubectl” 命令和标志 -# kubectl - 备忘单 ## Kubectl 自动补全 @@ -67,12 +62,12 @@ complete -F __start_kubectl k ```bash source <(kubectl completion zsh) # 在 zsh 中设置当前 shell 的自动补全 -echo "if [ $commands[kubectl] ]; then source <(kubectl completion zsh); fi" >> ~/.zshrc # 在您的 zsh shell 中永久的添加自动补全 +echo "[[ $commands[kubectl] ]] && source <(kubectl completion zsh)" >> ~/.zshrc # 在您的 zsh shell 中永久的添加自动补全 ``` ## Kubectl 上下文和配置 -设置 `kubectl` 与哪个 Kubernetes 集群进行通信并修改配置信息。查看 -[使用 kubeconfig 跨集群授权访问](/zh/docs/tasks/access-application-cluster/configure-access-multiple-clusters/) +设置 `kubectl` 与哪个 Kubernetes 集群进行通信并修改配置信息。 +查看[使用 kubeconfig 跨集群授权访问](/zh/docs/tasks/access-application-cluster/configure-access-multiple-clusters/) 文档获取配置文件详细信息。 -## Apply -`apply` 通过定义 Kubernetes 资源的文件来管理应用。它通过运行 -`kubectl apply` 在集群中创建和更新资源。 +## Kubectl apply +`apply` 通过定义 Kubernetes 资源的文件来管理应用。 +它通过运行 `kubectl apply` 在集群中创建和更新资源。 这是在生产中管理 Kubernetes 应用的推荐方法。 参见 [Kubectl 文档](https://kubectl.docs.kubernetes.io)。 @@ -170,12 +165,19 @@ Kubernetes 配置可以用 YAML 或 JSON 定义。可以使用的文件扩展名 ## 查看和查找资源 @@ -275,7 +284,7 @@ EOF # Get commands with basic output kubectl get services # List all services in the namespace kubectl get pods --all-namespaces # List all pods in all namespaces -kubectl get pods -o wide # List all pods in the namespace, with more details +kubectl get pods -o wide # List all pods in the current namespace, with more details kubectl get deployment my-dep # List a particular deployment kubectl get pods # List all pods in the namespace kubectl get pod my-pod -o yaml # Get a pod's YAML @@ -297,6 +306,10 @@ kubectl get pv --sort-by=.spec.capacity.storage kubectl get pods --selector=app=cassandra -o \ jsonpath='{.items[*].metadata.labels.version}' +# Retrieve the value of a key with dots, e.g. 'ca.crt' +kubectl get configmap myconfig \ + -o jsonpath='{.data.ca\.crt}' + # Get all worker nodes (use a selector to exclude results that have a label # named 'node-role.kubernetes.io/master') kubectl get node --selector='!node-role.kubernetes.io/master' @@ -331,6 +344,14 @@ kubectl get events --sort-by=.metadata.creationTimestamp # Compares the current state of the cluster against the state that the cluster would be in if the manifest was applied. kubectl diff -f ./my-manifest.yaml + +# Produce a period-delimited tree of all keys returned for nodes +# Helpful when locating a key within a complex nested JSON structure +kubectl get nodes -o json | jq -c 'path(..)|[.[]|tostring]|join(".")' + +# Produce a period-delimited tree of all keys returned for pods, etc +kubectl get pods -o json | jq -c 'path(..)|[.[]|tostring]|join(".")' + ``` --> ```bash @@ -359,6 +380,10 @@ kubectl get pv --sort-by=.spec.capacity.storage kubectl get pods --selector=app=cassandra -o \ jsonpath='{.items[*].metadata.labels.version}' +# 检索带有 “.” 键值,例: 'ca.crt' +kubectl get configmap myconfig \ + -o jsonpath='{.data.ca\.crt}' + # 获取所有工作节点(使用选择器以排除标签名称为 'node-role.kubernetes.io/master' 的结果) kubectl get node --selector='!node-role.kubernetes.io/master' @@ -392,10 +417,18 @@ kubectl get events --sort-by=.metadata.creationTimestamp # 比较当前的集群状态和假定某清单被应用之后的集群状态 kubectl diff -f ./my-manifest.yaml + +# 生成一个句点分隔的树,其中包含为节点返回的所有键 +# 在复杂的嵌套JSON结构中定位键时非常有用 +kubectl get nodes -o json | jq -c 'path(..)|[.[]|tostring]|join(".")' + +# 生成一个句点分隔的树,其中包含为pod等返回的所有键 +kubectl get pods -o json | jq -c 'path(..)|[.[]|tostring]|join(".")' + ``` ## 更新资源 @@ -448,7 +481,7 @@ kubectl annotate pods my-pod icon-url=http://goo.gl/XXBTWq # 添加注解 kubectl autoscale deployment foo --min=2 --max=10 # 对 "foo" Deployment 自动伸缩容 ``` - + ## 部分更新资源 ## 编辑资源 @@ -507,7 +540,7 @@ KUBE_EDITOR="nano" kubectl edit svc/docker-registry # 使用其他编辑器 ``` ## 对资源进行伸缩 @@ -526,7 +559,7 @@ kubectl scale --replicas=5 rc/foo rc/bar rc/baz # 伸缩多个 ``` ## 删除资源 @@ -535,7 +568,7 @@ kubectl delete -f ./pod.json # Dele kubectl delete pod,service baz foo # Delete pods and services with same names "baz" and "foo" kubectl delete pods,services -l name=myLabel # Delete pods and services with label name=myLabel kubectl delete pods,services -l name=myLabel # Delete pods and services with label name=myLabel -kubectl -n my-ns delete po,svc --all # Delete all pods and services in namespace my-ns, +kubectl -n my-ns delete pod,svc --all # Delete all pods and services in namespace my-ns, # Delete all pods matching the awk pattern1 or pattern2 kubectl get pods -n mynamespace --no-headers=true | awk '/pattern1|pattern2/{print $1}' | xargs kubectl delete -n mynamespace pod ``` @@ -544,8 +577,7 @@ kubectl get pods -n mynamespace --no-headers=true | awk '/pattern1|pattern2/{pr kubectl delete -f ./pod.json # 删除在 pod.json 中指定的类型和名称的 Pod kubectl delete pod,service baz foo # 删除名称为 "baz" 和 "foo" 的 Pod 和服务 kubectl delete pods,services -l name=myLabel # 删除包含 name=myLabel 标签的 pods 和服务 -kubectl delete pods,services -l name=myLabel --include-uninitialized # 删除包含 label name=myLabel 标签的 Pods 和服务 -kubectl -n my-ns delete po,svc --all # 删除在 my-ns 名字空间中全部的 Pods 和服务 +kubectl -n my-ns delete pod,svc --all # 删除在 my-ns 名字空间中全部的 Pods 和服务 # 删除所有与 pattern1 或 pattern2 awk 模式匹配的 Pods kubectl get pods -n mynamespace --no-headers=true | awk '/pattern1|pattern2/{print $1}' | xargs kubectl delete -n mynamespace pod ``` @@ -674,14 +706,14 @@ kubectl api-resources --api-group=extensions # "extensions" API 组中的所有 ### 格式化输出 -要以特定格式将详细信息输出到终端窗口,可以将 `-o` 或 `--output` 参数添加到支持的 `kubectl` 命令。 +要以特定格式将详细信息输出到终端窗口,将 `-o`(或者 `--output`)参数添加到支持的 `kubectl` 命令中。 -* 进一步了解 [kubectl 概述](/zh/docs/reference/kubectl/overview/)。 -* 参阅 [kubectl](/zh/docs/reference/kubectl/kubectl/) 选项. +* 参阅 [kubectl 概述](/zh/docs/reference/kubectl/overview/),进一步了解[JsonPath](/zh/docs/reference/kubectl/jsonpath)。 +* 参阅 [kubectl](/zh/docs/reference/kubectl/kubectl/) 选项。 * 参阅 [kubectl 使用约定](/zh/docs/reference/kubectl/conventions/)来理解如何在可复用的脚本中使用它。 * 查看社区中其他的 [kubectl 备忘单](https://github.com/dennyzhang/cheatsheet-kubernetes-A4)。 diff --git a/content/zh/docs/reference/kubectl/jsonpath.md b/content/zh/docs/reference/kubectl/jsonpath.md index 900251c09d..c1302ec3d6 100644 --- a/content/zh/docs/reference/kubectl/jsonpath.md +++ b/content/zh/docs/reference/kubectl/jsonpath.md @@ -34,7 +34,7 @@ JSONPath 模板由 {} 包起来的 JSONPath 表达式组成。Kubectl 使用 JSO --> 1. 使用双引号将 JSONPath 表达式内的文本引起来。 2. 使用 `range`,`end` 运算符来迭代列表。 -3. 使用负片索引后退列表。负索引不会"环绕"列表,并且只要 `-index + listLength> = 0` 就有效。 +3. 使用负片索引后退列表。负索引不会“环绕”列表,并且只要 `-index + listLength> = 0` 就有效。 {{< note >}} -在 Windows 上,您必须 _double_ 引用任何包含空格的 JSONPath 模板(不是上面 bash 所示的单引号)。反过来,这意味着您必须在模板中的所有文字周围使用单引号或转义的双引号。例如: +{{< note >}} +在 Windows 上,您必须用双引号把任何包含空格的 JSONPath 模板(不是上面 bash 所示的单引号)。 +反过来,这意味着您必须在模板中的所有文字周围使用单引号或转义的双引号。 +例如: ```cmd C:\> kubectl get pods -o=jsonpath="{range .items[*]}{.metadata.name}{'\t'}{.status.startTime}{'\n'}{end}" C:\> kubectl get pods -o=jsonpath="{range .items[*]}{.metadata.name}{\"\t\"}{.status.startTime}{\"\n\"}{end}" ``` +{{< /note >}} + +{{< note >}} +不支持 JSONPath 正则表达式。如需使用正则表达式进行匹配操作,您可以使用如 `jq` 之类的工具。 + +```shell +# kubectl 的 JSONpath 输出不支持正则表达式 +# 下面的命令不会生效 +kubectl get pods -o jsonpath='{.items[?(@.metadata.name=~/^test$/)].metadata.name}' + +# 下面的命令可以获得所需的结果 +kubectl get pods -o json | jq -r '.items[] | select(.metadata.name | test("test-")).spec.containers[].image' +``` +{{< /note >}} From b9d2bbdb000765bf59aaf5d19b6cd4a7ac202ca4 Mon Sep 17 00:00:00 2001 From: Qiming Teng Date: Tue, 1 Dec 2020 18:02:40 +0800 Subject: [PATCH 59/80] [zh] Sync glossary reference --- .../glossary/cluster-infrastructure.md | 4 +- .../zh/docs/reference/glossary/container.md | 6 +-- .../docs/reference/glossary/control-plane.md | 24 +++++------ content/zh/docs/reference/glossary/cri-o.md | 17 ++++---- content/zh/docs/reference/glossary/kubeadm.md | 13 +++--- content/zh/docs/reference/glossary/kubelet.md | 12 +++--- content/zh/docs/reference/glossary/node.md | 21 ++++++---- .../reference/glossary/platform-developer.md | 22 ++++++---- .../docs/reference/glossary/pod-priority.md | 11 ++--- .../zh/docs/reference/glossary/preemption.md | 20 ++++++---- .../zh/docs/reference/glossary/quantity.md | 40 ++++++++++--------- .../glossary/replication-controller.md | 28 ++++++++----- content/zh/docs/reference/glossary/taint.md | 17 ++++---- .../zh/docs/reference/glossary/toleration.md | 25 +++++++----- 14 files changed, 145 insertions(+), 115 deletions(-) diff --git a/content/zh/docs/reference/glossary/cluster-infrastructure.md b/content/zh/docs/reference/glossary/cluster-infrastructure.md index ab1954e591..8850abd4b5 100644 --- a/content/zh/docs/reference/glossary/cluster-infrastructure.md +++ b/content/zh/docs/reference/glossary/cluster-infrastructure.md @@ -12,7 +12,6 @@ tags: --- -基础设施层提供并维护虚拟机、网络、安全组及其他资源。 \ No newline at end of file +基础设施层提供并维护虚拟机、网络、安全组及其他资源。 diff --git a/content/zh/docs/reference/glossary/container.md b/content/zh/docs/reference/glossary/container.md index ac7526eeec..450a8af998 100644 --- a/content/zh/docs/reference/glossary/container.md +++ b/content/zh/docs/reference/glossary/container.md @@ -13,7 +13,6 @@ tags: --- - - 容器是可移植、可执行的轻量级的镜像,包含其中的软件及其相关依赖。 +容器是可移植、可执行的轻量级的镜像,包含其中的软件及其相关依赖。 - 容器使应用和底层的主机基础设施解耦,降低了应用在不同云环境或者操作系统上的部署难度,便于应用扩展。 diff --git a/content/zh/docs/reference/glossary/control-plane.md b/content/zh/docs/reference/glossary/control-plane.md index 8ffd6c9a25..edb67bd796 100644 --- a/content/zh/docs/reference/glossary/control-plane.md +++ b/content/zh/docs/reference/glossary/control-plane.md @@ -4,15 +4,13 @@ id: control-plane date: 2019-05-12 full_link: short_description: > - Control Plane(控制平面)是指容器编排层,它暴露 API 和接口来定义、部署容器和管理容器的生命周期。 + 控制平面是指容器编排层,它暴露 API 和接口来定义、部署容器和管理容器的生命周期。 aka: tags: - fundamental ---- - - - Control Plane(控制平面)是指容器编排层,它暴露 API 和接口来定义、部署容器和管理容器的生命周期。 - +控制平面(Control Plane)是指容器编排层,它暴露 API 和接口来定义、 +部署容器和管理容器的生命周期。 + +--> -该工具可让您通过 Kubernetes CRI 使用 OCI 容器运行环境。 +该工具可让你通过 Kubernetes CRI 使用 OCI 容器运行时。 @@ -37,13 +36,17 @@ to enable using {{< glossary_tooltip text="container" term_id="container" >}} runtimes that are compatible with the Open Container Initiative (OCI) [runtime spec](https://www.github.com/opencontainers/runtime-spec). --> -CRI-O 是 {{< glossary_tooltip text="cri" term_id="cri" >}} 的实现,与开放容器倡议 Open Container Initiative(OCI)兼容的 {{< glossary_tooltip text="container" term_id="container" >}} [运行时规范](https://www.github.com/opencontainers/runtime-spec)。 +CRI-O 是 {{< glossary_tooltip text="CRI" term_id="cri" >}} 的一种实现, +使得你可以使用与开放容器倡议(Open Container Initiative,OCI) +[运行时规范](https://www.github.com/opencontainers/runtime-spec) +兼容的{{< glossary_tooltip text="容器" term_id="container" >}}。 -部署 CRI-O 允许 Kubernetes 使用任何符合 OCI 的运行时, -作为容器运行环境去运行 {{< glossary_tooltip text="Pods" term_id="pod" >}}, -并从远程注册表获取 OCI 容器镜像。 \ No newline at end of file +部署 CRI-O 允许 Kubernetes 使用任何符合 OCI 要求的运行时作为容器运行时 +去运行 {{< glossary_tooltip text="Pods" term_id="pod" >}}, +并从远程容器仓库获取 OCI 容器镜像。 + diff --git a/content/zh/docs/reference/glossary/kubeadm.md b/content/zh/docs/reference/glossary/kubeadm.md index 3d7ce11b59..f565376100 100644 --- a/content/zh/docs/reference/glossary/kubeadm.md +++ b/content/zh/docs/reference/glossary/kubeadm.md @@ -2,7 +2,7 @@ title: Kubeadm id: kubeadm date: 2018-04-12 -full_link: /docs/admin/kubeadm/ +full_link: /zh/docs/setup/production-environment/tools/kubeadm/ short_description: > 用来快速安装 Kubernetes 并搭建安全稳定的集群的工具。 @@ -13,7 +13,6 @@ tags: --- - - 用来快速安装 Kubernetes 并搭建安全稳定的集群的工具。 +用来快速安装 Kubernetes 并搭建安全稳定的集群的工具。 +你可以使用 kubeadm 安装控制面和 +{{< glossary_tooltip text="工作节点" term_id="node" >}} +组件。 -您可以使用 kubeadm 安装控制面和工作节点组件。 diff --git a/content/zh/docs/reference/glossary/kubelet.md b/content/zh/docs/reference/glossary/kubelet.md index c561109b6e..4562f02f1f 100644 --- a/content/zh/docs/reference/glossary/kubelet.md +++ b/content/zh/docs/reference/glossary/kubelet.md @@ -12,7 +12,6 @@ tags: - core-object --- + -一个在集群中每个节点上运行的代理。它保证容器都运行在 Pod 中。 +一个在集群中每个节点上运行的代理。 +它保证容器都运行在 Pod 中。 +kubelet 接收一组通过各类机制提供给它的 PodSpecs,确保这些 PodSpecs +中描述的容器处于运行状态且健康。 +kubelet 不会管理不是由 Kubernetes 创建的容器。 -kubelet 接收一组通过各类机制提供给它的 PodSpecs,确保这些 PodSpecs 中描述的容器处于运行状态且健康。kubelet 不会管理不是由 Kubernetes 创建的容器。 diff --git a/content/zh/docs/reference/glossary/node.md b/content/zh/docs/reference/glossary/node.md index 1277aa26ab..a646065b02 100644 --- a/content/zh/docs/reference/glossary/node.md +++ b/content/zh/docs/reference/glossary/node.md @@ -1,5 +1,5 @@ --- -title: 节点 +title: 节点(Node) id: node date: 2018-04-12 full_link: /zh/docs/concepts/architecture/nodes/ @@ -25,19 +25,26 @@ tags: --> - Kubernetes 中的工作机器称作节点。 - 工作机器可以是虚拟机也可以是物理机,取决于集群的配置。 -其上部署了运行 {{< glossary_tooltip text="Pods" term_id="pod" >}} 所必需的{{< glossary_tooltip text="服务" term_id="service" >}}, +其上部署了运行 {{< glossary_tooltip text="Pods" term_id="pod" >}} +所必需的本地守护进程或{{< glossary_tooltip text="服务" term_id="service" >}}, 并由主控组件来管理。 -节点上的{{< glossary_tooltip text="服务" term_id="service" >}}包括 Docker、kubelet 和 kube-proxy。 +节点上的的守护进程包括 {{< glossary_tooltip text="kubelet" term_id="kubelet" >}}、 +{{< glossary_tooltip text="kube-proxy" term_id="kube-proxy" >}} +以及一个 {{< glossary_tooltip term_id="docker" >}} 这种 +实现了 {{< glossary_tooltip text="CRI" term_id="cri" >}} +的容器运行时。 + +在早期的 Kubernetes 版本中,节点也称作 "Minions"。 diff --git a/content/zh/docs/reference/glossary/platform-developer.md b/content/zh/docs/reference/glossary/platform-developer.md index 0cc10ac633..d18ad680b7 100644 --- a/content/zh/docs/reference/glossary/platform-developer.md +++ b/content/zh/docs/reference/glossary/platform-developer.md @@ -1,5 +1,5 @@ --- -title: 平台开发者 +title: 平台开发人员(Platform Developer) id: platform-developer date: 2018-04-12 full_link: @@ -12,7 +12,6 @@ tags: --- - 定制 Kubernetes 平台以满足自己的项目需求的人。 +定制 Kubernetes 平台以满足自己的项目需求的人。 -例如,平台开发人员可以使用[定制资源](/docs/concepts/api-extension/custom-resources/)或[使用汇聚层扩展 Kubernetes API](/docs/concepts/api-extension/apiserver-aggregation/) 来为其 Kubernetes 实例增加功能,特别是为其应用程序添加功能。一些平台开发人员也是 Kubrenetes {{< glossary_tooltip text="贡献者" term_id="contributor" >}},他们会开发贡献给 Kubernetes 社区的扩展;另一些则开发封闭源代码的商业扩展或用于特定功能的扩展。 +平台开发人员可以使用[定制资源](/zh/docs/concepts/extend-kubernetes/api-extension/custom-resources/) +或[使用汇聚层扩展 Kubernetes API](/zh/docs/concepts/api-extension/apiserver-aggregation/) +来为其 Kubernetes 实例增加功能,特别是为其应用程序添加功能。 +一些平台开发人员也是 Kubrenetes {{< glossary_tooltip text="贡献者" term_id="contributor" >}}, +他们会开发贡献给 Kubernetes 社区的扩展。 +另一些平台开发人员则开发封闭源代码的商业扩展或用于特定网站的扩展。 diff --git a/content/zh/docs/reference/glossary/pod-priority.md b/content/zh/docs/reference/glossary/pod-priority.md index d66561d9d7..d58eaed928 100644 --- a/content/zh/docs/reference/glossary/pod-priority.md +++ b/content/zh/docs/reference/glossary/pod-priority.md @@ -1,8 +1,8 @@ --- -title: Pod 优先级 +title: Pod 优先级(Pod Priority) id: pod-priority date: 2019-01-31 -full_link: /docs/concepts/configuration/pod-priority-preemption/#pod-priority +full_link: /zh/docs/concepts/configuration/pod-priority-preemption/#pod-priority short_description: > Pod 优先级表示一个 Pod 相对于其他 Pod 的重要性。 @@ -12,7 +12,6 @@ tags: --- -[Pod 优先级](/docs/concepts/configuration/pod-priority-preemption/#pod-priority) 允许为一个 Pod 设置高于或低于其他 Pod 的优先级 -- 这对于生产集群工作负载而言是一个重要的特性。 \ No newline at end of file +[Pod 优先级](/zh/docs/concepts/configuration/pod-priority-preemption/#pod-priority) +允许用户为 Pod 设置高于或低于其他 Pod 的优先级 -- 这对于生产集群 +工作负载而言是一个重要的特性。 + diff --git a/content/zh/docs/reference/glossary/preemption.md b/content/zh/docs/reference/glossary/preemption.md index 575b329065..3475e6ab01 100644 --- a/content/zh/docs/reference/glossary/preemption.md +++ b/content/zh/docs/reference/glossary/preemption.md @@ -1,10 +1,11 @@ --- -title: 抢占 +title: 抢占(Preemption) id: preemption date: 2019-01-31 -full_link: /docs/concepts/configuration/pod-priority-preemption/#preemption +full_link: /zh/docs/concepts/configuration/pod-priority-preemption/#preemption short_description: > - Kubernetes 中的抢占逻辑通过驱逐节点上的低优先级 Pod 来帮助挂起的 Pod 找到合适的节点。 + Kubernetes 中的抢占逻辑通过驱逐节点上的低优先级 Pod 来帮助悬决的 + Pod 找到合适的节点。 aka: tags: @@ -12,7 +13,6 @@ tags: --- - Kubernetes 中的抢占逻辑通过驱逐节点上的低优先级 Pod 来帮助挂起的 Pod 找到合适的节点。 +Kubernetes 中的抢占逻辑通过驱逐{{< glossary_tooltip term_id="node" >}} +上的低优先级{{< glossary_tooltip term_id="pod" >}} +来帮助悬决的 Pod 找到合适的节点。 -如果一个 Pod 无法调度,调度器会尝试[抢占](/docs/concepts/configuration/pod-priority-preemption/#preemption)较低优先级的 Pod,以使得挂起的 Pod 可能被调度。 \ No newline at end of file +如果一个 Pod 无法调度,调度器会尝试 +[抢占](/zh/docs/concepts/configuration/pod-priority-preemption/#preemption) +较低优先级的 Pod,以使得悬决的 Pod 有可能被调度。 + diff --git a/content/zh/docs/reference/glossary/quantity.md b/content/zh/docs/reference/glossary/quantity.md index 70d5a95ffa..03cc80051c 100644 --- a/content/zh/docs/reference/glossary/quantity.md +++ b/content/zh/docs/reference/glossary/quantity.md @@ -1,17 +1,17 @@ --- -title: 数量 +title: 量纲(Quantity) id: quantity date: 2018-08-07 full_link: short_description: > - 使用 SI 后缀的小数或大数的整数表示。 + 使用全数字来表示较小数值或使用 SI 后缀表示较大数值的表示法。 aka: tags: - core-object --- + + +使用全数字来表示较小数值或使用 SI 后缀表示较大数值的表示法。 + -数量是使用紧凑的整数表示法的小数或大数的表示,并带有国际计量单位制(SI)后缀。 -小数用 milli 单位表示,而大数用 kilo、mega 或 giga 单位表示。 - -例如,数字 `1.5` 表示为`1500m`, -而数字`1000`表示为`1k`,`1000000`表示为`1M`。 -您还可以指定二进制表示法后缀; 数字 2048 可以写成`2Ki`。 - -公认的十进制(10的幂)单位是 `m`(milli)、`k`(kilo, -有意小写)、`M`(mega),`G`(giga)、`T`(terra)、`P`(peta)、 -`E`(exa)。 - -公认的二进制(2的幂)单位是 `Ki` (kibi)、 `Mi` (mebi)、`Gi` (gibi)、 -`Ti` (tebi)、 `Pi` (pebi)、 `Ei` (exbi)。 - +量纲是使用紧凑的全数字表示法来表示小数值或带有国际计量单位制(SI) +的大数值的表示法。 +小数用 milli 单位表示,而大数用 kilo、mega 或 giga 单位表示。 + +例如,数字 `1.5` 表示为 `1500m`, +而数字 `1000` 表示为 `1k`,`1000000` 表示为 `1M`。 +你还可以指定二进制表示法后缀;数字 2048 可以写成 `2Ki`。 + +公认的十进制(10 的幂数)单位是 `m`(milli)、`k`(kilo,有意小写)、 +`M`(mega)、`G`(giga)、`T`(terra)、`P`(peta)、`E`(exa)。 + +公认的二进制(2 的幂数)单位是 `Ki` (kibi)、`Mi` (mebi)、`Gi` (gibi)、 +`Ti` (tebi)、 `Pi` (pebi)、 `Ei` (exbi)。 + diff --git a/content/zh/docs/reference/glossary/replication-controller.md b/content/zh/docs/reference/glossary/replication-controller.md index daee67c2a1..3ac4033f42 100644 --- a/content/zh/docs/reference/glossary/replication-controller.md +++ b/content/zh/docs/reference/glossary/replication-controller.md @@ -4,7 +4,7 @@ id: replication-controller date: 2018-04-12 full_link: short_description: > - Replication Controller 是 Kubernetes 的一种服务,用来确保给定个数的 Pod 一直处于运行状态。 + 一种管理多副本应用的(已启用)的 API 对象。 aka: tags: @@ -13,31 +13,41 @@ tags: --- - -Replication Controller 是 Kubernetes 的一种服务,用来确保给定个数的 Pod 一直处于运行状态。 +一种工作管理多副本应用的负载资源,能够确保特定个数的 +{{< glossary_tooltip text="Pod" term_id="pod" >}} +实例处于运行状态。 +控制面确保所指定的个数的 Pods 处于运行状态,即使某些 Pod 会失效, +比如被你手动删除或者因为其他错误启动过多 Pod 时。 + +{{< note >}} + +ReplicationController 已被启用。请参见 Deployment 执行类似功能。 +{{< /note >}} -Replication Controller 会基于设定值自动增删 Pod 的实例。如果 Pod 被误删除或者启动实例过多,Replication Controller 允许 Pod 的实例个数恢复到设定值。 diff --git a/content/zh/docs/reference/glossary/taint.md b/content/zh/docs/reference/glossary/taint.md index 39f2c0ff5d..8961ce205d 100644 --- a/content/zh/docs/reference/glossary/taint.md +++ b/content/zh/docs/reference/glossary/taint.md @@ -2,9 +2,11 @@ title: 污点(Taint) id: taint date: 2019-01-11 -full_link: /docs/concepts/configuration/taint-and-toleration/ +full_link: /zh/docs/concepts/scheduling-eviction/taint-and-toleration/ short_description: > - 污点是一种一个核心对象,包含三个必需的属性:key、value 和 effect。污点会阻止在节点或节点组上调度 Pod。 + 污点是一种一个核心对象,包含三个必需的属性:key、value 和 effect。 + 污点会阻止在节点或节点组上调度 Pod。 + aka: tags: - core-object @@ -12,7 +14,6 @@ tags: --- - -污点和{{< glossary_tooltip text="容忍度" term_id="toleration" >}}一起工作,以确保不会将 Pod 调度到不适合的节点上。 -同一{< glossary_tooltip text="节点" term_id="node" >}}上可应用一个或多个污点。 -节点应该仅调度那些带着能与污点相匹配容忍度的 Pod。 \ No newline at end of file +污点和{{< glossary_tooltip text="容忍度" term_id="toleration" >}}一起工作, +以确保不会将 Pod 调度到不适合的节点上。 +同一{{< glossary_tooltip text="节点" term_id="node" >}}上可标记一个或多个污点。 +节点应该仅调度那些带着能与污点相匹配容忍度的 Pod。 diff --git a/content/zh/docs/reference/glossary/toleration.md b/content/zh/docs/reference/glossary/toleration.md index bc5b84e7e9..963d75b94c 100644 --- a/content/zh/docs/reference/glossary/toleration.md +++ b/content/zh/docs/reference/glossary/toleration.md @@ -4,7 +4,9 @@ id: toleration date: 2019-01-11 full_link: /zh/docs/concepts/scheduling-eviction/taint-and-toleration/ short_description: > - 一个核心对象,由三个必需的属性组成:key、value 和 effect。容忍度允许将 Pod 调度到具有对应污点的节点或节点组上。 + 一个核心对象,由三个必需的属性组成:key、value 和 effect。 + 容忍度允许将 Pod 调度到具有对应污点的节点或节点组上。 + aka: tags: - core-object @@ -12,7 +14,6 @@ tags: --- - 一个核心对象,由三个必需的属性组成:key、value 和 effect。 - 容忍度允许将 Pod 调度到具有匹配{{< glossary_tooltip text="污点" term_id="taint" >}}的节点或节点组上。 +一个核心对象,由三个必需的属性组成:key、value 和 effect。 +容忍度允许将 Pod 调度到具有对应{{< glossary_tooltip text="污点" term_id="taint" >}} +的节点或节点组上。 - - - 容忍度 和{{< glossary_tooltip text="污点" term_id="taint" >}}共同作用以确保不会将 Pod 调度在不适合的节点上。 - 在同一 {{< glossary_tooltip text="pod" term_id="pod" >}} 上可以设置一个或者多个容忍度。 - 容忍度表示在匹配节点或节点组上的{{< glossary_tooltip text="污点" term_id="taint" >}} - 调度 {{< glossary_tooltip text="pod" term_id="pod" >}} 是允许的(但不必要)。 +容忍度和{{< glossary_tooltip text="污点" term_id="taint" >}}共同作用可以 +确保不会将 Pod 调度在不适合的节点上。 +在同一 {{< glossary_tooltip text="Pod" term_id="pod" >}} 上可以设置一个 +或者多个容忍度。 +容忍度表示在包含对应{{< glossary_tooltip text="污点" term_id="taint" >}} +的节点或节点组上调度 {{< glossary_tooltip text="Pod" term_id="pod" >}} +是允许的(但不必要)。 + From a6e8f8bca1781fcae6c684dfa51911bcb174a2cb Mon Sep 17 00:00:00 2001 From: Jie Shen Date: Wed, 2 Dec 2020 12:52:30 +0800 Subject: [PATCH 60/80] Revise multiple zones --- content/en/docs/setup/best-practices/multiple-zones.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/setup/best-practices/multiple-zones.md b/content/en/docs/setup/best-practices/multiple-zones.md index f24c3bdcca..fce6518eb2 100644 --- a/content/en/docs/setup/best-practices/multiple-zones.md +++ b/content/en/docs/setup/best-practices/multiple-zones.md @@ -33,7 +33,7 @@ support running as a pool of interchangable resources, replicated per component. When you deploy a cluster control plane, place replicas of -control plane components across multple failure zones. If availability is +control plane components across multiple failure zones. If availability is an important concern, select at least three failure zones and replicate each individual control plane component (API server, scheduler, etcd, cluster controller manager) across at least three failure zones. @@ -126,7 +126,7 @@ of different failure zones, does vary depending on exactly how your cluster is s ## Fault recovery When you set up your cluster, you might also need to consider whether and how -your setup can restore service if all of the failure zones in a region go +your setup can restore service if all the failure zones in a region go off-line at the same time. For example, do you rely on there being at least one node able to run Pods in a zone? Make sure that any cluster-critical repair work does not rely From 03e669b6266a59d5a240abac35df6d9c9a2aaddf Mon Sep 17 00:00:00 2001 From: Xiaoyang Zhu Date: Wed, 2 Dec 2020 17:40:35 +0800 Subject: [PATCH 61/80] [zh] update external service note --- content/zh/docs/concepts/services-networking/service.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/docs/concepts/services-networking/service.md b/content/zh/docs/concepts/services-networking/service.md index 3155ca8751..028f1620e9 100644 --- a/content/zh/docs/concepts/services-networking/service.md +++ b/content/zh/docs/concepts/services-networking/service.md @@ -861,7 +861,7 @@ Kubernetes `ServiceTypes` 允许指定你所需要的 Service 类型,默认是 无需创建任何类型代理。 {{< note >}} - 你需要 CoreDNS 1.7 或更高版本才能使用 `ExternalName` 类型。 + 你需要使用 kube-dns 1.7 及以上版本或者 CoreDNS 0.0.8 及以上版本才能使用 `ExternalName` 类型。 {{< /note >}} -第一个示例选择了所有键等于 `environment` 并且值等于 `production` 或者 `qa` 的资源。 -第二个示例选择了所有键等于 `tier` 并且值不等于 `frontend` 或者 `backend` 的资源,以及所有没有 `tier` 键标签的资源。 -第三个示例选择了所有包含了有 `partition` 标签的资源;没有校验它的值。 -第四个示例选择了所有没有 `partition` 标签的资源;没有校验它的值。 +* 第一个示例选择了所有键等于 `environment` 并且值等于 `production` 或者 `qa` 的资源。 +* 第二个示例选择了所有键等于 `tier` 并且值不等于 `frontend` 或者 `backend` 的资源,以及所有没有 `tier` 键标签的资源。 +* 第三个示例选择了所有包含了有 `partition` 标签的资源;没有校验它的值。 +* 第四个示例选择了所有没有 `partition` 标签的资源;没有校验它的值。 类似地,逗号分隔符充当 _与_ 运算符。因此,使用 `partition` 键(无论为何值)和 `environment` 不同于 `qa` 来过滤资源可以使用 `partition, environment notin(qa)` 来实现。 From ee5a0df6ad789315828163323a7a3307cad2d39b Mon Sep 17 00:00:00 2001 From: Emily Moss Date: Wed, 2 Dec 2020 15:30:05 -0800 Subject: [PATCH 65/80] remove text fragment --- .../en/docs/concepts/cluster-administration/system-metrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/concepts/cluster-administration/system-metrics.md b/content/en/docs/concepts/cluster-administration/system-metrics.md index 3dba687f4e..d0df8a1824 100644 --- a/content/en/docs/concepts/cluster-administration/system-metrics.md +++ b/content/en/docs/concepts/cluster-administration/system-metrics.md @@ -104,7 +104,7 @@ The kubelet collects accelerator metrics through cAdvisor. To collect these metr The responsibility for collecting accelerator metrics now belongs to the vendor rather than the kubelet. Vendors must provide a container that collects metrics and exposes them to the metrics service (for example, Prometheus). -The [`DisableAcceleratorUsageMetrics` feature gate](/docs/reference/command-line-tools-reference/feature-gates/#feature-gates-for-alpha-or-beta-features:~:text= DisableAcceleratorUsageMetrics,-false) disables metrics collected by the kubelet, with a [timeline for enabling this feature by default](https://github.com/kubernetes/enhancements/tree/411e51027db842355bd489691af897afc1a41a5e/keps/sig-node/1867-disable-accelerator-usage-metrics#graduation-criteria). +The [`DisableAcceleratorUsageMetrics` feature gate](/docs/reference/command-line-tools-reference/feature-gates/) disables metrics collected by the kubelet, with a [timeline for enabling this feature by default](https://github.com/kubernetes/enhancements/tree/411e51027db842355bd489691af897afc1a41a5e/keps/sig-node/1867-disable-accelerator-usage-metrics#graduation-criteria). ## Component metrics From 9e71e760345e554e7428d1df831699e84c2283e7 Mon Sep 17 00:00:00 2001 From: "Jorge O. Castro" Date: Wed, 2 Dec 2020 19:48:59 -0500 Subject: [PATCH 66/80] Initial commit to explain the dockershim deprecation (#25359) * Initial commit to explain the dockershim deprecation Signed-off-by: Jorge O. Castro * Fix overly long links so they render correctly Signed-off-by: Jorge O. Castro * Add author byline Signed-off-by: Jorge O. Castro --- ...-12-02-dont-panic-kubernetes-and-docker.md | 102 ++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 content/en/blog/_posts/2020-12-02-dont-panic-kubernetes-and-docker.md diff --git a/content/en/blog/_posts/2020-12-02-dont-panic-kubernetes-and-docker.md b/content/en/blog/_posts/2020-12-02-dont-panic-kubernetes-and-docker.md new file mode 100644 index 0000000000..6f70660420 --- /dev/null +++ b/content/en/blog/_posts/2020-12-02-dont-panic-kubernetes-and-docker.md @@ -0,0 +1,102 @@ +--- +layout: blog +title: "Don't Panic: Kubernetes and Docker" +date: 2020-12-02 +slug: dont-panic-kubernetes-and-docker +--- + +**Authors:** Jorge Castro, Duffie Cooley, Kat Cosgrove, Justin Garrison, Noah Kantrowitz, Bob Killen, Rey Lejano, Dan “POP” Papandrea, Jeffrey Sica, Davanum “Dims” Srinivas + +Kubernetes is [deprecating +Docker](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.20.md#deprecation) +as a container runtime after v1.20. + +**You do not need to panic. It’s not as dramatic as it sounds.** + +tl;dr Docker as an underlying runtime is being deprecated in favor of runtimes +that use the [Container Runtime Interface(CRI)](https://kubernetes.io/blog/2016/12/container-runtime-interface-cri-in-kubernetes/) +created for Kubernetes. Docker-produced images will continue to work in your +cluster with all runtimes, as they always have. + +If you’re an end-user of Kubernetes, not a whole lot will be changing for you. +This doesn’t mean the death of Docker, and it doesn’t mean you can’t, or +shouldn’t, use Docker as a development tool anymore. Docker is still a useful +tool for building containers, and the images that result from running `docker +build` can still run in your Kubernetes cluster. + +If you’re using a managed Kubernetes service like GKE or EKS, you will need to +make sure your worker nodes are using a supported container runtime before +Docker support is removed in a future version of Kubernetes. If you have node +customizations you may need to update them based on your environment and runtime +requirements. Please work with your service provider to ensure proper upgrade +testing and planning. + +If you’re rolling your own clusters, you will also need to make changes to avoid +your clusters breaking. At v1.20, you will get a deprecation warning for Docker. +When Docker runtime support is removed in a future release (currently planned +for the 1.23 release in late 2021) of Kubernetes it will no longer be supported +and you will need to switch to one of the other compliant container runtimes, +like containerd or CRI-O. Just make sure that the runtime you choose supports +the docker daemon configurations you currently use (e.g. logging). + +## So why the confusion and what is everyone freaking out about? + +We’re talking about two different environments here, and that’s creating +confusion. Inside of your Kubernetes cluster, there’s a thing called a container +runtime that’s responsible for pulling and running your container images. Docker +is a popular choice for that runtime (other common options include containerd +and CRI-O), but Docker was not designed to be embedded inside Kubernetes, and +that causes a problem. + +You see, the thing we call “Docker” isn’t actually one thing -- it’s an entire +tech stack, and one part of it is a thing called “containerd,” which is a +high-level container runtime by itself. Docker is cool and useful because it has +a lot of UX enhancements that make it really easy for humans to interact with +while we’re doing development work, but those UX enhancements aren’t necessary +for Kubernetes, because it isn’t a human. + +As a result of this human-friendly abstraction layer, your Kubernetes cluster +has to use another tool called Dockershim to get at what it really needs, which +is containerd. That’s not great, because it gives us another thing that has to +be maintained and can possibly break. What’s actually happening here is that +Dockershim is being removed from Kubelet as early as v1.23 release, which +removes support for Docker as a container runtime as a result. You might be +thinking to yourself, but if containerd is included in the Docker stack, why +does Kubernetes need the Dockershim? + +Docker isn’t compliant with CRI, the [Container Runtime Interface](https://kubernetes.io/blog/2016/12/container-runtime-interface-cri-in-kubernetes/). +If it were, we wouldn’t need the shim, and this wouldn’t be a thing. But it’s +not the end of the world, and you don’t need to panic -- you just need to change +your container runtime from Docker to another supported container runtime. + +One thing to note: If you are relying on the underlying docker socket +(/var/run/docker.sock) as part of a workflow within your cluster today, moving +to a different runtime will break your ability to use it. This pattern is often +called Docker in Docker. There are lots of options out there for this specific +use case including things like +[kaniko](https://github.com/GoogleContainerTools/kaniko), +[img](https://github.com/genuinetools/img), and +[buildah](https://github.com/containers/buildah). + +## What does this change mean for developers, though? Do we still write Dockerfiles? Do we still build things with Docker? + +This change addresses a different environment than most folks use to interact +with Docker. The Docker installation you’re using in development is unrelated to +the Docker runtime inside your Kubernetes cluster. It’s confusing, I know. As a +developer, Docker is still useful to you in all the ways it was before this +change was announced. The image that Docker produces isn’t really a +Docker-specific image -- it’s an OCI ([Open Container Initiative](https://opencontainers.org/)) image. +Any OCI-compliant image, regardless of the tool you use to build it, will look +the same to Kubernetes. Both [containerd](https://containerd.io/) and +[CRI-O](https://cri-o.io/) know how to pull those images and run them. This is +why we have a standard for what containers should look like. + +So, this change is coming. It’s going to cause issues for some, but it isn’t +catastrophic, and generally it’s a good thing. Depending on how you interact +with Kubernetes, this could mean nothing to you, or it could mean a bit of work. +In the long run, it’s going to make things easier. If this is still confusing +for you, that’s okay -- there’s a lot going on here, Kubernetes has a lot of +moving parts, and nobody is an expert in 100% of it. We encourage any and all +questions regardless of experience level or complexity! Our goal is to make sure +everyone is educated as much as possible on the upcoming changes. `<3` We hope +this has answered most of your questions and soothed some anxieties! \ No newline at end of file From cf92dc8f0780a79357386c358847a43299045af2 Mon Sep 17 00:00:00 2001 From: Bob Killen Date: Wed, 2 Dec 2020 19:18:47 -0500 Subject: [PATCH 67/80] Add dockershim faq blog post --- .../blog/_posts/2020-12-02-dockershim-faq.md | 180 ++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100644 content/en/blog/_posts/2020-12-02-dockershim-faq.md diff --git a/content/en/blog/_posts/2020-12-02-dockershim-faq.md b/content/en/blog/_posts/2020-12-02-dockershim-faq.md new file mode 100644 index 0000000000..cbdd5cd680 --- /dev/null +++ b/content/en/blog/_posts/2020-12-02-dockershim-faq.md @@ -0,0 +1,180 @@ +--- +layout: blog +title: "Dockershim Deprecation FAQ" +date: 2020-12-02 +slug: dockershim-faq +aliases: [ '/dockershim' ] +--- + +This document goes over some frequently asked questions regarding the Dockershim +depreaction announced as a part of the Kubernetes v1.20 release. For more detail +on the deprecation of Docker as a container runtime for Kubernetes kubelets, and +what that means, check out the blog post +[Don't Panic: Kubernetes and Docker](/blog/2020/12/02/dont-panic-kubernetes-and-docker/). + +### Why is dockershim being deprecated? + +Maintaining dockershim has become a heavy burden on the Kubernetes maintainers. +The CRI standard was created to reduce this burden and allow smooth interoperability +of different container runtimes. Docker itself doesn't currently implement CRI, +thus the problem. + +Dockershim was always intended to be a temporary solution (hence the name: shim). +You can read more about the community discussion and planning in the +[Dockershim Removal Kubernetes Enhancement Proposal][drkep]. + +Additionally, features that were largely incompatible with the dockershim, such +as cgroups v2 and user namespaces are being implemented in these newer CRI +runtimes. Removing support for the dockershim will allow further development in +those areas. + +[drkep]: https://github.com/kubernetes/enhancements/tree/master/keps/sig-node/1985-remove-dockershim + +### Can I still use Docker in Kubernetes 1.20? + +Yes, the only thing changing in 1.20 is a single warning log printed at [kubelet] +startup if using Docker as the runtime. + +[kubelet]: /docs/reference/command-line-tools-reference/kubelet/ + + +### When will dockershim be removed? + +Given the impact of this change, we are using an extended deprecation timeline. +It will not be removed before Kubernetes 1.22, meaning the earliest release without +dockershim would be 1.23 in late 2021. We will be working closely with vendors +and other ecosystem groups to ensure a smooth transition and will evaluate things +as the situation evolves. + + +### Will my existing Docker images still work? + +Yes, the images produced from `docker build` will work with all CRI implementations. +All your existing images will still work exactly the same. + + +### What about private images? + +Also yes. All CRI runtimes support the same pull secrets configuration used in +Kubernetes, either via the PodSpec or ServiceAccount. + + +### Are Docker and containers the same thing? + +Docker popularized the Linux containers pattern and has been instrumental in +developing the underlying technology, however containers in Linux have existed +for a long time. The container ecosystem has grown to be much broader than just +Docker. Standards like OCI and CRI have helped many tools grow and thrive in our +ecosystem, some replacing aspects of Docker while others enhance existing +functionality. + + +### Are there examples of folks using other runtimes in production today? + +All Kubernetes project produced artifacts (Kubernetes binaries) are validated +with each release. + +Additionally, the [kind] project has been using containerd for some time and has +seen an improvement in stability for its use case. Kind and containerd are leveraged +multiple times every day to validate any changes to the Kubernetes codebase. Other +related projects follow a similar pattern as well, demonstrating the stability and +usability of other container runtimes. As an example, OpenShift 4.x has been +using the [CRI-O] runtime in production since June 2019. + +For other examples and references you can look at the adopters of containerd and +cri-o, two container runtimes under the Cloud Native Computing Foundation ([CNCF]). +- [containerd](https://github.com/containerd/containerd/blob/master/ADOPTERS.md) +- [CRI-O](https://github.com/cri-o/cri-o/blob/master/ADOPTERS.md) + +[CRI-O]: https://cri-o.io/ +[kind]: https://kind.sigs.k8s.io/ +[CNCF]: https://cncf.io + + +### People keep referencing OCI, what is that? + +OCI stands for the [Open Container Initiative], which standardized many of the +interfaces between container tools and technologies. They maintain a standard +specification for packaging container images (OCI image-spec) and running containers +(OCI runtime-spec). They also maintain an actual implementation of the runtime-spec +in the form of [runc], which is the underlying default runtime for both +[containerd] and [CRI-O]. The CRI builds on these low-level specifications to +provide an end-to-end standard for managing containers. + +[Open Container Initative]: https://opencontainers.org/about/overview/ +[runc]: https://github.com/opencontainers/runc +[containerd]: https://containerd.io/ + + +### Which CRI implementation should I use? + +That’s a complex question and it depends on a lot of factors. If Docker is +working for you, moving to containerd should be a relatively easy swap and +has have strictly better performance and less overhead. However we encourage you +to explore all the options from the [CNCF landscape] in case another would be an +even better fit for your environment. + +[CNCF landscape]: https://landscape.cncf.io/category=container-runtime&format=card-mode&grouping=category + + +### What should I look out for when changing CRI implementations? + +While the underlying containerization code is the same between Docker and most +CRIs (including containerd), there are a few differences around the edges. Some +common things to consider when migrating are: + +- Logging configuration +- Runtime resource limitations +- Node provisioning scripts that call docker or use docker via it's control socket +- Kubectl plugins that require docker CLI or the control socket +- Kubernetes tools that require direct access to Docker (e.g. kube-imagepuller) +- Configuration of functionality like `registry-mirrors` and insecure registries +- Other support scripts or daemons that expect docker to be available and are run + outside of Kubernetes (e.g. monitoring or security agents) +- GPUs or special hardware and how they integrate with your runtime and Kubernetes + +If you use Kubernetes resource requests/limits or file-based log collection +DaemonSets then they will continue to work the same, but if you’ve customized +your dockerd configuration, you’ll need to adapt that for your new container +runtime where possible. + +Another thing to look out for is anything expecting to run for system maintenance +or nested inside a container when building images will no longer work. For the +former, you can use the [`crictl`][cr] tool as a drop-in replacement and for the +latter you can use newer container build options like [img], [buildah], or +[kaniko] that don’t require Docker. + +[cr]: https://github.com/kubernetes-sigs/cri-tools +[img]: https://github.com/genuinetools/img +[buildah]: https://github.com/containers/buildah +[kaniko]: https://github.com/GoogleContainerTools/kaniko + +For containerd, you can start with their [documentation] to see what configuration +options are available as you migrate things over. + +[documentation]: https://github.com/containerd/cri/blob/master/docs/registry.md + +For instructions on how to use containerd and CRI-O with Kubernetes, see the +Kubernetes documentation on [Container Runtimes] + +[Container Runtimes]: /docs/setup/production-environment/container-runtimes + + +### What if I have more questions? + +If you use a vendor-supported Kubernetes distribution, you can ask them about +upgrade plans for their products. For end-user questions, please post them +to our end user community forum: https://discuss.kubernetes.io/. + +You can also check out the excellent blog post +[Wait, Docker is deprecated in Kubernetes now?][dep] a more in-depth technical +discussion of the changes. + +[dep]: https://dev.to/inductor/wait-docker-is-deprecated-in-kubernetes-now-what-do-i-do-e4m + + +### Can I have a hug? + +Always and whenever you want! 🤗🤗 + + From 9bf6009431a9908b19b5e9cc296c7b38711c3514 Mon Sep 17 00:00:00 2001 From: Hao Yuan Date: Wed, 2 Dec 2020 15:18:01 +0800 Subject: [PATCH 68/80] sync command-line-tools reference of kube-apiserver --- .../kube-apiserver.md | 2858 +++++++++++++++-- 1 file changed, 2640 insertions(+), 218 deletions(-) diff --git a/content/zh/docs/reference/command-line-tools-reference/kube-apiserver.md b/content/zh/docs/reference/command-line-tools-reference/kube-apiserver.md index 4acc57c7c9..c871a3dc4f 100644 --- a/content/zh/docs/reference/command-line-tools-reference/kube-apiserver.md +++ b/content/zh/docs/reference/command-line-tools-reference/kube-apiserver.md @@ -1,227 +1,2649 @@ --- title: kube-apiserver -notitle: true +content_type: tool-reference +weight: 30 --- -## kube-apiserver +## {{% heading "synopsis" %}} - -### 概要 - - -Kubernetes API server 为 api 对象验证并配置数据,包括 pods、 services、 replicationcontrollers 和其它 api 对象。API Server 提供 REST 操作和到集群共享状态的前端,所有其他组件通过它进行交互。 + +Kubernetes API 服务器验证并配置 API 对象的数据, +这些对象包括 pods、services、replicationcontrollers 等。 +API 服务器为 REST 操作提供服务,并为集群的共享状态提供前端, +所有其他组件都通过该前端进行交互。 ``` -kube-apiserver +kube-apiserver [flags] ``` -### 选项 -``` - - --admission-control stringSlice 控制资源进入集群的准入控制插件的顺序列表。逗号分隔的 NamespaceLifecycle 列表。(默认值 [AlwaysAdmit]) - - --admission-control-config-file string 包含准入控制配置的文件。 - - --advertise-address ip 向集群成员通知 apiserver 消息的 IP 地址。这个地址必须能够被集群中其他成员访问。如果 IP 地址为空,将会使用 --bind-address,如果未指定 --bind-address,将会使用主机的默认接口地址。 - - --allow-privileged 如果为 true, 将允许特权容器。 - - --anonymous-auth 启用到 API server 的安全端口的匿名请求。未被其他认证方法拒绝的请求被当做匿名请求。匿名请求的用户名为 system:anonymous,用户组名为 system:unauthenticated。(默认值 true) - - --apiserver-count int 集群中运行的 apiserver 数量,必须为正数。(默认值 1) - - --audit-log-maxage int 基于文件名中的时间戳,旧审计日志文件的最长保留天数。 - - --audit-log-maxbackup int 旧审计日志文件的最大保留个数。 - - --audit-log-maxsize int 审计日志被轮转前的最大兆字节数。 - - --audit-log-path string 如果设置该值,所有到 apiserver 的请求都将会被记录到这个文件。'-' 表示记录到标准输出。 - - --audit-policy-file string 定义审计策略配置的文件的路径。需要打开 'AdvancedAuditing' 特性开关。AdvancedAuditing 需要一个配置来启用审计功能。 - - --audit-webhook-config-file string 一个具有 kubeconfig 格式文件的路径,该文件定义了审计的 webhook 配置。需要打开 'AdvancedAuditing' 特性开关。 - - --audit-webhook-mode string 发送审计事件的策略。 Blocking 模式表示正在发送事件时应该阻塞服务器的响应。 Batch 模式使 webhook 异步缓存和发送事件。 Known 模式为 batch,blocking。(默认值 "batch") - - --authentication-token-webhook-cache-ttl duration 从 webhook 令牌认证者获取的响应的缓存时长。( 默认值 2m0s) - - --authentication-token-webhook-config-file string 包含 webhook 配置的文件,用于令牌认证,具有 kubeconfig 格式。API server 将查询远程服务来决定对 bearer 令牌的认证。 - - --authorization-mode string 在安全端口上进行权限验证的插件的顺序列表。以逗号分隔的列表,包括:AlwaysAllow,AlwaysDeny,ABAC,Webhook,RBAC,Node.(默认值 "AlwaysAllow") - - --authorization-policy-file string 包含权限验证策略的 csv 文件,和 --authorization-mode=ABAC 一起使用,作用在安全端口上。 - - --authorization-webhook-cache-authorized-ttl duration 从 webhook 授权者获得的 'authorized' 响应的缓存时长。(默认值 5m0s) - - --authorization-webhook-cache-unauthorized-ttl duration 从 webhook 授权者获得的 'unauthorized' 响应的缓存时长。(默认值 30s) - - --authorization-webhook-config-file string 包含 webhook 配置的 kubeconfig 格式文件,和 --authorization-mode=Webhook 一起使用。API server 将查询远程服务来决定对 API server 安全端口的访问。 - - --azure-container-registry-config string 包含 Azure 容器注册表配置信息的文件的路径。 - - --bind-address ip 监听 --seure-port 的 IP 地址。被关联的接口必须能够被集群其它节点和 CLI/web 客户端访问。如果为空,则将使用所有接口(0.0.0.0)。(默认值 0.0.0.0) - - --cert-dir string 存放 TLS 证书的目录。如果提供了 --tls-cert-file 和 --tls-private-key-file 选项,该标志将被忽略。(默认值 "/var/run/kubernetes") - - --client-ca-file string 如果设置此标志,对于任何请求,如果存包含 client-ca-file 中的 authorities 签名的客户端证书,将会使用客户端证书中的 CommonName 对应的身份进行认证。 - - --cloud-config string 云服务提供商配置文件路径。空字符串表示无配置文件 . - - --cloud-provider string 云服务提供商,空字符串表示无提供商。 - - --contention-profiling 如果已经启用 profiling,则启用锁竞争 profiling。 - - --cors-allowed-origins stringSlice CORS 的域列表,以逗号分隔。合法的域可以是一个匹配子域名的正则表达式。如果这个列表为空则不会启用 CORS. - - --delete-collection-workers int 用于 DeleteCollection 调用的工作者数量。这被用于加速 namespace 的清理。( 默认值 1) - - --deserialization-cache-size int 在内存中缓存的反序列化 json 对象的数量。 - - --enable-aggregator-routing 打开到 endpoints IP 的 aggregator 路由请求,替换 cluster IP。 - - --enable-garbage-collector 启用通用垃圾回收器 . 必须与 kube-controller-manager 对应的标志保持同步。 (默认值 true) - - --enable-logs-handler 如果为 true,则为 apiserver 日志功能安装一个 /logs 处理器。(默认值 true) - - --enable-swagger-ui 在 apiserver 的 /swagger-ui 路径启用 swagger ui。 - - --etcd-cafile string 用于保护 etcd 通信的 SSL CA 文件。 - - --etcd-certfile string 用于保护 etcd 通信的的 SSL 证书文件。 - - --etcd-keyfile string 用于保护 etcd 通信的 SSL 密钥文件 . - - --etcd-prefix string 附加到所有 etcd 中资源路径的前缀。 (默认值 "/registry") - - --etcd-quorum-read 如果为 true, 启用 quorum 读。 - - --etcd-servers stringSlice 连接的 etcd 服务器列表 , 形式为(scheme://ip:port),使用逗号分隔。 - - --etcd-servers-overrides stringSlice 针对单个资源的 etcd 服务器覆盖配置 , 以逗号分隔。 单个配置覆盖格式为 : group/resource#servers, 其中 servers 形式为 http://ip:port, 以分号分隔。 - - --event-ttl duration 事件驻留时间。(默认值 1h0m0s) - - --enable-bootstrap-token-auth 启用此选项以允许 'kube-system' 命名空间中的 'bootstrap.kubernetes.io/token' 类型密钥可以被用于 TLS 的启动认证。 - - --experimental-encryption-provider-config string 包含加密提供程序的配置的文件,该加密提供程序被用于在 etcd 中保存密钥。 - - --external-hostname string 为此 master 生成外部 URL 时使用的主机名 ( 例如 Swagger API 文档 )。 - - --feature-gates mapStringBool 一个描述 alpha/experimental 特性开关的键值对列表。 选项包括 : -Accelerators=true|false (ALPHA - default=false) -AdvancedAuditing=true|false (ALPHA - default=false) -AffinityInAnnotations=true|false (ALPHA - default=false) -AllAlpha=true|false (ALPHA - default=false) -AllowExtTrafficLocalEndpoints=true|false (default=true) -AppArmor=true|false (BETA - default=true) -DynamicKubeletConfig=true|false (ALPHA - default=false) -DynamicVolumeProvisioning=true|false (ALPHA - default=true) -ExperimentalCriticalPodAnnotation=true|false (ALPHA - default=false) -ExperimentalHostUserNamespaceDefaulting=true|false (BETA - default=false) -LocalStorageCapacityIsolation=true|false (ALPHA - default=false) -PersistentLocalVolumes=true|false (ALPHA - default=false) -RotateKubeletClientCertificate=true|false (ALPHA - default=false) -RotateKubeletServerCertificate=true|false (ALPHA - default=false) -StreamingProxyRedirects=true|false (BETA - default=true) -TaintBasedEvictions=true|false (ALPHA - default=false) - - --google-json-key string 用于认证的 Google Cloud Platform 服务账号的 JSON 密钥。 - - --insecure-allow-any-token username/group1,group2 如果设置该值 , 你的服务将处于非安全状态。任何令牌都将会被允许,并将从令牌中把用户信息解析成为 username/group1,group2。 - - --insecure-bind-address ip 用于监听 --insecure-port 的 IP 地址 ( 设置成 0.0.0.0 表示监听所有接口 )。(默认值 127.0.0.1) - - --insecure-port int 用于监听不安全和为认证访问的端口。这个配置假设你已经设置了防火墙规则,使得这个端口不能从集群外访问。对集群的公共地址的 443 端口的访问将被代理到这个端口。默认设置中使用 nginx 实现。(默认值 8080) - - --kubelet-certificate-authority string 证书 authority 的文件路径。 - - --kubelet-client-certificate string 用于 TLS 的客户端证书文件路径。 - - --kubelet-client-key string 用于 TLS 的客户端证书密钥文件路径 . - - --kubelet-https 为 kubelet 启用 https。 (默认值 true) - - --kubelet-preferred-address-types stringSlice 用于 kubelet 连接的首选 NodeAddressTypes 列表。 ( 默认值[Hostname,InternalDNS,InternalIP,ExternalDNS,ExternalIP]) - - --kubelet-read-only-port uint 已废弃 : kubelet 端口 . (默认值 10255) - - --kubelet-timeout duration kubelet 操作超时时间。(默认值 - 5s) - - --kubernetes-service-node-port int 如果不为 0,Kubernetes master 服务(用于创建 / 管理 apiserver)将会使用 NodePort 类型,并将这个值作为端口号。如果为 0,Kubernetes master 服务将会使用 ClusterIP 类型。 - - --master-service-namespace string 已废弃 : 注入到 pod 中的 kubernetes master 服务的命名空间。(默认值 "default") - - --max-connection-bytes-per-sec int 如果不为 0,每个用户连接将会被限速为该值(bytes/sec)。当前只应用于长时间运行的请求。 - - --max-mutating-requests-inflight int 在给定时间内进行中可变请求的最大数量。当超过该值时,服务将拒绝所有请求。0 值表示没有限制。(默认值 200) - - --max-requests-inflight int 在给定时间内进行中不可变请求的最大数量。当超过该值时,服务将拒绝所有请求。0 值表示没有限制。(默认值 400) - - --min-request-timeout int 一个可选字段,表示一个 handler 在一个请求超时前,必须保持它处于打开状态的最小秒数。当前只对监听请求 handler 有效,它基于这个值选择一个随机数作为连接超时值,以达到分散负载的目的(默认值 1800)。 - - --oidc-ca-file string 如果设置该值,将会使用 oidc-ca-file 中的任意一个 authority 对 OpenID 服务的证书进行验证,否则将会使用主机的根 CA 对其进行验证。 - - --oidc-client-id string 使用 OpenID 连接的客户端的 ID,如果设置了 oidc-issuer-url,则必须设置这个值。 - - --oidc-groups-claim string 如果提供该值,这个自定义 OpenID 连接名将指定给特定的用户组。该声明值需要是一个字符串或字符串数组。此标志为实验性的,请查阅验证相关文档进一步了解详细信息。 - - --oidc-issuer-url string OpenID 颁发者 URL,只接受 HTTPS 方案。如果设置该值,它将被用于验证 OIDC JSON Web Token(JWT)。 - - --oidc-username-claim string 用作用户名的 OpenID 声明值。注意,不保证除默认 ('sub') 外的其他声明值的唯一性和不变性。此标志为实验性的,请查阅验证相关文档进一步了解详细信息。 - - --profiling 在 web 接口 host:port/debug/pprof/ 上启用 profiling。(默认值 true) - - --proxy-client-cert-file string 当必须调用外部程序时,用于证明 aggregator 或者 kube-apiserver 的身份的客户端证书。包括代理到用户 api-server 的请求和调用 webhook 准入控制插件的请求。它期望这个证书包含一个来自于 CA 中的 --requestheader-client-ca-file 标记的签名。该 CA 在 kube-system 命名空间的 'extension-apiserver-authentication' configmap 中发布。从 Kube-aggregator 收到调用的组件应该使用该 CA 进行他们部分的双向 TLS 验证。 - - --proxy-client-key-file string 当必须调用外部程序时,用于证明 aggregator 或者 kube-apiserver 的身份的客户端证书密钥。包括代理到用户 api-server 的请求和调用 webhook 准入控制插件的请求。 - - --repair-malformed-updates 如果为 true,服务将会尽力修复更新请求以通过验证,例如:将更新请求 UID 的当前值设置为空。在我们修复了所有发送错误格式请求的客户端后,可以关闭这个标志。 - - --requestheader-allowed-names stringSlice 使用 --requestheader-username-headers 指定的,允许在头部提供用户名的客户端证书通用名称列表。如果为空,任何通过 --requestheader-client-ca-file 中 authorities 验证的客户端证书都是被允许的。 - - --requestheader-client-ca-file string 在信任请求头中以 --requestheader-username-headers 指示的用户名之前,用于验证接入请求中客户端证书的根证书捆绑。 - - --requestheader-extra-headers-prefix stringSlice 用于检查的请求头的前缀列表。建议使用 X-Remote-Extra-。 - - --requestheader-group-headers stringSlice 用于检查群组的请求头列表。建议使用 X-Remote-Group. - - --requestheader-username-headers stringSlice 用于检查用户名的请求头列表。建议使用 X-Remote-User。 - - --runtime-config mapStringString 传递给 apiserver 用于描述运行时配置的键值对集合。 apis/ 键可以被用来打开 / 关闭特定的 api 版本。apis// 键被用来打开 / 关闭特定的资源 . api/all 和 api/legacy 键分别用于控制所有的和遗留的 api 版本 . - - --secure-port int 用于监听具有认证授权功能的 HTTPS 协议的端口。如果为 0,则不会监听 HTTPS 协议。 (默认值 6443) - - --service-account-key-file stringArray 包含 PEM 加密的 x509 RSA 或 ECDSA 私钥或公钥的文件,用于验证 ServiceAccount 令牌。如果设置该值,--tls-private-key-file 将会被使用。指定的文件可以包含多个密钥,并且这个标志可以和不同的文件一起多次使用。 - - --service-cluster-ip-range ipNet CIDR 表示的 IP 范围,服务的 cluster ip 将从中分配。 一定不要和分配给 nodes 和 pods 的 IP 范围产生重叠。 - - --ssh-keyfile string 如果不为空,在使用安全的 SSH 代理访问节点时,将这个文件作为用户密钥文件。 - - --storage-backend string 持久化存储后端。 选项为 : 'etcd3' ( 默认 ), 'etcd2'. - - --storage-media-type string 在存储中保存对象的媒体类型。某些资源或者存储后端可能仅支持特定的媒体类型,并且忽略该配置项。(默认值 "application/vnd.kubernetes.protobuf") - - --storage-versions string 按组划分资源存储的版本。 以 "group1/version1,group2/version2,..." 的格式指定。当对象从一组移动到另一组时 , 你可以指定 "group1=group2/v1beta1,group3/v1beta1,..." 的格式。你只需要传入你希望从结果中改变的组的列表。默认为从 KUBE_API_VERSIONS 环境变量集成而来,所有注册组的首选版本列表。 (默认值 "admission.k8s.io/v1alpha1,admissionregistration.k8s.io/v1alpha1,apps/v1beta1,authentication.k8s.io/v1,authorization.k8s.io/v1,autoscaling/v1,batch/v1,certificates.k8s.io/v1beta1,componentconfig/v1alpha1,extensions/v1beta1,federation/v1beta1,imagepolicy.k8s.io/v1alpha1,networking.k8s.io/v1,policy/v1beta1,rbac.authorization.k8s.io/v1beta1,settings.k8s.io/v1alpha1,storage.k8s.io/v1,v1") - - --target-ram-mb int apiserver 内存限制,单位为 MB( 用于配置缓存大小等 )。 - - --tls-ca-file string 如果设置该值,这个证书 authority 将会被用于从 Admission Controllers 过来的安全访问。它必须是一个 PEM 加密的合法 CA 捆绑包。此外 , 该证书 authority 可以被添加到以 --tls-cert-file 提供的证书文件中 . - - --tls-cert-file string 包含用于 HTTPS 的默认 x509 证书的文件。(如果有 CA 证书,则附加于 server 证书之后)。如果启用了 HTTPS 服务,并且没有提供 --tls-cert-file 和 --tls-private-key-file,则将为公共地址生成一个自签名的证书和密钥并保存于 /var/run/kubernetes 目录。 - - --tls-private-key-file string 包含匹配 --tls-cert-file 的 x509 证书私钥的文件。 - - --tls-sni-cert-key namedCertKey 一对 x509 证书和私钥的文件路径 , 可以使用符合正式域名的域形式作为后缀。 如果没有提供域形式后缀 , 则将提取证书名。 非通配符版本优先于通配符版本 , 显示的域形式优先于证书中提取的名字。 对于多个密钥 / 证书对, 请多次使用 --tls-sni-cert-key。例如 : "example.crt,example.key" or "foo.crt,foo.key:*.foo.com,foo.com". (默认值[]) - - --token-auth-file string 如果设置该值,这个文件将被用于通过令牌认证来保护 API 服务的安全端口。 - - --version version[=true] 打印版本信息并退出。 - - --watch-cache 启用 apiserver 的监视缓存。(默认值 true) - - --watch-cache-sizes stringSlice 每种资源(pods, nodes 等)的监视缓存大小列表,以逗号分隔。每个缓存配置的形式为:resource#size,size 是一个数字。在 watch-cache 启用时生效。 -``` - -###### Auto generated by spf13/cobra on 11-Jul-2017 +## {{% heading "options" %}} + + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
--add-dir-header
+ +如果为 true,则将文件目录添加到日志消息的标题中 +
--admission-control-config-file string
+ +包含准入控制配置的文件。 +
--advertise-address ip
+ +向集群成员通知 apiserver 消息的 IP 地址。 +这个地址必须能够被集群中其他成员访问。 +如果 IP 地址为空,将会使用 --bind-address, +如果未指定 --bind-address,将会使用主机的默认接口地址。 +
--allow-privileged
+ +如果为 true, 将允许特权容器。[默认值=false] +
--alsologtostderr
+ +在向文件输出日志的同时,也将日志写到标准输出。 +
+ +--anonymous-auth     默认值:true +
+ +启用到 API server 的安全端口的匿名请求。 +未被其他认证方法拒绝的请求被当做匿名请求。 +匿名请求的用户名为 system:anonymous, +用户组名为 system:unauthenticated。 +
--api-audiences stringSlice
+ +API 的标识符。 +服务帐户令牌验证者将验证针对 API 使用的令牌是否已绑定到这些受众中的至少一个。 +如果配置了 --service-account-issuer 标志,但未配置此标志, +则此字段默认为包含发行者 URL 的单个元素列表。 +
+ +--apiserver-count int     默认值:1 +
+ +集群中运行的 apiserver 数量,必须为正数。 +(在启用 --endpoint-reconciler-type=master-count 时使用。) +
+ +--audit-log-batch-buffer-size int     默认值:10000 +
+ +批处理和写入之前用于存储事件的缓冲区大小。 +仅在批处理模式下使用。 +
+ +--audit-log-batch-max-size int     默认值:1 +
+ +批处理的最大大小。 仅在批处理模式下使用。 +
--audit-log-batch-max-wait duration
+ +强制写入尚未达到最大大小的批处理之前要等待的时间。 +仅在批处理模式下使用。 +
--audit-log-batch-throttle-burst int
+ +如果之前未使用 ThrottleQPS,则同时发送的最大请求数。 +仅在批处理模式下使用。 +
--audit-log-batch-throttle-enable
+ +是否启用了批量限制。 +仅在批处理模式下使用。 +
--audit-log-batch-throttle-qps float32
+ +每秒的最大平均批处理数。 +仅在批处理模式下使用。 +
+ +--audit-log-format string     默认值:"json" +
+ +所保存的审计格式。 +"legacy" 表示每行一个事件的文本格式。"json" 表示结构化的 JSON 格式。 +已知格式为 legacy,json。 +
--audit-log-maxage int
+ +根据文件名中编码的时间戳保留旧审计日志文件的最大天数。 +
--audit-log-maxbackup int
+ +保留的旧审计日志文件的最大数量。 +
--audit-log-maxsize int
+ +轮换之前,审计日志文件的最大大小(以兆字节为单位)。 +
+ +--audit-log-mode string     默认值:"blocking" +
+ +发送审计事件的策略。 +阻塞(blocking)表示发送事件应阻止服务器响应。 +批处理导致后端异步缓冲和写入事件。 +已知的模式是批处理(batch),阻塞(blocking),严格阻塞(blocking-strict)。 +
--audit-log-path string
+ +如果设置,则所有到达 apiserver 的请求都将记录到该文件中。 +"-" 表示标准输出。 +
--audit-log-truncate-enabled
+ +是否启用事件和批次截断。 +
+ +--audit-log-truncate-max-batch-size int     默认值:10485760 +
+ +发送到下层后端的批次的最大数据量。 +实际的序列化大小可能会增加数百个字节。 +如果一个批次超出此限制,则将其分成几个较小的批次。 +
+ +--audit-log-truncate-max-event-size int     默认值:102400 +
+ +发送到下层后端的批次的最大数据量。 +如果事件的大小大于此数字,则将删除第一个请求和响应, +并且没有减小足够大的程度,则将丢弃事件。 +
+ +--audit-log-version string     默认值:"audit.k8s.io/v1" +
+ +用于序列化写入日志的审计事件的 API 组和版本。 +
--audit-policy-file string
+ +定义审计策略配置的文件的路径。 +
+ +--audit-webhook-batch-buffer-size int     默认值:10000 +
+ +划分批次和写入之前用于存储事件的缓冲区大小。 +仅在批处理模式下使用。 +
+ +--audit-webhook-batch-max-size int     默认值:400 +
+ +批次的最大大小。 +仅在批处理模式下使用。 +
+ +--audit-webhook-batch-max-wait duration     默认值:30s +
+ +强制写入尚未达到最大大小的批处理之前要等待的时间。 +仅在批处理模式下使用。 +
+ +--audit-webhook-batch-throttle-burst int     默认值:15 +
+ +如果之前未使用 ThrottleQPS,则同时发送的最大请求数。 +仅在批处理模式下使用。 +
+ +--audit-webhook-batch-throttle-enable     默认值:true +
+ +是否启用了批量限制。 +仅在批处理模式下使用。 +
+ +--audit-webhook-batch-throttle-qps float32     默认值:10 +
+ +每秒的最大平均批次数。 +仅在批处理模式下使用。 +
--audit-webhook-config-file string
+ +定义审计 webhook 配置的 kubeconfig 格式文件的路径。 +
+ +--audit-webhook-initial-backoff duration     默认值:10s +
+ +重试第一个失败的请求之前要等待的时间。 +
+ +--audit-webhook-mode string     默认值:"batch" +
+ +发送审计事件的策略。 +阻止(Blocking)表示发送事件应阻止服务器响应。 +批处理导致后端异步缓冲和写入事件。 +已知的模式是批处理(batch),阻塞(blocking),严格阻塞(blocking-strict)。 +
--audit-webhook-truncate-enabled
+ +是否启用事件和批处理截断。 +
+ +--audit-webhook-truncate-max-batch-size int     默认值:10485760 +
+ +发送到下层后端的批次的最大数据量。 +实际的序列化大小可能会增加数百个字节。 +如果一个批次超出此限制,则将其分成几个较小的批次。 +
+ +--audit-webhook-truncate-max-event-size int     默认值:102400 +
+ +发送到下层后端的批次的最大数据量。 +如果事件的大小大于此数字,则将删除第一个请求和响应, +并且如果事件和事件的大小没有足够减小,则将丢弃事件。 +
+ +--audit-webhook-version string     默认值:"audit.k8s.io/v1" +
+ +用于序列化写入 Webhook 的审计事件的 API 组和版本。 +
+ +--authentication-token-webhook-cache-ttl duration     默认值:2m0s +
+ +来自 Webhook 令牌身份验证器的缓存响应的持续时间。 +
--authentication-token-webhook-config-file string
+ +包含 Webhook 配置的文件,用于以 kubeconfig 格式进行令牌认证。 +API 服务器将查询远程服务,以对持有者令牌进行身份验证。 +
+ +--authentication-token-webhook-version string     默认值:"v1beta1" +
+ +与 Webhook 之间交换 authentication.k8s.io TokenReview 时使用的 API 版本。 +
+ +--authorization-mode stringSlice     默认值:[AlwaysAllow] +
+ +在安全端口上进行鉴权的插件的顺序列表。 +逗号分隔的列表:AlwaysAllow,AlwaysDeny,ABAC,Webhook,RBAC,Node。 +
--authorization-policy-file string
+ +包含安全策略的文件,其内容为分行 JSON 格式, +在安全端口上与 --authorization-mode=ABAC 一起使用。 +
+ +--authorization-webhook-cache-authorized-ttl duration     默认值:5m0s +
+ +缓存来自 Webhook 鉴权组件的 “授权(authorized)” 响应的持续时间。 +
+ +--authorization-webhook-cache-unauthorized-ttl duration     默认值:30s +
+ +缓存来自 Webhook 鉴权模块的 “未授权(unauthorized)” 响应的持续时间。 +
--authorization-webhook-config-file string
+ +包含 Webhook 配置的文件,其格式为 kubeconfig, +与 --authorization-mode=Webhook 一起使用。 +API 服务器将查询远程服务,以对 API 服务器的安全端口的访问执行鉴权。 +
+ +--authorization-webhook-version string     默认值:"v1beta1" +
+ +与 Webhook 之间交换 authorization.k8s.io SubjectAccessReview 时使用的 API 版本。 +
--azure-container-registry-config string
+ +包含 Azure 容器仓库配置信息的文件的路径。 +
+ +--bind-address ip     默认值:0.0.0.0 +
+ +监听 --secure-port 端口的 IP 地址。 +集群的其余部分以及 CLI/web 客户端必须可以访问关联的接口。 +如果为空白或未指定地址(0.0.0.0 或 ::),则将使用所有接口。 +
+ +--cert-dir string     默认值:"/var/run/kubernetes" +
+ +TLS 证书所在的目录。 +如果提供了 --tls-cert-file 和 --tls-private-key-file,则将忽略此标志。 +
--client-ca-file string
+ +如果已设置,则使用与客户端证书的 CommonName 对应的标识对任何出示由 +client-ca 文件中的授权机构之一签名的客户端证书的请求进行身份验证。 +
--cloud-config string
+ +云厂商配置文件的路径。 +空字符串表示无配置文件。 +
--cloud-provider string
+ +云服务提供商。 +空字符串表示没有云厂商。 +
+ +--cloud-provider-gce-l7lb-src-cidrs cidrs     默认值:130.211.0.0/22,35.191.0.0/16 +
+ +在 GCE 防火墙中打开 CIDR,以进行 L7 LB 流量代理和运行状况检查 +
--contention-profiling
+ +如果启用了性能分析,则启用锁争用性能分析 +
--cors-allowed-origins stringSlice
+ +CORS 允许的来源清单,以逗号分隔。 +允许的来源可以是支持子域匹配的正则表达式。 +如果此列表为空,则不会启用 CORS。 +
+ +--default-not-ready-toleration-seconds int     默认值:300 +
+ +标明 notReady:NoExecute 的 tolerationSeconds, +默认情况下将其添加到尚未具有此容忍度的每个 pod 中。 +
+ +--default-unreachable-toleration-seconds int     默认值:300 +
+ +标明 unreachable:NoExecute 的 tolerationSeconds, +默认情况下将其添加到尚未具有此容忍度的每个 pod 中。 +
+ +--default-watch-cache-size int     默认值:100 +
+ +默认监听(watch)缓存大小。 +如果为零,则将为没有设置默认监视大小的资源禁用监视缓存。 +
+ +--delete-collection-workers int     默认值:1 +
+ +为 DeleteCollection 调用而产生的工作程序数。 +这些用于加速名字空间清理。 +
--disable-admission-plugins stringSlice
+ +尽管位于默认启用的插件列表中(NamespaceLifecycle、LimitRanger、ServiceAccount、TaintNodesByCondition、Priority、DefaultTolerationSeconds、DefaultStorageClass、StorageObjectInUseProtection、PersistentVolumeClaimResize、RuntimeClass、CertificateApproval、CertificateSigning、CertificateSubjectRestriction、DefaultIngressClass、MutatingAdmissionWebhook、ValidatingAdmissionWebhook、ResourceQuota)仍须被禁用的插件。 +
取值为逗号分隔的准入插件列表:AlwaysAdmit, AlwaysDeny, AlwaysPullImages, CertificateApproval, CertificateSigning, CertificateSubjectRestriction, DefaultIngressClass, DefaultStorageClass, DefaultTolerationSeconds, DenyEscalatingExec, DenyExecOnPrivileged, EventRateLimit, ExtendedResourceToleration, ImagePolicyWebhook, LimitPodHardAntiAffinityTopology, LimitRanger, MutatingAdmissionWebhook, NamespaceAutoProvision, NamespaceExists, NamespaceLifecycle, NodeRestriction, OwnerReferencesPermissionEnforcement, PersistentVolumeClaimResize, PersistentVolumeLabel, PodNodeSelector, PodPreset, PodSecurityPolicy, PodTolerationRestriction, Priority, ResourceQuota, RuntimeClass, SecurityContextDeny, ServiceAccount, StorageObjectInUseProtection, TaintNodesByCondition, ValidatingAdmissionWebhook。 +
该标志中插件的顺序无关紧要。 +
--egress-selector-config-file string
+ +带有 apiserver 出站选择器配置的文件。 +
--enable-admission-plugins stringSlice
+ +除了默认启用的插件(NamespaceLifecycle、LimitRanger、ServiceAccount、TaintNodesByCondition、Priority、DefaultTolerationSeconds、DefaultStorageClass、StorageObjectInUseProtection、PersistentVolumeClaimResize、RuntimeClass、CertificateApproval、CertificateSigning、CertificateSubjectRestriction、DefaultIngressClass、MutatingAdmissionWebhook、ValidatingAdmissionWebhook、ResourceQuota)之外要启用的插件 +
取值为逗号分隔的准入插件列表:AlwaysAdmit, AlwaysDeny, AlwaysPullImages, CertificateApproval, CertificateSigning, CertificateSubjectRestriction, DefaultIngressClass, DefaultStorageClass, DefaultTolerationSeconds, DenyEscalatingExec, DenyExecOnPrivileged, EventRateLimit, ExtendedResourceToleration, ImagePolicyWebhook, LimitPodHardAntiAffinityTopology, LimitRanger, MutatingAdmissionWebhook, NamespaceAutoProvision, NamespaceExists, NamespaceLifecycle, NodeRestriction, OwnerReferencesPermissionEnforcement, PersistentVolumeClaimResize, PersistentVolumeLabel, PodNodeSelector, PodPreset, PodSecurityPolicy, PodTolerationRestriction, Priority, ResourceQuota, RuntimeClass, SecurityContextDeny, ServiceAccount, StorageObjectInUseProtection, TaintNodesByCondition, ValidatingAdmissionWebhook +
该标志中插件的顺序无关紧要。 +
--enable-aggregator-routing
+ +允许聚合器将请求路由到端点 IP 而非集群 IP。 +
--enable-bootstrap-token-auth
+ +启用以允许将 "kube-system" 名字空间中类型为 "bootstrap.kubernetes.io/token" +的 Secret 用于 TLS 引导身份验证。 +
+ +--enable-garbage-collector     默认值:true +
+ +启用通用垃圾收集器。 +必须与 kube-controller-manager 的相应标志同步。 +
+ +--enable-priority-and-fairness     默认值:true +
+ +如果为 true 且启用了 APIPriorityAndFairness 特性门控, +请使用增强的处理程序替换 max-in-flight 处理程序, +以便根据优先级和公平性完成排队和调度。 +
--encryption-provider-config string
+ +包含加密提供程序配置信息的文件,用在 etcd 中所存储的 Secret 上。 +
+ +--endpoint-reconciler-type string     默认值:"lease" +
+ +使用端点协调器(master-count, lease, none) +
--etcd-cafile string
+ +用于保护 etcd 通信的 SSL 证书颁发机构文件。 +
--etcd-certfile string
+ +用于保护 etcd 通信的 SSL 证书文件。 +
+ +--etcd-compaction-interval duration     默认值:5m0s +
+ +压缩请求的间隔。 +如果为0,则禁用来自 apiserver 的压缩请求。 +
+ +--etcd-count-metric-poll-period duration     默认值:1m0s +
+ +针对每种类型的资源数量轮询 etcd 的频率。 +0 禁用度量值收集。 +
+ +--etcd-db-metric-poll-interval duration     默认值:30s +
+ +轮询 etcd 和更新度量值的请求间隔。 +0 禁用度量值收集 +
--etcd-keyfile string
+ +用于保护 etcd 通信的 SSL 密钥文件。 +
+ +--etcd-prefix string     默认值:"/registry" +
+ +要在 etcd 中所有资源路径之前添加的前缀。 +
--etcd-servers stringSlice
+ +要连接的 etcd 服务器列表(scheme://ip:port),以逗号分隔。 +
--etcd-servers-overrides stringSlice
+ +etcd 服务器针对每个资源的重载设置,以逗号分隔。 +单个替代格式:组/资源#服务器(group/resource#servers),其中服务器是 URL,以分号分隔。 +
+ +--event-ttl duration     默认值:1h0m0s +
+ +事件的保留时长。 +
--external-hostname string
+ +为此主机生成外部化 UR L时要使用的主机名(例如 Swagger API 文档或 OpenID 发现)。 +
--feature-gates mapStringBool
+ +一组 key=value 对,用来描述测试性/试验性功能的特性门控(Feature Gate)。可选项有: +
APIListChunking=true|false (BETA - 默认值=true) +
APIPriorityAndFairness=true|false (ALPHA - 默认值=false) +
APIResponseCompression=true|false (BETA - 默认值=true) +
AllAlpha=true|false (ALPHA - 默认值=false) +
AllBeta=true|false (BETA - 默认值=false) +
AllowInsecureBackendProxy=true|false (BETA - 默认值=true) +
AnyVolumeDataSource=true|false (ALPHA - 默认值=false) +
AppArmor=true|false (BETA - 默认值=true) +
BalanceAttachedNodeVolumes=true|false (ALPHA - 默认值=false) +
BoundServiceAccountTokenVolume=true|false (ALPHA - 默认值=false) +
CPUManager=true|false (BETA - 默认值=true) +
CRIContainerLogRotation=true|false (BETA - 默认值=true) +
CSIInlineVolume=true|false (BETA - 默认值=true) +
CSIMigration=true|false (BETA - 默认值=true) +
CSIMigrationAWS=true|false (BETA - 默认值=false) +
CSIMigrationAWSComplete=true|false (ALPHA - 默认值=false) +
CSIMigrationAzureDisk=true|false (BETA - 默认值=false) +
CSIMigrationAzureDiskComplete=true|false (ALPHA - 默认值=false) +
CSIMigrationAzureFile=true|false (ALPHA - 默认值=false) +
CSIMigrationAzureFileComplete=true|false (ALPHA - 默认值=false) +
CSIMigrationGCE=true|false (BETA - 默认值=false) +
CSIMigrationGCEComplete=true|false (ALPHA - 默认值=false) +
CSIMigrationOpenStack=true|false (BETA - 默认值=false) +
CSIMigrationOpenStackComplete=true|false (ALPHA - 默认值=false) +
CSIMigrationvSphere=true|false (BETA - 默认值=false) +
CSIMigrationvSphereComplete=true|false (BETA - 默认值=false) +
CSIStorageCapacity=true|false (ALPHA - 默认值=false) +
CSIVolumeFSGroupPolicy=true|false (ALPHA - 默认值=false) +
ConfigurableFSGroupPolicy=true|false (ALPHA - 默认值=false) +
CustomCPUCFSQuotaPeriod=true|false (ALPHA - 默认值=false) +
DefaultPodTopologySpread=true|false (ALPHA - 默认值=false) +
DevicePlugins=true|false (BETA - 默认值=true) +
DisableAcceleratorUsageMetrics=true|false (ALPHA - 默认值=false) +
DynamicKubeletConfig=true|false (BETA - 默认值=true) +
EndpointSlice=true|false (BETA - 默认值=true) +
EndpointSliceProxying=true|false (BETA - 默认值=true) +
EphemeralContainers=true|false (ALPHA - 默认值=false) +
ExpandCSIVolumes=true|false (BETA - 默认值=true) +
ExpandInUsePersistentVolumes=true|false (BETA - 默认值=true) +
ExpandPersistentVolumes=true|false (BETA - 默认值=true) +
ExperimentalHostUserNamespaceDefaulting=true|false (BETA - 默认值=false) +
GenericEphemeralVolume=true|false (ALPHA - 默认值=false) +
HPAScaleToZero=true|false (ALPHA - 默认值=false) +
HugePageStorageMediumSize=true|false (BETA - 默认值=true) +
HyperVContainer=true|false (ALPHA - 默认值=false) +
IPv6DualStack=true|false (ALPHA - 默认值=false) +
ImmutableEphemeralVolumes=true|false (BETA - 默认值=true) +
KubeletPodResources=true|false (BETA - 默认值=true) +
LegacyNodeRoleBehavior=true|false (BETA - 默认值=true) +
LocalStorageCapacityIsolation=true|false (BETA - 默认值=true) +
LocalStorageCapacityIsolationFSQuotaMonitoring=true|false (ALPHA - 默认值=false) +
NodeDisruptionExclusion=true|false (BETA - 默认值=true) +
NonPreemptingPriority=true|false (BETA - 默认值=true) +
PodDisruptionBudget=true|false (BETA - 默认值=true) +
PodOverhead=true|false (BETA - 默认值=true) +
ProcMountType=true|false (ALPHA - 默认值=false) +
QOSReserved=true|false (ALPHA - 默认值=false) +
RemainingItemCount=true|false (BETA - 默认值=true) +
RemoveSelfLink=true|false (ALPHA - 默认值=false) +
RotateKubeletServerCertificate=true|false (BETA - 默认值=true) +
RunAsGroup=true|false (BETA - 默认值=true) +
RuntimeClass=true|false (BETA - 默认值=true) +
SCTPSupport=true|false (BETA - 默认值=true) +
SelectorIndex=true|false (BETA - 默认值=true) +
ServerSideApply=true|false (BETA - 默认值=true) +
ServiceAccountIssuerDiscovery=true|false (ALPHA - 默认值=false) +
ServiceAppProtocol=true|false (BETA - 默认值=true) +
ServiceNodeExclusion=true|false (BETA - 默认值=true) +
ServiceTopology=true|false (ALPHA - 默认值=false) +
SetHostnameAsFQDN=true|false (ALPHA - 默认值=false) +
StartupProbe=true|false (BETA - 默认值=true) +
StorageVersionHash=true|false (BETA - 默认值=true) +
SupportNodePidsLimit=true|false (BETA - 默认值=true) +
SupportPodPidsLimit=true|false (BETA - 默认值=true) +
Sysctls=true|false (BETA - 默认值=true) +
TTLAfterFinished=true|false (ALPHA - 默认值=false) +
TokenRequest=true|false (BETA - 默认值=true) +
TokenRequestProjection=true|false (BETA - 默认值=true) +
TopologyManager=true|false (BETA - 默认值=true) +
ValidateProxyRedirects=true|false (BETA - 默认值=true) +
VolumeSnapshotDataSource=true|false (BETA - 默认值=true) +
WarningHeaders=true|false (BETA - 默认值=true) +
WinDSR=true|false (ALPHA - 默认值=false) +
WinOverlay=true|false (ALPHA - 默认值=false) +
WindowsEndpointSliceProxying=true|false (ALPHA - 默认值=false) +
--goaway-chance float
+ +为防止 HTTP/2 客户端卡在单个 apiserver 上,可启用随机关闭连接(GOAWAY)。 +客户端的其他运行中请求将不会受到影响,并且客户端将重新连接, +可能会在再次通过负载平衡器后登陆到其他 apiserver 上。 +此参数设置将发送 GOAWAY 的请求的比例。 +具有单个 apiserver 或不使用负载平衡器的群集不应启用此功能。 +最小值为0(关闭),最大值为 .02(1/50 请求); 建议使用 .001(1/1000)。 +
-h, --help
+ +kube-apiserver 的帮助命令 +
--http2-max-streams-per-connection int
+ +服务器为客户端提供的 HTTP/2 连接中最大流数的限制。 +零表示使用 golang 的默认值。 +
--kubelet-certificate-authority string
+ +证书颁发机构的证书文件的路径。 +
--kubelet-client-certificate string
+ +TLS 的客户端证书文件的路径。 +
--kubelet-client-key string
+ +TLS 客户端密钥文件的路径。 +
+ +--kubelet-preferred-address-types stringSlice     默认值:[Hostname,InternalDNS,InternalIP,ExternalDNS,ExternalIP] +
+ +用于 kubelet 连接的首选 NodeAddressTypes 列表。 +
+ +--kubelet-timeout duration     默认值:5s +
+ +kubelet 操作超时时间。 +
--kubernetes-service-node-port int
+ +如果非零,那么 Kubernetes 主服务(由 apiserver 创建/维护)将是 NodePort 类型,使用它作为端口的值。 +如果为零,则 Kubernetes 主服务将为 ClusterIP 类型。 +
--livez-grace-period duration
+ +此选项代表 apiserver 完成启动序列并生效所需的最长时间。 +从 apiserver 的启动时间到这段时间为止, +/livez 将假定未完成的启动后钩子将成功完成,因此返回 true。 +
+ +
+ +当日志机制执行到'文件 :N'时,生成堆栈跟踪 +
--log-dir string
+ +如果为非空,则在此目录中写入日志文件 +
--log-file string
+ +如果为非空,使用此日志文件 +
+ +--log-file-max-size uint     默认值:1800 +
+ +定义日志文件可以增长到的最大大小。单位为兆字节。 +如果值为 0,则最大文件大小为无限制。 +
+ +--log-flush-frequency duration     默认值:5s +
+ +两次日志刷新之间的最大秒数 +
+ +--logging-format string     默认值:"text" +
+ +设置日志格式。允许的格式:"text","json"。 +
非默认格式不支持以下标志:--add_dir_header、--alsologtostderr、--log_backtrace_at、--log_dir、--log_file、--log_file_max_size、--logtostderr、-skip_headers、-skip_log_headers、-stderrthreshold、-vmodule和--log-flush-frequency。 +
当前非默认选择为 alpha,并且会随时更改而不会发出警告。 +
c + +--logtostderr     默认值:true +
+ +在标准错误而不是文件中输出日志记录 +
+ +--master-service-namespace string     默认值:"default" +
+ +已废弃:应该从其中将 Kubernetes 主服务注入到 Pod 中的名字空间。 +
--max-connection-bytes-per-sec int
+ +如果不为零,则将每个用户连接限制为该数(字节数/秒)。 +当前仅适用于长时间运行的请求。 +
+ +--max-mutating-requests-inflight int     默认值:200 +
+ +在给定时间内进行中变更类型请求的最大个数。 +当超过该值时,服务将拒绝所有请求。 +零表示无限制。 +
+ +--max-requests-inflight int     默认值:400 +
+ +在给定时间内进行中非变更类型请求的最大数量。 +当超过该值时,服务将拒绝所有请求。 +零表示无限制。 +
+ +--min-request-timeout int     默认值:1800 +
+ +可选字段,表示处理程序在请求超时前,必须保持其处于打开状态的最小秒数。 +当前只对监听(Watch)请求的处理程序有效,它基于这个值选择一个随机数作为连接超时值,以达到分散负载的目的。 +
--oidc-ca-file string
+ +如果设置该值,将会使用 oidc-ca-file 中的机构之一对 OpenID 服务的证书进行验证, +否则将会使用主机的根 CA 对其进行验证。 +
--oidc-client-id string
+ +OpenID 连接客户端的要使用的客户 ID,如果设置了 oidc-issuer-url,则必须设置这个值。 +
--oidc-groups-claim string
+ +如果提供该值,这个自定义 OpenID 连接声明将被用来设定用户组。 +该声明值需要是一个字符串或字符串数组。 +此标志为实验性的,请查阅身份认证相关文档进一步了解详细信息。 +
--oidc-groups-prefix string
+ +如果提供,则所有组都将以该值作为前缀,以防止与其他身份认证策略冲突。 +
--oidc-issuer-url string
+ +OpenID 颁发者 URL,只接受 HTTPS 方案。 +如果设置该值,它将被用于验证 OIDC JSON Web Token(JWT)。 +
--oidc-required-claim mapStringString
+ +描述 ID 令牌中必需声明的键值对。 +如果设置此值,则会验证 ID 令牌中存在与该声明匹配的值。 +重复此标志以指定多个声明。 +
+ +--oidc-signing-algs stringSlice     默认值:[RS256] +
+ +允许的 JOSE 非对称签名算法的逗号分隔列表。 +若 JWT 所带的 "alg" 标头值不在列表中,则该 JWT 将被拒绝。 +取值依据 RFC 7518 https://tools.ietf.org/html/rfc7518#section-3.1 定义。 +
+ +--oidc-username-claim string     默认值:"sub" +
+ +要用作用户名的 OpenID 声明。 +请注意,除默认声明("sub")以外的其他声明不能保证是唯一且不可变的。 +此标志是实验性的,请参阅身份认证文档以获取更多详细信息。 +
--oidc-username-prefix string
+ +如果提供,则所有用户名都将以该值作为前缀。 +如果未提供,则除 "email" 之外的用户名声明都会添加颁发者 URL 作为前缀,以避免冲突。 +要略过添加前缀处理,请设置值为 "-"。 +
--permit-port-sharing
+ +如果为 true,则在绑定端口时将使用 SO_REUSEPORT, +这样多个实例可以绑定到同一地址和端口上。[默认值 = false] +
+ +--profiling     默认值:true +
+ +通过 Web 界面启用性能分析 host:port/debug/pprof/ +
--proxy-client-cert-file string
+ +当必须调用外部程序以处理请求时,用于证明聚合器或者 kube-apiserver 的身份的客户端证书。 +包括代理转发到用户 api-server 的请求和调用 Webhook 准入控制插件的请求。 +Kubernetes 期望此证书包含来自于 --requestheader-client-ca-file 标志中所给 CA 的签名。 +该 CA 在 kube-system 命名空间的 "extension-apiserver-authentication" ConfigMap 中公开。 +从 kube-aggregator 收到调用的组件应该使用该 CA 进行各自的双向 TLS 验证。 +
--proxy-client-key-file string
+ +当必须调用外部程序来处理请求时,用来证明聚合器或者 kube-apiserver 的身份的客户端私钥。 +这包括代理转发给用户 api-server 的请求和调用 Webhook 准入控制插件的请求。 +
+ +--request-timeout duration     默认值:1m0s +
+ +可选字段,指示处理程序在超时之前必须保持打开请求的持续时间。 +这是请求的默认请求超时,但对于特定类型的请求,可能会被 --min-request-timeout 等标志覆盖。 +
--requestheader-allowed-names stringSlice
+ +此值为客户端证书通用名称(Common Name)的列表;表中所列的表项可以用来提供用户名, +方式是使用 --requestheader-username-headers 所指定的头部。 +如果为空,能够通过 --requestheader-client-ca-file 中机构认证的客户端证书都是被允许的。 +
--requestheader-client-ca-file string
+ +在信任请求头中以 --requestheader-username-headers 指示的用户名之前, +用于验证接入请求中客户端证书的根证书包。 +警告:一般不要假定传入请求已被授权。 +
--requestheader-extra-headers-prefix stringSlice
+ +用于查验请求头部的前缀列表。建议使用 X-Remote-Extra-。 +
--requestheader-group-headers stringSlice
+ +用于查验用户组的请求头部列表。建议使用 X-Remote-Group。 +
--requestheader-username-headers stringSlice
+ +用于查验用户名的请求头头列表。建议使用 X-Remote-User。 +
--runtime-config mapStringString
+ +一组启用或禁用内置 API 的键值对。支持的选项包括: +
v1=true|false(针对核心 API 组) +
<group>/<version>=true|false(针对特定 API 组和版本,例如:apps/v1=true) +
api/all=true|false 控制所有 API 版本 +
api/ga=true|false 控制所有 v[0-9]+ API 版本 +
api/beta=true|false 控制所有 v[0-9]+beta[0-9]+ API 版本 +
api/alpha=true|false 控制所有 v[0-9]+alpha[0-9]+ API 版本 +
api/legacy 已弃用,并将在以后的版本中删除 +
+ +--secure-port int     默认值:6443 +
+ +带身份验证和鉴权机制的 HTTPS 服务端口。 +不能用 0 关闭。 +
--service-account-extend-token-expiration
+ +在生成令牌时,启用投射服务帐户到期时间扩展, +这有助于从旧版令牌安全地过渡到绑定的服务帐户令牌功能。 +如果启用此标志,则准入插件注入的令牌的过期时间将延长至 1 年,以防止过渡期间发生意外故障, +并忽略 service-account-max-token-expiration 的值。 +
--service-account-issuer {service-account-issuer}/.well-known/openid-configuration
+ +服务帐号令牌颁发者的标识符。 +颁发者将在已办法令牌的 "iss" 声明中检查此标识符。 +此值为字符串或 URI。 +如果根据 OpenID Discovery 1.0 规范检查此选项不是有效的 URI,则即使特性门控设置为 true, +ServiceAccountIssuerDiscovery 功能也将保持禁用状态。 +强烈建议该值符合 OpenID 规范:https://openid.net/specs/openid-connect-discovery-1_0.html。 +实践中,这意味着 service-account-issuer 取值必须是 HTTPS URL。 +还强烈建议此 URL 能够在 {service-account-issuer}/.well-known/openid-configuration +处提供 OpenID 发现文档。 +
--service-account-jwks-uri string
+ +覆盖 /.well-known/openid-configuration 提供的发现文档中 JSON Web 密钥集的 URI。 +如果发现文档和密钥集是通过 API 服务器外部 +(而非自动检测到或被外部主机名覆盖)之外的 URL 提供给依赖方的,则此标志很有用。 +仅在启用 ServiceAccountIssuerDiscovery 特性门控的情况下有效。 +
--service-account-key-file stringArray
+ +包含 PEM 编码的 x509 RSA 或 ECDSA 私钥或公钥的文件,用于验证 ServiceAccount 令牌。 +指定的文件可以包含多个键,并且可以使用不同的文件多次指定标志。 +如果未指定,则使用 --tls-private-key-file。 +提供 --service-account-signing-key 时必须指定。 +
+ +--service-account-lookup     默认值:true +
+ +如果为 true,则在身份认证时验证 etcd 中是否存在 ServiceAccount 令牌。 +
--service-account-max-token-expiration duration
+ +服务帐户令牌发布者创建的令牌的最长有效期。 +如果请求有效期大于此值的有效令牌请求,将使用此值的有效期颁发令牌。 +
--service-account-signing-key-file string
+ +包含服务帐户令牌颁发者当前私钥的文件的路径。 +颁发者将使用此私钥签署所颁发的 ID 令牌(需要启用 "TokenRequest" 特性门控)。 +
--service-cluster-ip-range string
+ +CIDR 表示的 IP 范围用来为服务分配集群 IP。 +此地址不得与指定给节点或 Pod 的任何 IP 范围重叠。 +
+ +--service-node-port-range portRange     默认值:30000-32767 +
+ +保留给具有 NodePort 可见性的服务的端口范围。 +例如:"30000-32767"。范围的两端都包括在内。 +
--show-hidden-metrics-for-version string
+ +你要显示隐藏指标的先前版本。仅先前的次要版本有意义,不允许其他值。 +格式为 <major>.<minor>,例如:"1.16"。 +这种格式的目的是确保您有机会注意到下一个版本是否隐藏了其他指标, +而不是在此之后将它们从发行版中永久删除时感到惊讶。 +
--shutdown-delay-duration duration
+ +延迟终止时间。在此期间,服务器将继续正常处理请求。 +端点 /healthz 和 /livez 将返回成功,但是 /readyz 立即返回失败。 +在此延迟过去之后,将开始正常终止。 +这可用于允许负载平衡器停止向该服务器发送流量。 +
--skip-headers
+ +如果为 true,日志消息中避免标题前缀 +
--skip-log-headers
+ +如果为 true,则在打开日志文件时避免标题 +
+ +--stderrthreshold severity     默认值:2 +
+ +将达到或超过此阈值的日志写到标准错误输出 +
--storage-backend string
+ +持久化存储后端。选项:"etcd3"(默认)。 +
+ +--storage-media-type string     默认值:"application/vnd.kubernetes.protobuf" +
+ +用于在存储中存储对象的媒体类型。 +某些资源或存储后端可能仅支持特定的媒体类型,并且将忽略此设置。 +
--tls-cert-file string
+ +包含用于 HTTPS 的默认 x509 证书的文件。(CA 证书(如果有)在服务器证书之后并置)。 +如果启用了 HTTPS 服务,并且未提供 --tls-cert-file 和 --tls-private-key-file, +为公共地址生成一个自签名证书和密钥,并将其保存到 --cert-dir 指定的目录中。 +
--tls-cipher-suites stringSlice
+ +服务器的密码套件的列表,以逗号分隔。如果省略,将使用默认的 Go 密码套件。 +
首选值:TLS_AES_128_GCM_SHA256、TLS_AES_256_GCM_SHA384、TLS_CHACHA20_POLY1305_SHA256、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA、TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA、TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384、TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305、TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256、TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA、TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA、TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384、TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305、TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256、TLS_RSA_WITH_3DES_EDE_CBC_SHA、TLS_RSA_WITH_AES_128_CBC_SHA、TLS_RSA_WITH_AES_128_GCM_SHA256、TLS_RSA_WTLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256、TLS_ECDHE_ECDSA_WITH_RC4_128_SHA、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256、TLS_ECDHE_RSA_WITH_RC4_128_SHA、TLS_RSA_WITH_AES_128_CBC_SHA256、TLS_RSA_WITH_RC4_128_SHA。 +
--tls-min-version string
+ +支持的最低 TLS 版本。可能的值:VersionTLS10,VersionTLS11,VersionTLS12,VersionTLS13 +
--tls-private-key-file string
+ +包含匹配 --tls-cert-file 的 x509 证书私钥的文件。 +
+ +--tls-sni-cert-key namedCertKey     默认值:[] +
+ +一对 x509 证书和私钥文件路径,(可选)后缀为全限定域名的域名模式列表,可以使用带有通配符的前缀。 +域模式也允许使用 IP 地址,但仅当 apiserver 对客户端请求的IP地址具有可见性时,才应使用 IP。 +如果未提供域模式,则提取证书的名称。 +非通配符匹配优先于通配符匹配,显式域模式优先于提取出的名称。 +对于多个密钥/证书对,请多次使用 --tls-sni-cert-key。 +示例:"example.crt,example.key" 或 "foo.crt,foo.key:*.foo.com,foo.com"。 +
--token-auth-file string
+ +如果设置该值,这个文件将被用于通过令牌认证来保护 API 服务的安全端口。 +
-v, --v Level
+ +日志级别详细程度的数字 +
--version version[=true]
+ +打印版本信息并退出 +
--vmodule moduleSpec
+ +以逗号分隔的 pattern=N 设置列表,用于文件过滤的日志记录 +
+ +--watch-cache     默认值:true +
+ +在 apiserver 中启用监视缓存 +
--watch-cache-sizes stringSlice
+ +某些资源(pods、nodes 等)的监视缓存大小设置,以逗号分隔。 +每个资源对应的设置格式:resource[.group]#size,其中 resource 为小写复数(无版本), +对于 apiVersion v1(旧版核心 API)的资源要省略 group, +对其它资源要给出 group,size 为一个数字。 +启用 watch-cache 时,此功能生效。 +某些资源(replicationcontrollers、endpoints、nodes、pods、services、apiservices.apiregistration.k8s.io) +具有通过启发式设置的系统默认值,其他资源默认为 default-watch-cache-size +
From 93e96c005c9b5011e628351887e1d4916f9084cc Mon Sep 17 00:00:00 2001 From: yuandongx <786018072@qq.com> Date: Wed, 2 Dec 2020 16:40:34 +0800 Subject: [PATCH 69/80] sync changes. update 20201203 update --- content/zh/docs/reference/kubectl/overview.md | 295 +++++++++++------- 1 file changed, 190 insertions(+), 105 deletions(-) diff --git a/content/zh/docs/reference/kubectl/overview.md b/content/zh/docs/reference/kubectl/overview.md index 834175c5d8..4f4125e26a 100644 --- a/content/zh/docs/reference/kubectl/overview.md +++ b/content/zh/docs/reference/kubectl/overview.md @@ -25,14 +25,27 @@ card: -Kubectl 是一个命令行接口,用于对 Kubernetes 集群运行命令。`kubectl` 在 $HOME/.kube 目录中寻找一个名为 config 的文件。您可以通过设置环境变量 KUBECONFIG 或设置 [`--kubeconfig`](/zh/docs/concepts/configuration/organize-cluster-access-kubeconfig/) 参数指定其它 [kubeconfig](/zh/docs/concepts/configuration/organize-cluster-access-kubeconfig/) 文件。 +你可以使用 Kubectl 命令行工具管理 Kubernetes 集群。 +`kubectl` 在 `$HOME/.kube` 目录中查找一个名为 `config` 的配置文件。 +你可以通过设置 KUBECONFIG 环境变量或设置 [`--kubeconfig`](/zh/docs/concepts/configuration/organize-cluster-access-kubeconfig/) +参数来指定其它 [kubeconfig](/zh/docs/concepts/configuration/organize-cluster-access-kubeconfig/) 文件。 -本文概述了 `kubectl` 语法和命令操作描述,并提供了常见的示例。有关每个命令的详细信息,包括所有受支持的参数和子命令,请参阅 [kubectl](/docs/reference/generated/kubectl/kubectl-commands/) 参考文档。有关安装说明,请参见 [安装 kubectl](/zh/docs/tasks/tools/install-kubectl/) 。 +本文概述了 `kubectl` 语法和命令操作描述,并提供了常见的示例。 +有关每个命令的详细信息,包括所有受支持的参数和子命令, +请参阅 [kubectl](/docs/reference/generated/kubectl/kubectl-commands/) 参考文档。 +有关安装说明,请参见[安装 kubectl](/zh/docs/tasks/tools/install-kubectl/) 。 @@ -82,7 +95,7 @@ where `command`, `TYPE`, `NAME`, and `flags` are: * `NAME`:指定资源的名称。名称区分大小写。如果省略名称,则显示所有资源的详细信息 `kubectl get pods`。 - 在对多个资源执行操作时,您可以按类型和名称指定每个资源,或指定一个或多个文件: + 在对多个资源执行操作时,你可以按类型和名称指定每个资源,或指定一个或多个文件: @@ -111,7 +124,7 @@ where `command`, `TYPE`, `NAME`, and `flags` are: * 用一个或多个文件指定资源:`-f file1 -f file2 -f file<#>` - * [使用 YAML 而不是 JSON](/zh/docs/concepts/configuration/overview/#general-config-tips) 因为 YAML 更容易使用,特别是用于配置文件时。
+ * [使用 YAML 而不是 JSON](/docs/concepts/configuration/overview/#general-configuration-tips) 因为 YAML 更容易使用,特别是用于配置文件时。
例子:`kubectl get -f ./pod.yaml` * `flags`: 指定可选的参数。例如,可以使用 `-s` 或 `-server` 参数指定 Kubernetes API 服务器的地址和端口。
@@ -127,7 +140,7 @@ Flags that you specify from the command line override default values and any cor -如果您需要帮助,只需从终端窗口运行 ` kubectl help ` 即可。 +如果你需要帮助,只需从终端窗口运行 ` kubectl help ` 即可。 操作 | 语法 | 描述 -------------------- | -------------------- | -------------------- +`alpha` | `kubectl alpha SUBCOMMAND [flags]` | 列出与 alpha 特性对应的可用命令,这些特性在 Kubernetes 集群中默认情况下是不启用的。 `annotate` | kubectl annotate (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags] | 添加或更新一个或多个资源的注解。 +`api-resources` | `kubectl api-resources [flags]` | 列出可用的 API 资源。 `api-versions` | `kubectl api-versions [flags]` | 列出可用的 API 版本。 `apply` | `kubectl apply -f FILENAME [flags]`| 从文件或 stdin 对资源应用配置更改。 `attach` | `kubectl attach POD -c CONTAINER [-i] [-t] [flags]` | 附加到正在运行的容器,查看输出流或与容器(stdin)交互。 +`auth` | `kubectl auth [flags] [options]` | 检查授权。 `autoscale` | kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags] | 自动伸缩由副本控制器管理的一组 pod。 +`certificate` | `kubectl certificate SUBCOMMAND [options]` | 修改证书资源。 `cluster-info` | `kubectl cluster-info [flags]` | 显示有关集群中主服务器和服务的端口信息。 +`completion` | `kubectl completion SHELL [options]` | 为指定的 shell (bash 或 zsh)输出 shell 补齐代码。 `config` | `kubectl config SUBCOMMAND [flags]` | 修改 kubeconfig 文件。有关详细信息,请参阅各个子命令。 +`convert` | `kubectl convert -f FILENAME [options]` | 在不同的 API 版本之间转换配置文件。配置文件可以是 YAML 或 JSON 格式。 +`cordon` | `kubectl cordon NODE [options]` | 将节点标记为不可调度。 +`cp` | `kubectl cp [options]` | 在容器之间复制文件和目录。 `create` | `kubectl create -f FILENAME [flags]` | 从文件或 stdin 创建一个或多个资源。 `delete` | kubectl delete (-f FILENAME | TYPE [NAME | /NAME | -l label | --all]) [flags] | 从文件、标准输入或指定标签选择器、名称、资源选择器或资源中删除资源。 `describe` | kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flags] | 显示一个或多个资源的详细状态。 `diff` | `kubectl diff -f FILENAME [flags]`| 将 live 配置和文件或标准输入做对比 (**BETA**) +`drain` | `kubectl drain NODE [options]` | 腾空节点以准备维护。 `edit` | kubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flags] | 使用默认编辑器编辑和更新服务器上一个或多个资源的定义。 `exec` | `kubectl exec POD [-c CONTAINER] [-i] [-t] [flags] [-- COMMAND [args...]]` | 对 pod 中的容器执行命令。 `explain` | `kubectl explain [--recursive=false] [flags]` | 获取多种资源的文档。例如 pod, node, service 等。 `expose` | kubectl expose (-f FILENAME | TYPE NAME | TYPE/NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type] [flags] | 将副本控制器、服务或 pod 作为新的 Kubernetes 服务暴露。 `get` | kubectl get (-f FILENAME | TYPE [NAME | /NAME | -l label]) [--watch] [--sort-by=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags] | 列出一个或多个资源。 +`kustomize` | `kubectl kustomize [flags] [options]` | 列出从 kustomization.yaml 文件中的指令生成的一组 API 资源。参数必须是包含文件的目录的路径,或者是 git 存储库 URL,其路径后缀相对于存储库根目录指定了相同的路径。 `label` | kubectl label (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags] | 添加或更新一个或多个资源的标签。 `logs` | `kubectl logs POD [-c CONTAINER] [--follow] [flags]` | 在 pod 中打印容器的日志。 +`options` | `kubectl options` | 全局命令行选项列表,适用于所有命令。 `patch` | kubectl patch (-f FILENAME | TYPE NAME | TYPE/NAME) --patch PATCH [flags] | 使用策略合并 patch 程序更新资源的一个或多个字段。 +`plugin` | `kubectl plugin [flags] [options]` | 提供用于与插件交互的实用程序。 `port-forward` | `kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N] [flags]` | 将一个或多个本地端口转发到一个 pod。 `proxy` | `kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix] [flags]` | 运行 Kubernetes API 服务器的代理。 `replace` | `kubectl replace -f FILENAME` | 从文件或标准输入中替换资源。 -`rolling-update` | kubectl rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] --image=NEW_CONTAINER_IMAGE | -f NEW_CONTROLLER_SPEC) [flags] | 通过逐步替换指定的副本控制器及其 pod 来执行滚动更新。 +`rollout` | `kubectl rollout SUBCOMMAND [options]` | 管理资源的部署。有效的资源类型包括:Deployments, DaemonSets 和 StatefulSets。 `run` | kubectl run NAME --image=image [--env="key=value"] [--port=port] [--dry-run=server | client | none] [--overrides=inline-json] [flags] | 在集群上运行指定的镜像。 `scale` | kubectl scale (-f FILENAME | TYPE NAME | TYPE/NAME) --replicas=COUNT [--resource-version=version] [--current-replicas=count] [flags] | 更新指定副本控制器的大小。 -`stop` | `kubectl stop` | 不推荐:相反,请参阅 kubectl delete。 +`set` | `kubectl set SUBCOMMAND [options]` | 配置应用程序资源。 +`taint` | `kubectl taint NODE NAME KEY_1=VAL_1:TAINT_EFFECT_1 ... KEY_N=VAL_N:TAINT_EFFECT_N [options]` | 更新一个或多个节点上的污点。 +`top` | `kubectl top [flags] [options]` | 显示资源(CPU/内存/存储)的使用情况。 +`uncordon` | `kubectl uncordon NODE [options]` | 将节点标记为可调度。 `version` | `kubectl version [--client] [flags]` | 显示运行在客户端和服务器上的 Kubernetes 版本。 +`wait` | kubectl wait ([-f FILENAME] | resource.group/resource.name | resource.group [(-l label | --all)]) [--for=delete|--for condition=available] [options] | 实验性:等待一种或多种资源的特定条件。 -记住:有关命令操作的更多信息,请参阅 [kubectl](/zh/docs/reference/kubectl/kubectl/) 参考文档。 +了解更多有关命令操作的信息,请参阅 [kubectl](/zh/docs/reference/kubectl/kubectl/) 参考文档。 (以下输出可以通过 `kubectl api-resources` 获取,内容以 Kubernetes 1.19.1 版本为准。) @@ -351,7 +396,7 @@ The following table includes a list of all the supported resource types and thei ## 输出选项 有关如何格式化或排序某些命令的输出的信息,请使用以下部分。有关哪些命令支持各种输出选项的详细信息,请参阅[kubectl](/zh/docs/reference/kubectl/kubectl/) 参考文档。 @@ -419,7 +464,8 @@ kubectl get pod web-pod-13je7 -o yaml ``` 请记住:有关每个命令支持哪种输出格式的详细信息,请参阅 [kubectl](/zh/docs/reference/kubectl/kubectl/) 参考文档。 @@ -431,7 +477,7 @@ Remember: See the [kubectl](/docs/user-guide/kubectl/) reference documentation f -要定义自定义列并仅将所需的详细信息输出到表中,可以使用该 custom-columns 选项。您可以选择内联定义自定义列或使用模板文件:`-o=custom-columns=` 或 `-o=custom-columns-file=`。 +要定义自定义列并仅将所需的详细信息输出到表中,可以使用该 custom-columns 选项。你可以选择内联定义自定义列或使用模板文件:`-o=custom-columns=` 或 `-o=custom-columns-file=`。 -运行任何一个命令的结果是: +运行任何一个命令的结果类似于: ```shell NAME RSRC @@ -491,10 +537,10 @@ This allows for consistent human-readable output across clients used against the 通过让服务器封装打印的细节,这允许在针对同一集群使用的客户端之间提供一致的人类可读输出。 -默认情况下,此功能在 `kubectl` 1.11 及更高版本中启用。要禁用它,请将该 `--server-print=false` 参数添加到 `kubectl get` 命令中。 +此功能默认启用。要禁用它,请将该 `--server-print=false` 参数添加到 `kubectl get` 命令中。 -输出如下: +输出类似于: ```shell -NAME READY STATUS RESTARTS AGE -pod-name 1/1 Running 0 1m +NAME AGE +pod-name 1m ``` -使用以下示例集来帮助您熟悉运行常用 kubectl 操作: +使用以下示例集来帮助你熟悉运行常用 kubectl 操作: ```shell @@ -651,7 +703,7 @@ kubectl describe pods/ kubectl describe pods # 描述所有的 pod,不包括未初始化的 pod -kubectl describe pods --include-uninitialized=false +kubectl describe pods ``` {{< note >}} @@ -668,7 +720,7 @@ command retrieves not only the information about the node, but also a summary of the pods running on it, the events generated for the node etc. --> `kubectl get` 命令通常用于检索同一资源类型的一个或多个资源。 -它具有丰富的参数,允许您使用 `-o` 或 `--output` 参数自定义输出格式。您可以指定 `-w` 或 `--watch` 参数以开始观察特定对象的更新。 +它具有丰富的参数,允许你使用 `-o` 或 `--output` 参数自定义输出格式。你可以指定 `-w` 或 `--watch` 参数以开始观察特定对象的更新。 `kubectl describe` 命令更侧重于描述指定资源的许多相关方面。它可以调用对 `API 服务器` 的多个 API 调用来为用户构建视图。 例如,该 `kubectl describe node` 命令不仅检索有关节点的信息,还检索在其上运行的 pod 的摘要,为节点生成的事件等。 @@ -680,21 +732,25 @@ the pods running on it, the events generated for the node etc. `kubectl delete` - 从文件、stdin 或指定标签选择器、名称、资源选择器或资源中删除资源。 ```shell # 使用 pod.yaml 文件中指定的类型和名称删除 pod。 kubectl delete -f pod.yaml -# 删除标签名= 的所有 pod 和服务。 -kubectl delete pods,services -l name= - -# 删除所有具有标签名称= 的 pod 和服务,包括未初始化的那些。 -kubectl delete pods,services -l name= --include-uninitialized +# 删除所有带有 '=' 标签的 Pod 和服务。 +kubectl delete pods,services -l = # 删除所有 pod,包括未初始化的 pod。 kubectl delete pods --all @@ -707,19 +763,24 @@ kubectl delete pods --all ```shell # 从 pod 中获取运行 'date' 的输出。默认情况下,输出来自第一个容器。 -kubectl exec date +kubectl exec -- date # 运行输出 'date' 获取在容器的 中 pod 的输出。 -kubectl exec -c date +kubectl exec -c -- date # 获取一个交互 TTY 并运行 /bin/bash 。默认情况下,输出来自第一个容器。 -kubectl exec -ti /bin/bash +kubectl exec -ti -- /bin/bash ``` ```shell @@ -749,26 +813,28 @@ kubectl logs -f -使用以下示例来帮助您熟悉编写和使用 `kubectl` 插件: +使用以下示例来帮助你熟悉编写和使用 `kubectl` 插件: @@ -776,44 +842,51 @@ kubectl hello # 用任何语言创建一个简单的插件,并为生成的可执行文件命名 # 以前缀 "kubectl-" 开始 cat ./kubectl-hello -#!/bin/bash +``` + +```shell +#!/bin/sh # 这个插件打印单词 "hello world" echo "hello world" - -# 我们的插件写好了,让我们把它变成可执行的 -sudo chmod +x ./kubectl-hello +``` +这个插件写好了,把它变成可执行的: +```bash +sudo chmod a+x ./kubectl-hello # 并将其移动到路径中的某个位置 sudo mv ./kubectl-hello /usr/local/bin +sudo chown root:root /usr/local/bin -# 我们现在已经创建并"安装"了一个 kubectl 插件。 -# 我们可以开始使用我们的插件,从 kubectl 调用它,就像它是一个常规命令一样 +# 你现在已经创建并"安装了"一个 kubectl 插件。 +# 你可以开始使用这个插件,从 kubectl 调用它,就像它是一个常规命令一样 kubectl hello ``` ``` hello world ``` -``` -# 我们可以"卸载"一个插件,只需从我们的路径中删除它 +```shell +# 你可以"卸载"一个插件,只需从你的路径中删除它 sudo rm /usr/local/bin/kubectl-hello ``` -为了查看可用的所有 `kubectl` 插件,我们可以使用 `kubectl plugin list` 子命令: +为了查看可用的所有 `kubectl` 插件,你可以使用 `kubectl plugin list` 子命令: ```shell kubectl plugin list ``` +输出类似于: ``` -以下 kubectl-适配 的插件是可用的: +The following kubectl-compatible plugins are available: /usr/local/bin/kubectl-hello /usr/local/bin/kubectl-foo /usr/local/bin/kubectl-bar ``` -``` -# 这个指令也可以警告我们哪些插件 -# 被运行,或是被其它插件覆盖了 -# 例如 -sudo chmod -x /usr/local/bin/kubectl-foo +`kubectl plugin list`指令也可以向你告警哪些插件被运行,或是被其它插件覆盖了,例如: +```shell +sudo chmod -x /usr/local/bin/kubectl-foo # 删除执行权限 kubectl plugin list ``` ``` -以下 kubectl-适配 的插件是可用的: +The following kubectl-compatible plugins are available: /usr/local/bin/kubectl-hello /usr/local/bin/kubectl-foo - - 警告: /usr/local/bin/kubectl-foo 被识别为一个插件,但是它并不可以执行 + - warning: /usr/local/bin/kubectl-foo identified as a plugin, but it is not executable /usr/local/bin/kubectl-bar -错误: 发现了一个插件警告 +error: one plugin warning was found ``` -我们可以将插件视为在现有 kubectl 命令之上构建更复杂功能的一种方法: +你可以将插件视为在现有 kubectl 命令之上构建更复杂功能的一种方法: +```shell cat ./kubectl-whoami +``` + + +接下来的几个示例假设你已经将 `kubectl-whoami` 设置为以下内容: + + - ```shell -cat ./kubectl-whoami #!/bin/bash -# 这个插件借用 `kubectl config` 指令来输出 -# 当前用户的信息,基于当前指定的 context -kubectl config view --template='{{ range .contexts }}{{ if eq .name "'$(kubectl config current-context)'" }}Current user: {{ .context.user }}{{ end }}{{ end }}' +#这个插件利用 `kubectl config` 命令基于当前所选上下文输出当前用户的信息 +kubectl config view --template='{{ range .contexts }}{{ if eq .name "'$(kubectl config current-context)'" }}Current user: {{ printf "%s\n" .context.user }}{{ end }}{{ end }}' ``` -运行上面的插件为我们提供了一个输出,其中包含我们 KUBECONFIG 文件中当前所选定上下文对应的用户: +运行以上命令将为你提供一个输出,其中包含 KUBECONFIG 文件中当前上下文的用户: - ```shell +#!/bin/bash # 使文件成为可执行的 sudo chmod +x ./kubectl-whoami -# 然后移动到我们的路径中 +# 然后移动到你的路径中 sudo mv ./kubectl-whoami /usr/local/bin kubectl whoami @@ -935,6 +1016,10 @@ To find out more about plugins, take a look at the [example cli plugin](https:// -开始使用 [kubectl](/docs/reference/generated/kubectl/kubectl-commands/) 命令。 +* 开始使用 [kubectl](/docs/reference/generated/kubectl/kubectl-commands/) 命令。 + +* 查看更多[示例 cli 插件](https://github.com/kubernetes/sample-cli-plugin)。 From 05381f6078ab9ce15487e813ceeb6a14aab423fe Mon Sep 17 00:00:00 2001 From: Hao Yuan Date: Wed, 2 Dec 2020 15:19:40 +0800 Subject: [PATCH 70/80] sync kube-controller-manager, kube-proxy and kubelet-authentication-authorization --- .../kube-controller-manager.md | 423 +++++++++++++++++- .../kube-proxy.md | 295 ++++++++++-- .../kubelet-authentication-authorization.md | 109 ++++- 3 files changed, 773 insertions(+), 54 deletions(-) diff --git a/content/zh/docs/reference/command-line-tools-reference/kube-controller-manager.md b/content/zh/docs/reference/command-line-tools-reference/kube-controller-manager.md index 602d0bdbfa..34d86b0bba 100644 --- a/content/zh/docs/reference/command-line-tools-reference/kube-controller-manager.md +++ b/content/zh/docs/reference/command-line-tools-reference/kube-controller-manager.md @@ -262,6 +262,23 @@ kube-controller-manager [flags] 包含 PEM 编码格式的 X509 CA 证书的文件名。该证书用来发放集群范围的证书。 + + + +--cluster-signing-duration duration     默认值: 8760h0m0s + + + + + +所签名证书的有效期限。 + + + --cluster-signing-key-file string     默认值:"/etc/kubernetes/ca/ca.key" @@ -271,6 +288,118 @@ kube-controller-manager [flags] 包含 PEM 编码的 RSA 或 ECDSA 私钥的文件名。该私钥用来对集群范围证书签名。 + +--cluster-signing-kube-apiserver-client-cert-file string + + + + +包含 PEM 编码的 X509 CA 证书的文件名, +该证书用于为 kubernetes.io/kube-apiserver-client 签署者颁发证书。 +如果指定,则不得设置 --cluster-signing-{cert,key}-file。 + + + + +--cluster-signing-kube-apiserver-client-key-file string + + + + +包含 PEM 编码的 RSA 或 ECDSA 私钥的文件名, +该私钥用于为 kubernetes.io/kube-apiserver-client 签署者签名证书。 +如果指定,则不得设置 --cluster-signing-{cert,key}-file。 + + + + +--cluster-signing-kubelet-client-cert-file string + + + + +包含 PEM 编码的 X509 CA 证书的文件名, +该证书用于为 kubernetes.io/kube-apiserver-client-kubelet 签署者颁发证书。 +如果指定,则不得设置 --cluster-signing-{cert,key}-file。 + + + + +--cluster-signing-kubelet-client-key-file string + + + + +包含 PEM 编码的 RSA 或 ECDSA 私钥的文件名, +该私钥用于为 kubernetes.io/kube-apiserver-client-kubelet 签署者签名证书。 +如果指定,则不得设置 --cluster-signing-{cert,key}-file。 + + + + +--cluster-signing-kubelet-serving-cert-file string + + + + +包含 PEM 编码的 X509 CA 证书的文件名, +该证书用于为 kubernetes.io/kubelet-serving 签署者颁发证书。 +如果指定,则不得设置 --cluster-signing-{cert,key}-file。 + + + + +--cluster-signing-kubelet-serving-key-file string + + + + +包含 PEM 编码的 RSA或ECDSA 私钥的文件名, +该私钥用于对 kubernetes.io/kubelet-serving 签署者的证书进行签名。 +如果指定,则不得设置 --cluster-signing-{cert,key}-file。 + + + + +--cluster-signing-legacy-unknown-cert-file string + + + + +包含 PEM 编码的 X509 CA 证书的文件名, +用于为 kubernetes.io/legacy-unknown 签署者颁发证书。 +如果指定,则不得设置 --cluster-signing-{cert,key}-file。 + + + + +--cluster-signing-legacy-unknown-key-file string + + + + +包含 PEM 编码的 RSA 或 ECDSA 私钥的文件名, +用于为 kubernetes.io/legacy-unknown 签署者签名证书。 +如果指定,则不得设置 --cluster-signing-{cert,key}-file。 + + + --concurrent-deployment-syncs int32     默认值:5 @@ -409,9 +538,9 @@ kube-controller-manager [flags] --controllers stringSlice     默认值:[*] - + 要启用的控制器列表。* 表示启用所有默认启用的控制器;foo 启用名为 foo 的控制器;-foo 表示禁用名为 foo 的控制器。
-控制器的全集:attachdetach、bootstrapsigner、cloud-node-lifecycle、clusterrole-aggregation、cronjob、csrapproving、csrcleaner、csrsigning、daemonset、deployment、disruption、endpoint、endpointslice、garbagecollector、horizontalpodautoscaling、job、namespace、nodeipam、nodelifecycle、persistentvolume-binder、persistentvolume-expander、podgc、pv-protection、pvc-protection、replicaset、replicationcontroller、resourcequota、root-ca-cert-publisher、route、service、serviceaccount、serviceaccount-token、statefulset、tokencleaner、ttl、ttl-after-finished
+控制器的全集:attachdetach、bootstrapsigner、cloud-node-lifecycle、clusterrole-aggregation、cronjob、csrapproving、csrcleaner、csrsigning、daemonset、deployment、disruption、endpoint、endpointslice、endpointslicemirroring、ephemeral-volume、garbagecollector、horizontalpodautoscaling、job、namespace、nodeipam、nodelifecycle、persistentvolume-binder、persistentvolume-expander、podgc、pv-protection、pvc-protection、replicaset、replicationcontroller、resourcequota、root-ca-cert-publisher、route、service、serviceaccount、serviceaccount-token、statefulset、tokencleaner、ttl、ttl-after-finished
默认禁用的控制器有:bootstrapsigner 和 tokencleaner。 @@ -482,14 +611,6 @@ kube-controller-manager [flags] 端点片段(Endpoint Slice)批量更新周期时长。对 Pods 变更的处理会被延迟,以便将其与即将到来的更新操作合并,从而减少端点更新操作次数。较大的数值意味着端点更新的迟滞时间会增长,也意味着所生成的端点版本个数会变少。 - - ---experimental-cluster-signing-duration duration     默认值:8760h0m0s - - -所签署的证书的有效期时长。 - - --external-cloud-volume-plugin string @@ -502,8 +623,180 @@ kube-controller-manager [flags] --feature-gates mapStringBool - -一组 key=value 耦对,用来描述测试性/试验性功能的特性门控(Feature Gate)。可选项有:
APIListChunking=true|false (BETA - default=true)
APIPriorityAndFairness=true|false (ALPHA - default=false)
APIResponseCompression=true|false (BETA - default=true)
AllAlpha=true|false (ALPHA - default=false)
AllBeta=true|false (BETA - default=false)
AllowInsecureBackendProxy=true|false (BETA - default=true)
AnyVolumeDataSource=true|false (ALPHA - default=false)
AppArmor=true|false (BETA - default=true)
BalanceAttachedNodeVolumes=true|false (ALPHA - default=false)
BoundServiceAccountTokenVolume=true|false (ALPHA - default=false)
CPUManager=true|false (BETA - default=true)
CRIContainerLogRotation=true|false (BETA - default=true)
CSIInlineVolume=true|false (BETA - default=true)
CSIMigration=true|false (BETA - default=true)
CSIMigrationAWS=true|false (BETA - default=false)
CSIMigrationAWSComplete=true|false (ALPHA - default=false)
CSIMigrationAzureDisk=true|false (ALPHA - default=false)
CSIMigrationAzureDiskComplete=true|false (ALPHA - default=false)
CSIMigrationAzureFile=true|false (ALPHA - default=false)
CSIMigrationAzureFileComplete=true|false (ALPHA - default=false)
CSIMigrationGCE=true|false (BETA - default=false)
CSIMigrationGCEComplete=true|false (ALPHA - default=false)
CSIMigrationOpenStack=true|false (BETA - default=false)
CSIMigrationOpenStackComplete=true|false (ALPHA - default=false)
ConfigurableFSGroupPolicy=true|false (ALPHA - default=false)
CustomCPUCFSQuotaPeriod=true|false (ALPHA - default=false)
DefaultIngressClass=true|false (BETA - default=true)
DevicePlugins=true|false (BETA - default=true)
DryRun=true|false (BETA - default=true)
DynamicAuditing=true|false (ALPHA - default=false)
DynamicKubeletConfig=true|false (BETA - default=true)
EndpointSlice=true|false (BETA - default=true)
EndpointSliceProxying=true|false (ALPHA - default=false)
EphemeralContainers=true|false (ALPHA - default=false)
EvenPodsSpread=true|false (BETA - default=true)
ExpandCSIVolumes=true|false (BETA - default=true)
ExpandInUsePersistentVolumes=true|false (BETA - default=true)
ExpandPersistentVolumes=true|false (BETA - default=true)
ExperimentalHostUserNamespaceDefaulting=true|false (BETA - default=false)
HPAScaleToZero=true|false (ALPHA - default=false)
HugePageStorageMediumSize=true|false (ALPHA - default=false)
HyperVContainer=true|false (ALPHA - default=false)
IPv6DualStack=true|false (ALPHA - default=false)
ImmutableEphemeralVolumes=true|false (ALPHA - default=false)
KubeletPodResources=true|false (BETA - default=true)
LegacyNodeRoleBehavior=true|false (ALPHA - default=true)
LocalStorageCapacityIsolation=true|false (BETA - default=true)
LocalStorageCapacityIsolationFSQuotaMonitoring=true|false (ALPHA - default=false)
NodeDisruptionExclusion=true|false (ALPHA - default=false)
NonPreemptingPriority=true|false (ALPHA - default=false)
PodDisruptionBudget=true|false (BETA - default=true)
PodOverhead=true|false (BETA - default=true)
ProcMountType=true|false (ALPHA - default=false)
QOSReserved=true|false (ALPHA - default=false)
RemainingItemCount=true|false (BETA - default=true)
RemoveSelfLink=true|false (ALPHA - default=false)
ResourceLimitsPriorityFunction=true|false (ALPHA - default=false)
RotateKubeletClientCertificate=true|false (BETA - default=true)
RotateKubeletServerCertificate=true|false (BETA - default=true)
RunAsGroup=true|false (BETA - default=true)
RuntimeClass=true|false (BETA - default=true)
SCTPSupport=true|false (ALPHA - default=false)
SelectorIndex=true|false (ALPHA - default=false)
ServerSideApply=true|false (BETA - default=true)
ServiceAccountIssuerDiscovery=true|false (ALPHA - default=false)
ServiceAppProtocol=true|false (ALPHA - default=false)
ServiceNodeExclusion=true|false (ALPHA - default=false)
ServiceTopology=true|false (ALPHA - default=false)
StartupProbe=true|false (BETA - default=true)
StorageVersionHash=true|false (BETA - default=true)
SupportNodePidsLimit=true|false (BETA - default=true)
SupportPodPidsLimit=true|false (BETA - default=true)
Sysctls=true|false (BETA - default=true)
TTLAfterFinished=true|false (ALPHA - default=false)
TokenRequest=true|false (BETA - default=true)
TokenRequestProjection=true|false (BETA - default=true)
TopologyManager=true|false (BETA - default=true)
ValidateProxyRedirects=true|false (BETA - default=true)
VolumeSnapshotDataSource=true|false (BETA - default=true)
WinDSR=true|false (ALPHA - default=false)
WinOverlay=true|false (ALPHA - default=false) + +一组 key=value 对,用来描述测试性/试验性功能的特性门控(Feature Gate)。可选项有: +
APIListChunking=true|false (BETA - 默认值=true) +
APIPriorityAndFairness=true|false (ALPHA - 默认值=false) +
APIResponseCompression=true|false (BETA - 默认值=true) +
AllAlpha=true|false (ALPHA - 默认值=false) +
AllBeta=true|false (BETA - 默认值=false) +
AllowInsecureBackendProxy=true|false (BETA - 默认值=true) +
AnyVolumeDataSource=true|false (ALPHA - 默认值=false) +
AppArmor=true|false (BETA - 默认值=true) +
BalanceAttachedNodeVolumes=true|false (ALPHA - 默认值=false) +
BoundServiceAccountTokenVolume=true|false (ALPHA - 默认值=false) +
CPUManager=true|false (BETA - 默认值=true) +
CRIContainerLogRotation=true|false (BETA - 默认值=true) +
CSIInlineVolume=true|false (BETA - 默认值=true) +
CSIMigration=true|false (BETA - 默认值=true) +
CSIMigrationAWS=true|false (BETA - 默认值=false) +
CSIMigrationAWSComplete=true|false (ALPHA - 默认值=false) +
CSIMigrationAzureDisk=true|false (BETA - 默认值=false) +
CSIMigrationAzureDiskComplete=true|false (ALPHA - 默认值=false) +
CSIMigrationAzureFile=true|false (ALPHA - 默认值=false) +
CSIMigrationAzureFileComplete=true|false (ALPHA - 默认值=false) +
CSIMigrationGCE=true|false (BETA - 默认值=false) +
CSIMigrationGCEComplete=true|false (ALPHA - 默认值=false) +
CSIMigrationOpenStack=true|false (BETA - 默认值=false) +
CSIMigrationOpenStackComplete=true|false (ALPHA - 默认值=false) +
CSIMigrationvSphere=true|false (BETA - 默认值=false) +
CSIMigrationvSphereComplete=true|false (BETA - 默认值=false) +
CSIStorageCapacity=true|false (ALPHA - 默认值=false) +
CSIVolumeFSGroupPolicy=true|false (ALPHA - 默认值=false) +
ConfigurableFSGroupPolicy=true|false (ALPHA - 默认值=false) +
CustomCPUCFSQuotaPeriod=true|false (ALPHA - 默认值=false) +
DefaultPodTopologySpread=true|false (ALPHA - 默认值=false) +
DevicePlugins=true|false (BETA - 默认值=true) +
DisableAcceleratorUsageMetrics=true|false (ALPHA - 默认值=false) +
DynamicKubeletConfig=true|false (BETA - 默认值=true) +
EndpointSlice=true|false (BETA - 默认值=true) +
EndpointSliceProxying=true|false (BETA - 默认值=true) +
EphemeralContainers=true|false (ALPHA - 默认值=false) +
ExpandCSIVolumes=true|false (BETA - 默认值=true) +
ExpandInUsePersistentVolumes=true|false (BETA - 默认值=true) +
ExpandPersistentVolumes=true|false (BETA - 默认值=true) +
ExperimentalHostUserNamespaceDefaulting=true|false (BETA - 默认值=false) +
GenericEphemeralVolume=true|false (ALPHA - 默认值=false) +
HPAScaleToZero=true|false (ALPHA - 默认值=false) +
HugePageStorageMediumSize=true|false (BETA - 默认值=true) +
HyperVContainer=true|false (ALPHA - 默认值=false) +
IPv6DualStack=true|false (ALPHA - 默认值=false) +
ImmutableEphemeralVolumes=true|false (BETA - 默认值=true) +
KubeletPodResources=true|false (BETA - 默认值=true) +
LegacyNodeRoleBehavior=true|false (BETA - 默认值=true) +
LocalStorageCapacityIsolation=true|false (BETA - 默认值=true) +
LocalStorageCapacityIsolationFSQuotaMonitoring=true|false (ALPHA - 默认值=false) +
NodeDisruptionExclusion=true|false (BETA - 默认值=true) +
NonPreemptingPriority=true|false (BETA - 默认值=true) +
PodDisruptionBudget=true|false (BETA - 默认值=true) +
PodOverhead=true|false (BETA - 默认值=true) +
ProcMountType=true|false (ALPHA - 默认值=false) +
QOSReserved=true|false (ALPHA - 默认值=false) +
RemainingItemCount=true|false (BETA - 默认值=true) +
RemoveSelfLink=true|false (ALPHA - 默认值=false) +
RotateKubeletServerCertificate=true|false (BETA - 默认值=true) +
RunAsGroup=true|false (BETA - 默认值=true) +
RuntimeClass=true|false (BETA - 默认值=true) +
SCTPSupport=true|false (BETA - 默认值=true) +
SelectorIndex=true|false (BETA - 默认值=true) +
ServerSideApply=true|false (BETA - 默认值=true) +
ServiceAccountIssuerDiscovery=true|false (ALPHA - 默认值=false) +
ServiceAppProtocol=true|false (BETA - 默认值=true) +
ServiceNodeExclusion=true|false (BETA - 默认值=true) +
ServiceTopology=true|false (ALPHA - 默认值=false) +
SetHostnameAsFQDN=true|false (ALPHA - 默认值=false) +
StartupProbe=true|false (BETA - 默认值=true) +
StorageVersionHash=true|false (BETA - 默认值=true) +
SupportNodePidsLimit=true|false (BETA - 默认值=true) +
SupportPodPidsLimit=true|false (BETA - 默认值=true) +
Sysctls=true|false (BETA - 默认值=true) +
TTLAfterFinished=true|false (ALPHA - 默认值=false) +
TokenRequest=true|false (BETA - 默认值=true) +
TokenRequestProjection=true|false (BETA - 默认值=true) +
TopologyManager=true|false (BETA - 默认值=true) +
ValidateProxyRedirects=true|false (BETA - 默认值=true) +
VolumeSnapshotDataSource=true|false (BETA - 默认值=true) +
WarningHeaders=true|false (BETA - 默认值=true) +
WinDSR=true|false (ALPHA - 默认值=false) +
WinOverlay=true|false (ALPHA - 默认值=false) +
WindowsEndpointSliceProxying=true|false (ALPHA - 默认值=false) + @@ -647,12 +940,20 @@ kube-controller-manager [flags] - ---leader-elect-resource-lock endpoints     默认值:"endpointsleases" + + +--leader-elect-resource-lock string     默认值:"endpointsleases" + - -在领导者选举期间用来执行锁操作的资源对象类型。可选项为 endpointsleases (默认值)和 configmaps。 + + +在领导者选举期间用于锁定的资源对象的类型。 支持的选项为'endpoints'、'configmaps'、'leases'、'endpointsleases' 和 'configmapsleases'。 + @@ -723,6 +1024,25 @@ kube-controller-manager [flags] 将内存中日志数据清除到日志文件中时,相邻两次清除操作之间最大间隔秒数。 + + + +--logging-format string     默认值:"text" + + + + + +设置日志格式。允许的格式:"text","json"。 +
非默认格式不支持以下标志:--add_dir_header、--alsologtostderr、--log_backtrace_at、--log_dir、--log_file、--log_file_max_size、--logtostderr、--skip_headers、--skip_log_headers、--stderrthreshold、--vmodule、--log-flush-frequency。 +
当前非默认选项为 Alpha,如有更改,恕不另行通知。 + + + --logtostderr     默认值:true @@ -758,6 +1078,58 @@ kube-controller-manager [flags] 自省程序的重新同步时隔下限。实际时隔长度会在 min-resync-period 和 2 * min-resync-period 之间。 + + + +--mirroring-concurrent-service-endpoint-syncs int32     默认值:5 + + + + + +EndpointSliceMirroring 控制器将同时执行的服务端点同步操作数。 +较大的数量 = 更快的端点切片更新,但 CPU(和网络)负载更多。 默认为 5。 + + + + +--mirroring-endpointslice-updates-batch-period duration + + + + +EndpointSlice 的长度更新了 EndpointSliceMirroring 控制器的批处理周期。 +EndpointSlice 更改的处理将延迟此持续时间, +以使它们与潜在的即将进行的更新结合在一起,并减少 EndpointSlice 更新的总数。 +较大的数量 = 较高的端点编程延迟,但是生成的端点修订版本数量较少 + + + + + + +--mirroring-max-endpoints-per-subset int32     默认值:1000 + + + + + +EndpointSliceMirroring 控制器将添加到 EndpointSlice 的最大端点数。 +每个分片的端点越多,端点分片越少,但资源越大。 +默认为 100。 + + + --namespace-sync-period duration     默认值:5m0s @@ -827,6 +1199,20 @@ kube-controller-manager [flags] 在节点启动期间,节点可以处于无响应状态;但超出此标志所设置的时长仍然无响应则该节点被标记为不健康。 + +--permit-port-sharing + + + + +如果为 true,则在绑定端口时将使用 SO_REUSEPORT, +这允许多个实例在同一地址和端口上进行绑定。 +[默认值 = false] + + + --pod-eviction-timeout duration     默认值:5m0s @@ -1058,8 +1444,9 @@ kube-controller-manager [flags] --tls-cipher-suites stringSlice - -供服务器使用的加密包的逗号分隔列表。若忽略此标志,则使用 Go 语言默认的加密包。可选值包括:TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_RC4_128_SHA + +供服务器使用的加密包的逗号分隔列表。若忽略此标志,则使用 Go 语言默认的加密包。可选值包括:TLS_AES_128_GCM_SHA256、TLS_AES_256_GCM_SHA384、TLS_CHACHA20_POLY1305_SHA256、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA、TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA、TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384、TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305、TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256、TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA、TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA、TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384、TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305、TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256、TLS_RSA_WITH_3DES_EDE_CBC_SHA、TLS_RSA_WITH_AES_128_CBC_SHA、TLS_RSA_WITH_AES_128_GCM_SHA256、TLS_RSA_WITH_AES_256_CBC_SHA、TLS_RSA_WITH_AES_256_GCM_SHA384. +
不安全的值: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256、TLS_ECDHE_ECDSA_WITH_RC4_128_SHA、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256、TLS_ECDHE_RSA_WITH_RC4_128_SHA、TLS_RSA_WITH_AES_128_CBC_SHA256、TLS_RSA_WITH_RC4_128_SHA diff --git a/content/zh/docs/reference/command-line-tools-reference/kube-proxy.md b/content/zh/docs/reference/command-line-tools-reference/kube-proxy.md index ffbc4e7ec8..1c98ff35da 100644 --- a/content/zh/docs/reference/command-line-tools-reference/kube-proxy.md +++ b/content/zh/docs/reference/command-line-tools-reference/kube-proxy.md @@ -209,15 +209,215 @@ Idle timeout for established TCP connections (0 to leave as-is) + +--detect-local-mode LocalMode + + + + +用于检测本地流量的模式 + + + --feature-gates mapStringBool -一组键=值(key=value)对,描述了 alpha/experimental 的特征。可选项有:
APIListChunking=true|false (BETA - 默认值=true)
APIResponseCompression=true|false (BETA - 默认值=true)
AllAlpha=true|false (ALPHA - 默认值=false)
AppArmor=true|false (BETA - 默认值=true)
AttachVolumeLimit=true|false (BETA - 默认值=true)
BalanceAttachedNodeVolumes=true|false (ALPHA - 默认值=false)
BlockVolume=true|false (BETA - 默认值=true)
BoundServiceAccountTokenVolume=true|false (ALPHA - 默认值=false)
CPUManager=true|false (BETA - 默认值=true)
CRIContainerLogRotation=true|false (BETA - 默认值=true)
CSIBlockVolume=true|false (BETA - 默认值=true)
CSIDriverRegistry=true|false (BETA - 默认值=true)
CSIInlineVolume=true|false (BETA - 默认值=true)
CSIMigration=true|false (ALPHA - 默认值=false)
CSIMigrationAWS=true|false (ALPHA - 默认值=false)
CSIMigrationAzureDisk=true|false (ALPHA - 默认值=false)
CSIMigrationAzureFile=true|false (ALPHA - 默认值=false)
CSIMigrationGCE=true|false (ALPHA - 默认值=false)
CSIMigrationOpenStack=true|false (ALPHA - 默认值=false)
CSINodeInfo=true|false (BETA - 默认值=true)
CustomCPUCFSQuotaPeriod=true|false (ALPHA - 默认值=false)
CustomResource默认值ing=true|false (BETA - 默认值=true)
DevicePlugins=true|false (BETA - 默认值=true)
DryRun=true|false (BETA - 默认值=true)
DynamicAuditing=true|false (ALPHA - 默认值=false)
DynamicKubeletConfig=true|false (BETA - 默认值=true)
EndpointSlice=true|false (ALPHA - 默认值=false)
EphemeralContainers=true|false (ALPHA - 默认值=false)
EvenPodsSpread=true|false (ALPHA - 默认值=false)
ExpandCSIVolumes=true|false (BETA - 默认值=true)
ExpandInUsePersistentVolumes=true|false (BETA - 默认值=true)
ExpandPersistentVolumes=true|false (BETA - 默认值=true)
ExperimentalHostUserNamespace默认值ing=true|false (BETA - 默认值=false)
HPAScaleToZero=true|false (ALPHA - 默认值=false)
HyperVContainer=true|false (ALPHA - 默认值=false)
IPv6DualStack=true|false (ALPHA - 默认值=false)
KubeletPodResources=true|false (BETA - 默认值=true)
LegacyNodeRoleBehavior=true|false (ALPHA - 默认值=true)
LocalStorageCapacityIsolation=true|false (BETA - 默认值=true)
LocalStorageCapacityIsolationFSQuotaMonitoring=true|false (ALPHA - 默认值=false)
MountContainers=true|false (ALPHA - 默认值=false)
NodeDisruptionExclusion=true|false (ALPHA - 默认值=false)
NodeLease=true|false (BETA - 默认值=true)
NonPreemptingPriority=true|false (ALPHA - 默认值=false)
PodOverhead=true|false (ALPHA - 默认值=false)
PodShareProcessNamespace=true|false (BETA - 默认值=true)
ProcMountType=true|false (ALPHA - 默认值=false)
QOSReserved=true|false (ALPHA - 默认值=false)
RemainingItemCount=true|false (BETA - 默认值=true)
RemoveSelfLink=true|false (ALPHA - 默认值=false)
RequestManagement=true|false (ALPHA - 默认值=false)
ResourceLimitsPriorityFunction=true|false (ALPHA - 默认值=false)
ResourceQuotaScopeSelectors=true|false (BETA - 默认值=true)
RotateKubeletClientCertificate=true|false (BETA - 默认值=true)
RotateKubeletServerCertificate=true|false (BETA - 默认值=true)
RunAsGroup=true|false (BETA - 默认值=true)
RuntimeClass=true|false (BETA - 默认值=true)
SCTPSupport=true|false (ALPHA - 默认值=false)
ScheduleDaemonSetPods=true|false (BETA - 默认值=true)
ServerSideApply=true|false (BETA - 默认值=true)
ServiceLoadBalancerFinalizer=true|false (BETA - 默认值=true)
ServiceNodeExclusion=true|false (ALPHA - 默认值=false)
StartupProbe=true|false (BETA - 默认值=true)
StorageVersionHash=true|false (BETA - 默认值=true)
StreamingProxyRedirects=true|false (BETA - 默认值=true)
SupportNodePidsLimit=true|false (BETA - 默认值=true)
SupportPodPidsLimit=true|false (BETA - 默认值=true)
Sysctls=true|false (BETA - 默认值=true)
TTLAfterFinished=true|false (ALPHA - 默认值=false)
TaintBasedEvictions=true|false (BETA - 默认值=true)
TaintNodesByCondition=true|false (BETA - 默认值=true)
TokenRequest=true|false (BETA - 默认值=true)
TokenRequestProjection=true|false (BETA - 默认值=true)
TopologyManager=true|false (ALPHA - 默认值=false)
ValidateProxyRedirects=true|false (BETA - 默认值=true)
VolumePVCDataSource=true|false (BETA - 默认值=true)
VolumeSnapshotDataSource=true|false (ALPHA - 默认值=false)
VolumeSubpathEnvExpansion=true|false (BETA - 默认值=true)
WatchBookmark=true|false (BETA - 默认值=true)
WinDSR=true|false (ALPHA - 默认值=false)
WinOverlay=true|false (ALPHA - 默认值=false)
WindowsGMSA=true|false (BETA - 默认值=true)
WindowsRunAsUserName=true|false (ALPHA - 默认值=false) +一组键=值(key=value)对,描述了 alpha/experimental 的特征。可选项有: +
APIListChunking=true|false (BETA - 默认值=true) +
APIPriorityAndFairness=true|false (ALPHA - 默认值=false) +
APIResponseCompression=true|false (BETA - 默认值=true) +
AllAlpha=true|false (ALPHA - 默认值=false) +
AllBeta=true|false (BETA - 默认值=false) +
AllowInsecureBackendProxy=true|false (BETA - 默认值=true) +
AnyVolumeDataSource=true|false (ALPHA - 默认值=false) +
AppArmor=true|false (BETA - 默认值=true) +
BalanceAttachedNodeVolumes=true|false (ALPHA - 默认值=false) +
BoundServiceAccountTokenVolume=true|false (ALPHA - 默认值=false) +
CPUManager=true|false (BETA - 默认值=true) +
CRIContainerLogRotation=true|false (BETA - 默认值=true) +
CSIInlineVolume=true|false (BETA - 默认值=true) +
CSIMigration=true|false (BETA - 默认值=true) +
CSIMigrationAWS=true|false (BETA - 默认值=false) +
CSIMigrationAWSComplete=true|false (ALPHA - 默认值=false) +
CSIMigrationAzureDisk=true|false (BETA - 默认值=false) +
CSIMigrationAzureDiskComplete=true|false (ALPHA - 默认值=false) +
CSIMigrationAzureFile=true|false (ALPHA - 默认值=false) +
CSIMigrationAzureFileComplete=true|false (ALPHA - 默认值=false) +
CSIMigrationGCE=true|false (BETA - 默认值=false) +
CSIMigrationGCEComplete=true|false (ALPHA - 默认值=false) +
CSIMigrationOpenStack=true|false (BETA - 默认值=false) +
CSIMigrationOpenStackComplete=true|false (ALPHA - 默认值=false) +
CSIMigrationvSphere=true|false (BETA - 默认值=false) +
CSIMigrationvSphereComplete=true|false (BETA - 默认值=false) +
CSIStorageCapacity=true|false (ALPHA - 默认值=false) +
CSIVolumeFSGroupPolicy=true|false (ALPHA - 默认值=false) +
ConfigurableFSGroupPolicy=true|false (ALPHA - 默认值=false) +
CustomCPUCFSQuotaPeriod=true|false (ALPHA - 默认值=false) +
DefaultPodTopologySpread=true|false (ALPHA - 默认值=false) +
DevicePlugins=true|false (BETA - 默认值=true) +
DisableAcceleratorUsageMetrics=true|false (ALPHA - 默认值=false) +
DynamicKubeletConfig=true|false (BETA - 默认值=true) +
EndpointSlice=true|false (BETA - 默认值=true) +
EndpointSliceProxying=true|false (BETA - 默认值=true) +
EphemeralContainers=true|false (ALPHA - 默认值=false) +
ExpandCSIVolumes=true|false (BETA - 默认值=true) +
ExpandInUsePersistentVolumes=true|false (BETA - 默认值=true) +
ExpandPersistentVolumes=true|false (BETA - 默认值=true) +
ExperimentalHostUserNamespace默认值ing=true|false (BETA - 默认值=false) +
GenericEphemeralVolume=true|false (ALPHA - 默认值=false) +
HPAScaleToZero=true|false (ALPHA - 默认值=false) +
HugePageStorageMediumSize=true|false (BETA - 默认值=true) +
HyperVContainer=true|false (ALPHA - 默认值=false) +
IPv6DualStack=true|false (ALPHA - 默认值=false) +
ImmutableEphemeralVolumes=true|false (BETA - 默认值=true) +
KubeletPodResources=true|false (BETA - 默认值=true) +
LegacyNodeRoleBehavior=true|false (BETA - 默认值=true) +
LocalStorageCapacityIsolation=true|false (BETA - 默认值=true) +
LocalStorageCapacityIsolationFSQuotaMonitoring=true|false (ALPHA - 默认值=false) +
NodeDisruptionExclusion=true|false (BETA - 默认值=true) +
NonPreemptingPriority=true|false (BETA - 默认值=true) +
PodDisruptionBudget=true|false (BETA - 默认值=true) +
PodOverhead=true|false (BETA - 默认值=true) +
ProcMountType=true|false (ALPHA - 默认值=false) +
QOSReserved=true|false (ALPHA - 默认值=false) +
RemainingItemCount=true|false (BETA - 默认值=true) +
RemoveSelfLink=true|false (ALPHA - 默认值=false) +
RotateKubeletServerCertificate=true|false (BETA - 默认值=true) +
RunAsGroup=true|false (BETA - 默认值=true) +
RuntimeClass=true|false (BETA - 默认值=true) +
SCTPSupport=true|false (BETA - 默认值=true) +
SelectorIndex=true|false (BETA - 默认值=true) +
ServerSideApply=true|false (BETA - 默认值=true) +
ServiceAccountIssuerDiscovery=true|false (ALPHA - 默认值=false) +
ServiceAppProtocol=true|false (BETA - 默认值=true) +
ServiceNodeExclusion=true|false (BETA - 默认值=true) +
ServiceTopology=true|false (ALPHA - 默认值=false) +
SetHostnameAsFQDN=true|false (ALPHA - 默认值=false) +
StartupProbe=true|false (BETA - 默认值=true) +
StorageVersionHash=true|false (BETA - 默认值=true) +
SupportNodePidsLimit=true|false (BETA - 默认值=true) +
SupportPodPidsLimit=true|false (BETA - 默认值=true) +
Sysctls=true|false (BETA - 默认值=true) +
TTLAfterFinished=true|false (ALPHA - 默认值=false) +
TokenRequest=true|false (BETA - 默认值=true) +
TokenRequestProjection=true|false (BETA - 默认值=true) +
TopologyManager=true|false (BETA - 默认值=true) +
ValidateProxyRedirects=true|false (BETA - 默认值=true) +
VolumeSnapshotDataSource=true|false (BETA - 默认值=true) +
WarningHeaders=true|false (BETA - 默认值=true) +
WinDSR=true|false (ALPHA - 默认值=false) +
WinOverlay=true|false (ALPHA - 默认值=false) +
WindowsEndpointSliceProxying=true|false (ALPHA - 默认值=false) + + + + + + +--healthz-bind-address 0.0.0.0     默认值: 0.0.0.0:10256 + + + + + +服务健康检查的 IP 地址和端口(对于所有 IPv4 接口设置为 '0.0.0.0:10256',对于所有 IPv6 接口设置为 '[::]:10256') +设置为空则禁用。 @@ -234,24 +434,7 @@ A set of key=value pairs that describe feature gates for alpha/experimental feat -服务健康检查的 IP 地址和端口(对于所有 IPv4 接口设置为 0.0.0.0,对于所有 IPv6 接口设置为 ::) - - - - - - ---healthz-port int32     默认值: 10256 - - - - - -绑定健康检查服务的端口。使用 0 表示禁用。 +服务健康检查的 IP 地址和端口(设置为 0.0.0.0 表示使用所有 IPv4 接口,设置为 :: 表示使用所有 IPv6 接口) @@ -297,7 +480,12 @@ If using the pure iptables proxy, the bit of the fwmark space to mark packets re ---iptables-min-sync-period duration + + + --iptables-min-sync-period duration     默认值:1s + @@ -390,6 +578,43 @@ The maximum interval of how often ipvs rules are refreshed (e.g. '5s', '1m', '2h + + +--ipvs-tcp-timeout duration + + + + +空闲 IPVS TCP 连接的超时时间,0 保持连接(例如 '5s'、'1m'、'2h22m')。 + + + + +--ipvs-tcpfin-timeout duration + + + + +收到 FIN 数据包后,IPVS TCP 连接的超时,0 保持连接不变(例如 '5s'、'1m'、'2h22m')。 + + + + +--ipvs-udp-timeout duration + + + + +IPVS UDP 数据包的超时,0 保持连接不动(例如 '5s'、'1m'、'2h22m')。 + + + ---metrics-bind-address 0.0.0.0     默认值: 127.0.0.1:10249 +--metrics-bind-address ipport 0.0.0.0     默认值: 127.0.0.1:10249 -metrics 服务器要使用的 IP 地址(所有 IPv4 接口设置为 0.0.0.0,所有 IPv6 接口设置为 `::`) +metrics 服务器要使用的 IP 地址和端口 +(设置为 '0.0.0.0:10249' 则使用 IPv4 接口,设置为 '[::]:10249' 则使用所有 IPv6 接口) +设置为空则禁用。 @@ -593,6 +822,22 @@ Range of host ports (beginPort-endPort, single port or beginPort+offset, inclusi + +--show-hidden-metrics-for-version string + + + + +你要显示隐藏指标的先前版本。 +仅先前的次要版本有意义,不允许其他值。 +格式为 <major>.<minor> ,例如:'1.16'。 +这种格式的目的是确保你有机会注意到下一个发行版是否隐藏了其他指标, +而不是在之后将其永久删除时感到惊讶。 + + + -{{< toc >}} - -## Overview + +## 概述 + +kubelet 的 HTTPS 端点公开了 API, +这些 API 可以访问敏感度不同的数据, +并允许你在节点上和容器内以不同级别的权限执行操作。 + +本文档介绍了如何对 kubelet 的 HTTPS 端点的访问进行认证和鉴权。 -## Kubelet authentication + +## Kubelet 认证 + +默认情况下,未被已配置的其他身份认证方法拒绝的对 kubelet 的 HTTPS 端点的请求会被视为匿名请求, +并被赋予 `system:anonymous` 用户名和 `system:unauthenticated` 组。 + +要禁用匿名访问并向未经身份认证的请求发送 `401 Unauthorized` 响应,请执行以下操作: -* start the kubelet with the `--anonymous-auth=false` flag + +* 带 `--anonymous-auth=false` 标志启动 kubelet + +要对 kubelet 的 HTTPS 端点启用 X509 客户端证书认证: + +* 带 `--client-ca-file` 标志启动 kubelet,提供一个 CA 证书包以供验证客户端证书 +* 带 `--kubelet-client-certificate` 和 `--kubelet-client-key` 标志启动 apiserver +* 有关更多详细信息,请参见 [apiserver 身份验证文档](/zh/docs/admin/authentication/#x509-client-certs) + +要启用 API 持有者令牌(包括服务帐户令牌)以对 kubelet 的 HTTPS 端点进行身份验证,请执行以下操作: + +* 确保在 API 服务器中启用了 `authentication.k8s.io/v1beta1` API 组 +* 带 `--authentication-token-webhook` 和 `--kubeconfig` 标志启动 kubelet +* kubelet 调用已配置的 API 服务器上的 `TokenReview` API,以根据持有者令牌确定用户信息 -## Kubelet authorization + +## Kubelet 鉴权 + +任何成功通过身份验证的请求(包括匿名请求)之后都会被鉴权。 +默认的鉴权模式为 `AlwaysAllow`,它允许所有请求。 + +细分对 kubelet API 的访问权限可能有多种原因: + +* 启用了匿名身份验证,但是应限制匿名用户调用 kubelet API 的能力 +* 启用了持有者令牌认证,但应限制任意 API 用户(如服务帐户)调用 kubelet API 的能力 +* 启用了客户端证书身份验证,但仅应允许已配置的 CA 签名的某些客户端证书使用 kubelet API + +要细分对 kubelet API 的访问权限,请将鉴权委派给 API 服务器: + +* 确保在 API 服务器中启用了 `authorization.k8s.io/v1beta1` API 组 +* 带 `--authorization-mode=Webhook` 和 `--kubeconfig` 标志启动 kubelet +* kubelet 调用已配置的 API 服务器上的 `SubjectAccessReview` API,以确定每个请求是否得到鉴权 + +kubelet 使用与 apiserver 相同的[请求属性](/zh/docs/admin/authorization/#request-attributes)方法对 API 请求执行鉴权。 + +请求的动词根据传入请求的 HTTP 动词确定: + +HTTP 动词 | 请求动词 ----------|--------------- POST | create GET, HEAD | get @@ -63,24 +136,38 @@ PUT | update PATCH | patch DELETE | delete + +资源和子资源是根据传入请求的路径确定的: -Kubelet API | resource | subresource + +Kubelet API | 资源 | 子资源 -------------|----------|------------ /stats/\* | nodes | stats /metrics/\* | nodes | metrics /logs/\* | nodes | log /spec/\* | nodes | spec -*all others* | nodes | proxy +*其它所有* | nodes | proxy + +名字空间和 API 组属性始终是空字符串, +资源名称始终是 kubelet 的 `Node` API 对象的名称。 + +在此模式下运行时,请确保传递给 apiserver 的由 `--kubelet-client-certificate` 和 +`--kubelet-client-key` 标志标识的用户具有以下属性的鉴权: * verb=\*, resource=nodes, subresource=proxy * verb=\*, resource=nodes, subresource=stats * verb=\*, resource=nodes, subresource=log * verb=\*, resource=nodes, subresource=spec -* verb=\*, resource=nodes, subresource=metrics +* verb=\*, resource=nodes, subresource=metrics \ No newline at end of file From 9ef54282cbfb1960d760c063190fdbe43dae1040 Mon Sep 17 00:00:00 2001 From: Noah Kantrowitz Date: Wed, 2 Dec 2020 19:00:30 -0800 Subject: [PATCH 71/80] Add cross-link to FAQ to the first dockershim post. --- .../_posts/2020-12-02-dont-panic-kubernetes-and-docker.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/content/en/blog/_posts/2020-12-02-dont-panic-kubernetes-and-docker.md b/content/en/blog/_posts/2020-12-02-dont-panic-kubernetes-and-docker.md index 6f70660420..a262ef64c9 100644 --- a/content/en/blog/_posts/2020-12-02-dont-panic-kubernetes-and-docker.md +++ b/content/en/blog/_posts/2020-12-02-dont-panic-kubernetes-and-docker.md @@ -99,4 +99,6 @@ for you, that’s okay -- there’s a lot going on here, Kubernetes has a lot of moving parts, and nobody is an expert in 100% of it. We encourage any and all questions regardless of experience level or complexity! Our goal is to make sure everyone is educated as much as possible on the upcoming changes. `<3` We hope -this has answered most of your questions and soothed some anxieties! \ No newline at end of file +this has answered most of your questions and soothed some anxieties! + +Looking for more answers? Check out our accompanying [Dockershim Deprecation FAQ](/blog/2020/12/02/dockershim-faq/). From aca0a3bcf490174b9af583d8005ed36331bca088 Mon Sep 17 00:00:00 2001 From: guzj11 <67083623+guzj11@users.noreply.github.com> Date: Mon, 30 Nov 2020 11:36:14 +0800 Subject: [PATCH 72/80] Sync concepts/cluster-administration/networking.md Apply suggestions from code review Co-authored-by: Qiming Teng --- .../concepts/cluster-administration/networking.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/content/zh/docs/concepts/cluster-administration/networking.md b/content/zh/docs/concepts/cluster-administration/networking.md index 06ff565cff..a51d74143b 100644 --- a/content/zh/docs/concepts/cluster-administration/networking.md +++ b/content/zh/docs/concepts/cluster-administration/networking.md @@ -350,6 +350,18 @@ network complexity required to deploy Kubernetes at scale within AWS. 复杂性(每个 VPC 限制为50-100个条目)。 简而言之,cni-ipvlan-vpc-k8s 大大降低了在 AWS 中大规模部署 Kubernetes 所需的网络复杂性。 + +### Coil + +[Coil](https://github.com/cybozu-go/coil) 是一个为易于集成、提供灵活的出站流量网络而设计的 CNI 插件。 +与裸机相比,Coil 的额外操作开销低,并允许针对外部网络的出站流量任意定义 NAT 网关。 + -Deployment 会创建一个 ReplicaSet 以确保所需数量的 Pod 始终可用,并指定替换 Pod 的策略 -(例如 [RollingUpdate](/zh/docs/concepts/workloads/controllers/deployment/#rolling-update-deployment)), -除了一些显式的[`restartPolicy: Never`](/zh/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy) -场景之外,几乎总是优先考虑直接创建 Pod。 -[Job](/zh/docs/concepts/workloads/controllers/job/) 也可能是合适的。 +除了一些显式的[`restartPolicy: Never`](/zh/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy)场景外,Deployment 通常比直接创建 Pod 要好得多,它既可以创建一个 ReplicaSet 集来确保所需数量的 Pod 始终可用,也可以指定替换 Pod 的策略(例如 [RollingUpdate](/zh/docs/concepts/workloads/controllers/deployment/#rolling-update-deployment))。Job 也可能是更好的选择。 -除了一些显式的[`restartPolicy: Never`](/zh/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy)场景外,Deployment 通常比直接创建 Pod 要好得多,它既可以创建一个 ReplicaSet 集来确保所需数量的 Pod 始终可用,也可以指定替换 Pod 的策略(例如 [RollingUpdate](/zh/docs/concepts/workloads/controllers/deployment/#rolling-update-deployment))。Job 也可能是更好的选择。 +除了一些显式的[`restartPolicy: Never`](/zh/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy)场景外,Deployment 通常比直接创建 Pod 要好得多,它既可以创建一个 ReplicaSet 集来确保所需数量的 Pod 始终可用,也可以指定替换 Pod 的策略(例如 [RollingUpdate](/zh/docs/concepts/workloads/controllers/deployment/#rolling-update-deployment))。但是 Job 也可能是更好的选择。 -除了一些显式的[`restartPolicy: Never`](/zh/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy)场景外,Deployment 通常比直接创建 Pod 要好得多,它既可以创建一个 ReplicaSet 集来确保所需数量的 Pod 始终可用,也可以指定替换 Pod 的策略(例如 [RollingUpdate](/zh/docs/concepts/workloads/controllers/deployment/#rolling-update-deployment))。但是 Job 也可能是更好的选择。 + +Deployment 既可以创建一个 ReplicaSet 来确保预期个数的 Pod 始终可用,也可以指定替换 Pod 的策略(例如 +[RollingUpdate](/zh/docs/concepts/workloads/controllers/deployment/#rolling-update-deployment))。 +除了一些显式的 [`restartPolicy: Never`](/zh/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy) +场景外,Deployment 通常比直接创建 Pod 要好得多。[Job](/zh/docs/concepts/workloads/controllers/job/) 也可能是合适的选择。