From 4a8bc7b0af15c3443ddece7f7b6e5768f45c1977 Mon Sep 17 00:00:00 2001 From: OpenTelekomCloud Proposal Bot Date: Wed, 8 Nov 2023 01:30:57 +0000 Subject: [PATCH] Update content --- .../images/en-us_image_0000001460905374.png | Bin 5102 -> 0 bytes .../images/en-us_image_0000001461224886.png | Bin 16828 -> 0 bytes .../images/en-us_image_0000001517743380.png | Bin 43272 -> 0 bytes .../images/en-us_image_0000001517743496.png | Bin 28679 -> 0 bytes .../images/en-us_image_0000001517743540.png | Bin 12932 -> 0 bytes .../images/en-us_image_0000001517903020.png | Bin 146144 -> 0 bytes .../images/en-us_image_0000001517903036.png | Bin 44434 -> 0 bytes .../images/en-us_image_0000001517903056.png | Bin 272959 -> 0 bytes .../images/en-us_image_0000001517903060.png | Bin 10552 -> 0 bytes .../images/en-us_image_0000001517903088.png | Bin 7276 -> 0 bytes .../images/en-us_image_0000001517903124.png | Bin 43744 -> 0 bytes .../images/en-us_image_0000001517903252.png | Bin 161039 -> 0 bytes .../images/en-us_image_0000001518062524.png | Bin 36096 -> 0 bytes .../images/en-us_image_0000001518062540.png | Bin 26369 -> 0 bytes .../images/en-us_image_0000001518062636.png | Bin 33604 -> 0 bytes .../images/en-us_image_0000001518062756.png | Bin 7289 -> 0 bytes .../images/en-us_image_0000001518222492.png | Bin 116160 -> 0 bytes .../images/en-us_image_0000001518222592.png | Bin 57430 -> 0 bytes .../images/en-us_image_0000001568822709.png | Bin 12240 -> 0 bytes .../images/en-us_image_0000001568822869.png | Bin 19621 -> 0 bytes .../images/en-us_image_0000001568822925.png | Bin 43311 -> 0 bytes .../images/en-us_image_0000001568822965.png | Bin 29754 -> 0 bytes .../images/en-us_image_0000001568902533.png | Bin 57234 -> 0 bytes .../images/en-us_image_0000001568902557.png | Bin 20539 -> 0 bytes .../images/en-us_image_0000001568902649.png | Bin 164 -> 0 bytes .../images/en-us_image_0000001568902669.png | Bin 12240 -> 0 bytes .../images/en-us_image_0000001569022837.png | Bin 6760 -> 0 bytes .../images/en-us_image_0000001569022901.png | Bin 52712 -> 0 bytes .../images/en-us_image_0000001569022929.png | Bin 11394 -> 0 bytes .../images/en-us_image_0000001569022957.png | Bin 38062 -> 0 bytes .../images/en-us_image_0000001569022961.png | Bin 109084 -> 0 bytes .../images/en-us_image_0000001569023013.png | Bin 164 -> 0 bytes .../images/en-us_image_0000001569023025.png | Bin 164 -> 0 bytes .../images/en-us_image_0000001569182569.jpg | Bin 136985 -> 0 bytes .../images/en-us_image_0000001569182625.png | Bin 164 -> 0 bytes .../images/en-us_image_0000001579008782.png | Bin 114587 -> 0 bytes .../images/en-us_image_0000001629186693.png | Bin 326394 -> 0 bytes ...7.png => en-us_image_0000001647417220.png} | Bin ...3.png => en-us_image_0000001647417256.png} | Bin ...4.png => en-us_image_0000001647417268.png} | Bin ...7.gif => en-us_image_0000001647417272.gif} | Bin .../images/en-us_image_0000001647417292.png | Bin 0 -> 56302 bytes .../images/en-us_image_0000001647417300.png | Bin 0 -> 113232 bytes .../images/en-us_image_0000001647417328.png | Bin 0 -> 43018 bytes ...6.png => en-us_image_0000001647417440.png} | Bin .../images/en-us_image_0000001647417448.png | Bin 0 -> 238120 bytes .../images/en-us_image_0000001647417468.png | Bin 0 -> 22353 bytes ...8.png => en-us_image_0000001647417504.png} | Bin ...4.png => en-us_image_0000001647417520.png} | Bin ...0.png => en-us_image_0000001647417524.png} | Bin ...3.png => en-us_image_0000001647417536.png} | Bin ...5.png => en-us_image_0000001647417544.png} | Bin ...5.png => en-us_image_0000001647417588.png} | Bin ...4.png => en-us_image_0000001647417596.png} | Bin ...8.png => en-us_image_0000001647417600.png} | Bin ...4.png => en-us_image_0000001647417636.png} | Bin ...4.png => en-us_image_0000001647417648.png} | Bin .../images/en-us_image_0000001647417744.png | Bin 0 -> 321 bytes ...1.png => en-us_image_0000001647417772.png} | Bin ...6.png => en-us_image_0000001647417776.png} | Bin ...8.png => en-us_image_0000001647417792.png} | Bin ...1.png => en-us_image_0000001647417808.png} | Bin ...2.png => en-us_image_0000001647417812.png} | Bin ...5.png => en-us_image_0000001647417816.png} | Bin .../images/en-us_image_0000001647417828.png | Bin 0 -> 49269 bytes ...3.png => en-us_image_0000001647417836.png} | Bin ...4.png => en-us_image_0000001647417852.png} | Bin ...6.png => en-us_image_0000001647417932.png} | Bin ...2.png => en-us_image_0000001647417936.png} | Bin .../images/en-us_image_0000001647576484.png | Bin 0 -> 41021 bytes ...0.png => en-us_image_0000001647576500.png} | Bin .../images/en-us_image_0000001647576552.png | Bin 0 -> 111240 bytes ...2.png => en-us_image_0000001647576596.png} | Bin .../images/en-us_image_0000001647576692.png | Bin 0 -> 44467 bytes ...2.png => en-us_image_0000001647576696.png} | Bin ...6.png => en-us_image_0000001647576700.png} | Bin ...2.png => en-us_image_0000001647576704.png} | Bin ...1.png => en-us_image_0000001647576708.png} | Bin ...9.png => en-us_image_0000001647576720.png} | Bin .../images/en-us_image_0000001647576724.png | Bin 0 -> 48774 bytes ...8.png => en-us_image_0000001647576792.png} | Bin ...4.png => en-us_image_0000001647576848.png} | Bin ...6.png => en-us_image_0000001647576860.png} | Bin .../images/en-us_image_0000001647576864.png | Bin 0 -> 28731 bytes ...1.png => en-us_image_0000001647576892.png} | Bin ...8.png => en-us_image_0000001647576916.png} | Bin ...7.png => en-us_image_0000001647576960.png} | Bin ...0.png => en-us_image_0000001647577020.png} | Bin ...1.png => en-us_image_0000001647577036.png} | Bin ...2.png => en-us_image_0000001647577048.png} | Bin ...0.png => en-us_image_0000001647577072.png} | Bin ...0.png => en-us_image_0000001647577080.png} | Bin ...2.png => en-us_image_0000001647577100.png} | Bin ...6.png => en-us_image_0000001647577104.png} | Bin ...3.png => en-us_image_0000001647577116.png} | Bin ...6.png => en-us_image_0000001647577164.png} | Bin ...4.png => en-us_image_0000001647577176.png} | Bin .../images/en-us_image_0000001647577184.png | Bin 0 -> 41419 bytes ...1.png => en-us_image_0000001647577200.png} | Bin ...3.png => en-us_image_0000001654936892.png} | Bin .../images/en-us_image_0000001667910920.png | Bin 0 -> 12653 bytes .../images/en-us_image_0000001690672798.png | Bin 0 -> 12124 bytes .../images/en-us_image_0000001691644354.png | Bin 0 -> 21473 bytes ...2.png => en-us_image_0000001695736889.png} | Bin .../images/en-us_image_0000001695736909.png | Bin 0 -> 867 bytes ...2.png => en-us_image_0000001695736933.png} | Bin .../images/en-us_image_0000001695736965.png | Bin 0 -> 58817 bytes ...4.png => en-us_image_0000001695736981.png} | Bin .../images/en-us_image_0000001695736989.png | Bin 0 -> 120837 bytes ...7.png => en-us_image_0000001695736993.png} | Bin ...3.png => en-us_image_0000001695737013.png} | Bin ...7.png => en-us_image_0000001695737033.png} | Bin ...9.png => en-us_image_0000001695737041.png} | Bin ...3.png => en-us_image_0000001695737085.png} | Bin .../images/en-us_image_0000001695737101.png | Bin 0 -> 3760 bytes .../images/en-us_image_0000001695737145.jpg | Bin 0 -> 57308 bytes ...9.png => en-us_image_0000001695737165.png} | Bin ...9.png => en-us_image_0000001695737169.png} | Bin ...4.png => en-us_image_0000001695737185.png} | Bin ...9.png => en-us_image_0000001695737193.png} | Bin ...2.png => en-us_image_0000001695737201.png} | Bin ...3.png => en-us_image_0000001695737253.png} | Bin .../images/en-us_image_0000001695737257.png | Bin 0 -> 61056 bytes ...1.png => en-us_image_0000001695737281.png} | Bin ...0.png => en-us_image_0000001695737349.png} | Bin ...3.png => en-us_image_0000001695737357.png} | Bin ...3.png => en-us_image_0000001695737369.png} | Bin .../images/en-us_image_0000001695737417.png | Bin 0 -> 101668 bytes ...8.png => en-us_image_0000001695737421.png} | Bin ...9.png => en-us_image_0000001695737425.png} | Bin ...2.png => en-us_image_0000001695737489.png} | Bin ...7.png => en-us_image_0000001695737505.png} | Bin ...0.png => en-us_image_0000001695737509.png} | Bin ...4.png => en-us_image_0000001695737529.png} | Bin ...9.png => en-us_image_0000001695737589.png} | Bin ...7.png => en-us_image_0000001695737593.png} | Bin ...9.png => en-us_image_0000001695737597.png} | Bin ...7.png => en-us_image_0000001695896197.png} | Bin ...1.png => en-us_image_0000001695896201.png} | Bin ...5.png => en-us_image_0000001695896213.png} | Bin .../images/en-us_image_0000001695896249.png | Bin 0 -> 277 bytes ...3.png => en-us_image_0000001695896253.png} | Bin ...1.png => en-us_image_0000001695896365.png} | Bin ...2.png => en-us_image_0000001695896373.png} | Bin ...8.png => en-us_image_0000001695896409.png} | Bin .../images/en-us_image_0000001695896445.png | Bin 0 -> 239685 bytes ...0.png => en-us_image_0000001695896449.png} | Bin ...4.png => en-us_image_0000001695896453.png} | Bin ...1.png => en-us_image_0000001695896485.png} | Bin .../images/en-us_image_0000001695896529.png | Bin 0 -> 35044 bytes .../images/en-us_image_0000001695896533.png | Bin 0 -> 54459 bytes ...4.png => en-us_image_0000001695896569.png} | Bin ...3.png => en-us_image_0000001695896581.png} | Bin ...5.png => en-us_image_0000001695896617.png} | Bin .../images/en-us_image_0000001695896633.png | Bin 0 -> 33699 bytes ...8.png => en-us_image_0000001695896709.png} | Bin ...5.png => en-us_image_0000001695896713.png} | Bin ...3.png => en-us_image_0000001695896721.png} | Bin .../images/en-us_image_0000001695896725.png | Bin 0 -> 8145 bytes ...8.png => en-us_image_0000001695896741.png} | Bin ...5.png => en-us_image_0000001695896837.png} | Bin ...7.png => en-us_image_0000001695896849.png} | Bin ...7.png => en-us_image_0000001695896853.png} | Bin ...0.png => en-us_image_0000001695896861.png} | Bin ...1.png => en-us_image_0000001695896869.png} | Bin .../images/en-us_image_0000001701704285.png | Bin 67488 -> 0 bytes .../images/en-us_image_0000001715625689.png | Bin 0 -> 6454 bytes .../images/en-us_image_0000001715987941.png | Bin 33614 -> 0 bytes ...6.png => en-us_image_0000001716141253.png} | Bin .../images/en-us_image_0000001726718109.png | Bin 0 -> 28875 bytes umn/source/add-ons/autoscaler.rst | 60 +- ...redns_system_resource_add-on_mandatory.rst | 305 ++++--- ...erest_system_resource_add-on_mandatory.rst | 134 ++- umn/source/add-ons/gpu-beta.rst | 94 ++- umn/source/add-ons/index.rst | 8 +- umn/source/add-ons/metrics-server.rst | 38 +- umn/source/add-ons/npd.rst | 172 ++-- umn/source/add-ons/overview.rst | 96 ++- ...river_system_resource_add-on_discarded.rst | 10 +- umn/source/add-ons/volcano.rst | 404 ++++++--- umn/source/auto_scaling/overview.rst | 12 +- .../creating_a_node_scaling_policy.rst | 10 +- .../managing_node_scaling_policies.rst | 18 +- .../node_scaling_mechanisms.rst | 69 +- ..._for_workload_auto_scaling.rst => hpa.rst} | 28 +- .../auto_scaling/scaling_a_workload/index.rst | 4 +- .../managing_workload_scaling_policies.rst | 16 +- ...or_auto_scaling_of_workloads_and_nodes.rst | 34 +- ...ting_gitlab_with_swr_and_cce_for_ci_cd.rst | 2 +- ...irectories_of_an_sfs_turbo_file_system.rst | 4 +- umn/source/change_history.rst | 7 + ...application_through_the_helm_v3_client.rst | 120 --- .../basic_cluster_information.rst | 60 +- .../comparing_iptables_and_ipvs.rst | 42 - .../clusters/cluster_overview/index.rst | 12 +- .../kubernetes_release_notes/index.rst | 22 + .../kubernetes_1.17_eom_release_notes.rst} | 8 +- .../kubernetes_1.19_release_notes.rst} | 12 +- .../kubernetes_1.21_release_notes.rst} | 8 +- .../kubernetes_1.23_release_notes.rst} | 12 +- .../kubernetes_1.25_release_notes.rst | 165 ++++ .../cce_kubernetes_1.25_release_notes.rst | 38 - .../cluster_overview/release_notes/index.rst | 22 - ...elease_notes_for_cce_cluster_versions.rst} | 125 +-- ..._a_cluster_using_a_custom_domain_name.rst} | 23 +- ...o_a_cluster_using_an_x.509_certificate.rst | 41 + .../connecting_to_a_cluster_using_kubectl.rst | 26 +- .../connecting_to_a_cluster/index.rst | 18 + .../clusters/creating_a_cce_cluster.rst | 105 --- .../clusters/creating_a_cce_turbo_cluster.rst | 111 --- .../cce_turbo_clusters_and_cce_clusters.rst | 44 +- .../comparing_iptables_and_ipvs.rst | 43 + .../creating_a_cluster/creating_a_cluster.rst | 118 +++ .../clusters/creating_a_cluster/index.rst | 18 + umn/source/clusters/index.rst | 14 +- .../changing_cluster_scale.rst | 12 +- .../cluster_configuration_management.rst | 241 +++--- .../cluster_overload_control.rst | 6 +- .../managing_a_cluster/deleting_a_cluster.rst | 30 +- .../hibernating_and_waking_up_a_cluster.rst | 8 +- .../clusters/managing_a_cluster/index.rst | 6 +- .../obtaining_a_cluster_certificate.rst | 31 - .../upgrading_a_cluster/before_you_start.rst | 317 ++++++- .../clusters/upgrading_a_cluster/index.rst | 6 +- ..._across_clusters_of_different_versions.rst | 44 +- .../performing_in-place_upgrade.rst | 19 +- .../index.rst | 4 +- .../new_node_check.rst | 2 +- .../new_pod_check.rst | 4 +- .../node_and_container_network_check.rst | 72 +- .../node_label_and_taint_check.rst | 6 +- .../node_skipping_check_for_reset.rst | 2 +- .../pod_check.rst | 24 + .../service_verification.rst | 0 .../performing_replace_or_rolling_upgrade.rst | 95 --- .../post-upgrade_verification/pod_check.rst | 31 - .../add-ons.rst | 35 + ...ecking_the_blocklist.rst => blocklist.rst} | 4 +- ...st => cce-hpa-controller_restrictions.rst} | 4 +- .../checking_the_add-on.rst | 29 - .../checking_the_node.rst | 58 -- .../checking_the_node_pool.rst | 45 - ...ility_risk.rst => compatibility_risks.rst} | 112 +-- ...erd.sock_check.rst => containerd.sock.rst} | 6 +- ... => coredns_configuration_consistency.rst} | 39 +- .../{crd_check.rst => crds.rst} | 4 +- ...apis.rst => discarded_kubernetes_apis.rst} | 10 +- .../discarded_kubernetes_resource.rst | 35 - .../discarded_kubernetes_resources.rst | 28 + .../enhanced_cpu_management_policy.rst | 29 - .../enhanced_cpu_policies.rst | 29 + ...ion_check.rst => everest_restrictions.rst} | 12 +- ...ing_the_helm_chart.rst => helm_charts.rst} | 4 +- .../index.rst | 100 +-- ...internal_error.rst => internal_errors.rst} | 4 +- .../kubelet.rst | 4 +- ...e_taint.rst => kubernetes_node_taints.rst} | 20 +- ...esource_limit_of_kubernetes_components.rst | 9 +- .../node_cce_agent_versions.rst | 88 ++ .../node_cceagent_version.rst | 70 -- .../node_clock_synchronization_server.rst | 19 +- .../{node_cpu_count.rst => node_cpus.rst} | 4 +- .../{node_disk.rst => node_disks.rst} | 8 +- .../node_dns.rst | 2 +- .../node_journald.rst | 10 +- .../node_key_directory_file_permissions.rst | 12 +- ..._mount_point.rst => node_mount_points.rst} | 6 +- .../node_pools.rst | 18 + ...n_command.rst => node_python_commands.rst} | 4 +- .../node_restrictions.rst | 54 ++ .../performing_pre-upgrade_check.rst | 107 --- .../pre-upgrade_check.rst | 107 +++ ...security_group.rst => security_groups.rst} | 10 +- ...t => ssh_connectivity_of_master_nodes.rst} | 4 +- ...ated_node.rst => to-be-migrated_nodes.rst} | 8 +- .../upgrading_a_cluster/upgrade_overview.rst | 81 +- .../common_kubectl_commands.rst | 453 ---------- .../using_kubectl_to_run_a_cluster/index.rst | 18 - .../cluster_secrets.rst | 6 +- .../creating_a_configmap.rst | 10 +- .../creating_a_secret.rst | 86 +- .../using_a_configmap.rst | 106 ++- .../configmaps_and_secrets/using_a_secret.rst | 106 ++- ...onverting_a_release_from_helm_v2_to_v3.rst | 12 +- .../deploying_an_application_from_a_chart.rst | 16 +- ...application_through_the_helm_v2_client.rst | 18 +- ...application_through_the_helm_v3_client.rst | 165 ++++ ...2_and_helm_v3_and_adaptation_solutions.rst | 6 +- umn/source/{charts => helm_chart}/index.rst | 4 +- .../{charts => helm_chart}/overview.rst | 2 +- .../high-risk_operations_and_solutions.rst | 213 ++--- umn/source/index.rst | 12 +- .../custom_monitoring.rst | 202 ----- .../monitoring_overview.rst | 98 --- .../namespaces/creating_a_namespace.rst | 8 +- umn/source/namespaces/managing_namespaces.rst | 23 +- .../namespaces/setting_a_resource_quota.rst | 12 +- ...ssing_public_networks_from_a_container.rst | 33 +- ...g_a_container_cidr_block_for_a_cluster.rst | 40 + .../cluster_network_settings/index.rst | 16 + .../switching_a_node_subnet.rst | 31 + .../configuring_intra-vpc_access.rst | 0 .../cloud_native_network_2.0.rst | 14 +- .../container_tunnel_network.rst | 8 +- .../container_network_models/index.rst | 0 .../container_network_models/overview.rst | 8 +- .../container_network_models/vpc_network.rst | 16 +- .../index.rst | 14 + .../security_group_policies.rst | 14 +- ...qos_rate_limiting_for_inter-pod_access.rst | 85 ++ .../index.rst | 14 + .../network_policies.rst | 61 +- .../host_network.rst | 4 +- .../container_network_settings/index.rst | 20 + .../dns/dns_configuration.rst | 184 ++-- .../{networking => network}/dns/index.rst | 0 umn/source/network/dns/overview.rst | 94 +++ ...edns_for_custom_domain_name_resolution.rst | 226 +++++ umn/source/{networking => network}/index.rst | 16 +- ...guring_elb_ingresses_using_annotations.rst | 194 +++++ ...g_https_certificates_for_elb_ingresses.rst | 231 ++++++ ..._name_indication_sni_for_elb_ingresses.rst | 115 +++ ...creating_an_elb_ingress_on_the_console.rst | 165 ++++ ...ingresses_routing_to_multiple_services.rst | 42 + .../elb_ingresses_using_http_2.rst | 88 ++ .../network/ingresses/elb_ingresses/index.rst | 28 + ..._ingresses_with_https_backend_services.rst | 55 ++ ...using_kubectl_to_create_an_elb_ingress.rst | 784 ++++-------------- umn/source/network/ingresses/index.rst | 16 + umn/source/network/ingresses/overview.rst | 66 ++ .../{networking => network}/overview.rst | 28 +- .../service/clusterip.rst} | 10 +- .../service}/headless_service.rst | 0 umn/source/network/service/index.rst | 22 + ...guring_health_check_for_multiple_ports.rst | 10 +- .../creating_a_loadbalancer_service.rst} | 510 ++++++------ .../enabling_icmp_security_group_rules.rst | 0 ...h_networking_for_loadbalancer_services.rst | 156 ++++ .../network/service/loadbalancer/index.rst | 24 + .../loadbalancer/service_using_http.rst | 82 ++ ...nnotations_to_configure_load_balancing.rst | 601 ++++++++++++++ .../services => network/service}/nodeport.rst | 58 +- umn/source/network/service/overview.rst | 175 ++++ umn/source/networking/dns/overview.rst | 59 -- ...edns_for_custom_domain_name_resolution.rst | 257 ------ umn/source/networking/ingresses/index.rst | 18 - .../networking/ingresses/ingress_overview.rst | 43 - .../using_elb_ingresses_on_the_console.rst | 135 --- umn/source/networking/services/index.rst | 26 - .../services/service_annotations.rst | 186 ----- .../networking/services/service_overview.rst | 55 -- .../node_pools/creating_a_node_pool.rst | 180 ++-- .../configuring_a_node_pool.rst | 210 +++-- .../copying_a_node_pool.rst | 4 +- .../node_pools/managing_a_node_pool/index.rst | 8 +- .../updating_a_node_pool.rst | 66 +- umn/source/node_pools/node_pool_overview.rst | 52 +- .../nodes/adding_nodes_for_management.rst | 47 +- umn/source/nodes/container_engine.rst | 165 ++++ umn/source/nodes/creating_a_node.rst | 209 ++--- umn/source/nodes/index.rst | 24 +- umn/source/nodes/logging_in_to_a_node.rst | 28 +- .../deleting_a_node.rst | 4 +- umn/source/nodes/management_nodes/index.rst | 28 + .../managing_node_labels.rst | 6 +- .../managing_node_taints.rst | 24 +- .../performing_rolling_upgrade_for_nodes.rst | 18 +- .../removing_a_node.rst | 12 +- .../resetting_a_node.rst | 44 +- .../stopping_a_node.rst | 10 +- .../synchronizing_data_with_cloud_servers.rst | 15 +- .../data_disk_space_allocation.rst | 120 +++ umn/source/nodes/node_o_and_m/index.rst | 20 + ..._of_pods_that_can_be_created_on_a_node.rst | 69 +- ...rating_nodes_from_docker_to_containerd.rst | 57 ++ .../node_resource_reservation_policy.rst | 127 +++ ...for_using_a_node.rst => node_overview.rst} | 14 +- .../nodes/node_overview/container_engine.rst | 86 -- .../data_disk_space_allocation.rst | 97 --- ...ating_the_reserved_resources_of_a_node.rst | 129 --- umn/source/nodes/node_overview/index.rst | 24 - .../cce_operations_supported_by_cts.rst | 0 .../cts_logs}/index.rst | 4 +- .../cts_logs}/querying_cts_logs.rst | 8 +- umn/source/observability/index.rst | 18 + .../{ => observability}/logging/index.rst | 4 +- .../logging/overview.rst} | 4 +- ...sing_icagent_to_collect_container_logs.rst | 29 +- .../monitoring}/index.rst | 8 +- .../monitoring_custom_metrics_on_aom.rst | 261 ++++++ .../monitoring/monitoring_overview.rst | 210 +++++ .../cluster_permissions_iam-based.rst | 11 +- ..._permissions_for_users_in_a_department.rst | 12 +- .../index.rst | 4 +- ...pace_permissions_kubernetes_rbac-based.rst | 86 +- ...rmission_dependency_of_the_cce_console.rst | 23 +- .../permissions_overview.rst | 6 +- .../configuring_a_pod_security_policy.rst | 225 +++++ .../configuring_pod_security_admission.rst | 12 +- .../pod_security/index.rst | 0 ...ice_account_token_security_improvement.rst | 8 +- .../configuring_a_pod_security_policy.rst | 171 ---- umn/source/product_bulletin/index.rst | 4 +- .../kubernetes_version_policy.rst | 66 ++ .../kubernetes_version_support_mechanism.rst | 56 -- .../os_patch_notes_for_cluster_nodes.rst | 104 +-- .../dynamic_resource_oversubscription.rst} | 304 +++---- .../cloud_native_hybrid_deployment/index.rst | 14 + .../cpu_scheduling/cpu_policy.rst} | 45 +- .../cpu_scheduling}/index.rst | 8 +- .../default_gpu_scheduling_in_kubernetes.rst} | 18 +- .../scheduling/gpu_scheduling/index.rst | 14 + umn/source/scheduling/index.rst | 22 + umn/source/scheduling/overview.rst | 55 ++ .../volcano_scheduling/index.rst | 4 +- .../numa_affinity_scheduling.rst | 327 ++++++++ ..._deployment_mounted_with_an_evs_volume.rst | 255 ------ ..._deployment_mounted_with_an_obs_volume.rst | 73 -- ..._deployment_mounted_with_an_sfs_volume.rst | 73 -- ...statefulset_mounted_with_an_obs_volume.rst | 216 ----- ...statefulset_mounted_with_an_sfs_volume.rst | 141 ---- .../storage/deployment_examples/index.rst | 22 - ..._mounting_an_evs_disk_to_a_statefulset.rst | 306 +++++++ .../elastic_volume_service_evs/index.rst | 22 + .../elastic_volume_service_evs/overview.rst | 49 ++ .../snapshots_and_backups.rst | 40 +- ...using_an_evs_disk_through_a_dynamic_pv.rst | 346 ++++++++ ..._existing_evs_disk_through_a_static_pv.rst | 454 ++++++++++ .../importing_an_ev_to_a_storage_pool.rst | 41 + .../ephemeral_volumes_emptydir/index.rst | 20 + .../ephemeral_volumes_emptydir/overview.rst | 26 + .../using_a_local_ev.rst | 107 +++ .../using_a_temporary_path.rst | 102 +++ umn/source/storage/hostpath.rst | 111 +++ umn/source/storage/index.rst | 30 +- ...y_mounting_a_local_pv_to_a_statefulset.rst | 272 ++++++ .../importing_a_pv_to_a_storage_pool.rst | 41 + .../index.rst | 20 + .../overview.rst | 33 + .../using_a_local_pv_through_a_dynamic_pv.rst | 306 +++++++ .../configuring_obs_mount_options.rst | 171 ++++ .../object_storage_service_obs/index.rst | 22 + .../object_storage_service_obs/overview.rst | 36 + ...cess_key_ak_sk_to_mount_an_obs_volume.rst} | 63 +- ...xisting_obs_bucket_through_a_static_pv.rst | 530 ++++++++++++ ...ing_an_obs_bucket_through_a_dynamic_pv.rst | 385 +++++++++ umn/source/storage/overview.rst | 219 +---- umn/source/storage/pvcs.rst | 317 ------- umn/source/storage/pvs.rst | 428 ---------- .../configuring_sfs_volume_mount_options.rst | 180 ++++ .../scalable_file_service_sfs/index.rst | 20 + .../scalable_file_service_sfs/overview.rst | 27 + ...ng_sfs_file_system_through_a_static_pv.rst | 465 +++++++++++ ...n_sfs_file_system_through_a_dynamic_pv.rst | 332 ++++++++ umn/source/storage/setting_mount_options.rst | 178 ---- .../configuring_sfs_turbo_mount_options.rst | 116 +++ ...irectories_of_an_sfs_turbo_file_system.rst | 248 ++++++ .../storage/sfs_turbo_file_systems/index.rst | 20 + .../sfs_turbo_file_systems/overview.rst | 27 + ..._turbo_file_system_through_a_static_pv.rst | 444 ++++++++++ umn/source/storage/storage_basics.rst | 188 +++++ umn/source/storage/storageclass.rst | 243 +++--- .../using_local_disks_as_storage_volumes.rst | 349 -------- .../flexvolume_overview.rst | 58 -- ...f_v1.15_from_flexvolume_to_csi_everest.rst | 595 ------------- .../index.rst | 24 - .../index.rst | 20 - ...ctl_automatically_creating_an_evs_disk.rst | 67 -- ...ating_a_pod_mounted_with_an_evs_volume.rst | 150 ---- ...reating_a_pv_from_an_existing_evs_disk.rst | 437 ---------- .../overview.rst | 24 - .../index.rst | 22 - ...l_automatically_creating_an_obs_volume.rst | 65 -- ..._deployment_mounted_with_an_obs_volume.rst | 168 ---- ...ating_a_pv_from_an_existing_obs_bucket.rst | 225 ----- ...statefulset_mounted_with_an_obs_volume.rst | 90 -- .../overview.rst | 37 - .../index.rst | 22 - ...l_automatically_creating_an_sfs_volume.rst | 60 -- ..._deployment_mounted_with_an_sfs_volume.rst | 145 ---- ..._a_pv_from_an_existing_sfs_file_system.rst | 222 ----- ...statefulset_mounted_with_an_sfs_volume.rst | 92 -- .../overview.rst | 23 - .../index.rst | 20 - ...yment_mounted_with_an_sfs_turbo_volume.rst | 82 -- ...from_an_existing_sfs_turbo_file_system.rst | 129 --- ...ulset_mounted_with_an_sfs_turbo_volume.rst | 117 --- .../overview.rst | 23 - .../workloads/accessing_a_container.rst | 6 +- .../configuring_an_image_pull_policy.rst | 2 +- ...onfiguring_the_workload_upgrade_policy.rst | 50 +- .../configuring_a_container/index.rst | 20 +- .../labels_and_annotations.rst} | 38 +- ...heduling_policy_affinity_anti-affinity.rst | 201 +++-- .../setting_an_environment_variable.rst | 29 +- .../setting_basic_container_information.rst | 46 - ...setting_container_lifecycle_parameters.rst | 12 +- .../setting_container_specifications.rst | 45 +- .../setting_health_check_for_a_container.rst | 10 +- .../taints_and_tolerations.rst | 73 ++ ...image.rst => using_third-party_images.rst} | 18 +- ...qos_rate_limiting_for_inter-pod_access.rst | 54 -- umn/source/workloads/creating_a_cron_job.rst | 204 ----- umn/source/workloads/creating_a_daemonset.rst | 156 ---- umn/source/workloads/creating_a_job.rst | 197 ----- .../workloads/creating_a_statefulset.rst | 228 ----- .../creating_a_cron_job.rst | 254 ++++++ .../creating_a_daemonset.rst | 201 +++++ .../creating_a_deployment.rst | 102 ++- .../creating_a_workload/creating_a_job.rst | 245 ++++++ .../creating_a_statefulset.rst | 275 ++++++ .../workloads/creating_a_workload/index.rst | 22 + umn/source/workloads/index.rst | 30 +- .../kata_runtime_and_common_runtime.rst} | 76 +- .../workloads/managing_workloads_and_jobs.rst | 38 +- umn/source/workloads/overview.rst | 56 +- 516 files changed, 16331 insertions(+), 13067 deletions(-) delete mode 100644 umn/source/_static/images/en-us_image_0000001460905374.png delete mode 100644 umn/source/_static/images/en-us_image_0000001461224886.png delete mode 100644 umn/source/_static/images/en-us_image_0000001517743380.png delete mode 100644 umn/source/_static/images/en-us_image_0000001517743496.png delete mode 100644 umn/source/_static/images/en-us_image_0000001517743540.png delete mode 100644 umn/source/_static/images/en-us_image_0000001517903020.png delete mode 100644 umn/source/_static/images/en-us_image_0000001517903036.png delete mode 100644 umn/source/_static/images/en-us_image_0000001517903056.png delete mode 100644 umn/source/_static/images/en-us_image_0000001517903060.png delete mode 100644 umn/source/_static/images/en-us_image_0000001517903088.png delete mode 100644 umn/source/_static/images/en-us_image_0000001517903124.png delete mode 100644 umn/source/_static/images/en-us_image_0000001517903252.png delete mode 100644 umn/source/_static/images/en-us_image_0000001518062524.png delete mode 100644 umn/source/_static/images/en-us_image_0000001518062540.png delete mode 100644 umn/source/_static/images/en-us_image_0000001518062636.png delete mode 100644 umn/source/_static/images/en-us_image_0000001518062756.png delete mode 100644 umn/source/_static/images/en-us_image_0000001518222492.png delete mode 100644 umn/source/_static/images/en-us_image_0000001518222592.png delete mode 100644 umn/source/_static/images/en-us_image_0000001568822709.png delete mode 100644 umn/source/_static/images/en-us_image_0000001568822869.png delete mode 100644 umn/source/_static/images/en-us_image_0000001568822925.png delete mode 100644 umn/source/_static/images/en-us_image_0000001568822965.png delete mode 100644 umn/source/_static/images/en-us_image_0000001568902533.png delete mode 100644 umn/source/_static/images/en-us_image_0000001568902557.png delete mode 100644 umn/source/_static/images/en-us_image_0000001568902649.png delete mode 100644 umn/source/_static/images/en-us_image_0000001568902669.png delete mode 100644 umn/source/_static/images/en-us_image_0000001569022837.png delete mode 100644 umn/source/_static/images/en-us_image_0000001569022901.png delete mode 100644 umn/source/_static/images/en-us_image_0000001569022929.png delete mode 100644 umn/source/_static/images/en-us_image_0000001569022957.png delete mode 100644 umn/source/_static/images/en-us_image_0000001569022961.png delete mode 100644 umn/source/_static/images/en-us_image_0000001569023013.png delete mode 100644 umn/source/_static/images/en-us_image_0000001569023025.png delete mode 100644 umn/source/_static/images/en-us_image_0000001569182569.jpg delete mode 100644 umn/source/_static/images/en-us_image_0000001569182625.png delete mode 100644 umn/source/_static/images/en-us_image_0000001579008782.png delete mode 100644 umn/source/_static/images/en-us_image_0000001629186693.png rename umn/source/_static/images/{en-us_image_0000001568822637.png => en-us_image_0000001647417220.png} (100%) rename umn/source/_static/images/{en-us_image_0000001569182513.png => en-us_image_0000001647417256.png} (100%) rename umn/source/_static/images/{en-us_image_0000001517743364.png => en-us_image_0000001647417268.png} (100%) rename umn/source/_static/images/{en-us_image_0000001569182497.gif => en-us_image_0000001647417272.gif} (100%) create mode 100644 umn/source/_static/images/en-us_image_0000001647417292.png create mode 100644 umn/source/_static/images/en-us_image_0000001647417300.png create mode 100644 umn/source/_static/images/en-us_image_0000001647417328.png rename umn/source/_static/images/{en-us_image_0000001517903016.png => en-us_image_0000001647417440.png} (100%) create mode 100644 umn/source/_static/images/en-us_image_0000001647417448.png create mode 100644 umn/source/_static/images/en-us_image_0000001647417468.png rename umn/source/_static/images/{en-us_image_0000001517903028.png => en-us_image_0000001647417504.png} (100%) rename umn/source/_static/images/{en-us_image_0000001518062664.png => en-us_image_0000001647417520.png} (100%) rename umn/source/_static/images/{en-us_image_0000001517743600.png => en-us_image_0000001647417524.png} (100%) rename umn/source/_static/images/{en-us_image_0000001568822773.png => en-us_image_0000001647417536.png} (100%) rename umn/source/_static/images/{en-us_image_0000001568822825.png => en-us_image_0000001647417544.png} (100%) rename umn/source/_static/images/{en-us_image_0000001569022905.png => en-us_image_0000001647417588.png} (100%) rename umn/source/_static/images/{en-us_image_0000001517903064.png => en-us_image_0000001647417596.png} (100%) rename umn/source/_static/images/{en-us_image_0000001517903068.png => en-us_image_0000001647417600.png} (100%) rename umn/source/_static/images/{en-us_image_0000001517743544.png => en-us_image_0000001647417636.png} (100%) rename umn/source/_static/images/{en-us_image_0000001518062704.png => en-us_image_0000001647417648.png} (100%) create mode 100644 umn/source/_static/images/en-us_image_0000001647417744.png rename umn/source/_static/images/{en-us_image_0000001569182741.png => en-us_image_0000001647417772.png} (100%) rename umn/source/_static/images/{en-us_image_0000001518222716.png => en-us_image_0000001647417776.png} (100%) rename umn/source/_static/images/{en-us_image_0000001517743628.png => en-us_image_0000001647417792.png} (100%) rename umn/source/_static/images/{en-us_image_0000001568902601.png => en-us_image_0000001647417808.png} (100%) rename umn/source/_static/images/{en-us_image_0000001518062812.png => en-us_image_0000001647417812.png} (100%) rename umn/source/_static/images/{en-us_image_0000001569023045.png => en-us_image_0000001647417816.png} (100%) create mode 100644 umn/source/_static/images/en-us_image_0000001647417828.png rename umn/source/_static/images/{en-us_image_0000001568902653.png => en-us_image_0000001647417836.png} (100%) rename umn/source/_static/images/{en-us_image_0000001517743624.png => en-us_image_0000001647417852.png} (100%) rename umn/source/_static/images/{en-us_image_0000001518062796.png => en-us_image_0000001647417932.png} (100%) rename umn/source/_static/images/{en-us_image_0000001517743652.png => en-us_image_0000001647417936.png} (100%) create mode 100644 umn/source/_static/images/en-us_image_0000001647576484.png rename umn/source/_static/images/{en-us_image_0000001517902940.png => en-us_image_0000001647576500.png} (100%) create mode 100644 umn/source/_static/images/en-us_image_0000001647576552.png rename umn/source/_static/images/{en-us_image_0000001517743552.png => en-us_image_0000001647576596.png} (100%) create mode 100644 umn/source/_static/images/en-us_image_0000001647576692.png rename umn/source/_static/images/{en-us_image_0000001518062612.png => en-us_image_0000001647576696.png} (100%) rename umn/source/_static/images/{en-us_image_0000001518222536.png => en-us_image_0000001647576700.png} (100%) rename umn/source/_static/images/{en-us_image_0000001517743452.png => en-us_image_0000001647576704.png} (100%) rename umn/source/_static/images/{en-us_image_0000001568822741.png => en-us_image_0000001647576708.png} (100%) rename umn/source/_static/images/{en-us_image_0000001568902489.png => en-us_image_0000001647576720.png} (100%) create mode 100644 umn/source/_static/images/en-us_image_0000001647576724.png rename umn/source/_static/images/{en-us_image_0000001517903168.png => en-us_image_0000001647576792.png} (100%) rename umn/source/_static/images/{en-us_image_0000001518222604.png => en-us_image_0000001647576848.png} (100%) rename umn/source/_static/images/{en-us_image_0000001518222636.png => en-us_image_0000001647576860.png} (100%) create mode 100644 umn/source/_static/images/en-us_image_0000001647576864.png rename umn/source/_static/images/{en-us_image_0000001569182621.png => en-us_image_0000001647576892.png} (100%) rename umn/source/_static/images/{en-us_image_0000001517903128.png => en-us_image_0000001647576916.png} (100%) rename umn/source/_static/images/{en-us_image_0000001568902577.png => en-us_image_0000001647576960.png} (100%) rename umn/source/_static/images/{en-us_image_0000001518222700.png => en-us_image_0000001647577020.png} (100%) rename umn/source/_static/images/{en-us_image_0000001568902661.png => en-us_image_0000001647577036.png} (100%) rename umn/source/_static/images/{en-us_image_0000001518062772.png => en-us_image_0000001647577048.png} (100%) rename umn/source/_static/images/{en-us_image_0000001517743660.png => en-us_image_0000001647577072.png} (100%) rename umn/source/_static/images/{en-us_image_0000001517903240.png => en-us_image_0000001647577080.png} (100%) rename umn/source/_static/images/{en-us_image_0000001518222732.png => en-us_image_0000001647577100.png} (100%) rename umn/source/_static/images/{en-us_image_0000001517743636.png => en-us_image_0000001647577104.png} (100%) rename umn/source/_static/images/{en-us_image_0000001569182773.png => en-us_image_0000001647577116.png} (100%) rename umn/source/_static/images/{en-us_image_0000001518062816.png => en-us_image_0000001647577164.png} (100%) rename umn/source/_static/images/{en-us_image_0000001518062644.png => en-us_image_0000001647577176.png} (100%) create mode 100644 umn/source/_static/images/en-us_image_0000001647577184.png rename umn/source/_static/images/{en-us_image_0000001568822961.png => en-us_image_0000001647577200.png} (100%) rename umn/source/_static/images/{en-us_image_0000001629926113.png => en-us_image_0000001654936892.png} (100%) create mode 100644 umn/source/_static/images/en-us_image_0000001667910920.png create mode 100644 umn/source/_static/images/en-us_image_0000001690672798.png create mode 100644 umn/source/_static/images/en-us_image_0000001691644354.png rename umn/source/_static/images/{en-us_image_0000001518062492.png => en-us_image_0000001695736889.png} (100%) create mode 100644 umn/source/_static/images/en-us_image_0000001695736909.png rename umn/source/_static/images/{en-us_image_0000001517743372.png => en-us_image_0000001695736933.png} (100%) create mode 100644 umn/source/_static/images/en-us_image_0000001695736965.png rename umn/source/_static/images/{en-us_image_0000001517743384.png => en-us_image_0000001695736981.png} (100%) create mode 100644 umn/source/_static/images/en-us_image_0000001695736989.png rename umn/source/_static/images/{en-us_image_0000001569182677.png => en-us_image_0000001695736993.png} (100%) rename umn/source/_static/images/{en-us_image_0000001569182553.png => en-us_image_0000001695737013.png} (100%) rename umn/source/_static/images/{en-us_image_0000001568822717.png => en-us_image_0000001695737033.png} (100%) rename umn/source/_static/images/{en-us_image_0000001569182549.png => en-us_image_0000001695737041.png} (100%) rename umn/source/_static/images/{en-us_image_0000001568822733.png => en-us_image_0000001695737085.png} (100%) create mode 100644 umn/source/_static/images/en-us_image_0000001695737101.png create mode 100644 umn/source/_static/images/en-us_image_0000001695737145.jpg rename umn/source/_static/images/{en-us_image_0000001569182589.png => en-us_image_0000001695737165.png} (100%) rename umn/source/_static/images/{en-us_image_0000001568902509.png => en-us_image_0000001695737169.png} (100%) rename umn/source/_static/images/{en-us_image_0000001517743464.png => en-us_image_0000001695737185.png} (100%) rename umn/source/_static/images/{en-us_image_0000001569022889.png => en-us_image_0000001695737193.png} (100%) rename umn/source/_static/images/{en-us_image_0000001518062672.png => en-us_image_0000001695737201.png} (100%) rename umn/source/_static/images/{en-us_image_0000001568822793.png => en-us_image_0000001695737253.png} (100%) create mode 100644 umn/source/_static/images/en-us_image_0000001695737257.png rename umn/source/_static/images/{en-us_image_0000001568902541.png => en-us_image_0000001695737281.png} (100%) rename umn/source/_static/images/{en-us_image_0000001517743520.png => en-us_image_0000001695737349.png} (100%) rename umn/source/_static/images/{en-us_image_0000001569022933.png => en-us_image_0000001695737357.png} (100%) rename umn/source/_static/images/{en-us_image_0000001569182673.png => en-us_image_0000001695737369.png} (100%) create mode 100644 umn/source/_static/images/en-us_image_0000001695737417.png rename umn/source/_static/images/{en-us_image_0000001518222708.png => en-us_image_0000001695737421.png} (100%) rename umn/source/_static/images/{en-us_image_0000001569023029.png => en-us_image_0000001695737425.png} (100%) rename umn/source/_static/images/{en-us_image_0000001517743672.png => en-us_image_0000001695737489.png} (100%) rename umn/source/_static/images/{en-us_image_0000001569022977.png => en-us_image_0000001695737505.png} (100%) rename umn/source/_static/images/{en-us_image_0000001518222740.png => en-us_image_0000001695737509.png} (100%) rename umn/source/_static/images/{en-us_image_0000001517743644.png => en-us_image_0000001695737529.png} (100%) rename umn/source/_static/images/{en-us_image_0000001569023069.png => en-us_image_0000001695737589.png} (100%) rename umn/source/_static/images/{en-us_image_0000001568822957.png => en-us_image_0000001695737593.png} (100%) rename umn/source/_static/images/{en-us_image_0000001568902689.png => en-us_image_0000001695737597.png} (100%) rename umn/source/_static/images/{en-us_image_0000001569022797.png => en-us_image_0000001695896197.png} (100%) rename umn/source/_static/images/{en-us_image_0000001569022781.png => en-us_image_0000001695896201.png} (100%) rename umn/source/_static/images/{en-us_image_0000001569182505.png => en-us_image_0000001695896213.png} (100%) create mode 100644 umn/source/_static/images/en-us_image_0000001695896249.png rename umn/source/_static/images/{en-us_image_0000001568822693.png => en-us_image_0000001695896253.png} (100%) rename umn/source/_static/images/{en-us_image_0000001569022881.png => en-us_image_0000001695896365.png} (100%) rename umn/source/_static/images/{en-us_image_0000001517743432.png => en-us_image_0000001695896373.png} (100%) rename umn/source/_static/images/{en-us_image_0000001517903048.png => en-us_image_0000001695896409.png} (100%) create mode 100644 umn/source/_static/images/en-us_image_0000001695896445.png rename umn/source/_static/images/{en-us_image_0000001517743460.png => en-us_image_0000001695896449.png} (100%) rename umn/source/_static/images/{en-us_image_0000001518062624.png => en-us_image_0000001695896453.png} (100%) rename umn/source/_static/images/{en-us_image_0000001568902521.png => en-us_image_0000001695896485.png} (100%) create mode 100644 umn/source/_static/images/en-us_image_0000001695896529.png create mode 100644 umn/source/_static/images/en-us_image_0000001695896533.png rename umn/source/_static/images/{en-us_image_0000001518062684.png => en-us_image_0000001695896569.png} (100%) rename umn/source/_static/images/{en-us_image_0000001569022913.png => en-us_image_0000001695896581.png} (100%) rename umn/source/_static/images/{en-us_image_0000001628843805.png => en-us_image_0000001695896617.png} (100%) create mode 100644 umn/source/_static/images/en-us_image_0000001695896633.png rename umn/source/_static/images/{en-us_image_0000001518222608.png => en-us_image_0000001695896709.png} (100%) rename umn/source/_static/images/{en-us_image_0000001568822905.png => en-us_image_0000001695896713.png} (100%) rename umn/source/_static/images/{en-us_image_0000001569023033.png => en-us_image_0000001695896721.png} (100%) create mode 100644 umn/source/_static/images/en-us_image_0000001695896725.png rename umn/source/_static/images/{en-us_image_0000001518062808.png => en-us_image_0000001695896741.png} (100%) rename umn/source/_static/images/{en-us_image_0000001569023085.png => en-us_image_0000001695896837.png} (100%) rename umn/source/_static/images/{en-us_image_0000001568822917.png => en-us_image_0000001695896849.png} (100%) rename umn/source/_static/images/{en-us_image_0000001568902637.png => en-us_image_0000001695896853.png} (100%) rename umn/source/_static/images/{en-us_image_0000001517903200.png => en-us_image_0000001695896861.png} (100%) rename umn/source/_static/images/{en-us_image_0000001569182781.png => en-us_image_0000001695896869.png} (100%) delete mode 100644 umn/source/_static/images/en-us_image_0000001701704285.png create mode 100644 umn/source/_static/images/en-us_image_0000001715625689.png delete mode 100644 umn/source/_static/images/en-us_image_0000001715987941.png rename umn/source/_static/images/{en-us_image_0000001668036886.png => en-us_image_0000001716141253.png} (100%) create mode 100644 umn/source/_static/images/en-us_image_0000001726718109.png rename umn/source/auto_scaling/scaling_a_workload/{creating_an_hpa_policy_for_workload_auto_scaling.rst => hpa.rst} (91%) delete mode 100644 umn/source/charts/deploying_an_application_through_the_helm_v3_client.rst delete mode 100644 umn/source/clusters/cluster_overview/comparing_iptables_and_ipvs.rst create mode 100644 umn/source/clusters/cluster_overview/kubernetes_release_notes/index.rst rename umn/source/clusters/cluster_overview/{release_notes/cce_kubernetes_1.17_release_notes.rst => kubernetes_release_notes/kubernetes_1.17_eom_release_notes.rst} (96%) rename umn/source/clusters/cluster_overview/{release_notes/cce_kubernetes_1.19_release_notes.rst => kubernetes_release_notes/kubernetes_1.19_release_notes.rst} (96%) rename umn/source/clusters/cluster_overview/{release_notes/cce_kubernetes_1.21_release_notes.rst => kubernetes_release_notes/kubernetes_1.21_release_notes.rst} (97%) rename umn/source/clusters/cluster_overview/{release_notes/cce_kubernetes_1.23_release_notes.rst => kubernetes_release_notes/kubernetes_1.23_release_notes.rst} (93%) create mode 100644 umn/source/clusters/cluster_overview/kubernetes_release_notes/kubernetes_1.25_release_notes.rst delete mode 100644 umn/source/clusters/cluster_overview/release_notes/cce_kubernetes_1.25_release_notes.rst delete mode 100644 umn/source/clusters/cluster_overview/release_notes/index.rst rename umn/source/clusters/cluster_overview/{cluster_patch_version_release_notes.rst => release_notes_for_cce_cluster_versions.rst} (54%) rename umn/source/clusters/{using_kubectl_to_run_a_cluster/customizing_a_cluster_certificate_san.rst => connecting_to_a_cluster/accessing_a_cluster_using_a_custom_domain_name.rst} (89%) create mode 100644 umn/source/clusters/connecting_to_a_cluster/connecting_to_a_cluster_using_an_x.509_certificate.rst rename umn/source/clusters/{using_kubectl_to_run_a_cluster => connecting_to_a_cluster}/connecting_to_a_cluster_using_kubectl.rst (84%) create mode 100644 umn/source/clusters/connecting_to_a_cluster/index.rst delete mode 100644 umn/source/clusters/creating_a_cce_cluster.rst delete mode 100644 umn/source/clusters/creating_a_cce_turbo_cluster.rst rename umn/source/clusters/{cluster_overview => creating_a_cluster}/cce_turbo_clusters_and_cce_clusters.rst (72%) create mode 100644 umn/source/clusters/creating_a_cluster/comparing_iptables_and_ipvs.rst create mode 100644 umn/source/clusters/creating_a_cluster/creating_a_cluster.rst create mode 100644 umn/source/clusters/creating_a_cluster/index.rst rename umn/source/clusters/{ => managing_a_cluster}/changing_cluster_scale.rst (86%) delete mode 100644 umn/source/clusters/obtaining_a_cluster_certificate.rst rename umn/source/clusters/upgrading_a_cluster/{post-upgrade_verification => performing_post-upgrade_verification}/index.rst (88%) rename umn/source/clusters/upgrading_a_cluster/{post-upgrade_verification => performing_post-upgrade_verification}/new_node_check.rst (59%) rename umn/source/clusters/upgrading_a_cluster/{post-upgrade_verification => performing_post-upgrade_verification}/new_pod_check.rst (92%) rename umn/source/clusters/upgrading_a_cluster/{post-upgrade_verification => performing_post-upgrade_verification}/node_and_container_network_check.rst (82%) rename umn/source/clusters/upgrading_a_cluster/{post-upgrade_verification => performing_post-upgrade_verification}/node_label_and_taint_check.rst (69%) rename umn/source/clusters/upgrading_a_cluster/{post-upgrade_verification => performing_post-upgrade_verification}/node_skipping_check_for_reset.rst (89%) create mode 100644 umn/source/clusters/upgrading_a_cluster/performing_post-upgrade_verification/pod_check.rst rename umn/source/clusters/upgrading_a_cluster/{post-upgrade_verification => performing_post-upgrade_verification}/service_verification.rst (100%) delete mode 100644 umn/source/clusters/upgrading_a_cluster/performing_replace_or_rolling_upgrade.rst delete mode 100644 umn/source/clusters/upgrading_a_cluster/post-upgrade_verification/pod_check.rst create mode 100644 umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/add-ons.rst rename umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/{checking_the_blocklist.rst => blocklist.rst} (91%) rename umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/{cce-hpa-controller_restriction_check.rst => cce-hpa-controller_restrictions.rst} (82%) delete mode 100644 umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_the_add-on.rst delete mode 100644 umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_the_node.rst delete mode 100644 umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_the_node_pool.rst rename umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/{compatibility_risk.rst => compatibility_risks.rst} (65%) rename umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/{containerd.sock_check.rst => containerd.sock.rst} (87%) rename umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/{checking_coredns_configuration_consistency.rst => coredns_configuration_consistency.rst} (53%) rename umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/{crd_check.rst => crds.rst} (94%) rename umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/{checking_deprecated_kubernetes_apis.rst => discarded_kubernetes_apis.rst} (64%) delete mode 100644 umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/discarded_kubernetes_resource.rst create mode 100644 umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/discarded_kubernetes_resources.rst delete mode 100644 umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/enhanced_cpu_management_policy.rst create mode 100644 umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/enhanced_cpu_policies.rst rename umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/{everest_restriction_check.rst => everest_restrictions.rst} (58%) rename umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/{checking_the_helm_chart.rst => helm_charts.rst} (91%) rename umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/{internal_error.rst => internal_errors.rst} (86%) rename umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/{kubernetes_node_taint.rst => kubernetes_node_taints.rst} (69%) create mode 100644 umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_cce_agent_versions.rst delete mode 100644 umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_cceagent_version.rst rename umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/{node_cpu_count.rst => node_cpus.rst} (90%) rename umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/{node_disk.rst => node_disks.rst} (84%) rename umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/{node_mount_point.rst => node_mount_points.rst} (79%) create mode 100644 umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_pools.rst rename umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/{node_python_command.rst => node_python_commands.rst} (88%) create mode 100644 umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_restrictions.rst delete mode 100644 umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/performing_pre-upgrade_check.rst create mode 100644 umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/pre-upgrade_check.rst rename umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/{checking_the_security_group.rst => security_groups.rst} (62%) rename umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/{checking_the_master_node_ssh_connectivity.rst => ssh_connectivity_of_master_nodes.rst} (67%) rename umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/{to-be-migrated_node.rst => to-be-migrated_nodes.rst} (53%) delete mode 100644 umn/source/clusters/using_kubectl_to_run_a_cluster/common_kubectl_commands.rst delete mode 100644 umn/source/clusters/using_kubectl_to_run_a_cluster/index.rst rename umn/source/{charts => helm_chart}/converting_a_release_from_helm_v2_to_v3.rst (96%) rename umn/source/{charts => helm_chart}/deploying_an_application_from_a_chart.rst (95%) rename umn/source/{charts => helm_chart}/deploying_an_application_through_the_helm_v2_client.rst (87%) create mode 100644 umn/source/helm_chart/deploying_an_application_through_the_helm_v3_client.rst rename umn/source/{charts => helm_chart}/differences_between_helm_v2_and_helm_v3_and_adaptation_solutions.rst (90%) rename umn/source/{charts => helm_chart}/index.rst (97%) rename umn/source/{charts => helm_chart}/overview.rst (96%) delete mode 100644 umn/source/monitoring_and_alarm/custom_monitoring.rst delete mode 100644 umn/source/monitoring_and_alarm/monitoring_overview.rst rename umn/source/{networking => network}/accessing_public_networks_from_a_container.rst (66%) create mode 100644 umn/source/network/cluster_network_settings/adding_a_container_cidr_block_for_a_cluster.rst create mode 100644 umn/source/network/cluster_network_settings/index.rst create mode 100644 umn/source/network/cluster_network_settings/switching_a_node_subnet.rst rename umn/source/{networking => network}/configuring_intra-vpc_access.rst (100%) rename umn/source/{networking => network}/container_network_models/cloud_native_network_2.0.rst (90%) rename umn/source/{networking => network}/container_network_models/container_tunnel_network.rst (94%) rename umn/source/{networking => network}/container_network_models/index.rst (100%) rename umn/source/{networking => network}/container_network_models/overview.rst (96%) rename umn/source/{networking => network}/container_network_models/vpc_network.rst (88%) create mode 100644 umn/source/network/container_network_settings/cloud_native_network_2.0_settings/index.rst rename umn/source/{workloads => network/container_network_settings/cloud_native_network_2.0_settings}/security_group_policies.rst (93%) create mode 100644 umn/source/network/container_network_settings/configuring_qos_rate_limiting_for_inter-pod_access.rst create mode 100644 umn/source/network/container_network_settings/container_tunnel_network_settings/index.rst rename umn/source/{networking => network/container_network_settings/container_tunnel_network_settings}/network_policies.rst (84%) rename umn/source/{networking => network/container_network_settings}/host_network.rst (93%) create mode 100644 umn/source/network/container_network_settings/index.rst rename umn/source/{networking => network}/dns/dns_configuration.rst (64%) rename umn/source/{networking => network}/dns/index.rst (100%) create mode 100644 umn/source/network/dns/overview.rst create mode 100644 umn/source/network/dns/using_coredns_for_custom_domain_name_resolution.rst rename umn/source/{networking => network}/index.rst (68%) create mode 100644 umn/source/network/ingresses/elb_ingresses/configuring_elb_ingresses_using_annotations.rst create mode 100644 umn/source/network/ingresses/elb_ingresses/configuring_https_certificates_for_elb_ingresses.rst create mode 100644 umn/source/network/ingresses/elb_ingresses/configuring_the_server_name_indication_sni_for_elb_ingresses.rst create mode 100644 umn/source/network/ingresses/elb_ingresses/creating_an_elb_ingress_on_the_console.rst create mode 100644 umn/source/network/ingresses/elb_ingresses/elb_ingresses_routing_to_multiple_services.rst create mode 100644 umn/source/network/ingresses/elb_ingresses/elb_ingresses_using_http_2.rst create mode 100644 umn/source/network/ingresses/elb_ingresses/index.rst create mode 100644 umn/source/network/ingresses/elb_ingresses/interconnecting_elb_ingresses_with_https_backend_services.rst rename umn/source/{networking/ingresses => network/ingresses/elb_ingresses}/using_kubectl_to_create_an_elb_ingress.rst (58%) create mode 100644 umn/source/network/ingresses/index.rst create mode 100644 umn/source/network/ingresses/overview.rst rename umn/source/{networking => network}/overview.rst (65%) rename umn/source/{networking/services/intra-cluster_access_clusterip.rst => network/service/clusterip.rst} (96%) rename umn/source/{networking/services => network/service}/headless_service.rst (100%) create mode 100644 umn/source/network/service/index.rst rename umn/source/{networking/services => network/service/loadbalancer}/configuring_health_check_for_multiple_ports.rst (93%) rename umn/source/{networking/services/loadbalancer.rst => network/service/loadbalancer/creating_a_loadbalancer_service.rst} (77%) rename umn/source/{workloads/configuring_a_container => network/service/loadbalancer}/enabling_icmp_security_group_rules.rst (100%) create mode 100644 umn/source/network/service/loadbalancer/enabling_passthrough_networking_for_loadbalancer_services.rst create mode 100644 umn/source/network/service/loadbalancer/index.rst create mode 100644 umn/source/network/service/loadbalancer/service_using_http.rst create mode 100644 umn/source/network/service/loadbalancer/using_annotations_to_configure_load_balancing.rst rename umn/source/{networking/services => network/service}/nodeport.rst (72%) create mode 100644 umn/source/network/service/overview.rst delete mode 100644 umn/source/networking/dns/overview.rst delete mode 100644 umn/source/networking/dns/using_coredns_for_custom_domain_name_resolution.rst delete mode 100644 umn/source/networking/ingresses/index.rst delete mode 100644 umn/source/networking/ingresses/ingress_overview.rst delete mode 100644 umn/source/networking/ingresses/using_elb_ingresses_on_the_console.rst delete mode 100644 umn/source/networking/services/index.rst delete mode 100644 umn/source/networking/services/service_annotations.rst delete mode 100644 umn/source/networking/services/service_overview.rst create mode 100644 umn/source/nodes/container_engine.rst rename umn/source/nodes/{ => management_nodes}/deleting_a_node.rst (96%) create mode 100644 umn/source/nodes/management_nodes/index.rst rename umn/source/nodes/{ => management_nodes}/managing_node_labels.rst (96%) rename umn/source/nodes/{ => management_nodes}/managing_node_taints.rst (72%) rename umn/source/nodes/{ => management_nodes}/performing_rolling_upgrade_for_nodes.rst (85%) rename umn/source/nodes/{ => management_nodes}/removing_a_node.rst (92%) rename umn/source/nodes/{ => management_nodes}/resetting_a_node.rst (87%) rename umn/source/nodes/{ => management_nodes}/stopping_a_node.rst (82%) rename umn/source/nodes/{ => management_nodes}/synchronizing_data_with_cloud_servers.rst (55%) create mode 100644 umn/source/nodes/node_o_and_m/data_disk_space_allocation.rst create mode 100644 umn/source/nodes/node_o_and_m/index.rst rename umn/source/nodes/{node_overview => node_o_and_m}/maximum_number_of_pods_that_can_be_created_on_a_node.rst (55%) create mode 100644 umn/source/nodes/node_o_and_m/migrating_nodes_from_docker_to_containerd.rst create mode 100644 umn/source/nodes/node_o_and_m/node_resource_reservation_policy.rst rename umn/source/nodes/{node_overview/precautions_for_using_a_node.rst => node_overview.rst} (95%) delete mode 100644 umn/source/nodes/node_overview/container_engine.rst delete mode 100644 umn/source/nodes/node_overview/data_disk_space_allocation.rst delete mode 100644 umn/source/nodes/node_overview/formula_for_calculating_the_reserved_resources_of_a_node.rst delete mode 100644 umn/source/nodes/node_overview/index.rst rename umn/source/{cloud_trace_service_cts => observability/cts_logs}/cce_operations_supported_by_cts.rst (100%) rename umn/source/{cloud_trace_service_cts => observability/cts_logs}/index.rst (82%) rename umn/source/{cloud_trace_service_cts => observability/cts_logs}/querying_cts_logs.rst (88%) create mode 100644 umn/source/observability/index.rst rename umn/source/{ => observability}/logging/index.rst (74%) rename umn/source/{logging/log_management_overview.rst => observability/logging/overview.rst} (95%) rename umn/source/{ => observability}/logging/using_icagent_to_collect_container_logs.rst (88%) rename umn/source/{monitoring_and_alarm => observability/monitoring}/index.rst (58%) create mode 100644 umn/source/observability/monitoring/monitoring_custom_metrics_on_aom.rst create mode 100644 umn/source/observability/monitoring/monitoring_overview.rst rename umn/source/{permissions_management => permissions}/cluster_permissions_iam-based.rst (90%) rename umn/source/{permissions_management => permissions}/example_designing_and_configuring_permissions_for_users_in_a_department.rst (85%) rename umn/source/{permissions_management => permissions}/index.rst (94%) rename umn/source/{permissions_management => permissions}/namespace_permissions_kubernetes_rbac-based.rst (75%) rename umn/source/{permissions_management => permissions}/permission_dependency_of_the_cce_console.rst (93%) rename umn/source/{permissions_management => permissions}/permissions_overview.rst (93%) create mode 100644 umn/source/permissions/pod_security/configuring_a_pod_security_policy.rst rename umn/source/{permissions_management => permissions}/pod_security/configuring_pod_security_admission.rst (91%) rename umn/source/{permissions_management => permissions}/pod_security/index.rst (100%) rename umn/source/{permissions_management => permissions}/service_account_token_security_improvement.rst (89%) delete mode 100644 umn/source/permissions_management/pod_security/configuring_a_pod_security_policy.rst create mode 100644 umn/source/product_bulletin/kubernetes_version_policy.rst delete mode 100644 umn/source/product_bulletin/kubernetes_version_support_mechanism.rst rename umn/source/{workloads/volcano_scheduling/hybrid_deployment_of_online_and_offline_jobs.rst => scheduling/cloud_native_hybrid_deployment/dynamic_resource_oversubscription.rst} (61%) create mode 100644 umn/source/scheduling/cloud_native_hybrid_deployment/index.rst rename umn/source/{workloads/cpu_core_binding/binding_cpu_cores.rst => scheduling/cpu_scheduling/cpu_policy.rst} (63%) rename umn/source/{workloads/cpu_core_binding => scheduling/cpu_scheduling}/index.rst (50%) rename umn/source/{workloads/gpu_scheduling.rst => scheduling/gpu_scheduling/default_gpu_scheduling_in_kubernetes.rst} (87%) create mode 100644 umn/source/scheduling/gpu_scheduling/index.rst create mode 100644 umn/source/scheduling/index.rst create mode 100644 umn/source/scheduling/overview.rst rename umn/source/{workloads => scheduling}/volcano_scheduling/index.rst (53%) create mode 100644 umn/source/scheduling/volcano_scheduling/numa_affinity_scheduling.rst delete mode 100644 umn/source/storage/deployment_examples/creating_a_deployment_mounted_with_an_evs_volume.rst delete mode 100644 umn/source/storage/deployment_examples/creating_a_deployment_mounted_with_an_obs_volume.rst delete mode 100644 umn/source/storage/deployment_examples/creating_a_deployment_mounted_with_an_sfs_volume.rst delete mode 100644 umn/source/storage/deployment_examples/creating_a_statefulset_mounted_with_an_obs_volume.rst delete mode 100644 umn/source/storage/deployment_examples/creating_a_statefulset_mounted_with_an_sfs_volume.rst delete mode 100644 umn/source/storage/deployment_examples/index.rst create mode 100644 umn/source/storage/elastic_volume_service_evs/dynamically_mounting_an_evs_disk_to_a_statefulset.rst create mode 100644 umn/source/storage/elastic_volume_service_evs/index.rst create mode 100644 umn/source/storage/elastic_volume_service_evs/overview.rst rename umn/source/storage/{ => elastic_volume_service_evs}/snapshots_and_backups.rst (74%) create mode 100644 umn/source/storage/elastic_volume_service_evs/using_an_evs_disk_through_a_dynamic_pv.rst create mode 100644 umn/source/storage/elastic_volume_service_evs/using_an_existing_evs_disk_through_a_static_pv.rst create mode 100644 umn/source/storage/ephemeral_volumes_emptydir/importing_an_ev_to_a_storage_pool.rst create mode 100644 umn/source/storage/ephemeral_volumes_emptydir/index.rst create mode 100644 umn/source/storage/ephemeral_volumes_emptydir/overview.rst create mode 100644 umn/source/storage/ephemeral_volumes_emptydir/using_a_local_ev.rst create mode 100644 umn/source/storage/ephemeral_volumes_emptydir/using_a_temporary_path.rst create mode 100644 umn/source/storage/hostpath.rst create mode 100644 umn/source/storage/local_persistent_volumes_local_pvs/dynamically_mounting_a_local_pv_to_a_statefulset.rst create mode 100644 umn/source/storage/local_persistent_volumes_local_pvs/importing_a_pv_to_a_storage_pool.rst create mode 100644 umn/source/storage/local_persistent_volumes_local_pvs/index.rst create mode 100644 umn/source/storage/local_persistent_volumes_local_pvs/overview.rst create mode 100644 umn/source/storage/local_persistent_volumes_local_pvs/using_a_local_pv_through_a_dynamic_pv.rst create mode 100644 umn/source/storage/object_storage_service_obs/configuring_obs_mount_options.rst create mode 100644 umn/source/storage/object_storage_service_obs/index.rst create mode 100644 umn/source/storage/object_storage_service_obs/overview.rst rename umn/source/storage/{using_a_custom_ak_sk_to_mount_an_obs_volume.rst => object_storage_service_obs/using_a_custom_access_key_ak_sk_to_mount_an_obs_volume.rst} (88%) create mode 100644 umn/source/storage/object_storage_service_obs/using_an_existing_obs_bucket_through_a_static_pv.rst create mode 100644 umn/source/storage/object_storage_service_obs/using_an_obs_bucket_through_a_dynamic_pv.rst delete mode 100644 umn/source/storage/pvcs.rst delete mode 100644 umn/source/storage/pvs.rst create mode 100644 umn/source/storage/scalable_file_service_sfs/configuring_sfs_volume_mount_options.rst create mode 100644 umn/source/storage/scalable_file_service_sfs/index.rst create mode 100644 umn/source/storage/scalable_file_service_sfs/overview.rst create mode 100644 umn/source/storage/scalable_file_service_sfs/using_an_existing_sfs_file_system_through_a_static_pv.rst create mode 100644 umn/source/storage/scalable_file_service_sfs/using_an_sfs_file_system_through_a_dynamic_pv.rst delete mode 100644 umn/source/storage/setting_mount_options.rst create mode 100644 umn/source/storage/sfs_turbo_file_systems/configuring_sfs_turbo_mount_options.rst create mode 100644 umn/source/storage/sfs_turbo_file_systems/dynamically_creating_and_mounting_subdirectories_of_an_sfs_turbo_file_system.rst create mode 100644 umn/source/storage/sfs_turbo_file_systems/index.rst create mode 100644 umn/source/storage/sfs_turbo_file_systems/overview.rst create mode 100644 umn/source/storage/sfs_turbo_file_systems/using_an_existing_sfs_turbo_file_system_through_a_static_pv.rst create mode 100644 umn/source/storage/storage_basics.rst delete mode 100644 umn/source/storage/using_local_disks_as_storage_volumes.rst delete mode 100644 umn/source/storage_management_flexvolume_deprecated/flexvolume_overview.rst delete mode 100644 umn/source/storage_management_flexvolume_deprecated/how_do_i_change_the_storage_class_used_by_a_cluster_of_v1.15_from_flexvolume_to_csi_everest.rst delete mode 100644 umn/source/storage_management_flexvolume_deprecated/index.rst delete mode 100644 umn/source/storage_management_flexvolume_deprecated/using_evs_disks_as_storage_volumes/index.rst delete mode 100644 umn/source/storage_management_flexvolume_deprecated/using_evs_disks_as_storage_volumes/kubectl_automatically_creating_an_evs_disk.rst delete mode 100644 umn/source/storage_management_flexvolume_deprecated/using_evs_disks_as_storage_volumes/kubectl_creating_a_pod_mounted_with_an_evs_volume.rst delete mode 100644 umn/source/storage_management_flexvolume_deprecated/using_evs_disks_as_storage_volumes/kubectl_creating_a_pv_from_an_existing_evs_disk.rst delete mode 100644 umn/source/storage_management_flexvolume_deprecated/using_evs_disks_as_storage_volumes/overview.rst delete mode 100644 umn/source/storage_management_flexvolume_deprecated/using_obs_buckets_as_storage_volumes/index.rst delete mode 100644 umn/source/storage_management_flexvolume_deprecated/using_obs_buckets_as_storage_volumes/kubectl_automatically_creating_an_obs_volume.rst delete mode 100644 umn/source/storage_management_flexvolume_deprecated/using_obs_buckets_as_storage_volumes/kubectl_creating_a_deployment_mounted_with_an_obs_volume.rst delete mode 100644 umn/source/storage_management_flexvolume_deprecated/using_obs_buckets_as_storage_volumes/kubectl_creating_a_pv_from_an_existing_obs_bucket.rst delete mode 100644 umn/source/storage_management_flexvolume_deprecated/using_obs_buckets_as_storage_volumes/kubectl_creating_a_statefulset_mounted_with_an_obs_volume.rst delete mode 100644 umn/source/storage_management_flexvolume_deprecated/using_obs_buckets_as_storage_volumes/overview.rst delete mode 100644 umn/source/storage_management_flexvolume_deprecated/using_sfs_file_systems_as_storage_volumes/index.rst delete mode 100644 umn/source/storage_management_flexvolume_deprecated/using_sfs_file_systems_as_storage_volumes/kubectl_automatically_creating_an_sfs_volume.rst delete mode 100644 umn/source/storage_management_flexvolume_deprecated/using_sfs_file_systems_as_storage_volumes/kubectl_creating_a_deployment_mounted_with_an_sfs_volume.rst delete mode 100644 umn/source/storage_management_flexvolume_deprecated/using_sfs_file_systems_as_storage_volumes/kubectl_creating_a_pv_from_an_existing_sfs_file_system.rst delete mode 100644 umn/source/storage_management_flexvolume_deprecated/using_sfs_file_systems_as_storage_volumes/kubectl_creating_a_statefulset_mounted_with_an_sfs_volume.rst delete mode 100644 umn/source/storage_management_flexvolume_deprecated/using_sfs_file_systems_as_storage_volumes/overview.rst delete mode 100644 umn/source/storage_management_flexvolume_deprecated/using_sfs_turbo_file_systems_as_storage_volumes/index.rst delete mode 100644 umn/source/storage_management_flexvolume_deprecated/using_sfs_turbo_file_systems_as_storage_volumes/kubectl_creating_a_deployment_mounted_with_an_sfs_turbo_volume.rst delete mode 100644 umn/source/storage_management_flexvolume_deprecated/using_sfs_turbo_file_systems_as_storage_volumes/kubectl_creating_a_pv_from_an_existing_sfs_turbo_file_system.rst delete mode 100644 umn/source/storage_management_flexvolume_deprecated/using_sfs_turbo_file_systems_as_storage_volumes/kubectl_creating_a_statefulset_mounted_with_an_sfs_turbo_volume.rst delete mode 100644 umn/source/storage_management_flexvolume_deprecated/using_sfs_turbo_file_systems_as_storage_volumes/overview.rst rename umn/source/workloads/{pod_labels_and_annotations.rst => configuring_a_container/labels_and_annotations.rst} (76%) delete mode 100644 umn/source/workloads/configuring_a_container/setting_basic_container_information.rst create mode 100644 umn/source/workloads/configuring_a_container/taints_and_tolerations.rst rename umn/source/workloads/configuring_a_container/{using_a_third-party_image.rst => using_third-party_images.rst} (56%) delete mode 100644 umn/source/workloads/configuring_qos_rate_limiting_for_inter-pod_access.rst delete mode 100644 umn/source/workloads/creating_a_cron_job.rst delete mode 100644 umn/source/workloads/creating_a_daemonset.rst delete mode 100644 umn/source/workloads/creating_a_job.rst delete mode 100644 umn/source/workloads/creating_a_statefulset.rst create mode 100644 umn/source/workloads/creating_a_workload/creating_a_cron_job.rst create mode 100644 umn/source/workloads/creating_a_workload/creating_a_daemonset.rst rename umn/source/workloads/{ => creating_a_workload}/creating_a_deployment.rst (50%) create mode 100644 umn/source/workloads/creating_a_workload/creating_a_job.rst create mode 100644 umn/source/workloads/creating_a_workload/creating_a_statefulset.rst create mode 100644 umn/source/workloads/creating_a_workload/index.rst rename umn/source/{nodes/node_overview/kata_containers_and_common_containers.rst => workloads/kata_runtime_and_common_runtime.rst} (79%) diff --git a/umn/source/_static/images/en-us_image_0000001460905374.png b/umn/source/_static/images/en-us_image_0000001460905374.png deleted file mode 100644 index 50d2b8fd7e121d2b1b3b4b941c3390897f0cacfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5102 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 OWKX~b8Ynfpi2niskL$hw diff --git a/umn/source/_static/images/en-us_image_0000001461224886.png b/umn/source/_static/images/en-us_image_0000001461224886.png deleted file mode 100644 index fd35a0fd009a0cc5f1b435ed03b4fa3f62d649ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16828 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 diff --git a/umn/source/_static/images/en-us_image_0000001517743380.png b/umn/source/_static/images/en-us_image_0000001517743380.png deleted file mode 100644 index d98fcd6d63cae70ce0f752ea174b0f982f2f7948..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43272 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%0AG`8C47mL%nROjTy2wHl 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 diff --git a/umn/source/_static/images/en-us_image_0000001517743496.png b/umn/source/_static/images/en-us_image_0000001517743496.png deleted file mode 100644 index 8d6c69b385c12c3e349b25f6014d4fd47305f698..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28679 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 FKLFf234j0q diff --git a/umn/source/_static/images/en-us_image_0000001517903020.png b/umn/source/_static/images/en-us_image_0000001517903020.png deleted file mode 100644 index 68876838512b65899f40850dcc7d513a0c18533e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146144 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℘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 QVhZr5rmU@$t7sMee_&q&Q2+n{ diff --git a/umn/source/_static/images/en-us_image_0000001517903036.png b/umn/source/_static/images/en-us_image_0000001517903036.png deleted file mode 100644 index 0bb483b216716a8327c51c48ace9c9b9802a03af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44434 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%0A(OYRJJ}x#%sOc)}5Hu5ZFEKH_ga@VmD$i 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 O8DBCpsQ8ETpZ@_G^;E3@ diff --git a/umn/source/_static/images/en-us_image_0000001517903056.png b/umn/source/_static/images/en-us_image_0000001517903056.png deleted file mode 100644 index c301af90a2dfa3467542b2f21ff272ee377158e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 272959 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 hLt)P4Bx97oeXZfdGdhvaA9mgM<)%Yx1IFATMJ0 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

ZXY@A{-x;e(zX^M_ZW$lliC9K{bMX(g(w00V# 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 diff --git a/umn/source/_static/images/en-us_image_0000001517903060.png b/umn/source/_static/images/en-us_image_0000001517903060.png deleted file mode 100644 index 9421b221c9416b1ca741cf7c69e31ba7b0c3b8ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10552 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 diff --git a/umn/source/_static/images/en-us_image_0000001517903088.png b/umn/source/_static/images/en-us_image_0000001517903088.png deleted file mode 100644 index 22526142cc70570a2347409364db5912605f8058..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7276 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 migzW;M0|mUTz>qzaIfKE)jq=Yt-uW-=lu{M| diff --git a/umn/source/_static/images/en-us_image_0000001517903124.png b/umn/source/_static/images/en-us_image_0000001517903124.png deleted file mode 100644 index 87446d84ff1a16d68a08d786ef9ad5f85f8e26d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43744 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 Vo73}h415zrO-b`nxq`*({{aMEaistN diff --git a/umn/source/_static/images/en-us_image_0000001517903252.png b/umn/source/_static/images/en-us_image_0000001517903252.png deleted file mode 100644 index 2da6ba356628375a802ddc8f1b138cc21d7f9f22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161039 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%0A_14DNeh?cX;Vu4J`h--p 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

Bvfce13lAddXMs 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

Z?RzEe19O$&8Ci4Yi-6}sySk8p2xvtee- z0Ap&_4{3{>sTJl;roPp6a|w88M7`CY)6R>536>t6KHMWcJt@Kxyu!1xwPn6 zTwDxsbr^yhR%x#4Tqr`fC$o$JeSgj@0XDiCC$^m9iz+h@l!i$+-)Jy_qt3rcaph>& zcMeTlE1k~PffXKOdwhGGv0AdGo1P{D+s#iewYD=EkaLAZVi)Gjao#cIbKAeT(9oJbFLTl9wsJJ%=WI9Fl^x#csagjB$|TpB;Pcba-Ajf1l0fieR5F z6g^c_+Lm3|WAR$rv6LL zxX}@v>_M1vTY5v+?2|2~CBK5aw}Qhrp&{_@+%$2o(D(D^eV1v{B)kiO(cWLJnQVs# zmW|}wun9IP_IMmⅈ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 ZOqNRRd%E$GJdADNb=JhfxY!UD{y#>&l&1gy diff --git a/umn/source/_static/images/en-us_image_0000001518062756.png b/umn/source/_static/images/en-us_image_0000001518062756.png deleted file mode 100644 index 5bfbc6cac674f4264f946e45980cf233960c7acb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7289 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 diff --git a/umn/source/_static/images/en-us_image_0000001518222492.png b/umn/source/_static/images/en-us_image_0000001518222492.png deleted file mode 100644 index d09e52ed2eb90adc8c7ad998884dbc8e0bebd5c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 116160 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

G@TR+6Ehjk)BRNcd1hQHQrl-$6YYHj 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 Ten+4SA5B*Jxm2md3*Y|*Gr}Lv diff --git a/umn/source/_static/images/en-us_image_0000001568822869.png b/umn/source/_static/images/en-us_image_0000001568822869.png deleted file mode 100644 index 0d3c91eb73fc3637eeb7308a47b3bc4d2c591875..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19621 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

    1l+`j^+m2pJc5rw9hiJ-pHPSqdw|0QXfX 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%0A+J$CQc(%7T^&Y3f&)j}!VK&b1 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

    ~VNZ_w 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¼xo$0qJK*KX|Vu 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%0DRly1|k2J)FXoZ1s#Cx`)({Mh{4{U>Wto}bF8lrB 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

    #HuESOxR6%kH6fpSl zRb7(d$Z!m|gRt8y$$Y9RS)@8GsCkphMpubrAh5Lg1u4uwU1fJf7nm%Jcxw}dd#kP zWWDSDU}4u^s1H+H!$a}kK83cx`m~4VTZWf7GMeP#+;yOHutCClyMVS&jXo^Jx=&Ef zZ(@33_P2hgmadJ%>}pw%RJ}XHk9s#74k3+-42Wg&Mx)$Po?T(l4+&JrUHb?nz_W-j zd^cA&&a>4y?P5!f3*a;OyI*)`(XwZCe=yIu8+DX*l&Qg3{^qON{(Piet)xqo)Hu{G zE1!)tV0F!*X6&+Ddy$L9FsLKY?tf>Yd?^MjnGenCl1;I~-SKh#>XI$7aI801a1kTt zU2X0b%a{cCugeArkCFwRb^DSluS_s$Jz$Tn#fAOgm-B-_DqXvNtlG%UuFBbGHVG~~ zISisIx5Q&_q6YB=)YzG;dS|z&*)dN$zUsH@aN7scoh!5fj2~@i!k%p|XoT4`zr8OM zq~?}nM2Rs9X54jgN^pj<;(C-l1hGCT;5}j5XVxVGj(}s; zxgbA=`i|0f3iuGogAef0wX=|<4#9xpfrnNXShx)+!JEh^YEXn4P6DyK@^=d0XauXM zQ7wWWt(Z<01T39HMj-0vA)7&M6@&@yUthPTcNnZe;jThLDfv=nmf*hl#c)bg5Zq7m z#SLDWXw#+y1VPFzq`KAU#iDMQ%?D~YIf$JrFJtHWRT7Vz(NcRjC$Sr3RDtvItT~Gr z#AEAo0HBq#t{GBbo|~fyb$yu@6SrQYg~60$(_`^WIqIai;tf{rOn;1~KPH!{jqtkw zh?;{av*(P!K+LgEamQpvA{1>Q16&nC0VS?{ZEr!;NY|~lh_O)(*gqZ_cYk%|_UHIB zd%WPQya?Cn#&0anw>9sIxT}a11YMOKNaPMJw}3S_-I=he{>p5Gpt*G^)G2nN$4O1# zXHwfs88=tC6HP`hVxra}Y^Id89NGlvw^ka}Jkqn^mc)59Gg=hMB-l%7&&JZth$o&L&>j|99hd$Q-#W71G} zh4;FhnPYJAz+euvViT5CL-vkm!;p7joZ3j-7h`0hf#=zXEMx($hE!S`2REGWABks@ ztJbE@mko!zPvc9OD^K{^(nhquh{v9*d?;zn`Lxr3(?HU^DCAA%z1bs!DQ2S`UCUyl z0-c<+#jPlu1%c=B;;-wnZ;ypFB|lep7aNUbZ^}xnpM4xuh3!EdTMf>5m%w}*FeNpZixAcoY={@LWACtLeqR6_@;(ChWRIVL38mAaouOF zSu!pcBp%2S6^~gNr+*whjw`R2+@7Z+bbY=d)e2@f6DyS0S1%_Wuc){bBh{4n{&43f z{4P_^dQnw`+lTsg^Nldv^CFkO=tvo>S_;OBpAU)6X8ETkSP69sX&4 zq^lV6*NT@!^K>Wt&=*Rw#$cln-DDq^KahN&_*RXryRZWa$ym_Dowxft;m-M5qPK0b zb9{-XqV^Z=5F741n}`j0c>Ie6OJU>9D%xKBr(E|w8pvu%9(VWkSi0uqV7D~%s85%n z3m+4N{hh2L)i#hib~yDQ>DA06Q=gPiclhr^1rZ|Hu|g(otR=S;?SR`_hVt|0C2bWy z~hGaxbkb=S;Xyfwt@|>d&`+6?yk}!IouhilvucSj~;#N;PAPB_7vy|5W z#=)I@;L!Hh_O}$vhf)L7&|J#xLmC8l&4E~X$ z3ns_%E;ZeYIw*+aGfIXsxG3X1KOM!lcOL?=ql|Vhf9@Z1@}G?a@%mo*yQ>i!89Gu< z^6)hKVeBcbVQr+{kOx7zyS!T)2IJE zeQbNN15}OyGi7<6k}3$UfAGp*YXYzpxc)zWD45}jT=2iHW|@+sag-8k-~tkA@54XX gp88cCon9}QejuDPNHtaHKIJQQ6>a5$-z@+5Uy7_AJ^%m! literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001647417300.png b/umn/source/_static/images/en-us_image_0000001647417300.png new file mode 100644 index 0000000000000000000000000000000000000000..d9e8cde1681ac83953724e6a96b9d812ce2bae73 GIT binary patch literal 113232 zcmc$`byytTvNxJQ26uON*WgZY4Q zFb%YQIlOk!kd=H@IZm?oa`MJfLRsR~tD1P^2NS@{Iii!Cj?1f8Xg&YCVupUphUT^_*NP7TM?sQf?Kc+#sF>zdS}w>v0ifyYf7z)T^3axg2@ z{B9UOjF+s?E@;C$z2EX{)S9D-i-?tn8DtQnGMsTkqiif`QIFoPav0mF6iD-N9MSP& z%rWdwCQ`*}3`X&gl!mCnnNUa+m-U#WHK#74<8KLExjLkVQ<=2~3sE9GY8l?m!Av{p zWo^{_0UMxCE$WdjKuP#j^xwR8L2rf1KI=cFl(Xb%@_oc~P^z1pd;J|!rTOg+YCnEab>geVMG zI?3&XVq$_X>QJgfZb7*Qll!WS@95#7-tR^Y`BGiBq{C2%MtZ@wB&5RRLP&<4Rp7Kv za(LJIM^2iYrubX))lzXT>jVUmjvUbB5eeplgMa@~{7=*I9HNcP0XWxVJD za>498jf#4){T+3*w;RQe17}l--17nRh|tu!-06&?>&l$lQWgHzH+gzb+sRRX3%P4n z%twHc^^$XrTwh6wUlyXvL z1bgRTPUI5F?zhvY%{ufIDoOuqyLj5WgyYY?>Uus2c!J||5bN5SMj5r>R-(i1@2AIb zfl@uiKi?Z+kl-Ol|GMlkEGjln%dRoE_%Gp^lD?Lyx;51*)#59du5MM~%DK24s8L+< z;ZSj0al!pUzT)g0Z+)4(5#S3R;nHJV2ffKPjc~;?Mg)Y&zLiWS7CFCgO!F31HSL+8 zFNXsN(Q^IK+a@K&VNR^KRHhmb4q*^BJ&yKI4fU9aYJUA6ImqebSFf+z%Ozcxpja|0|62SW7g+v4qRJj1VcI36hw`qr}XLCwC zI~x-NR5dq<^};Q22C_*7TovEjP}sw98ikC-Z>OkG#`jHTl_)!NU)QDs3)b3$Gxpx4 z)m1Uu&&*iuWyr{`Ak!HA2;Cn?v~Dw(pk?V{DhVN+V(wSh)PP;MARsF$+HkiZtY@~+ zen6=-RDQQuhb7EjiIGC7NdLEuxI2w3F1yd@yjSIU+psv$cI>52_|*CQXq5QGza(n0 zFnxhiWE4G`Qb@Iz4Ek#E>xxSLY?k_qA?ug_8f1`&*@*^)4(GgPRPH%GC&&GPie3{$ z2v-h|SH<^=&>z8<1|<#S$O~=>y``sb0r7b=;DH#%;UnTEs?*XV{X^$-RlvZ8a@rvnS`Rh*)|FY1uUj==nJ4Qm6ISI)cVjqu$iKu%3dFZ`bc*0%mj;*`_>$>Y_JznF}{TfxY>WRSaiw3{G;aHV_-7xHJ*&k z>C8?*pxzCwJ{DPk(*W6x0s9xSXRZ^njwK&7KC(|x84Z@F)12^0y5|-*g1@c!?Dc8QSyYYLn%wNMh^rmAsRh@Z{*Yu}qiz{Q?WpcSBlbF?8tyj?|^f+Vui?!nxP{ zgAMWs8zqu3ZIZD-pkM_4AF$6Y+&FM$i2m>$T_fi%i^?8zZ{>)$Ucq~P)9~p zhORq49dX`{VipyS3=+6h8&&)xUV&OJVJ2{4x0avsg zcJ1`IQbtXMCaMEwhX;dQhLl2!WR!NhwA-v;g<`_bW&^+X4tuG;)_$$Kvh->#ZIpaC zS#u1}P(_F%7YltKn94~_%4;4}mBIbxw>>j62mJL3>1nz0>#|z(R{wxkGiHsy9ZRT4 zh2n1{^$oH^09}-)fjovdPF8#lALCx_`;$C8pa}AUxm9^KT1i_c`K|T3@1h(xxOY6e z%6o>|!|kS`U8VRRZmsKU|5!cq(U(CnmNx?d_b3}~VZF8_ewQn%a!M@@o%k9x7r&bB zbLS2?`FVmmA6wV*Yrl{CSB+`0Clq_n^rv4rtj)h zOy>AMgiq+5K)ESpy@xpqr^G>X#^YptK}6nl_ODeKgla&SqN0vI5n{+wYZzLYIcBxA z!ie>|z)vKOUD-VYoGiv7O^*qF2paMBN0@5QKTTM3c9VJq)R`^5Y<*>L4L#QXw93_S|Mtz?N$jh;`*o1fZ@h$>a0 zyVo8EBwR0C*AJd=K6>i21@+k^vpJb_Wuy*MEqIbYkOqL)9`@eIxCOLJ+N3)qAQiAL zk{MfCvQ@_MZd^69@(mCr2(Ct12cJ^vpm=iWMpcFGb-YmB%Vphq0U#TUhrRLQv+7Y3 zogz`G*c*xOw0gZgDfZIa#cP>>`(-_Y4j&Z&kidzFd`0{F^)TBU;~dbOM&MSG8bd7n zXas*9KHnTef;+ijShv8ECM-MI274tV#{pf9{eZ+*wE0SU^ADHMF3VzVia#t1JUb5+ znb@JQDY>^$jriS!m~Z%W>&7pS6#Gk%-pK6YleALxuS79}mbN(?EByIpZH=;63J~3f{9-3yNST(x-)d$B z9?9w#!Z3<-p&!>Y9#BRCG^%^v>icmbl-yPCT%%d#U~4_p2tHI_zk-`?EWJ}a-e@W| z4b{Ud2=g{QSvVhLW#}%Pr+9c0i_eoXX_dtOV}!%^pL&!Y&K)}vDs6dqc#!a~#Zge> z7ft{&G6TSIkykxEAcCAU@bim8OX_$fKN@CK7*aH7O_;X&+zaB!QH{XVIv7fWS73Ji ze+AN=Xi`YP7oT+WjsHa1!*Tccl7F^oeuU6Z=y2Q7%3b z@zLDPEwhpgt*{U|bV7r(K2xkgxGTBTq{{}3T_bFx!xB%nQP=1*KVuNWI5lCrr3tc+ zP#g>PKl@w~szcL9mj{$ajh2Yj8^T{F`x-HP<-a8=Cw0(_r?tZ4&@a|I9dsn|yF0bn zpB;N+U@kK$mcB0w;#q?+?Bj&`!LJT{J{&S2+*Lrv!5j{})MBzYntS?kIlC#TTjPp@ z6XW9P`iRvgiKV8g8xfq7Ba;y%`{#@fS7r%)+CK4THb5RSZKM!9rh2;QLnCodx=y%XFZ=lc zG7a-I_v8H4{n}=63ClfymsPbvuq=(gnyE6Cf0{*f`_~%X!m|zQ{Q?P-hYik=c9ZW1r7r2t9m#)JdXhNDFW1 zEO|MIP^}o{`aHrV^R#_LX#ViWazkWkH%^}R(0BJp6Tg^Fb-d|JlT`dtP5P3QAYKv$2@8=0vC%N_3u9<2DcwdBBhO|lA>e@J}=Go(ef zfK*Tjikqzw*BJVApij{bTc`^gdu6Gwx%1W47#0n#sf7TT6Yy{y=bUzUb z%({=;B!Bufabxs+AxlGJkTmYynDUD{29MizggJDQSP@hRei=p9ly?e+L<-5QOg=9T zFP@yu9PQ6qK26U)~9m22h^vrL>XNHSsHMVIocgtK;vF$TZ1O07y}F z8i#;b^xGp8-B6VAGGjxpGuprTQr$6BFhv!#Y2e74CsuHHn^|Azn()A14v#MUrejI? zJ0OgRXvCq8@GC%-%I&Xn|)GrY(q z_o!fUp`cTM2}-UUtLJhA|6Af9LJJeQU`Pi~?vJ%x`V&2#oD??P{m+AKH=BRIl=G$7 z+~y^dKyfvWvSB#3q7!1YXZCOXUoh6_1|Cz2*etr1_|du@oikKsfBH8H=@D1mY;fG4 zcc+EnL;dd^)rSDE{&@PB75`K2f4^(#vg$wlJ}RpG4}Y$kn3$7H|2~{nxc{R&B;-F7 zn2Jg_^ncy`B)dg}?opE!x6|#^fQ)`|i(x?8O^YAN4e4J!tP@sjIM zig53?>fD*D`R2;NIw-qTy)3%D!%2vjJG*=8;t`-7OY{|gYh&>Ug$Gq>X}|#$uZIN5 z<$RL6v@w1`aMS{su6XOjO*YBj5II)GkzBVZoeVsciN%07dc~PjR7xli)9-Pg-5xt* z+MlT#tJ5NRXIR#7e&yrezL2Q0l`?DEZAyMdrj1JUH5tcD`YGkM;ai?2L+Eu;$ZCDV z9Cen3itdv_!?va4oT#S4FOq2&-TR;S#-UnfA-dPw6TXJFA^WV?&vq8nQHuSOTzAK7 z8Sl&3{qLDDIeR${fPB)!^cUQSsXL~0az_tJvgCLE z-WqU;_PWj;Ny33mj`gT9{?7<+Sl*xaUO%6GV+^`>beeRi-9^L;m#+tANGVnB9 zjOjCQ^6sM$R{23)=KoXF;s67=;0$rWhczL4CF0%bugtmGyu5x%{!A2^>%$$r{}2`pTq8MnaUZ>yH$ygLmt|MZ!3?ZvGvz7;cBx&1dyUVIK32OS)g9a`f}_ zeB)u9)T3@amdMABvF%f&B(pc%g-ZF?fX@p(Ue9zJE(}0nfSe?H>HQyA?`PG zwfj7$za7Q*k(azn-jC+xy272GRLgrOPQ`AT7=W)W5A5gq>CK5XDAIRi*1b1aHn?pL z%^C^nh&Vesn)R+mp4=ChdQWn7AN>{ddk!hUFfdO2yadG)-ll6N_?dW(_LiBC7%r^% zCns|;e`)UOj1ayYNLhe?11r|Lose!5=392L$y(&A3+8}Fw%5@M7tzQi+iiMIrwaWO zO8{$0=MwbFt)``LzK?omBALj3#^kk}&r#;pm~ZpNy?q5>L?d-%kOPR}5&7{~cYg+>erEV`)?C0cc5aO>pQrcQF*Qv)-XLku>4Wb|6#kqV0x!#T-I&{$q$^ZrH zkx%N2bjAYQmYQ_leiyf49PdILaB(_S>e?crT`%G;!#Lg!%XpV{g-M=rtwW*1inoi8 zXZ(|xLpvuLWJ$$Yq?6E37^~;fPWRVpkm1IV;0zpP#Y4ImeN|TuD;t+1wb^X%k#1Lj zT*_BT%|V0LJ(;S$D%hrp!a(osL`w^Jod=ZrkrfGSknju=SZ?vgO*VLcRXVy`&fIf* zes+qk*!9@PG@4;ph4<~;aWljt>Ii`b1ar+^obP6ZRVYA+fFc^d)!L%A-Wc%&+*rn!PJZm1evrXI!s9(-5U4WOQYIE( z2R(6aK6sJBWk<5kM!8$qN7|wK?CU_*bFn-7u~?D z5rp^^RB`Hd*_914JVlI!W5YC$KAf_Yf+56WYJ&;11X>xTX@W z^L~TRz9##8^QLy{q+5&ujxW0nBW3b_p}Xf--O!2nRfvB8TGvX*Uei!yh-BQ?-P$v5X9k#OGr8;FV#rGetIYlGqUkLv z9$)TLTCz(Zvl%TM64py`w@7bX zWEFPwn&X*%@7MhGD@*wVenRFQ&U=@UiMs5Ui7j|^7~Z(oN8PT8;N;xh^Zm88Tv?j< zc5o{KYBX*~Qsf|$U(5b3&E@nf2cvcvF%yIM)|5ETK4HOOvT~+`{m_%?zWa$h?1`&S zlb}*za!hp~LTqc;k4oT@GzZ1WxWU&3G{hVuN-#Jd)9s8>24_Szx6~3Yk*QsaB%hrI z`V$dd^Rh~vB0U+w$)!8%xBq>_M{Sg{?Yu_YQUCDQEnwj`D`J@nj)@&?jl{&WSEXL4 zSN8xd5iZ9Safzu24r2*bGXYaGEDTpsz&q4-Fo89drl`EEiW|P54H7065a3spWit^Y zD-Y!-1{!H|ua$Rp5Hw|fFs&~}+@WU6&DUGjLOeG*BT)xmQ*uxd3MAWeEOv^+UKTbx zcRKAE-Rikbf!(j+1dDsY{ZaYlvV%<4;(h1E2w05)h)vlD2bK0{F}ea=Cu?}K&-~JK ztCCYuM;qSW&wwvzHJI#}$q>ZiX2bGB@^WOs5NV`q+NMoc)0}Ga8qRTc3U*5jfBYX9 zu7&6g?Jie7pHq3wFcyf4$l_o*kv!_eE|L;Ok~> zL_UkBFPQqNg97(elw4BH7axZ0GQZrQy}q6J5Zu$SamWH-3@w9T6RlVVO&Ga8z!617Yk`&uvA@;DKACLH7$9x!#L^g5p7Fjg(Gu_R&6O1v*8TePNxna=AlsO*x0#*M(|x=ZRmQvke3*}~EZ)%NJotwB-l zXF^PNo73EbZ610A{eNS^QFZ z;ZLHE<>Jw!Ow!G*n_6d!0LX>0P$iAg*TxSY$?%M2>K<76_HhQsn%N&Ju!83mubp;| z4L;2+G=BIVDXOoC_oRZ<`ngvxp0m>T9JBdk!w*l6S-BCfyPJ`yPO&ToF{|O1oPu2K zqlLa#gv3JBEr#gQw|q;;iSm5tf#>Nd=CNp5@-bGb-fWNNp5x$P2(i`t7HH_N8kVTc zffmIWQ3VHaJ%g_&D%sA7@wnmdi?{7vbzg{FU9a+m**$JMdf~g zQlt~6LfOqp=qRLs1z22#yBSP+>Lw5#aUfuIKp3P#FRNhnD(F3Aa&|H}zxv` zKTP?o)7}gk`aHaI%TVEvm?G6b_Q@pOpzG^+3?P;So$cM`*9qD-yMzA0uUHmG{Nn=r zl*N6G)a{*Y==2kC2qU?K_N>bM>@0jay#p9Ii(E^gX0j^X)WQ_aI3=3)H4e@&*Icu|k%I+Rwh6`3$LYqj>)A}UBEYVuc#;29K5d%Vol-(EHZ=1uOx}S;b z+hkuDFtM>nPc$QCvG>9-N(dr>TK5T6T0`@^v{}5%OZ?p7<5qzswkJ|jw=S6iJMnjv zK%Y-t=0@Zs?udOAF+1R$sVJ)ec28QdWKr11LyESE7AQE&cdvnnISRVI8#mm5M3bie z%^l!F>YHdV3AgecOE)e2uoZkojn;6~ZdFn}Cbg1lPgZ$z3;k;O=1XN^UZdNqBiwZU zL!8ibz>*7#Qe*d72)(Wa9*0^+^d|Tr1@XYh){J*qzb#?u(>b22z`>Upe#70KNzRfx2HBfktBS2!}Uf2gOeAcr@L zE@8^az*f>Vb)9R7ee>B?)8z>XK8_u9Y#KA$t8?%@nU0umg#`0g(|j&iB>A{nHay@5$?rz-n05=SiGhh?eS2?gRs`Zi?^+ZRFJ;vo$3C& zKlp*jL~kapj1!Ze*mdUWI#4ILOugGF_D5{d6rVE>a(OI!X+4-R7SWT+z#5QX5zJ`B=?DZY1E#gFuj9ue7D&0fe zDC3o)H+yOHNP33PIi7VxZ<5rbL&P2R$LwLtT@c(n213Kl)AYP(~Pxmk`9 z5S@WNE6z*fdrdk96w2M#A;=Ep^NH`%ftcga>%-?C`tke$9{S7}+fqM2CWnG5In~PN zbME;CV2<%?3zk|+f%ELi5|G@k7@tXrQ-#r5asvusS#vnFY|(f^pBD3P)&oFb@$apD z5Q-Am`6n~{`u=Vl#Bd3%XR-JrlCt|GNJ$u2;o-jY;>_CD=Kn)U}a^PsAi~ zKk_ZKVHtd!MxiXu-|*w-VY2mOLY`+}?tk7bj>1^yH@uNm2{rb8o#4^l)or%QaH8K{ zXCR^$x~XE4roY^3mGhma5AjtSuDkZTN_cyIs%~vvP;QAd?dtqi9#Wt9+gwG9=eczm!iOw_#INeFkM0lL zX-?Y3zwHH1oh9)@v0(7yDGr4WWAvEgn``P2M&9e^+9$ujfXAk2u7JD zdLp%Mb_`irmj{(u?m{NrQf{qp_**uBM?WDuF7$M7prsp@rv0>HVsDmNz7*lcPK)#; zx^QB|14_M|0mTog(U_y1zi`}P%5>s?FAwnhE#k%|R&&L9c|gUP9PlH9L~#G7|n`!lr)CP5ar!rFD{ zfRs&OVJQk&{ zqXKTO47$8S+#T*$!O_e~r~ZyI04jBs1QuOs&lbun|GoXrq}5<$=7bdO!nLH9NcR^g zhRk^Z8Q#pRafE;oTn~1#Sk$k@wB5`LS`_AM5k2V?XXoC}=gR+WOD;;iuc;Hhojdgk zz!+e2DJhTq)Oe5L@i73Waq(&9(MgtdT(*ybg9{Ug7|HKEh&dE*UrbJT@IAOH93L&` zs;7b8H1Sii`%N@JLuQ3x^tVGMKQyi=va{p-_Y8G{?@Ou$WPNKiGPkoF;&MZ34WHS} z&DlRe`q9});Tm@(I^5QE@q3n3mN`0bnp$FU@0*Jd92sJIqY#b7ax9vRl})-I!EWhb z7vqGYcINvYP2xC#AGz+@BxaIQ@@PR)`51T^LFb&4^DS$H0u|Vh`VXp=U91mK$N@X9 z+!6O@3j|A*Y$>lCd&`2}0_of(0pSuNJkf4ZeuV3f=xisa-q}RRoy@mad6x~iNClX& z)deixUte7OaO@qYS$4ES*2ecljCV{IPM+{GU?B>u@yb<5 zqBOWT#M6jfzqSfKKktqt^GfOS&FO`r$-LVrwrHR_WV7v2a($ODTD^kMfYzG-IJtKJ zn_kaR!>RjaZzA{W=Hw5EV??sU72&b`Fngmqj$a$%71s7vujt;~-)_qI*SU5&x8bL5 zY+_>gzvhg@hq?|UT5j~6gahUzVK9=P?%o|QjX1Nx@9ShHeh3|-YrBWn^P%Ws7BSM@1a zAqQU>M&x?}VJ#EXg%CFF$W@}x*Dv>l=aFb?dZWf|>P56oyX(qoPE$L~Wb{!kd$RB! zH6nL??s!P_rBY^j@%bFz=zCL%FmY2NkvTHDvnl{B_Xu&=3~h(Y`zp2wG6nG&dGw-SvDreQ`-Cn|e=zvm8(= zE&FT@8S_5IPzi96z>_Xx0y#;0>Q0K~7Smu#3Hu)DtYj>m<_~D^rY%NeN7r4eJze7f z$*QfXNCn?A4N34F*gx`v8}ooT_YX^XwXfK-5tov0x(hWX^QXHPS}|v+tMKJkc%}G> zR$~S3w{zR=Fv5cbIhyj(6E2lDKQAf9Afl6(6L)uib|3tBXdKWWzPJO4G2DB|q=Nc< zdBBPUIGg;+4o~tB`TZm184A`un1?r@NZ;;X-}c1v$3Nca23dNhWg`xN=rQ~|C4U5z zyoHCKcqjEVOejU%*NOPR#{Njhj`fT;-?)Zocy;t6K7gMjuVTb&&7LI@kW1JA&%ug!t6pu&B2d_3B_(qj|cP!!{^;dRKRQ<$| zBC@#JB|g}uPc+tYE+3kn2^(yIMP_N>)L9O@cncs<)};yerao3r_EYFGozAOx0*q(5 z_a|qjf)Q{Z@R4cE(MeRA=i};cnP-_2AjB#0A>T(j&iY|WA12>rBDJ^M6sze$Ni$E| zX_5s6noQT-Db4n*sDa^G+7zM7Yz^p3NCin``1V!o+AIk~1F>osS{o6;d^UGQ9945Y z9DFEz@O;A7jie&))4d3fF|8FRIyEU8lwpxKokaIyg0A`w7!j46Z(5qyrG`_v^XQ%>hi@4+ZW{54w-}f?+VxZAV$P%sMOijxU&{;!Rdj9fKkR^lR7v`r<6J z?<`~+vs$2<`iWrFxJqZ@5+!3Hg<`2X_I7dK)$nMsB*gg`1h(=;tNvAsje2`!v za0640o(+W!SIMFfO~sKR;m7xIC!TztQoG|)!fyYyw}X8%BM!A@SnzFn9Mq%P+7zUx zj^Wh;dbL`C)2v1hZDVrsx&{;?wnl6TMWUzF34+5A;Grvm2KlFrt1Q=oRi7AJ#z=l| zHliu;2ASjNK=+i1_K!~)1|#RK{QK!BW6TG(W~;0u=PD^Gk0qF$Cz9KtM?V&7`SVVR z=jP&W5?=AkuIlNoq3Qydkhp+1^8z^atmJ2{TgrehZfKYe$IXV*CghY{8>YGB8c4d6 zIt+Gter#0?%%Mjmo^K#g0rSS3W1tEsKtHrINh7I3$i`SjKdSjHf;UOjd^VX8G(9jqd$;;ED}Mp&6DCYan6oCQ$g!fgSP9&OWn_ zKz7bkVC0((t}lqtntM$ZEblSG3{#-%>U^5=b5~x;h-TCvH5%^w%9so<`JWA)U;?41G_f>>X2{ubiFV>50N8{OBaOPE-$$m<;nJ zagOWy>gh*jB2fQTq2I>?{~_?Jqfn@U zq$_rtWBlSQpboQTZw11eX0bL!x7m&-2fm^-ym2rbufrWz3^_6S9L-FoiP~LG)K3^b z)%`20$ob2?;mU`1`QMjwV1Vae_6z=Dg7{UULZ zh2&iBv%A{e0@7QPC`dQ$pvn4(ul!x~%{w9Py+?XCrmS27bivEIY8RLn^piCgwj({3O-~ z!u7iZ-0bC6bTy8mZkG2DE?4a)AJ5npB@!IMR^co$zK>-Vt)hgUJ3B>(?~7DK{go=n z`R>7%(Eshc+J4RYMwX6JGos0nLYS(`Oq2E@zTKP*UBlD~!ir2((*p>Fu9 z<<_G}Qn7c936b2QHok96|CGh={D3lipMqS_M!W-cUM9D+lpHifEwNHy<~_`Vy|98}Md^jY|<2(pvZWH7L;nlvg z3(Eg8`L;;Xa!-T=Bc;rKCmVO-ghpP-ve;E-6pg26u18Pzxo?7=f(9>CdBbBaf`*-4 z`V&hImgAv08Cq6skdh}E$O7rC`!&S65IjLo`BoG#pyHF)<}oXJ$yH_;$y@{FKfq+E zc%Ns&p z;}ossb3!#iGkjm3S8t=#VnMoeeJ7tvvn++MAR^z%O8At#2TuKxd+wSd;((!SfOLNm z1q~09r7&21Muc_Q?48%R)SJ+#0|_eOHmSr9mv`f5m(?$o#k2ryq#t%dnXKo6p5C+I zUw4BL_x1}QJ(|oVQqJeWsIXef%-{I4(FJ5TGEH6A8stUwjXu!@wbsTT0$qpOUnlo8 z!VFD;Uh|dNjRZ)D!smRJ$wWEnx^0F1iLmr@{Ejmdb9;ckhS;Ce{#5R;JNFTxcJ;f- z;iW^*MHEb_U=#7ZWUCzjvi`D*;okd(yPEv^*0jfKF zX+#FQ_y9H~OzP}c>R8tIVn30H97V5}NcR@%2QCTl6-3Bd>+XcE<>D-zs7jLv!=!Z1 z9oWAV5YAEo{LV~R+*j{PGWMiChoditT)P|I-0wn?5BS;aa)!O_=0vc>k~ZUxA(jML zp19rqqF|57M$!t*W9%kX2-hWI-)13J;$K0@?8pmbVZ+)$S5N5Y{B&4Yzn1GoEXyOa zeM%ojd zb$7Sv`M|z)VF>dgc6^?kxz^O?6NXgMh>)}EcS7jpz)P%BO;Ep!wJl-Ko_7KEvGQ7o zYFx!kE7yuaj?YQgTYf|^X^F|tE5&`>>}&4s69yUjmRX2| z-TM@}RT}6QHHIq`T>dgAUhK72Zd8So=SW%V3GIiPFAH%Y*74k1#GqYN>7wIJ*X?48 zJ{Jayg}i`7nvJ}(Qb{+Q8;@pYn2IK8%N?1ElaO=r>P4H}rAmDQ02B9Y2`pfb#-=(& z-K!13+uAyEqMqM(w0M<0k0MqWv+vSnglRWfyk+~q-QzZ3W25+smP^FVK2`BDoYcAB z&J9EjR*naFv%sa_JQHOtW$xRH13A!TeS|X-ww{~@FVrvL^z&nd!+vBeZ zVq{`aP?1Lb`?9Zb%ZmU|pEYK?vXB##>-8vVU%S!s{X(x@;&feJ^o_e~rZb_HSyhCX>5NdyT75_Bc*6V`H@U`@eQ(nRX`UizIidkL2(ZW%82x zd9Oz+bn#y_t7H6i#i{odCQO4qy|5PjScY{s#lyHw$l6rjfHvpbqV9PJraahP=?0~5 z=Qu;Z%QO0jNRGLxv_5;)GO*wS!h!eNuI<4OxvF&B4q{lv5f#=9@%QhetF!R@J$6!4 zLvMWM86GN|kk-6bqK?u`y-}3GZ@c3Iq;zmURVFURSRl~^<>543LDB6+Fg=@+6gTp-# zGMA;C#+ga>3M)=3PJOV?g!r2PoxyIQd#6{(eFE3U{624>&bo}-N3w2zVJRo?2Vf%o zIqS?p9`=(8cqX@XouJEFj;c_V&X&-EK2vkX_P9|vYztht!LR+-hSI0k#(q}QOrwKa zX?nt0CvZ!{Yu$hql271T^>Nmmj?}-*>RY(~C+JCXoODP?7#iufAKU3}DrUuKM~}#D z<3#^Neb&4HI`h#L{bxuz1VuiR8^EQzjeDrTI-wAUE`Z_w`S$DX`zB3_v9Z!4(2FdM zl|eSBFVqp_2H|P{pbmbahCTQfk{8Q|x>S6hoB&*|A4-@WWI_;T(r9O6q(b@YiGr<| z^B_wR9S*p&$5Aw=eT>q>@vnWf7`ul3zZ%;d?RL+Hp!9&=|KnnvIrm%6*u6bMCC&pf zV2g^%Sb57bVc0+T{`a1yN^fdJb0wn@$iu_+xi{ ziv~uJsz0yqzF=a?!CGYLN)~CXcxhw*$!>IjEV>V-Me@u$u-Dqj`#-_HNv04e`d+5U0-{{bWYzw90&J4)s2T8K)d-z*f|EW`~7NLQt4CEhy4poJ{cYkfXJ4&2fS_-4m$;nP&Br1C0a>E+S&Lrwe9}T1&sU8+`|^X2~Vuwzsy&9>WsUpYo4t zNSei4TGPk^y><7m|7s%2!jd3rN_+Y8JyR{dDEKF6otz3!j+_%uF2_Ne!anN{_dkg?lOpGU|NB;+;eOIdYMYgLNT)CwcxSF2F%d^&H z_`-Wb(&t7y58Uh#v!i>_u>X)Ce~dAq{OTFv)1U)@u%YYC{y3SlNFCttWmkdf_j0&b zdODoB#SJJ?&;Uv9d*=+!(s-#=HmQZ@aG@^fsEH3_ff``~ z#%^%6UW1xdd6kID=ybUulm5${OZ}-`|1CEp0eW~G1G%o9{HhxP z`0*Nxdk)0(?+7}7mr$Gu`1A99cFgMk`PM?l;_d*T@hKgR+n$JopH+!ow28yvOs?SQ zY7U!PrB$1vfqBd`)08>EuF52u$0&M&b$OL;nLX~_(Dxy#R-VPGcdzd(`n>M9ABzfe zwxO!8YIIeNdhyuOG>kj|g{Py-v9T582aeG33FIl`$z^DLbvpw}`;bnV13N8fLR|p( z1m4NhWLuXkf&abK@N-Pcdo%_@wZg7Kk55*|uTmO#N}^@mrrR7KV-ny8ZNLHhZFv65 z#N`GzGq%WoGpwu?N!76T$&UT=9g3F$bPD{6z7`^+y?{O>Xt*A-=n&|6Fw8MH;2Gsmx8e|$i3HZ9fd;)lGi04hG*+`EuisG@M?oCH#o+?pPNBWLu zW-e@TRy5|Kt=9m0b~{5_E%%s!D|Hmx{CvvE<*djF;sk%scxUpVMc#Xr)j8`uI=l`0#$arW7pm2rxp3EJbC9UPGt8obWT)6MRVL_VR{eq1u1-~H31S~0)KfzUZYC3P z=G{AlSUH*HUo5UMaHiAgI~y%B zXXotho)!4Sp{9iN_c8SusZbnWfDLypft{q2r*M?*e&X{DnIyYt&^Xe?hff>LN#q(+ zb%|N2$W1P*gN_;957NxSu%>Fddhw7i&M2e1#%Xpvh->F*v#|STZ{NVlY)H6c*4A;Y z|MDPX#di5@PF5p9b{g9fX9=Kfb`d~igZ>}#-ZHGNrCApZ5S-xd?(Xg$0zm=<4G=5@ zw}}UL3lQ8j!QE}52@b*CT_!q%o{_cox7PahK0o&JoO{o?=ehiuFd5yWM|X|ts<*1% z7T{_Oj@4UWhW`v~?RK5&T2~|!Q(wEIEtOqfrB1wN8$dTnOW}pj!ew%V#FLKD(AR0R zR1H}_6L-gb{b6K~Nn`C62d`)v|9zP{WiWxY$z;0vxpcS}o%3rV)+To|(#3#*I3vE$ z#njp+eb%U1LacPb2zxkS>nJ!C3vnoyjaC@jYP!|(cQh&V{45?$u@o{cXdNPND=8I@ ztwyqwJ4?8RB^;GMkwB=Cs%}`?zbr~ezB|0(GDquK{ECr1Y17l6c&ZlRxm-+_&|8G| zzKHN@`1jjC){i>5W(^l2;6HyDjY1lm67LfdVhK79AugOxlv`X zwtaVb3M1)7OW08Ww_vs)LzzAYS7m1CR6GszB#hvmrZO+b#B|@PC>rVCcLiVn_o;G; z`kV*-b>q9McRV=%J8f+}us@@fN;8*`M}{EICGE3eK0L z(pAh3VV+OUvs>c_Do7~g{juad4iQA5`b&ZpJ0EhhrZ=qCFtaey$2FJ-FjOC)Grx|D zs}fwT9R{tR8E245%O{WrW`Yk6?k@_NSnuV@8yPQJY>SY3&^} z4tT{_Mx9Oiu`|ic-lxK}WeM_$NuwKgQx9|a{4r9Q@H(3V@n@#wQ|-=kyTX*2U{w`e zfBdw4_#nENO@m2XJzRV(OSP8@%+{Cq8EWJ`jo^D*Sr1x^Qhdb;Uv>v2+y2*PM80>w zV3xdAU{XOpgdn)i+(N1kb#SpHZ*)0f-l(0fV;GCjRJP#MUzH2CK5@3O&*nB(pc(tQ z;d2zj1fD%QRmg6B+Qn0eiQWi3^_A4{6#GEj;&3QUC@w-AVjYbPgGjcPdJjvye)w&! z>s%4--&fkx|9ztCdWJqB!nB2zJPD9~5g)RPgwhGu&YMJpfy2Hgr5?)rya!i$nP!4* zc(okL*%WHnJ0f!9NOMJQxAeWMYVuR=g5{Z-l0I{I1Vtg`fn&78P{4H>HS`Xln`Vo; zrO1U-wSM!XqG)1^he6DXf&4V7#lYuc95tBO7m7{h(grS!D8iN>-AfSGHoVAvP!>t; zdk* zPFQ(sj;-wr=$i--x#Jr#ld_h5cu97!@Ui*g9jt12!fR_42V{!w>lcEq%cc!Z{#!2j z=)##q@I=;g&9)RB^QXZZ{K03R5Jj{92#9`VujTk6Ivyzg0}%#ZixD@wTyCk~=M)Nz{1K z>@Hq4;K%S`Sd%vG5;ygUH{-cTk*#}`q#h5DX14f}u0x3D6Ge~-q;q9o*(wR43HoB) z#su0+N3`WE-)j(OqHQTZxovU}0d<~vl;nQ4S;yoKy0zv}uCY8@PW8QC6OS4FDnOt( zRZe^)F&)d185+0zLDFWKRfE~}^`%Yqu8V}YGnw>60Wuy@1MF8B^Zti9^`_O-zP1@8 zg>0$&`DzO57Z+9@U;Ev!VfU3{$|V=@soEYhhy<|v9oyf=hP&}yXVjAUUuMP$nvf^< z=p9Kg3icZLW4*N;j#n?TUGiJ7JYg}PB=hIb zaLZL=5{3(eLPw8SvFSfKQ7#Ox_vky82#`~;#!*uVxEVw%%FCWDc3#OOFKJV5uSE4x zWe*XO;LbFjUgtE;!X})796h5QIz3h4R^co$vuC>hQ3bqbxv&Pygu$>R6Q`pQ69C3G zP!0>U{P`kkjHvJ~Nv3|1FHQ?=3n5lq@fQHLt5&Yv__S5#7u}r5Pqp1vnQuR}>42j2 zDNiI=H_~0IrQqP(k+`mdPHxa~ET@n-i)MR93l6&)tt%AOvs=f|&XCHl^ zSdqu`T|*^$mQk+a5SyHo5kG8z>9}YS0#N9PhAOGLn0SnwIMSx*F z7(BLP@rAT8o5_L4FhnzV(~6iUw^cK+GE!k`jdUyM?xmi8`1 zzl-aMs`tGOXC)VT5&cpLJf8`vgwmtBz0>+&-GXcI`a1N z#}$fsghxH0k69mP{n7Yv4P zCpuBjHuAs3=v?$)Lv@dfb3&{R$C#Ka1$&(G2)dS|YX-_RdEX(EOR)I2Ca?r(*yK(h ztoxW!pnKA8c2DV{p~rNYjHx+XwgxQTWKsP(pwYS<&b^Qm@Ax$gmw64#bf-sq-P9|? zW#3(hY3%LXMWAyk-nV@i8>c=FQ*TF})k=ox+!_53^kHJGE*E}sNlW5n)hq0iA5zfk7LY5*#D?i`0 zUbX@3U(${~#ag_K^1_g|7IT0A!>4>2G{J>ls~wWT5bJn2O0%U?udE=PvRiakR{~3% zZ)^0P#&Ggt*%OK;hGUvZS4I5VNINRaI@%T_#co*Q=eEKhsy|_Yt7z(omBB3I)~u)d z=&a%NGEs0xEGUp_vq`5w-kI+(^PiWPvl$Grb+^jdFR0=8VxBa*$yFVO%+9Qdy zhsGxsCKh$xfbbi$m@uVgSLuMWDW3( z+{t=ly3`F=UQ;ug;z~53cOQPMB1f)d=;%CjFRoHZ*%=OIdjDli=_372$tTS{&X}NR zs^ex@bg3Q^w+9+7zkl(AN53(9)+#^r|d z&~b3QpdI8|KJ*{2f=`$(rB5$^siY~tM7j|r*USHx0i1r={izqI1?4#ZU?;ewGWEa2 zVzC`x^RficBGdmVS~NFThZSRzuMtj59^UIM{OkJYnQBlBz>kzr+dv&S4;{pnPYD|P zn}Kpq1`Oau0$gUYa<%x|uk^GyvsHeO@Rgj7cYlCqmBzosw@5JMt`+?Y!py_?C#(Z} z{r><%!v7-r_ZOu1yPyC2_#yuD(~CQqP01(nS-obKy+19^`0V-OV8Qj84ladFo0X7N zcbtblVY)->V-)yIZ;I<0=`h;7uLyu_#l>dnnCLIgTi$c(ad!6eW`8hx$Ql{k+B>Ac z=5CWB0-p^EM#(4mp#KY$+>@!Q${AQ2FRAmhJbn=G6mJJR$Hcs9ufzWJ2_8B#!l2Z_+sVY~BZ{utaeZ+KM#xIlb5GxON$K+G3v427s0R8{Ae{*+}a9wL{AI$ZCZ*;`OLgC+l_|vQ2wk6+{md3o>ex>TF)!Fv%O> z6K5WKX=~nK%k(rzd(os0Tj1h;k+J8T8^HY6P_&D*zN+hLSW|dPxU_iS;=bvk&iY^t z{~M+SNVQ_y-j=HT!tH_GAHhn7M=dZW2g)NA4BT}o%gG$yma)dk%QF-#k|?ppWuf|^ z?E#qYzh+$gxv9UFfwnEs@6Im4SzFUaeeFyYFxl0TdSv*D_AyPYx|9#+Rg#`!8!bJs z*2iH(0e>r@2W-~3z4mwhb;7K1E2NHZfri^A{+FJ;t^km|@OvnKF_+xZ=~7O3b;DY_ z>Qc4~ZPdK;zZ?R_dlhzwj#^Mp!;bp5TDg1)1SD@vOYsx|7`#ezQ18Z87H}nKHPg6i z`=QYhO|0T2uu3Ki*o7lsIO6zCgu)L;XE=Zq0#hTi`@85S)|Glm&u!t5$`?<3|9Dc? z&N@lG@o!vntC1_Y>cjh&*VXm|u=_Z5sqmAkz~)fj*v!`X=-X*RicI*HZ&}`A3Y9h( z`CLe{Jn*a!e(PHw*_^Ckdp0X@oI2!iI5uoUgxwP)1g$^z`cOg7;c~#p^aP%L# zyACP++Gzh;U(FnSs+EQvXKWeRO^8{0p*(d!q|L zq+;vLy)P8VmL2zk5J!!Nz=K6VL)JfL$1Mt!danPwR!_tEQ7UfJ)|TZRa=9g z^06dBX;6rsrh@Rrg-!ccO*hP{cuHlD)RGu@SXTLg~X$# zM8sbI6k_mx;@?%ocYOQN!k-qOs@>KW>BUQMq+6j@#R$^S#~gP;orH?6J{IicNoFp7 zoA{z~?^~n+)s@~}{T~U@gGG3XC_IVI7Pz9Lva(LXAwk>JwaGS-@u)*zMIWeCo0oc_ zOZ{vNj?42=uu4S@Ir+Kd9pWYq7vTY|gsY4}bOmOT^sE$jEd=3|_{CT7Tl``_8A$1|s-L^hPSs>Sr@qix8;wmoK9mhy?onF7+yb>oDaGUe6W{ z5UUMS+{$-B#`D9lN}?@AwH??MzL2J0oCJ{db!bn6vlStiBtL(ckDp*n8+x?MR*>mv z%X(p06Dwd$q`gU1PrV})xgiIyK24oEW&c)yu11+?nvGd46Z~gzR4Ngk23Y2-k6?9Ez*so%Wyl-3!LkLEX!SXS zrRH!kh0mPq>{iT5NFouj-;#8aykOaLD*e5VJEkX5W6Pu7LS?{}LHRu$-!j}8++(2bR zu&Rlrw6XzijWPSFAkSevVOmNERM|6{l!k{{_mbGf&Bau!=u1(&T6A7vJHY|`;;2CU zbcvjrC4um*e2}GKB#c0Q9;D80P`pe!sFgt3>&;}Gs#qlZI%MO5+2uOZ+JdHkp#L3b zDi{CH(1r@CGLVuknw|@4?EVoMxOeM0?m}Ot1HKB{4eHo5+;-c9xSg}Dyno%YD^h%_ z@=~(^z#7b>tc|Ovqs+H=I=unv6$DqPcC)ylwTkiEJ@Vh-x@mHY6}{0e+3|<(L+g0- zrZ~|VMmoIaM8Dsr&1xJ{*Ps6s5Mie>C~%#oxKT4#1_Y>iDH(WBoAHhvmRiYXBL{NQ zYLRY;I7N%%V+64~Eo{xzAoinD`sm%K439I-wpySb5-9PX)t5FbX7{MC#yzeZcA1zWex>4aTi~ ztLGl&$Cs|=joxR5lz*>p>8cb2sWc`JeJzsDR%QYy81+5t<|#DfiylOG$bj> zdpN6M@ZHSlnx}>+cIA@veXyW`w{FDj4?Zvd%Q8D%Vs56p^?mH97$UKEsS2vMhP}pZ z{sloGP>6B=Tt?NWXyyzIhzz*iOR)n)WJLZL)~<=>n4B%e7ZP-_ixm$dORh8wy?E=s z)%YXGYZwH%BnO*upl()D3+@QZubxSLEEo|E&ICoYoEplH3z{0aKA-H%6BGYPKo(xNKPy?I&=#X+ZinEOjU+jgf?NYJIeK~^7xc^ujV#6Jxc`7C znh?n)Vrh5*Ii&%Xe^_%ad^SX5baZ2GltKp=kcb*Qo{jxE;)|)XJ0B`SyrS|!#lGw( z5O$V7mxG`$z8`dl(J5_9!=vWhW7VDi6xWS@U$LyeZ2)?Z-UqA18XE;94#BLRx`wzb zl3qVF5r~jgnr`4Q#o^ODwgy%lNPE{#;gC(?n~0Z{aE$iEWHPL6k-+UvS)MIcV&pj< z^)SU{-RzHNr3X;NHs$i3hF`AyP_C)6y(8xx(|zrh@R#*5F|Y^ZA;7XD`~vT4Wcfg6 z=NEwFd$!Ra<3yB#`4yB5aU6f~yZVSp4mmJ`(2zDdn+kY}0rQyW!sSdkFpqGu62-}LFQy1Pk}j}h$)8~Fu}LyZg&UJH{+e|_)r8!=971}S2^bc=QxWxV zlHT29$w0?CkEFak6I|+gf9_FU-@7re?_NpT!0JV0uN@wz}#K`kH( zCaT#_okgKt^uaGlbUt$xj9Js?OW_Hdy>1Tg^xlu&afCwyb4Q9D!rq|Lz22)j_`QZe zO&xbB46#!(DlNoQ?}5YSY<^ckeTfI7x`(ONo#Za2(3@LGeV>&I2I|8kaoxUh zPGp2WFo*^J!rY--$Cj4Pcewbz$nl{bt3l77HVbT*qZUaKyeI)eTX&0vA)|9TdXz<> zg;=FQkn!|H23{K*1_pYeuRC==+e+w}dm>Q4bvrE3w0E7xH(Tt$vC7u-F-*T90<56# zuu6m+qhrTV#Utm=Agt!9Zrm^GZx>!2iGheT!6DLO_T4W|C7a~8W!RT)4xBs3J_581 z2JSz2*w@|Bt0(#Vdd<}nJvS3r;w%!u?p`Gnt-hi_Apsw*bC<3q&Ewgzk`_9vBok|- ze}m@{v%!h0x*s11jBVlCv+EPaMx zwrWWfxwn-D#P(Uo4FrnB2Er5(y!(uF`{YYuXy6M~x+48^M`kE9uY3Y82YszlO7fMF zUFQ-|mWOaxKeuiHAo!QW=fLI z*hEy>X43!?&TC7IN^bZHOuh?p8Pg5+s8v=-1aenS9+*-v`EgDCT}D`*RqUebQkold z`;kTWCpu*7Jz10c(^gQxfBg=HXys`Yga=Q8ENOh7rjfN?9OPp8(kQfwx6uHK>+p=5 zhuClKt-g#9JU~=W;<%KPWj#cS!t$BiIxtTo+srn@0R7DVT%%ua@TZ#qO zvje#1SwmX&*LT-rh5+*S0vRhSOl40X&cU8>9n;?%Kvb`0-z~O*AHq;H{;LL?y?8XY zN)w+6(xU8C|Ez7e-}EQdpn$OnrqN>I!dh!vcLgRA-a9smWX)pamODR>KF%l9)CEjV;f7Ns1LnAjraLgey#>4h2hNiK zbus$y3FZ1Z5oP~agE)J!FupJo*u@hAg@ArAIKQBE6#G21CD^VYYG^2+MGO%(r61f@ zZo0q3F<{@yX}5gt&e6Xq(YX{Df>9#Ld^FWvk|wL~F0u0yrOpLSlBZZw-z(Im_at($ z;~yTSG!Q_0Hf@C(b0iYd8^zq_88(u)up|QYt;G4^_5PZx)HWAZDK^yIF1O72hd7#5 z|AND#yzox2doke$dD9;Wg_?6o780@xsE|QQf2Cj+9s8U&_q&&zxz)TR-Bjvl$PxY9 zp&qa2-SyakExBAPu`UcKd(<+QklYB=AdJ=%ZFh$AH6d_dp`mz7gmG4);++Y<)aLOb zn&yMGXXFPYE`rl{A68&Xr2@-DX4khVg40u*!_d!Uj7pE|JT&1r;xP#jPrEL{RNDNn z9g}!{d2B8G>w0{iH%Fr?j-_?SRs_zm)AGLz|DlKH)`GF25KBd?W1~*H)Va95$q{Gq z#)4O8wrg>jK;&BZ-JO&`?`kEuKttCZU>R~1MdR?Sd;Oto&$c4C){?NLxIBA?FV12M z$-!05^D429)Iwgtabr!&yLuU>^(Gs9Ervel_LF40{lbbBgd%XttAaAcRBs{L;-Eek zqGh7Zj5gyNeG@;z8u#8=yDkxLeQO`-^2f)+2m@Prk87Nxd1unl44Sw&Z}`Vu3R43* z)-k@UO&?hUcfhCljC|^xQ;vmhIhJoLO{hI5PT=URX2UZooY5cCa}w5iiCN)G1rnkz zbElB>->TcSfzpag+Zl14pGU@LY6f}lcLswUke!?(*Ze#&I$pF{`i=j)16U9EStwuG zPhlEtC1NfFYPdwps|b|v8QjY2MD4ey@BHL3U4X z4cazab?-H=25<}0g6%5P&iUD&Xz)c3szE`M~0{Jy%da=D>be{qJ`=!IHmgJrc2S7HA4Jf;#mP7~~ zFN07?Ra-l`6x2MZ%G(AWQw08I)V(zMbqN1?FzU;>_iqZ(R&=4B5e^jbj$A>|9_@8D zilnxO$jZzm5Di5<2)Co{rK4mN#rO4(Z%TXHVZdlBm2OCBTMuZDx+LI^K(d~X)%+!_ zHL5(YW&mLU7%RDtgClO{AA1wV&=`r7fHUG*5~C^{hg9KfoMvDLi-Rv4lf6!axwvl>T}y%v`LB*Eu5>u zFV<9krqq2@u{fMWH|+lcf2ZoV9AG|jmpYxQP8fWg4_JPYpTF}J{lca3twfVwY$qe(u`s4}i25Df>E7o(=nCh>(ilWOPk62HfHDti2nyeukCI@#3qcZ#QhI z&mrZbjsOR1I$x355!MU|gt0-+G@iFu->gNAGZH>rQS{rZ`rpv8w(nT)s&@4-mR|~s z4L>8;W?G<5vT$b3BH%A96A3sziO+T9)YAC#Sw{58@%aAEab-i)Umn9B1OLAtjsMs4 z{{H+;7F}l@C69A^8~U3W&@JQ_9@cE;N(U7on*5!f+~3LEhyL)`wrL?n{94)qIqkIs zWM~&Gnud!(3%AKtdga%A|2W`k1rL>W0T(|K4_eV*%I3fO z1ehEsCyD@e;@v(x013_n4pxydZ4Y4E@cf(bPArCg*!W*{odyH|rdPnBF;7n@h zl%S)!n2AY+idIHsbYCvrrFx@BP87uZQ^iKFgDjf4Rg4b* z_>$AiFa6OCxSKl<450W-6pkm{;bFA(AKM_6{esqsRowtedji4cUzEk)P$TOnTT)UHSM(lYRC*HfwRDchsJ)@sacB+2LbyDsa2rmb-n*i5%uw_!Srb{MPzBxgC{KPy zAvcz%keCm7C|XTwkOyK;d!V8Y z5<8^#_8nErR3)k+u`))D)s*%EUK#&Bq^EwYYSRJpXQd0e zO!Qc_S2m5bDLWN2D^lmvv3eZ~E9ck#I6@zCb>!K#O;7Yt(F#d3SOk*DvsMXT)Z#c? zQRb46iMmghrQzUB4jOJ+Bnk3Mxnvc4KR3OXPhFhXGL?M^X{*=QqSfxfC|ND>O!Ns5n<&EH~!3EHhB5@swk6?$=%O zm#(|y06s|!3b}ipJ1+ymo(T@s3gO`8Hf^{*Ee!OBCK8U2-u%cN2gQ`+-S!WQ&)q`c z$$m1!2asLU2n}fKO{Bk><~3ckQ}AxwOi4WUB30L4{n&YP{9n}?1lNt>-t0@oo4S&< z4@j!NjB7F2(yc(Bde~RSD;%F|oY46RA`~y2V2ZYGg*zk9a}GDG4^Uv_Y1%FNOK3b0 zBD(!5yJI@4cuv}N;>;EH;<}sS1}ar882bacH#7)L!-x-oe1{IrwmO!Y>NY8$a)j2F z5WZfMGJVdie7Jsy{RyTS_C#T9&13c;V(1%jSECntj?+)K-Z&*f@%vv&b%SizDA@ld?@z*@?rg5KCd$K3l|Up#~=dgZ$NB#0fAbgFLBIk1wa8J898 zlT(voD;vqW1*Eeq2o?q&UH|JFV%ZH(dXAP{F;e^4w*lj1;AXQ-hjLUwj*9sg0==uY z3g1#+$CMr5SjxholP>xD3%xUGAR&)ITqnnj7(A2A5Iu}MAu8ugLbm222Z$wcsLeLk zPWQtM@0N2x_4Rt|I@w@$W6|JDqFuw7p2JCJYj4L7q`odKAN*pqL4w)c^^-8xd-K~4 z&yAHsv)!K;y`W!;jFg;`E(!d}c0l?J*g>Hn>|n{i(0ax3g=(h&~ppB=e``w!vcrV9}}KX3)GCY$WGIfGO@3n=R)&#k;q! z^Kz^4^}OayCx574iy{h*4RPkbo#@iNv|{9tHFBgYGS{^7nn!ui*UkjC96GO4DJ_dg z7k!bLfYXk-a7(s?lJAP$1c)*d^HZ_kz^vYn0~8MRO~z?9>Cnphuq#1?30k>&q|n$OQKlpz~rO^i#``7HGiyoiA|m4*|8qeH4YAh4{b&v=np=7SB|Vc}IXDT1NaC zVdR@SD9cgCakq^3p1J)4EP*tvBeVd+&T@x}iyrHNxt7zHw7T2hL6jhNAzXtN(yBZ|k1f}8Mv*o=P~D;u-8in2EU z%(1EaW7z-8rcE6a@bsSl-HxSM<4_`gaCPQ1#!}t7qRG>spbWkJ$Du{#z*!}A)*lYi z)K}*M{JXJ2eob3{v{QKVil$7v)Mw;BU_Rg@&%F;eoIe_LP<h zD?NBISnk(rk|TFJBvj&WS)1D>lj3b2MRy0U^=2(7JhN3wDj4N%ntq7iucs!*<}@`S zU7R{jRdL#b113ID=rvSP#xzQHz61Q!FI#iKU&ETV-i7p4)W((X#qESJSDn6OP(h}s_AS7^!#M353^`fkr<^-}rlEX$ z)RSJklgptRVqA~Wt|r`+DHPS36nMRkG3KIAj!rHV@m8PV96{S^2X{Q(cjUS!;>VHr z^A#dIyYhEGY4~%=rrVhfR6ca~2-iQvTnS8w$K=Nw>Q-S?_I>0wQ#I2Qi?!J+CFyIP zvkNnB|8YbPS|O`nmikLi)dd6A9xmaVFc-0)Oc6Jl@^7o+*eN6x;PumG;1FEJ{As}r z2c&%ByG#=BCx=S2COxkA6f2^x`~D6wK;kzreP@nh{)p4*Pg#C!=4xCq*$zSX`)5H>9aN;XtFxmNEcTQ9?ilwLF#dOfTkA1PkL1O(CL&^{n*XG8U97F@PukHd$u@w z&wj_pA5}hkBRg+U_lRbc)u}WRdK}NANKg(C3I>M9(ASke zB6)j1IBZTh?-?7uD5w7^uBK4ciLtaS=EzV?tTFxW^~Om(vgKS-9_YH>$`36$+6?WaX!T~j^d+mt0FUk#;E7?A$xmp9n zrk3a)owEgTg(_d1MBXnLS=W>;CdX-->5pnJ)0%?E^34{mz0V(sdks_uN-ep0KWsO- z3n65Q`<^+wcAex~=HTK7IoiQ~CD<$&TVkO^840YNyev1zfc!drBvKgjr2OS3u2KY# zE861!%*3PFuJ3lcYWcSKE{z609>8XE}Zl7cc&)q|_%Y z%DyMO$!NcXN;i0{&;reI)-&G09*Jh-V(+TS_bZ;4m>#B2DTS-d1t(JF1?31o#jgE} z9Ipj_zX&Y&itTyvp>KHbpXH1CM?}Dv;0ueyk+Pxv^S`}vzy&Rc&BDVl6~%JxM49=e zPAcJmJA%_db|_IPSwnf_go)lPpWEI_5G{vMwW)?UPNPyxQQ4PO=?AyEM^aK|8z{{m z^5dH)8hUIF{hjc2##y3jDsaU>W9Jj`cWV!;k9N|%&2VQbAbK&cx&gJhZQP)m7WqW+ zjwt(^Ebwp}k^82>dRB`6M7&g8gUh@1>FMz@1!oyHVNV3E@i(!xq1V){=F%yKY;CcA z!TIdDgKXcxm&1(GqnW+O_nuMc?lj}`Sh38;66Qu`7K|NBj)d^rFRaR#yZp%{DDzFU zK$#xA(^@%R?~ue^^$FJPa;DMaQ`&e07!Hgn6~5ga(pD+GOtE6?M^@0`y+O~f-62xV za2ZG$4OqWbIa>BZqq`#8+yB@VA9xq1eRmtrLN=!9INptu^y*a!(~mB-JM>&P-50fG zFIpcTFp!#E2wuI4R=gDPpOR_}R@=ct-4twi(9gJz1YbmW4sO+2eJht8%i)x8^$@JO z5p1!1Rnkm=UOcF^PnEzX1U(XX3bAQ!IFv{-zz9$P)9hbkN0QINs)E@z=vzE*&o&&n zuPH>33!7FL<<-@v!l>4HDlx@71B<<>1R@Gm1yoNTU}KHyOf-tHv!tUJ7Kks=kuEfh zKlR*UARp$=Ji^-8u%3kOZcBM_3C5mXl$VgZ9U@z?k^$E;0X#jYM>;aPAOBM8vib;stY*mZ1WeuCu7VisRle7D|=2U=(+XQQ;}>eD@?3tb!9m*=PU$^Bv;( z#l@NEA$rG>D^fWRJz+74Mc+2}o%IzO&YU}xP_KyK zwKoH{2zplE#e()CmV^!G@JLQx!7~pJ_%rcZR4JktU|q2#wTB>)Hw`r27K_f1V+@J4 zm4uI?L!4JX^vJ8e!t#F)GSv+^9nVxGm zBl&!~^RC}Ft$rY!d~TgE?Blv?O?IKlth)sD?l!GP4?5MoNj+~g=d4XOc(mnHoU?*M zxmEL$C*d({Wg>OTw3y)ai2CLH-IwYG1wprdxXNjcekDP_PKsbMr#mD`F}|RU-HkTO z&8>>D_-Ssq2M}3|2vnMeb#Cd93vicEpGs_ia43?ySVURB(p|nSK7D%Cox=Ln@$7(x zOQm@5vaBBq%DI#J85F-`!Tp&nw@Gjf^SaNGS0V=6*!I#Tr*hUVmBc9#I#6>dQg7dh zKOUeG?o3rq_*0j2kq0@pSKKS!3LFi^7qyu(DRRahfYpoF;fegb@V3|3N)9xGTbEyZ zrg{|IZ7OGH!BMevDt!r8-Ndyf4Nzl-YG-Gt@-Ppi#__8RFV66%KH$1ptk>JoH&Cu! zGb#t~a(Hq@Xs&Qfe64!dvrx^~R>0?JtvTq6o;9jXz{l>O1wl5Fr)x#0`xl?>;$|=$Q@m&gFt@iSIO` zOtoC7I$krX8~k`2tG*Jb37pu-s~&2`fNt9Rm~v|=;Ba3@kcFR^*RsdeG4DgjHYM-n z?}DCxoq2JvLQN{@M#|idr!GF=upJDXz8U>)b$!!{a0;2DOyTVeTZUj0>Ok9=nYL)6 z89e0D!!lNA;~PsrOcQ$$H?PL$A?1q>f^i2rtH-4%P5!kNKfTf zB#9^bK;CS|=xQAXjCo_;I^Oy7TA3t`w@$lCnQzag zsdXf+`hdCSiJg=Q7lwu;IW~tBAo?&qGappTu=GVaQLfgu8G0Uvh!%7{%Mr^N z)}`iinCfsh&KYwAMaZdM{9PHQvq1a6RWEn%Dv-t#=+rhWz(2U+7IfkhsuLV72ofae zqe#aj&J12!A})I|CT&}M=g#V59AHi*WL3jo8!_xOyqq4G)q#HW;=APFJ~geb-{xq7 z^3VD!>KhNN8F_qNnX#*NNTz6+NL+NUWs;(gR?z<9O5VqkXWxmz6^*4h7&wvDo{KCW zg^a@JW1p1%Ql0NbnIuuH4CflXnXiq!KUD19hIsPM;F?Yp7-K#)5NDcyO*ubCIa|n! z*}zrF#E7%>yEv-a%e!3+SSVeoza!F4``ecA> zAqIlRg$bOgFUKVB&O?1SblfnoiGt?X_d3ZHCIPz-hF`R|; z%b3I6AbQzq8$5|jOv>T)>RyR#zZGhLc;zfwe!ZtzPqNJNRh>Hndcv}LjC#^ZdV$L=Gg^? zA64TDvCXj4;W+W|oC|5@EBF*h_EWH7F?mj{IDw|$FZUyHa*Q!Fre7ZkebYs8sB%r_ zs?C{vp*Pk$4j-1yze1f4Dj9i0`44*nd2*pXKSW6d34;f#*q}Rp4>5Hc{FmCD;M1qs z#<_-5O6neW(;tbcptCF(H4J`^J5)pp-JXVe{PkjqqBV1C9;2nsu<-{(M^00MowB8v z&+<1Sy+3yf*T#(f21XwcG0E`4t^Mx9_!tCvjYaTBe!&qKE!;Hi_s);Mf!g#-AE7J< z#$}o)dWb=PBsVtpK&A>h9rn&lj#g^0YrmXIyLwS5Pi>wp+WWmTeovc6LvuDe_Jk9P zQ#-FKUvEF5u z4YKXQc)BMi5UrHt)-o6CE&J+cvN?(w^zm(EaH(5tG-@a+ z`$;Rr9iciq$(jpaEoK8hmdMO?TB1J2 z+B49!N8QXFNDuE2rHFbl<*BW74Q;VNuV$I%+$mAi<4vIJp{I_Q>M*x@=hb_sM2haV zvVoWUjqkpnYq7>KaR;&!Y}VeqUpq%NL%wv~Jc8WlR^PzojpA*r?TfZCJ1uV>Zr(ZF z3$oxPPa5h-ZHu#jJ1q*RxCXA;(pT&TB)JM9IIgG z7Y);2D7WWd)=G7p88V-UdzyC?of#6Jh^Z>fV(J8LwX61xcwwk#+>zFHrU$m|h+o!E zZ+LhT>)q96vbXuBg^@H;teN@1i5IlXzR@HQW;S~F!%wxRPv70)xStJItA+T|V_JUa zaCfk@rb6(*TJE6Mg}3e|r-7G50H=cHaTHFA*Hd1PJqiBQ;o;V`ZIn$$P91$^2lC^y zQJd#4w8E>=moY66aWNvDN+UT_WntpQr5?tEXC^aior}>c1%R0*A?>Ijj&~N#_h;NzC(iDR|Tva(xYDivxi2XWiQ?}Yz-*i_% z{MG(&VqyOl-6zu!^w?722kkj&Krd*oP;j1Q=rGeEFlsB4nv4|Iny%k4bkls|w)<++ zo&WR05>HV^4gVo?xp*Qj@0y)5AIi6=r^-r_N~7sDDNnW!BqC?*rQM`oD%z{bIGoak zeagn5B>VlV(AO(5X*Ke+V&(GK#;XV9=MjH-)lmZQiri&+7}lUODA7v0SD^FVtjTDR zOjS)ZmNnC>p6sV)Op0lF_P->PdV>I$@_W@cRAU;aS$bB(7F?6i(VQBOJ(d9R!hCiL z1saYVx009Xe{JZpvhTs_pZ=8z`A0u?xRn3O*!yE3B=CxV_fJi|ArJF61s8BZ)BnGk zYdkwVK9<`FHK3&znE(WaB)I&X70{!5dM%g6$4{v5@0LKLxcZ7|t z>4vh;lh@69%s98CY1s3(SojCIhU|RNKAf1t#ZOMVLil|tD;XJClk-!x(6`hCKofpR z&XmDG4rS%C{>(9UG|Bx1{~>K?3NRX&8o%WfJLQjdgNjU&K)q@FI-?|t z^dD_u6MnbDB4YZpLsED}DaGGy72o~Qj+&2jjg<`t=NY{;_;aY^AX_q zZNL0yO8tgv48#YA>SjM#4$}3?QmLuAv6v)3SMMF$DYU=Y5#TKyCcr}0`g2Mh_vKg8 zd1X&f2ZrB9o^77iLN*J8Qkp?H)TWh`rDZdonPFj2R6yMrEf6z1Y@T}nXRDHTzOu+P z<@f#Ng*@|7B8=pF<@n6BWxIx~EIkUm;yGQKjk3el5mT8#by4T=lh3V2*{Um&`{YV~ z{(xt0SlILDf3Cr0-R#DtKj*!uHM_Q5EV#UYSJdkl@z|8{hPF59Oqp&l#gjqQToA8| z{wc7c;c76Sqe7RGl~P2U#p%c1hVIo0KrY`RO!63QD*eFel?~Y(ldv>P@^XQQs&yFB!-pMQzo`U9QBR?z+HD zu>6YukOCAZ!)U=8FC5>DYH|$j^YT>k7JbNGKhgd55UXroA@Q^<78V2%C2q@x1(X`r zN&jkKre{`tYRP)URYx-;oUQbW$>fF@V~K6!PDI!sNb`Si_nu)*b!)q*h=S6KNbe{r z9i&&Kswg5#?_Gg}V(6i$RDpoJ6samIDkTJ@S0OZk00JTO5=ejmA+*pr6W3b%e0zU; zU+3q!&fzClk~!uxo^n6s9wS1efOJBlKiVbGy~%5O8(sCWJ}VvXY(Mo0IFGlFBGl6~ z;3;#8)(7C>`{G(F&yh)KTi$}o6In98-R!%L9>Wm$1-5;u)H0VoN5j()8l1Ro95+aNx>zhdBxUOs8*>QR5sNZF ziZ(~9``QGUC@VD%GcK;0um1Cta%7pubF?t=Ib5o} zn^G`S-ihlgD(Cf7jO2$O&zF*zu^$^Zc}>M_qKdOf`}vk)6*Ay)&o{Xbs>WsONb5ne zyQ`PmJEjI}GIl>UPkkx5&M$^TwSO%L5PfQu5E~oH3Fumv8O4*u39G&JnGI z)*Qik@?n^&q}k3(`KwOd#kES_>QkYU6Sl7hDtkyh36R(%^|!p)icTw^rn*WHMnWn~ z6;2XY-{i>sAObcx_;Bys_rj}kZiek8)oExt@KVQ^S4fKSu&2ff!4p|hL%8vS8#{1Q zT_V;}k$Vfh2Hci={t6oosM7K-{FA7jdEnbvQ{%^#lw9yWGm`xy=rH3vv zg=N=Mx|Eb=q3iX{NLbhqLULQ0fmb>H`4GF%LC4mKN`GfHQypHgi=sS@fD};_9orR~Fo`NyfMg#g`Uv z4#qX51}PrmE$f~4>o{0V@EX;N@s0vW0pn$aLuP|G55%=ii$CvLPDiz79}*4iWP;wH zGWjZj{QfxrS9DWzhbnB}kJC22cEt_A49#cGb>@OWqY`T!4R!xi%lLi;Nu+r&i}>#J z7H15D-aIl27_onfeYzxcggwmnnceVd5G&Q!ou-`(H;KiS8(P7W<)!~p<0HXW z0@ZSZ-jvK&PHO8!3Bny??*qdx=)R-NoqP-Ca%$UESW?M@ST*l+)%gvC=JQK^SdoU` zl5N?d0Zg1hOh(ge*;}gI4}1u&G`Ga!y-7$x9{DCK?amhe{2jH+F^v4JBdSJI!GEqc zLSJ!U>-kgz==l?g!49W1N1fF(!m>CHTejg(bsKD;LPqN^&+^ie3St;$m&TNy%Gcid zwmRiUo)dnWj++}Eyphuo%3p%M`(3IV`5nW7%u|D{mJjaCqQZlDQ@_G>L5({BKQ@_~ zM0svnJi}p2e=F``vu`Tps+G~b9RhO_Eut8)!$UwM)I;%~|6J?mI*STPSDgyaLvtHaJwNvP0#9OG>l`b)v9&5w@=HZC!ILAIRapF;c;kQ@-Jub7 zC-`QEeca=m`m}`7QijhWQ(7)gwC}*y`le%AxeJSJs(~jTTlY$+m+z63uCTtY*UPp4 z_J~*4NNPSqll{{!YXSTzTf;9>=4++UO_uuvo3`>D1+&=|n}VZK@n0iDF+O|4&xS4O z)rq!ht*O02&R;ZJesvkB^>)eQO~4-XAX}BF%mUGkuOG&yLND@s^jb8kJaslbE_{0=;B!8Zqm(t@{oHV#M+ zS78aQLxvu?yAVNjQWk=TL2!MY6}S*JeqBO65mW2Qxtn8zaGU)|s&0dcZU?9+b0aQm zN?g*fuz{|4+*$guhzXMI&Jq+7!ajGTHjuzncv1+p1~}l}t+|)~#@4$9IFJTIN~xn) zw_|WY`)LzKEftgFN9+a$hRd2W;rT4Ef2ws$siC}qFSl4Wi>6{spurAOC)PaUGYoUz zSKH)x;*xY$YYE>#K8-(W=PB3K@9XK_lYGP%*ZRFEuB;-Lz1wH+v2~=|z0pKpGLtQ? z4psfVY1a7W`~{K#u{JIi)(8S z0|V8WD|t)H>nfwyuEh8V;FPA>Cn&6_`DW^3j>_+2@wx>k-WT}q6Z+f^>atP-j~k3} z{4y&VVCgI&e%>^5d9dIo7F#Ph6`!pmA0D-Qj9pCpSQTBWA~K86GW_iI4lTP=_#~}I zG=LDq&fF|J#ghOhLEOXK$l_?wq)HhT;S+W61(!*U=$mp^XZPOADfzF`XK;+>cB=?-n>`?0m&tkshI z?G4w89y><~RH4gX9__<9yZC>+egNi9iYZ3^dFY_zhr42m%8yhpWbG@I^s-6f56^$y zCi)1A{Kyo#b^Npe{z5;X&&u$C|ForUYECHtCz9TG#OBcoe^2bLft;sJ2Y0L;lFPtD zzN;E@KU$i?y}3-j_O&C1j!FwjlFf9AFt2u_)WSLRYv+H4e+sQRUJ4uY{}T%RwMEF3 zc@5W0%!Fpkc>PlOM}FtiHKO3jPM>C(3;4<-?o;BCW*9Q50ya2m8>hSV6}!=%T@!SC zE3fGUsh*%Q_v`%)L%Wc`E-|E%VgFbc)6pJTr9pzLAk?D5RrVe8CEw)YkDJnc zJ*}1Kvs*uTuWVnouFH+yeC3vT03$MA4dMI_E*~7SjM5!Cp)`sgXQ~bmG}WDwJ$-4X z&z5eu&wEc9ppe(;G5YTb_F-avd|f2bU{2M<4{v?A+rL*AKWs&?PV@7GkA z@e3Tv-wQ(fBJ(sn^6=rOhiX?8$eg-i8m3b3VVDQiDc*BTI0>tm&2)`zg)2^d4b6ya zLLGa>*qV3$ByBPpZA_78oKBZL48k*BS7mt`o|12Nd9G?(JyS^Udmr5>Q|P^kxnr2E zz}wAlUcJ&diact7NJc!qoJF z0i`a{T0ap(A`Ht1=I6f7$q6u5*;ho0)P%>37l-Iw1j*crc2D`%_Xr6K7uT(P=J#B} z@E5rmb=N{)3bbzfc2N*-W5nT)I$*||yp8;7ZFt&AG&o&a$$gsTe>uG0B5rqGvN-=x zVmB|`{zytWFzoO`)2W}r4=c+umtA;GvZ-U!v}v;MRX;P(Dp>7a{grslfL!@7LVKQW zGuFT{op2dTvc>u=B#tggghz%y%!|tj9<86AN$lv?`%(?Byb^wVAe=NE_-c1>o1=U( zVJc>M!l+(;;jvu+?W47cXyU15(uCBM_V;z%d2t1_n|0lY#{&SoiJ#IWA23zTTj_8t z=6x^W2tQH3-2dBpiswKj+c-Jn^{QF--Z6Y8c^5%T1nD`Azk~8Enp2{WHE8eg7Z>?X zh#?$N0R}f$?jFa~XR3K|n&+6hTDSdd7jy@S|JuHH+8RX-@AW-Glf3pIB=ntJv81&e z*oeMO?!(EQ`IZAs=BtVW11|&Du6U}Zo`0EckJc2$A|TiNce1Va2pRITJ0`HC^_GS- z{oeg68XiYu)a~)&mumsa2cI^Q zT3d0|0}p-sxk2F{&E{9#CZla2s^YHLHpb>styE*X8bml%x}J4q-g0Z5Zu8t-J^AU5 z7@!s{wo&T7t^K>w%-Ipw8x*+lYoucA`}Uf!;XafKtz)eNtv?*E3lG!$>ZNj^yTbwG zZ>5*{1tc<~^e>jUOWtqiPyH$kFQvYR4{-7k@4-JRR{VW9P!Z?4|2_;a(v+`8Ia0EQ zL3q=w;}r@@7L?JYwy&>=jTV%BVYCQHvL8(6fN2%5s^Y_)axxepQh0_p;(KhJeB)+2 zyY~G@GfYqdZ{35T4ZBn~;pV|-sK#0dQ*&vOLO5(nnGv{%{H|nyfApB#$z4Z~u&wPB z?4F#WVCovz7`SY9)Xsa|N5LPYF~;&)pOyDY=%6!8%rW zdh;7EqyZzR{8JI9J3ZoW*67>v2GlWZEYS;!r5|ygC5uuUhs`I_C+OJ|i7|4)#@g?J zNUB2AlY&ioR=CG_N?8b{KVP|6KqIDpTQn!c(tUW#R~lch+~v~q_T#E9kE?`jQgphd z_}*@~V|PdHC0bft_a(_Uy!CH>{I>2r9KF);<0bgjZ|F;!iVS!RG^IgIONDxS#G$)7 zl{C-@Dyaz)0nvb!`^7FL8#TYZ2*_(qSTq>?(@!fJhhq`&n;LlGa zd1Y=TQri#bPW?=4Zk1|&)XCX70I8~qSIpG#y37LH|9l>(S)iKFixl+Q>`=alBz#9BU2Yn#XUxSQR`TQrNtn*VJ*hAg_ukLtO_t6o zh=u)1;r?Dz9!^>Md2!Af| z(KS>|fBPR+MjLoF#MFK~fztp5fu5e6``$?1X?hYFTT_S&y>(AL2AsYIn0uxSx7$1G zNHe=^W6`V=i6;+K21cI7wbhT#>lgISus}Gy3OIlRqhwj-+>oy?4tf&Ep@L+lxxy}WoDdNCK$+0+KptEN1xY#pI)_VR`{w2_Vzgq?zIizP@j61 zdD^CE(98YJd+<;-MjE`vKu8IR7#@21=1T?p{6dO!@!J}A)B|Pq=w&e*GbQK~Be^Qn z3A2?E9iLhAJVfner_*=X0`hr!Wprdb~#ua;=-mxFNcH!4;0dgx?GZk9hOQGy6pN zkp@@Iyr}>2%%$do^Xe}Bq^VVx8`Yrw4GozpO|5eEX1+LnH}Ep!SG`Y1eNe-!aym{I z&)-}FLxZto3uX6Jj>$h;8l>~r`^IBG;RG!Ko}KeuQs=qlZS46`zrOZNS&zCgW-KO& z(>&zQ0Uxw7Q|3@g?Ixk6z(iFBT3Hmc7GYU@;G*(wRm|alQpC(6;B>*im{vVL@j-@A zK{;(BgkO4xoWD_p4n0V{Woz5n+>|@aPes3^xAZ5!Ow-{5#manXEyjEEqw!BUt*pdq zoC`*4F*^iA@h7XKw2q-UWEildFiqUnZVopXn};K#rjd&svgL5cPrF%az59#&H9Mf$Cd0NBPz(CY z114Xzyv|I7#y{)}A8SH48sCRxKPYp@g(9c>f8v1FQ}Yv`0^h(ZFr`$+wN=Hi9r$Ja z_vqf@p&jY#C$`Hn1QMZ_ttQ=@b#xx|siune85m2#N;S{-j$ClQ`V2exz65B*v`G7A z>`HW;;!nxM8jqdpAox*)a%xyBYH6qjLbxv3X`_E9F|AbTX;b){Zq1X3K8L}YtKqyE z{kh1Gaz5@}V4bDSW`v{LZ5B|66FEy469%+9Af=wRaSv1cvHFa6amTcUPiPVv1!#v( zj=`bs-d==j{gQKVi>*Ef_a~C8ZBpTVonN>~2C>bNs*HIBqkBIm^cAuA#8fWiE1e9i7z{pr zGxOC@FIbm-oo6cc9&OdEt)mc%|8m>uUT1(oFZhntnAp*APXH!ln`fT26qrB?=-{4U zmIir#kXyq~s_+9}ZfTdA_z8U2Z?&9P+tw(rBz;X1}vNQwCI0 zK~qg}Vj1(vHsf#5Frv)XD6vcoN5_&t3?|6L91wK2-#s^PxOu*s@9U>8wOnFuC)DfC z3LmR0&wIETb>NOW6Y5a(p4PI|a~U=ht&0Pi2vR1r62grZKcMV1d0=d_!J-J7`Gt)M zKzI%sBAZX#8(p2JHEJUA3yWn}Le_ar{;l!}*)D05t$ zUxweXsIb94u~xg!rD|-J9N!#v#LV0&m9>+2*gqpD)0VEBiU>BN18D|DM*n8aBoR$W zAHOs1M19XZm=NL7;EvhjW|sy7({O$E&=U5Llblyh0X92XO;s@Sz0UC2=l8^DY_DT? zr>Fx1r5N72qJ9xJ2h-ZWk2;aIdLQ2S7BDUMff|ODnqBSt=Z@LcLYuekQbUSDGiy6Q z1cm*@wp0e{H6hooejm$gG)&wFZt%X{nK?5N*LfL_fF7FisD)ild+6CDbBjyyk;7IM z(`Q$x&K!YSDZ_b+^4H_s?D%79qhH@Lc09!Ubyt5$drnlbioz%FKo19A=l^_~F}vA) z!*i;RvwoKsiB$}8-5VS-eOogWQwBMFWZjS&FX_P=<|joFkWV)mbK~YZhwW9awBg+s z)@r`Y&(H$L^w+@NC%!pFZeTk_+v_%+rMy-M4jflb0WU00B=0q zVn!C&L0foE*RjH8(mpNN$UYKnnk}M-?j`#()(3#vnzRcaKVAC)-2QuYcB$RN{U<2& zaY|}5tKyS^(V_S^wEE2D9_)@NTm6TGfu32v&Ach3RC9lOROfDh0>cFtxQrJ{cG7zq z{|!z*%1CT8l2Z^U^7S?s1^PPuXU!xlpXK==XQ*?5F8@0aQb>K~1;@&_&iAzV$HN$> zr@UM~Yfpa~C+Q2W^-&}3618356PoVI>w=kio46+eq6B58nLFnP zCeg2~%#wuaTX!@ex6`qcgU6UUKX#UPcG)}p!COme>y|z7+Ke-GVGL6DvmRS*oHu3; zDHFZTL(X%nhe&e9HKBsvl-NX$Wiu3v8;jP41ybXPYDuP@%Xgnm)Ar`b(mJr`B^(fe za0WJ9J@=iJENQ0&O4~Xm=(WCgw|-a=ZL5gtk>i_|?(fk~*xFpks6BSE+uUJQ3K*?p zPd3h*(FnLSn$N&j-e_k;{U;TaiN|^RDTQMxxOzX@945aHrmhe0)DG-@e#MH{LbYhi zdtn{|*z@m-CqA;%&!`_XhI0nkT4^^}Lh^fIrN$O34=TKs{@j>IZ1y>@bUeKw@N6IM zE$t~uEtX!J(5o+_W#((|B{j9p=(|L+k?EvB1^8$Y=e)r+^3ktumWM@bs-`Thg4CJ>$ zurD#L#Wb2k|Nf3Y0Wi`izZ|olT-#X_^TZGs0N6ZHPewMsoSTl~2qhD&c^Z;qv#y(E ze9z;npDSd9@Y8zVc&XZy|MNn%t+_UBTx{1H#W_lm%Sv=aQ&jfb=VD|*^?JHet6STj zI$v0=tb4Y<{d~bNTbA{KcK^qZ+IS{Fz1xAdrSqrnsF28uLv9Z19XA>zzIjJMpz2GN zzmH0HuYaDbOK3jHOrkd)9sFUup{sNL)xX9AIE2*eL)iRWQJws9W==*6myvl*Z!lOl zgxe^e;fV)>tN2V}=X>Lw|0OXcbV zcB!`haLK!S%c|}?FD3z^Bc~!wvh&Xu4`i9keJI0DocK&Zi8{Tctx{Rd73r%I=CAU< zO5WLC)OR-t6cJ*PKJ#`L4IDj+PGe&Nz(US=$zHp13fgq94%D&ehQN+Q)|$+Tjt&xh zwvM5w95Sa8Z^)G%GmtEStw$kxet6`t>t+$c_N;jvcV1*)sF8PXV@27~=~JR?c!32D zKH0$T1{V4F;nQ?5aFg=|U>M;4H?tQ1-x?SZ8F>2anV^&u_;FNp{M)z2Po6lcANU@v z9vy`~H8r*Lqk8%BrGTm`cVc29&grCaeB5%24F5ac(uGe;OZ)ik+a)LzisoV0a8ipkI`afyCk-HR?$bZNBdh#>+4mxx`yymJ_iSfuHN3;{4;eBTJUs(O!#Tm-%*=T zzMduE?+(5E$jC@+LV}K?<0pB155lP%;ne93RIKC-eS?n=DlOdXotU{D=jZ2p%bu&< zIGYvP{~1DFpKFPve613*DTAMBf=*;@EpoK#=<2@TVeS90(w!=LiIGuJwYf~gXJ_SE z1#9o<*MAQSrD&yQWyNDK<|3k^R({qT^U~W6F1;Oj&2;JGJ4DqQ4zbVj%&5u>Mp?Na4w_jF>2l%V(Kh6DBDjfPFH&U?oy_}o(!S?gv zkr4|&oBV+NO_vJEU+3bYf5>gfDeu4g&ydr3`Vd@M0F#)xzd>6^?wdCk)B-nJ=mKLK z--0J=A_=4LY%`WIGdjfJjhi>Sk8;ge5uz#hXL@vR02Q$#z>`qc=0}U-gB>%-_RkL zyGyCP`3PKj5GsY0vLpPAFVzzs(+oI%1~*WR)QW42vk0&CU5vMIo82mw!-Nl+{p)wR zCN7!dwtn;5+87>n`-Px6%~3;-*XZbi%&7wpw!iOZWk}g&LFoFKqRn(FP%V$(bYDG- zDJN_FIz6#BBqZcDVLOynnq||i`<~QuGtRlcKyNoL{>Qmp;8Lh6yW2rCIZ+Mn3-bKz z5cM{aUd#_!6uYX&XWD=fK+*_s2bt)arLKZ}CxRPt1GSF&6zfBNg+ecW1~ZuC%CEd#ZL@G}M=9Ca9w;muQoMicBT$vS{Zy5bK-=ILdxuf;^%|Y_6uyfgSt&=t zuC3ou^*rS@G~1qqe*`j^A{_6QuL1#%owHYugk#hC^LQ;AfayUdF0Tk=Vn2w(=|}g= zp;7G(z_JrMu$?f{%7|D+WK5&4Il{pO#&(nHKJYUS>MfEGqRiZ}=F8>ayWI}U418)z z?grf4V$c1*!1DXb2SEb!eQ*oCaS9f(5a0{(Ia4)Aa-M1c$}J-k77&5_UCN8`aRe8^ zWiG&CW4jCxh?qnz&t8X2qzWZ>G)4eRmu#+SfBXtU<^R}$nyKCpTlTU6_70z{pnzt? z*dq@pPWeu+YQi8?hxdh5wHymlcm)tiEo3I{517XbMI8cM{pY&JP%SEy1h*!>SNcGi z>2~0BzgVOai6iIl*jB=s+92P<%{~_pSTQYKl-Gq~_Oh^+D!QuY7_-|xd~o-2 zN|D1CB2^E)o75Lo6KQ%FNYHSU`bS(s# z$O3b3DfX0%a4kotH&Zv-%HOixPFNwc0g2|`uMidRBSw~C>nR~oMYlSw@2 zi=0k$gST*0e z2x;c8Hb2OtcxTgu5T_qL7YCRW(Ok2FK4{^!#N#ZxW9?QRkIV?8P@;hMBg!DNpGN?zX*DVuj+Z-4Bkz_gBBS|K<+&)h~;=G#?$dxp2>qL*RNv z9`|QJ8}QOdL?l&TE`MBj)^>{^1 zJIo!h9{XVmdu47ZPzZAf+eBkL<}va&|LJup~I*XE$nt&1Ix*VCo?xF5#K!0F7|b=nt^KZ8c=Nq}jOH7hbO4icOswK>9hPzb)3>pt*i{l+iy1 zp~o}%7Yi#pf>+8y!*mnL$E^uT) z(*?qXU1bfzB{fEu7$(P%*MN3gyFptjawFHKiYd#i9fR!5&E1=(;}$jS+WedkP70LTdt=5`)VOPe#*W zQiZusHTUbYaM0ymX6Ueg$MenH{&%Qd+s~grPqysRmr;O$Q-$*8yWy`m#v<$9O!Z(o z?BDP{S)E(T(+meiKNPP}A}OQq#qLm335LR;U*r%Ptm|7X!ATM=)K=U%Bri(V|cQEygihHi_F81I$Iy zUfDH(!@-R?{WLFEbT3FvvkG6)TdtYm!q=mMzPx%s8IBJ{Yhr?4VRnCQxz{IbD*)lg z{Wb-Q;IVK<{B11pPQwLQ+X1FVdrVcR?M8hha09yYZA^`0 z4AX+A=UgcMnT&WorYA!wKTV+jK98N;Q(;OwF!j~Y>3zlhoMX)XDJJ~&o-N)ja3YY( zz>}jQ#7TLK&4wySA^ntxCL+xa&AIB*UX*GcblnuKoKTv`=2nkLBqAv90xoONo^wqc zn+rI{^-#4xDz7UvwDJ~@0oQRDUKY;3q8_^X0MK596Qj1gk+mL5;k+bm`l)BAQ!SAv zuM=>!W!>xII;j5H!x0p4hJ{^gkgX9)$ zP%iXu;CUE<98OIY1xcf#c^sw06}HRR(SQRqUBw7EJ2|m(zpeSWrM^mW9T;D?b5)}h z@fUXhiy0L&Zrm5L{pg7$V7@!o0KVQhsRWP&yih^oM`tiaIxSeL-7l5<_fWM;B;c*3h3z08-;>t+Y_E$po z;LQ;gsYa%g7|Pf^F8r4j)VVmKgZ3F=BJ@3pE*UeF(bkD+EcNuC#jd_=We{z!j7z-Z zi9v{c;;|d&6p(Q)SEdwUU~FMHV;gNQc8F;?25A71I>fUgp_&+D!1L=3`J1CErD`sw zv2iSE<9pJNvqu=Kz6QKth6zv)*JBkx=u2}4nJ+uGF?D(@aKLyTWYXVRHSW#R3{6VZ z_UuJ~PrAk4?eWa?6s5&BzREGXjgaYTTD~C`Uc613rb0c~IUB`y?vT@Re9Zv-5U%3L zEmu%oeX8L}EWKtiqc>knxl?W=IjSs#Yb%JssBNETJqaWCo}5$Wli=1Aop|SnJ2Xi> z{@Gty$)2geDo&kwEbfg@mw&3R3y@!?3U> zPBouEu3e=nI0#3u0GA;gy7{PJ5Qea;nll+r>c9_NC@0Y*$F9+Na&rK>xe>F)K{GNs zYDJ9Tyaffo^$t}w;ASDz|7F2H|56C{Vn__hfH0Ba32uK$HYa!fA9)OuK3)F+C`wpF zL;p{YG&k5@hTO1=NuN^^gbqI%Hg1pt+HM$xi| zYAj^^s8UV zwawdE#i$2wU-HBC$`I(d6+y_81`084u+2dwj)9BmneZuKdCD=DeWBPEHM zmD+c|yH*plbv<3e%GKX=hwVQ|yDK7qIQ>3R-rr>jgKz>G{Bq&^VpO_CW^jcNDrPZr zlfp;3K|!_qn2EozfA3LnunMj}AFO`T!i-s4=`A9LRwZ%uCLR=!Xi_~DS8y{TMiJN|3xgJDx)R= zD+C6^@873Mm$Z4I&XtWuoA%}?v+nQjV2kJw8*5c`FwempuZ!xq(XnfE7g_ zl#3-vg%u2Q|08uyp%697d+9+JyuW$vs)Xf2ngecSWkot@)4Af0yA{GQit`B&x6k-5 zGs>ZR(yeW6CHh*HmRT01A=)l3*S;FQcRUeM_*14$3lH7|#FOIXChg7a3M!Sq=v0L`fpcI2*s>njTyDK9-s!AW*amy$WI$Y{NI z{#=G%QBg5lIDZ5D7jgV$*f_VOiW>E18;x_^SR1S848E=4c{Dd-=udPAF;KO$u`K?U+|2H2;Rx5FJ1Ej0R zHa1>;q@=Pk=?W|m{)?q}R9B@sOi8w!8v|&%;d$RqQc@BFvZEs_ z(Xbd3RDn+s{kOT##r)lDU}~a63zY!F16CFmM+Oi4gTFkc(6?qR;PIc` zbXE;p|y}h#|D6@RIYJC#sB}mQ0!WH%V2N%Htu&MngCszezlpL`m zc~BX5FtH5Bu(Z0;8r4I>aIwSz2O=>;_O4h?4DX-0dhVl}T8^r%69E>ks@iwv1|X^b z6fV1}QrcDYeN+ACpLDB!Ko}q9Mil9ckmgqp3jh}uurI6Ss6EisRbXCy^U4suSjQqL zYNt1%v{Z7kHY4F(IqVx8j7)LDBNXRjEd;LsU_}ZKyv4(Zxtug5mi(`-iB)GoE*U{~ z==E~vn16V@Ft)MrP@uADcxSJE1|*#3q$pV6w^Rc6uAsdb+Gi@#g{7Lif?dzq`6vq#Y|wTG2gQf*q#)`Ms4i)5UE#~gD4T}J*w>wj zGq?Z5#Tp1aiMXu=WS3K;my)@-v!m&g11tZ;4VjfapU@aa%bWWFheaQw5>-0bM)!PhMP{%X^C39Wgy-vq@NL2MIS76_Biumci@9NAAplwa1|Cxd&8A)i;i$Ky7S{DO{EyxNh>+8SbhB8RF5@STsk6*tsO>m8LN>S1L z3jCv^idk@g?l9i9q2uMHu~Pg z2AV2A`lY0?ZO8gy<9XqTcX{UeGs;rVFvZX}s2)h{!j&q+TZEWhJAnKD_eE%?!k^2W zB$+fKtk=lsVfh*;e<|$bw0m!CT4Mv60R9Z|7_2+KPpFa!M0<^XLzf(q_gCxWZ53?^ z=)C?>!#5Ds!5doh{<5T9&L+^)!vsX*cwl&p@tRx`YYe=ie>l-T-$#=wltdaJj(Qzm zu&FLRgpK_K*_`*8+EmT#=T1eJRHMD#?j-c!(Q7)N&vj#xxHN32S2r+HHTjt6DX9eC zp;`$gGOa?($Z#EQOJ0rqay|^)JX&c-=c%8E2lbVB0n$^O#t?beCrkP)niXq^?CaGW zv&V%w#6`EUJ;lB1RlFK32$}>Mrk;O=HEF?I3$w}u^&5SW_v~@nqlY?LQshnKBO64w;159 z4u=pLAp{asqXHxOgd4-@xofi00+%EYVbarE@A zaX5&Z9Lnu;RYfT!PSjNbdI2mS*e)IdTIuBZRGs@&SnyPESUz)p##T5?Y03ZMA3(n_ zJPoIA$}DJzB_xyf9H#n%m9UG?D7N#ifL0)MqK+iRnN5Kzf;ub z;YTuBE9=W`>6tX4^*8t@lAeC(3|yr@bCmx(rvvyWWDzXP!onT6oStxtXcGlM=7vZA zo#K9!)_l>RHz06l5Y|JpG4bQ>Rw3b*2;rjBS*ZFyeO^klW*v%*qj;z8;tV^!CGvk< z^G&Ul<+V1`&Jq1xWak7>EFm44pCJW+`~2Uey=X-7=Pjexo{R2W%Q39Dd#C0cXUCS) z$N%FxE*Rw6Krx};&T9r)Ll=VBSnSAO09lOwZ}|Gnn;GZ6e<>MlI2|l1{#ZyyaI-qh zaFh5yN^gkCzX|BEG@wQ)p6KgSKY22g;(bU#L-U}xcD=5yF6BU+l2px-@;=Suj9z~R zDb9WWh`1craTLjFTUNo?=vFX6OWv|AC)Z1mrnS318O^nOH-v>ci|>0O0ianT>}! zp>@OE%0NV@z-V?gieUaTl-Adew!{qx?9Spx*R)pF*4hBv*r)L341%oDElbUq_t%vf z6Oix4^rnP(GO!@0u^(Qp)WAERormxr(6_w{RWL1?aj|vKF)N+YbKhg$3Ydr~Rx7ry zXI)$41$xO+03`W16b!Ut0Pb}-O)?PoTLE;87Pcpz6x6(2{JPV%xPI*X<_%Yx!-L7h zdLZ^r{u>HPQ9KE|Ba;pvi%dr=Y>{{i!pb1{u#rhpdCRVU( zVpX4h{B9gYoNZDPut_1pNwd3CF=$~kr-9NkcS1_f_X;zgJ&ZDexp&ST?TPVXZ~_J% zgq*MdR#wejeXI6DUG~J(hcmroI!RAV{F5164)Fqd=^*&9w^O2n?DzpW8Xs#gOBy}5 z+?pGFR9DWlOl&kc`Rf<#s0`>}N-uL0)4IMCRTZ2eLdt*Ap~y*H0_mvT132SjUau8u z_#Q#$vdD%O1CZXrgS`h4!=s~a3^H4{*S^S8a#Kg_(1{(?;ZERjEUyzI` z@$ol2!@N?!GXE_5`QW^(6{Zz^x__5^EB#)9YdM0Ryh}8A6cl|BtvC4~G(odaLf1Ad zWrqgXU=hGI>DvAHrOCd4^(rNw1e{rU6J4@nQeJ!QTg761ZEAyU0P$_HZ1+vHF^6ml znU>OWzMP>19>~cHY_d7^23@jJe;nKJ1E1<%6-r`=x5#b|rz`}rLUZOW5r9!H1BrxE z@KM8#`_j2M%st3rT`n$G6d@{^sf}mP_{XXr5SjoWw42+`Y+;tB5tEKYNc>a4C*yn0 z#gQdrRYJ#uFEj*YMD19$9uVUehMhbyIsK%BG5gPR?tq{=I^fY|6X91bSM!;}BKET5 zFyY=yhulCbuMS_(+0VoYY5f=a26CQ1C93x>z2&H>mWAK4JdOiC$Tes+LPChvVEk}HPCKN|8TD@)}i_txscd3nwm zueNk)HN_LrGf}FBUrwf>d5Zu*^wVb}nXrDFnj~#~RA#fEd8mSCiVfJFa`dCHo6m}M z&b~R|KF-oxz%iP$*(PyX#TySv?>WAe0**6jKxF`pfzPakQrV4>z_pEKUS^*yJ`z^e z6}X`+{2KCh?9jcRV_Sj8IBA{soVy|Vh01n-1ef6ByGnH0Px zVt(H@%R~x-g6v%4)qR)&Gt1J(ti4r>zbXYiBeMnqVeW+&vHd9diTLER7boj~eKg<+ znZ*Jc#vrEtdDwVij){lQ!WVzG?j5fkieF*N_$~n>ef{6mJIi9Ed349!n$ZGCqq z(fY3!0hZyp{A(sV9^q*B-uO`vT;2LC&ci9s%4VGWK#C6}XkB}x>c2%MH1lFO#h=bB z&{5S7CIVyFPh4QknO*=8V1+B|v5g7%(GGnnpI%kfF2kr_B|WYmg^KhM35qiDvT-`~ zOMEB+fL4i;e?k6yC#=7%Qy<(aa%E}hWe8Xw-@+6g%4^q8Ce=pkkzEE~9Oa&nxmaTufBFD$pa10aQ6F$~ z%BV6Uoweky+on9q)^2#f8Oo0hlBC6x9i%qTp#HLk^G6c&C+J}teBy7qfG*jwb>bSS z^WrLmSSb#U{tNUkk~s?@9{qTa>#cRU?pFjJ_Ch<v7b*4QUcb0%K79p{l_t26@!!W>q~yCJo9+o7(_vkG`5Hu2aN zRFppth(3T8;lmt4skxi8w>V?~yr`t-{azWyZ2c9tSv}oT#Z>5H zRSke;*9NrLp_yg%>!ctQ#DnJ)NJ)NzG#f#hHjKQkQ(XP>tBJRpJ`;}HN+#yU?>AP1 zrUW!Xq5+U&FpwfxKGt7vGQ?LZIUU%xmF4St5KLKmFtu7ob ztCf)iT63quP+PM|%EzZ6iQTnw8v!9ec7cv~G20z=3~V$$GEwmY@zfeC%6RZdjY2kG z@sWz98bg&@vhoZ;?XqxF9ue!O=HNF!vm6eWQ6@jj+rVrAC*-_l8$zBv}U2ZBy|*B^2{4^y`v6ts$p48`4dFF_hPEt5gQ6eueF>m^g&cp z&XPBlbB759o0=ptC-#u8zMn3X|6m^baRxqtzFY^I0$~1HgqBq`Xhxra-f575mOxa2 zgM@rN^*ict{_9AUnU*ShPklZ}i`0~q^+d|w)QQ)pIiQK`*LkTw>7ggFY=#h&urVoB zQ=$q5HP31+gu;Q%ac|!6^piR11T=QYJt@fZT=h(k3ofizZn|d?+!*lK#^nm2B6tw4 zybQqi*h-MTUoSV1W7y_B2htY$1IWZFG}@wCPyOr7`41Cp2Gf?+YU@ggpsBiWetexv zW?srjJbwn;?7$)ywlUwXy5KLe)CPFRvHwfPzK>N;ej;nRG4<|zPNNODkHqkQard5K zO>Jw}FbaYSf}$WTAT|_`PUuBZ>|mpJLhk|TO++aQ1VwsNK|v`Y^b$Z?0)(nmLk~qr zLKQ;ioxy$1b3Na8JpbN5uYdNwV6oO*v#oKDd)#CG72t}iR&Es^85M5DwqxfTjzz`( z73XuDF}m&WE$~V+mcT^um5TgtS3;_^U+?KhhyJFFT=oUD{$DYE@ty-)fT8v?%Erh} zE!*F)F94@VmH~M2!5Hn+9}3Vvl8BJM-qQfof&B<|XJ}obV9cNNdKkD>gS^aN0vtvV z;A|Fnd0w`17P{(|O_|mX6Gn5N4(hg(>O)lAZUzw9{uTpKVn1 z^0#pAl7F5(Lj(kK4r8YY8Y+|f_B*0)s7~JizbLhO!D-ajVpkJys&K+k=E&DXV&OBHe>q`x50PQ>Bae~c_OM!BIyk}5WSigo-Z*Zfph!zlV zD9f94YwA2rFL6i0Y7=dgsMyq`H67@DbRCB)_!!JJCc558>XsrYl(Tx`d?vql4~E~z*S|?wZlh|s&yGxh5Wwu= z5h}9&Y}LQ#L!4K07-f^o=BLIbVRAnEq;XIim<&Z_bBoAB8(t~h4*!fXz^fb_H~8dW zN(Uu4FXgdZ^}QJ?%>W2;v6_KkEzP48Q0GGjf>2W`&i7#Q$8~(UtK-=4A;Y@Bt@G;21_&i1vuMKAejGb}W*D9NVvw;fDe{_<`b$~y%ZG&eUnZ#G_uI36|JhR!rvaKT?+Y3o zti6&pzdKl)?pTgY98<1(s}E*dJb;#@wgS1$bGwEHFP8249Zk?cZ|s$-8Cp=4G6sDy zjHe9h*2*y%8PO^*2zdzg&0qJe5`s^;<;ajQp(Mo>YQP2}O0Ie*=f)F~X9_P2`8*4w z1rA;!h(~E=*!keTa|x;UWi9Ue`)5c4mEQH5cl)D9isay^k80@2)33$xly+G4pWxy$ zk`b`Bjy+~TnE;s{>YeG>K@{WTvsK{d%=y_-P+cvC61=~2?9ZyDLik9|GjmPjMvx(B z8|99CWoT`E`sYtP%Hszwkh2L2ib(si*hZLBL!BkiUy)bw*Uq-n^J<_u*BU0JR^;ff zE2&StqloF&STP9Z<-AMJtogRt{-N?9HF3@e2EG+1DiMmx%gdADDq#b^9=f zv4~zVDT2#fqcoYmei#J1fQXe_+x1@T>dlT_Q*6j?b8Midl~5iG^FzKC9jB?0BS;;w z`W{;tI{7k>f2;kB?Oq+>*W8?X;8;H-=x<)o-*d@6 zZ8?az7jYk|z;?cV0EAYJk(WWH$a&Oq)#Opf9fRA0H;c@0n7eI~5qlZMx%Kbua``P&Hb$0gnH5T`~+kD2=0f@PuLB0^`>>U8X^L2;EW3jiG!jm8r zT@fMVQ|_Oom6d%wP{xJd;O7L(3s9K*#W;XNlbl)zO?3XvU=oeF@-Fuvz zAs{Wi7MQNyBO_H|q(9m{IJIUxqR@)zUt0C!OSgC6`sIJa(GjwKgjOAO&(!#sa2d)pWO@=b4UAoSsd_b_!AW08DH-l8vK}>3;+aFLFq50;zvb*_gy#e3sb0OTPdPPm$)<2 z%#=Ho9(NmF-U5g^$DOD+-Cdq*fLLyG8?KDEZpbz0^vUjXtbJxswliv-;BMao<665> z*ab~rnXW8ZAUbmoQxUXbKFFYYZGWU!5x%0@77Mf?B?S-lWTIk!9*s~h)sj(M?Kp@J0t?a!n%0&v z`kS?yxc9*)H6NuckPAarQGZ5wX)*hJuTX`0*sR0 z;N-udKTlk9K$J@AOLlL^VV_g=Ct&~!r=#)=DAaLW1Th}N2zdQ%WfSXtZofR0ZbO-n z-4mGVk6Bk%R^*k})ZPgMqv)B3-`xX~10`JZz0!RP1P{}G8YcGpfm%6a5JYJmIHj_T zPV(s}a#&1Jz{1Zc`ciTo{>@B)cmd>CnMpx)L%_lq7?*(VjZa%mm+*%4kaNoZZ3OYU z@W?n2#N6}YHqSLy}uEdAg1 zuG_IH!?c%|^dxu1MOpgaa^=d6Po>xy@7T?jDH3aek%u#fTt^!8u*^SLlr z>V`E(Kl(!PuQvqD;SYRhlkXiW#4j%1xTyJ8fDO>#=Q!TB5$)%Ps_t};e4)9${o+5S zI*vpO+Et2Ks)6$&;xekTI+KV-|K<5l9`uEeYM(Z@cDS(V7sChMXyHF*1OV`}3Q(X1 zI6Kxkd2&GQ@t4s7-*i!x;_+Jc$#EOQNNFt4%=|SEaCu6LaaT?SoLJRw;0EL!f71P% zo10xD-DXN$`Z_u?^78U||0qZ}&bWJ0-cu8_QpFw_HC?@{8~xO8$S;uB?itzL@CX6l zVlxx)#n|lxz4Zbcxo-7P*@;WV{{|JvAZauEos~_u@^3jXhBpF%LMT&szHwD#bb*b- zUNs<`KN!`D z0Aa-Qa4;S92E7MRTW3laiv zpoVn&EsK1}wr*+3-W%FmcHYDFd30VG%bRl`AmN3H^6T{^D7!_hvz zTLpq2c>?o=t{G)49Nb6D%GC#FPa##gI9?}Eq;*kHy1cw#tT%~BRMXKZ)8k}%Eo-h! zjluxj)H$=HKF}c)&3iE`X(gmy{@Uw@@dFhCM^B4j4gQItFQ`^N?Oi#VdB-g?W|Lq3 zV_`?v@GuNLbFq~Cs&OXd2LP^nQ!ED_+53vJ&kHsUK`z)htr*1twH=iN|E>gs{X|*6 zUkW{@hOV2MssGULEP?Xb5z!)1$Ab#|&S5*M+~ws0HkS)1*U=t?{J|nXt^XOTtS_Pk zaN;+uR#D@cCIG^%9{j#s;r(*D7e^-7RLy|UFM<#Bg56w|IP9*tHc9B_&8!8HlzmbV zNAu-#=}2zoa0TTsV4!u&Y*`-tFizqgheb`D#CvYWYOomZz{bMmqhQsa z-BuM|BfSPe zkSV~o)NJ#swqBWS)WjVv*z)=$jg{FCa^&}Y-j~Lm|CqA#ffj&Ur%*3$bH>WNUWSkP zmHcz@f65cjg(a;Yc;sW1%y}j?0$DV@zAp}-()ir}qVe1N4C4Wf?-p?1F?gdWCkO8n za_-mahtho1UIlRUCvwKe^_A{YTwO=PV(=A8=}22A+oCkMt(_A&P;^fn2~)hg%d+OS zJ=ixLu+l+KP;d!w-{e?hOj&SrbXU0r0)iTrbY!0M)2)3-pH-dl!zX03*y#$D#|Q2C zUI|%O&d@KruU`hGxD$8%m8+a0`)!9cKqmL%v~okg|E%&4g`fVIhd1}+x9;s6-@2ED z_r4Z*E5D+XG5li>>`YPRpUn7eFcQ2d1FWRAI1%@h9!%m&y#J@o) zRh7Ox(Q_aYTROhRI3L*ISXUI#>8tcJUBRYSYz-iLU*#ebmt?nzB}~AA%Z!sFIcl@I z&cD{CaJsVCw?|7JvUO;WelKn(Wd=a`tin-T_-Gww!3so1^pF)E>|qhf8S&@1cev32 zQT(+OjN`CA2y~Y8%g83S!_4y2a{XkNsYC$c0llB`C1)K7Kq`6V+bX5g><74Q{ciVf zg&LGKl*IZt4_EeUIbG}@uWC9Z3o$YClR;FriV;1e_NSBmv&LYZ7`Q5x#9uyR^Dhz~ zJ~P?jq%z~}GSTwrZzTRRm>4B6e;ssBL|@5FK;8fF_W;fd z%cSC;yVbfl-pt?dYk$9EehPco$xS0&LEUTq^iW^w5QPx|dw~xa4~STt74L*cj7hku zOmi+wQIjjMH$QCp$Tl6rAx8hCSjaO7Z~Zd;vXek{GmRc{9A5q(G0x1K;D}M#{OHU! zS>LbhJl_(+E^+}{`Crld5bdmu;guSbN6(7OMlRc{>_e{qh))kkuchYKQ|>Y@igcFk zf%2cfsBw;;dC8O02&6C%es}vPs5k>y`X8xhyN?XF(8JxIe;wUMeLfyrViFLT@#b%Y zHuYk1YPD`n8IxpL-20jq&vE9zp?K+T+RTt?-nL=m=QpZwUEiniJb!zu9ANXK)#ove zT)m-NRLf&D3`q6S|JH^kHluZK?*pY6z?J*`jVq_#mF=DT#MXsFhn4g!+m|4J3w18~ zJo|mIY?vvU+2jjqdOhlIoqAG9^-jRx^M$xc!ZumnK5F4_3Lxscb0fHx$P<3&&&%ll zY2z?R27=E^?kL#DEpiXasm{$kN(Cj1jmZb4RUat?15rgXaNqs1E>G1(A&jLA{`Gf< zqXl#9fT);V!GrI5V;vzoFQ+UGVC^@eY+(n!1NM+~G!i<;#Ne{sa{)LX=%98n2G7+SpB9`A!Kpa}7#PQgr*oFtKl-7!slarnp2GB}WDUBY`HiR|n(g7-D?FG;v zw{=`}u$F~y9`%?He}s<>yY(yyyw`3~@3d01>uZHvxf*ba2igfun+XKgRB26KUOrvv zHta%N?$Fm9>Sqpfsq0|o&C8u_LI{V>$USS2$$#p(mG3GHatgu+FRO0q>P1fFcqZuZ zp9m}jm7d4I&%MAX7E6}0)*?l&+rC`5*+rc|G9w2bwf=bOFnGdD>7c$ozQEP!@bdEO zT)BU}ki5SLGYTsTBo!Yg9toQi(cZ^Us6unpkxZJ|-sF3^!{u4EF-I1Hivbsk_D;40 z;O@;gi8oZuoN{jDc37+3Fz{gNA5@gx1QWa9}gI; z4b~v`GfjxSCPj`1%LtnMm z#$4(?6^gsg9IgM;2j!x3d3yfRRkfmpo1Oo>-*vtu*Xl%9J>`P1VIO9oW6D7k*(e#Dh%JG@7HSWm39XVan;6S5YKgjHJRpGHx93;K?hPUXKGS zyb{RHvjO8g&Jbk=qFPBsAU!DlXI0r8VD)eAkX%SDhf%H$p;I$+s6iL{JW!y2&2jz~ zq$berLC+k7|M}BuKbo-u572uFS%>Q#INPZO*6m$tFn;~;ei7W(L2)XUJ285=nC44* zzC7!RBVH%vRDCu+>}Theh#)&R3eMK~vpsM37M10d?-m?bYKc@%U-!HtRFzvx0xq>6 z5kWJo^euR%y?p7HP!A`s^x1LvIj*D~WaN2Ms+i-57v!P1s&DA3je|ttPnRn#zV0E5 zl3MFdx0UmUoC|iJJ5#sn6)ZIc$l$(uKReI9XR_%wuBYm;(N5QjwEsq?V-G`2x^tEg zC3b8tEjBc;ZDpsi)@?Q5!W?(Vu8C}~wAB4<{$8N@;rZy+?Ec9%BBoUqsUbLuR^x=Z0iNAuQjXF8)a8H~T^Un6Ai@OWS8F!Zg+j%Ne_TJ8dJ1wm& z`wiXyvi;Gr!SS7C5A`^t{a320!e&QnCny-f9>2aQdaoCA``&HaspwAI&B8Cm=%c;T zt7^(ww!cquPgjhtSomhoNJj>I&CZo>T}J_gP zvv=XP^OjYb7YWYixm0jD`dw0udlQ?1Ne>=rhu0i|7AGCdG%gasVk$rMC4cVLG>kL+ ztfrJTi~C%N=*`ak%DpUiKO>!sE6Hf)D5mp6TEEn0I9{Oa$A`2Ppr8raEZDKh<=K)u zikpvM8F928v;I`Ox9k{!?T+erg9zD=3{64{2zA-`PzALDGZsha;c&_m?S4)Mtp!76 zA@xD)Q}>1zntXLne321solqK5XFGFWI9KS`z_^jThgZ5Da*D%Xf(^VDAF(74{O1_A zVfiRHxYVmv$gWE+XwG#v3imcuqtVxHjw@oPxZUSGtcl>F=iU240hB5`r4MP;LYx-SVNa&YJ#qJ-;M$_RQ#71;bx=JB;kQQo%*Z55xZ^49;)nF!#?X_-H z!`4&MVokUQY0>jf6RuF35c(l8%n}^B)h+YAWd^P%sJbj-Y>Dq7rS3e*RjozaJy0w6 zliPoEDJZS#>Ss@I2N`^c`BP_(%wER>63siFE2vsC^4o|^H&+nbnc0DHM)0zu*A+b0 z6?*Nf0eJ@K$fR=Wg$K_A4sQ~$e(26oFjN_rrsu5RY=5yu!&s=d1hUKtF+Mw{WnK|n z_fYix5bV?-?(Hq~^Sh54w!BU=`Z6E8G$PsE3Th|hJ=UK`K}NEC@;tv76aB%9j9wQ` z25|+kX`s(tagA5xuE^sh-qKn@(xOPJkXO8Sz8JGyT|E6QOD!W^6q4yR<(=8>Ut_ib zw=SC_d$~q&J`J)Qj-aPN_;0c=;M!2!&)WPsNDP?HO&!fFc&xSV@lZLy*mw-OW3kiL zyo}t6a)-z^(vA8|0@mz#7XTt4#~aF1bFQ|4ZdP>Uedg~BX)Hvj0y$!FR-w$a3xgjX zj$|412DI3fuQ|c?mtKGV%>IrU)kakdOdGLNlTg#s>_8X*G=&dl;DoBRHRhFSa4uT{ z4mxlu{v9{YVez)s2KJ5{H(_^jP$*dmT0yR9c2QcWh}7=y8MnkJtP}+wqfoZ%C$3H< z;REc2(>uol+Us$B<~%GT=pEC0deaMaAR~y;wF*YK55-GHz;>!AgTP9tc$zu;OP<|(Tyg{X;;@PIgi}-<~hv0;Z=Ss^RytH zmV`Z!h17x`vU?`=5r!3r6DnJcM|!ngDVk=oadeACaH?+%{7zgJKkh$^YQT`6<2r#H zy2UWgd*epNocQTWDOl#LARqFWYdTI=w3cHQ12t4^T=DS#DA+t#+~`AoFmv$Su(S8- zJxj|-@9l!#zTRYPa9gfo*+yNx77~JP+a#7?Dq?56l_^sQHm#khGb*s`oa*vOd7^cl z>3auP$b#&nr@CJpnxt43AhebRLo!*!@OuzhPM-EhAf?6ol(|41@xDCS&lD592@7hMBcyKo{0m zweg@KpKDHJ-@ysC`NU-1f#H4LEHMKWhPqO}Ket8IHE-`vgK?(H3#iCKW~_T1S!KXw zaM5dSa7`j*iuufDGpAt{yg!BSmzOzw zG<&<#r0|4whe^?N;^o$zeo zAUj_mB*kTR;%12OnS;kVFL;ejmrBFtzg~@xRNy*Iq)_Xzgw;z;^UsGfbc4~ zAHium%amFAa$7c|{K(8eo?8Ds7Vk0>P$;L;g^Koz+ie|U_nZ$0%t z#PVNXmW(GPy1VMzKY8o<@&*j#t_P|q$F-58mQYtZTJ2x?hE?%BEMin`*?z>qYVe)oyZhtw zmM3Z3Q+=7ufoRuFFK@V?}5lRLDfw`sk zBsQuJ7t2Ow!-&Uk9YkQu<`s+6;D^o-Nz3A!bZMWfi_?xcNSCbkpWQ~ouM80az!2IftPBS%CTM7O+%i|=cem9nh=FB?6Y&&2p{rAooc8@n9miW zWfes|**)seT^auIK3XCthx?10KnT>RJCfDjX{8EbYV&b?n`7*|nc`a=ht~_N_DI-S zyFGU|qoaVyvadxdSe`dMgC$)YF_Wtz+pqK9wbx$d>{{cEdopt+Y1rS~M<|hmOe3U{ z8LvTVQiQ7|5S{22!Q;K>o7`kOkH1Q9+2joVZu+e-T%37tn1-fO>h|@kPq4TWOijD| z^GNJLCj;)%5VIep)w*^)MPORWUwUs=?J!k&d_@;$88|!FzAKiIonZOcW)Hf1zIR8K z>=*=~l%J3c^7sh`gc(qiIN>GI6};EJq96-U1a@ddiS{CWTXF=94yUrK=<+KQcz5WE zj&Q?I8F*YD>*_8lcey+Qrm%hlY_b7sJMF;(^K;HBT)yMxJ0l*16Pz{sy4pt5Cntg( zmgxMFikFBN=p4S*z;doFp`7nnudU>9)Q|bgFoP7U6wLyowprr|SP?JAvYlN1wROk% z5mTm~2MX9c1Ro~w3@DE_w_g#%U-B{>w{A45g>|qzWjf1Q>XtrSV2Ly!K+B2>PRy4% zoFsU!28U|4V@ZwmYocj*vUI?*;&W`d=>uyX1%mTM^J%nnIkDTgiCJ-|<7|dT0=BiS zjR&kS;aYal(TGU=nprhm<6FmN4W_h;NM4yz0*VW098Os0EHxB9-(CErL!3!ATyPH) z$6X|(yxJ1NT@*0^QK`epUw zltFYVLH^7V9iE$kKd@mj><~A1w=O4Y>DBW{0}B6=WMsIao}ACNViZrUX+8^k4V0Hh z7tYUn9?E@4)VG*UUi;d5wPsp{IdmGh8?7miA2G>$$hmuJO?iISUHUlcE%w@TB^j?F z3;raaU-J`LQOh4ZbBamFYw>95@r**>F4>9!l<(N}WPG}PZM8%DhLlq{NaolQy(}4tI zP>_^GKosG|H9lBt1Y}5bpv$fP65n9LBw$+j6rAZF_jGmH#KqPf{}nhtP$w3Kcf?xH zm2}Xz&4`X9V4c@)<>uHwmDbjEk5-`YCXR<%)3AlF=+x4B& zicg2QBVyq67e86%=OmOz;#Xy$_S4rXviZaUZ%~ykB3wnEu zPnrBVmJ90Mj#ovx3&%OjIE|D|GexG}<_HlZ6?6uLA5c-y87xWhvXqIKWPwj|8vIn7TAwDk~rAa~cXZ z@MMr5MLj-Gq;RI&p0r3ljen}7c3dDXFi^w9E8bt{IH&lAa3K9yd&*4i5Q<^?4PmDJoqK!8uoJ_%&-f!{dE@?JJ;|VV>#a9$jrtlQK0n1ZI(*!O!tm~Bo#Bb=+LmWtD zqJh&|a-_T+5lOrsPqXgeCoCqMw(K0YP|0+Ffs9wJWz!}m?>g~B^t+T-zs_Z$M3;ZP z7jkkK+V%d(%0$`;*qW!k6+p5(Bd~UUI{db?3DVoJ7{$Piyd;dwmO!8sp?-Gds=P1? zNx{MRkdN{$AKkV1`9xQlD$zZ)@hA>T;DcSvvCK}A;4S*)=$4=Z57XGDg@5Y;9{ z4o8b=TIM%!>I^fe;D%oRxq-R|v!CH9RxlpKIFn@dj{)le)3y*5X31vvSv_TX;FU;t zvoZi*S-~>LnGM}6M=oBs`Gj&15~L3)F&*$58JG@lK)P%M%+Xzr9>6j~4<=)o?SGwg zieVBPvF2L+38na4K|n}59r6h$x#vpB@}?a#v9}F8=NAHxHI!TClqKq<)64sEEBUW| zHDEYt93*W~-ItwFXuMVbFjUERm#f3D+)6~PQ>ew!VcipILoe9rbA_ARk(A)JqVcw( zZJ1axIKbx7?8kzmF)rEuvi!QbWbju9CepOxZBebm9e2^>6t6Z5XLF~VM#n)#Yw6Zp zwkU!CxBtLkkPbdTY|ezcj4VxTH^~8ABNRQL(X>f^8;fttX)s#ZYFqscip+|X>NrC# zs(3r4jHXHjYkQ!drZFb#2pdMpjQns)>x8Ges?18Qy*4%DLm-W7VbDiE2R=7qERAn} zbBwj*UlQ;g%+eiKBpNr;2UOL?jMU&TP6Uny$7*c$&6TfQ);If9n6I(!3IR&IqGxrW^49v0)J9fT?fM}>U;JfweT$sUEkB1h0N z$hRekWJMKI7d@wivZxNlT%>V%im8%oi7)D$U>Up<%r8KzCSzZinl4aCZ7@%dGa>fE zL_H_DvYTo4OX%mTjA^HfGUgtX^_?-c#O>^~Rmi#}^W~uEZviFFQ59iG`O(?D(@5oy znz8paQZewLsUD(Cem6Zwb`kjvmX=qA??P7M$}A|IwAzyGydrxLp$Fxh^7=8d(a^Yv5Ly zMU%GMApOZT`EjV7Oxki|BEGMiaJsD^40mCz@z7IF0Uq@Cu-Ic&2OHGStUVZ)03Rbx z3HSh8+WX@|(GE|U<6<0rY)<)goOFy@Q1+^Izk&n_?X3pswOupVd8Fy2i@Tci`eH); z!NC>QSyk-REbt)JNu&eBz9zm1++0gi^6c(C!y`QKn*11uN1H;q*=)JN21xX~f~a-o^+>gJDvMABlJt5#^mkGn&ku@c=#lMVE{6|egkhI@?^Z9V93p+7bh8RLY= zfDginJHQ9tGbhVm6!*_p>?!OYP%4gE|qs`g3=u z?;&!kK;@Hmb)4F3R2l|z%p;0RP}ThAseHapvoP93BV-Bf`98hD<_54}UA@th4_+x+ z6*4FiONNy7_{JXG1;T6Tc!h-)OIWDt{E8xiu*P-IUEgQ&Ayf|KSGiyLDwrJMLrXE^ zRY?tk&_3XmlzWa9CbbqegL*#2 zrDkdUpxxVW9+<&-b=1RHWJlS8 zvJ|cVL~NSjyf7^}r?ebWbkE)vG7#^5NCk&6t%IJnem1FpaV>z`jMtMq)ztr!Y)rb; zR1m4g=xV`hyhQ$zn_EAmO~&k)))h2^QDu;LX`kZJrT8{E0y(s0|qH^doPHw@R8&Phh`j2Qs?LJ&Cxskrl;p z7^2<#HMCqS37knR>z$v=Wm7N~%}-ML#;v?34NDvpYm9ODOkh&-^CxtNHv)&d&ZE!? z7d^McMLF#eMNcm<6?~jd<>IfcC0CnzFHS@s_2}F(9pgMxQc?yRFKoB6j8{8bKw}Dv zvbIbxu5Fj{wL`f~H42^99XGvdPZ_hgAwEERp8egB^WZ>(qZB-BCk}fUYO!qfq0!he zO&}|m$<^pkLl;9@xgyw87IZKg&DV9i6fJk;~Z!>Ue!MIkfx9){(lz(O6f zfftzA%NsmUB8UrX+DZBsj|`cT$(BQ)>JD0S(H@Uy|c?!skI0^0?0 zFIda8Mp&Y&%^Zg`f|YHSKE|=a|>n{ z<7-|WvBltv#funghyfo+`U#i2xk7H$i$h*@-y_o@o8n!-^^!FCZHo(j7%Fm7xwGqs z(tyt4>&NEA2kHy_3p>e+3%Zicw-yN~l3XTo}1b-Fp zURjgQDd&(2n5|SDg_U)lHc&#oP)RPc6>Zux8rDq5!bjTHZiU=cWOm8q*iwFyG84%>H*z@I zCf%Lwt;~Y|WJ{4lAv_Tt2>BW#g-kIhaf+9F6d&m>-dEwZJq7LX;VxS$d#z&@^iXq6 z3(%yO58v;hX<-W0c92Gj6)a^U1bU&`PVq=i*(LroLpO$rgdJfEa%5t|%Yru@E9x^r zZD46+91>!KrWFWF$H{4OD0$Q0^0Dkk{)6+SiMP)*oVS5Rc%}lpBJ65j0 z*rGw8hT?+jsHUG?<$G?wZfja~o*~H1go}onS{(9r8SHV2b5F0@>(MP(=3qMTJ$V;~ z&BFQdp7g4>migsLc?#Q!tDf%VBemEfF5Ew4xR6tN48TS~&{Rba4(wxtx8C5~F|j*o zz&6X!LM_Z6$te+vaZPzjFW(82;GI_0eOwwL1GW~~F=_@GaET6I_IDh(C3vgbN&r0+ zdJ*nBJwp#(Jp5Q3`b|l@V!W>O1Ei%~lO@KonNlbW8>rjzn3_D5aO~+r@vJs~m4y2H z_y;<`k9v;8QRmZl8=)bPHjtC5BVvMn`>fVF&!x9h!%%Etqeb1cDuA5{_$Cim#FMl! zvhXm?d$`6+5zOX!Hzqg0m3 zs7USjC>DBnOSi#46ietFCY;+}2IU0B+I8KBwml7A=`D4TOp?bT>t~H2*3j!eNgq(p zn?M7Xj^eSJ^mB)K)D`U#N>At08n@JyN*T9Uj#6HqYgx3b2rp0xxRQ3@krQu&53IJN zW08cWaJd9tES zB{btK>i%0D2%uajjnm!|L_Rd%apZ$SWaS3y$kAvC#-AsA3R?#}b2*h4ztFUx$xW5V zrKDMu16+Ma3LC1OnwV>Nj24d7f-_5oIwUy8F{R&1_A zvU-PI4|6%aCtYoO9@`?!A~9_r0eN|(-1}uD{JUe;cw=gK|W&DR%!da~Pdwf+G(iL9Nrp8=m-9sZSE#_DK8M zfY_*0E<->Xgack>`M!~Ul)9ZHMn+Eu5a%F<7UVMYb|U_~&`Gq;5nsz?W1At~iZ-tz zE9fsb?$HA2Hd5k=T+oQl5V*0w1w-wc>$33g!Qhu_L2+?f2@S-5#=o;FE@G6!{4iI*tNy~2{Hx=UsWG*t(1NUzbQ~j3XRRDB|FE31q_WZo4 zAz#Nyc4N6#^&aZ`i06(izVaX(<9;^iQb$vS{o4O_Cq|a(u=Ce;a*`R3W-eLX3i_nz z!=;3dI_d|YxT4>_Vsswt41IOw4&O~`q(ieU{Dai!3x6Czj2eCx#t+zVQr~-`E4E`x zRqUDD>M0Ltm$$&V-<#*_Tf8)PPs*yK(s}mt|#y zwXr`THF(4_vF-%Y#wu6}o+>U3Hy-Br1scM8bD+D8_thI6z7^$%ilbA@PkCj^HNhtY z(3az^B?iD;M6JecpidPG`y#1&HmwL{HjEL1l@GNj^WyPe9f?sp)9?grTrURdSoR6d zHzuA~_ox7PYLq)NmyEg&E+({wXAoU}JqV!)4Hbr_onTh8pg7`XPDdLk85f~^|Ww9JDX;+MmZLG>vD>v^howomlX_#`KPzlObU3xarH(>Phmo=L)<+5{ly%EN6W= zKAVou$%%_aT@qrww_e7Dd&>Y>`(~=z_^g46$U_+y6KYXE&~nn5n^9wpG#RZ;LRFZz zcO2=CUN2b$tX}rY^<+YX#FTY3rvB}rOWYk^TCCVWt2)~?UMX-Cz*1#J3WcolGw^Kl zQC{C~sH-moMCv>)O9>rA`!t8MvG~?bg<~U=^L?+o49(!8glrv1b@g|b*=o=t zvaWp-l4!>yH;`ZvZ>D%;CSls4O$>S1s7f+Bgu>rv zn@S)g?}IZ6Vf+ZROokVk!qJmA%3~Mj-Kfsb{Hfj*;U40so?18fP_S!oRo^KG8nVC? ztBahf>GXN0hxCuJ9Xa`YRXGc+(Mmau;06{i4L`#A1o{^SbpbRhBuPW91JqOXY1*I(6SG zUU^AJ4D+g?>tB+^nU*RbZU&ZPEmO^wSl{!5ZiJ@&X zp@^UfybC;<(VKXTn12>Zxcr`1ip7?xaR90!weX5~XSPX!Bps2-TEtKi&+Vlw{^b1| z7h;eBWZ|y2km@E^h+uLUo?T%<7Bw7=OUFL(7=YbWa!ThB@mttExAQ@Q7Scy3k2Kj@ z^E5s(t^%gXf+6NEMivs{&~~1rJjNUaYw}6uYc-ToSp$_nV7bDAb|RrAAqI zk#11=b}8x^p@qj6_EYU5JT!1s{s(E+j&L=kT2gTVSNAT3fLWgVWXd&@Sndeto{DwS zaJWZkq4&+jAGqXuqF{zC{z{-VQr9U1?ab03C$QEw85D13Q!ri#hZ+vF?et~m%25o` zt~0q4>^q8_ecE3^kx}Dp#wjH3Qw%?jK;i|E1FjSPrsboB-NPfD6_AyL7MLjQecsap zE|{rl^!V44lt7I-i|oSiE$JC=e;fvPfeXs*ZQ)Sjp}GsjIzM zvi~CP!hK6h@h8Dn3`LWO>N4R;mi%uZydf)_K1b9!cy zJ*o51kK-HAG+I;}#erT7Zyd2gGZTO#hze*bmK70M(IsG20u%N0I#+Ss0z(S=RpdFv zf|_q@V!kTY33ado3K=LS*l_GPq^wsnvb2FeO^<agcGAyt8NfM%T2}YR)r_h$&D)epghqJDJ55dpZ~`z=X@5AlTiX)@a20CG|5=a50djCB~SKAL7?UVI?IIpJ2q35 zS3oB@PIXitta#b%m1?U*{efzo`ui=GN4Ym)*pT-VZzYJ}q%`2I;7ot(Ws{{>+`g6d z`7WSRotXCrpWP|g4QY@fraJ$MYuSAV=Fu1LCmpnCZMo98@>@nbT*X6g@Q_tj%!l1L z@Czy1@0l%uS>FqfD*9|QK~ht-zoI$vDzxD@U zV}0t|W<-h61Kn2wUqqun?mt4x_GrZHETaY52LYrjIgNY@eH7qY(bmbk?EJ50Y&%P| zuJ%|X9~c-o$F7e&e54-*ZlLAd^-n7;C0c)<79IUqQqnF+W&m1XFlPV$2ac`-{r~TO zjgi!$`k#MrAc6h&FTwu|{lER^nKXTP{A*Im!ShOYdjE8v)S>3zV`hTi(`v7|-ObUO zKp25~MdRv?XAElFN`Hp>c1)m#aDU9>w2Y61KLwYt`A8&-_eK+DChN<{`#-~YsJT&M z2UO-rL7@g0c4-dXI*<#@vK&mme#yI;_s@*EZ2I}*ghZw?uHeo#$~Qgnb=g8u=(fTB zYyx-LOSQ9`TNIN!MutGB^GQpq#B2HY%YV-%n&dk;<+D>QjK5d)UeD%}2?r;SPUvfs09PrmS zmGgcHl)crfpsw-y!5gs0lJf#eDBj57qTl_Ogau1@fz%Ut#aTUj^5oI}`B>*^N=ixy zP9G0uzTfv*|KARtXB((|;Qp%oU-m!OEo8x_0yYh53-*2HudCnLuO?!;31Y&(uIB&0 zXD2v9>0f6Q{O`Ks>meEcoD{cjqX=H-pADzk<=e10lrz+$Ka|8@9$R+~)DZ zBcNZW`!fd+tE=xbGig>G2{My7B7@En4k>xuW14p^WLw22dPRbh(W(topPKb>bkMpT z)Gr2prfFeW_4s%R$&r^z=ym-OX^_P{5qf(CzB$iW%%at_V2dsC)mhrg>QYmARPIk#&F#qa!a!^>T-;g zIdPmWTMr1ufdKaMVQ(eXIeTnNbBR}qk#+lel8=kW0(;7x-yIa&OFluCMSJyaa&BUQ z;}Sfzn>2YDju&Qgn(kt!>(uo2Xmvr^L!zyCXRD0Gu>_O(qXR zU>V_zx}vhG_*pagxtw~nS@&{DIXG2PYc1-U{ekH~6$WH$^^a#V`Zq-9$NEQS_(iUC z`VI9DM)WY071&dhNr>vOwzol>_vTmd>tsqrn6I$~Rp1{8MbTz5rwo-bU#>_OEgBt_ zdtm~F6!Q9CIX1ApB{dXaV5`I%O_}7f+Oh39Hr-K2I`kSYxI0@;Cu!*%BWC-ZCnYdt zDyh5o)$g00DD0)t288i918i4u6DP|eHgm9iUACWUAR?g(c8leJXFad(uk4-F`L3cb zS@YRgu_gep74doq>@?8>lYZsHENN1C^(lESsr5?wK8K~{;Ip!VGF z`frR{b{TKfeNhpBiyPur`jE#U0-(?DCVg9Fl)& z@;UFOlTjA6U;#KB(A}C{3SIo+`~$vICuuQbLDb4{(eL^x|>x6ZB`SXMm_AOYnv(>~Z_KozI zd#}Y=33(oJA3=Q9sWDCZE^5;hO{@u1g2R3a-UCukzYxK8U7I{`;1M^peN!O6X4_9`a+qwhT{v3+4q>pxem2>~kjsLRem)-j z|A)EvjBBdt+DDZtN|7SHsWhdA-ceCNX(B2hok)`|y#z$0Nf(9CMUbLYQ97X{Bq&W3 zA=Jwfw|ekarRezH|EL)btvZR{LSsFZ%2o(?0WJh=QY20 zGah-~HPo7`%2qvk9!cuEV&?d{^dooR+`#3%1(mRx(5AhwmlY1!um9!VTo|~N+v-iZ zn|I?kiq}f{Qo_D2*O5k;uZ_kHCpsQQ)ikG8EZ9)v!G43WjqLH>4g5V{|I1amTG4p3 zxvgarmM`~cZ9%(R{uE9Fw&z+buHicE!x|*mAdt2m$SxblKyF98TxP1}(9^cApTCob zLr1-L&^|&MCw9aAe`{SjZ@hR*m}7qP%c?D0mFGvA_kqNKRde$8A*1hff|~B8zzN2y z2G`@G-qWLy;ml;C-Wty;YJ7QXg~u=1!EDu4s`EqE1@F1YKfOI=%K2K)FVaejH1YHN zLH+!L2f2-QALmcENmdbZzhVH>4tE1CLgjr^**|Fr%$)KOTCFdOm^knr;37^#0;_F4 zk8K2`k9pQP_8Po#*LQNtl9U7fS@!iwxJ~Dpa6R}W#P#TbCmip6sp{*%;)p)w_dprlb@ga{EV{&&@ z8*M7Qqa*EbUp2rJ6Pb>cR@o&=K5S$VFnmOz?@9#5YRXlmg^CakDg&2lJZ0H;!k667}x|2%Obb z?CV(mh|2xc%FN`M3n;Bm)L?(QvOQ{u@O0A_mdZop5DaQQL<`j?tFkhOMCPD3w$Awx z&yN7@`axN(Oy_pw@!LFQ?>Uz1{i7aT2U7`~TA1StZVl^QQ<=d=e{7O^MVahSRcw>N z8)5mu*wSmp?Xi&&NvNdZ8wSGLEi5=h?(JN6p;!yyl_je~(%+lfnAikF6qdm#V0yr<&qvr6=ZdoEwa1@6@x3%bU$27xj(Y@6RD< zLTe!yAGT4yM20=p+D=$hi_Ff%S!Kcp{Bl_f(ae7CE#JmfQAKl^^L2mFVvkj6N`XnbgaEb@7)Rp0n}}bZ1mXXw3yDVVRESjG|S+1y9KpeFg4ZJr|2)i@ud{ zBc$imeTEYH1BR>M`I>9N7g$P@5C!w>ACM|me_z{Pc0%6}lCX_sSRI{5yeoC7_;F|Q z)oh$?GdquBMaSl4ZJ$|-vvu51&26>Btfq^W^R6Z+WIuMc{+2y%;A!!i)+@f%bQ$mcr%xZLL>A+xl==(e zw&a$;^GgiquUL8RXT37vYj(N%pYL?0*KsO7<=rS@FRZ+=Uiy`T5ZFWw&X}`;*3?T+ImP?r*rQ83YYU!<~L_P3?t; zICl2rSf1Cys2gLR7MTT(bvWMMMb~(8#W3aZka zufHwQ$Bh@&=@!mGJlb0AVW?{C#=iNPR32eN*C2CUI4=c;zt*8 zTT4GY>3KA`ytY5ze-l8R*-FLZf2s)Rj%ydQA9Tueq+vL@`M|=Cv|6)=BG{X-hpa{%hy{U zdwV?t09r)2o*-YS)$(xdM^2?pp2VDQ7jqhFA$I3t`mNj?qDMLEXCfj-1y&VB!AIFb zBvLP~apyJPBkmgTmb?LUrPcX2O`?Db+iLQpVnMDfppe^St>pc-WLlO1{lOl4jOZOKq(eo>Fx;1PdkK1y7p0tN|9dPieAuh7&rI&0l zs+URYtj%cEV4vANYs4xU+iP!2@oIkMn2#kzuRG_hZX?gT+sd46C$T56IuBm`{FUE= zkPO~w{H`3f!}%Cti0n$z)mlA{DsM=hC(Lg3YzeiG{|&^Zd-7vehH*vS+u`rwuV>xo zo94ka8#|_f(LkK`f<@0n>?>Vyh!8!AhsU__rtYp9{ZYWV>5;EhC zB5YZmRB;x*OHCFjKSuXg2JQ7edm_KT`whBQeiT@pw4Sn_sV16wzM!Dn7;~%zy`&}J zTVjYvHTk_+)k8BZDb_c5^D$C9QD8`bD8Ny;wrD{*cBa4AHpGjIl($!|=hH~OTckU? zG;xDzib$I=lTwRM&3~7)))xpR0b-We7}lCc>Zlq4hx;?($gu_2eMlF@)69@3zM3YT zcyUg7KUtd$v{OTXv==YDx}6c;wP0GddJzIc4J_8lc&z*UJOB9kY@-WAtJWOe8Yno> zFd#NQXX&+kr7hBtcGDM}LTm7WdI``1W6zuvs6TL+-$kOUu~UnNJELreE1XxJ|6qW} zYa(Bvf6yv+gs=-$_Pm(fJ`!paK6fdHujv+VlNS0kUnXjYFr#8ssqF(h!iDO!DdVrv~8V{GW=UmD$X5J_~ zo%M+|B5nvgIrK}?ToEGXkg=w7r;V>}cZEN1>~&;%=KG4@8XY-4J{S=a8Ykec0l^6U z8JB-&AFxJMp|ZH12wav8Ur1rrqaGN1$Eg-}CSZ!*p!-n>SBs**K9beHE8ZJ z@_XpgZ<*jNleZb&Eh*24Dm9!M!^D@cUBd1TRX9&KQJuY;$gp&T3>EZGX5i%$EE-q-_LaN188(_t7-#aC3XL$ce&SiGj}Cmp|wxf4RexJ&irh z>s`OoKg-x5GddC~md+dS?_E8{cpYnz@8!Y71OZSp-8Ut>E6iWPK*vVl3@^5*@_6He`j13ItCv6bv?fjQJo*8Aw;L_SlL{aDrBdTL+<6OCbR zL~X5|e$$@ZZ;|UVz+LJ>VZB;0im7@(;l8T>{Y!v2qY6=}Z7Q8XCH)Q6K z{aVI%lFD6uG|J-+Fguvv-gteh&{#03BP}OusXXJ8eBzO(vW=ON!)T&?+{CmdO3K01ZHbP#!q+hZ715l{fz5q zz>o0o`)AhLcG<7p1wmWYWwuwgOU5``>{<@SK1&h!X(E)E4{q|key0Cx za}c8iMoA9VY^S(Xig&z?K-wRDpXq3$Ua7Vbl*2ICXk`DGo-McxuE9Aqw*U#7N!KS? z^$ZtXIZ3}8l)XiN4k1E(JjD->G`Jj%tf9eRX{3RkyFSutQk{-9^CPq%#WO!Pe&bv* zVbKe;KZ@Hb6TFyS&#s9~p+ptEFTdn$hIEiEeed6<-o|*fR7%G!0mz+pSC9eTAK035 z<^H>14tN%z#@W$z^QiXd-Y1K}Arn><iaechR=sv)L*QTa+7R}VYUL>4#L(8!`#o1*%ku)Wqi2g! ze{b?TKQ`2Luw?moNni9RPLczoB7GfMoTfFS^TaM^*l|*puK3NkY9AMY_Koy}+Y)!* zU!}5MDwfikgskRX5@{LzWJf^p!bihM%*j!8#H{0txZv(D_MMzd(4^?QrCXo?st1xK zNr#jz%9h_bK8Xj#Ge_yp?!(`64#Y>+^WgmCJI z`(iA5zB)%tjMG?`Le;)w$VEmQCVEM)a)a);6P%a2xZ9n9Bl!L?_AJ_$q%LLC7#BO} zdq3^yqBafbwIR`X_SZ+bI6f85Yndt@)_e{+Cy^QiN~I2o&|sE!CZ1#mrAR*y)YHVf z=Y{eW2abo@Xdhg4K#}740w)E_Nta+JkhrGO8-L&NEi2h68(B5JNRO>A!YG|wXsM#! zC|r0)Smr$DSEO*f8B1s@65oQ)m|L|6^OOR>w*eC#^;Gn|TltT!eJvR3SPM;N5mnk*dv!}3M9dSY{+T1+Y89Bzu%(1L7xuFpto%PDzG;?;O zpGUdIk@BZ;o^LqZXvfv!(bVb@>Cw(9p7VbzTN;CB1!EHP zU+&1N1+22RR(Ch=uW;tP{WUv%7q{B$<9EVn1(^m7p@JNUA5=I&(qogD2f)%J2`oLn zF_0+jwTI(Rl9}NVs4b4jmD!x_jd|Pllc-6Wnf`;MeOxD~(I2NNm8aJ^(;hSTSSQ-l z@txg9nU;+6A1NzX7+tTE(G3!^XengB`+#A81qV`&*t){FVU;3qLX5EQ{rK?x$8%uX zh$y#mPl{_tG=Tgz`yHdBP&b?`X@ivS3osH@sEFf1C1rdox^-YR;D>A?cZ16241^&A zNs325LglU=OVA&#b5v;gF)LNs-X^_j->imSG8#TpY(155ti=G2PsmKowvE(9jm~Fk z9e1YrW_mCF3eIg0p)F7_^>Cwn!|FU=uYM<=XEk05uzD69LIX?^QKrj>o57aplwF=dkjD`^;-_-G(7PsLeL5vMs8(Eie_!N_4`ryLFWEA^|u8rTQ$ z(KD~%#Nygk-fkX14}Zxc68CBGiupTz->hQ4`8t3?;UL!cPb`e9W(G03cEn%;%mmPa zb^{_}lZ_l&^E$uFC4zrW*0IcADubS{2s#<$L{5oT&2_iomAyeSETta{*+P{h zx)K|^gR(87M@r7GjWtr?*{eEs6HuG*8M>Z|^TU48IDWf>u3%_h>Z@L+sg;o@&r;`x zhf?s*@@!4x+uRy1f0OyC_s}*wdEIRfYI5Jjqw`OZCCJT_!pOQY5d=O)4oT?aJ&hx=`c0enm*AvZG(u*!$_cXX^k{BG>hMp)ViB`#@Es&x%%SpomMdYfswv z#x6x7275p2)@lm>6hE9gO3+KpakOc{4Kv7RSC70TIujhmzh)_iuY>rlRATmDDFbp{ z+)UF=gs4OMJ6@i1(xU9>=ZBFk$ODE)!B9<4suBOjK@;(fys@YP+CU-yb0cwrt-s*D!@g^Y?Wc;Nc3 ze-wVQia{UbJHorB8qUDr$x`yIiBUA5qHAZ2uF;#IQk8eNb2pQEAUZ-}Z{0j8&~xw) z^3B7F=~|A(uzeUa2a^yO*{7l$cC2c&HWlMMmZv*kf@y#8_DE?`_lEzpoP;He9U!85 zAmNl3=COAD_1Zy)o9y*#8g5Q_P|Q1Bd8h4S#0rmnFx|E>13MLv7AYB>qOPH`+i9+aV2 z^)!E)n?>ffvdAka70I4(#T@S`d6wvG{9N17%>*r{6hfQbm42P4xapy9N|`-bR`;=% zTggbE%eI}VyVX$Cr24nTZJ{gs!jZ$K*Uvw{|HL9;X-P+29dP5WZ2p`bC}t)NHWuQI2dWAUIX4s1vPZ=+2(m0bjpNaU=~6RgQC+YeXpTua7W zDK`hO$($O@sOpxh#aADT=i6vSo4`>H9h>Fmt)5B`82M4tlz^W36ip&0h^C#XAX$4f zKVq-P1)#8O?+M;%e%#vV&p3a~6?;~@)NUv{4-J`7-m4AA)X-hkO@@2HOD-?Y0pbF; zZx>qvuNS%)2y#_QmQ|MDgv?_N_}9E}JfFQ!kd75r&GbbmLwL=QDadE!%9?T*fBC`2 zlp3&@I^4FTh*$2aFDcopD-Ae+ju83>up{qlRYDx54}aXUQVHaa$8*>%aEf|z%JG@9 zKA!(MmLpcS90vCQx?KstP}*RBP*t8*(wz(GGF|1E*t+l(%lMdOrk&U@`~akr(& zKxnWjnuw!xrbA%~PfSk>xFS#l#Qdk<6_WkuNx?mG0n7)SKnqe& zzngaVpC=Db3+O?SUD4@x;|>0KQu?2Y>-_({DJ-t{^!3vKdFX5J3tL;&7qHlt6d12o zPJ2;tF~a(HRc$Tv%F0UFr%$pe2SiSTUB%PB(yXYdx!Bayv{4iQsAcpF4Cwgy)V3`3 zjzJ^0?#dwPU0q#)OZ%XdgNBD@W;q3+Ij6lgC4T+-EhD4RQFtO3r)gMaNr}kQr%&I1 z`SJ_+P<{Off_`^*SHx%*)8*f0_}`AZoz0`toQt_Q&9`?S;GQ;giH9vC|O=L$CZUt+j{881ZSK zZ$9nMR%i^``T&%nATMvXI#Q|Zw|u`8nc+N`p9P&=pJ-T8fh|q71a8!|eFoy3NljO- zu^^(9w*I+HrGYnj>7{#WKwd+?V^VO1bql+rqvJ;Qi|y^_b;oOCbsO2zsGz5SW`TA1 z2vAb3L-+aLW5rEPT(pe5GJIy_&iKb9fOg)u8vl>xKZS5MI?Jn)Mp{DB*Y8u zjoUNXB`|PJ+r_1f!BGh~a0hY_zh|{X+&>^483-}6nvuf7X)wAZ1F6DO!|sW-ZuCC; z{rmTzo#nI^k(q%!HK!wBe{E7Ba_E*Vi(E~qj9RXY(`NEZr+Fr|tWAPU@bml11id|8Rqi$ zxmRg=)i~E$&*ixj>u!33uC?)Ry%N&{l3|i+SvA_PJtCH+oMu?={ddL+{hDkIX2lNV z$(_yM`_*r9tJEk@_9own=$@2jIH{2ao=i`1hFjn)x2rnrVz9&!op4eI? z5XZ=1{Z=%CdRX6Xrj)hps*vb11>n@=g3ICm20gyC1BZ%nNFZueNSk zs$wt*^qoV{;j;z2ioxFmst1q!lU!fDnKqeU!}xMk1wN}` zV@^u}Lk7_=cE1?XZ$;Ql_-d$qyzi|>sTN-|xk$uKwK&_rx$bd-sYLCSvsX4};UfG& zn=_Fu>>@^XEr`x2+WujGk~;EY?uYiOswzpR8Qjypj)27b|1N52F{bERj*IDPit%tA zZW^mK`#!s5&b6^=7555zZBWk5Ax#)TSvT}1E|8km;YloW9E_HFHifvKreR}JW!V*lt}8nYPco_UjCeGu!i!yT5ipdSYvI8=U^2Cs&Z%VJTa&hJssl`*IN&z?S=a#E$uqLSa&ktnS9-j)8bm#A`GL z3qB9wSB$GgU6RWK9Qy3byS#hL_LTHIuQ;u0FUOhw0L|3V2`LWL@VA8Qep)$#+s`R7 zzs<^WUE;6Tc=Zyb2YwTe7pQAs<_X{wlI;P{ATVyMdKGd9>L-jeVTzZ#XJmwhKUQ8Y zFWvR0h(9Y{%J3CL*&y7|1URQgyC{0yy_$R{$Ut+pKf79f5UXD6lH>eEFijO0XA{cT zhvb>ojjzU?U)5A(18Lehv)dTgZ8-OJG)8T`G8C*G>Jdrhyo%0o@omn&uSk=|qL*e2 z_?0wi6wvX?6)1~>ItfSKPDU|gK*KO7bj(x6B z!iI;w;MkC!d(KQqsFz4`wo?n`XzWX1p;`82(NmWRn!%rODtSi>;)!~lkT7Mo!<+BY zsU*w_I5jo{!CI75C`P8tp;}NR2|6>YCzx}?L7SOXpZ=HfP7Z^@bVo7)H0M%Sg{ESO z5~4|LjXj$#OwSVU?-)oYq~;7-ZPEi81E*`KULWd*M*4@EwN=2_dDa>Q$gZ1%CluYA z$)KRv0J+7w{5_unlqePyuR_L3cVgb{`GJMXeHKRGB z2K_T{I3(V37X*AM41j86iBluP!NUT7*$E_X8fv+`IP92iVyYX~3-EkAaFB<>^vWQ{NN3J9wB&#S#kk{lrI8XKnwp-#~)W zo5+1UcxHnC;iE^7JQ$q&;6`AUPo4+k z*a8$I5wok)R4l81^b7=jazJtGQZ9}u&pbn61JmL!Cn7;n9>X(kjZ8gAdQt)KpZoLR z4cqC4*FLWyfL>EishvaIXbnP#d*oW;r8vF^%HwhV7gps%nXbU{L6mAGn}-=7%GH2? z`?c|c(l)Gkg^E#kEc?hw1w3wWi~tI+p%a23fx!g>C}vxM3|J1HC(^AcXio5QUO*Gs zYE6rPk%TbZh*n!U>X@HjOcZ#G!&9_BT z*LFz2s{4SA+_A=tp;15W+^N7dz0CLezHXOTtE&Y44B<)TbjJ%_4(BhJciz@erwgjt zq8hLFu(WhCBO|E;UIUSu21Zcacr94h@+t$Xiox>5RUw)u?wj`2_B3|%X!Fe4Sf*Md zha>jf1^YJS!W%xx-dC4wQ8qUbgI{l6T~$sta!5suqKnT(a6~u@iKL>>Ij0A7?jIer zS)9~yD00xia|N<}BBx^L2e^zcYNgzi!N5CmiAiS_bd@}&n*XfHZ5S&6h_MH22fnCw zgJt!y;x^iK9?gk3j5QYx2Gb~R)F^=>>hm6(w{JZe-IJ|{(mOzwj;toKqAwKGeZLm2 zxvH4sH@6D{-RvH^dk=_1?gQX;p?B-au+4nkfU{cE`f?}poq%ymo6POz5gxgksTZTQ z?pTq4;-?Z9$*mgPO{9z~_@1Q^$7jaLBO_9?MH#W=ycvj&t4wM4P#{Q_%>Mj|Nl zG@4qvo~ASu#%VNh>iNn8CuKr^$|^S`-E^M;U(IK*3G&7ZUCl`Yltd1!40O;Yl25(t z?z#tUX*xO6Cck&IM(i5cc;^wivQs=Bz`s;C++;0aI?k(4LlNaDZxZ>B2T{|QKk0|E zk%((Y?kocdn0IiJ%DeZFKBOYeoMP?M28GeBZwQ;2dR-2XQH_$+VkoB<8Es41l#Z*8 zkF2w=`g_eMBysg1&lGUW1+5Zippk$DZu%b7K~j_kX6Em2Yg5Ee6d@0I+9s?t^G+xC zhQ0$0QFUbA3fqmU&u`d=RyQolM-&hOL%=k|I%_YjgcE%2QDQz2D4d#FC?P zC!*DqRD)HLEA9&k0G5od_@Yz^k#w{ zZ=fO{ouAHDcY^PmP1JG(2BH~jae}23&v3%WmjQ)LovyA$qcG+yI(9NJUvRqyL?UDx znMpAH?ej@Rk>vgAV!F=SZtnsM&ue8{xdK3urZNA!h)7-#j&_>Wk7W%@w<+=)8o)vRMQnt3Usb$DG+0}f% ze4NMy4Res_9MVfM`XCn}aj)q=qFLk}#()t=RMVTpZa3_lvQ_17bIvAnLTOxYWkz+^%W8p$5x)cYZ5 zE{jAdPx11^D8G!OJy&}n(~`K9Ujt##5BVoG$JidQ+Eit?`AZO`E)U3QrbozumNm5C z_M8USx}GDFmn0DmBjmFHzu#UVrIMvYI+ZXC9TiOpGWOfNVJE#eCSk;jr2|$7D4pCm z%hk^#o}FJF@%YRQ2a~E#@B)Z_+t&%1)j7(SUB7c16tta@!wNacS4M}e*yQ~cpad^8Os9}aQ*(bBG2)l^q1Ge{(@i^!M6$(MlVpd>gh#eIB*xU__& zj7`oN^zdYCAG>dq4|{b&l4aA{5lF@n8Ifg3r^5^nZlZ;aOdtKWnziK3@Rj z2Bup4NE%No?s5xDStPX)Q|7vRl{h)%dga|OWxkyQW`)T^D+inQ;8jo3=*bSexEwD7 z3P{FVuzDZgnt}BZ8F^91+L7hHy+3~RyTOPnUTgPM*aG5<`vKL-2?5&q7TcIPbUc1z zJjL{1qxpv}7*KW`Pv%n_=N1cL0d%-wVJeJ#s%*cmjh@E&bZw{<0WfiI{c={w(JVaH zyxyG)c-!fXP~k!;)dL75Dwwpq<(p3BaBHCxUJ6y0WE6kw)dkQz{rKGEWICZ~*7*7j zbb@OgJ5)#7$O1+1nVoMu=uOSYx3_TyQdFI9Cn;8}!}MlfVj{*Xgd{9#SL)u}B%|pa z2BTTn)9);%rM?!;e&yv8p)93-SgcK>_vPZn*8j$qX#w;v83i;GwT|~GF=2Ryd-|aP z1EJG6FGL(Ox;;Y6sXsd!hz?^U8c!Q8HDV-A6O7Z zDX6V3( z>|gH16*XPP%e6DpNl7}u7KmM=GYJ008dR(4yJV272^m+H5*LTRzZrG^{(U=sg8V6u zaVz#}GWwz)VZ)lVJ8D~2QQ=o`5R%AMVvzMxKT|3Tb#QPX; z9rF#NZk$p8>sa3Uy_JGjQxwK267*kFkq7iuEO5Oi%fdM1mbNyfP7-%CnS?-*CIPc5 zg2ATMH(dW4MBi5J?d_G*cpdtsums>ssGgUXmoI^&r%}m#ZaTuz0Ny7rS(#~Rk(h{+ zHeF!x?w1F6ji=7eIVfIhII^(RxF8!v*6EZ5YYXx^3gNgY0Py5upo1{fIg2@7z zwkpO=!5}=fwY7OHGPc*1lsL3w=v@=E_W=pFg;z`C*8gQ@^qlGILsTOX%(}dP78n*d zm8Tnrh(-nXCaD|>%`C@c*^b&~2)xp8x*2u~$Qtpi>-<&RluW2C? zjSeSiRHkvy1Akl|R-)SY%=Vr9`;}1qQa^mCC^B?+_mz^@G}H(X;*4}PRN0O*UHDj9 znuF5#mm$(~F4PmOwRhc|>FoLOLpCLNYXB)|1YtdYO8mUC0XBEn{JN&$0oj(*Ik5!A zpzVeDVBYiLMr0R%SwZqQL}-faGK#%??u`Qs(e83vMwS@hiTAafHEWBYq1pdVs)1W+ zH@+lkF$rkOr;N?Ni_9|=+x?FvNwWdLkYiq(7KK(0gOPjC`AhA__M!r%0AA3;j5qm; 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 literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001517903016.png b/umn/source/_static/images/en-us_image_0000001647417440.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001517903016.png rename to umn/source/_static/images/en-us_image_0000001647417440.png diff --git a/umn/source/_static/images/en-us_image_0000001647417448.png b/umn/source/_static/images/en-us_image_0000001647417448.png new file mode 100644 index 0000000000000000000000000000000000000000..8f3c9f0e04b79cdfbdd242ce4b1a82a9d895b716 GIT binary patch literal 238120 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 z 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

    v1 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

    R_Nfbbw@p0_ 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 literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001518062612.png b/umn/source/_static/images/en-us_image_0000001647576696.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001518062612.png rename to umn/source/_static/images/en-us_image_0000001647576696.png diff --git a/umn/source/_static/images/en-us_image_0000001518222536.png b/umn/source/_static/images/en-us_image_0000001647576700.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001518222536.png rename to umn/source/_static/images/en-us_image_0000001647576700.png diff --git a/umn/source/_static/images/en-us_image_0000001517743452.png b/umn/source/_static/images/en-us_image_0000001647576704.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001517743452.png rename to umn/source/_static/images/en-us_image_0000001647576704.png diff --git a/umn/source/_static/images/en-us_image_0000001568822741.png b/umn/source/_static/images/en-us_image_0000001647576708.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001568822741.png rename to umn/source/_static/images/en-us_image_0000001647576708.png diff --git a/umn/source/_static/images/en-us_image_0000001568902489.png b/umn/source/_static/images/en-us_image_0000001647576720.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001568902489.png rename to umn/source/_static/images/en-us_image_0000001647576720.png diff --git a/umn/source/_static/images/en-us_image_0000001647576724.png b/umn/source/_static/images/en-us_image_0000001647576724.png new file mode 100644 index 0000000000000000000000000000000000000000..5a0e7609069b61a5878ce7ccce9a453ee8091b4e GIT binary patch literal 48774 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%0A<4Ss8=#ZuIAto8=2TI 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 bas`fGuteLm*h5epfzZ=2I-7mk_TIk$DX$qw literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001517903168.png b/umn/source/_static/images/en-us_image_0000001647576792.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001517903168.png rename to umn/source/_static/images/en-us_image_0000001647576792.png diff --git a/umn/source/_static/images/en-us_image_0000001518222604.png b/umn/source/_static/images/en-us_image_0000001647576848.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001518222604.png rename to umn/source/_static/images/en-us_image_0000001647576848.png diff --git a/umn/source/_static/images/en-us_image_0000001518222636.png b/umn/source/_static/images/en-us_image_0000001647576860.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001518222636.png rename to umn/source/_static/images/en-us_image_0000001647576860.png diff --git a/umn/source/_static/images/en-us_image_0000001647576864.png b/umn/source/_static/images/en-us_image_0000001647576864.png new file mode 100644 index 0000000000000000000000000000000000000000..14ef7c087a31b280ea5e0fa8f3243c4965269d77 GIT binary patch literal 28731 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

    aoc+5_(9(pQe8lG1*PX8cScTY;epJ{zOP^V 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

    D?=%Zsh>~Rfp8-eZ!sA&_%j873*X< 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

    1er{{4Ys1fr2p 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 PMv&P#%d-`y-GBQ(Gl6$k literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001690672798.png b/umn/source/_static/images/en-us_image_0000001690672798.png new file mode 100644 index 0000000000000000000000000000000000000000..2043add09551331667403226740ca8022c0bdeb0 GIT binary patch literal 12124 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≶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 literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001518062492.png b/umn/source/_static/images/en-us_image_0000001695736889.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001518062492.png rename to umn/source/_static/images/en-us_image_0000001695736889.png diff --git a/umn/source/_static/images/en-us_image_0000001695736909.png b/umn/source/_static/images/en-us_image_0000001695736909.png new file mode 100644 index 0000000000000000000000000000000000000000..342a50804b0c7dc58c85cd8e512bd40431fc2b3c GIT binary patch literal 867 zcmV-p1DyPcP)|)8H(`1)U;|(z}F4@%* zZHjpjy!X-O2O5|6iW- zJ|BW}GE$8Kqz5fo7NEuwZ7Gv!0IsoB1g_f|3##$%AfDFJ~Ok;8;!|+&| z+Yd4TJlEjjOm_fP5w`~{F6*4@oo6L!@Kn&jTW|QO4>^ivFm*4(=lwCFah(cZ89k?i zc-_*IfYe%!k1x*=jq5bjI5~T=0+&ZAEgBIyu5CSca8@D z`1Yp+nr_;FUq{kty2*w=A9aIR{DhfZ_2p03CLX-fVgN zKE4645Z3@`tW$Okc(&g1n2lzEN1gm|Er&xEa5{v-K}|O~dm+N=L!+pn&s)ZY_d;mAo(e$nXL$^`@v^A+V;7F5- z(;;wUBt>LF+p+m{B+JdwG;USo`S1pSs))SW>A^JNi~e}wfl864oAma@065m=EmUNo z299-k2nJ;C%x1VUutcr|h+&xY_Qi=TXw+3Zc;y9qH#|13V=FqJd}fX7h8ia)U-wZ{ zReW6Ed640&fhA`C%2E}O={X(5t=hG_<-)mmHO9oWRZ)i1|#yW-eX7#ZRRubU9(BJ4IK-(fx_b~tf002ovPDHLkV1jJwrnmqA literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001517743372.png b/umn/source/_static/images/en-us_image_0000001695736933.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001517743372.png rename to umn/source/_static/images/en-us_image_0000001695736933.png diff --git a/umn/source/_static/images/en-us_image_0000001695736965.png b/umn/source/_static/images/en-us_image_0000001695736965.png new file mode 100644 index 0000000000000000000000000000000000000000..4d11dcf6dd4da2d16d4592cd842689c6b5b12690 GIT binary patch literal 58817 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 literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001517743384.png b/umn/source/_static/images/en-us_image_0000001695736981.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001517743384.png rename to umn/source/_static/images/en-us_image_0000001695736981.png diff --git a/umn/source/_static/images/en-us_image_0000001695736989.png b/umn/source/_static/images/en-us_image_0000001695736989.png new file mode 100644 index 0000000000000000000000000000000000000000..45fcf25f8c3afac308049a5aae1eb3ff80ee44cb GIT binary patch literal 120837 zcmbTdcQjmI^fx?0ln8<(f*{N&K@b@wB)Ty~PZ2$0h+app3DN85L>(C-(TPq(f+50W zFzSfjd++a+@9%xqyWZ#d>si)a*PYY$+2@>HK6{^VZA}%LD=b$)AP|izTuB!MB98=t zF7s28gFqyjc)xa_fW%c-MFCXu`}QL6LH0&oLmmVwkEK2_y9|6&Il=W^K_CX?#X~~0 z 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%0DD_qP% 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 literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001569182677.png b/umn/source/_static/images/en-us_image_0000001695736993.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001569182677.png rename to umn/source/_static/images/en-us_image_0000001695736993.png diff --git a/umn/source/_static/images/en-us_image_0000001569182553.png b/umn/source/_static/images/en-us_image_0000001695737013.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001569182553.png rename to umn/source/_static/images/en-us_image_0000001695737013.png diff --git a/umn/source/_static/images/en-us_image_0000001568822717.png b/umn/source/_static/images/en-us_image_0000001695737033.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001568822717.png rename to umn/source/_static/images/en-us_image_0000001695737033.png diff --git a/umn/source/_static/images/en-us_image_0000001569182549.png b/umn/source/_static/images/en-us_image_0000001695737041.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001569182549.png rename to umn/source/_static/images/en-us_image_0000001695737041.png diff --git a/umn/source/_static/images/en-us_image_0000001568822733.png b/umn/source/_static/images/en-us_image_0000001695737085.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001568822733.png rename to umn/source/_static/images/en-us_image_0000001695737085.png diff --git a/umn/source/_static/images/en-us_image_0000001695737101.png b/umn/source/_static/images/en-us_image_0000001695737101.png new file mode 100644 index 0000000000000000000000000000000000000000..52cb81b709c3ba70b2e75c58113a1acc94c7429d GIT binary patch literal 3760 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 HkEQhrrOKg0vu^s355V(l9U}EiK*M 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%0Dg}^O-Sb+INuW)Lp~n!AY6}^AG_MUha4p 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 JRcCKJ{y)99q>}&u literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001518222708.png b/umn/source/_static/images/en-us_image_0000001695737421.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001518222708.png rename to umn/source/_static/images/en-us_image_0000001695737421.png diff --git a/umn/source/_static/images/en-us_image_0000001569023029.png b/umn/source/_static/images/en-us_image_0000001695737425.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001569023029.png rename to umn/source/_static/images/en-us_image_0000001695737425.png diff --git a/umn/source/_static/images/en-us_image_0000001517743672.png b/umn/source/_static/images/en-us_image_0000001695737489.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001517743672.png rename to umn/source/_static/images/en-us_image_0000001695737489.png diff --git a/umn/source/_static/images/en-us_image_0000001569022977.png b/umn/source/_static/images/en-us_image_0000001695737505.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001569022977.png rename to umn/source/_static/images/en-us_image_0000001695737505.png diff --git a/umn/source/_static/images/en-us_image_0000001518222740.png b/umn/source/_static/images/en-us_image_0000001695737509.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001518222740.png rename to umn/source/_static/images/en-us_image_0000001695737509.png diff --git a/umn/source/_static/images/en-us_image_0000001517743644.png b/umn/source/_static/images/en-us_image_0000001695737529.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001517743644.png rename to umn/source/_static/images/en-us_image_0000001695737529.png diff --git a/umn/source/_static/images/en-us_image_0000001569023069.png b/umn/source/_static/images/en-us_image_0000001695737589.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001569023069.png rename to umn/source/_static/images/en-us_image_0000001695737589.png diff --git a/umn/source/_static/images/en-us_image_0000001568822957.png b/umn/source/_static/images/en-us_image_0000001695737593.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001568822957.png rename to umn/source/_static/images/en-us_image_0000001695737593.png diff --git a/umn/source/_static/images/en-us_image_0000001568902689.png b/umn/source/_static/images/en-us_image_0000001695737597.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001568902689.png rename to umn/source/_static/images/en-us_image_0000001695737597.png diff --git a/umn/source/_static/images/en-us_image_0000001569022797.png b/umn/source/_static/images/en-us_image_0000001695896197.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001569022797.png rename to umn/source/_static/images/en-us_image_0000001695896197.png diff --git a/umn/source/_static/images/en-us_image_0000001569022781.png b/umn/source/_static/images/en-us_image_0000001695896201.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001569022781.png rename to umn/source/_static/images/en-us_image_0000001695896201.png diff --git a/umn/source/_static/images/en-us_image_0000001569182505.png b/umn/source/_static/images/en-us_image_0000001695896213.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001569182505.png rename to umn/source/_static/images/en-us_image_0000001695896213.png diff --git a/umn/source/_static/images/en-us_image_0000001695896249.png b/umn/source/_static/images/en-us_image_0000001695896249.png new file mode 100644 index 0000000000000000000000000000000000000000..603c94682a65352fdc4e3723f2005c8c0d1e1578 GIT binary patch literal 277 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

      4qHU?{nE5bj2ExZWvG~;d(ys=F=k)0nY)$ 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

      X68z)pDDlC4ptnK3 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

      jOS;hx$!FA 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 V6u5d@b|`e!%*68K>k}@2{ST3M$a??) diff --git a/umn/source/_static/images/en-us_image_0000001715625689.png b/umn/source/_static/images/en-us_image_0000001715625689.png new file mode 100644 index 0000000000000000000000000000000000000000..b7ea91b864c988717c3244b67550fe05016ec2cf GIT binary patch literal 6454 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 Y+1!gmLbNgUp8-H$7ot<8_3+uh0d|g#;{X5v literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001715987941.png b/umn/source/_static/images/en-us_image_0000001715987941.png deleted file mode 100644 index 3425c132fe26afcaf3e15bf16bfb7d1fc878dc55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33614 zcmbTebzD^4+CHuzB?v0gF^rT-hjcjx2*@Z%!vKPWbT^0~h}0n6A|>5Dlt`C!cMd~0 z0|VcUkDl|K^ZLA>_xJl_!)*4Rz4l&vt^2;N>%JEL&lRMvU8TNy>C&ZZPh}n{Ub=L} z2KbzVj|=>y;12kF=@P@Gr;i@Ibh^A&Gu}hn62Yp*R?2znF6@y8!u{4=MJDFeyf2S- zNSS57uxGYJF2+qnY9EYP=!{vou9*wE;2G<`IQe0v&m92cLhIpqY+>Q(I|Qj?V}6Lf z<&l!K8`e!6%Qs((^KyxmoMTroc(UNH6aS$zD?h8YiuM+9(QQV?IV}(C+j9m6hWW#& z&`@MOw=N|&5hX4Ww(sS}w|f7vTd$$3%Mo3o8-_FSr^CO`Rx9bkQvaXd{(YDdcL*2T zwDIfXN%oyL|J+uYem#~jxjp|s+{?w)3Roz)ALjZemx<3A?`RH8{?o0S(tKYbF%hFz ztizv^xYj~SeT|$pXZ3r>JLfyA4P!9P_&DvZr!;?jWT`-}`x*-!Z~ad}g#41&j^-&S z`+&Lr)r6$3XHn^L|J_4>J)@dAQ4W;Bh&%R&(@6fMQlFWp1F*Iaax+a1;W;D%D`O})L6f0^4mAiN zL~$LuD`xyhlKCj_UXIaXz-wpbde&Vkm_Ga2qeSir?|s-Ok>LkD>0s2be~T5!A42 ze;QvZuXNQRst?FK2JW5lImHyhUwq;h1vW_kX^_i=q6QD97ckmp9LC8pGF>-Y+e((lb3;yRU*84qfQk~4F^z?o4KVOfoIZwe{psA>#Q|}s<@agS&s;N+=u}~#rOMcqtl2>fL zSKG70^}T2b7ydkT-sv{?5!ZbeLa&Ca%F>DT)@d|tR%F(3G6&}+Mt+tn6JN|$ z#y&62juhc&uN@eRh1`PsMV?gDpepK}yjf9#`keuhzDTkb#2 zvY$O5hC9T+(hKTy;{DPvM`pmlPxt2l^D~a!qf}F2$bdHTNMb3A5NbejEj#u`-LJcC15cr24sNdl(NcW0|g{;vDqfA8u&SKa9 z{DSMbxk+&i@0HvR6*zel;pLIAZHl1r_;U~Gz9Ev=)_wd=sJYzhAH%P&S8ikd5P_N3 z*G2JiqbdRIf9eU{TFL^c;Ky8lZtJhXoI`-y`P}r?odDf#!FMKTes}6Wj|Y)g|CjOb zGkpy4$W}nb4o!p-e;9K!mfr!?b00*vTpaB#r$bWPI3twV%Aej zDl@9mVIS@s#0o+++KRuWKim?C*o>P_2%Q!` zHp|b(0pX?GxVALfTx4ImcCeJ0O_pOijUKtW`ic&nzg+>fRc=J>EM=vm%m?<-c54mB zMFVf^i^kcm@n(OQ^M`U+uCs`m@{Zn@XYX~)C15EzE8nwa){fXA7rq=LU0sZ8V92q& z&%?NRvgByA;D{93N1KZun6zGw_Xx?7QkbUm!w4TGy+*wmT`ygAAQqWu5je;VSx@QA z9)}Lo$fc_mCjr5ln-NHN)ri<_?4M^Me(Qq^{pv{>LP=Wn{#5EZ*(m3tw)1?(Oza_U?P4yCm7Z_7`X z_CA^BORH0j(8KCx@0hE7qc0KM+94Z5Stky+g@>pVy3>W|QwMGJW+7lZ>m2RGFe6|8 zP`y_lTh7HSs_1ty`3pT03@@Qv*mCUMs6B%}iIyw@}wLuo0{Hs%2lsxpR4-%+YwYDd}#hc4jJVD?~R%F!13|^j*FH!9? znku{M@ue)e=33nNt$oE3*SINmPfmBYy+2ktf_QI82K^% zEqT|iO0Qz#t(VJLPo0qBcb>ZLKPuG_+eziD6TM@e-)kMdyn3r4?(D7ab%s|Sq%apZ zBltMzC1K@RJ%=HJ^EnBx_Pyn4#xF=_%{*@+>hmdqO8o(P=ojxCS}T)&_18N2AzCzD z&Yt3U0r$q6MT{E*xTZ&9P?0Vzc1)m=d;`3m;`DySgn$|5@kG7bCkly=M;i2BCAPGd z6`eOQ3GNt4aFq)!o+>7CZHC+r#@#;&ia!r&Kk*pe8#fG;*)>QCUXVlUOoVvDVnBz% zw0ShmDR9-O2saU7r<}ec_7j`ovYZZ7`fH*Yo7fQiq7N;7&r%d52g&nISO8wR~7;!C6v1T~+D)be25%$MPcmBhUA;-fFd2wjjr5_N=_ zYz$bk1`}MZTQtU6BTO3QSUjg3@K0%2u;|rTef^I(J?s6qMEm2}_9b&zk!&0d)ax!e z{TVSK=*4e(msz_rF+(AEcf8Fgc6~s0UYQ1h9jVktTH}lq{GbzuTQE8SxpnJAE}a=> zU9BPJ@c@Uf>0WV}n7n+~F~)ZIR@`<-a)NyAK-dI0V4dJZS)^lNxg9xg-n(Ie*Lf3^ z3pq}u=jK{@jzsy>X`s_pR5NSdNnktJ+Fs4&kjN;Zm{nVSWf6T{zwWyt-tp}z8{W)i zvcNBEp*bJj2VK^ya9z_0`!5h#0U4!QBz&-5+5Fg7`pXz@>e^eDcekvbl`KZFF7*yS ziH^b|c^-wr7i(=7Iie2bELH8K*-E)QzoiDP&|IQ+rjII6rAp0sAb?NxP9^)t(uctg2Svoc<6j#{LEz&-!<-v{X%u zh~tuRolRiby+FuJ)wqkc!Vjw%qVkJ<{1stOhm$AX9Q8OzzUT|`lvX&7b(+hW(O4BV z8qZVvWM9ePuALNdiX4gV)nm(B7E3QH8D^O_a}Rv2y4N=r!YhIu z_x-4tH=X1sEGw9$RI|t4eH)c@MTPWq)jFD6-O9Vz>69ggJz}+UVbDHH)JAqaVn_GV z(%TRs;@8;tS{d;x55$Q^a$p}9uNF~s+^3X%Ewg#6+~LkZ>FuQaho;a3CbCtT4J?KC z6p;!0^}haJKzmh*9fheV5w0uoVYR%b3>n+t z2e@8^SF88wTsH&Y(4{84v{Etk?sL4l`U?4JE=I?Nmzz)YJs_G|elvsHT>D?PZy$GV z-P~h9?VP@HJwpg7Otw54{oxR08|xM-PnATr3QIpXvtq$0_HKCfq_4e1-;L-QRoN)J zH>)wEJ+8M@dl$8H-dlEtun9+-?S++_+XnqG#nZ~)7b4$FU%|2GSf_6%&>pQ^@D2WW zw?7Qo27t{GGoqZM`p?hoQXfp{3Vzh_S;KpDsO&!>3gvA`)^g43?sO%VT`ye-I<3}O z<*4bMV`!0c%8N@%%Uc@;1sV%oFB{nF)8LexU20R>J@co3e{i(u#!U52Yr7*^e7aJ9 z5QZUUaN?}Xtx?o{Y}o_NiZ$vN#TmdNc6UzpOcFE_eN;{CMzhaj%IG;6@7z{q6nzKx zFiRTJV6>iWxf-ofuwwlKm@S^C!S~MIksR{Xa&EAp=WlpPZ<2^^F?cgh1QQO}9$#nL z!sH>#gF<9?nUd7kB9A_fEhSv$b?PvYOn(cD?~Ex-8QgGoFKe55N7^nr{EkDmNFhRX z$bK=T#)4l9y(2p%=B|QQ$6svmE{Kduw#sf%*HN{C=kqM}ROS`^`Kgoi?{>^`?~8E) zo2U{>XI-Yw_{L#)h+8LWPin8~Q!inJCpY-?i+vt>Txdw$E3q>BUL9 zT}xrFJ}tubENp_7AjIu!DxTWUkacW7x-B@{U9S2mnVL2`ibvJ4%DQj$xGBZVQmgJx zNfpa9jDt^1AbE_m@Fld0CG1o+`&&Zy^D;Tt-BNG8FUaAvd=+Ic+-5ln8t}pDUaamb z9?~Cf=WNG(J#x0s#-`<*YZ0PD5>a(G$*j1#k4+EG2Jh{8;5XZ= zC%iNucEY7JJM!Y7jf|_RJ2i-(%5b}yYSg=@VkPFn~aRpr>i!7;7Xr)uNVV`AyS zGTKM2?mOF(~NArQm*UIE6&3<~l+}t#{DkGW0q%*6w`EoPG1F*Z60!>ku zs{t|x_8wF(+b%)#$aktH^{-Cn31Th)^Hp4-A0unHn%}e@&o+=}q&xnL$C=ULmMP4P zvV1A~koe3}V3xn;&m0Nhposv$R>)XM!?9T+5XtU{kNzjlY}oh~$3_Il#!xBGt8dTn z9|+v##(J^;pm6mrx-+#WB-i^gl``;={sAF3J{ivA5sN*N5j9e{(bv{5>a$mmjfan% zOJl`Hc9m~j?+c=-_OUyf!S+erKK;(;4yi&PnLt)2Z9!lHJ!*K$DGVM=>-GUoOfM!Q(~6e? z60u@P_QnITq}ncbU+;@xiz0YBKiZw^H_am&ld$CH<@$9v06Ec31%cGHBTqJv%svu{ z{Xz%U=+^Bp0=f#It(~G)A#WK+LJT z!?4?_M%_saOkF*aE@*ZzoyUOp58ka)Atlozc8CQ$lub08f7EJielG>&%9QL! zLeIps;N9;>Oe=%mBB78Z>d2YgzsyD2*FwDC8rEEwFis&^$raSick{lscCp0m`=-JH zA__)H&w7V*oMK8R68D!R-K$v6-qzh@tYau)J&s~JsU39~70}L+;Q7#KLNsTk5!d=A zj0pHZ?JX4F%s`y+>+gTx4Kn(5e2C?U^7|}5uC-9m16l?B>wf)Xudsi8uk>lDKxh+i zf%`SOzyaXA5`oY`r$VXjBKMZaQlt6kv5?Z*8ujHl24XyWZlLw9at(%zs4Lb&U%h`_ zEjFp;-*=!vnE3lbz9#0U#ZujoL4^JJMrHC3iaFB_IRtAS40Pw(AF223`{|#2YyPs% z%LX&#C^vRi$vvx7cx$xlrF57=T*fh|-X1qdVRuh;t~$J&p;HZLbgj8iN@38C1I`!6 zWqK;L?`(!4)G~p2{%~V)=cVd59?>~EO`EmPFUpg0rfG@vi|SKTZr5xTGW4RI2x>IB z*mCRUEdWX9WwmX|=RSvx)~795xY8z5xPkg?+|eB0Ul=aL4(j!2Si}_Bo0(3N`_LVm zifA?aqMrBsd^I8~28m*0SJV<_*uQLsOXO;`YhK~f%D}M!q#{upay|j#CjbZ8qY*cm zdh444zJ|Wfg}MBfKG`__<+QDK$aH=rGFYFywNNT}y;VJY^I1!lp}g#_z$;qQD_Y@- zhbb_at~|^AHfioJ?``(+-y%*1K*7ee?Lo$rEO#GL`?>VlFjE!VSG_k+@=dYsVw>uH zhwws-H;HZSf0_pG%h~UwHgu2&Gg6mu6qqJFmGFkSh%4H!w+EVtCH^oFyUHu8edxlV z6IJb8-{G|II?pO+N3lb-oo)Qiv~-dE26neBCHtbaZqGax>ui==f?3?K`p|~1W^E&z z_0YVVpC-)ggLL+1+E?#7f++pM2=rho4qy4^Uf;lceQ9);MhGA-$K5nOdsC+61juf@>D#G}Q_gX4dPxTmSi8<6 z0bb&`FoCd-gF83?k#v^}IKgkDIs{Jaxn>PPFFDrA%j8dtF{j!Z_1x%FtveEiRPFm; z24mv#-4fv&6YfdyvjypCaH=EB(+{3E?erc_43dz)2-0;YO;DD-RT|HqAzSjalOY*& zdaQH359E19>Qmy1VgWl7mD4eTsDd!HmiIk=9DmNk+!>#)oVuqQcYsn%+@jHLvD(5h zuUd%(A&H!3#e~b=+vS#9HA;0KYaDf!QP|~lMJb+)3Jo!OhNZ{qZ=4H7mYRzjO|wOE z){U^HvO>imGO?1b`=fF`b~}ZpK0f-OjOmK)Cy-%F!~>b?@dZsH2i1AcVJ}wdB$dvhHDlK;ilkAu2pS1_c+)xKV#CJ zNJMEv-dF5#5;*@rb*gN_BNuxRs#^);BABy!jtAtKA(o>5%0It$C*5zFdC~qWOErvr zGg`+IUU4-5)r)ONPfS-IFse$dZ}ye9p05!aXq@GrJ{la(wx)Kx)j08}ooDm>E5*$C z(mBi+3d9h)-;YGJ!7 zcXhhtK8E2EzDaD(i0WA^9ck4Lo2&X}Y?7n61CPSdCHR#c?|b_G&X`9=Uhy4mLD@eyTJh<1aOXh-6KC7lL=`9^Pavw=YJQf1U(P$MI4a!sU-M8O;@e=;oz7Kc3x zb~=b%yeDf`&7m-DP)BJua|rpmbAzdMB@7jgsISjm)d+t70P!1AK$MRc`L(qWsmML2 z3r)y413?EwRy0>SxBb!KAt}dVFP^N!Z-ZVNoqdwJ1?_fwOSp-9{Ge(`9si3n3^93M zLK%ZkbNAS5y6iw?j@i$@W`=!BZBDX1n4J8@edoIhe9p2i*6 z@{ca29Uo)$nsiZ3Rs2whMxp4#1Q=Aqb(L=FQEfZ!jqZ1Ax=B_N^Ez4{cSBGeD@rKO zZ%f*R243-eZTiZm(GfT{#Muv+$3w$V^ZU*R=DbI<=f(N=7IAdItIH_9vzC*>_q6Xp zZG$?;QLBXs#_^;!b_bzp2i(wLx_G}`3P~1YXINAkqTaK46OBF=X_M1dpiwPzp?!FQ zgAot{g6q$s*m!9Fgc!ak%j0R32#DycmR}`eC;W`=sCP$YS8G209YiGz&;!7dE0q*v zs@Uc9VzcHEuS8ku9z93+HD5EdVYr5UJDd%f{nE%uT4A64J}QY-p%I-;LbR|&9J6u^ zDO300QI6T{v% zKt_UjEMh6IAWE)dx3))TzTdiDa51eaZ-->NqfE}GgJFl=K5JdLbNQrEzQRznO(NKd zZL!jn4?RH``7Zvzn5>QqZ#qQZD}L2ocx>Zy1n~mCmfZA<<5u)!FpaF^Z!dsz@5tr} z`4Qi&Xn=%pf1+6&Mt)xMJ=9LH{1N>oKlv^*sJ<&A!km51(?M(dEC4fPe5(#o!%u!< z6Qf@yu1Cmfw7{hVq`IYLi)_B&*XF1~ZnntPGoy>Do!LtUR=&KKnAYaP$AON|jl`Zm zG(4Q~ceG-&S%3yAJH|Bgv#-C?^JA|yu6H!}My@?&k>gRC1zY)G!(8(kWmomda(^j* z)#*pEw!xGT!mQ#=0PB_Z;P@et%Bj_~_6UzhFZqqC=f3;sXymMDgwJ-bZM^ljec=0? z{B_SvQC_3x1H!t#6aYjj10YgHf&W!)k^Pq(xq5X1?_0o-M)QlweNI1RI)+MmEkY_MFvDU>OPE05IK!z2X zcsmt}I1~VjpPUx^?2Wt+@UdHII3YlWN(bM#xzm75C^jM$@jSQ%27}_C5LN8;O0V4c zp`;41yHX>a+o=>u6X0}RrHwi#@A`cMNn!Xrmi(() zeyYaPv`oH|q@zG*7^6K)bHoqB^`z6TO0-*c2+?Bbu)OP6N1B$Ij<4Ag!G#HYW!KcA zZ^+qudTx;?o3hwI&qh9cpj`qRwhIT0g=HN<-;>(hE26j z>>mn&E-(#s4L?R#VR;Fr$M^Jw$Yy+WnLwFxxzN)w74hhaAd(S7d3MNwVnP~%S+5UE zSbV?c@|Xer--xXF&75cSrA@fM(`ne7Ul>7!wL$i|NgB4W+$x{IriQok#?_-C_r|u{ z23!DL)Py8`|3yT*%HLcj>^jtB0Me8k;R1Vd&svaZ z;@hsG1I(Mhleb%3OeQr3BOFXYm+OJR<|ssmeo0A_r5eYES3i30VaeN?^;Y4CwZO?? zI^mC#km)i+O%UPao)IY)_5`(_ZU?SgqamJ|1s_Yh?=7~-jeZNA>@u8$n@E$ zUWP$L+?R;JbfO-C@IWmwwEWalV)~C7e~rsh_AAy-HXnY0%3m-z zm*dgJWjLJP{T5Wr{)U%L5x}5q@UVi`RwW1?B9Ggc(BHoJ#-$|`7s{@e%k`hrZwZjF z|7yErN%B73#pf|f0Iy1a`Yqc0nm@mlBEp4|6O(J>4&6U>Kz2&(^cftsiW48pys-Jv zH4XIM*Q^X;uXtdJij~%g%j>3~W!<87mIgi2=`ZGppYPeO9F7`Oc>zVQ+K#}2jwz|HOvXXai;aaR{DQ5OV zb6zJHAgJ7Z0hwAz77Qj2nDHk4mflqycL#>n4YnOS7wA1i7_n zK|XlcCfgcNy*cnEy^5JU_TmXT7CV_6OIpS%SWPwL{<3W>wR#&7zKk);&xj&Bep9Wq zu-p>Ax;-+&B`6`P(|uAoabrzapKM=t{>5F(rsga$mZbpZpFy!0TX=@C31Jb}l2sFI zuOcDHGVa{ioXA~}@vTj}NSWt}ea4&Tc#m-{LT5I!o;cS?T=PAvTJ1K%x7eCgBl>K> zvhpIqy_X)k$3pu&^W9_4R$l4>m)*_6Sw!tP!A%?+NaekJ_4?GsSTReeXApF_A^Evc zsZ`7rSQcsk2l~X&2=&En9YA7_?cc3&La&VQ)4bn-IDoy!3={GfUz?BbRy)2q?Yt~k zZaD!?t+uRrEF);SezUK;n;1M<@h{d+nqQ{?5PypseGfD8Z}ydTsNy3y;fUqX3Mp;uQ zH3bPWyAGu>G6xZfhsr@9yR)1Pl()!q!u;b>5{DCsg!N4=OR_+P6Z^Z+qie_xch_Ap zhXbSQFEPCSnq(3J)7Tbg?^W&L*hYLy!BU z9<#60>6c%0Mwj3eYw9MZ4Mch~_(lBC)Upi*ZU2{^Q-fY(hV)Ghd+XoI00}t>B^%}G zu%;fuJOP2odUY;L6`!ExmcqPR2U5@i5&FZZ_LK~QUZs$fmI0lAJ0w7kwn#pa@q@yc zn1Z5IbzI)Vr_Sf1@Gk_A^4fij&)I2AS*W2FXN1Ar*KA^~r?;$)zH-#4D zs}Pev_S$?7rQ0H?w#%ws+Ti3V7uHXJEo->GNq|WV!vcaP?ibM9ZEX~_h^-z=3|alU zknFZYT=R)y74^+%CbRIyzu<+$e}zZ$cY(iYzX9=Yp`3vC*ZCI$dTbs$e0QDyL!%cR z{$C<|qRYF9G1W((-(fx*@Z3n@1t^6j!hA=)=aH7S=yU1e}(>8vh_jlYROuol>yf>DFHQ zf_=l4v5zQ}B4>%_>@=2e%Ybz|mN3O&A?VjVs@{gD?B59S>>N)oY)91xlaKHce?bP=Yne5^`QsIHPN^xpyOv2jY!P~jh$;h=L z$tT=hsv1QYhJFqulu#RX{igpN+ zQJVs2$C;n=6v@ZkCaK^Yw$o+p&}Wyx2YhK_D^dHRHhpv%m<`o(G(zm8=nx{u&R)Gz|A?Nb2IP)}2(fSVYTZ_Lsfrh5FZJ%tf%_H<4dTJm{ zKd%vQYcUj~a~FzgOayUQb}zq_^g_QFd)aY!nE5i5bI_0S-5BdT-r z(bwkePN#)6<@Viqb;HgFqOvE$=heDD^UvstRB({8|M{Dx-k^{|+jPRldRbjv=IH3^ z{u%!|L_mAkp&n*2^d8hRzpb^7D`UzdWE0-zB`^*%vB^Qu+)flaaYWS@AIb{fHEm*q z9?V#K-{vAC*7}h?@9L!`>YAfu-t$a=uV`29#kkq6cI>jnIc(N~_lO*G&8bj6!la)< z`xu@LFNO={XnQ7qM9wL?o}%2Rntge`z=}+#WDXiac&>=!IbZl_sCxN40Yf$6wxUSv zu9eV@=1aC@Rb3#(IQ1b~TAT0HHNJk_oW&V!VZ^+R;W&g7lr!K^K+F%@YR)U9Pm?sdoKE4TF*Q$CV<7k19 zk`aVWGp7n(gj0)YAUe`d3rovXC!O8~yKgI5lJ+Hx=ilhdklYpk(@j@Cl7VW8J-d+5 zHxVb9J{Fr(3`_$A8J4vN8W1SVJrO?Tgt-Pm_gi|zz_HG5X{kCN*M1Xyya$xgbx@kX zjI0?^47?o16G-=L`s&Ub59^P%lc(yd0h%4Jo#77G&vFi`H?sY;$Xooz@&r`2k2J

      aO`p2q30yVB-bA2byU_&1f53BnS>38nTZiV*cfvJ0g zb@-!l_K`c0ITU}3^QE-_K&JRRK>l~-^1l&$bB8RhP2_|T|HODDb1)&>f@GA%;p0|V zR&jXwcMrdRqxlj;Mh?mp9N7yvpPMuEo4{UVjEf%njrVcc+2JXu*P&kV%m-B09y(a~ z&xem{?CbkB1l7+x!7p^aq#a5yUTe2w9yy5{w~y+mux&7_@DSjS>#`^|KN!}$2ar-1 zK=V5Zn*^NtM!60P(bGwjn{gZRj=o;X4M3s)fLX0~=yI9eyA`v-uA=hUZ#$|@)&g!o z6}9*MtnG#0PBaFLIeSQg?AY%U!o>*}NP|@A~{~wkCmznxTAG>{j zK!Vwtc>t*z0?->p4?skJ*5;L1p*KGrK$cE6Dx=^ENx~0hT7rQA$Vv~O5@4`_Q~6XA zS$`JqQ~NU<@sU5-;!LA70dl?C5&vm%Tte~vB0b$jo`M~sZpWL&?V8EU=nuZhWiEvIG_fPP|YKQl5ereZ()5m}TV3r5sGW$M?0J+zV1F3S^zXz_d zJtPL#oF8-D=$pmcWKNx`IV9}^=J+izo%6o+To@ca!6lB*P5@1*6(HSb-$;G- z(AmQTCd;P)(VgpKhPdqP06)%c0VxUlaPpx{jh_N(UzFqt5E>*s-od-$tEFV1FrX~Q zszA$_nhlkZBhZ$Bs(Qg(kT{UOEu-b7W!K|f4WosOo!j(^KaDiV%+{7v)jKR(VvfBI14lxj6lt?ib*A6rIsd` zu5NQOhjLl9IVfIm%OI<{D)EYK0=(N$HBl|d53|wz#arTHR+7I-x;dRDCJeW$QHZ>I z`gbQmKiS_9*FQJ=x4Zo9Z}|Uuvfa(^v-QM)r{UrPrbn6ywt$D3g{m&{g4AaGn9L~4 z*!FvWCSENO-Le$zB{6LV4E`!FS4>3s7Xrvi(pI5`V|M3m%rcSbr5xyPqeFObwhXH>%Ic)*3 zHuV&4%EY%k=`=)ZOefXP+BYzJHQW}6JnSz>ZYti_e#GT#(hsSRw12w}mU>hdPFY*R;NncXZ%QL-k(nsayLE=)Mm%3>5oKQ`m}wPe;DBDSJhI3k!ZIQKfY!1X zd?RJ?ZUR)n5KtXJQ`+M7h3DB5@2cGlwf zN^UKh<|~8<31(D zw!ZL0&tr11xZSk7&)!bLFh0_C8Y2L%@t79?V^EuJe(>k4e{pPgWIs?|UzR`v2ex`V z_M%>h`XJ-4{;)UJ9z+NPor5`yZe{yL%~}yaqy4+VGC)T8P9x>{$V3)RekF@>E9sc9nFsY;$Fv29Sj4YBVkNsz|E9>P*fgh8afQ@da6HqV^ z9tk(Ab_uEo_PjUU{opWU-6NU8ynBh$?kCz1z=rw|5J``Lg2;luzKa!=UbB+tfG#%DGl}S1tJC~7B z1&KbE5sgY@xv;Qp)^2b6)NTRxg^SXME%BPvzcboD=L$Q3(o5l; zP@%PBLYzI^W_IHweC5PP&Tk2(hrM25q9Y0;M&$c`U>%$#PMyCS#v1PzhQsP*17_HD zx{ZX{2@{W(iI!8)OJ{l0#xD^pq)3N= zqEqk@ByXU2dn_OuK74|eYmjAlh1RysRVE_A}N|q>oDbIg*{QWJT|E*VsyjjUx z8vp@X6vrlYbK5;Qq|$?_n*v+7C~qst@v%U_!AMW|&S#yW%~s?A))7EKo!XZHc0T0o z>BiDJETHn*t@4KnuK=z@gp^~Z)?KavWXt0h+SF>kR#wGb3&4AZ zS1Pfq^FYrnV)fXbobGg?DLPX)ia$glgJOw$vt==5m_0i`0<6O+A0#hvAz$K$5LAGk-hUk zwQaR@nE?5d|1`L|0`f+G50H|jfm%8vP%=||6Gczwx!?rp6;)rQSclcRdBN#DPqCQy zI-j}Fu8g)oZ{A$>=^sw4OZ*Y0n#7Q53e{pr?SP6ul`-mxX9ae(8B-lMYoExdCb{^+ z>8s9Rkg9_LW!aUnUAt>5+u6_?eWU$G1jr$_9#X~4+Qx;agbO2-upRNpjD1(p@>^Q$ zX`uy5O@U)CruS3XugHWy9cW&)xlt6g%D!kGHuY>M=5(M7NQfnc?)}`nq)&)Q=vr!O z=1k+etO*xTlD&WTBRjE%m>p9 z;oX-Xt7H!9@MRuk?Y`k@*eZO_)}wiB>1m%phXt{vhr999s*BpQYF`HXQxHpaQ09rR zmpQ#?nfd|Qp*f(Q(fuWpsxh=Qx4YA@sZJQh!qQi1l(fwV!(V%O#<9L0XFn<0dcEG+ z6O|cqCswD_YlOSNj>v3x1mN%EP6Bn?W?gn|A&1H#tFd+3Rdw2YInf?DA!c`QI}2#u zjO5adbR`aD{CSqN+ii#V$OOkT zGH`;&o)FkXOmYy=y%MY4V&N{HTi3zbl{-QJ?gL2h-WCQAAKBIsg^xT|1)QrbJxQ#o z8Jqz1HA-~$g-^LGhxzOkN(bKrRskGJo-;$LDr`T(>BRvO4JT1Z60#Oc<`V_#*l0p1 zX`dWdjg$;^kAsCqT{V;E)`YVO3#CnnfVITe161{t23$0I z4X!}3z7hx|t4#p_M(02O5h{(39J3uJKo)}#4`qfEJwgGvz99@*tvjLxyKglCfPCBg z@P^`Ma=*{sx+jJTBI3Eh1F1S4;PV;q+y*q0g8?$2mOrKqaoIl3z$dU2vC?RqUX7P) zN%1Y`?`h5&9TE;w$VDJuF>)8&fPC+EPGS*s-MB6w9K2pp?|-L`fs3Nx<4&XxK#BGM z96{ci=~fKLUII_9{dC}8vj11T*YH=pw`RLwxlqrm){14yEJvfJ@Qpv^1uFW5lr$P? z{?^m~r`H6aN~6CEh!;={RxYI=LVtf=A=XGgVo7dI%bTjdX=vpYHcl?ZbYpKciyN!M zOG_pD>fHGo@7=6hN+oG~oxWK%8J2OyxH9_39LN%&+UYwwXpC_ z{(Ni%g+8={w%+b_)fgkLz;iD#>zFO=m#{l~ch?H6mYu(;iu0iy3|d74>^<;HfC@3_ z${XYdWg73*%B8b<^Daly%nwm6U+z;6IHsKzS6@q-9bNev4{z8Gjg)hYIx_WfPZ0@? zTCK{Y;JBz*&S4cuRB9-RnFULWHXDS3hCsb5xVG6Mq`S~khRSWrt&KYX*Sw+na2dhu5 z5Hl2rN9+Eg{<6>Su6@|%{Xp;~mg4Arn^s=@@&&OZK8~;JprET!Sll4L`!HD{UoKZ% z^0LYz>J_8ovkhzfDQoQNFYmg;#Y%F^v6GS*BVlex7O-~3=}oXZh6Z%AFH@ftP}7Gk zN&7Ac=H3R#Jp?}Gw)+es;#wdr<2daR1&28!MF7_Mds#q-pyiFenv2-I9$zOf<9TKY znEJV3p6}tX+B4o?>=6?J{Binxl>#40nsiD8#&Dfm$jE>YhnKC~-)l*HlT-{h+fCaF4BhVD(jo3v!P{_EIi7Mp-nfEuK8Y4;-=$ z#`#r58<7g$&3y%K*dRXa7VAAN8AmY#v~Klp{_%h2p#N2Z_`_~49+Vw^ zu>{MJctJ+;&PmdWTqx+)vaLJ2WZ{B#XqSN)P<2IA=o|nBYu$P&OF=$*VRbp@36>)i zaZwaTH(fkWHTcC@U68T`FWEd(^SfBqwOe|_A?{7bkF-4B-8C26!K8-^Is$C8_UK!O zj~!+RP$nvuS44ia@d3&~rxH{V!nNMVC#7?m!gal`Up4=x;+GCs2yEP)BRM;Nf;p8U zA5h>g*4EuT5l>|d*|^@fn2~oA_}2%35g^eu6Dm_a?Un$S*d65}?PHy;las0Ds*{!R z+}j7z$6@Wk4Y2!Zu?~O>6aWXA1AQIjV#HY1?Yw~`9i3AAv=Y~dgj$x8DMeHs8!gOJWe_Y2n^(nkh&o9TT>X1G7Cjxa^Ro`un zRXPf`#ljQOXCRCm;-oob7Rsr+4CjIAZbvn0AB2y_cqRF@|2?MyaJ7|i{> zsN8<5osGU%{hLkTKSfvZQMzB1lODVBxi!+-~+wgj83=K{{0 zD`?xlmSufkJJ%A^bI^%MzKIw^l~?bhjND)1`74@(_=22(e~eYjU;y1*pM`j8a>gIK z@i-T!@PG`##Vz)8(oFkEnSts9k8KrQ?#`7t=7xY72U{cJLBiI3{;1cqAFz}DcU0e` zNXegDREpHJC~5Zj+(ysmpsV)1rFQrJ`?mG>HZ~G0Uc(zY$k|B|T5F%R1iA*SPrF~) zQ{yeLL9`yVk)8>D2)feJ$ix#O&Od+ceTe}@=m7$aC)9EYiEnheZ|Hu+e7vmskR@(* z=p*U&-eI=n@!b59<*i~?-R9M^u?GXg7HB#h3Kj$2&O34{Tjgk8)#w?XaxN{nDUSL5 z<5q@*NxoqhcC2LSBxWRbG;icboY`j2JK6MY?_W!cz85`0%jWoSN^BW)L%l%J+}>iL zlaTnTNy^c3u<&(EJw4g_Gg=_fw;v1Uc!riSMY!L=byyttRN+3m=>L4YACjNZtrxeg zo%}zFDPK1XUs`S34nCjieqG$ZAh3(%WSdaV9oeP}{wvlbZ(&$fEyZcb{-sNNlj~2I zLw%Ens#}ohDb>G1Fw!DMV;E{&;k7$4^2Tz0j)&1mS<9ul50)D-8VhwY17vFrpN%5_ZhM4n#%)WE^8sV+ZytG0f-QeX1rhXo4-9dw| zj=lD z61j}!OQ+~gRl5EqW&<0vr$?T&=j(LTbV07-Raxn=m!b^73Fb$hs)OT)ErEIs8Uq!F zqvQ|P|8RHyi$e92m3{&}B<4d5A{CGZ(vWJqoJ=##+;1-tVM z{=|%xjW_$3uT6Ziyx0jO4dVN!z(?rJjAIV|F{if>9R^@_3CHc~z((=6l}#lC`8}fm zc$Ub+n|gzxYWE)28h~#uiYA+e6m#k4;u82x+zsrNxuyO^Av9%Tl6TtT)%!*9OygJm zro#B!81hY_eo9{b!)R|g;lW7O>U*w)EcMBYm7a!HPpVRm@h9trqdB~n4i~Due8L%k zFhuW%i&r?d%b>Wo8csrQ)lyV)N?An zAk755paZy60aLTK%zaQ8S6_+JgW5R=7I|9>ksaTWJac$9qT#Tpu6H)?+@u`UreQ?U z=|}nZBvgb4d}z6Cd9r`Kuy1TrSQV=(&@VK3^=9Y#TAX7P(PAE;=oe@n--JECJHM;7 zn2D+>xs2^8=rdPoI(~$h-m&rf2V$#H^6Dl>CYv(p^!O>@*&Cd73YPP_dGy=m4X~cI zAMB-|VEpw~IQnN*%MA+8rKJJ9;wQsDpLbc#lfglNFpA-zJVBeqTm|w+PYnm~~Q2+Dk{vDPQWq`(=8b&QB&gU+V2FG@a-J9@C zWdQBtUQB?`G@!6m+PwICxnkdhgEFZuf4wTQqs0nyBWmJ`k3}3RjbE#35oII9?6t(D z=URH5IAsK}U(=eHrln%S1-?;-z%=mAkK=9dAIR}$-_DgIz#j<=m5WL^-o>v#o*i!j zcIGh&l;f0u!#%RC8Rn3`VRH~{0?_C5mb7vILeQ#$k}p%Wx~iH#So>(qusARHfcJO5 z12%U#$Z|CF#JXzrn<4}wlg`zQ;a+Zbp;nrF!F*<~@5%89Kye1_A?^F}E#5q(H>MC# zZY@}oz;H50W$NvuZd|+sIl%y=vc&e-bc?05*bHplo68+Z@z$lD z;!bwojj`pzHI*rX3=yx~lbW=l4TZTv^(@g|t>SyYKA$34!89)yChl=!Zc>~w15fs+5G zE7t4rU{x%ToY|~r&=&Gj0#N$P2r-OoQ>{JQV6gW>rlx+7yJ5(Wl|_l3hy70CLHfr& z17MnhHnP?O<@t8wh6(9?8{{Tn(%PuIa=W zeNb<883`X#b}hff(X~fG=8j$MWeIOQ`(7&3%`>$sG4W?ONIgF7SsaQz=Ki(HC9V?h`({Ezsfy zX*QZGV-pK_aLx2WeTu@q{tXk>07nwVs=E*tx%`>`H7pqQKoucA^8MxAYk)Ef_1(-~ zIDd8>O-_vpSUGq@PqjY$li{$JgvpXnqd?D4Lwr_iQ1}6}Ef2c@chWle2rhlnEIxc| z#f7lYJ(^c(krQYG@MiAxi((hId#+ERtL-iQ=b!{d`9}+Vz#9W%-|ITOfHHkp5GF= z#alU%DGP=?1!SU~m5z9VL}}93R?2rjB;^E1_xh^tC(mRLfh;v`#7opDzNWX|t+i}o zW_19|z8o8YbG(X1YB#Ev4?gkB$|vnsABS@*>6GM{{O`8-MEd6{gD2|3StY(Sp=@Q* znI`+m5dG79hx|i+HvB5*T44b(1`@i+=blJXor6IS)m}B#=WChe~C*~eK&FU zRbmt2fj|RjQrnQmVsypKz^b;_xS`YVrb(>zMc7FIY}#mIE;EL(wH&SYTiw{ZMruYq zeYx)1&vx8X`a*QRJ3ONDelIRiT{D2Bx6|Ags9C>`HU6vj^VQ7PPXUigZ@C{99FI1c zB~rm+=b`dC;G4Up-BF_QUVguJd=@lTF-I9gT*Y0T%#{8tqfwBse>+!Fx3xg^#um5l z4?+<>X7DsjMzO`COxIbj`+0YZq9`ESBUv1_1trO8f!%3ZJ@b|To%>>C(p90Pr}#g| zn(Exv58XlykRYbOc)zXXSgZHdslHxuuo&7ypFeM~I&U^&~Yk+lqtu)V=w+aT|{i&LNpF=V+p)EqPI#9{uveN0=fxXbYaK73n>TvrVG5d}0 zvK7*}@T&Lxz%k8&)_RY9o&d0}Zxp+lw-Lrrd~INM3K&j3ROnuWa_<=bkubnL1!8I# zc|H8g+&*~oAQA<@h6nY9*AFl+H^qYZ;=e5weGH>7=K2!T*V+#4yyiKVwLs$B2w(&k zK7cOo7$zwu_!Np9+SHfbz8y6|R=*0f18(~DUB`97K*nQ_*D(O|d_xHWHVl>aE4#FN ztiCwwCWZ^;MVA*-)jzNkzXgO$=CfKuID8&RN%`Nl;F4gi?+$(22WaM)9iQPEG((w7v#CEm5Wo!NpH|rL%-?=upH;pww z=?I07nJ31R3dfC8|Ac#v`4nEZ*PGDgLsnYsT zKbU6gdy-@lK=!AO;g4;7xjo2{X~%p5^@^l8{6GQ%p&9uq>+<$^@d=l$gf{4(z#}K+ z!xXz?Oj*pQvyO3Vfqf+vm1?;=6V58r0DJ1YxNC^eh(WfE%J_7n~2c0(U7g#{=&2Cz4hP*C|tEQA-G1q+1+noX>&P@N@jhvDFFp zua&VKwi<;OeWul*zRjX{M0~P8JEeR={frQLvPzCv{Jtg%KSy(#fBKYZ1)zU#%tIHl z63K`6u1ZT9j3jzW4aTf={v-Sl+j?KtEIuwPVt+%t{_NL=UtZ8=Lu~jcUDU)rrt;sGnfcDCmdos&H{m2wRiV>L3S9``q4Av0cZ+IrSHO(bC z>W#$Wd}BQP@D(5COp5!OkL*y#Cq1cU!B9Iev)|3G=pLt8QS(T$1d$o_v)E#+olDbC za&g!%@=gn`de)E}!-%{>aPHS0c|4puXmo5w5czC)nEZU9L^MZfPGi>gl6TS-J0C@Q zg#UpB>#t$&81$ry0B6_lo%+rIm$LJt=zzn-vJP9#9}Q=~=_X22o&&F4xc^BHes29W z<-*u$dmZRSM$VBJOe@i=@AY;VFJ^$dw{gzcn0L45MB6-Rn3?;LuP1<`x6OunzUgj< z^UfHuGRx2YLn{9t9Pg+k>!=8VpX)VhFuM+WE=s`Vl!A8C7lUcBPSpt33!Uy!#$B5E zIfsIb!6P!!O~lFYi0JXJOAdZ9DSduWXuQ=mcY z97`>ifw)m+{~L+d9CNiw*9vK6`4=~@Py4n!iZ~>z!G!!^gB_h#ZFodS?i3pqxSp>-$&D2Xia>K5+f4 zJ)>fd^yg+>GWTZs)yJZ(qY^i~6)0=#NeMvr;}dsQBGJ9BaF<*)eBIHV@{(~~cry4- z{a-5Z!N;K6Mn|mSpXIM_S*Z!^F4tcjC%jdRNSoX4t?xfaUCT0hGIj$W7WHxZyHE|fp7O1Z0hNx2I(g*k-n4Clj6d#qF10r`qb%pUu+ zyD55VTz0I<$*W%uA$i;K`J7GCk7;ui@%QS%@$y&$<5GbPOQS(hXu=N8kj!kI6`a;2@NHe03G00$UV=IWuZ3gY_XSDNtgosv zl)z(EJ8yXn5%jAX41_|Vsl4-AFm3?@{}&tkpWqtb`+OyJu^lqKYM6zGT2(HtUo^@p zS4F`P=OXZsYTW6rm`0W?v_3)ZB@QruVirc3a zwcc63fXF>%k=bE}fwZ9A%IVL25*r$QS|PKF{oZHw()fk+1pa?4Kxk0fnro^cje~e} znDOTc*56a%<90vh0F%qIuzAYiDIHV&k-=P!eM~Bj2cp4yWph+w5n8U_wd}Zy?f%XC z`_0|&>KIp?waRJP*dsN|Fd0T* z3`UtrWp_sv2{75MAMI}()YTh8Bn;J5zU|rOmOi}FDE5zt^`K|Rk1{hH?d|P zZKEjvHzNDsEj>BX@2EJ`uuOidt&7j%osV|&gHI*e>!V$k=Nefi9hVzB927E3ORn>Z zI65zi36jYHrCg2kVgejrHZ6bY<1`Bf>UAk+P5oRPc)gYc`rP5KQEx%btqF@E%0J4} z;0|i(&)6S#6(=?pBs+@{HBfi`I_f=@Z?aTr)-UdV9#4RF9B)(UX-kem%Q&w^2qvo@ zbEq;!Tip2bKI5qFT=!5AUqvIULcwKtYuEd3p zdU_l%0BNc+oBE!NC1`@ozbqt@{OIetKDs;dW?*c|q#PU57m{P`)fOP4D#3}KtToX> z5nl3yCzi%nGVJ>7s6daCPTmoR6kvM0`lum7a=5no^G={0bTc_{!l@U3`8Jwxahe>bgbatURRO&U|*X{>(li`2MMbp_|c#B2&hMXCwVnsF}>%YnY844OGf^`B$XKl}GMGd+tIoxlz-R}y1ylc1QZZzW@BiW4LAkAb?j6P=F}_`kf3gR^GEb8R

      mAfsb*b6cj6*ZI?M?IqD+7=wLN@ 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 NYUn;Heqa^+{{SxTXjcFL diff --git a/umn/source/_static/images/en-us_image_0000001668036886.png b/umn/source/_static/images/en-us_image_0000001716141253.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001668036886.png rename to umn/source/_static/images/en-us_image_0000001716141253.png diff --git a/umn/source/_static/images/en-us_image_0000001726718109.png b/umn/source/_static/images/en-us_image_0000001726718109.png new file mode 100644 index 0000000000000000000000000000000000000000..ca8265da81ea2a69b2daa0cc2f1875a82513d641 GIT binary patch literal 28875 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 literal 0 HcmV?d00001 diff --git a/umn/source/add-ons/autoscaler.rst b/umn/source/add-ons/autoscaler.rst index a522c9a..f2355c5 100644 --- a/umn/source/add-ons/autoscaler.rst +++ b/umn/source/add-ons/autoscaler.rst @@ -30,7 +30,7 @@ autoscaler controls auto scale-out and scale-in. Auto scale-out will be performed when: - Node resources are insufficient. - - No node affinity policy is set in the pod scheduling configuration. That is, if a node has been configured as an affinity node for pods, no node will not be automatically added when pods cannot be scheduled. For details about how to configure the node affinity policy, see :ref:`Scheduling Policy (Affinity/Anti-affinity) `. + - No node affinity policy is set in the pod scheduling configuration. If a node has been configured as an affinity node for pods, no node will not be automatically added when pods cannot be scheduled. For details about how to configure the node affinity policy, see :ref:`Scheduling Policy (Affinity/Anti-affinity) `. - When the cluster meets the node scaling policy, cluster scale-out is also triggered. For details, see :ref:`Creating a Node Scaling Policy `. @@ -42,24 +42,31 @@ autoscaler controls auto scale-out and scale-in. When a cluster node is idle for a period of time (10 minutes by default), cluster scale-in is triggered, and the node is automatically deleted. However, a node cannot be deleted from a cluster if the following pods exist: - - Pods that do not meet specific requirements set in PodDisruptionBudget + - Pods that do not meet specific requirements set in Pod Disruption Budgets (`PodDisruptionBudget `__) - Pods that cannot be scheduled to other nodes due to constraints such as affinity and anti-affinity policies - Pods that have the **cluster-autoscaler.kubernetes.io/safe-to-evict: 'false'** annotation - - Pods (except those created by kube-system DaemonSet) that exist in the kube-system namespace on the node + - Pods (except those created by DaemonSets in the kube-system namespace) that exist in the kube-system namespace on the node - Pods that are not created by the controller (Deployment/ReplicaSet/job/StatefulSet) -Notes and Constraints ---------------------- + .. note:: + + When a node meets the scale-in conditions, autoscaler adds the **DeletionCandidateOfClusterAutoscaler** taint to the node in advance to prevent pods from being scheduled to the node. After the autoscaler add-on is uninstalled, if the taint still exists on the node, manually delete it. + +Constraints +----------- -- Only clusters of v1.9.10-r2 and later support autoscaler. - Ensure that there are sufficient resources for installing the add-on. - The default node pool does not support auto scaling. For details, see :ref:`Description of DefaultPool `. +- When autoscaler is used, some taints or annotations may affect auto scaling. Therefore, do not use the following taints or annotations in clusters: + + - **ignore-taint.cluster-autoscaler.kubernetes.io**: The taint works on nodes. Kubernetes-native autoscaler supports protection against abnormal scale outs and periodically evaluates the proportion of available nodes in the cluster. When the proportion of non-ready nodes exceeds 45%, protection will be triggered. In this case, all nodes with the **ignore-taint.cluster-autoscaler.kubernetes.io** taint in the cluster are filtered out from the autoscaler template and recorded as non-ready nodes, which affects cluster scaling. + - **cluster-autoscaler.kubernetes.io/enable-ds-eviction**: The annotation works on pods, which determines whether DaemonSet pods can be evicted by autoscaler. For details, see `Well-Known Labels, Annotations and Taints `__. Installing the Add-on --------------------- -#. Log in to the CCE console, click the cluster name, and access the cluster console. Choose **Add-ons** in the navigation pane, locate **autoscaler** on the right, and click **Install**. -#. Configure add-on installation parameters. +#. Log in to the CCE console and access the cluster console. Choose **Add-ons** in the navigation pane, locate **autoscaler** on the right, and click **Install**. +#. On the **Install Add-on** page, configure the specifications. .. table:: **Table 1** Specifications configuration @@ -74,14 +81,24 @@ Installing the Add-on | | | | | - **Single**: The add-on is deployed with only one pod. | | | - **HA50**: The add-on is deployed with two pods, serving a cluster with 50 nodes and ensuring high availability. | - | | - **HA200**: The add-on is deployed with two pods, serving a cluster with 50 nodes and ensuring high availability. Each pod uses more resources than those of the **HA50** specification. | + | | - **HA200**: The add-on is deployed with two pods, serving a cluster with 200 nodes and ensuring high availability. Each pod uses more resources than those of the **HA50** specification. | | | - **Custom**: You can customize the number of pods and specifications as required. | +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Multi AZ | - **Preferred**: Deployment pods of the add-on are preferentially scheduled to nodes in different AZs. If the nodes in the cluster do not meet the requirements of multiple AZs, the pods are scheduled to a single AZ. | - | | - **Required**: Deployment pods of the add-on are forcibly scheduled to nodes in different AZs. If the nodes in the cluster do not meet the requirements of multiple AZs, not all pods can run. | + | Pods | Number of pods that will be created to match the selected add-on specifications. | + | | | + | | If you select **Custom**, you can adjust the number of pods as required. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Multi-AZ | - **Preferred**: Deployment pods of the add-on are preferentially scheduled to nodes in different AZs. If the nodes in the cluster do not meet the requirements of multiple AZs, the pods are scheduled to a single AZ. | + | | - **Required**: Deployment pods of the add-on will be forcibly scheduled to nodes in different AZs. If there are fewer AZs than pods, the extra pods will fail to run. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Containers | CPU and memory quotas of the container allowed for the selected add-on specifications. | + | | | + | | If you select **Custom**, you can adjust the container specifications as required. | +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - .. table:: **Table 2** Parameter configuration +#. Configure the add-on parameters. + + .. table:: **Table 2** Parameters +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Parameter | Description | @@ -106,11 +123,11 @@ Installing the Add-on | | | | | .. note:: | | | | - | | If both auto scale-out and scale-in exist in a cluster, you are advised to set **How long after a scale-out that a scale-in evaluation resumes** to 0 minutes. This can prevent the node scale-in from being blocked due to continuous scale-out of some node pools or retries upon a scale-out failure, resulting in unexpected waste of node resources. | + | | If both auto scale-out and scale-in exist in a cluster, set **How long after a scale-out that a scale-in evaluation resumes** to 0 minutes. This can prevent the node scale-in from being blocked due to continuous scale-out of some node pools or retries upon a scale-out failure, resulting in unexpected waste of node resources. | | | | | | How long after the node deletion that a scale-in evaluation resumes. Default value: 10 minutes. | | | | - | | How long after a scale-in failure that a scale-in evaluation resumes. Default value: 3 minutes. For details about the impact and relationship between the scale-in cooling intervals configured in the node pool and autoscaler, see :ref:`Description of the Scale-In Cool-Down Period `. | + | | How long after a scale-in failure that a scale-in evaluation resumes. Default value: 3 minutes. For details about the impact and relationship between the scale-in cooling intervals configured in the node pool and autoscaler, see :ref:`Scale-In Cool-Down Period `. | | | | | | - **Max. Nodes for Batch Deletion**: Maximum number of empty nodes that can be deleted at the same time. Default value: 10. | | | | @@ -131,10 +148,21 @@ Installing the Add-on #. After the configuration is complete, click **Install**. +Components +---------- + +.. table:: **Table 3** autoscaler + + =================== ==================================== ============= + Container Component Description Resource Type + =================== ==================================== ============= + autoscaler Auto scaling for Kubernetes clusters Deployment + =================== ==================================== ============= + .. _cce_10_0154__section59676731017: -Description of the Scale-In Cool-Down Period --------------------------------------------- +Scale-In Cool-Down Period +------------------------- Scale-in cooling intervals can be configured in the node pool settings and the autoscaler add-on settings. diff --git a/umn/source/add-ons/coredns_system_resource_add-on_mandatory.rst b/umn/source/add-ons/coredns_system_resource_add-on_mandatory.rst index 3fd0f80..8e27e3f 100644 --- a/umn/source/add-ons/coredns_system_resource_add-on_mandatory.rst +++ b/umn/source/add-ons/coredns_system_resource_add-on_mandatory.rst @@ -2,19 +2,19 @@ .. _cce_10_0129: -coredns (System Resource Add-On, Mandatory) +CoreDNS (System Resource Add-On, Mandatory) =========================================== Introduction ------------ -The coredns add-on is a DNS server that provides domain name resolution services for Kubernetes clusters. coredns chains plug-ins to provide additional features. +CoreDNS is a DNS server that provides domain name resolution services for Kubernetes clusters. CoreDNS chains plug-ins to provide additional features. -coredns is an open-source software and has been a part of CNCF. It provides a means for cloud services to discover each other in cloud-native deployments. Each of the plug-ins chained by coredns provides a particular DNS function. You can integrate coredns with only the plug-ins you need to make it fast, efficient, and flexible. When used in a Kubernetes cluster, coredns can automatically discover services in the cluster and provide domain name resolution for these services. By working with DNS server, coredns can resolve external domain names for workloads in a cluster. +CoreDNS is an open-source software and has been a part of CNCF. It provides a means for cloud services to discover each other in cloud-native deployments. Each of the plug-ins chained by CoreDNS provides a particular DNS function. You can integrate CoreDNS with only the plug-ins you need to make it fast, efficient, and flexible. When used in a Kubernetes cluster, CoreDNS can automatically discover services in the cluster and provide domain name resolution for these services. By working with DNS server, CoreDNS can resolve external domain names for workloads in a cluster. -**coredns is a system resource add-on. It is installed by default when a cluster of Kubernetes v1.11 or later is created.** +**This add-on is installed by default during cluster creation.** -Kubernetes v1.11 and later back CoreDNS as the official default DNS for all clusters going forward. +Kubernetes backs CoreDNS as the official default DNS for all clusters going forward. CoreDNS official website: https://coredns.io/ @@ -24,148 +24,181 @@ Open source community: https://github.com/coredns/coredns For details, see :ref:`DNS `. -Notes and Constraints ---------------------- +Constraints +----------- -When coredns is running properly or being upgraded, ensure that the number of available nodes is greater than or equal to the number of coredns instances and all coredns instances are running. Otherwise, the upgrade will fail. +When CoreDNS is running properly or being upgraded, ensure that the number of available nodes is greater than or equal to the number of CoreDNS instances and all CoreDNS instances are running. Otherwise, the upgrade will fail. Installing the Add-on --------------------- This add-on has been installed by default. If it is uninstalled due to some reasons, you can reinstall it by performing the following steps: -#. Log in to the CCE console, click the cluster name, and access the cluster console. Choose **Add-ons** in the navigation pane, locate **coredns** on the right, and click **Install**. +#. Log in to the CCE console and access the cluster console. Choose **Add-ons** in the navigation pane, locate **coredns** on the right, and click **Install**. -#. On the **Install Add-on** page, select the add-on specifications and set related parameters. +#. On the **Install Add-on** page, configure the specifications. - .. table:: **Table 1** coredns add-on parameters + .. table:: **Table 1** CoreDNS parameters - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+=========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================+ - | Add-on Specifications | Concurrent domain name resolution ability. Select add-on specifications that best fit your needs. | - | | | - | | If you select **Custom qps**, the domain name resolution QPS provided by CoreDNS is positively correlated with the CPU consumption. Adjust the number of pods and container CPU/memory quotas as required. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Pods | Number of pods that will be created to match the selected add-on specifications. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Multi AZ | - **Preferred**: Deployment pods of the add-on are preferentially scheduled to nodes in different AZs. If the nodes in the cluster do not meet the requirements of multiple AZs, the pods are scheduled to a single AZ. | - | | - **Required**: Deployment pods of the add-on are forcibly scheduled to nodes in different AZs. If the nodes in the cluster do not meet the requirements of multiple AZs, not all pods can run. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Containers | CPU and memory quotas of the container allowed for the selected add-on specifications. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameters | - **parameterSyncStrategy**: indicates whether to configure consistency check when an add-on is upgraded. | - | | | - | | - **ensureConsistent**: indicates that the configuration consistency check is enabled. If the configuration recorded in the cluster is inconsistent with the actual configuration, the add-on cannot be upgraded. | - | | - **force**: indicates that the configuration consistency check is ignored during an upgrade. Ensure that the current effective configuration is the same as the original configuration. After the add-on is upgraded, restore the value of **parameterSyncStrategy** to **ensureConsistent** and enable the configuration consistency check again. | - | | | - | | - **stub_domains**: A domain name server for a user-defined domain name. The format is a key-value pair. The key is a suffix of DNS domain name, and the value is one or more DNS IP addresses. | - | | | - | | - **upstream_nameservers**: IP address of the upstream DNS server. | - | | | - | | - **servers**: The servers configuration is available since coredns 1.23.1. You can customize the servers configuration. For details, see `dns-custom-nameservers `__. **plugins** indicates the configuration of each component in coredns (https://coredns.io/manual/plugins/). You are advised to retain the default configurations in common scenarios to prevent CoreDNS from being unavailable due to configuration errors. Each plugin component contains **name**, **parameters** (optional), and **configBlock** (optional). The format of the generated Corefile is as follows: | - | | | - | | $name $parameters { | - | | | - | | $configBlock | - | | | - | | } | - | | | - | | :ref:`Table 2 ` describes common plugins. | - | | | - | | Example: | - | | | - | | .. code-block:: | - | | | - | | { | - | | "servers": [ | - | | { | - | | "plugins": [ | - | | { | - | | "name": "bind", | - | | "parameters": "{$POD_IP}" | - | | }, | - | | { | - | | "name": "cache", | - | | "parameters": 30 | - | | }, | - | | { | - | | "name": "errors" | - | | }, | - | | { | - | | "name": "health", | - | | "parameters": "{$POD_IP}:8080" | - | | }, | - | | { | - | | "configBlock": "pods insecure\nfallthrough in-addr.arpa ip6.arpa", | - | | "name": "kubernetes", | - | | "parameters": "cluster.local in-addr.arpa ip6.arpa" | - | | }, | - | | { | - | | "name": "loadbalance", | - | | "parameters": "round_robin" | - | | }, | - | | { | - | | "name": "prometheus", | - | | "parameters": "{$POD_IP}:9153" | - | | }, | - | | { | - | | "configBlock": "policy random", | - | | "name": "forward", | - | | "parameters": ". /etc/resolv.conf" | - | | }, | - | | { | - | | "name": "reload" | - | | }, | - | | { | - | | "name": "log" | - | | } | - | | ], | - | | "port": 5353, | - | | "zones": [ | - | | { | - | | "zone": "." | - | | } | - | | ] | - | | } | - | | ], | - | | "stub_domains": { | - | | "acme.local": [ | - | | "1.2.3.4", | - | | "6.7.8.9" | - | | ] | - | | }, | - | | "upstream_nameservers": ["8.8.8.8", "8.8.4.4"] | - | | } | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+=================================================================================================================================================================================================================+ + | Add-on Specifications | Concurrent domain name resolution ability. Select add-on specifications that best fit your needs. | + | | | + | | If you select **Custom qps**, the domain name resolution QPS provided by CoreDNS is positively correlated with the CPU consumption. Adjust the number of pods and container CPU/memory quotas as required. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Pods | Number of pods that will be created to match the selected add-on specifications. | + | | | + | | If you select **Custom qps**, you can adjust the number of pods as required. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Multi-AZ | - **Preferred**: Deployment pods of the add-on will be preferentially scheduled to nodes in different AZs. If all the nodes in the cluster are deployed in the same AZ, the pods will be scheduled to that AZ. | + | | - **Required**: Deployment pods of the add-on will be forcibly scheduled to nodes in different AZs. If there are fewer AZs than pods, the extra pods will fail to run. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Containers | CPU and memory quotas of the container allowed for the selected add-on specifications. | + | | | + | | If you select **Custom qps**, you can adjust the container specifications as required. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - .. _cce_10_0129__table1420814384015: +#. Configure the add-on parameters. - .. table:: **Table 2** Default plugin configuration of the active zone of coredns + .. table:: **Table 2** CoreDNS add-on parameters - +-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | plugin Name | Description | - +=============+======================================================================================================================================================================================+ - | bind | Host IP address listened by coredns. You are advised to retain the default value **{$POD_IP}**. | - +-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | cache | DNS cache is enabled. | - +-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | errors | Errors are logged to stdout. | - +-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | health | Health check configuration. The current listening IP address is {$POD_IP}:8080. Retain the default value. Otherwise, the coredns health check fails and coredns restarts repeatedly. | - +-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | kubernetes | CoreDNS Kubernetes plug-in, which provides the service parsing capability in a cluster. | - +-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | loadbalance | Round-robin DNS load balancer that randomizes the order of A, AAAA, and MX records in the answer. | - +-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | prometheus | Port for obtaining coredns metrics. The default zone listening IP address is {$\ *POD_IP*}:9153. Retain the default value. Otherwise, CloudScope cannot collect coredns metrics. | - +-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | forward | Any queries that are not within the cluster domain of Kubernetes will be forwarded to predefined resolvers (/etc/resolv.conf). | - +-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | reload | The changed Corefile can be automatically reloaded. After editing the ConfigMap, wait for two minutes for the modification to take effect. | - +-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+=========================================================================================================================================================================================================================================================================================================================================================+ + | Stub domain settings | A domain name server for a custom domain name. The format is a key-value pair. The key is a domain name suffix, and the value is one or more DNS IP addresses, for example, **acme.local -- 1.2.3.4,6.7.8.9**. | + | | | + | | For details, see :ref:`Configuring the Stub Domain for CoreDNS `. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Advanced settings | - **parameterSyncStrategy**: indicates whether to configure consistency check when an add-on is upgraded. | + | | | + | | - **ensureConsistent**: indicates that the configuration consistency check is enabled. If the configuration recorded in the cluster is inconsistent with the actual configuration, the add-on cannot be upgraded. | + | | - **force**: indicates that the configuration consistency check is ignored during an upgrade. Ensure that the current effective configuration is the same as the original configuration. After the add-on is upgraded, restore the value of **parameterSyncStrategy** to **ensureConsistent** and enable the configuration consistency check again. | + | | - **inherit**: indicates that differentiated configurations are automatically inherited during an upgrade. After the add-on is upgraded, restore the value of **parameterSyncStrategy** to **ensureConsistent** and enable the configuration consistency check again. | + | | | + | | - **stub_domains**: A domain name server for a user-defined domain name. The format is a key-value pair. The key is a suffix of DNS domain name, and the value is one or more DNS IP addresses. | + | | | + | | - **upstream_nameservers**: IP address of the upstream DNS server. | + | | | + | | - servers:The servers configuration has been available since CoreDNS 1.23.1. You can customize the servers configuration. For details, see `dns-custom-nameservers `__. | + | | | + | | **plugins** indicates the configuration of each component in CoreDNS. Retain the default settings typically to prevent CoreDNS from being unavailable due to configuration errors. Each plugin component contains **name**, **parameters** (optional), and **configBlock** (optional). The format of the generated Corefile is as follows: | + | | | + | | .. code-block:: | + | | | + | | $name $parameters { | + | | $configBlock | + | | } | + | | | + | | :ref:`Table 3 ` describes common plugins. For details, see `Plugins `__. | + | | | + | | Example: | + | | | + | | .. code-block:: | + | | | + | | { | + | | "servers": [ | + | | { | + | | "plugins": [ | + | | { | + | | "name": "bind", | + | | "parameters": "{$POD_IP}" | + | | }, | + | | { | + | | "name": "cache", | + | | "parameters": 30 | + | | }, | + | | { | + | | "name": "errors" | + | | }, | + | | { | + | | "name": "health", | + | | "parameters": "{$POD_IP}:8080" | + | | }, | + | | { | + | | "name": "ready", | + | | "{$POD_IP}:8081" | + | | }, | + | | { | + | | "configBlock": "pods insecure\nfallthrough in-addr.arpa ip6.arpa", | + | | "name": "kubernetes", | + | | "parameters": "cluster.local in-addr.arpa ip6.arpa" | + | | }, | + | | { | + | | "name": "loadbalance", | + | | "parameters": "round_robin" | + | | }, | + | | { | + | | "name": "prometheus", | + | | "parameters": "{$POD_IP}:9153" | + | | }, | + | | { | + | | "configBlock": "policy random", | + | | "name": "forward", | + | | "parameters": ". /etc/resolv.conf" | + | | }, | + | | { | + | | "name": "reload" | + | | } | + | | ], | + | | "port": 5353, | + | | "zones": [ | + | | { | + | | "zone": "." | + | | } | + | | ] | + | | } | + | | ], | + | | "stub_domains": { | + | | "acme.local": [ | + | | "1.2.3.4", | + | | "6.7.8.9" | + | | ] | + | | }, | + | | "upstream_nameservers": ["8.8.8.8", "8.8.4.4"] | + | | } | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -#. After the preceding configurations are complete, click **Install**. + .. _cce_10_0129__table0209443564: + + .. table:: **Table 3** Default plugin configuration of the active zone of CoreDNS + + +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | plugin Name | Description | + +=============+==============================================================================================================================================================================================================================================================================+ + | bind | Host IP address listened by CoreDNS. You are advised to retain the default value **{$POD_IP}**. For details, see `bind `__. | + +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | cache | DNS cache is enabled. For details, see `cache `__. | + +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | errors | Errors are logged to stdout. For details, see `errors `__. | + +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | health | Health check configuration. The current listening IP address is *{$POD_IP}*\ **:8080**. Retain the default setting. Otherwise, the CoreDNS health check fails and CoreDNS restarts repeatedly. For details, see `health `__. | + +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ready | Whether the backend server is ready to receive traffic. The current listening port is {$POD_IP}:8081. If the backend server is not ready, CoreDNS suspends DNS resolution until the backend server is ready. For details, see `ready `__. | + +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | kubernetes | CoreDNS Kubernetes plug-in, which provides the service parsing capability in a cluster. For details, see `kubernetes `__. | + +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | loadbalance | Round-robin DNS load balancer that randomizes the order of A, AAAA, and MX records in the answer. For details, see `loadbalance `__. | + +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | prometheus | Port for obtaining CoreDNS metrics. The default zone listening IP address is *{$POD_IP}*\ **:9153**. Retain the default setting. Otherwise, prometheus cannot collect CoreDNS metrics. For details about, see `prometheus `__. | + +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | forward | Any queries that are not within the cluster domain of Kubernetes will be forwarded to predefined resolvers (**/etc/resolv.conf**). For details, see `forward `__. | + +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | reload | The changed Corefile can be automatically reloaded. After editing the ConfigMap, wait for 2 minutes for the modification to take effect. For details, see `reload `__. | + +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +#. Click **Install**. + +Components +---------- + +.. table:: **Table 4** CoreDNS components + + =================== ======================= ============= + Container Component Description Resource Type + =================== ======================= ============= + CoreDNS DNS server for clusters Deployment + =================== ======================= ============= How Does Domain Name Resolution Work in Kubernetes? --------------------------------------------------- @@ -188,16 +221,16 @@ DNS policies can be set on a per-pod basis. Currently, Kubernetes supports four **With stub domain configurations**: If stub domains and upstream DNS servers are configured, DNS queries are routed according to the following flow: -#. The query is first sent to the DNS caching layer in coredns. +#. The query is first sent to the DNS caching layer in CoreDNS. #. From the caching layer, the suffix of the request is examined and then the request is forwarded to the corresponding DNS: - - Names with the cluster suffix, for example, **.cluster.local**: The request is sent to coredns. + - Names with the cluster suffix, for example, **.cluster.local**: The request is sent to CoreDNS. - Names with the stub domain suffix, for example, **.acme.local**: The request is sent to the configured custom DNS resolver that listens, for example, on 1.2.3.4. - Names that do not match the suffix (for example, **widget.com**): The request is forwarded to the upstream DNS. -.. figure:: /_static/images/en-us_image_0000001568902577.png +.. figure:: /_static/images/en-us_image_0000001647576960.png :alt: **Figure 1** Routing **Figure 1** Routing diff --git a/umn/source/add-ons/everest_system_resource_add-on_mandatory.rst b/umn/source/add-ons/everest_system_resource_add-on_mandatory.rst index 472ff66..64a2095 100644 --- a/umn/source/add-ons/everest_system_resource_add-on_mandatory.rst +++ b/umn/source/add-ons/everest_system_resource_add-on_mandatory.rst @@ -8,15 +8,15 @@ everest (System Resource Add-On, Mandatory) Introduction ------------ -Everest is a cloud native container storage system. Based on the Container Storage Interface (CSI), clusters of Kubernetes v1.15.6 or later obtain access to cloud storage services. +everest is a cloud native container storage system, which enables clusters of Kubernetes v1.15.6 or later to access cloud storage services through the Container Storage Interface. **everest is a system resource add-on. It is installed by default when a cluster of Kubernetes v1.15 or later is created.** -Notes and Constraints ---------------------- +Constraints +----------- - If your cluster is upgraded from v1.13 to v1.15, :ref:`storage-driver ` is replaced by everest (v1.1.6 or later) for container storage. The takeover does not affect the original storage functions. -- In version 1.2.0 of the everest add-on, **key authentication** is optimized when OBS is used. After the everest add-on is upgraded from a version earlier than 1.2.0, you need to restart all workloads that use OBS in the cluster. Otherwise, workloads may not be able to use OBS. +- In version 1.2.0 of the everest add-on, **key authentication** is optimized when OBS is used. After the everest add-on is upgraded from a version earlier than 1.2.0, restart all workloads that use OBS in the cluster. Otherwise, workloads may not be able to use OBS. - By default, this add-on is installed in **clusters of v1.15 and later**. For clusters of v1.13 and earlier, the :ref:`storage-driver ` add-on is installed by default. Installing the Add-on @@ -26,48 +26,112 @@ This add-on has been installed by default. If it is uninstalled due to some reas #. Log in to the CCE console and access the cluster console. Choose **Add-ons** in the navigation pane, locate **everest** on the right, and click **Install**. -#. Select **Standalone**, **HA**, or **Custom** for **Add-on Specifications**. +#. On the **Install Add-on** page, configure the specifications. - The everest add-on contains the following containers. You can adjust the specifications as required. + .. table:: **Table 1** everest parameters - - **everest-csi-controller**: A Deployment workload. This container is responsible for creating, deleting, snapshotting, expanding, attaching, and detaching volumes. If the cluster version is 1.19 or later and the add-on version is 1.2.\ *x*, the pod of the everest-csi-driver component also has an everest-localvolume-manager container by default. This container manages the creation of LVM storage pools and local PVs on the node. + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+===============================================================================================================================================================================================================================================+ + | Add-on Specifications | Select **Single**, **Custom**, or **HA** for **Add-on Specifications**. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Pods | Number of pods that will be created to match the selected add-on specifications. | + | | | + | | If you select **Custom**, you can adjust the number of pods as required. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Multi-AZ | - **Preferred**: Deployment pods of the add-on are preferentially scheduled to nodes in different AZs. If the nodes in the cluster do not meet the requirements of multiple AZs, the pods are scheduled to a single AZ. | + | | - **Required**: Deployment pods of the add-on will be forcibly scheduled to nodes in different AZs. If there are fewer AZs than pods, the extra pods will fail to run. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Containers | The everest add-on contains the everest-csi-controller and everest-csi-driver components. For details, see :ref:`Components `. | + | | | + | | If you select **Custom**, you can adjust the component specifications as required. The CPU and memory request values can be increased based on the number of nodes and PVCs. For details, see :ref:`Table 2 `. | + | | | + | | In non-typical scenarios, the formulas for estimating the limit values are as follows: | + | | | + | | - everest-csi-controller | + | | | + | | - CPU limit: 250m for 200 or fewer nodes, 350m for 1000 nodes, and 500m for 2000 nodes | + | | - Memory limit = (200 MiB + Number of nodes x 1 MiB + Number of PVCs x 0.2 MiB) x 1.2 | + | | | + | | - everest-csi-driver | + | | | + | | - CPU limit: 300 m for 200 or fewer nodes, 500 m for 1,000 nodes, and 800 m for 2,000 nodes | + | | - Memory limit: 300 MiB for 200 or fewer nodes, 600 MiB for 1000 nodes, and 900 MiB for 2000 nodes | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - .. note:: + .. _cce_10_0066__table10463555206: - If you select **Custom**, the recommended **everest-csi-controller** memory configuration is as follows: + .. table:: **Table 2** Recommended configuration limits in typical scenarios - - If the number of pods and PVCs is less than 2000, set the memory upper limit to 600 MiB. - - If the number of pods and PVCs is less than 5000, set the memory upper limit to 1 GiB. + +------------------------+----------+------------------+-----------------------------------------------------------+--------------------------------------------------------------+-----------------------------------------------------------+--------------------------------------------------------------+ + | Configuration Scenario | | | everest-csi-controller | | everest-csi-driver | | + +========================+==========+==================+===========================================================+==============================================================+===========================================================+==============================================================+ + | Nodes | PVs/PVCs | Add-on Instances | CPU (The limit value is the same as the requested value.) | Memory (The limit value is the same as the requested value.) | CPU (The limit value is the same as the requested value.) | Memory (The limit value is the same as the requested value.) | + +------------------------+----------+------------------+-----------------------------------------------------------+--------------------------------------------------------------+-----------------------------------------------------------+--------------------------------------------------------------+ + | 50 | 1000 | 2 | 250 m | 600 MiB | 300 m | 300 MiB | + +------------------------+----------+------------------+-----------------------------------------------------------+--------------------------------------------------------------+-----------------------------------------------------------+--------------------------------------------------------------+ + | 200 | 1,000 | 2 | 250 m | 1 GiB | 300 m | 300 MiB | + +------------------------+----------+------------------+-----------------------------------------------------------+--------------------------------------------------------------+-----------------------------------------------------------+--------------------------------------------------------------+ + | 1000 | 1000 | 2 | 350 m | 2 GiB | 500 m | 600 MiB | + +------------------------+----------+------------------+-----------------------------------------------------------+--------------------------------------------------------------+-----------------------------------------------------------+--------------------------------------------------------------+ + | 1000 | 5000 | 2 | 450 m | 3 GiB | 500 m | 600 MiB | + +------------------------+----------+------------------+-----------------------------------------------------------+--------------------------------------------------------------+-----------------------------------------------------------+--------------------------------------------------------------+ + | 2000 | 5000 | 2 | 550 m | 4 GiB | 800 m | 900 MiB | + +------------------------+----------+------------------+-----------------------------------------------------------+--------------------------------------------------------------+-----------------------------------------------------------+--------------------------------------------------------------+ + | 2000 | 10,000 | 2 | 650 m | 5 GiB | 800 m | 900 MiB | + +------------------------+----------+------------------+-----------------------------------------------------------+--------------------------------------------------------------+-----------------------------------------------------------+--------------------------------------------------------------+ - - **everest-csi-driver**: A DaemonSet workload. This container is responsible for mounting and unmounting PVs and resizing file systems. If the add-on version is 1.2.\ *x* and the region where the cluster is located supports node-attacher, the pod of the everest-csi-driver component also contains an everest-node-attacher container. This container is responsible for distributed EVS attaching. This configuration item is available in some regions. +#. Configure the add-on parameters. - .. note:: + .. table:: **Table 3** everest add-on parameters - If you select **Custom**, it is recommended that the **everest-csi-driver** memory limit be greater than or equal to 300 MiB. If the value is too small, the add-on container cannot be started and the add-on is unavailable. + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +====================================+===================================================================================================================================================================================================================================+ + | csi_attacher_worker_threads | Number of worker nodes that can concurrently attach EVS volumes. The default value is **60**. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | csi_attacher_detach_worker_threads | Number of worker nodes that can concurrently detach EVS volumes. The default value is **60**. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | volume_attaching_flow_ctrl | Maximum number of EVS volumes that can be attached by the everest add-on within 1 minute. The default value is **0**, indicating that the performance of attaching EVS volumes is determined by the underlying storage resources. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | cluster_id | Cluster ID | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | default_vpc_id | ID of the VPC to which the cluster belongs | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | disable_auto_mount_secret | Whether the default AK/SK can be used when an object bucket or parallel file system is mounted. The default value is **false**. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | enable_node_attacher | Whether to enable the attacher on the agent to process the `VolumeAttachment `__. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | flow_control | This field is left blank by default. You do not need to configure this parameter. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | over_subscription | Overcommitment ratio of the local storage pool (**local_storage**). The default value is **80**. If the size of the local storage pool is 100 GB, it can be overcommitted to 180 GB. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | project_id | ID of the project to which a cluster belongs | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -#. Whether to deploy the add-on instance across multiple AZs. + .. note:: - - **Preferred**: Deployment pods of the add-on are preferentially scheduled to nodes in different AZs. If the nodes in the cluster do not meet the requirements of multiple AZs, the pods are scheduled to a single AZ. - - **Required**: Deployment pods of the add-on are forcibly scheduled to nodes in different AZs. If the nodes in the cluster do not meet the requirements of multiple AZs, not all pods can run. + In everest 1.2.26 or later, the performance of attaching a large number of EVS volumes has been optimized. The following parameters can be configured: -#. Set related parameters. + - csi_attacher_worker_threads + - csi_attacher_detach_worker_threads + - volume_attaching_flow_ctrl - In everest 1.2.26 or later, the performance of attaching a large number of EVS volumes is optimized. The following three parameters are provided: - - - **csi_attacher_worker_threads**: number of workers that can concurrently mount EVS volumes. The default value is **60**. - - **csi_attacher_detach_worker_threads**: number of workers that can concurrently unmount EVS volumes. The default value is **60**. - - **volume_attaching_flow_ctrl**: maximum number of EVS volumes that can be mounted by the everest add-on within one minute. The default value is **0**, indicating that the EVS volume mounting performance is determined by the underlying storage resources. - - The preceding three parameters are associated with each other and are constrained by the underlying storage resources in the region where the cluster is located. If you want to mount a large number of volumes (more than 500 EVS volumes per minute), you can contact the customer service personnel and configure the parameters under their guidance to prevent the everest add-on from running abnormally due to improper parameter settings. - - Other parameters - - - **cluster_id**: cluster ID - - **default_vpc_id**: ID of the VPC to which the data warehouse cluster belongs - - **disable_auto_mount_secret**: indicates whether the default AK/SK can be used when an object bucket or parallel file system is mounted. The default value is **false**. - - **enable_node_attacher**: indicates whether to enable the attacher on the agent to process the `VolumeAttachment `__. - - **flow_control**: This parameter is left blank by default. - - **over_subscription**: overcommitment ratio of the local storage pool (**local_storage**). The default value is **80**. If the size of the local storage pool is 100 GB, you can overcommit 180 GB. - - **project_id**: ID of the project to which the cluster belongs. + The preceding parameters are associated with each other and are constrained by the underlying storage resources in the region where the cluster is located. To attach a large number of volumes (more than 500 EVS volumes per minute), contact customer service and configure the parameters under their guidance to prevent the everest add-on from running abnormally due to improper parameter settings. #. Click **Install**. + +.. _cce_10_0066__section0377457163618: + +Components +---------- + +.. table:: **Table 4** everest components + + +------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+ + | Container Component | Description | Resource Type | + +========================+================================================================================================================================================================================================================================================================================================================================================================================+===============+ + | everest-csi-controller | Used to create, delete, snapshot, expand, attach, and detach storage volumes. If the cluster version is 1.19 or later and the add-on version is 1.2.\ *x*, the pod of the everest-csi-controller component also has an everest-localvolume-manager container by default. This container manages the creation of LVM storage pools and local PVs on the node. | Deployment | + +------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+ + | everest-csi-driver | Used to mount and unmount PVs and resize file systems. If the add-on version is 1.2.\ *x* and the region where the cluster is located supports node-attacher, the pod of the everest-csi-driver component also contains an everest-node-attacher container. This container is responsible for distributed EVS attaching. This configuration item is available in some regions. | DaemonSet | + +------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+ diff --git a/umn/source/add-ons/gpu-beta.rst b/umn/source/add-ons/gpu-beta.rst index 9803358..2fc10eb 100644 --- a/umn/source/add-ons/gpu-beta.rst +++ b/umn/source/add-ons/gpu-beta.rst @@ -8,49 +8,75 @@ gpu-beta Introduction ------------ -gpu-beta is a device management add-on that supports GPUs in containers. If GPU nodes are used in the cluster, the gpu-beta add-on must be installed. +gpu-beta is a device management add-on that supports GPUs in containers. If GPU nodes are used in the cluster, this add-on must be installed. -Notes and Constraints ---------------------- +Constraints +----------- - The driver to be downloaded must be a **.run** file. - Only NVIDIA Tesla drivers are supported, not GRID drivers. - When installing or reinstalling the add-on, ensure that the driver download address is correct and accessible. CCE does not verify the address validity. - The gpu-beta add-on only enables you to download the driver and execute the installation script. The add-on status only indicates that how the add-on is running, not whether the driver is successfully installed. +- CCE does not guarantee the compatibility between the GPU driver version and the CDUA library version of your application. You need to check the compatibility by yourself. +- If a GPU driver has been added to a custom OS image, CCE cannot ensure that the GPU driver is compatible with other GPU components such as the monitoring components used in CCE. Installing the Add-on --------------------- -#. Log in to the CCE console and access the cluster console. Choose **Add-ons** in the navigation pane, locate **gpu-beta** on the right, and click **Install**. -#. Configure the driver link. +#. Log in to the CCE console and access the cluster console. Choose **Add-ons** in the navigation pane, locate **gpu-beta** or **gpu-device-plugin** on the right, and click **Install**. +#. On the **Install Add-on** page, configure the specifications. - .. important:: + .. table:: **Table 1** Add-on specifications - - If the download link is a public network address, for example, **https://us.download.nvidia.com/tesla/470.103.01/NVIDIA-Linux-x86_64-470.103.01.run**, bind an EIP to each GPU node. For details about how to obtain the driver link, see :ref:`Obtaining the Driver Link from Public Network `. - - If the download link is an OBS URL, you do not need to bind an EIP to GPU nodes. - - Ensure that the NVIDIA driver version matches the GPU node. - - After the driver version is changed, restart the node for the change to take effect. + +-----------------------------------+----------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+========================================================================================+ + | Add-on Specifications | Select **Default** or **Custom**. | + +-----------------------------------+----------------------------------------------------------------------------------------+ + | Containers | CPU and memory quotas of the container allowed for the selected add-on specifications. | + | | | + | | If you select **Custom**, you can adjust the container specifications as required. | + +-----------------------------------+----------------------------------------------------------------------------------------+ + +#. Configure the add-on parameters. + + - **NVIDIA Driver**: Enter the link for downloading the NVIDIA driver. All GPU nodes in the cluster will use this driver. + + .. important:: + + - If the download link is a public network address, for example, **https://us.download.nvidia.com/tesla/470.103.01/NVIDIA-Linux-x86_64-470.103.01.run**, bind an EIP to each GPU node. For details about how to obtain the driver link, see :ref:`Obtaining the Driver Link from Public Network `. + - If the download link is an OBS URL, you do not need to bind an EIP to GPU nodes. For details about how to obtain the driver link, see :ref:`Obtaining the Driver Link from OBS `. + - Ensure that the NVIDIA driver version matches the GPU node. + - After the driver version is changed, restart the node for the change to take effect. #. Click **Install**. + .. note:: + + Uninstalling the add-on will clear the GPU driver on the nodes. As a result, GPU pods newly scheduled to the nodes cannot run properly, but running GPU pods are not affected. + Verifying the Add-on -------------------- After the add-on is installed, run the **nvidia-smi** command on the GPU node and the container that schedules GPU resources to verify the availability of the GPU device and driver. -GPU node: +- GPU node: -.. code-block:: + .. code-block:: - cd /opt/cloud/cce/nvidia/bin && ./nvidia-smi + # If the add-on version is earlier than 2.0.0, run the following command: + cd /opt/cloud/cce/nvidia/bin && ./nvidia-smi -Container: + # If the add-on version is 2.0.0 or later and the driver installation path is changed, run the following command: + cd /usr/local/nvidia/bin && ./nvidia-smi -.. code-block:: +- Container: - cd /usr/local/nvidia/bin && ./nvidia-smi + .. code-block:: -If GPU information is returned, the device is available and the add-on is successfully installed. + cd /usr/local/nvidia/bin && ./nvidia-smi + +If GPU information is returned, the device is available and the add-on has been installed. |image1| @@ -68,7 +94,7 @@ Obtaining the Driver Link from Public Network .. _cce_10_0141__fig11696366517: - .. figure:: /_static/images/en-us_image_0000001518062808.png + .. figure:: /_static/images/en-us_image_0000001695896741.png :alt: **Figure 1** Setting parameters **Figure 1** Setting parameters @@ -77,7 +103,7 @@ Obtaining the Driver Link from Public Network .. _cce_10_0141__fig7873421145213: - .. figure:: /_static/images/en-us_image_0000001517743660.png + .. figure:: /_static/images/en-us_image_0000001647577072.png :alt: **Figure 2** Driver information **Figure 2** Driver information @@ -90,9 +116,35 @@ Obtaining the Driver Link from Public Network .. _cce_10_0141__fig5901194614534: - .. figure:: /_static/images/en-us_image_0000001517903240.png + .. figure:: /_static/images/en-us_image_0000001647577080.png :alt: **Figure 3** Obtaining the link **Figure 3** Obtaining the link -.. |image1| image:: /_static/images/en-us_image_0000001518062812.png +.. _cce_10_0141__section14922133914508: + +Obtaining the Driver Link from OBS +---------------------------------- + +#. Upload the driver to OBS and set the driver file to public read. + + .. note:: + + When the node is restarted, the driver will be downloaded and installed again. Ensure that the OBS bucket link of the driver is valid. + +#. In the bucket list, click a bucket name, and then the **Overview** page of the bucket is displayed. +#. In the navigation pane, choose **Objects**. +#. Select the name of the target object and copy the driver link on the object details page. + +Components +---------- + +.. table:: **Table 2** GPU component + + +-------------------------+----------------------------------------------------+---------------+ + | Container Component | Description | Resource Type | + +=========================+====================================================+===============+ + | nvidia-driver-installer | Used for installing an NVIDIA driver on GPU nodes. | DaemonSet | + +-------------------------+----------------------------------------------------+---------------+ + +.. |image1| image:: /_static/images/en-us_image_0000001647417812.png diff --git a/umn/source/add-ons/index.rst b/umn/source/add-ons/index.rst index e622c8b..95e469c 100644 --- a/umn/source/add-ons/index.rst +++ b/umn/source/add-ons/index.rst @@ -6,14 +6,14 @@ Add-ons ======= - :ref:`Overview ` -- :ref:`coredns (System Resource Add-On, Mandatory) ` -- :ref:`storage-driver (System Resource Add-On, Discarded) ` +- :ref:`CoreDNS (System Resource Add-On, Mandatory) ` - :ref:`everest (System Resource Add-On, Mandatory) ` - :ref:`npd ` - :ref:`autoscaler ` - :ref:`metrics-server ` - :ref:`gpu-beta ` -- :ref:`volcano ` +- :ref:`Volcano ` +- :ref:`storage-driver (System Resource Add-On, Discarded) ` .. toctree:: :maxdepth: 1 @@ -21,10 +21,10 @@ Add-ons overview coredns_system_resource_add-on_mandatory - storage-driver_system_resource_add-on_discarded everest_system_resource_add-on_mandatory npd autoscaler metrics-server gpu-beta volcano + storage-driver_system_resource_add-on_discarded diff --git a/umn/source/add-ons/metrics-server.rst b/umn/source/add-ons/metrics-server.rst index 5212d15..e5d9628 100644 --- a/umn/source/add-ons/metrics-server.rst +++ b/umn/source/add-ons/metrics-server.rst @@ -9,7 +9,7 @@ From version 1.8 onwards, Kubernetes provides resource usage metrics, such as th metrics-server is an aggregator for monitoring data of core cluster resources. You can quickly install this add-on on the CCE console. -After metrics-server is installed, you can create an HPA policy on the **Workload Scaling** tab page of the **Auto Scaling** page. For details, see :ref:`Creating an HPA Policy for Workload Auto Scaling `. +After metrics-server is installed, you can create an HPA policy on the **Workload Scaling** tab page of the **Auto Scaling** page. For details, see :ref:`HPA `. The official community project and documentation are available at https://github.com/kubernetes-sigs/metrics-server. @@ -17,14 +17,36 @@ Installing the Add-on --------------------- #. Log in to the CCE console and access the cluster console. Choose **Add-ons** in the navigation pane, locate **metrics-server** on the right, and click **Install**. -#. Select **Single**, **Custom**, or **HA** for **Add-on Specifications**. +#. On the **Install Add-on** page, configure the specifications. - - **Pods**: Set the number of pods based on service requirements. - - **Multi AZ**: + .. table:: **Table 1** metrics-server configuration - - **Preferred**: Deployment pods of the add-on are preferentially scheduled to nodes in different AZs. If the nodes in the cluster do not meet the requirements of multiple AZs, the pods are scheduled to a single AZ. - - **Required**: Deployment pods of the add-on are forcibly scheduled to nodes in different AZs. If the nodes in the cluster do not meet the requirements of multiple AZs, not all pods can run. - - - **Containers**: Set a proper container quota based on service requirements. + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+==========================================================================================================================================================================================================================+ + | Add-on Specifications | Select **Single**, **Custom**, or **HA** for **Add-on Specifications**. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Pods | Number of pods that will be created to match the selected add-on specifications. | + | | | + | | If you select **Custom**, you can adjust the number of pods as required. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Multi-AZ | - **Preferred**: Deployment pods of the add-on are preferentially scheduled to nodes in different AZs. If the nodes in the cluster do not meet the requirements of multiple AZs, the pods are scheduled to a single AZ. | + | | - **Required**: Deployment pods of the add-on will be forcibly scheduled to nodes in different AZs. If there are fewer AZs than pods, the extra pods will fail to run. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Containers | CPU and memory quotas of the container allowed for the selected add-on specifications. | + | | | + | | If you select **Custom**, you can adjust the container specifications as required. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ #. Click **Install**. + +Components +---------- + +.. table:: **Table 2** metrics-server components + + +----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+ + | Component | Description | Resource Type | + +================+============================================================================================================================================================================+===============+ + | metrics-server | Aggregator for the monitored data of cluster core resources, which is used to collect and aggregate resource usage metrics obtained through the Metrics API in the cluster | Deployment | + +----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+ diff --git a/umn/source/add-ons/npd.rst b/umn/source/add-ons/npd.rst index a858441..dd88359 100644 --- a/umn/source/add-ons/npd.rst +++ b/umn/source/add-ons/npd.rst @@ -16,10 +16,10 @@ Constraints ----------- - When using this add-on, do not format or partition node disks. -- Each npd process occupies 30 mCPUs and 100 MiB memory. +- Each npd process occupies 30 m CPU and 100 MB memory. -Permission Description ----------------------- +Permissions +----------- To monitor kernel logs, the npd add-on needs to read the host **/dev/kmsg**. Therefore, the privileged mode must be enabled. For details, see `privileged `__. @@ -31,81 +31,55 @@ In addition, CCE mitigates risks according to the least privilege principle. Onl Installing the Add-on --------------------- -#. Log in to the CCE console and access the cluster. Choose **Add-ons** from the navigation pane, locate **npd** on the right, and click **Install**. +#. Log in to the CCE console and access the cluster console. Choose **Add-ons** in the navigation pane, locate **npd** on the right, and click **Install**. #. On the **Install Add-on** page, configure the specifications. .. table:: **Table 1** npd configuration - +-----------------------+----------------------------------------------------------------------------+ - | Parameter | Description | - +=======================+============================================================================+ - | Add-on specifications | The specifications can be **Custom**. | - +-----------------------+----------------------------------------------------------------------------+ - | Number of pods | If you select **Custom**, adjust the number of pods as required. | - +-----------------------+----------------------------------------------------------------------------+ - | Containers | If you select **Custom**, adjust the container specifications as required. | - +-----------------------+----------------------------------------------------------------------------+ + +-----------------------+------------------------------------------------------------------------------------+ + | Parameter | Description | + +=======================+====================================================================================+ + | Add-on Specifications | The specifications can be **Custom**. | + +-----------------------+------------------------------------------------------------------------------------+ + | Pods | If you select **Custom**, you can adjust the number of pods as required. | + +-----------------------+------------------------------------------------------------------------------------+ + | Containers | If you select **Custom**, you can adjust the container specifications as required. | + +-----------------------+------------------------------------------------------------------------------------+ #. Configure the add-on parameters. - Only 1.16.0 and later versions support the configurations. + Only v1.16.0 and later versions support the configurations. - .. table:: **Table 2** npd add-on parameters + .. table:: **Table 2** npd parameters - +-----------------------------------+------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+==================================================================================================================+ - | common.image.pullPolicy | An image pulling policy. The default value is **IfNotPresent**. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------------+ - | feature_gates | A feature gate | - +-----------------------------------+------------------------------------------------------------------------------------------------------------------+ - | npc.maxTaintedNode | Check how many nodes can npc add taints to for avoiding the impact when a single fault occurs on multiple nodes. | - | | | - | | The int format and percentage format are supported. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------------+ - | npc.nodeAffinity | Node affinity of the controller | - +-----------------------------------+------------------------------------------------------------------------------------------------------------------+ - -#. Configure scheduling policies of the add-on. + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+===========================================================================================================================+ + | common.image.pullPolicy | An image pulling policy. The default value is **IfNotPresent**. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------+ + | feature_gates | A feature gate | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------+ + | npc.maxTaintedNode | The maximum number of nodes that npc can add taints to when a single fault occurs on multiple nodes for minimizing impact | + | | | + | | The value can be in int or percentage format. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------+ + | npc.nodeAffinity | Node affinity of the controller | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------+ .. note:: - - Scheduling policies do not take effect on add-on instances of the DaemonSet type. - - When configuring multi-AZ deployment or node affinity, ensure that there are nodes meeting the scheduling policy and that resources are sufficient in the cluster. Otherwise, the add-on cannot run. - - .. table:: **Table 3** Configurations for add-on scheduling - - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+====================================================================================================================================================================================================================================================+ - | Multi AZ | - **Preferred**: Deployment pods of the add-on are preferentially scheduled to nodes in different AZs. If the nodes in the cluster do not meet the requirements of multiple AZs, the pods are scheduled to a single AZ. | - | | - **Required**: Deployment pods of the add-on are forcibly scheduled to nodes in different AZs. If the nodes in the cluster do not meet the requirements of multiple AZs, not all pods can run. | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Node affinity | - **Incompatibility**: Node affinity is disabled for the add-on. | - | | | - | | - **Node Affinity**: Specify the nodes where the add-on is deployed. If you do not specify the node pool, the add-on will be randomly scheduled based on the default cluster scheduling policy. | - | | | - | | - **Specified Node Pool Scheduling**: Specify the node pool where the add-on is deployed. If you do not specify the node pool, the add-on will be randomly scheduled based on the default cluster scheduling policy. | - | | | - | | - Customize affinity: Enter the labels of the nodes where the add-on is to be deployed to implement more flexible scheduling policies. If not entered, random scheduling will be performed based on the default scheduling policy of the cluster. | - | | | - | | If multiple custom affinity policies are configured, ensure that there are nodes that meet all the affinity policies in the cluster. Otherwise, the add-on cannot run. | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Taints and Tolerations | Using both taints and tolerations allows (not forcibly) the Deployment pod of the add-on to be scheduled to a node with the matching taints, and controls the pod eviction policies after the node where the pod is located is tainted. | - | | | - | | The add-on adds the default tolerance policy for the **node.kubernetes.io/not-ready** and **node.kubernetes.io/unreachable** taints, respectively. The tolerance time window is 60s. | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + Only some parameters are listed here. For more information, see the details of the open-source project node-problem-detector. #. Click **Install**. Components ---------- -.. table:: **Table 4** npd component +.. table:: **Table 3** npd components +-------------------------+------------------------------------------------------------+---------------+ - | Component | Description | Resource Type | + | Container Component | Description | Resource Type | +=========================+============================================================+===============+ | node-problem-controller | Isolate faults basically based on fault detection results. | Deployment | +-------------------------+------------------------------------------------------------+---------------+ @@ -125,7 +99,7 @@ Check items cover events and statuses. For event-related check items, when a problem occurs, npd reports an event to the API server. The event type can be **Normal** (normal event) or **Warning** (abnormal event). - .. table:: **Table 5** Event-related check items + .. table:: **Table 4** Event-related check items +-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+ | Check Item | Function | Description | @@ -151,11 +125,11 @@ Check items cover events and statuses. - Status-related - For status-related check items, when a problem occurs, npd reports an event to the API server and changes the node status synchronously. This function can be used together with :ref:`Node-problem-controller fault isolation ` to isolate nodes. + For status-related check items, when a problem occurs, npd reports an event to the API server and changes the node status synchronously. This function can be used together with :ref:`Node-problem-controller fault isolation ` to isolate nodes. **If the check period is not specified in the following check items, the default period is 30 seconds.** - .. table:: **Table 6** Checking system components + .. table:: **Table 5** Checking system components +-----------------------------------+-----------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ | Check Item | Function | Description | @@ -191,7 +165,7 @@ Check items cover events and statuses. | KubeProxyProblem | | | +-----------------------------------+-----------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ - .. table:: **Table 7** Checking system metrics + .. table:: **Table 6** Checking system metrics +--------------------------------+------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+ | Check Item | Function | Description | @@ -211,7 +185,7 @@ Check items cover events and statuses. | | | | | | | Currently, additional data disks are not supported. | +--------------------------------+------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+ - | Insufficient file handles | Check whether FD file handles are used up. | - Default threshold: 90% | + | Insufficient file handles | Check if the FD file handles are used up. | - Default threshold: 90% | | | | - Usage: the first value in **/proc/sys/fs/file-nr** | | FDProblem | | - Maximum value: the third value in **/proc/sys/fs/file-nr** | +--------------------------------+------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+ @@ -224,7 +198,7 @@ Check items cover events and statuses. | PIDProblem | | - Maximum value: smaller value between **/proc/sys/kernel/pid_max** and **/proc/sys/kernel/threads-max**. | +--------------------------------+------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+ - .. table:: **Table 8** Checking the storage + .. table:: **Table 7** Checking the storage +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Check Item | Function | Description | @@ -319,44 +293,44 @@ Check items cover events and statuses. | | | If I/O requests are not responded and the **await** data is not updated, this check item is invalid. | +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - .. table:: **Table 9** Other check items + .. table:: **Table 8** Other check items - +--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ - | Check Item | Function | Description | - +==========================+=========================================================================================================================================================================================================+=========================================================================================================================================+ - | Abnormal NTP | Check whether the node clock synchronization service ntpd or chronyd is running properly and whether a system time drift is caused. | Default clock offset threshold: 8000 ms | - | | | | - | NTPProblem | | | - +--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ - | Process D error | Check whether there is a process D on the node. | Default threshold: 10 abnormal processes detected for three consecutive times | - | | | | - | ProcessD | | Source: | - | | | | - | | | - /proc/{PID}/stat | - | | | - Alternately, you can run the **ps aux** command. | - | | | | - | | | Exceptional scenario: ProcessD ignores the resident D processes (heartbeat and update) on which the SDI driver on the BMS node depends. | - +--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ - | Process Z error | Check whether the node has processes in Z state. | | - | | | | - | ProcessZ | | | - +--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ - | ResolvConf error | Check whether the ResolvConf file is lost. | Object: **/etc/resolv.conf** | - | | | | - | ResolvConfFileProblem | Check whether the ResolvConf file is normal. | | - | | | | - | | Exceptional definition: No upstream domain name resolution server (nameserver) is included. | | - +--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ - | Existing scheduled event | Check whether scheduled live migration events exist on the node. A live migration plan event is usually triggered by a hardware fault and is an automatic fault rectification method at the IaaS layer. | Source: | - | | | | - | ScheduledEvent | Typical scenario: The host is faulty. For example, the fan is damaged or the disk has bad sectors. As a result, live migration is triggered for VMs. | - http://169.254.169.254/meta-data/latest/events/scheduled | - | | | | - | | | This check item is an Alpha feature and is disabled by default. | - +--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ + +--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Check Item | Function | Description | + +==========================+=========================================================================================================================================================================================================+========================================================================================================================================================+ + | Abnormal NTP | Check whether the node clock synchronization service ntpd or chronyd is running properly and whether a system time drift is caused. | Default clock offset threshold: 8000 ms | + | | | | + | NTPProblem | | | + +--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Process D error | Check whether there is a process D on the node. | Default threshold: 10 abnormal processes detected for three consecutive times | + | | | | + | ProcessD | | Source: | + | | | | + | | | - /proc/{PID}/stat | + | | | - Alternately, you can run the **ps aux** command. | + | | | | + | | | Exceptional scenario: The ProcessD check item ignores the resident D processes (heartbeat and update) on which the SDI driver on the BMS node depends. | + +--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Process Z error | Check whether the node has processes in Z state. | | + | | | | + | ProcessZ | | | + +--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ResolvConf error | Check whether the ResolvConf file is lost. | Object: **/etc/resolv.conf** | + | | | | + | ResolvConfFileProblem | Check whether the ResolvConf file is normal. | | + | | | | + | | Exceptional definition: No upstream domain name resolution server (nameserver) is included. | | + +--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Existing scheduled event | Check whether scheduled live migration events exist on the node. A live migration plan event is usually triggered by a hardware fault and is an automatic fault rectification method at the IaaS layer. | Source: | + | | | | + | ScheduledEvent | Typical scenario: The host is faulty. For example, the fan is damaged or the disk has bad sectors. As a result, live migration is triggered for VMs. | - http://169.254.169.254/meta-data/latest/events/scheduled | + | | | | + | | | This check item is an Alpha feature and is disabled by default. | + +--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ The kubelet component has the following default check items, which have bugs or defects. You can fix them by upgrading the cluster or using npd. - .. table:: **Table 10** Default kubelet check items + .. table:: **Table 9** Default kubelet check items +-----------------------------+------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Check Item | Function | Description | @@ -375,7 +349,7 @@ Check items cover events and statuses. | DiskPressure | | | +-----------------------------+------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -.. _cce_10_0132__en-us_topic_0000001244261007_section1471610580474: +.. _cce_10_0132__section1471610580474: Node-problem-controller Fault Isolation --------------------------------------- @@ -388,7 +362,7 @@ Node-problem-controller Fault Isolation The open source NPD plug-in provides fault detection but not fault isolation. CCE enhances the node-problem-controller (NPC) based on the open source NPD. This component is implemented based on the Kubernetes `node controller `__. For faults reported by NPD, NPC automatically adds taints to nodes for node fault isolation. -.. table:: **Table 11** Parameters +.. table:: **Table 10** Parameters +-----------------------+--------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ | Parameter | Description | Default | diff --git a/umn/source/add-ons/overview.rst b/umn/source/add-ons/overview.rst index cdb5d04..3869bca 100644 --- a/umn/source/add-ons/overview.rst +++ b/umn/source/add-ons/overview.rst @@ -9,18 +9,18 @@ CCE provides multiple types of add-ons to extend cluster functions and meet feat .. important:: - CCE uses Helm templates to deploy add-ons. To modify or upgrade an add-on, perform operations on the **Add-ons** page or use open APIs. Do not directly modify resources related to add-ons in the background. Otherwise, add-on exceptions or other unexpected problems may occur. + CCE uses Helm charts to deploy add-ons. To modify or upgrade an add-on, perform operations on the **Add-ons** page or use open add-on management APIs. Do not directly modify resources related to add-ons in the background. Otherwise, add-on exceptions or other unexpected problems may occur. .. table:: **Table 1** Add-on list +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Add-on Name | Introduction | +=========================================================================+=================================================================================================================================================================================================================================================================================================================================+ - | :ref:`coredns (System Resource Add-On, Mandatory) ` | The coredns add-on is a DNS server that provides domain name resolution services for Kubernetes clusters. coredns chains plug-ins to provide additional features. | + | :ref:`CoreDNS (System Resource Add-On, Mandatory) ` | CoreDNS is a DNS server that provides domain name resolution for Kubernetes clusters through chain plug-ins. | +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`storage-driver (System Resource Add-On, Discarded) ` | storage-driver is a FlexVolume driver used to support IaaS storage services such as EVS, SFS, and OBS. | +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`everest (System Resource Add-On, Mandatory) ` | Everest is a cloud native container storage system. Based on the Container Storage Interface (CSI), clusters of Kubernetes v1.15.6 or later obtain access to cloud storage services. | + | :ref:`everest (System Resource Add-On, Mandatory) ` | everest is a cloud native container storage system, which enables clusters of Kubernetes v1.15.6 or later to use cloud storage through the Container Storage Interface (CSI). | +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`npd ` | node-problem-detector (npd for short) is an add-on that monitors abnormal events of cluster nodes and connects to a third-party monitoring platform. It is a daemon running on each node. It collects node issues from different daemons and reports them to the API server. The npd add-on can run as a DaemonSet or a daemon. | +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -28,7 +28,95 @@ CCE provides multiple types of add-ons to extend cluster functions and meet feat +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`metrics-server ` | metrics-server is an aggregator for monitoring data of core cluster resources. | +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`gpu-beta ` | gpu-beta is a device management add-on that supports GPUs in containers. It supports only NVIDIA drivers. | + | :ref:`gpu-device-plugin (formerly gpu-beta) ` | gpu-device-plugin is a device management add-on that supports GPUs in containers. It supports only NVIDIA drivers. | +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`volcano ` | Volcano provides general-purpose, high-performance computing capabilities, such as job scheduling, heterogeneous chip management, and job running management, serving end users through computing frameworks for different industries, such as AI, big data, gene sequencing, and rendering. | +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Add-on Lifecycle +---------------- + +An add-on lifecycle involves all the statuses of the add-on from installation to uninstallation. + +.. table:: **Table 2** Add-on statuses + + +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Status | Attribute | Description | + +=======================+=======================+==============================================================================================================================================================================+ + | Running | Stable state | The add-on is running properly, all add-on instances are deployed properly, and the add-on can be used properly. | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Partially ready | Stable state | The add-on is running properly, but some add-on instances are not properly deployed. In this state, the add-on functions may be unavailable. | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Unavailable | Stable state | The add-on malfunctions, and all add-on instances are not properly deployed. | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Installing | Intermediate state | The add-on is being deployed. | + | | | | + | | | If all instances cannot be scheduled due to incorrect add-on configuration or insufficient resources, the system sets the add-on status to **Unavailable** 10 minutes later. | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Installation failed | Stable state | Install add-on failed. Uninstall it and try again. | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Upgrading | Intermediate state | The add-on is being upgraded. | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Upgrade failed | Stable state | Upgrade add-on failed. Upgrade it again, or uninstall it and try again. | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Rolling back | Intermediate state | The add-on is rolling back. | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Rollback failed | Stable state | The add-on rollback failed. Retry the rollback, or uninstall it and try again. | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Deleting | Intermediate state | The add-on is being deleted. | + | | | | + | | | If this state stays for a long time, an exception occurred. | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Deletion failed | Stable state | Delete add-on failed. Try again. | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Unknown | Stable state | No add-on chart found. | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. note:: + + When an add-on is in an intermediate state such as **Installing** or **Deleting**, you are not allowed to edit or uninstall the add-on. + +Related Operations +------------------ + +You can perform the operations described in :ref:`Table 3 ` on the **Add-ons** page. + +.. _cce_10_0277__table1619535674020: + +.. table:: **Table 3** Related operations + + +-----------------------+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------+ + | Operation | Description | Procedure | + +=======================+=======================================+====================================================================================================================================+ + | Install | Install a specified add-on. | #. Log in to the CCE console and click the cluster name to access the cluster console. In the navigation pane, choose **Add-ons**. | + | | | | + | | | #. Click **Install** under the target add-on. | + | | | | + | | | Each add-on has different configuration parameters. For details, see the corresponding chapter. | + | | | | + | | | #. Click **OK**. | + +-----------------------+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------+ + | Upgrade | Upgrade an add-on to the new version. | #. Log in to the CCE console and click the cluster name to access the cluster console. In the navigation pane, choose **Add-ons**. | + | | | | + | | | #. If an add-on can be upgraded, the **Upgrade** button is displayed under it. | + | | | | + | | | Click **Upgrade**. Each add-on has different configuration parameters. For details, see the corresponding chapter. | + | | | | + | | | #. Click **OK**. | + +-----------------------+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------+ + | Edit | Edit add-on parameters. | #. Log in to the CCE console and click the cluster name to access the cluster console. In the navigation pane, choose **Add-ons**. | + | | | | + | | | #. Click **Edit** under the target add-on. | + | | | | + | | | Each add-on has different configuration parameters. For details, see the corresponding chapter. | + | | | | + | | | #. Click **OK**. | + +-----------------------+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------+ + | Uninstall | Uninstall an add-on from the cluster. | #. Log in to the CCE console and click the cluster name to access the cluster console. In the navigation pane, choose **Add-ons**. | + | | | | + | | | #. Click **Uninstall** under the target add-on. | + | | | | + | | | #. In the displayed dialog box, click **Yes**. | + | | | | + | | | This operation cannot be undone. | + +-----------------------+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/add-ons/storage-driver_system_resource_add-on_discarded.rst b/umn/source/add-ons/storage-driver_system_resource_add-on_discarded.rst index 5f212e1..bb655d6 100644 --- a/umn/source/add-ons/storage-driver_system_resource_add-on_discarded.rst +++ b/umn/source/add-ons/storage-driver_system_resource_add-on_discarded.rst @@ -12,11 +12,11 @@ storage-driver functions as a standard Kubernetes FlexVolume plug-in to allow co **storage-driver is a system resource add-on. It is installed by default when a cluster of Kubernetes v1.13 or earlier is created.** -Notes and Constraints ---------------------- +Constraints +----------- -- For clusters created in CCE, Kubernetes v1.15.11 is a transitional version in which the FlexVolume plug-in (storage-driver) is compatible with the CSI plug-in (:ref:`everest `). Clusters of v1.17 and later versions do not support FlexVolume anymore. You need to use the everest add-on. -- The FlexVolume plug-in will be maintained by Kubernetes developers, but new functionality will only be added to CSI. You are advised not to create storage that connects to the FlexVolume plug-in (storage-driver) in CCE anymore. Otherwise, the storage resources may not function normally. +- For clusters created in CCE, Kubernetes v1.15.11 is a transitional version in which the FlexVolume add-on (storage-driver) is compatible with the CSI add-on (:ref:`everest `). Clusters of v1.17 and later versions do not support FlexVolume anymore. Use the everest add-on. +- The FlexVolume add-on will be maintained by Kubernetes developers, but new functionality will only be added to :ref:`everest (System Resource Add-On, Mandatory) `. Do not create CCE storage that connects to the FlexVolume add-on (storage-driver) anymore. Otherwise, storage may malfunction. - This add-on can be installed only in **clusters of v1.13 or earlier**. By default, the :ref:`everest ` add-on is installed when clusters of v1.15 or later are created. .. note:: @@ -30,5 +30,5 @@ This add-on has been installed by default. If it is uninstalled due to some reas If storage-driver is not installed in a cluster, perform the following steps to install it: -#. Log in to the CCE console, click the cluster name, and access the cluster console. Choose **Add-ons** in the navigation pane, locate **storage-driver** on the right, and click **Install**. +#. Log in to the CCE console and access the cluster console. Choose **Add-ons** in the navigation pane, locate **storage-driver** on the right, and click **Install**. #. Click **Install** to install the add-on. Note that the storage-driver has no configurable parameters and can be directly installed. diff --git a/umn/source/add-ons/volcano.rst b/umn/source/add-ons/volcano.rst index 359789c..63e23d4 100644 --- a/umn/source/add-ons/volcano.rst +++ b/umn/source/add-ons/volcano.rst @@ -2,15 +2,15 @@ .. _cce_10_0193: -volcano +Volcano ======= Introduction ------------ -Volcano is a batch processing platform based on Kubernetes. It provides a series of features required by machine learning, deep learning, bioinformatics, genomics, and other big data applications, as a powerful supplement to Kubernetes capabilities. +`Volcano `__ is a batch processing platform based on Kubernetes. It provides a series of features required by machine learning, deep learning, bioinformatics, genomics, and other big data applications, as a powerful supplement to Kubernetes capabilities. -Volcano provides general-purpose, high-performance computing capabilities, such as job scheduling engine, heterogeneous chip management, and job running management, serving end users through computing frameworks for different industries, such as AI, big data, gene sequencing, and rendering. (Volcano has been open-sourced in GitHub.) +Volcano provides general-purpose, high-performance computing capabilities, such as job scheduling, heterogeneous chip management, and job running management, serving end users through computing frameworks for different industries, such as AI, big data, gene sequencing, and rendering. Volcano provides job scheduling, job management, and queue management for computing applications. Its main features are as follows: @@ -18,42 +18,84 @@ Volcano provides job scheduling, job management, and queue management for comput - Advanced scheduling capabilities are provided for batch computing and high-performance computing scenarios, including group scheduling, preemptive priority scheduling, packing, resource reservation, and task topology. - Queues can be effectively managed for scheduling jobs. Complex job scheduling capabilities such as queue priority and multi-level queues are supported. -Open source community: https://github.com/volcano-sh/volcano +Volcano has been open-sourced in GitHub at https://github.com/volcano-sh/volcano. + +Install and configure the Volcano add-on in CCE clusters. For details, see :ref:`Volcano Scheduling `. + +.. note:: + + When using Volcano as a scheduler, use it to schedule all workloads in the cluster. This prevents resource scheduling conflicts caused by simultaneous working of multiple schedulers. Installing the Add-on --------------------- -#. Log in to the CCE console, click the cluster name, and access the cluster console. Choose **Add-ons** in the navigation pane, locate **volcano** on the right, and click **Install**. +#. Log in to the CCE console and access the cluster console. Choose **Add-ons** in the navigation pane, locate **volcano** on the right, and click **Install**. -#. Select **Standalone**, **Custom**, or **HA** for **Add-on Specifications**. +#. On the **Install Add-on** page, configure the specifications. - If you select **Custom**, the recommended values of **volcano-controller** and **volcano-scheduler** are as follows: + .. table:: **Table 1** Volcano specifications - - If the number of nodes is less than 100, retain the default configuration. That is, the CPU request value is **500m**, and the limit value is **2000m**. The memory request value is **500Mi**, and the limit value is **2000Mi**. - - If the number of nodes is greater than 100, increase the CPU request value by **500m** and the memory request value by **1000Mi** each time 100 nodes (10000 pods) are added. You are advised to increase the CPU limit value by **1500m** and the memory limit by **1000Mi**. + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+========================================================================================================================================================================================================================================================================================================================================================================+ + | Add-on Specifications | Select **Single**, **Custom**, or **HA** for **Add-on Specifications**. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Pods | Number of pods that will be created to match the selected add-on specifications. | + | | | + | | If you select **Custom**, you can adjust the number of pods as required. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Multi-AZ | - **Preferred**: Deployment pods of the add-on will be preferentially scheduled to nodes in different AZs. If all the nodes in the cluster are deployed in the same AZ, the pods will be scheduled to that AZ. | + | | - **Required**: Deployment pods of the add-on will be forcibly scheduled to nodes in different AZs. If there are fewer AZs than pods, the extra pods will fail to run. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Containers | CPU and memory quotas of the container allowed for the selected add-on specifications. | + | | | + | | If you select **Custom**, the recommended values for **volcano-controller** and **volcano-scheduler** are as follows: | + | | | + | | - If the number of nodes is less than 100, retain the default configuration. The requested CPU is 500 m, and the limit is 2000 m. The requested memory is 500 MiB, and the limit is 2000 MiB. | + | | - If the number of nodes is greater than 100, increase the requested CPU by 500 m and the requested memory by 1000 MiB each time 100 nodes (10,000 pods) are added. Increase the CPU limit by 1500 m and the memory limit by 1000 MiB. | + | | | + | | .. note:: | + | | | + | | Recommended formula for calculating the request value: | + | | | + | | - CPU request value: Calculate the number of target nodes multiplied by the number of target pods, perform interpolation search based on the number of nodes in the cluster multiplied by the number of target pods in :ref:`Table 2 `, and round up the request value and limit value that are closest to the specifications. | + | | | + | | For example, for 2000 nodes and 20,000 pods, Number of target nodes x Number of target pods = 40 million, which is close to the specification of 700/70000 (Number of cluster nodes x Number of pods = 49 million). According to the following table, you are advised to set the CPU request value to 4000 m and the limit value to 5500 m. | + | | | + | | - Memory request value: It is recommended that 2.4 GiB memory be allocated to every 1,000 nodes and 1 GiB memory be allocated to every 10,000 pods. The memory request value is the sum of these two values. (The obtained value may be different from the recommended value in :ref:`Table 2 `. You can use either of them.) | + | | | + | | Memory request = Number of target nodes/1000 x 2.4 GiB + Number of target pods/10000 x 1 GiB | + | | | + | | For example, for 2000 nodes and 20,000 pods, the memory request value is 6.8 GiB, that is, 2000/1000 x 2.4 GiB + 20000/10000 x 1 GiB. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - .. table:: **Table 1** Recommended values for volcano-controller and volcano-scheduler + .. _cce_10_0193__table4742829185912: - +--------------------+----------------+--------------+--------------------+------------------+ - | Number of Node/Pod | CPU Request(m) | CPU Limit(m) | Memory Request(Mi) | Memory Limit(Mi) | - +====================+================+==============+====================+==================+ - | 50/5k | 500 | 2000 | 500 | 2000 | - +--------------------+----------------+--------------+--------------------+------------------+ - | 100/1w | 1000 | 2500 | 1500 | 2500 | - +--------------------+----------------+--------------+--------------------+------------------+ - | 200/2w | 1500 | 3000 | 2500 | 3500 | - +--------------------+----------------+--------------+--------------------+------------------+ - | 300/3w | 2000 | 3500 | 3500 | 4500 | - +--------------------+----------------+--------------+--------------------+------------------+ - | 400/4w | 2500 | 4000 | 4500 | 5500 | - +--------------------+----------------+--------------+--------------------+------------------+ + .. table:: **Table 2** Recommended values for volcano-controller and volcano-scheduler -#. Determine whether to deploy the add-on pods across multiple AZs. + +-------------------------+-----------------+---------------+----------------------+--------------------+ + | Nodes/Pods in a Cluster | CPU Request (m) | CPU Limit (m) | Memory Request (MiB) | Memory Limit (MiB) | + +=========================+=================+===============+======================+====================+ + | 50/5,000 | 500 | 2000 | 500 | 2000 | + +-------------------------+-----------------+---------------+----------------------+--------------------+ + | 100/10,000 | 1000 | 2500 | 1500 | 2500 | + +-------------------------+-----------------+---------------+----------------------+--------------------+ + | 200/20,000 | 1500 | 3000 | 2500 | 3500 | + +-------------------------+-----------------+---------------+----------------------+--------------------+ + | 300/30,000 | 2000 | 3500 | 3500 | 4500 | + +-------------------------+-----------------+---------------+----------------------+--------------------+ + | 400/40,000 | 2500 | 4000 | 4500 | 5500 | + +-------------------------+-----------------+---------------+----------------------+--------------------+ + | 500/50,000 | 3000 | 4500 | 5500 | 6500 | + +-------------------------+-----------------+---------------+----------------------+--------------------+ + | 600/60,000 | 3500 | 5000 | 6500 | 7500 | + +-------------------------+-----------------+---------------+----------------------+--------------------+ + | 700/70,000 | 4000 | 5500 | 7500 | 8500 | + +-------------------------+-----------------+---------------+----------------------+--------------------+ - - **Preferred**: Deployment pods of the add-on are preferentially scheduled to nodes in different AZs. If the nodes in the cluster do not meet the requirements of multiple AZs, the pods are scheduled to a single AZ. - - **Required**: Deployment pods of the add-on are forcibly scheduled to nodes in different AZs. If the nodes in the cluster do not meet the requirements of multiple AZs, not all pods can run. +#. Configure the add-on parameters. -#. Configure parameters of the volcano default scheduler. For details, see :ref:`Table 2 `. + Configure parameters of the default volcano scheduler. For details, see :ref:`Table 4 `. .. code-block:: @@ -78,89 +120,232 @@ Installing the Add-on - name: 'nodeemptydirvolume' - name: 'nodeCSIscheduling' - name: 'networkresource' + tolerations: + - effect: NoExecute + key: node.kubernetes.io/not-ready + operator: Exists + tolerationSeconds: 60 + - effect: NoExecute + key: node.kubernetes.io/unreachable + operator: Exists + tolerationSeconds: 60 + + .. table:: **Table 3** Advanced Volcano configuration parameters + + +------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------+ + | Plug-in | Function | Description | Demonstration | + +========================+============================================================================================================================================================================================================+===========================================================================================================================================================================================================================+=========================================================================+ + | default_scheduler_conf | Used to schedule pods. It consists of a series of actions and plug-ins and features high scalability. You can specify and implement actions and plug-ins based on your requirements. | It consists of actions and tiers. | None | + | | | | | + | | | - **actions**: defines the types and sequence of actions to be executed by the scheduler. | | + | | | - **tiers**: configures the plug-in list. | | + +------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------+ + | actions | Actions to be executed in each scheduling phase. The configured action sequence is the scheduler execution sequence. For details, see `Actions `__. | The following options are supported: | .. code-block:: | + | | | | | + | | The scheduler traverses all jobs to be scheduled and performs actions such as enqueue, allocate, preempt, reclaim, and backfill in the configured sequence to find the most appropriate node for each job. | - **enqueue**: uses a series of filtering algorithms to filter out tasks to be scheduled and sends them to the queue to wait for scheduling. After this action, the task status changes from **pending** to **inqueue**. | actions: 'allocate, backfill' | + | | | - **allocate**: selects the most suitable node based on a series of pre-selection and selection algorithms. | | + | | | - **preempt**: performs preemption scheduling for tasks with higher priorities in the same queue based on priority rules. | .. note:: | + | | | - **backfill**: schedules pending tasks as much as possible to maximize the utilization of node resources. | | + | | | | When configuring **actions**, use either **preempt** or **enqueue**. | + +------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------+ + | plugins | Implementation details of algorithms in actions based on different scenarios. For details, see `Plugins `__. | For details, see :ref:`Table 4 `. | None | + +------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------+ + | tolerations | Tolerance of the add-on to node taints. | By default, the add-on can run on nodes with the **node.kubernetes.io/not-ready** or **node.kubernetes.io/unreachable** taint and the taint effect value is **NoExecute**, but it'll be evicted in 60 seconds. | .. code-block:: | + | | | | | + | | | | tolerations: | + | | | | - effect: NoExecute | + | | | | key: node.kubernetes.io/not-ready | + | | | | operator: Exists | + | | | | tolerationSeconds: 60 | + | | | | - effect: NoExecute | + | | | | key: node.kubernetes.io/unreachable | + | | | | operator: Exists | + | | | | tolerationSeconds: 60 | + +------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------+ .. _cce_10_0193__table562185146: - .. table:: **Table 2** Volcano Plugins + .. table:: **Table 4** Supported plug-ins - +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ - | Add-on | Function | Description | Demonstration | - +============================+=============================================================================================================================================================================================================================+==========================================================================================================================+=============================================================+ - | binpack | Schedules pods to nodes with high resource utilization to reduce resource fragments. | - **binpack.weight**: Weight of the binpack plugin. | .. code-block:: | - | | | - **binpack.cpu**: ratio of CPU resources to all resources. Defaults to **1**. | | - | | | - **binpack.memory**: Ratio of memory resources to all resources. Defaults to **1**. | - plugins: | - | | | - **binpack.resources**: resource type. | - name: binpack | - | | | | arguments: | - | | | | binpack.weight: 10 | - | | | | binpack.cpu: 1 | - | | | | binpack.memory: 1 | - | | | | binpack.resources: nvidia.com/gpu, example.com/foo | - | | | | binpack.resources.nvidia.com/gpu: 2 | - | | | | binpack.resources.example.com/foo: 3 | - +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ - | conformance | The conformance plugin considers that the tasks in namespace **kube-system** have a higher priority. These tasks will not be preempted. | ``-`` | ``-`` | - +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ - | gang | The gang plugin considers a group of pods as a whole to allocate resources. | ``-`` | ``-`` | - +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ - | priority | The priority plugin schedules pods based on the custom workload priority. | ``-`` | ``-`` | - +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ - | overcommit | Resources in a cluster are scheduled after being accumulated in a certain multiple to improve the workload enqueuing efficiency. If all workloads are Deployments, remove this plugin or set the raising factor to **2.0**. | **overcommit-factor**: Raising factor. Defaults to **1.2**. | .. code-block:: | - | | | | | - | | | | - plugins: | - | | | | - name: overcommit | - | | | | arguments: | - | | | | overcommit-factor: 2.0 | - +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ - | drf | The DRF plugin schedules resources based on the container group Dominate Resource. The smallest Dominate Resource would be selected for priority scheduling. | ``-`` | ``-`` | - +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ - | predicates | Determines whether a task is bound to a node by using a series of evaluation algorithms, such as node/pod affinity, taint tolerance, node port repetition, volume limits, and volume zone matching. | ``-`` | ``-`` | - +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ - | nodeorder | The nodeorder plugin scores all nodes for a task by using a series of scoring algorithms. | - **nodeaffinity.weight**: Pods are scheduled based on the node affinity. Defaults to **1**. | .. code-block:: | - | | | - **podaffinity.weight**: Pods are scheduled based on the pod affinity. Defaults to **1**. | | - | | | - **leastrequested.weight**: Pods are scheduled to the node with the least resources. Defaults to **1**. | - plugins: | - | | | - **balancedresource.weight**: Pods are scheduled to the node with balanced resource. Defaults to **1**. | - name: nodeorder | - | | | - **mostrequested.weight**: Pods are scheduled to the node with the most requested resources. Defaults to **0**. | arguments: | - | | | - **tainttoleration.weight**: Pods are scheduled to the node with a high taint tolerance. Defaults to **1**. | leastrequested.weight: 1 | - | | | - **imagelocality.weight**: Pods are scheduled to the node where the required images exist. Defaults to **1**. | mostrequested.weight: 0 | - | | | - **selectorspread.weight**: Pods are evenly scheduled to different nodes. Defaults to **0**. | nodeaffinity.weight: 1 | - | | | - **volumebinding.weight**: Pods are scheduled to the node with the local PV delayed binding policy. Defaults to **1**. | podaffinity.weight: 1 | - | | | - **podtopologyspread.weight**: Pods are scheduled based on the pod topology. Defaults to **2**. | balancedresource.weight: 1 | - | | | | tainttoleration.weight: 1 | - | | | | imagelocality.weight: 1 | - | | | | volumebinding.weight: 1 | - | | | | podtopologyspread.weight: 2 | - +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ - | cce-gpu-topology-predicate | GPU-topology scheduling preselection algorithm | ``-`` | ``-`` | - +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ - | cce-gpu-topology-priority | GPU-topology scheduling priority algorithm | ``-`` | ``-`` | - +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ - | cce-gpu | Works with the gpu add-on of CCE to support GPU resource allocation and decimal GPU configuration. | ``-`` | ``-`` | - +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ - | numaaware | NUMA topology scheduling | weight: Weight of the numa-aware plugin. | ``-`` | - +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ - | networkresource | The ENI requirement node can be preselected and filtered. The parameters are transferred by CCE and do not need to be manually configured. | NetworkType: Network type (eni or vpc-router). | ``-`` | - +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ - | nodelocalvolume | The nodelocalvolume plugin filters out nodes that do not meet local volume requirements can be filtered out. | ``-`` | ``-`` | - +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ - | nodeemptydirvolume | The nodeemptydirvolume plugin filters out nodes that do not meet the emptyDir requirements. | ``-`` | ``-`` | - +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ - | nodeCSIscheduling | The nodeCSIscheduling plugin filters out nodes that have the everest component exception. | ``-`` | ``-`` | - +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ + +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ + | Plug-in | Function | Description | Demonstration | + +============================+===================================================================================================================================================================================================================================================================================+=============================================================================================================================================================================================================================================================================+=============================================================+ + | binpack | Schedule pods to nodes with high resource usage (not allocating pods to light-loaded nodes) to reduce resource fragments. | **arguments**: | .. code-block:: | + | | | | | + | | | - **binpack.weight**: weight of the binpack plug-in. | - plugins: | + | | | - **binpack.cpu**: ratio of CPUs to all resources. The parameter value defaults to **1**. | - name: binpack | + | | | - **binpack.memory**: ratio of memory resources to all resources. The parameter value defaults to **1**. | arguments: | + | | | - **binpack.resources**: other custom resource types requested by the pod, for example, **nvidia.com/gpu**. Multiple types can be configured and be separated by commas (,). | binpack.weight: 10 | + | | | - **binpack.resources.**\ **: weight of your custom resource in all resources. Multiple types of resources can be added. ** indicates the resource type defined in **binpack.resources**, for example, **binpack.resources.nvidia.com/gpu**. | binpack.cpu: 1 | + | | | | binpack.memory: 1 | + | | | | binpack.resources: nvidia.com/gpu, example.com/foo | + | | | | binpack.resources.nvidia.com/gpu: 2 | + | | | | binpack.resources.example.com/foo: 3 | + +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ + | conformance | Prevent key pods, such as the pods in the **kube-system** namespace from being preempted. | None | .. code-block:: | + | | | | | + | | | | - plugins: | + | | | | - name: 'priority' | + | | | | - name: 'gang' | + | | | | enablePreemptable: false | + | | | | - name: 'conformance' | + +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ + | gang | Consider a group of pods as a whole for resource allocation. This plug-in checks whether the number of scheduled pods in a job meets the minimum requirements for running the job. If yes, all pods in the job will be scheduled. If no, the pods will not be scheduled. | **enablePreemptable**: | .. code-block:: | + | | | | | + | | .. note:: | - **true**: Preemption enabled | - plugins: | + | | | - **false**: Preemption not enabled | - name: priority | + | | If a gang scheduling policy is used, if the remaining resources in the cluster are greater than or equal to half of the minimum number of resources for running a job but less than the minimum of resources for running the job, autoscaler scale-outs will not be triggered. | | - name: gang | + | | | | enablePreemptable: false | + | | | | - name: conformance | + +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ + | priority | Schedule based on custom load priorities. | None | .. code-block:: | + | | | | | + | | | | - plugins: | + | | | | - name: priority | + | | | | - name: gang | + | | | | enablePreemptable: false | + | | | | - name: conformance | + +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ + | overcommit | Resources in a cluster are scheduled after being accumulated in a certain multiple to improve the workload enqueuing efficiency. If all workloads are Deployments, remove this plugin or set the raising factor to **2.0**. | **arguments**: | .. code-block:: | + | | | | | + | | .. note:: | - **overcommit-factor**: inflation factor, which defaults to **1.2**. | - plugins: | + | | | | - name: overcommit | + | | This plug-in is supported in Volcano 1.6.5 and later versions. | | arguments: | + | | | | overcommit-factor: 2.0 | + +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ + | drf | The Dominant Resource Fairness (DRF) scheduling algorithm, which schedules jobs based on their dominant resource share. Jobs with a smaller resource share will be scheduled with a higher priority. | None | .. code-block:: | + | | | | | + | | | | - plugins: | + | | | | - name: 'drf' | + | | | | - name: 'predicates' | + | | | | - name: 'nodeorder' | + +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ + | predicates | Determine whether a task is bound to a node by using a series of evaluation algorithms, such as node/pod affinity, taint tolerance, node repetition, volume limits, and volume zone matching. | None | .. code-block:: | + | | | | | + | | | | - plugins: | + | | | | - name: 'drf' | + | | | | - name: 'predicates' | + | | | | - name: 'nodeorder' | + +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ + | nodeorder | A common algorithm for selecting nodes. Nodes are scored in simulated resource allocation to find the most suitable node for the current job. | Scoring parameters: | .. code-block:: | + | | | | | + | | | - **nodeaffinity.weight**: Pods are scheduled based on node affinity. This parameter defaults to **1**. | - plugins: | + | | | - **podaffinity.weight**: Pods are scheduled based on pod affinity. This parameter defaults to **1**. | - name: nodeorder | + | | | - **leastrequested.weight**: Pods are scheduled to the node with the least requested resources. This parameter defaults to **1**. | arguments: | + | | | - **balancedresource.weight**: Pods are scheduled to the node with balanced resource allocation. This parameter defaults to **1**. | leastrequested.weight: 1 | + | | | - **mostrequested.weight**: Pods are scheduled to the node with the most requested resources. This parameter defaults to **0**. | mostrequested.weight: 0 | + | | | - **tainttoleration.weight**: Pods are scheduled to the node with a high taint tolerance. This parameter defaults to **1**. | nodeaffinity.weight: 1 | + | | | - **imagelocality.weight**: Pods are scheduled to the node where the required images exist. This parameter defaults to **1**. | podaffinity.weight: 1 | + | | | - **selectorspread.weight**: Pods are evenly scheduled to different nodes. This parameter defaults to **0**. | balancedresource.weight: 1 | + | | | - **volumebinding.weight**: Pods are scheduled to the node with the local PV delayed binding policy. This parameter defaults to **1**. | tainttoleration.weight: 1 | + | | | - **podtopologyspread.weight**: Pods are scheduled based on the pod topology. This parameter defaults to **2**. | imagelocality.weight: 1 | + | | | | volumebinding.weight: 1 | + | | | | podtopologyspread.weight: 2 | + +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ + | cce-gpu-topology-predicate | GPU-topology scheduling preselection algorithm | None | .. code-block:: | + | | | | | + | | | | - plugins: | + | | | | - name: 'cce-gpu-topology-predicate' | + | | | | - name: 'cce-gpu-topology-priority' | + | | | | - name: 'cce-gpu' | + +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ + | cce-gpu-topology-priority | GPU-topology scheduling priority algorithm | None | .. code-block:: | + | | | | | + | | | | - plugins: | + | | | | - name: 'cce-gpu-topology-predicate' | + | | | | - name: 'cce-gpu-topology-priority' | + | | | | - name: 'cce-gpu' | + +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ + | cce-gpu | GPU resource allocation that supports decimal GPU configurations by working with the gpu add-on. | None | .. code-block:: | + | | | | | + | | | | - plugins: | + | | | | - name: 'cce-gpu-topology-predicate' | + | | | | - name: 'cce-gpu-topology-priority' | + | | | | - name: 'cce-gpu' | + +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ + | numa-aware | NUMA affinity scheduling. | **arguments**: | .. code-block:: | + | | | | | + | | | - **weight**: weight of the numa-aware plug-in | - plugins: | + | | | | - name: 'nodelocalvolume' | + | | | | - name: 'nodeemptydirvolume' | + | | | | - name: 'nodeCSIscheduling' | + | | | | - name: 'networkresource' | + | | | | arguments: | + | | | | NetworkType: vpc-router | + | | | | - name: numa-aware | + | | | | arguments: | + | | | | weight: 10 | + +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ + | networkresource | The ENI requirement node can be preselected and filtered. The parameters are transferred by CCE and do not need to be manually configured. | **arguments**: | .. code-block:: | + | | | | | + | | | - **NetworkType**: network type (**eni** or **vpc-router**) | - plugins: | + | | | | - name: 'nodelocalvolume' | + | | | | - name: 'nodeemptydirvolume' | + | | | | - name: 'nodeCSIscheduling' | + | | | | - name: 'networkresource' | + | | | | arguments: | + | | | | NetworkType: vpc-router | + +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ + | nodelocalvolume | Filter out nodes that do not meet local volume requirements. | None | .. code-block:: | + | | | | | + | | | | - plugins: | + | | | | - name: 'nodelocalvolume' | + | | | | - name: 'nodeemptydirvolume' | + | | | | - name: 'nodeCSIscheduling' | + | | | | - name: 'networkresource' | + +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ + | nodeemptydirvolume | Filter out nodes that do not meet the emptyDir requirements. | None | .. code-block:: | + | | | | | + | | | | - plugins: | + | | | | - name: 'nodelocalvolume' | + | | | | - name: 'nodeemptydirvolume' | + | | | | - name: 'nodeCSIscheduling' | + | | | | - name: 'networkresource' | + +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ + | nodeCSIscheduling | Filter out nodes with malfunctional everest. | None | .. code-block:: | + | | | | | + | | | | - plugins: | + | | | | - name: 'nodelocalvolume' | + | | | | - name: 'nodeemptydirvolume' | + | | | | - name: 'nodeCSIscheduling' | + | | | | - name: 'networkresource' | + +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------+ #. Click **Install**. -Modifying the volcano-scheduler Configuration Using the Console ---------------------------------------------------------------- +Components +---------- + +.. table:: **Table 5** Volcano components + + +---------------------+-------------------------------------------------------------------------------------------------------------------+---------------+ + | Container Component | Description | Resource Type | + +=====================+===================================================================================================================+===============+ + | volcano-scheduler | Schedule pods. | Deployment | + +---------------------+-------------------------------------------------------------------------------------------------------------------+---------------+ + | volcano-controller | Synchronize CRDs. | Deployment | + +---------------------+-------------------------------------------------------------------------------------------------------------------+---------------+ + | volcano-admission | Webhook server, which verifies and modifies resources such as pods and jobs | Deployment | + +---------------------+-------------------------------------------------------------------------------------------------------------------+---------------+ + | volcano-agent | Cloud native hybrid agent, which is used for node QoS assurance, CPU burst, and dynamic resource oversubscription | DaemonSet | + +---------------------+-------------------------------------------------------------------------------------------------------------------+---------------+ + | resource-exporter | Report the NUMA topology information of nodes. | DaemonSet | + +---------------------+-------------------------------------------------------------------------------------------------------------------+---------------+ + +Modifying the volcano-scheduler Configurations Using the Console +---------------------------------------------------------------- + +Volcano scheduler is the component responsible for pod scheduling. It consists of a series of actions and plug-ins. Actions should be executed in every step. Plugins provide the action algorithm details in different scenarios. volcano-scheduler is highly scalable. You can specify and implement actions and plug-ins based on your requirements. Volcano allows you to configure the scheduler during installation, upgrade, and editing. The configuration will be synchronized to volcano-scheduler-configmap. -This section describes how to configure the volcano scheduler. +This section describes how to configure volcano-scheduler. .. note:: - Only Volcano of v1.7.1 and later support this function. On the new plug-in page, options such as **plugins.eas_service** and **resource_exporter_enable** are replaced by **default_scheduler_conf**. + Only Volcano of v1.7.1 and later support this function. On the new plugin page, options such as **plugins.eas_service** and **resource_exporter_enable** are replaced by **default_scheduler_conf**. -Log in to the CCE console and access the cluster console. Choose **Add-ons** in the navigation pane. On the right of the page, locate **volcano** and click **Install** or **Upgrade**. In the **Parameters** area, configure the volcano scheduler parameters. +Log in to the CCE console and access the cluster console. Choose **Add-ons** in the navigation pane. On the right of the page, locate **volcano** and click **Install** or **Upgrade**. In the **Parameters** area, configure the volcano-scheduler parameters. - Using **resource_exporter**: @@ -235,7 +420,7 @@ Log in to the CCE console and access the cluster console. Choose **Add-ons** in "server_key": "" } - After this function is enabled, you can use the functions of the numa-aware plug-in and resource_exporter at the same time. + After this function is enabled, you can use the functions of the numa-aware plugin and resource_exporter at the same time. - Using **eas_service**: @@ -395,8 +580,8 @@ Log in to the CCE console and access the cluster console. Choose **Add-ons** in "server_key": "" } -Retaining the Original volcano-scheduler-configmap Configuration ----------------------------------------------------------------- +Retaining the Original volcano-scheduler-configmap Configurations +----------------------------------------------------------------- If you want to use the original configuration after the plug-in is upgraded, perform the following steps: @@ -436,7 +621,7 @@ If you want to use the original configuration after the plug-in is upgraded, per - name: nodeCSIscheduling - name: networkresource -#. Enter the customized content in the **Parameters** on the console. +#. Enter the customized content in the **Parameters** area on the console. .. code-block:: @@ -518,3 +703,22 @@ If you want to use the original configuration after the plug-in is upgraded, per .. note:: When this function is used, the original content in volcano-scheduler-configmap will be overwritten. Therefore, you must check whether volcano-scheduler-configmap has been modified during the upgrade. If yes, synchronize the modification to the upgrade page. + +Uninstalling the Volcano Add-on +------------------------------- + +After the add-on is uninstalled, all custom Volcano resources (:ref:`Table 6 `) will be deleted, including the created resources. Reinstalling the add-on will not inherit or restore the tasks before the uninstallation. It is a good practice to uninstall the Volcano add-on only when no custom Volcano resources are being used in the cluster. + +.. _cce_10_0193__table148801381540: + +.. table:: **Table 6** Custom Volcano resources + + ============ ===================== =========== ============== + Item API Group API Version Resource Level + ============ ===================== =========== ============== + Command bus.volcano.sh v1alpha1 Namespaced + Job batch.volcano.sh v1alpha1 Namespaced + Numatopology nodeinfo.volcano.sh v1alpha1 Cluster + PodGroup scheduling.volcano.sh v1beta1 Namespaced + Queue scheduling.volcano.sh v1beta1 Cluster + ============ ===================== =========== ============== diff --git a/umn/source/auto_scaling/overview.rst b/umn/source/auto_scaling/overview.rst index b10fff2..5e48a71 100644 --- a/umn/source/auto_scaling/overview.rst +++ b/umn/source/auto_scaling/overview.rst @@ -12,7 +12,7 @@ Context More and more applications are developed based on Kubernetes. It becomes increasingly important to quickly scale out applications on Kubernetes to cope with service peaks and to scale in applications during off-peak hours to save resources and reduce costs. -In a Kubernetes cluster, auto scaling involves pods and nodes. A pod is an application instance. Each pod contains one or more containers and runs on a node (VM or bare-metal server). If a cluster does not have sufficient nodes to run new pods, you need to add nodes to the cluster to ensure service running. +In a Kubernetes cluster, auto scaling involves pods and nodes. A pod is an application instance. Each pod contains one or more containers and runs on a node (VM or bare-metal server). If a cluster does not have sufficient nodes to run new pods, add nodes to the cluster to ensure service running. In CCE, auto scaling is used for online services, large-scale computing and training, deep learning GPU or shared GPU training and inference, periodic load changes, and many other scenarios. @@ -31,11 +31,11 @@ Components .. table:: **Table 1** Workload scaling components - +------+-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ - | Type | Component Name | Component Description | Reference | - +======+=====================================+====================================================================================================================================================================================+=======================================================================+ - | HPA | :ref:`metrics-server ` | A built-in component of Kubernetes, which enables horizontal scaling of pods. It adds the application-level cooldown time window and scaling threshold functions based on the HPA. | :ref:`Creating an HPA Policy for Workload Auto Scaling ` | - +------+-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + +------+-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ + | Type | Component Name | Component Description | Reference | + +======+=====================================+====================================================================================================================================================================================+==========================+ + | HPA | :ref:`metrics-server ` | A built-in component of Kubernetes, which enables horizontal scaling of pods. It adds the application-level cooldown time window and scaling threshold functions based on the HPA. | :ref:`HPA ` | + +------+-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------+ **Node scaling components are described as follows:** diff --git a/umn/source/auto_scaling/scaling_a_node/creating_a_node_scaling_policy.rst b/umn/source/auto_scaling/scaling_a_node/creating_a_node_scaling_policy.rst index 3ee3258..4cdebc3 100644 --- a/umn/source/auto_scaling/scaling_a_node/creating_a_node_scaling_policy.rst +++ b/umn/source/auto_scaling/scaling_a_node/creating_a_node_scaling_policy.rst @@ -17,15 +17,19 @@ Prerequisites Before using the node scaling function, you must install the :ref:`autoscaler ` add-on of v1.13.8 or later in the cluster. -Notes and Constraints ---------------------- +Constraints +----------- - Auto scaling policies apply to node pools. When the number of nodes in a node pool is 0 and the scaling policy is based on CPU or memory usage, node scaling is not triggered. +- When autoscaler is used, some taints or annotations may affect auto scaling. Therefore, do not use the following taints or annotations in clusters: + + - **ignore-taint.cluster-autoscaler.kubernetes.io**: The taint works on nodes. Kubernetes-native autoscaler supports protection against abnormal scale outs and periodically evaluates the proportion of available nodes in the cluster. When the proportion of non-ready nodes exceeds 45%, protection will be triggered. In this case, all nodes with the **ignore-taint.cluster-autoscaler.kubernetes.io** taint in the cluster are filtered out from the autoscaler template and recorded as non-ready nodes, which affects cluster scaling. + - **cluster-autoscaler.kubernetes.io/enable-ds-eviction**: The annotation works on pods, which determines whether DaemonSet pods can be evicted by autoscaler. For details, see `Well-Known Labels, Annotations and Taints `__. Procedure --------- -#. Log in to the CCE console and access the cluster console. +#. Log in to the CCE console and click the cluster name to access the cluster console. #. Choose **Node Scaling** in the navigation pane. - If **Uninstalled** is displayed next to the add-on name, click **Install**, set add-on parameters as required, and click **Install** to install the add-on. diff --git a/umn/source/auto_scaling/scaling_a_node/managing_node_scaling_policies.rst b/umn/source/auto_scaling/scaling_a_node/managing_node_scaling_policies.rst index e99d4b6..4e2e9cb 100644 --- a/umn/source/auto_scaling/scaling_a_node/managing_node_scaling_policies.rst +++ b/umn/source/auto_scaling/scaling_a_node/managing_node_scaling_policies.rst @@ -15,7 +15,7 @@ Viewing a Node Scaling Policy You can view the associated node pool, rules, and scaling history of a node scaling policy and rectify faults according to the error information displayed. -#. Log in to the CCE console and access the cluster console. +#. Log in to the CCE console and click the cluster name to access the cluster console. #. Choose **Node Scaling** in the navigation pane and click |image1| in front of the policy to be viewed. #. In the expanded area, the **Associated Node Pools**, **Rules**, and **Scaling History** tab pages are displayed. If the policy is abnormal, locate and rectify the fault based on the error information. @@ -23,14 +23,14 @@ You can view the associated node pool, rules, and scaling history of a node scal You can also disable or enable auto scaling on the **Node Pools** page. - a. Log in to the CCE console and access the cluster console. - b. In the navigation pane, choose **Nodes** and switch to the **Node Pools** tab page. - c. Click **Edit** of the node pool to be operated. In the **Edit Node Pool** dialog box that is displayed, set the limits of the number of nodes. + a. Log in to the CCE console and click the cluster name to access the cluster console. + b. In the navigation pane, choose **Nodes** and switch to the **Node Pools** tab. + c. Locate the row containing the target node pool and click **Update Node Pool**. In the window that slides out from the right, enable **Auto Scaling**, and configure **Max. Nodes**, **Min. Nodes**, and **Cooldown Period**. Deleting a Node Scaling Policy ------------------------------ -#. Log in to the CCE console and access the cluster console. +#. Log in to the CCE console and click the cluster name to access the cluster console. #. Choose **Node Scaling** in the navigation pane and choose **More** > **Delete** next to the policy to be deleted. #. In the **Delete Node Scaling Policy** dialog box displayed, confirm whether to delete the policy. #. Click **Yes** to delete the policy. @@ -38,7 +38,7 @@ Deleting a Node Scaling Policy Editing a Node Scaling Policy ----------------------------- -#. Log in to the CCE console and access the cluster console. +#. Log in to the CCE console and click the cluster name to access the cluster console. #. Choose **Node Scaling** in the navigation pane and click **Edit** in the **Operation** column of the policy to be edited. #. On the **Edit Node Scaling Policy** page displayed, modify policy parameter values listed in :ref:`Table 1 `. #. After the configuration is complete, click **OK**. @@ -46,7 +46,7 @@ Editing a Node Scaling Policy Cloning a Node Scaling Policy ----------------------------- -#. Log in to the CCE console and access the cluster console. +#. Log in to the CCE console and click the cluster name to access the cluster console. #. Choose **Node Scaling** in the navigation pane and choose **More** > **Clone** next to the policy to be cloned. #. On the **Clone Node Scaling Policy** page displayed, certain parameters have been cloned. Add or modify other policy parameters based on service requirements. #. Click **OK**. @@ -54,8 +54,8 @@ Cloning a Node Scaling Policy Enabling or Disabling a Node Scaling Policy ------------------------------------------- -#. Log in to the CCE console and access the cluster console. +#. Log in to the CCE console and click the cluster name to access the cluster console. #. Choose **Node Scaling** in the navigation pane and click **Disable** in the **Operation** column of the policy to be disabled. If the policy is in the disabled state, click **Enable** in the **Operation** column of the policy. #. In the dialog box displayed, confirm whether to disable or enable the node policy. -.. |image1| image:: /_static/images/en-us_image_0000001517743464.png +.. |image1| image:: /_static/images/en-us_image_0000001695896485.png diff --git a/umn/source/auto_scaling/scaling_a_node/node_scaling_mechanisms.rst b/umn/source/auto_scaling/scaling_a_node/node_scaling_mechanisms.rst index 0fab9e6..d3c1859 100644 --- a/umn/source/auto_scaling/scaling_a_node/node_scaling_mechanisms.rst +++ b/umn/source/auto_scaling/scaling_a_node/node_scaling_mechanisms.rst @@ -5,9 +5,9 @@ Node Scaling Mechanisms ======================= -Kubernetes HPA is designed for pods. However, if the cluster resources are insufficient, you can only add nodes. Scaling of cluster nodes could be laborious. Now with clouds, you can add or delete nodes by simply calling APIs. +HPA is designed for pod-level scaling and can dynamically adjust the number of replicas based on workload metrics. However, if cluster resources are insufficient and new replicas cannot run, you can only scale out the cluster. -`autoscaler `__ is a component provided by Kubernetes for auto scaling of cluster nodes based on the pod scheduling status and resource usage. +`autoscaler `__ is an auto scaling component provided by Kubernetes. It automatically scales in or out nodes in a cluster based on the pod scheduling status and resource usage. It supports multiple scaling modes, such as multi-AZ, multi-pod-specifications, metric triggering, and periodic triggering, to meet the requirements of different node scaling scenarios. Prerequisites ------------- @@ -17,20 +17,27 @@ Before using the node scaling function, you must install the :ref:`autoscaler `__) + - Pods that cannot be scheduled to other nodes due to constraints such as affinity and anti-affinity policies + - Pods that have the **cluster-autoscaler.kubernetes.io/safe-to-evict: 'false'** annotation + - Pods (except those created by DaemonSets in the kube-system namespace) that exist in the kube-system namespace on the node + - Pods that are not created by the controller (Deployment/ReplicaSet/job/StatefulSet) + + .. note:: + + When a node meets the scale-in conditions, autoscaler adds the **DeletionCandidateOfClusterAutoscaler** taint to the node in advance to prevent pods from being scheduled to the node. After the autoscaler add-on is uninstalled, if the taint still exists on the node, manually delete it. autoscaler Architecture ----------------------- @@ -39,7 +46,7 @@ autoscaler Architecture .. _cce_10_0296__fig114831750115719: -.. figure:: /_static/images/en-us_image_0000001569182553.png +.. figure:: /_static/images/en-us_image_0000001695737013.png :alt: **Figure 1** autoscaler architecture **Figure 1** autoscaler architecture @@ -50,10 +57,34 @@ autoscaler Architecture - **Simulator**: Finds the nodes that meet the scale-in conditions in the scale-in scenario. - **Expander**: Selects an optimal node from the node pool picked out by the Estimator based on the user-defined policy in the scale-out scenario. Currently, the Expander has the following policies: - - **Random**: Selects a node pool randomly. If you have not specified a policy, **Random** is set by default. - - **most-Pods**: Selects the node pool that can host the largest number of unschedulable pods after the scale-out. If multiple node pools meet the requirement, a random node pool will be selected. - - **least-waste**: Selects the node pool that has the least CPU or memory resource waste after scale-out. - - **price**: Selects the node pool in which the to-be-added nodes cost least for scale-out. - - **priority**: Selects the node pool with the highest weight. The weights are user-defined. + .. table:: **Table 1** **Expander policies supported by CCE** -Currently, CCE supports all policies except **price**. By default, CCE add-ons use the **least-waste** policy. + +-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Policy | Description | Application Scenario | Example | + +=================+====================================================================================================================================================================================================================================================+==================================================================================================================================================================================================================================================================================================+=========================================================================================================================================================================================================+ + | Random | Randomly selects a schedulable node pool to perform the scale-out. | This policy is typically used as a basic backup for other complex policies. Only use this policy if the other policies cannot be used. | Assume that auto scaling is enabled for node pools 1 and 2 in the cluster and the scale-out upper limit is not reached. The policy for scaling out the number of replicas for a workload is as follows: | + | | | | | + | | | | #. Pending pods trigger the autoscaler to determine the scale-out process. | + | | | | #. autoscaler simulates the scheduling phase and evaluates that the pending pods can be scheduled to the added nodes in both node pools 1 and 2. | + | | | | #. autoscaler randomly selects node pool 1 or node pool 2 for scale-out. | + +-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | most-pods | A combined policy. It takes precedence over the random policy. | This policy is based on the maximum number of pods that can be scheduled. | Assume that auto scaling is enabled for node pools 1 and 2 in the cluster and the scale-out upper limit is not reached. The policy for scaling out the number of replicas for a workload is as follows: | + | | | | | + | | Preferentially selects the node pool that can schedule the most pods after scale-out. If multiple node pools meet the condition, the random policy is used for further decision-making. | | #. Pending pods trigger the autoscaler to determine the scale-out process. | + | | | | #. autoscaler simulates the scheduling phase and evaluates that some pending pods can be scheduled to the added nodes in both node pools 1 and 2. | + | | | | #. autoscaler evaluates that node pool 1 can schedule 20 new pods and node pool 2 can schedule only 10 new pods after scale-out. Therefore, autoscaler selects node pool 1 for scale-out. | + +-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | least-waste | A combined policy. It takes precedence over the random policy. | This policy uses the minimum waste score of CPU or memory resources as the selection criteria. | Assume that auto scaling is enabled for node pools 1 and 2 in the cluster and the scale-out upper limit is not reached. The policy for scaling out the number of replicas for a workload is as follows: | + | | | | | + | | autoscaler evaluates the overall CPU or memory allocation rate of the node pools and selects the node pool with the minimum CPU or memory waste. If multiple node pools meet the condition, the random policy is used for further decision-making. | The formula for calculating the minimum waste score (wastedScore) is as follows: | #. Pending pods trigger the autoscaler to determine the scale-out process. | + | | | | #. autoscaler simulates the scheduling phase and evaluates that some pending pods can be scheduled to the added nodes in both node pools 1 and 2. | + | | | - wastedCPU = (Total number of CPUs of the nodes to be scaled out - Total number of CPUs of the pods to be scheduled)/Total number of CPUs of the nodes to be scaled out | #. autoscaler evaluates that the minimum waste score of node pool 1 after scale-out is smaller than that of node pool 2. Therefore, autoscaler selects node pool 1 for scale-out. | + | | | - wastedMemory = (Total memory size of nodes to be scaled out - Total memory size of pods to be scheduled)/Total memory size of nodes to be scaled out | | + | | | - wastedScore = wastedCPU + wastedMemory | | + +-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | priority | A combined policy. The priorities for the policies are as follows: priority > least-waste > random. | This policy allows you to configure and manage the priorities of node pools or scaling groups through the console or API, while the least-waste policy can reduce the resource waste ratio in common scenarios. This policy has wider applicability and is used as the default selection policy. | Assume that auto scaling is enabled for node pools 1 and 2 in the cluster and the scale-out upper limit is not reached. The policy for scaling out the number of replicas for a workload is as follows: | + | | | | | + | | It is an enhanced least-waste policy configured based on the node pool or scaling group priority. If multiple node pools meet the condition, the least-waste policy is used for further decision-making. | | #. Pending pods trigger the autoscaler to determine the scale-out process. | + | | | | #. autoscaler simulates the scheduling phase and evaluates that some pending pods can be scheduled to the added nodes in both node pools 1 and 2. | + | | | | #. autoscaler evaluates that node pool 1 has a higher priority than node pool 2. Therefore, autoscaler selects node pool 1 for scale-out. | + +-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/auto_scaling/scaling_a_workload/creating_an_hpa_policy_for_workload_auto_scaling.rst b/umn/source/auto_scaling/scaling_a_workload/hpa.rst similarity index 91% rename from umn/source/auto_scaling/scaling_a_workload/creating_an_hpa_policy_for_workload_auto_scaling.rst rename to umn/source/auto_scaling/scaling_a_workload/hpa.rst index 9bff10e..4703a5c 100644 --- a/umn/source/auto_scaling/scaling_a_workload/creating_an_hpa_policy_for_workload_auto_scaling.rst +++ b/umn/source/auto_scaling/scaling_a_workload/hpa.rst @@ -2,18 +2,20 @@ .. _cce_10_0208: -Creating an HPA Policy for Workload Auto Scaling -================================================ +HPA +=== Horizontal Pod Autoscaling (HPA) in Kubernetes implements horizontal scaling of pods. In a CCE HPA policy, you can configure different cooldown time windows and scaling thresholds for different applications based on the Kubernetes HPA. Prerequisites ------------- -To use HPA policies, you need to install an add-on that can provide the metrics API, such as metrics-server and prometheus. +To use HPA, install an add-on that provides metrics APIs. Select one of the following add-ons based on your cluster version and actual requirements. -Notes and Constraints ---------------------- +- :ref:`metrics-server `: provides basic resource usage metrics, such as container CPU and memory usage. It is supported by all cluster versions. + +Constraints +----------- - HPA policies can be created only for clusters of v1.13 or later. @@ -21,14 +23,14 @@ Notes and Constraints For clusters of v1.19.10 and later, if an HPA policy is used to scale out a workload with EVS volume mounted, a new pod cannot be started because EVS disks cannot be attached. -Procedure ---------- +Creating an HPA Policy +---------------------- -#. Log in to the CCE console and access the cluster console. +#. Log in to the CCE console and click the cluster name to access the cluster console. #. In the navigation pane, choose **Workload Scaling**. Then click **Create HPA Policy** in the upper right corner. -#. Set policy parameters. +#. Configure the parameters. .. _cce_10_0208__table8638121213265: @@ -49,7 +51,7 @@ Procedure +--------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Cooldown Period | Interval between a scale-in and a scale-out. The unit is minute. **The interval cannot be shorter than 1 minute.** | | | | - | | **This parameter is supported only from clusters of v1.15 to v1.23.** | + | | **This parameter is supported only in clusters of v1.15 to v1.23.** | | | | | | This parameter indicates the interval between consecutive scaling operations. The cooldown period ensures that a scaling operation is initiated only when the previous one is completed and the system is running stably. | +--------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -82,14 +84,10 @@ Procedure +--------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Custom Policy (supported only in clusters of v1.15 or later) | .. note:: | | | | - | | Before setting a custom policy, you need to install an add-on that supports custom metric collection in the cluster, for example, prometheus add-on. | + | | Before creating a custom policy, install an add-on that supports custom metric collection (for example, prometheus) in the cluster. Ensure that the add-on can collect and report the custom metrics of the workloads. | | | | | | - **Metric Name**: name of the custom metric. You can select a name as prompted. | - | | | - | | For details, see :ref:`Custom Monitoring `. | - | | | | | - **Metric Source**: Select an object type from the drop-down list. You can select **Pod**. | - | | | | | - **Desired Value**: the average metric value of all pods. Number of pods to be scaled (rounded up) = (Current metric value/Desired value) x Number of current pods | | | | | | .. note:: | diff --git a/umn/source/auto_scaling/scaling_a_workload/index.rst b/umn/source/auto_scaling/scaling_a_workload/index.rst index b6508fa..88590f9 100644 --- a/umn/source/auto_scaling/scaling_a_workload/index.rst +++ b/umn/source/auto_scaling/scaling_a_workload/index.rst @@ -6,7 +6,7 @@ Scaling a Workload ================== - :ref:`Workload Scaling Mechanisms ` -- :ref:`Creating an HPA Policy for Workload Auto Scaling ` +- :ref:`HPA ` - :ref:`Managing Workload Scaling Policies ` .. toctree:: @@ -14,5 +14,5 @@ Scaling a Workload :hidden: workload_scaling_mechanisms - creating_an_hpa_policy_for_workload_auto_scaling + hpa managing_workload_scaling_policies diff --git a/umn/source/auto_scaling/scaling_a_workload/managing_workload_scaling_policies.rst b/umn/source/auto_scaling/scaling_a_workload/managing_workload_scaling_policies.rst index 77d4239..8356785 100644 --- a/umn/source/auto_scaling/scaling_a_workload/managing_workload_scaling_policies.rst +++ b/umn/source/auto_scaling/scaling_a_workload/managing_workload_scaling_policies.rst @@ -16,8 +16,8 @@ Checking an HPA Policy You can view the rules, status, and events of an HPA policy and handle exceptions based on the error information displayed. #. Log in to the CCE console and click the cluster name to access the cluster console. -#. In the navigation pane, choose **Workload Scaling**. On the **HPA Policies** tab page, click |image1| next to the target HPA policy. -#. In the expanded area, you can view the **Rules**, **Status**, and **Events** tab pages. If the policy is abnormal, locate and rectify the fault based on the error information. +#. In the navigation pane, choose **Policies**. On the **HPA Policies** tab page, click |image1| next to the target HPA policy. +#. In the expanded area, view the **Rule** and **Status** tabs. Click **View Events** in the **Operation** column. If the policy malfunctions, locate and rectify the fault based on the error message displayed on the page. .. note:: @@ -25,7 +25,7 @@ You can view the rules, status, and events of an HPA policy and handle exception a. Log in to the CCE console and click the cluster name to access the cluster console. b. In the navigation pane, choose **Workloads**. Click the workload name to view its details. - c. On the workload details page, switch to the **Auto Scaling** tab page to view the HPA policies. You can also view the scaling policies you configured in **Workload Scaling**. + c. On the workload details page, click the **Auto Scaling** tab to view the HPA policies. You can also view the scaling policies you configured in the **Workload Scaling** page. .. table:: **Table 1** Event types and names @@ -65,22 +65,22 @@ Updating an HPA Policy An HPA policy is used as an example. #. Log in to the CCE console and click the cluster name to access the cluster console. -#. In the navigation pane, choose **Workload Scaling**. Click **More** > **Edit** in the **Operation** column of the target HPA policy. -#. On the **Edit HPA Policy** page, set the policy parameters listed in :ref:`Table 1 `. +#. On the cluster console, choose **Workload Scaling** in the navigation pane. Locate the row that contains the target policy and choose **More** > **Edit** in the **Operation** column. +#. On the **Edit HPA Policy** page, configure the parameters as listed in :ref:`Table 1 `. #. Click **OK**. Editing the YAML File (HPA Policy) ---------------------------------- #. Log in to the CCE console and click the cluster name to access the cluster console. -#. In the navigation pane, choose **Workload Scaling**. Click **Edit YAML** in the **Operation** column of the target HPA policy. +#. In the navigation pane, choose **Policies**. Choose **Edit YAML** in the **Operation** column of the target HPA policy. #. In the **Edit YAML** dialog box displayed, edit or download the YAML file. Deleting an HPA Policy ---------------------- #. Log in to the CCE console and click the cluster name to access the cluster console. -#. In the navigation pane, choose **Workload Scaling**. Click **More** > **Delete** in the **Operation** column of the target policy. +#. In the navigation pane, choose **Policies**. Choose **Delete** > **Delete** in the **Operation** column of the target policy. #. In the dialog box displayed, click **Yes**. -.. |image1| image:: /_static/images/en-us_image_0000001568902521.png +.. |image1| image:: /_static/images/en-us_image_0000001695737185.png diff --git a/umn/source/auto_scaling/using_hpa_and_ca_for_auto_scaling_of_workloads_and_nodes.rst b/umn/source/auto_scaling/using_hpa_and_ca_for_auto_scaling_of_workloads_and_nodes.rst index c7b3de8..c5bd04c 100644 --- a/umn/source/auto_scaling/using_hpa_and_ca_for_auto_scaling_of_workloads_and_nodes.rst +++ b/umn/source/auto_scaling/using_hpa_and_ca_for_auto_scaling_of_workloads_and_nodes.rst @@ -10,7 +10,7 @@ Application Scenarios The best way to handle surging traffic is to automatically adjust the number of machines based on the traffic volume or resource usage, which is called scaling. -In CCE, the resources that can be used by containers are fixed during application deployment. Therefore, in auto scaling, pods are scaled first. The node resource usage increases only after the number of pods increases. Then, nodes can be scaled based on the node resource usage. How to configure auto scaling in CCE? +When pods or containers are used for deploying applications, the upper limit of available resources is typically required to set for pods or containers to prevent unlimited usage of node resources during peak hours. However, after the upper limit is reached, an application error may occur. To resolve this issue, scale in the number of pods to share workloads. If the node resource usage increases to a certain extent that newly added pods cannot be scheduled, scale in the number of nodes based on the node resource usage. Solution -------- @@ -23,7 +23,7 @@ As shown in :ref:`Figure 1 ` is the image repository address, which can be obtained on the SWR console. - - **[Organization name]**: name of the organization created in :ref:`4 `. - - **[Image name 2:Tag 2]**: desired image name and tag to be displayed on the SWR console. + - *{Image name 1:Tag 1}*: name and tag of the local image to be uploaded. + - *{Image repository address}*: the domain name at the end of the login command in :ref:`login command `. It can be obtained on the SWR console. + - *{Organization name}*: name of the :ref:`created organization `. + - *{Image name 2:Tag 2}*: desired image name and tag to be displayed on the SWR console. Example: @@ -130,7 +130,7 @@ Creating a Node Pool and a Node Scaling Policy #. Log in to the CCE console, access the created cluster, click **Nodes** on the left, click the **Node Pools** tab, and click **Create Node Pool** in the upper right corner. -#. Set node pool parameters, add a node with 2 vCPUs and 4 GiB memory, and enable auto scaling. +#. Set node pool parameters, add a node with 2 vCPUs and 4 GB memory, and enable auto scaling. - **Nodes**: Set it to **1**, indicating that one node is created by default when a node pool is created. - **Auto Scaling**: Enable the option, meaning that nodes will be automatically created or deleted in the node pool based on the cluster loads. @@ -174,7 +174,7 @@ Use the hpa-example image to create a Deployment with one replica. The image pat spec: containers: - name: container-1 - image: 'hpa-example:latest ' # Replace it with the address of the image you uploaded to SWR. + image: 'hpa-example:latest' # Replace it with the address of the image you uploaded to SWR. resources: limits: # The value of limits must be the same as that of requests to prevent flapping during scaling. cpu: 500m @@ -231,7 +231,9 @@ There are two other annotations. One annotation defines the CPU thresholds, indi - type: Resource resource: name: cpu - targetAverageUtilization: 50 + target: + type: Utilization + averageUtilization: 50 Set the parameters as follows if you are using the console. @@ -263,7 +265,7 @@ Observing the Auto Scaling Process .. note:: - If no EIP is displayed, the cluster node has not been assigned any EIP. You need to create one, bind it to the node, and synchronize node data. . + If no EIP is displayed, the cluster node has not been assigned any EIP. Allocate one, bind it to the node, and synchronize node data. . Observe the scaling process of the workload. @@ -379,7 +381,7 @@ Summary Using HPA and CA can easily implement auto scaling in most scenarios. In addition, the scaling process of nodes and pods can be easily observed. -.. |image1| image:: /_static/images/en-us_image_0000001518222700.png -.. |image2| image:: /_static/images/en-us_image_0000001568902661.png -.. |image3| image:: /_static/images/en-us_image_0000001569182741.png -.. |image4| image:: /_static/images/en-us_image_0000001569023029.png +.. |image1| image:: /_static/images/en-us_image_0000001647577020.png +.. |image2| image:: /_static/images/en-us_image_0000001647577036.png +.. |image3| image:: /_static/images/en-us_image_0000001647417772.png +.. |image4| image:: /_static/images/en-us_image_0000001695737425.png diff --git a/umn/source/best_practice/devops/interconnecting_gitlab_with_swr_and_cce_for_ci_cd.rst b/umn/source/best_practice/devops/interconnecting_gitlab_with_swr_and_cce_for_ci_cd.rst index 3d403b6..40f70b8 100644 --- a/umn/source/best_practice/devops/interconnecting_gitlab_with_swr_and_cce_for_ci_cd.rst +++ b/umn/source/best_practice/devops/interconnecting_gitlab_with_swr_and_cce_for_ci_cd.rst @@ -232,4 +232,4 @@ FAQs .. |image6| image:: /_static/images/en-us_image_0000001701704289.png .. |image7| image:: /_static/images/en-us_image_0000001653584820.png .. |image8| image:: /_static/images/en-us_image_0000001653584824.png -.. |image9| image:: /_static/images/en-us_image_0000001701704285.png +.. |image9| image:: /_static/images/en-us_image_0000001667910920.png diff --git a/umn/source/best_practice/storage/dynamically_creating_and_mounting_subdirectories_of_an_sfs_turbo_file_system.rst b/umn/source/best_practice/storage/dynamically_creating_and_mounting_subdirectories_of_an_sfs_turbo_file_system.rst index 9587660..bf39928 100644 --- a/umn/source/best_practice/storage/dynamically_creating_and_mounting_subdirectories_of_an_sfs_turbo_file_system.rst +++ b/umn/source/best_practice/storage/dynamically_creating_and_mounting_subdirectories_of_an_sfs_turbo_file_system.rst @@ -169,8 +169,8 @@ Creating a Deployment and Mounting an Existing Volume to the Deployment **kubectl create -f deployment-test.yaml** -Dynamically Creating a subpath Volume for a StatefulSet Deployment ------------------------------------------------------------------- +Dynamically Creating a subpath Volume for a StatefulSet +------------------------------------------------------- #. Create a YAML file for a StatefulSet, for example, **statefulset-test.yaml**. diff --git a/umn/source/change_history.rst b/umn/source/change_history.rst index 9a82306..4a31bf2 100644 --- a/umn/source/change_history.rst +++ b/umn/source/change_history.rst @@ -10,6 +10,13 @@ Change History +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Released On | What's New | +===================================+=======================================================================================================================================================================================================================================+ + | 2023-11-06 | - Deleted section "Storage Management: Flexvolume (Deprecated)". | + | | - Deleted section "Kubernetes Version Support Mechanism". | + | | - Added :ref:`Kubernetes Version Policy `. | + | | - Updated :ref:`Networking `. | + | | - Updated :ref:`Storage `. | + | | - Deleted the description of CentOS 7.7. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 2023-08-15 | - Added :ref:`FAQs `. | | | - Added :ref:`Differences Between Helm v2 and Helm v3 and Adaptation Solutions `. | | | - Added :ref:`Deploying an Application Through the Helm v2 Client `. | diff --git a/umn/source/charts/deploying_an_application_through_the_helm_v3_client.rst b/umn/source/charts/deploying_an_application_through_the_helm_v3_client.rst deleted file mode 100644 index ba8568d..0000000 --- a/umn/source/charts/deploying_an_application_through_the_helm_v3_client.rst +++ /dev/null @@ -1,120 +0,0 @@ -:original_name: cce_10_0144.html - -.. _cce_10_0144: - -Deploying an Application Through the Helm v3 Client -=================================================== - -Prerequisites -------------- - -The Kubernetes cluster created on CCE has been connected to kubectl. For details, see :ref:`Using kubectl `. - -.. _cce_10_0144__en-us_topic_0226102212_en-us_topic_0179003017_section3719193213815: - -Installing Helm v3 ------------------- - -This document uses Helm v3.3.0 as an example. - -For other versions, visit https://github.com/helm/helm/releases. - -#. Download the Helm client from the VM connected to the cluster. - - .. code-block:: - - wget https://get.helm.sh/helm-v3.3.0-linux-amd64.tar.gz - -#. Decompress the Helm package. - - .. code-block:: - - tar -xzvf helm-v3.3.0-linux-amd64.tar.gz - -#. Copy Helm to the system path, for example, **/usr/local/bin/helm**. - - .. code-block:: - - mv linux-amd64/helm /usr/local/bin/helm - -#. Query the Helm version. - - .. code-block:: - - helm version - version.BuildInfo{Version:"v3.3.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a28b6", GitTreeState:"clean", GoVersion:"go1.13.4"} - -Installing the Helm Chart -------------------------- - -If the charts provided by CCE do not meet requirements, download a chart and install it. - -You can obtain the required chart in the **stable** directory on this `website `__, download the chart, and upload it to the node. - -#. Download and decompress the obtained chart. Generally, the chart is in ZIP format. - - .. code-block:: - - unzip chart.zip - -#. Install the Helm chart. - - .. code-block:: - - helm install aerospike/ --generate-name - -#. After the installation is complete, run the **helm list** command to check the status of the chart releases. - -Common Issues -------------- - -- The following error message is displayed after the **helm version** command is run: - - .. code-block:: - - Client: - &version.Version{SemVer:"v3.3.0", - GitCommit:"012cb0ac1a1b2f888144ef5a67b8dab6c2d45be6", GitTreeState:"clean"} - E0718 11:46:10.132102 7023 portforward.go:332] an error occurred - forwarding 41458 -> 44134: error forwarding port 44134 to pod - d566b78f997eea6c4b1c0322b34ce8052c6c2001e8edff243647748464cd7919, uid : unable - to do port forwarding: socat not found. - Error: cannot connect to Tiller - - The preceding information is displayed because the socat is not installed. Run the following command to install the socat: - - **yum install socat -y** - -- When you run the **yum install socat -y** command on a node running EulerOS 2.9 and the following error message is displayed: - - No match for argument: socat - - Error: Unable to find a match: socat - - Manually download the socat image and run the following command to install it: - - **rpm -i socat-1.7.3.2-8.oe1.x86_64.rpm** - -- When the socat has been installed and the following error message is displayed after the **helm version** command is run: - - .. code-block:: - - $ helm version - Client: &version.Version{SemVer:"v3.3.0", GitCommit:"021cb0ac1a1b2f888144ef5a67b8dab6c2d45be6", GitTreeState:"clean"} - Error: cannot connect to Tiller - - The Helm chart reads the configuration certificate from the **.Kube/config** file to communicate with Kubernetes. The preceding error indicates that the kubectl configuration is incorrect. In this case, reconnect the cluster to kubectl. For details, see :ref:`Using kubectl `. - -- Storage fails to be created after you have connected to cloud storage services. - - This issue may be caused by the **annotation** field in the created PVC. Change the chart name and install the chart again. - -- If kubectl is not properly configured, the following error message is displayed after the **helm install** command is run: - - .. code-block:: - - # helm install prometheus/ --generate-name - WARNING: This chart is deprecated - Error: Kubernetes cluster unreachable: Get "http://localhost:8080/version?timeout=32s": dial tcp [::1]:8080: connect: connection refused - - **Solution**: Configure kubeconfig for the node. For details, see :ref:`Using kubectl `. diff --git a/umn/source/clusters/cluster_overview/basic_cluster_information.rst b/umn/source/clusters/cluster_overview/basic_cluster_information.rst index 50114de..760a907 100644 --- a/umn/source/clusters/cluster_overview/basic_cluster_information.rst +++ b/umn/source/clusters/cluster_overview/basic_cluster_information.rst @@ -9,43 +9,18 @@ Basic Cluster Information For developers, Kubernetes is a cluster operating system. Kubernetes provides service discovery, scaling, load balancing, self-healing, and even leader election, freeing developers from infrastructure-related configurations. -When using Kubernetes, it is like you run a large number of servers as one and the method for deploying applications in Kubernetes is always the same. +Cluster Network +--------------- -Kubernetes Cluster Architecture -------------------------------- +A cluster network can be divided into three network types: -A Kubernetes cluster consists of master nodes (Masters) and worker nodes (Nodes). Applications are deployed on worker nodes, and you can specify the nodes for deployment. +- Node network: IP addresses are assigned to nodes in a cluster. +- Container network: IP addresses are assigned to containers in a cluster for communication. Currently, multiple container network models are supported, and each model has its own working mechanism. +- Service network: A Service is a Kubernetes object used to access containers. Each Service has a static IP address. -.. note:: +When you create a cluster, select a proper CIDR block for each network. Ensure that the CIDR blocks do not conflict with each other and have sufficient available IP addresses. **You cannot change the container network model after the cluster is created.** Plan the container network model properly in advance. - For a cluster created on CCE, the master node is hosted by CCE. You only need to create a node. - -The following figure shows the architecture of a Kubernetes cluster. - - -.. figure:: /_static/images/en-us_image_0000001568822869.png - :alt: **Figure 1** Kubernetes cluster architecture - - **Figure 1** Kubernetes cluster architecture - -**Master node** - -A master node is the machine where the control plane components run, including API server, Scheduler, Controller manager, and etcd. - -- API server: functions as a transit station for components to communicate with each other, receives external requests, and writes information to etcd. -- Controller manager: performs cluster-level functions, such as component replication, node tracing, and node fault fixing. -- Scheduler: schedules containers to nodes based on various conditions (such as available resources and node affinity). -- etcd: serves as a distributed data storage component that stores cluster configuration information. - -In a production environment, multiple master nodes are deployed to ensure high cluster availability. For example, you can deploy three master nodes for your CCE cluster. - -**Worker node** - -A worker node is a compute node in a cluster, that is, a node running containerized applications. A worker node has the following components: - -- kubelet: communicates with the container runtime, interacts with the API server, and manages containers on the node. -- kube-proxy: serves as an access proxy between application components. -- Container runtime: functions as the software for running containers. You can download images to build your container runtime, such as Docker. +You are advised to learn about the cluster network and container network models before creating a cluster. For details, see :ref:`Container Network Models `. Master Nodes and Cluster Scale ------------------------------ @@ -54,21 +29,6 @@ When you create a cluster on CCE, you can have one or three master nodes. Three The master node specifications decide the number of nodes that can be managed by a cluster. You can select the cluster management scale, for example, 50 or 200 nodes. -Cluster Network ---------------- - -From the perspective of the network, all nodes in a cluster are located in a VPC, and containers are running on the nodes. You need to configure node-node, node-container, and container-container communication. - -A cluster network can be divided into three network types: - -- Node network: IP addresses are assigned to nodes in a cluster. -- Container network: IP addresses are assigned to containers in a cluster for communication. Currently, multiple container network models are supported, and each model has its own working mechanism. -- Service network: A Service is a Kubernetes object used to access containers. Each Service has a fixed IP address. - -When you create a cluster, select a proper CIDR block for each network. Ensure that the CIDR blocks do not conflict with each other and have sufficient available IP addresses. **You cannot change the container network model after the cluster is created.** Plan the container network model properly in advance. - -You are advised to learn about the cluster network and container network models before creating a cluster. For details, see :ref:`Container Network Models `. - Cluster Lifecycle ----------------- @@ -81,10 +41,6 @@ Cluster Lifecycle +-------------+-------------------------------------------------------------------+ | Running | A cluster is running properly. | +-------------+-------------------------------------------------------------------+ - | Scaling-out | A node is being added to a cluster. | - +-------------+-------------------------------------------------------------------+ - | Scaling-in | A node is being deleted from a cluster. | - +-------------+-------------------------------------------------------------------+ | Hibernating | A cluster is hibernating. | +-------------+-------------------------------------------------------------------+ | Awaking | A cluster is being woken up. | diff --git a/umn/source/clusters/cluster_overview/comparing_iptables_and_ipvs.rst b/umn/source/clusters/cluster_overview/comparing_iptables_and_ipvs.rst deleted file mode 100644 index 65b82de..0000000 --- a/umn/source/clusters/cluster_overview/comparing_iptables_and_ipvs.rst +++ /dev/null @@ -1,42 +0,0 @@ -:original_name: cce_10_0349.html - -.. _cce_10_0349: - -Comparing iptables and IPVS -=========================== - -kube-proxy is a key component of a Kubernetes cluster. It is responsible for load balancing and forwarding between a Service and its backend pod. - -CCE supports two forwarding modes: iptables and IPVS. - -- IPVS allows higher throughput and faster forwarding. This mode applies to scenarios where the cluster scale is large or the number of Services is large. -- iptables is the traditional kube-proxy mode. This mode applies to the scenario where the number of Services is small or a large number of short connections are concurrently sent on the client. - -Notes and Constraints ---------------------- - -In a cluster using the IPVS proxy mode, if the ingress and Service use the same ELB load balancer, the ingress cannot be accessed from the nodes and containers in the cluster because kube-proxy mounts the LoadBalancer Service address to the ipvs-0 bridge. This bridge intercepts the traffic of the load balancer connected to the ingress. You are advised to use different ELB load balancers for the ingress and Service. - -iptables --------- - -iptables is a Linux kernel function that provides a large amount of data packet processing and filtering capabilities. It allows flexible sequences of rules to be attached to various hooks in the packet processing pipeline. When iptables is used, kube-proxy implements NAT and load balancing in the NAT pre-routing hook. - -kube-proxy is an O(n) algorithm, in which *n* increases with the cluster scale. The cluster scale refers to the number of Services and backend pods. - -IPVS ----- - -IP Virtual Server (IPVS) is constructed on top of Netfilter and implements transport-layer load balancing as part of the Linux kernel. IPVS can direct requests for TCP- and UDP-based services to the real servers, and make services of the real servers appear as virtual services on a single IP address. - -In the IPVS mode, kube-proxy uses IPVS load balancing instead of iptables. IPVS is designed to balance loads for a large number of Services. It has a set of optimized APIs and uses optimized search algorithms instead of simply searching for rules from a list. - -The complexity of the connection process of IPVS-based kube-proxy is O(1). In other words, in most cases, the connection processing efficiency is irrelevant to the cluster scale. - -IPVS involves multiple load balancing algorithms, such as round-robin, shortest expected delay, least connections, and various hashing methods. However, iptables has only one algorithm for random selection. - -Compared with iptables, IPVS has the following advantages: - -#. Provides better scalability and performance for large clusters. -#. Supports better load balancing algorithms than iptables. -#. Supports functions including server health check and connection retries. diff --git a/umn/source/clusters/cluster_overview/index.rst b/umn/source/clusters/cluster_overview/index.rst index 873092a..7b37878 100644 --- a/umn/source/clusters/cluster_overview/index.rst +++ b/umn/source/clusters/cluster_overview/index.rst @@ -6,17 +6,13 @@ Cluster Overview ================ - :ref:`Basic Cluster Information ` -- :ref:`CCE Turbo Clusters and CCE Clusters ` -- :ref:`Comparing iptables and IPVS ` -- :ref:`Release Notes ` -- :ref:`Cluster Patch Version Release Notes ` +- :ref:`Kubernetes Release Notes ` +- :ref:`Release Notes for CCE Cluster Versions ` .. toctree:: :maxdepth: 1 :hidden: basic_cluster_information - cce_turbo_clusters_and_cce_clusters - comparing_iptables_and_ipvs - release_notes/index - cluster_patch_version_release_notes + kubernetes_release_notes/index + release_notes_for_cce_cluster_versions diff --git a/umn/source/clusters/cluster_overview/kubernetes_release_notes/index.rst b/umn/source/clusters/cluster_overview/kubernetes_release_notes/index.rst new file mode 100644 index 0000000..b5cc152 --- /dev/null +++ b/umn/source/clusters/cluster_overview/kubernetes_release_notes/index.rst @@ -0,0 +1,22 @@ +:original_name: cce_10_0068.html + +.. _cce_10_0068: + +Kubernetes Release Notes +======================== + +- :ref:`Kubernetes 1.25 Release Notes ` +- :ref:`Kubernetes 1.23 Release Notes ` +- :ref:`Kubernetes 1.21 Release Notes ` +- :ref:`Kubernetes 1.19 Release Notes ` +- :ref:`Kubernetes 1.17 (EOM) Release Notes ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + kubernetes_1.25_release_notes + kubernetes_1.23_release_notes + kubernetes_1.21_release_notes + kubernetes_1.19_release_notes + kubernetes_1.17_eom_release_notes diff --git a/umn/source/clusters/cluster_overview/release_notes/cce_kubernetes_1.17_release_notes.rst b/umn/source/clusters/cluster_overview/kubernetes_release_notes/kubernetes_1.17_eom_release_notes.rst similarity index 96% rename from umn/source/clusters/cluster_overview/release_notes/cce_kubernetes_1.17_release_notes.rst rename to umn/source/clusters/cluster_overview/kubernetes_release_notes/kubernetes_1.17_eom_release_notes.rst index ee6e2ec..400d298 100644 --- a/umn/source/clusters/cluster_overview/release_notes/cce_kubernetes_1.17_release_notes.rst +++ b/umn/source/clusters/cluster_overview/kubernetes_release_notes/kubernetes_1.17_eom_release_notes.rst @@ -1,9 +1,9 @@ -:original_name: cce_10_0471.html +:original_name: cce_whsnew_0007.html -.. _cce_10_0471: +.. _cce_whsnew_0007: -CCE Kubernetes 1.17 Release Notes -================================= +Kubernetes 1.17 (EOM) Release Notes +=================================== CCE has passed the Certified Kubernetes Conformance Program and is a certified Kubernetes offering. This section describes the updates in CCE Kubernetes 1.17. diff --git a/umn/source/clusters/cluster_overview/release_notes/cce_kubernetes_1.19_release_notes.rst b/umn/source/clusters/cluster_overview/kubernetes_release_notes/kubernetes_1.19_release_notes.rst similarity index 96% rename from umn/source/clusters/cluster_overview/release_notes/cce_kubernetes_1.19_release_notes.rst rename to umn/source/clusters/cluster_overview/kubernetes_release_notes/kubernetes_1.19_release_notes.rst index 9720144..e3bab81 100644 --- a/umn/source/clusters/cluster_overview/release_notes/cce_kubernetes_1.19_release_notes.rst +++ b/umn/source/clusters/cluster_overview/kubernetes_release_notes/kubernetes_1.19_release_notes.rst @@ -1,16 +1,16 @@ -:original_name: cce_10_0470.html +:original_name: cce_whsnew_0010.html -.. _cce_10_0470: +.. _cce_whsnew_0010: -CCE Kubernetes 1.19 Release Notes -================================= +Kubernetes 1.19 Release Notes +============================= CCE has passed the Certified Kubernetes Conformance Program and is a certified Kubernetes offering. This section describes the updates in CCE Kubernetes 1.19. Resource Changes and Deprecations --------------------------------- -**Kubernetes 1.19 Release Notes** +**Kubernetes v1.19 Release Notes** - vSphere in-tree volumes can be migrated to vSphere CSI drivers. The in-tree vSphere Volume plugin is no longer used and will be deleted in later versions. - **apiextensions.k8s.io/v1beta1** has been deprecated. You are advised to use **apiextensions.k8s.io/v1**. @@ -27,7 +27,7 @@ Resource Changes and Deprecations - The alpha feature **ResourceLimitsPriorityFunction** has been deleted. - **storage.k8s.io/v1beta1** has been deprecated. You are advised to use **storage.k8s.io/v1**. -**Kubernetes 1.18 Release Notes** +**Kubernetes v1.18 Release Notes** - kube-apiserver diff --git a/umn/source/clusters/cluster_overview/release_notes/cce_kubernetes_1.21_release_notes.rst b/umn/source/clusters/cluster_overview/kubernetes_release_notes/kubernetes_1.21_release_notes.rst similarity index 97% rename from umn/source/clusters/cluster_overview/release_notes/cce_kubernetes_1.21_release_notes.rst rename to umn/source/clusters/cluster_overview/kubernetes_release_notes/kubernetes_1.21_release_notes.rst index a40fb66..cd09dcf 100644 --- a/umn/source/clusters/cluster_overview/release_notes/cce_kubernetes_1.21_release_notes.rst +++ b/umn/source/clusters/cluster_overview/kubernetes_release_notes/kubernetes_1.21_release_notes.rst @@ -1,9 +1,9 @@ -:original_name: cce_10_0469.html +:original_name: cce_bulletin_0026.html -.. _cce_10_0469: +.. _cce_bulletin_0026: -CCE Kubernetes 1.21 Release Notes -================================= +Kubernetes 1.21 Release Notes +============================= CCE has passed the Certified Kubernetes Conformance Program and is a certified Kubernetes offering. This section describes the updates in CCE Kubernetes 1.21. diff --git a/umn/source/clusters/cluster_overview/release_notes/cce_kubernetes_1.23_release_notes.rst b/umn/source/clusters/cluster_overview/kubernetes_release_notes/kubernetes_1.23_release_notes.rst similarity index 93% rename from umn/source/clusters/cluster_overview/release_notes/cce_kubernetes_1.23_release_notes.rst rename to umn/source/clusters/cluster_overview/kubernetes_release_notes/kubernetes_1.23_release_notes.rst index 9ddd2cb..dc70ef6 100644 --- a/umn/source/clusters/cluster_overview/release_notes/cce_kubernetes_1.23_release_notes.rst +++ b/umn/source/clusters/cluster_overview/kubernetes_release_notes/kubernetes_1.23_release_notes.rst @@ -1,19 +1,15 @@ -:original_name: cce_10_0468.html +:original_name: cce_bulletin_0027.html -.. _cce_10_0468: +.. _cce_bulletin_0027: -CCE Kubernetes 1.23 Release Notes -================================= +Kubernetes 1.23 Release Notes +============================= CCE has passed the Certified Kubernetes Conformance Program and is a certified Kubernetes offering. This section describes the updates in CCE Kubernetes 1.23. Resource Changes and Deprecations --------------------------------- -**Changes in CCE 1.23** - -- The web-terminal add-on is no longer supported. Use kubectl instead. - **Kubernetes 1.23 Release Notes** - FlexVolume is deprecated. Use CSI. diff --git a/umn/source/clusters/cluster_overview/kubernetes_release_notes/kubernetes_1.25_release_notes.rst b/umn/source/clusters/cluster_overview/kubernetes_release_notes/kubernetes_1.25_release_notes.rst new file mode 100644 index 0000000..cea8442 --- /dev/null +++ b/umn/source/clusters/cluster_overview/kubernetes_release_notes/kubernetes_1.25_release_notes.rst @@ -0,0 +1,165 @@ +:original_name: cce_bulletin_0058.html + +.. _cce_bulletin_0058: + +Kubernetes 1.25 Release Notes +============================= + +CCE has passed the Certified Kubernetes Conformance Program and is a certified Kubernetes offering. This document describes the changes made in Kubernetes 1.25 compared with Kubernetes 1.23. + +Indexes +------- + +- :ref:`New Features ` +- :ref:`Deprecations and Removals ` +- :ref:`Enhanced Kubernetes 1.25 on CCE ` +- :ref:`References ` + +.. _cce_bulletin_0058__en-us_topic_0000001596950457_en-us_topic_0000001389397618_en-us_topic_0000001430891141_en-us_topic_0000001072975092_section51381161799: + +New Features +------------ + +**Kubernetes 1.25** + +- Pod Security Admission is stable. PodSecurityPolicy is deprecated. + + PodSecurityPolicy is replaced by Pod Security Admission. For details about the migration, see `Migrate from PodSecurityPolicy to the Built-In PodSecurity Admission Controller `__. + +- The ephemeral container is stable. + + An `ephemeral container `__ is a container that runs temporarily in an existing pod. It is useful for troubleshooting, especially when kubectl exec cannot be used to check a container that breaks down or its image lacks a debugging tool. + +- Support for cgroups v2 enters the stable phase. + + Kubernetes supports cgroups v2. cgroups v2 provides some improvements over cgroup v1. For details, see `About cgroup v2 `__. + +- SeccompDefault moves to beta. + + To enable this feature, add the startup parameter **--seccomp-default=true** to kubelet. In this way, **seccomp** is set to **RuntimeDefault** by default, improving system security. Clusters of v1.25 no longer support **seccomp.security.alpha.kubernetes.io/pod** and **container.seccomp.security.alpha.kubernetes.io/annotation**. Replace them with the **securityContext.seccompProfile** field in pods or containers. For details, see `Configure a Security Context for a Pod or Container `__. + + .. note:: + + After this feature is enabled, the system calls required by the application may be restricted by the runtime. Ensure that the debugging is performed in the test environment, so that application is not affected. + +- The EndPort in the network policy moves to stable. + + EndPort in Network Policy is stable. This feature is incorporated in version 1.21. EndPort is added to NetworkPolicy. You can specify a port range. + +- Local ephemeral storage capacity isolation is stable. + + This feature provides support for capacity isolation of local ephemeral storage between pods, such as EmptyDir. If a pod's consumption of shared resources exceeds the limit, it will be evicted. + +- The CRD verification expression language moves to beta. + + This makes it possible to declare how to validate custom resources using `Common Expression Language (CEL) `__. For details, see `Extend the Kubernetes API with CustomResourceDefinitions `__. + +- KMS v2 APIs are introduced. + + The KMS v2 alpha1 API is introduced to add performance, rotation, and observability improvements. This API uses AES-GCM to replace AES-CBC and uses DEK to encrypt data at rest (Kubernetes Secrets). No additional operation is required during this process. Additionally, data can be read through AES-GCM and AES-CBC. For details, see `Using a KMS provider for data encryption `__. + +- Pod network readiness is introduced. + + Kubernetes 1.25 introduces Alpha support for PodHasNetwork. This status is in the **status** field of the pod. For details, see `Pod network readiness `__. + +- The two features used for application rollout are stable. + + - In Kubernetes 1.25, **minReadySeconds** for StatefulSets is stable. It allows each pod to wait for an expected period of time to slow down the rollout of a StatefulSet. For details, see `Minimum ready seconds `__. + - In Kubernetes 1.25, **maxSurge** for DaemonSets is stable. It allows a DaemonSet workload to run multiple instances of the same pod on one node during a rollout. This minimizes DaemonSet downtime for users. DaemonSet does not allow **maxSurge** and **hostPort** to be used at the same time because two active pods cannot share the same port on the same node. For details, see `Perform a Rolling Update on a DaemonSet `__. + +- Alpha support for running pods with user namespaces is provided. + + This feature maps the **root** user in a pod to a non-zero ID outside the container. In this way, the container runs as the **root** user and the node runs as a regular unprivileged user. This feature is still in the internal test phase. The UserNamespacesStatelessPodsSupport gate needs to be enabled, and the container runtime must support this function. For details, see `Kubernetes 1.25: alpha support for running Pods with user namespaces `__. + +**Kubernetes 1.24** + +- Dockershim is removed from kubelet. + + Dockershim was marked deprecated in Kubernetes 1.20 and officially removed from kubelet in Kubernetes 1.24. If you want to use Docker container, switch to cri-dockerd or other runtimes that support CRI, such as containerd and CRI-O. + + .. note:: + + Check whether there are agents or applications that depend on Docker Engine. For example, if **docker ps**, **docker run**, and **docker inspect** are used, ensure that multiple runtimes are compatible and switch to the standard CRI. + +- Beta APIs are disabled by default. + + The Kubernetes community found 90% cluster administrators did not care about the beta APIs and left them enabled. However, the beta features are not recommended because these APIs enabled in the production environment by default incur risks. Therefore, in 1.24 and later versions, beta APIs are disabled by default, but the existing beta APIs will retain the original settings. + +- OpenAPI v3 is supported. + + In Kubernetes 1.24 and later versions, OpenAPI V3 is enabled by default. + +- Storage capacity tracking is stable. + + In Kubernetes 1.24 and later versions, the CSIStorageCapacity API supports exposing the available storage capacity. This ensures that pods are scheduled to nodes with sufficient storage capacity, which reduces pod scheduling delay caused by volume creation and mounting failures. For details, see `Storage Capacity `__. + +- gRPC container probe moves to beta. + + In Kubernetes 1.24 and later versions, the gRPC probe goes to beta. The feature gate GRPCContainerProbe is available by default. For details about how to use this probe, see `Configure Probes `__. + +- LegacyServiceAccountTokenNoAutoGeneration is enabled by default. + + The LegacyServiceAccountTokenNoAutoGeneration feature is in beta state. By default, this feature is enabled and no more secret token will be automatically generated for the service account. To use a token that never expires, create a secret and mount it. For details, see `Service account token Secrets `__. + +- IP address conflict is prevented. + + In Kubernetes 1.24, `an IP address pool is soft reserved for the static IP addresses of Services `__. After you manually enable this function, Service IP addresses will be automatically from the IP address pool to minimize IP address conflict. + +- Clusters are compiled based on Go 1.18. + + Kubernetes clusters of versions later than 1.24 are compiled based on Go 1.18. By default, the SHA-1 hash algorithm, such as SHA1WithRSA and ECDSAWithSHA1, is no longer supported for certificate signature verification. Use the certificate generated by the SHA256 algorithm instead. + +- The maximum number of unavailable StatefulSet replicas is configurable. + + In Kubernetes 1.24 and later versions, the **maxUnavailable** parameter can be configured for StatefulSets so that pods can be stopped more quickly during a rolling update. + +- Alpha support for non-graceful node shutdown is introduced. + + The non-graceful node shutdown is introduced as alpha in Kubernetes v1.24. A node shutdown is considered graceful only if kubelet's node shutdown manager can detect the upcoming node shutdown action. For details, see `Non-graceful node shutdown handling `__. + +.. _cce_bulletin_0058__en-us_topic_0000001596950457_section1096111394018: + +Deprecations and Removals +------------------------- + +**Kubernetes 1.25** + +- The iptables chain ownership is cleared up. + + Kubernetes typically creates iptables chains to ensure data packets can be sent to the destination. These iptables chains and their names are for internal use only. These chains were never intended to be part of any Kubernetes API/ABI guarantees. For details, see `Kubernetes's IPTables Chains Are Not API `__. + + In versions later than Kubernetes 1.25, Kubelet uses IPTablesCleanup to migrate the Kubernetes-generated iptables chains used by the components outside of Kubernetes in phases so that iptables chains such as KUBE-MARK-DROP, KUBE-MARK-MASQ, and KUBE-POSTROUTING will not be created in the NAT table. For more details, see `Cleaning Up IPTables Chain Ownership `__. + +- The cloud service vendors' in-tree storage drivers are removed. + +**Kubernetes 1.24** + +- In Kubernetes 1.24 and later versions, Service.Spec.LoadBalancerIP is deprecated because it cannot be used for dual-stack protocols. Instead, use custom annotations. +- In Kubernetes 1.24 and later versions, the **--address**, **--insecure-bind-address**, **--port**, and **--insecure-port=0** parameters are removed from **kube-apiserver**. +- In Kubernetes 1.24 and later versions, startup parameters **--port=0** and **--address** are removed from **kube-controller-manager** and **kube-scheduler**. +- In Kubernetes 1.24 and later versions, **kube-apiserver --audit-log-version** and **--audit-webhook-version** support only **audit.k8s.io/v1**. In Kubernetes 1.24, **audit.k8s.io/v1[alpha|beta]1** is removed, and only **audit.k8s.io/v1** can be used. +- In Kubernetes 1.24 and later versions, the startup parameter **--network-plugin** is removed from kubelet. This Docker-specific parameter is available only when the container runtime environment is **Docker** and it is deleted with Dockershim. +- In Kubernetes 1.24 and later versions, dynamic log clearance has been discarded and removed accordingly. A log filter is introduced to the logs of all Kubernetes system components to prevent sensitive information from being leaked through logs. However, this function may block logs and therefore is discarded. For more details, see `Dynamic log sanitization `__ and `KEP-1753 `__. +- VolumeSnapshot v1beta1 CRD is discarded in Kubernetes 1.20 and removed in Kubernetes 1.24. Use VolumeSnapshot v1 instead. +- In Kubernetes 1.24 and later versions, **service annotation tolerate-unready-endpoints** discarded in Kubernetes 1.11 is replaced by **Service.spec.publishNotReadyAddresses**. +- In Kubernetes 1.24 and later versions, the **metadata.clusterName** field is discarded and will be deleted in the next version. +- In Kubernetes 1.24 and later versions, the logic for kube-proxy to listen to NodePorts is removed. If NodePorts conflict with **kernel net.ipv4.ip_local_port_range**, TCP connections may fail occasionally, which leads to a health check failure or service exception. Before the upgrade, ensure that cluster NodePorts do not conflict with **net.ipv4.ip_local_port_range** of all nodes in the cluster. For more details, see `Kubernetes PR `__. + +.. _cce_bulletin_0058__en-us_topic_0000001596950457_section115291322132513: + +Enhanced Kubernetes 1.25 on CCE +------------------------------- + +During a version maintenance period, CCE periodically updates Kubernetes 1.25 and provides enhanced functions. + +For details about cluster version updates, see :ref:`Release Notes for CCE Cluster Versions `. + +.. _cce_bulletin_0058__en-us_topic_0000001596950457_en-us_topic_0000001389397618_en-us_topic_0000001430891141_en-us_topic_0000001072975092_en-us_topic_0261805759_en-us_topic_0261793154_section1272182810583: + +References +---------- + +For more details about the performance comparison and function evolution between Kubernetes 1.25 and other versions, see the following documents: + +- `Kubernetes 1.25 Release Notes `__ +- `Kubernetes 1.24 Release Notes `__ diff --git a/umn/source/clusters/cluster_overview/release_notes/cce_kubernetes_1.25_release_notes.rst b/umn/source/clusters/cluster_overview/release_notes/cce_kubernetes_1.25_release_notes.rst deleted file mode 100644 index 28b686b..0000000 --- a/umn/source/clusters/cluster_overview/release_notes/cce_kubernetes_1.25_release_notes.rst +++ /dev/null @@ -1,38 +0,0 @@ -:original_name: cce_10_0467.html - -.. _cce_10_0467: - -CCE Kubernetes 1.25 Release Notes -================================= - -CCE has passed the Certified Kubernetes Conformance Program and is a certified Kubernetes offering. This section describes the updates in CCE Kubernetes 1.25. - -Resource Changes and Deprecations ---------------------------------- - -**Kubernetes 1.25 Release Notes** - -- PodSecurityPolicy is replaced by Pod Security Admission. For details about the migration, see `Migrate from PodSecurityPolicy to the Built-In PodSecurity Admission Controller `__. -- SeccompDefault is in Beta. To enable this feature, you need to add the startup parameter **--seccomp-default=true** to kubelet. In this way, seccomp is set to **RuntimeDefault** by default, improving the system security. Clusters of v1.25 no longer use **seccomp.security.alpha.kubernetes.io/pod** and **container.seccomp.security.alpha.kubernetes.io/annotation** to use seccomp. Replace them with the **securityContext.seccompProfile** field in the pod or container. For details, see `Configure a Security Context for a Pod or Container `__. - - .. note:: - - After the feature is enabled, the system calls required by the application may be restricted by the runtime. Ensure that the debugging is performed in the test environment and the application is not affected. - -- EndPort in Network Policy is stable. This feature is incorporated in version 1.21. EndPort is added to NetworkPolicy for you to specify a port range. -- Since clusters of v1.25, Kubernetes does not support certificate authentication generated using the SHA1WithRSA or ECDSAWithSHA1 algorithm. You are advised to use the SHA256 algorithm. - -**Kubernetes 1.24 Release Notes** - -- Beta APIs are disabled by default. When some long-term beta APIs are removed from Kubernetes, 90% cluster administrators do not care about the beta APIs. Beta features are not recommended in the production environment. However, due to the default enabling policy, these APIs are enabled in the production environment, incurring risks. Therefore, in v1.24 and later versions, beta APIs are disabled by default except for the enabled beta APIs. -- The LegacyServiceAccountTokenNoAutoGeneration feature is in beta state. By default, this feature is enabled and no more secret token will be automatically generated for the service account. If you want to use a token that never expires, you need to create a secret and mount it. For details, see `Service account token secrets `__. -- **service.alpha.kubernetes.io/tolerate-unready-endpoints** is replaced by **Service.spec.publishNotReadyAddresses**. -- The **Service.Spec.LoadBalancerIP** tag is deprecated and may be removed in later versions. Use a customized annotation. - -References ----------- - -For more details about the performance comparison and function evolution between Kubernetes 1.25 and other versions, see the following documents: - -- `Kubernetes v1.25 Release Notes `__ -- `Kubernetes v1.24 Release Notes `__ diff --git a/umn/source/clusters/cluster_overview/release_notes/index.rst b/umn/source/clusters/cluster_overview/release_notes/index.rst deleted file mode 100644 index b1553ac..0000000 --- a/umn/source/clusters/cluster_overview/release_notes/index.rst +++ /dev/null @@ -1,22 +0,0 @@ -:original_name: cce_10_0068.html - -.. _cce_10_0068: - -Release Notes -============= - -- :ref:`CCE Kubernetes 1.25 Release Notes ` -- :ref:`CCE Kubernetes 1.23 Release Notes ` -- :ref:`CCE Kubernetes 1.21 Release Notes ` -- :ref:`CCE Kubernetes 1.19 Release Notes ` -- :ref:`CCE Kubernetes 1.17 Release Notes ` - -.. toctree:: - :maxdepth: 1 - :hidden: - - cce_kubernetes_1.25_release_notes - cce_kubernetes_1.23_release_notes - cce_kubernetes_1.21_release_notes - cce_kubernetes_1.19_release_notes - cce_kubernetes_1.17_release_notes diff --git a/umn/source/clusters/cluster_overview/cluster_patch_version_release_notes.rst b/umn/source/clusters/cluster_overview/release_notes_for_cce_cluster_versions.rst similarity index 54% rename from umn/source/clusters/cluster_overview/cluster_patch_version_release_notes.rst rename to umn/source/clusters/cluster_overview/release_notes_for_cce_cluster_versions.rst index 3004fb4..c193bbc 100644 --- a/umn/source/clusters/cluster_overview/cluster_patch_version_release_notes.rst +++ b/umn/source/clusters/cluster_overview/release_notes_for_cce_cluster_versions.rst @@ -2,81 +2,90 @@ .. _cce_10_0405: -Cluster Patch Version Release Notes -=================================== +Release Notes for CCE Cluster Versions +====================================== Version 1.25 ------------ -.. table:: **Table 1** Release notes of v1.25 patch +.. important:: - +---------------------------+------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------------+ - | CCE Cluster Patch Version | Kubernetes Version | Feature Updates | Optimization | Vulnerability Fixing | - +===========================+======================================================================================================+=========================================================================================================================================+===========================================================================================+=============================+ - | v1.25.3-r0 | `v1.25.5 `__ | None | Enhances the network stability when the specifications of CCE Turbo clusters are changed. | Fixed some security issues. | - +---------------------------+------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------------+ - | v1.25.1-r0 | `v1.25.5 `__ | The CCE v1.25 cluster is released for the first time. For more information, see :ref:`CCE Kubernetes 1.25 Release Notes `. | None | None | - +---------------------------+------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------------+ + All nodes in the CCE clusters of version 1.25, except the ones running EulerOS 2.5, use containerd by default. + +.. table:: **Table 1** Release notes for the v1.25 patch + + +---------------------------+------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------+-----------------------------+ + | CCE Cluster Patch Version | Kubernetes Version | Feature Updates | Optimization | Vulnerability Fixing | + +===========================+======================================================================================================+============================================================================================================================================+==========================================================================================+=============================+ + | v1.25.3-r0 | `v1.25.5 `__ | None | Enhanced network stability of CCE Turbo clusters when their specifications are modified. | Fixed some security issues. | + +---------------------------+------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------+-----------------------------+ + | v1.25.1-r0 | `v1.25.5 `__ | CCE clusters of v1.25 are released for the first time. For more information, see :ref:`Kubernetes 1.25 Release Notes `. | None | None | + +---------------------------+------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------+-----------------------------+ Version 1.23 ------------ -.. table:: **Table 2** Release notes of v1.23 patch +.. table:: **Table 2** Release notes for the v1.23 patch - +---------------------------+--------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------+-------------------------------------------------------------------------+ - | CCE Cluster Patch Version | Kubernetes Version | Feature Updates | Optimization | Vulnerability Fixing | - +===========================+========================================================================================================+=========================================================================================================================================+=============================================================================================+=========================================================================+ - | v1.23.8-r0 | `v1.23.11 `__ | None | - Enhances Docker reliability during the upgrade. | Fixed some security issues. | - | | | | - Optimizes the time synchronization of nodes. | | - +---------------------------+--------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------+-------------------------------------------------------------------------+ - | v1.23.5-r0 | `v1.23.11 `__ | - Supports device fault detection and isolation for GPU nodes. | - The ETCD version of the master node is upgraded to the Kubernetes version 3.5.6. | Fixed some security issues and the following CVE vulnerabilities: | - | | | - Supports custom security groups by cluster. | - Scheduling is optimized. Pods are evenly distributed across AZs when pods are scaled in. | | - | | | - The node-level, Trunkport ENIs can be pre-bound for CCE Turbo clusters. | - The memory usage of kube-apiserver is optimized when CRDs are frequently updated. | - `CVE-2022-3294 `__ | - | | | - containerd is supported. | | - `CVE-2022-3162 `__ | - | | | | | - `CVE-2022-3172 `__ | - | | | | | - `CVE-2021-25749 `__ | - +---------------------------+--------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------+-------------------------------------------------------------------------+ - | v1.23.1-r0 | `v1.23.4 `__ | The CCE v1.23 cluster is released for the first time. For more information, see :ref:`CCE Kubernetes 1.23 Release Notes `. | None | None | - +---------------------------+--------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------+-------------------------------------------------------------------------+ + +---------------------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------+ + | CCE Cluster Patch Version | Kubernetes Version | Feature Updates | Optimization | Vulnerability Fixing | + +===========================+========================================================================================================+============================================================================================================================================+=====================================================================================================+=========================================================================+ + | v1.23.8-r0 | `v1.23.11 `__ | None | - Enhanced Docker reliability during upgrades. | Fixed some security issues. | + | | | | - Optimized node time synchronization. | | + +---------------------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------+ + | v1.23.5-r0 | `v1.23.11 `__ | - Fault detection and isolation are supported on GPU nodes. | - The ETCD version of the master node has been upgraded to the Kubernetes version 3.5.6. | Fixed some security issues and the following CVE vulnerabilities: | + | | | - Security groups can be customized by cluster. | - Scheduling is optimized so that pods are evenly distributed across AZs after pods are scaled in. | | + | | | - CCE Turbo clusters support ENIs pre-binding by node. | - Optimized the memory usage of kube-apiserver when CRDs are frequently updated. | - `CVE-2022-3294 `__ | + | | | - containerd is supported. | | - `CVE-2022-3162 `__ | + | | | | | - `CVE-2022-3172 `__ | + | | | | | - `CVE-2021-25749 `__ | + +---------------------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------+ + | v1.23.1-r0 | `v1.23.4 `__ | CCE clusters of v1.23 are released for the first time. For more information, see :ref:`Kubernetes 1.23 Release Notes `. | None | None | + +---------------------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------+ Version 1.21 ------------ -.. table:: **Table 3** Release notes of v1.21 patch +.. table:: **Table 3** Release notes for the v1.21 patch - +---------------------------+----------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ - | CCE Cluster Patch Version | Kubernetes Version | Feature Updates | Optimization | Vulnerability Fixing | - +===========================+======================================================================================================================+=========================================================================================================================================+==================================================================================================+=======================================================================+ - | v1.21.10-r0 | `v1.21.14 `__ | None | - Enhances Docker reliability during the upgrade. | Fixed some security issues. | - | | | | - Optimizes the time synchronization of nodes. | | - | | | | - Optimizes the stability of pulling images when Docker is running after the node is restarted. | | - +---------------------------+----------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ - | v1.21.7-r0 | `v1.21.14 `__ | - Supports device fault detection and isolation for GPU nodes. | The stability of the ELB and ingress is optimized during massive connections. | Fixed some security issues and the following CVE vulnerabilities: | - | | | - Supports custom security groups by cluster. | | | - | | | | | - `CVE-2022-3294 `__ | - | | | | | - `CVE-2022-3162 `__ | - | | | | | - `CVE-2022-3172 `__ | - +---------------------------+----------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ - | v1.21.1-r0 | `v1.21.7 `__ | The CCE v1.21 cluster is released for the first time. For more information, see :ref:`CCE Kubernetes 1.21 Release Notes `. | None | None | - +---------------------------+----------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + +---------------------------+----------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + | CCE Cluster Patch Version | Kubernetes Version | Feature Updates | Optimization | Vulnerability Fixing | + +===========================+======================================================================================================================+============================================================================================================================================+===============================================================================================+=======================================================================+ + | v1.21.10-r0 | `v1.21.14 `__ | None | - Enhanced Docker reliability during upgrades. | Fixed some security issues. | + | | | | - Optimized node time synchronization. | | + | | | | - Enhanced the stability of the Docker runtime for pulling images after nodes are restarted. | | + +---------------------------+----------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + | v1.21.7-r0 | `v1.21.14 `__ | - Fault detection and isolation are supported on GPU nodes. | Improved the stability of LoadBalancer Services/ingresses with a large number of connections. | Fixed some security issues and the following CVE vulnerabilities: | + | | | - Security groups can be customized by cluster. | | | + | | | - CCE Turbo clusters support ENIs pre-binding by node. | | - `CVE-2022-3294 `__ | + | | | | | - `CVE-2022-3162 `__ | + | | | | | - `CVE-2022-3172 `__ | + +---------------------------+----------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + | v1.21.1-r0 | `v1.21.7 `__ | CCE clusters of v1.21 are released for the first time. For more information, see :ref:`Kubernetes 1.21 Release Notes `. | None | None | + +---------------------------+----------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ Version 1.19 ------------ -.. table:: **Table 4** Release notes of v1.19 patch +.. table:: **Table 4** Release notes of the v1.19 patch - +---------------------------+--------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ - | CCE Cluster Patch Version | Kubernetes Version | Feature Updates | Optimization | Vulnerability Fixing | - +===========================+========================================================================================================+=========================================================================================================================================+======================================================================================================+=======================================================================+ - | v1.19.16-r20 | `v1.19.16 `__ | None | - Cloud Native 2.0 Network supports the subnet specified by the namespace. | Fixed some security issues. | - | | | | - Optimizes the stability of pulling images when Docker is running after the node is restarted. | | - | | | | - Optimizes the ENI allocation performance of CCE Turbo clusters in non-full pre-binding scenarios. | | - +---------------------------+--------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ - | v1.19.16-r4 | `v1.19.16 `__ | - Supports device fault detection and isolation for GPU nodes. | - Scheduling is optimized in the node taint scenario. | Fixed some security issues and the following CVE vulnerabilities: | - | | | - Supports custom security groups by cluster. | - The stability of the ELB and ingress is optimized during massive connections. | | - | | | - The node-level, Trunkport ENIs can be pre-bound for CCE Turbo clusters. | - The memory usage of kube-apiserver is optimized when CRDs are frequently updated. | - `CVE-2022-3294 `__ | - | | | | | - `CVE-2022-3162 `__ | - | | | | | - `CVE-2022-3172 `__ | - +---------------------------+--------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ - | v1.19.10-r0 | `v1.19.10 `__ | The CCE v1.19 cluster is released for the first time. For more information, see :ref:`CCE Kubernetes 1.19 Release Notes `. | None | None | - +---------------------------+--------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + +---------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------+ + | CCE Cluster Patch Version | Kubernetes Version | Feature Updates | Optimization | Vulnerability Fixing | + +===========================+========================================================================================================+==========================================================================================================================================+======================================================================================================================+=========================================================================+ + | v1.19.16-r20 | `v1.19.16 `__ | None | - Cloud Native 2.0 Networks allow you to specify subnets for a namespace. | Fixed some security issues. | + | | | | - Enhanced the stability of the Docker runtime for pulling images after nodes are restarted. | | + | | | | - Optimized the performance of CCE Turbo clusters in allocating ENIs if not all ENIs are pre-bound. | | + +---------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------+ + | v1.19.16-r4 | `v1.19.16 `__ | - Fault detection and isolation are supported on GPU nodes. | - Scheduling is optimized on taint nodes. | Fixed some security issues and the following CVE vulnerabilities: | + | | | - Security groups can be customized by cluster. | - Enhanced the long-term running stability of containerd when cores are bound. | | + | | | - CCE Turbo clusters support ENIs pre-binding by node. | - Improved the stability of LoadBalancer Services/ingresses with a large number of connections. | - `CVE-2022-3294 `__ | + | | | | - Optimized the memory usage of kube-apiserver when CRDs are frequently updated. | - `CVE-2022-3162 `__ | + | | | | | - `CVE-2022-3172 `__ | + +---------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------+ + | v1.19.16-r0 | `v1.19.16 `__ | None | Enhanced the stability in updating LoadBalancer Services when workloads are upgraded and nodes are scaled in or out. | Fixed some security issues and the following CVE vulnerabilities: | + | | | | | | + | | | | | - `CVE-2021-25741 `__ | + | | | | | - `CVE-2021-25737 `__ | + +---------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------+ + | v1.19.10-r0 | `v1.19.10 `__ | CCE clusters of v1.19 are released for the first time. For more information, see :ref:`Kubernetes 1.19 Release Notes `. | None | None | + +---------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------+ diff --git a/umn/source/clusters/using_kubectl_to_run_a_cluster/customizing_a_cluster_certificate_san.rst b/umn/source/clusters/connecting_to_a_cluster/accessing_a_cluster_using_a_custom_domain_name.rst similarity index 89% rename from umn/source/clusters/using_kubectl_to_run_a_cluster/customizing_a_cluster_certificate_san.rst rename to umn/source/clusters/connecting_to_a_cluster/accessing_a_cluster_using_a_custom_domain_name.rst index f56d612..0b81ac5 100644 --- a/umn/source/clusters/using_kubectl_to_run_a_cluster/customizing_a_cluster_certificate_san.rst +++ b/umn/source/clusters/connecting_to_a_cluster/accessing_a_cluster_using_a_custom_domain_name.rst @@ -2,8 +2,8 @@ .. _cce_10_0367: -Customizing a Cluster Certificate SAN -===================================== +Accessing a Cluster Using a Custom Domain Name +============================================== Scenario -------- @@ -12,8 +12,14 @@ A **Subject Alternative Name (SAN)** can be signed in to a cluster server certif If the client cannot directly access the private IP or EIP of the cluster, you can sign the IP address or DNS domain name that can be directly accessed by the client into the cluster server certificate to enable two-way authentication on the client, which improves security. Typical use cases include DNAT access and domain name access. -Notes and Constraints ---------------------- +Typical domain name access scenarios: + +- Add the response domain name mapping when specifying the DNS domain name address in the host domain name configuration on the client, or configuring **/etc/hosts** on the client host. +- Use domain name access in the intranet. DNS allows you to configure mappings between cluster EIPs and custom domain names. After an EIP is updated, you can continue to use two-way authentication and the domain name to access the cluster without downloading the **kubeconfig.json** file again. +- Add A records on a self-built DNS server. + +Constraints +----------- This feature is available only to clusters of v1.19 and later. @@ -32,11 +38,4 @@ Customizing a SAN 3. If a custom domain name needs to be bound to an EIP, ensure that an EIP has been configured. -Typical Domain Name Access Scenarios ------------------------------------- - -- Add the response domain name mapping when specifying the DNS domain name address in the host domain name configuration on the client, or configuring **/etc/hosts** on the client host. -- Use domain name access in the intranet. DNS allows you to configure mappings between cluster EIPs and custom domain names. After an EIP is updated, you can continue to use two-way authentication and the domain name to access the cluster without downloading the **kubeconfig.json** file again. -- Add A records on a self-built DNS server. - -.. |image1| image:: /_static/images/en-us_image_0000001517743644.png +.. |image1| image:: /_static/images/en-us_image_0000001695737529.png diff --git a/umn/source/clusters/connecting_to_a_cluster/connecting_to_a_cluster_using_an_x.509_certificate.rst b/umn/source/clusters/connecting_to_a_cluster/connecting_to_a_cluster_using_an_x.509_certificate.rst new file mode 100644 index 0000000..47a5648 --- /dev/null +++ b/umn/source/clusters/connecting_to_a_cluster/connecting_to_a_cluster_using_an_x.509_certificate.rst @@ -0,0 +1,41 @@ +:original_name: cce_10_0175.html + +.. _cce_10_0175: + +Connecting to a Cluster Using an X.509 Certificate +================================================== + +Scenario +-------- + +This section describes how to obtain the cluster certificate from the console and use it access Kubernetes clusters. + +Procedure +--------- + +#. Log in to the CCE console and click the cluster name to access the cluster console. + +#. Choose **Cluster Information** from the navigation pane and click **Download** next to **Authentication Mode** in the **Connection Information** area. + +#. In the **Download X.509 Certificate** dialog box displayed, select the certificate expiration time and download the X.509 certificate of the cluster as prompted. + + + .. figure:: /_static/images/en-us_image_0000001647417220.png + :alt: **Figure 1** Downloading a certificate + + **Figure 1** Downloading a certificate + + .. important:: + + - The downloaded certificate contains three files: **client.key**, **client.crt**, and **ca.crt**. Keep these files secure. + - Certificates are not required for mutual access between containers in a cluster. + +#. Call native Kubernetes APIs using the cluster certificate. + + For example, run the **curl** command to call an API to view the pod information. In the following information,\ *192.168.***.***:5443* indicates the IP address of the API server in the cluster. + + .. code-block:: + + curl --cacert ./ca.crt --cert ./client.crt --key ./client.key https://192.168.***.***:5443/api/v1/namespaces/default/pods/ + + For more cluster APIs, see `Kubernetes APIs `__. diff --git a/umn/source/clusters/using_kubectl_to_run_a_cluster/connecting_to_a_cluster_using_kubectl.rst b/umn/source/clusters/connecting_to_a_cluster/connecting_to_a_cluster_using_kubectl.rst similarity index 84% rename from umn/source/clusters/using_kubectl_to_run_a_cluster/connecting_to_a_cluster_using_kubectl.rst rename to umn/source/clusters/connecting_to_a_cluster/connecting_to_a_cluster_using_kubectl.rst index 5adbb7b..f3e940a 100644 --- a/umn/source/clusters/using_kubectl_to_run_a_cluster/connecting_to_a_cluster_using_kubectl.rst +++ b/umn/source/clusters/connecting_to_a_cluster/connecting_to_a_cluster_using_kubectl.rst @@ -10,10 +10,10 @@ Scenario This section uses a CCE cluster as an example to describe how to connect to a CCE cluster using kubectl. -Permission Description ----------------------- +Permissions +----------- -When you access a cluster using kubectl, CCE uses the **kubeconfig.json** file generated on the cluster for authentication. This file contains user information, based on which CCE determines which Kubernetes resources can be accessed by kubectl. The permissions recorded in a **kubeconfig.json** file vary from user to user. +When you access a cluster using kubectl, CCE uses **kubeconfig.json** generated on the cluster for authentication. This file contains user information, based on which CCE determines which Kubernetes resources can be accessed by kubectl. The permissions recorded in a **kubeconfig.json** file vary from user to user. For details about user permissions, see :ref:`Cluster Permissions (IAM-based) and Namespace Permissions (Kubernetes RBAC-based) `. @@ -24,10 +24,10 @@ Using kubectl To connect to a Kubernetes cluster from a PC, you can use kubectl, a Kubernetes command line tool. You can log in to the CCE console, click the name of the cluster to be connected, and view the access address and kubectl connection procedure on the cluster details page. -CCE allows you to access a cluster through a **VPC network** or a **public network**. +CCE allows you to access a cluster through a private network or a public network. -- **Intra-VPC access**: The client that accesses the cluster must be in the same VPC as the cluster. -- **Public access**:The client that accesses the cluster must be able to access public networks and the cluster has been bound with a public network IP. +- Intranet access: The client that accesses the cluster must be in the same VPC as the cluster. +- Public access: The client that accesses the cluster must be able to access public networks and the cluster has been bound with a public network IP. .. important:: @@ -35,7 +35,7 @@ CCE allows you to access a cluster through a **VPC network** or a **public netwo Download kubectl and the configuration file. Copy the file to your client, and configure kubectl. After the configuration is complete, you can access your Kubernetes clusters. Procedure: -#. Download kubectl. +#. **Download kubectl.** Prepare a computer that can access the public network and install kubectl in CLI mode. You can run the **kubectl version** command to check whether kubectl has been installed. If kubectl has been installed, skip this step. @@ -59,14 +59,14 @@ Download kubectl and the configuration file. Copy the file to your client, and c #. .. _cce_10_0107__li34691156151712: - Obtain the kubectl configuration file (kubeconfig). + **Obtain the kubectl configuration file (kubeconfig).** - On the **Connection Information** pane on the cluster details page, click **Configure** next to **kubectl**. On the window displayed, download the configuration file. + In the **Connection Information** pane on the cluster details page, click **Configure** next to **kubectl**. On the window displayed, download the configuration file. .. note:: - The kubectl configuration file **kubeconfig.json** is used for cluster authentication. If the file is leaked, your clusters may be attacked. - - By default, two-way authentication is disabled for domain names in the current cluster. You can run the **kubectl config use-context externalTLSVerify** command to enable two-way authentication. For details, see :ref:`Two-Way Authentication for Domain Names `. For a cluster that has been bound to an EIP, if the authentication fails (x509: certificate is valid) when two-way authentication is used, you need to bind the EIP again and download **kubeconfig.json** again. + - By default, two-way authentication is disabled for domain names in the current cluster. You can run the **kubectl config use-context externalTLSVerify** command to enable two-way authentication. For details, see :ref:`Two-Way Authentication for Domain Names `. For a cluster that has been bound to an EIP, if the authentication fails (x509: certificate is valid) when two-way authentication is used, bind the EIP again and download **kubeconfig.json** again. - The Kubernetes permissions assigned by the configuration file downloaded by IAM users are the same as those assigned to the IAM users on the CCE console. - If the KUBECONFIG environment variable is configured in the Linux OS, kubectl preferentially loads the KUBECONFIG environment variable instead of **$home/.kube/config**. @@ -113,7 +113,7 @@ Download kubectl and the configuration file. Copy the file to your client, and c Two-Way Authentication for Domain Names --------------------------------------- -Currently, CCE supports two-way authentication for domain names. +CCE supports two-way authentication for domain names. - Two-way authentication is disabled for domain names by default. You can run the **kubectl config use-context externalTLSVerify** command to switch to the externalTLSVerify context to enable it. @@ -121,13 +121,13 @@ Currently, CCE supports two-way authentication for domain names. - Asynchronous cluster synchronization takes about 5 to 10 minutes. You can view the synchronization result in **Synchronize Certificate** in **Operation Records**. -- For a cluster that has been bound to an EIP, if the authentication fails (x509: certificate is valid) when two-way authentication is used, you need to bind the EIP again and download **kubeconfig.json** again. +- For a cluster that has been bound to an EIP, if the authentication fails (x509: certificate is valid) when two-way authentication is used, bind the EIP again and download **kubeconfig.json** again. - If the domain name two-way authentication is not supported, **kubeconfig.json** contains the **"insecure-skip-tls-verify": true** field, as shown in :ref:`Figure 1 `. To use two-way authentication, you can download the **kubeconfig.json** file again and enable two-way authentication for the domain names. .. _cce_10_0107__fig1941342411: - .. figure:: /_static/images/en-us_image_0000001568822965.png + .. figure:: /_static/images/en-us_image_0000001726718109.png :alt: **Figure 1** Two-way authentication disabled for domain names **Figure 1** Two-way authentication disabled for domain names diff --git a/umn/source/clusters/connecting_to_a_cluster/index.rst b/umn/source/clusters/connecting_to_a_cluster/index.rst new file mode 100644 index 0000000..62a38e4 --- /dev/null +++ b/umn/source/clusters/connecting_to_a_cluster/index.rst @@ -0,0 +1,18 @@ +:original_name: cce_10_0140.html + +.. _cce_10_0140: + +Connecting to a Cluster +======================= + +- :ref:`Connecting to a Cluster Using kubectl ` +- :ref:`Connecting to a Cluster Using an X.509 Certificate ` +- :ref:`Accessing a Cluster Using a Custom Domain Name ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + connecting_to_a_cluster_using_kubectl + connecting_to_a_cluster_using_an_x.509_certificate + accessing_a_cluster_using_a_custom_domain_name diff --git a/umn/source/clusters/creating_a_cce_cluster.rst b/umn/source/clusters/creating_a_cce_cluster.rst deleted file mode 100644 index 5a27e29..0000000 --- a/umn/source/clusters/creating_a_cce_cluster.rst +++ /dev/null @@ -1,105 +0,0 @@ -:original_name: cce_10_0028.html - -.. _cce_10_0028: - -Creating a CCE Cluster -====================== - -On the CCE console, you can easily create Kubernetes clusters. Kubernetes can manage container clusters at scale. A cluster manages a group of node resources. - -In CCE, you can create a CCE cluster to manage VMs. By using high-performance network models, hybrid clusters provide a multi-scenario, secure, and stable runtime environment for containers. - -Constraints ------------ - -- During the node creation, software packages are downloaded from OBS using the domain name. You need to use a private DNS server to resolve the OBS domain name, and configure the DNS server address of the subnet where the node resides with a private DNS server address. When you create a subnet, the private DNS server is used by default. If you change the subnet DNS, ensure that the DNS server in use can resolve the OBS domain name. -- You can create a maximum of 50 clusters in a single region. -- After a cluster is created, the following items cannot be changed: - - - Cluster type - - Number of master nodes in the cluster - - AZ of a master node - - Network configuration of the cluster, such as the VPC, subnet, container CIDR block, Service CIDR block, and kube-proxy (forwarding) settings - - Network model. For example, change **Tunnel network** to **VPC network**. - -Procedure ---------- - -#. Log in to the CCE console. Choose **Clusters**. On the displayed page, click **Create** next to **CCE cluster**. - -#. Set cluster parameters. - - **Basic Settings** - - - **Cluster Name** - - - **Cluster Version**: Select the Kubernetes version used by the cluster. - - - **Cluster Scale**: maximum number of nodes that can be managed by the cluster. - - - **HA**: distribution mode of master nodes. By default, master nodes are randomly distributed in different AZs to improve DR capabilities. - - You can also expand advanced settings and customize the master node distribution mode. The following two modes are supported: - - - **Random**: Master nodes are created in different AZs for DR. - - **Custom**: You can determine the location of each master node. - - - **Host**: Master nodes are created on different hosts in the same AZ. - - **Custom**: You can determine the location of each master node. - - **Network Settings** - - The cluster network settings cover nodes, containers, and Services. For details about the cluster networking and container network models, see :ref:`Overview `. - - - **Network Model**: CCE clusters support **VPC network** and **tunnel network** models. For details, see :ref:`VPC Network ` and :ref:`Container Tunnel Network `. - - **VPC**: Select the VPC to which the cluster belongs. If no VPC is available, click **Create VPC** to create one. The VPC cannot be changed after creation. - - **Master Node Subnet**: Select the subnet where the master node is deployed. If no subnet is available, click **Create Subnet** to create one. The subnet cannot be changed after creation. - - **Container CIDR Block**: Set the CIDR block used by containers. - - **Service CIDR Block**: CIDR block for Services used by containers in the same cluster to access each other. The value determines the maximum number of Services you can create. The value cannot be changed after creation. - - **Advanced Settings** - - - **Request Forwarding**: The IPVS and iptables modes are supported. For details, see :ref:`Comparing iptables and IPVS `. - - **CPU Manager**: For details, see :ref:`Binding CPU Cores `. - - **Certificate Authentication**: - - - **Default**: The X509-based authentication mode is enabled by default. X509 is a commonly used certificate format. - - - **Custom:** The cluster can identify users based on the header in the request body for authentication. - - You need to upload your **CA root certificate**, **client certificate**, and **private key** of the client certificate. - - .. caution:: - - - Upload a file **smaller than 1 MiB**. The CA certificate and client certificate can be in **.crt** or **.cer** format. The private key of the client certificate can only be uploaded **unencrypted**. - - The validity period of the client certificate must be longer than five years. - - The uploaded CA certificate is used for both the authentication proxy and the kube-apiserver aggregation layer configuration. **If the certificate is invalid, the cluster cannot be created**. - - Starting from v1.25, Kubernetes no longer supports certificate authentication generated using the SHA1WithRSA or ECDSAWithSHA1 algorithm. You are advised to use the SHA256 algorithm. - - - **Description**: The value can contain a maximum of 200 English characters. - -#. Click **Next: Add-on Configuration**. - - **Domain Name Resolution**: Uses the :ref:`coredns ` add-on, installed by default, to resolve domain names and connect to the cloud DNS server. - - **Container Storage**: Uses the :ref:`everest ` add-on, installed by default, to provide container storage based on CSI and connect to cloud storage services such as EVS. - - **Service logs** - - - Using ICAgent: - - A log collector provided by Application Operations Management (AOM), reporting logs to AOM and Log Tank Service (LTS) according to the log collection rules you configured. - - You can collect stdout logs as required. - - **Overload Control**: If overload control is enabled, concurrent requests are dynamically controlled based on the resource pressure of master nodes to keep them and the cluster available. - -#. After setting the parameters, click **Next: Confirm**. After confirming that the cluster configuration information is correct, select **I have read and understand the preceding instructions** and click **Submit**. - - It takes about 6 to 10 minutes to create a cluster. You can click **Back to Cluster List** to perform other operations on the cluster or click **Go to Cluster Events** to view the cluster details. - -Related Operations ------------------- - -- Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. -- Add nodes to the cluster. For details, see :ref:`Creating a Node `. diff --git a/umn/source/clusters/creating_a_cce_turbo_cluster.rst b/umn/source/clusters/creating_a_cce_turbo_cluster.rst deleted file mode 100644 index 49279dc..0000000 --- a/umn/source/clusters/creating_a_cce_turbo_cluster.rst +++ /dev/null @@ -1,111 +0,0 @@ -:original_name: cce_10_0298.html - -.. _cce_10_0298: - -Creating a CCE Turbo Cluster -============================ - -CCE Turbo clusters run on a cloud native infrastructure that features software-hardware synergy to support passthrough networking, high security and reliability, and intelligent scheduling. - -CCE Turbo clusters are paired with the Cloud Native Network 2.0 model for large-scale, high-performance container deployment. Containers are assigned IP addresses from the VPC CIDR block. Containers and nodes can belong to different subnets. Access requests from external networks in a VPC can be directly routed to container IP addresses, which greatly improves networking performance. **It is recommended** that you go through :ref:`Cloud Native Network 2.0 ` to understand the features and network planning of each CIDR block of Cloud Native Network 2.0. - -Notes and Constraints ---------------------- - -- During the node creation, software packages are downloaded from OBS using the domain name. You need to use a private DNS server to resolve the OBS domain name, and configure the DNS server address of the subnet where the node resides with a private DNS server address. When you create a subnet, the private DNS server is used by default. If you change the subnet DNS, ensure that the DNS server in use can resolve the OBS domain name. -- You can create a maximum of 50 clusters in a single region. -- CCE Turbo clusters support only Cloud Native Network 2.0. For details about this network model, see :ref:`Cloud Native Network 2.0 `. -- After a cluster is created, the following items cannot be changed: - - - Cluster type - - Number of master nodes in the cluster - - AZ of a master node - - Network configuration of the cluster, such as the VPC, subnet, container CIDR block, Service CIDR block, and kube-proxy (forwarding) settings. - - Network model. For example, change **Tunnel network** to **VPC network**. - -Procedure ---------- - -#. Log in to the CCE console. Choose **Clusters**. On the displayed page, click **Create** next to **CCE Turbo cluster**. - -#. Specify cluster parameters. - - **Basic Settings** - - - **Cluster Name** - - - **Cluster Version**: Select the Kubernetes version used by the cluster. - - - **Cluster Scale**: Select the maximum number of nodes that can be managed by the cluster. After the creation is complete, only scale-out is supported, but not scale-in. - - - **HA**: distribution mode of master nodes. By default, master nodes are randomly distributed in different AZs to improve DR capabilities. - - You can also expand advanced settings and customize the master node distribution mode. The following modes are supported: - - - **Host**: Master nodes are created on different hosts in the same AZ. - - **Custom**: You can determine the location of each master node. - - **Network Settings** - - The cluster network settings cover nodes, containers, and Services. For details about the cluster networking and container network models, see :ref:`Overview `. - - - **Network Model**: CCE Turbo clusters support only **Cloud Native Network 2.0**. For details, see :ref:`Cloud Native Network 2.0 `. - - **VPC**: Select the VPC to which the cluster belongs. If no VPC is available, click **Create VPC** to create one. The value cannot be changed after creation. - - **Master Node Subnet**: Select the subnet where the master node is deployed. If no subnet is available, click **Create Subnet** to create one. A master node requires at least four IP addresses, which cannot be changed after creation. - - **Pod Subnet**: Select the subnet where the container is located. If no subnet is available, click **Create Subnet** to create one. The pod subnet determines the maximum number of containers in the cluster. You can add pod subnets after creating the cluster. - - **Service CIDR Block**: CIDR block for :ref:`Services ` used by containers in the same cluster to access each other. The value determines the maximum number of Services you can create. The value cannot be changed after creation. - - **Advanced Settings** - - - **Request Forwarding**: The IPVS and iptables modes are supported. For details, see :ref:`Comparing iptables and IPVS `. - - - **CPU Manager**: For details, see :ref:`Binding CPU Cores `. - - - **Resource Tag**: - - You can add resource tags to classify resources. - - You can create **predefined tags** in Tag Management Service (TMS). Predefined tags are visible to all service resources that support the tagging function. You can use predefined tags to improve tag creation and resource migration efficiency. - - - **Certificate Authentication**: - - - **Default**: The X509-based authentication mode is enabled by default. X509 is a commonly used certificate format. - - - **Custom:** The cluster can identify users based on the header in the request body for authentication. - - You need to upload your **CA root certificate**, **client certificate**, and **private key** of the client certificate. - - .. caution:: - - - Upload a file **smaller than 1 MB**. The CA certificate and client certificate can be in **.crt** or **.cer** format. The private key of the client certificate can only be uploaded **unencrypted**. - - The validity period of the client certificate must be longer than five years. - - The uploaded CA certificate is used for both the authentication proxy and the kube-apiserver aggregation layer configuration. **If the certificate is invalid, the cluster cannot be created**. - - Starting from v1.25, Kubernetes no longer supports certificate authentication generated using the SHA1WithRSA or ECDSAWithSHA1 algorithm. You are advised to use the SHA256 algorithm. - - - **Description**: The value can contain a maximum of 200 English characters. - -#. Click **Next: Add-on Configuration**. - - **Domain Name Resolution**: Uses the :ref:`coredns ` add-on, installed by default, to resolve domain names and connect to the cloud DNS server. - - **Container Storage**: The :ref:`everest ` add-on is installed by default to provide container storage based on CSI and connect to cloud storage services such as EVS. - - **Service log** - - - **ICAgent**: - - A log collector provided by Application Operations Management (AOM), reporting logs to AOM and Log Tank Service (LTS) according to the log collection rules you configured. - - You can collect stdout logs as required. - - **Overload Control**: If overload control is enabled, concurrent requests are dynamically controlled based on the resource pressure of master nodes to keep them and the cluster available. - -#. After configuring the parameters, click **Next: Confirm**. - - It takes about 6 to 10 minutes to create a cluster. You can click **Back to Cluster List** to perform other operations on the cluster or click **Go to Cluster Events** to view the cluster details. - -Related Operations ------------------- - -- Using kubectl to connect to the cluster: :ref:`Connecting to a Cluster Using kubectl ` -- Add nodes to the cluster. For details, see :ref:`Creating a Node `. diff --git a/umn/source/clusters/cluster_overview/cce_turbo_clusters_and_cce_clusters.rst b/umn/source/clusters/creating_a_cluster/cce_turbo_clusters_and_cce_clusters.rst similarity index 72% rename from umn/source/clusters/cluster_overview/cce_turbo_clusters_and_cce_clusters.rst rename to umn/source/clusters/creating_a_cluster/cce_turbo_clusters_and_cce_clusters.rst index 2a5b2e4..b3e3108 100644 --- a/umn/source/clusters/cluster_overview/cce_turbo_clusters_and_cce_clusters.rst +++ b/umn/source/clusters/creating_a_cluster/cce_turbo_clusters_and_cce_clusters.rst @@ -8,35 +8,35 @@ CCE Turbo Clusters and CCE Clusters Comparison Between CCE Turbo Clusters and CCE Clusters ------------------------------------------------------ -The following table lists the differences between CCE Turbo clusters and CCE clusters: +The following table lists the differences between CCE Turbo clusters and CCE clusters. .. table:: **Table 1** Cluster types - +-----------------+-----------------------------+--------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ - | Dimension | Sub-dimension | CCE Turbo cluster | CCE cluster | - +=================+=============================+================================================================================================================================+================================================================================================+ - | Cluster | Positioning | Next-gen container cluster, with accelerated computing, networking, and scheduling. Designed for Cloud Native 2.0 | Standard cluster for common commercial use | - +-----------------+-----------------------------+--------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ - | | Node type | Deployment of VMs | Hybrid deployment of VMs and bare metal servers | - +-----------------+-----------------------------+--------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ - | Network | Model | **Cloud Native Network 2.0**: applies to large-scale and high-performance scenarios. | **Cloud-native network 1.0**: applies to common, smaller-scale scenarios. | - | | | | | - | | | Max networking scale: 2,000 nodes | - Container tunnel network model | - | | | | - VPC network model | - +-----------------+-----------------------------+--------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ - | | Network performance | Flattens the VPC network and container network into one. No performance loss. | Overlays the VPC network with the container network, causing certain performance loss. | - +-----------------+-----------------------------+--------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ - | | Container network isolation | Associates pods with security groups. Unifies security isolation in and out the cluster via security groups' network policies. | - Container tunnel network model: supports network policies for intra-cluster communications. | - | | | | - VPC network model: supports no isolation. | - +-----------------+-----------------------------+--------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ - | Security | Isolation | - VM: runs common containers, isolated by cgroups. | Common containers are deployed and isolated by cgroups. | - +-----------------+-----------------------------+--------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ + +-----------------+-----------------------------+--------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------+ + | Category | Subcategory | CCE Turbo Cluster | CCE Cluster | + +=================+=============================+================================================================================================================================+========================================================================================+ + | Cluster | Positioning | Next-gen container cluster designed for Cloud Native 2.0, with accelerated computing, networking, and scheduling | Standard cluster for common commercial use | + +-----------------+-----------------------------+--------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------+ + | | Node type | Deployment of VMs | Hybrid deployment of VMs and bare-metal servers | + +-----------------+-----------------------------+--------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------+ + | Networking | Model | **Cloud Native Network 2.0**: applies to large-scale and high-performance scenarios. | **Cloud Native Network 1.0**: applies to common, smaller-scale scenarios. | + | | | | | + | | | Max networking scale: 2,000 nodes | - Tunnel network model | + | | | | - VPC network model | + +-----------------+-----------------------------+--------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------+ + | | Performance | Flattens the VPC network and container network into one, achieving zero performance loss. | Overlays the VPC network with the container network, causing certain performance loss. | + +-----------------+-----------------------------+--------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------+ + | | Container network isolation | Associates pods with security groups. Unifies security isolation in and out the cluster via security groups' network policies. | - Tunnel network model: supports network policies for intra-cluster communications. | + | | | | - VPC network model: supports no isolation. | + +-----------------+-----------------------------+--------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------+ + | Security | Isolation | - VM: runs common containers, isolated by cgroups. | Runs common containers, isolated by cgroups. | + +-----------------+-----------------------------+--------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------+ QingTian Architecture --------------------- |image1| -The QingTian architecture consists of data plane (software-hardware synergy) and management plane (Alkaid Smart Cloud Brain). The data plane innovates in five dimensions: simplified data center, diversified computing power, QingTian cards, ultra-fast engines, and simplified virtualization, to fully offload and accelerate compute, storage, networking, and security components. VMs, bare metal servers, and containers can run together. As a distributed operating system, the Alkaid Smart Cloud Brain focuses on the cloud, AI, and 5G, and provide all-domain scheduling to achieve cloud-edge-device collaboration and governance. +The QingTian architecture consists of data plane (software-hardware synergy) and management plane (Alkaid Smart Cloud Brain). The data plane innovates in five dimensions: simplified data center, diversified computing power, QingTian cards, ultra-fast engines, and simplified virtualization, to fully offload and accelerate compute, storage, networking, and security components. VMs, bare-metal servers, and containers can run together. As a distributed operating system, the Alkaid Smart Cloud Brain focuses on the cloud, AI, and 5G, and provides all-domain scheduling to achieve cloud-edge-device collaboration and governance. -.. |image1| image:: /_static/images/en-us_image_0000001517743452.png +.. |image1| image:: /_static/images/en-us_image_0000001647576704.png diff --git a/umn/source/clusters/creating_a_cluster/comparing_iptables_and_ipvs.rst b/umn/source/clusters/creating_a_cluster/comparing_iptables_and_ipvs.rst new file mode 100644 index 0000000..26a0083 --- /dev/null +++ b/umn/source/clusters/creating_a_cluster/comparing_iptables_and_ipvs.rst @@ -0,0 +1,43 @@ +:original_name: cce_10_0349.html + +.. _cce_10_0349: + +Comparing iptables and IPVS +=========================== + +kube-proxy is a key component of a Kubernetes cluster. It is used for load balancing and forwarding data between a Service and its backend pods. + +CCE supports the iptables and IPVS forwarding modes. + +- IPVS allows higher throughput and faster forwarding. This mode applies to scenarios where the cluster scale is large or the number of Services is large. +- iptables is the traditional kube-proxy mode. This mode applies to the scenario where the number of Services is small or there are a large number of short concurrent connections on the client. When there are more than 1,000 Services in the cluster, network delay may occur. + +Constraints +----------- + +- In a cluster using the IPVS proxy mode, if the ingress and Service use the same ELB load balancer, the ingress cannot be accessed from the nodes and containers in the cluster because kube-proxy mounts the LoadBalancer Service address to the ipvs-0 bridge. This bridge intercepts the traffic of the load balancer connected to the ingress. You are advised to use different ELB load balancers for the ingress and Service. +- In iptables mode, the ClusterIP cannot be pinged. In IPVS mode, the ClusterIP can be pinged. + +iptables +-------- + +iptables is a Linux kernel function for processing and filtering a large number of data packets. It allows flexible sequences of rules to be attached to various hooks in the packet processing pipeline. When iptables is used, kube-proxy implements NAT and load balancing in the NAT pre-routing hook. + +kube-proxy is an O(n) algorithm, in which *n* increases with the cluster scale. The cluster scale refers to the number of Services and backend pods. + +IPVS +---- + +IP Virtual Server (IPVS) is constructed on top of Netfilter and balances transport-layer loads as part of the Linux kernel. IPVS can direct requests for TCP- or UDP-based services to the real servers, and make services of the real servers appear as virtual services on a single IP address. + +In the IPVS mode, kube-proxy uses IPVS load balancing instead of iptables. IPVS is designed to balance loads for a large number of Services. It has a set of optimized APIs and uses optimized search algorithms instead of simply searching for rules from a list. + +The complexity of the connection process of IPVS-based kube-proxy is O(1). In most cases, the connection processing efficiency is irrelevant to the cluster scale. + +IPVS involves multiple load balancing algorithms, such as round-robin, shortest expected delay, least connections, and various hashing methods. However, iptables has only one algorithm for random selection. + +Compared with iptables, IPVS has the following advantages: + +#. Provides better scalability and performance for large clusters. +#. Supports better load balancing algorithms than iptables. +#. Supports functions including server health check and connection retries. diff --git a/umn/source/clusters/creating_a_cluster/creating_a_cluster.rst b/umn/source/clusters/creating_a_cluster/creating_a_cluster.rst new file mode 100644 index 0000000..4440dba --- /dev/null +++ b/umn/source/clusters/creating_a_cluster/creating_a_cluster.rst @@ -0,0 +1,118 @@ +:original_name: cce_10_0028.html + +.. _cce_10_0028: + +Creating a Cluster +================== + +On the CCE console, you can easily create Kubernetes clusters. After a cluster is created, the master node is hosted by CCE. You only need to create worker nodes. In this way, you can implement cost-effective O&M and efficient service deployment. + +Constraints +----------- + +- During the node creation, software packages are downloaded from OBS using the domain name. Use a private DNS server to resolve the OBS domain name, and configure the DNS server address of the subnet where the node resides with a private DNS server address. When you create a subnet, the private DNS server is used by default. If you change the subnet DNS, ensure that the DNS server in use can resolve the OBS domain name. +- You can create a maximum of 50 clusters in a single region. +- After a cluster is created, the following items cannot be changed: + + - Cluster type + - Number of master nodes in the cluster + - AZ of a master node + - Network configuration of the cluster, such as the VPC, subnet, container CIDR block, Service CIDR block, and kube-proxy (:ref:`request forwarding `) settings. + - Network model. For example, change **Tunnel network** to **VPC network**. + +Procedure +--------- + +#. Log in to the CCE console. + +#. Choose **Clusters**. On the displayed page, select the type of the cluster to be created and click **Create**. + +#. Specify cluster parameters. + + **Basic Settings** + + - **Cluster Name**: indicates the name of the cluster to be created. The cluster name must be unique under the same account. + + - **Cluster Version**: Select the Kubernetes version used by the cluster. + + - **Cluster Scale**: maximum number of nodes that can be managed by the cluster. + + - HA: distribution mode of master nodes. By default, master nodes are randomly distributed in different AZs to improve DR capabilities. + + You can also expand advanced settings and customize the master node distribution mode. The following two modes are supported: + + - **Random**: Master nodes are created in different AZs for DR. + - **Custom**: You can determine the location of each master node. + + - **Host**: Master nodes are created on different hosts in the same AZ. + - **Custom**: You can determine the location of each master node. + + **Network Settings** + + The cluster network settings cover nodes, containers, and Services. For details about the cluster networking and container network models, see :ref:`Overview `. + + - Network Model: CCE clusters support **VPC network** and **Tunnel network**. CCE Turbo clusters support **Cloud Native Network 2.0.**. For details, see :ref:`Overview `. + - **VPC**: Select the VPC to which the cluster belongs. If no VPC is available, click **Create VPC** to create one. The value cannot be changed after creation. + - **Master Node Subnet**: Select the subnet where the master node is deployed. If no subnet is available, click **Create Subnet** to create one. The subnet cannot be changed after creation. + - **Container CIDR Block** (CCE Cluster): Specify the CIDR block used by containers, which determines the maximum number of containers in the cluster. + - **Default Pod Subnet** (CCE Turbo Cluster): Select the subnet where the container is located. If no subnet is available, click **Create Subnet**. The pod subnet determines the maximum number of containers in the cluster. You can add pod subnets after creating the cluster. + - **Service CIDR Block**: CIDR block for Services used by containers in the same cluster to access each other. The value determines the maximum number of Services you can create. The value cannot be changed after creation. + + **Advanced Settings** + + - .. _cce_10_0028__li1895772174715: + + **Request Forwarding**: The IPVS and iptables modes are supported. For details, see :ref:`Comparing iptables and IPVS `. + + - **CPU Manager**: When enabled, CPU cores will be exclusively allocated to workload pods. For details, see :ref:`CPU Policy `. + + - Resource Tag: + + You can add resource tags to classify resources. + + - **Certificate Authentication**: + + - **Default**: The X509-based authentication mode is enabled by default. X509 is a commonly used certificate format. + + - **Custom:** The cluster can identify users based on the header in the request body for authentication. + + Upload your **CA root certificate**, **client certificate**, and **private key** of the client certificate. + + .. caution:: + + - Upload a file **smaller than 1 MiB**. The CA certificate and client certificate can be in **.crt** or **.cer** format. The private key of the client certificate can only be uploaded **unencrypted**. + - The validity period of the client certificate must be longer than five years. + - The uploaded CA certificate is used for both the authentication proxy and the kube-apiserver aggregation layer configuration. **If the certificate is invalid, the cluster cannot be created**. + - Starting from v1.25, Kubernetes no longer supports certificate authentication generated using the SHA1WithRSA or ECDSAWithSHA1 algorithm. You are advised to use the SHA256 algorithm. + + - **Description**: The description cannot exceed 200 characters. + +#. Click **Next: Add-on Configuration**. + + **Domain Name Resolution**: + + - **Domain Name Resolution**: The :ref:`coredns ` add-on is installed by default to resolve domain names and connect to the cloud DNS server. + + **Container Storage**: The :ref:`everest ` add-on is installed by default to provide container storage based on CSI and connect to cloud storage services such as EVS. + + **Fault Detection**: The :ref:`npd ` add-on is installed by default to provide node fault detection and isolation for the cluster, helping you identify node problems in a timely manner. + + **Data Plane Logs** + + - Using ICAgent: + + A log collector provided by Application Operations Management (AOM), reporting logs to AOM and Log Tank Service (LTS) according to the log collection rules you configured. + + You can collect stdout logs as required. + + **Overload Control**: If enabled, concurrent requests are dynamically controlled based on the resource pressure of master nodes to keep them and the cluster available. For details, see :ref:`Cluster Overload Control `. + +#. After the parameters are specified, click **Next: Confirm**. The cluster resource list is displayed. Confirm the information and click **Submit**. + + It takes about 6 to 10 minutes to create a cluster. You can click **Back to Cluster List** to perform other operations on the cluster or click **Go to Cluster Events** to view the cluster details. + +Related Operations +------------------ + +- After creating a cluster, you can use the Kubernetes command line (CLI) tool kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. +- Add nodes to the cluster. For details, see :ref:`Creating a Node `. diff --git a/umn/source/clusters/creating_a_cluster/index.rst b/umn/source/clusters/creating_a_cluster/index.rst new file mode 100644 index 0000000..a2ee791 --- /dev/null +++ b/umn/source/clusters/creating_a_cluster/index.rst @@ -0,0 +1,18 @@ +:original_name: cce_10_0298.html + +.. _cce_10_0298: + +Creating a Cluster +================== + +- :ref:`CCE Turbo Clusters and CCE Clusters ` +- :ref:`Creating a Cluster ` +- :ref:`Comparing iptables and IPVS ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + cce_turbo_clusters_and_cce_clusters + creating_a_cluster + comparing_iptables_and_ipvs diff --git a/umn/source/clusters/index.rst b/umn/source/clusters/index.rst index cf95826..5dc0afe 100644 --- a/umn/source/clusters/index.rst +++ b/umn/source/clusters/index.rst @@ -6,23 +6,17 @@ Clusters ======== - :ref:`Cluster Overview ` -- :ref:`Creating a CCE Turbo Cluster ` -- :ref:`Creating a CCE Cluster ` -- :ref:`Using kubectl to Run a Cluster ` +- :ref:`Creating a Cluster ` +- :ref:`Connecting to a Cluster ` - :ref:`Upgrading a Cluster ` - :ref:`Managing a Cluster ` -- :ref:`Obtaining a Cluster Certificate ` -- :ref:`Changing Cluster Scale ` .. toctree:: :maxdepth: 1 :hidden: cluster_overview/index - creating_a_cce_turbo_cluster - creating_a_cce_cluster - using_kubectl_to_run_a_cluster/index + creating_a_cluster/index + connecting_to_a_cluster/index upgrading_a_cluster/index managing_a_cluster/index - obtaining_a_cluster_certificate - changing_cluster_scale diff --git a/umn/source/clusters/changing_cluster_scale.rst b/umn/source/clusters/managing_a_cluster/changing_cluster_scale.rst similarity index 86% rename from umn/source/clusters/changing_cluster_scale.rst rename to umn/source/clusters/managing_a_cluster/changing_cluster_scale.rst index 2c291cd..35db840 100644 --- a/umn/source/clusters/changing_cluster_scale.rst +++ b/umn/source/clusters/managing_a_cluster/changing_cluster_scale.rst @@ -10,8 +10,8 @@ Scenario CCE allows you to change the number of nodes managed in a cluster. -Notes and Constraints ---------------------- +Constraints +----------- - This function is supported for clusters of v1.15 and later versions. - Starting from v1.15.11, the number of nodes in a cluster can be changed to 2000. The number of nodes in a single master node cannot be changed to 1000 or more. @@ -25,12 +25,12 @@ Procedure #. Log in to the CCE console. In the navigation pane, choose **Clusters**. -#. Click |image1| next to the cluster whose specifications need to be changed. +#. Click |image1| next to the cluster whose specifications need to be modified. -#. On the page displayed, select a new flavor as required. +#. On the page displayed, select a new cluster scale. -#. Click **OK**. +#. Click **Next** to confirm the specifications and click **OK**. You can click **Operation Records** in the upper left corner to view the cluster change history. The status changes from **Executing** to **Successful**, indicating that the cluster specifications are successfully changed. -.. |image1| image:: /_static/images/en-us_image_0000001518062664.png +.. |image1| image:: /_static/images/en-us_image_0000001647417520.png diff --git a/umn/source/clusters/managing_a_cluster/cluster_configuration_management.rst b/umn/source/clusters/managing_a_cluster/cluster_configuration_management.rst index 0f3b2f4..a73746f 100644 --- a/umn/source/clusters/managing_a_cluster/cluster_configuration_management.rst +++ b/umn/source/clusters/managing_a_cluster/cluster_configuration_management.rst @@ -10,19 +10,135 @@ Scenario CCE allows you to manage cluster parameters, through which you can let core components work under your very requirements. -Notes and Constraints ---------------------- +Constraints +----------- -This function is supported only for clusters of **v1.15 and later**. It is not displayed for versions earlier than v1.15. +This function is supported only in clusters of **v1.15 and later**. It is not displayed for versions earlier than v1.15. Procedure --------- #. Log in to the CCE console. In the navigation pane, choose **Clusters**. #. Click |image1| next to the target cluster. -#. On the **Manage Component** page on the right, change the values of the following Kubernetes parameters: +#. On the **Manage Components** page on the right, change the values of the Kubernetes parameters listed in the following table. - .. table:: **Table 1** Extended controller parameters + .. table:: **Table 1** kube-apiserver parameters + + +----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | Value | + +========================================+====================================================================================================================================================================================================================================+===================================================================================================================================+ + | default-not-ready-toleration-seconds | Tolerance time when a node is in the **NotReady** state. | Default: 300s | + | | | | + | | By default, this tolerance is added to each pod. | | + +----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+ + | default-unreachable-toleration-seconds | Tolerance time when a node is in the **unreachable** state. | Default: 300s | + | | | | + | | By default, this tolerance is added to each pod. | | + +----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+ + | max-mutating-requests-inflight | Maximum number of concurrent mutating requests. When the value of this parameter is exceeded, the server rejects requests. | Manual configuration is no longer supported since cluster v1.21. The value is automatically specified based on the cluster scale. | + | | | | + | | The value **0** indicates no limitation. This parameter is related to the cluster scale. You are advised not to change the value. | - **200** for clusters with 50 or 200 nodes | + | | | - **500** for clusters with 1,000 nodes | + | | | - **1000** for clusters with 2,000 nodes | + +----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+ + | max-requests-inflight | Maximum number of concurrent non-mutating requests. When the value of this parameter is exceeded, the server rejects requests. | Manual configuration is no longer supported since cluster v1.21. The value is automatically specified based on the cluster scale. | + | | | | + | | The value **0** indicates no limitation. This parameter is related to the cluster scale. You are advised not to change the value. | - **400** for clusters with 50 or 200 nodes | + | | | - **1000** for clusters with 1,000 nodes | + | | | - **2000** for clusters with 2,000 nodes | + +----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+ + | service-node-port-range | NodePort port range. After changing the value, go to the security group page and change the TCP/UDP port range of node security groups 30000 to 32767. Otherwise, ports other than the default port cannot be accessed externally. | Default: | + | | | | + | | | 30000-32767 | + | | | | + | | | Value range: | + | | | | + | | | Min > 20105 | + | | | | + | | | Max < 32768 | + +----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+ + | support-overload | Cluster overload control. If enabled, concurrent requests are dynamically controlled based on the resource pressure of master nodes to keep them and the cluster available. | - false: Overload control is disabled. | + | | | - true: Overload control is enabled. | + | | This parameter is supported only by clusters of v1.23 or later. | | + +----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+ + + .. table:: **Table 2** kube-scheduler parameters + + +-----------------------+------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ + | Parameter | Description | Value | + +=======================+==================================================================+=========================================================================================+ + | kube-api-qps | Query per second (QPS) to use while talking with kube-apiserver. | - If the number of nodes in a cluster is less than 1000, the default value is **100**. | + | | | - If a cluster contains 1000 or more nodes, the default value is **200**. | + +-----------------------+------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ + | kube-api-burst | Burst to use while talking with kube-apiserver. | - If the number of nodes in a cluster is less than 1000, the default value is **100**. | + | | | - If a cluster contains 1000 or more nodes, the default value is **200**. | + +-----------------------+------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ + + .. table:: **Table 3** kube-controller-manager parameters + + +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ + | Parameter | Description | Value | + +=======================================+========================================================================================================================================================================+=========================================================================================+ + | concurrent-deployment-syncs | Number of Deployments that are allowed to synchronize concurrently. | Default: 5 | + +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ + | concurrent-endpoint-syncs | Number of endpoints that are allowed to synchronize concurrently. | Default: 5 | + +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ + | concurrent-gc-syncs | Number of garbage collector workers that are allowed to synchronize concurrently. | Default: 20 | + +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ + | concurrent-job-syncs | Number of jobs that can be synchronized at the same time. | Default: 5 | + +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ + | concurrent-namespace-syncs | Number of namespaces that are allowed to synchronize concurrently. | Default: 10 | + +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ + | concurrent-replicaset-syncs | Number of ReplicaSets that are allowed to synchronize concurrently. | Default: 5 | + +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ + | concurrent-resource-quota-syncs | Number of resource quotas that are allowed to synchronize concurrently. | Default: 5 | + +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ + | concurrent-service-syncs | Number of Services that are allowed to synchronize concurrently. | Default: 10 | + +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ + | concurrent-serviceaccount-token-syncs | Number of service account tokens that are allowed to synchronize concurrently. | Default: 5 | + +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ + | concurrent-ttl-after-finished-syncs | Number of TTL-after-finished controller workers that are allowed to synchronize concurrently. | Default: 5 | + +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ + | concurrent-rc-syncs | Number of replication controllers that are allowed to synchronize concurrently. | Default: 5 | + | | | | + | | .. note:: | | + | | | | + | | This parameter is used only in clusters of v1.21 to v1.23. In clusters of v1.25 and later, this parameter is deprecated (officially deprecated from v1.25.3-r0 on). | | + +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ + | horizontal-pod-autoscaler-sync-period | How often HPA audits metrics in a cluster. | Default: 15 seconds | + +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ + | kube-api-qps | Query per second (QPS) to use while talking with kube-apiserver. | - If the number of nodes in a cluster is less than 1000, the default value is **100**. | + | | | - If a cluster contains 1000 or more nodes, the default value is **200**. | + +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ + | kube-api-burst | Burst to use while talking with kube-apiserver. | - If the number of nodes in a cluster is less than 1000, the default value is **100**. | + | | | - If a cluster contains 1000 or more nodes, the default value is **200**. | + +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ + | terminated-pod-gc-threshold | Number of terminated pods that can exist before the terminated pod garbage collector starts deleting terminated pods. | Default: 1000 | + | | | | + | | If <= 0, the terminated pod garbage collector is disabled. | | + +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ + + .. table:: **Table 4** eni parameters (supported only by CCE Turbo clusters) + + +----------------------------+------------------------------------------------------------------------------------------------------+-----------------------+ + | Parameter | Description | Value | + +============================+======================================================================================================+=======================+ + | nic-minimum-target | Minimum number of ENIs bound to a node at the cluster level | Default: 10 | + +----------------------------+------------------------------------------------------------------------------------------------------+-----------------------+ + | nic-maximum-target | Maximum number of ENIs pre-bound to a node at the cluster level | Default: 0 | + +----------------------------+------------------------------------------------------------------------------------------------------+-----------------------+ + | nic-warm-target | Number of ENIs pre-bound to a node at the cluster level | Default: 2 | + +----------------------------+------------------------------------------------------------------------------------------------------+-----------------------+ + | nic-max-above-warm-target | Reclaim number of ENIs pre-bound to a node at the cluster level | Default: 2 | + +----------------------------+------------------------------------------------------------------------------------------------------+-----------------------+ + | prebound-subeni-percentage | Low threshold of the number of bound ENIs: High threshold of the number of bound ENIs | Default: 0:0 | + | | | | + | | .. note:: | | + | | | | + | | This parameter is being discarded. Use the dynamic pre-binding parameters of the other four ENIs. | | + +----------------------------+------------------------------------------------------------------------------------------------------+-----------------------+ + + .. table:: **Table 5** Extended controller configuration parameters (supported only by clusters of v1.21 and later) +-----------------------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ | Parameter | Description | Value | @@ -33,119 +149,6 @@ Procedure | | - **true**: auto creation enabled For details about the resource quota defaults, see :ref:`Setting a Resource Quota `. | | +-----------------------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ - .. table:: **Table 2** kube-apiserver parameters - - +----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | Value | - +========================================+===============================================================================================================================================================================================================================================+===================================================================================================================================+ - | default-not-ready-toleration-seconds | notReady tolerance time, in seconds. NoExecute that is added by default to every pod that does not already have such a toleration. | Default: 300s | - +----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+ - | default-unreachable-toleration-seconds | unreachable tolerance time, in seconds. NoExecute that is added by default to every pod that does not already have such a toleration. | Default: 300s | - +----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+ - | max-mutating-requests-inflight | Maximum number of concurrent mutating requests. When the value of this parameter is exceeded, the server rejects requests. | Manual configuration is no longer supported since cluster v1.21. The value is automatically specified based on the cluster scale. | - | | | | - | | The value **0** indicates no limitation. | - **200** for clusters with 50 or 200 nodes | - | | | - **500** for clusters with 1,000 nodes | - | | | - **1000** for clusters with 2,000 nodes | - +----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+ - | max-requests-inflight | Maximum number of concurrent non-mutating requests. When the value of this parameter is exceeded, the server rejects requests. | Manual configuration is no longer supported since cluster v1.21. The value is automatically specified based on the cluster scale. | - | | | | - | | The value **0** indicates no limitation. | - **400** for clusters with 50 or 200 nodes | - | | | - **1000** for clusters with 1,000 nodes | - | | | - **2000** for clusters with 2,000 nodes | - +----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+ - | service-node-port-range | NodePort port range. After changing the value, you need to go to the security group page to change the TCP/UDP port range of node security groups 30000 to 32767. Otherwise, ports other than the default port cannot be accessed externally. | Default: | - | | | | - | | | 30000-32767 | - | | | | - | | | Options: | - | | | | - | | | min>20105 | - | | | | - | | | max<32768 | - +----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+ - | support-overload | Cluster overload control. If enabled, concurrent requests are dynamically controlled based on the resource pressure of master nodes to keep them and the cluster available. | - false: Overload control is disabled. | - | | | - true: Overload control is enabled. | - +----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+ - - .. table:: **Table 3** kube-controller-manager parameters - - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ - | Parameter | Description | Value | - +=======================================+========================================================================================================================================================================+=======================+ - | concurrent-deployment-syncs | Number of Deployments that are allowed to synchronize concurrently. | Default: 5 | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ - | concurrent-endpoint-syncs | Number of endpoints that are allowed to synchronize concurrently. | Default: 5 | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ - | concurrent-gc-syncs | Number of garbage collector workers that are allowed to synchronize concurrently. | Default: 20 | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ - | concurrent-job-syncs | Number of jobs that can be synchronized at the same time. | Default: 5 | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ - | concurrent-namespace-syncs | Number of namespaces that are allowed to synchronize concurrently. | Default: 10 | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ - | concurrent-replicaset-syncs | Number of ReplicaSets that are allowed to synchronize concurrently. | Default: 5 | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ - | concurrent-resource-quota-syncs | Number of resource quotas that are allowed to synchronize concurrently. | Default: 5 | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ - | concurrent-service-syncs | Number of Services that are allowed to synchronize concurrently. | Default: 10 | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ - | concurrent-serviceaccount-token-syncs | Number of service account tokens that are allowed to synchronize concurrently. | Default: 5 | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ - | concurrent-ttl-after-finished-syncs | Number of TTL-after-finished controller workers that are allowed to synchronize concurrently. | Default: 5 | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ - | concurrent_rc_syncs | Number of replication controllers that are allowed to synchronize concurrently. | Default: 5 | - | | | | - | | .. note:: | | - | | | | - | | This parameter is used only in clusters of v1.19 or earlier. | | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ - | concurrent-rc-syncs | Number of replication controllers that are allowed to synchronize concurrently. | Default: 5 | - | | | | - | | .. note:: | | - | | | | - | | This parameter is used only in clusters of v1.21 to v1.23. In clusters of v1.25 and later, this parameter is deprecated (officially deprecated from v1.25.3-r0 on). | | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ - | horizontal-pod-autoscaler-sync-period | How often HPA audits metrics in a cluster. | Default: 15 seconds | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ - | kube-api-qps | Query per second (QPS) to use while talking with kube-apiserver. | Default: 100 | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ - | kube-api-burst | Burst to use while talking with kube-apiserver. | Default: 100 | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ - | terminated-pod-gc-threshold | Number of terminated pods that can exist before the terminated pod garbage collector starts deleting terminated pods. | Default: 1000 | - | | | | - | | If <= 0, the terminated pod garbage collector is disabled. | | - +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ - - .. table:: **Table 4** kube-scheduler parameters - - +----------------+------------------------------------------------------------------+--------------+ - | Parameter | Description | Value | - +================+==================================================================+==============+ - | kube-api-qps | Query per second (QPS) to use while talking with kube-apiserver. | Default: 100 | - +----------------+------------------------------------------------------------------+--------------+ - | kube-api-burst | Burst to use while talking with kube-apiserver. | Default: 100 | - +----------------+------------------------------------------------------------------+--------------+ - - .. table:: **Table 5** eni parameters (supported only by CCE Turbo clusters) - - +----------------------------+----------------------------------------------------------------------------------------------+-----------------------+ - | Parameter | Description | Value | - +============================+==============================================================================================+=======================+ - | nic-minimum-target | Minimum number of ENIs bound to a node at the cluster level | Default: 10 | - +----------------------------+----------------------------------------------------------------------------------------------+-----------------------+ - | nic-maximum-target | Maximum number of ENIs pre-bound to a node at the cluster level | Default: 0 | - +----------------------------+----------------------------------------------------------------------------------------------+-----------------------+ - | nic-warm-target | Number of ENIs pre-bound to a node at the cluster level | Default: 2 | - +----------------------------+----------------------------------------------------------------------------------------------+-----------------------+ - | nic-max-above-warm-target | Reclaim number of ENIs pre-bound to a node at the cluster level | Default: 2 | - +----------------------------+----------------------------------------------------------------------------------------------+-----------------------+ - | prebound-subeni-percentage | Low threshold of the number of bound ENIs : High threshold of the number of bound ENIs | Default: 0:0 | - | | | | - | | .. note:: | | - | | | | - | | This parameter is discarded. Use the other four dynamic preheating parameters of the ENI. | | - +----------------------------+----------------------------------------------------------------------------------------------+-----------------------+ - #. Click **OK**. References @@ -155,4 +158,4 @@ References - `kube-controller-manager `__ - `kube-scheduler `__ -.. |image1| image:: /_static/images/en-us_image_0000001517903048.png +.. |image1| image:: /_static/images/en-us_image_0000001695896409.png diff --git a/umn/source/clusters/managing_a_cluster/cluster_overload_control.rst b/umn/source/clusters/managing_a_cluster/cluster_overload_control.rst index e3b1094..a3d8023 100644 --- a/umn/source/clusters/managing_a_cluster/cluster_overload_control.rst +++ b/umn/source/clusters/managing_a_cluster/cluster_overload_control.rst @@ -8,10 +8,10 @@ Cluster Overload Control Scenario -------- -If overload control is enabled, concurrent requests are dynamically controlled based on the resource pressure of master nodes to keep them and the cluster available. +If enabled, concurrent requests are dynamically controlled based on the resource pressure of master nodes to keep them and the cluster available. -Notes and Constraints ---------------------- +Constraints +----------- The cluster version must be 1.23 or later. diff --git a/umn/source/clusters/managing_a_cluster/deleting_a_cluster.rst b/umn/source/clusters/managing_a_cluster/deleting_a_cluster.rst index e1bae06..2e76c47 100644 --- a/umn/source/clusters/managing_a_cluster/deleting_a_cluster.rst +++ b/umn/source/clusters/managing_a_cluster/deleting_a_cluster.rst @@ -5,11 +5,6 @@ Deleting a Cluster ================== -Scenario --------- - -This section describes how to delete a cluster. - Precautions ----------- @@ -21,32 +16,35 @@ Precautions - ELB load balancers associated with Services and ingresses (only the automatically created load balancers are deleted); - Manually created cloud storage resources associated with PVs or imported cloud storage resources (only the cloud storage resources automatically created by PVCs are deleted) -- A hibernated cluster cannot be deleted. Wake up the cluster and try again. +- If you delete a cluster that is not running (for example, unavailable), associated resources, such as storage and networking resources, will remain. -- If a cluster whose status is Unavailable is deleted, some storage resources of the cluster may need to be manually deleted. -Procedure ---------- +Deleting a Cluster +------------------ + +.. important:: + + A hibernated cluster cannot be deleted. Wake up the cluster and try again. #. Log in to the CCE console. In the navigation pane, choose **Clusters**. #. Click |image1| next to the cluster to be deleted. -#. In the displayed dialog box, select the resources to be released. +#. In the displayed **Delete Cluster** dialog box, select the resources to be released. - - Delete cloud storage resources attached to workloads in the cluster. + - Delete cloud storage resources associated with workloads in the cluster. .. note:: - Before you delete the PVCs and volumes, pay attention to the following rules: + When deleting underlying cloud storage resources bound to storage volumes in a cluster, pay attention to following constraints: - - The underlying storage resources are deleted according to the reclaim policy you defined. - - If there are a large number of files (more than 1,000) in the OBS bucket, manually clear the files and then delete the cluster. + - The underlying storage resources are deleted according to the reclamation policy you defined for the storage volumes. For example, if the reclamation policy of storage volumes is **Retain**, the underlying storage resources will be retained after the cluster is deleted. + - If there are more than 1,000 files in the OBS bucket, manually clear the files and then delete the cluster. - - Delete networking resources, such as load balancers in a cluster. (Only automatically created load balancers can be deleted.) + - Delete network resources such as load balancers in a cluster. (Only automatically created load balancers will be deleted). #. Click **Yes** to start deleting the cluster. The delete operation takes 1 to 3 minutes to complete. -.. |image1| image:: /_static/images/en-us_image_0000001569023085.png +.. |image1| image:: /_static/images/en-us_image_0000001695896837.png diff --git a/umn/source/clusters/managing_a_cluster/hibernating_and_waking_up_a_cluster.rst b/umn/source/clusters/managing_a_cluster/hibernating_and_waking_up_a_cluster.rst index 4eb9494..af2d638 100644 --- a/umn/source/clusters/managing_a_cluster/hibernating_and_waking_up_a_cluster.rst +++ b/umn/source/clusters/managing_a_cluster/hibernating_and_waking_up_a_cluster.rst @@ -14,8 +14,8 @@ After a cluster is hibernated, resources such as workloads cannot be created or A hibernated cluster can be quickly woken up and used normally. -Notes and Constraints ---------------------- +Constraints +----------- During cluster wakeup, the master node may fail to be started due to insufficient resources. As a result, the cluster fails to be woken up. Wait for a while and wake up the cluster again. @@ -33,5 +33,5 @@ Waking Up a Cluster #. Click |image2| next to the cluster to be woken up. #. When the cluster status changes from **Waking up** to **Running**, the cluster is woken up. It takes about 3 to 5 minutes to wake up the cluster. -.. |image1| image:: /_static/images/en-us_image_0000001517743460.png -.. |image2| image:: /_static/images/en-us_image_0000001569182589.png +.. |image1| image:: /_static/images/en-us_image_0000001695896449.png +.. |image2| image:: /_static/images/en-us_image_0000001695737165.png diff --git a/umn/source/clusters/managing_a_cluster/index.rst b/umn/source/clusters/managing_a_cluster/index.rst index 68d0b13..1decea2 100644 --- a/umn/source/clusters/managing_a_cluster/index.rst +++ b/umn/source/clusters/managing_a_cluster/index.rst @@ -6,15 +6,17 @@ Managing a Cluster ================== - :ref:`Cluster Configuration Management ` +- :ref:`Cluster Overload Control ` +- :ref:`Changing Cluster Scale ` - :ref:`Deleting a Cluster ` - :ref:`Hibernating and Waking Up a Cluster ` -- :ref:`Cluster Overload Control ` .. toctree:: :maxdepth: 1 :hidden: cluster_configuration_management + cluster_overload_control + changing_cluster_scale deleting_a_cluster hibernating_and_waking_up_a_cluster - cluster_overload_control diff --git a/umn/source/clusters/obtaining_a_cluster_certificate.rst b/umn/source/clusters/obtaining_a_cluster_certificate.rst deleted file mode 100644 index d98cf05..0000000 --- a/umn/source/clusters/obtaining_a_cluster_certificate.rst +++ /dev/null @@ -1,31 +0,0 @@ -:original_name: cce_10_0175.html - -.. _cce_10_0175: - -Obtaining a Cluster Certificate -=============================== - -Scenario --------- - -This section describes how to obtain the cluster certificate from the console and use it to access Kubernetes clusters. - -Procedure ---------- - -#. Log in to the CCE console and access the cluster console. - -#. Choose **Cluster Information** from the navigation pane and click **Download** next to **Authentication Mode** in the **Connection Information** area. - -#. In the **Download X.509 Certificate** dialog box displayed, select the certificate expiration time and download the X.509 certificate of the cluster as prompted. - - - .. figure:: /_static/images/en-us_image_0000001568822637.png - :alt: **Figure 1** Downloading a certificate - - **Figure 1** Downloading a certificate - - .. important:: - - - The downloaded certificate contains three files: **client.key**, **client.crt**, and **ca.crt**. Keep these files secure. - - Certificates are not required for mutual access between containers in a cluster. diff --git a/umn/source/clusters/upgrading_a_cluster/before_you_start.rst b/umn/source/clusters/upgrading_a_cluster/before_you_start.rst index f64e4e0..443df1d 100644 --- a/umn/source/clusters/upgrading_a_cluster/before_you_start.rst +++ b/umn/source/clusters/upgrading_a_cluster/before_you_start.rst @@ -7,56 +7,297 @@ Before You Start Before the upgrade, you can check whether your cluster can be upgraded and which versions are available on the CCE console. For details, see :ref:`Upgrade Overview `. -Notes ------ +.. _cce_10_0302__section16520163082115: -- **Upgraded clusters cannot be rolled back. Therefore, perform the upgrade during off-peak hours to minimize the impact on your services.** -- Do not **shut down, restart, or delete nodes** during cluster upgrade. Otherwise, the upgrade fails. -- Before upgrading a cluster, **disable auto scaling policies** to prevent node scaling during the upgrade. Otherwise, the upgrade fails. -- If you locally modify the configuration of a cluster node, the cluster upgrade may fail or the configuration may be lost after the upgrade. Therefore, modify the configurations on the CCE console (cluster or node pool list page) so that they will be automatically inherited during the upgrade. -- During the cluster upgrade, the running workload services will not be interrupted, but access to the API server will be temporarily interrupted. -- Before upgrading the cluster, check whether the cluster is healthy. -- To ensure data security, you are advised to back up data before upgrading the cluster. During the upgrade, you are not advised to perform any operations on the cluster. -- During the cluster upgrade, the **node.kubernetes.io/upgrade** taint (the effect is **NoSchedule**) is added to the node. After the cluster upgrade is complete, the taint is removed. Do not add taints with the same key name on the node. Even if the taints have different effects, they may be deleted by the system by mistake after the upgrade. +Precautions +----------- + +Before upgrading a cluster, pay attention to the following points: + +- **Upgrading a cluster cannot be rolled back. Perform an upgrade at a proper time to minimize the impact on your services.** To ensure data security, you back up your data before an upgrade. +- Before upgrading a cluster, **ensure that no** :ref:`high-risk operations ` **are performed in the cluster**. Otherwise, the cluster upgrade may fail or the configuration may be lost after the upgrade. Common high-risk operations include modifying cluster node configurations locally and modifying the configurations of the listeners managed by CCE on the ELB console. Instead, modify configurations on the CCE console so that the modifications can be automatically inherited during the upgrade. +- Before upgrading a cluster, ensure the cluster is working properly. +- Before upgrading a cluster, learn about the features and differences of each cluster version in :ref:`Kubernetes Release Notes ` to prevent exceptions due to the use of an incompatible cluster version. For example, check whether any APIs deprecated in the target version are used in the cluster. Otherwise, calling the APIs may fail after the upgrade. For details, see :ref:`Deprecated APIs `. + +During a cluster upgrade, pay attention to the following points that may affect your services: + +- During a cluster upgrade, do not perform any operation on the cluster. Do not **stop, restart, or delete nodes** during cluster upgrade. Otherwise, the upgrade will fail. +- During a cluster upgrade, the running workloads will not be interrupted, but access to the API server will be temporarily interrupted. +- During a cluster upgrade, the **node.kubernetes.io/upgrade** taint (equivalent to **NoSchedule**) will be added to the nodes in the cluster. The taint will be removed after the cluster is upgraded. Do not add taints with the same key name on a node. Even if the taints have different effects, they may be deleted by the system by mistake after the upgrade. Constraints ----------- -- Currently, only CCE clusters consisting of VM nodes and CCE Turbo clusters can be upgraded. +- CCE clusters and CCE Turbo clusters with VM nodes can be upgraded. +- If there are any nodes created using a private image, the cluster cannot be upgraded. +- After the cluster is upgraded, if the containerd vulnerability of the container engine is fixed in :ref:`Kubernetes Release Notes `, manually restart containerd for the upgrade to take effect. The same applies to the existing pods. +- If you mount the **docker.sock** file on a node to a pod using the hostPath mode, that is, the Docker in Docker scenario, Docker will restart during the upgrade, but the **docker.sock** file does not change. As a result, your services may malfunction. You are advised to mount the **docker.sock** file by mounting the directory. +- When clusters using the tunnel network model are upgraded to v1.19.16-r4, v1.21.7-r0, v1.23.5-r0, v1.25.1-r0, or later, the SNAT rule whose destination address is the container CIDR block but the source address is not the container CIDR block will be removed. If you have configured VPC routes to directly access all pods outside the cluster, only the pods on the corresponding nodes can be directly accessed after the upgrade. -- Currently, clusters using private images cannot be upgraded. +.. _cce_10_0302__section1143094820148: -- After the cluster is upgraded, if the containerd vulnerability of the container engine is fixed in :ref:`Cluster Version Release Notes `, you need to manually restart containerd for the upgrade to take effect. The same applies to the existing pods. +Deprecated APIs +--------------- -- If initContainer or Istio is used in the in-place upgrade of a cluster of v1.15, pay attention to the following restrictions: +With the evolution of Kubernetes APIs, APIs are periodically reorganized or upgraded, and old APIs are deprecated and finally deleted. The following tables list the deprecated APIs in each Kubernetes community version. For details about more deprecated APIs, see `Deprecated API Migration Guide `__. - In kubelet 1.16 and later versions, `QoS classes `__ are different from those in earlier versions. In kubelet 1.15 and earlier versions, only containers in **spec.containers** are counted. In kubelet 1.16 and later versions, containers in both **spec.containers** and **spec.initContainers** are counted. The QoS class of a pod will change after the upgrade. As a result, the container in the pod restarts. You are advised to modify the QoS class of the service container before the upgrade to avoid this problem. For details, see :ref:`Table 1 `. +- :ref:`APIs Deprecated in Kubernetes v1.25 ` +- :ref:`APIs Deprecated in Kubernetes v1.22 ` +- :ref:`APIs Deprecated in Kubernetes v1.16 ` - .. _cce_10_0302__table10713231143911: +.. note:: - .. table:: **Table 1** QoS class changes before and after the upgrade + When an API is deprecated, the existing resources are not affected. However, when you create or edit the resources, the API version will be intercepted. - +----------------------------------------------------------+---------------------------------------------------------+-------------------------------------------------------------------+-----------------+ - | Init Container (Calculated Based on spec.initContainers) | Service Container (Calculated Based on spec.containers) | Pod (Calculated Based on spec.containers and spec.initContainers) | Impacted or Not | - +==========================================================+=========================================================+===================================================================+=================+ - | Guaranteed | Besteffort | Burstable | Yes | - +----------------------------------------------------------+---------------------------------------------------------+-------------------------------------------------------------------+-----------------+ - | Guaranteed | Burstable | Burstable | No | - +----------------------------------------------------------+---------------------------------------------------------+-------------------------------------------------------------------+-----------------+ - | Guaranteed | Guaranteed | Guaranteed | No | - +----------------------------------------------------------+---------------------------------------------------------+-------------------------------------------------------------------+-----------------+ - | Besteffort | Besteffort | Besteffort | No | - +----------------------------------------------------------+---------------------------------------------------------+-------------------------------------------------------------------+-----------------+ - | Besteffort | Burstable | Burstable | No | - +----------------------------------------------------------+---------------------------------------------------------+-------------------------------------------------------------------+-----------------+ - | Besteffort | Guaranteed | Burstable | Yes | - +----------------------------------------------------------+---------------------------------------------------------+-------------------------------------------------------------------+-----------------+ - | Burstable | Besteffort | Burstable | Yes | - +----------------------------------------------------------+---------------------------------------------------------+-------------------------------------------------------------------+-----------------+ - | Burstable | Burstable | Burstable | No | - +----------------------------------------------------------+---------------------------------------------------------+-------------------------------------------------------------------+-----------------+ - | Burstable | Guaranteed | Burstable | Yes | - +----------------------------------------------------------+---------------------------------------------------------+-------------------------------------------------------------------+-----------------+ +.. _cce_10_0302__table555192311179: + +.. table:: **Table 1** Deprecated APIs in Kubernetes v1.25 + + +-------------------------+--------------------------+-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Resource Name | Deprecated API Version | Substitute API Version | Change Description | + +=========================+==========================+=====================================================+===============================================================================================================================================================================================================================================================================================================+ + | CronJob | batch/v1beta1 | batch/v1 | None | + | | | | | + | | | (This API is available since v1.21.) | | + +-------------------------+--------------------------+-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | EndpointSlice | discovery.k8s.io/v1beta1 | discovery.k8s.io/v1 | Pay attention to the following changes: | + | | | | | + | | | (This API is available since v1.21.) | - In each endpoint, the **topology["kubernetes.io/hostname"]** field has been deprecated. Replace it with the **nodeName** field. | + | | | | - In each endpoint, the **topology["kubernetes.io/zone"]** field has been deprecated. Replace it with the **zone** field. | + | | | | - The **topology** field is replaced with **deprecatedTopology** and cannot be written in v1. | + +-------------------------+--------------------------+-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Event | events.k8s.io/v1beta1 | events.k8s.io/v1 | Pay attention to the following changes: | + | | | | | + | | | (This API is available since v1.19.) | - The **type** field can only be set to **Normal** or **Warning**. | + | | | | - The **involvedObject** field is renamed **regarding**. | + | | | | - The **action**, **reason**, **reportingController**, and **reportingInstance** fields are mandatory for creating a new **events.k8s.io/v1** event. | + | | | | - Use **eventTime** instead of the deprecated **firstTimestamp** field (this field has been renamed **deprecatedFirstTimestamp** and is not allowed to appear in the new **events.k8s.io/v1** event object). | + | | | | - Use **series.lastObservedTime** instead of the deprecated **lastTimestamp** field (this field has been renamed **deprecatedLastTimestamp** and is not allowed to appear in the new **events.k8s.io/v1** event object). | + | | | | - Use **series.count** instead of the deprecated **count** field (this field has been renamed **deprecatedCount** and is not allowed to appear in the new **events.k8s.io/v1** event object). | + | | | | - Use **reportingController** instead of the deprecated **source.component** field (this field has been renamed **deprecatedSource.component** and is not allowed to appear in the new **events.k8s.io/v1** event object). | + | | | | - Use **reportingInstance** instead of the deprecated **source.host** field (this field has been renamed **deprecatedSource.host** and is not allowed to appear in the new **events.k8s.io/v1** event object). | + +-------------------------+--------------------------+-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | HorizontalPodAutoscaler | autoscaling/v2beta1 | autoscaling/v2 | None | + | | | | | + | | | (This API is available since v1.23.) | | + +-------------------------+--------------------------+-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PodDisruptionBudget | policy/v1beta1 | policy/v1 | If **spec.selector** is set to null (**{}**) in **PodDisruptionBudget** of **policy/v1**, all pods in the namespace are selected. (In **policy/v1beta1**, an empty **spec.selector** means that no pod will be selected.) If **spec.selector** is not specified, pod will be selected in neither API version. | + | | | | | + | | | (This API is available since v1.21.) | | + +-------------------------+--------------------------+-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PodSecurityPolicy | policy/v1beta1 | None | Since v1.25, the PodSecurityPolicy resource no longer provides APIs of the **policy/v1beta1** version, and the PodSecurityPolicy access controller is deleted. | + | | | | | + | | | | Replace it with :ref:`Configuring Pod Security Admission `. | + +-------------------------+--------------------------+-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | RuntimeClass | node.k8s.io/v1beta1 | node.k8s.io/v1 (This API is available since v1.20.) | None | + +-------------------------+--------------------------+-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. _cce_10_0302__table133341432194513: + +.. table:: **Table 2** Deprecated APIs in Kubernetes v1.22 + + +--------------------------------+--------------------------------------+--------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Resource Name | Deprecated API Version | Substitute API Version | Change Description | + +================================+======================================+======================================+========================================================================================================================================================================================================================================================================================================================================+ + | MutatingWebhookConfiguration | admissionregistration.k8s.io/v1beta1 | admissionregistration.k8s.io/v1 | - The default value of **webhooks[*].failurePolicy** is changed from **Ignore** to **Fail** in v1. | + | | | | - The default value of **webhooks[*].matchPolicy** is changed from **Exact** to **Equivalent** in v1. | + | ValidatingWebhookConfiguration | | (This API is available since v1.16.) | - The default value of **webhooks[*].timeoutSeconds** is changed from **30s** to **10s** in v1. | + | | | | - The default value of **webhooks[*].sideEffects** is deleted, and this field must be specified. In v1, the value can only be **None** or **NoneOnDryRun**. | + | | | | - The default value of **webhooks[*].admissionReviewVersions** is deleted. In v1, this field must be specified. (**AdmissionReview** v1 and v1beta1 are supported.) | + | | | | - **webhooks[*].name** must be unique in the list of objects created through **admissionregistration.k8s.io/v1**. | + +--------------------------------+--------------------------------------+--------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | CustomResourceDefinition | apiextensions.k8s.io/v1beta1 | apiextensions/v1 | - The default value of **spec.scope** is no longer **Namespaced**. This field must be explicitly specified. | + | | | | - **spec.version** is deleted from v1. Use **spec.versions** instead. | + | | | (This API is available since v1.16.) | - **spec.validation** is deleted from v1. Use **spec.versions[*].schema** instead. | + | | | | - **spec.subresources** is deleted from v1. Use **spec.versions[*].subresources** instead. | + | | | | - **spec.additionalPrinterColumns** is deleted from v1. Use **spec.versions[*].additionalPrinterColumns** instead. | + | | | | - **spec.conversion.webhookClientConfig** is moved to **spec.conversion.webhook.clientConfig** in v1. | + | | | | - **spec.conversion.conversionReviewVersions** is moved to **spec.conversion.webhook.conversionReviewVersions** in v1. | + | | | | | + | | | | - **spec.versions[*].schema.openAPIV3Schema** becomes a mandatory field when the **CustomResourceDefinition** object of the v1 version is created, and its value must be a `structural schema `__. | + | | | | - **spec.preserveUnknownFields: true** cannot be specified when the **CustomResourceDefinition** object of the v1 version is created. This configuration must be specified using **x-kubernetes-preserve-unknown-fields: true** in the schema definition. | + | | | | - In v1, the **JSONPath** field in the **additionalPrinterColumns** entry is renamed **jsonPath** (patch `#66531 `__). | + +--------------------------------+--------------------------------------+--------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | APIService | apiregistration/v1beta1 | apiregistration.k8s.io/v1 | None | + | | | | | + | | | (This API is available since v1.10.) | | + +--------------------------------+--------------------------------------+--------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | TokenReview | authentication.k8s.io/v1beta1 | authentication.k8s.io/v1 | None | + | | | | | + | | | (This API is available since v1.6.) | | + +--------------------------------+--------------------------------------+--------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | LocalSubjectAccessReview | authorization.k8s.io/v1beta1 | authorization.k8s.io/v1 | **spec.group** was renamed **spec.groups** in v1 (patch `#32709 `__). | + | | | | | + | SelfSubjectAccessReview | | (This API is available since v1.16.) | | + | | | | | + | SubjectAccessReview | | | | + | | | | | + | SelfSubjectRulesReview | | | | + +--------------------------------+--------------------------------------+--------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | CertificateSigningRequest | certificates.k8s.io/v1beta1 | certificates.k8s.io/v1 | Pay attention to the following changes in **certificates.k8s.io/v1**: | + | | | | | + | | | (This API is available since v1.19.) | - For an API client that requests a certificate: | + | | | | | + | | | | - **spec.signerName** becomes a mandatory field (see `Known Kubernetes Signers `__). In addition, the **certificates.k8s.io/v1** API cannot be used to create requests whose signer is **kubernetes.io/legacy-unknown**. | + | | | | - **spec.usages** now becomes a mandatory field, which cannot contain duplicate string values and can contain only known usage strings. | + | | | | | + | | | | - For an API client that needs to approve or sign a certificate: | + | | | | | + | | | | - **status.conditions** cannot contain duplicate types. | + | | | | - The **status.conditions[*].status** field is now mandatory. | + | | | | - The **status.certificate** must be PEM-encoded and can contain only the **CERTIFICATE** data block. | + +--------------------------------+--------------------------------------+--------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Lease | coordination.k8s.io/v1beta1 | coordination.k8s.io/v1 | None | + | | | | | + | | | (This API is available since v1.14.) | | + +--------------------------------+--------------------------------------+--------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Ingress | networking.k8s.io/v1beta1 | networking.k8s.io/v1 | - The **spec.backend** field is renamed **spec.defaultBackend**. | + | | | | - The **serviceName** field of the backend is renamed **service.name**. | + | | extensions/v1beta1 | (This API is available since v1.19.) | - The backend **servicePort** field represented by a number is renamed **service.port.number**. | + | | | | - The backend **servicePort** field represented by a string is renamed **service.port.name**. | + | | | | - The **pathType** field is mandatory for all paths to be specified. The options are **Prefix**, **Exact**, and **ImplementationSpecific**. To match the behavior of not defining the path type in v1beta1, use **ImplementationSpecific**. | + +--------------------------------+--------------------------------------+--------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | IngressClass | networking.k8s.io/v1beta1 | networking.k8s.io/v1 | None | + | | | | | + | | | (This API is available since v1.19.) | | + +--------------------------------+--------------------------------------+--------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ClusterRole | rbac.authorization.k8s.io/v1beta1 | rbac.authorization.k8s.io/v1 | None | + | | | | | + | ClusterRoleBinding | | (This API is available since v1.8.) | | + | | | | | + | Role | | | | + | | | | | + | RoleBinding | | | | + +--------------------------------+--------------------------------------+--------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PriorityClass | scheduling.k8s.io/v1beta1 | scheduling.k8s.io/v1 | None | + | | | | | + | | | (This API is available since v1.14.) | | + +--------------------------------+--------------------------------------+--------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | CSIDriver | storage.k8s.io/v1beta1 | storage.k8s.io/v1 | - CSIDriver is available in **storage.k8s.io/v1** since v1.19. | + | | | | - CSINode is available in **storage.k8s.io/v1** since v1.17. | + | CSINode | | | - StorageClass is available in **storage.k8s.io/v1** since v1.6. | + | | | | - VolumeAttachment is available in **storage.k8s.io/v1** since v1.13. | + | StorageClass | | | | + | | | | | + | VolumeAttachment | | | | + +--------------------------------+--------------------------------------+--------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. _cce_10_0302__table115511655135720: + +.. table:: **Table 3** Deprecated APIs in Kubernetes v1.16 + + +-------------------+------------------------+--------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Resource Name | Deprecated API Version | Substitute API Version | Change Description | + +===================+========================+======================================+=========================================================================================================================================================================================================================================================+ + | NetworkPolicy | extensions/v1beta1 | networking.k8s.io/v1 | None | + | | | | | + | | | (This API is available since v1.8.) | | + +-------------------+------------------------+--------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | DaemonSet | extensions/v1beta1 | apps/v1 | - The **spec.templateGeneration** field is deleted. | + | | | | - **spec.selector** is now a mandatory field and cannot be changed after the object is created. The label of an existing template can be used as a selector for seamless migration. | + | | apps/v1beta2 | (This API is available since v1.9.) | - The default value of **spec.updateStrategy.type** is changed to **RollingUpdate** (the default value in the **extensions/v1beta1** API version is **OnDelete**). | + +-------------------+------------------------+--------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Deployment | extensions/v1beta1 | apps/v1 | - The **spec.rollbackTo** field is deleted. | + | | | | - **spec.selector** is now a mandatory field and cannot be changed after the Deployment is created. The label of an existing template can be used as a selector for seamless migration. | + | | apps/v1beta1 | (This API is available since v1.9.) | - The default value of **spec.progressDeadlineSeconds** is changed to 600 seconds (the default value in **extensions/v1beta1** is unlimited). | + | | | | - The default value of **spec.revisionHistoryLimit** is changed to **10**. (In the **apps/v1beta1** API version, the default value of this field is **2**. In the **extensions/v1beta1** API version, all historical records are retained by default.) | + | | apps/v1beta2 | | - The default values of **maxSurge** and **maxUnavailable** are changed to **25%**. (In the **extensions/v1beta1** API version, these fields default to **1**.) | + +-------------------+------------------------+--------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | StatefulSet | apps/v1beta1 | apps/v1 | - **spec.selector** is now a mandatory field and cannot be changed after the StatefulSet is created. The label of an existing template can be used as a selector for seamless migration. | + | | | | - The default value of **spec.updateStrategy.type** is changed to **RollingUpdate** (the default value in the **apps/v1beta1** API version is **OnDelete**). | + | | apps/v1beta2 | (This API is available since v1.9.) | | + +-------------------+------------------------+--------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ReplicaSet | extensions/v1beta1 | apps/v1 | **spec.selector** is now a mandatory field and cannot be changed after the object is created. The label of an existing template can be used as a selector for seamless migration. | + | | | | | + | | apps/v1beta1 | (This API is available since v1.9.) | | + | | | | | + | | apps/v1beta2 | | | + +-------------------+------------------------+--------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PodSecurityPolicy | extensions/v1beta1 | policy/v1beta1 | PodSecurityPolicy for the **policy/v1beta1** API version will be removed in v1.25. | + | | | | | + | | | (This API is available since v1.10.) | | + +-------------------+------------------------+--------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Version Differences +------------------- + ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Upgrade Path | Version Difference | Self-Check | ++=======================+===================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================+================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================+ +| v1.19 to v1.21 | The bug of **exec probe timeouts** is fixed in Kubernetes 1.21. Before this bug is fixed, the exec probe does not consider the **timeoutSeconds** field. Instead, the probe will run indefinitely, even beyond its configured deadline. It will stop until the result is returned. If this field is not specified, the default value **1** is used. This field takes effect after the upgrade. If the probe runs over 1 second, the application health check may fail and the application may restart frequently. | Before the upgrade, check whether the timeout is properly set for the exec probe. | ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | kube-apiserver of CCE 1.19 or later requires that the Subject Alternative Names (SANs) field be configured for the certificate of your webhook server. Otherwise, kube-apiserver fails to call the webhook server after the upgrade, and containers cannot be started properly. | Before the upgrade, check whether the SAN field is configured in the certificate of your webhook server. | +| | | | +| | Root cause: X.509 `CommonName `__ is discarded in Go 1.15. kube-apiserver of CCE 1.19 is compiled using Go 1.15. If your webhook certificate does not have SANs, kube-apiserver does not process the **CommonName** field of the X.509 certificate as the host name by default. As a result, the authentication fails. | - If you do not have your own webhook server, you can skip this check. | +| | | - If the field is not set, you are advised to use the SAN field to specify the IP address and domain name supported by the certificate. | ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| v1.15 to v1.19 | The control plane of CCE clusters of v1.19 is incompatible with kubelet v1.15. If a node fails to be upgraded or the node to be upgraded restarts after the master node is successfully upgraded, there is a high probability that the node is in the **NotReady** status. | #. In normal cases, this scenario is not triggered. | +| | | #. After the master node is upgraded, do not suspend the upgrade so the node can be quickly upgraded. | +| | This is because the node failed to be upgraded restarts the kubelet and trigger the node registration. In clusters of v1.15, the default registration tags (**failure-domain.beta.kubernetes.io/is-baremetal** and **kubernetes.io/availablezone**) are regarded as invalid tags by the clusters of v1.19. | #. If a node fails to be upgraded and cannot be restored, evict applications on the node as soon as possible. Contact technical support and skip the node upgrade. After the upgrade is complete, reset the node. | +| | | | +| | The valid tags in the clusters of v1.19 are **node.kubernetes.io/baremetal** and **failure-domain.beta.kubernetes.io/zone**. | | ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | In CCE 1.15 and 1.19 clusters, the Docker storage driver file system is switched from XFS to Ext4. As a result, the import package sequence in the pods of the upgraded Java application may be abnormal, causing pod exceptions. | Before the upgrade, check the Docker configuration file **/etc/docker/daemon.json** on the node. Check whether the value of **dm.fs** is **xfs**. | +| | | | +| | | - If the value is **ext4** or the storage driver is Overlay, you can skip the next steps. | +| | | - If the value is **xfs**, you are advised to deploy applications in the cluster of the new version in advance to test whether the applications are compatible with the new cluster version. | +| | | | +| | | .. code-block:: | +| | | | +| | | { | +| | | "storage-driver": "devicemapper", | +| | | "storage-opts": [ | +| | | "dm.thinpooldev=/dev/mapper/vgpaas-thinpool", | +| | | "dm.use_deferred_removal=true", | +| | | "dm.fs=xfs", | +| | | "dm.use_deferred_deletion=true" | +| | | ] | +| | | } | ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | kube-apiserver of CCE 1.19 or later requires that the Subject Alternative Names (SANs) field be configured for the certificate of your webhook server. Otherwise, kube-apiserver fails to call the webhook server after the upgrade, and containers cannot be started properly. | Before the upgrade, check whether the SAN field is configured in the certificate of your webhook server. | +| | | | +| | Root cause: X.509 `CommonName `__ is discarded in Go 1.15. kube-apiserver of CCE 1.19 is compiled using Go 1.15. The **CommonName** field is processed as the host name. As a result, the authentication fails. | - If you do not have your own webhook server, you can skip this check. | +| | | - If the field is not set, you are advised to use the SAN field to specify the IP address and domain name supported by the certificate. | +| | | | +| | | .. important:: | +| | | | +| | | NOTICE: | +| | | To mitigate the impact of version differences on cluster upgrade, CCE performs special processing during the upgrade from 1.15 to 1.19 and still supports certificates without SANs. However, no special processing is required for subsequent upgrades. You are advised to rectify your certificate as soon as possible. | ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | In clusters of v1.17.17 and later, CCE automatically creates pod security policies (PSPs) for you, which restrict the creation of pods with unsafe configurations, for example, pods for which **net.core.somaxconn** under a sysctl is configured in the security context. | After an upgrade, you can allow insecure system configurations as required. For details, see :ref:`Configuring a Pod Security Policy `. | ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | If initContainer or Istio is used in the in-place upgrade of a cluster of v1.15, pay attention to the following restrictions: | You are advised to modify the QoS class of the service container before the upgrade to avoid this problem. For details, see :ref:`Table 4 `. | +| | | | +| | In kubelet 1.16 and later versions, `QoS classes `__ are different from those in earlier versions. In kubelet 1.15 and earlier versions, only containers in **spec.containers** are counted. In kubelet 1.16 and later versions, containers in both **spec.containers** and **spec.initContainers** are counted. The QoS class of a pod will change after the upgrade. As a result, the container in the pod restarts. | | ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| v1.13 to v1.15 | After a VPC network cluster is upgraded, the master node occupies an extra CIDR block due to the upgrade of network components. If no container CIDR block is available for the new node, the pod scheduled to the node cannot run. | Generally, this problem occurs when the nodes in the cluster are about to fully occupy the container CIDR block. For example, the container CIDR block is 10.0.0.0/16, the number of available IP addresses is 65,536, and the VPC network is allocated a CIDR block with the fixed size (using the mask to determine the maximum number of container IP addresses allocated to each node). If the upper limit is 128, the cluster supports a maximum of 512 (65536/128) nodes, including the three master nodes. After the cluster is upgraded, each of the three master nodes occupies one CIDR block. As a result, 506 nodes are supported. | ++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. _cce_10_0302__table10713231143911: + +.. table:: **Table 4** QoS class changes before and after the upgrade + + +----------------------------------------------------------+---------------------------------------------------------+-------------------------------------------------------------------+-----------------+ + | Init Container (Calculated Based on spec.initContainers) | Service Container (Calculated Based on spec.containers) | Pod (Calculated Based on spec.containers and spec.initContainers) | Impacted or Not | + +==========================================================+=========================================================+===================================================================+=================+ + | Guaranteed | Besteffort | Burstable | Yes | + +----------------------------------------------------------+---------------------------------------------------------+-------------------------------------------------------------------+-----------------+ + | Guaranteed | Burstable | Burstable | No | + +----------------------------------------------------------+---------------------------------------------------------+-------------------------------------------------------------------+-----------------+ + | Guaranteed | Guaranteed | Guaranteed | No | + +----------------------------------------------------------+---------------------------------------------------------+-------------------------------------------------------------------+-----------------+ + | Besteffort | Besteffort | Besteffort | No | + +----------------------------------------------------------+---------------------------------------------------------+-------------------------------------------------------------------+-----------------+ + | Besteffort | Burstable | Burstable | No | + +----------------------------------------------------------+---------------------------------------------------------+-------------------------------------------------------------------+-----------------+ + | Besteffort | Guaranteed | Burstable | Yes | + +----------------------------------------------------------+---------------------------------------------------------+-------------------------------------------------------------------+-----------------+ + | Burstable | Besteffort | Burstable | Yes | + +----------------------------------------------------------+---------------------------------------------------------+-------------------------------------------------------------------+-----------------+ + | Burstable | Burstable | Burstable | No | + +----------------------------------------------------------+---------------------------------------------------------+-------------------------------------------------------------------+-----------------+ + | Burstable | Guaranteed | Burstable | Yes | + +----------------------------------------------------------+---------------------------------------------------------+-------------------------------------------------------------------+-----------------+ Upgrade Backup -------------- diff --git a/umn/source/clusters/upgrading_a_cluster/index.rst b/umn/source/clusters/upgrading_a_cluster/index.rst index b484737..d50e3a5 100644 --- a/umn/source/clusters/upgrading_a_cluster/index.rst +++ b/umn/source/clusters/upgrading_a_cluster/index.rst @@ -7,9 +7,8 @@ Upgrading a Cluster - :ref:`Upgrade Overview ` - :ref:`Before You Start ` -- :ref:`Post-Upgrade Verification ` -- :ref:`Performing Replace or Rolling Upgrade ` - :ref:`Performing In-place Upgrade ` +- :ref:`Performing Post-Upgrade Verification ` - :ref:`Migrating Services Across Clusters of Different Versions ` - :ref:`Troubleshooting for Pre-upgrade Check Exceptions ` @@ -19,8 +18,7 @@ Upgrading a Cluster upgrade_overview before_you_start - post-upgrade_verification/index - performing_replace_or_rolling_upgrade performing_in-place_upgrade + performing_post-upgrade_verification/index migrating_services_across_clusters_of_different_versions troubleshooting_for_pre-upgrade_check_exceptions/index diff --git a/umn/source/clusters/upgrading_a_cluster/migrating_services_across_clusters_of_different_versions.rst b/umn/source/clusters/upgrading_a_cluster/migrating_services_across_clusters_of_different_versions.rst index e0c092a..3ecc417 100644 --- a/umn/source/clusters/upgrading_a_cluster/migrating_services_across_clusters_of_different_versions.rst +++ b/umn/source/clusters/upgrading_a_cluster/migrating_services_across_clusters_of_different_versions.rst @@ -17,28 +17,28 @@ Prerequisites .. table:: **Table 1** Checklist before migration - +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Category | Description | - +===================================+============================================================================================================================================================================================================================================+ - | Cluster | NodeIP-related: Check whether node IP addresses (including EIPs) of the cluster before the migration have been used in other configurations or whitelists. | - +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Workloads | Record the number of workloads for post-migration check. | - +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Storage | #. Check whether the storage resources in use are provisioned by the cloud or by your organization. | - | | #. Change the automatically created storage to the existing storage in the new cluster. | - +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Network | #. Pay special attention to the ELB and ingress. | - | | #. Clusters of an earlier version support only the classic load balancer. To migrate services to a new cluster, you need to change load balancer type to shared load balancer. Then, the corresponding ELB service will be re-established. | - +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | O&M | Private configuration: Check whether kernel parameters or system data have been configured on nodes in the cluster. | - +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Category | Description | + +===================================+================================================================================================================================================================================================================================+ + | Cluster | NodeIP-related: Check whether node IP addresses (including EIPs) of the cluster before the migration have been used in other configurations or whitelists. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Workloads | Record the number of workloads for post-migration check. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Storage | #. Check whether the storage resources in use are provisioned by the cloud or by your organization. | + | | #. Change the automatically created storage to the existing storage in the new cluster. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Network | #. Pay special attention to the ELB and ingress. | + | | #. Clusters of an earlier version support only the classic load balancer. To migrate services to a new cluster, change load balancer type to shared load balancer. Then, the corresponding ELB service will be re-established. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | O&M | Private configuration: Check whether kernel parameters or system data have been configured on nodes in the cluster. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ Procedure --------- #. **Create a CCE cluster.** - Create a cluster with the same specifications and configurations as the cluster of the earlier version. For details, see :ref:`Creating a CCE Cluster `. + Create a cluster with the same specifications and configurations as the cluster of the earlier version. For details, see :ref:`Creating a Cluster `. #. **Add a node.** @@ -46,19 +46,23 @@ Procedure #. **Create a storage volume in the new cluster.** - Use an existing storage volume to create a PVC in the new cluster. The PVC name remains unchanged. For details, see :ref:`PVCs `. + Use an existing storage volume to create a PVC in the new cluster. The PVC name remains unchanged. For details, see :ref:`Using an Existing OBS Bucket Through a Static PV ` or :ref:`Using an Existing SFS Turbo File System Through a Static PV `. .. note:: - Storage switching supports only OBS buckets, SFS file systems, and shared EVS disks. If a non-shared EVS disk is used, you need to suspend the workloads in the old cluster to switch the storage resources. As a result, services will be interrupted. + Storage switching supports only OBS buckets and SFS Turbo file systems. If non-shared storage is used, suspend the workloads in the old cluster to switch the storage resources. As a result, services will be unavailable. #. **Create a workload in the new cluster.** - The workload name and specifications remain unchanged. For details about how to create a workload, see :ref:`Creating a Deployment ` or :ref:`Creating a StatefulSet `. For details about how to attach a storage volume to the workload, see :ref:`Creating a Deployment Mounted with an EVS Volume `. + The workload name and specifications remain unchanged. For details about how to create a workload, see :ref:`Creating a Deployment ` or :ref:`Creating a StatefulSet `. + +#. **Mount the storage again.** + + Mount the existing storage in the workload again. For details, see :ref:`Using an Existing OBS Bucket Through a Static PV ` or :ref:`Using an Existing SFS Turbo File System Through a Static PV `. #. **Create a Service in the new cluster.** - The Service name and specifications remain unchanged. For details about how to create a Service, see :ref:`Services `. + The Service name and specifications remain unchanged. For details about how to create a Service, see :ref:`Service `. #. **Commission services.** diff --git a/umn/source/clusters/upgrading_a_cluster/performing_in-place_upgrade.rst b/umn/source/clusters/upgrading_a_cluster/performing_in-place_upgrade.rst index c6a766c..78ce0ba 100644 --- a/umn/source/clusters/upgrading_a_cluster/performing_in-place_upgrade.rst +++ b/umn/source/clusters/upgrading_a_cluster/performing_in-place_upgrade.rst @@ -5,9 +5,6 @@ Performing In-place Upgrade =========================== -Scenario --------- - You can upgrade your clusters to a newer version on the CCE console. Before the upgrade, learn about the target version to which each CCE cluster can be upgraded in what ways, and the upgrade impacts. For details, see :ref:`Upgrade Overview ` and :ref:`Before You Start `. @@ -16,14 +13,14 @@ Description ----------- - An in-place upgrade updates the Kubernetes components on cluster nodes, without changing their OS version. -- Data plane nodes are upgraded in batches. By default, they are prioritized based on their CPU, memory, and PDB (Pod Disruption Budget, which is `Specifying a Disruption Budget for your Application `__). You can also set the priorities according to your service requirements. +- Data plane nodes are upgraded in batches. By default, they are prioritized based on their CPU, memory, and `PodDisruptionBudgets (PDBs) `__. You can also set the priorities according to your service requirements. Precautions ----------- - During the cluster upgrade, the system will automatically upgrade add-ons to a version compatible with the target cluster version. Do not uninstall or reinstall add-ons during the cluster upgrade. - Before the upgrade, ensure that all add-ons are running. If an add-on fails to be upgraded, rectify the fault and try again. -- During the upgrade, CCE checks the add-on running status. Some add-ons (such as coredns) require at least two nodes to run normally. In this case, at least two nodes must be available for the upgrade. +- During the upgrade, CCE checks the add-on running status. Some add-ons (such as CoreDNS) require at least two nodes to run normally. In this case, at least two nodes must be available for the upgrade. For more information, see :ref:`Before You Start `. @@ -34,7 +31,7 @@ The cluster upgrade goes through check, backup, configuration and upgrade, and v #. Log in to the CCE console and click the cluster name to access the cluster console. -#. In the navigation pane, choose **Cluster Upgrade**. You can view the recommended version on the right. +#. In the navigation pane, choose **Cluster Upgrade**. #. Select the cluster version to be upgraded and click **Check**. @@ -44,14 +41,16 @@ The cluster upgrade goes through check, backup, configuration and upgrade, and v - If your cluster has a new major version, you can select a version as required. - If your cluster is of the latest version, the check entry will be hidden. -#. Click **Start Check** and confirm the check. If there are abnormal or risky items in the cluster, handle the exceptions based on the check results displayed on the page and check again. +#. Perform the pre-upgrade check. Click **Start Check** and confirm the check. If there are abnormal or risky items in the cluster, handle the exceptions based on the check results displayed on the page and check again. - **Exceptions**: View the solution displayed on the page, handle the exceptions and check again. - **Risk Items**: may affect the cluster upgrade. Check the risk description and see whether you may be impacted. If no risk exists, click **OK** next to the risk item to manually skip this risk item and check again. After the check is passed, click **Next: Back Up**. -#. (Optional) Manually back up the data. Data is backed up during the upgrade following a default policy. You can click **Back Up** to manually back up data. If you do not need to manually back up data, click **Next: Configure & Upgrade**. +#. (Optional) Manually back up the cluster data. Data is backed up during the upgrade following a default policy. You can click **Back Up** to manually back up data. If you do not need to manually back up data, click **Next: Configure & Upgrade**. + + Manual backup will back up the entire master node. The backup process uses the Cloud Backup and Recovery (CBR) service and takes about 20 minutes. If there are many cloud backup tasks at the current site, the backup may take longer. The cluster cannot be upgraded during the backup. #. Configure the upgrade parameters. @@ -62,7 +61,7 @@ The cluster upgrade goes through check, backup, configuration and upgrade, and v If a red dot |image1| is displayed on the right of an add-on, the add-on is incompatible with the target cluster version. During the upgrade, the add-on will be uninstalled and then re-installed. Ensure that the add-on parameters are correctly configured. - **Node Upgrade Configuration:** You can set the maximum number of nodes to be upgraded in a batch. - - **Node Priority:** You can set priorities for nodes to be upgraded. If you do not set this parameter, the system will determine the nodes to upgrade in batches based on specific conditions. Before setting the node upgrade priority, you need to select a node pool. Nodes and node pools will be upgraded according to the priorities you specify. + - **Node Priority:** You can set priorities for nodes to be upgraded. If you do not set this parameter, the system will determine the nodes to upgrade in batches based on specific conditions. Before setting the node upgrade priority, select a node pool. Nodes and node pools will be upgraded according to the priorities you specify. - **Add Upgrade Priority**: Add upgrade priorities for node pools. - **Add Node Priority**: After adding a node pool priority, you can set the upgrade sequence of nodes in the node pool. The system upgrades nodes in the sequence you specify. If you skip this setting, the system upgrades nodes based on the default policy. @@ -79,4 +78,4 @@ The cluster upgrade goes through check, backup, configuration and upgrade, and v You can verify the cluster Kubernetes version on the **Clusters** page. -.. |image1| image:: /_static/images/en-us_image_0000001517743672.png +.. |image1| image:: /_static/images/en-us_image_0000001695737489.png diff --git a/umn/source/clusters/upgrading_a_cluster/post-upgrade_verification/index.rst b/umn/source/clusters/upgrading_a_cluster/performing_post-upgrade_verification/index.rst similarity index 88% rename from umn/source/clusters/upgrading_a_cluster/post-upgrade_verification/index.rst rename to umn/source/clusters/upgrading_a_cluster/performing_post-upgrade_verification/index.rst index 095e6cd..bc3cd00 100644 --- a/umn/source/clusters/upgrading_a_cluster/post-upgrade_verification/index.rst +++ b/umn/source/clusters/upgrading_a_cluster/performing_post-upgrade_verification/index.rst @@ -2,8 +2,8 @@ .. _cce_10_0560: -Post-Upgrade Verification -========================= +Performing Post-Upgrade Verification +==================================== - :ref:`Service Verification ` - :ref:`Pod Check ` diff --git a/umn/source/clusters/upgrading_a_cluster/post-upgrade_verification/new_node_check.rst b/umn/source/clusters/upgrading_a_cluster/performing_post-upgrade_verification/new_node_check.rst similarity index 59% rename from umn/source/clusters/upgrading_a_cluster/post-upgrade_verification/new_node_check.rst rename to umn/source/clusters/upgrading_a_cluster/performing_post-upgrade_verification/new_node_check.rst index 4dc1a13..0befbf6 100644 --- a/umn/source/clusters/upgrading_a_cluster/post-upgrade_verification/new_node_check.rst +++ b/umn/source/clusters/upgrading_a_cluster/performing_post-upgrade_verification/new_node_check.rst @@ -13,7 +13,7 @@ Check whether nodes can be created in the cluster. Procedure --------- -Go to the CCE console and access the cluster console. Choose **Nodes** in the navigation pane, and click **Create Node**. +Log in to the CCE console and access the cluster console. Choose **Nodes** in the navigation pane, and click **Create Node**. For details about node configurations, see :ref:`Creating a Node `. Solution -------- diff --git a/umn/source/clusters/upgrading_a_cluster/post-upgrade_verification/new_pod_check.rst b/umn/source/clusters/upgrading_a_cluster/performing_post-upgrade_verification/new_pod_check.rst similarity index 92% rename from umn/source/clusters/upgrading_a_cluster/post-upgrade_verification/new_pod_check.rst rename to umn/source/clusters/upgrading_a_cluster/performing_post-upgrade_verification/new_pod_check.rst index 1a7f45c..fe92b6a 100644 --- a/umn/source/clusters/upgrading_a_cluster/post-upgrade_verification/new_pod_check.rst +++ b/umn/source/clusters/upgrading_a_cluster/performing_post-upgrade_verification/new_pod_check.rst @@ -16,13 +16,13 @@ Procedure After creating a node based on :ref:`New Node Check `, create a DaemonSet workload to create pods on each node. -Go to the CCE console, access the cluster console, and choose **Workloads** in the navigation pane. On the displayed page, switch to the **DaemonSets** tab page and click **Create Workload** or **Create from YAML** in the upper right corner. +Go to the CCE console, access the cluster console, and choose **Workloads** in the navigation pane. On the displayed page, switch to the **DaemonSets** tab page and click **Create Workload** or **Create from YAML** in the upper right corner. For details, see :ref:`Creating a DaemonSet `. You are advised to use the image for routine tests as the base image. You can deploy a pod by referring to the following YAML file. .. note:: - In this test, YAML deploys DaemonSet in the default namespace, uses **ngxin:perl** as the base image, requests 10 MB CPU and 10 Mi memory, and limits 100 MB CPU and 50 Mi memory. + In this test, YAML deploys DaemonSet in the default namespace, uses **ngxin:perl** as the base image, requests 10 MB CPU and 10 MiB memory, and limits 100 MB CPU and 50 MiB memory. .. code-block:: diff --git a/umn/source/clusters/upgrading_a_cluster/post-upgrade_verification/node_and_container_network_check.rst b/umn/source/clusters/upgrading_a_cluster/performing_post-upgrade_verification/node_and_container_network_check.rst similarity index 82% rename from umn/source/clusters/upgrading_a_cluster/post-upgrade_verification/node_and_container_network_check.rst rename to umn/source/clusters/upgrading_a_cluster/performing_post-upgrade_verification/node_and_container_network_check.rst index 2c5db59..541655b 100644 --- a/umn/source/clusters/upgrading_a_cluster/post-upgrade_verification/node_and_container_network_check.rst +++ b/umn/source/clusters/upgrading_a_cluster/performing_post-upgrade_verification/node_and_container_network_check.rst @@ -19,8 +19,6 @@ The node status reflects whether the node component or network is normal. Go to the CCE console and access the cluster console. Choose **Nodes** in the navigation pane. You can filter node status by status to check whether there are abnormal nodes. -|image1| - The container network affects services. Check whether your services are available. Solution @@ -30,39 +28,37 @@ If the node status is abnormal, contact technical support. If the container network is abnormal and your services are affected, contact technical support and confirm the abnormal network access path. -+----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| Source | Destination | Destination Type | Possible Fault | -+==============================================+==============================================================================+======================================+======================================================================================================================================+ -| - Pods (inside a cluster) | Public IP address of Service ELB | Cluster traffic load balancing entry | No record. | -| - Nodes (inside a cluster) | | | | -| - Nodes in the same VPC (outside a cluster) | | | | -| - Other sources | | | | -+----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| | Private IP address of Service ELB | Cluster traffic load balancing entry | No record. | -+----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| | Public IP address of ingress ELB | Cluster traffic load balancing entry | No record. | -+----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| | Private IP address of ingress ELB | Cluster traffic load balancing entry | No record. | -+----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| | Public IP address of NodePort Service | Cluster traffic entry | The kube proxy configuration is overwritten. This fault has been rectified in the upgrade process. | -+----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| | Private IP address of NodePort Service | Cluster traffic entry | No record. | -+----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| | ClusterIP Service | Service network plane | No record. | -+----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| | Non NodePort Service port | Container network | No record. | -+----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| | Cross-node pods | Container network plane | No record. | -+----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| | Pods on the same node | Container network plane | No record. | -+----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| | Service and pod domain names are resolved by CoreDNS. | Domain name resolution | No record. | -+----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| | External domain names are resolved based on the CoreDNS hosts configuration. | Domain name resolution | After the coredns add-on is upgraded, the configuration is overwritten. This fault has been rectified in the add-on upgrade process. | -+----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| | External domain names are resolved based on the CoreDNS upstream server. | Domain name resolution | After the coredns add-on is upgraded, the configuration is overwritten. This fault has been rectified in the add-on upgrade process. | -+----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ -| | External domain names are not resolved by CoreDNS. | Domain name resolution | No record. | -+----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ - -.. |image1| image:: /_static/images/en-us_image_0000001518062524.png ++----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+---------------------------------------------------------------------------------------------------------------------------+ +| Source | Destination | Destination Type | Possible Fault | ++==============================================+==============================================================================+======================================+===========================================================================================================================+ +| - Pods (inside a cluster) | Public IP address of Service ELB | Cluster traffic load balancing entry | No record. | +| - Nodes (inside a cluster) | | | | +| - Nodes in the same VPC (outside a cluster) | | | | +| - Third-party clouds | | | | ++----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+---------------------------------------------------------------------------------------------------------------------------+ +| | Private IP address of Service ELB | Cluster traffic load balancing entry | No record. | ++----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+---------------------------------------------------------------------------------------------------------------------------+ +| | Public IP address of ingress ELB | Cluster traffic load balancing entry | No record. | ++----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+---------------------------------------------------------------------------------------------------------------------------+ +| | Private IP address of ingress ELB | Cluster traffic load balancing entry | No record. | ++----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+---------------------------------------------------------------------------------------------------------------------------+ +| | Public IP address of NodePort Service | Cluster traffic entry | The kube proxy configuration is overwritten. This fault has been rectified in the upgrade process. | ++----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+---------------------------------------------------------------------------------------------------------------------------+ +| | Private IP address of NodePort Service | Cluster traffic entry | No record. | ++----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+---------------------------------------------------------------------------------------------------------------------------+ +| | ClusterIP Service | Service network plane | No record. | ++----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+---------------------------------------------------------------------------------------------------------------------------+ +| | Non NodePort Service port | Container network | No record. | ++----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+---------------------------------------------------------------------------------------------------------------------------+ +| | Cross-node pods | Container network plane | No record. | ++----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+---------------------------------------------------------------------------------------------------------------------------+ +| | Pods on the same node | Container network plane | No record. | ++----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+---------------------------------------------------------------------------------------------------------------------------+ +| | Service and pod domain names are resolved by CoreDNS. | Domain name resolution | No record. | ++----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+---------------------------------------------------------------------------------------------------------------------------+ +| | External domain names are resolved based on the CoreDNS hosts configuration. | Domain name resolution | After CoreDNS is upgraded, the configuration is overwritten. This fault has been rectified in the add-on upgrade process. | ++----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+---------------------------------------------------------------------------------------------------------------------------+ +| | External domain names are resolved based on the CoreDNS upstream server. | Domain name resolution | After CoreDNS is upgraded, the configuration is overwritten. This fault has been rectified in the add-on upgrade process. | ++----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+---------------------------------------------------------------------------------------------------------------------------+ +| | External domain names are not resolved by CoreDNS. | Domain name resolution | No record. | ++----------------------------------------------+------------------------------------------------------------------------------+--------------------------------------+---------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/clusters/upgrading_a_cluster/post-upgrade_verification/node_label_and_taint_check.rst b/umn/source/clusters/upgrading_a_cluster/performing_post-upgrade_verification/node_label_and_taint_check.rst similarity index 69% rename from umn/source/clusters/upgrading_a_cluster/post-upgrade_verification/node_label_and_taint_check.rst rename to umn/source/clusters/upgrading_a_cluster/performing_post-upgrade_verification/node_label_and_taint_check.rst index 61234d3..914eea2 100644 --- a/umn/source/clusters/upgrading_a_cluster/post-upgrade_verification/node_label_and_taint_check.rst +++ b/umn/source/clusters/upgrading_a_cluster/performing_post-upgrade_verification/node_label_and_taint_check.rst @@ -8,8 +8,8 @@ Node Label and Taint Check Check Item ---------- -- Check whether the label is lost. -- Check whether there are unexpected taints. +- Check whether custom node labels are lost. +- Check whether there are any unexpected taints newly added on the node, which will affect workload scheduling. Procedure --------- @@ -19,7 +19,7 @@ Go to the CCE console, access the cluster console, and choose **Nodes** in the n Solution -------- -User labels are not changed during the cluster upgrade. If you find that labels are lost or added abnormally, contact technical support. +Custom labels will not be changed during a cluster upgrade. If you find that labels are lost or added unexpectedly, contact technical support. If you find a new taint (**node.kubernetes.io/upgrade**) on a node, the node may be skipped during the upgrade. For details, see :ref:`Node Skipping Check for Reset `. diff --git a/umn/source/clusters/upgrading_a_cluster/post-upgrade_verification/node_skipping_check_for_reset.rst b/umn/source/clusters/upgrading_a_cluster/performing_post-upgrade_verification/node_skipping_check_for_reset.rst similarity index 89% rename from umn/source/clusters/upgrading_a_cluster/post-upgrade_verification/node_skipping_check_for_reset.rst rename to umn/source/clusters/upgrading_a_cluster/performing_post-upgrade_verification/node_skipping_check_for_reset.rst index 69ab900..4ffe8db 100644 --- a/umn/source/clusters/upgrading_a_cluster/post-upgrade_verification/node_skipping_check_for_reset.rst +++ b/umn/source/clusters/upgrading_a_cluster/performing_post-upgrade_verification/node_skipping_check_for_reset.rst @@ -8,7 +8,7 @@ Node Skipping Check for Reset Check Item ---------- -After the cluster is upgraded, you need to reset the nodes that fail to be upgraded. +After the cluster is upgraded, reset the nodes that fail to be upgraded. Procedure --------- diff --git a/umn/source/clusters/upgrading_a_cluster/performing_post-upgrade_verification/pod_check.rst b/umn/source/clusters/upgrading_a_cluster/performing_post-upgrade_verification/pod_check.rst new file mode 100644 index 0000000..33c6a0c --- /dev/null +++ b/umn/source/clusters/upgrading_a_cluster/performing_post-upgrade_verification/pod_check.rst @@ -0,0 +1,24 @@ +:original_name: cce_10_0562.html + +.. _cce_10_0562: + +Pod Check +========= + +Check Item +---------- + +- Check whether there are unexpected pods in the cluster. +- Check whether there are any pods that ran properly originally in the cluster restart unexpectedly. + +Procedure +--------- + +Log in to the CCE console and access the cluster console. Choose **Workloads** in the navigation pane. On the displayed page, switch to the **Pods** tab page. Select all namespaces, click **Status**, and check whether there are any abnormal pods. + +View the **Restarts** column to check whether there are pods that are restarted abnormally. + +Solution +-------- + +If there are abnormal pods in your cluster after the cluster upgrade, contact technical support. diff --git a/umn/source/clusters/upgrading_a_cluster/post-upgrade_verification/service_verification.rst b/umn/source/clusters/upgrading_a_cluster/performing_post-upgrade_verification/service_verification.rst similarity index 100% rename from umn/source/clusters/upgrading_a_cluster/post-upgrade_verification/service_verification.rst rename to umn/source/clusters/upgrading_a_cluster/performing_post-upgrade_verification/service_verification.rst diff --git a/umn/source/clusters/upgrading_a_cluster/performing_replace_or_rolling_upgrade.rst b/umn/source/clusters/upgrading_a_cluster/performing_replace_or_rolling_upgrade.rst deleted file mode 100644 index 2be4812..0000000 --- a/umn/source/clusters/upgrading_a_cluster/performing_replace_or_rolling_upgrade.rst +++ /dev/null @@ -1,95 +0,0 @@ -:original_name: cce_10_0120.html - -.. _cce_10_0120: - -Performing Replace or Rolling Upgrade -===================================== - -Scenario --------- - -You can upgrade your clusters to a newer Kubernetes version on the CCE console. - -Before the upgrade, learn about the target version to which each CCE cluster can be upgraded in what ways, and the upgrade impacts. For details, see :ref:`Upgrade Overview ` and :ref:`Before You Start `. - -Precautions ------------ - -- If the coredns add-on needs to be upgraded during the cluster upgrade, ensure that the number of nodes is greater than or equal to the number of coredns instances and all coredns instances are running. Otherwise, the upgrade will fail. Before upgrading a cluster of v1.13, you need to upgrade the coredns add-on to the latest version available for the cluster. -- When a cluster of v1.11 or earlier is upgraded to v1.13, the impacts on the cluster are as follows: - - - All cluster nodes will be restarted as their OSs are upgraded, which affects application running. - - The cluster signature certificate mechanism is changed. As a result, the original cluster certificate becomes invalid. You need to obtain the certificate or kubeconfig file again after the cluster is upgraded. - -- During the upgrade from one release of v1.13 to a later release of v1.13, applications in the cluster are interrupted for a short period of time only during the upgrade of network components. -- During the upgrade from Kubernetes 1.9 to 1.11, the kube-dns of the cluster will be uninstalled and replaced with CoreDNS, which may cause loss of the cascading DNS configuration in the kube-dns or temporary interruption of the DNS service. Back up the DNS address configured in the kube-dns so you can configure the domain name in the CoreDNS again when domain name resolution is abnormal. - -Procedure ---------- - -#. Log in to the CCE console and click the cluster name to access the cluster. - -#. In the navigation pane, choose **Cluster Upgrade**. You can view the new version available for upgrade on the right. Click **Upgrade**. - - .. note:: - - - If your cluster version is up-to-date, the **Upgrade** button is grayed out. - - If your cluster status is abnormal or there are abnormal add-ons, the **Upgrade** button is dimmed. Perform a check by referring to :ref:`Before You Start `. - -#. In the displayed **Pre-upgrade Check** dialog box, click **Check Now**. - -#. The pre-upgrade check starts. While the pre-upgrade check is in progress, the cluster status will change to **Pre-checking** and new nodes/applications will not be able to be deployed on the cluster. However, existing nodes and applications will not be affected. It takes 3 to 5 minutes to complete the pre-upgrade check. - -#. When the status of the pre-upgrade check is **Completed**, click **Upgrade Now**. - -#. On the cluster upgrade page, review or configure basic information by referring to :ref:`Table 1 `. - - .. _cce_10_0120__table924319911495: - - .. table:: **Table 1** Basic information - - +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+===================================================================================================================================================================================================+ - | Cluster Name | Review the name of the cluster to be upgraded. | - +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Current Version | Review the version of the cluster to be upgraded. | - +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Target Version | Review the target version after the upgrade. | - +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Node Upgrade Policy | **Replace** (replace upgrade): Worker nodes will be reset. Their OSs will be reinstalled, and data on the system and data disks will be cleared. Exercise caution when performing this operation. | - | | | - | | .. note:: | - | | | - | | - The lifecycle management function of the nodes and workloads in the cluster is unavailable. | - | | - APIs cannot be called temporarily. | - | | - Running workloads will be interrupted because nodes are reset during the upgrade. | - | | - Data in the system and data disks on the worker nodes will be cleared. Back up important data before resetting the nodes. | - | | - Data disks without LVM mounted to worker nodes need to be mounted again after the upgrade, and data on the disks will not be lost during the upgrade. | - | | - The EVS disk quota must be greater than 0. | - | | - The container IP addresses change, but the communication between containers is not affected. | - | | - Custom labels on the worker nodes will be cleared. | - | | - It takes about 12 minutes to complete the cluster upgrade. | - +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Login Mode | **Key Pair** | - | | | - | | Select the key pair used to log in to the node. You can select a shared key. | - | | | - | | A key pair is used for identity authentication when you remotely log in to a node. If no key pair is available, click **Create Key Pair**. | - +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -#. Click **Next**. In the dialog box displayed, click **OK**. - -#. Upgrade add-ons. If an add-on needs to be upgraded, a red dot is displayed. Click the **Upgrade** button in the lower left corner of the add-on card view. After the upgrade is complete, click **Upgrade** in the lower right corner of the page. - - .. note:: - - - Master nodes will be upgraded first, and then the worker nodes will be upgraded concurrently. If there are a large number of worker nodes, they will be upgraded in different batches. - - Select a proper time window for the upgrade to reduce impacts on services. - - Clicking **OK** will start the upgrade immediately, and the upgrade cannot be canceled. Do not shut down or restart nodes during the upgrade. - -#. In the displayed **Upgrade** dialog box, read the information and click **OK**. Note that the cluster cannot be rolled back after the upgrade. - -#. Back to the cluster list, you can see that the cluster status is **Upgrading**. Wait until the upgrade is completed. - - After the upgrade is successful, you can view the cluster status and version on the cluster list or cluster details page. diff --git a/umn/source/clusters/upgrading_a_cluster/post-upgrade_verification/pod_check.rst b/umn/source/clusters/upgrading_a_cluster/post-upgrade_verification/pod_check.rst deleted file mode 100644 index c3740f5..0000000 --- a/umn/source/clusters/upgrading_a_cluster/post-upgrade_verification/pod_check.rst +++ /dev/null @@ -1,31 +0,0 @@ -:original_name: cce_10_0562.html - -.. _cce_10_0562: - -Pod Check -========= - -Check Item ----------- - -- Check whether unexpected pods exist in the cluster. -- Check whether there are pods restart unexpectedly in the cluster. - -Procedure ---------- - -Go to the CCE console and access the cluster console. Choose **Workloads** in the navigation pane. On the displayed page, switch to the **Pods** tab page. Select **All namespaces**, click **Status**, and check whether abnormal pods exist. - -|image1| - -View the **Restarts** column to check whether there are pods that are restarted abnormally. - -|image2| - -Solution --------- - -If there are abnormal pods in your cluster after the cluster upgrade, contact technical support. - -.. |image1| image:: /_static/images/en-us_image_0000001518222492.png -.. |image2| image:: /_static/images/en-us_image_0000001518062540.png diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/add-ons.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/add-ons.rst new file mode 100644 index 0000000..fe11e71 --- /dev/null +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/add-ons.rst @@ -0,0 +1,35 @@ +:original_name: cce_10_0433.html + +.. _cce_10_0433: + +Add-ons +======= + +Check Item +---------- + +Check the following aspects: + +- Check whether the add-on status is normal. +- Check whether the add-on support the target version. + +Solution +-------- + +- **Scenario 1: The add-on status is abnormal.** + + Log in to the CCE console and go to the target cluster. Choose **O&M** > **Add-ons** to view and handle the abnormal add-on. + +- **Scenario 2: The target version does not support the current add-on.** + + The add-on cannot be automatically upgraded with the cluster. Log in to the CCE console and go to the target cluster. Choose **O&M** > **Add-ons** to manually upgrade the add-on. + +- **Scenario 3: After the add-on is upgraded to the latest version, the target cluster version is still not supported.** + + Log in to the CCE console and go to the target cluster. Choose **O&M** > **Add-ons** to manually uninstall the add-on. For details about the supported add-on versions and replacement solutions, see the :ref:`Help ` document. + +- **Scenario 4: The add-on configuration does not meet the upgrade requirements. Upgrade the add-on and try again.** + + As shown in the following figure, the error message "please upgrade addon [ ] in the page of addon managecheck and try again" is displayed during the pre-upgrade check. + + Log in to the CCE console and go to the target cluster. Choose **O&M** > **Add-ons** to manually upgrade the add-on. diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_the_blocklist.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/blocklist.rst similarity index 91% rename from umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_the_blocklist.rst rename to umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/blocklist.rst index 132914b..5b5b8a6 100644 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_the_blocklist.rst +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/blocklist.rst @@ -2,8 +2,8 @@ .. _cce_10_0432: -Checking the Blocklist -====================== +Blocklist +========= Check Item ---------- diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/cce-hpa-controller_restriction_check.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/cce-hpa-controller_restrictions.rst similarity index 82% rename from umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/cce-hpa-controller_restriction_check.rst rename to umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/cce-hpa-controller_restrictions.rst index d814ec8..0a01985 100644 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/cce-hpa-controller_restriction_check.rst +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/cce-hpa-controller_restrictions.rst @@ -2,8 +2,8 @@ .. _cce_10_0479: -cce-hpa-controller Restriction Check -==================================== +cce-hpa-controller Restrictions +=============================== Check Item ---------- diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_the_add-on.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_the_add-on.rst deleted file mode 100644 index 380b24b..0000000 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_the_add-on.rst +++ /dev/null @@ -1,29 +0,0 @@ -:original_name: cce_10_0433.html - -.. _cce_10_0433: - -Checking the Add-on -=================== - -Check Item ----------- - -Check the following aspects: - -- Check whether the add-on status is normal. -- Check whether the add-on supports the target version. - -Solution --------- - -- **Scenario 1: The add-on status is abnormal.** - - Log in to the CCE console and go to the target cluster. Choose **O&M** > **Add-ons** to view and handle the abnormal add-on. - -- **Scenario 2: The target version does not support the current add-on.** - - The add-on cannot be automatically upgraded with the cluster. Log in to the CCE console and go to the target cluster. Choose **O&M** > **Add-ons** to manually upgrade the add-on. - -- **Scenario 3: The add-on does not support the target cluster even if the add-on is upgraded to the latest version. In this case, go to the cluster console and choose Cluster Information > O&M > Add-ons in the navigation pane to manually uninstall the add-on.** - - For details about the supported add-on versions and replacement solutions, see the :ref:`help document `. diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_the_node.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_the_node.rst deleted file mode 100644 index 7d517e9..0000000 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_the_node.rst +++ /dev/null @@ -1,58 +0,0 @@ -:original_name: cce_10_0431.html - -.. _cce_10_0431: - -Checking the Node -================= - -Check Item ----------- - -Check the following aspects: - -- Check whether the node is available. -- Check whether the node OS supports the upgrade. -- Check whether there are unexpected node pool tags in the node. -- Check whether the Kubernetes node name is consistent with the ECS name. - -Solution --------- - -- **Scenario 1: The node is unavailable.** - - Log in to the CCE console and access the cluster console. Choose **Nodes** in the navigation pane and check the node status. Ensure that the node is in the **Running** status. A node in the **Installing** or **Deleting** status cannot be upgraded. - - If the node status is abnormal, restore the node and retry the check task. - -- **Scenario 2: The node OS does not support the upgrade.** - - The following table lists the node OSs that support the upgrade. You can reset the node OS to an available OS in the list. - - .. table:: **Table 1** OSs that support the upgrade - - +--------------+-----------------------------------------------------------------------------------------------------------------------+ - | OS | Restriction | - +==============+=======================================================================================================================+ - | EulerOS 2.x | None | - +--------------+-----------------------------------------------------------------------------------------------------------------------+ - | CentOS 7.x | None | - +--------------+-----------------------------------------------------------------------------------------------------------------------+ - | Ubuntu 22.04 | Some sites cannot perform upgrade. If the check result shows the upgrade is not supported, contact technical support. | - +--------------+-----------------------------------------------------------------------------------------------------------------------+ - -- **Scenario 3: There are unexpected node pool tags in the node.** - - If a node is migrated from a node pool to the default node pool, the node pool label **cce.cloud.com/cce-nodepool** is retained, affecting cluster upgrade. Check whether the load scheduling on the node depends on the label. - - - If there is no dependency, delete the tag. - - If yes, modify the load balancing policy, remove the dependency, and then delete the tag. - -- **Scenario 4: The Kubernetes node name is consistent with the ECS name.** - - Kubernetes node name, which defaults to the node's private IP. If you select a cloud server name as the node name, the cluster cannot be upgraded. - - Log in to the CCE console and access the cluster console. Choose **Nodes** in the navigation pane, view the node label, and check whether the value of **kubernetes.io/hostname** is consistent with the ECS name. If they are the same, remove the node before the cluster upgrade. - - |image1| - -.. |image1| image:: /_static/images/en-us_image_0000001517903020.png diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_the_node_pool.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_the_node_pool.rst deleted file mode 100644 index 012260d..0000000 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_the_node_pool.rst +++ /dev/null @@ -1,45 +0,0 @@ -:original_name: cce_10_0436.html - -.. _cce_10_0436: - -Checking the Node Pool -====================== - -Check Item ----------- - -Check the following aspects: - -- Check the node status. -- Check whether the auto scaling function of the node pool is disabled. - -Solution --------- - -- **Scenario 1: The node pool status is abnormal.** - - Log in to the CCE console, go to the target cluster and choose **Nodes**. On the displayed page, click **Node Pools** tab and check the node pool status. If the node pool is being scaled, wait until the scaling is complete, and disable the auto scaling function by referring to :ref:`Scenario 2 `. - -- .. _cce_10_0436__li2791152121810: - - **Scenario 2: The auto scaling function of the node pool is enabled.** - - **Solution 1 (Recommended)** - - Log in to the CCE console and go to the target cluster. Choose **O&M** > **Add-ons** and uninstall the autoscaler add-on. - - .. note:: - - Before uninstalling the autoscaler add-on, click **Upgrade** to back up the configuration so that the add-on configuration can be restored during reinstallation. - - Before uninstalling the autoscaler add-on, choose **O&M** > **Node Scaling** and back up the current scaling policies so that they can be restored during reinstallation. These policies will be deleted when the autoscaler add-on is uninstalled. - - Obtain and back up the node scaling policy by clicking **Edit**. - - **Solution 2** - - If you do not want to uninstall the autoscaler add-on, log in to the CCE console and access the cluster detail page. Choose **Nodes** in the navigation pane. On the displayed page, click the **Node Pools** tab and click **Edit** of the corresponding node pool to disable the auto scaling function. - - .. note:: - - Before disabling the auto scaling function, back up the autoscaling configuration so that the configuration can be restored when the function is enabled. diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/compatibility_risk.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/compatibility_risks.rst similarity index 65% rename from umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/compatibility_risk.rst rename to umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/compatibility_risks.rst index 3dc0be0..37678cf 100644 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/compatibility_risk.rst +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/compatibility_risks.rst @@ -2,65 +2,69 @@ .. _cce_10_0441: -Compatibility Risk -================== +Compatibility Risks +=================== Check Item ---------- -Read the version compatibility differences and ensure that they are not affected. - -The patch upgrade does not involve version compatibility differences. +Read the version compatibility differences and ensure that they are not affected. The patch upgrade does not involve version compatibility differences. Version compatibility --------------------- -+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Major Version Upgrade Path | Precaution | Self-Check | -+======================================+==============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================+=============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================+ -| Upgrade from v1.19 to v1.21 or v1.23 | The bug of **exec probe timeouts** is fixed in Kubernetes 1.21. Before this bug fix, the exec probe does not consider the **timeoutSeconds** field. Instead, the probe will run indefinitely, even beyond its configured deadline. It will stop until the result is returned. If this field is not specified, the default value **1** is used. This field takes effect after the upgrade. If the probe runs over 1 second, the application health check may fail and the application may restart frequently. | Before the upgrade, check whether the timeout is properly set for the exec probe. | -+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| | kube-apiserver of CCE 1.19 or later requires that the Subject Alternative Names (SANs) field be configured for the certificate of your webhook server. Otherwise, kube-apiserver fails to call the webhook server after the upgrade, and containers cannot be started properly. | Before the upgrade, check whether the SAN field is configured in the certificate of your webhook server. | -| | | | -| | Root cause: X.509 `CommonName `__ is discarded in Go 1.15. kube-apiserver of CCE 1.19 is compiled using Go 1.15. If your webhook certificate does not have SANs, kube-apiserver does not process the **CommonName** field of the X.509 certificate as the host name by default. As a result, the authentication fails. | - If you do not have your own webhook server, you can skip this check. | -| | | - If the field is not set, you are advised to use the SAN field to specify the IP address and domain name supported by the certificate. | -+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| | Arm nodes are not supported in clusters of v1.21 and later. | Check whether your services will be affected if Arm nodes cannot be used. | -+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Upgrade from v1.15 to v1.19 | The control plane of in the clusters v1.19 is incompatible with kubelet v1.15. If a node fails to be upgraded or the node to be upgraded restarts after the master node is successfully upgraded, there is a high probability that the node is in the **NotReady** status. | #. In normal cases, this scenario is not triggered. | -| | | #. After the master node is upgraded, do not suspend the upgrade so the node can be quickly upgraded. | -| | This is because the node failed to be upgraded restarts the kubelet and trigger the node registration. In clusters of v1.15, the default registration tags (**failure-domain.beta.kubernetes.io/is-baremetal** and **kubernetes.io/availablezone**) are regarded as invalid tags by the clusters of v1.19. | #. If a node fails to be upgraded and cannot be restored, evict applications on the node as soon as possible. Contact technical support and skip the node upgrade. After the upgrade is complete, reset the node. | -| | | | -| | The valid tags in the clusters of v1.19 are **node.kubernetes.io/baremetal** and **failure-domain.beta.kubernetes.io/zone**. | | -+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| | In CCE 1.15 and 1.19 clusters, the Docker storage driver file system is switched from XFS to Ext4. As a result, the import package sequence in the pods of the upgraded Java application may be abnormal, causing pod exceptions. | Before the upgrade, check the Docker configuration file **/etc/docker/daemon.json** on the node. Check whether the value of **dm.fs** is **xfs**. | -| | | | -| | | - If the value is **ext4** or the storage driver is Overlay, you can skip the next steps. | -| | | - If the value is **xfs**, you are advised to deploy applications in the cluster of the new version in advance to test whether the applications are compatible with the new cluster version. | -| | | | -| | | .. code-block:: | -| | | | -| | | { | -| | | "storage-driver": "devicemapper", | -| | | "storage-opts": [ | -| | | "dm.thinpooldev=/dev/mapper/vgpaas-thinpool", | -| | | "dm.use_deferred_removal=true", | -| | | "dm.fs=xfs", | -| | | "dm.use_deferred_deletion=true" | -| | | ] | -| | | } | -+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| | kube-apiserver of CCE 1.19 or later requires that the Subject Alternative Names (SANs) field be configured for the certificate of your webhook server. Otherwise, kube-apiserver fails to call the webhook server after the upgrade, and containers cannot be started properly. | Before the upgrade, check whether the SAN field is configured in the certificate of your webhook server. | -| | | | -| | Root cause: X.509 `CommonName `__ is discarded in Go 1.15. kube-apiserver of CCE 1.19 is compiled using Go 1.15. The **CommonName** field is processed as the host name. As a result, the authentication fails. | - If you do not have your own webhook server, you can skip this check. | -| | | - If the field is not set, you are advised to use the SAN field to specify the IP address and domain name supported by the certificate. | -| | | | -| | | .. important:: | -| | | | -| | | NOTICE: | -| | | To mitigate the impact of version differences on cluster upgrade, CCE performs special processing during the upgrade from 1.15 to 1.19 and still supports certificates without SANs. However, no special processing is required for subsequent upgrades. You are advised to rectify your certificate as soon as possible. | -+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| | In clusters of v1.17.17 and later, CCE automatically creates pod security policies (PSPs) for you, which restrict the creation of pods with unsafe configurations, for example, pods for which **net.core.somaxconn** under a sysctl is configured in the security context. | After an upgrade, you can allow insecure system configurations as required. For details, see :ref:`Configuring a Pod Security Policy `. | -+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Upgrade from v1.13 to v1.15 | After a VPC network cluster is upgraded, the master node occupies an extra CIDR block due to the upgrade of network components. If no container CIDR block is available for the new node, the pod scheduled to the node cannot run. | This problem occurs when almost all CIDR blocks are occupied. For example, the container CIDR block is 10.0.0.0/16, the number of available IP addresses is 65,536, and the VPC network is allocated a CIDR block with the fixed size (using the mask to determine the maximum number of container IP addresses allocated to each node). If the upper limit is 128, the cluster supports a maximum of 512 (65536/128) nodes, including the three master nodes. After the cluster is upgraded, each of the three master nodes occupies one CIDR block. As a result, 506 nodes are supported. | -+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ++-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Upgrade Path | Version Difference | Self-Check | ++=========================+===================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================+================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================+ +| v1.23 to v1.25 | Since Kubernetes v1.25, PodSecurityPolicy has been replaced by pod Security Admission (:ref:`Configuring Pod Security Admission `). | - To migrate PodSecurityPolicy capabilities to Pod Security Admission, perform the following steps: | +| | | | +| | | #. Ensure that the cluster is of the latest CCE v1.23 version. | +| | | #. To migrate PodSecurityPolicy capabilities to Pod Security Admission, see :ref:`Migrating from Pod Security Policy to Pod Security Admission `. | +| | | #. After confirming that the functions are normal after the migration, upgrade the cluster to v1.25. | +| | | | +| | | - If you no longer need PodSecurityPolicy, you can delete PodSecurityPolicy from the cluster and upgrade the cluster to v1.25. | ++-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| v1.19 to v1.21 or v1.23 | The bug of **exec probe timeouts** is fixed in Kubernetes 1.21. Before this bug is fixed, the exec probe does not consider the **timeoutSeconds** field. Instead, the probe will run indefinitely, even beyond its configured deadline. It will stop until the result is returned. If this field is not specified, the default value **1** is used. This field takes effect after the upgrade. If the probe runs over 1 second, the application health check may fail and the application may restart frequently. | Before the upgrade, check whether the timeout is properly set for the exec probe. | ++-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | kube-apiserver of CCE 1.19 or later requires that the Subject Alternative Names (SANs) field be configured for the certificate of your webhook server. Otherwise, kube-apiserver fails to call the webhook server after the upgrade, and containers cannot be started properly. | Before the upgrade, check whether the SAN field is configured in the certificate of your webhook server. | +| | | | +| | Root cause: X.509 `CommonName `__ is discarded in Go 1.15. kube-apiserver of CCE 1.19 is compiled using Go 1.15. If your webhook certificate does not have SANs, kube-apiserver does not process the **CommonName** field of the X.509 certificate as the host name by default. As a result, the authentication fails. | - If you do not have your own webhook server, you can skip this check. | +| | | - If the field is not set, you are advised to use the SAN field to specify the IP address and domain name supported by the certificate. | ++-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| v1.15 to v1.19 | The control plane of in the clusters v1.19 is incompatible with kubelet v1.15. If a node fails to be upgraded or the node to be upgraded restarts after the master node is successfully upgraded, there is a high probability that the node is in the **NotReady** status. | #. In normal cases, this scenario is not triggered. | +| | | #. After the master node is upgraded, do not suspend the upgrade so the node can be quickly upgraded. | +| | This is because the node failed to be upgraded restarts the kubelet and trigger the node registration. In clusters of v1.15, the default registration tags (**failure-domain.beta.kubernetes.io/is-baremetal** and **kubernetes.io/availablezone**) are regarded as invalid tags by the clusters of v1.19. | #. If a node fails to be upgraded and cannot be restored, evict applications on the node as soon as possible. Contact technical support and skip the node upgrade. After the upgrade is complete, reset the node. | +| | | | +| | The valid tags in the clusters of v1.19 are **node.kubernetes.io/baremetal** and **failure-domain.beta.kubernetes.io/zone**. | | ++-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | In CCE 1.15 and 1.19 clusters, the Docker storage driver file system is switched from XFS to Ext4. As a result, the import package sequence in the pods of the upgraded Java application may be abnormal, causing pod exceptions. | Before the upgrade, check the Docker configuration file **/etc/docker/daemon.json** on the node. Check whether the value of **dm.fs** is **xfs**. | +| | | | +| | | - If the value is **ext4** or the storage driver is Overlay, you can skip the next steps. | +| | | - If the value is **xfs**, you are advised to deploy applications in the cluster of the new version in advance to test whether the applications are compatible with the new cluster version. | +| | | | +| | | .. code-block:: | +| | | | +| | | { | +| | | "storage-driver": "devicemapper", | +| | | "storage-opts": [ | +| | | "dm.thinpooldev=/dev/mapper/vgpaas-thinpool", | +| | | "dm.use_deferred_removal=true", | +| | | "dm.fs=xfs", | +| | | "dm.use_deferred_deletion=true" | +| | | ] | +| | | } | ++-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | kube-apiserver of CCE 1.19 or later requires that the Subject Alternative Names (SANs) field be configured for the certificate of your webhook server. Otherwise, kube-apiserver fails to call the webhook server after the upgrade, and containers cannot be started properly. | Before the upgrade, check whether the SAN field is configured in the certificate of your webhook server. | +| | | | +| | Root cause: X.509 `CommonName `__ is discarded in Go 1.15. kube-apiserver of CCE 1.19 is compiled using Go 1.15. The **CommonName** field is processed as the host name. As a result, the authentication fails. | - If you do not have your own webhook server, you can skip this check. | +| | | - If the field is not set, you are advised to use the SAN field to specify the IP address and domain name supported by the certificate. | +| | | | +| | | .. important:: | +| | | | +| | | NOTICE: | +| | | To mitigate the impact of version differences on cluster upgrade, CCE performs special processing during the upgrade from 1.15 to 1.19 and still supports certificates without SANs. However, no special processing is required for subsequent upgrades. You are advised to rectify your certificate as soon as possible. | ++-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | In clusters of v1.17.17 and later, CCE automatically creates pod security policies (PSPs) for you, which restrict the creation of pods with unsafe configurations, for example, pods for which **net.core.somaxconn** under a sysctl is configured in the security context. | After an upgrade, you can allow insecure system configurations as required. For details, see :ref:`Configuring a Pod Security Policy `. | ++-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| v1.13 to v1.15 | After a VPC network cluster is upgraded, the master node occupies an extra CIDR block due to the upgrade of network components. If no container CIDR block is available for the new node, the pod scheduled to the node cannot run. | Generally, this problem occurs when the nodes in the cluster are about to fully occupy the container CIDR block. For example, the container CIDR block is 10.0.0.0/16, the number of available IP addresses is 65,536, and the VPC network is allocated a CIDR block with the fixed size (using the mask to determine the maximum number of container IP addresses allocated to each node). If the upper limit is 128, the cluster supports a maximum of 512 (65536/128) nodes, including the three master nodes. After the cluster is upgraded, each of the three master nodes occupies one CIDR block. As a result, 506 nodes are supported. | ++-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/containerd.sock_check.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/containerd.sock.rst similarity index 87% rename from umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/containerd.sock_check.rst rename to umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/containerd.sock.rst index b536554..e64c85a 100644 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/containerd.sock_check.rst +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/containerd.sock.rst @@ -2,8 +2,8 @@ .. _cce_10_0457: -containerd.sock Check -===================== +containerd.sock +=============== Check Item ---------- @@ -17,5 +17,5 @@ Solution #. Log in to the node. #. Run the **rpm -qa \| grep docker \| grep euleros** command. If the command output is not empty, the Docker used on the node is Euler-docker. -#. Run the **ls /run/containerd/containerd.sock** command. If the file exists, Docker fails to be started. +#. Run the **ls /run/containerd/containerd.sock** command. If the file exists, Docker startup will fail. #. Run the **rm -rf /run/containerd/containerd.sock** command and perform the cluster upgrade check again. diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_coredns_configuration_consistency.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/coredns_configuration_consistency.rst similarity index 53% rename from umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_coredns_configuration_consistency.rst rename to umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/coredns_configuration_consistency.rst index 450a0f0..5a47f7d 100644 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_coredns_configuration_consistency.rst +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/coredns_configuration_consistency.rst @@ -2,22 +2,22 @@ .. _cce_10_0493: -Checking CoreDNS Configuration Consistency -========================================== +CoreDNS Configuration Consistency +================================= Check Item ---------- -Check whether the current CoreDNS key configuration Corefile is different from the Helm Release record. The difference may be overwritten during the add-on upgrade, affecting domain name resolution in the cluster. +Check whether the current CoreDNS key configuration Corefile is different from the Helm release record. The difference may be overwritten during the add-on upgrade, **affecting domain name resolution in the cluster**. Solution -------- -You can upgrade the coredns add-on separately after confirming the configuration differences. +You can upgrade CoreDNS separately after confirming the configuration differences. -#. For details about how to configure kubectl, see :ref:`Connecting to a Cluster Using kubectl `. +#. Configure kubectl, see :ref:`Connecting to a Cluster Using kubectl `. -#. .. _cce_10_0493__en-us_topic_0000001548755413_li1178291934910: +#. .. _cce_10_0493__li1178291934910: Obtain the Corefile that takes effect currently. @@ -26,9 +26,9 @@ You can upgrade the coredns add-on separately after confirming the configuration kubectl get cm -nkube-system coredns -o jsonpath='{.data.Corefile}' > corefile_now.txt cat corefile_now.txt -#. .. _cce_10_0493__en-us_topic_0000001548755413_li111544111811: +#. .. _cce_10_0493__li111544111811: - Obtain the Corefile in the Helm Release record (depending on Python 3). + Obtain the Corefile in the Helm release record (depending on Python 3). .. code-block:: @@ -47,24 +47,28 @@ You can upgrade the coredns add-on separately after confirming the configuration " > corefile_record.txt cat corefile_record.txt -#. Compare the output information of :ref:`2 ` and :ref:`3 `. +#. Compare the output differences between :ref:`2 ` and :ref:`3 `. .. code-block:: diff corefile_now.txt corefile_record.txt -y; - |image1| -#. Return to the CCE console and click the cluster name to go to the cluster console. On the **Add-ons** page, select the coredns add-on and click **Upgrade**. + .. figure:: /_static/images/en-us_image_0000001695896617.png + :alt: **Figure 1** Viewing output differences - To retain the differentiated configurations, use either of the following methods: + **Figure 1** Viewing output differences - - Set **parameterSyncStrategy** to **force**. You need to manually enter the differentiated configurations. For details, see :ref:`coredns (System Resource Add-On, Mandatory) `. +#. Return to the CCE console and click the cluster name to go to the cluster console. On the **Add-ons** page, select CoreDNS and click **Upgrade**. + + To retain the different configurations, use either of the following methods: + + - Set **parameterSyncStrategy** to **force**. Manually enter the differential configuration. For details, see :ref:`CoreDNS (System Resource Add-On, Mandatory) `. - If **parameterSyncStrategy** is set to **inherit**, differentiated configurations are automatically inherited. The system automatically parses, identifies, and inherits differentiated parameters. - |image2| + |image1| -#. Click **OK**. After the add-on upgrade is complete, check whether all CoreDNS instances are available and whether the Corefile meets the expectation. +#. Click **OK**. After the add-on upgrade is complete, check whether all CoreDNS instances are available and whether Corefile meets the expectation. .. code-block:: @@ -72,7 +76,6 @@ You can upgrade the coredns add-on separately after confirming the configuration #. Change the value of **parameterSyncStrategy** to **ensureConsistent** to enable configuration consistency verification. - Use the parameter configuration function of CCE add-on management to modify the Corefile configuration to avoid differences. + In addition, you are advised to use the parameter configuration function of CCE add-on management to modify the Corefile configuration to avoid differences. -.. |image1| image:: /_static/images/en-us_image_0000001628843805.png -.. |image2| image:: /_static/images/en-us_image_0000001668036886.png +.. |image1| image:: /_static/images/en-us_image_0000001716141253.png diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/crd_check.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/crds.rst similarity index 94% rename from umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/crd_check.rst rename to umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/crds.rst index 1740da7..91ed5a0 100644 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/crd_check.rst +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/crds.rst @@ -2,8 +2,8 @@ .. _cce_10_0444: -CRD Check -========= +CRDs +==== Check Item ---------- diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_deprecated_kubernetes_apis.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/discarded_kubernetes_apis.rst similarity index 64% rename from umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_deprecated_kubernetes_apis.rst rename to umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/discarded_kubernetes_apis.rst index dc9b337..537fef0 100644 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_deprecated_kubernetes_apis.rst +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/discarded_kubernetes_apis.rst @@ -2,8 +2,8 @@ .. _cce_10_0487: -Checking Deprecated Kubernetes APIs -=================================== +Discarded Kubernetes APIs +========================= Check Item ---------- @@ -17,11 +17,11 @@ The system scans the audit logs of the past day to check whether the user calls Solution -------- -**Description** +**Check Description** -The check result shows that your cluster calls a deprecated API of the target cluster version through kubectl or other applications. You can rectify the fault before the upgrade. Otherwise, the API will be intercepted by kube-apiserver after the upgrade. For details about each deprecated API, see `Deprecated API Migration Guide `__. +Based on the check result, it is detected that your cluster calls a deprecated API of the target cluster version using kubectl or other applications. You can rectify the fault before the upgrade. Otherwise, the API will be intercepted by kube-apiserver after the upgrade. For details about each deprecated API, see :ref:`Deprecated APIs `. -**Cases** +**Case Study** Ingresses of extensions/v1beta1 and networking.k8s.io/v1beta1 API are deprecated in clusters of v1.22. If you upgrade a CCE cluster from v1.19 or v1.21 to v1.23, existing resources are not affected, but the v1beta1 API version may be intercepted in the creation and editing scenarios. diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/discarded_kubernetes_resource.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/discarded_kubernetes_resource.rst deleted file mode 100644 index ea69a7d..0000000 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/discarded_kubernetes_resource.rst +++ /dev/null @@ -1,35 +0,0 @@ -:original_name: cce_10_0440.html - -.. _cce_10_0440: - -Discarded Kubernetes Resource -============================= - -Check Item ----------- - -Check whether there are discarded resources in the clusters. - -Solution --------- - -**Scenario 1: The PodSecurityPolicy resource object has been discarded since clusters of v1.25.** - -|image1| - -Run the **kubectl get psp -A** command in the cluster to obtain the existing PSP object. - -If these two objects are not used, skip the check. Otherwise, upgrade the corresponding functions to PodSecurity by referring to :ref:`Pod Security `. - -**Scenario 2: The discarded annotation (tolerate-unready-endpoints) exists in Services in clusters of 1.25 or later.** - -|image2| - -Check whether the Service in the log information contains the annotation **tolerate-unready-endpoints**. If yes, delete the annotation and add the following field to the spec of the corresponding Service to replace the annotation: - -.. code-block:: - - publishNotReadyAddresses: true - -.. |image1| image:: /_static/images/en-us_image_0000001569022901.png -.. |image2| image:: /_static/images/en-us_image_0000001517903056.png diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/discarded_kubernetes_resources.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/discarded_kubernetes_resources.rst new file mode 100644 index 0000000..0ce67cf --- /dev/null +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/discarded_kubernetes_resources.rst @@ -0,0 +1,28 @@ +:original_name: cce_10_0440.html + +.. _cce_10_0440: + +Discarded Kubernetes Resources +============================== + +Check Item +---------- + +Check whether there are discarded resources in the clusters. + +Solution +-------- + +**Scenario 1: The PodSecurityPolicy resource object has been discarded since clusters of 1.25.** + +Run the **kubectl get psp -A** command in the cluster to obtain the existing PSP object. + +If these two objects are not used, skip the check. Otherwise, upgrade the corresponding functions to PodSecurity by referring to :ref:`Pod Security `. + +**Scenario 2: The Service in the clusters of 1.25 or later has discarded annotation:** **tolerate-unready-endpoints.** + +Check whether the Service provided in the log information contains the annotation of **tolerate-unready-endpoints**. If yes, replace the annotation with the following fields: + +.. code-block:: + + publishNotReadyAddresses: true diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/enhanced_cpu_management_policy.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/enhanced_cpu_management_policy.rst deleted file mode 100644 index fa08db3..0000000 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/enhanced_cpu_management_policy.rst +++ /dev/null @@ -1,29 +0,0 @@ -:original_name: cce_10_0480.html - -.. _cce_10_0480: - -Enhanced CPU Management Policy -============================== - -Check Item ----------- - -Check whether the current cluster version and the target version support enhanced CPU policy. - -Solution --------- - -**Scenario**: The current cluster version uses the enhanced CPU management policy, but the target cluster version does not support the enhanced CPU management policy. - -Upgrade the cluster to a version that supports the enhanced CPU management policy. The following table lists the cluster versions that support the enhanced CPU management policy. - -.. table:: **Table 1** Cluster versions that support the enhanced CPU policy - - ================ ============================= - Cluster Version Enhanced CPU Policy Supported - ================ ============================= - v1.17 or earlier No - v1.19 No - v1.21 No - v1.23 or later Yes - ================ ============================= diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/enhanced_cpu_policies.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/enhanced_cpu_policies.rst new file mode 100644 index 0000000..d7f994b --- /dev/null +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/enhanced_cpu_policies.rst @@ -0,0 +1,29 @@ +:original_name: cce_10_0480.html + +.. _cce_10_0480: + +Enhanced CPU Policies +===================== + +Check Item +---------- + +Check whether the current cluster version and the target version support the enhanced CPU policy. + +Solution +-------- + +**Scenario**: Only the current cluster version supports the enhanced CPU policy function. The target version does not support the enhanced CPU policy function. + +Upgrade to a cluster version that supports the enhanced CPU policy function. The following table lists the cluster versions that support the enhanced CPU policy function. + +.. table:: **Table 1** List of cluster versions that support the enhanced CPU policy function + + ============================ =================== + Cluster Version Enhanced CPU Policy + ============================ =================== + Clusters of v1.17 or earlier Not supported + Clusters of v1.19 Not supported + Clusters of v1.21 Not supported + Clusters of v1.23 and later Supported + ============================ =================== diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/everest_restriction_check.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/everest_restrictions.rst similarity index 58% rename from umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/everest_restriction_check.rst rename to umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/everest_restrictions.rst index c5f52d6..39dc13f 100644 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/everest_restriction_check.rst +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/everest_restrictions.rst @@ -2,17 +2,15 @@ .. _cce_10_0478: -everest Restriction Check -========================= +everest Restrictions +==================== Check Item ---------- -Check whether the current everest add-on has compatibility restrictions. See :ref:`Table 1 `. +Check whether there are any compatibility restrictions on the current everest add-on. -.. _cce_10_0478__table1126154011128: - -.. table:: **Table 1** List of everest add-on versions that have compatibility restrictions +.. table:: **Table 1** List of everest add-on versions with compatibility restrictions +-----------------------------------+-----------------------------------+ | Add-on Name | Versions Involved | @@ -25,4 +23,4 @@ Check whether the current everest add-on has compatibility restrictions. See :re Solution -------- -The current everest add-on has compatibility restrictions and cannot be upgraded with the cluster upgrade. Contact technical support. +There are compatibility restrictions on the current everest add-on and it cannot be upgraded with the cluster upgrade. Contact technical support. diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_the_helm_chart.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/helm_charts.rst similarity index 91% rename from umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_the_helm_chart.rst rename to umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/helm_charts.rst index 2f30fc8..993c5ed 100644 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_the_helm_chart.rst +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/helm_charts.rst @@ -2,8 +2,8 @@ .. _cce_10_0434: -Checking the Helm Chart -======================= +Helm Charts +=========== Check Item ---------- diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/index.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/index.rst index 42dd896..ac73311 100644 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/index.rst +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/index.rst @@ -5,92 +5,92 @@ Troubleshooting for Pre-upgrade Check Exceptions ================================================ -- :ref:`Performing Pre-upgrade Check ` -- :ref:`Checking the Node ` -- :ref:`Checking the Blocklist ` -- :ref:`Checking the Add-on ` -- :ref:`Checking the Helm Chart ` -- :ref:`Checking the Master Node SSH Connectivity ` -- :ref:`Checking the Node Pool ` -- :ref:`Checking the Security Group ` -- :ref:`To-Be-Migrated Node ` -- :ref:`Discarded Kubernetes Resource ` -- :ref:`Compatibility Risk ` -- :ref:`Node CCEAgent Version ` +- :ref:`Pre-upgrade Check ` +- :ref:`Node Restrictions ` +- :ref:`Blocklist ` +- :ref:`Add-ons ` +- :ref:`Helm Charts ` +- :ref:`SSH Connectivity of Master Nodes ` +- :ref:`Node Pools ` +- :ref:`Security Groups ` +- :ref:`To-Be-Migrated Nodes ` +- :ref:`Discarded Kubernetes Resources ` +- :ref:`Compatibility Risks ` +- :ref:`Node CCE Agent Versions ` - :ref:`Node CPU Usage ` -- :ref:`CRD Check ` -- :ref:`Node Disk ` +- :ref:`CRDs ` +- :ref:`Node Disks ` - :ref:`Node DNS ` - :ref:`Node Key Directory File Permissions ` - :ref:`Kubelet ` - :ref:`Node Memory ` - :ref:`Node Clock Synchronization Server ` - :ref:`Node OS ` -- :ref:`Node CPU Count ` -- :ref:`Node Python Command ` +- :ref:`Node CPUs ` +- :ref:`Node Python Commands ` - :ref:`Node Readiness ` - :ref:`Node journald ` -- :ref:`containerd.sock Check ` -- :ref:`Internal Error ` -- :ref:`Node Mount Point ` -- :ref:`Kubernetes Node Taint ` -- :ref:`everest Restriction Check ` -- :ref:`cce-hpa-controller Restriction Check ` -- :ref:`Enhanced CPU Management Policy ` +- :ref:`containerd.sock ` +- :ref:`Internal Errors ` +- :ref:`Node Mount Points ` +- :ref:`Kubernetes Node Taints ` +- :ref:`everest Restrictions ` +- :ref:`cce-hpa-controller Restrictions ` +- :ref:`Enhanced CPU Policies ` - :ref:`Health of Worker Node Components ` - :ref:`Health of Master Node Components ` - :ref:`Memory Resource Limit of Kubernetes Components ` -- :ref:`Checking Deprecated Kubernetes APIs ` +- :ref:`Discarded Kubernetes APIs ` - :ref:`IPv6 Capabilities of a CCE Turbo Cluster ` - :ref:`Node NetworkManager ` - :ref:`Node ID File ` - :ref:`Node Configuration Consistency ` - :ref:`Node Configuration File ` -- :ref:`Checking CoreDNS Configuration Consistency ` +- :ref:`CoreDNS Configuration Consistency ` .. toctree:: :maxdepth: 1 :hidden: - performing_pre-upgrade_check - checking_the_node - checking_the_blocklist - checking_the_add-on - checking_the_helm_chart - checking_the_master_node_ssh_connectivity - checking_the_node_pool - checking_the_security_group - to-be-migrated_node - discarded_kubernetes_resource - compatibility_risk - node_cceagent_version + pre-upgrade_check + node_restrictions + blocklist + add-ons + helm_charts + ssh_connectivity_of_master_nodes + node_pools + security_groups + to-be-migrated_nodes + discarded_kubernetes_resources + compatibility_risks + node_cce_agent_versions node_cpu_usage - crd_check - node_disk + crds + node_disks node_dns node_key_directory_file_permissions kubelet node_memory node_clock_synchronization_server node_os - node_cpu_count - node_python_command + node_cpus + node_python_commands node_readiness node_journald - containerd.sock_check - internal_error - node_mount_point - kubernetes_node_taint - everest_restriction_check - cce-hpa-controller_restriction_check - enhanced_cpu_management_policy + containerd.sock + internal_errors + node_mount_points + kubernetes_node_taints + everest_restrictions + cce-hpa-controller_restrictions + enhanced_cpu_policies health_of_worker_node_components health_of_master_node_components memory_resource_limit_of_kubernetes_components - checking_deprecated_kubernetes_apis + discarded_kubernetes_apis ipv6_capabilities_of_a_cce_turbo_cluster node_networkmanager node_id_file node_configuration_consistency node_configuration_file - checking_coredns_configuration_consistency + coredns_configuration_consistency diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/internal_error.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/internal_errors.rst similarity index 86% rename from umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/internal_error.rst rename to umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/internal_errors.rst index a8ae92d..8696e78 100644 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/internal_error.rst +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/internal_errors.rst @@ -2,8 +2,8 @@ .. _cce_10_0458: -Internal Error -============== +Internal Errors +=============== Check Item ---------- diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/kubelet.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/kubelet.rst index 8550c19..aff6cf7 100644 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/kubelet.rst +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/kubelet.rst @@ -15,8 +15,8 @@ Solution - **Scenario 1: The kubelet status is abnormal.** - If the kubelet is abnormal, the node is unavailable. Restore the node and check again. + If the kubelet malfunctions, the node is unavailable. Restore the node and check again. For details, see -- **Scenario 2: The cce-pause version is abnormal.** +- **Scenario 2: The cce-pause version is incorrect.** The version of the pause container image on which kubelet depends is not cce-pause:3.1. If you continue the upgrade, pods will restart in batches. Currently, the upgrade is not supported. Contact technical support. diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/kubernetes_node_taint.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/kubernetes_node_taints.rst similarity index 69% rename from umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/kubernetes_node_taint.rst rename to umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/kubernetes_node_taints.rst index eeb035e..b16dedb 100644 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/kubernetes_node_taint.rst +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/kubernetes_node_taints.rst @@ -2,20 +2,18 @@ .. _cce_10_0460: -Kubernetes Node Taint -===================== +Kubernetes Node Taints +====================== Check Item ---------- -Check whether the taint, as shown in :ref:`Table 1 `, exists on the node. - -.. _cce_10_0460__table1126154011128: +Check whether the taint needed for cluster upgrade exists on the node. .. table:: **Table 1** Taint checklist ========================== ========== - Name Impact + Taint Name Impact ========================== ========== node.kubernetes.io/upgrade NoSchedule ========================== ========== @@ -27,14 +25,16 @@ Scenario 1: The node is skipped during the cluster upgrade. #. For details about how to configure kubectl, see :ref:`Connecting to a Cluster Using kubectl `. -#. Check the kubelet version of the corresponding node. If the following information is expected: +#. Check the kubelet version of the corresponding node. The following information is expected: - |image1| + + .. figure:: /_static/images/en-us_image_0000001647417808.png + :alt: **Figure 1** kubelet version + + **Figure 1** kubelet version If the version of the node is different from that of other nodes, the node is skipped during the upgrade. Reset the node and upgrade the cluster again. For details about how to reset a node, see :ref:`Resetting a Node `. .. note:: Resetting a node will reset all node labels, which may affect workload scheduling. Before resetting a node, check and retain the labels that you have manually added to the node. - -.. |image1| image:: /_static/images/en-us_image_0000001568902601.png diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/memory_resource_limit_of_kubernetes_components.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/memory_resource_limit_of_kubernetes_components.rst index f9bd8ec..59074a7 100644 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/memory_resource_limit_of_kubernetes_components.rst +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/memory_resource_limit_of_kubernetes_components.rst @@ -13,10 +13,5 @@ Check whether the resources of Kubernetes components, such as etcd and kube-cont Solution -------- -Solution 1: Reducing Kubernetes resources - -Solution 2: :ref:`Expanding cluster scale ` - -|image1| - -.. |image1| image:: /_static/images/en-us_image_0000001579008782.png +- Solution 1: Reduce Kubernetes resources. +- Solution 2: :ref:`Scale out the cluster. ` diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_cce_agent_versions.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_cce_agent_versions.rst new file mode 100644 index 0000000..980d5bb --- /dev/null +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_cce_agent_versions.rst @@ -0,0 +1,88 @@ +:original_name: cce_10_0442.html + +.. _cce_10_0442: + +Node CCE Agent Versions +======================= + +Check Item +---------- + +Check whether cce-agent on the current node is of the latest version. + +Solution +-------- + +- **Scenario 1: The error message "you cce-agent no update, please restart it" is displayed.** + + cce-agent does not need to be updated but is not restarted. In this case, log in to the node and manually restart cce-agent. + + Solution: Log in to the node and run the following command: + + .. code-block:: + + systemctl restart cce-agent + + Perform the pre-upgrade check again. + +- **Scenario 2: The error message "your cce-agent is not the latest version" is displayed.** + + cce-agent is not of the latest version, and the automatic update failed. This issue is typically caused by an invalid OBS path or the component version is outdated. + + Solution + + #. Log in to a node where the check succeeded, obtain the path of the cce-agent configuration file, and obtain the OBS address. + + .. code-block:: + + cat `ps aux | grep cce-agent | grep -v grep | awk -F '-f ' '{print $2}'` + + The OBS configuration address field in the configuration file is **packageFrom.addr**. + + + .. figure:: /_static/images/en-us_image_0000001695896445.png + :alt: **Figure 1** OBS address + + **Figure 1** OBS address + + #. Log in to a where the check failed, obtain the OBS address again by referring to the previous step, and check whether the OBS addresses are the same. If they are different, change the OBS address of the abnormal node to the correct address. + + #. Run the following commands to download the latest binary file: + + - x86 + + .. code-block:: + + curl -k "https://{OBS address you have obtained}/cluster-versions/base/cce-agent" > /tmp/cce-agent + + - Arm + + .. code-block:: + + curl -k "https://{OBS address you have obtained}/cluster-versions/base/cce-agent-arm" > /tmp/cce-agent-arm + + #. Replace the original cce-agent binary file. + + - x86 + + .. code-block:: + + mv -f /tmp/cce-agent /usr/local/bin/cce-agent + chmod 750 /usr/local/bin/cce-agent + chown root:root /usr/local/bin/cce-agent + + - Arm + + .. code-block:: + + mv -f /tmp/cce-agent-arm /usr/local/bin/cce-agent-arm + chmod 750 /usr/local/bin/cce-agent-arm + chown root:root /usr/local/bin/cce-agent-arm + + #. Restart cce-agent. + + .. code-block:: + + systemctl restart cce-agent + + If you have any questions about the preceding operations, contact technical support. diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_cceagent_version.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_cceagent_version.rst deleted file mode 100644 index 5ed2cd5..0000000 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_cceagent_version.rst +++ /dev/null @@ -1,70 +0,0 @@ -:original_name: cce_10_0442.html - -.. _cce_10_0442: - -Node CCEAgent Version -===================== - -Check Item ----------- - -Check whether cce-agent on the current node is of the latest version. - -Solution --------- - -If cce-agent is not of the latest version, the automatic update fails. This problem is usually caused by invalid OBS address or the version of the component is outdated. - -#. Log in to a normal node that passes the check, obtain the path of the cce-agent configuration file, and check the OBS address. - - .. code-block:: - - cat `ps aux | grep cce-agent | grep -v grep | awk -F '-f ''{print $2}'` - - The OBS configuration address field in the configuration file is **packageFrom.addr**. - - |image1| - -#. Log in to an abnormal node where the check fails, obtain the OBS address again by referring to the previous step, and check whether the OBS address is consistent. If they are different, change the OBS address of the abnormal node to the correct address. - -#. Run the following commands to download the latest binary file: - - - x86 - - .. code-block:: - - curl -k "https://{OBS address you have obtained}/cluster-versions/base/cce-agent" > /tmp/cce-agent - - - ARM - - .. code-block:: - - curl -k "https://{OBS address you have obtained}/cluster-versions/base/cce-agent-arm" > /tmp/cce-agent-arm - -#. Replace the original cce-agent binary file. - - - x86 - - .. code-block:: - - mv -f /tmp/cce-agent /usr/local/bin/cce-agent - chmod 750 /usr/local/bin/cce-agent - chown root:root /usr/local/bin/cce-agent - - - ARM - - .. code-block:: - - mv -f /tmp/cce-agent-arm /usr/local/bin/cce-agent-arm - chmod 750 /usr/local/bin/cce-agent-arm - chown root:root /usr/local/bin/cce-agent-arm - -#. Restart cce-agent. - - .. code-block:: - - systemctl restart cce-agent - - If you have any questions about the preceding operations, contact technical support. - -.. |image1| image:: /_static/images/en-us_image_0000001629186693.png diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_clock_synchronization_server.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_clock_synchronization_server.rst index 7b229c5..e2d013a 100644 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_clock_synchronization_server.rst +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_clock_synchronization_server.rst @@ -15,23 +15,28 @@ Solution - **Scenario 1: ntpd is running abnormally.** - Log in to the node and run the **systemctl status ntpd** command to query the running status of ntpd. If the command output is abnormal, run the **systemctl restart ntpd** command and query the status again. + Log in to the node and run the **systemctl status ntpd** command to obtain the running status of ntpd. If the command output is abnormal, run the **systemctl restart ntpd** command and obtain the status again. The normal command output is as follows: - |image1| + + .. figure:: /_static/images/en-us_image_0000001695737169.png + :alt: **Figure 1** Running status of ntpd + + **Figure 1** Running status of ntpd If the problem persists after ntpd is restarted, contact technical support. - **Scenario 2: chronyd is running abnormally.** - Log in to the node and run the **systemctl status chronyd** command to query the running status of chronyd. If the command output is abnormal, run the **systemctl restart chronyd** command and query the status again. + Log in to the node and run the **systemctl status chronyd** command to obtain the running status of chronyd. If the command output is abnormal, run the **systemctl restart chronyd** command and obtain the status again. The normal command output is as follows: - |image2| + + .. figure:: /_static/images/en-us_image_0000001695896453.png + :alt: **Figure 2** Running status of chronyd + + **Figure 2** Running status of chronyd If the problem persists after chronyd is restarted, contact technical support. - -.. |image1| image:: /_static/images/en-us_image_0000001568902509.png -.. |image2| image:: /_static/images/en-us_image_0000001518062624.png diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_cpu_count.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_cpus.rst similarity index 90% rename from umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_cpu_count.rst rename to umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_cpus.rst index 6b3bbb7..c3ee325 100644 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_cpu_count.rst +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_cpus.rst @@ -2,8 +2,8 @@ .. _cce_10_0452: -Node CPU Count -============== +Node CPUs +========= Check Item ---------- diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_disk.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_disks.rst similarity index 84% rename from umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_disk.rst rename to umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_disks.rst index 8630d9a..210043d 100644 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_disk.rst +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_disks.rst @@ -2,8 +2,8 @@ .. _cce_10_0445: -Node Disk -========= +Node Disks +========== Check Item ---------- @@ -38,7 +38,7 @@ During the node upgrade, the key disks store the upgrade component package, and .. code-block:: - df -h /var/lib/docker + df -h /mnt/paas/kubernetes/kubelet - System disk: 10 GB for master nodes and 2 GB for worker nodes @@ -48,7 +48,7 @@ During the node upgrade, the key disks store the upgrade component package, and - **Scenario 2: The /tmp directory space is insufficient.** - Run the following command to check the space usage of the file system where the /tmp directory is located. Ensure that the space is greater than 500 MB and check again. + Run the following command to check the usage of the file system where the **/tmp** directory is located. Ensure that the space is greater than 500 MB and check again. .. code-block:: diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_dns.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_dns.rst index 69ab0fb..3d4de13 100644 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_dns.rst +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_dns.rst @@ -16,4 +16,4 @@ Check the following aspects: Solution -------- -During the node upgrade, you need to obtain the upgrade component package from OBS. If this check fails, contact technical support. +During the node upgrade, obtain the upgrade component package from OBS. If this check fails, contact technical support. diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_journald.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_journald.rst index 843a433..95d299f 100644 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_journald.rst +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_journald.rst @@ -13,12 +13,14 @@ Check whether journald of a node is normal. Solution -------- -Log in to the node and run the **systemctl is-active systemd-journald** command to query the running status of journald. If the command output is abnormal, run the **systemctl restart systemd-journald** command and query the status again. +Log in to the node and run the **systemctl is-active systemd-journald** command to obtain the running status of journald. If the command output is abnormal, run the **systemctl restart systemd-journald** command and obtain the status again. The normal command output is as follows: -|image1| + +.. figure:: /_static/images/en-us_image_0000001647576916.png + :alt: **Figure 1** Running status of journald + + **Figure 1** Running status of journald If the problem persists after journald is restarted, contact technical support. - -.. |image1| image:: /_static/images/en-us_image_0000001517903128.png diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_key_directory_file_permissions.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_key_directory_file_permissions.rst index e862e80..9cc87fd 100644 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_key_directory_file_permissions.rst +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_key_directory_file_permissions.rst @@ -13,8 +13,14 @@ Check whether the key directory **/var/paas** on the nodes contain files with ab Solution -------- -CCE uses the **/var/paas** directory to manage nodes and store file data whose owner and owner group are both paas. +- **Scenario 1: The error message "xx file permission has been changed!" is displayed.** -During the current cluster upgrade, the owner and owner group of the files in the **/var/paas** directory are reset to paas. + Solution: Enable CCE to use the **/var/paas** directory to manage nodes and store file data whose owner and owner group are both **paas**. -Check whether file data is stored in the **/var/paas** directory. If yes, do not use this directory, remove abnormal files from this directory, and check again. Otherwise, the upgrade is prohibited. + During the current cluster upgrade, the owner and owner group of the files in the **/var/paas** directory are reset to paas. + + Check whether file data is stored in the **/var/paas** directory. If yes, do not use this directory, remove abnormal files from this directory, and check again. Otherwise, the upgrade is prohibited. + +- **Scenario 2: The error message "user paas must have at least read and execute permissions on the root directory" is displayed.** + + Solution: Change the permission on the root directory to the default permission 555. If the permission on the root directory of the node is modified, user **paas** does not have the read permission on the root directory. As a result, restarting the component failed during the upgrade. diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_mount_point.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_mount_points.rst similarity index 79% rename from umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_mount_point.rst rename to umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_mount_points.rst index f454540..23b5779 100644 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_mount_point.rst +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_mount_points.rst @@ -2,8 +2,8 @@ .. _cce_10_0459: -Node Mount Point -================ +Node Mount Points +================= Check Item ---------- @@ -34,7 +34,7 @@ If network NFS (such as OBS, SFS, and SFS) is used by the node and the node is d - ps aux | grep "D " -#. If a process is in the D state, the problem occurs.You can only reset the node to solve the problem. Reset the node and upgrade the cluster again. For details about how to reset a node, see :ref:`Resetting a Node `. +#. If a process is in the D state, the problem occurs. You can only reset the node to solve the problem. Reset the node and upgrade the cluster again. For details about how to reset a node, see :ref:`Resetting a Node `. .. note:: diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_pools.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_pools.rst new file mode 100644 index 0000000..09438b5 --- /dev/null +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_pools.rst @@ -0,0 +1,18 @@ +:original_name: cce_10_0436.html + +.. _cce_10_0436: + +Node Pools +========== + +Check Item +---------- + +Check the node pool status. + +Solution +-------- + +**Scenario: The node pool malfunctions.** + +Log in to the CCE console, go to the target cluster and choose **Nodes**. On the displayed page, click **Node Pools** tab and check the node pool status. If the node pool is being scaled, wait until the node pool scaling is complete. diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_python_command.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_python_commands.rst similarity index 88% rename from umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_python_command.rst rename to umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_python_commands.rst index e2493dc..65f3767 100644 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_python_command.rst +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_python_commands.rst @@ -2,8 +2,8 @@ .. _cce_10_0453: -Node Python Command -=================== +Node Python Commands +==================== Check Item ---------- diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_restrictions.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_restrictions.rst new file mode 100644 index 0000000..26f192a --- /dev/null +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/node_restrictions.rst @@ -0,0 +1,54 @@ +:original_name: cce_10_0431.html + +.. _cce_10_0431: + +Node Restrictions +================= + +Check Item +---------- + +Check the following aspects: + +- Check whether the node is available. +- Check whether the node OS supports the upgrade. +- Check whether there are unexpected node pool tags in the node. +- Check whether the Kubernetes node name is consistent with the ECS name. + +Solution +-------- + +- **Scenario 1: The node status is abnormal. Rectify the fault first.** + + Log in to the CCE console and access the cluster console. Choose **Nodes** in the navigation pane and check the node status. Ensure that the node is in the **Running** status. A node in the **Installing** or **Deleting** status cannot be upgraded. + + If the node status is abnormal, restore the node and retry the check task. + +- **Scenario 2: The node OS does not support the upgrade. Contact technical support.** + + The following table lists the node OSs that support the upgrade. You can reset the node OS to an available OS in the list. + + .. table:: **Table 1** OSs that support the upgrade + + +-------------+-----------------------------------------------------------------------------------------------------------------------+ + | OS | Constraint | + +=============+=======================================================================================================================+ + | EulerOS 2.x | None. | + +-------------+-----------------------------------------------------------------------------------------------------------------------+ + | Ubuntu | Some sites cannot perform upgrade. If the check result shows the upgrade is not supported, contact technical support. | + +-------------+-----------------------------------------------------------------------------------------------------------------------+ + +- **Scenario 3: The node belongs to the default node pool but contains a common node pool label, which affects the upgrade process.** + + If a node is migrated from a node pool to the default node pool, the node pool label **cce.cloud.com/cce-nodepool** is retained, affecting cluster upgrade. Check whether the load scheduling on the node depends on the label. + + - If there is no dependency, delete the tag. + - If yes, modify the load balancing policy, remove the dependency, and then delete the tag. + +- **Scenario 4: CNIProblem taints are detected on the node. Remove the taints first.** + + The node contains a taint whose key is **node.cloudprovider.kubernetes.io/cni-problem**, and the effect is **NoSchedule**. The taint is added by the npd add-on. You are advised to upgrade the npd add-on to the latest version and check again. If the problem persists, contact technical support. + +- **Scenario 5: The Kubernetes node corresponding to the node does not exist. The node may be being deleted. Check again later.** + + Check again later. diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/performing_pre-upgrade_check.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/performing_pre-upgrade_check.rst deleted file mode 100644 index ffe8e21..0000000 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/performing_pre-upgrade_check.rst +++ /dev/null @@ -1,107 +0,0 @@ -:original_name: cce_10_0549.html - -.. _cce_10_0549: - -Performing Pre-upgrade Check -============================ - -The system performs a comprehensive pre-upgrade check before the cluster upgrade. If the cluster does not meet the pre-upgrade check conditions, the upgrade cannot continue. To prevent upgrade risks, you can perform pre-upgrade check according to the check items provided by this section. - -.. table:: **Table 1** Check items - - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Check Item | Description | - +=====================================================================+=========================================================================================================================================================================================================================================================+ - | :ref:`Checking the Node ` | - Check whether the node is available. | - | | - Check whether the node OS supports the upgrade. | - | | - Check whether there are unexpected node pool tags in the node. | - | | - Check whether the Kubernetes node name is consistent with the ECS name. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Checking the Blocklist ` | Check whether the current user is in the upgrade blocklist. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Checking the Add-on ` | - Check whether the add-on status is normal. | - | | - Check whether the add-on support the target version. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Checking the Helm Chart ` | Check whether the current HelmRelease record contains discarded Kubernetes APIs that are not supported by the target cluster version. If yes, the Helm chart may be unavailable after the upgrade. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Checking the Master Node SSH Connectivity ` | Check whether CCE can connect to your master nodes. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Checking the Node Pool ` | Check the node pool status. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Checking the Security Group ` | Check whether the security group allows the master node to access nodes using ICMP. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`To-Be-Migrated Node ` | Check whether the node needs to be migrated. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Discarded Kubernetes Resource ` | Check whether there are discarded resources in the clusters. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Compatibility Risk ` | Read the version compatibility differences and ensure that they are not affected. The patch upgrade does not involve version compatibility differences. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Node CCEAgent Version ` | Check whether cce-agent on the current node is of the latest version. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Node CPU Usage ` | Check whether the CPU usage of the node exceeds 90%. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`CRD Check ` | - Check whether the key CRD **packageversions.version.cce.io** of the cluster is deleted. | - | | - Check whether the cluster key CRD **network-attachment-definitions.k8s.cni.cncf.io** is deleted. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Node Disk ` | - Check whether the key data disks on the node meet the upgrade requirements. | - | | - Check whether the **/tmp** directory has 500 MB available space. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Node DNS ` | - Check whether the DNS configuration of the current node can resolve the OBS address. | - | | - Check whether the current node can access the OBS address of the storage upgrade component package. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Node Key Directory File Permissions ` | Check whether the key directory **/var/paas** on the nodes contain files with abnormal owners or owner groups. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Kubelet ` | Check whether the kubelet on the node is running properly. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Node Memory ` | Check whether the memory usage of the node exceeds 90%. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Node Clock Synchronization Server ` | Check whether the clock synchronization server ntpd or chronyd of the node is running properly. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Node OS ` | Check whether the OS kernel version of the node is supported by CCE. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Node CPU Count ` | Check whether the number of CPUs on the master node is greater than 2. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Node Python Command ` | Check whether the Python commands are available on a node. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Node Readiness ` | Check whether the nodes in the cluster are ready. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Node journald ` | Check whether journald of a node is normal. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`containerd.sock Check ` | Check whether the containerd.sock file exists on the node. This file affects the startup of container runtime in the Euler OS. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Internal Error ` | Before the upgrade, check whether an internal error occurs. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Node Mount Point ` | Check whether inaccessible mount points exist on the node. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Kubernetes Node Taint ` | Check whether the taint needed for cluster upgrade exists on the node. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`everest Restriction Check ` | Check whether the current everest add-on has compatibility restrictions. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`cce-hpa-controller Restriction Check ` | Check whether the current cce-controller-hpa add-on has compatibility restrictions. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Enhanced CPU Management Policy ` | Check whether the current cluster version and the target version support enhanced CPU policy. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Health of Worker Node Components ` | Check whether the container runtime and network components on the worker nodes are healthy. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Health of Master Node Components ` | Check whether the Kubernetes, container runtime, and network components of the master nodes are healthy. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Memory Resource Limit of Kubernetes Components ` | Check whether the resources of Kubernetes components, such as etcd and kube-controller-manager, exceed the upper limit. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Checking Deprecated Kubernetes APIs ` | The system scans the audit logs of the past day to check whether the user calls the deprecated APIs of the target Kubernetes version. | - | | | - | | .. note:: | - | | | - | | Due to the limited time range of audit logs, this check item is only an auxiliary method. APIs to be deprecated may have been used in the cluster, but their usage is not included in the audit logs of the past day. Check the API usage carefully. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`IPv6 Capabilities of a CCE Turbo Cluster ` | If IPv6 is enabled for a CCE Turbo cluster, check whether the target cluster version supports IPv6. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Node NetworkManager ` | Check whether NetworkManager of a node is normal. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Node ID File ` | Check the ID file format. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Node Configuration Consistency ` | When you upgrade a CCE cluster to v1.19 or later, the system checks whether the following configuration files have been modified in the background: | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Node Configuration File ` | Check whether the configuration files of key components exist on the node. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Checking CoreDNS Configuration Consistency ` | Check whether the current CoreDNS key configuration Corefile is different from the Helm release record. The difference may be overwritten during the add-on upgrade, **affecting domain name resolution in the cluster**. | - +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/pre-upgrade_check.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/pre-upgrade_check.rst new file mode 100644 index 0000000..1905b06 --- /dev/null +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/pre-upgrade_check.rst @@ -0,0 +1,107 @@ +:original_name: cce_10_0549.html + +.. _cce_10_0549: + +Pre-upgrade Check +================= + +The system performs a comprehensive pre-upgrade check before the cluster upgrade. If the cluster does not meet the pre-upgrade check conditions, the upgrade cannot continue. To prevent upgrade risks, you can perform pre-upgrade check according to the check items provided by this section. + +.. table:: **Table 1** Check items + + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | No. | Check Item | Description | + +=======================+=====================================================================+=========================================================================================================================================================================================================================================================+ + | 1 | :ref:`Node Restrictions ` | - Check whether the node is available. | + | | | - Check whether the node OS supports the upgrade. | + | | | - Check whether there are unexpected node pool tags in the node. | + | | | - Check whether the Kubernetes node name is consistent with the ECS name. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 2 | :ref:`Blocklist ` | Check whether the current user is in the upgrade blocklist. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 3 | :ref:`Add-ons ` | - Check whether the add-on status is normal. | + | | | - Check whether the add-on support the target version. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 4 | :ref:`Helm Charts ` | Check whether the current HelmRelease record contains discarded Kubernetes APIs that are not supported by the target cluster version. If yes, the Helm chart may be unavailable after the upgrade. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 5 | :ref:`SSH Connectivity of Master Nodes ` | Check whether CCE can connect to your master nodes. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 6 | :ref:`Node Pools ` | Check the node pool status. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 7 | :ref:`Security Groups ` | Check whether the security group allows the master node to access nodes using ICMP. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 8 | :ref:`To-Be-Migrated Nodes ` | Check whether the node needs to be migrated. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 9 | :ref:`Discarded Kubernetes Resources ` | Check whether there are discarded resources in the clusters. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 10 | :ref:`Compatibility Risks ` | Read the version compatibility differences and ensure that they are not affected. The patch upgrade does not involve version compatibility differences. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 11 | :ref:`Node CCE Agent Versions ` | Check whether cce-agent on the current node is of the latest version. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 12 | :ref:`Node CPU Usage ` | Check whether the CPU usage of the node exceeds 90%. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 13 | :ref:`CRDs ` | - Check whether the key CRD **packageversions.version.cce.io** of the cluster is deleted. | + | | | - Check whether the cluster key CRD **network-attachment-definitions.k8s.cni.cncf.io** is deleted. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 14 | :ref:`Node Disks ` | - Check whether the key data disks on the node meet the upgrade requirements. | + | | | - Check whether the **/tmp** directory has 500 MiB available space. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 15 | :ref:`Node DNS ` | - Check whether the DNS configuration of the current node can resolve the OBS address. | + | | | - Check whether the current node can access the OBS address of the storage upgrade component package. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 16 | :ref:`Node Key Directory File Permissions ` | Check whether the key directory **/var/paas** on the nodes contain files with abnormal owners or owner groups. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 17 | :ref:`Kubelet ` | Check whether the kubelet on the node is running properly. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 18 | :ref:`Node Memory ` | Check whether the memory usage of the node exceeds 90%. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 19 | :ref:`Node Clock Synchronization Server ` | Check whether the clock synchronization server ntpd or chronyd of the node is running properly. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 20 | :ref:`Node OS ` | Check whether the OS kernel version of the node is supported by CCE. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 21 | :ref:`Node CPUs ` | Check whether the number of CPUs on the master node is greater than 2. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 22 | :ref:`Node Python Commands ` | Check whether the Python commands are available on a node. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 23 | :ref:`Node Readiness ` | Check whether the nodes in the cluster are ready. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 24 | :ref:`Node journald ` | Check whether journald of a node is normal. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 25 | :ref:`containerd.sock ` | Check whether the containerd.sock file exists on the node. This file affects the startup of container runtime in the Euler OS. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 26 | :ref:`Internal Errors ` | Before the upgrade, check whether an internal error occurs. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 27 | :ref:`Node Mount Points ` | Check whether inaccessible mount points exist on the node. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 28 | :ref:`Kubernetes Node Taints ` | Check whether the taint needed for cluster upgrade exists on the node. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 29 | :ref:`everest Restrictions ` | Check whether there are any compatibility restrictions on the current everest add-on. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 30 | :ref:`cce-hpa-controller Restrictions ` | Check whether the current cce-controller-hpa add-on has compatibility restrictions. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 31 | :ref:`Enhanced CPU Policies ` | Check whether the current cluster version and the target version support enhanced CPU policy. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 32 | :ref:`Health of Worker Node Components ` | Check whether the container runtime and network components on the worker nodes are healthy. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 33 | :ref:`Health of Master Node Components ` | Check whether the Kubernetes, container runtime, and network components of the master nodes are healthy. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 34 | :ref:`Memory Resource Limit of Kubernetes Components ` | Check whether the resources of Kubernetes components, such as etcd and kube-controller-manager, exceed the upper limit. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 35 | :ref:`Discarded Kubernetes APIs ` | The system scans the audit logs of the past day to check whether the user calls the deprecated APIs of the target Kubernetes version. | + | | | | + | | | .. note:: | + | | | | + | | | Due to the limited time range of audit logs, this check item is only an auxiliary method. APIs to be deprecated may have been used in the cluster, but their usage is not included in the audit logs of the past day. Check the API usage carefully. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 36 | :ref:`IPv6 Capabilities of a CCE Turbo Cluster ` | If IPv6 is enabled for a CCE Turbo cluster, check whether the target cluster version supports IPv6. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 37 | :ref:`Node NetworkManager ` | Check whether NetworkManager of a node is normal. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 38 | :ref:`Node ID File ` | Check the ID file format. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 39 | :ref:`Node Configuration Consistency ` | When you upgrade a CCE cluster to v1.19 or later, the system checks whether the following configuration files have been modified in the background. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 40 | :ref:`Node Configuration File ` | Check whether the configuration files of key components exist on the node. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 41 | :ref:`CoreDNS Configuration Consistency ` | Check whether the current CoreDNS key configuration Corefile is different from the Helm release record. The difference may be overwritten during the add-on upgrade, **affecting domain name resolution in the cluster**. | + +-----------------------+---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_the_security_group.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/security_groups.rst similarity index 62% rename from umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_the_security_group.rst rename to umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/security_groups.rst index db669df..e59e40c 100644 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_the_security_group.rst +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/security_groups.rst @@ -2,14 +2,18 @@ .. _cce_10_0437: -Checking the Security Group -=========================== +Security Groups +=============== Check Item ---------- Check whether the security group allows the master node to access nodes using ICMP. +.. note:: + + This check item is performed only for clusters using VPC networking. For clusters using other networking, skip this check item. + Solution -------- @@ -20,4 +24,4 @@ Log in to the VPC console, choose **Access Control** > **Security Groups**, and Click the security group of the node user and ensure that the following rules are configured to allow the master node to access the node using **ICMP**. -Otherwise, add a rule to the node security group. Set **Source** to **Security group**. +If the preceding security group rule is unavailable, add the rule with the following configurations to the node security group: Set **Protocol & Port** to **Protocols/ICMP** and **All**, and **Source** to **Security group** and the master security group. diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_the_master_node_ssh_connectivity.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/ssh_connectivity_of_master_nodes.rst similarity index 67% rename from umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_the_master_node_ssh_connectivity.rst rename to umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/ssh_connectivity_of_master_nodes.rst index 5e159fe..3b70cfd 100644 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/checking_the_master_node_ssh_connectivity.rst +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/ssh_connectivity_of_master_nodes.rst @@ -2,8 +2,8 @@ .. _cce_10_0435: -Checking the Master Node SSH Connectivity -========================================= +SSH Connectivity of Master Nodes +================================ Check Item ---------- diff --git a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/to-be-migrated_node.rst b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/to-be-migrated_nodes.rst similarity index 53% rename from umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/to-be-migrated_node.rst rename to umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/to-be-migrated_nodes.rst index 247cdb3..dd655c0 100644 --- a/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/to-be-migrated_node.rst +++ b/umn/source/clusters/upgrading_a_cluster/troubleshooting_for_pre-upgrade_check_exceptions/to-be-migrated_nodes.rst @@ -2,8 +2,8 @@ .. _cce_10_0439: -To-Be-Migrated Node -=================== +To-Be-Migrated Nodes +==================== Check Item ---------- @@ -13,11 +13,11 @@ Check whether the node needs to be migrated. Solution -------- -For the 1.15 cluster that is upgraded from 1.13 in rolling mode, you need to migrate (reset or create and replace) all nodes before performing the upgrade again. +For the 1.15 cluster that is upgraded from 1.13 in rolling mode, migrate (reset or create and replace) all nodes before performing the upgrade again. **Solution 1** -Go the CCE console and access the cluster console. Choose **Nodes** in the navigation pane and click **More** > **Reset Node** in the **Operation** column of the corresponding node. For details, see :ref:`Resetting a Node `. After the node is reset, retry the check task. +Go to the CCE console and access the cluster console. Choose **Nodes** in the navigation pane and click **More** > **Reset Node** in the **Operation** column of the corresponding node. For details, see :ref:`Resetting a Node `. After the node is reset, retry the check task. .. note:: diff --git a/umn/source/clusters/upgrading_a_cluster/upgrade_overview.rst b/umn/source/clusters/upgrading_a_cluster/upgrade_overview.rst index 7664f48..c15dcd6 100644 --- a/umn/source/clusters/upgrading_a_cluster/upgrade_overview.rst +++ b/umn/source/clusters/upgrading_a_cluster/upgrade_overview.rst @@ -11,29 +11,56 @@ After the latest Kubernetes version is available in CCE, CCE will describe the c You can use the CCE console to upgrade the Kubernetes version of a cluster. -An upgrade flag will be displayed on the cluster card view if there is a new version for the cluster to upgrade. +An upgrade tag will be displayed on the cluster card view if there is a new version for the cluster to upgrade. **How to check:** -Log in to the CCE console and check whether the message "New version available" is displayed in the lower left corner of the cluster. If yes, the cluster can be upgraded. If no, the cluster cannot be upgraded. +Log in to the CCE console and check whether the message "New version available" is displayed in the lower left corner of the cluster. If yes, the cluster can be upgraded. View the release notes for the latest version. For details, see :ref:`Release Notes for CCE Cluster Versions `. If no such a message is displayed, the cluster is of the latest version. -.. figure:: /_static/images/en-us_image_0000001568902653.png - :alt: **Figure 1** Cluster with the upgrade flag +.. figure:: /_static/images/en-us_image_0000001647417836.png + :alt: **Figure 1** Cluster with the upgrade tag - **Figure 1** Cluster with the upgrade flag + **Figure 1** Cluster with the upgrade tag -.. _cce_10_0197__section19981121648: +Cluster Upgrade Process +----------------------- + +The cluster upgrade process involves pre-upgrade check, backup, upgrade, and post-upgrade verification. + + +.. figure:: /_static/images/en-us_image_0000001647417828.png + :alt: **Figure 2** Process of upgrading a cluster + + **Figure 2** Process of upgrading a cluster + +After determining the target version of the cluster, read the :ref:`precautions ` carefully and prevent function incompatibility during the upgrade. + +#. **Pre-upgrade check** + + Before a cluster upgrade, CCE checks the compatibility of nodes, add-ons, and workloads in the cluster to reduce the probability of upgrade failures to the best extend. If any exception is detected, rectify the fault as prompted on the console. + +#. **Backup** + + During the upgrade, cluster data is backed up by default. You can also back up the entire master nodes as needed. Cloud Backup and Recovery (CBR) will be used for full-node backup. It takes about 20 minutes to back up one node. + +#. **Upgrade** + + During the upgrade, configure upgrade parameters, such as the step for add-on upgrade or node rolling upgrade. After the upgrade parameters are configured, the add-ons and nodes will be upgraded one by one. + +#. **Post-upgrade verification** + + After the upgrade, manually check services and ensure that services are not interrupted by the upgrade. Cluster Upgrade --------------- -The following table describes the target version to which each cluster version can be upgraded, the supported upgrade modes, and upgrade impacts. +The following table describes the target version to which each cluster version can be upgraded and the supported upgrade modes. -.. table:: **Table 1** Cluster upgrade paths and impacts +.. table:: **Table 1** Cluster upgrade +-----------------------+-----------------------+-----------------------+ - | Source Version | Target Version | Upgrade Modes | + | Source Version | Target Version | Upgrade Mode | +=======================+=======================+=======================+ | v1.23 | v1.25 | In-place upgrade | +-----------------------+-----------------------+-----------------------+ @@ -46,33 +73,29 @@ The following table describes the target version to which each cluster version c | | v1.21 | | +-----------------------+-----------------------+-----------------------+ | v1.17 | v1.19 | In-place upgrade | - | | | | - | v1.15 | | | + +-----------------------+-----------------------+-----------------------+ + | v1.15 | v1.19 | In-place upgrade | +-----------------------+-----------------------+-----------------------+ | v1.13 | v1.15 | Rolling upgrade | - | | | | - | | | Replace upgrade | +-----------------------+-----------------------+-----------------------+ Upgrade Modes ------------- -The upgrade processes are the same for master nodes. The differences between the upgrade modes of worker nodes are described as follows: +Different upgrade modes have different advantages and disadvantages. .. table:: **Table 2** Differences between upgrade modes and their advantages and disadvantages - +----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Upgrade Mode | Method | Advantage | Disadvantage | - +======================+==============================================================================================================================================================================================================================================================================================================+=========================================================================+=============================================================================================================================================================================================================================================+ - | **In-place upgrade** | Kubernetes components, network components, and CCE management components are upgraded on the node. During the upgrade, service pods and networks are not affected. The **SchedulingDisabled** label will be added to all existing nodes. After the upgrade is complete, you can properly use existing nodes. | You do not need to migrate services, ensuring service continuity. | In-place upgrade does not upgrade the OS of a node. If you want to upgrade the OS, clear the corresponding node data after the node upgrade is complete and reset the node to upgrade the OS to a new version. | - +----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | **Rolling upgrade** | Only the Kubernetes components and certain network components are upgraded on the node. The **SchedulingDisabled** label will be added to all existing nodes to ensure that the running applications are not affected. | Services are not interrupted. | - **After the upgrade is complete, you need to manually create nodes and gradually release the old nodes.** The new nodes are billed additionally. After services are migrated to the new nodes, the old nodes can be deleted. | - | | | | | - | | .. important:: | | - After the rolling upgrade is complete, if you want to continue the upgrade to a later version, you need to reset the old nodes first. Otherwise, the pre-upgrade check cannot be passed. Services may be interrupted during the upgrade. | - | | | | | - | | NOTICE: | | | - | | | | | - | | - **After the upgrade is complete, you need to manually create nodes and gradually release the old nodes**, thereby migrating your applications to the new nodes. In this mode, you can control the upgrade process. | | | - +----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | **Replace upgrade** | The latest worker node image is used to reset the node OS. | This is the fastest upgrade mode and requires few manual interventions. | Data or configurations on the node will be lost, and services will be interrupted for a period of time. | - +----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Upgrade Mode | Method | Advantage | Disadvantage | + +==================+==============================================================================================================================================================================================================================================================================================================+===================================================================+=================================================================================================================================================================================================================================+ + | In-place upgrade | Kubernetes components, network components, and CCE management components are upgraded on the node. During the upgrade, service pods and networks are not affected. The **SchedulingDisabled** label will be added to all existing nodes. After the upgrade is complete, you can properly use existing nodes. | You do not need to migrate services, ensuring service continuity. | In-place upgrade does not upgrade the OS of a node. If you want to upgrade the OS, clear the corresponding node data after the node upgrade is complete and reset the node to upgrade the OS to a new version. | + +------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Rolling upgrade | Only the Kubernetes components and certain network components are upgraded on the node. The **SchedulingDisabled** label will be added to all existing nodes to ensure that the running applications are not affected. | Services are not interrupted. | - **After the upgrade is complete, manually create nodes and gradually release the old nodes.** The new nodes are billed additionally. After services are migrated to the new nodes, the old nodes can be deleted. | + | | | | | + | | .. important:: | | - After the rolling upgrade is complete, if you want to continue the upgrade to a later version, reset the old nodes first. Otherwise, the pre-upgrade check cannot be passed. Services may be interrupted during the upgrade. | + | | | | | + | | NOTICE: | | | + | | | | | + | | - **After the upgrade is complete, manually create nodes and gradually release the old nodes**, thereby migrating your applications to the new nodes. In this mode, you can control the upgrade process. | | | + +------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/clusters/using_kubectl_to_run_a_cluster/common_kubectl_commands.rst b/umn/source/clusters/using_kubectl_to_run_a_cluster/common_kubectl_commands.rst deleted file mode 100644 index 6a3e620..0000000 --- a/umn/source/clusters/using_kubectl_to_run_a_cluster/common_kubectl_commands.rst +++ /dev/null @@ -1,453 +0,0 @@ -:original_name: cce_10_0139.html - -.. _cce_10_0139: - -Common kubectl Commands -======================= - -Getting Started ---------------- - -**get** - -The **get** command displays one or many resources of a cluster. - -This command prints a table of the most important information about all resources, including cluster nodes, running pods, Deployments, and Services. - -.. important:: - - A cluster can have multiple namespaces. If no namespace is specified, this command will run with the **--namespace=default** flag. - -Examples: - -To list all pods with detailed information: - -.. code-block:: - - kubectl get po -o wide - -To display pods in all namespaces: - -.. code-block:: - - kubectl get po --all-namespaces - -To list labels of pods in all namespaces: - -.. code-block:: - - kubectl get po --show-labels - -To list all namespaces of the node: - -.. code-block:: - - kubectl get namespace - -.. note:: - - To list information of other nodes, run this command with the **-s** flag. To list a specified type of resources, add the resource type to this command, for example, **kubectl get svc**, **kubectl get nodes**, and **kubectl get deploy**. - -To list a pod with a specified name in YAML output format: - -.. code-block:: - - kubectl get po -o yaml - -To list a pod with a specified name in JSON output format: - -.. code-block:: - - kubectl get po -o json - -.. code-block:: - - kubectl get po rc-nginx-2-btv4j -o=custom-columns=LABELS:.metadata.labels.app - -.. note:: - - **LABELS** indicates a comma separated list of user-defined column titles. **metadata.labels.app** indicates the data to be listed in either YAML or JSON output format. - -**create** - -The **create** command creates a cluster resource from a file or input. - -If there is already a resource descriptor (a YAML or JSON file), you can create the resource from the file by running the following command: - -.. code-block:: - - kubectl create -f filename - -**expose** - -The **expose** command exposes a resource as a new Kubernetes service. Possible resources include a pod, Service, and Deployment. - -.. code-block:: - - kubectl expose deployment deployname --port=81 --type=NodePort --target-port=80 --name=service-name - -.. note:: - - In the preceding command, **--port** indicates the port exposed by the Service, **--type** indicates the Service type, and **--target-port** indicates the port of the pod backing the Service. Visiting *ClusterIP*:*Port* allows you to access the applications in the cluster. - -**run** - -Examples: - -To run a particular image in the cluster: - -.. code-block:: - - kubectl run deployname --image=nginx:latest - -To run a particular image using a specified command: - -.. code-block:: - - kubectl run deployname -image=busybox --command -- ping baidu.com - -**set** - -The **set** command configures object resources. - -Example: - -To change the image of a deployment with the name specified in **deployname** to image 1.0: - -.. code-block:: - - kubectl set image deploy deployname containername=containername:1.0 - -**edit** - -The **edit** command edits a resource from the default editor. - -Examples: - -To update a pod: - -.. code-block:: - - kubectl edit po po-nginx-btv4j - -The example command yields the same effect as the following command: - -.. code-block:: - - kubectl get po po-nginx-btv4j -o yaml >> /tmp/nginx-tmp.yaml - vim /tmp/nginx-tmp.yaml - /*do some changes here */ - kubectl replace -f /tmp/nginx-tmp.yaml - -**explain** - -The **explain** command views documents or reference documents. - -Example: - -To get documentation of pods: - -.. code-block:: - - kubectl explain pod - -**delete** - -The **delete** command deletes resources by resource name or label. - -Example: - -To delete a pod with minimal delay: - -.. code-block:: - - kubectl delete po podname --now - -.. code-block:: - - kubectl delete -f nginx.yaml - kubectl delete deployment deployname - -Deployment Commands -------------------- - -**rolling-update\*** - -**rolling-update** is a very important command. It updates a running service with zero downtime. Pods are incrementally replaced by new ones. One pod is updated at a time. The old pod is deleted only after the new pod is up. New pods must be distinct from old pods by name, version, and label. Otherwise, an error message will be reported. - -.. code-block:: - - kubectl rolling-update poname -f newfilename - kubectl rolling-update poname -image=image:v2 - -If any problem occurs during the rolling update, run the command with the **-rollback** flag to abort the rolling update and revert to the previous pod. - -.. code-block:: - - kubectl rolling-update poname -rollback - -**rollout** - -The **rollout** command manages the rollout of a resource. - -Examples: - -To check the rollout status of a particular deployment: - -.. code-block:: - - kubectl rollout status deployment/deployname - -To view the rollout history of a particular deployment: - -.. code-block:: - - kubectl rollout history deployment/deployname - -To roll back to the previous deployment: (by default, a resource is rolled back to the previous version) - -.. code-block:: - - kubectl rollout undo deployment/test-nginx - -**scale** - -The **scale** command sets a new size for a resource by adjusting the number of resource replicas. - -.. code-block:: - - kubectl scale deployment deployname --replicas=newnumber - -**autoscale** - -The **autoscale** command automatically chooses and sets the number of pods. This command specifies the range for the number of pod replicas maintained by a replication controller. If there are too many pods, the replication controller terminates the extra pods. If there is too few, the replication controller starts more pods. - -.. code-block:: - - kubectl autoscale deployment deployname --min=minnumber --max=maxnumber - -Cluster Management Commands ---------------------------- - -**cordon, drain, uncordon\*** - -If a node to be upgraded is running many pods or is already down, perform the following steps to prepare the node for maintenance: - -#. Run the **cordon** command to mark a node as unschedulable. This means that new pods will not be scheduled onto the node. - - .. code-block:: - - kubectl cordon nodename - - Note: In CCE, **nodename** indicates the private network IP address of a node. - -#. Run the **drain** command to smoothly migrate the running pods from the node to another node. - - .. code-block:: - - kubectl drain nodename --ignore-daemonsets --ignore-emptydir - - **ignore-emptydir** ignores the pods that use emptyDirs. - -#. Perform maintenance operations on the node, such as upgrading the kernel and upgrading Docker. - -#. After node maintenance is completed, run the **uncordon** command to mark the node as schedulable. - - .. code-block:: - - kubectl uncordon nodename - -**cluster-info** - -To display the add-ons running in the cluster: - -.. code-block:: - - kubectl cluster-info - -To dump current cluster information to stdout: - -.. code-block:: - - kubectl cluster-info dump - -**top\*** - -The **top** command displays resource (CPU/memory/storage) usage. This command requires Heapster to be correctly configured and working on the server. - -**taint\*** - -The **taint** command updates the taints on one or more nodes. - -**certificate\*** - -The **certificate** command modifies the certificate resources. - -Fault Diagnosis and Debugging Commands --------------------------------------- - -**describe** - -The **describe** command is similar to the **get** command. The difference is that the **describe** command shows details of a specific resource or group of resources, whereas the **get** command lists one or more resources in a cluster. The **describe** command does not support the **-o** flag. For resources of the same type, resource details are printed out in the same format. - -.. note:: - - If the information about a resource is queried, you can use the get command to obtain more detailed information. If you want to check the status of a specific resource, for example, to check if a pod is in the running state, run the **describe** command to show more detailed status information. - - .. code-block:: - - kubectl describe po - -**logs** - -The **logs** command prints logs for a container in a pod or specified resource to stdout. To display logs in the **tail -f** mode, run this command with the **-f** flag. - -.. code-block:: - - kubectl logs -f podname - -**exec** - -The kubectl **exec** command is similar to the Docker **exec** command and executes a command in a container. If there are multiple containers in a pod, use the **-c** flag to choose a container. - -.. code-block:: - - kubectl exec -it podname bash - kubectl exec -it podname -c containername bash - -**port-forward\*** - -The **port-forward** command forwards one or more local ports to a pod. - -Example: - -To listen on ports 5000 and 6000 locally, forwarding data to/from ports 5000 and 6000 in the pod: - -.. code-block:: - - kubectl port-forward podname 5000:6000 - -**proxy\*** - -The **proxy** command creates a proxy server between localhost and the Kubernetes API server. - -Example: - -To enable the HTTP REST APIs on the master node: - -.. code-block:: - - kubectl proxy -accept-hosts= '.*' -port=8001 -address= '0.0.0.0' - -**cp** - -The **cp** command copies files and directories to and from containers. - -.. code-block:: - - cp filename newfilename - -**auth\*** - -The **auth** command inspects authorization. - -**attach\*** - -The **attach** command is similar to the **logs -f** command and attaches to a process that is already running inside an existing container. To exit, run the **ctrl-c** command. If a pod contains multiple containers, to view the output of a specific container, use the **-c** flag and *containername* following *podname* to specify a container. - -.. code-block:: - - kubectl attach podname -c containername - -Advanced Commands ------------------ - -**replace** - -The **replace** command updates or replaces an existing resource by attributes including the number of replicas, labels, image versions, and ports. You can directly modify the original YAML file and then run the **replace** command. - -.. code-block:: - - kubectl replace -f filename - -.. important:: - - Resource names cannot be updated. - -**apply\*** - -The **apply** command provides a more strict control on resource updating than **patch** and **edit** commands. The **apply** command applies a configuration to a resource and maintains a set of configuration files in source control. Whenever there is an update, the configuration file is pushed to the server, and then the kubectl **apply** command applies the latest configuration to the resource. The Kubernetes compares the new configuration file with the original one and updates only the changed configuration instead of the whole file. The configuration that is not contained in the **-f** flag will remain unchanged. Unlike the **replace** command which deletes the resource and creates a new one, the **apply** command directly updates the original resource. Similar to the git operation, the **apply** command adds an annotation to the resource to mark the current apply. - -.. code-block:: - - kubectl apply -f - -**patch** - -If you want to modify attributes of a running container without first deleting the container or using the **replace** command, the **patch** command is to the rescue. The **patch** command updates field(s) of a resource using strategic merge patch, a JSON merge patch, or a JSON patch. For example, to change a pod label from **app=nginx1** to **app=nginx2** while the pod is running, use the following command: - -.. code-block:: - - kubectl patch pod podname -p '{"metadata":{"labels":{"app":"nginx2"}}}' - -**convent\*** - -The **convert** command converts configuration files between different API versions. - -Configuration Commands ----------------------- - -**label** - -The **label** command update labels on a resource. - -.. code-block:: - - kubectl label pods my-pod new-label=newlabel - -**annotate** - -The **annotate** command update annotations on a resource. - -.. code-block:: - - kubectl annotate pods my-pod icon-url=http://...... - -**completion** - -The **completion** command provides autocompletion for shell. - -Other Commands --------------- - -**api-versions** - -The **api-versions** command prints the supported API versions. - -.. code-block:: - - kubectl api-versions - -**api-resources** - -The **api-resources** command prints the supported API resources. - -.. code-block:: - - kubectl api-resources - -**config\*** - -The **config** command modifies kubeconfig files. An example use case of this command is to configure authentication information in API calls. - -**help** - -The **help** command gets all command references. - -**version** - -The **version** command prints the client and server version information for the current context. - -.. code-block:: - - kubectl version diff --git a/umn/source/clusters/using_kubectl_to_run_a_cluster/index.rst b/umn/source/clusters/using_kubectl_to_run_a_cluster/index.rst deleted file mode 100644 index 1e4e5b5..0000000 --- a/umn/source/clusters/using_kubectl_to_run_a_cluster/index.rst +++ /dev/null @@ -1,18 +0,0 @@ -:original_name: cce_10_0140.html - -.. _cce_10_0140: - -Using kubectl to Run a Cluster -============================== - -- :ref:`Connecting to a Cluster Using kubectl ` -- :ref:`Customizing a Cluster Certificate SAN ` -- :ref:`Common kubectl Commands ` - -.. toctree:: - :maxdepth: 1 - :hidden: - - connecting_to_a_cluster_using_kubectl - customizing_a_cluster_certificate_san - common_kubectl_commands diff --git a/umn/source/configmaps_and_secrets/cluster_secrets.rst b/umn/source/configmaps_and_secrets/cluster_secrets.rst index e062cd3..fec3e65 100644 --- a/umn/source/configmaps_and_secrets/cluster_secrets.rst +++ b/umn/source/configmaps_and_secrets/cluster_secrets.rst @@ -18,7 +18,7 @@ The functions of these secrets are described as follows. default-secret -------------- -The type of **default-secret** is **kubernetes.io/dockerconfigjson**. The data is the credential for logging in to the SWR image repository and is used to pull images from SWR. If you need to pull an image from SWR when creating a workload on CCE, set **imagePullSecrets** to **default-secret**. +The type of **default-secret** is **kubernetes.io/dockerconfigjson**. The data is the credential for logging in to the SWR image repository and is used to pull images from SWR. To pull an image from SWR when creating a workload on CCE, set **imagePullSecrets** to **default-secret**. .. code-block:: @@ -83,6 +83,6 @@ By default, Kubernetes creates a service account named **default** for each name Labels: Annotations: Image pull secrets: - Mountable secrets: default-token-vssmw - Tokens: default-token-vssmw + Mountable secrets: default-token-xxxxx + Tokens: default-token-xxxxx Events: diff --git a/umn/source/configmaps_and_secrets/creating_a_configmap.rst b/umn/source/configmaps_and_secrets/creating_a_configmap.rst index 3e7c1a2..e282f93 100644 --- a/umn/source/configmaps_and_secrets/creating_a_configmap.rst +++ b/umn/source/configmaps_and_secrets/creating_a_configmap.rst @@ -18,8 +18,8 @@ Benefits of ConfigMaps: - Deploy workloads in different environments. Multiple versions are supported for configuration files so that you can update and roll back workloads easily. - Quickly import configurations in the form of files to containers. -Notes and Constraints ---------------------- +Constraints +----------- - The size of a ConfigMap resource file cannot exceed 2 MB. - ConfigMaps cannot be used in `static pods `__. @@ -27,7 +27,7 @@ Notes and Constraints Procedure --------- -#. Log in to the CCE console and access the cluster console. +#. Log in to the CCE console and click the cluster name to access the cluster console. #. Choose **ConfigMaps and Secrets** in the navigation pane and click **Create ConfigMap** in the upper right corner. @@ -62,7 +62,7 @@ Creating a ConfigMap Using kubectl #. Configure the **kubectl** command to connect an ECS to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. -#. Create and edit the **cce-configmap.yaml** file. +#. Create a file named **cce-configmap.yaml** and edit it. **vi cce-configmap.yaml** @@ -123,4 +123,4 @@ After creating a configuration item, you can update or delete it as described in | | Follow the prompts to delete the ConfigMap. | +-----------------------------------+------------------------------------------------------------------------------------------------------+ -.. |image1| image:: /_static/images/en-us_image_0000001568902541.png +.. |image1| image:: /_static/images/en-us_image_0000001647576860.png diff --git a/umn/source/configmaps_and_secrets/creating_a_secret.rst b/umn/source/configmaps_and_secrets/creating_a_secret.rst index d6f061d..fc22ba8 100644 --- a/umn/source/configmaps_and_secrets/creating_a_secret.rst +++ b/umn/source/configmaps_and_secrets/creating_a_secret.rst @@ -10,15 +10,15 @@ Scenario A secret is a type of resource that holds sensitive data, such as authentication and key information. Its content is user-defined. After creating secrets, you can use them as files or environment variables in a containerized workload. -Notes and Constraints ---------------------- +Constraints +----------- Secrets cannot be used in `static pods `__. Procedure --------- -#. Log in to the CCE console and access the cluster console. +#. Log in to the CCE console and click the cluster name to access the cluster console. #. Choose **ConfigMaps and Secrets** in the navigation pane, click the **Secrets** tab, and click **Create Secret** in the upper right corner. @@ -28,36 +28,36 @@ Procedure .. table:: **Table 1** Parameters for creating a secret - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+===============================================================================================================================================+ - | Name | Name of the secret you create, which must be unique. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ - | Namespace | Namespace to which the secret belongs. If you do not specify this parameter, the value **default** is used by default. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ - | Description | Description of a secret. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ - | Type | Type of the secret you create. | - | | | - | | - Opaque: common secret. | - | | - kubernetes.io/dockerconfigjson: a secret that stores the authentication information required for pulling images from a private repository. | - | | - **kubernetes.io/tls**: Kubernetes TLS secret, which is used to store the certificate required by layer-7 load balancing Services. | - | | - **IngressTLS**: TLS secret provided by CCE to store the certificate required by layer-7 load balancing Services. | - | | - Other: another type of secret, which is specified manually. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ - | Secret Data | Workload secret data can be used in containers. | - | | | - | | - If **Secret Type** is **Opaque**, click |image1|. In the dialog box displayed, enter a key-value pair and select **Auto Base64 Encoding**. | - | | - If the secret type is kubernetes.io/dockerconfigjson, enter the account and password of the private image repository. | - | | - If **Secret Type** is **kubernetes.io/tls** or **IngressTLS**, upload the certificate file and private key file. | - | | | - | | .. note:: | - | | | - | | - A certificate is a self-signed or CA-signed credential used for identity authentication. | - | | - A certificate request is a request for a signature with a private key. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ - | Secret Label | Label of the secret. Enter a key-value pair and click **Add**. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+==================================================================================================================================================================================================================================================================================================================+ + | Name | Name of the secret you create, which must be unique. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Namespace | Namespace to which the secret belongs. If you do not specify this parameter, the value **default** is used by default. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Description | Description of a secret. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Type | Type of the secret you create. | + | | | + | | - Opaque: common secret. | + | | - kubernetes.io/dockerconfigjson: a secret that stores the authentication information required for pulling images from a private repository. | + | | - **kubernetes.io/tls**: Kubernetes TLS secret, which is used to store the certificate required by layer-7 load balancing Services. For details about examples of the kubernetes.io/tls secret and its description, see `TLS secrets `__. | + | | - **IngressTLS**: TLS secret provided by CCE to store the certificate required by layer-7 load balancing Services. | + | | - Other: another type of secret, which is specified manually. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Secret Data | Workload secret data can be used in containers. | + | | | + | | - If **Secret Type** is **Opaque**, click |image1|. In the dialog box displayed, enter a key-value pair and select **Auto Base64 Encoding**. | + | | - If **Secret Type** is **kubernetes.io/dockerconfigjson**, enter the account and password of the private image repository. | + | | - If **Secret Type** is **kubernetes.io/tls** or **IngressTLS**, upload the certificate file and private key file. | + | | | + | | .. note:: | + | | | + | | - A certificate is a self-signed or CA-signed credential used for identity authentication. | + | | - A certificate request is a request for a signature with a private key. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Secret Label | Label of the secret. Enter a key-value pair and click **Add**. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ #. After the configuration is complete, click **OK**. @@ -65,12 +65,12 @@ Procedure .. _cce_10_0153__section187197531454: -Secret Resource File Configuration ----------------------------------- +Secret Resource File Configuration Example +------------------------------------------ This section describes configuration examples of secret resource description files. -- Opaque +- Opaque type The **secret.yaml** file is defined as shown below. The **data** field is filled in as a key-value pair, and the **value** field must be encoded using Base64. For details about the Base64 encoding method, see :ref:`Base64 Encoding `. @@ -85,7 +85,7 @@ This section describes configuration examples of secret resource description fil : # Enter a key-value pair. The value must be encoded using Base64. type: Opaque -- kubernetes.io/dockerconfigjson +- kubernetes.io/dockerconfigjson type The **secret.yaml** file is defined as shown below. The value of **.dockerconfigjson** must be encoded using Base64. For details, see :ref:`Base64 Encoding `. @@ -102,13 +102,13 @@ This section describes configuration examples of secret resource description fil To obtain the **.dockerconfigjson** content, perform the following steps: - #. Obtain the login information of the image repository. + #. Obtain the following login information of the image repository. - Image repository address: The section uses *address* as an example. Replace it with the actual address. - Username: The section uses *username* as an example. Replace it with the actual username. - Password: The section uses *password* as an example. Replace it with the actual password. - #. Use Base64 to encode the key-value pair **username:password** and fill the encoded content in step :ref:`3 `. + #. Use Base64 to encode the key-value pair *username:password* and fill the encoded content in :ref:`3 `. .. code-block:: @@ -136,7 +136,7 @@ This section describes configuration examples of secret resource description fil The encoded content is the **.dockerconfigjson** content. -- kubernetes.io/tls +- kubernetes.io/tls type The value of **tls.crt** and **tls.key** must be encoded using Base64. For details, see :ref:`Base64 Encoding `. @@ -152,7 +152,7 @@ This section describes configuration examples of secret resource description fil tls.key: LS0tLS1CRU*****VZLS0tLS0= # Private key content, which must be encoded using Base64. type: kubernetes.io/tls -- IngressTLS +- IngressTLS type The value of **tls.crt** and **tls.key** must be encoded using Base64. For details, see :ref:`Base64 Encoding `. @@ -182,7 +182,7 @@ Creating a Secret Using kubectl **vi cce-secret.yaml** - The following YAML file uses the Opaque type as an example. For details about other types, see :ref:`Secret Resource File Configuration `. + The following YAML file uses the Opaque type as an example. For details about other types, see :ref:`Secret Resource File Configuration Example `. .. code-block:: @@ -245,4 +245,4 @@ To Base64-encode a string, run the **echo -n content to be encoded \| base64** c root@ubuntu:~# echo -n "content to be encoded" | base64 ****** -.. |image1| image:: /_static/images/en-us_image_0000001518222636.png +.. |image1| image:: /_static/images/en-us_image_0000001695737281.png diff --git a/umn/source/configmaps_and_secrets/using_a_configmap.rst b/umn/source/configmaps_and_secrets/using_a_configmap.rst index 1645e45..af5a7ea 100644 --- a/umn/source/configmaps_and_secrets/using_a_configmap.rst +++ b/umn/source/configmaps_and_secrets/using_a_configmap.rst @@ -25,11 +25,11 @@ The following example shows how to use a ConfigMap. - When a ConfigMap is used in a workload, the workload and ConfigMap must be in the same cluster and namespace. - - When a ConfigMap is mounted as a data volume and is updated, Kubernetes updates the data in the data volume at the same time. + - When a ConfigMap is mounted as a data volume and the ConfigMap is updated, Kubernetes updates the data in the data volume at the same time. - When a ConfigMap data volume mounted in `subPath `__ mode is updated, Kubernetes cannot automatically update the data in the data volume. + For a ConfigMap data volume mounted in `subPath `__ mode, Kubernetes cannot automatically update data in the data volume when the ConfigMap is updated. - - When a ConfigMap is used as an environment variable, data cannot be automatically updated when the ConfigMap is updated. To update the data, you need to restart the pod. + - When a ConfigMap is used as an environment variable, data is not automatically updated when the ConfigMap is updated. To update the data, restart the pod. .. _cce_10_0015__section1737733192813: @@ -38,7 +38,7 @@ Setting Workload Environment Variables **Using the console** -#. Log in to the CCE console and access the cluster console. +#. Log in to the CCE console and click the cluster name to access the cluster console. #. In the navigation pane, choose **Workloads**. Then, click **Create Workload**. @@ -55,7 +55,7 @@ Setting Workload Environment Variables #. Configure other workload parameters and click **Create Workload**. - After the workload runs properly, :ref:`access the container ` and run the following command to check whether the ConfigMap has been set as an environment variable of the workload: + After the workload runs properly, :ref:`log in to the container ` and run the following statement to check whether the ConfigMap has been set as an environment variable of the workload: .. code-block:: @@ -69,7 +69,7 @@ Setting Workload Environment Variables **Using kubectl** -#. According to :ref:`Connecting to a Cluster Using kubectl `, configure the **kubectl** command to connect an ECS to the cluster. +#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. #. Create a file named **nginx-configmap.yaml** and edit it. @@ -77,7 +77,7 @@ Setting Workload Environment Variables Content of the YAML file: - - **Added from ConfigMap**: To add all data in a ConfigMap to environment variables, use the **envFrom** parameter. The keys in the ConfigMap will become names of environment variables in a pod. + - **Added from a ConfigMap**: To add all data in a ConfigMap to environment variables, use the **envFrom** parameter. The keys in the ConfigMap will become names of environment variables in the workload. .. code-block:: @@ -125,13 +125,13 @@ Setting Workload Environment Variables containers: - name: container-1 image: nginx:latest - env: # Set environment variables in the workload. + env: # Set the environment variable in the workload. - name: SPECIAL_LEVEL # Name of the environment variable in the workload. - valueFrom: # Use valueFrom to specify an environment variable to reference a ConfigMap. + valueFrom: # Specify a ConfigMap to be referenced by the environment variable. configMapKeyRef: name: cce-configmap # Name of the referenced ConfigMap. key: SPECIAL_LEVEL # Key in the referenced ConfigMap. - - name: SPECIAL_TYPE # Add multiple environment variables. Multiple environment variables can be imported at the same time. + - name: SPECIAL_TYPE # Add multiple environment variables to import them at the same time. valueFrom: configMapKeyRef: name: cce-configmap @@ -143,7 +143,7 @@ Setting Workload Environment Variables **kubectl apply -f nginx-configmap.yaml** -#. View the environment variables in the pod. +#. View the environment variable in the pod. a. Run the following command to view the created pod: @@ -170,7 +170,7 @@ Setting Workload Environment Variables Hello CCE - The ConfigMap has been set as an environment variable of the workload. + The ConfigMap has been set as environment variables of the workload. .. _cce_10_0015__section17930105710189: @@ -181,7 +181,7 @@ You can use a ConfigMap as an environment variable to set commands or parameter **Using the console** -#. Log in to the CCE console and access the cluster console. +#. Log in to the CCE console and click the cluster name to access the cluster console. #. In the navigation pane, choose **Workloads**. Then, click **Create Workload**. @@ -201,9 +201,9 @@ You can use a ConfigMap as an environment variable to set commands or parameter -c echo $SPECIAL_LEVEL $SPECIAL_TYPE > /usr/share/nginx/html/index.html -#. Configure other workload parameters and click **Create Workload**. +#. Set other workload parameters and click **Create Workload**. - After the workload runs properly, :ref:`access the container ` and run the following command to check whether the ConfigMap has been set as an environment variable of the workload: + After the workload runs properly, :ref:`log in to the container ` and run the following statement to check whether the ConfigMap has been set as an environment variable of the workload: .. code-block:: @@ -217,13 +217,13 @@ You can use a ConfigMap as an environment variable to set commands or parameter **Using kubectl** -#. According to :ref:`Connecting to a Cluster Using kubectl `, configure the **kubectl** command to connect an ECS to the cluster. +#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. #. Create a file named **nginx-configmap.yaml** and edit it. **vi nginx-configmap.yaml** - As shown in the following example, the **cce-configmap** ConfigMap is imported to the workload. **SPECIAL_LEVEL** and **SPECIAL_TYPE** are environment variable names, that is, key names in the **cce-configmap** ConfigMap. + As shown in the following example, the **cce-configmap** ConfigMap is imported to the workload. *SPECIAL_LEVEL* and *SPECIAL_TYPE* are the environment variable names in the workload, that is, the key names in the **cce-configmap** ConfigMap. .. code-block:: @@ -289,54 +289,52 @@ You can use a ConfigMap as an environment variable to set commands or parameter Attaching a ConfigMap to the Workload Data Volume ------------------------------------------------- -The data stored in a ConfigMap can be referenced in a volume of type ConfigMap. You can mount such a volume to a specified container path. The platform supports the separation of workload codes and configuration files. ConfigMap volumes are used to store workload configuration parameters. Before that, you need to create ConfigMaps in advance. For details, see :ref:`Creating a ConfigMap `. +The data stored in a ConfigMap can be referenced in a volume of type ConfigMap. You can mount such a volume to a specified container path. The platform supports the separation of workload codes and configuration files. ConfigMap volumes are used to store workload configuration parameters. Before that, create ConfigMaps in advance. For details, see :ref:`Creating a ConfigMap `. **Using the console** -#. Log in to the CCE console and access the cluster console. +#. Log in to the CCE console and click the cluster name to access the cluster console. #. In the navigation pane, choose **Workloads**. Then, click **Create Workload**. When creating a workload, click **Data Storage** in the **Container Settings** area. Click **Add Volume** and select **ConfigMap** from the drop-down list. -#. Set the local volume type to **ConfigMap** and set parameters for adding a local volume, as shown in :ref:`Table 1 `. - - .. _cce_10_0015__table1776324831114: +#. Configure the parameters. .. table:: **Table 1** Mounting a ConfigMap volume - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+=====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================+ - | Option | Select the desired ConfigMap name. | - | | | - | | A ConfigMap must be created in advance. For details, see :ref:`Creating a ConfigMap `. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Add Container Path | Configure the following parameters: | - | | | - | | a. **Container Path**: Enter the path of the container, for example, **/tmp**. | - | | | - | | This parameter indicates the container path to which a data volume will be mounted. Do not mount the volume to a system directory such as **/** or **/var/run**; this action may cause container errors. You are advised to mount the container to an empty directory. If the directory is not empty, ensure that there are no files affecting container startup in the directory. Otherwise, such files will be replaced, resulting in failures to start the container and create the workload. | - | | | - | | .. important:: | - | | | - | | NOTICE: | - | | When the container is mounted to a high-risk directory, you are advised to use an account with minimum permissions to start the container; otherwise, high-risk files on the host machine may be damaged. | - | | | - | | b. **subPath**: Enter a subpath, for example, **tmp**. | - | | | - | | - A subpath is used to mount a local volume so that the same data volume is used in a single pod. | - | | - The subpath can be the key and value of a ConfigMap or secret. If the subpath is a key-value pair that does not exist, the data import does not take effect. | - | | - The data imported by specifying a subpath will not be updated along with the ConfigMap/secret updates. | - | | | - | | c. Set the permission to **Read-only**. Data volumes in the path are read-only. | - | | | - | | You can click |image3| to add multiple paths and subpaths. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+==============================================================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | ConfigMap | Select the desired ConfigMap. | + | | | + | | A ConfigMap must be created in advance. For details, see :ref:`Creating a ConfigMap `. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Add Container Path | Configure the following parameters: | + | | | + | | a. **Mount Path**: Enter a path of the container, for example, **/tmp**. | + | | | + | | This parameter indicates the container path to which a data volume will be mounted. Do not mount the volume to a system directory such as **/** or **/var/run**; this action may cause container errors. You are advised to mount the volume to an empty directory. If the directory is not empty, ensure that there are no files that affect container startup. Otherwise, the files will be replaced, causing container startup failures or workload creation failures. | + | | | + | | .. important:: | + | | | + | | NOTICE: | + | | When the container is mounted to a high-risk directory, you are advised to use an account with minimum permissions to start the container; otherwise, high-risk files on the host machine may be damaged. | + | | | + | | b. **Subpath**: Enter a subpath, for example, **tmp**. | + | | | + | | - A subpath is used to mount a local volume so that the same data volume is used in a single pod. If this parameter is left blank, the root path is used by default. | + | | - The subpath can be the key and value of a ConfigMap or secret. If the subpath is a key-value pair that does not exist, the data import does not take effect. | + | | - The data imported by specifying a subpath will not be updated along with the ConfigMap/secret updates. | + | | | + | | c. Set the permission to **Read-only**. Data volumes in the path are read-only. | + | | | + | | You can click |image3| to add multiple paths and subpaths. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ **Using kubectl** -#. According to :ref:`Connecting to a Cluster Using kubectl `, configure the **kubectl** command to connect an ECS to the cluster. +#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. #. Create a file named **nginx-configmap.yaml** and edit it. @@ -402,6 +400,6 @@ The data stored in a ConfigMap can be referenced in a volume of type ConfigMap. Hello -.. |image1| image:: /_static/images/en-us_image_0000001568822917.png -.. |image2| image:: /_static/images/en-us_image_0000001568902649.png -.. |image3| image:: /_static/images/en-us_image_0000001569023025.png +.. |image1| image:: /_static/images/en-us_image_0000001695896853.png +.. |image2| image:: /_static/images/en-us_image_0000001695896849.png +.. |image3| image:: /_static/images/en-us_image_0000001647577176.png diff --git a/umn/source/configmaps_and_secrets/using_a_secret.rst b/umn/source/configmaps_and_secrets/using_a_secret.rst index 9bdb188..11f523b 100644 --- a/umn/source/configmaps_and_secrets/using_a_secret.rst +++ b/umn/source/configmaps_and_secrets/using_a_secret.rst @@ -43,7 +43,7 @@ Setting Environment Variables of a Workload **Using the console** -#. Log in to the CCE console and access the cluster console. +#. Log in to the CCE console and click the cluster name to access the cluster console. #. In the navigation pane, choose **Workloads**. Then, click **Create Workload**. @@ -58,19 +58,19 @@ Setting Environment Variables of a Workload For example, after you import the value of **username** in secret **mysecret** as the value of workload environment variable **username**, an environment variable named **username** exists in the container. -#. Configure other workload parameters and click **Create Workload**. +#. Set other workload parameters and click **Create Workload**. - After the workload runs properly, :ref:`access the container ` and run the following command to check whether the secret has been set as an environment variable of the workload: + After the workload runs properly, :ref:`log in to the container ` and run the following statement to check whether the secret has been set as an environment variable of the workload: .. code-block:: printenv username - If the output is the same as that in the secret, the secret has been set as an environment variable of the workload. + If the output is the same as the content in the secret, the secret has been set as an environment variable of the workload. **Using kubectl** -#. According to :ref:`Connecting to a Cluster Using kubectl `, configure the **kubectl** command to connect an ECS to the cluster. +#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. #. Create a file named **nginx-secret.yaml** and edit it. @@ -78,7 +78,7 @@ Setting Environment Variables of a Workload Content of the YAML file: - - **Added from a secret**: To add all data in a secret to environment variables, use the **envFrom** parameter. The keys in the ConfigMap will become names of environment variables in a workload. + - **Added from a secret**: To add all data in a secret to environment variables, use the **envFrom** parameter. The keys in the secret will become names of environment variables in a workload. .. code-block:: @@ -105,7 +105,7 @@ Setting Environment Variables of a Workload imagePullSecrets: - name: default-secret - - **Added from a secret key**: When creating a workload, you can set a secret as an environment variable and use the **valueFrom** parameter to reference the key-value pair in the secret separately. + - **Added from a secret key**: When creating a workload, you can use a secret to set environment variables and use the **valueFrom** parameter to reference the key-value pair in the secret separately. .. code-block:: @@ -126,13 +126,13 @@ Setting Environment Variables of a Workload containers: - name: container-1 image: nginx:latest - env: # Set environment variables in the workload. - - name: SECRET_USERNAME # Name of the environment variable in the workload. - valueFrom: # Use envFrom to specify a secret to be referenced by environment variables. + env: # Set the environment variable in the workload. + - name: SECRET_USERNAME # Name of the environment variable in the workload. + valueFrom: # Use valueFrom to specify a secret to be referenced by environment variables. secretKeyRef: name: mysecret # Name of the referenced secret. - key: username # Name of the referenced key. - - name: SECRET_PASSWORD # Add multiple environment variables. Multiple environment variables can be imported at the same time. + key: username # Key in the referenced secret. + - name: SECRET_PASSWORD # Add multiple environment variables to import them at the same time. valueFrom: secretKeyRef: name: mysecret @@ -164,61 +164,59 @@ Setting Environment Variables of a Workload kubectl exec nginx-secret-*** -- printenv SPECIAL_USERNAME SPECIAL_PASSWORD - If the output is the same as that in the secret, the secret has been set as an environment variable of the workload. + If the output is the same as the content in the secret, the secret has been set as an environment variable of the workload. .. _cce_10_0016__section472505211214: Configuring the Data Volume of a Workload ----------------------------------------- -You can mount a secret as a volume to the specified container path. Contents in a secret are user-defined. Before that, you need to create a secret. For details, see :ref:`Creating a Secret `. +You can mount a secret as a volume to the specified container path. Contents in a secret are user-defined. Before that, create a secret. For details, see :ref:`Creating a Secret `. **Using the console** -#. Log in to the CCE console and access the cluster console. +#. Log in to the CCE console and click the cluster name to access the cluster console. #. In the navigation pane on the left, click **Workloads**. In the right pane, click the **Deployments** tab. Click **Create Workload** in the upper right corner. When creating a workload, click **Data Storage** in the **Container Settings** area. Click **Add Volume** and select **Secret** from the drop-down list. -#. Set the local volume type to **Secret** and set parameters for adding a local volume, as shown in :ref:`Table 1 `. +#. Configure the parameters. - .. _cce_10_0016__table861818920109: + .. table:: **Table 1** Mounting a Secret volume - .. table:: **Table 1** Secret - - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+=====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================+ - | Secret | Select the desired secret name. | - | | | - | | A secret must be created in advance. For details, see :ref:`Creating a Secret `. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Add Container Path | Configure the following parameters: | - | | | - | | a. **Container Path**: Enter the path of the container, for example, **/tmp**. | - | | | - | | This parameter indicates the container path to which a data volume will be mounted. Do not mount the volume to a system directory such as **/** or **/var/run**; this action may cause container errors. You are advised to mount the container to an empty directory. If the directory is not empty, ensure that there are no files affecting container startup in the directory. Otherwise, such files will be replaced, resulting in failures to start the container and create the workload. | - | | | - | | .. important:: | - | | | - | | NOTICE: | - | | When the container is mounted to a high-risk directory, you are advised to use an account with minimum permissions to start the container; otherwise, high-risk files on the host machine may be damaged. | - | | | - | | b. **subPath**: Enter a subpath, for example, **tmp**. | - | | | - | | - A subpath is used to mount a local volume so that the same data volume is used in a single pod. | - | | - The subpath can be the key and value of a ConfigMap or secret. If the subpath is a key-value pair that does not exist, the data import does not take effect. | - | | - The data imported by specifying a subpath will not be updated along with the ConfigMap/secret updates. | - | | | - | | c. Set the permission to **Read-only**. Data volumes in the path are read-only. | - | | | - | | You can click |image2| to add multiple paths and subpaths. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+==============================================================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | Secret | Select the desired secret. | + | | | + | | A secret must be created in advance. For details, see :ref:`Creating a Secret `. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Add Container Path | Configure the following parameters: | + | | | + | | a. **Mount Path**: Enter a path of the container, for example, **/tmp**. | + | | | + | | This parameter indicates the container path to which a data volume will be mounted. Do not mount the volume to a system directory such as **/** or **/var/run**; this action may cause container errors. You are advised to mount the volume to an empty directory. If the directory is not empty, ensure that there are no files that affect container startup. Otherwise, the files will be replaced, causing container startup failures or workload creation failures. | + | | | + | | .. important:: | + | | | + | | NOTICE: | + | | When the container is mounted to a high-risk directory, you are advised to use an account with minimum permissions to start the container; otherwise, high-risk files on the host machine may be damaged. | + | | | + | | b. **Subpath**: Enter a subpath, for example, **tmp**. | + | | | + | | - A subpath is used to mount a local volume so that the same data volume is used in a single pod. If this parameter is left blank, the root path is used by default. | + | | - The subpath can be the key and value of a ConfigMap or secret. If the subpath is a key-value pair that does not exist, the data import does not take effect. | + | | - The data imported by specifying a subpath will not be updated along with the ConfigMap/secret updates. | + | | | + | | c. Set the permission to **Read-only**. Data volumes in the path are read-only. | + | | | + | | You can click |image2| to add multiple paths and subpaths. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ **Using kubectl** -#. According to :ref:`Connecting to a Cluster Using kubectl `, configure the **kubectl** command to connect an ECS to the cluster. +#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. #. Create a file named **nginx-secret.yaml** and edit it. @@ -254,11 +252,11 @@ You can mount a secret as a volume to the specified container path. Contents in secret: secretName: mysecret # Name of the referenced secret. - You can also use the **items** field to control the mapping path of the secret key. For example, store the **username** in the **/etc/foo/my-group/my-username** directory of the container. + You can also use the **items** field to control the mapping path of secret keys. For example, store username in the **/etc/foo/my-group/my-username** directory in the container. .. note:: - - After the **items** field is used to specify the mapping path of the secret key, the keys that are not specified will not be created as files. For example, if the password key in the following example is not specified, the file will not be created. + - If you use the **items** field to specify the mapping path of the secret keys, the keys that are not specified will not be created as files. For example, if the **password** key in the following example is not specified, the file will not be created. - If you want to use all keys in a secret, you must list all keys in the **items** field. - All keys listed in the **items** field must exist in the corresponding secret. Otherwise, the volume is not created. @@ -291,7 +289,7 @@ You can mount a secret as a volume to the specified container path. Contents in secretName: mysecret # Name of the referenced secret. items: - key: username # Name of the referenced key. - path: my-group/my-username # Mapping path of the secret key. + path: my-group/my-username # Mapping path of the secret key #. Create a workload. @@ -317,7 +315,7 @@ You can mount a secret as a volume to the specified container path. Contents in kubectl exec nginx-secret-*** -- /etc/foo/username - The expected output is the same as that in the secret. + The expected output is the same as the content in the secret. -.. |image1| image:: /_static/images/en-us_image_0000001518062644.png -.. |image2| image:: /_static/images/en-us_image_0000001569182625.png +.. |image1| image:: /_static/images/en-us_image_0000001647417524.png +.. |image2| image:: /_static/images/en-us_image_0000001647576792.png diff --git a/umn/source/charts/converting_a_release_from_helm_v2_to_v3.rst b/umn/source/helm_chart/converting_a_release_from_helm_v2_to_v3.rst similarity index 96% rename from umn/source/charts/converting_a_release_from_helm_v2_to_v3.rst rename to umn/source/helm_chart/converting_a_release_from_helm_v2_to_v3.rst index 2bbe38f..aa2bb87 100644 --- a/umn/source/charts/converting_a_release_from_helm_v2_to_v3.rst +++ b/umn/source/helm_chart/converting_a_release_from_helm_v2_to_v3.rst @@ -12,8 +12,8 @@ CCE fully supports Helm v3. This section guides you to convert a Helm v2 release For details, see the `community documentation `__. -Note: ------ +Precautions +----------- - Helm v2 stores release information in ConfigMaps. Helm v3 does so in secrets. - When you query, update, or operate a Helm v2 release on the CCE console, CCE will attempt to convert the release to v3. If you operate in the background, convert the release by following the instructions below. @@ -33,7 +33,7 @@ Conversion Process (Without Using the Helm v3 Client) tar -xzvf helm-2to3_0.10.2_linux_amd64.tar.gz -3. Simulate the conversion. +3. Perform the simulated conversion. Take the test-convert release as an example. Run the following command to simulate the conversion: If the following information is displayed, the simulation is successful. @@ -46,7 +46,7 @@ Conversion Process (Without Using the Helm v3 Client) [Helm 3] Release "test-convert" will be created. [Helm 3] ReleaseVersion "test-convert.v1" will be created. -4. Perform the conversion. If the following information is displayed, the conversion is successful: +4. Perform the conversion. If the following information is displayed, the conversion is successful. .. code-block:: @@ -103,7 +103,7 @@ Conversion Process (Using the Helm v3 Client) https://github.com/helm/helm-2to3/releases/download/v0.10.2/helm-2to3_0.10.2_linux_amd64.tar.gz Installed plugin: 2to3 -#. Check the installed plug-in and ensure that the plug-in is installed. +#. Check whether the plug-in has been installed. .. code-block:: @@ -124,7 +124,7 @@ Conversion Process (Using the Helm v3 Client) [Helm 3] Release "test-convert" will be created. [Helm 3] ReleaseVersion "test-convert.v1" will be created. -#. Perform the formal conversion. If the following information is displayed, the conversion is successful: +#. Perform the conversion. If the following information is displayed, the conversion is successful. .. code-block:: diff --git a/umn/source/charts/deploying_an_application_from_a_chart.rst b/umn/source/helm_chart/deploying_an_application_from_a_chart.rst similarity index 95% rename from umn/source/charts/deploying_an_application_from_a_chart.rst rename to umn/source/helm_chart/deploying_an_application_from_a_chart.rst index 2d9716e..e9e6a40 100644 --- a/umn/source/charts/deploying_an_application_from_a_chart.rst +++ b/umn/source/helm_chart/deploying_an_application_from_a_chart.rst @@ -7,8 +7,8 @@ Deploying an Application from a Chart On the CCE console, you can upload a Helm chart package, deploy it, and manage the deployed pods. -Notes and Constraints ---------------------- +Constraints +----------- - The number of charts that can be uploaded by a single user is limited. The value displayed on the console of each region is the allowed quantity. - A chart with multiple versions consumes the same amount of portion of chart quota. @@ -74,7 +74,7 @@ The Redis workload is used as an example to illustrate the chart specifications. +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | \* Chart.yaml | Basic information about the chart. | | | | - | | Note: Helm v3 bumps the apiVersion from v1 to v2. | + | | Note: The API version of Helm v3 is switched from v1 to v2. | +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | .helmignore | Files or data that does not need to read templates during workload installation. | +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -82,7 +82,7 @@ The Redis workload is used as an example to illustrate the chart specifications. Uploading a Chart ----------------- -#. Log in to the CCE console, click the cluster name, and access the cluster console. Choose **Charts** in the navigation pane and click **Upload Chart** in the upper right corner. +#. Log in to the CCE console and click the cluster name to access the cluster console. Choose **Charts** in the navigation pane and click **Upload Chart** in the upper right corner. #. Click **Select File**, select the chart to be uploaded, and click **Upload**. .. note:: @@ -92,7 +92,7 @@ Uploading a Chart Creating a Release ------------------ -#. Log in to the CCE console, click the cluster name, and access the cluster console. In the navigation pane, choose **Charts**. +#. Log in to the CCE console and click the cluster name to access the cluster console. In the navigation pane, choose **Charts**. #. On the **My Charts** tab page, click **Install** of the target chart. @@ -130,7 +130,7 @@ Creating a Release Upgrading a Chart-based Workload -------------------------------- -#. Log in to the CCE console, click the cluster name, and access the cluster console. Choose **Charts** in the navigation pane and click the **Releases** tab. +#. Log in to the CCE console and click the cluster name to access the cluster console. Choose **Charts** in the navigation pane and click the **Releases** tab. #. Click **Upgrade** in the row where the desired workload resides and set the parameters for the workload. #. Select a chart version for **Chart Version**. #. Follow the prompts to modify the chart parameters. Click **Upgrade**, and then click **Submit**. @@ -139,7 +139,7 @@ Upgrading a Chart-based Workload Rolling Back a Chart-based Workload ----------------------------------- -#. Log in to the CCE console, click the cluster name, and access the cluster console. Choose **Charts** in the navigation pane and click the **Releases** tab. +#. Log in to the CCE console and click the cluster name to access the cluster console. Choose **Charts** in the navigation pane and click the **Releases** tab. #. Click **More** > **Roll Back** for the workload to be rolled back, select the workload version, and click **Roll back** **to this version**. @@ -148,5 +148,5 @@ Rolling Back a Chart-based Workload Uninstalling a Chart-based Workload ----------------------------------- -#. Log in to the CCE console, click the cluster name, and access the cluster console. Choose **Charts** in the navigation pane and click the **Releases** tab. +#. Log in to the CCE console and click the cluster name to access the cluster console. Choose **Charts** in the navigation pane and click the **Releases** tab. #. Click **More** > **Uninstall** next to the release to be uninstalled, and click **Yes**. Exercise caution when performing this operation because releases cannot be restored after being uninstalled. diff --git a/umn/source/charts/deploying_an_application_through_the_helm_v2_client.rst b/umn/source/helm_chart/deploying_an_application_through_the_helm_v2_client.rst similarity index 87% rename from umn/source/charts/deploying_an_application_through_the_helm_v2_client.rst rename to umn/source/helm_chart/deploying_an_application_through_the_helm_v2_client.rst index 71207ce..0abed64 100644 --- a/umn/source/charts/deploying_an_application_through_the_helm_v2_client.rst +++ b/umn/source/helm_chart/deploying_an_application_through_the_helm_v2_client.rst @@ -13,7 +13,7 @@ The Kubernetes cluster created on CCE has been connected to kubectl. For details Installing Helm v2 ------------------ -This document uses Helm v2.17.0 as an example. +This section uses Helm v2.17.0 as an example. For other versions, visit https://github.com/helm/helm/releases. @@ -35,7 +35,7 @@ For other versions, visit https://github.com/helm/helm/releases. mv linux-amd64/helm /usr/local/bin/helm -#. RBAC is enabled on the Kubernetes API server. Therefore, you need to create the service account name **tiller** for the tiller and assign cluster-admin, a system ClusterRole, to the tiller. Create a tiller resource account as follows: +#. RBAC is enabled on the Kubernetes API server. Create the service account name **tiller** for the tiller and assign cluster-admin, a system ClusterRole, to the tiller. Create a tiller resource account as follows: **vim tiller-rbac.yaml** @@ -66,7 +66,7 @@ For other versions, visit https://github.com/helm/helm/releases. kubectl apply -f tiller-rbac.yaml -#. Initialize the Helm and deploy the pod of Tiller. +#. Initialize the Helm and deploy the pod of tiller. .. code-block:: @@ -78,7 +78,7 @@ For other versions, visit https://github.com/helm/helm/releases. kubectl get pod -n kube-system -l app=helm - Example command output: + Command output: .. code-block:: @@ -117,7 +117,7 @@ You can obtain the required chart in the **stable** directory on this `website < Common Issues ------------- -- The following error message is displayed after the **helm version** command is run: +- The following error message is displayed after the **Helm version** command is run: .. code-block:: @@ -136,15 +136,17 @@ Common Issues yum install socat -y -- When you run the **yum install socat -y** command on a node running EulerOS 2.9 and the following error message is displayed: +- When you run the **yum install socat -y** command on a node running EulerOS 2.9 , if the following error message is displayed: No match for argument: socat Error: Unable to find a match: socat - Manually download the socat image and run the following command to install it: + The image does not contain socat. In this case, manually download the RPM chart and run the following command to install it (replace the RPM chart name with the actual one): - rpm -i socat-1.7.3.2-8.oe1.x86_64.rpm + .. code-block:: + + rpm -i socat-1.7.3.2-8.oe1.x86_64.rpm - When the socat has been installed and the following error message is displayed after the **helm version** command is run: diff --git a/umn/source/helm_chart/deploying_an_application_through_the_helm_v3_client.rst b/umn/source/helm_chart/deploying_an_application_through_the_helm_v3_client.rst new file mode 100644 index 0000000..7bd8195 --- /dev/null +++ b/umn/source/helm_chart/deploying_an_application_through_the_helm_v3_client.rst @@ -0,0 +1,165 @@ +:original_name: cce_10_0144.html + +.. _cce_10_0144: + +Deploying an Application Through the Helm v3 Client +=================================================== + +Prerequisites +------------- + +The Kubernetes cluster created on CCE has been connected to kubectl. For details, see :ref:`Using kubectl `. + +.. _cce_10_0144__en-us_topic_0226102212_en-us_topic_0179003017_section3719193213815: + +Installing Helm v3 +------------------ + +This section uses Helm v3.3.0 as an example. + +For other versions, visit https://github.com/helm/helm/releases. + +#. Download the Helm client from the VM connected to the cluster. + + .. code-block:: + + wget https://get.helm.sh/helm-v3.3.0-linux-amd64.tar.gz + +#. Decompress the Helm package. + + .. code-block:: + + tar -xzvf helm-v3.3.0-linux-amd64.tar.gz + +#. Copy Helm to the system path, for example, **/usr/local/bin/helm**. + + .. code-block:: + + mv linux-amd64/helm /usr/local/bin/helm + +#. Query the Helm version. + + .. code-block:: + + helm version + version.BuildInfo{Version:"v3.3.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a28b6", GitTreeState:"clean", GoVersion:"go1.13.4"} + +Installing the Helm Chart +------------------------- + +You can use Helm to install a chart. Before using Helm, you may need to understand the following concepts to better use Helm: + +- Chart: contains resource definitions and a large number of configuration files of Kubernetes applications. +- Repository: stores shared charts. You can download charts from the repository to a local path for installation or install them online. +- Release: running result of after a chart is installed in a Kubernetes cluster using Helm. A chart can be installed multiple times in a cluster. A new release will be created for each installation. A MySQL chart is used as an example. To run two databases in a cluster, install the chart twice. Each database has its own release and release name. + +For more details, see `Using Helm `__. + +#. .. _cce_10_0144__li125132594918: + + Search for a chart from the `Artifact Hub `__ repository recommended by Helm and configure the Helm repository. + + .. code-block:: + + helm repo add {repo_name} {repo_addr} + + The following uses the `WordPress chart `__ as an example: + + .. code-block:: + + helm repo add bitnami https://charts.bitnami.com/bitnami + +#. Run the **helm install** command to install the chart. + + - Default installation: This is the simplest method, which requires only two parameters. + + .. code-block:: + + helm install {release_name} {chart_name} + + For example, to install WordPress, the WordPress chart added in :ref:`step 1 ` is **bitnami/wordpress**, and the release name is **my-wordpress**. + + .. code-block:: + + helm install my-wordpress bitnami/wordpress + + - Custom installation: The default installation uses the default settings in the chart. Use custom installation to custom parameter settings. Run the **helm show values** *{chart_name}* command to view the configurable options of the chart. For example, to view the configurable items of WordPress, run the following command: + + .. code-block:: + + helm show values bitnami/wordpress + + Overwrite specified parameters by running the following commands: + + .. code-block:: + + helm install my-wordpress bitnami/wordpress \ + --set mariadb.primary.persistence.enabled=true \ + --set mariadb.primary.persistence.storageClass=csi-disk \ + --set mariadb.primary.persistence.size=10Gi \ + --set persistence.enabled=false + +#. View the installed chart release. + + .. code-block:: + + helm list + +Common Issues +------------- + +- The following error message is displayed after the **helm version** command is run: + + .. code-block:: + + Client: + &version.Version{SemVer:"v3.3.0", + GitCommit:"012cb0ac1a1b2f888144ef5a67b8dab6c2d45be6", GitTreeState:"clean"} + E0718 11:46:10.132102 7023 portforward.go:332] an error occurred + forwarding 41458 -> 44134: error forwarding port 44134 to pod + d566b78f997eea6c4b1c0322b34ce8052c6c2001e8edff243647748464cd7919, uid : unable + to do port forwarding: socat not found. + Error: cannot connect to Tiller + + The preceding information is displayed because the socat is not installed. Run the following command to install the socat: + + .. code-block:: + + yum install socat -y + +- When you run the **yum install socat -y** command on a node running EulerOS 2.9 , if the following error message is displayed: + + .. code-block:: + + No match for argument: socat + Error: Unable to find a match: socat + + The node image does not contain socat. In this case, manually download the RPM chart and run the following command to install it (replace the RPM chart name with the actual one): + + .. code-block:: + + rpm -i socat-1.7.3.2-8.oe1.x86_64.rpm + +- When the socat has been installed and the following error message is displayed after the **helm version** command is run: + + .. code-block:: + + $ helm version + Client: &version.Version{SemVer:"v3.3.0", GitCommit:"021cb0ac1a1b2f888144ef5a67b8dab6c2d45be6", GitTreeState:"clean"} + Error: cannot connect to Tiller + + The Helm chart reads the configuration certificate in **.Kube/config** to communicate with Kubernetes. The preceding error indicates that the kubectl configuration is incorrect. In this case, reconnect the cluster to kubectl. For details, see :ref:`Using kubectl `. + +- Storage fails to be created after you have connected to cloud storage services. + + This issue may be caused by the **annotation** field in the created PVC. Change the chart name and install the chart again. + +- If kubectl is not properly configured, the following error message is displayed after the **helm install** command is run: + + .. code-block:: + + # helm install prometheus/ --generate-name + WARNING: This chart is deprecated + Error: Kubernetes cluster unreachable: Get "http://localhost:8080/version?timeout=32s": dial tcp [::1]:8080: connect: connection refused + + **Solution**: Configure kubeconfig for the node. For details, see :ref:`Using kubectl `. diff --git a/umn/source/charts/differences_between_helm_v2_and_helm_v3_and_adaptation_solutions.rst b/umn/source/helm_chart/differences_between_helm_v2_and_helm_v3_and_adaptation_solutions.rst similarity index 90% rename from umn/source/charts/differences_between_helm_v2_and_helm_v3_and_adaptation_solutions.rst rename to umn/source/helm_chart/differences_between_helm_v2_and_helm_v3_and_adaptation_solutions.rst index d8fd13e..3105684 100644 --- a/umn/source/charts/differences_between_helm_v2_and_helm_v3_and_adaptation_solutions.rst +++ b/umn/source/helm_chart/differences_between_helm_v2_and_helm_v3_and_adaptation_solutions.rst @@ -17,7 +17,7 @@ Changes since Helm v2: Helm v2 used a two-way strategic merge patch. During an upgrade, it compared the most recent chart's manifest against the proposed chart's manifest to determine what changes needed to be applied to the resources in Kubernetes. If changes were applied to the cluster out-of-band (such as during a kubectl edit), those changes were not considered. This resulted in resources being unable to roll back to its previous state. - Helm v3 uses a three-way strategic merge patch. Helm considers the old manifest, its live state, and the new manifest when generating a patch. Helm compares the current live state with that of the old manifest, checks whether the new manifest is modified, and automatically supplements the new manifest to generate the final update patch. + Helm v3 uses a three-way strategic merge patch. Helm considers the old manifest, its live state, and the new manifest when generating a patch. Helm compares the current live state with the live state of the old manifest, checks whether the new manifest is modified, and automatically supplements the new manifest to generate the final update patch. For details and examples, see https://v3.helm.sh/docs/faq/changes_since_helm2. @@ -29,7 +29,7 @@ Changes since Helm v2: In Helm v2, the information about each release was stored in the same namespace as Tiller. In practice, this meant that once a name was used by a release, no other release could use that same name, even if it was deployed in a different namespace. In Helm v3, information about a particular release is now stored in the same namespace as the release itself. This means that the release name can be used in different namespaces. The namespace of the application is the same as that of the release. -#. **Verification mode** +#. **Verification mode change** Helm v3 verifies the chart format more strictly. For example, Helm v3 bumps the apiVersion in Chart.yaml from v1 to v2. For the Chart.yaml of v2, apiVersion must be set to v1. After installing the Helm v3 client, you can run the **helm lint** command to check whether the chart format complies with the Helm v3 specifications. @@ -43,7 +43,7 @@ Changes since Helm v2: #. **Resources that are not created using Helm are not forcibly updated. Releases are not forcibly upgraded by default.** - The forcible upgrade logic of Helm v3 is changed. After the upgrade fails, the system does not delete and rebuild the Helm v3. Instead, the system directly uses the **put** logic. Therefore, the CCE release upgrade uses the non-forcible update logic by default. Resources that cannot be updated through patches will make the release unable to be upgraded. If a resource with the same name exists in the environment and does not have the Helm v3 ownership tag **app.kubernetes.io/managed-by: Helm**, a resource conflict message is displayed. + The forcible upgrade logic of Helm v3 is changed. After the upgrade fails, the system does not delete and rebuild the Helm v3. Instead, the system directly uses the **put** logic. Therefore, the CCE release upgrade uses the non-forcible update logic by default. Resources that cannot be updated through patches will make the release unable to be upgraded. If a release with the same name exists in the environment and does not have the home tag **app.kubernetes.io/managed-by: Helm** of Helm v3, a conflict message is displayed. **Adaptation solution**: Delete related resources and create them using Helm. diff --git a/umn/source/charts/index.rst b/umn/source/helm_chart/index.rst similarity index 97% rename from umn/source/charts/index.rst rename to umn/source/helm_chart/index.rst index 6eed788..dc413a2 100644 --- a/umn/source/charts/index.rst +++ b/umn/source/helm_chart/index.rst @@ -2,8 +2,8 @@ .. _cce_10_0019: -Charts -====== +Helm Chart +========== - :ref:`Overview ` - :ref:`Deploying an Application from a Chart ` diff --git a/umn/source/charts/overview.rst b/umn/source/helm_chart/overview.rst similarity index 96% rename from umn/source/charts/overview.rst rename to umn/source/helm_chart/overview.rst index 3e359af..3636854 100644 --- a/umn/source/charts/overview.rst +++ b/umn/source/helm_chart/overview.rst @@ -33,4 +33,4 @@ Helm can help application orchestration for Kubernetes: - Controls phases in a deployment cycle. - Tests and verifies the released version. -.. |image1| image:: /_static/images/en-us_image_0000001518062492.png +.. |image1| image:: /_static/images/en-us_image_0000001695736889.png diff --git a/umn/source/high-risk_operations_and_solutions.rst b/umn/source/high-risk_operations_and_solutions.rst index 44a5f1d..3dcf41b 100644 --- a/umn/source/high-risk_operations_and_solutions.rst +++ b/umn/source/high-risk_operations_and_solutions.rst @@ -12,117 +12,142 @@ Clusters and Nodes .. table:: **Table 1** High-risk operations and solutions - +-----------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | Category | Operation | Impact | Solution | - +=================+=======================================================================================================+======================================================================================================================================================================================================================================================================================+===================================================================================================================================================+ - | Master node | Modifying the security group of a node in a cluster | The master node may be unavailable. | Restore the security group by referring to the security group of the new cluster and allow traffic from the security group to pass through. | - | | | | | - | | | .. note:: | | - | | | | | - | | | Naming rule of a master node: *Cluster name*\ ``-``\ **cce-control**\ ``-``\ *Random number* | | - +-----------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | | Letting the node expire or destroying the node | The master node will be unavailable. | This operation cannot be undone. | - +-----------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | | Reinstalling the OS | Components on the master node will be deleted. | This operation cannot be undone. | - +-----------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | | Upgrading components on the master or etcd node | The cluster may be unavailable. | Roll back to the original version. | - +-----------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | | Deleting or formatting core directory data such as **/etc/kubernetes** on the node | The master node will be unavailable. | This operation cannot be undone. | - +-----------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | | Changing the node IP address | The master node will be unavailable. | Change the IP address back to the original one. | - +-----------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | | Modifying parameters of core components (such as etcd, kube-apiserver, and docker) | The master node may be unavailable. | Restore the parameter settings to the recommended values. For details, see :ref:`Cluster Configuration Management `. | - +-----------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | | Replacing the master or etcd certificate | The cluster may become unavailable. | This operation cannot be undone. | - +-----------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | Worker node | Modifying the security group of a node in a cluster | The node may be unavailable. | Restore the security group by referring to :ref:`Creating a CCE Cluster ` and allow traffic from the security group to pass through. | - | | | | | - | | | .. note:: | | - | | | | | - | | | Naming rule of a worker node: *Cluster name*\ ``-``\ **cce-node**\ ``-``\ *Random number* | | - +-----------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | | Deleting the node | The node will become unavailable. | This operation cannot be undone. | - +-----------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | | Reinstalling the OS | Node components are deleted, and the node becomes unavailable. | Reset the node. For details, see :ref:`Resetting a Node `. | - +-----------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | | Upgrading the node kernel | The node may be unavailable or the network may be abnormal. | For details, see :ref:`Resetting a Node `. | - | | | | | - | | | .. note:: | | - | | | | | - | | | Node running depends on the system kernel version. Do not use the **yum update** command to update or reinstall the operating system kernel of a node unless necessary. (Reinstalling the operating system kernel using the original image or other images is a risky operation.) | | - +-----------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | | Changing the node IP address | The node will become unavailable. | Change the IP address back to the original one. | - +-----------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | | Modifying parameters of core components (such as kubelet and kube-proxy) | The node may become unavailable, and components may be insecure if security-related configurations are modified. | Restore the parameter settings to the recommended values. For details, see :ref:`Configuring a Node Pool `. | - +-----------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | | Modifying OS configuration | The node may be unavailable. | Restore the configuration items or reset the node. For details, see :ref:`Resetting a Node `. | - +-----------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | | Deleting or modifying the **/opt/cloud/cce** and **/var/paas** directories, and delete the data disk. | The node will become unready. | You can reset the node. For details, see :ref:`Resetting a Node `. | - +-----------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | | Modifying the node directory permission and the container directory permission | The permissions will be abnormal. | You are not advised to modify the permissions. Restore the permissions if they are modified. | - +-----------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | | Formatting or partitioning system disks, Docker disks, and kubelet disks on nodes. | The node may be unavailable. | You can reset the node. For details, see :ref:`Resetting a Node `. | - +-----------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | | Installing other software on nodes | This may cause exceptions on Kubernetes components installed on the node, and make the node unavailable. | Uninstall the software that has been installed and restore or reset the node. For details, see :ref:`Resetting a Node `. | - +-----------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | | Modifying NetworkManager configurations | The node will become unavailable. | Reset the node. For details, see :ref:`Resetting a Node `. | - +-----------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | | Delete system images such as **cfe-pause** from the node. | Containers cannot be created and system images cannot be pulled. | Copy the image from another normal node for restoration. | - +-----------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ + +-----------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+ + | Category | Operation | Impact | Solution | + +=================+========================================================================================================+======================================================================================================================================================================================================================================================================================+=======================================================================================================================================+ + | Master node | Modifying the security group of a node in a cluster | The master node may be unavailable. | Restore the security group by referring to "Creating a Cluster" and allow traffic from the security group to pass through. | + | | | | | + | | | .. note:: | | + | | | | | + | | | Naming rule of a master node: *Cluster name*\ ``-``\ **cce-control**\ ``-``\ *Random number* | | + +-----------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+ + | | Letting the node expire or destroying the node | The master node will be unavailable. | This operation cannot be undone. | + +-----------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+ + | | Reinstalling the OS | Components on the master node will be deleted. | This operation cannot be undone. | + +-----------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+ + | | Upgrading components on the master or etcd node | The cluster may be unavailable. | Roll back to the original version. | + +-----------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+ + | | Deleting or formatting core directory data such as **/etc/kubernetes** on the node | The master node will be unavailable. | This operation cannot be undone. | + +-----------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+ + | | Changing the node IP address | The master node will be unavailable. | Change the IP address back to the original one. | + +-----------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+ + | | Modifying parameters of core components (such as etcd, kube-apiserver, and docker) | The master node may be unavailable. | Restore the parameter settings to the recommended values. For details, see :ref:`Cluster Configuration Management `. | + +-----------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+ + | | Replacing the master or etcd certificate | The cluster may be unavailable. | This operation cannot be undone. | + +-----------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+ + | Worker node | Modifying the security group of a node in a cluster | The node may be unavailable. | Restore the security group and allow traffic from the security group to pass through. | + | | | | | + | | | .. note:: | | + | | | | | + | | | Naming rule of a worker node: *Cluster name*\ ``-``\ **cce-node**\ ``-``\ *Random number* | | + +-----------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+ + | | Deleting the node | The node will become unavailable. | This operation cannot be undone. | + +-----------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+ + | | Reinstalling the OS | Node components are deleted, and the node becomes unavailable. | Reset the node. For details, see :ref:`Resetting a Node `. | + +-----------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+ + | | Upgrading the node kernel | The node may be unavailable or the network may be abnormal. | For details, see :ref:`Resetting a Node `. | + | | | | | + | | | .. note:: | | + | | | | | + | | | Node running depends on the system kernel version. Do not use the **yum update** command to update or reinstall the operating system kernel of a node unless necessary. (Reinstalling the operating system kernel using the original image or other images is a risky operation.) | | + +-----------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+ + | | Changing the node IP address | The node will become unavailable. | Change the IP address back to the original one. | + +-----------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+ + | | Modifying parameters of core components (such as kubelet and kube-proxy) | The node may become unavailable, and components may be insecure if security-related configurations are modified. | Restore the parameter settings to the recommended values. For details, see :ref:`Configuring a Node Pool `. | + +-----------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+ + | | Modifying OS configuration | The node may be unavailable. | Restore the configuration items or reset the node. For details, see :ref:`Resetting a Node `. | + +-----------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+ + | | Deleting or modifying the **/opt/cloud/cce** and **/var/paas** directories, and deleting the data disk | The node will become unready. | Reset the node. For details, see :ref:`Resetting a Node `. | + +-----------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+ + | | Modifying the node directory permission and the container directory permission | The permissions will be abnormal. | You are not advised to modify the permissions. Restore the permissions if they are modified. | + +-----------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+ + | | Formatting or partitioning system disks, Docker disks, and kubelet disks on nodes. | The node may be unavailable. | Reset the node. For details, see :ref:`Resetting a Node `. | + +-----------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+ + | | Installing other software on nodes | This may cause exceptions on Kubernetes components installed on the node, and make the node unavailable. | Uninstall the software that has been installed and restore or reset the node. For details, see :ref:`Resetting a Node `. | + +-----------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+ + | | Modifying NetworkManager configurations | The node will become unavailable. | Reset the node. For details, see :ref:`Resetting a Node `. | + +-----------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+ + | | Delete system images such as **cce-pause** from the node. | Containers cannot be created and system images cannot be pulled. | Copy the image from another normal node for restoration. | + +-----------------+--------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+ -Networking and Load Balancing ------------------------------ +Networking +---------- .. table:: **Table 2** High-risk operations and solutions - +-------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | Operation | Impact | How to Avoid/Fix | - +===================================================================================================================+============================================================================+===================================================================================================================================================+ - | Changing the value of the kernel parameter **net.ipv4.ip_forward** to **0** | The network becomes inaccessible. | Change the value to **1**. | - +-------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | Changing the value of the kernel parameter **net.ipv4.tcp_tw_recycle** to **1** | The NAT service becomes abnormal. | Change the value to **0**. | - +-------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | Changing the value of the kernel parameter **net.ipv4.tcp_tw_reuse** to **1** | The network becomes abnormal. | Change the value to **0**. | - +-------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | Not configuring the node security group to allow UDP packets to pass through port 53 of the container CIDR block | The DNS in the cluster cannot work properly. | Restore the security group by referring to :ref:`Creating a CCE Cluster ` and allow traffic from the security group to pass through. | - +-------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | Creating a custom listener on the ELB console for the load balancer managed by CCE | The modified items are reset by CCE or the ingress is faulty. | Use the YAML file of the Service to automatically create a listener. | - +-------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | Binding a user-defined backend on the ELB console to the load balancer managed by CCE. | | Do not manually bind any backend. | - +-------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | Changing the ELB certificate on the ELB console for the load balancer managed by CCE. | | Use the YAML file of the ingress to automatically manage certificates. | - +-------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | Changing the listener name on the ELB console for the ELB listener managed by CCE. | | Do not change the name of the ELB listener managed by CCE. | - +-------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | Changing the description of load balancers, listeners, and forwarding policies managed by CCE on the ELB console. | | Do not modify the description of load balancers, listeners, or forwarding policies managed by CCE. | - +-------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | Delete CRD resources of network-attachment-definitions of default-network. | The container network is disconnected, or the cluster fails to be deleted. | If the resources are deleted by mistake, use the correct configurations to create the default-network resources. | - +-------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ + +------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ + | Operation | Impact | Solution | + +==================================================================================================================+============================================================================+===============================================================================================================================================+ + | Changing the value of the kernel parameter **net.ipv4.ip_forward** to **0** | The network becomes inaccessible. | Change the value to **1**. | + +------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ + | Changing the value of the kernel parameter **net.ipv4.tcp_tw_recycle** to **1** | The NAT service becomes abnormal. | Change the value to **0**. | + +------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ + | Changing the value of the kernel parameter **net.ipv4.tcp_tw_reuse** to **1** | The network becomes abnormal. | Change the value to **0**. | + +------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ + | Not configuring the node security group to allow UDP packets to pass through port 53 of the container CIDR block | The DNS in the cluster cannot work properly. | Restore the security group by referring to :ref:`Creating a Cluster ` and allow traffic from the security group to pass through. | + +------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ + | Delete CRD resources of network-attachment-definitions of default-network. | The container network is disconnected, or the cluster fails to be deleted. | If the resources are deleted by mistake, use the correct configurations to create the default-network resources. | + +------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ + +Load Balancing +-------------- + +.. table:: **Table 3** Service ELB + + +--------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+ + | Operation | Impact | Solution | + +==============================================================================================================================================================+==========================================================================================================================================================================================================================================================+=================================================================================================================================================+ + | Changing the private IPv4 address of a load balancer on the ELB console | - The network traffic forwarded using the private IPv4 addresses will be interrupted. | You are not advised to modify the permissions. Restore the permissions if they are modified. | + | | - The IP address in the **status** field of the Service/ingress YAML file is changed. | | + +--------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+ + | Unbinding the IPv4 EIP from a load balancer on the ELB console | After the EIP is unbound from the load balancer, the load balancer will not be able to forward Internet traffic. | Restore the EIP binding. | + +--------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+ + | Creating a custom listener on the ELB console for the load balancer managed by CCE | If a load balancer is automatically created when a Service or an ingress is created, the custom listener of the load balancer cannot be deleted when the Service or ingress is deleted. In this case, the load balancer cannot be automatically deleted. | Use the listener automatically created through a Service or an ingress. If a custom listener is used, manually delete the target load balancer. | + +--------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+ + | Deleting a listener automatically created by CCE on the ELB console | - Service/Ingress access fails. | Re-create or update the Service or ingress. | + | | - After the master nodes are restarted, for example, due to a cluster upgrade, all your modifications will be reset by CCE. | | + +--------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+ + | Modifying the basic configurations such as the name, access control, timeout, or description of a listener created by CCE on the ELB console | After the master nodes are restarted, for example, due to a cluster upgrade, all your modifications will be reset by CCE if the listener is deleted. | You are not advised to modify the permissions. Restore the permissions if they are modified. | + +--------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+ + | Modifying the backend server group of a listener created by CCE on the ELB console, including adding or deleting backend servers to or from the server group | - Service/Ingress access fails. | Re-create or update the Service or ingress. | + | | - After the master nodes are restarted, for example, due to a cluster upgrade, all your modifications will be reset by CCE. | | + | | | | + | | - The deleted backend server will be restored. | | + | | - The added backend server will be removed. | | + +--------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+ + | Replacing the backend server group of a listener created by CCE on the ELB console | - Service/Ingress access fails. | Re-create or update the Service or ingress. | + | | - After the master nodes are restarted, for example, due to a cluster upgrade, all servers in the backend server group will be reset by CCE. | | + +--------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+ + | Modifying the forwarding policy of a listener created by CCE on the ELB console, including adding or deleting a forwarding rule | - Service/Ingress access fails. | You are not advised to modify the permissions. Restore the permissions if they are modified. | + | | - After the master nodes are restarted, for example, due to a cluster upgrade, all your modifications will be reset by CCE if the forwarding rule is added by the ingress. | | + +--------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+ + | Changing the ELB certificate on the ELB console for the load balancer managed by CCE | After the master nodes are restarted, for example, due to a cluster upgrade, all servers in the backend server group will be reset by CCE. | Use the YAML file of the ingress to automatically manage certificates. | + +--------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+ Logs ---- -.. table:: **Table 3** High-risk operations and solutions +.. table:: **Table 4** High-risk operations and solutions +------------------------------------------------------------------------------+--------------------------------+----------+ | Operation | Impact | Solution | +==============================================================================+================================+==========+ | Deleting the **/tmp/ccs-log-collector/pos** directory on the host machine | Logs are collected repeatedly. | None | +------------------------------------------------------------------------------+--------------------------------+----------+ - | Deleting the **/tmp/ccs-log-collector/buffer** directory of the host machine | Logs are lost. | None | + | Deleting the **/tmp/ccs-log-collector/buffer** directory on the host machine | Logs are lost. | None | +------------------------------------------------------------------------------+--------------------------------+----------+ EVS Disks --------- -.. table:: **Table 4** High-risk operations and solutions +.. table:: **Table 5** High-risk operations and solutions - +------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------------------------+---------------------------------------------------------------------------+ - | Operation | Impact | Solution | Remarks | - +================================================+============================================================================+=================================================================+===========================================================================+ - | Manually unmounting an EVS disk on the console | An I/O error is reported when the pod data is being written into the disk. | Delete the mount path from the node and schedule the pod again. | The file in the pod records the location where files are to be collected. | - +------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------------------------+---------------------------------------------------------------------------+ - | Unmounting the disk mount path on the node | Pod data is written into a local disk. | Remount the corresponding path to the pod. | The buffer contains log cache files to be consumed. | - +------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------------------------+---------------------------------------------------------------------------+ - | Operating EVS disks on the node | Pod data is written into a local disk. | None | None | - +------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------------------------+---------------------------------------------------------------------------+ + +------------------------------------------------+------------------------------------------------------+-----------------------------------------------------------------+---------------------------------------------------------------------------+ + | Operation | Impact | Solution | Remarks | + +================================================+======================================================+=================================================================+===========================================================================+ + | Manually unmounting an EVS disk on the console | An I/O error occurs when data is written into a pod. | Delete the mount path from the node and schedule the pod again. | The file in the pod records the location where files are to be collected. | + +------------------------------------------------+------------------------------------------------------+-----------------------------------------------------------------+---------------------------------------------------------------------------+ + | Unmounting the disk mount path on the node | Pod data is written into a local disk. | Remount the corresponding path to the pod. | The buffer contains log cache files to be consumed. | + +------------------------------------------------+------------------------------------------------------+-----------------------------------------------------------------+---------------------------------------------------------------------------+ + | Operating EVS disks on the node | Pod data is written into a local disk. | None | None | + +------------------------------------------------+------------------------------------------------------+-----------------------------------------------------------------+---------------------------------------------------------------------------+ diff --git a/umn/source/index.rst b/umn/source/index.rst index d28d39d..d573b3f 100644 --- a/umn/source/index.rst +++ b/umn/source/index.rst @@ -13,18 +13,16 @@ Cloud Container Engine - User Guide nodes/index node_pools/index workloads/index - networking/index + scheduling/index + network/index storage/index - monitoring_and_alarm/index - logging/index + observability/index namespaces/index configmaps_and_secrets/index auto_scaling/index add-ons/index - charts/index - permissions_management/index - cloud_trace_service_cts/index - storage_management_flexvolume_deprecated/index + helm_chart/index + permissions/index best_practice/index faqs/index migrating_data_from_cce_1.0_to_cce_2.0/index diff --git a/umn/source/monitoring_and_alarm/custom_monitoring.rst b/umn/source/monitoring_and_alarm/custom_monitoring.rst deleted file mode 100644 index 483eadb..0000000 --- a/umn/source/monitoring_and_alarm/custom_monitoring.rst +++ /dev/null @@ -1,202 +0,0 @@ -:original_name: cce_10_0201.html - -.. _cce_10_0201: - -Custom Monitoring -================= - -CCE allows you to upload custom metrics to AOM. The ICAgent on a node periodically calls the metric monitoring API configured on a workload to read monitoring data and then uploads the data to AOM. - -|image1| - -The custom metric API of a workload can be configured when the workload is created. This section uses an Nginx application as an example to describe how to report custom metrics to AOM. - -Constraints ------------ - -- The ICAgent is compatible with the monitoring data specifications of `Prometheus `__. The custom metrics provided by pods can be collected by the ICAgent only when they meet the monitoring data specifications of Prometheus. -- The ICAgent supports only `Gauge `__ metrics. -- The interval for the ICAgent to call the custom metric API is 1 minute, which cannot be changed. - -Prometheus Monitoring Data Collection -------------------------------------- - -Prometheus periodically calls the metric monitoring API (**/metrics** by default) of an application to obtain monitoring data. The application needs to provide the metric monitoring API for Prometheus to call, and the monitoring data must meet the following specifications of Prometheus: - -.. code-block:: - - # TYPE nginx_connections_active gauge - nginx_connections_active 2 - # TYPE nginx_connections_reading gauge - nginx_connections_reading 0 - -Prometheus provides clients in various languages. For details about the clients, see `Prometheus CLIENT LIBRARIES `__. For details about how to develop an exporter, see `WRITING EXPORTERS `__. The Prometheus community provides various third-party exporters that can be directly used. For details, see `EXPORTERS AND INTEGRATIONS `__. - -Preparing an Application ------------------------- - -Nginx has a module named **ngx_http_stub_status_module**, which provides basic monitoring functions. You can configure the **nginx.conf** file to provide an API for external systems to access Nginx monitoring data. As shown in the following figure, after the server configuration is added to **http**, Nginx can provide an API for external systems to access Nginx monitoring data. - -.. code-block:: - - user nginx; - worker_processes auto; - - error_log /var/log/nginx/error.log warn; - pid /var/run/nginx.pid; - - events { - worker_connections 1024; - } - - http { - include /etc/nginx/mime.types; - default_type application/octet-stream; - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - - access_log /var/log/nginx/access.log main; - sendfile on; - #tcp_nopush on; - keepalive_timeout 65; - #gzip on; - include /etc/nginx/conf.d/*.conf; - - server { - listen 8080; - server_name localhost; - location /stub_status { - stub_status on; - access_log off; - } - } - } - -Save the preceding configuration to the **nginx.conf** file and use the configuration to create a new image. The Dockerfile file is as follows: - -.. code-block:: - - FROM nginx:1.21.5-alpine - ADD nginx.conf /etc/nginx/nginx.conf - EXPOSE 80 - CMD ["nginx", "-g", "daemon off;"] - -Use the preceding Dockerfile file to build an image and upload it to SWR. The image name is **nginx:exporter**. - -**docker build -t nginx:exporter .** - -**docker tag nginx:exporter {swr-address}/{group}/nginx:exporter** - -**docker push {swr-address}/{group}/nginx:exporter** - -After running a container with image **nginx:exporter**, you can obtain Nginx monitoring data by calling http://**:8080/stub_status. *< ip_address >* indicates the IP address of the container. The monitoring data is as follows: - -.. code-block:: - - # curl http://127.0.0.1:8080/stub_status - Active connections: 3 - server accepts handled requests - 146269 146269 212 - Reading: 0 Writing: 1 Waiting: 2 - -Deploying an Application ------------------------- - -The data format of the monitoring data provided by **nginx:exporter** does not meet the requirements of Prometheus. You need to convert the data format to the format required by Prometheus. To convert the format of Nginx metrics, use `nginx-prometheus-exporter `__, as shown in the following figure. - -|image2| - -Deploy **nginx:exporter** and **nginx-prometheus-exporter** in the same pod. - -.. code-block:: - - kind: Deployment - apiVersion: apps/v1 - metadata: - name: nginx-exporter - namespace: default - spec: - replicas: 1 - selector: - matchLabels: - app: nginx-exporter - template: - metadata: - labels: - app: nginx-exporter - annotations: - metrics.alpha.kubernetes.io/custom-endpoints: '[{"api":"prometheus","path":"/metrics","port":"9113","names":""}]' - spec: - containers: - - name: container-0 - image: 'nginx:exporter' # Replace it with the address of the image you uploaded to SWR. - resources: - limits: - cpu: 250m - memory: 512Mi - requests: - cpu: 250m - memory: 512Mi - - name: container-1 - image: 'nginx/nginx-prometheus-exporter:0.9.0' - command: - - nginx-prometheus-exporter - args: - - '-nginx.scrape-uri=http://127.0.0.1:8080/stub_status' - imagePullSecrets: - - name: default-secret - -.. note:: - - The nginx/nginx-prometheus-exporter:0.9.0 image needs to be pulled from the public network. Therefore, each node in the cluster must have a public IP address. - -nginx-prometheus-exporter requires a startup command. **nginx-prometheus-exporter -nginx.scrape-uri=http://127.0.0.1:8080/stub_status** is used to obtain Nginx monitoring data. - -In addition, you need to add an annotation **metrics.alpha.kubernetes.io/custom-endpoints: '[{"api":"prometheus","path":"/metrics","port":"9113","names":""}]'** to the pod. - -Verification ------------- - -After an application is deployed, you can access Nginx to construct some access data and check whether the corresponding monitoring data can be obtained in AOM. - -.. code-block:: - - $ kubectl get pod - NAME READY STATUS RESTARTS AGE - nginx-exporter-78859765db-6j8sw 2/2 Running 0 4m - $ kubectl exec -it nginx-exporter-78859765db-6j8sw -- /bin/sh - Defaulting container name to container-0. - Use 'kubectl describe pod/nginx-exporter-78859765db-6j8sw -n default' to see all of the containers in this pod. - / # curl http://localhost - - - - Welcome to nginx! - - - -

      Welcome to nginx!

      -

      If you see this page, the nginx web server is successfully installed and - working. Further configuration is required.

      - -

      For online documentation and support please refer to - nginx.org.
      - Commercial support is available at - nginx.com.

      - -

      Thank you for using nginx.

      - - - / # - -You can see that Nginx has been accessed once. - -Log in to AOM. In the navigation pane, choose **Monitoring** > **Metric Monitoring**. You can view Nginx-related metrics, for example, **nginx_connections_active**. - -.. |image1| image:: /_static/images/en-us_image_0000001517743384.png -.. |image2| image:: /_static/images/en-us_image_0000001568822693.png diff --git a/umn/source/monitoring_and_alarm/monitoring_overview.rst b/umn/source/monitoring_and_alarm/monitoring_overview.rst deleted file mode 100644 index 2578d8d..0000000 --- a/umn/source/monitoring_and_alarm/monitoring_overview.rst +++ /dev/null @@ -1,98 +0,0 @@ -:original_name: cce_10_0182.html - -.. _cce_10_0182: - -Monitoring Overview -=================== - -CCE works with AOM to comprehensively monitor clusters. When a node is created, the ICAgent (the DaemonSet named **icagent** in the kube-system namespace of the cluster) of AOM is installed by default. The ICAgent collects monitoring data of underlying resources and workloads running on the cluster. It also collects monitoring data of custom metrics of the workload. - -- Resource metrics - - Basic resource monitoring includes CPU, memory, and disk monitoring. For details, see :ref:`Resource Metrics `. You can view these metrics of clusters, nodes, and workloads on the CCE or AOM console. - -- Custom metrics - - The ICAgent collects custom metrics of applications and uploads them to AOM. For details, see :ref:`Custom Monitoring `. - -.. _cce_10_0182__section205486212251: - -Resource Metrics ----------------- - -On the CCE console, you can view the following metrics. - -.. table:: **Table 1** Resource metrics - - +------------------------+------------------------------------------------------------------------------+ - | Metric | Description | - +========================+==============================================================================+ - | CPU Allocation Rate | Indicates the percentage of CPUs allocated to workloads. | - +------------------------+------------------------------------------------------------------------------+ - | Memory Allocation Rate | Indicates the percentage of memory allocated to workloads. | - +------------------------+------------------------------------------------------------------------------+ - | CPU Usage | Indicates the CPU usage. | - +------------------------+------------------------------------------------------------------------------+ - | Memory Usage | Indicates the memory usage. | - +------------------------+------------------------------------------------------------------------------+ - | Disk Usage | Indicates the disk usage. | - +------------------------+------------------------------------------------------------------------------+ - | Down | Indicates the speed at which data is downloaded to a node. The unit is KB/s. | - +------------------------+------------------------------------------------------------------------------+ - | Up | Indicates the speed at which data is uploaded from a node. The unit is KB/s. | - +------------------------+------------------------------------------------------------------------------+ - | Disk Read Rate | Indicates the data volume read from a disk per second. The unit is KB/s. | - +------------------------+------------------------------------------------------------------------------+ - | Disk Write Rate | Indicates the data volume written to a disk per second. The unit is KB/s. | - +------------------------+------------------------------------------------------------------------------+ - -On the AOM console, you can view host metrics and container metrics. - -Viewing Cluster Monitoring Data -------------------------------- - -Click the cluster name and access the cluster console. In the navigation pane, choose **Cluster Information**. In the right pane, you can view the CPU and memory usage of all nodes (excluding master nodes) in the cluster in the last hour. - -**Explanation of monitoring metrics:** - -- CPU allocation rate = Sum of CPU quotas requested by pods in the cluster/Sum of CPU quotas that can be allocated of all nodes (excluding master nodes) in the cluster -- Memory allocation rate = Sum of memory quotas requested by pods in the cluster/Sum of memory quotas that can be allocated of all nodes (excluding master nodes) in the cluster -- CPU usage: Average CPU usage of all nodes (excluding master nodes) in a cluster -- Memory usage: Average memory usage of all nodes (excluding master nodes) in a cluster - -.. note:: - - Allocatable node resources (CPU or memory) = Total amount - Reserved amount - Eviction thresholds. For details, see :ref:`Formula for Calculating the Reserved Resources of a Node `. - -CCE provides the status, availability zone (AZ), CPU usage, and memory usage of master nodes. - -Viewing Monitoring Data of Worker Nodes ---------------------------------------- - -In addition to viewing monitoring data of all nodes, you can also view monitoring data of a single node. Click the cluster name and access the cluster console. Choose **Nodes** in the navigation pane and click **Monitor** in the **Operation** column of the target node. - -Monitoring data comes from AOM. You can view the monitoring data of a node, including the CPU, memory, disk, network, and GPU. - -Viewing Workload Monitoring Data --------------------------------- - -You can view monitoring data of a workload on the **Monitoring** tab page of the workload details page. Click the cluster name and access the cluster console. Choose **Workloads** in the navigation pane and click **Monitor** in the **Operation** column of the target workload. - -Monitoring data comes from AOM. You can view the monitoring data of a workload, including the CPU, memory, network, and GPU, on the AOM console. - -**Explanation of monitoring metrics:** - -- Workload CPU usage = Maximum CPU usage in each pod of the workload -- Workload memory usage = Maximum memory usage in each pod of the workload - -You can also click **View More** to go to the AOM console and view monitoring data of the workload. - -Viewing Pod Monitoring Data ---------------------------- - -You can view monitoring data of a pod on the **Pods** tab page of the workload details page. - -**Explanation of monitoring metrics:** - -- Pod CPU usage = The used CPU cores/The sum of all CPU limits of the pods (If not specified, all node CPU cores are used.) -- Pod memory usage = The used physical memory/The sum of all memory limits of pods (If not specified, all node memory is used.) diff --git a/umn/source/namespaces/creating_a_namespace.rst b/umn/source/namespaces/creating_a_namespace.rst index 74a688d..0f6a432 100644 --- a/umn/source/namespaces/creating_a_namespace.rst +++ b/umn/source/namespaces/creating_a_namespace.rst @@ -17,8 +17,8 @@ Prerequisites At least one cluster has been created. -Notes and Constraints ---------------------- +Constraints +----------- A maximum of 6,000 Services can be created in each namespace. The Services mentioned here indicate the Kubernetes Service resources added for workloads. @@ -40,7 +40,7 @@ Namespaces can be created in either of the following ways: Creating a Namespace -------------------- -#. Log in to the CCE console and access the cluster console. +#. Log in to the CCE console and click the cluster name to access the cluster console. #. Choose **Namespaces** in the navigation pane and click **Create Namespace** in the upper right corner. @@ -71,7 +71,7 @@ Creating a Namespace | | If you want to limit the CPU or memory quota, you must specify the CPU or memory request value when creating a workload. | +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -#. When the configuration is complete, click **OK**. +#. After the configuration is complete, click **OK**. Using kubectl to Create a Namespace ----------------------------------- diff --git a/umn/source/namespaces/managing_namespaces.rst b/umn/source/namespaces/managing_namespaces.rst index e4e1ec8..76f2fdd 100644 --- a/umn/source/namespaces/managing_namespaces.rst +++ b/umn/source/namespaces/managing_namespaces.rst @@ -29,7 +29,7 @@ Isolating Namespaces The following figure shows namespaces created for the development, joint debugging, and testing environments, respectively. - .. figure:: /_static/images/en-us_image_0000001569182513.png + .. figure:: /_static/images/en-us_image_0000001647417256.png :alt: **Figure 1** One namespace for one environment **Figure 1** One namespace for one environment @@ -39,11 +39,26 @@ Isolating Namespaces You are advised to use this method if a large number of workloads are deployed in the same environment. For example, in the following figure, different namespaces (APP1 and APP2) are created to logically manage workloads as different groups. Workloads in the same namespace access each other using the Service name, and workloads in different namespaces access each other using the Service name or namespace name. - .. figure:: /_static/images/en-us_image_0000001569022797.png + .. figure:: /_static/images/en-us_image_0000001695896197.png :alt: **Figure 2** Grouping workloads into different namespaces **Figure 2** Grouping workloads into different namespaces +Managing Namespace Labels +------------------------- + +#. Log in to the CCE console and click the cluster name to access the cluster console. In the navigation pane, choose **Namespaces**. +#. Locate the row containing the target namespace and choose **More** > **Manage Label** in the **Operation** column. +#. In the dialog box that is displayed, the existing labels of the namespace are displayed. Modify the labels as needed. + + - Adding a label: Click the add icon, enter the key and value of the label to be added, and click **OK**. + + For example, the key is **project** and the value is **cicd**, indicating that the namespace is used to deploy CICD. + + - Deleting a label: Click |image1| next the label to be deleted and then **OK**. + +#. Switch to the **Manage Label** dialog box again and check the modified labels. + Deleting a Namespace -------------------- @@ -51,6 +66,8 @@ If a namespace is deleted, all resources (such as workloads, jobs, and ConfigMap #. Log in to the CCE console and access the cluster console. -#. In the navigation pane, choose **Namespaces**, select the target namespace, and choose **More** > **Delete**. +#. Choose **Namespaces** in the navigation pane. On the displayed page, click **More** in the row of the target namespace and choose **Delete**. Follow the prompts to delete the namespace. The default namespaces cannot be deleted. + +.. |image1| image:: /_static/images/en-us_image_0000001695736909.png diff --git a/umn/source/namespaces/setting_a_resource_quota.rst b/umn/source/namespaces/setting_a_resource_quota.rst index 47acdd1..cf66921 100644 --- a/umn/source/namespaces/setting_a_resource_quota.rst +++ b/umn/source/namespaces/setting_a_resource_quota.rst @@ -42,19 +42,19 @@ Starting from clusters of v1.21 and later, the default `Resource Quotas ` shows the SNAT architecture. The SNAT function allows the container pods in a VPC to access the Internet without being bound to an EIP. SNAT supports a large number of concurrent connections, which makes it suitable for applications involving a large number of requests and connections. .. _cce_10_0400__en-us_topic_0261817696_en-us_topic_0241700138_en-us_topic_0144420145_fig34611314153619: -.. figure:: /_static/images/en-us_image_0000001569182781.png +.. figure:: /_static/images/en-us_image_0000001695896869.png :alt: **Figure 1** SNAT **Figure 1** SNAT @@ -26,9 +26,9 @@ To enable a container pod to access the Internet, perform the following steps: a. Log in to the management console. b. Click |image1| in the upper left corner of the management console and select a region and a project. - c. Click |image2| in the upper left corner and choose **Networking** > **Elastic IP** in the expanded list. + c. Click |image2| at the upper left corner and choose **Networking** > **Elastic IP** in the expanded list. d. On the **EIPs** page, click **Create** **EIP**. - e. Set parameters as required. + e. Configure parameters as required. .. note:: @@ -38,9 +38,9 @@ To enable a container pod to access the Internet, perform the following steps: a. Log in to the management console. b. Click |image3| in the upper left corner of the management console and select a region and a project. - c. Click |image4| in the upper left corner and choose **Networking** > **NAT Gateway** in the expanded list. - d. On the displayed page, click **Create Public NAT Gateway** in the upper right corner. - e. Set parameters as required. + c. Click |image4| at the upper left corner and choose **Networking** > **NAT Gateway** in the expanded list. + d. On the displayed page, click **Create** **Public NAT Gateway** in the upper right corner. + e. Configure parameters as required. .. note:: @@ -50,7 +50,7 @@ To enable a container pod to access the Internet, perform the following steps: a. Log in to the management console. b. Click |image5| in the upper left corner of the management console and select a region and a project. - c. Click |image6| in the upper left corner and choose **Networking** > **NAT Gateway** in the expanded list. + c. Click |image6| at the upper left corner and choose **Networking** > **NAT Gateway** in the expanded list. d. On the page displayed, click the name of the NAT gateway for which you want to add the SNAT rule. e. On the **SNAT Rules** tab page, click **Add SNAT Rule**. f. Set parameters as required. @@ -60,14 +60,15 @@ To enable a container pod to access the Internet, perform the following steps: SNAT rules take effect by CIDR block. As different container network models use different communication modes, the subnet needs to be selected according to the following rules: - Tunnel network and VPC network: Select the subnet where the node is located, that is, the subnet selected during node creation. + - Cloud Native Network 2.0: Select the subnet where the container is located, that is, the container subnet selected during cluster creation. - If there are multiple CIDR blocks, you can create multiple SNAT rules or customize a CIDR block as long as the CIDR block contains the node subnet. + If there are multiple CIDR blocks, you can create multiple SNAT rules or customize a CIDR block as long as the CIDR block contains the container subnet (Cloud Native 2.0 Network) or the node subnet. After the SNAT rule is configured, workloads can access public networks from the container. Public networks can be pinged from the container. -.. |image1| image:: /_static/images/en-us_image_0000001568822961.png -.. |image2| image:: /_static/images/en-us_image_0000001518062796.png -.. |image3| image:: /_static/images/en-us_image_0000001517743652.png -.. |image4| image:: /_static/images/en-us_image_0000001568902689.png -.. |image5| image:: /_static/images/en-us_image_0000001569023069.png -.. |image6| image:: /_static/images/en-us_image_0000001568822957.png +.. |image1| image:: /_static/images/en-us_image_0000001647577200.png +.. |image2| image:: /_static/images/en-us_image_0000001695737597.png +.. |image3| image:: /_static/images/en-us_image_0000001695737589.png +.. |image4| image:: /_static/images/en-us_image_0000001695737593.png +.. |image5| image:: /_static/images/en-us_image_0000001647417936.png +.. |image6| image:: /_static/images/en-us_image_0000001647417932.png diff --git a/umn/source/network/cluster_network_settings/adding_a_container_cidr_block_for_a_cluster.rst b/umn/source/network/cluster_network_settings/adding_a_container_cidr_block_for_a_cluster.rst new file mode 100644 index 0000000..af0bd43 --- /dev/null +++ b/umn/source/network/cluster_network_settings/adding_a_container_cidr_block_for_a_cluster.rst @@ -0,0 +1,40 @@ +:original_name: cce_10_0680.html + +.. _cce_10_0680: + +Adding a Container CIDR Block for a Cluster +=========================================== + +Scenario +-------- + +If the container CIDR block (container subnet in a CCE Turbo cluster) set during CCE cluster creation is insufficient, you can add a container CIDR block for the cluster. + +Constraints +----------- + +- This function applies to CCE clusters and CCE Turbo clusters of v1.19 or later, but not to clusters using container tunnel networking. +- The container CIDR block or container subnet cannot be deleted after being added. Exercise caution when performing this operation. + +Adding a Container CIDR Block for a CCE Cluster +----------------------------------------------- + +#. Log in to the CCE console and click the cluster name to access the cluster console. +#. On the **Cluster Information** page, click **Add Container CIDR Block** in the **Networking Configuration** area. +#. Configure the container CIDR block to be added. You can click |image1| to add multiple container CIDR blocks at a time. + + .. note:: + + New container CIDR blocks cannot conflict with service CIDR blocks, VPC CIDR blocks, and existing container CIDR blocks. + +#. Click **OK**. + +Adding a Container Subnet for a CCE Turbo Cluster +------------------------------------------------- + +#. Log in to the CCE console and access the CCE Turbo cluster console. +#. On the **Cluster Information** page, locate the **Networking Configuration** area and click **Add Pod Subnet**. +#. Select a container subnet in the same VPC. You can add multiple container subnets at a time. If no other container subnet is available, go to the VPC console to create one. +#. Click **OK**. + +.. |image1| image:: /_static/images/en-us_image_0000001647417744.png diff --git a/umn/source/network/cluster_network_settings/index.rst b/umn/source/network/cluster_network_settings/index.rst new file mode 100644 index 0000000..807a140 --- /dev/null +++ b/umn/source/network/cluster_network_settings/index.rst @@ -0,0 +1,16 @@ +:original_name: cce_10_0679.html + +.. _cce_10_0679: + +Cluster Network Settings +======================== + +- :ref:`Switching a Node Subnet ` +- :ref:`Adding a Container CIDR Block for a Cluster ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + switching_a_node_subnet + adding_a_container_cidr_block_for_a_cluster diff --git a/umn/source/network/cluster_network_settings/switching_a_node_subnet.rst b/umn/source/network/cluster_network_settings/switching_a_node_subnet.rst new file mode 100644 index 0000000..2485e1c --- /dev/null +++ b/umn/source/network/cluster_network_settings/switching_a_node_subnet.rst @@ -0,0 +1,31 @@ +:original_name: cce_10_0464.html + +.. _cce_10_0464: + +Switching a Node Subnet +======================= + +Scenario +-------- + +This section describes how to switch subnets for nodes in a cluster. + +Constraints +----------- + +- Only subnets in the same VPC as the cluster can be switched. The security group of the node cannot be switched. + +Procedure +--------- + +#. Log in to the ECS console. +#. Click **More > Manage Network > Change VPC** in the **Operation** column of the target ECS. +#. Set parameters for changing the VPC. + + - **VPC**: Select the same VPC as that of the cluster. + - **Subnet**: Select the target subnet to be switched. + - **Private IP Address**: Select **Assign new** or **Use existing** as required. + - **Security Group**: Select the security group of the cluster node. Otherwise, the node is unavailable. + +#. Click **OK**. +#. Go to the CCE console and reset the node. You can use the default parameter settings. For details, see :ref:`Resetting a Node `. diff --git a/umn/source/networking/configuring_intra-vpc_access.rst b/umn/source/network/configuring_intra-vpc_access.rst similarity index 100% rename from umn/source/networking/configuring_intra-vpc_access.rst rename to umn/source/network/configuring_intra-vpc_access.rst diff --git a/umn/source/networking/container_network_models/cloud_native_network_2.0.rst b/umn/source/network/container_network_models/cloud_native_network_2.0.rst similarity index 90% rename from umn/source/networking/container_network_models/cloud_native_network_2.0.rst rename to umn/source/network/container_network_models/cloud_native_network_2.0.rst index 0845f00..6cfcc37 100644 --- a/umn/source/networking/container_network_models/cloud_native_network_2.0.rst +++ b/umn/source/network/container_network_models/cloud_native_network_2.0.rst @@ -11,7 +11,7 @@ Model Definition Developed by CCE, Cloud Native Network 2.0 deeply integrates Elastic Network Interfaces (ENIs) and sub-ENIs of Virtual Private Cloud (VPC). Container IP addresses are allocated from the VPC CIDR block. ELB passthrough networking is supported to direct access requests to containers. Security groups and elastic IPs (EIPs) are bound to deliver high performance. -.. figure:: /_static/images/en-us_image_0000001568822717.png +.. figure:: /_static/images/en-us_image_0000001695737033.png :alt: **Figure 1** Cloud Native Network 2.0 **Figure 1** Cloud Native Network 2.0 @@ -29,7 +29,7 @@ Advantages and Disadvantages - As the container network directly uses VPC, it is easy to locate network problems and provide the highest performance. - External networks in a VPC can be directly connected to container IP addresses. -- The load balancing, security group, and EIP capabilities provided by VPC can be used directly. +- The load balancing, security group, and EIP capabilities provided by VPC can be directly used by pods. **Disadvantages** @@ -38,7 +38,7 @@ The container network directly uses VPC, which occupies the VPC address space. T Application Scenarios --------------------- -- High performance requirements and use of other VPC network capabilities: Cloud Native Network 2.0 directly uses VPC, which delivers almost the same performance as the VPC network. Therefore, it is applicable to scenarios that have high requirements on bandwidth and latency, such as online live broadcast and e-commerce seckill. +- High performance requirements and use of other VPC network capabilities: Cloud Native Network 2.0 directly uses VPC, which delivers almost the same performance as the VPC network. Therefore, it applies to scenarios that have high requirements on bandwidth and latency. - Large-scale networking: Cloud Native Network 2.0 supports a maximum of 2000 ECS nodes and 100,000 containers. Recommendation for CIDR Block Planning @@ -57,7 +57,7 @@ In the Cloud Native Network 2.0 model, the container CIDR block and node CIDR bl In addition, a subnet can be added to the container CIDR block after a cluster is created to increase the number of available IP addresses. In this case, ensure that the added subnet does not conflict with other subnets in the container CIDR block. -.. figure:: /_static/images/en-us_image_0000001569182549.png +.. figure:: /_static/images/en-us_image_0000001695737041.png :alt: **Figure 2** Configuring CIDR blocks **Figure 2** Configuring CIDR blocks @@ -67,7 +67,7 @@ Example of Cloud Native Network 2.0 Access Create a CCE Turbo cluster, which contains three ECS nodes. -Access the details page of one node. You can see that the node has one primary NIC and one extended NIC, and both of them are ENIs. The extended NIC belongs to the container CIDR block and is used to mount a sub-ENI to the pod. +Access the details page of one node. You can see that the node has one primary ENI and one extended ENI, and both of them are ENIs. The extended ENI belongs to the container CIDR block and is used to mount a sub-ENI to the pod. Create a Deployment in the cluster. @@ -114,8 +114,8 @@ View the created pod. example-5bdc5699b7-s9fts 1/1 Running 0 7s 10.1.16.89 10.1.0.144 example-5bdc5699b7-swq6q 1/1 Running 0 7s 10.1.17.111 10.1.0.167 -The IP addresses of all pods are sub-ENIs, which are mounted to the ENI (extended NIC) of the node. +The IP addresses of all pods are sub-ENIs, which are mounted to the ENI (extended ENI) of the node. -For example, the extended NIC of node 10.1.0.167 is 10.1.17.172. On the **Network Interfaces** page of the Network Console, you can see that three sub-ENIs are mounted to the extended NIC 10.1.17.172, which is the IP address of the pod. +For example, the extended ENI of node 10.1.0.167 is 10.1.17.172. On the **Network Interfaces** page of the Network Console, you can see that three sub-ENIs are mounted to the extended ENI 10.1.17.172, which is the IP address of the pod. In the VPC, the IP address of the pod can be successfully accessed. diff --git a/umn/source/networking/container_network_models/container_tunnel_network.rst b/umn/source/network/container_network_models/container_tunnel_network.rst similarity index 94% rename from umn/source/networking/container_network_models/container_tunnel_network.rst rename to umn/source/network/container_network_models/container_tunnel_network.rst index 438af1f..1fa60a7 100644 --- a/umn/source/networking/container_network_models/container_tunnel_network.rst +++ b/umn/source/network/container_network_models/container_tunnel_network.rst @@ -11,7 +11,7 @@ Container Tunnel Network Model The container tunnel network is constructed on but independent of the node network through tunnel encapsulation. This network model uses VXLAN to encapsulate Ethernet packets into UDP packets and transmits them in tunnels. Open vSwitch serves as the backend virtual switch. Though at some costs of performance, packet encapsulation and tunnel transmission enable higher interoperability and compatibility with advanced features (such as network policy-based isolation) for most common scenarios. -.. figure:: /_static/images/en-us_image_0000001518222740.png +.. figure:: /_static/images/en-us_image_0000001695737509.png :alt: **Figure 1** Container tunnel network **Figure 1** Container tunnel network @@ -34,13 +34,13 @@ Advantages and Disadvantages **Disadvantages** - High encapsulation overhead, complex networking, and low performance -- Failure to use the load balancing and security group capabilities provided by the VPC +- Pods cannot directly use functionalities such as EIPs and security groups. - External networks cannot be directly connected to container IP addresses. Applicable Scenarios -------------------- -- Low requirements on performance: As the container tunnel network requires additional VXLAN tunnel encapsulation, it has about 5% to 15% of performance loss when compared with the other two container network models. Therefore, the container tunnel network is applicable to the scenarios that do not have high performance requirements, such as web applications, and middle-end and back-end services with a small number of access requests. +- Low requirements on performance: As the container tunnel network requires additional VXLAN tunnel encapsulation, it has about 5% to 15% of performance loss when compared with the other two container network models. Therefore, the container tunnel network applies to the scenarios that do not have high performance requirements, such as web applications, and middle-end and back-end services with a small number of access requests. - Large-scale networking: Different from the VPC network that is limited by the VPC route quota, the container tunnel network does not have any restriction on the infrastructure. In addition, the container tunnel network controls the broadcast domain to the node level. The container tunnel network supports a maximum of 2000 nodes. Container IP Address Management @@ -55,7 +55,7 @@ The container tunnel network allocates container IP addresses according to the f - Pods scheduled to a node are cyclically allocated IP addresses from one or more CIDR blocks allocated to the node. -.. figure:: /_static/images/en-us_image_0000001569182773.png +.. figure:: /_static/images/en-us_image_0000001647577116.png :alt: **Figure 2** IP address allocation of the container tunnel network **Figure 2** IP address allocation of the container tunnel network diff --git a/umn/source/networking/container_network_models/index.rst b/umn/source/network/container_network_models/index.rst similarity index 100% rename from umn/source/networking/container_network_models/index.rst rename to umn/source/network/container_network_models/index.rst diff --git a/umn/source/networking/container_network_models/overview.rst b/umn/source/network/container_network_models/overview.rst similarity index 96% rename from umn/source/networking/container_network_models/overview.rst rename to umn/source/network/container_network_models/overview.rst index 8f1bf08..5b29bbd 100644 --- a/umn/source/networking/container_network_models/overview.rst +++ b/umn/source/network/container_network_models/overview.rst @@ -7,7 +7,7 @@ Overview The container network assigns IP addresses to pods in a cluster and provides networking services. In CCE, you can select the following network models for your cluster: -- :ref:`Container tunnel network ` +- :ref:`Tunnel network ` - :ref:`VPC network ` - :ref:`Cloud Native Network 2.0 ` @@ -25,7 +25,7 @@ Network Model Comparison .. table:: **Table 1** Network model comparison +------------------------+-----------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+ - | Dimension | Container Tunnel Network | VPC Network | Cloud Native Network 2.0 | + | Dimension | Tunnel Network | VPC Network | Cloud Native Network 2.0 | +========================+===================================================================================================================================+======================================================================================================================================================+============================================================================================================+ | Application scenarios | - Common container service scenarios | - Scenarios that have high requirements on network latency and bandwidth | - Scenarios that have high requirements on network latency, bandwidth, and performance | | | - Scenarios that do not have high requirements on network latency and bandwidth | - Containers can communicate with VMs using a microservice registration framework, such as Dubbo and CSE. | - Containers can communicate with VMs using a microservice registration framework, such as Dubbo and CSE. | @@ -43,14 +43,14 @@ Network Model Comparison +------------------------+-----------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+ | Network performance | Performance loss due to VXLAN encapsulation | No tunnel encapsulation. Cross-node packets are forwarded through VPC routers, delivering performance equivalent to that of the host network. | The container network is integrated with the VPC network, eliminating performance loss. | +------------------------+-----------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+ - | Networking scale | A maximum of 2,000 nodes are supported. | By default, 200 nodes are supported. | A maximum of 2,000 nodes are supported. | + | Networking scale | A maximum of 2,000 nodes are supported. | A maximum of 2000 nodes are supported, which is restricted by the VPC routing capability. | A maximum of 2,000 nodes are supported. | | | | | | | | | Each time a node is added to the cluster, a route is added to the VPC route tables. Therefore, the cluster scale is limited by the VPC route tables. | | +------------------------+-----------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+ .. important:: - #. The scale of a cluster that uses the VPC network model is limited by the custom routes of the VPC. Therefore, you need to estimate the number of required nodes before creating a cluster. + #. The scale of a cluster that uses the VPC network model is limited by the custom routes of the VPC. Therefore, estimate the number of required nodes before creating a cluster. #. The scale of a cluster that uses the Cloud Native Network 2.0 model depends on the size of the VPC subnet CIDR block selected for the network attachment definition. Before creating a cluster, evaluate the scale of your cluster. #. By default, VPC routing network supports direct communication between containers and hosts in the same VPC. If a peering connection policy is configured between the VPC and another VPC, the containers can directly communicate with hosts on the peer VPC. In addition, in hybrid networking scenarios such as Direct Connect and VPN, communication between containers and hosts on the peer end can also be achieved with proper planning. #. Do not change the mask of the primary CIDR block on the VPC after a cluster is created. Otherwise, the network will be abnormal. diff --git a/umn/source/networking/container_network_models/vpc_network.rst b/umn/source/network/container_network_models/vpc_network.rst similarity index 88% rename from umn/source/networking/container_network_models/vpc_network.rst rename to umn/source/network/container_network_models/vpc_network.rst index a2ab121..b24e15e 100644 --- a/umn/source/networking/container_network_models/vpc_network.rst +++ b/umn/source/network/container_network_models/vpc_network.rst @@ -8,17 +8,17 @@ VPC Network Model Definition ---------------- -The VPC network uses VPC routing to integrate with the underlying network. This network model is suitable for performance-intensive scenarios. The maximum number of nodes allowed in a cluster depends on the VPC route quota. Each node is assigned a CIDR block of a fixed size. This networking model is free from tunnel encapsulation overhead and outperforms the container tunnel network model. In addition, as VPC routing includes routes to node IP addresses and the container CIDR block, container pods in a cluster can be directly accessed from outside the cluster. +The VPC network uses VPC routing to integrate with the underlying network. This network model is suitable for performance-intensive scenarios. The maximum number of nodes allowed in a cluster depends on the VPC route quota. Each node is assigned a CIDR block of a fixed size. This networking model is free from tunnel encapsulation overhead and outperforms the container tunnel network model. In addition, as VPC routing includes routes to node IP addresses and the container CIDR block, container pods in a cluster can be directly accessed from ECSs in the same VPC outside the cluster. -.. figure:: /_static/images/en-us_image_0000001568822773.png +.. figure:: /_static/images/en-us_image_0000001647417536.png :alt: **Figure 1** VPC network model **Figure 1** VPC network model **Pod-to-pod communication** -- On the same node: Packets are directly forwarded through IPVlan. +- On the same node: Packets are directly forwarded through IPvlan. - Across nodes: Packets are forwarded to the default gateway through default routes, and then to the peer node via the VPC routes. Advantages and Disadvantages @@ -27,7 +27,7 @@ Advantages and Disadvantages **Advantages** - No tunnel encapsulation is required, so network problems are easy to locate and the performance is high. -- External networks in a VPC can be directly connected to container IP addresses. +- In the same VPC, the external network of the cluster can be directly connected to the container IP address. **Disadvantages** @@ -38,7 +38,7 @@ Advantages and Disadvantages Applicable Scenarios -------------------- -- High performance requirements: As no tunnel encapsulation is required, the VPC network model delivers the performance close to that of a VPC network when compared with the container tunnel network model. Therefore, the VPC network model is applicable to scenarios that have high requirements on performance, such as AI computing and big data computing. +- High performance requirements: As no tunnel encapsulation is required, the VPC network model delivers the performance close to that of a VPC network when compared with the container tunnel network model. Therefore, the VPC network model applies to scenarios that have high requirements on performance, such as AI computing and big data computing. - Small- and medium-scale networking: The VPC network is limited by the VPC route quota. Currently, a maximum of 200 nodes are supported by default. If there are large-scale networking requirements, you can increase the VPC route quota. .. _cce_10_0283__section1574982552114: @@ -54,7 +54,7 @@ The VPC network allocates container IP addresses according to the following rule - Pods scheduled to a node are cyclically allocated IP addresses from CIDR blocks allocated to the node. -.. figure:: /_static/images/en-us_image_0000001569022889.png +.. figure:: /_static/images/en-us_image_0000001695737193.png :alt: **Figure 2** IP address management of the VPC network **Figure 2** IP address management of the VPC network @@ -129,9 +129,9 @@ Check the pod. example-86b9779494-x8kl5 1/1 Running 0 14s 172.16.0.5 192.168.0.99 example-86b9779494-zt627 1/1 Running 0 14s 172.16.0.8 192.168.0.99 -In this case, the IP address of the pod can be directly accessed from a node outside the cluster in the same VPC. This is a feature of the VPC network feature. +In this case, if you access the IP address of the pod from an ECS (outside the cluster) in the same VPC, the access is successful. This is a feature of VPC networking. Pods can be directly accessed from any node locating outside of the cluster and in the same VPC as that of the pods using the pods' IP addresses. -The pod can also be accessed from a node in the same cluster or in the pod. As shown in the following figure, the pod can be accessed directly from the container. +Pods can be accessed from nodes or pods in the same cluster. In the following example, you can directly access the pods in the container. .. code-block:: diff --git a/umn/source/network/container_network_settings/cloud_native_network_2.0_settings/index.rst b/umn/source/network/container_network_settings/cloud_native_network_2.0_settings/index.rst new file mode 100644 index 0000000..3ba1cb6 --- /dev/null +++ b/umn/source/network/container_network_settings/cloud_native_network_2.0_settings/index.rst @@ -0,0 +1,14 @@ +:original_name: cce_10_0678.html + +.. _cce_10_0678: + +Cloud Native Network 2.0 Settings +================================= + +- :ref:`Security Group Policies ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + security_group_policies diff --git a/umn/source/workloads/security_group_policies.rst b/umn/source/network/container_network_settings/cloud_native_network_2.0_settings/security_group_policies.rst similarity index 93% rename from umn/source/workloads/security_group_policies.rst rename to umn/source/network/container_network_settings/cloud_native_network_2.0_settings/security_group_policies.rst index 127a1df..b6803a4 100644 --- a/umn/source/workloads/security_group_policies.rst +++ b/umn/source/network/container_network_settings/cloud_native_network_2.0_settings/security_group_policies.rst @@ -5,10 +5,10 @@ Security Group Policies ======================= -When the Cloud Native Network 2.0 model is used, pods use VPC ENIs or sub-ENIs for networking. You can directly bind security groups and EIPs to pods. CCE provides a custom resource object named **SecurityGroup** for you to associate security groups with pods in CCE. You can customize workloads with specific security isolation requirements using SecurityGroups. +In Cloud Native Network 2.0, pods use VPC ENIs or sub-ENIs for networking. You can directly bind security groups and EIPs to pods. To bind CCE pods with security groups, CCE provides a custom resource object named **SecurityGroup**. Using this resource object, you can customize security isolation for workloads. -Notes and Constraints ---------------------- +Constraints +----------- - This function is supported for CCE Turbo clusters of v1.19 and later. Upgrade your CCE Turbo clusters if their versions are earlier than v1.19. - A workload can be bound to a maximum of five security groups. @@ -16,11 +16,11 @@ Notes and Constraints Using the Console ----------------- -#. Log in to the CCE console and access the cluster console. +#. Log in to the CCE console and click the cluster name to access the cluster console. -#. In the navigation pane, choose **Workloads**. On the displayed page, click the name of the target workload. +#. In the navigation pane, choose **Workloads**. On the displayed page, click the desired workload name. -#. Switch to the **Security Group Policy** tab page and click **Create**. +#. Switch to the **SecurityGroups** tab page and click **Create**. #. Set the parameters as described in :ref:`Table 1 `. @@ -43,7 +43,7 @@ Using the Console | | | | | | NOTICE: | | | | | | - | | - A maximum of 5 security groups can be selected. | | + | | - A maximum of five security groups can be selected. | | | | - Hover the cursor on next to the security group name, and you can view details about the security group. | | +----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------+ diff --git a/umn/source/network/container_network_settings/configuring_qos_rate_limiting_for_inter-pod_access.rst b/umn/source/network/container_network_settings/configuring_qos_rate_limiting_for_inter-pod_access.rst new file mode 100644 index 0000000..a9009ca --- /dev/null +++ b/umn/source/network/container_network_settings/configuring_qos_rate_limiting_for_inter-pod_access.rst @@ -0,0 +1,85 @@ +:original_name: cce_10_0382.html + +.. _cce_10_0382: + +Configuring QoS Rate Limiting for Inter-Pod Access +================================================== + +Scenario +-------- + +Bandwidth preemption occurs between different containers deployed on the same node, which may cause service jitter. You can configure QoS rate limiting for inter-pod access to prevent this problem. + +Constraints +----------- + +The following shows constraints on setting the rate limiting for inter-pod access: + ++-------------------------+-----------------------------------------------------------------------+-----------------------------------------------------------------------+----------------------------------------------------------------------------------+ +| Constraint Type | Tunnel network model | VPC network model | Cloud Native 2.0 Network Model | ++=========================+=======================================================================+=======================================================================+==================================================================================+ +| Supported versions | All versions | Clusters of v1.19.10 and later | Clusters of v1.19.10 and later | ++-------------------------+-----------------------------------------------------------------------+-----------------------------------------------------------------------+----------------------------------------------------------------------------------+ +| Supported runtime types | Only common containers (runC as the container runtime) are supported. | Only common containers (runC as the container runtime) are supported. | Only common containers (runC as the container runtime) are supported. | +| | | | | +| | Secure containers are not supported. | Secure containers (Kata as the container runtime) are not supported. | Secure containers (Kata as the container runtime) are not supported. | ++-------------------------+-----------------------------------------------------------------------+-----------------------------------------------------------------------+----------------------------------------------------------------------------------+ +| Supported pod types | Only non-HostNetwork pods | | | ++-------------------------+-----------------------------------------------------------------------+-----------------------------------------------------------------------+----------------------------------------------------------------------------------+ +| Supported scenarios | Inter-pod access, pods accessing nodes, and pods accessing services | | | ++-------------------------+-----------------------------------------------------------------------+-----------------------------------------------------------------------+----------------------------------------------------------------------------------+ +| Constraints | None | None | - Pods access external cloud service CIDR blocks 100.64.0.0/10 and 214.0.0.0/8. | +| | | | - Traffic rate limiting of health check | ++-------------------------+-----------------------------------------------------------------------+-----------------------------------------------------------------------+----------------------------------------------------------------------------------+ +| Upper rate limit | Minimum value between the upper bandwidth limit and 34 Gbit/s | Minimum value between the upper bandwidth limit and 4.3 Gbit/s | Minimum value between the upper bandwidth limit and 4.3 Gbit/s | ++-------------------------+-----------------------------------------------------------------------+-----------------------------------------------------------------------+----------------------------------------------------------------------------------+ +| Lower rate limit | Only the rate limit of Kbit/s or higher is supported. | Currently, only the rate limit of Mbit/s or higher is supported. | | ++-------------------------+-----------------------------------------------------------------------+-----------------------------------------------------------------------+----------------------------------------------------------------------------------+ + +Using the CCE Console +--------------------- + +When creating a workload on the console, you can set pod ingress and egress bandwidth limits on the **Advanced Settings > Network Configuration** area. + +Using kubectl +------------- + +You can add annotations to a workload to specify its egress and ingress bandwidth. + +.. code-block:: + + apiVersion: apps/v1 + kind: Deployment + metadata: + name: test + namespace: default + labels: + app: test + spec: + replicas: 2 + selector: + matchLabels: + app: test + template: + metadata: + labels: + app: test + annotations: + kubernetes.io/ingress-bandwidth: 100M + kubernetes.io/egress-bandwidth: 100M + spec: + containers: + - name: container-1 + image: nginx:alpine + imagePullPolicy: IfNotPresent + imagePullSecrets: + - name: default-secret + +- **kubernetes.io/ingress-bandwidth**: ingress bandwidth of the pod +- **kubernetes.io/egress-bandwidth**: egress bandwidth of the pod + +If these two parameters are not specified, the bandwidth is not limited. + +.. note:: + + After modifying the ingress or egress bandwidth limit of a pod, restart the container for the modification to take effect. After annotations are modified in a pod not managed by workloads, the container will not be restarted, so the bandwidth limits do not take effect. You can create a pod again or manually restart the container. diff --git a/umn/source/network/container_network_settings/container_tunnel_network_settings/index.rst b/umn/source/network/container_network_settings/container_tunnel_network_settings/index.rst new file mode 100644 index 0000000..24a17a3 --- /dev/null +++ b/umn/source/network/container_network_settings/container_tunnel_network_settings/index.rst @@ -0,0 +1,14 @@ +:original_name: cce_10_0677.html + +.. _cce_10_0677: + +Container Tunnel Network Settings +================================= + +- :ref:`Network Policies ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + network_policies diff --git a/umn/source/networking/network_policies.rst b/umn/source/network/container_network_settings/container_tunnel_network_settings/network_policies.rst similarity index 84% rename from umn/source/networking/network_policies.rst rename to umn/source/network/container_network_settings/container_tunnel_network_settings/network_policies.rst index f770dbc..1a436fb 100644 --- a/umn/source/networking/network_policies.rst +++ b/umn/source/network/container_network_settings/container_tunnel_network_settings/network_policies.rst @@ -9,32 +9,23 @@ Network policies are designed by Kubernetes to restrict pod access. It is equiva By default, if a namespace does not have any policy, pods in the namespace accept traffic from any source and send traffic to any destination. -Network policy rules are classified into the following types: +Network policies are classified into the following types: - **namespaceSelector**: selects particular namespaces for which all pods should be allowed as ingress sources or egress destinations. - **podSelector**: selects particular pods in the same namespace as the network policy which should be allowed as ingress sources or egress destinations. - **ipBlock**: selects particular IP blocks to allow as ingress sources or egress destinations. (Only egress rules support IP blocks.) -Notes and Constraints ---------------------- +Constraints +----------- - Only clusters that use the tunnel network model support network policies. Network policies are classified into the following types: - Ingress: All versions support this type. - - - Egress: Only clusters of v1.23 or later support egress rules. - - Egress rules are supported only in the following OSs: + - Egress: Only the following OSs and cluster versions support egress rules. +-----------------------+-----------------------+-------------------------------------------+ | OS | Cluster Version | Verified Kernel Version | +=======================+=======================+===========================================+ - | CentOS | v1.23 or later | 3.10.0-1062.18.1.el7.x86_64 | - | | | | - | | | 3.10.0-1127.19.1.el7.x86_64 | - | | | | - | | | 3.10.0-1160.25.1.el7.x86_64 | - +-----------------------+-----------------------+-------------------------------------------+ | EulerOS 2.5 | v1.23 or later | 3.10.0-862.14.1.5.h591.eulerosv2r7.x86_64 | | | | | | | | 3.10.0-862.14.1.5.h687.eulerosv2r7.x86_64 | @@ -45,7 +36,7 @@ Notes and Constraints +-----------------------+-----------------------+-------------------------------------------+ - Network isolation is not supported for IPv6 addresses. -- If a cluster is upgraded to v1.23 in in-place mode, you cannot use egress rules because the node OS is not upgraded. In this case, reset the node. +- If upgrade to a cluster version that supports egress rules is performed in in-place mode, you cannot use egress rules because the node OS is not upgraded. In this case, reset the node. Using Ingress Rules ------------------- @@ -63,19 +54,19 @@ Using Ingress Rules podSelector: # The rule takes effect for pods with the role=db label. matchLabels: role: db - ingress: #This is an ingress rule. + ingress: # This is an ingress rule. - from: - - podSelector: #Only traffic from the pods with the "role=frontend" label is allowed. + - podSelector: # Only traffic from the pods with the "role=frontend" label is allowed. matchLabels: role: frontend - ports: #Only TCP can be used to access port 6379. + ports: # Only TCP can be used to access port 6379. - protocol: TCP port: 6379 - See the following figure. + The following figure shows how podSelector works. - .. figure:: /_static/images/en-us_image_0000001518062636.png + .. figure:: /_static/images/en-us_image_0000001695896529.png :alt: **Figure 1** podSelector **Figure 1** podSelector @@ -92,19 +83,19 @@ Using Ingress Rules podSelector: # The rule takes effect for pods with the role=db label. matchLabels: role: db - ingress: #This is an ingress rule. + ingress: # This is an ingress rule. - from: - namespaceSelector: # Only traffic from the pods in the namespace with the "project=myproject" label is allowed. matchLabels: project: myproject - ports: #Only TCP can be used to access port 6379. + ports: # Only TCP can be used to access port 6379. - protocol: TCP port: 6379 - See the following figure. + The following figure shows how namespaceSelector works. - .. figure:: /_static/images/en-us_image_0000001518222592.png + .. figure:: /_static/images/en-us_image_0000001695737257.png :alt: **Figure 2** namespaceSelector **Figure 2** namespaceSelector @@ -116,7 +107,7 @@ Egress supports not only podSelector and namespaceSelector, but also ipBlock. .. note:: - Only clusters of version 1.23 or later support egress rules. Currently, only EulerOS 2.5, EulerOS 2.9, and CentOS 7.X nodes are supported. + Only clusters of version 1.23 or later support egress rules. Currently, nodes running EulerOS 2.5, EulerOS 2.9 are supported. .. code-block:: @@ -138,10 +129,10 @@ Egress supports not only podSelector and namespaceSelector, but also ipBlock. except: - 172.16.0.40/32 # This CIDR block cannot be accessed. This value must fall within the range specified by cidr. -The following figure shows how to use ingress and egress together. +The following figure shows how ipBlock works. -.. figure:: /_static/images/en-us_image_0000001517743496.png +.. figure:: /_static/images/en-us_image_0000001647576864.png :alt: **Figure 3** ipBlock **Figure 3** ipBlock @@ -162,12 +153,12 @@ You can define ingress and egress in the same rule. podSelector: # The rule takes effect for pods with the role=db label. matchLabels: role: db - ingress: # Ingress rule + ingress: # This is an ingress rule. - from: - - podSelector: #Only traffic from the pods with the "role=frontend" label is allowed. + - podSelector: # Only traffic from the pods with the "role=frontend" label is allowed. matchLabels: role: frontend - ports: #Only TCP can be used to access port 6379. + ports: # Only TCP can be used to access port 6379. - protocol: TCP port: 6379 egress: # Egress rule @@ -179,7 +170,7 @@ You can define ingress and egress in the same rule. The following figure shows how to use ingress and egress together. -.. figure:: /_static/images/en-us_image_0000001568902533.png +.. figure:: /_static/images/en-us_image_0000001695896533.png :alt: **Figure 4** Using both ingress and egress **Figure 4** Using both ingress and egress @@ -187,7 +178,7 @@ The following figure shows how to use ingress and egress together. Creating a Network Policy on the Console ---------------------------------------- -#. Log in to the CCE console and access the cluster console. +#. Log in to the CCE console and click the cluster name to access the cluster console. #. Choose **Networking** in the navigation pane, click the **Network Policies** tab, and click **Create Network Policy** in the upper right corner. - **Policy Name**: Specify a network policy name. @@ -234,7 +225,7 @@ Creating a Network Policy on the Console #. Click **OK**. -.. |image1| image:: /_static/images/en-us_image_0000001568822793.png -.. |image2| image:: /_static/images/en-us_image_0000001569022905.png -.. |image3| image:: /_static/images/en-us_image_0000001517903064.png -.. |image4| image:: /_static/images/en-us_image_0000001517903068.png +.. |image1| image:: /_static/images/en-us_image_0000001647417596.png +.. |image2| image:: /_static/images/en-us_image_0000001647417588.png +.. |image3| image:: /_static/images/en-us_image_0000001695737253.png +.. |image4| image:: /_static/images/en-us_image_0000001647417600.png diff --git a/umn/source/networking/host_network.rst b/umn/source/network/container_network_settings/host_network.rst similarity index 93% rename from umn/source/networking/host_network.rst rename to umn/source/network/container_network_settings/host_network.rst index 5f083d6..c10f741 100644 --- a/umn/source/networking/host_network.rst +++ b/umn/source/network/container_network_settings/host_network.rst @@ -8,7 +8,7 @@ Host Network Scenario -------- -Kubernetes allows pods to directly use the host/node network. +Kubernetes allows pods to directly use the host/node network. When a pod is configured with **hostNetwork: true**, applications running in the pod can directly view the network interface of the host where the pod is located. Configuration ------------- @@ -51,7 +51,7 @@ Precautions If a pod uses the host network, it occupies a host port. The pod IP is the host IP. To use the host network, you must confirm pods do not conflict with each other in terms of the host ports they occupy. Do not use the host network unless you know exactly which host port is used by which pod. -When using the host network, you access the node to access a pod on it. Therefore, you need to **allow access from the security group port of the node**. Otherwise, the access fails. +When using the host network, you access the node to access a pod on it. Therefore, **allow access from the security group port of the node**. Otherwise, the access fails. In addition, using the host network requires you to reserve host ports for the pods. When using a Deployment to deploy pods of the hostNetwork type, ensure that **the number of pods does not exceed the number of nodes**. Otherwise, multiple pods will be scheduled onto the node, and they will fail to start due to port conflicts. For example, in the preceding example nginx YAML, if two pods (setting **replicas** to **2**) are deployed in a cluster with only one node, one pod cannot be created. The pod logs will show that the Nginx cannot be started because the port is occupied. diff --git a/umn/source/network/container_network_settings/index.rst b/umn/source/network/container_network_settings/index.rst new file mode 100644 index 0000000..c989a38 --- /dev/null +++ b/umn/source/network/container_network_settings/index.rst @@ -0,0 +1,20 @@ +:original_name: cce_10_0675.html + +.. _cce_10_0675: + +Container Network Settings +========================== + +- :ref:`Host Network ` +- :ref:`Configuring QoS Rate Limiting for Inter-Pod Access ` +- :ref:`Container Tunnel Network Settings ` +- :ref:`Cloud Native Network 2.0 Settings ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + host_network + configuring_qos_rate_limiting_for_inter-pod_access + container_tunnel_network_settings/index + cloud_native_network_2.0_settings/index diff --git a/umn/source/networking/dns/dns_configuration.rst b/umn/source/network/dns/dns_configuration.rst similarity index 64% rename from umn/source/networking/dns/dns_configuration.rst rename to umn/source/network/dns/dns_configuration.rst index b6cb174..e294aa5 100644 --- a/umn/source/networking/dns/dns_configuration.rst +++ b/umn/source/network/dns/dns_configuration.rst @@ -7,7 +7,7 @@ DNS Configuration Every Kubernetes cluster has a built-in DNS add-on (Kube-DNS or CoreDNS) to provide domain name resolution for workloads in the cluster. When handling a high concurrency of DNS queries, Kube-DNS/CoreDNS may encounter a performance bottleneck, that is, it may fail occasionally to fulfill DNS queries. There are cases when Kubernetes workloads initiate unnecessary DNS queries. This makes DNS overloaded if there are many concurrent DNS queries. Tuning DNS configuration for workloads will reduce the risks of DNS query failures to some extent. -For more information about DNS, see :ref:`coredns (System Resource Add-On, Mandatory) `. +For more information about DNS, see :ref:`CoreDNS (System Resource Add-On, Mandatory) `. DNS Configuration Items ----------------------- @@ -36,6 +36,31 @@ Run the **cat /etc/resolv.conf** command on a Linux node or container to view th For more information about configuration options in the resolver configuration file used by Linux operating systems, visit http://man7.org/linux/man-pages/man5/resolv.conf.5.html. +Configuring DNS for a Workload Using the Console +------------------------------------------------ + +Kubernetes provides DNS-related configuration options for applications. The use of application's DNS configuration can effectively reduce unnecessary DNS queries in certain scenarios and improve service concurrency. The following procedure uses an Nginx application as an example to describe how to add DNS configurations for a workload on the console. + +#. Log in to the CCE console, access the cluster console, select **Workloads** in the navigation pane, and click **Create Workload** in the upper right corner. +#. Configure basic information about the workload. For details, see :ref:`Creating a Workload `. +#. In the **Advanced Settings** area, click the **DNS** tab and set the following parameters as required: + + - **DNS Policy**: The DNS policies provided on the console correspond to the **dnsPolicy** field in the YAML file. For details, see :ref:`Table 1 `. + + - **Supplement defaults**: corresponds to **dnsPolicy=ClusterFirst**. Containers can resolve both the cluster-internal domain names registered by a Service and the external domain names exposed to public networks. + - **Replace defaults**: corresponds to **dnsPolicy=None**. You must configure **IP Address** and **Search Domain**. Containers only use the user-defined IP address and search domain configurations for domain name resolution. + - **Inherit defaults**: corresponds to **dnsPolicy=Default**. Containers use the domain name resolution configuration from the node that pods run on and cannot resolve the cluster-internal domain names. + + - **Optional Objects**: The options parameters in the :ref:`dnsConfig field `. Each object may have a name property (required) and a value property (optional). After setting the properties, click **confirm to add**. + + - **timeout**: Timeout interval, in seconds. + - **ndots**: Number of dots (.) that must be present in a domain name. If a domain name has dots fewer than this value, the operating system will look up the name in the search domain. If not, the name is a fully qualified domain name (FQDN) and will be tried first as an absolute name. + + - **IP Address**: **nameservers** in the :ref:`dnsConfig `. You can configure the domain name server for the custom domain name. The value is one or a group of DNS IP addresses. + - **Search Domain**: **searches** in the :ref:`dnsConfig `. A list of DNS search domains for hostname lookup in the pod. This property is optional. When specified, the provided list will be merged into the search domain names generated from the chosen DNS policy in **dnsPolicy**. Duplicate domain names are removed. + +#. Click **Create Workload**. + Configuring DNS Using the Workload YAML --------------------------------------- @@ -76,84 +101,59 @@ When creating a workload using a YAML file, you can configure the DNS settings i searches: - my.dns.search.suffix -**dnsPolicy** +- **dnsPolicy** -The **dnsPolicy** field is used to configure a DNS policy for an application. The default value is **ClusterFirst**. The DNS parameters in **dnsConfig** will be merged to the DNS file generated according to **dnsPolicy**. The merge rules are later explained in :ref:`Table 2 `. Currently, **dnsPolicy** supports the following four values: + The **dnsPolicy** field is used to configure a DNS policy for an application. The default value is **ClusterFirst**. The following table lists **dnsPolicy** configurations. -.. _cce_10_0365__table144443315261: + .. _cce_10_0365__table144443315261: -.. table:: **Table 1** dnsPolicy + .. table:: **Table 1** dnsPolicy - +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+=======================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================+ - | ClusterFirst (default value) | CCE cluster's CoreDNS, which is cascaded with the cloud DNS by default, is used for workloads. Containers can resolve both the cluster-internal domain names registered by a Service and the external domain names exposed to public networks. The search list (**search** option) and **ndots: 5** are present in the DNS configuration file. Therefore, when accessing an external domain name and a long cluster-internal domain name (for example, kubernetes.default.svc.cluster.local), the search list will usually be traversed first, resulting in at least six invalid DNS queries. The issue of invalid DNS queries disappears only when a short cluster-internal domain name (for example, kubernetes) is being accessed. | - +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | ClusterFirstWithHostNet | By default, the DNS configuration file that the **--resolv-conf** flag points to is configured for workloads running with **hostNetwork=true**, that is, a cloud DNS is used for CCE clusters. If workloads need to use Kube-DNS/CoreDNS of the cluster, set **dnsPolicy** to **ClusterFirstWithHostNet** and container's DNS configuration file is the same as ClusterFirst, in which invalid DNS queries still exist. | - | | | - | | .. code-block:: | - | | | - | | ... | - | | spec: | - | | containers: | - | | - image: nginx:latest | - | | imagePullPolicy: IfNotPresent | - | | name: container-1 | - | | restartPolicy: Always | - | | hostNetwork: true | - | | dnsPolicy: ClusterFirstWithHostNet | - +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Default | Container's DNS configuration file is the DNS configuration file that the kubelet's **--resolv-conf** flag points to. In this case, a cloud DNS is used for CCE clusters. Both **search** and **options** fields are left unspecified. This configuration can only resolve the external domain names registered with the Internet, and not cluster-internal domain names. This configuration is free from the issue of invalid DNS queries. | - +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | None | If **dnsPolicy** is set to **None**, the **dnsConfig** field must be specified because all DNS settings are supposed to be provided using the **dnsConfig** field. | - +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+=====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | ClusterFirst (default value) | Custom DNS configuration added to the default DNS configuration. By default, the application connects to CoreDNS (CoreDNS of the CCE cluster connects to the DNS on the cloud by default). The custom dnsConfig will be added to the default DNS parameters. Containers can resolve both the cluster-internal domain names registered by a Service and the external domain names exposed to public networks. The search list (**search** option) and **ndots: 5** are present in the DNS configuration file. Therefore, when accessing an external domain name and a long cluster-internal domain name (for example, kubernetes.default.svc.cluster.local), the search list will usually be traversed first, resulting in at least six invalid DNS queries. The issue of invalid DNS queries disappears only when a short cluster-internal domain name (for example, kubernetes) is being accessed. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ClusterFirstWithHostNet | By default, the applications configured with the :ref:`host network ` are interconnected with the DNS configuration of the node where the pod is located. The DNS configuration is specified in the DNS file that the kubelet **--resolv-conf** parameter points to. In this case, the CCE cluster uses the DNS on the cloud. If workloads need to use Kube-DNS/CoreDNS of the cluster, set **dnsPolicy** to **ClusterFirstWithHostNet** and container's DNS configuration file is the same as ClusterFirst, in which invalid DNS queries still exist. | + | | | + | | .. code-block:: | + | | | + | | ... | + | | spec: | + | | containers: | + | | - image: nginx:latest | + | | imagePullPolicy: IfNotPresent | + | | name: container-1 | + | | restartPolicy: Always | + | | hostNetwork: true | + | | dnsPolicy: ClusterFirstWithHostNet | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Default | The DNS configuration of the node where the pod is located is inherited, and the custom DNS configuration is added to the inherited configuration. Container's DNS configuration file is the DNS configuration file that the kubelet's **--resolv-conf** flag points to. In this case, a cloud DNS is used for CCE clusters. Both **search** and **options** fields are left unspecified. This configuration can only resolve the external domain names registered with the Internet, and not cluster-internal domain names. This configuration is free from the issue of invalid DNS queries. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | None | The default DNS configuration is replaced by the custom DNS configuration, and only the custom DNS configuration is used. If **dnsPolicy** is set to **None**, the **dnsConfig** field must be specified because all DNS settings are supposed to be provided using the **dnsConfig** field. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -.. note:: + .. note:: - If the **dnsPolicy** field is not specified, the default value is **ClusterFirst** instead of **Default**. + If the **dnsPolicy** field is not specified, the default value is **ClusterFirst** instead of **Default**. -**dnsConfig** +- **dnsConfig** -The **dnsConfig** field is used to configure DNS parameters for workloads. The configured parameters are merged to the DNS configuration file generated according to **dnsPolicy**. If **dnsPolicy** is set to **None**, the workload's DNS configuration file is specified by the **dnsConfig** field. If **dnsPolicy** is not set to **None**, the DNS parameters configured in **dnsConfig** are added to the DNS configuration file generated according to **dnsPolicy**. + The **dnsConfig** field is used to configure DNS parameters for workloads. The configured parameters are merged to the DNS configuration file generated according to **dnsPolicy**. If **dnsPolicy** is set to **None**, the workload's DNS configuration file is specified by the **dnsConfig** field. If **dnsPolicy** is not set to **None**, the DNS parameters configured in **dnsConfig** are added to the DNS configuration file generated according to **dnsPolicy**. -.. _cce_10_0365__table16581121652515: + .. _cce_10_0365__table16581121652515: -.. table:: **Table 2** dnsConfig + .. table:: **Table 2** dnsConfig - +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +=============+================================================================================================================================================================================================================================================================================================================================================+ - | options | An optional list of objects where each object may have a name property (required) and a value property (optional). The contents in this property will be merged to the options generated from the specified DNS policy in **dnsPolicy**. Duplicate entries are removed. | - +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | nameservers | A list of IP addresses that will be used as DNS servers. If workload's **dnsPolicy** is set to **None**, the list must contain at least one IP address, otherwise this property is optional. The servers listed will be combined to the nameservers generated from the specified DNS policy in **dnsPolicy** with duplicate addresses removed. | - +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | searches | A list of DNS search domains for hostname lookup in the Pod. This property is optional. When specified, the provided list will be merged into the search domain names generated from the chosen DNS policy in **dnsPolicy**. Duplicate domain names are removed. Kubernetes allows for at most 6 search domains. | - +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -Configuring DNS for a Workload Using the Console ------------------------------------------------- - -Kubernetes provides DNS-related configuration options for applications. The use of application's DNS configuration can effectively reduce unnecessary DNS queries in certain scenarios and improve service concurrency. The following procedure uses an Nginx application as an example to describe how to add DNS configurations for a workload on the console. - -#. Log in to the CCE console, access the cluster console, select **Workloads** in the navigation pane, and click **Create Workload** in the upper right corner. -#. Configure basic information about the workload. For details, see :ref:`Creating a Deployment `. -#. In the **Advanced Settings** area, click the **DNS** tab and set the following parameters as required: - - - **DNS Policy**: The DNS policies provided on the console correspond to the **dnsPolicy** field in the YAML file. For details, see :ref:`Table 1 `. - - - **Supplement defaults**: corresponds to **dnsPolicy=ClusterFirst**. Containers can resolve both the cluster-internal domain names registered by a Service and the external domain names exposed to public networks. - - **Replace defaults**: corresponds to **dnsPolicy=None**. You must configure **IP Address** and **Search Domain**. Containers only use the user-defined IP address and search domain configurations for domain name resolution. - - **Inherit defaults**: corresponds to **dnsPolicy=Default**. Containers use the domain name resolution configuration from the node that pods run on and cannot resolve the cluster-internal domain names. - - - **Optional Objects**: The options parameters in the :ref:`dnsConfig field `. Each object may have a name property (required) and a value property (optional). After setting the properties, click **confirm to add**. - - - **timeout**: Timeout interval, in seconds. - - **ndots**: Number of dots (.) that must be present in a domain name. If a domain name has dots fewer than this value, the operating system will look up the name in the search domain. If not, the name is a fully qualified domain name (FQDN) and will be tried first as an absolute name. - - - **IP Address**: **nameservers** in the :ref:`dnsConfig field `. You can configure the domain name server for the custom domain name. The value is one or a group of DNS IP addresses. - - **Search Domain**: **searches** in the :ref:`dnsConfig field `. A list of DNS search domains for hostname lookup in the pod. This property is optional. When specified, the provided list will be merged into the search domain names generated from the chosen DNS policy in **dnsPolicy**. Duplicate domain names are removed. - -#. Click **Create Workload**. + +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +=============+================================================================================================================================================================================================================================================================================================================================================+ + | options | An optional list of objects where each object may have a name property (required) and a value property (optional). The contents in this property will be merged to the options generated from the specified DNS policy in **dnsPolicy**. Duplicate entries are removed. | + +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | nameservers | A list of IP addresses that will be used as DNS servers. If workload's **dnsPolicy** is set to **None**, the list must contain at least one IP address, otherwise this property is optional. The servers listed will be combined to the nameservers generated from the specified DNS policy in **dnsPolicy** with duplicate addresses removed. | + +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | searches | A list of DNS search domains for hostname lookup in the Pod. This property is optional. When specified, the provided list will be merged into the search domain names generated from the chosen DNS policy in **dnsPolicy**. Duplicate domain names are removed. Kubernetes allows for at most 6 search domains. | + +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ Configuration Examples ---------------------- @@ -164,7 +164,7 @@ The following example describes how to configure DNS for workloads. **Scenario** - Kubernetes in-cluster Kube-DNS/CoreDNS is applicable to resolving only cluster-internal domain names or cluster-internal domain names + external domain names. This is the default DNS for workloads. + Kubernetes in-cluster Kube-DNS/CoreDNS applies to resolving only cluster-internal domain names or cluster-internal domain names + external domain names. This is the default DNS for workloads. **Example:** @@ -180,6 +180,8 @@ The following example describes how to configure DNS for workloads. - name: test image: nginx:alpine dnsPolicy: ClusterFirst + imagePullSecrets: + - name: default-secret Container's DNS configuration file: @@ -193,7 +195,7 @@ The following example describes how to configure DNS for workloads. **Scenario** - A DNS cannot resolve cluster-internal domain names and therefore is applicable to the scenario where workloads access only external domain names registered with the Internet. + A DNS cannot resolve cluster-internal domain names and therefore applies to the scenario where workloads access only external domain names registered with the Internet. **Example:** @@ -208,7 +210,9 @@ The following example describes how to configure DNS for workloads. containers: - name: test image: nginx:alpine - dnsPolicy: Default//The DNS configuration file that the kubelet's --resolv-conf flag points to is used. In this case, a DNS is used for CCE clusters. + dnsPolicy: Default # The DNS configuration file that the kubelet --resolv-conf parameter points to is used. In this case, the CCE cluster uses the DNS on the cloud. + imagePullSecrets: + - name: default-secret Container's DNS configuration file: @@ -238,6 +242,8 @@ The following example describes how to configure DNS for workloads. image: nginx:alpine ports: - containerPort: 80 + imagePullSecrets: + - name: default-secret Container's DNS configuration file: @@ -271,7 +277,7 @@ The following example describes how to configure DNS for workloads. dnsPolicy: "None" dnsConfig: nameservers: - - 10.2.3.4 //IP address of your on-premises DNS + - 10.2.3.4 # IP address of your on-premises DNS searches: - ns1.svc.cluster.local - my.dns.search.suffix @@ -280,6 +286,8 @@ The following example describes how to configure DNS for workloads. value: "2" - name: timeout value: "3" + imagePullSecrets: + - name: default-secret Container's DNS configuration file: @@ -308,7 +316,9 @@ The following example describes how to configure DNS for workloads. dnsConfig: options: - name: ndots - value: "2" //Changes the ndots:5 option in the DNS configuration file generated based on the ClusterFirst policy to ndots:2. + value: "2" # The ndots:5 option in the DNS configuration file generated based on the ClusterFirst policy is changed to ndots:2. + imagePullSecrets: + - name: default-secret Container's DNS configuration file: @@ -317,3 +327,31 @@ The following example describes how to configure DNS for workloads. nameserver 10.247.3.10 search default.svc.cluster.local svc.cluster.local cluster.local options ndots:2 + + **Example 3: Using Multiple DNSs in Serial Sequence** + + .. code-block:: + + apiVersion: v1 + kind: Pod + metadata: + namespace: default + name: dns-example + spec: + containers: + - name: test + image: nginx:alpine + dnsPolicy: ClusterFirst # Added DNS configuration. The cluster connects to CoreDNS by default. + dnsConfig: + nameservers: + - 10.2.3.4 # IP address of your on-premises DNS + imagePullSecrets: + - name: default-secret + + Container's DNS configuration file: + + .. code-block:: + + nameserver 10.247.3.10 10.2.3.4 + search default.svc.cluster.local svc.cluster.local cluster.local + options ndots:5 diff --git a/umn/source/networking/dns/index.rst b/umn/source/network/dns/index.rst similarity index 100% rename from umn/source/networking/dns/index.rst rename to umn/source/network/dns/index.rst diff --git a/umn/source/network/dns/overview.rst b/umn/source/network/dns/overview.rst new file mode 100644 index 0000000..5f6a8a4 --- /dev/null +++ b/umn/source/network/dns/overview.rst @@ -0,0 +1,94 @@ +:original_name: cce_10_0360.html + +.. _cce_10_0360: + +Overview +======== + +Introduction to CoreDNS +----------------------- + +When you create a cluster, the :ref:`CoreDNS add-on ` is installed to resolve domain names in the cluster. + +You can view the pod of the CoreDNS add-on in the kube-system namespace. + +.. code-block:: + + $ kubectl get po --namespace=kube-system + NAME READY STATUS RESTARTS AGE + coredns-7689f8bdf-295rk 1/1 Running 0 9m11s + coredns-7689f8bdf-h7n68 1/1 Running 0 11m + +After CoreDNS is installed, it becomes a DNS. After the Service is created, CoreDNS records the Service name and IP address. In this way, the pod can obtain the Service IP address by querying the Service name from CoreDNS. + +**nginx..svc.cluster.local** is used to access the Service. **nginx** is the Service name, **** is the namespace, and **svc.cluster.local** is the domain name suffix. In actual use, you can omit **.svc.cluster.local** in the same namespace and use the ServiceName. + +An advantage of using ServiceName is that you can write ServiceName into the program when developing the application. In this way, you do not need to know the IP address of a specific Service. + +After CoreDNS is installed, there is also a Service in the kube-system namespace, as shown below. + +.. code-block:: + + $ kubectl get svc -n kube-system + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + coredns ClusterIP 10.247.3.10 53/UDP,53/TCP,8080/TCP 13d + +By default, after other pods are created, the address of the CoreDNS Service is written as the address of the domain name resolution server in the **/etc/resolv.conf** file of the pod. Create a pod and view the **/etc/resolv.conf** file as follows: + +.. code-block:: + + $ kubectl exec test01-6cbbf97b78-krj6h -it -- /bin/sh + / # cat /etc/resolv.conf + nameserver 10.247.3.10 + search default.svc.cluster.local svc.cluster.local cluster.local + options ndots:5 timeout single-request-reopen + +When a user accesses the *Service name:Port* of the Nginx pod, the IP address of the Nginx Service is resolved from CoreDNS, and then the IP address of the Nginx Service is accessed. In this way, the user can access the backend Nginx pod. + + +.. figure:: /_static/images/en-us_image_0000001695896713.png + :alt: **Figure 1** Example of domain name resolution in a cluster + + **Figure 1** Example of domain name resolution in a cluster + +How Does Domain Name Resolution Work in Kubernetes? +--------------------------------------------------- + +DNS policies can be set on a per-pod basis. Currently, Kubernetes supports four types of DNS policies: **Default**, **ClusterFirst**, **ClusterFirstWithHostNet**, and **None**. For details, see https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/. These policies are specified in the **dnsPolicy** field in the pod-specific. + +- **Default**: Pods inherit the name resolution configuration from the node that the pods run on. The custom upstream DNS server and the stub domain cannot be used together with this policy. +- **ClusterFirst**: Any DNS query that does not match the configured cluster domain suffix, such as **www.kubernetes.io**, is forwarded to the upstream name server inherited from the node. Cluster administrators may have extra stub domains and upstream DNS servers configured. +- **ClusterFirstWithHostNet**: For pods running with hostNetwork, set its DNS policy **ClusterFirstWithHostNet**. +- **None**: It allows a pod to ignore DNS settings from the Kubernetes environment. All DNS settings are supposed to be provided using the **dnsPolicy** field in the pod-specific. + +.. note:: + + - Clusters of Kubernetes v1.10 and later support **Default**, **ClusterFirst**, **ClusterFirstWithHostNet**, and **None**. Clusters earlier than Kubernetes v1.10 support only **Default**, **ClusterFirst**, and **ClusterFirstWithHostNet**. + - **Default** is not the default DNS policy. If **dnsPolicy** is not explicitly specified, **ClusterFirst** is used. + +**Routing** + +**Without stub domain configurations**: Any query that does not match the configured cluster domain suffix, such as **www.kubernetes.io**, is forwarded to the upstream DNS server inherited from the node. + +**With stub domain configurations**: If stub domains and upstream DNS servers are configured, DNS queries are routed according to the following flow: + +#. The query is first sent to the DNS caching layer in CoreDNS. +#. From the caching layer, the suffix of the request is examined and then the request is forwarded to the corresponding DNS: + + - Names with the cluster suffix, for example, **.cluster.local**: The request is sent to CoreDNS. + + - Names with the stub domain suffix, for example, **.acme.local**: The request is sent to the configured custom DNS resolver that listens, for example, on 1.2.3.4. + - Names that do not match the suffix (for example, **widget.com**): The request is forwarded to the upstream DNS. + + +.. figure:: /_static/images/en-us_image_0000001647576960.png + :alt: **Figure 2** Routing + + **Figure 2** Routing + +Related Operations +------------------ + +You can also configure DNS in a workload. For details, see :ref:`DNS Configuration `. + +You can also use CoreDNS to implement user-defined domain name resolution. For details, see :ref:`Using CoreDNS for Custom Domain Name Resolution `. diff --git a/umn/source/network/dns/using_coredns_for_custom_domain_name_resolution.rst b/umn/source/network/dns/using_coredns_for_custom_domain_name_resolution.rst new file mode 100644 index 0000000..39b6315 --- /dev/null +++ b/umn/source/network/dns/using_coredns_for_custom_domain_name_resolution.rst @@ -0,0 +1,226 @@ +:original_name: cce_10_0361.html + +.. _cce_10_0361: + +Using CoreDNS for Custom Domain Name Resolution +=============================================== + +Challenges +---------- + +When using CCE, you may need to resolve custom internal domain names in the following scenarios: + +- In the legacy code, a fixed domain name is configured for calling other internal services. If the system decides to use Kubernetes Services, the code refactoring workload could be heavy. +- A service is created outside the cluster. Data in the cluster needs to be sent to the service through a fixed domain name. + +Solution +-------- + +There are several CoreDNS-based solutions for custom domain name resolution: + +- :ref:`Configuring the Stub Domain for CoreDNS `: You can add it on the console, which is easy to operate. +- :ref:`Using the CoreDNS Hosts plug-in to configure resolution for any domain name `: You can add any record set, which is similar to adding a record set in the local **/etc/hosts** file. +- :ref:`Using the CoreDNS Rewrite plug-in to point a domain name to a service in the cluster `: A nickname is assigned to the Kubernetes Service. You do not need to know the IP address of the resolution record in advance. +- :ref:`Using the CoreDNS Forward plug-in to set the self-built DNS as the upstream DNS `: The self-built DNS can manage a large number of resolution records. You do not need to modify the CoreDNS configuration when adding or deleting records. + +Precautions +----------- + +Improper modification on CoreDNS configuration may cause domain name resolution failures in the cluster. Perform tests before and after the modification. + +.. _cce_10_0361__section5202157467: + +Configuring the Stub Domain for CoreDNS +--------------------------------------- + +Cluster administrators can modify the ConfigMap for the CoreDNS Corefile to change how service discovery works. + +Assume that a cluster administrator has a Consul DNS server located at 10.150.0.1 and all Consul domain names have the suffix **.consul.local**. + +#. Log in to the CCE console and click the cluster name to access the cluster console. + +#. In the navigation pane, choose **Add-ons**. On the displayed page, click **Edit** under **CoreDNS**. + +#. Add a stub domain in the **Parameters** area. The format is a key-value pair. The key is a DNS suffix domain name, and the value is a DNS IP address or a group of DNS IP addresses, for example, **consul.local --10.XXX.XXX.XXX**. + +#. Click **OK**. + +#. Choose **ConfigMaps and Secrets** in the navigation pane, select the **kube-system** namespace, and view the ConfigMap data of CoreDNS to check whether the update is successful. + + The corresponding Corefile content is as follows: + + .. code-block:: + + .:5353 { + bind {$POD_IP} + cache 30 + errors + health {$POD_IP}:8080 + kubernetes cluster.local in-addr.arpa ip6.arpa { + pods insecure + fallthrough in-addr.arpa ip6.arpa + } + loadbalance round_robin + prometheus {$POD_IP}:9153 + forward . /etc/resolv.conf { + policy random + } + reload + ready {$POD_IP}:8081 + } + consul.local:5353 { + bind {$POD_IP} + errors + cache 30 + forward . 10.150.0.1 + } + +.. _cce_10_0361__section106211954135311: + +Modifying the CoreDNS Hosts Configuration File +---------------------------------------------- + +After modifying the hosts file in CoreDNS, you do not need to configure the hosts file in each pod to add resolution records. + +#. Log in to the CCE console and click the cluster name to access the cluster console. + +#. In the navigation pane, choose **Add-ons**. On the displayed page, click **Edit** under **CoreDNS**. + +#. Edit the advanced configuration under **Parameters** and add the following content to the **plugins** field: + + .. code-block:: + + { + "configBlock": "192.168.1.1 www.example.com\nfallthrough", + "name": "hosts" + } + + .. important:: + + The **fallthrough** field must be configured. **fallthrough** indicates that when the domain name to be resolved cannot be found in the hosts file, the resolution task is transferred to the next CoreDNS plug-in. If **fallthrough** is not specified, the task ends and the domain name resolution stops. As a result, the domain name resolution in the cluster fails. + + For details about how to configure the hosts file, visit https://coredns.io/plugins/hosts/. + +#. Click **OK**. + +#. Choose **ConfigMaps and Secrets** in the navigation pane, select the **kube-system** namespace, and view the ConfigMap data of CoreDNS to check whether the update is successful. + + The corresponding Corefile content is as follows: + + .. code-block:: + + .:5353 { + bind {$POD_IP} + hosts { + 192.168.1.1 www.example.com + fallthrough + } + cache 30 + errors + health {$POD_IP}:8080 + kubernetes cluster.local in-addr.arpa ip6.arpa { + pods insecure + fallthrough in-addr.arpa ip6.arpa + } + loadbalance round_robin + prometheus {$POD_IP}:9153 + forward . /etc/resolv.conf { + policy random + } + reload + ready {$POD_IP}:8081 + } + +.. _cce_10_0361__section2213823544: + +Adding the CoreDNS Rewrite Configuration to Point the Domain Name to Services in the Cluster +-------------------------------------------------------------------------------------------- + +Use the Rewrite plug-in of CoreDNS to resolve a specified domain name to the domain name of a Service. For example, the request for accessing the example.com domain name is redirected to the example.default.svc.cluster.local domain name, that is, the example service in the default namespace. + +#. Log in to the CCE console and click the cluster name to access the cluster console. + +#. In the navigation pane, choose **Add-ons**. On the displayed page, click **Edit** under **CoreDNS**. + +#. Edit the advanced configuration under **Parameters** and add the following content to the **plugins** field: + + .. code-block:: + + { + "name": "rewrite", + "parameters": "name example.com example.default.svc.cluster.local" + } + +#. Click **OK**. + +#. Choose **ConfigMaps and Secrets** in the navigation pane, select the **kube-system** namespace, and view the ConfigMap data of CoreDNS to check whether the update is successful. + + Corresponding Corefile content: + + .. code-block:: + + .:5353 { + bind {$POD_IP} + rewrite name example.com example.default.svc.cluster.local + cache 30 + errors + health {$POD_IP}:8080 + kubernetes cluster.local in-addr.arpa ip6.arpa { + pods insecure + fallthrough in-addr.arpa ip6.arpa + } + loadbalance round_robin + prometheus {$POD_IP}:9153 + forward . /etc/resolv.conf { + policy random + } + reload + ready {$POD_IP}:8081 + } + +.. _cce_10_0361__section677819913541: + +Using CoreDNS to Cascade Self-Built DNS +--------------------------------------- + +By default, CoreDNS uses the **/etc/resolv.conf** file of the node for resolution. You can also change the resolution address to that of the external DNS. + +#. Log in to the CCE console and click the cluster name to access the cluster console. + +#. In the navigation pane, choose **Add-ons**. On the displayed page, click **Edit** under **CoreDNS**. + +#. Edit the advanced configuration under **Parameters** and modify the following content in the **plugins** field: + + .. code-block:: + + { + "configBlock": "policy random", + "name": "forward", + "parameters": ". 192.168.1.1" + } + +#. Click **OK**. + +#. Choose **ConfigMaps and Secrets** in the navigation pane, select the **kube-system** namespace, and view the ConfigMap data of CoreDNS to check whether the update is successful. + + The corresponding Corefile content is as follows: + + .. code-block:: + + .:5353 { + bind {$POD_IP} + cache 30 + errors + health {$POD_IP}:8080 + kubernetes cluster.local in-addr.arpa ip6.arpa { + pods insecure + fallthrough in-addr.arpa ip6.arpa + } + loadbalance round_robin + prometheus {$POD_IP}:9153 + forward . 192.168.1.1 { + policy random + } + reload + ready {$POD_IP}:8081 + } diff --git a/umn/source/networking/index.rst b/umn/source/network/index.rst similarity index 68% rename from umn/source/networking/index.rst rename to umn/source/network/index.rst index b8697dc..dfe79e1 100644 --- a/umn/source/networking/index.rst +++ b/umn/source/network/index.rst @@ -2,18 +2,18 @@ .. _cce_10_0020: -Networking -========== +Network +======= - :ref:`Overview ` - :ref:`Container Network Models ` -- :ref:`Services ` +- :ref:`Service ` - :ref:`Ingresses ` - :ref:`DNS ` +- :ref:`Container Network Settings ` +- :ref:`Cluster Network Settings ` - :ref:`Configuring Intra-VPC Access ` - :ref:`Accessing Public Networks from a Container ` -- :ref:`Network Policies ` -- :ref:`Host Network ` .. toctree:: :maxdepth: 1 @@ -21,10 +21,10 @@ Networking overview container_network_models/index - services/index + service/index ingresses/index dns/index + container_network_settings/index + cluster_network_settings/index configuring_intra-vpc_access accessing_public_networks_from_a_container - network_policies - host_network diff --git a/umn/source/network/ingresses/elb_ingresses/configuring_elb_ingresses_using_annotations.rst b/umn/source/network/ingresses/elb_ingresses/configuring_elb_ingresses_using_annotations.rst new file mode 100644 index 0000000..838a673 --- /dev/null +++ b/umn/source/network/ingresses/elb_ingresses/configuring_elb_ingresses_using_annotations.rst @@ -0,0 +1,194 @@ +:original_name: cce_10_0695.html + +.. _cce_10_0695: + +Configuring ELB Ingresses Using Annotations +=========================================== + +By adding annotations to a YAML file, you can implement more advanced ingress functions. This section describes the annotations that can be used when you create an ingress of the ELB type. + +- :ref:`Interconnecting with ELB ` +- :ref:`Using HTTP/2 ` +- :ref:`Interconnecting with HTTPS Backend Services ` + +.. _cce_10_0695__section7819047102916: + +Interconnecting with ELB +------------------------ + +.. table:: **Table 1** Annotations for interconnecting with ELB + + +------------------------------+-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+ + | Parameter | Type | Description | Supported Cluster Version | + +==============================+===========================================================+=========================================================================================================================================================================================================+================================================+ + | kubernetes.io/elb.class | String | Select a proper load balancer type. | v1.9 or later | + | | | | | + | | | The value can be: | | + | | | | | + | | | - **union**: shared load balancer | | + | | | - **performance**: dedicated load balancer, which can be used only in clusters of v1.17 and later. | | + +------------------------------+-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+ + | kubernetes.io/ingress.class | String | - **cce**: The self-developed ELB ingress is used. | Only clusters of v1.21 or earlier | + | | | - **nginx**: Nginx ingress is used. | | + | | | | | + | | | This parameter is mandatory when an ingress is created by calling the API. | | + | | | | | + | | | For clusters of v1.23 or later, use the parameter **ingressClassName**. For details, see :ref:`Using kubectl to Create an ELB Ingress `. | | + +------------------------------+-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+ + | kubernetes.io/elb.port | Integer | This parameter indicates the external port registered with the address of the LoadBalancer Service. | v1.9 or later | + | | | | | + | | | Supported range: 1 to 65535 | | + | | | | | + | | | .. note:: | | + | | | | | + | | | Some ports are high-risk ports and are blocked by default, for example, port 21. | | + +------------------------------+-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+ + | kubernetes.io/elb.id | String | Mandatory **when an existing load balancer is to be interconnected**. | v1.9 or later | + | | | | | + | | | ID of a load balancer. | | + | | | | | + | | | **How to obtain**: | | + | | | | | + | | | On the management console, click **Service List**, and choose **Networking** > **Elastic Load Balance**. Click the name of the target load balancer. On the **Summary** tab page, find and copy the ID. | | + +------------------------------+-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+ + | kubernetes.io/elb.ip | String | Mandatory **when an existing load balancer is to be interconnected**. | v1.9 or later | + | | | | | + | | | This parameter indicates the service address of a load balancer. The value can be the public IP address of a public network load balancer or the private IP address of a private network load balancer. | | + +------------------------------+-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+ + | kubernetes.io/elb.autocreate | :ref:`Table 4 ` Object | Mandatory **when load balancers are automatically created**. | v1.9 or later | + | | | | | + | | | **Example** | | + | | | | | + | | | - If a public network load balancer will be automatically created, set this parameter to the following value: | | + | | | | | + | | | '{"type":"public","bandwidth_name":"cce-bandwidth-1551163379627","bandwidth_chargemode":"bandwidth","bandwidth_size":5,"bandwidth_sharetype":"PER","eip_type":"5_bgp","name":"james"}' | | + | | | | | + | | | - If a private network load balancer will be automatically created, set this parameter to the following value: | | + | | | | | + | | | {"type":"inner","name":"A-location-d-test"} | | + +------------------------------+-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+ + | kubernetes.io/elb.subnet-id | String | Optional **when load balancers are automatically created**. | Mandatory for clusters earlier than v1.11.7-r0 | + | | | | | + | | | ID of the subnet where the cluster is located. The value can contain 1 to 100 characters. | Discarded in clusters later than v1.11.7-r0 | + | | | | | + | | | - Mandatory when a cluster of v1.11.7-r0 or earlier is to be automatically created. | | + | | | - Optional for clusters later than v1.11.7-r0. | | + +------------------------------+-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+ + +To use the preceding annotations, perform the following steps: + +- See :ref:`Creating an Ingress - Interconnecting with an Existing Load Balancer ` to interconnect an existing load balancer. +- See :ref:`Creating an Ingress - Automatically Creating a Load Balancer ` to automatically create a load balancer. + +.. _cce_10_0695__section17893312104519: + +Using HTTP/2 +------------ + +.. table:: **Table 2** Annotations of using HTTP/2 + + +--------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+ + | Parameter | Type | Description | Supported Cluster Version | + +================================+=================+=========================================================================================================================================================================================================================================================================================================================+===================================+ + | kubernetes.io/elb.http2-enable | String | Whether HTTP/2 is enabled. Request forwarding using HTTP/2 improves the access performance between your application and the load balancer. However, the load balancer still uses HTTP 1.X to forward requests to the backend server. **This parameter is supported in clusters of v1.19.16-r0, v1.21.3-r0, and later.** | v1.19.16-r0, v1.21.3-r0, or later | + | | | | | + | | | Options: | | + | | | | | + | | | - **true**: enabled | | + | | | - **false**: disabled (default value) | | + | | | | | + | | | Note: **HTTP/2 can be enabled or disabled only when the listener uses HTTPS.** This parameter is invalid and defaults to **false** when the listener protocol is HTTP. | | + +--------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+ + +For details about the application scenarios, see :ref:`ELB Ingresses Using HTTP/2 `. + +.. _cce_10_0695__section03391948464: + +Interconnecting with HTTPS Backend Services +------------------------------------------- + +.. table:: **Table 3** Annotations for interconnecting with HTTPS backend services + + +---------------------------------+--------+-------------------------------------------------------------------------------+----------------------------+ + | Parameter | Type | Description | Supported Cluster Version | + +=================================+========+===============================================================================+============================+ + | kubernetes.io/elb.pool-protocol | String | To interconnect with HTTPS backend services, set this parameter to **https**. | v1.23.8, v1.25.3, or later | + +---------------------------------+--------+-------------------------------------------------------------------------------+----------------------------+ + +For details about the application scenarios, see :ref:`Interconnecting ELB Ingresses with HTTPS Backend Services `. + +Data Structure +-------------- + +.. _cce_10_0695__table148341447193017: + +.. table:: **Table 4** Data structure of the **elb.autocreate** field + + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +======================+=======================================+==================+==================================================================================================================================================================================================================================================================================================================================================================================+ + | name | No | String | Name of the automatically created load balancer. | + | | | | | + | | | | The value can contain 1 to 64 characters. Only letters, digits, underscores (_), hyphens (-), and periods (.) are allowed. | + | | | | | + | | | | Default: **cce-lb+service.UID** | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | type | No | String | Network type of the load balancer. | + | | | | | + | | | | - **public**: public network load balancer | + | | | | - **inner**: private network load balancer | + | | | | | + | | | | Default: **inner** | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | bandwidth_name | Yes for public network load balancers | String | Bandwidth name. The default value is **cce-bandwidth-*****\***. | + | | | | | + | | | | The value can contain 1 to 64 characters. Only letters, digits, underscores (_), hyphens (-), and periods (.) are allowed. | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | bandwidth_chargemode | No | String | Bandwidth mode. | + | | | | | + | | | | - **bandwidth**: billed by bandwidth | + | | | | - **traffic**: billed by traffic | + | | | | | + | | | | Default: **bandwidth** | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | bandwidth_size | Yes for public network load balancers | Integer | Bandwidth size. The default value is 1 to 2000 Mbit/s. Configure this parameter based on the bandwidth range allowed in your region. | + | | | | | + | | | | The minimum increment for bandwidth adjustment varies depending on the bandwidth range. | + | | | | | + | | | | - The minimum increment is 1 Mbit/s if the allowed bandwidth does not exceed 300 Mbit/s. | + | | | | - The minimum increment is 50 Mbit/s if the allowed bandwidth ranges from 300 Mbit/s to 1000 Mbit/s. | + | | | | - The minimum increment is 500 Mbit/s if the allowed bandwidth exceeds 1000 Mbit/s. | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | bandwidth_sharetype | Yes for public network load balancers | String | Bandwidth sharing mode. | + | | | | | + | | | | - **PER**: dedicated bandwidth | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | eip_type | Yes for public network load balancers | String | EIP type. | + | | | | | + | | | | - **5_bgp**: dynamic BGP | + | | | | - **5_sbgp**: static BGP | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | available_zone | Yes | Array of strings | AZ where the load balancer is located. | + | | | | | + | | | | This parameter is available only for dedicated load balancers. | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | l4_flavor_name | Yes | String | Flavor name of the layer-4 load balancer. | + | | | | | + | | | | This parameter is available only for dedicated load balancers. | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | l7_flavor_name | No | String | Flavor name of the layer-7 load balancer. | + | | | | | + | | | | This parameter is available only for dedicated load balancers. The value of this parameter must be the same as that of **l4_flavor_name**, that is, both are elastic specifications or fixed specifications. | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | elb_virsubnet_ids | No | Array of strings | Subnet where the backend server of the load balancer is located. If this parameter is left blank, the default cluster subnet is used. Load balancers occupy different number of subnet IP addresses based on their specifications. Therefore, you are not advised to use the subnet CIDR blocks of other resources (such as clusters and nodes) as the load balancer CIDR block. | + | | | | | + | | | | This parameter is available only for dedicated load balancers. | + | | | | | + | | | | Example: | + | | | | | + | | | | .. code-block:: | + | | | | | + | | | | "elb_virsubnet_ids": [ | + | | | | "14567f27-8ae4-42b8-ae47-9f847a4690dd" | + | | | | ] | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/network/ingresses/elb_ingresses/configuring_https_certificates_for_elb_ingresses.rst b/umn/source/network/ingresses/elb_ingresses/configuring_https_certificates_for_elb_ingresses.rst new file mode 100644 index 0000000..040dd61 --- /dev/null +++ b/umn/source/network/ingresses/elb_ingresses/configuring_https_certificates_for_elb_ingresses.rst @@ -0,0 +1,231 @@ +:original_name: cce_10_0687.html + +.. _cce_10_0687: + +Configuring HTTPS Certificates for ELB Ingresses +================================================ + +Ingress supports TLS certificate configuration and secures your Services with HTTPS. + +Currently, you can use the TLS secret certificate configured in the cluster and the ELB certificate. + +.. note:: + + If HTTPS is enabled for the same port of the same load balancer of multiple ingresses, you must select the same certificate. + +Using a TLS Secret Certificate +------------------------------ + +#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. + +#. Ingress supports two TLS secret types: kubernetes.io/tls and IngressTLS. IngressTLS is used as an example. For details, see :ref:`Creating a Secret `. For details about examples of the kubernetes.io/tls secret and its description, see `TLS Secret `__. + + Run the following command to create a YAML file named **ingress-test-secret.yaml** (the file name can be customized): + + **vi ingress-test-secret.yaml** + + **The YAML file is configured as follows:** + + .. code-block:: + + apiVersion: v1 + data: + tls.crt: LS0******tLS0tCg== + tls.key: LS0tL******0tLS0K + kind: Secret + metadata: + annotations: + description: test for ingressTLS secrets + name: ingress-test-secret + namespace: default + type: IngressTLS + + .. note:: + + In the preceding information, **tls.crt** and **tls.key** are only examples. Replace them with the actual files. The values of **tls.crt** and **tls.key** are Base64-encoded. + +#. Create a secret. + + **kubectl create -f ingress-test-secret.yaml** + + If information similar to the following is displayed, the secret is being created: + + .. code-block:: + + secret/ingress-test-secret created + + View the created secret. + + **kubectl get secrets** + + If information similar to the following is displayed, the secret has been created: + + .. code-block:: + + NAME TYPE DATA AGE + ingress-test-secret IngressTLS 2 13s + +#. Create a YAML file named **ingress-test.yaml**. The file name can be customized. + + **vi ingress-test.yaml** + + .. note:: + + Default security policy (kubernetes.io/elb.tls-ciphers-policy) is supported only in clusters of v1.17.17 or later. + + **The following uses the automatically created load balancer as an example. The YAML file is configured as follows:** + + **For clusters of v1.21 or earlier:** + + .. code-block:: + + apiVersion: networking.k8s.io/v1beta1 + kind: Ingress + metadata: + name: ingress-test + annotations: + kubernetes.io/elb.class: performance + kubernetes.io/ingress.class: cce + kubernetes.io/elb.port: '443' + kubernetes.io/elb.autocreate: + '{ + "type": "public", + "bandwidth_name": "cce-bandwidth-******", + "bandwidth_chargemode": "bandwidth", + "bandwidth_size": 5, + "bandwidth_sharetype": "PER", + "eip_type": "5_bgp", + "available_zone": [ + "eu-de-01" + ], + "elb_virsubnet_ids":["b4bf8152-6c36-4c3b-9f74-2229f8e640c9"], + "l7_flavor_name": "L7_flavor.elb.s1.small" + }' + kubernetes.io/elb.tls-ciphers-policy: tls-1-2 + spec: + tls: + - secretName: ingress-test-secret + rules: + - host: foo.bar.com + http: + paths: + - path: '/' + backend: + serviceName: # Replace it with the name of your target Service. + servicePort: 80 + property: + ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH + + **For clusters of v1.23 or later:** + + .. code-block:: + + apiVersion: networking.k8s.io/v1 + kind: Ingress + metadata: + name: ingress-test + annotations: + kubernetes.io/elb.class: performance + kubernetes.io/elb.port: '443' + kubernetes.io/elb.autocreate: + '{ + "type": "public", + "bandwidth_name": "cce-bandwidth-******", + "bandwidth_chargemode": "bandwidth", + "bandwidth_size": 5, + "bandwidth_sharetype": "PER", + "eip_type": "5_bgp", + "available_zone": [ + "eu-de-01" + ], + "elb_virsubnet_ids":["b4bf8152-6c36-4c3b-9f74-2229f8e640c9"], + "l7_flavor_name": "L7_flavor.elb.s1.small" + }' + kubernetes.io/elb.tls-ciphers-policy: tls-1-2 + spec: + tls: + - secretName: ingress-test-secret + rules: + - host: foo.bar.com + http: + paths: + - path: '/' + backend: + service: + name: # Replace it with the name of your target Service. + port: + number: 8080 # Replace 8080 with the port number of your target Service. + property: + ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH + pathType: ImplementationSpecific + ingressClassName: cce + + .. table:: **Table 1** Key parameters + + +--------------------------------------+-----------------+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +======================================+=================+==================+========================================================================================================================================================================+ + | kubernetes.io/elb.tls-ciphers-policy | No | String | The default value is **tls-1-2**, which is the default security policy used by the listener and takes effect only when HTTPS is used. | + | | | | | + | | | | Options: | + | | | | | + | | | | - tls-1-0 | + | | | | - tls-1-1 | + | | | | - tls-1-2 | + | | | | - tls-1-2-strict | + | | | | | + | | | | For details of cipher suites for each security policy, see :ref:`Table 2 `. | + +--------------------------------------+-----------------+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | tls | No | Array of strings | When HTTPS is used, this parameter must be added to specify the secret certificate. | + | | | | | + | | | | Multiple independent domain names and certificates can be added. For details, see :ref:`Configuring the Server Name Indication (SNI) for ELB Ingresses `. | + +--------------------------------------+-----------------+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | secretName | No | String | This parameter is mandatory if HTTPS is used. Set this parameter to the name of the created secret. | + +--------------------------------------+-----------------+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. _cce_10_0687__table9419191416246: + + .. table:: **Table 2** **tls_ciphers_policy** parameter description + + +-----------------------+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Security Policy | TLS Version | Cipher Suite | + +=======================+=======================+=======================================================================================================================================================================================================================================================================================================================================================================================================+ + | tls-1-0 | TLS 1.2 | ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-SHA:AES256-SHA | + | | | | + | | TLS 1.1 | | + | | | | + | | TLS 1.0 | | + +-----------------------+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | tls-1-1 | TLS 1.2 | | + | | | | + | | TLS 1.1 | | + +-----------------------+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | tls-1-2 | TLS 1.2 | | + +-----------------------+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | tls-1-2-strict | TLS 1.2 | ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384 | + +-----------------------+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +#. Create an ingress. + + **kubectl create -f ingress-test.yaml** + + If information similar to the following is displayed, the ingress has been created. + + .. code-block:: + + ingress/ingress-test created + + View the created ingress. + + **kubectl get ingress** + + If information similar to the following is displayed, the ingress has been created and the workload is accessible. + + .. code-block:: + + NAME HOSTS ADDRESS PORTS AGE + ingress-test * 121.**.**.** 80 10s + +#. Enter **https://121.**.**.*\*:443** in the address box of the browser to access the workload (for example, :ref:`Nginx workload `). + + **121.**.**.*\*** indicates the IP address of the unified load balancer. diff --git a/umn/source/network/ingresses/elb_ingresses/configuring_the_server_name_indication_sni_for_elb_ingresses.rst b/umn/source/network/ingresses/elb_ingresses/configuring_the_server_name_indication_sni_for_elb_ingresses.rst new file mode 100644 index 0000000..bcca3ef --- /dev/null +++ b/umn/source/network/ingresses/elb_ingresses/configuring_the_server_name_indication_sni_for_elb_ingresses.rst @@ -0,0 +1,115 @@ +:original_name: cce_10_0688.html + +.. _cce_10_0688: + +Configuring the Server Name Indication (SNI) for ELB Ingresses +============================================================== + +SNI allows multiple TLS-based access domain names to be provided for external systems using the same IP address and port number. Different domain names can use different security certificates. + +.. note:: + + - This function is supported only in clusters of v1.15.11 and later. + - The **SNI** option is available only when HTTPS is used. + + - Only one domain name can be specified for each SNI certificate. Wildcard-domain certificates are supported. + - Security policy (kubernetes.io/elb.tls-ciphers-policy) is supported only in clusters of v1.17.11 or later. + +You can enable SNI when the preceding conditions are met. The following uses the automatic creation of a load balancer as an example. In this example, **sni-test-secret-1** and **sni-test-secret-2** are SNI certificates. The domain names specified by the certificates must be the same as those in the certificates. + +**For clusters of v1.21 or earlier:** + +.. code-block:: + + apiVersion: networking.k8s.io/v1beta1 + kind: Ingress + metadata: + name: ingress-test + annotations: + kubernetes.io/elb.class: performance + kubernetes.io/ingress.class: cce + kubernetes.io/elb.port: '443' + kubernetes.io/elb.autocreate: + '{ + "type": "public", + "bandwidth_name": "cce-bandwidth-******", + "bandwidth_chargemode": "bandwidth", + "bandwidth_size": 5, + "bandwidth_sharetype": "PER", + "eip_type": "5_bgp", + "available_zone": [ + "eu-de-01" + ], + "elb_virsubnet_ids":["b4bf8152-6c36-4c3b-9f74-2229f8e640c9"], + "l7_flavor_name": "L7_flavor.elb.s1.small" + }' + kubernetes.io/elb.tls-ciphers-policy: tls-1-2 + spec: + tls: + - secretName: ingress-test-secret + - hosts: + - example.top # Domain name specified when a certificate is issued + secretName: sni-test-secret-1 + - hosts: + - example.com # Domain name specified when a certificate is issued + secretName: sni-test-secret-2 + rules: + - host: example.com + http: + paths: + - path: '/' + backend: + serviceName: # Replace it with the name of your target Service. + servicePort: 80 + property: + ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH + +**For clusters of v1.23 or later:** + +.. code-block:: + + apiVersion: networking.k8s.io/v1 + kind: Ingress + metadata: + name: ingress-test + annotations: + kubernetes.io/elb.class: performance + kubernetes.io/elb.port: '443' + kubernetes.io/elb.autocreate: + '{ + "type": "public", + "bandwidth_name": "cce-bandwidth-******", + "bandwidth_chargemode": "bandwidth", + "bandwidth_size": 5, + "bandwidth_sharetype": "PER", + "eip_type": "5_bgp", + "available_zone": [ + "eu-de-01" + ], + "elb_virsubnet_ids":["b4bf8152-6c36-4c3b-9f74-2229f8e640c9"], + "l7_flavor_name": "L7_flavor.elb.s1.small" + }' + kubernetes.io/elb.tls-ciphers-policy: tls-1-2 + spec: + tls: + - secretName: ingress-test-secret + - hosts: + - example.top # Domain name specified when a certificate is issued + secretName: sni-test-secret-1 + - hosts: + - example.com # Domain name specified when a certificate is issued + secretName: sni-test-secret-2 + rules: + - host: example.com + http: + paths: + - path: '/' + backend: + service: + name: # Replace it with the name of your target Service. + port: + number: 8080 # Replace 8080 with the port number of your target Service. + property: + ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH + pathType: ImplementationSpecific + ingressClassName: cce diff --git a/umn/source/network/ingresses/elb_ingresses/creating_an_elb_ingress_on_the_console.rst b/umn/source/network/ingresses/elb_ingresses/creating_an_elb_ingress_on_the_console.rst new file mode 100644 index 0000000..0a4505a --- /dev/null +++ b/umn/source/network/ingresses/elb_ingresses/creating_an_elb_ingress_on_the_console.rst @@ -0,0 +1,165 @@ +:original_name: cce_10_0251.html + +.. _cce_10_0251: + +Creating an ELB Ingress on the Console +====================================== + +Prerequisites +------------- + +- An ingress provides network access for backend workloads. Ensure that a workload is available in a cluster. If no workload is available, deploy a workload by referring to :ref:`Creating a Deployment `, :ref:`Creating a StatefulSet `, or :ref:`Creating a DaemonSet `. +- :ref:`Services Supported by Ingresses ` lists the Service types supported by ELB ingresses. + +Precautions +----------- + +- It is recommended that other resources not use the load balancer automatically created by an ingress. Otherwise, the load balancer will be occupied when the ingress is deleted, resulting in residual resources. +- After an ingress is created, upgrade and maintain the configuration of the selected load balancers on the CCE console. Do not modify the configuration on the ELB console. Otherwise, the ingress service may be abnormal. +- The URL registered in an ingress forwarding policy must be the same as the URL used to access the backend Service. Otherwise, a 404 error will be returned. +- In a cluster using the IPVS proxy mode, if the ingress and Service use the same ELB load balancer, the ingress cannot be accessed from the nodes and containers in the cluster because kube-proxy mounts the LoadBalancer Service address to the ipvs-0 bridge. This bridge intercepts the traffic of the load balancer connected to the ingress. You are advised to use different ELB load balancers for the ingress and Service. +- Dedicated load balancers must be the application type (HTTP/HTTPS) supporting private networks (with a private IP). +- If multiple ingresses are used to connect to the same ELB port in the same cluster, the listener configuration items (such as the certificate associated with the listener and the HTTP2 attribute of the listener) are subject to the configuration of the first ingress. + +Adding an ELB Ingress +--------------------- + +This section uses an Nginx workload as an example to describe how to add an ELB ingress. + +#. Log in to the CCE console and click the cluster name to access the cluster console. + +#. Choose **Networking** in the navigation pane, click the **Ingresses** tab, and click **Create Ingress** in the upper right corner. + +#. Configure ingress parameters. + + - **Name**: specifies a name of an ingress, for example, **ingress-demo**. + + - **Load Balancer** + + Select the load balancer to interconnect. Only load balancers in the same VPC as the cluster are supported. If no load balancer is available, click **Create Load Balancer** to create one on the ELB console. + + Dedicated load balancers must support HTTP or HTTPS and the network type must support private networks. + + The CCE console supports automatic creation of load balancers. Select **Auto create** from the drop-down list box and configure the following parameters: + + - **Instance Name**: Enter a load balancer name. + - **Public Access**: If enabled, an EIP with 5 Mbit/s bandwidth will be created. + - **Subnet**, **AZ**, and **Specifications** (available only for dedicated load balancers): Configure the subnet, AZ, and specifications. Only HTTP- or HTTPS-compliant dedicated load balancers can be automatically created. + + - **Listener**: Ingress configures a listener for the load balancer, which listens to requests from the load balancer and distributes traffic. After the configuration is complete, a listener is created on the load balancer. The default listener name is *k8s___*, for example, *k8s_HTTP_80*. + + - **External Protocol**: **HTTP** and **HTTPS** are available. + + - **External Port**: Port number that is open to the ELB service address. The port number can be specified randomly. + + - **Server Certificate**: When an HTTPS listener is created for a load balancer, bind a certificate to the load balancer to support encrypted authentication for HTTPS data transmission. + + .. note:: + + If there is already an HTTPS ingress for the chosen port on the load balancer, the certificate of the new HTTPS ingress must be the same as the certificate of the existing ingress. This means that a listener has only one certificate. If two certificates, each with a different ingress, are added to the same listener of the same load balancer, only the certificate added earliest takes effect on the load balancer. + + - **SNI**: Server Name Indication (SNI) is an extended protocol of TLS. It allows multiple TLS-based access domain names to be provided for external systems using the same IP address and port. Different domain names can use different security certificates. After SNI is enabled, the client is allowed to submit the requested domain name when initiating a TLS handshake request. After receiving the TLS request, the load balancer searches for the certificate based on the domain name in the request. If the certificate corresponding to the domain name is found, the load balancer returns the certificate for authorization. Otherwise, the default certificate (server certificate) is returned for authorization. + + .. note:: + + - The **SNI** option is available only when **HTTPS** is selected. + + - This function is supported only for clusters of v1.15.11 and later. + - Specify the domain name for the SNI certificate. Only one domain name can be specified for each certificate. Wildcard-domain certificates are supported. + + - **Security Policy**: combinations of different TLS versions and supported cipher suites available to HTTPS listeners. + + For details about security policies, see ELB User Guide. + + .. note:: + + - **Security Policy** is available only when **HTTPS** is selected. + - This function is supported only for clusters of v1.17.9 and later. + + - **Forwarding Policy**: When the access address of a request matches the forwarding policy (a forwarding policy consists of a domain name and URL, for example, *10.XXX.XXX.XXX:80/helloworld*), the request is forwarded to the corresponding Service for processing. You can click |image1| to add multiple forwarding policies. + + - **Domain Name**: actual domain name. Ensure that the domain name has been registered and archived. Once a domain name rule is configured, you must use the domain name for access. + - URL Matching Rule + + - **Prefix match**: If the URL is set to **/healthz**, the URL that meets the prefix can be accessed. For example, **/healthz/v1** and **/healthz/v2**. + - **Exact match**: The URL can be accessed only when it is fully matched. For example, if the URL is set to **/healthz**, only /healthz can be accessed. + - **Regular expression**: The URL is matched based on the regular expression. For example, if the regular expression is **/[A-Za-z0-9_.-]+/test**, all URLs that comply with this rule can be accessed, for example, **/abcA9/test** and **/v1-Ab/test**. Two regular expression standards are supported: POSIX and Perl. + + - **URL**: access path to be registered, for example, **/healthz**. + + .. note:: + + The access path added here must exist in the backend application. Otherwise, the forwarding fails. + + For example, the default access URL of the Nginx application is **/usr/share/nginx/html**. When adding **/test** to the ingress forwarding policy, ensure that your Nginx application contains the same URL, that is, **/usr/share/nginx/html/test**, otherwise, 404 is returned. + + - **Destination Service**: Select an existing Service or create a Service. Services that do not meet search criteria are automatically filtered out. + - **Destination Service Port**: Select the access port of the destination Service. + - **Set ELB**: + + - .. _cce_10_0251__li8170555132211: + + **Algorithm**: Three algorithms are available: weighted round robin, weighted least connections algorithm, or source IP hash. + + .. note:: + + - **Weighted round robin**: Requests are forwarded to different servers based on their weights, which indicate server processing performance. Backend servers with higher weights receive proportionately more requests, whereas equal-weighted servers receive the same number of requests. This algorithm is often used for short connections, such as HTTP services. + - **Weighted least connections**: In addition to the weight assigned to each server, the number of connections processed by each backend server is also considered. Requests are forwarded to the server with the lowest connections-to-weight ratio. Building on **least connections**, the **weighted least connections** algorithm assigns a weight to each server based on their processing capability. This algorithm is often used for persistent connections, such as database connections. + - **Source IP hash**: The source IP address of each request is calculated using the hash algorithm to obtain a unique hash key, and all backend servers are numbered. The generated key allocates the client to a particular server. This enables requests from different clients to be distributed in load balancing mode and ensures that requests from the same client are forwarded to the same server. This algorithm applies to TCP connections without cookies. + + - **Sticky Session**: This function is disabled by default. Options are as follows: + + - **Load balancer cookie**: Enter the **Stickiness Duration** , which ranges from 1 to 1,440 minutes. + - **Application cookie**: This parameter is available only for shared load balancers. In addition, enter **Cookie Name**, which ranges from 1 to 64 characters. + + .. note:: + + When the :ref:`distribution policy ` uses the source IP hash, sticky session cannot be set. + + - **Health Check**: Set the health check configuration of the load balancer. If this function is enabled, the following configurations are supported: + + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+===========================================================================================================================================================================================================================================================+ + | Protocol | When the protocol of the target service port is set to TCP, TCP and HTTP are supported. When it is set to UDP, only UDP is supported. | + | | | + | | - **Check Path** (supported only by the HTTP health check protocol): specifies the health check URL. The check path must start with a slash (/) and contain 1 to 80 characters. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Port | By default, the service port (Node Port and container port of the Service) is used for health check. You can also specify another port for health check. After the port is specified, a service port named **cce-healthz** will be added for the Service. | + | | | + | | - **Node Port**: If a shared load balancer is used or no ENI instance is associated, the node port is used as the health check port. If this parameter is not specified, a random port is used. The value ranges from 30000 to 32767. | + | | - **Container Port**: When a dedicated load balancer is associated with an ENI instance, the container port is used for health check. The value ranges from 1 to 65535. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Check Period (s) | Specifies the maximum interval between health checks. The value ranges from 1 to 50. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Timeout (s) | Specifies the maximum timeout duration for each health check. The value ranges from 1 to 50. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Max. Retries | Specifies the maximum number of health check retries. The value ranges from 1 to 10. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + - **Operation**: Click **Delete** to delete the configuration. + + - **Annotation**: Ingresses provide some advanced CCE functions, which are implemented by annotations. When you use kubectl to create a container, annotations will be used. For details, see :ref:`Creating an Ingress - Automatically Creating a Load Balancer ` and :ref:`Creating an Ingress - Interconnecting with an Existing Load Balancer `. + +#. After the configuration is complete, click **OK**. After the ingress is created, it is displayed in the ingress list. + + On the ELB console, you can view the ELB automatically created through CCE. The default name is **cce-lb-ingress.UID**. Click the ELB name to access its details page. On the **Listeners** tab page, view the route settings of the ingress, including the URL, listener port, and backend server group port. + + .. important:: + + After the ingress is created, upgrade and maintain the selected load balancer on the CCE console. Do not maintain the load balancer on the ELB console. Otherwise, the ingress service may be abnormal. + +#. Access the /healthz interface of the workload, for example, workload **defaultbackend**. + + a. Obtain the access address of the **/healthz** interface of the workload. The access address consists of the load balancer IP address, external port, and mapping URL, for example, 10.**.**.**:80/healthz. + + b. Enter the URL of the /healthz interface, for example, http://10.**.**.**:80/healthz, in the address box of the browser to access the workload, as shown in :ref:`Figure 1 `. + + .. _cce_10_0251__fig17115192714367: + + .. figure:: /_static/images/en-us_image_0000001695737201.png + :alt: **Figure 1** Accessing the /healthz interface of defaultbackend + + **Figure 1** Accessing the /healthz interface of defaultbackend + +.. |image1| image:: /_static/images/en-us_image_0000001647417544.png diff --git a/umn/source/network/ingresses/elb_ingresses/elb_ingresses_routing_to_multiple_services.rst b/umn/source/network/ingresses/elb_ingresses/elb_ingresses_routing_to_multiple_services.rst new file mode 100644 index 0000000..4d9bd7f --- /dev/null +++ b/umn/source/network/ingresses/elb_ingresses/elb_ingresses_routing_to_multiple_services.rst @@ -0,0 +1,42 @@ +:original_name: cce_10_0689.html + +.. _cce_10_0689: + +ELB Ingresses Routing to Multiple Services +========================================== + +Ingresses can route to multiple backend Services based on different matching policies. The **spec** field in the YAML file is set as below. You can access **www.example.com/foo**, **www.example.com/bar**, and **foo.example.com/** to route to three different backend Services. + +.. important:: + + The URL registered in an ingress forwarding policy must be the same as the URL used to access the backend Service. Otherwise, a 404 error will be returned. + +.. code-block:: + + ... + spec: + rules: + - host: 'www.example.com' + http: + paths: + - path: '/foo' + backend: + serviceName: # Replace it with the name of your target Service. + servicePort: 80 + property: + ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH + - path: '/bar' + backend: + serviceName: # Replace it with the name of your target Service. + servicePort: 80 + property: + ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH + - host: 'foo.example.com' + http: + paths: + - path: '/' + backend: + serviceName: # Replace it with the name of your target Service. + servicePort: 80 + property: + ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH diff --git a/umn/source/network/ingresses/elb_ingresses/elb_ingresses_using_http_2.rst b/umn/source/network/ingresses/elb_ingresses/elb_ingresses_using_http_2.rst new file mode 100644 index 0000000..ae2db71 --- /dev/null +++ b/umn/source/network/ingresses/elb_ingresses/elb_ingresses_using_http_2.rst @@ -0,0 +1,88 @@ +:original_name: cce_10_0694.html + +.. _cce_10_0694: + +ELB Ingresses Using HTTP/2 +========================== + +Ingresses can use HTTP/2 to expose Services. Connections from the load balancer to your application use HTTP/1.X by default. If your application is capable of receiving HTTP2 requests, you can add the following field to the ingress annotation to enable the use of HTTP/2: + +.. code-block:: + + kubernetes.io/elb.http2-enable: 'true' + +The following shows the YAML file for associating with an existing load balancer: + +**For clusters of v1.21 or earlier:** + +.. code-block:: + + apiVersion: networking.k8s.io/v1beta1 + kind: Ingress + metadata: + name: ingress-test + annotations: + kubernetes.io/elb.id: # Replace it with the ID of your existing load balancer. + kubernetes.io/elb.ip: # Replace it with the IP of your existing load balancer. + kubernetes.io/elb.port: '443' + kubernetes.io/ingress.class: cce + kubernetes.io/elb.http2-enable: 'true' # Enable HTTP/2. + spec: + tls: + - secretName: ingress-test-secret + rules: + - host: '' + http: + paths: + - path: '/' + backend: + serviceName: # Replace it with the name of your target Service. + servicePort: 80 # Replace it with the port number of your target Service. + property: + ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH + +**For clusters of v1.23 or later:** + +.. code-block:: + + apiVersion: networking.k8s.io/v1 + kind: Ingress + metadata: + name: ingress-test + annotations: + kubernetes.io/elb.id: # Replace it with the ID of your existing load balancer. + kubernetes.io/elb.ip: # Replace it with the IP of your existing load balancer. + kubernetes.io/elb.port: '443' + kubernetes.io/elb.http2-enable: 'true' # Enable HTTP/2. + spec: + tls: + - secretName: ingress-test-secret + rules: + - host: '' + http: + paths: + - path: '/' + backend: + service: + name: # Replace it with the name of your target Service. + port: + number: 8080 # Replace 8080 with the port number of your target Service. + property: + ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH + pathType: ImplementationSpecific + ingressClassName: cce + +Table 6 HTTP/2 parameters + ++--------------------------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Parameter | Mandatory | Type | Description | ++================================+=================+=================+==================================================================================================================================================================================================================================================================================================================================+ +| kubernetes.io/elb.http2-enable | No | Bool | Whether HTTP/2 is enabled. Request forwarding using HTTP/2 improves the access performance between your application and the load balancer. However, the load balancer still uses HTTP 1.X to forward requests to the backend server. **This parameter is supported in clusters of v1.19.16-r0, v1.21.3-r0, and later versions.** | +| | | | | +| | | | Options: | +| | | | | +| | | | - **true**: enabled | +| | | | - **false**: disabled (default value) | +| | | | | +| | | | Note: **HTTP/2 can be enabled or disabled only when the listener uses HTTPS.** This parameter is invalid when the listener protocol is HTTP, and defaults to **false**. | ++--------------------------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/network/ingresses/elb_ingresses/index.rst b/umn/source/network/ingresses/elb_ingresses/index.rst new file mode 100644 index 0000000..ef00253 --- /dev/null +++ b/umn/source/network/ingresses/elb_ingresses/index.rst @@ -0,0 +1,28 @@ +:original_name: cce_10_0686.html + +.. _cce_10_0686: + +ELB Ingresses +============= + +- :ref:`Creating an ELB Ingress on the Console ` +- :ref:`Using kubectl to Create an ELB Ingress ` +- :ref:`Configuring ELB Ingresses Using Annotations ` +- :ref:`Configuring HTTPS Certificates for ELB Ingresses ` +- :ref:`Configuring the Server Name Indication (SNI) for ELB Ingresses ` +- :ref:`ELB Ingresses Routing to Multiple Services ` +- :ref:`ELB Ingresses Using HTTP/2 ` +- :ref:`Interconnecting ELB Ingresses with HTTPS Backend Services ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + creating_an_elb_ingress_on_the_console + using_kubectl_to_create_an_elb_ingress + configuring_elb_ingresses_using_annotations + configuring_https_certificates_for_elb_ingresses + configuring_the_server_name_indication_sni_for_elb_ingresses + elb_ingresses_routing_to_multiple_services + elb_ingresses_using_http_2 + interconnecting_elb_ingresses_with_https_backend_services diff --git a/umn/source/network/ingresses/elb_ingresses/interconnecting_elb_ingresses_with_https_backend_services.rst b/umn/source/network/ingresses/elb_ingresses/interconnecting_elb_ingresses_with_https_backend_services.rst new file mode 100644 index 0000000..2cf22ba --- /dev/null +++ b/umn/source/network/ingresses/elb_ingresses/interconnecting_elb_ingresses_with_https_backend_services.rst @@ -0,0 +1,55 @@ +:original_name: cce_10_0691.html + +.. _cce_10_0691: + +Interconnecting ELB Ingresses with HTTPS Backend Services +========================================================= + +Ingress can interconnect with backend services of different protocols. By default, the backend proxy channel of an ingress is an HTTP channel. To create an HTTPS channel, add the following configuration to the **annotations** field: + +.. code-block:: text + + kubernetes.io/elb.pool-protocol: https + +Constraints +----------- + +- This feature only applies to clusters of v1.23.8, v1.25.3, and later. +- Ingress can interconnect with HTTPS backend services only when dedicated load balancers are used. +- When interconnecting with HTTPS backend services, set **Client Protocol** of ingress to **HTTPS**. + +Interconnecting with HTTPS Backend Services +------------------------------------------- + +An ingress configuration example: + +.. code-block:: + + apiVersion: networking.k8s.io/v1 + kind: Ingress + metadata: + name: ingress-test + namespace: default + annotations: + kubernetes.io/elb.port: '443' + kubernetes.io/elb.id: # In this example, an existing dedicated load balancer is used. Replace its ID with the ID of your dedicated load balancer. + kubernetes.io/elb.class: performance + kubernetes.io/elb.pool-protocol: https # Interconnected HTTPS backend service + kubernetes.io/elb.tls-ciphers-policy: tls-1-2 + spec: + tls: + - secretName: ingress-test-secret + rules: + - host: '' + http: + paths: + - path: '/' + backend: + service: + name: # Replace it with the name of your target Service. + port: + number: 80 + property: + ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH + pathType: ImplementationSpecific + ingressClassName: cce diff --git a/umn/source/networking/ingresses/using_kubectl_to_create_an_elb_ingress.rst b/umn/source/network/ingresses/elb_ingresses/using_kubectl_to_create_an_elb_ingress.rst similarity index 58% rename from umn/source/networking/ingresses/using_kubectl_to_create_an_elb_ingress.rst rename to umn/source/network/ingresses/elb_ingresses/using_kubectl_to_create_an_elb_ingress.rst index 283691c..1677447 100644 --- a/umn/source/networking/ingresses/using_kubectl_to_create_an_elb_ingress.rst +++ b/umn/source/network/ingresses/elb_ingresses/using_kubectl_to_create_an_elb_ingress.rst @@ -17,7 +17,7 @@ Prerequisites ------------- - An ingress provides network access for backend workloads. Ensure that a workload is available in a cluster. If no workload is available, deploy a sample Nginx workload by referring to :ref:`Creating a Deployment `, :ref:`Creating a StatefulSet `, or :ref:`Creating a DaemonSet `. -- A NodePort Service has been configured for the workload. For details about how to configure the Service, see :ref:`NodePort `. +- :ref:`Services Supported by Ingresses ` lists the Service types supported by ELB ingresses. - Dedicated load balancers must be the application type (HTTP/HTTPS) supporting private networks (with a private IP). .. _cce_10_0252__section084115985013: @@ -25,7 +25,7 @@ Prerequisites Ingress Description of networking.k8s.io/v1 ------------------------------------------- -In CCE clusters of v1.23 or later, the ingress version is switched to networking.k8s.io/v1. +In CCE clusters of v1.23 or later, the ingress version is switched to **networking.k8s.io/v1**. Compared with v1beta1, v1 has the following differences in parameters: @@ -86,7 +86,7 @@ The following describes how to run the kubectl command to automatically create a service: name: # Replace it with the name of your target Service. port: - number: 8080 # Replace 8080 with the port number of your target Service. + number: # Replace it with the port number of your target Service. property: ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH pathType: ImplementationSpecific @@ -121,7 +121,7 @@ The following describes how to run the kubectl command to automatically create a - path: '/' backend: serviceName: # Replace it with the name of your target Service. - servicePort: 80 + servicePort: # Replace it with the port number of your target Service. property: ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH @@ -148,6 +148,7 @@ The following describes how to run the kubectl command to automatically create a "available_zone": [ "eu-de-01" ], + "elb_virsubnet_ids":["b4bf8152-6c36-4c3b-9f74-2229f8e640c9"], "l7_flavor_name": "L7_flavor.elb.s1.small" }' spec: @@ -160,7 +161,7 @@ The following describes how to run the kubectl command to automatically create a service: name: # Replace it with the name of your target Service. port: - number: 8080 # Replace 8080 with the port number of your target Service. + number: # Replace it with the port number of your target Service. property: ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH pathType: ImplementationSpecific @@ -190,6 +191,7 @@ The following describes how to run the kubectl command to automatically create a "available_zone": [ "eu-de-01" ], + "elb_virsubnet_ids":["b4bf8152-6c36-4c3b-9f74-2229f8e640c9"], "l7_flavor_name": "L7_flavor.elb.s1.small" }' spec: @@ -200,121 +202,159 @@ The following describes how to run the kubectl command to automatically create a - path: '/' backend: serviceName: # Replace it with the name of your target Service. - servicePort: 80 + servicePort: # Replace it with the port number of your target Service. property: ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH .. table:: **Table 1** Key parameters - +-------------------------------------------+-----------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Mandatory | Type | Description | - +===========================================+=========================================+=======================+=========================================================================================================================================================================================================================================+ - | kubernetes.io/elb.class | Yes | String | Select a proper load balancer type. | - | | | | | - | | | | The value can be: | - | | | | | - | | | | - **union**: shared load balancer | - | | | | - **performance**: dedicated load balancer.. | - | | | | | - | | | | Default: **union** | - +-------------------------------------------+-----------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | kubernetes.io/ingress.class | Yes | String | **cce**: The self-developed ELB ingress is used. | - | | | | | - | | (only for clusters of v1.21 or earlier) | | This parameter is mandatory when an ingress is created by calling the API. | - +-------------------------------------------+-----------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | ingressClassName | Yes | String | **cce**: The self-developed ELB ingress is used. | - | | | | | - | | (only for clusters of v1.23 or later) | | This parameter is mandatory when an ingress is created by calling the API. | - +-------------------------------------------+-----------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | kubernetes.io/elb.port | Yes | Integer | This parameter indicates the external port registered with the address of the LoadBalancer Service. | - | | | | | - | | | | Supported range: 1 to 65535 | - +-------------------------------------------+-----------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | kubernetes.io/elb.subnet-id | ``-`` | String | ID of the subnet where the cluster is located. The value can contain 1 to 100 characters. | - | | | | | - | | | | - Mandatory when a cluster of v1.11.7-r0 or earlier is to be automatically created. | - | | | | - Optional for clusters later than v1.11.7-r0. It is left blank by default. | - +-------------------------------------------+-----------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | kubernetes.io/elb.autocreate | Yes | elb.autocreate object | Whether to automatically create a load balancer associated with an ingress. For details about the field description, see :ref:`Table 2 `. | - | | | | | - | | | | **Example** | - | | | | | - | | | | - If a public network load balancer will be automatically created, set this parameter to the following value: | - | | | | | - | | | | {"type":"public","bandwidth_name":"cce-bandwidth-``******``","bandwidth_chargemode":"bandwidth","bandwidth_size":5,"bandwidth_sharetype":"PER","eip_type":"5_bgp","name":"james"} | - | | | | | - | | | | - If a private network load balancer will be automatically created, set this parameter to the following value: | - | | | | | - | | | | {"type":"inner","name":"A-location-d-test"} | - +-------------------------------------------+-----------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | host | No | String | Domain name for accessing the Service. By default, this parameter is left blank, and the domain name needs to be fully matched. | - +-------------------------------------------+-----------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | path | Yes | String | User-defined route path. All external access requests must match **host** and **path**. | - +-------------------------------------------+-----------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | serviceName | Yes | String | Name of the target Service bound to the ingress. | - +-------------------------------------------+-----------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | servicePort | Yes | Integer | Access port of the target Service. | - +-------------------------------------------+-----------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | ingress.beta.kubernetes.io/url-match-mode | No | String | Route matching policy. | - | | | | | - | | | | Default: **STARTS_WITH** (prefix match) | - | | | | | - | | | | Value range: | - | | | | | - | | | | - **EQUAL_TO**: exact match | - | | | | - **STARTS_WITH**: prefix match | - | | | | - **REGEX**: regular expression match | - +-------------------------------------------+-----------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | pathType | Yes | String | Path type. This field is supported only by clusters of v1.23 or later. | - | | | | | - | | | | - **ImplementationSpecific**: The matching method depends on Ingress Controller. The matching method defined by **ingress.beta.kubernetes.io/url-match-mode** is used in CCE. | - | | | | - **Exact**: exact matching of the URL, which is case-sensitive. | - | | | | - **Prefix**: matching based on the URL prefix separated by a slash (/). The match is case-sensitive, and elements in the path are matched one by one. A path element refers to a list of labels in the path separated by a slash (/). | - +-------------------------------------------+-----------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-------------------------------------------+-----------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +===========================================+=========================================+=======================+=======================================================================================================================================================================================================================================================================================+ + | kubernetes.io/elb.class | Yes | String | Select a proper load balancer type. | + | | | | | + | | | | - **union**: shared load balancer | + | | | | - **performance**: dedicated load balancer, which can be used only in clusters of v1.17 and later. | + +-------------------------------------------+-----------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | kubernetes.io/ingress.class | Yes | String | **cce**: The self-developed ELB ingress is used. | + | | | | | + | | (only for clusters of v1.21 or earlier) | | This parameter is mandatory when an ingress is created by calling the API. | + +-------------------------------------------+-----------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ingressClassName | Yes | String | **cce**: The self-developed ELB ingress is used. | + | | | | | + | | (only for clusters of v1.23 or later) | | This parameter is mandatory when an ingress is created by calling the API. | + +-------------------------------------------+-----------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | kubernetes.io/elb.port | Yes | Integer | This parameter indicates the external port registered with the address of the LoadBalancer Service. | + | | | | | + | | | | Supported range: 1 to 65535 | + | | | | | + | | | | .. note:: | + | | | | | + | | | | Some ports are high-risk ports and are blocked by default, for example, port 21. | + +-------------------------------------------+-----------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | kubernetes.io/elb.subnet-id | None | String | ID of the subnet where the cluster is located. The value can contain 1 to 100 characters. | + | | | | | + | | | | - Mandatory when a cluster of v1.11.7-r0 or earlier is to be automatically created. | + | | | | - Optional for clusters later than v1.11.7-r0. It is left blank by default. | + +-------------------------------------------+-----------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | kubernetes.io/elb.autocreate | Yes | elb.autocreate object | Whether to automatically create a load balancer associated with an ingress. For details about the field description, see :ref:`Table 2 `. | + | | | | | + | | | | **Example** | + | | | | | + | | | | - If a public network load balancer will be automatically created, set this parameter to the following value: | + | | | | | + | | | | {"type":"public","bandwidth_name":"cce-bandwidth-``******``","bandwidth_chargemode":"bandwidth","bandwidth_size":5,"bandwidth_sharetype":"PER","eip_type":"5_bgp","name":"james"} | + | | | | | + | | | | - If a private network load balancer will be automatically created, set this parameter to the following value: | + | | | | | + | | | | {"type":"inner","name":"A-location-d-test"} | + +-------------------------------------------+-----------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | host | No | String | Domain name for accessing the Service. By default, this parameter is left blank, and the domain name needs to be fully matched. Ensure that the domain name has been registered and archived. Once a domain name rule is configured, you must use the domain name for access. | + +-------------------------------------------+-----------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | path | Yes | String | User-defined route path. All external access requests must match **host** and **path**. | + | | | | | + | | | | .. note:: | + | | | | | + | | | | The access path added here must exist in the backend application. Otherwise, the forwarding fails. | + | | | | | + | | | | For example, the default access URL of the Nginx application is **/usr/share/nginx/html**. When adding **/test** to the ingress forwarding policy, ensure the access URL of your Nginx application contains **/usr/share/nginx/html/test**. Otherwise, error 404 will be returned. | + +-------------------------------------------+-----------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ingress.beta.kubernetes.io/url-match-mode | No | String | Route matching policy. | + | | | | | + | | | | Default: **STARTS_WITH** (prefix match) | + | | | | | + | | | | Options: | + | | | | | + | | | | - **EQUAL_TO**: exact match | + | | | | - **STARTS_WITH**: prefix match | + | | | | - **REGEX**: regular expression match | + +-------------------------------------------+-----------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | pathType | Yes | String | Path type. This field is supported only by clusters of v1.23 or later. | + | | | | | + | | | | - **ImplementationSpecific**: The matching method depends on Ingress Controller. The matching method defined by **ingress.beta.kubernetes.io/url-match-mode** is used in CCE. | + | | | | - **Exact**: exact matching of the URL, which is case-sensitive. | + | | | | - **Prefix**: prefix matching, which is case-sensitive. With this method, the URL path is separated into multiple elements by slashes (/) and the elements are matched one by one. If each element in the URL matches the path, the subpaths of the URL can be routed normally. | + | | | | | + | | | | .. note:: | + | | | | | + | | | | - During prefix matching, each element must be exactly matched. If the last element of the URL is the substring of the last element in the request path, no matching is performed. For example, **/foo/bar** matches **/foo/bar/baz** but does not match **/foo/barbaz**. | + | | | | - When elements are separated by slashes (/), if the URL or request path ends with a slash (/), the slash (/) at the end is ignored. For example, **/foo/bar** matches **/foo/bar/**. | + | | | | | + | | | | See `examples `__ of ingress path matching. | + +-------------------------------------------+-----------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. _cce_10_0252__table268711532210: - .. table:: **Table 2** Data structure of the elb.autocreate field + .. table:: **Table 2** Data structure of the **elb.autocreate** field - +----------------------+---------------------------------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Mandatory | Type | Description | - +======================+=======================================+=================+===============================================================================================================================================================================================+ - | type | No | String | Network type of the load balancer. | - | | | | | - | | | | - **public**: public network load balancer | - | | | | - **inner**: private network load balancer | - | | | | | - | | | | Default: **inner** | - +----------------------+---------------------------------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | bandwidth_name | Yes for public network load balancers | String | Bandwidth name. The default value is **cce-bandwidth-*****\***. | - | | | | | - | | | | Value range: a string of 1 to 64 characters, including lowercase letters, digits, and underscores (_). The value must start with a lowercase letter and end with a lowercase letter or digit. | - +----------------------+---------------------------------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | bandwidth_chargemode | No | String | Bandwidth mode. | - +----------------------+---------------------------------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | bandwidth_size | Yes for public network load balancers | Integer | Bandwidth size. The value ranges from 1 Mbit/s to 2000 Mbit/s by default. The actual range varies depending on the configuration in each region. | - | | | | | - | | | | - The minimum increment for bandwidth adjustment varies depending on the bandwidth range. The details are as follows: | - | | | | | - | | | | - The minimum increment is 1 Mbit/s if the allowed bandwidth ranges from 0 Mbit/s to 300 Mbit/s (with 300 Mbit/s included). | - | | | | - The minimum increment is 50 Mbit/s if the allowed bandwidth ranges from 300 Mbit/s to 1000 Mbit/s. | - | | | | - The minimum increment is 500 Mbit/s if the allowed bandwidth is greater than 1000 Mbit/s. | - +----------------------+---------------------------------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | bandwidth_sharetype | Yes for public network load balancers | String | Bandwidth type. | - | | | | | - | | | | **PER**: dedicated bandwidth. | - +----------------------+---------------------------------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | eip_type | Yes for public network load balancers | String | EIP type. | - | | | | | - | | | | - **5_bgp**: dynamic BGP | - | | | | - **5_sbgp**: static BGP | - +----------------------+---------------------------------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | name | No | String | Name of the automatically created load balancer. | - | | | | | - | | | | Value range: a string of 1 to 64 characters, including lowercase letters, digits, and underscores (_). The value must start with a lowercase letter and end with a lowercase letter or digit. | - | | | | | - | | | | Default: **cce-lb+ingress.UID** | - +----------------------+---------------------------------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +======================+=======================================+==================+==================================================================================================================================================================================================================================================================================================================================================================================+ + | name | No | String | Name of the automatically created load balancer. | + | | | | | + | | | | The value can contain 1 to 64 characters. Only letters, digits, underscores (_), hyphens (-), and periods (.) are allowed. | + | | | | | + | | | | Default: **cce-lb+service.UID** | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | type | No | String | Network type of the load balancer. | + | | | | | + | | | | - **public**: public network load balancer | + | | | | - **inner**: private network load balancer | + | | | | | + | | | | Default: **inner** | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | bandwidth_name | Yes for public network load balancers | String | Bandwidth name. The default value is **cce-bandwidth-*****\***. | + | | | | | + | | | | The value can contain 1 to 64 characters. Only letters, digits, underscores (_), hyphens (-), and periods (.) are allowed. | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | bandwidth_chargemode | No | String | Bandwidth mode. | + | | | | | + | | | | - **bandwidth**: billed by bandwidth | + | | | | - **traffic**: billed by traffic | + | | | | | + | | | | Default: **bandwidth** | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | bandwidth_size | Yes for public network load balancers | Integer | Bandwidth size. The default value is 1 to 2000 Mbit/s. Configure this parameter based on the bandwidth range allowed in your region. | + | | | | | + | | | | The minimum increment for bandwidth adjustment varies depending on the bandwidth range. | + | | | | | + | | | | - The minimum increment is 1 Mbit/s if the allowed bandwidth does not exceed 300 Mbit/s. | + | | | | - The minimum increment is 50 Mbit/s if the allowed bandwidth ranges from 300 Mbit/s to 1000 Mbit/s. | + | | | | - The minimum increment is 500 Mbit/s if the allowed bandwidth exceeds 1000 Mbit/s. | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | bandwidth_sharetype | Yes for public network load balancers | String | Bandwidth sharing mode. | + | | | | | + | | | | - **PER**: dedicated bandwidth | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | eip_type | Yes for public network load balancers | String | EIP type. | + | | | | | + | | | | - **5_bgp**: dynamic BGP | + | | | | - **5_sbgp**: static BGP | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | available_zone | Yes | Array of strings | AZ where the load balancer is located. | + | | | | | + | | | | This parameter is available only for dedicated load balancers. | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | l4_flavor_name | Yes | String | Flavor name of the layer-4 load balancer. | + | | | | | + | | | | This parameter is available only for dedicated load balancers. | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | l7_flavor_name | No | String | Flavor name of the layer-7 load balancer. | + | | | | | + | | | | This parameter is available only for dedicated load balancers. The value of this parameter must be the same as that of **l4_flavor_name**, that is, both are elastic specifications or fixed specifications. | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | elb_virsubnet_ids | No | Array of strings | Subnet where the backend server of the load balancer is located. If this parameter is left blank, the default cluster subnet is used. Load balancers occupy different number of subnet IP addresses based on their specifications. Therefore, you are not advised to use the subnet CIDR blocks of other resources (such as clusters and nodes) as the load balancer CIDR block. | + | | | | | + | | | | This parameter is available only for dedicated load balancers. | + | | | | | + | | | | Example: | + | | | | | + | | | | .. code-block:: | + | | | | | + | | | | "elb_virsubnet_ids": [ | + | | | | "14567f27-8ae4-42b8-ae47-9f847a4690dd" | + | | | | ] | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ #. Create an ingress. @@ -360,7 +400,8 @@ CCE allows you to connect to an existing load balancer when creating an ingress. name: ingress-test annotations: kubernetes.io/elb.id: # Replace it with the ID of your existing load balancer. - kubernetes.io/elb.ip: # Replace it with your existing load balancer IP. + kubernetes.io/elb.ip: # Replace it with the IP of your existing load balancer. + kubernetes.io/elb.class: performance # Load balancer type kubernetes.io/elb.port: '80' spec: rules: @@ -372,7 +413,7 @@ CCE allows you to connect to an existing load balancer when creating an ingress. service: name: # Replace it with the name of your target Service. port: - number: 8080 # Replace 8080 with your target service port number. + number: 8080 # Replace 8080 with the port number of your target Service. property: ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH pathType: ImplementationSpecific @@ -388,7 +429,8 @@ CCE allows you to connect to an existing load balancer when creating an ingress. name: ingress-test annotations: kubernetes.io/elb.id: # Replace it with the ID of your existing load balancer. - kubernetes.io/elb.ip: # Replace it with your existing load balancer IP. + kubernetes.io/elb.ip: # Replace it with the IP of your existing load balancer. + kubernetes.io/elb.class: performance # Load balancer type kubernetes.io/elb.port: '80' kubernetes.io/ingress.class: cce spec: @@ -405,495 +447,25 @@ CCE allows you to connect to an existing load balancer when creating an ingress. .. table:: **Table 3** Key parameters - +----------------------+-----------------+-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Mandatory | Type | Description | - +======================+=================+=================+=========================================================================================================================================================================================================+ - | kubernetes.io/elb.id | Yes | String | This parameter indicates the ID of a load balancer. The value can contain 1 to 100 characters. | - | | | | | - | | | | **How to obtain**: | - | | | | | - | | | | On the management console, click **Service List**, and choose **Networking** > **Elastic Load Balance**. Click the name of the target load balancer. On the **Summary** tab page, find and copy the ID. | - +----------------------+-----------------+-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | kubernetes.io/elb.ip | Yes | String | This parameter indicates the service address of a load balancer. The value can be the public IP address of a public network load balancer or the private IP address of a private network load balancer. | - +----------------------+-----------------+-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -Configuring HTTPS Certificates ------------------------------- - -Ingress supports TLS certificate configuration and secures your Services with HTTPS. - -.. note:: - - If HTTPS is enabled for the same port of the same load balancer of multiple ingresses, you must select the same certificate. - -#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. - -#. Run the following command to create a YAML file named **ingress-test-secret.yaml** (the file name can be customized): - - **vi ingress-test-secret.yaml** - - **The YAML file is configured as follows:** - - .. code-block:: - - apiVersion: v1 - data: - tls.crt: LS0******tLS0tCg== - tls.key: LS0tL******0tLS0K - kind: Secret - metadata: - annotations: - description: test for ingressTLS secrets - name: ingress-test-secret - namespace: default - type: IngressTLS - - .. note:: - - In the preceding information, **tls.crt** and **tls.key** are only examples. Replace them with the actual files. The values of **tls.crt** and **tls.key** are Base64-encoded. - -#. Create a secret. - - **kubectl create -f ingress-test-secret.yaml** - - If information similar to the following is displayed, the secret is being created: - - .. code-block:: - - secret/ingress-test-secret created - - View the created secrets. - - **kubectl get secrets** - - If information similar to the following is displayed, the secret has been created successfully: - - .. code-block:: - - NAME TYPE DATA AGE - ingress-test-secret IngressTLS 2 13s - -#. Create a YAML file named **ingress-test.yaml**. The file name can be customized. - - **vi ingress-test.yaml** - - .. note:: - - Default security policy (kubernetes.io/elb.tls-ciphers-policy) is supported only in clusters of v1.17.17 or later. - - **The following uses the automatically created load balancer as an example. The YAML file is configured as follows:** - - **For clusters of v1.21 or earlier:** - - .. code-block:: - - apiVersion: networking.k8s.io/v1beta1 - kind: Ingress - metadata: - name: ingress-test - annotations: - kubernetes.io/elb.class: union - kubernetes.io/ingress.class: cce - kubernetes.io/elb.port: '443' - kubernetes.io/elb.autocreate: - '{ - "type":"public", - "bandwidth_name":"cce-bandwidth-15511633796**", - "bandwidth_chargemode":"bandwidth", - "bandwidth_size":5, - "bandwidth_sharetype":"PER", - "eip_type":"5_bgp" - }' - kubernetes.io/elb.tls-ciphers-policy: tls-1-2 - spec: - tls: - - secretName: ingress-test-secret - rules: - - host: '' - http: - paths: - - path: '/' - backend: - serviceName: # Replace it with the name of your target Service. - servicePort: 80 - property: - ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH - - **For clusters of v1.23 or later:** - - .. code-block:: - - apiVersion: networking.k8s.io/v1 - kind: Ingress - metadata: - name: ingress-test - annotations: - kubernetes.io/elb.class: union - kubernetes.io/elb.port: '443' - kubernetes.io/elb.autocreate: - '{ - "type":"public", - "bandwidth_name":"cce-bandwidth-15511633796**", - "bandwidth_chargemode":"bandwidth", - "bandwidth_size":5, - "bandwidth_sharetype":"PER", - "eip_type":"5_bgp" - }' - kubernetes.io/elb.tls-ciphers-policy: tls-1-2 - spec: - tls: - - secretName: ingress-test-secret - rules: - - host: '' - http: - paths: - - path: '/' - backend: - service: - name: # Replace it with the name of your target Service. - port: - number: 8080 # Replace 8080 with the port number of your target Service. - property: - ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH - pathType: ImplementationSpecific - ingressClassName: cce - - .. table:: **Table 4** Key parameters - - +--------------------------------------+-----------------+------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Mandatory | Type | Description | - +======================================+=================+==================+============================================================================================================================================================================================================================================+ - | kubernetes.io/elb.tls-ciphers-policy | No | String | The default value is **tls-1-2**, which is the default security policy used by the listener and takes effect only when the HTTPS protocol is used. | - | | | | | - | | | | Value range: | - | | | | | - | | | | - tls-1-0 | - | | | | - tls-1-1 | - | | | | - tls-1-2 | - | | | | - tls-1-2-strict | - | | | | | - | | | | For details of cipher suites for each security policy, see :ref:`Table 5 `. | - +--------------------------------------+-----------------+------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | tls | No | Array of strings | This parameter is mandatory if HTTPS is used. Multiple independent domain names and certificates can be added to this parameter. For details, see :ref:`Configuring the Server Name Indication (SNI) `. | - +--------------------------------------+-----------------+------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | secretName | No | String | This parameter is mandatory if HTTPS is used. Set this parameter to the name of the created secret. | - +--------------------------------------+-----------------+------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - .. _cce_10_0252__table9419191416246: - - .. table:: **Table 5** tls_ciphers_policy parameter description - - +-----------------------+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Security Policy | TLS Version | Cipher Suite | - +=======================+=======================+=======================================================================================================================================================================================================================================================================================================================================================================================================+ - | tls-1-0 | TLS 1.2 | ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-SHA:AES256-SHA | - | | | | - | | TLS 1.1 | | - | | | | - | | TLS 1.0 | | - +-----------------------+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | tls-1-1 | TLS 1.2 | | - | | | | - | | TLS 1.1 | | - +-----------------------+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | tls-1-2 | TLS 1.2 | | - +-----------------------+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | tls-1-2-strict | TLS 1.2 | ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-SHA256:AES256-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384 | - +-----------------------+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -#. Create an ingress. - - **kubectl create -f ingress-test.yaml** - - If information similar to the following is displayed, the ingress has been created. - - .. code-block:: - - ingress/ingress-test created - - View the created ingress. - - **kubectl get ingress** - - If information similar to the following is displayed, the ingress has been created successfully and the workload is accessible. - - .. code-block:: - - NAME HOSTS ADDRESS PORTS AGE - ingress-test * 121.**.**.** 80 10s - -#. Enter **https://121.**.**.*\*:443** in the address box of the browser to access the workload (for example, :ref:`Nginx workload `). - - **121.**.**.*\*** indicates the IP address of the unified load balancer. - -Using HTTP/2 ------------- - -Ingresses can use HTTP/2 to expose services. Connections from the load balancer proxy to your applications use HTTP/1.X by default. If your application is capable of receiving HTTP/2 requests, you can add the following field to the ingress annotation to enable the use of HTTP/2: - -\`kubernetes.io/elb.http2-enable: 'true'\` - -The following shows the YAML file for associating with an existing load balancer: - -**For clusters of v1.21 or earlier:** - -.. code-block:: - - apiVersion: networking.k8s.io/v1beta1 - kind: Ingress - metadata: - name: ingress-test - annotations: - kubernetes.io/elb.id: # Replace it with the ID of your existing load balancer. - kubernetes.io/elb.ip: # Replace it with the IP of your existing load balancer. - kubernetes.io/elb.port: '443' - kubernetes.io/ingress.class: cce - kubernetes.io/elb.http2-enable: 'true' # Enable HTTP/2. - spec: - tls: - - secretName: ingress-test-secret - rules: - - host: '' - http: - paths: - - path: '/' - backend: - serviceName: # Replace it with the name of your target Service. - servicePort: 80 # Replace it with the port number of your target Service. - property: - ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH - -**For clusters of v1.23 or later:** - -.. code-block:: - - apiVersion: networking.k8s.io/v1 - kind: Ingress - metadata: - name: ingress-test - annotations: - kubernetes.io/elb.id: # Replace it with the ID of your existing load balancer. - kubernetes.io/elb.ip: # Replace it with the IP of your existing load balancer. - kubernetes.io/elb.port: '443' - kubernetes.io/elb.http2-enable: 'true' # Enable HTTP/2. - spec: - tls: - - secretName: ingress-test-secret - rules: - - host: '' - http: - paths: - - path: '/' - backend: - service: - name: # Replace it with the name of your target Service. - port: - number: 8080 # Replace 8080 with the port number of your target Service. - property: - ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH - pathType: ImplementationSpecific - ingressClassName: cce - -Table 6 HTTP/2 parameters - -+--------------------------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Parameter | Mandatory | Type | Description | -+================================+=================+=================+==================================================================================================================================================================================================================================================================================================================================+ -| kubernetes.io/elb.http2-enable | No | Bool | Whether HTTP/2 is enabled. Request forwarding using HTTP/2 improves the access performance between your application and the load balancer. However, the load balancer still uses HTTP 1.X to forward requests to the backend server. **This parameter is supported in clusters of v1.19.16-r0, v1.21.3-r0, and later versions.** | -| | | | | -| | | | Value range: | -| | | | | -| | | | - **true**: enabled | -| | | | - **false**: disabled (default value) | -| | | | | -| | | | Note: **HTTP/2 can be enabled or disabled only when the listener uses HTTPS.** This parameter is invalid and defaults to **false** when the listener protocol is HTTP. | -+--------------------------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -.. _cce_10_0252__section0555194782414: - -Configuring the Server Name Indication (SNI) --------------------------------------------- - -SNI allows multiple TLS-based access domain names to be provided for external systems using the same IP address and port number. Different domain names can use different security certificates. - -.. note:: - - - Only one domain name can be specified for each SNI certificate. Wildcard-domain certificates are supported. - - Security policy (kubernetes.io/elb.tls-ciphers-policy) is supported only in clusters of v1.17.11 or later. - -You can enable SNI when the preceding conditions are met. The following uses the automatic creation of a load balancer as an example. In this example, **sni-test-secret-1** and **sni-test-secret-2** are SNI certificates. The domain names specified by the certificates must be the same as those in the certificates. - -**For clusters of v1.21 or earlier:** - -.. code-block:: - - apiVersion: networking.k8s.io/v1beta1 - kind: Ingress - metadata: - name: ingress-test - annotations: - kubernetes.io/elb.class: union - kubernetes.io/ingress.class: cce - kubernetes.io/elb.port: '443' - kubernetes.io/elb.autocreate: - '{ - "type":"public", - "bandwidth_name":"cce-bandwidth-******", - "bandwidth_chargemode":"bandwidth", - "bandwidth_size":5, - "bandwidth_sharetype":"PER", - "eip_type":"5_bgp" - }' - kubernetes.io/elb.tls-ciphers-policy: tls-1-2 - spec: - tls: - - secretName: ingress-test-secret - - hosts: - - example.top # Domain name specified a certificate is issued - secretName: sni-test-secret-1 - - hosts: - - example.com # Domain name specified a certificate is issued - secretName: sni-test-secret-2 - rules: - - host: '' - http: - paths: - - path: '/' - backend: - serviceName: # Replace it with the name of your target Service. - servicePort: 80 - property: - ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH - -**For clusters of v1.23 or later:** - -.. code-block:: - - apiVersion: networking.k8s.io/v1 - kind: Ingress - metadata: - name: ingress-test - annotations: - kubernetes.io/elb.class: union - kubernetes.io/elb.port: '443' - kubernetes.io/elb.autocreate: - '{ - "type":"public", - "bandwidth_name":"cce-bandwidth-******", - "bandwidth_chargemode":"bandwidth", - "bandwidth_size":5, - "bandwidth_sharetype":"PER", - "eip_type":"5_bgp" - }' - kubernetes.io/elb.tls-ciphers-policy: tls-1-2 - spec: - tls: - - secretName: ingress-test-secret - - hosts: - - example.top # Domain name specified a certificate is issued - secretName: sni-test-secret-1 - - hosts: - - example.com # Domain name specified a certificate is issued - secretName: sni-test-secret-2 - rules: - - host: '' - http: - paths: - - path: '/' - backend: - service: - name: # Replace it with the name of your target Service. - port: - number: 8080 # Replace 8080 with the port number of your target Service. - property: - ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH - pathType: ImplementationSpecific - ingressClassName: cce - -Accessing Multiple Services ---------------------------- - -Ingresses can route requests to multiple backend Services based on different matching policies. The **spec** field in the YAML file is set as below. You can access **www.example.com/foo**, **www.example.com/bar**, and **foo.example.com/** to route to three different backend Services. - -.. important:: - - The URL registered in an ingress forwarding policy must be the same as the URL exposed by the backend Service. Otherwise, a 404 error will be returned. - -.. code-block:: - - spec: - rules: - - host: 'www.example.com' - http: - paths: - - path: '/foo' - backend: - serviceName: # Replace it with the name of your target Service. - servicePort: 80 - property: - ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH - - path: '/bar' - backend: - serviceName: # Replace it with the name of your target Service. - servicePort: 80 - property: - ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH - - host: 'foo.example.com' - http: - paths: - - path: '/' - backend: - serviceName: # Replace it with the name of your target Service. - servicePort: 80 - property: - ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH - -Interconnecting with HTTPS Backend Services -------------------------------------------- - -Ingress can interconnect with backend services of different protocols. By default, the backend proxy channel of an ingress is an HTTP channel. To create an HTTPS channel, add the following configuration to the **annotations** field: - -.. code-block:: text - - kubernetes.io/elb.pool-protocol: https - -.. important:: - - - This feature only applies to clusters of v1.23.8, v1.25.3, and later. - - Ingress can interconnect with HTTPS backend services only when dedicated load balancers are used. - - When interconnecting with HTTPS backend services, set **Client Protocol** of ingress to **HTTPS**. - -An ingress configuration example is as follows: - -.. code-block:: - - apiVersion: networking.k8s.io/v1 - kind: Ingress - metadata: - name: ingress-test - namespace: default - annotations: - kubernetes.io/elb.port: '443' - kubernetes.io/elb.id: # In this example, an existing dedicated load balancer is used. Replace its ID with the ID of your dedicated load balancer. - kubernetes.io/elb.class: performance - kubernetes.io/elb.pool-protocol: https # Interconnected HTTPS backend service - kubernetes.io/elb.tls-ciphers-policy: tls-1-2 - spec: - tls: - - secretName: ingress-test-secret - rules: - - host: '' - http: - paths: - - path: '/' - backend: - service: - name: # Replace it with the name of your target Service. - port: - number: 80 - property: - ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH - pathType: ImplementationSpecific - ingressClassName: cce - -.. |image1| image:: /_static/images/en-us_image_0000001569022977.png + +-------------------------+-----------------+-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +=========================+=================+=================+=========================================================================================================================================================================================================+ + | kubernetes.io/elb.id | Yes | String | ID of a load balancer. The value can contain 1 to 100 characters. | + | | | | | + | | | | **How to obtain**: | + | | | | | + | | | | On the management console, click **Service List**, and choose **Networking** > **Elastic Load Balance**. Click the name of the target load balancer. On the **Summary** tab page, find and copy the ID. | + +-------------------------+-----------------+-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | kubernetes.io/elb.ip | No | String | Service address of a load balancer. The value can be the public IP address of a public network load balancer or the private IP address of a private network load balancer. | + +-------------------------+-----------------+-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | kubernetes.io/elb.class | Yes | String | Load balancer type. | + | | | | | + | | | | - **union**: shared load balancer | + | | | | - **performance**: dedicated load balancer, which can be used only in clusters of v1.17 and later. | + | | | | | + | | | | .. note:: | + | | | | | + | | | | If an ELB Ingress accesses an existing dedicated load balancer, the dedicated load balancer must be of the application load balancing (HTTP/HTTPS) type. | + +-------------------------+-----------------+-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. |image1| image:: /_static/images/en-us_image_0000001695737505.png diff --git a/umn/source/network/ingresses/index.rst b/umn/source/network/ingresses/index.rst new file mode 100644 index 0000000..282c8c1 --- /dev/null +++ b/umn/source/network/ingresses/index.rst @@ -0,0 +1,16 @@ +:original_name: cce_10_0248.html + +.. _cce_10_0248: + +Ingresses +========= + +- :ref:`Overview ` +- :ref:`ELB Ingresses ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + overview + elb_ingresses/index diff --git a/umn/source/network/ingresses/overview.rst b/umn/source/network/ingresses/overview.rst new file mode 100644 index 0000000..fdbb2b2 --- /dev/null +++ b/umn/source/network/ingresses/overview.rst @@ -0,0 +1,66 @@ +:original_name: cce_10_0094.html + +.. _cce_10_0094: + +Overview +======== + +Why We Need Ingresses +--------------------- + +A Service is generally used to forward access requests based on TCP and UDP and provide layer-4 load balancing for clusters. However, in actual scenarios, if there is a large number of HTTP/HTTPS access requests on the application layer, the Service cannot meet the forwarding requirements. Therefore, the Kubernetes cluster provides an HTTP-based access mode, ingress. + +An ingress is an independent resource in the Kubernetes cluster and defines rules for forwarding external access traffic. As shown in :ref:`Figure 1 `, you can customize forwarding rules based on domain names and URLs to implement fine-grained distribution of access traffic. + +.. _cce_10_0094__fig18155819416: + +.. figure:: /_static/images/en-us_image_0000001695896861.png + :alt: **Figure 1** Ingress diagram + + **Figure 1** Ingress diagram + +The following describes the ingress-related definitions: + +- Ingress object: a set of access rules that forward requests to specified Services based on domain names or URLs. It can be added, deleted, modified, and queried by calling APIs. +- Ingress Controller: an executor for request forwarding. It monitors the changes of resource objects such as ingresses, Services, endpoints, secrets (mainly TLS certificates and keys), nodes, and ConfigMaps in real time, parses rules defined by ingresses, and forwards requests to the corresponding backend Services. + +Working Principle of ELB Ingress Controller +------------------------------------------- + +ELB Ingress Controller developed by CCE implements layer-7 network access for the internet and intranet (in the same VPC) based on ELB and distributes access traffic to the corresponding Services using different URLs. + +ELB Ingress Controller is deployed on the master node and bound to the load balancer in the VPC where the cluster resides. Different domain names, ports, and forwarding policies can be configured for the same load balancer (with the same IP address). :ref:`Figure 2 ` shows the working principle of ELB Ingress Controller. + +#. A user creates an ingress object and configures a traffic access rule in the ingress, including the load balancer, URL, SSL, and backend service port. +#. When Ingress Controller detects that the ingress object changes, it reconfigures the listener and backend server route on the ELB side according to the traffic access rule. +#. When a user accesses a workload, the traffic is forwarded to the corresponding backend service port based on the forwarding policy configured on ELB, and then forwarded to each associated workload through the Service. + +.. _cce_10_0094__fig122542486129: + +.. figure:: /_static/images/en-us_image_0000001647577184.png + :alt: **Figure 2** Working principle of ELB Ingress Controller + + **Figure 2** Working principle of ELB Ingress Controller + +.. _cce_10_0094__section3565202819276: + +Services Supported by Ingresses +------------------------------- + +:ref:`Table 1 ` lists the services supported by ELB Ingresses. + +.. _cce_10_0094__table143264518141: + +.. table:: **Table 1** Services supported by ELB Ingresses + + +-------------------+-------------------------+---------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ + | Cluster Type | ELB Type | ClusterIP | NodePort | + +===================+=========================+=======================================================================================================================================+============================================================================================================================================+ + | CCE cluster | Shared load balancer | Not supported | Supported | + +-------------------+-------------------------+---------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ + | | Dedicated load balancer | Not supported (Failed to access the dedicated load balancers because no ENI is bound to the associated pod of the ClusterIP Service.) | Supported | + +-------------------+-------------------------+---------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ + | CCE Turbo cluster | Shared load balancer | Not supported | Supported | + +-------------------+-------------------------+---------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ + | | Dedicated load balancer | Supported | Not supported (Failed to access the dedicated load balancers because an ENI has been bound to the associated pod of the NodePort Service.) | + +-------------------+-------------------------+---------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/networking/overview.rst b/umn/source/network/overview.rst similarity index 65% rename from umn/source/networking/overview.rst rename to umn/source/network/overview.rst index 64d7c3d..3411b7d 100644 --- a/umn/source/networking/overview.rst +++ b/umn/source/network/overview.rst @@ -21,7 +21,7 @@ All nodes in the cluster are located in a VPC and use the VPC network. The conta - **Node Network** - A node network assigns IP addresses to hosts (nodes in the figure above) in a cluster. You need to select a VPC subnet as the node network of the CCE cluster. The number of available IP addresses in a subnet determines the maximum number of nodes (including master nodes and worker nodes) that can be created in a cluster. This quantity is also affected by the container network. For details, see the container network model. + A node network assigns IP addresses to hosts (nodes in the figure above) in a cluster. Select a VPC subnet as the node network of the CCE cluster. The number of available IP addresses in a subnet determines the maximum number of nodes (including master nodes and worker nodes) that can be created in a cluster. This quantity is also affected by the container network. For details, see the container network model. - **Container Network** @@ -30,24 +30,24 @@ All nodes in the cluster are located in a VPC and use the VPC network. The conta Currently, CCE supports the following container network models: - Container tunnel network: The container tunnel network is constructed on but independent of the node network through tunnel encapsulation. This network model uses VXLAN to encapsulate Ethernet packets into UDP packets and transmits them in tunnels. Open vSwitch serves as the backend virtual switch. - - VPC network: The VPC network uses VPC routing to integrate with the underlying network. This network model is applicable to performance-intensive scenarios. The maximum number of nodes allowed in a cluster depends on the route quota in a VPC network. Each node is assigned a CIDR block of a fixed size. This networking model is free from tunnel encapsulation overhead and outperforms the container tunnel network model. In addition, as VPC routing includes routes to node IP addresses and the container CIDR block, container pods in a cluster can be directly accessed from outside the cluster. + - VPC network: The VPC network uses VPC routing to integrate with the underlying network. This network model applies to performance-intensive scenarios. The maximum number of nodes allowed in a cluster depends on the route quota in a VPC network. Each node is assigned a CIDR block of a fixed size. This networking model is free from tunnel encapsulation overhead and outperforms the container tunnel network model. In addition, as VPC routing includes routes to node IP addresses and the container CIDR block, container pods in a cluster can be directly accessed from outside the cluster. - Developed by CCE, Cloud Native Network 2.0 deeply integrates Elastic Network Interfaces (ENIs) and Sub Network Interfaces (sub-ENIs) of VPC. Container IP addresses are allocated from the VPC CIDR block. ELB passthrough networking is supported to direct access requests to containers. Security groups and elastic IPs (EIPs) are bound to deliver high performance. The performance, networking scale, and application scenarios of a container network vary according to the container network model. For details about the functions and features of different container network models, see :ref:`Overview `. - **Service Network** - Service is also a Kubernetes object. Each Service has a fixed IP address. When creating a cluster on CCE, you can specify the Service CIDR block. The Service CIDR block cannot overlap with the node or container CIDR block. The Service CIDR block can be used only within a cluster. + Service is also a Kubernetes object. Each Service has a static IP address. When creating a cluster on CCE, you can specify the Service CIDR block. The Service CIDR block cannot overlap with the node or container CIDR block. The Service CIDR block can be used only within a cluster. .. _cce_10_0010__section1860619221134: Service ------- -A Service is used for pod access. With a fixed IP address, a Service forwards access traffic to pods and performs load balancing for these pods. +A Service is used for pod access. With a static IP address, a Service forwards access traffic to pods and performs load balancing for these pods. -.. figure:: /_static/images/en-us_image_0000001517743432.png +.. figure:: /_static/images/en-us_image_0000001695896373.png :alt: **Figure 1** Accessing pods through a Service **Figure 1** Accessing pods through a Service @@ -58,7 +58,7 @@ You can configure the following types of Services: - NodePort: used for access from outside a cluster. A NodePort Service is accessed through the port on the node. - LoadBalancer: used for access from outside a cluster. It is an extension of NodePort, to which a load balancer routes, and external systems only need to access the load balancer. -For details about the Service, see :ref:`Service Overview `. +For details about the Service, see :ref:`Overview `. .. _cce_10_0010__section1248852094313: @@ -68,12 +68,12 @@ Ingress Services forward requests using layer-4 TCP and UDP protocols. Ingresses forward requests using layer-7 HTTP and HTTPS protocols. Domain names and paths can be used to achieve finer granularities. -.. figure:: /_static/images/en-us_image_0000001517903016.png +.. figure:: /_static/images/en-us_image_0000001647417440.png :alt: **Figure 2** Ingress-Service **Figure 2** Ingress-Service -For details about the ingress, see :ref:`Ingress Overview `. +For details about the ingress, see :ref:`Overview `. .. _cce_10_0010__section1286493159: @@ -85,18 +85,18 @@ Workload access scenarios can be categorized as follows: - Intra-cluster access: A ClusterIP Service is used for workloads in the same cluster to access each other. - Access from outside a cluster: A Service (NodePort or LoadBalancer type) or an ingress is recommended for a workload outside a cluster to access workloads in the cluster. - - Access through a public network requires an EIP to be bound the node or load balancer. - - Access through an intranet requires the workload to be accessed through the internal IP address of the node or load balancer. If workloads are located in different VPCs, a peering connection is required to enable communication between different VPCs. + - Access through the public network: An EIP should be bound to the node or load balancer. + - Access through the private network: The workload can be accessed through the internal IP address of the node or load balancer. If workloads are located in different VPCs, a peering connection is required to enable communication between different VPCs. -- The workload accesses the external network. +- The workload can access the external network as follows: - Accessing an intranet: The workload accesses the intranet address, but the implementation method varies depending on container network models. Ensure that the peer security group allows the access requests from the container CIDR block. - - Accessing a public network: You need to assign an EIP to the node where the workload runs (when the VPC network or tunnel network model is used), bind an EIP to the pod IP address (when the Cloud Native Network 2.0 model is used), or configure SNAT rules through the NAT gateway. For details, see :ref:`Accessing Public Networks from a Container `. + - Accessing a public network: Assign an EIP to the node where the workload runs (when the VPC network or tunnel network model is used), bind an EIP to the pod IP address (when the Cloud Native Network 2.0 model is used), or configure SNAT rules through the NAT gateway. For details, see :ref:`Accessing Public Networks from a Container `. -.. figure:: /_static/images/en-us_image_0000001568822741.png +.. figure:: /_static/images/en-us_image_0000001647576708.png :alt: **Figure 3** Network access diagram **Figure 3** Network access diagram -.. |image1| image:: /_static/images/en-us_image_0000001518222536.png +.. |image1| image:: /_static/images/en-us_image_0000001647576700.png diff --git a/umn/source/networking/services/intra-cluster_access_clusterip.rst b/umn/source/network/service/clusterip.rst similarity index 96% rename from umn/source/networking/services/intra-cluster_access_clusterip.rst rename to umn/source/network/service/clusterip.rst index 264409b..0a344ff 100644 --- a/umn/source/networking/services/intra-cluster_access_clusterip.rst +++ b/umn/source/network/service/clusterip.rst @@ -2,8 +2,8 @@ .. _cce_10_0011: -Intra-Cluster Access (ClusterIP) -================================ +ClusterIP +========= Scenario -------- @@ -16,7 +16,7 @@ The cluster-internal domain name format is **.\ *`. diff --git a/umn/source/networking/services/headless_service.rst b/umn/source/network/service/headless_service.rst similarity index 100% rename from umn/source/networking/services/headless_service.rst rename to umn/source/network/service/headless_service.rst diff --git a/umn/source/network/service/index.rst b/umn/source/network/service/index.rst new file mode 100644 index 0000000..2f41d05 --- /dev/null +++ b/umn/source/network/service/index.rst @@ -0,0 +1,22 @@ +:original_name: cce_10_0247.html + +.. _cce_10_0247: + +Service +======= + +- :ref:`Overview ` +- :ref:`ClusterIP ` +- :ref:`NodePort ` +- :ref:`LoadBalancer ` +- :ref:`Headless Service ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + overview + clusterip + nodeport + loadbalancer/index + headless_service diff --git a/umn/source/networking/services/configuring_health_check_for_multiple_ports.rst b/umn/source/network/service/loadbalancer/configuring_health_check_for_multiple_ports.rst similarity index 93% rename from umn/source/networking/services/configuring_health_check_for_multiple_ports.rst rename to umn/source/network/service/loadbalancer/configuring_health_check_for_multiple_ports.rst index 43bfd16..99a87cc 100644 --- a/umn/source/networking/services/configuring_health_check_for_multiple_ports.rst +++ b/umn/source/network/service/loadbalancer/configuring_health_check_for_multiple_ports.rst @@ -47,15 +47,15 @@ The following is an example of using the **kubernetes.io/elb.health-check-option "delay": "5", "timeout": "10", "max_retries": "3", - "target_service_port": "TCP:1", // (Mandatory) Port for health check specified by spec.ports. The value consists of the protocol and port number, for example, TCP:80. - "monitor_port": "22" // (Optional) Re-specified port for health check. If this parameter is not specified, the service port is used by default. Ensure that the port is in the listening state on the node where the pod is located. Otherwise, the health check result will be affected. + "target_service_port": "TCP:1", + "monitor_port": "22" }, { "protocol": "HTTP", "delay": "5", "timeout": "10", "max_retries": "3", - "path": "/", // Health check URL. This parameter needs to be configured when HTTP is used. + "path": "/", "target_service_port": "TCP:2", "monitor_port": "22" } @@ -110,9 +110,9 @@ The following is an example of using the **kubernetes.io/elb.health-check-option | | | | | | | | | Value options: TCP, UDP, or HTTP | +---------------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------+ - | path | No | String | Health check URL. This parameter needs to be configured when the protocol is HTTP. | + | path | No | String | Health check URL. This parameter needs to be configured when the protocol is **HTTP**. | | | | | | | | | | Default value: **/** | | | | | | - | | | | The value can contain 1 to 10000 characters. | + | | | | The value can contain 1 to 10,000 characters. | +---------------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/networking/services/loadbalancer.rst b/umn/source/network/service/loadbalancer/creating_a_loadbalancer_service.rst similarity index 77% rename from umn/source/networking/services/loadbalancer.rst rename to umn/source/network/service/loadbalancer/creating_a_loadbalancer_service.rst index b367ec7..1c9b043 100644 --- a/umn/source/networking/services/loadbalancer.rst +++ b/umn/source/network/service/loadbalancer/creating_a_loadbalancer_service.rst @@ -1,23 +1,19 @@ -:original_name: cce_10_0014.html +:original_name: cce_10_0681.html -.. _cce_10_0014: +.. _cce_10_0681: -LoadBalancer -============ - -.. _cce_10_0014__section19854101411508: +Creating a LoadBalancer Service +=============================== Scenario -------- -A workload can be accessed from public networks through a load balancer, which is more secure and reliable than EIP. - -The LoadBalancer access address is in the format of :, for example, **10.117.117.117:80**. +LoadBalancer Services can access workloads from the public network through ELB, which is more reliable than EIP-based access. The LoadBalancer access address is in the format of *IP address of public network load balancer*:*Access port*, for example, **10.117.117.117:80**. In this access mode, requests are transmitted through an ELB load balancer to a node and then forwarded to the destination pod through the Service. -.. figure:: /_static/images/en-us_image_0000001569022961.png +.. figure:: /_static/images/en-us_image_0000001695736989.png :alt: **Figure 1** LoadBalancer **Figure 1** LoadBalancer @@ -27,7 +23,7 @@ When **CCE Turbo clusters and dedicated load balancers** are used, passthrough n External access requests are directly forwarded from a load balancer to pods. Internal access requests can be forwarded to a pod through a Service. -.. figure:: /_static/images/en-us_image_0000001517903124.png +.. figure:: /_static/images/en-us_image_0000001647417328.png :alt: **Figure 2** Passthrough networking **Figure 2** Passthrough networking @@ -35,35 +31,35 @@ External access requests are directly forwarded from a load balancer to pods. In Constraints ----------- -- LoadBalancer Services allow workloads to be accessed from public networks through **ELB**. This access mode has the following restrictions: +- LoadBalancer Services allow workloads to be accessed from public networks through ELB. This access mode has the following restrictions: - - It is recommended that automatically created load balancers not be used by other resources. Otherwise, these load balancers cannot be completely deleted, causing residual resources. + - Automatically created load balancers should not be used by other resources. Otherwise, these load balancers cannot be completely deleted. - Do not change the listener name for the load balancer in clusters of v1.15 and earlier. Otherwise, the load balancer cannot be accessed. -- After a Service is created, if the affinity setting is switched from the cluster level to the node level, the connection tracing table will not be cleared. You are advised not to modify the Service affinity setting after the Service is created. If you need to modify it, create a Service again. -- If the service affinity is set to the node level (that is, **externalTrafficPolicy** is set to **Local**), the cluster may fail to access the Service by using the ELB address. For details, see :ref:`Why a Cluster Fails to Access Services by Using the ELB Address `. +- After a Service is created, if the affinity setting is switched from the cluster level to the node level, the connection tracing table will not be cleared. You are advised not to modify the Service affinity setting after the Service is created. To modify it, create a Service again. +- If the service affinity is set to the node level (that is, :ref:`externalTrafficPolicy ` is set to **Local**), the cluster may fail to access the Service by using the ELB address. For details, see :ref:`Why a Service Fail to Be Accessed from Within the Cluster `. - CCE Turbo clusters support only cluster-level service affinity. - Dedicated ELB load balancers can be used only in clusters of v1.17 and later. -- Dedicated load balancers must be the network type (TCP/UDP) supporting private networks (with a private IP). If the Service needs to support HTTP, the specifications of dedicated load balancers must use HTTP/HTTPS (application load balancing) in addition to TCP/UDP (network load balancing). -- If you create a LoadBalancer Service on the CCE console, a random node port is automatically generated. If you use kubectl to create a LoadBalancer Service, a random node port is generated unless you specify one. -- In a CCE cluster, if the cluster-level affinity is configured for a LoadBalancer Service, requests are distributed to the node ports of each node using SNAT when entering the cluster. The number of node ports cannot exceed the number of available node ports on the node. If the Service affinity is at the node level (local), there is no such constraint. In a CCE Turbo cluster, this constraint applies to shared ELB load balancers, but not dedicated ones. You are advised to use dedicated ELB load balancers in CCE Turbo clusters. +- Dedicated load balancers must be of the network type (TCP/UDP) supporting private networks (with a private IP). If the Service needs to support HTTP, the specifications of dedicated load balancers must use HTTP/HTTPS (application load balancing) in addition to TCP/UDP (network load balancing). +- In a CCE cluster, if the cluster-level affinity is configured for a LoadBalancer Service, requests are distributed to the node ports of each node using SNAT when entering the cluster. The number of node ports cannot exceed the number of available node ports on the node. If the service affinity is at the node level (Local), there is no such constraint. In a CCE Turbo cluster, this constraint applies to shared ELB load balancers, but not dedicated ones. Use dedicated ELB load balancers in CCE Turbo clusters. - When the cluster service forwarding (proxy) mode is IPVS, the node IP cannot be configured as the external IP of the Service. Otherwise, the node is unavailable. - In a cluster using the IPVS proxy mode, if the ingress and Service use the same ELB load balancer, the ingress cannot be accessed from the nodes and containers in the cluster because kube-proxy mounts the LoadBalancer Service address to the ipvs-0 bridge. This bridge intercepts the traffic of the load balancer connected to the ingress. You are advised to use different ELB load balancers for the ingress and Service. + Creating a LoadBalancer Service ------------------------------- #. Log in to the CCE console and click the cluster name to access the cluster console. #. Choose **Networking** in the navigation pane and click **Create Service** in the upper right corner. -#. Set parameters. +#. Configure parameters. - **Service Name**: Specify a Service name, which can be the same as the workload name. - - **Access Type**: Select **LoadBalancer**. + - **Service Type**: Select **LoadBalancer**. - **Namespace**: Namespace to which the workload belongs. - - **Service Affinity**: For details, see :ref:`externalTrafficPolicy (Service Affinity) `. + - **Service Affinity**: For details, see :ref:`externalTrafficPolicy (Service Affinity) `. - **Cluster level**: The IP addresses and access ports of all nodes in a cluster can be used to access the workload associated with the Service. Service access will cause performance loss due to route redirection, and the source IP address of the client cannot be obtained. - **Node level**: Only the IP address and access port of the node where the workload is located can access the workload associated with the Service. Service access will not cause performance loss due to route redirection, and the source IP address of the client can be obtained. @@ -74,42 +70,87 @@ Creating a LoadBalancer Service Select the load balancer to interconnect. Only load balancers in the same VPC as the cluster are supported. If no load balancer is available, click **Create Load Balancer** to create one on the ELB console. - You can click the edit icon in the row of **Set ELB** to configure load balancer parameters. + The CCE console supports automatic creation of load balancers. Select **Auto create** from the drop-down list box and set the following parameters: - - **Distribution Policy**: Three algorithms are available: weighted round robin, weighted least connections algorithm, or source IP hash. + - **Instance Name**: Enter a load balancer name. + - **Public Access**: If enabled, an EIP with 5 Mbit/s bandwidth will be created. + - **Subnet**, **AZ**, and **Specifications** (available only for dedicated load balancers): Configure the subnet, AZ, and specifications. Currently, only dedicated load balancers of the network type (TCP/UDP) can be automatically created. + + You can click **Edit** in the **Set ELB** area and configure load balancer parameters in the **Set ELB** dialog box. + + - .. _cce_10_0681__li8170555132211: + + **Algorithm**: Three algorithms are available: weighted round robin, weighted least connections algorithm, or source IP hash. .. note:: - **Weighted round robin**: Requests are forwarded to different servers based on their weights, which indicate server processing performance. Backend servers with higher weights receive proportionately more requests, whereas equal-weighted servers receive the same number of requests. This algorithm is often used for short connections, such as HTTP services. - - **Weighted least connections**: In addition to the weight assigned to each server, the number of connections processed by each backend server is also considered. Requests are forwarded to the server with the lowest connections-to-weight ratio. Building on **least connections**, the **weighted least connections** algorithm assigns a weight to each server based on their processing performance. This algorithm is often used for persistent connections, such as database connections. + - **Weighted least connections**: In addition to the weight assigned to each server, the number of connections processed by each backend server is also considered. Requests are forwarded to the server with the lowest connections-to-weight ratio. Building on **least connections**, the **weighted least connections** algorithm assigns a weight to each server based on their processing capability. This algorithm is often used for persistent connections, such as database connections. - **Source IP hash**: The source IP address of each request is calculated using the hash algorithm to obtain a unique hash key, and all backend servers are numbered. The generated key allocates the client to a particular server. This enables requests from different clients to be distributed in load balancing mode and ensures that requests from the same client are forwarded to the same server. This algorithm applies to TCP connections without cookies. - - **Type**: This function is disabled by default. You can select **Source IP address**. Listeners ensure session stickiness based on IP addresses. Requests from the same IP address will be forwarded to the same backend server. + - **Type**: This function is disabled by default. You can select **Source IP address**. Source IP address-based sticky session means that access requests from the same IP address are forwarded to the same backend server. - - **Health Check**: configured for the load balancer. When TCP is selected during the :ref:`port settings `, you can choose either TCP or HTTP. When UDP is selected during the :ref:`port settings `, only UDP is supported. By default, the service port (Node Port and container port of the Service) is used for health check. You can also specify another port for health check. After the port is specified, a service port named **cce-healthz** will be added for the Service. + .. note:: - - .. _cce_10_0014__li388800117144: + When the :ref:`distribution policy ` uses the source IP address algorithm, sticky session cannot be set. - **Port Settings** + - .. _cce_10_0681__li15274642132013: + + **Health Check**: Configure health check for the load balancer. + + - **Global health check**: applies only to ports using the same protocol. You are advised to select **Custom health check**. + - **Custom health check**: applies to :ref:`ports ` using different protocols. For details about the YAML definition for custom health check, see :ref:`Configuring Health Check for Multiple Ports `. + + .. _cce_10_0681__table11219123154614: + + .. table:: **Table 1** Health check parameters + + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+===========================================================================================================================================================================================================================================================+ + | Protocol | When the protocol of :ref:`Port ` is set to TCP, the TCP and HTTP are supported. When the protocol of :ref:`Port ` is set to UDP, the UDP is supported. | + | | | + | | - **Check Path** (supported only by the HTTP): specifies the health check URL. The check path must start with a slash (/) and contain 1 to 80 characters. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Port | By default, the service port (Node Port and container port of the Service) is used for health check. You can also specify another port for health check. After the port is specified, a service port named **cce-healthz** will be added for the Service. | + | | | + | | - **Node Port**: If a shared load balancer is used or no ENI instance is associated, the node port is used as the health check port. If this parameter is not specified, a random port is used. The value ranges from 30000 to 32767. | + | | - **Container Port**: When a dedicated load balancer is associated with an ENI instance, the container port is used for health check. The value ranges from 1 to 65535. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Check Period (s) | Specifies the maximum interval between health checks. The value ranges from 1 to 50. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Timeout (s) | Specifies the maximum timeout duration for each health check. The value ranges from 1 to 50. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Max. Retries | Specifies the maximum number of health check retries. The value ranges from 1 to 10. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + - .. _cce_10_0681__li388800117144: + + **Port** - **Protocol**: protocol used by the Service. - **Service Port**: port used by the Service. The port number ranges from 1 to 65535. - **Container Port**: port on which the workload listens. For example, Nginx uses port 80 by default. + - **Health Check**: If :ref:`Health Check ` is set to **Custom health check**, you can configure health check for ports using different protocols. For details, see :ref:`Table 1 `. - - **Annotation**: The LoadBalancer Service has some advanced CCE functions, which are implemented by annotations. For details, see :ref:`Service Annotations `. When you use kubectl to create a container, annotations will be used. For details, see :ref:`Using kubectl to Create a Service (Using an Existing Load Balancer) ` and :ref:`Using kubectl to Create a Service (Automatically Creating a Load Balancer) `. + .. note:: + + When a LoadBalancer Service is created, a random node port number (NodePort) is automatically generated. + + - **Annotation**: The LoadBalancer Service has some advanced CCE functions, which are implemented by annotations. For details, see :ref:`Using Annotations to Configure Load Balancing `. #. Click **OK**. -.. _cce_10_0014__section1984211714368: +.. _cce_10_0681__section74196215320: Using kubectl to Create a Service (Using an Existing Load Balancer) ------------------------------------------------------------------- -You can set the access type when creating a workload using kubectl. This section uses an Nginx workload as an example to describe how to add a LoadBalancer Service using kubectl. +You can set the Service when creating a workload using kubectl. This section uses an Nginx workload as an example to describe how to add a LoadBalancer Service using kubectl. #. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. -#. Create and edit the **nginx-deployment.yaml** and **nginx-elb-svc.yaml** files. +#. Create the files named **nginx-deployment.yaml** and **nginx-elb-svc.yaml** and edit them. The file names are user-defined. **nginx-deployment.yaml** and **nginx-elb-svc.yaml** are merely example file names. @@ -151,81 +192,101 @@ You can set the access type when creating a workload using kubectl. This section apiVersion: v1 kind: Service metadata: - annotations: - kubernetes.io/elb.id: 5083f225-9bf8-48fa-9c8b-67bd9693c4c0 # ELB ID. Replace it with the actual value. - kubernetes.io/elb.class: union # Load balancer type name: nginx + annotations: + kubernetes.io/elb.id: # ELB ID. Replace it with the actual value. + kubernetes.io/elb.class: union # Load balancer type + kubernetes.io/elb.lb-algorithm: ROUND_ROBIN # Load balancer algorithm + kubernetes.io/elb.session-affinity-mode: SOURCE_IP # The sticky session type is source IP address. + kubernetes.io/elb.session-affinity-option: '{"persistence_timeout": "30"}' # Stickiness duration (min) + kubernetes.io/elb.health-check-flag: 'on' # Enable the ELB health check function. + kubernetes.io/elb.health-check-option: '{ + "protocol":"TCP", + "delay":"5", + "timeout":"10", + "max_retries":"3" + }' spec: + selector: + app: nginx ports: - name: service0 port: 80 # Port for accessing the Service, which is also the listener port on the load balancer. protocol: TCP targetPort: 80 # Port used by a Service to access the target container. This port is closely related to the applications running in a container. - selector: - app: nginx + nodePort: 31128 # Port number of the node. If this parameter is not specified, a random port number ranging from 30000 to 32767 is generated. type: LoadBalancer - .. table:: **Table 1** Key parameters + The preceding example uses annotations to implement some advanced functions of load balancing, such as sticky session and health check. For details, see :ref:`Table 2 `. + + In addition to the functions in this example, for more annotations and examples related to advanced functions, see :ref:`Using Annotations to Configure Load Balancing `. + + .. _cce_10_0681__table5352104717398: + + .. table:: **Table 2** annotations parameters +-------------------------------------------+-----------------+----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Parameter | Mandatory | Type | Description | +===========================================+=================+==========================================================+========================================================================================================================================================================================================================================================================================================+ - | kubernetes.io/elb.class | Yes | String | Select a proper load balancer type as required. | - | | | | | - | | | | The value can be: | - | | | | | - | | | | - **union**: shared load balancer | - | | | | - **performance**: dedicated load balancer, which can be used only in clusters of v1.17 and later. | - +-------------------------------------------+-----------------+----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | kubernetes.io/elb.session-affinity-mode | No | String | Listeners ensure session stickiness based on IP addresses. Requests from the same IP address will be forwarded to the same backend server. | - | | | | | - | | | | - Disabling sticky session: Do not set this parameter. | - | | | | - Enabling sticky session: Set this parameter to **SOURCE_IP**, indicating that the sticky session is based on the source IP address. | - +-------------------------------------------+-----------------+----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | kubernetes.io/elb.session-affinity-option | No | :ref:`Table 2 ` Object | This parameter specifies the sticky session timeout. | - +-------------------------------------------+-----------------+----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | kubernetes.io/elb.id | Yes | String | This parameter indicates the ID of a load balancer. The value can contain 1 to 100 characters. | + | kubernetes.io/elb.id | Yes | String | ID of an enhanced load balancer. | | | | | | | | | | Mandatory when an existing load balancer is to be associated. | | | | | | - | | | | **Obtaining the load balancer ID:** | + | | | | **How to obtain**: | | | | | | | | | | On the management console, click **Service List**, and choose **Networking** > **Elastic Load Balance**. Click the name of the target load balancer. On the **Summary** tab page, find and copy the ID. | | | | | | | | | | .. note:: | | | | | | - | | | | The system preferentially interconnects with the load balancer based on the **kubernetes.io/elb.id** field. If this field is not specified, the **spec.loadBalancerIP** field is used (optional and available only in 1.23 and earlier versions). | + | | | | The system preferentially connects to the load balancer based on the **kubernetes.io/elb.id** field. If this field is not specified, the **spec.loadBalancerIP** field is used (optional and available only in 1.23 and earlier versions). | | | | | | | | | | Do not use the **spec.loadBalancerIP** field to connect to the load balancer. This field will be discarded by Kubernetes. For details, see `Deprecation `__. | +-------------------------------------------+-----------------+----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | kubernetes.io/elb.subnet-id | None | String | This parameter indicates the ID of the subnet where the cluster is located. The value can contain 1 to 100 characters. | + | kubernetes.io/elb.class | Yes | String | Select a proper load balancer type. | | | | | | - | | | | - Mandatory when a cluster of v1.11.7-r0 or earlier is to be automatically created. | - | | | | - Optional for clusters later than v1.11.7-r0. | + | | | | - **union**: shared load balancer | + | | | | - **performance**: dedicated load balancer, which can be used only in clusters of v1.17 and later. | + | | | | | + | | | | .. note:: | + | | | | | + | | | | If a LoadBalancer Service accesses an existing dedicated load balancer, the dedicated load balancer must support TCP/UDP networking. | +-------------------------------------------+-----------------+----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | kubernetes.io/elb.lb-algorithm | No | String | This parameter indicates the load balancing algorithm of the backend server group. The default value is **ROUND_ROBIN**. | + | kubernetes.io/elb.lb-algorithm | No | String | Specifies the load balancing algorithm of the backend server group. The default value is **ROUND_ROBIN**. | | | | | | - | | | | Value range: | + | | | | Options: | | | | | | | | | | - **ROUND_ROBIN**: weighted round robin algorithm | | | | | - **LEAST_CONNECTIONS**: weighted least connections algorithm | | | | | - **SOURCE_IP**: source IP hash algorithm | | | | | | - | | | | When the value is **SOURCE_IP**, the weights of backend servers in the server group are invalid. | + | | | | .. note:: | + | | | | | + | | | | If this parameter is set to **SOURCE_IP**, the weight setting (**weight** field) of backend servers bound to the backend server group is invalid, and sticky session cannot be enabled. | + +-------------------------------------------+-----------------+----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | kubernetes.io/elb.session-affinity-mode | No | String | Source IP address-based sticky session is supported. That is, access requests from the same IP address are forwarded to the same backend server. | + | | | | | + | | | | - Disabling sticky session: Do not configure this parameter. | + | | | | - Enabling sticky session: Set this parameter to **SOURCE_IP**, indicating that the sticky session is based on the source IP address. | + | | | | | + | | | | .. note:: | + | | | | | + | | | | When **kubernetes.io/elb.lb-algorithm** is set to **SOURCE_IP** (source IP address algorithm), sticky session cannot be enabled. | + +-------------------------------------------+-----------------+----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | kubernetes.io/elb.session-affinity-option | No | :ref:`Table 3 ` object | Sticky session timeout. | +-------------------------------------------+-----------------+----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | kubernetes.io/elb.health-check-flag | No | String | Whether to enable the ELB health check. | | | | | | | | | | - Enabling health check: Leave blank this parameter or set it to **on**. | | | | | - Disabling health check: Set this parameter to **off**. | | | | | | - | | | | If this parameter is enabled, the :ref:`kubernetes.io/elb.health-check-option ` field must also be specified at the same time. | + | | | | If this parameter is enabled, the :ref:`kubernetes.io/elb.health-check-option ` field must also be specified at the same time. | +-------------------------------------------+-----------------+----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | kubernetes.io/elb.health-check-option | No | :ref:`Table 3 ` Object | ELB health check configuration items. | + | kubernetes.io/elb.health-check-option | No | :ref:`Table 4 ` object | ELB health check configuration items. | +-------------------------------------------+-----------------+----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - .. _cce_10_0014__table43592047133910: + .. _cce_10_0681__table43592047133910: - .. table:: **Table 2** Data structure of the elb.session-affinity-option field + .. table:: **Table 3** Data structure of the **elb.session-affinity-option** field +---------------------+-----------------+-----------------+------------------------------------------------------------------------------------------------------------------------------+ | Parameter | Mandatory | Type | Description | @@ -235,9 +296,9 @@ You can set the access type when creating a workload using kubectl. This section | | | | Value range: 1 to 60. Default value: **60** | +---------------------+-----------------+-----------------+------------------------------------------------------------------------------------------------------------------------------+ - .. _cce_10_0014__table236017471397: + .. _cce_10_0681__table236017471397: - .. table:: **Table 3** Data structure description of the **elb.health-check-option** field + .. table:: **Table 4** Data structure description of the **elb.health-check-option** field +-----------------+-----------------+-----------------+------------------------------------------------------------------------------------+ | Parameter | Mandatory | Type | Description | @@ -256,9 +317,7 @@ You can set the access type when creating a workload using kubectl. This section +-----------------+-----------------+-----------------+------------------------------------------------------------------------------------+ | protocol | No | String | Health check protocol. | | | | | | - | | | | Default value: protocol of the associated Service | - | | | | | - | | | | Value options: TCP, UDP, or HTTP | + | | | | Value options: TCP or HTTP | +-----------------+-----------------+-----------------+------------------------------------------------------------------------------------+ | path | No | String | Health check URL. This parameter needs to be configured when the protocol is HTTP. | | | | | | @@ -298,7 +357,7 @@ You can set the access type when creating a workload using kubectl. This section **kubectl get svc** - If information similar to the following is displayed, the access type has been set successfully, and the workload is accessible. + If information similar to the following is displayed, the access type has been set, and the workload is accessible. .. code-block:: @@ -311,21 +370,21 @@ You can set the access type when creating a workload using kubectl. This section The Nginx is accessible. - .. figure:: /_static/images/en-us_image_0000001569182677.png + .. figure:: /_static/images/en-us_image_0000001695736993.png :alt: **Figure 3** Accessing Nginx through the LoadBalancer Service **Figure 3** Accessing Nginx through the LoadBalancer Service -.. _cce_10_0014__section12168131904611: +.. _cce_10_0681__section6422152185311: Using kubectl to Create a Service (Automatically Creating a Load Balancer) -------------------------------------------------------------------------- -You can add a Service when creating a workload using kubectl. This section uses an Nginx workload as an example to describe how to add a LoadBalancer Service using kubectl. +You can set the Service when creating a workload using kubectl. This section uses an Nginx workload as an example to describe how to add a LoadBalancer Service using kubectl. #. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. -#. Create and edit the **nginx-deployment.yaml** and **nginx-elb-svc.yaml** files. +#. Create the files named **nginx-deployment.yaml** and **nginx-elb-svc.yaml** and edit them. The file names are user-defined. **nginx-deployment.yaml** and **nginx-elb-svc.yaml** are merely example file names. @@ -362,7 +421,7 @@ You can add a Service when creating a workload using kubectl. This section uses - The workload protocol is TCP. - Anti-affinity has been configured between pods of the workload. That is, all pods of the workload are deployed on different nodes. For details, see :ref:`Scheduling Policy (Affinity/Anti-affinity) `. - Example of a Service using a shared, public network load balancer: + Example of a Service using a public network shared load balancer: .. code-block:: @@ -371,15 +430,25 @@ You can add a Service when creating a workload using kubectl. This section uses metadata: annotations: kubernetes.io/elb.class: union - kubernetes.io/elb.autocreate: - '{ - "type": "public", - "bandwidth_name": "cce-bandwidth-1551163379627", - "bandwidth_chargemode": "bandwidth", - "bandwidth_size": 5, - "bandwidth_sharetype": "PER", - "eip_type": "5_bgp" - }' + kubernetes.io/elb.autocreate: '{ + "type": "public", + "bandwidth_name": "cce-bandwidth-1551163379627", + "bandwidth_chargemode": "bandwidth", + "bandwidth_size": 5, + "bandwidth_sharetype": "PER", + "eip_type": "5_bgp" + }' + kubernetes.io/elb.enterpriseID: '0' # ID of the enterprise project to which the load balancer belongs + kubernetes.io/elb.lb-algorithm: ROUND_ROBIN # Load balancer algorithm + kubernetes.io/elb.session-affinity-mode: SOURCE_IP # The sticky session type is source IP address. + kubernetes.io/elb.session-affinity-option: '{"persistence_timeout": "30"}' # Stickiness duration (min) + kubernetes.io/elb.health-check-flag: 'on' # Enable the ELB health check function. + kubernetes.io/elb.health-check-option: '{ + "protocol":"TCP", + "delay":"5", + "timeout":"10", + "max_retries":"3" + }' labels: app: nginx name: nginx @@ -393,7 +462,7 @@ You can add a Service when creating a workload using kubectl. This section uses app: nginx type: LoadBalancer - Example Service using a public network dedicated load balancer (for clusters of v1.17 and later only): + Example Service using a public network dedicated load balancer (only for clusters of v1.17 and later): .. code-block:: @@ -406,19 +475,29 @@ You can add a Service when creating a workload using kubectl. This section uses namespace: default annotations: kubernetes.io/elb.class: performance - kubernetes.io/elb.autocreate: - '{ - "type": "public", - "bandwidth_name": "cce-bandwidth-1626694478577", - "bandwidth_chargemode": "bandwidth", - "bandwidth_size": 5, - "bandwidth_sharetype": "PER", - "eip_type": "5_bgp", - "available_zone": [ - "" - ], - "l4_flavor_name": "L4_flavor.elb.s1.small" - }' + kubernetes.io/elb.autocreate: '{ + "type": "public", + "bandwidth_name": "cce-bandwidth-1626694478577", + "bandwidth_chargemode": "bandwidth", + "bandwidth_size": 5, + "bandwidth_sharetype": "PER", + "eip_type": "5_bgp", + "available_zone": [ + "" + ], + "l4_flavor_name": "L4_flavor.elb.s1.small" + }' + kubernetes.io/elb.enterpriseID: '0' # ID of the enterprise project to which the load balancer belongs + kubernetes.io/elb.lb-algorithm: ROUND_ROBIN # Load balancer algorithm + kubernetes.io/elb.session-affinity-mode: SOURCE_IP # The sticky session type is source IP address. + kubernetes.io/elb.session-affinity-option: '{"persistence_timeout": "30"}' # Stickiness duration (min) + kubernetes.io/elb.health-check-flag: 'on' # Enable the ELB health check function. + kubernetes.io/elb.health-check-option: '{ + "protocol":"TCP", + "delay":"5", + "timeout":"10", + "max_retries":"3" + }' spec: selector: app: nginx @@ -430,80 +509,82 @@ You can add a Service when creating a workload using kubectl. This section uses protocol: TCP type: LoadBalancer - .. table:: **Table 4** Key parameters + The preceding example uses annotations to implement some advanced functions of load balancing, such as sticky session and health check. For details, see :ref:`Table 5 `. - +-------------------------------------------+-----------------+---------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Mandatory | Type | Description | - +===========================================+=================+===============================================================+=======================================================================================================================================================================================================================================================================================+ - | kubernetes.io/elb.class | Yes | String | Select a proper load balancer type as required. | - | | | | | - | | | | The value can be: | - | | | | | - | | | | - **union**: shared load balancer | - | | | | - **performance**: dedicated load balancer, which can be used only in clusters of v1.17 and later. | - +-------------------------------------------+-----------------+---------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | kubernetes.io/elb.subnet-id | N/A | String | This parameter indicates the ID of the subnet where the cluster is located. The value can contain 1 to 100 characters. | - | | | | | - | | | | - Mandatory when a cluster of v1.11.7-r0 or earlier is to be automatically created. | - | | | | - Optional for clusters later than v1.11.7-r0. | - +-------------------------------------------+-----------------+---------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | kubernetes.io/elb.session-affinity-option | No | :ref:`Table 2 ` Object | Sticky session timeout. | - +-------------------------------------------+-----------------+---------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | kubernetes.io/elb.autocreate | Yes | :ref:`elb.autocreate ` object | Whether to automatically create a load balancer associated with the Service. | - | | | | | - | | | | **Example:** | - | | | | | - | | | | - If a public network load balancer will be automatically created, set this parameter to the following value: | - | | | | | - | | | | {"type":"public","bandwidth_name":"cce-bandwidth-1551163379627","bandwidth_chargemode":"bandwidth","bandwidth_size":5,"bandwidth_sharetype":"PER","eip_type":"5_bgp","name":"james"} | - | | | | | - | | | | - If a private network load balancer will be automatically created, set this parameter to the following value: | - | | | | | - | | | | {"type":"inner","name":"A-location-d-test"} | - +-------------------------------------------+-----------------+---------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | kubernetes.io/elb.lb-algorithm | No | String | This parameter indicates the load balancing algorithm of the backend server group. The default value is **ROUND_ROBIN**. | - | | | | | - | | | | Value range: | - | | | | | - | | | | - **ROUND_ROBIN**: weighted round robin algorithm | - | | | | - **LEAST_CONNECTIONS**: weighted least connections algorithm | - | | | | - **SOURCE_IP**: source IP hash algorithm | - | | | | | - | | | | When the value is **SOURCE_IP**, the weights of backend servers in the server group are invalid. | - +-------------------------------------------+-----------------+---------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | kubernetes.io/elb.health-check-flag | No | String | Whether to enable the ELB health check. | - | | | | | - | | | | - Enabling health check: Leave blank this parameter or set it to **on**. | - | | | | - Disabling health check: Set this parameter to **off**. | - | | | | | - | | | | If this parameter is enabled, the :ref:`kubernetes.io/elb.health-check-option ` field must also be specified at the same time. | - +-------------------------------------------+-----------------+---------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | kubernetes.io/elb.health-check-option | No | :ref:`Table 3 ` Object | ELB health check configuration items. | - +-------------------------------------------+-----------------+---------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | kubernetes.io/elb.session-affinity-mode | No | String | Listeners ensure session stickiness based on IP addresses. Requests from the same IP address will be forwarded to the same backend server. | - | | | | | - | | | | - Disabling sticky session: Do not set this parameter. | - | | | | - Enabling sticky session: Set this parameter to **SOURCE_IP**, indicating that the sticky session is based on the source IP address. | - +-------------------------------------------+-----------------+---------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | kubernetes.io/elb.session-affinity-option | No | :ref:`Table 2 ` Object | Sticky session timeout. | - +-------------------------------------------+-----------------+---------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | kubernetes.io/hws-hostNetwork | No | String | This parameter indicates whether the workload Services use the host network. Setting this parameter to **true** will enable the ELB load balancer to forward requests to the host network. | - | | | | | - | | | | The host network is not used by default. The value can be **true** or **false**. | - +-------------------------------------------+-----------------+---------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | externalTrafficPolicy | No | String | If sticky session is enabled, add this parameter so that requests are transferred to a fixed node. If a LoadBalancer Service with this parameter set to **Local** is created, a client can access the target backend only if the client is installed on the same node as the backend. | - +-------------------------------------------+-----------------+---------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + In addition to the functions in this example, for more annotations and examples related to advanced functions, see :ref:`Using Annotations to Configure Load Balancing `. - .. _cce_10_0014__table939522754617: + .. _cce_10_0681__table133089105019: - .. table:: **Table 5** Data structure of the elb.autocreate field + .. table:: **Table 5** annotations parameters + + +-------------------------------------------+-----------------+---------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +===========================================+=================+===============================================================+============================================================================================================================================================================================+ + | kubernetes.io/elb.class | Yes | String | Select a proper load balancer type. | + | | | | | + | | | | - **union**: shared load balancer | + | | | | - **performance**: dedicated load balancer, which can be used only in clusters of v1.17 and later. | + +-------------------------------------------+-----------------+---------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | kubernetes.io/elb.autocreate | Yes | :ref:`elb.autocreate ` object | Whether to automatically create a load balancer associated with the Service. | + | | | | | + | | | | **Example** | + | | | | | + | | | | - If a public network load balancer will be automatically created, set this parameter to the following value: | + | | | | | + | | | | {"type":"public","bandwidth_name":"cce-bandwidth-1551163379627","bandwidth_chargemode":"bandwidth","bandwidth_size":5,"bandwidth_sharetype":"PER","eip_type":"5_bgp","name":"james"} | + | | | | | + | | | | - If a private network load balancer will be automatically created, set this parameter to the following value: | + | | | | | + | | | | {"type":"inner","name":"A-location-d-test"} | + +-------------------------------------------+-----------------+---------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | kubernetes.io/elb.subnet-id | None | String | ID of the subnet where the cluster is located. The value can contain 1 to 100 characters. | + | | | | | + | | | | - Mandatory when a cluster of v1.11.7-r0 or earlier is to be automatically created. | + | | | | - Optional for clusters later than v1.11.7-r0. | + +-------------------------------------------+-----------------+---------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | kubernetes.io/elb.lb-algorithm | No | String | Specifies the load balancing algorithm of the backend server group. The default value is **ROUND_ROBIN**. | + | | | | | + | | | | Options: | + | | | | | + | | | | - **ROUND_ROBIN**: weighted round robin algorithm | + | | | | - **LEAST_CONNECTIONS**: weighted least connections algorithm | + | | | | - **SOURCE_IP**: source IP hash algorithm | + | | | | | + | | | | .. note:: | + | | | | | + | | | | If this parameter is set to **SOURCE_IP**, the weight setting (**weight** field) of backend servers bound to the backend server group is invalid, and sticky session cannot be enabled. | + +-------------------------------------------+-----------------+---------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | kubernetes.io/elb.session-affinity-mode | No | String | Source IP address-based sticky session is supported. That is, access requests from the same IP address are forwarded to the same backend server. | + | | | | | + | | | | - Disabling sticky session: Do not configure this parameter. | + | | | | - Enabling sticky session: Set this parameter to **SOURCE_IP**, indicating that the sticky session is based on the source IP address. | + | | | | | + | | | | .. note:: | + | | | | | + | | | | When **kubernetes.io/elb.lb-algorithm** is set to **SOURCE_IP** (source IP address algorithm), sticky session cannot be enabled. | + +-------------------------------------------+-----------------+---------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | kubernetes.io/elb.session-affinity-option | No | :ref:`Table 3 ` object | Sticky session timeout. | + +-------------------------------------------+-----------------+---------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | kubernetes.io/elb.health-check-flag | No | String | Whether to enable the ELB health check. | + | | | | | + | | | | - Enabling health check: Leave blank this parameter or set it to **on**. | + | | | | - Disabling health check: Set this parameter to **off**. | + | | | | | + | | | | If this parameter is enabled, the :ref:`kubernetes.io/elb.health-check-option ` field must also be specified at the same time. | + +-------------------------------------------+-----------------+---------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | kubernetes.io/elb.health-check-option | No | :ref:`Table 4 ` object | ELB health check configuration items. | + +-------------------------------------------+-----------------+---------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. _cce_10_0681__table939522754617: + + .. table:: **Table 6** Data structure of the **elb.autocreate** field +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Parameter | Mandatory | Type | Description | +======================+=======================================+==================+==================================================================================================================================================================================================================================================================================================================================================================================+ - | name | No | String | Name of the load balancer that is automatically created. | + | name | No | String | Name of the automatically created load balancer. | | | | | | - | | | | Value range: 1 to 64 characters, including lowercase letters, digits, and underscores (_). The value must start with a lowercase letter and end with a lowercase letter or digit. | + | | | | The value can contain 1 to 64 characters. Only letters, digits, underscores (_), hyphens (-), and periods (.) are allowed. | | | | | | | | | | Default: **cce-lb+service.UID** | +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -516,11 +597,22 @@ You can add a Service when creating a workload using kubectl. This section uses +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | bandwidth_name | Yes for public network load balancers | String | Bandwidth name. The default value is **cce-bandwidth-*****\***. | | | | | | - | | | | Value range: 1 to 64 characters, including lowercase letters, digits, and underscores (_). The value must start with a lowercase letter and end with a lowercase letter or digit. | + | | | | The value can contain 1 to 64 characters. Only letters, digits, underscores (_), hyphens (-), and periods (.) are allowed. | +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | bandwidth_chargemode | No | String | Bandwidth mode. | + | | | | | + | | | | - **bandwidth**: billed by bandwidth | + | | | | - **traffic**: billed by traffic | + | | | | | + | | | | Default: **bandwidth** | +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | bandwidth_size | Yes for public network load balancers | Integer | Bandwidth size. The default value is 1 to 2000 Mbit/s. Set this parameter based on the bandwidth range allowed in your region. | + | bandwidth_size | Yes for public network load balancers | Integer | Bandwidth size. The default value is 1 to 2000 Mbit/s. Configure this parameter based on the bandwidth range allowed in your region. | + | | | | | + | | | | The minimum increment for bandwidth adjustment varies depending on the bandwidth range. | + | | | | | + | | | | - The minimum increment is 1 Mbit/s if the allowed bandwidth does not exceed 300 Mbit/s. | + | | | | - The minimum increment is 50 Mbit/s if the allowed bandwidth ranges from 300 Mbit/s to 1000 Mbit/s. | + | | | | - The minimum increment is 500 Mbit/s if the allowed bandwidth exceeds 1000 Mbit/s. | +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | bandwidth_sharetype | Yes for public network load balancers | String | Bandwidth sharing mode. | | | | | | @@ -541,7 +633,7 @@ You can add a Service when creating a workload using kubectl. This section uses +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | l7_flavor_name | No | String | Flavor name of the layer-7 load balancer. | | | | | | - | | | | This parameter is available only for dedicated load balancers. | + | | | | This parameter is available only for dedicated load balancers. The value of this parameter must be the same as that of **l4_flavor_name**, that is, both are elastic specifications or fixed specifications. | +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | elb_virsubnet_ids | No | Array of strings | Subnet where the backend server of the load balancer is located. If this parameter is left blank, the default cluster subnet is used. Load balancers occupy different number of subnet IP addresses based on their specifications. Therefore, you are not advised to use the subnet CIDR blocks of other resources (such as clusters and nodes) as the load balancer CIDR block. | | | | | | @@ -566,7 +658,7 @@ You can add a Service when creating a workload using kubectl. This section uses deployment/nginx created - **kubectl get po** + **kubectl get pod** If information similar to the following is displayed, the workload is running. @@ -587,7 +679,7 @@ You can add a Service when creating a workload using kubectl. This section uses **kubectl get svc** - If information similar to the following is displayed, the access type has been set successfully, and the workload is accessible. + If information similar to the following is displayed, the access type has been set, and the workload is accessible. .. code-block:: @@ -595,86 +687,12 @@ You can add a Service when creating a workload using kubectl. This section uses kubernetes ClusterIP 10.247.0.1 443/TCP 3d nginx LoadBalancer 10.247.130.196 10.78.42.242 80:31540/TCP 51s -#. Enter the URL in the address box of the browser, for example, **10.78.42.242:80**. **10.78.42.242** indicates the IP address of the load balancer, and **80** indicates the access port displayed on the CCE console. +#. Enter the URL in the address box of the browser, for example, **10.**\ *XXX.XXX.XXX*\ **:80**. **10.**\ *XXX.XXX.XXX* indicates the IP address of the load balancer, and **80** indicates the access port displayed on the CCE console. The Nginx is accessible. - .. figure:: /_static/images/en-us_image_0000001517743552.png + .. figure:: /_static/images/en-us_image_0000001647576596.png :alt: **Figure 4** Accessing Nginx through the LoadBalancer Service **Figure 4** Accessing Nginx through the LoadBalancer Service - -ELB Forwarding --------------- - -After a Service of the LoadBalancer type is created, you can view the listener forwarding rules of the load balancer on the ELB console. - -You can find that a listener is created for the load balancer. Its backend server is the node where the pod is located, and the backend server port is the NodePort (node port) of the Service. When traffic passes through ELB, it is forwarded to *IP address of the node where the pod is located:Node port*. That is, the Service is accessed and then the pod is accessed, which is the same as that described in :ref:`Scenario `. - -In the passthrough networking scenario (CCE Turbo + dedicated load balancer), after a LoadBalancer Service is created, you can view the listener forwarding rules of the load balancer on the ELB console. - -You can find that a listener is created for the load balancer. The backend server address is the IP address of the pod, and the service port is the container port. This is because the pod uses an ENI or sub-ENI. When traffic passes through the load balancer, it directly forwards the traffic to the pod. This is the same as that described in :ref:`Scenario `. - -.. _cce_10_0014__section52631714117: - -Why a Cluster Fails to Access Services by Using the ELB Address ---------------------------------------------------------------- - -If the service affinity of a LoadBalancer Service is set to the node level, that is, the value of **externalTrafficPolicy** is **Local**, the ELB address may fail to be accessed from the cluster (specifically, nodes or containers). Information similar to the following is displayed: - -.. code-block:: - - upstream connect error or disconnect/reset before headers. reset reason: connection failure - -This is because when the LoadBalancer Service is created, kube-proxy adds the ELB access address as the external IP to iptables or IPVS. If a client initiates a request to access the ELB address from inside the cluster, the address is considered as the external IP address of the service and is directly forwarded by kube-proxy without passing through the ELB outside the cluster. - -When the value of **externalTrafficPolicy** is **Local**, the situation varies according to the container network model and service forwarding mode. The details are as follows: - -+---------------------------------------------------------------------------+-----------------------------+---------------------------------------------------------------------+-------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+ -| Server | Client | Container Tunnel Network Cluster (IPVS) | VPC Network Cluster (IPVS) | Container Tunnel Network Cluster (iptables) | VPC Network Cluster (iptables) | -+---------------------------------------------------------------------------+-----------------------------+---------------------------------------------------------------------+-------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+ -| NodePort Service | Same node | OK. The node where the pod runs is accessible, not any other nodes. | OK. The node where the pod runs is accessible. | OK. The node where the pod runs is accessible. | OK. The node where the pod runs is accessible. | -+---------------------------------------------------------------------------+-----------------------------+---------------------------------------------------------------------+-------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+ -| | Cross-node | OK. The node where the pod runs is accessible, not any other nodes. | OK. The node where the pod runs is accessible. | OK. The node where the pod runs is accessible by visiting the node IP + port, not by any other ways. | OK. The node where the pod runs is accessible by visiting the node IP + port, not by any other ways. | -+---------------------------------------------------------------------------+-----------------------------+---------------------------------------------------------------------+-------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+ -| | Containers on the same node | OK. The node where the pod runs is accessible, not any other nodes. | OK. The node where the pod runs is not accessible. | OK. The node where the pod runs is accessible. | OK. The node where the pod runs is not accessible. | -+---------------------------------------------------------------------------+-----------------------------+---------------------------------------------------------------------+-------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+ -| | Containers across nodes | OK. The node where the pod runs is accessible, not any other nodes. | OK. The node where the pod runs is accessible. | OK. The node where the pod runs is accessible. | OK. The node where the pod runs is accessible. | -+---------------------------------------------------------------------------+-----------------------------+---------------------------------------------------------------------+-------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+ -| LoadBalancer Service using a dedicated load balancer | Same node | Accessible for public networks, not private networks. | Accessible for public networks, not private networks. | Accessible for public networks, not private networks. | Accessible for public networks, not private networks. | -+---------------------------------------------------------------------------+-----------------------------+---------------------------------------------------------------------+-------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+ -| | Containers on the same node | Accessible for public networks, not private networks. | Accessible for public networks, not private networks. | Accessible for public networks, not private networks. | Accessible for public networks, not private networks. | -+---------------------------------------------------------------------------+-----------------------------+---------------------------------------------------------------------+-------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+ -| Local Service of the nginx-ingress add-on using a dedicated load balancer | Same node | Accessible for public networks, not private networks. | Accessible for public networks, not private networks. | Accessible for public networks, not private networks. | Accessible for public networks, not private networks. | -+---------------------------------------------------------------------------+-----------------------------+---------------------------------------------------------------------+-------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+ -| | Containers on the same node | Accessible for public networks, not private networks. | Accessible for public networks, not private networks. | Accessible for public networks, not private networks. | Accessible for public networks, not private networks. | -+---------------------------------------------------------------------------+-----------------------------+---------------------------------------------------------------------+-------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+ - -The following methods can be used to solve this problem: - -- (**Recommended**) In the cluster, use the ClusterIP Service or service domain name for access. - -- Set **externalTrafficPolicy** of the Service to **Cluster**, which means cluster-level service affinity. Note that this affects source address persistence. - - .. code-block:: - - apiVersion: v1 - kind: Service - metadata: - annotations: - kubernetes.io/elb.class: union - kubernetes.io/elb.autocreate: '{"type":"public","bandwidth_name":"cce-bandwidth","bandwidth_chargemode":"bandwidth","bandwidth_size":5,"bandwidth_sharetype":"PER","eip_type":"5_bgp","name":"james"}' - labels: - app: nginx - name: nginx - spec: - externalTrafficPolicy: Cluster - ports: - - name: service0 - port: 80 - protocol: TCP - targetPort: 80 - selector: - app: nginx - type: LoadBalancer diff --git a/umn/source/workloads/configuring_a_container/enabling_icmp_security_group_rules.rst b/umn/source/network/service/loadbalancer/enabling_icmp_security_group_rules.rst similarity index 100% rename from umn/source/workloads/configuring_a_container/enabling_icmp_security_group_rules.rst rename to umn/source/network/service/loadbalancer/enabling_icmp_security_group_rules.rst diff --git a/umn/source/network/service/loadbalancer/enabling_passthrough_networking_for_loadbalancer_services.rst b/umn/source/network/service/loadbalancer/enabling_passthrough_networking_for_loadbalancer_services.rst new file mode 100644 index 0000000..da32f7f --- /dev/null +++ b/umn/source/network/service/loadbalancer/enabling_passthrough_networking_for_loadbalancer_services.rst @@ -0,0 +1,156 @@ +:original_name: cce_10_0355.html + +.. _cce_10_0355: + +Enabling Passthrough Networking for LoadBalancer Services +========================================================= + +Challenges +---------- + +A Kubernetes cluster can publish applications running on a group of pods as Services, which provide unified layer-4 access entries. For a Loadbalancer Service, kube-proxy configures the LoadbalanceIP in **status** of the Service to the local forwarding rule of the node by default. When a pod accesses the load balancer from within the cluster, the traffic is forwarded within the cluster instead of being forwarded by the load balancer. + +kube-proxy is responsible for intra-cluster forwarding. kube-proxy has two forwarding modes: iptables and IPVS. iptables is a simple polling forwarding mode. IPVS has multiple forwarding modes but it requires modifying the startup parameters of kube-proxy. Compared with iptables and IPVS, load balancers provide more flexible forwarding policies as well as health check capabilities. + +Solution +-------- + +CCE supports passthrough networking. You can configure the **annotation** of **kubernetes.io/elb.pass-through** for the Loadbalancer Service. Intra-cluster access to the Service load balancer address is then forwarded to backend pods by the load balancer. + + +.. figure:: /_static/images/en-us_image_0000001695736965.png + :alt: **Figure 1** Passthrough networking illustration + + **Figure 1** Passthrough networking illustration + +- CCE clusters + + When a LoadBalancer Service is accessed within the cluster, the access is forwarded to the backend pods using iptables/IPVS by default. + + When a LoadBalancer Service (configured with elb.pass-through) is accessed within the cluster, the access is first forwarded to the load balancer, then the nodes, and finally to the backend pods using iptables/IPVS. + +- CCE Turbo clusters + + When a LoadBalancer Service is accessed within the cluster, the access is forwarded to the backend pods using iptables/IPVS by default. + + When a LoadBalancer Service (configured with elb.pass-through) is accessed within the cluster, the access is first forwarded to the load balancer, and then to the pods. + +Notes and Constraints +--------------------- + +- After passthrough networking is configured for a dedicated load balancer, containers on the node where the workload runs cannot be accessed through the Service. +- Passthrough networking is not supported for clusters of v1.15 or earlier. +- In IPVS network mode, the pass-through settings of Service connected to the same ELB must be the same. + +Procedure +--------- + +This section describes how to create a Deployment using an Nginx image and create a Service with passthrough networking enabled. + +#. Use the Nginx image to create a Deployment. + + .. code-block:: + + apiVersion: apps/v1 + kind: Deployment + metadata: + name: nginx + spec: + replicas: 2 + selector: + matchLabels: + app: nginx + template: + metadata: + labels: + app: nginx + spec: + containers: + - image: nginx:latest + name: container-0 + resources: + limits: + cpu: 100m + memory: 200Mi + requests: + cpu: 100m + memory: 200Mi + imagePullSecrets: + - name: default-secret + +#. Create a LoadBalancer Service and configure **kubernetes.io/elb.pass-through** to **true**. + + .. code-block:: + + apiVersion: v1 + kind: Service + metadata: + annotations: + kubernetes.io/elb.pass-through: "true" + kubernetes.io/elb.class: union + kubernetes.io/elb.autocreate: '{"type":"public","bandwidth_name":"cce-bandwidth","bandwidth_chargemode":"bandwidth","bandwidth_size":5,"bandwidth_sharetype":"PER","eip_type":"5_bgp","name":"james"}' + labels: + app: nginx + name: nginx + spec: + externalTrafficPolicy: Local + ports: + - name: service0 + port: 80 + protocol: TCP + targetPort: 80 + selector: + app: nginx + type: LoadBalancer + + A shared load balancer named **james** is automatically created. Use **kubernetes.io/elb.subnet-id** to specify the VPC subnet where the load balancer is located. The load balancer and the cluster must be in the same VPC. + +Verification +------------ + +Check the ELB load balancer corresponding to the created Service. The load balancer name is **james**. The number of ELB connections is **0**, as shown in the following figure. + +|image1| + +Use kubectl to connect to the cluster, go to an Nginx container, and access the ELB address. The access is successful. + +.. code-block:: + + # kubectl get pod + NAME READY STATUS RESTARTS AGE + nginx-7c4c5cc6b5-vpncx 1/1 Running 0 9m47s + nginx-7c4c5cc6b5-xj5wl 1/1 Running 0 9m47s + # kubectl exec -it nginx-7c4c5cc6b5-vpncx -- /bin/sh + # curl 120.46.141.192 + + + + Welcome to nginx! + + + +

      Welcome to nginx!

      +

      If you see this page, the nginx web server is successfully installed and + working. Further configuration is required.

      + +

      For online documentation and support please refer to + nginx.org.
      + Commercial support is available at + nginx.com.

      + +

      Thank you for using nginx.

      + + + +Wait for a period of time and view the ELB monitoring data. A new access connection is created for the ELB, indicating that the access passes through the ELB load balancer as expected. + +|image2| + +.. |image1| image:: /_static/images/en-us_image_0000001647576552.png +.. |image2| image:: /_static/images/en-us_image_0000001647417300.png diff --git a/umn/source/network/service/loadbalancer/index.rst b/umn/source/network/service/loadbalancer/index.rst new file mode 100644 index 0000000..b954685 --- /dev/null +++ b/umn/source/network/service/loadbalancer/index.rst @@ -0,0 +1,24 @@ +:original_name: cce_10_0014.html + +.. _cce_10_0014: + +LoadBalancer +============ + +- :ref:`Creating a LoadBalancer Service ` +- :ref:`Using Annotations to Configure Load Balancing ` +- :ref:`Service Using HTTP ` +- :ref:`Configuring Health Check for Multiple Ports ` +- :ref:`Enabling Passthrough Networking for LoadBalancer Services ` +- :ref:`Enabling ICMP Security Group Rules ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + creating_a_loadbalancer_service + using_annotations_to_configure_load_balancing + service_using_http + configuring_health_check_for_multiple_ports + enabling_passthrough_networking_for_loadbalancer_services + enabling_icmp_security_group_rules diff --git a/umn/source/network/service/loadbalancer/service_using_http.rst b/umn/source/network/service/loadbalancer/service_using_http.rst new file mode 100644 index 0000000..55b86da --- /dev/null +++ b/umn/source/network/service/loadbalancer/service_using_http.rst @@ -0,0 +1,82 @@ +:original_name: cce_10_0683.html + +.. _cce_10_0683: + +Service Using HTTP +================== + +Constraints +----------- + +- Only clusters of v1.19.16 or later support HTTP. + +- Do not connect the ingress and Service that uses HTTP to the same listener of the same load balancer. Otherwise, a port conflict occurs. + +- Layer-7 routing of ELB can be enabled for Services. Both shared and dedicated ELB load balancers can be interconnected. + + Restrictions on dedicated ELB load balancers are as follows: + + - To interconnect with an existing dedicated load balancer, the load balancer flavor **must support both the layer-4 and layer-7 routing**. Otherwise, the load balancer will not work as expected. + - If you use an automatically created load balancer, you cannot use the CCE console to automatically create a layer-7 dedicated load balancer. Instead, you can use YAML to create a layer-7 dedicated load balancer, use both the layer-4 and layer-7 capabilities of the exclusive ELB instance (that is, specify the layer-4 and layer-7 flavors in the annotation of kubernetes.io/elb.autocreate). + + +Service Using HTTP +------------------ + +The following annotations need to be added: + +- **kubernetes.io/elb.protocol-port**: "https:443,http:80" + + The value of **protocol-port** must be the same as the port in the **spec.ports** field of the Service. The format is *Protocol:Port*. The port matches the one in the **service.spec.ports** field and is released as the corresponding protocol. + +- **kubernetes.io/elb.cert-id**: "17e3b4f4bc40471c86741dc3aa211379" + + **cert-id** indicates the certificate ID in ELB certificate management. When **https** is configured for **protocol-port**, the certificate of the ELB listener will be set to the **cert-id** certificate. When multiple HTTPS services are released, the same certificate is used. + +The following is a configuration example. The two ports in **spec.ports** correspond to those in **kubernetes.io/elb.protocol-port**. Ports 443 and 80 are enabled for HTTPS and HTTP requests, respectively. + +.. code-block:: + + apiVersion: v1 + kind: Service + metadata: + annotations: + # When an ELB load balancer is automatically created, both layer-4 and layer-7 flavors need to be specified. + kubernetes.io/elb.autocreate: ' + { + "type": "public", + "bandwidth_name": "cce-bandwidth-1634816602057", + "bandwidth_chargemode": "bandwidth", + "bandwidth_size": 5, + "bandwidth_sharetype": "PER", + "eip_type": "5_bgp", + "available_zone": [ + "" + ], + "l7_flavor_name": "L7_flavor.elb.s2.small" + }' + kubernetes.io/elb.class: performance + kubernetes.io/elb.protocol-port: "https:443,http:80" + kubernetes.io/elb.cert-id: "17e3b4f4bc40471c86741dc3aa211379" + labels: + app: nginx + name: test + name: test + namespace: default + spec: + ports: + - name: cce-service-0 + port: 443 + protocol: TCP + targetPort: 80 + - name: cce-service-1 + port: 80 + protocol: TCP + targetPort: 80 + selector: + app: nginx + version: v1 + sessionAffinity: None + type: LoadBalancer + +Use the preceding example configurations to create a Service. In the new ELB load balancer, you can see that the listeners on ports 443 and 80 are created. diff --git a/umn/source/network/service/loadbalancer/using_annotations_to_configure_load_balancing.rst b/umn/source/network/service/loadbalancer/using_annotations_to_configure_load_balancing.rst new file mode 100644 index 0000000..2d73ec0 --- /dev/null +++ b/umn/source/network/service/loadbalancer/using_annotations_to_configure_load_balancing.rst @@ -0,0 +1,601 @@ +:original_name: cce_10_0385.html + +.. _cce_10_0385: + +Using Annotations to Configure Load Balancing +============================================= + +You can add annotations to a YAML file to use some CCE advanced functions. This section describes the available annotations when a LoadBalancer service is created. + +- :ref:`Interconnection with ELB ` +- :ref:`Sticky Session ` +- :ref:`Health Check ` +- :ref:`HTTP Protocol ` +- :ref:`Dynamic Adjustment of the Weight of the Backend ECS ` +- :ref:`Pass-through Capability ` +- :ref:`Whitelist ` +- :ref:`Host Network ` + +.. _cce_10_0385__section584135019388: + +Interconnection with ELB +------------------------ + +.. table:: **Table 1** Annotations for interconnecting with ELB + + +--------------------------------+----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+ + | Parameter | Type | Description | Supported Cluster Version | + +================================+====================================================+========================================================================================================================================================================================================================================================================================================+================================================+ + | kubernetes.io/elb.class | String | Select a proper load balancer type. | v1.9 or later | + | | | | | + | | | - **union**: shared load balancer | | + | | | - **performance**: dedicated load balancer, which can be used only in clusters of v1.17 and later. | | + +--------------------------------+----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+ + | kubernetes.io/elb.id | String | Mandatory **when an existing load balancer is to be associated**. | v1.9 or later | + | | | | | + | | | ID of a load balancer. | | + | | | | | + | | | **How to obtain**: | | + | | | | | + | | | On the management console, click **Service List**, and choose **Networking** > **Elastic Load Balance**. Click the name of the target load balancer. On the **Summary** tab page, find and copy the ID. | | + | | | | | + | | | .. note:: | | + | | | | | + | | | The system preferentially connects to the load balancer based on the **kubernetes.io/elb.id** field. If this field is not specified, the **spec.loadBalancerIP** field is used (optional and available only in 1.23 and earlier versions). | | + | | | | | + | | | Do not use the **spec.loadBalancerIP** field to connect to the load balancer. This field will be discarded by Kubernetes. For details, see `Deprecation `__. | | + +--------------------------------+----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+ + | kubernetes.io/elb.autocreate | :ref:`Table 9 ` | Mandatory **when load balancers are automatically created**. | v1.9 or later | + | | | | | + | | | **Example:** | | + | | | | | + | | | - If a public network load balancer will be automatically created, set this parameter to the following value: | | + | | | | | + | | | {"type":"public","bandwidth_name":"cce-bandwidth-1551163379627","bandwidth_chargemode":"bandwidth","bandwidth_size":5,"bandwidth_sharetype":"PER","eip_type":"5_bgp","name":"james"} | | + | | | | | + | | | - If a private network load balancer will be automatically created, set this parameter to the following value: | | + | | | | | + | | | {"type":"inner","name":"A-location-d-test"} | | + +--------------------------------+----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+ + | kubernetes.io/elb.subnet-id | String | Optional **when load balancers are automatically created**. | Mandatory for versions earlier than v1.11.7-r0 | + | | | | | + | | | ID of the subnet where the cluster is located. The value can contain 1 to 100 characters. | Discarded in versions later than v1.11.7-r0 | + | | | | | + | | | - Mandatory when a cluster of v1.11.7-r0 or earlier is to be automatically created. | | + | | | - Optional for clusters later than v1.11.7-r0. | | + +--------------------------------+----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+ + | kubernetes.io/elb.lb-algorithm | String | Specifies the load balancing algorithm of the backend server group. The default value is **ROUND_ROBIN**. | v1.9 or later | + | | | | | + | | | Options: | | + | | | | | + | | | - **ROUND_ROBIN**: weighted round robin algorithm | | + | | | - **LEAST_CONNECTIONS**: weighted least connections algorithm | | + | | | - **SOURCE_IP**: source IP hash algorithm | | + | | | | | + | | | .. note:: | | + | | | | | + | | | If this parameter is set to **SOURCE_IP**, the weight setting (**weight** field) of backend servers bound to the backend server group is invalid, and sticky session cannot be enabled. | | + +--------------------------------+----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+ + +The following shows how to use the preceding annotations: + +- Associating an existing load balancer. For details, see :ref:`Using kubectl to Create a Service (Using an Existing Load Balancer) `. + + .. code-block:: + + apiVersion: v1 + kind: Service + metadata: + name: nginx + annotations: + kubernetes.io/elb.id: # ELB ID. Replace it with the actual value. + kubernetes.io/elb.class: performance # Load balancer type + kubernetes.io/elb.lb-algorithm: ROUND_ROBIN # Load balancer algorithm + spec: + selector: + app: nginx + ports: + - name: service0 + port: 80 + protocol: TCP + targetPort: 80 + type: LoadBalancer + +- Automatically creating a load balancer. For details, see :ref:`Using kubectl to Create a Service (Automatically Creating a Load Balancer) `. + + Shared load balancer: + + .. code-block:: + + apiVersion: v1 + kind: Service + metadata: + annotations: + kubernetes.io/elb.class: union + kubernetes.io/elb.autocreate: '{ + "type": "public", + "bandwidth_name": "cce-bandwidth-1551163379627", + "bandwidth_chargemode": "bandwidth", + "bandwidth_size": 5, + "bandwidth_sharetype": "PER", + "eip_type": "5_bgp" + }' + kubernetes.io/elb.enterpriseID: '0' # ID of the enterprise project to which the load balancer belongs + kubernetes.io/elb.lb-algorithm: ROUND_ROBIN # Load balancer algorithm + labels: + app: nginx + name: nginx + spec: + ports: + - name: service0 + port: 80 + protocol: TCP + targetPort: 80 + selector: + app: nginx + type: LoadBalancer + + Dedicated load balancer: + + .. code-block:: + + apiVersion: v1 + kind: Service + metadata: + name: nginx + labels: + app: nginx + namespace: default + annotations: + kubernetes.io/elb.class: performance + kubernetes.io/elb.autocreate: '{ + "type": "public", + "bandwidth_name": "cce-bandwidth-1626694478577", + "bandwidth_chargemode": "bandwidth", + "bandwidth_size": 5, + "bandwidth_sharetype": "PER", + "eip_type": "5_bgp", + "available_zone": [ + "" + ], + "l4_flavor_name": "L4_flavor.elb.s1.small" + }' + kubernetes.io/elb.enterpriseID: '0' # ID of the enterprise project to which the load balancer belongs + kubernetes.io/elb.lb-algorithm: ROUND_ROBIN # Load balancer algorithm + spec: + selector: + app: nginx + ports: + - name: cce-service-0 + targetPort: 80 + nodePort: 0 + port: 80 + protocol: TCP + type: LoadBalancer + +.. _cce_10_0385__section1370139104012: + +Sticky Session +-------------- + +.. table:: **Table 2** Annotations for sticky session + + +-------------------------------------------+---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+ + | Parameter | Type | Description | Supported Cluster Version | + +===========================================+===================================================+==================================================================================================================================================+===========================+ + | kubernetes.io/elb.session-affinity-mode | String | Source IP address-based sticky session is supported. That is, access requests from the same IP address are forwarded to the same backend server. | v1.9 or later | + | | | | | + | | | - Disabling sticky session: Do not configure this parameter. | | + | | | - Enabling sticky session: Set this parameter to **SOURCE_IP**, indicating that the sticky session is based on the source IP address. | | + | | | | | + | | | .. note:: | | + | | | | | + | | | When **kubernetes.io/elb.lb-algorithm** is set to **SOURCE_IP** (source IP address algorithm), sticky session cannot be enabled. | | + +-------------------------------------------+---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+ + | kubernetes.io/elb.session-affinity-option | :ref:`Table 12 ` | Sticky session timeout. | v1.9 or later | + +-------------------------------------------+---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+ + +The following shows how to use the preceding annotations: + +.. code-block:: + + apiVersion: v1 + kind: Service + metadata: + name: nginx + annotations: + kubernetes.io/elb.id: # ELB ID. Replace it with the actual value. + kubernetes.io/elb.class: union # Load balancer type + kubernetes.io/elb.session-affinity-mode: SOURCE_IP # The sticky session type is source IP address. + kubernetes.io/elb.session-affinity-option: '{"persistence_timeout": "30"}' # Stickiness duration (min) + spec: + selector: + app: nginx + ports: + - name: service0 + port: 80 + protocol: TCP + targetPort: 80 + type: LoadBalancer + +.. _cce_10_0385__section1327831714595: + +Health Check +------------ + +.. table:: **Table 3** Annotations for health check + + +----------------------------------------+----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+ + | Parameter | Type | Description | Supported Cluster Version | + +========================================+====================================================+==================================================================================================================================================================+===========================+ + | kubernetes.io/elb.health-check-flag | String | Whether to enable the ELB health check. | v1.9 or later | + | | | | | + | | | - Enabling health check: Leave blank this parameter or set it to **on**. | | + | | | - Disabling health check: Set this parameter to **off**. | | + | | | | | + | | | If this parameter is enabled, the :ref:`kubernetes.io/elb.health-check-option ` field must also be specified at the same time. | | + +----------------------------------------+----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+ + | kubernetes.io/elb.health-check-option | :ref:`Table 10 ` | ELB health check configuration items. | v1.9 or later | + +----------------------------------------+----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+ + | kubernetes.io/elb.health-check-options | :ref:`Table 11 ` | ELB health check configuration item. Each Service port can be configured separately, and you can configure only some ports. | v1.19.16-r5 or later | + | | | | | + | | | .. note:: | v1.21.8-r0 or later | + | | | | | + | | | **kubernetes.io/elb.health-check-option** and **kubernetes.io/elb.health-check-options** cannot be configured at the same time. | v1.23.6-r0 or later | + | | | | | + | | | | v1.25.2-r0 or later | + +----------------------------------------+----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+ + +- The following shows how to use **kubernetes.io/elb.health-check-option**: + + .. code-block:: + + apiVersion: v1 + kind: Service + metadata: + name: nginx + annotations: + kubernetes.io/elb.id: # ELB ID. Replace it with the actual value. + kubernetes.io/elb.class: union # Load balancer type + kubernetes.io/elb.health-check-flag: 'on' # Enable the ELB health check function. + kubernetes.io/elb.health-check-option: '{ + "protocol":"TCP", + "delay":"5", + "timeout":"10", + "max_retries":"3" + }' + spec: + selector: + app: nginx + ports: + - name: service0 + port: 80 + protocol: TCP + targetPort: 80 + type: LoadBalancer + +- For details about how to use **kubernetes.io/elb.health-check-options**, see :ref:`Configuring Health Check for Multiple Ports `. + +.. _cce_10_0385__section12416195865818: + +HTTP Protocol +------------- + +.. table:: **Table 4** Annotations for using HTTP protocols + + +---------------------------------+--------+--------------------------------------------------------------+---------------------------+ + | Parameter | Type | Description | Supported Cluster Version | + +=================================+========+==============================================================+===========================+ + | kubernetes.io/elb.protocol-port | String | Layer-7 forwarding configuration port used by the Service. | v1.19.16 or later | + +---------------------------------+--------+--------------------------------------------------------------+---------------------------+ + | kubernetes.io/elb.cert-id | String | HTTP certificate used by the Service for Layer-7 forwarding. | v1.19.16 or later | + +---------------------------------+--------+--------------------------------------------------------------+---------------------------+ + +For details about the application scenarios, see :ref:`Service Using HTTP `. + +.. _cce_10_0385__section3712956145815: + +Dynamic Adjustment of the Weight of the Backend ECS +--------------------------------------------------- + +.. table:: **Table 5** Annotations for dynamically adjusting the weight of the backend ECS + + +-----------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------+---------------------------+ + | Parameter | Type | Description | Supported Cluster Version | + +===================================+=================+=====================================================================================================================================+===========================+ + | kubernetes.io/elb.adaptive-weight | String | Dynamically adjusts the weight of the load balancer backend ECS based on pods. The requests received by each pod are more balanced. | v1.21 or later | + | | | | | + | | | - **true**: enabled | | + | | | - **false**: disabled | | + | | | | | + | | | This parameter applies only to clusters of v1.21 or later and is invalid in passthrough networking. | | + +-----------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------+---------------------------+ + +The following shows how to use the preceding annotations: + +.. code-block:: + + apiVersion: v1 + kind: Service + metadata: + name: nginx + annotations: + kubernetes.io/elb.id: # ELB ID. Replace it with the actual value. + kubernetes.io/elb.class: union # Load balancer type + kubernetes.io/elb.adaptive-weight: 'true' # Enable dynamic adjustment of the weight of the backend ECS. + spec: + selector: + app: nginx + ports: + - name: service0 + port: 80 + protocol: TCP + targetPort: 80 + type: LoadBalancer + +.. _cce_10_0385__section5456195255814: + +Pass-through Capability +----------------------- + +.. table:: **Table 6** Annotations for pass-through capability + + +--------------------------------+--------+--------------------------------------------------------------------------------------------------------+---------------------------+ + | Parameter | Type | Description | Supported Cluster Version | + +================================+========+========================================================================================================+===========================+ + | kubernetes.io/elb.pass-through | String | Whether the access requests from within the cluster to the Service pass through the ELB load balancer. | v1.19 or later | + +--------------------------------+--------+--------------------------------------------------------------------------------------------------------+---------------------------+ + +For details about the application scenarios, see :ref:`Enabling Passthrough Networking for LoadBalancer Services `. + +.. _cce_10_0385__section79480421873: + +Whitelist +--------- + +.. table:: **Table 7** Annotations for ELB access list + + +------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+ + | Parameter | Type | Description | Supported Cluster Version | + +==============================+=================+===============================================================================================================================================================================================================================+=============================+ + | kubernetes.io/elb.acl-id | String | This parameter is mandatory when you configure an IP address whitelist for a load balancer. The value of this parameter is the IP address group ID of the load balancer.. | v1.19.16, v1.21.4, or later | + | | | | | + | | | **This parameter takes effect only for dedicated load balancers and takes effect only when a Service is created or a new service port (listener) is specified.** | | + | | | | | + | | | **How to obtain**: | | + | | | | | + | | | Log in to the console. In the **Service List**, choose **Networking > Elastic Load Balance**. On the Network Console, choose **Elastic Load Balance > IP Address Groups** and copy the **ID** of the target IP address group. | | + +------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+ + | kubernetes.io/elb.acl-status | String | This parameter is mandatory when you set an IP address whitelist for a load balancer. The value is **on**, indicating that access control is enabled. | v1.19.16, v1.21.4, or later | + | | | | | + | | | **This parameter takes effect only for dedicated load balancers and takes effect only when a Service is created or a new service port (listener) is specified.** | | + +------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+ + | kubernetes.io/elb.acl-type | String | This parameter is mandatory when you set the IP address whitelist for a load balancer. | v1.19.16, v1.21.4, or later | + | | | | | + | | | - black: indicates the blacklist. The selected IP address group cannot access the ELB address. | | + | | | - white: indicates the whitelist. Only the selected IP address group can access the ELB address. | | + | | | | | + | | | **This parameter takes effect only for dedicated load balancers and takes effect only when a Service is created or a new service port (listener) is specified.** | | + +------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+ + +The following shows how to use the preceding annotations: + +.. code-block:: + + apiVersion: v1 + kind: Service + metadata: + name: nginx + annotations: + kubernetes.io/elb.id: # ELB ID. Replace it with the actual value. + kubernetes.io/elb.class: performance # Load balancer type + kubernetes.io/elb.acl-id: # ELB IP address group ID + kubernetes.io/elb.acl-status: 'on' # Enable access control. + kubernetes.io/elb.acl-type: 'white' # Whitelist control + spec: + selector: + app: nginx + ports: + - name: service0 + port: 80 + protocol: TCP + targetPort: 80 + type: LoadBalancer + +.. _cce_10_0385__section952710224812: + +Host Network +------------ + +.. table:: **Table 8** Annotations for host network + + +-------------------------------+-----------------+------------------------------------------------------------------------------------------------------------------+---------------------------+ + | Parameter | Type | Description | Supported Cluster Version | + +===============================+=================+==================================================================================================================+===========================+ + | kubernetes.io/hws-hostNetwork | String | If the pod uses **hostNetwork**, the ELB forwards the request to the host network after this annotation is used. | v1.9 or later | + | | | | | + | | | Options: | | + | | | | | + | | | - **true**: enabled | | + | | | - **false** (default): disabled | | + +-------------------------------+-----------------+------------------------------------------------------------------------------------------------------------------+---------------------------+ + +The following shows how to use the preceding annotations: + +.. code-block:: + + apiVersion: v1 + kind: Service + metadata: + name: nginx + annotations: + kubernetes.io/elb.id: # ELB ID. Replace it with the actual value. + kubernetes.io/elb.class: union # Load balancer type + kubernetes.io/hws-hostNetwork: 'true' # The load balancer forwards the request to the host network. + spec: + selector: + app: nginx + ports: + - name: service0 + port: 80 + protocol: TCP + targetPort: 80 + type: LoadBalancer + +Data Structure +-------------- + +.. _cce_10_0385__table148341447193017: + +.. table:: **Table 9** Data structure of the **elb.autocreate** field + + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +======================+=======================================+==================+==================================================================================================================================================================================================================================================================================================================================================================================+ + | name | No | String | Name of the automatically created load balancer. | + | | | | | + | | | | The value can contain 1 to 64 characters. Only letters, digits, underscores (_), hyphens (-), and periods (.) are allowed. | + | | | | | + | | | | Default: **cce-lb+service.UID** | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | type | No | String | Network type of the load balancer. | + | | | | | + | | | | - **public**: public network load balancer | + | | | | - **inner**: private network load balancer | + | | | | | + | | | | Default: **inner** | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | bandwidth_name | Yes for public network load balancers | String | Bandwidth name. The default value is **cce-bandwidth-*****\***. | + | | | | | + | | | | The value can contain 1 to 64 characters. Only letters, digits, underscores (_), hyphens (-), and periods (.) are allowed. | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | bandwidth_chargemode | No | String | Bandwidth mode. | + | | | | | + | | | | - **bandwidth**: billed by bandwidth | + | | | | - **traffic**: billed by traffic | + | | | | | + | | | | Default: **bandwidth** | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | bandwidth_size | Yes for public network load balancers | Integer | Bandwidth size. The default value is 1 to 2000 Mbit/s. Configure this parameter based on the bandwidth range allowed in your region. | + | | | | | + | | | | The minimum increment for bandwidth adjustment varies depending on the bandwidth range. | + | | | | | + | | | | - The minimum increment is 1 Mbit/s if the allowed bandwidth does not exceed 300 Mbit/s. | + | | | | - The minimum increment is 50 Mbit/s if the allowed bandwidth ranges from 300 Mbit/s to 1000 Mbit/s. | + | | | | - The minimum increment is 500 Mbit/s if the allowed bandwidth exceeds 1000 Mbit/s. | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | bandwidth_sharetype | Yes for public network load balancers | String | Bandwidth sharing mode. | + | | | | | + | | | | - **PER**: dedicated bandwidth | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | eip_type | Yes for public network load balancers | String | EIP type. | + | | | | | + | | | | - **5_bgp**: dynamic BGP | + | | | | - **5_sbgp**: static BGP | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | available_zone | Yes | Array of strings | AZ where the load balancer is located. | + | | | | | + | | | | This parameter is available only for dedicated load balancers. | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | l4_flavor_name | Yes | String | Flavor name of the layer-4 load balancer. | + | | | | | + | | | | This parameter is available only for dedicated load balancers. | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | l7_flavor_name | No | String | Flavor name of the layer-7 load balancer. | + | | | | | + | | | | This parameter is available only for dedicated load balancers. The value of this parameter must be the same as that of **l4_flavor_name**, that is, both are elastic specifications or fixed specifications. | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | elb_virsubnet_ids | No | Array of strings | Subnet where the backend server of the load balancer is located. If this parameter is left blank, the default cluster subnet is used. Load balancers occupy different number of subnet IP addresses based on their specifications. Therefore, you are not advised to use the subnet CIDR blocks of other resources (such as clusters and nodes) as the load balancer CIDR block. | + | | | | | + | | | | This parameter is available only for dedicated load balancers. | + | | | | | + | | | | Example: | + | | | | | + | | | | .. code-block:: | + | | | | | + | | | | "elb_virsubnet_ids": [ | + | | | | "14567f27-8ae4-42b8-ae47-9f847a4690dd" | + | | | | ] | + +----------------------+---------------------------------------+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. _cce_10_0385__table19192143412319: + +.. table:: **Table 10** Data structure description of the **elb.health-check-option** field + + +-----------------+-----------------+-----------------+------------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +=================+=================+=================+====================================================================================+ + | delay | No | String | Initial waiting time (in seconds) for starting the health check. | + | | | | | + | | | | Value range: 1 to 50. Default value: **5** | + +-----------------+-----------------+-----------------+------------------------------------------------------------------------------------+ + | timeout | No | String | Health check timeout, in seconds. | + | | | | | + | | | | Value range: 1 to 50. Default value: **10** | + +-----------------+-----------------+-----------------+------------------------------------------------------------------------------------+ + | max_retries | No | String | Maximum number of health check retries. | + | | | | | + | | | | Value range: 1 to 10. Default value: **3** | + +-----------------+-----------------+-----------------+------------------------------------------------------------------------------------+ + | protocol | No | String | Health check protocol. | + | | | | | + | | | | Value options: TCP or HTTP | + +-----------------+-----------------+-----------------+------------------------------------------------------------------------------------+ + | path | No | String | Health check URL. This parameter needs to be configured when the protocol is HTTP. | + | | | | | + | | | | Default value: **/** | + | | | | | + | | | | The value can contain 1 to 10,000 characters. | + +-----------------+-----------------+-----------------+------------------------------------------------------------------------------------+ + +.. _cce_10_0385__table33328411456: + +.. table:: **Table 11** Data structure description of the **elb.health-check-options** field + + +---------------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +=====================+=================+=================+==============================================================================================================================================+ + | target_service_port | Yes | String | Port for health check specified by spec.ports. The value consists of the protocol and port number, for example, TCP:80. | + +---------------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + | monitor_port | No | String | Re-specified port for health check. If this parameter is not specified, the service port is used by default. | + | | | | | + | | | | .. note:: | + | | | | | + | | | | Ensure that the port is in the listening state on the node where the pod is located. Otherwise, the health check result will be affected. | + +---------------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + | delay | No | String | Initial waiting time (in seconds) for starting the health check. | + | | | | | + | | | | Value range: 1 to 50. Default value: **5** | + +---------------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + | timeout | No | String | Health check timeout, in seconds. | + | | | | | + | | | | Value range: 1 to 50. Default value: **10** | + +---------------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + | max_retries | No | String | Maximum number of health check retries. | + | | | | | + | | | | Value range: 1 to 10. Default value: **3** | + +---------------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + | protocol | No | String | Health check protocol. | + | | | | | + | | | | Default value: protocol of the associated Service | + | | | | | + | | | | Value options: TCP, UDP, or HTTP | + +---------------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + | path | No | String | Health check URL. This parameter needs to be configured when the protocol is **HTTP**. | + | | | | | + | | | | Default value: **/** | + | | | | | + | | | | The value can contain 1 to 10,000 characters. | + +---------------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + +.. _cce_10_0385__table3340195463412: + +.. table:: **Table 12** Data structure of the **elb.session-affinity-option** field + + +---------------------+-----------------+-----------------+------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Mandatory | Type | Description | + +=====================+=================+=================+==============================================================================================================================+ + | persistence_timeout | Yes | String | Sticky session timeout, in minutes. This parameter is valid only when **elb.session-affinity-mode** is set to **SOURCE_IP**. | + | | | | | + | | | | Value range: 1 to 60. Default value: **60** | + +---------------------+-----------------+-----------------+------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/networking/services/nodeport.rst b/umn/source/network/service/nodeport.rst similarity index 72% rename from umn/source/networking/services/nodeport.rst rename to umn/source/network/service/nodeport.rst index 2561bf8..8ea8bbd 100644 --- a/umn/source/networking/services/nodeport.rst +++ b/umn/source/network/service/nodeport.rst @@ -8,22 +8,22 @@ NodePort Scenario -------- -A Service is exposed on each node's IP address at a static port (NodePort). A ClusterIP Service, to which the NodePort Service will route, is automatically created. By requesting :, you can access a NodePort Service from outside the cluster. +A Service is exposed on each node's IP address at a static port (NodePort). When you create a NodePort Service, Kubernetes automatically allocates an internal IP address (ClusterIP) of the cluster. When clients outside the cluster access :, the traffic will be forwarded to the target pod through the ClusterIP of the NodePort Service. -.. figure:: /_static/images/en-us_image_0000001517743380.png +.. figure:: /_static/images/en-us_image_0000001647417292.png :alt: **Figure 1** NodePort access **Figure 1** NodePort access -Notes and Constraints ---------------------- +Constraints +----------- -- By default, a NodePort Service is accessed within a VPC. If you need to use an EIP to access a NodePort Service through public networks, bind an EIP to the node in the cluster in advance. -- After a Service is created, if the affinity setting is switched from the cluster level to the node level, the connection tracing table will not be cleared. You are advised not to modify the Service affinity setting after the Service is created. If you need to modify it, create a Service again. +- By default, a NodePort Service is accessed within a VPC. To use an EIP to access a NodePort Service through public networks, bind an EIP to the node in the cluster in advance. +- After a Service is created, if the affinity setting is switched from the cluster level to the node level, the connection tracing table will not be cleared. Do not modify the Service affinity setting after the Service is created. To modify it, create a Service again. - CCE Turbo clusters support only cluster-level service affinity. - In VPC network mode, when container A is published through a NodePort service and the service affinity is set to the node level (that is, **externalTrafficPolicy** is set to **local**), container B deployed on the same node cannot access container A through the node IP address and NodePort service. -- When a NodePort service is created in a cluster of v1.21.7 or later, the port on the node is not displayed using **netstat** by default. If the cluster forwarding mode is **iptables**, run the **iptables -t nat -L** command to view the port. If the cluster forwarding mode is **ipvs**, run the **ipvsadm -nL** command to view the port. +- When a NodePort service is created in a cluster of v1.21.7 or later, the port on the node is not displayed using **netstat** by default. If the cluster forwarding mode is **iptables**, run the **iptables -t nat -L** command to view the port. If the cluster forwarding mode is **IPVS**, run the **ipvsadm -Ln** command to view the port. Creating a NodePort Service --------------------------- @@ -35,13 +35,13 @@ Creating a NodePort Service - **Service Name**: Specify a Service name, which can be the same as the workload name. - **Service Type**: Select **NodePort**. - **Namespace**: Namespace to which the workload belongs. - - **Service Affinity**: For details, see :ref:`externalTrafficPolicy (Service Affinity) `. + - **Service Affinity**: For details, see :ref:`externalTrafficPolicy (Service Affinity) `. - **Cluster level**: The IP addresses and access ports of all nodes in a cluster can access the workload associated with the Service. Service access will cause performance loss due to route redirection, and the source IP address of the client cannot be obtained. - **Node level**: Only the IP address and access port of the node where the workload is located can access the workload associated with the Service. Service access will not cause performance loss due to route redirection, and the source IP address of the client can be obtained. - **Selector**: Add a label and click **Add**. A Service selects a pod based on the added label. You can also click **Reference Workload Label** to reference the label of an existing workload. In the dialog box that is displayed, select a workload and click **OK**. - - **Port Settings** + - **Port** - **Protocol**: protocol used by the Service. - **Service Port**: port used by the Service. The port number ranges from 1 to 65535. @@ -53,7 +53,7 @@ Creating a NodePort Service Using kubectl ------------- -You can run kubectl commands to set the access type. This section uses a Nginx workload as an example to describe how to set a NodePort Service using kubectl. +You can run kubectl commands to set the access type. This section uses an Nginx workload as an example to describe how to set a NodePort Service using kubectl. #. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. @@ -187,41 +187,3 @@ You can run kubectl commands to set the access type. This section uses a Nginx w / # - -.. _cce_10_0142__section18134208069: - -externalTrafficPolicy (Service Affinity) ----------------------------------------- - -For a NodePort Service, requests are first sent to the node port, then the Service, and finally the pod backing the Service. The backing pod may be not located in the node receiving the requests. By default, the backend workload can be accessed from any node IP address and service port. If the pod is not on the node that receives the request, the request will be redirected to the node where the pod is located, which may cause performance loss. - -**externalTrafficPolicy** is a configuration parameter of the Service. - -.. code-block:: - - apiVersion: v1 - kind: Service - metadata: - name: nginx-nodeport - spec: - externalTrafficPolicy: local - ports: - - name: service - nodePort: 30000 - port: 80 - protocol: TCP - targetPort: 80 - selector: - app: nginx - type: NodePort - -If the value of **externalTrafficPolicy** is **local**, requests sent from *Node IP address:Service port* will be forwarded only to the pod on the local node. If the node does not have a pod, the requests are suspended. - -The other value of **externalTrafficPolicy** is **cluster** (default value), which indicates that requests are forwarded in a cluster. - -You can set this parameter when creating a Service of the NodePort type on the CCE console. - -The values of **externalTrafficPolicy** are as follows: - -- **cluster**: The IP addresses and access ports of all nodes in a cluster can access the workload associated with the Service. Service access will cause performance loss due to route redirection, and the source IP address of the client cannot be obtained. -- **local**: Only the IP address and access port of the node where the workload is located can access the workload associated with the Service. Service access will not cause performance loss due to route redirection, and the source IP address of the client can be obtained. diff --git a/umn/source/network/service/overview.rst b/umn/source/network/service/overview.rst new file mode 100644 index 0000000..ceda9cc --- /dev/null +++ b/umn/source/network/service/overview.rst @@ -0,0 +1,175 @@ +:original_name: cce_10_0249.html + +.. _cce_10_0249: + +Overview +======== + +Direct Access to a Pod +---------------------- + +After a pod is created, the following problems may occur if you directly access to the pod: + +- The pod can be deleted and created again at any time by a controller such as a Deployment, and the result of accessing the pod becomes unpredictable. +- The IP address of the pod is allocated only after the pod is started. Before the pod is started, the IP address of the pod is unknown. +- An application is usually composed of multiple pods that run the same image. Accessing pods one by one is not efficient. + +For example, an application uses Deployments to create the frontend and backend. The frontend calls the backend for computing, as shown in :ref:`Figure 1 `. Three pods are running in the backend, which are independent and replaceable. When a backend pod is created again, the new pod is assigned with a new IP address, of which the frontend pod is unaware. + +.. _cce_10_0249__en-us_topic_0249851121_fig2173165051811: + +.. figure:: /_static/images/en-us_image_0000001647417852.png + :alt: **Figure 1** Inter-pod access + + **Figure 1** Inter-pod access + +Using Services for Pod Access +----------------------------- + +Kubernetes Services are used to solve the preceding pod access problems. A Service has a fixed IP address. (When a CCE cluster is created, a Service CIDR block is set, which is used to allocate IP addresses to Services.) A Service forwards requests accessing the Service to pods based on labels, and at the same time, performs load balancing for these pods. + +In the preceding example, a Service is added for the frontend pod to access the backend pods. In this way, the frontend pod does not need to be aware of the changes on backend pods, as shown in :ref:`Figure 2 `. + +.. _cce_10_0249__en-us_topic_0249851121_fig163156154816: + +.. figure:: /_static/images/en-us_image_0000001695896373.png + :alt: **Figure 2** Accessing pods through a Service + + **Figure 2** Accessing pods through a Service + +Service Types +------------- + +Kubernetes allows you to specify a Service of a required type. The values and actions of different types of Services are as follows: + +- :ref:`ClusterIP ` + + A ClusterIP Service allows workloads in the same cluster to use their cluster-internal domain names to access each other. + +- :ref:`NodePort ` + + A Service is exposed on each node's IP address at a static port (NodePort). A ClusterIP Service, to which the NodePort Service will route, is automatically created. By requesting :, you can access a NodePort Service from outside the cluster. + +- :ref:`LoadBalancer ` + + LoadBalancer Services can access workloads from the public network through a load balancer, which is more reliable than EIP-based access. LoadBalancer Services are recommended for accessing workloads from outside the cluster. + +.. _cce_10_0249__section18134208069: + +externalTrafficPolicy (Service Affinity) +---------------------------------------- + +For a NodePort and LoadBalancer Service, requests are first sent to the node port, then the Service, and finally the pod backing the Service. The backing pod may be not located in the node receiving the requests. By default, the backend workload can be accessed from any node IP address and service port. If the pod is not on the node that receives the request, the request will be redirected to the node where the pod is located, which may cause performance loss. + +**externalTrafficPolicy** is a configuration parameter of the Service. + +.. code-block:: + + apiVersion: v1 + kind: Service + metadata: + name: nginx-nodeport + spec: + externalTrafficPolicy: Local + ports: + - name: service + nodePort: 30000 + port: 80 + protocol: TCP + targetPort: 80 + selector: + app: nginx + type: NodePort + +If the value of **externalTrafficPolicy** is **Local**, requests sent from *Node IP address:Service port* will be forwarded only to the pod on the local node. If the node does not have a pod, the requests are suspended. + +If the value of **externalTrafficPolicy** is **Cluster**, requests are forwarded within the cluster and the backend workload can be accessed from any node IP address and service port. + +If **externalTrafficPolicy** is not set, the default value **Cluster** will be used. + +You can set this parameter when creating a Service of the NodePort type on the CCE console. + +The values of **externalTrafficPolicy** are as follows: + +- **Cluster**: The IP addresses and access ports of all nodes in a cluster can access the workload associated with the Service. Service access will cause performance loss due to route redirection, and the source IP address of the client cannot be obtained. +- **Local**: Only the IP address and access port of the node where the workload is located can access the workload associated with the Service. Service access will not cause performance loss due to route redirection, and the source IP address of the client can be obtained. In this scenario, Services may fail to be accessed from within the cluster. For details, see :ref:`Why a Service Fail to Be Accessed from Within the Cluster `. + +.. _cce_10_0249__section52631714117: + +Why a Service Fail to Be Accessed from Within the Cluster +--------------------------------------------------------- + +If the service affinity of a Service is set to the node level, that is, the value of **externalTrafficPolicy** is **Local**, the Service may fail to be accessed from within the cluster (specifically, nodes or containers). Information similar to the following is displayed: + +.. code-block:: + + upstream connect error or disconnect/reset before headers. reset reason: connection failure + Or + curl: (7) Failed to connect to 192.168.10.36 port 900: Connection refused + +It is common that a load balancer in a cluster cannot be accessed. The reason is as follows: When Kubernetes creates a Service, kube-proxy adds the access address of the load balancer as an external IP address (External-IP, as shown in the following command output) to iptables or IPVS. If a client inside the cluster initiates a request to access the load balancer, the address is considered as the external IP address of the Service, and the request is directly forwarded by kube-proxy without passing through the load balancer outside the cluster. + +.. code-block:: + + # kubectl get svc nginx + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + nginx LoadBalancer 10.247.76.156 123.**.**.**,192.168.0.133 80:32146/TCP 37s + +When the value of **externalTrafficPolicy** is **Local**, the access failures in different container network models and service forwarding modes are as follows: + +.. note:: + + - For a multi-pod workload, ensure that all pods are accessible. Otherwise, there is a possibility that the access to the workload fails. + - CCE Turbo clusters using Cloud Native 2.0 networking do not support node-level service affinity. + ++------------------------------------------------------+------------------------+----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+ +| Service Type Released on the Server | Access Type | Request Initiation Location on the Client | Tunnel Network Cluster (IPVS) | VPC Network Cluster (IPVS) | Tunnel Network Cluster (iptables) | VPC Network Cluster (iptables) | ++======================================================+========================+==========================================================+=========================================================================================================================+==================================================================================================================+==================================================================================================================+==================================================================================================================+ +| NodePort Service | Public/Private network | Same node as the service pod | Access the IP address and NodePort on the node where the server is located: The access is successful. | Access the IP address and NodePort on the node where the server is located: The access is successful. | Access the IP address and NodePort on the node where the server is located: The access is successful. | Access the IP address and NodePort on the node where the server is located: The access is successful. | +| | | | | | | | +| | | | Access the IP address and NodePort on a node other than the node where the server is located: The access failed. | Access the IP address and NodePort on a node other than the node where the server is located: The access failed. | Access the IP address and NodePort on a node other than the node where the server is located: The access failed. | Access the IP address and NodePort on a node other than the node where the server is located: The access failed. | ++------------------------------------------------------+------------------------+----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+ +| | | Different nodes from the service pod | Access the IP address and NodePort on the node where the server is located: The access is successful. | Access the IP address and NodePort on the node where the server is located: The access is successful. | The access is successful. | The access is successful. | +| | | | | | | | +| | | | Access the IP address and NodePort on a node other than the node where the server is located: The access failed. | Access the IP address and NodePort on a node other than the node where the server is located: The access failed. | | | ++------------------------------------------------------+------------------------+----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+ +| | | Other containers on the same node as the service pod | Access the IP address and NodePort on the node where the server is located: The access is successful. | The access failed. | Access the IP address and NodePort on the node where the server is located: The access is successful. | The access failed. | +| | | | | | | | +| | | | Access the IP address and NodePort on a node other than the node where the server is located: The access is successful. | | Access the IP address and NodePort on a node other than the node where the server is located: The access failed. | | ++------------------------------------------------------+------------------------+----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+ +| | | Other containers on different nodes from the service pod | Access the IP address and NodePort on the node where the server is located: The access is successful. | Access the IP address and NodePort on the node where the server is located: The access is successful. | Access the IP address and NodePort on the node where the server is located: The access is successful. | Access the IP address and NodePort on the node where the server is located: The access is successful. | +| | | | | | | | +| | | | Access the IP address and NodePort on a node other than the node where the server is located: The access failed. | Access the IP address and NodePort on a node other than the node where the server is located: The access failed. | Access the IP address and NodePort on a node other than the node where the server is located: The access failed. | Access the IP address and NodePort on a node other than the node where the server is located: The access failed. | ++------------------------------------------------------+------------------------+----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+ +| LoadBalancer Service using a dedicated load balancer | Private network | Same node as the service pod | The access failed. | The access failed. | The access failed. | The access failed. | ++------------------------------------------------------+------------------------+----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+ +| | | Other containers on the same node as the service pod | The access failed. | The access failed. | The access failed. | The access failed. | ++------------------------------------------------------+------------------------+----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+ + +The following methods can be used to solve this problem: + +- (**Recommended**) In the cluster, use the ClusterIP Service or service domain name for access. + +- Set **externalTrafficPolicy** of the Service to **Cluster**, which means cluster-level service affinity. Note that this affects source address persistence. + + .. code-block:: + + apiVersion: v1 + kind: Service + metadata: + annotations: + kubernetes.io/elb.class: union + kubernetes.io/elb.autocreate: '{"type":"public","bandwidth_name":"cce-bandwidth","bandwidth_chargemode":"bandwidth","bandwidth_size":5,"bandwidth_sharetype":"PER","eip_type":"5_bgp","name":"james"}' + labels: + app: nginx + name: nginx + spec: + externalTrafficPolicy: Cluster + ports: + - name: service0 + port: 80 + protocol: TCP + targetPort: 80 + selector: + app: nginx + type: LoadBalancer diff --git a/umn/source/networking/dns/overview.rst b/umn/source/networking/dns/overview.rst deleted file mode 100644 index 0e8c019..0000000 --- a/umn/source/networking/dns/overview.rst +++ /dev/null @@ -1,59 +0,0 @@ -:original_name: cce_10_0360.html - -.. _cce_10_0360: - -Overview -======== - -Introduction to CoreDNS ------------------------ - -When you create a cluster, the :ref:`coredns add-on ` is installed to resolve domain names in the cluster. - -You can view the pod of the coredns add-on in the kube-system namespace. - -.. code-block:: - - $ kubectl get po --namespace=kube-system - NAME READY STATUS RESTARTS AGE - coredns-7689f8bdf-295rk 1/1 Running 0 9m11s - coredns-7689f8bdf-h7n68 1/1 Running 0 11m - -After coredns is installed, it becomes a DNS. After the Service is created, coredns records the Service name and IP address. In this way, the pod can obtain the Service IP address by querying the Service name from coredns. - -**nginx..svc.cluster.local** is used to access the Service. **nginx** is the Service name, **** is the namespace, and **svc.cluster.local** is the domain name suffix. In actual use, you can omit **.svc.cluster.local** in the same namespace and use the ServiceName. - -An advantage of using ServiceName is that you can write ServiceName into the program when developing the application. In this way, you do not need to know the IP address of a specific Service. - -After the coredns add-on is installed, there is also a Service in the kube-system namespace, as shown below. - -.. code-block:: - - $ kubectl get svc -n kube-system - NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE - coredns ClusterIP 10.247.3.10 53/UDP,53/TCP,8080/TCP 13d - -By default, after other pods are created, the address of the coredns Service is written as the address of the domain name resolution server in the **/etc/resolv.conf** file of the pod. Create a pod and view the **/etc/resolv.conf** file as follows: - -.. code-block:: - - $ kubectl exec test01-6cbbf97b78-krj6h -it -- /bin/sh - / # cat /etc/resolv.conf - nameserver 10.247.3.10 - search default.svc.cluster.local svc.cluster.local cluster.local - options ndots:5 timeout single-request-reopen - -When a user accesses the *Service name:Port* of the Nginx pod, the IP address of the Nginx Service is resolved from CoreDNS, and then the IP address of the Nginx Service is accessed. In this way, the user can access the backend Nginx pod. - - -.. figure:: /_static/images/en-us_image_0000001568822905.png - :alt: **Figure 1** Example of domain name resolution in a cluster - - **Figure 1** Example of domain name resolution in a cluster - -Related Operations ------------------- - -You can also configure DNS in a workload. For details, see :ref:`DNS Configuration `. - -You can also use coredns to implement user-defined domain name resolution. For details, see :ref:`Using CoreDNS for Custom Domain Name Resolution `. diff --git a/umn/source/networking/dns/using_coredns_for_custom_domain_name_resolution.rst b/umn/source/networking/dns/using_coredns_for_custom_domain_name_resolution.rst deleted file mode 100644 index 6632e80..0000000 --- a/umn/source/networking/dns/using_coredns_for_custom_domain_name_resolution.rst +++ /dev/null @@ -1,257 +0,0 @@ -:original_name: cce_10_0361.html - -.. _cce_10_0361: - -Using CoreDNS for Custom Domain Name Resolution -=============================================== - -Challenges ----------- - -When using CCE, you may need to resolve custom internal domain names in the following scenarios: - -- In the legacy code, a fixed domain name is configured for calling other internal services. If the system decides to use Kubernetes Services, the code refactoring workload could be heavy. -- A service is created outside the cluster. Data in the cluster needs to be sent to the service through a fixed domain name. - -Solution --------- - -There are several CoreDNS-based solutions for custom domain name resolution: - -- :ref:`Configuring the Stub Domain for CoreDNS `: You can add it on the console, which is easy to operate. -- :ref:`Using the CoreDNS Hosts plug-in to configure resolution for any domain name `: You can add any record set, which is similar to adding a record set in the local **/etc/hosts** file. -- :ref:`Using the CoreDNS Rewrite plug-in to point a domain name to a service in the cluster `: A nickname is assigned to the Kubernetes Service. You do not need to know the IP address of the resolution record in advance. -- :ref:`Using the CoreDNS Forward plug-in to set the self-built DNS as the upstream DNS `: The self-built DNS can manage a large number of resolution records. You do not need to modify the CoreDNS configuration when adding or deleting records. - -Precautions ------------ - -Improper modification on CoreDNS configuration may cause domain name resolution failures in the cluster. Perform tests before and after the modification. - -.. _cce_10_0361__section5202157467: - -Configuring the Stub Domain for CoreDNS ---------------------------------------- - -Cluster administrators can modify the ConfigMap for the CoreDNS Corefile to change how service discovery works. - -Assume that a cluster administrator has a Consul DNS server located at 10.150.0.1 and all Consul domain names have the suffix **.consul.local**. - -#. Log in to the CCE console and access the cluster console. - -#. In the navigation pane, choose **Add-ons**. On the displayed page, click **Edit** under CoreDNS. - -#. Add a stub domain in the **Parameters** area. - - Modify the **stub_domains** parameter in the format of a key-value pair. The key is a DNS suffix domain name, and the value is a DNS IP address or a group of DNS IP addresses. - - .. code-block:: - - { - "stub_domains": { - "consul.local": [ - "10.150.0.1" - ] - }, - "upstream_nameservers": [] - } - -#. Click **OK**. - -You can also modify the ConfigMap as follows: - -.. important:: - - The parameter values in red in the example can only be modified and cannot be deleted. - -.. code-block:: - - $ kubectl edit configmap coredns -n kube-system - apiVersion: v1 - data: - Corefile: |- - .:5353 { - bind {$POD_IP} - cache 30 - errors - health {$POD_IP}:8080 - kubernetes cluster.local in-addr.arpa ip6.arpa { - pods insecure - fallthrough in-addr.arpa ip6.arpa - } - loadbalance round_robin - prometheus {$POD_IP}:9153 - forward . /etc/resolv.conf { - policy random - } - reload - } - - consul.local:5353 { - bind {$POD_IP} - errors - cache 30 - forward . 10.150.0.1 - } - kind: ConfigMap - metadata: - creationTimestamp: "2022-05-04T04:42:24Z" - labels: - app: coredns - k8s-app: coredns - kubernetes.io/cluster-service: "true" - kubernetes.io/name: CoreDNS - release: cceaddon-coredns - name: coredns - namespace: kube-system - resourceVersion: "8663493" - uid: bba87142-9f8d-4056-b8a6-94c3887e9e1d - -.. _cce_10_0361__section106211954135311: - -Modifying the CoreDNS Hosts Configuration File ----------------------------------------------- - -#. Use kubectl to connect to the cluster. - -#. Modify the CoreDNS configuration file and add the custom domain name to the hosts file. - - Point **www.example.com** to **192.168.1.1**. When CoreDNS resolves **www.example.com**, **192.168.1.1** is returned. - - .. important:: - - The fallthrough field must be configured. **fallthrough** indicates that when the domain name to be resolved cannot be found in the hosts file, the resolution task is transferred to the next CoreDNS plug-in. If **fallthrough** is not specified, the task ends and the domain name resolution stops. As a result, the domain name resolution in the cluster fails. - - For details about how to configure the hosts file, visit https://coredns.io/plugins/hosts/. - - .. code-block:: - - $ kubectl edit configmap coredns -n kube-system - apiVersion: v1 - data: - Corefile: |- - .:5353 { - bind {$POD_IP} - cache 30 - errors - health {$POD_IP}:8080 - kubernetes cluster.local in-addr.arpa ip6.arpa { - pods insecure - fallthrough in-addr.arpa ip6.arpa - } - hosts { - 192.168.1.1 www.example.com - fallthrough - } - loadbalance round_robin - prometheus {$POD_IP}:9153 - forward . /etc/resolv.conf - reload - } - kind: ConfigMap - metadata: - creationTimestamp: "2021-08-23T13:27:28Z" - labels: - app: coredns - k8s-app: coredns - kubernetes.io/cluster-service: "true" - kubernetes.io/name: CoreDNS - release: cceaddon-coredns - name: coredns - namespace: kube-system - resourceVersion: "460" - selfLink: /api/v1/namespaces/kube-system/configmaps/coredns - uid: be64aaad-1629-441f-8a40-a3efc0db9fa9 - - After modifying the hosts file in CoreDNS, you do not need to configure the hosts file in each pod. - -.. _cce_10_0361__section2213823544: - -Adding the CoreDNS Rewrite Configuration to Point the Domain Name to Services in the Cluster --------------------------------------------------------------------------------------------- - -Use the Rewrite plug-in of CoreDNS to resolve a specified domain name to the domain name of a Service. - -#. Use kubectl to connect to the cluster. - -#. Modify the CoreDNS configuration file to point **example.com** to the **example** service in the **default** namespace. - - .. code-block:: - - $ kubectl edit configmap coredns -n kube-system - apiVersion: v1 - data: - Corefile: |- - .:5353 { - bind {$POD_IP} - cache 30 - errors - health {$POD_IP}:8080 - kubernetes cluster.local in-addr.arpa ip6.arpa { - pods insecure - fallthrough in-addr.arpa ip6.arpa - } - rewrite name example.com example.default.svc.cluster.local - loadbalance round_robin - prometheus {$POD_IP}:9153 - forward . /etc/resolv.conf - reload - } - kind: ConfigMap - metadata: - creationTimestamp: "2021-08-23T13:27:28Z" - labels: - app: coredns - k8s-app: coredns - kubernetes.io/cluster-service: "true" - kubernetes.io/name: CoreDNS - release: cceaddon-coredns - name: coredns - namespace: kube-system - resourceVersion: "460" - selfLink: /api/v1/namespaces/kube-system/configmaps/coredns - uid: be64aaad-1629-441f-8a40-a3efc0db9fa9 - -.. _cce_10_0361__section677819913541: - -Using CoreDNS to Cascade Self-Built DNS ---------------------------------------- - -#. Use kubectl to connect to the cluster. - -#. Modify the CoreDNS configuration file and change **/etc/resolv.conf** following **forward** to the IP address of the external DNS server. - - .. code-block:: - - $ kubectl edit configmap coredns -n kube-system - apiVersion: v1 - data: - Corefile: |- - .:5353 { - bind {$POD_IP} - cache 30 - errors - health {$POD_IP}:8080 - kubernetes cluster.local in-addr.arpa ip6.arpa { - pods insecure - fallthrough in-addr.arpa ip6.arpa - } - loadbalance round_robin - prometheus {$POD_IP}:9153 - forward . 192.168.1.1 - reload - } - kind: ConfigMap - metadata: - creationTimestamp: "2021-08-23T13:27:28Z" - labels: - app: coredns - k8s-app: coredns - kubernetes.io/cluster-service: "true" - kubernetes.io/name: CoreDNS - release: cceaddon-coredns - name: coredns - namespace: kube-system - resourceVersion: "460" - selfLink: /api/v1/namespaces/kube-system/configmaps/coredns - uid: be64aaad-1629-441f-8a40-a3efc0db9fa9 diff --git a/umn/source/networking/ingresses/index.rst b/umn/source/networking/ingresses/index.rst deleted file mode 100644 index 36f8d50..0000000 --- a/umn/source/networking/ingresses/index.rst +++ /dev/null @@ -1,18 +0,0 @@ -:original_name: cce_10_0248.html - -.. _cce_10_0248: - -Ingresses -========= - -- :ref:`Ingress Overview ` -- :ref:`Using ELB Ingresses on the Console ` -- :ref:`Using kubectl to Create an ELB Ingress ` - -.. toctree:: - :maxdepth: 1 - :hidden: - - ingress_overview - using_elb_ingresses_on_the_console - using_kubectl_to_create_an_elb_ingress diff --git a/umn/source/networking/ingresses/ingress_overview.rst b/umn/source/networking/ingresses/ingress_overview.rst deleted file mode 100644 index 2cd2f45..0000000 --- a/umn/source/networking/ingresses/ingress_overview.rst +++ /dev/null @@ -1,43 +0,0 @@ -:original_name: cce_10_0094.html - -.. _cce_10_0094: - -Ingress Overview -================ - -Why We Need Ingresses ---------------------- - -A Service is generally used to forward access requests based on TCP and UDP and provide layer-4 load balancing for clusters. However, in actual scenarios, if there is a large number of HTTP/HTTPS access requests on the application layer, the Service cannot meet the forwarding requirements. Therefore, the Kubernetes cluster provides an HTTP-based access mode, that is, ingress. - -An ingress is an independent resource in the Kubernetes cluster and defines rules for forwarding external access traffic. As shown in :ref:`Figure 1 `, you can customize forwarding rules based on domain names and URLs to implement fine-grained distribution of access traffic. - -.. _cce_10_0094__fig18155819416: - -.. figure:: /_static/images/en-us_image_0000001517903200.png - :alt: **Figure 1** Ingress diagram - - **Figure 1** Ingress diagram - -The following describes the ingress-related definitions: - -- Ingress object: a set of access rules that forward requests to specified Services based on domain names or URLs. It can be added, deleted, modified, and queried by calling APIs. -- Ingress Controller: an executor for request forwarding. It monitors the changes of resource objects such as ingresses, Services, endpoints, secrets (mainly TLS certificates and keys), nodes, and ConfigMaps in real time, parses rules defined by ingresses, and forwards requests to the corresponding backend Services. - -Working Principle of ELB Ingress Controller -------------------------------------------- - -ELB Ingress Controller developed by CCE implements layer-7 network access for the internet and intranet (in the same VPC) based on ELB and distributes access traffic to the corresponding Services using different URLs. - -ELB Ingress Controller is deployed on the master node and bound to the load balancer in the VPC where the cluster resides. Different domain names, ports, and forwarding policies can be configured for the same load balancer (with the same IP address). :ref:`Figure 2 ` shows the working principle of ELB Ingress Controller. - -#. A user creates an ingress object and configures a traffic access rule in the ingress, including the load balancer, URL, SSL, and backend service port. -#. When Ingress Controller detects that the ingress object changes, it reconfigures the listener and backend server route on the ELB side according to the traffic access rule. -#. When a user accesses a workload, the traffic is forwarded to the corresponding backend service port based on the forwarding policy configured on ELB, and then forwarded to each associated workload through the Service. - -.. _cce_10_0094__fig122542486129: - -.. figure:: /_static/images/en-us_image_0000001568822925.png - :alt: **Figure 2** Working principle of ELB Ingress Controller - - **Figure 2** Working principle of ELB Ingress Controller diff --git a/umn/source/networking/ingresses/using_elb_ingresses_on_the_console.rst b/umn/source/networking/ingresses/using_elb_ingresses_on_the_console.rst deleted file mode 100644 index f0b2f63..0000000 --- a/umn/source/networking/ingresses/using_elb_ingresses_on_the_console.rst +++ /dev/null @@ -1,135 +0,0 @@ -:original_name: cce_10_0251.html - -.. _cce_10_0251: - -Using ELB Ingresses on the Console -================================== - -Prerequisites -------------- - -- An ingress provides network access for backend workloads. Ensure that a workload is available in a cluster. If no workload is available, deploy a workload by referring to :ref:`Creating a Deployment `, :ref:`Creating a StatefulSet `, or :ref:`Creating a DaemonSet `. -- A NodePort Service has been configured for the workload. For details about how to configure the Service, see :ref:`NodePort `. -- Dedicated load balancers must be the application type (HTTP/HTTPS) supporting private networks (with a private IP). -- In ELB passthrough networking (CCE Turbo cluster + dedicated load balancer), ELB Ingress supports ClusterIP Services. In other scenarios, ELB Ingress supports NodePort Services. - -Notes ------ - -- It is recommended that other resources not use the load balancer automatically created by an ingress. Otherwise, the load balancer will be occupied when the ingress is deleted, resulting in residual resources. -- After an ingress is created, upgrade and maintain the configuration of the selected load balancers on the CCE console. Do not modify the configuration on the ELB console. Otherwise, the ingress service may be abnormal. -- The URL registered in an ingress forwarding policy must be the same as the URL exposed by the backend Service. Otherwise, a 404 error will be returned. -- In a cluster using the IPVS proxy mode, if the ingress and Service use the same ELB load balancer, the ingress cannot be accessed from the nodes and containers in the cluster because kube-proxy mounts the LoadBalancer Service address to the ipvs-0 bridge. This bridge intercepts the traffic of the load balancer connected to the ingress. You are advised to use different ELB load balancers for the ingress and Service. - -Adding an ELB Ingress ---------------------- - -This section uses an Nginx workload as an example to describe how to add an ELB ingress. - -#. Log in to the CCE console and click the cluster name to access the cluster console. - -#. Choose **Networking** in the navigation pane, click the **Ingresses** tab, and click **Create Service** in the upper right corner. - -#. Set ingress parameters. - - - **Name**: Specify a name of an ingress, for example, **ingress-demo**. - - - **Load Balancer** - - Select the load balancer to interconnect. Only load balancers in the same VPC as the cluster are supported. If no load balancer is available, click **Create Load Balancer** to create one on the ELB console. - - Dedicated load balancers must support HTTP and the network type must support private networks. - - - **Listener**: Ingress configures a listener for the load balancer, which listens to requests from the load balancer and distributes traffic. After the configuration is complete, a listener is created on the load balancer. The default listener name is *k8s___*, for example, *k8s_HTTP_80*. - - - **Front-End Protocol**: **HTTP** and **HTTPS** are available. - - - **External Port**: Port number that is open to the ELB service address. The port number can be specified randomly. - - - **Server Certificate**: When an HTTPS listener is created for a load balancer, you need to bind a certificate to the load balancer to support encrypted authentication for HTTPS data transmission. - - .. note:: - - If there is already an HTTPS ingress for the chosen port on the load balancer, the certificate of the new HTTPS ingress must be the same as the certificate of the existing ingress. This means that a listener has only one certificate. If two certificates, each with a different ingress, are added to the same listener of the same load balancer, only the certificate added earliest takes effect on the load balancer. - - - **SNI**: Server Name Indication (SNI) is an extended protocol of TLS. It allows multiple TLS-based access domain names to be provided for external systems using the same IP address and port. Different domain names can use different security certificates. After SNI is enabled, the client is allowed to submit the requested domain name when initiating a TLS handshake request. After receiving the TLS request, the load balancer searches for the certificate based on the domain name in the request. If the certificate corresponding to the domain name is found, the load balancer returns the certificate for authorization. Otherwise, the default certificate (server certificate) is returned for authorization. - - .. note:: - - - The **SNI** option is available only when **HTTPS** is selected. - - - This function is supported only for clusters of v1.15.11 and later. - - Specify the domain name for the SNI certificate. Only one domain name can be specified for each certificate. Wildcard-domain certificates are supported. - - - **Security Policy**: combinations of different TLS versions and supported cipher suites available to HTTPS listeners. - - For details about security policies, see *Elastic Load Balance User Guide*. - - .. note:: - - - **Security Policy** is available only when **HTTPS** is selected. - - This function is supported only for clusters of v1.17.9 and later. - - - **Forwarding Policies**: When the access address of a request matches the forwarding policy (a forwarding policy consists of a domain name and URL, for example, 10.117.117.117:80/helloworld), the request is forwarded to the corresponding target Service for processing. Click |image1| to add multiple forwarding policies. - - - **Domain Name**: actual domain name. Ensure that the domain name has been registered and archived. Once a domain name rule is configured, you must use the domain name for access. - - - **URL Matching Rule**: - - - **Prefix match**: If the URL is set to **/healthz**, the URL that meets the prefix can be accessed. For example, **/healthz/v1** and **/healthz/v2**. - - **Exact match**: The URL can be accessed only when it is fully matched. For example, if the URL is set to **/healthz**, only /healthz can be accessed. - - **Regular expression**: The URL is matched based on the regular expression. For example, if the regular expression is **/[A-Za-z0-9_.-]+/test**, all URLs that comply with this rule can be accessed, for example, **/abcA9/test** and **/v1-Ab/test**. Two regular expression standards are supported: POSIX and Perl. - - - **URL**: access path to be registered, for example, **/healthz**. - - .. note:: - - The URL added here must exist in the backend application. Otherwise, the forwarding fails. - - For example, the default access URL of the Nginx application is **/usr/share/nginx/html**. When adding **/test** to the ingress forwarding policy, ensure that your Nginx application contains the same URL, that is, **/usr/share/nginx/html/test**, otherwise, 404 is returned. - - - **Destination Service**: Select an existing Service or create a Service. Services that do not meet search criteria are automatically filtered out. - - - .. _cce_10_0251__li118614181492: - - **Destination Service Port**: Select the access port of the destination Service. - - - **Set ELB**: - - - **Distribution Policy**: Three algorithms are available: weighted round robin, weighted least connections algorithm, or source IP hash. - - .. note:: - - - **Weighted round robin**: Requests are forwarded to different servers based on their weights, which indicate server processing performance. Backend servers with higher weights receive proportionately more requests, whereas equal-weighted servers receive the same number of requests. This algorithm is often used for short connections, such as HTTP services. - - **Weighted least connections**: In addition to the weight assigned to each server, the number of connections processed by each backend server is also considered. Requests are forwarded to the server with the lowest connections-to-weight ratio. Building on **least connections**, the **weighted least connections** algorithm assigns a weight to each server based on their processing performance. This algorithm is often used for persistent connections, such as database connections. - - **Source IP hash**: The source IP address of each request is calculated using the hash algorithm to obtain a unique hash key, and all backend servers are numbered. The generated key allocates the client to a particular server. This allows requests from different clients to be routed based on source IP addresses and ensures that a client is directed to the same server as always. This algorithm applies to TCP connections without cookies. - - - **Type**: This function is disabled by default. You can select **Load balancer cookie**. - - **Health Check**: configured for the load balancer. When TCP is selected during the :ref:`port settings `, you can choose either TCP or HTTP. Currently, UDP is not supported. By default, the service port (Node Port and container port of the Service) is used for health check. You can also specify another port for health check. After the port is specified, a service port named **cce-healthz** will be added for the Service. - - - **Operation**: Click **Delete** to delete the configuration. - - - **Annotation**: Ingresses provide some advanced CCE functions, which are implemented by annotations. When you use kubectl to create a container, annotations will be used. For details, see :ref:`Creating an Ingress - Automatically Creating a Load Balancer ` and :ref:`Creating an Ingress - Interconnecting with an Existing Load Balancer `. - -#. After the configuration is complete, click **OK**. After the ingress is created, it is displayed in the ingress list. - - On the ELB console, you can view the ELB automatically created through CCE. The default name is **cce-lb-ingress.UID**. Click the ELB name to access its details page. On the **Listeners** tab page, view the route settings of the ingress, including the URL, listener port, and backend server group port. - - .. important:: - - After the ingress is created, upgrade and maintain the selected load balancer on the CCE console. Do not maintain the load balancer on the ELB console. Otherwise, the ingress service may be abnormal. - -#. Access the /healthz interface of the workload, for example, workload **defaultbackend**. - - a. Obtain the access address of the **/healthz** interface of the workload. The access address consists of the load balancer IP address, external port, and mapping URL, for example, 10.**.**.**:80/healthz. - - b. Enter the URL of the /healthz interface, for example, http://10.**.**.**:80/healthz, in the address box of the browser to access the workload, as shown in :ref:`Figure 1 `. - - .. _cce_10_0251__fig17115192714367: - - .. figure:: /_static/images/en-us_image_0000001518062672.png - :alt: **Figure 1** Accessing the /healthz interface of defaultbackend - - **Figure 1** Accessing the /healthz interface of defaultbackend - -.. |image1| image:: /_static/images/en-us_image_0000001568822825.png diff --git a/umn/source/networking/services/index.rst b/umn/source/networking/services/index.rst deleted file mode 100644 index 590a08b..0000000 --- a/umn/source/networking/services/index.rst +++ /dev/null @@ -1,26 +0,0 @@ -:original_name: cce_10_0247.html - -.. _cce_10_0247: - -Services -======== - -- :ref:`Service Overview ` -- :ref:`Intra-Cluster Access (ClusterIP) ` -- :ref:`NodePort ` -- :ref:`LoadBalancer ` -- :ref:`Headless Service ` -- :ref:`Service Annotations ` -- :ref:`Configuring Health Check for Multiple Ports ` - -.. toctree:: - :maxdepth: 1 - :hidden: - - service_overview - intra-cluster_access_clusterip - nodeport - loadbalancer - headless_service - service_annotations - configuring_health_check_for_multiple_ports diff --git a/umn/source/networking/services/service_annotations.rst b/umn/source/networking/services/service_annotations.rst deleted file mode 100644 index 487712d..0000000 --- a/umn/source/networking/services/service_annotations.rst +++ /dev/null @@ -1,186 +0,0 @@ -:original_name: cce_10_0385.html - -.. _cce_10_0385: - -Service Annotations -=================== - -CCE allows you to add annotations to a YAML file to realize some advanced Service functions. The following table describes the annotations you can add. - -The annotations of a Service are the parameters that need to be specified for connecting to a load balancer. For details about how to use the annotations, see :ref:`Using kubectl to Create a Service (Automatically Creating a Load Balancer) `. - -.. table:: **Table 1** Service annotations - - +-------------------------------------------+----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------+------------------------------------------------+ - | Parameter | Type | Description | Default Value on the Console | Supported Cluster Version | - +===========================================+====================================================+=========================================================================================================================================================================================================+==============================+================================================+ - | kubernetes.io/elb.class | String | Select a proper load balancer type. | performance | v1.9 or later | - | | | | | | - | | | The value can be: | | | - | | | | | | - | | | - **union**: shared load balancer | | | - | | | - **performance**: dedicated load balancer, which can be used only in clusters of v1.17 and later. | | | - +-------------------------------------------+----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------+------------------------------------------------+ - | kubernetes.io/elb.id | String | ID of a load balancer. The value can contain 1 to 100 characters. | None | v1.9 or later | - | | | | | | - | | | Mandatory when an existing load balancer is to be associated. | | | - | | | | | | - | | | **How to obtain**: | | | - | | | | | | - | | | On the management console, click **Service List**, and choose **Networking** > **Elastic Load Balance**. Click the name of the target load balancer. On the **Summary** tab page, find and copy the ID. | | | - +-------------------------------------------+----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------+------------------------------------------------+ - | kubernetes.io/elb.subnet-id | String | ID of the subnet where the cluster is located. The value can contain 1 to 100 characters. | None | Mandatory for versions earlier than v1.11.7-r0 | - | | | | | | - | | | - Mandatory when a cluster of v1.11.7-r0 or earlier is to be automatically created. | | Discarded in versions later than v1.11.7-r0 | - | | | - Optional for clusters later than v1.11.7-r0. | | | - +-------------------------------------------+----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------+------------------------------------------------+ - | kubernetes.io/elb.autocreate | :ref:`Table 2 ` | Whether to automatically create a load balancer associated with the Service. | None | v1.9 or later | - | | | | | | - | | | **Example:** | | | - | | | | | | - | | | - If a public network load balancer will be automatically created, set this parameter to the following value: | | | - | | | | | | - | | | {"type":"public","bandwidth_name":"cce-bandwidth-1551163379627","bandwidth_chargemode":"bandwidth","bandwidth_size":5,"bandwidth_sharetype":"PER","eip_type":"5_bgp","name":"james"} | | | - | | | | | | - | | | - If a private network load balancer will be automatically created, set this parameter to the following value: | | | - | | | | | | - | | | {"type":"inner","name":"A-location-d-test"} | | | - +-------------------------------------------+----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------+------------------------------------------------+ - | kubernetes.io/elb.lb-algorithm | String | Specifies the load balancing algorithm of the backend server group. | ROUND_ROBIN | v1.9 or later | - | | | | | | - | | | Value range: | | | - | | | | | | - | | | - **ROUND_ROBIN**: weighted round robin algorithm | | | - | | | - **LEAST_CONNECTIONS**: weighted least connections algorithm | | | - | | | - **SOURCE_IP**: source IP hash algorithm | | | - | | | | | | - | | | When the value is **SOURCE_IP**, the weights of backend servers in the server group are invalid. | | | - +-------------------------------------------+----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------+------------------------------------------------+ - | kubernetes.io/elb.health-check-flag | String | Whether to enable the ELB health check. | off | v1.9 or later | - | | | | | | - | | | - Enabling health check: Leave blank this parameter or set it to **on**. | | | - | | | - Disabling health check: Set this parameter to **off**. | | | - | | | | | | - | | | If this parameter is enabled, the :ref:`kubernetes.io/elb.health-check-option ` field must also be specified at the same time. | | | - +-------------------------------------------+----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------+------------------------------------------------+ - | kubernetes.io/elb.health-check-option | :ref:`Table 3 ` | ELB health check configuration items. | None | v1.9 or later | - +-------------------------------------------+----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------+------------------------------------------------+ - | kubernetes.io/elb.session-affinity-mode | String | Listeners ensure session stickiness based on IP addresses. Requests from the same IP address will be forwarded to the same backend server. | None | v1.9 or later | - | | | | | | - | | | - Disabling sticky session: Do not set this parameter. | | | - | | | - Enabling sticky session: Set this parameter to **SOURCE_IP**, indicating that the sticky session is based on the source IP address. | | | - +-------------------------------------------+----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------+------------------------------------------------+ - | kubernetes.io/elb.session-affinity-option | :ref:`Table 4 ` | Sticky session timeout. | None | v1.9 or later | - +-------------------------------------------+----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------+------------------------------------------------+ - | kubernetes.io/hws-hostNetwork | Boolean | Whether the workload Services use the host network. Setting this parameter to **true** will enable the load balancer to forward requests to the host network. | None | v1.9 or later | - | | | | | | - | | | The value is **true** or **false**. | | | - | | | | | | - | | | The default value is **false**, indicating that the host network is not used. | | | - +-------------------------------------------+----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------+------------------------------------------------+ - -.. _cce_10_0385__table148341447193017: - -.. table:: **Table 2** Data structure of the elb.autocreate field - - +----------------------+---------------------------------------+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Mandatory | Type | Description | - +======================+=======================================+==================+================================================================================================================================================================================================================================================================================================================================================+ - | name | No | String | Name of the automatically created load balancer. | - | | | | | - | | | | Value range: 1 to 64 characters, including lowercase letters, digits, and underscores (_). The value must start with a lowercase letter and end with a lowercase letter or digit. | - | | | | | - | | | | Default: **cce-lb+service.UID** | - +----------------------+---------------------------------------+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | type | No | String | Network type of the load balancer. | - | | | | | - | | | | - **public**: public network load balancer | - | | | | - **inner**: private network load balancer | - | | | | | - | | | | Default: **inner** | - +----------------------+---------------------------------------+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | bandwidth_name | Yes for public network load balancers | String | Bandwidth name. The default value is **cce-bandwidth-*****\***. | - | | | | | - | | | | Value range: 1 to 64 characters, including lowercase letters, digits, and underscores (_). The value must start with a lowercase letter and end with a lowercase letter or digit. | - +----------------------+---------------------------------------+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | bandwidth_chargemode | No | String | Bandwidth mode. | - +----------------------+---------------------------------------+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | bandwidth_size | Yes for public network load balancers | Integer | Bandwidth size. The default value is 1 to 2000 Mbit/s. Configure this parameter based on the bandwidth range allowed in your region. | - +----------------------+---------------------------------------+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | bandwidth_sharetype | Yes for public network load balancers | String | Bandwidth sharing mode. | - | | | | | - | | | | - **PER**: dedicated bandwidth. | - +----------------------+---------------------------------------+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | eip_type | Yes for public network load balancers | String | EIP type. | - | | | | | - | | | | - **5_bgp**: dynamic BGP | - | | | | - **5_sbgp**: static BGP | - +----------------------+---------------------------------------+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | available_zone | Yes | Array of strings | AZ where the load balancer is located. | - | | | | | - | | | | This parameter is available only for dedicated load balancers. | - +----------------------+---------------------------------------+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | l4_flavor_name | Yes | String | Flavor name of the layer-4 load balancer. | - | | | | | - | | | | This parameter is available only for dedicated load balancers. | - +----------------------+---------------------------------------+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | l7_flavor_name | No | String | Flavor name of the layer-7 load balancer. | - | | | | | - | | | | This parameter is available only for dedicated load balancers. | - +----------------------+---------------------------------------+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | elb_virsubnet_ids | No | Array of strings | Subnet where the backend server of the load balancer is located. If this parameter is left blank, the default cluster subnet is used. Load balancers occupy different number of subnet IP addresses based on their specifications. Do not use the CIDR blocks of other resources (such as clusters and nodes) as the load balancer CIDR block. | - | | | | | - | | | | This parameter is available only for dedicated load balancers. | - | | | | | - | | | | Example: | - | | | | | - | | | | .. code-block:: | - | | | | | - | | | | "elb_virsubnet_ids": [ | - | | | | "14567f27-8ae4-42b8-ae47-9f847a4690dd" | - | | | | ] | - +----------------------+---------------------------------------+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -.. _cce_10_0385__table19192143412319: - -.. table:: **Table 3** Data structure description of the elb.health-check-option field - - +-----------------+-----------------+-----------------+----------------------------------------------------------------------------+ - | Parameter | Mandatory | Type | Description | - +=================+=================+=================+============================================================================+ - | delay | No | String | Initial waiting time (in seconds) for starting the health check. | - | | | | | - | | | | Value range: 1 to 50. Default value: **5** | - +-----------------+-----------------+-----------------+----------------------------------------------------------------------------+ - | timeout | No | String | Health check timeout, in seconds. | - | | | | | - | | | | Value range: 1 to 50. Default value: **10** | - +-----------------+-----------------+-----------------+----------------------------------------------------------------------------+ - | max_retries | No | String | Maximum number of health check retries. | - | | | | | - | | | | Value range: 1 to 10. Default value: **3** | - +-----------------+-----------------+-----------------+----------------------------------------------------------------------------+ - | protocol | No | String | Health check protocol. | - | | | | | - | | | | Default value: protocol of the associated Service | - | | | | | - | | | | Value options: **TCP**, **UDP**, or **HTTP** | - +-----------------+-----------------+-----------------+----------------------------------------------------------------------------+ - | path | No | String | Health check URL. This parameter needs to be configured when HTTP is used. | - | | | | | - | | | | Default value: **/** | - | | | | | - | | | | The value can contain 1 to 10,000 characters. | - +-----------------+-----------------+-----------------+----------------------------------------------------------------------------+ - -.. _cce_10_0385__table3340195463412: - -.. table:: **Table 4** Data structure of the elb.session-affinity-option field - - +---------------------+-----------------+-----------------+------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Mandatory | Type | Description | - +=====================+=================+=================+==============================================================================================================================+ - | persistence_timeout | Yes | String | Sticky session timeout, in minutes. This parameter is valid only when **elb.session-affinity-mode** is set to **SOURCE_IP**. | - | | | | | - | | | | Value range: 1 to 60. Default value: **60** | - +---------------------+-----------------+-----------------+------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/networking/services/service_overview.rst b/umn/source/networking/services/service_overview.rst deleted file mode 100644 index eb88125..0000000 --- a/umn/source/networking/services/service_overview.rst +++ /dev/null @@ -1,55 +0,0 @@ -:original_name: cce_10_0249.html - -.. _cce_10_0249: - -Service Overview -================ - -Direct Access to a Pod ----------------------- - -After a pod is created, the following problems may occur if you directly access to the pod: - -- The pod can be deleted and created again at any time by a controller such as a Deployment, and the result of accessing the pod becomes unpredictable. -- The IP address of the pod is allocated only after the pod is started. Before the pod is started, the IP address of the pod is unknown. -- An application is usually composed of multiple pods that run the same image. Accessing pods one by one is not efficient. - -For example, an application uses Deployments to create the frontend and backend. The frontend calls the backend for computing, as shown in :ref:`Figure 1 `. Three pods are running in the backend, which are independent and replaceable. When a backend pod is created again, the new pod is assigned with a new IP address, of which the frontend pod is unaware. - -.. _cce_10_0249__en-us_topic_0249851121_fig2173165051811: - -.. figure:: /_static/images/en-us_image_0000001517743624.png - :alt: **Figure 1** Inter-pod access - - **Figure 1** Inter-pod access - -Using Services for Pod Access ------------------------------ - -Kubernetes Services are used to solve the preceding pod access problems. A Service has a fixed IP address. (When a CCE cluster is created, a Service CIDR block is set, which is used to allocate IP addresses to Services.) A Service forwards requests accessing the Service to pods based on labels, and at the same time, performs load balancing for these pods. - -In the preceding example, a Service is added for the frontend pod to access the backend pods. In this way, the frontend pod does not need to be aware of the changes on backend pods, as shown in :ref:`Figure 2 `. - -.. _cce_10_0249__en-us_topic_0249851121_fig163156154816: - -.. figure:: /_static/images/en-us_image_0000001517743432.png - :alt: **Figure 2** Accessing pods through a Service - - **Figure 2** Accessing pods through a Service - -Service Types -------------- - -Kubernetes allows you to specify a Service of a required type. The values and actions of different types of Services are as follows: - -- :ref:`ClusterIP ` - - A ClusterIP Service allows workloads in the same cluster to use their cluster-internal domain names to access each other. - -- :ref:`NodePort ` - - A NodePort Service is exposed on each node's IP at a static port. A ClusterIP Service, to which the NodePort Service routes, is automatically created. By requesting <*NodeIP*>:<*NodePort*>, you can access a NodePort Service from outside the cluster. - -- :ref:`LoadBalancer ` - - A workload can be accessed from public networks through a load balancer, which is more secure and reliable than EIP. diff --git a/umn/source/node_pools/creating_a_node_pool.rst b/umn/source/node_pools/creating_a_node_pool.rst index a60943e..27979fa 100644 --- a/umn/source/node_pools/creating_a_node_pool.rst +++ b/umn/source/node_pools/creating_a_node_pool.rst @@ -20,7 +20,7 @@ Procedure #. Log in to the CCE console. -#. Click the cluster name and access the cluster console. Choose **Nodes** in the navigation pane and click the **Node Pools** tab on the right. +#. Click the cluster name to access the cluster console. Choose **Nodes** in the navigation pane on the left and click the **Node Pools** tab on the right. #. In the upper right corner of the page, click **Create Node Pool**. @@ -60,15 +60,15 @@ Procedure | | | | | **Scale-in cooling interval configured in a node pool** | | | | - | | This interval indicates the period during which nodes added to the current node pool after a scale-out operation cannot be deleted. This interval takes effect at the node pool level. | + | | This interval indicates the period during which nodes added to the current node pool after a scale-out operation cannot be deleted. This setting takes effect in the entire node pool. | | | | | | **Scale-in cooling interval configured in the autoscaler add-on** | | | | - | | The interval after a scale-out indicates the period during which the entire cluster cannot be scaled in after the autoscaler add-on triggers scale-out (due to the unschedulable pods, metrics, and scaling policies). This interval takes effect at the cluster level. | + | | The interval after a scale-out indicates the period during which the entire cluster cannot be scaled in after the autoscaler add-on triggers scale-out (due to the unschedulable pods, metrics, and scaling policies). This setting takes effect in the entire cluster. | | | | - | | The interval after a node is deleted indicates the period during which the cluster cannot be scaled in after the autoscaler add-on triggers scale-in. This interval takes effect at the cluster level. | + | | The interval after a node is deleted indicates the period during which the cluster cannot be scaled in after the autoscaler add-on triggers scale-in. This setting takes effect in the entire cluster. | | | | - | | The interval after a failed scale-in indicates the period during which the cluster cannot be scaled in after the autoscaler add-on triggers scale-in. This interval takes effect at the cluster level. | + | | The interval after a failed scale-in indicates the period during which the cluster cannot be scaled in after the autoscaler add-on triggers scale-in. This setting takes effect in the entire cluster. | | | | | | .. note:: | | | | @@ -81,42 +81,36 @@ Procedure .. table:: **Table 2** Configuration parameters - +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+====================================================================================================================================================================================================================================+ - | AZ | AZ where the node is located. Nodes in a cluster can be created in different AZs for higher reliability. The value cannot be changed after the node is created. | - | | | - | | You are advised to select **Random** to deploy your node in a random AZ based on the selected node flavor. | - | | | - | | An AZ is a physical region where resources use independent power supply and networks. AZs are physically isolated but interconnected through an internal network. To enhance workload availability, create nodes in different AZs. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Node Type | CCE cluster: | - | | | - | | - ECS (VM): Containers run on ECSs. | - | | | - | | CCE Turbo Cluster: | - | | | - | | - ECS (VM): Containers run on ECSs. Only Trunkport ECSs (models that can be bound with multiple elastic network interfaces) are supported. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Container Engine | CCE clusters support Docker and containerd in some scenarios. | - | | | - | | - VPC network clusters of v1.23 and later versions support containerd. Container tunnel network clusters of v1.23.2-r0 and later versions support containerd. | - | | - For a CCE Turbo cluster, both **Docker** and **containerd** are supported. For details, see :ref:`Mapping between Node OSs and Container Engines `. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Specifications | Select a node specification based on service requirements. The available node specifications vary depending on regions or AZs. For details, see the CCE console. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | OS | Select an OS type. Different types of nodes support different OSs. For details, see :ref:`Supported Node Specifications `. | - | | | - | | **Public image**: Select an OS for the node. | - | | | - | | **Private image**: You can use private images. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Login Mode | - **Key Pair** | - | | | - | | Select the key pair used to log in to the node. You can select a shared key. | - | | | - | | A key pair is used for identity authentication when you remotely log in to a node. If no key pair is available, click **Create Key Pair**.. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+==========================================================================================================================================================================================+ + | Node Type | CCE cluster: | + | | | + | | - ECS (VM): Containers run on ECSs. | + | | | + | | CCE Turbo cluster: | + | | | + | | - ECS (VM): Containers run on ECSs. Only the ECSs that can be bound with multiple NICs are supported. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Container engine | CCE clusters support Docker and containerd in some scenarios. | + | | | + | | - VPC network clusters of v1.23 and later versions support containerd. Tunnel network clusters of v1.23.2-r0 and later versions support containerd. | + | | - For a CCE Turbo cluster, both **Docker** and **containerd** are supported. For details, see :ref:`Mapping between Node OSs and Container Engines `. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Specifications | Select a node specification based on service requirements. The available node specifications vary depending on regions or AZs. For details, see the CCE console. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | OS | Select an OS type. Different types of nodes support different OSs. For details, see :ref:`Supported Node Specifications `. | + | | | + | | **Public image**: Select an OS for the node. | + | | | + | | **Private image**: You can use private images. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Login mode | - **Key Pair** | + | | | + | | Select the key pair used to log in to the node. You can select a shared key. | + | | | + | | A key pair is used for identity authentication when you remotely log in to a node. If no key pair is available, click **Create Key Pair**. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ **Storage Settings** @@ -124,44 +118,56 @@ Procedure .. table:: **Table 3** Configuration parameters - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+===============================================================================================================================================================================================================================================================================================+ - | System Disk | System disk used by the node OS. The value ranges from 40 GiB to 1,024 GiB. The default value is 50 GiB. | - | | | - | | **Encryption**: Data disk encryption safeguards your data. Snapshots generated from encrypted disks and disks created using these snapshots automatically inherit the encryption function. **This function is available only in certain regions.** | - | | | - | | - **Encryption** is not selected by default. | - | | - After you select **Encryption**, you can select an existing key. If no key is available, click the link next to the drop-down box to create a key. After the key is created, click the refresh icon. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Data Disk | **At least one data disk is required** for the container runtime and kubelet. **The data disk cannot be deleted or uninstalled. Otherwise, the node will be unavailable.** | - | | | - | | - First data disk: used for container runtime and kubelet components. The value ranges from 20 GiB to 32,768 GiB. The default value is 100 GiB. | - | | - Other data disks: You can set the data disk size to a value ranging from 10 GiB to 32,768 GiB. The default value is 100 GiB. | - | | | - | | **Advanced Settings** | - | | | - | | Click **Expand** to set the following parameters: | - | | | - | | - **Allocate Disk Space**: Select this option to define the disk space occupied by the container runtime to store the working directories, container image data, and image metadata. For details about how to allocate data disk space, see :ref:`Data Disk Space Allocation `. | - | | - **Encryption**: Data disk encryption safeguards your data. Snapshots generated from encrypted disks and disks created using these snapshots automatically inherit the encryption function. **This function is available only in certain regions.** | - | | | - | | - **Encryption** is not selected by default. | - | | - After you select **Encryption**, you can select an existing key. If no key is available, click the link next to the drop-down box to create a key. After the key is created, click the refresh icon. | - | | | - | | **Adding Multiple Data Disks** | - | | | - | | A maximum of four data disks can be added. By default, raw disks are created without any processing. You can also click **Expand** and select any of the following options: | - | | | - | | - **Default**: By default, a raw disk is created without any processing. | - | | - **Mount Disk**: The data disk is attached to a specified directory. | - | | | - | | **Local Disk Description** | - | | | - | | If the node flavor is disk-intensive or ultra-high I/O, one data disk can be a local disk. | - | | | - | | Local disks may break down and do not ensure data reliability. It is recommended that you store service data in EVS disks, which are more reliable than local disks. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+======================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | System Disk | System disk used by the node OS. The value ranges from 40 GiB to 1,024 GiB. The default value is 50 GiB. | + | | | + | | **Encryption**: System disk encryption safeguards your data. Snapshots generated from encrypted disks and disks created using these snapshots automatically inherit the encryption setting. **This function is available only in certain regions.** | + | | | + | | - **Encryption** is not selected by default. | + | | - After selecting **Encryption**, you can select an existing key in the displayed dialog box. If no key is available, click **View Key List** and create a key. After the key is created, click the refresh icon next to the **Encryption** text box. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Data Disk | **At least one data disk is required** for the container runtime and kubelet. **The data disk cannot be deleted or uninstalled. Otherwise, the node will be unavailable.** | + | | | + | | - First data disk: used for container runtime and kubelet components. The value ranges from 20 GiB to 32,768 GiB. The default value is 100 GiB. | + | | - Other data disks: You can set the data disk size to a value ranging from 10 GB to 32,768 GiB. The default value is 100 GiB. | + | | | + | | .. note:: | + | | | + | | If the node flavor is disk-intensive or ultra-high I/O, one data disk can be a local disk. | + | | | + | | Local disks may break down and do not ensure data reliability. Store your service data in EVS disks, which are more reliable than local disks. | + | | | + | | **Advanced Settings** | + | | | + | | Click **Expand** to configure the following parameters: | + | | | + | | - **Data Disk Space Allocation**: After selecting **Set Container Engine Space**, you can specify the proportion of the space for the container engine, image, and temporary storage on the data disk. The container engine space is used to store the working directory, container image data, and image metadata for the container runtime. The remaining space of the data disk is used for pod configuration files, keys, and EmptyDir. For details about how to allocate data disk space, see :ref:`Data Disk Space Allocation `. | + | | - **Encryption**: Data disk encryption safeguards your data. Snapshots generated from encrypted disks and disks created using these snapshots automatically inherit the encryption setting. **This function is available only in certain regions.** | + | | | + | | - **Encryption** is not selected by default. | + | | - After selecting **Encryption**, you can select an existing key in the displayed dialog box. If no key is available, click **View Key List** and create a key. After the key is created, click the refresh icon next to the **Encryption** text box. | + | | | + | | **Adding Multiple Data Disks** | + | | | + | | A maximum of four data disks can be added. By default, raw disks are created without any processing. You can also click **Expand** and select any of the following options: | + | | | + | | - **Default**: By default, a raw disk is created without any processing. | + | | - **Mount Disk**: The data disk is attached to a specified directory. | + | | - **Use as PV**: applicable to scenarios in which there is a high performance requirement on PVs. The **node.kubernetes.io/local-storage-persistent** label is added to the node with PV configured. The value is **linear** or **striped**. | + | | - **Use as ephemeral volume**: applicable to scenarios in which there is a high performance requirement on EmptyDir. | + | | | + | | .. note:: | + | | | + | | - Local PVs are supported only when the cluster version is v1.21.2-r0 or later and the everest add-on version is 2.1.23 or later. Version 2.1.23 or later is recommended. | + | | - Local EVs are supported only when the cluster version is v1.21.2-r0 or later and the everest add-on version is 1.2.29 or later. | + | | | + | | :ref:`Local Persistent Volumes (Local PVs) ` and :ref:`Local EVs ` support the following write modes: | + | | | + | | - **Linear**: A linear logical volume integrates one or more physical volumes. Data is written to the next physical volume when the previous one is used up. | + | | - **Striped**: A striped logical volume stripes data into blocks of the same size and stores them in multiple physical volumes in sequence, allowing data to be concurrently read and written. A storage pool consisting of striped volumes cannot be scaled-out. This option can be selected only when multiple volumes exist. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ **Network Settings** @@ -174,7 +180,7 @@ Procedure +===================================+======================================================================================================================================================================================+ | Node Subnet | The node subnet selected during cluster creation is used by default. You can choose another subnet instead. | +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Node IP Address | Random allocation is supported. | + | Node IP | Random allocation is supported. | +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Associate Security Group | Security group used by the nodes created in the node pool. A maximum of 5 security groups can be selected. | | | | @@ -192,19 +198,19 @@ Procedure +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Parameter | Description | +===================================+================================================================================================================================================================================================================================================================+ - | Kubernetes Label | Click **Add** to set the key-value pair attached to the Kubernetes objects (such as pods). A maximum of 20 labels can be added. | + | Kubernetes Label | A key-value pair added to a Kubernetes object (such as a pod). A maximum of 20 labels can be added. | | | | | | Labels can be used to distinguish nodes. With workload affinity settings, container pods can be scheduled to a specified node. For more information, see `Labels and Selectors `__. | +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Resource Tag | You can add resource tags to classify resources. | | | | - | | You can create **predefined tags** in Tag Management Service (TMS). Predefined tags are visible to all service resources that support the tagging function. You can use these tags to improve tagging and resource migration efficiency. | + | | You can create **predefined tags** in Tag Management Service (TMS). Predefined tags are available to all service resources that support tags. You can use these tags to improve tagging and resource migration efficiency. | | | | | | CCE will automatically create the "CCE-Dynamic-Provisioning-Node=\ *node id*" tag. | +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Taint | This parameter is left blank by default. You can add taints to set anti-affinity for the node. A maximum of 10 taints are allowed for each node. Each taint contains the following parameters: | + | Taint | This parameter is left blank by default. You can add taints to configure anti-affinity for the node. A maximum of 20 taints are allowed for each node. Each taint contains the following parameters: | | | | - | | - **Key**: A key must contain 1 to 63 characters starting with a letter or digit. Only letters, digits, hyphens (-), underscores (_), and periods (.) are allowed. A DNS subdomain name can be used as the prefix of a key. | + | | - **Key**: A key must contain 1 to 63 characters, starting with a letter or digit. Only letters, digits, hyphens (-), underscores (_), and periods (.) are allowed. A DNS subdomain name can be used as the prefix of a key. | | | - **Value**: A value must start with a letter or digit and can contain a maximum of 63 characters, including letters, digits, hyphens (-), underscores (_), and periods (.). | | | - **Effect**: Available options are **NoSchedule**, **PreferNoSchedule**, and **NoExecute**. | | | | @@ -233,6 +239,10 @@ Procedure | Post-installation Command | Enter commands. A maximum of 1,000 characters are allowed. | | | | | | The script will be executed after Kubernetes software is installed and will not affect the installation. | + | | | + | | .. note:: | + | | | + | | Do not run the **reboot** command in the post-installation script to restart the system immediately. To restart the system, run the **shutdown -r 1** command to delay the restart for one minute. | +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Agency | An agency is created by the account administrator on the IAM console. By creating an agency, you can share your cloud server resources with another account, or entrust a more professional person or team to manage your resources. | | | | @@ -243,4 +253,4 @@ Procedure #. Click **Submit**. -.. |image1| image:: /_static/images/en-us_image_0000001518222604.png +.. |image1| image:: /_static/images/en-us_image_0000001647576848.png diff --git a/umn/source/node_pools/managing_a_node_pool/configuring_a_node_pool.rst b/umn/source/node_pools/managing_a_node_pool/configuring_a_node_pool.rst index 1b93b49..357fec5 100644 --- a/umn/source/node_pools/managing_a_node_pool/configuring_a_node_pool.rst +++ b/umn/source/node_pools/managing_a_node_pool/configuring_a_node_pool.rst @@ -10,108 +10,126 @@ Constraints The default node pool DefaultPool does not support the following management operations. -Configuring Kubernetes Parameters ---------------------------------- +Configuration Management +------------------------ -CCE allows you to highly customize Kubernetes parameter settings on core components in a cluster. For more information, see `kubelet `__. +CCE allows you to highly customize Kubernetes parameter settings on core components in a cluster. For more information, see `kubelet `__. -This function is supported only for clusters of **v1.15 and later**. It is not displayed for clusters earlier than v1.15. +This function is supported only in clusters of **v1.15 and later**. It is not displayed for clusters earlier than v1.15. #. Log in to the CCE console. -#. Click the cluster name and access the cluster console. Choose **Nodes** in the navigation pane and click the **Node Pools** tab on the right. -#. Choose **More** > **Manage** next to the node pool name. -#. On the **Manage Component** page on the right, change the values of the following Kubernetes parameters: +#. Click the cluster name to access the cluster console. Choose **Nodes** in the navigation pane and click the **Node Pools** tab on the right. +#. Choose **More** > **Manage** in the **Operation** column of the target node pool +#. On the **Manage Components** page on the right, change the values of the following Kubernetes parameters: .. table:: **Table 1** kubelet - +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | Default Value | Remarks | - +=========================+====================================================================================================================================================================================================================================================================================================================================================================================================================+===========================================================================================================================================================================+=======================================================================================================================================================================================================================================================================+ - | cpu-manager-policy | CPU management policy configuration. For details, see :ref:`CPU Core Binding `. | none | None | - | | | | | - | | - **none**: disables pods from exclusively occupying CPUs. Select this value if you want a large pool of shareable CPU cores. | | | - | | - **static**: enables pods to exclusively occupy CPUs. Select this value if your workload is sensitive to latency in CPU cache and scheduling. | | | - +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | kube-api-qps | Query per second (QPS) to use while talking with kube-apiserver. | 100 | None | - +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | kube-api-burst | Burst to use while talking with kube-apiserver. | 100 | None | - +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | max-pods | Maximum number of pods managed by kubelet. | - For a CCE cluster, the maximum number of pods is determined based on :ref:`the maximum number of pods on a node `. | None | - | | | - For a CCE Turbo cluster, the maximum number of pods is determined based on :ref:`the number of NICs on a CCE Turbo cluster node `. | | - +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | pod-pids-limit | PID limit in Kubernetes | -1 | None | - +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | with-local-dns | Whether to use the local IP address as the ClusterDNS of the node. | false | None | - +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | event-qps | QPS limit for event creation | 5 | None | - +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | allowed-unsafe-sysctls | Insecure system configuration allowed. | [] | None | - | | | | | - | | Starting from **v1.17.17**, CCE enables pod security policies for kube-apiserver. You need to add corresponding configurations to **allowedUnsafeSysctls** of a pod security policy to make the policy take effect. (This configuration is not required for clusters earlier than v1.17.17.) For details, see :ref:`Example of Enabling Unsafe Sysctls in Pod Security Policy `. | | | - +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | kube-reserved-mem | Reserved node memory. | Depends on node specifications. For details, see :ref:`Formula for Calculating the Reserved Resources of a Node `. | The sum of kube-reserved-mem and system-reserved-mem is less than half of the memory. | - | | | | | - | system-reserved-mem | | | | - +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | topology-manager-policy | Set the topology management policy. | none | The values can be modified during the node pool lifecycle. | - | | | | | - | | Valid values are as follows: | | .. important:: | - | | | | | - | | - **restricted**: kubelet accepts only pods that achieve optimal NUMA alignment on the requested resources. | | NOTICE: | - | | - **best-effort**: kubelet preferentially selects pods that implement NUMA alignment on CPU and device resources. | | Exercise caution when modifying topology-manager-policy and topology-manager-scope will restart kubelet and recalculate the resource allocation of pods based on the modified policy. As a result, running pods may restart or even fail to receive any resources. | - | | - **none** (default): The topology management policy is disabled. | | | - | | - **single-numa-node**: kubelet allows only pods that are aligned to the same NUMA node in terms of CPU and device resources. | | | - +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | topology-manager-scope | Set the resource alignment granularity of the topology management policy. Valid values are as follows: | Container | | - | | | | | - | | - **container** (default) | | | - | | - **pod** | | | - +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | resolv-conf | DNS resolution configuration file specified by a container | The default value is null. | None | - +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | runtime-request-timeout | Timeout interval of all runtime requests except long-running requests (pull, logs, exec, and attach). | The default value is **2m0s**. | None | - +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | registry-pull-qps | Maximum number of image pulls per second. | The default value is **5**. | The value ranges from 1 to 50. | - +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | registry-burst | Maximum number of burst image pulls. | The default value is **10**. | The value ranges from 1 to 100 and must be greater than or equal to the value of **registry-pull-qps**. | - +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | serialize-image-pulls | When this function is enabled, kubelet is notified to pull only one image at a time. | The default value is **true**. | None | - +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | Default Value | Modification | Remarks | + +============================+========================================================================================================================================================================================================================================================================================================================================================================================================+===========================================================================================================================================================================+=========================================================================================================+====================================================================================================================================================================================================================================================================+ + | cpu-manager-policy | CPU management policy configuration. For details, see :ref:`CPU Scheduling `. | none | None | None | + | | | | | | + | | - **none**: disables pods from exclusively occupying CPUs. Select this value if you want a large pool of shareable CPU cores. | | | | + | | - **static**: enables pods to exclusively occupy CPUs. Select this value if your workload is sensitive to latency in CPU cache and scheduling. | | | | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | kube-api-qps | Query per second (QPS) for communicating with kube-apiserver. | 100 | None | None | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | kube-api-burst | Burst to use while talking with kube-apiserver. | 100 | None | None | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | max-pods | Maximum number of pods managed by kubelet. | - For a CCE cluster, the maximum number of pods is determined based on :ref:`the maximum number of pods on a node `. | None | None | + | | | - For a CCE Turbo cluster, the maximum number of pods is determined based on :ref:`the number of NICs on a CCE Turbo cluster node `. | | | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | pod-pids-limit | Limited number of PIDs in Kubernetes | -1 | None | None | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | with-local-dns | Whether to use the local IP address as the ClusterDNS of the node. | false | None | None | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | event-qps | QPS limit for event creation | 5 | None | None | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | allowed-unsafe-sysctls | Insecure system configuration allowed. | [] | None | None | + | | | | | | + | | Starting from **v1.17.17**, CCE enables pod security policies for kube-apiserver. Add corresponding configurations to **allowedUnsafeSysctls** of a pod security policy to make the policy take effect. (This configuration is not required for clusters earlier than v1.17.17.) For details, see :ref:`Example of Enabling Unsafe Sysctls in Pod Security Policy `. | | | | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | over-subscription-resource | Whether to enable node oversubscription. | true | None | None | + | | | | | | + | | If this parameter is set to **true**, node oversubscription is enabled. For details, see :ref:`Dynamic Resource Oversubscription `. | | | | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | colocation | Whether to enable hybrid deployment on nodes. | true | None | None | + | | | | | | + | | If this parameter is set to **true**, hybrid deployment is enabled on nodes. For details, see :ref:`Dynamic Resource Oversubscription `. | | | | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | kube-reserved-mem | Reserved node memory. | Depends on node specifications. For details, see :ref:`Node Resource Reservation Policy `. | None | The sum of **kube-reserved-mem** and **system-reserved-mem** is less than half of the memory. | + | | | | | | + | system-reserved-mem | | | | | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | topology-manager-policy | Set the topology management policy. | none | None | .. important:: | + | | | | | | + | | Valid values are as follows: | | | NOTICE: | + | | | | | Modifying **topology-manager-policy** and **topology-manager-scope** will restart kubelet, and the resource allocation of pods will be recalculated based on the modified policy. In this case, running pods may restart or even fail to receive any resources. | + | | - **restricted**: kubelet accepts only pods that achieve optimal NUMA alignment on the requested resources. | | | | + | | - **best-effort**: kubelet preferentially selects pods that implement NUMA alignment on CPU and device resources. | | | | + | | - **none** (default): The topology management policy is disabled. | | | | + | | - **single-numa-node**: kubelet allows only pods that are aligned to the same NUMA node in terms of CPU and device resources. | | | | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | topology-manager-scope | Set the resource alignment granularity of the topology management policy. Valid values are as follows: | container | | | + | | | | | | + | | - **container** (default) | | | | + | | - **pod** | | | | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | resolv-conf | DNS resolution configuration file specified by the container | The default value is null. | None | None | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | runtime-request-timeout | Timeout interval of all runtime requests except long-running requests (pull, logs, exec, and attach). | The default value is **2m0s**. | None | None | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | registry-pull-qps | Maximum number of image pulls per second. | The default value is **5**. | The value ranges from 1 to 50. | None | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | registry-burst | Maximum number of burst image pulls. | The default value is **10**. | The value ranges from 1 to 100 and must be greater than or equal to the value of **registry-pull-qps**. | None | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | serialize-image-pulls | When this function is enabled, kubelet is notified to pull only one image at a time. | The default value is **true**. | None | None | + +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. table:: **Table 2** kube-proxy - +----------------------------------+-------------------------------------------------------------+---------------+---------+ - | Parameter | Description | Default Value | Remarks | - +==================================+=============================================================+===============+=========+ - | conntrack-min | sysctl -w net.nf_conntrack_max | 131072 | None | - +----------------------------------+-------------------------------------------------------------+---------------+---------+ - | conntrack-tcp-timeout-close-wait | sysctl -w net.netfilter.nf_conntrack_tcp_timeout_close_wait | 1h0m0s | None | - +----------------------------------+-------------------------------------------------------------+---------------+---------+ + +----------------------------------+----------------------------------------------------------------+-----------------+-----------------+ + | Parameter | Description | Default Value | Modification | + +==================================+================================================================+=================+=================+ + | conntrack-min | Maximum number of connection tracking entries | 131072 | None | + | | | | | + | | To obtain the value, run the following command: | | | + | | | | | + | | .. code-block:: | | | + | | | | | + | | sysctl -w net.nf_conntrack_max | | | + +----------------------------------+----------------------------------------------------------------+-----------------+-----------------+ + | conntrack-tcp-timeout-close-wait | Wait time of a closed TCP connection | 1h0m0s | None | + | | | | | + | | To obtain the value, run the following command: | | | + | | | | | + | | .. code-block:: | | | + | | | | | + | | sysctl -w net.netfilter.nf_conntrack_tcp_timeout_close_wait | | | + +----------------------------------+----------------------------------------------------------------+-----------------+-----------------+ .. table:: **Table 3** Network components (available only for CCE Turbo clusters) - +---------------------------+------------------------------------------------------------------------------------------------------+------------------+-----------------+ - | Parameter | Description | Default Value | Remarks | - +===========================+======================================================================================================+==================+=================+ - | nic-threshold | Low threshold of the number of bound ENIs:High threshold of the number of bound ENIs | Default: **0:0** | None | - | | | | | - | | .. note:: | | | - | | | | | - | | This parameter is being discarded. Use the dynamic pre-binding parameters of the other four ENIs. | | | - +---------------------------+------------------------------------------------------------------------------------------------------+------------------+-----------------+ - | nic-minimum-target | Minimum number of ENIs bound to a node at the node pool level | Default: **10** | None | - +---------------------------+------------------------------------------------------------------------------------------------------+------------------+-----------------+ - | nic-maximum-target | Maximum number of ENIs pre-bound to a node at the node pool level | Default: **0** | None | - +---------------------------+------------------------------------------------------------------------------------------------------+------------------+-----------------+ - | nic-warm-target | Number of ENIs pre-bound to a node at the node pool level | Default: **2** | None | - +---------------------------+------------------------------------------------------------------------------------------------------+------------------+-----------------+ - | nic-max-above-warm-target | Reclaim number of ENIs pre-bound to a node at the node pool level | Default: **2** | None | - +---------------------------+------------------------------------------------------------------------------------------------------+------------------+-----------------+ + +---------------------------+---------------------------------------------------------------------------------------+-----------------+------------------------------------------------------------------------------------------------------+ + | Parameter | Description | Default Value | Modification | + +===========================+=======================================================================================+=================+======================================================================================================+ + | nic-threshold | Low threshold of the number of bound ENIs: High threshold of the number of bound ENIs | Default: 0:0 | .. note:: | + | | | | | + | | | | This parameter is being discarded. Use the dynamic pre-binding parameters of the other four ENIs. | + +---------------------------+---------------------------------------------------------------------------------------+-----------------+------------------------------------------------------------------------------------------------------+ + | nic-minimum-target | Minimum number of ENIs bound to the nodes in the node pool | Default: 10 | None | + +---------------------------+---------------------------------------------------------------------------------------+-----------------+------------------------------------------------------------------------------------------------------+ + | nic-maximum-target | Maximum number of ENIs pre-bound to a node at the node pool level | Default: 0 | None | + +---------------------------+---------------------------------------------------------------------------------------+-----------------+------------------------------------------------------------------------------------------------------+ + | nic-warm-target | Number of ENIs pre-bound to a node at the node pool level | Default: 2 | None | + +---------------------------+---------------------------------------------------------------------------------------+-----------------+------------------------------------------------------------------------------------------------------+ + | nic-max-above-warm-target | Reclaim number of ENIs pre-bound to a node at the node pool level | Default: 2 | None | + +---------------------------+---------------------------------------------------------------------------------------+-----------------+------------------------------------------------------------------------------------------------------+ .. table:: **Table 4** Pod security group in a node pool (available only for CCE Turbo clusters) +------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------+ - | Parameter | Description | Default Value | Remarks | + | Parameter | Description | Default Value | Modification | +==============================+=====================================================================================================================================================================================================================================================================================================+=================+=================+ | security_groups_for_nodepool | - Default security group used by pods in a node pool. You can enter the security group ID. If this parameter is not set, the default security group of the cluster container network is used. A maximum of five security group IDs can be specified at the same time, separated by semicolons (;). | None | None | | | - The priority of the security group is lower than that of the security group configured for :ref:`Security Groups `. | | | @@ -120,7 +138,7 @@ This function is supported only for clusters of **v1.15 and later**. It is not d .. table:: **Table 5** Docker (available only for node pools that use Docker) +-----------------------+---------------------------------------------------------------+-----------------+--------------------------------------------------------------------------------------------------------+ - | Parameter | Description | Default Value | Remarks | + | Parameter | Description | Default Value | Modification | +=======================+===============================================================+=================+========================================================================================================+ | native-umask | \`--exec-opt native.umask | normal | Cannot be changed. | +-----------------------+---------------------------------------------------------------+-----------------+--------------------------------------------------------------------------------------------------------+ @@ -141,4 +159,24 @@ This function is supported only for clusters of **v1.15 and later**. It is not d | | | | sysctl -a | grep nr_open | +-----------------------+---------------------------------------------------------------+-----------------+--------------------------------------------------------------------------------------------------------+ + .. table:: **Table 6** containerd (available only for node pools that use containerd) + + +-----------------------+---------------------------------------------------------------+-----------------+--------------------------------------------------------------------------------------------------------+ + | Parameter | Description | Default Value | Modification | + +=======================+===============================================================+=================+========================================================================================================+ + | devmapper-base-size | Available data space of a single container | None | Cannot be changed. | + +-----------------------+---------------------------------------------------------------+-----------------+--------------------------------------------------------------------------------------------------------+ + | limitcore | Maximum size of a core file in a container. The unit is byte. | 5368709120 | None | + | | | | | + | | If not specified, the value is **infinity**. | | | + +-----------------------+---------------------------------------------------------------+-----------------+--------------------------------------------------------------------------------------------------------+ + | default-ulimit-nofile | Limit on the number of handles in a container | 1048576 | The value cannot exceed the value of the kernel parameter **nr_open** and cannot be a negative number. | + | | | | | + | | | | You can run the following command to obtain the kernel parameter **nr_open**: | + | | | | | + | | | | .. code-block:: | + | | | | | + | | | | sysctl -a | grep nr_open | + +-----------------------+---------------------------------------------------------------+-----------------+--------------------------------------------------------------------------------------------------------+ + #. Click **OK**. diff --git a/umn/source/node_pools/managing_a_node_pool/copying_a_node_pool.rst b/umn/source/node_pools/managing_a_node_pool/copying_a_node_pool.rst index 3bba7bd..b04eb6a 100644 --- a/umn/source/node_pools/managing_a_node_pool/copying_a_node_pool.rst +++ b/umn/source/node_pools/managing_a_node_pool/copying_a_node_pool.rst @@ -8,7 +8,7 @@ Copying a Node Pool You can copy the configuration of an existing node pool to create a new node pool on the CCE console. #. Log in to the CCE console. -#. Click the cluster name and access the cluster console. Choose **Nodes** in the navigation pane and click the **Node Pools** tab on the right. -#. Choose **More > Copy** next to a node pool name to copy the node pool. +#. Click the cluster name to access the cluster console. Choose **Nodes** in the navigation pane and click the **Node Pools** tab on the right. +#. Choose **More > Copy** in the **Operation** column of the target node pool. #. The configurations of the selected node pool are replicated to the **Clone Node Pool** page. You can edit the configurations as required. For details about configuration items, see :ref:`Creating a Node Pool `. After confirming the configuration, click **Next: Confirm**. #. On the **Confirm** page, confirm the node pool configuration and click **Submit**. Then, a new node pool is created based on the edited configuration. diff --git a/umn/source/node_pools/managing_a_node_pool/index.rst b/umn/source/node_pools/managing_a_node_pool/index.rst index ea0fca1..2384c69 100644 --- a/umn/source/node_pools/managing_a_node_pool/index.rst +++ b/umn/source/node_pools/managing_a_node_pool/index.rst @@ -5,11 +5,11 @@ Managing a Node Pool ==================== -- :ref:`Configuring a Node Pool ` - :ref:`Updating a Node Pool ` +- :ref:`Configuring a Node Pool ` +- :ref:`Copying a Node Pool ` - :ref:`Synchronizing Node Pools ` - :ref:`Upgrading an OS ` -- :ref:`Copying a Node Pool ` - :ref:`Migrating a Node ` - :ref:`Deleting a Node Pool ` @@ -17,10 +17,10 @@ Managing a Node Pool :maxdepth: 1 :hidden: - configuring_a_node_pool updating_a_node_pool + configuring_a_node_pool + copying_a_node_pool synchronizing_node_pools upgrading_an_os - copying_a_node_pool migrating_a_node deleting_a_node_pool diff --git a/umn/source/node_pools/managing_a_node_pool/updating_a_node_pool.rst b/umn/source/node_pools/managing_a_node_pool/updating_a_node_pool.rst index 63ee135..b5ff5b6 100644 --- a/umn/source/node_pools/managing_a_node_pool/updating_a_node_pool.rst +++ b/umn/source/node_pools/managing_a_node_pool/updating_a_node_pool.rst @@ -8,7 +8,7 @@ Updating a Node Pool Constraints ----------- -- When editing the resource tags of the node pool. The modified configuration takes effect only for new nodes. To synchronize the configuration to the existing nodes, you need to manually reset the existing nodes. +- When editing the resource tags of the node pool. The modified configuration takes effect only for new nodes. To synchronize the configuration to the existing nodes, manually reset the existing nodes. - Updates of kubernetes labels and taints are automatically synchronized to existing nodes. You do not need to reset nodes. @@ -17,7 +17,7 @@ Updating a Node Pool #. Log in to the CCE console. -#. Click the cluster name and access the cluster console. Choose **Nodes** in the navigation pane and click the **Node Pools** tab on the right. +#. Click the cluster name to access the cluster console. Choose **Nodes** in the navigation pane and click the **Node Pools** tab on the right. #. Click **Update** next to the name of the node pool you will edit. Configure the parameters in the displayed **Update Node Pool** page. @@ -25,27 +25,27 @@ Updating a Node Pool .. table:: **Table 1** Basic settings - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+=================================================================================================================================================================================================================================================================================================================================================================================================================================================+ - | Node Pool Name | Name of the node pool. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Nodes | Modify the number of nodes based on service requirements. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Auto Scaling | By default, this parameter is disabled. | - | | | - | | After you enable autoscaler by clicking |image1|, nodes in the node pool are automatically created or deleted based on service requirements. | - | | | - | | - **Maximum Nodes** and **Minimum Nodes**: You can set the maximum and minimum number of nodes to ensure that the number of nodes to be scaled is within a proper range. | - | | | - | | - **Priority**: A larger value indicates a higher priority. For example, if this parameter is set to **1** and **4** respectively for node pools A and B, B has a higher priority than A, and auto scaling is first triggered for B. If the priorities of multiple node pools are set to the same value, for example, **2**, the node pools are not prioritized and the system performs scaling based on the minimum resource waste principle. | - | | | - | | After the priority is updated, the configuration takes effect within 1 minute. | - | | | - | | - **Cooldown Period**: Enter a period, in minutes. This field indicates the period during which the nodes added in the current node pool cannot be scaled in. | - | | | - | | If the **Autoscaler** field is set to on, install the :ref:`autoscaler add-on ` to use the autoscaler feature. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+=================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | Node Pool Name | Name of the node pool. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Nodes | Modify the number of nodes based on service requirements. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Auto Scaling | This function is disabled by default. | + | | | + | | After you enable autoscaler by clicking |image1|, nodes in the node pool are automatically created or deleted based on service requirements. | + | | | + | | - **Maximum Nodes** and **Minimum Nodes**: You can set the maximum and minimum number of nodes to ensure that the number of nodes to be scaled is within a proper range. | + | | | + | | - **Node Pool Priority**: indicates the priority of a node pool for a scale-out. A larger value indicates a higher priority. For example, the node pool with priority **4** is scaled out prior to the one with priority **1**. If the priorities of multiple node pools are set to the same value, these node pools are not prioritized and they will be scaled out by following the rule of maximizing resource utilization. | + | | | + | | After the priority is changed, the modification takes effect within 1 minute. | + | | | + | | - **Cooldown Period**: Enter a period, in minutes. It specifies a period during which the nodes added in the current node pool cannot be scaled in. | + | | | + | | To ensure the proper running of AS, install the :ref:`autoscaler `. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ **Advanced Settings** @@ -54,7 +54,7 @@ Updating a Node Pool +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Parameter | Description | +===================================+================================================================================================================================================================================================================================================================+ - | Kubernetes Label | Click **Add** to set the key-value pair attached to the Kubernetes objects (such as pods). A maximum of 20 labels can be added. | + | Kubernetes Label | A Kubernetes label is a key-value pair added to a Kubernetes object (such as a pod). After specifying a label, click **Add**. A maximum of 20 labels can be added. | | | | | | Labels can be used to distinguish nodes. With workload affinity settings, container pods can be scheduled to a specified node. For more information, see `Labels and Selectors `__. | | | | @@ -64,17 +64,17 @@ Updating a Node Pool +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Resource Tag | You can add resource tags to classify resources. | | | | - | | You can create **predefined tags** in Tag Management Service (TMS). Predefined tags are visible to all service resources that support the tagging function. You can use these tags to improve tagging and resource migration efficiency. | + | | You can create **predefined tags** in Tag Management Service (TMS). Predefined tags are available to all service resources that support tags. You can use these tags to improve tagging and resource migration efficiency. | | | | | | CCE will automatically create the "CCE-Dynamic-Provisioning-Node=\ *node id*" tag. | | | | | | .. note:: | | | | - | | After a **resource tag** is modified, the modification automatically takes effect when a node is added. For existing nodes, you need to manually reset the nodes for the modification to take effect. | + | | After a resource tag is modified, the modification automatically takes effect on newly added nodes. For existing nodes, manually reset the nodes for the modification to take effect. | +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Taint | This field is left blank by default. You can add taints to set anti-affinity for the node. A maximum of 10 taints are allowed for each node. Each taint contains the following parameters: | + | Taint | This field is left blank by default. You can add taints to configure node anti-affinity. A maximum of 20 taints are allowed for each node. Each taint contains the following parameters: | | | | - | | - **Key**: A key must contain 1 to 63 characters starting with a letter or digit. Only letters, digits, hyphens (-), underscores (_), and periods (.) are allowed. A DNS subdomain name can be used as the prefix of a key. | + | | - **Key**: A key must contain 1 to 63 characters, starting with a letter or digit. Only letters, digits, hyphens (-), underscores (_), and periods (.) are allowed. A DNS subdomain name can be used as the prefix of a key. | | | - **Value**: A value must start with a letter or digit and can contain a maximum of 63 characters, including letters, digits, hyphens (-), underscores (_), and periods (.). | | | - **Effect**: Available options are **NoSchedule**, **PreferNoSchedule**, and **NoExecute**. | | | | @@ -82,17 +82,17 @@ Updating a Node Pool | | | | | .. note:: | | | | - | | After a **taint** is modified, the inventory nodes in the node pool are updated synchronously. | + | | After a **taint** is modified, the existing nodes in the node pool are updated synchronously. | +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Edit Key pair | Only node pools that use key pairs for login support key pair editing. You can select another key pair. | + | Edit key pair | Only node pools that use key pairs for login support key pair editing. You can select another key pair. | | | | | | .. note:: | | | | - | | The edited key pair automatically takes effect when a node is added. For existing nodes, you need to manually reset the nodes for the key pair to take effect. | + | | The edited key pair automatically takes effect on newly added nodes. For existing nodes, manually reset the nodes for the modification to take effect. | +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -#. After the configuration is complete, click **OK**. +#. After the configuration, click **OK**. After the node pool parameters are updated, go to the **Nodes** page to check whether the node to which the node pool belongs is updated. You can reset the node to synchronize the configuration updates for the node pool. -.. |image1| image:: /_static/images/en-us_image_0000001629926113.png +.. |image1| image:: /_static/images/en-us_image_0000001654936892.png diff --git a/umn/source/node_pools/node_pool_overview.rst b/umn/source/node_pools/node_pool_overview.rst index 0984306..437ff6f 100644 --- a/umn/source/node_pools/node_pool_overview.rst +++ b/umn/source/node_pools/node_pool_overview.rst @@ -27,10 +27,10 @@ Generally, all nodes in a node pool have the following same attributes: - Node OS - Node specifications - Node login mode -- Node runtime +- Node container runtime - Startup parameters of Kubernetes components on a node - User-defined startup script of a node -- **K8s Labels** and **Taints** +- **Kubernetes Labels** and **Taints** CCE provides the following extended attributes for node pools: @@ -44,7 +44,7 @@ Description of DefaultPool DefaultPool is not a real node pool. It only **classifies** nodes that are not in the user-created node pools. These nodes are directly created on the console or by calling APIs. DefaultPool does not support any user-created node pool functions, including scaling and parameter configuration. DefaultPool cannot be edited, deleted, expanded, or auto scaled, and nodes in it cannot be migrated. -Application scenario +Applicable Scenarios -------------------- When a large-scale cluster is required, you are advised to use node pools to manage nodes. @@ -66,35 +66,35 @@ The following table describes multiple scenarios of large-scale cluster manageme Functions and Precautions ------------------------- -+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Function | Description | Notes | -+=======================================+========================================================================================================================================================+========================================================================================================================================================================================================================+ -| Creating a node pool | Add a node pool. | It is recommended that a cluster contains no more than 100 node pools. | -+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Deleting a node pool | Deleting a node pool will delete nodes in the pool. Pods on these nodes will be automatically migrated to available nodes in other node pools. | If pods in the node pool have a specific node selector and none of the other nodes in the cluster satisfies the node selector, the pods will become unschedulable. | -+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Enabling auto scaling for a node pool | After auto scaling is enabled, nodes will be automatically created or deleted in the node pool based on the cluster loads. | You are advised not to store important data on nodes in a node pool because after auto scaling, data cannot be restored as nodes may be deleted. | -+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Enabling auto scaling for a node pool | After auto scaling is disabled, the number of nodes in a node pool will not automatically change with the cluster loads. | None | -+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Adjusting the size of a node pool | The number of nodes in a node pool can be directly adjusted. If the number of nodes is reduced, nodes are randomly removed from the current node pool. | After auto scaling is enabled, you are not advised to manually adjust the node pool size. | -+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Changing node pool configurations | You can modify the node pool name, node quantity, Kubernetes labels (and their quantity), and taints. | The deleted or added Kubernetes labels and taints (as well as their quantity) will apply to all nodes in the node pool, which may cause pod re-scheduling. Therefore, exercise caution when performing this operation. | -+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Removing a node from a node pool | Nodes in a node pool can be migrated to the default node pool of the same cluster. | Nodes in the default node pool cannot be migrated to other node pools, and nodes in a user-created node pool cannot be migrated to other user-created node pools. | -+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Copying a Node Pool | You can copy the configuration of an existing node pool to create a new node pool. | None | -+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Setting Kubernetes parameters | You can configure core components with fine granularity. | - This function is supported only in clusters of v1.15 and later. It is not displayed for versions earlier than v1.15. | -| | | - The default node pool DefaultPool does not support this type of configuration. | -+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ++---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Function | Description | Precaution | ++=======================================+=====================================================================================================================================================================================+========================================================================================================================================================================================================================+ +| Creating a node pool | Add a node pool. | It is recommended that a cluster contains no more than 100 node pools. | ++---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Deleting a node pool | When a node pool is deleted, the nodes in the node pool are deleted first. Workloads on the original nodes are automatically migrated to available nodes in other node pools. | If pods in the node pool have a specific node selector and none of the other nodes in the cluster satisfies the node selector, the pods will become unschedulable. | ++---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Enabling auto scaling for a node pool | After auto scaling is enabled, nodes will be automatically created or deleted in the node pool based on the cluster loads. | You are advised not to store important data on nodes in a node pool because after auto scaling, data cannot be restored as nodes may be deleted. | ++---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Enabling auto scaling for a node pool | After auto scaling is disabled, the number of nodes in a node pool will not automatically change with the cluster loads. | None | ++---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Adjusting the size of a node pool | The number of nodes in a node pool can be directly adjusted. If the number of nodes is reduced, nodes are randomly removed from the current node pool. | After auto scaling is enabled, you are not advised to manually adjust the node pool size. | ++---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Changing node pool configurations | You can modify the node pool name, node quantity, Kubernetes labels (and their quantity), and taints and adjust the disk, OS, and container engine configurations of the node pool. | The deleted or added Kubernetes labels and taints (as well as their quantity) will apply to all nodes in the node pool, which may cause pod re-scheduling. Therefore, exercise caution when performing this operation. | ++---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Removing a node from a node pool | Nodes in a node pool can be migrated to the default node pool of the same cluster. | Nodes in the default node pool cannot be migrated to other node pools, and nodes in a user-created node pool cannot be migrated to other user-created node pools. | ++---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Cloning a node pool | You can copy the configuration of an existing node pool to create a new node pool. | None | ++---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Setting Kubernetes parameters | You can configure core components with fine granularity. | - This function is supported only in clusters of v1.15 and later. It is not displayed for versions earlier than v1.15. | +| | | - The default node pool DefaultPool does not support this type of configuration. | ++---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ Deploying a Workload in a Specified Node Pool --------------------------------------------- When creating a workload, you can constrain pods to run in a specified node pool. -For example, on the CCE console, you can set the affinity between the workload and the node on the **Scheduling Policies** tab page on the workload details page to forcibly deploy the workload to a specific node pool. In this way, the workload runs only on nodes in the node pool. If you need to better control where the workload is to be scheduled, you can use affinity or anti-affinity policies between workloads and nodes described in :ref:`Scheduling Policy (Affinity/Anti-affinity) `. +For example, on the CCE console, you can set the affinity between the workload and the node on the **Scheduling Policies** tab page on the workload details page to forcibly deploy the workload to a specific node pool. In this way, the workload runs only on nodes in the node pool. To better control where the workload is to be scheduled, you can use affinity or anti-affinity policies between workloads and nodes described in :ref:`Scheduling Policy (Affinity/Anti-affinity) `. For example, you can use container's resource request as a nodeSelector so that workloads will run only on the nodes that meet the resource request. diff --git a/umn/source/nodes/adding_nodes_for_management.rst b/umn/source/nodes/adding_nodes_for_management.rst index 5b1afb7..9bfc42d 100644 --- a/umn/source/nodes/adding_nodes_for_management.rst +++ b/umn/source/nodes/adding_nodes_for_management.rst @@ -8,20 +8,21 @@ Adding Nodes for Management Scenario -------- -In CCE, you can create a node (:ref:`Creating a Node `) or add existing nodes (ECSs) into your cluster. +In CCE, you can create a node (:ref:`Creating a Node `) or add existing nodes (ECSs or) to your cluster. .. important:: - While an ECS is being accepted into a cluster, the operating system of the ECS will be reset to the standard OS image provided by CCE to ensure node stability. The CCE console prompts you to select the operating system and the login mode during the reset. - - The system disk and data disk of an ECS will be formatted while the ECS is being accepted into a cluster. Ensure that information in the disks has been backed up. + - LVM information, including volume groups (VGs), logical volumes (LVs), and physical volumes (PVs), will be deleted from the system disks and data disks attached to the selected ECSs during management. Ensure that the information has been backed up. - While an ECS is being accepted into a cluster, do not perform any operation on the ECS through the ECS console. -Notes and Constraints ---------------------- +Constraints +----------- - The cluster version must be 1.15 or later. -- If the password or key has been set when a VM node is created, the VM node can be accepted into a cluster 10 minutes after it is available. During the management, the original password or key will become invalid. You need to reset the password or key. +- If a password or key has been set when the original VM node was created, reset the password or key during management. The original password or key will become invalid. - Nodes in a CCE Turbo cluster must support sub-ENIs or be bound to at least 16 ENIs. For details about the node specifications, see the nodes that can be selected on the console when you create a node. +- Data disks that have been partitioned will be ignored during node management. Ensure that there is at least one unpartitioned data disk meeting the specifications is attached to the node. Prerequisites ------------- @@ -30,14 +31,14 @@ A cloud server that meets the following conditions can be accepted: - The node to be accepted must be in the **Running** state and not used by other clusters. In addition, the node to be accepted does not carry the CCE-Dynamic-Provisioning-Node tag. - The node to be accepted and the cluster must be in the same VPC. (If the cluster version is earlier than v1.13.10, the node to be accepted and the CCE cluster must be in the same subnet.) -- At least one data disk is attached to the node to be accepted. The data disk capacity is greater than or equal to 100 GB. -- The node to be accepted has 2-core or higher CPU, 4 GB or larger memory, and only one NIC. +- Data disks must be attached to the nodes to be managed. A local disk (disk-intensive disk) or a data disk of at least 20 GiB can be attached to the node, and any data disks already attached cannot be smaller than 10 GiB. +- The node to be accepted has 2-core or higher CPU, 4 GiB or larger memory, and only one NIC. - Only cloud servers with the same specifications, AZ, and data disk configuration can be added in batches. Procedure --------- -#. Log in to the CCE console and go to the cluster where the node to be managed resides. +#. Log in to the CCE console and go to the cluster where the node to be accepted resides. #. In the navigation pane, choose **Nodes**. On the displayed page, click **Accept Node** in the upper right corner. @@ -58,7 +59,7 @@ Procedure +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Container Engine | CCE clusters support Docker and containerd in some scenarios. | | | | - | | - VPC network clusters of v1.23 and later versions support containerd. Container tunnel network clusters of v1.23.2-r0 and later versions support containerd. | + | | - VPC network clusters of v1.23 and later versions support containerd. Tunnel network clusters of v1.23.2-r0 and later versions support containerd. | | | - For a CCE Turbo cluster, both **Docker** and **containerd** are supported. For details, see :ref:`Mapping between Node OSs and Container Engines `. | +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | OS | **Public image**: Select an OS for the node. | @@ -78,17 +79,17 @@ Procedure .. table:: **Table 2** Configuration parameters - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+=================================================================================================================================================================================================================================================================+ - | System Disk | Directly use the system disk of the cloud server. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Data Disk | **At least one data disk is required** for the container runtime and kubelet. **The data disk cannot be deleted or uninstalled. Otherwise, the node will be unavailable.** | - | | | - | | Click **Expand** to define the disk space occupied by the container runtime to store the working directories, container image data, and image metadata. For details about how to allocate data disk space, see :ref:`Data Disk Space Allocation `. | - | | | - | | For other data disks, a raw disk is created without any processing by default. You can also click **Expand** to mount the data disk to a specified directory. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+====================================================================================================================================================================================================================================================================================================+ + | System Disk | Directly use the system disk of the cloud server. | + +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Data Disk | **At least one data disk is required** for the container runtime and kubelet. **The data disk cannot be deleted or uninstalled. Otherwise, the node will be unavailable.** | + | | | + | | Click **Expand** and select **Allocate Disk Space** to define the disk space occupied by the container runtime to store the working directories, container image data, and image metadata. For details about how to allocate data disk space, see :ref:`Data Disk Space Allocation `. | + | | | + | | For other data disks, a raw disk is created without any processing by default. You can also click **Expand** and select **Mount Disk** to mount the data disk to a specified directory. | + +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ **Advanced Settings** @@ -103,13 +104,13 @@ Procedure +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Resource Tag | You can add resource tags to classify resources. | | | | - | | You can create **predefined tags** in Tag Management Service (TMS). Predefined tags are visible to all service resources that support the tagging function. You can use these tags to improve tagging and resource migration efficiency. | + | | You can create **predefined tags** in Tag Management Service (TMS). Predefined tags are available to all service resources that support tags. You can use these tags to improve tagging and resource migration efficiency. | | | | | | CCE will automatically create the "CCE-Dynamic-Provisioning-Node=\ *node id*" tag. | +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Taint | This field is left blank by default. You can add taints to set anti-affinity for the node. A maximum of 10 taints are allowed for each node. Each taint contains the following parameters: | + | Taint | This field is left blank by default. You can add taints to configure anti-affinity for the node. A maximum of 20 taints are allowed for each node. Each taint contains the following parameters: | | | | - | | - **Key**: A key must contain 1 to 63 characters starting with a letter or digit. Only letters, digits, hyphens (-), underscores (_), and periods (.) are allowed. A DNS subdomain name can be used as the prefix of a key. | + | | - **Key**: A key must contain 1 to 63 characters, starting with a letter or digit. Only letters, digits, hyphens (-), underscores (_), and periods (.) are allowed. A DNS subdomain name can be used as the prefix of a key. | | | - **Value**: A value must start with a letter or digit and can contain a maximum of 63 characters, including letters, digits, hyphens (-), underscores (_), and periods (.). | | | - **Effect**: Available options are **NoSchedule**, **PreferNoSchedule**, and **NoExecute**. | | | | diff --git a/umn/source/nodes/container_engine.rst b/umn/source/nodes/container_engine.rst new file mode 100644 index 0000000..2191564 --- /dev/null +++ b/umn/source/nodes/container_engine.rst @@ -0,0 +1,165 @@ +:original_name: cce_10_0462.html + +.. _cce_10_0462: + +Container Engine +================ + +Introduction to Container Engines +--------------------------------- + +Container engines, one of the most important components of Kubernetes, manage the lifecycle of images and containers. The kubelet interacts with a container runtime through the Container Runtime Interface (CRI). + +CCE supports containerd and Docker. **containerd is recommended for its shorter traces, fewer components, higher stability, and less consumption of node resources**. + +.. table:: **Table 1** Comparison between container engines + + +----------------------------+-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | Item | containerd | Docker | + +============================+===================================================================+==================================================================================================+ + | Tracing | kubelet --> CRI plugin (in the containerd process) --> containerd | - Docker (Kubernetes 1.23 and earlier versions): | + | | | | + | | | kubelet --> dockershim (in the kubelet process) --> docker --> containerd | + | | | | + | | | - Docker (community solution for Kubernetes 1.24 and later versions): | + | | | | + | | | kubelet --> cri-dockerd (kubelet uses CRI to connect to cri-dockerd) --> docker--> containerd | + +----------------------------+-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | Command | crictl | docker | + +----------------------------+-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | Kubernetes CRI | Native support | Support through dockershim or cri-dockerd | + +----------------------------+-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | Pod startup delay | Low | High | + +----------------------------+-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | kubelet CPU/memory usage | Low | High | + +----------------------------+-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | Runtime's CPU/memory usage | Low | High | + +----------------------------+-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + +.. _cce_10_0462__section159298451879: + +Mapping between Node OSs and Container Engines +---------------------------------------------- + +.. table:: **Table 2** Node OSs and container engines in CCE clusters + + +--------------+----------------+-------------------------------------------------+--------------------------+-------------------+ + | OS | Kernel Version | Container Engine | Container Storage Rootfs | Container Runtime | + +==============+================+=================================================+==========================+===================+ + | EulerOS 2.5 | 3.x | Docker | Device Mapper | runC | + +--------------+----------------+-------------------------------------------------+--------------------------+-------------------+ + | EulerOS 2.9 | 4.x | Docker | OverlayFS | runC | + | | | | | | + | | | Clusters of v1.23 and later support containerd. | | | + +--------------+----------------+-------------------------------------------------+--------------------------+-------------------+ + | Ubuntu 22.04 | 4.x | Docker | OverlayFS | runC | + | | | | | | + | | | Clusters of v1.23 and later support containerd. | | | + +--------------+----------------+-------------------------------------------------+--------------------------+-------------------+ + +.. table:: **Table 3** Node OSs and container engines in CCE Turbo clusters + + +-----------------------------------------+-------------+----------------+------------------+--------------------------+-------------------+ + | Node Type | OS | Kernel Version | Container Engine | Container Storage Rootfs | Container Runtime | + +=========================================+=============+================+==================+==========================+===================+ + | Elastic Cloud Server (VM) | EulerOS 2.9 | 3.x | Docker | OverlayFS | runC | + +-----------------------------------------+-------------+----------------+------------------+--------------------------+-------------------+ + | Elastic Cloud Server (physical machine) | EulerOS 2.9 | 4.x | containerd | Device Mapper | Kata | + +-----------------------------------------+-------------+----------------+------------------+--------------------------+-------------------+ + +Common Commands of containerd and Docker +---------------------------------------- + +containerd does not support Docker APIs and Docker CLI, but you can run crictl commands to implement similar functions. + +.. table:: **Table 4** Image-related commands + + +-----+---------------------------------------------------+---------------------------------------------------+-----------------------+ + | No. | Docker Command | containerd Command | Remarks | + +=====+===================================================+===================================================+=======================+ + | 1 | docker images [Option] [Image name[:Tag]] | crictl images [Option] [Image name[:Tag]] | List local images. | + +-----+---------------------------------------------------+---------------------------------------------------+-----------------------+ + | 2 | docker pull [Option] *Image name*\ [:Tag|@DIGEST] | crictl pull [Option] *Image name*\ [:Tag|@DIGEST] | Pull images. | + +-----+---------------------------------------------------+---------------------------------------------------+-----------------------+ + | 3 | docker push | None | Pushing images. | + +-----+---------------------------------------------------+---------------------------------------------------+-----------------------+ + | 4 | docker rmi [Option] *Image*... | crictl rmi [Option] *Image ID*... | Delete a local image. | + +-----+---------------------------------------------------+---------------------------------------------------+-----------------------+ + | 5 | docker inspect *Image ID* | crictl inspecti *Image ID* | Check images. | + +-----+---------------------------------------------------+---------------------------------------------------+-----------------------+ + +.. table:: **Table 5** Container-related commands + + +-----+------------------------------------------------------------------------+------------------------------------------------------------------------+--------------------------------------------+ + | No. | Docker Command | containerd Command | Remarks | + +=====+========================================================================+========================================================================+============================================+ + | 1 | docker ps [Option] | crictl ps [Option] | List containers. | + +-----+------------------------------------------------------------------------+------------------------------------------------------------------------+--------------------------------------------+ + | 2 | docker create [Option] | crictl create [Option] | Create a container. | + +-----+------------------------------------------------------------------------+------------------------------------------------------------------------+--------------------------------------------+ + | 3 | docker start [Option] *Container ID*... | crictl start [Option] *Container ID*... | Start a container. | + +-----+------------------------------------------------------------------------+------------------------------------------------------------------------+--------------------------------------------+ + | 4 | docker stop [Option] *Container ID*... | crictl stop [Option] *Container ID*... | Stop a container. | + +-----+------------------------------------------------------------------------+------------------------------------------------------------------------+--------------------------------------------+ + | 5 | docker rm [Option] *Container ID*... | crictl rm [Option] *Container ID*... | Delete a container. | + +-----+------------------------------------------------------------------------+------------------------------------------------------------------------+--------------------------------------------+ + | 6 | docker attach [Option] *Container ID* | crictl attach [Option] *Container ID* | Connect to a container. | + +-----+------------------------------------------------------------------------+------------------------------------------------------------------------+--------------------------------------------+ + | 7 | docker exec [Option] *Container ID* *Startup command* [*Parameter*...] | crictl exec [Option] *Container ID* *Startup command* [*Parameter*...] | Access the container. | + +-----+------------------------------------------------------------------------+------------------------------------------------------------------------+--------------------------------------------+ + | 8 | docker inspect [Option] *Container name*\ \|\ *ID*... | crictl inspect [Option] *Container ID*... | Query container details. | + +-----+------------------------------------------------------------------------+------------------------------------------------------------------------+--------------------------------------------+ + | 9 | docker logs [Option] *Container ID* | crictl logs [Option] *Container ID* | View container logs. | + +-----+------------------------------------------------------------------------+------------------------------------------------------------------------+--------------------------------------------+ + | 10 | docker stats [Option] *Container ID*... | crictl stats [Option] *Container ID* | Check the resource usage of the container. | + +-----+------------------------------------------------------------------------+------------------------------------------------------------------------+--------------------------------------------+ + | 11 | docker update [Option] *Container ID*... | crictl update [Option] *Container ID*... | Update container resource limits. | + +-----+------------------------------------------------------------------------+------------------------------------------------------------------------+--------------------------------------------+ + +.. table:: **Table 6** Pod-related commands + + +-----+----------------+--------------------------------------+-------------------+ + | No. | Docker Command | containerd Command | Remarks | + +=====+================+======================================+===================+ + | 1 | None | crictl pods [Option] | List pods. | + +-----+----------------+--------------------------------------+-------------------+ + | 2 | None | crictl inspectp [Option] *Pod ID*... | View pod details. | + +-----+----------------+--------------------------------------+-------------------+ + | 3 | None | crictl start [Option] *Pod ID*... | Start a pod. | + +-----+----------------+--------------------------------------+-------------------+ + | 4 | None | crictl runp [Option] *Pod ID*... | Run a pod. | + +-----+----------------+--------------------------------------+-------------------+ + | 5 | None | crictl stopp [Option] *Pod ID*... | Stop a pod. | + +-----+----------------+--------------------------------------+-------------------+ + | 6 | None | crictl rmp [Option] *Pod ID*... | Delete a pod. | + +-----+----------------+--------------------------------------+-------------------+ + +.. note:: + + Containers created and started by containerd are immediately deleted by kubelet. containerd does not support suspending, resuming, restarting, renaming, and waiting for containers, nor Docker image build, import, export, comparison, push, search, and labeling. containerd does not support file copy. You can log in to the image repository by modifying the configuration file of containerd. + +Differences in Tracing +---------------------- + +- Docker (Kubernetes 1.23 and earlier versions): + + kubelet --> docker shim (in the kubelet process) --> docker --> containerd + +- Docker (community solution for Kubernetes v1.24 or later): + + kubelet --> cri-dockerd (kubelet uses CRI to connect to cri-dockerd) --> docker--> containerd + +- containerd: + + kubelet --> cri plugin (in the containerd process) --> containerd + +Although Docker has added functions such as swarm cluster, docker build, and Docker APIs, it also introduces bugs. Compared with containerd, Docker has one more layer of calling. **Therefore, containerd is more resource-saving and secure.** + +Container Engine Version Description +------------------------------------ + +- Docker + + - EulerOS/CentOS: docker-engine 18.9.0, a Docker version customized for CCE. Security vulnerabilities will be fixed in a timely manner. + +- containerd: 1.6.14 diff --git a/umn/source/nodes/creating_a_node.rst b/umn/source/nodes/creating_a_node.rst index dddf1d2..5c1db44 100644 --- a/umn/source/nodes/creating_a_node.rst +++ b/umn/source/nodes/creating_a_node.rst @@ -14,10 +14,10 @@ Prerequisites Constraints ----------- -- The node has 2-core or higher CPU, 4 GiB or larger memory. -- To ensure node stability, a certain amount of CCE node resources will be reserved for Kubernetes components (such as kubelet, kube-proxy, and docker) based on the node specifications. Therefore, the total number of node resources and assignable node resources in Kubernetes are different. The larger the node specifications, the more the containers deployed on the node. Therefore, more node resources need to be reserved to run Kubernetes components. For details, see :ref:`Formula for Calculating the Reserved Resources of a Node `. -- The node networking (such as the VM networking and container networking) is taken over by CCE. You are not allowed to add and delete NICs or change routes. If you modify the networking configuration, the availability of CCE may be affected. For example, the NIC named **gw_11cbf51a@eth0** on the node is the container network gateway and cannot be modified. -- During the node creation, software packages are downloaded from OBS using the domain name. You need to use a private DNS server to resolve the OBS domain name, and configure the DNS server address of the subnet where the node resides with a private DNS server address. When you create a subnet, the private DNS server is used by default. If you change the subnet DNS, ensure that the DNS server in use can resolve the OBS domain name. +- The node has at least 2 vCPUs and 4 GiB of memory. +- To ensure node stability, a certain number of CCE node resources will be reserved for Kubernetes components (such as kubelet, kube-proxy, and docker) based on the node specifications. Therefore, the total number of node resources and the number of allocatable node resources for your cluster are different. The larger the node specifications, the more the containers deployed on the node. Therefore, more node resources need to be reserved to run Kubernetes components. For details, see :ref:`Node Resource Reservation Policy `. +- Networks including VM networks and container networks of nodes are all managed by CCE. Do not add or delete ENIs or change routes. Otherwise, services may be unavailable. For example, the NIC named **gw_11cbf51a@eth0** on the node is the container network gateway and cannot be modified. +- During the node creation, software packages are downloaded from OBS using the domain name. Use a private DNS server to resolve the OBS domain name, and configure the DNS server address of the subnet where the node resides with a private DNS server address. When you create a subnet, the private DNS server is used by default. If you change the subnet DNS, ensure that the DNS server in use can resolve the OBS domain name. - Once a node is created, its AZ cannot be changed. Procedure @@ -25,9 +25,11 @@ Procedure After a cluster is created, you can create nodes for the cluster. -#. Log in to the CCE console. In the navigation pane, choose **Clusters**. Click the target cluster name to access its details page. +#. Log in to the CCE console. -#. In the navigation pane on the left, choose **Nodes**. On the page displayed, click **Create Node**. Set node parameters by referring to the following table. +#. In the navigation pane of the CCE console, choose **Clusters**. Click the target cluster name to access its details page. + +#. In the navigation pane on the left, choose **Nodes**. On the page displayed, click **Create Node**. In the **Node Settings** step, set node parameters by referring to the following table. **Compute Settings** @@ -35,48 +37,53 @@ After a cluster is created, you can create nodes for the cluster. .. table:: **Table 1** Configuration parameters - +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+====================================================================================================================================================================================================================================+ - | AZ | AZ where the node is located. Nodes in a cluster can be created in different AZs for higher reliability. The value cannot be changed after the node is created. | - | | | - | | You are advised to select **Random** to deploy your node in a random AZ based on the selected node flavor. | - | | | - | | An AZ is a physical region where resources use independent power supply and networks. AZs are physically isolated but interconnected through an internal network. To enhance workload availability, create nodes in different AZs. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Node Type | CCE cluster: | - | | | - | | - ECS (VM): Containers run on ECSs. | - | | | - | | CCE Turbo Cluster: | - | | | - | | - ECS (VM): Containers run on ECSs. Only Trunkport ECSs (models that can be bound with multiple elastic network interfaces (ENIs)) are supported. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Container Engine | CCE clusters support Docker and containerd in some scenarios. | - | | | - | | - VPC network clusters of v1.23 and later versions support containerd. Container tunnel network clusters of v1.23.2-r0 and later versions support containerd. | - | | - For a CCE Turbo cluster, both **Docker** and **containerd** are supported. For details, see :ref:`Mapping between Node OSs and Container Engines `. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Specifications | Select the node specifications based on service requirements. The available node specifications vary depending on AZs. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | OS | Select an OS type. Different types of nodes support different OSs. | - | | | - | | **Public image**: Select an OS for the node. | - | | | - | | **Private image**: You can use private images. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Node Name | Name of the node. When nodes (ECSs) are created in batches, the value of this parameter is used as the name prefix for each ECS. | - | | | - | | The system generates a default name for you, which can be modified. | - | | | - | | A node name must start with a lowercase letter and cannot end with a hyphen (-). Only digits, lowercase letters, and hyphens (-) are allowed. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Login Mode | - **Key Pair** | - | | | - | | Select the key pair used to log in to the node. You can select a shared key. | - | | | - | | A key pair is used for identity authentication when you remotely log in to a node. If no key pair is available, click **Create Key Pair**. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+==========================================================================================================================================================================================================================================+ + | AZ | AZ where the node is located. Nodes in a cluster can be created in different AZs for higher reliability. The value cannot be changed after the node is created. | + | | | + | | Select **Random** to deploy your node in a random AZ based on the selected node flavor. | + | | | + | | An AZ is a physical region where resources use independent power supply and networks. AZs are physically isolated but interconnected through an internal network. To enhance workload availability, create nodes in different AZs. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Node Type | CCE cluster: | + | | | + | | - ECS (VM): Containers run on ECSs. | + | | | + | | CCE Turbo cluster: | + | | | + | | - ECS (VM): Containers run on ECSs. Only the ECSs that can be bound with multiple NICs are supported. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Container Engine | CCE clusters support Docker and containerd in some scenarios. | + | | | + | | - VPC network clusters of v1.23 and later versions support containerd. Tunnel network clusters of v1.23.2-r0 and later versions support containerd. | + | | - For a CCE Turbo cluster, both **Docker** and **containerd** are supported. For details, see :ref:`Mapping between Node OSs and Container Engines `. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Specifications | Select node specifications that best fit your service needs. | + | | | + | | The available node flavors vary depending on AZs. Obtain the flavors displayed on the console. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | OS | Select an OS type. Different types of nodes support different OSs. | + | | | + | | - **Public image**: Select a public image for the node. | + | | - **Private image**: Select a private image for the node. | + | | | + | | .. note:: | + | | | + | | - Service container runtimes share the kernel and underlying calls of nodes. To ensure compatibility, select a Linux distribution version that is the same as or close to that of the final service container image for the node OS. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Node Name | Name of the node. When nodes (ECSs) are created in batches, the value of this parameter is used as the name prefix for each ECS. | + | | | + | | The system generates a default name for you, which can be modified. | + | | | + | | A node name must start with a lowercase letter and cannot end with a hyphen (-). Only digits, lowercase letters, and hyphens (-) are allowed. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Login Mode | - **Key Pair** | + | | | + | | Select the key pair used to log in to the node. You can select a shared key. | + | | | + | | A key pair is used for identity authentication when you remotely log in to a node. If no key pair is available, click **Create Key Pair**. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ **Storage Settings** @@ -84,44 +91,56 @@ After a cluster is created, you can create nodes for the cluster. .. table:: **Table 2** Configuration parameters - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+===============================================================================================================================================================================================================================================================================================+ - | System Disk | System disk used by the node OS. The value ranges from 40 GiB to 1,024 GiB. The default value is 50 GiB. | - | | | - | | **Encryption**: System disk encryption safeguards your data. Snapshots generated from encrypted disks and disks created using these snapshots automatically inherit the encryption function. **This function is available only in certain regions.** | - | | | - | | - **Encryption** is not selected by default. | - | | - After you select **Encryption**, you can select an existing key in the displayed dialog box. If no key is available, click **View Key List** to create a key. After the key is created, click the refresh icon. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Data Disk | **At least one data disk is required** for the container runtime and kubelet. **The data disk cannot be deleted or uninstalled. Otherwise, the node will be unavailable.** | - | | | - | | - First data disk: used for container runtime and kubelet components. The value ranges from 20 GiB to 32,768 GiB. The default value is 100 GiB. | - | | - Other data disks: You can set the data disk size to a value ranging from 10 GiB to 32,768 GiB. The default value is 100 GiB. | - | | | - | | **Advanced Settings** | - | | | - | | Click **Expand** to set the following parameters: | - | | | - | | - **Allocate Disk Space**: Select this option to define the disk space occupied by the container runtime to store the working directories, container image data, and image metadata. For details about how to allocate data disk space, see :ref:`Data Disk Space Allocation `. | - | | - **Encryption**: Data disk encryption safeguards your data. Snapshots generated from encrypted disks and disks created using these snapshots automatically inherit the encryption function. **This function is available only in certain regions.** | - | | | - | | - **Encryption** is not selected by default. | - | | - After you select **Encryption**, you can select an existing key. If no key is available, click the link next to the drop-down box to create a key. After the key is created, click the refresh icon. | - | | | - | | **Adding Multiple Data Disks** | - | | | - | | A maximum of four data disks can be added. By default, raw disks are created without any processing. You can also click **Expand** and select any of the following options: | - | | | - | | - **Default**: By default, a raw disk is created without any processing. | - | | - **Mount Disk**: The data disk is attached to a specified directory. | - | | | - | | **Local Disk Description** | - | | | - | | If the node flavor is disk-intensive or ultra-high I/O, one data disk can be a local disk. | - | | | - | | Local disks may break down and do not ensure data reliability. It is recommended that you store service data in EVS disks, which are more reliable than local disks. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+======================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | System Disk | System disk used by the node OS. The value ranges from 40 GiB to 1,024 GiB. The default value is 50 GiB. | + | | | + | | **Encryption**: System disk encryption safeguards your data. Snapshots generated from encrypted disks and disks created using these snapshots automatically inherit the encryption setting. **This function is available only in certain regions.** | + | | | + | | - **Encryption** is not selected by default. | + | | - After selecting **Encryption**, you can select an existing key in the displayed dialog box. If no key is available, click **View Key List** and create a key. After the key is created, click the refresh icon next to the **Encryption** text box. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Data Disk | **At least one data disk is required** for the container runtime and kubelet. **The data disk cannot be deleted or uninstalled. Otherwise, the node will be unavailable.** | + | | | + | | - First data disk: used for container runtime and kubelet components. The value ranges from 20 GiB to 32,768 GiB. The default value is 100 GiB. | + | | - Other data disks: You can set the data disk size to a value ranging from 10 GB to 32,768 GiB. The default value is 100 GiB. | + | | | + | | .. note:: | + | | | + | | If the node flavor is disk-intensive or ultra-high I/O, one data disk can be a local disk. | + | | | + | | Local disks may break down and do not ensure data reliability. Store your service data in EVS disks, which are more reliable than local disks. | + | | | + | | **Advanced Settings** | + | | | + | | Click **Expand** to configure the following parameters: | + | | | + | | - **Data Disk Space Allocation**: After selecting **Set Container Engine Space**, you can specify the proportion of the space for the container engine, image, and temporary storage on the data disk. The container engine space is used to store the working directory, container image data, and image metadata for the container runtime. The remaining space of the data disk is used for pod configuration files, keys, and EmptyDir. For details about how to allocate data disk space, see :ref:`Data Disk Space Allocation `. | + | | - **Encryption**: Data disk encryption safeguards your data. Snapshots generated from encrypted disks and disks created using these snapshots automatically inherit the encryption setting. **This function is available only in certain regions.** | + | | | + | | - **Encryption** is not selected by default. | + | | - After selecting **Encryption**, you can select an existing key in the displayed dialog box. If no key is available, click **View Key List** and create a key. After the key is created, click the refresh icon next to the **Encryption** text box. | + | | | + | | **Adding Multiple Data Disks** | + | | | + | | A maximum of four data disks can be added. By default, raw disks are created without any processing. You can also click **Expand** and select any of the following options: | + | | | + | | - **Default**: By default, a raw disk is created without any processing. | + | | - **Mount Disk**: The data disk is attached to a specified directory. | + | | - **Use as PV**: applicable to scenarios in which there is a high performance requirement on PVs. The **node.kubernetes.io/local-storage-persistent** label is added to the node with PV configured. The value is **linear** or **striped**. | + | | - **Use as ephemeral volume**: applicable to scenarios in which there is a high performance requirement on EmptyDir. | + | | | + | | .. note:: | + | | | + | | - Local PVs are supported only when the cluster version is v1.21.2-r0 or later and the everest add-on version is 2.1.23 or later. Version 2.1.23 or later is recommended. | + | | - Local EVs are supported only when the cluster version is v1.21.2-r0 or later and the everest add-on version is 1.2.29 or later. | + | | | + | | :ref:`Local Persistent Volumes (Local PVs) ` and :ref:`Local EVs ` support the following write modes: | + | | | + | | - **Linear**: A linear logical volume integrates one or more physical volumes. Data is written to the next physical volume when the previous one is used up. | + | | - **Striped**: A striped logical volume stripes data into blocks of the same size and stores them in multiple physical volumes in sequence, allowing data to be concurrently read and written. A storage pool consisting of striped volumes cannot be scaled-out. This option can be selected only when multiple volumes exist. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ **Network Settings** @@ -136,9 +155,9 @@ After a cluster is created, you can create nodes for the cluster. +-----------------------------------+-------------------------------------------------------------------------------------------------------------+ | Node IP Address | IP address of the specified node. By default, the value is randomly allocated. | +-----------------------------------+-------------------------------------------------------------------------------------------------------------+ - | EIP | A cloud server without an EIP cannot access public networks or be accessed by public networks. | + | EIP | An ECS without a bound EIP cannot access the Internet or be accessed by public networks. | | | | - | | The default value is **Do not use**. You can select **Use existing** and **Auto create**. | + | | The default value is **Do not use**. **Use existing** and **Auto create** are supported. | +-----------------------------------+-------------------------------------------------------------------------------------------------------------+ **Advanced Settings** @@ -150,19 +169,19 @@ After a cluster is created, you can create nodes for the cluster. +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Parameter | Description | +===================================+================================================================================================================================================================================================================================================================+ - | Kubernetes Label | Click **Add Label** to set the key-value pair attached to the Kubernetes objects (such as pods). A maximum of 20 labels can be added. | + | Kubernetes Label | A key-value pair added to a Kubernetes object (such as a pod). A maximum of 20 labels can be added. | | | | | | Labels can be used to distinguish nodes. With workload affinity settings, container pods can be scheduled to a specified node. For more information, see `Labels and Selectors `__. | +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Resource Tag | You can add resource tags to classify resources. | | | | - | | You can create **predefined tags** in Tag Management Service (TMS). Predefined tags are visible to all service resources that support the tagging function. You can use these tags to improve tagging and resource migration efficiency. | + | | You can create **predefined tags** in Tag Management Service (TMS). Predefined tags are available to all service resources that support tags. You can use these tags to improve tagging and resource migration efficiency. | | | | | | CCE will automatically create the "CCE-Dynamic-Provisioning-Node=\ *node id*" tag. | +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Taint | This parameter is left blank by default. You can add taints to set anti-affinity for the node. A maximum of 10 taints are allowed for each node. Each taint contains the following parameters: | + | Taint | This parameter is left blank by default. You can add taints to configure anti-affinity for the node. A maximum of 20 taints are allowed for each node. Each taint contains the following parameters: | | | | - | | - **Key**: A key must contain 1 to 63 characters starting with a letter or digit. Only letters, digits, hyphens (-), underscores (_), and periods (.) are allowed. A DNS subdomain name can be used as the prefix of a key. | + | | - **Key**: A key must contain 1 to 63 characters, starting with a letter or digit. Only letters, digits, hyphens (-), underscores (_), and periods (.) are allowed. A DNS subdomain name can be used as the prefix of a key. | | | - **Value**: A value must start with a letter or digit and can contain a maximum of 63 characters, including letters, digits, hyphens (-), underscores (_), and periods (.). | | | - **Effect**: Available options are **NoSchedule**, **PreferNoSchedule**, and **NoExecute**. | | | | @@ -191,13 +210,17 @@ After a cluster is created, you can create nodes for the cluster. | Post-installation Command | Enter commands. A maximum of 1,000 characters are allowed. | | | | | | The script will be executed after Kubernetes software is installed and will not affect the installation. | + | | | + | | .. note:: | + | | | + | | Do not run the **reboot** command in the post-installation script to restart the system immediately. To restart the system, run the **shutdown -r 1** command to delay the restart for one minute. | +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Agency | An agency is created by the account administrator on the IAM console. By creating an agency, you can share your cloud server resources with another account, or entrust a more professional person or team to manage your resources. | | | | | | If no agency is available, click **Create Agency** on the right to create one. | +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -#. Click **Next: Confirm**. Confirm the configured parameters, specifications. +#. Configure the number of nodes to be purchased. Then, click **Next: Confirm**. Confirm the configured parameters and specifications. #. Click **Submit**. diff --git a/umn/source/nodes/index.rst b/umn/source/nodes/index.rst index 28f26de..94b4d2d 100644 --- a/umn/source/nodes/index.rst +++ b/umn/source/nodes/index.rst @@ -6,31 +6,21 @@ Nodes ===== - :ref:`Node Overview ` +- :ref:`Container Engine ` - :ref:`Creating a Node ` - :ref:`Adding Nodes for Management ` -- :ref:`Removing a Node ` -- :ref:`Resetting a Node ` - :ref:`Logging In to a Node ` -- :ref:`Managing Node Labels ` -- :ref:`Managing Node Taints ` -- :ref:`Synchronizing Data with Cloud Servers ` -- :ref:`Deleting a Node ` -- :ref:`Stopping a Node ` -- :ref:`Performing Rolling Upgrade for Nodes ` +- :ref:`Management Nodes ` +- :ref:`Node O&M ` .. toctree:: :maxdepth: 1 :hidden: - node_overview/index + node_overview + container_engine creating_a_node adding_nodes_for_management - removing_a_node - resetting_a_node logging_in_to_a_node - managing_node_labels - managing_node_taints - synchronizing_data_with_cloud_servers - deleting_a_node - stopping_a_node - performing_rolling_upgrade_for_nodes + management_nodes/index + node_o_and_m/index diff --git a/umn/source/nodes/logging_in_to_a_node.rst b/umn/source/nodes/logging_in_to_a_node.rst index 54d5dbe..fa180e5 100644 --- a/umn/source/nodes/logging_in_to_a_node.rst +++ b/umn/source/nodes/logging_in_to_a_node.rst @@ -9,7 +9,7 @@ Constraints ----------- - If you use SSH to log in to a node (an ECS), ensure that the ECS already has an EIP (a public IP address). -- Only log in to a running ECS is allowed. +- Only login to a running ECS is allowed. - Only the user linux can log in to a Linux server. Login Modes @@ -34,16 +34,16 @@ You can log in to an ECS in either of the following modes: .. table:: **Table 1** Linux ECS login modes - +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | EIP Binding | On-Premises OS | Connection Method | - +=======================+=======================+==================================================================================================================================================+ - | Yes | Windows | Use a remote login tool, such as PuTTY or XShell. | - | | | | - | | | - SSH key authentication: `Login Using an SSH Key `__ | - +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | Yes | Linux | Run commands. | - | | | | - | | | - SSH key authentication: `Login Using an SSH Key `__ | - +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | Yes/No | Windows/Linux | Remote login using the management console\ `Login Using VNC `__ | - +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ + | EIP Binding | On-Premises OS | Connection Method | + +=======================+=======================+============================================================================================================================================+ + | Yes | Windows | Use a remote login tool, such as PuTTY or Xshell. | + | | | | + | | | - SSH key authentication: `Login Using an SSH Key `__ | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ + | Yes | Linux | Run commands. | + | | | | + | | | - SSH key authentication: `Login Using an SSH Key `__ | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ + | Yes/No | Windows/Linux | Remote login using the management console: `Login Using VNC `__ | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/nodes/deleting_a_node.rst b/umn/source/nodes/management_nodes/deleting_a_node.rst similarity index 96% rename from umn/source/nodes/deleting_a_node.rst rename to umn/source/nodes/management_nodes/deleting_a_node.rst index f234fcc..f3b8510 100644 --- a/umn/source/nodes/deleting_a_node.rst +++ b/umn/source/nodes/management_nodes/deleting_a_node.rst @@ -10,8 +10,8 @@ Scenario When a node in a CCE cluster is deleted, services running on the node will also be deleted. Exercise caution when performing this operation. -Notes and Constraints ---------------------- +Constraints +----------- - VM nodes that are being used by CCE do not support deletion on the ECS page. diff --git a/umn/source/nodes/management_nodes/index.rst b/umn/source/nodes/management_nodes/index.rst new file mode 100644 index 0000000..38bcaa4 --- /dev/null +++ b/umn/source/nodes/management_nodes/index.rst @@ -0,0 +1,28 @@ +:original_name: cce_10_0672.html + +.. _cce_10_0672: + +Management Nodes +================ + +- :ref:`Managing Node Labels ` +- :ref:`Managing Node Taints ` +- :ref:`Resetting a Node ` +- :ref:`Removing a Node ` +- :ref:`Synchronizing Data with Cloud Servers ` +- :ref:`Deleting a Node ` +- :ref:`Stopping a Node ` +- :ref:`Performing Rolling Upgrade for Nodes ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + managing_node_labels + managing_node_taints + resetting_a_node + removing_a_node + synchronizing_data_with_cloud_servers + deleting_a_node + stopping_a_node + performing_rolling_upgrade_for_nodes diff --git a/umn/source/nodes/managing_node_labels.rst b/umn/source/nodes/management_nodes/managing_node_labels.rst similarity index 96% rename from umn/source/nodes/managing_node_labels.rst rename to umn/source/nodes/management_nodes/managing_node_labels.rst index 22fbd55..94e9f48 100644 --- a/umn/source/nodes/managing_node_labels.rst +++ b/umn/source/nodes/management_nodes/managing_node_labels.rst @@ -21,9 +21,13 @@ Inherent Label of a Node After a node is created, some fixed labels exist and cannot be deleted. For details about these labels, see :ref:`Table 1 `. +.. note:: + + Do not manually change the inherent labels that are automatically added to a node. If the manually changed value conflicts with the system value, the system value prevails. + .. _cce_10_0004__table83962234533: -.. table:: **Table 1** Inherent label of a node +.. table:: **Table 1** Inherent labels of a node +-----------------------------------------------------+-------------------------------------------------------------+ | Key | Description | diff --git a/umn/source/nodes/managing_node_taints.rst b/umn/source/nodes/management_nodes/managing_node_taints.rst similarity index 72% rename from umn/source/nodes/managing_node_taints.rst rename to umn/source/nodes/management_nodes/managing_node_taints.rst index 4d41705..3c00acb 100644 --- a/umn/source/nodes/managing_node_taints.rst +++ b/umn/source/nodes/management_nodes/managing_node_taints.rst @@ -12,7 +12,7 @@ Taints A taint is a key-value pair associated with an effect. The following effects are available: -- NoSchedule: No pod will be able to schedule onto the node unless it has a matching toleration. Existing pods will not be evicted from the node. +- NoSchedule: No pod will be scheduled onto the node unless it has a matching toleration. Existing pods will not be evicted from the node. - PreferNoSchedule: Kubernetes prevents pods that cannot tolerate this taint from being scheduled onto the node. - NoExecute: If the pod has been running on a node, the pod will be evicted from the node. If the pod has not been running on a node, the pod will not be scheduled onto the node. @@ -71,10 +71,24 @@ On the CCE console, you can also manage taints of a node in batches. #. After the taint is added, check the added taint in node data. +System Taints +------------- + +When some issues occurred on a node, Kubernetes automatically adds a taint to the node. The built-in taints are as follows: + +- node.kubernetes.io/not-ready: The node is not ready. The node **Ready** value is **False**. +- node.kubernetes.io/unreachable: The node controller cannot access the node. The node **Ready** value is **Unknown**. +- node.kubernetes.io/memory-pressure: The node memory is approaching the upper limit. +- node.kubernetes.io/disk-pressure: The node disk space is approaching the upper limit. +- node.kubernetes.io/pid-pressure: The node PIDs are approaching the upper limit. +- node.kubernetes.io/network-unavailable: The node network is unavailable. +- node.kubernetes.io/unschedulable: The node cannot be scheduled. +- node.cloudprovider.kubernetes.io/uninitialized: If an external cloud platform driver is specified when kubelet is started, kubelet adds a taint to the current node and marks it as unavailable. After a controller of **cloud-controller-manager** initializes the node, kubelet will delete the taint. + Node Scheduling Settings ------------------------ -To configure scheduling settings, log in to the CCE console, click the cluster, choose **Nodes** in the navigation pane, and click **More** > **Disable Scheduling** in the **Operation** column of a node in the node list. +To configure scheduling, log in to the CCE console, click the cluster, choose **Nodes** in the navigation pane, and click **More** > **Disable Scheduling** in the **Operation** column of a node in the node list. In the dialog box that is displayed, click **OK** to set the node to be unschedulable. @@ -87,9 +101,7 @@ This operation will add a taint to the node. You can use kubectl to view the con Taints: node.kubernetes.io/unschedulable:NoSchedule ... -On the CCE console, perform the same operations again to remove the taint and set the node to be schedulable. - -.. _cce_10_0352__section2047442210417: +On the CCE console, remove the taint and set the node to be schedulable. Tolerations ----------- @@ -98,7 +110,7 @@ Tolerations are applied to pods, and allow (but do not require) the pods to sche Taints and tolerations work together to ensure that pods are not scheduled onto inappropriate nodes. One or more taints are applied to a node. This marks that the node should not accept any pods that do not tolerate the taints. -Here's an example of a pod that uses tolerations: +Example: .. code-block:: diff --git a/umn/source/nodes/performing_rolling_upgrade_for_nodes.rst b/umn/source/nodes/management_nodes/performing_rolling_upgrade_for_nodes.rst similarity index 85% rename from umn/source/nodes/performing_rolling_upgrade_for_nodes.rst rename to umn/source/nodes/management_nodes/performing_rolling_upgrade_for_nodes.rst index e766cdc..2442207 100644 --- a/umn/source/nodes/performing_rolling_upgrade_for_nodes.rst +++ b/umn/source/nodes/management_nodes/performing_rolling_upgrade_for_nodes.rst @@ -12,13 +12,13 @@ In a rolling upgrade, a new node is created, existing workloads are migrated to .. _cce_10_0276__fig1689610598118: -.. figure:: /_static/images/en-us_image_0000001568822733.png +.. figure:: /_static/images/en-us_image_0000001695737085.png :alt: **Figure 1** Workload migration **Figure 1** Workload migration -Notes and Constraints ---------------------- +Constraints +----------- - The original node and the target node to which the workload is to be migrated must be in the same cluster. - The cluster must be of v1.13.10 or later. @@ -31,7 +31,7 @@ Scenario 1: The Original Node Is in DefaultPool Create a node pool. For details, see :ref:`Creating a Node Pool `. -#. Click the name of the node pool. The IP address of the new node is displayed in the node list. +#. On the node pool list page, click **View Node** in the **Operation** column of the target node pool. The IP address of the new node is displayed in the node list. 3. Install and configure kubectl. For details, see :ref:`Connecting to a Cluster Using kubectl `. @@ -74,14 +74,14 @@ Scenario 2: The Original Node Is Not in DefaultPool #. .. _cce_10_0276__li1992616214312: - Copy the node pool and add nodes to it. + Copy the node pool and add nodes to it. For details, see :ref:`Copying a Node Pool `. #. Click **View Node** in the **Operation** column of the node pool. The IP address of the new node is displayed in the node list. 3. Migrate the workload. - a. Click **Edit** on the right of original node pool and set **Taints**. - b. Enter the key and value of the taint. The options of **Effect** are **NoSchedule**, **PreferNoSchedule**, and **NoExecute**. Select **NoExecute** and click **confirm to add**. + a. Click **Edit** on the right of original node pool and configure **Taints**. + b. Enter the key and value of a taint. The options of **Effect** are **NoSchedule**, **PreferNoSchedule**, and **NoExecute**. Select **NoExecute** and click **Add**. - **NoSchedule**: Pods that do not tolerate this taint are not scheduled on the node; existing pods are not evicted from the node. - **PreferNoSchedule**: Kubernetes tries to avoid scheduling pods that do not tolerate this taint onto the node. @@ -89,7 +89,7 @@ Scenario 2: The Original Node Is Not in DefaultPool .. note:: - If you need to reset the taint, delete the configured taint. + To reset the taint, delete the configured one. c. Click **OK**. d. In the navigation pane of the CCE console, choose **Workloads** > **Deployments**. In the workload list, the status of the workload to be migrated changes from **Running** to **Unready**. If the workload status changes to **Running** again, the migration is successful. @@ -98,7 +98,7 @@ Scenario 2: The Original Node Is Not in DefaultPool During workload migration, if node affinity is configured for the workload, the workload keeps displaying a message indicating that the workload is not ready. In this case, click the workload name to go to the workload details page. On the **Scheduling Policies** tab page, delete the affinity configuration of the original node and configure the affinity and anti-affinity policies of the new node. For details, see :ref:`Scheduling Policy (Affinity/Anti-affinity) `. - After the workload is successfully migrated, you can view that the workload is migrated to the node created in :ref:`1 ` on the **Pods** tab page of the workload details page. + After the workload is migrated, you can view that the workload is migrated to the node created in :ref:`1 ` on the **Pods** tab page of the workload details page. 4. Delete the original node. diff --git a/umn/source/nodes/removing_a_node.rst b/umn/source/nodes/management_nodes/removing_a_node.rst similarity index 92% rename from umn/source/nodes/removing_a_node.rst rename to umn/source/nodes/management_nodes/removing_a_node.rst index 045fdb0..d79d290 100644 --- a/umn/source/nodes/removing_a_node.rst +++ b/umn/source/nodes/management_nodes/removing_a_node.rst @@ -14,12 +14,12 @@ Removing a node will not delete the server corresponding to the node. You are ad After a node is removed from the cluster, the node is still running. -Notes and Constraints ---------------------- +Constraints +----------- -- Nodes can be removed only when the cluster is in the **Available** or **Unavailable** state. -- A CCE node can be removed only when it is in the **Active**, **Abnormal**, or **Error** state. -- A CCE node in the Active state can have its OS re-installed and CCE components cleared after it is removed. +- Nodes can be removed only when the cluster is in the **Available** or **Unavailable** status. +- A CCE node can be removed only when it is in the **Active**, **Abnormal**, or **Error** status. +- A CCE node in the **Active** status can have its OS re-installed and CCE components cleared after it is removed. - If the OS fails to be re-installed after the node is removed, manually re-install the OS. After the re-installation, log in to the node and run the clearance script to clear CCE components. For details, see :ref:`Handling Failed OS Reinstallation `. Precautions @@ -33,7 +33,7 @@ Precautions Procedure --------- -#. Log in to the CCE console and click the cluster name to access the cluster. +#. Log in to the CCE console and click the cluster name to access the cluster console. #. Choose **Nodes** from the navigation pane and choose **More** > **Remove** in the **Operation** column of the target node. diff --git a/umn/source/nodes/resetting_a_node.rst b/umn/source/nodes/management_nodes/resetting_a_node.rst similarity index 87% rename from umn/source/nodes/resetting_a_node.rst rename to umn/source/nodes/management_nodes/resetting_a_node.rst index 34b1af0..834d8b9 100644 --- a/umn/source/nodes/resetting_a_node.rst +++ b/umn/source/nodes/management_nodes/resetting_a_node.rst @@ -17,8 +17,8 @@ Constraints - For CCE clusters and CCE Turbo clusters, the version must be v1.13 or later to support node resetting. -Notes ------ +Precautions +----------- - Only worker nodes can be reset. If the node is still unavailable after the resetting, delete the node and create a new one. - **Resetting a node will reinstall the node OS and interrupt workload services running on the node. Therefore, perform this operation during off-peak hours.** @@ -31,15 +31,15 @@ Notes Procedure --------- -The new console allows you to reset nodes in batches. You can also use private images to reset nodes in batches. +The new console allows you to reset nodes in batches. You can also use a private image to reset nodes in batches. -#. Log in to the CCE console. +#. Log in to the CCE console and click the cluster name to access the cluster console. -#. Click the cluster name and access the cluster details page, choose **Nodes** in the navigation pane, and select one or multiple nodes to be reset in the list on the right. Choose **More** > **Reset Node**. +#. Click the cluster name to access the cluster console. Choose **Nodes** in the navigation pane, and select one or multiple nodes to be reset in the list. Choose **More** > **Reset Node**. #. In the displayed dialog box, click **Next**. - - For nodes in the DefaultPool, the parameter setting page is displayed. Set the parameters by referring to :ref:`4 `. + - For nodes in the DefaultPool node pool, the parameter setting page is displayed. Set the parameters by referring to :ref:`4 `. - For a node you create in a node pool, resetting the node does not support parameter configuration. You can directly use the configuration image of the node pool to reset the node. #. .. _cce_10_0003__li1646785611239: @@ -53,11 +53,11 @@ The new console allows you to reset nodes in batches. You can also use private i +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Parameter | Description | +===================================+==========================================================================================================================================================================================+ - | Specifications | Node specifications cannot be modified when you reset a node. | + | Specifications | Specifications cannot be modified when you reset a node. | +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Container Engine | CCE clusters support Docker and containerd in some scenarios. | | | | - | | - VPC network clusters of v1.23 and later versions support containerd. Container tunnel network clusters of v1.23.2-r0 and later versions support containerd. | + | | - VPC network clusters of v1.23 and later versions support containerd. Tunnel network clusters of v1.23.2-r0 and later versions support containerd. | | | - For a CCE Turbo cluster, both **Docker** and **containerd** are supported. For details, see :ref:`Mapping between Node OSs and Container Engines `. | +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | OS | **Public image**: Select an OS for the node. | @@ -77,17 +77,17 @@ The new console allows you to reset nodes in batches. You can also use private i .. table:: **Table 2** Configuration parameters - +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+===========================================================================================================================================================================================================================+ - | System Disk | Directly use the system disk of the cloud server. | - +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Data Disk | **At least one data disk is required** for the container runtime and kubelet. **The data disk cannot be deleted or uninstalled. Otherwise, the node will be unavailable.** | - | | | - | | Click **Expand** to define the disk space occupied by the container runtime to store the working directories, container image data, and image metadata. For details, see :ref:`Data Disk Space Allocation `. | - | | | - | | For other data disks, a raw disk is created without any processing by default. You can also click **Expand** to mount the data disk to a specified directory. | - +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+====================================================================================================================================================================================================================================================================================================+ + | System Disk | Directly use the system disk of the cloud server. | + +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Data Disk | **At least one data disk is required** for the container runtime and kubelet. **The data disk cannot be deleted or uninstalled. Otherwise, the node will be unavailable.** | + | | | + | | Click **Expand** and select **Allocate Disk Space** to define the disk space occupied by the container runtime to store the working directories, container image data, and image metadata. For details about how to allocate data disk space, see :ref:`Data Disk Space Allocation `. | + | | | + | | For other data disks, a raw disk is created without any processing by default. You can also click **Expand** and select **Mount Disk** to mount the data disk to a specified directory. | + +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ **Advanced Settings** @@ -102,13 +102,13 @@ The new console allows you to reset nodes in batches. You can also use private i +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Resource Tag | You can add resource tags to classify resources. | | | | - | | You can create **predefined tags** in Tag Management Service (TMS). Predefined tags are visible to all service resources that support the tagging function. You can use these tags to improve tagging and resource migration efficiency. | + | | You can create **predefined tags** in Tag Management Service (TMS). Predefined tags are available to all service resources that support tags. You can use these tags to improve tagging and resource migration efficiency. | | | | | | CCE will automatically create the "CCE-Dynamic-Provisioning-Node=\ *node id*" tag. | +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Taint | This parameter is left blank by default. You can add taints to set anti-affinity for the node. A maximum of 10 taints are allowed for each node. Each taint contains the following parameters: | + | Taint | This field is left blank by default. You can add taints to configure anti-affinity for the node. A maximum of 20 taints are allowed for each node. Each taint contains the following parameters: | | | | - | | - **Key**: A key must contain 1 to 63 characters starting with a letter or digit. Only letters, digits, hyphens (-), underscores (_), and periods (.) are allowed. A DNS subdomain name can be used as the prefix of a key. | + | | - **Key**: A key must contain 1 to 63 characters, starting with a letter or digit. Only letters, digits, hyphens (-), underscores (_), and periods (.) are allowed. A DNS subdomain name can be used as the prefix of a key. | | | - **Value**: A value must start with a letter or digit and can contain a maximum of 63 characters, including letters, digits, hyphens (-), underscores (_), and periods (.). | | | - **Effect**: Available options are **NoSchedule**, **PreferNoSchedule**, and **NoExecute**. | | | | diff --git a/umn/source/nodes/stopping_a_node.rst b/umn/source/nodes/management_nodes/stopping_a_node.rst similarity index 82% rename from umn/source/nodes/stopping_a_node.rst rename to umn/source/nodes/management_nodes/stopping_a_node.rst index b1c95c4..2263dde 100644 --- a/umn/source/nodes/stopping_a_node.rst +++ b/umn/source/nodes/management_nodes/stopping_a_node.rst @@ -10,8 +10,8 @@ Scenario After a node in the cluster is stopped, services on the node are also stopped. Before stopping a node, ensure that discontinuity of the services on the node will not result in adverse impacts. -Notes and Constraints ---------------------- +Constraints +----------- - Deleting a node will lead to pod migration, which may affect services. Therefore, delete nodes during off-peak hours. - Unexpected risks may occur during node deletion. Back up related data in advance. @@ -21,14 +21,14 @@ Notes and Constraints Procedure --------- -#. Log in to the CCE console and click the cluster name to access the cluster. +#. Log in to the CCE console and click the cluster name to access the cluster console. #. In the navigation pane, choose **Nodes**. In the right pane, click the name of the node to be stopped. -#. In the upper right corner of the ECS details page, click **Stop** in the instance status area. In the displayed dialog box, click **Yes**. +#. In the upper right corner of the ECS details page, click **Stop**. In the displayed dialog box, click **Yes**. - .. figure:: /_static/images/en-us_image_0000001518062704.png + .. figure:: /_static/images/en-us_image_0000001647417648.png :alt: **Figure 1** ECS details page **Figure 1** ECS details page diff --git a/umn/source/nodes/synchronizing_data_with_cloud_servers.rst b/umn/source/nodes/management_nodes/synchronizing_data_with_cloud_servers.rst similarity index 55% rename from umn/source/nodes/synchronizing_data_with_cloud_servers.rst rename to umn/source/nodes/management_nodes/synchronizing_data_with_cloud_servers.rst index 8e9c031..4660cc8 100644 --- a/umn/source/nodes/synchronizing_data_with_cloud_servers.rst +++ b/umn/source/nodes/management_nodes/synchronizing_data_with_cloud_servers.rst @@ -8,17 +8,14 @@ Synchronizing Data with Cloud Servers Scenario -------- -Each node in a cluster is a cloud server or physical machine. After a cluster node is created, you can change the cloud server name or specifications as required. +Each node in a cluster is a cloud server or physical machine. After a cluster node is created, you can change the cloud server name or specifications as required. Modifying node specifications will affect services. Perform the operation on nodes one by one. -Some information about CCE nodes is maintained independently from the ECS console. After you change the name, EIP, or specifications of an ECS on the ECS console, you need to **synchronize the ECS information** to the corresponding node on the CCE console. After the synchronization, information on both consoles is consistent. +Some information of CCE nodes is maintained independently from the ECS console. After you change the name, EIP, or specifications of an ECS on the ECS console, synchronize the ECS with the target node on the CCE console. After the synchronization, information on both consoles is consistent. -Notes and Constraints ---------------------- +Constraints +----------- - Data, including the VM status, ECS names, number of CPUs, size of memory, ECS specifications, and public IP addresses, can be synchronized. - - If an ECS name is specified as the Kubernetes node name, the change of the ECS name cannot be synchronized to the CCE console. - - Data, such as the OS and image ID, cannot be synchronized. (Such parameters cannot be modified on the ECS console.) Procedure @@ -26,12 +23,12 @@ Procedure #. Log in to the CCE console. -#. Click the cluster name and access the cluster console. Choose **Nodes** in the navigation pane. +#. Click the cluster name to access the cluster console. Choose **Nodes** in the navigation pane. #. Choose **More** > **Sync Server Data** next to the node. - .. figure:: /_static/images/en-us_image_0000001517743520.png + .. figure:: /_static/images/en-us_image_0000001695737349.png :alt: **Figure 1** Synchronizing server data **Figure 1** Synchronizing server data diff --git a/umn/source/nodes/node_o_and_m/data_disk_space_allocation.rst b/umn/source/nodes/node_o_and_m/data_disk_space_allocation.rst new file mode 100644 index 0000000..6fa4f6c --- /dev/null +++ b/umn/source/nodes/node_o_and_m/data_disk_space_allocation.rst @@ -0,0 +1,120 @@ +:original_name: cce_10_0341.html + +.. _cce_10_0341: + +Data Disk Space Allocation +========================== + +This section describes how to allocate data disk space to nodes so that you can configure the data disk space accordingly. + +Allocating Data Disk Space +-------------------------- + +When creating a node, configure data disks for the node. You can also click **Expand** and customize the data disk space allocation for the node. + +- :ref:`Allocate Disk Space `: + + CCE divides the data disk space for two parts by default. One part is used to store the Docker/containerd working directories, container images, and image metadata. The other is reserved for kubelet and emptyDir volumes. The available container engine space affects image pulls and container startup and running. + + - Container engine and container image space (90% by default): stores the container runtime working directories, container image data, and image metadata. + - kubelet and emptyDir space (10% by default): stores pod configuration files, secrets, and mounted storage such as emptyDir volumes. + +- :ref:`Allocate Pod Basesize `: indicates the basesize of a pod. You can set an upper limit for the disk space occupied by each workload pod (including the space occupied by container images). This setting prevents the pods from taking all the disk space available, which may cause service exceptions. It is recommended that the value is smaller than or equal to 80% of the container engine space. This parameter is related to the node OS and container storage rootfs and is not supported in some scenarios. + +.. _cce_10_0341__section10653143445411: + +Allocating Disk Space +--------------------- + +For a node using a non-shared data disk (100 GB for example), the division of the disk space varies depending on the container storage Rootfs type **Device Mapper** or **OverlayFS**. For details about the container storage Rootfs corresponding to different OSs, see :ref:`Mapping Between OS and Container Storage Rootfs `. + +- **Rootfs (Device Mapper)** + + By default, the container engine and image space, occupying 90% of the data disk, can be divided into the following two parts: + + - The **/var/lib/docker** directory is used as the Docker working directory and occupies 20% of the container engine and container image space by default. (Space size of the **/var/lib/docker** directory = **Data disk space x 90% x 20%**) + + - The thin pool is used to store container image data, image metadata, and container data, and occupies 80% of the container engine and container image space by default. (Thin pool space = **Data disk space x 90% x 80%**) + + The thin pool is dynamically mounted. You can view it by running the **lsblk** command on a node, but not the **df -h** command. + + + .. figure:: /_static/images/en-us_image_0000001647576500.png + :alt: **Figure 1** Space allocation for container engines of Device Mapper + + **Figure 1** Space allocation for container engines of Device Mapper + +- **Rootfs (OverlayFS)** + + No separate thin pool. The entire container engine and container image space (90% of the data disk by default) are in the **/var/lib/docker** directory. + + + .. figure:: /_static/images/en-us_image_0000001647417268.png + :alt: **Figure 2** Space allocation for container engines of OverlayFS + + **Figure 2** Space allocation for container engines of OverlayFS + +.. _cce_10_0341__section12119191161518: + +Allocating Basesize for Pods +---------------------------- + +The customized pod container space (basesize) is related to the node OS and container storage Rootfs. For details about the container storage Rootfs, see :ref:`Mapping Between OS and Container Storage Rootfs `. + +- Device Mapper supports custom pod basesize. The default value is 10 GB. +- In OverlayFS mode, the pod container space is not limited by default. + + .. note:: + + In the case of using Docker on EulerOS 2.9 nodes, **basesize** will not take effect if **CAP_SYS_RESOURCE** or **privileged** is configured for a container. + +When configuring **basesize**, consider the maximum number of pods on a node. The container engine space should be greater than the total disk space used by containers. Formula: **the container engine space and container image space (90% by default)** > **Number of containers** x **basesize**. Otherwise, the container engine space allocated to the node may be insufficient and the container cannot be started. + +For nodes that support **basesize**, when Device Mapper is used, although you can limit the size of the **/home** directory of a single container (to 10 GB by default), all containers on the node still share the thin pool of the node for storage. They are not completely isolated. When the sum of the thin pool space used by certain containers reaches the upper limit, other containers cannot run properly. + +In addition, after a file is deleted in the **/home** directory of the container, the thin pool space occupied by the file is not released immediately. Therefore, even if **basesize** is set to 10 GB, the thin pool space occupied by files keeps increasing until 10 GB when files are created in the container. The space released after file deletion will be reused but after a while. If **the number of containers on the node multiplied by basesize** is greater than the thin pool space size of the node, there is a possibility that the thin pool space has been used up. + +.. _cce_10_0341__section1473612279214: + +Mapping Between OS and Container Storage Rootfs +----------------------------------------------- + +.. table:: **Table 1** Node OSs and container engines in CCE clusters + + +-----------------------+--------------------------+------------------------------------------------------------------------------------------------------------------------+ + | OS | Container Storage Rootfs | Customized Basesize | + +=======================+==========================+========================================================================================================================+ + | EulerOS 2.5 | Device Mapper | Supported only when the container engine is Docker. The default value is 10 GB. | + +-----------------------+--------------------------+------------------------------------------------------------------------------------------------------------------------+ + | EulerOS 2.9 | OverlayFS | Supported only by clusters of v1.19.16, v1.21.3, v1.23.3, and later. The container basesize is not limited by default. | + | | | | + | | | Not supported when th cluster versions are earlier than v1.19.16, v1.21.3, and v1.23.3. | + +-----------------------+--------------------------+------------------------------------------------------------------------------------------------------------------------+ + | Ubuntu 22.04 | OverlayFS | Not supported. | + +-----------------------+--------------------------+------------------------------------------------------------------------------------------------------------------------+ + +.. table:: **Table 2** Node OSs and container engines in CCE Turbo clusters + + +-----------------------+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ + | OS | Container Storage Rootfs | Customized Basesize | + +=======================+============================+======================================================================================================================================+ + | Ubuntu 22.04 | OverlayFS | Not supported. | + +-----------------------+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ + | EulerOS 2.9 | ECS VMs use OverlayFS. | Supported only when Rootfs is set to OverlayFS and the container engine is Docker. The container basesize is not limited by default. | + | | | | + | | ECS PMs use Device Mapper. | Supported when Rootfs is set to Device Mapper and the container engine is Docker. The default value is 10 GB. | + +-----------------------+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------+ + +Garbage Collection Policies for Container Images +------------------------------------------------ + +When the container engine space is insufficient, image garbage collection is triggered. + +The policy for garbage collecting images takes two factors into consideration: **HighThresholdPercent** and **LowThresholdPercent**. Disk usage above the high threshold (default: 85%) will trigger garbage collection. The garbage collection will delete least recently used images until the low threshold (default: 80%) has been met. + +Recommended Configuration for the Container Engine Space +-------------------------------------------------------- + +- The container engine space should be greater than the total disk space used by containers. Formula: **Container engine space** > **Number of containers** x **basesize** +- You are advised to create and delete files of containerized services in local storage volumes (such as emptyDir and hostPath volumes) or cloud storage directories mounted to the containers. In this way, the thin pool space is not occupied. emptyDir volumes occupy the kubelet space. Therefore, properly plan the size of the kubelet space. +- You can deploy services on nodes that use the OverlayFS (for details, see :ref:`Mapping Between OS and Container Storage Rootfs `) so that the disk space occupied by files created or deleted in containers can be released immediately. diff --git a/umn/source/nodes/node_o_and_m/index.rst b/umn/source/nodes/node_o_and_m/index.rst new file mode 100644 index 0000000..f85ce86 --- /dev/null +++ b/umn/source/nodes/node_o_and_m/index.rst @@ -0,0 +1,20 @@ +:original_name: cce_10_0704.html + +.. _cce_10_0704: + +Node O&M +======== + +- :ref:`Node Resource Reservation Policy ` +- :ref:`Data Disk Space Allocation ` +- :ref:`Maximum Number of Pods That Can Be Created on a Node ` +- :ref:`Migrating Nodes from Docker to containerd ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + node_resource_reservation_policy + data_disk_space_allocation + maximum_number_of_pods_that_can_be_created_on_a_node + migrating_nodes_from_docker_to_containerd diff --git a/umn/source/nodes/node_overview/maximum_number_of_pods_that_can_be_created_on_a_node.rst b/umn/source/nodes/node_o_and_m/maximum_number_of_pods_that_can_be_created_on_a_node.rst similarity index 55% rename from umn/source/nodes/node_overview/maximum_number_of_pods_that_can_be_created_on_a_node.rst rename to umn/source/nodes/node_o_and_m/maximum_number_of_pods_that_can_be_created_on_a_node.rst index e69fd99..b700424 100644 --- a/umn/source/nodes/node_overview/maximum_number_of_pods_that_can_be_created_on_a_node.rst +++ b/umn/source/nodes/node_o_and_m/maximum_number_of_pods_that_can_be_created_on_a_node.rst @@ -5,50 +5,32 @@ Maximum Number of Pods That Can Be Created on a Node ==================================================== -The maximum number of pods that can be created on a node is determined by the following parameters: +Calculation of the Maximum Number of Pods on a Node +--------------------------------------------------- -- Number of container IP addresses that can be allocated on a node (alpha.cce/fixPoolMask): Set this parameter when creating a CCE cluster. This parameter is available only when **Network Model** is **VPC network**. - -- Maximum number of pods of a node (maxPods): Set this parameter when creating a node. It is a configuration item of kubelet. - -- .. _cce_10_0348__li5286959123611: - - Number of ENIs of a CCE Turbo cluster node: In a CCE Turbo cluster, ECS nodes use sub-ENIs and BMS nodes use ENIs. The maximum number of pods that can be created on a node depends on the number of ENIs that can be used by the node. - -The maximum number of pods that can be created on a node depends on the minimum value of these parameters. +The maximum number of pods that can be created on a node is calculated based on the cluster type: - For a cluster using the container tunnel network model, the value depends only on :ref:`the maximum number of pods on a node `. -- For clusters using the VPC network model, the value depends on :ref:`the maximum number of pods on a node ` and :ref:`the number of container IP addresses that can be allocated to the node `. It is recommended that the maximum number of pods on a node be less than or equal to the number of container IP addresses that can be allocated to the node. Otherwise, pods may fail to be scheduled. -- For a cluster (CCE Turbo cluster) using the Cloud Native Network 2.0 model, the value depends on :ref:`the maximum number of pods on a node ` and :ref:`the number of NICs on a CCE Turbo cluster node `. - -Container Network vs. Host Network ----------------------------------- - -When creating a pod, you can select the container network or host network for the pod. - -- .. _cce_10_0348__li13739132619599: - - Container network (default): **Each pod is assigned an IP address by the cluster networking add-ons, which occupies the IP addresses of the container network**. - -- Host network: The pod uses the host network (**hostNetwork: true** needs to be configured for the pod) and occupies the host port. The pod IP address is the host IP address. The pod does not occupy the IP addresses of the container network. To use the host network, you must confirm whether the container ports conflict with the host ports. Do not use the host network unless you know exactly which host port is used by which container. +- For clusters using the VPC network model, the value depends on :ref:`the maximum number of pods on a node ` and :ref:`the minimum number of container IP addresses that can be allocated to a node `. It is recommended that the maximum number of pods on a node be less than or equal to the number of container IP addresses that can be allocated to the node. Otherwise, pods may fail to be scheduled. +- For CCE Turbo clusters using the Cloud Native Network 2.0 model, the value depends on :ref:`the maximum number of pods on a node ` and :ref:`the minimum number of ENIs on a CCE Turbo cluster node `. It is recommended that the maximum number of pods on a node be less than or equal to the number of ENIs on the node. Otherwise, pods may fail to be scheduled. .. _cce_10_0348__section10770192193714: Number of Container IP Addresses That Can Be Allocated on a Node ---------------------------------------------------------------- -If you select **VPC network** for **Network Model** when creating a CCE cluster, you also need to set the number of container IP addresses that can be allocated to each node. +If you select **VPC network** for **Network Model** when creating a CCE cluster, you also need to set the number of container IP addresses that can be allocated to each node (alpha.cce/fixPoolMask). If the pod uses the host network (**hostNetwork: true**), the pod does not occupy the IP address of the allocatable container network. For details, see :ref:`Container Network vs. Host Network `. -This parameter affects the maximum number of pods that can be created on a node. Each pod occupies an IP address (when the :ref:`container network ` is used). If the number of available IP addresses is insufficient, pods cannot be created. +This parameter affects the maximum number of pods that can be created on a node. Each pod occupies an IP address (when the :ref:`container network ` is used). If the number of available IP addresses is insufficient, pods cannot be created. If the pod uses the host network (**hostNetwork: true**), the pod does not occupy the IP address of the allocatable container network. -By default, a node occupies three container IP addresses (network address, gateway address, and broadcast address). Therefore, the number of container IP addresses that can be allocated to a node equals the number of selected container IP addresses minus 3. For example, in the preceding figure, **the number of container IP addresses that can be allocated to a node is 125 (128 - 3)**. +By default, a node occupies three container IP addresses (network address, gateway address, and broadcast address). Therefore, the number of container IP addresses that can be allocated to a node equals the number of selected container IP addresses minus 3. .. _cce_10_0348__section16296174054019: Maximum Number of Pods on a Node -------------------------------- -When creating a node, you can configure the maximum number of pods that can be created on the node. This parameter is a configuration item of kubelet and determines the maximum number of pods that can be created by kubelet. +When creating a node, you can configure the maximum number of pods (maxPods) that can be created on the node. This parameter is a configuration item of kubelet and determines the maximum number of pods that can be created by kubelet. .. important:: @@ -62,19 +44,32 @@ When creating a node, you can configure the maximum number of pods that can be c .. table:: **Table 1** Default maximum number of pods on a node - ============== ======================================== - Memory Default Maximum Number of Pods on a Node - ============== ======================================== - 4G 20 - 8G 40 - 16G 60 - 32G 80 - 64 GB or above 110 - ============== ======================================== + =============== ========= + Memory Max. Pods + =============== ========= + 4 GiB 20 + 8 GiB 40 + 16 GiB 60 + 32 GiB 80 + 64 GiB or above 110 + =============== ========= .. _cce_10_0348__section15702175115573: Number of Node ENIs (CCE Turbo Clusters) ---------------------------------------- -In a CCE Turbo cluster, ECS nodes use sub-ENIs and BMS nodes use ENIs. The maximum number of pods that can be created on a node depends on the number of ENIs that can be used by the node. +In a CCE Turbo cluster, ECSs use sub-ENIs. The maximum number of pods that can be created on a node depends on the number of ENIs that can be used by the node. + +.. _cce_10_0348__section12428143711548: + +Container Network vs. Host Network +---------------------------------- + +When creating a pod, you can select the container network or host network for the pod. + +- .. _cce_10_0348__li13739132619599: + + Container network (default): **Each pod is assigned an IP address by the cluster networking add-ons, which occupies the IP addresses of the container network**. + +- Host network: The pod uses the host network (**hostNetwork: true** needs to be configured for the pod) and occupies the host port. The pod IP address is the host IP address. The pod does not occupy the IP addresses of the container network. To use the host network, you must confirm whether the container ports conflict with the host ports. Do not use the host network unless you know exactly which host port is used by which container. diff --git a/umn/source/nodes/node_o_and_m/migrating_nodes_from_docker_to_containerd.rst b/umn/source/nodes/node_o_and_m/migrating_nodes_from_docker_to_containerd.rst new file mode 100644 index 0000000..94ff67b --- /dev/null +++ b/umn/source/nodes/node_o_and_m/migrating_nodes_from_docker_to_containerd.rst @@ -0,0 +1,57 @@ +:original_name: cce_10_0601.html + +.. _cce_10_0601: + +Migrating Nodes from Docker to containerd +========================================= + +Context +------- + +Kubernetes has removed dockershim from v1.24 and does not support Docker by default. CCE will continue to support Docker in v1.25 but just till v1.27. The following steps show you how to migrate nodes from Docker to containerd. + +Prerequisites +------------- + +- At least one cluster that supports containerd nodes has been created. For details, see :ref:`Mapping between Node OSs and Container Engines `. +- There is a Docker node or Docker node pool in your cluster. + +Precautions +----------- + +- Theoretically, migration during container running will interrupt services for a short period of time. Therefore, it is strongly recommended that the services to be migrated have been deployed as multi-instance. In addition, you are advised to test the migration impact in the test environment to minimize potential risks. +- containerd cannot build images. Do not use the **docker build** command to build images on containerd nodes. For other differences between Docker and containerd, see :ref:`Container Engine `. + +Migrating a Node +---------------- + +#. Log in to the CCE console and click the cluster name to access the cluster console. + +#. In the navigation pane, choose **Nodes**. In the node list, select one or more nodes to be reset and choose **More** > **Reset Node**. + +#. Set **Container Engine** to **containerd**. You can adjust other parameters as required or retain them as set during creation. + +#. If the node status is **Installing**, the node is being reset. + + When the node status is **Running**, you can see that the node version is switched to containerd. You can log in to the node and run containerd commands such as **crictl** to view information about the containers running on the node. + +Migrating a Node Pool +--------------------- + +You can :ref:`copy a node pool `, set the container engine of the new node pool to containerd, and keep other configurations the same as those of the original Docker node pool. + +#. Log in to the CCE console and click the cluster name to access the cluster console. + +#. In the navigation pane, choose **Nodes**. On the **Node Pools** tab page, locate the Docker node pool to be copied and choose **More** > **Copy** in the **Operation** column. + +#. On the **Compute Settings** area, set **Container Engine** to **containerd** and modify other parameters as required. + +#. Scale the number of created containerd node pools to the number of original Docker node pools and delete nodes from the Docker node pools one by one. + + Rolling migration is preferred. That is, add some containerd nodes and then delete some Docker nodes until the number of nodes in the new containerd node pool is the same as that in the original Docker node pool. + + .. note:: + + If you have set node affinity for the workloads deployed on the original Docker nodes or node pool, set affinity policies for the workloads to run on the new containerd nodes or node pool. + +#. After the migration, delete the original Docker node pool. diff --git a/umn/source/nodes/node_o_and_m/node_resource_reservation_policy.rst b/umn/source/nodes/node_o_and_m/node_resource_reservation_policy.rst new file mode 100644 index 0000000..899b44b --- /dev/null +++ b/umn/source/nodes/node_o_and_m/node_resource_reservation_policy.rst @@ -0,0 +1,127 @@ +:original_name: cce_10_0178.html + +.. _cce_10_0178: + +Node Resource Reservation Policy +================================ + +Some node resources are used to run mandatory Kubernetes system components and resources to make the node as part of your cluster. Therefore, the total number of node resources and the amount of allocatable node resources for your cluster are different. The larger the node specifications, the more the containers deployed on the node. Therefore, more node resources need to be reserved to run Kubernetes components. + +To ensure node stability, a certain number of CCE node resources will be reserved for Kubernetes components (such as kubelet, kube-proxy, and docker) based on the node specifications. + +CCE calculates the resources that can be allocated to user nodes as follows: + +**Allocatable resources = Total amount - Reserved amount - Eviction threshold** + +The memory eviction threshold is fixed at 100 MiB. + +.. note:: + + **Total amount** indicates the available memory of the ECS, excluding the memory used by system components. Therefore, the total amount is slightly less than the memory of the node flavor. + +When the memory consumed by all pods on a node increases, the following behaviors may occur: + +#. When the available memory of the node is lower than the eviction threshold, kubelet is triggered to evict the pod. For details about the eviction threshold in Kubernetes, see `Node-pressure Eviction `__. +#. If a node triggers an OS memory insufficiency event (OOM) before kubelet reclaims memory, the system terminates the container. However, different from pod eviction, kubelet restarts the container based on the RestartPolicy of the pod. + +Rules v1 for Reserving Node Memory +---------------------------------- + +.. note:: + + For clusters of versions earlier than **v1.21.4-r0** and **v1.23.3-r0**, the v1 model is used for node memory reservation. For clusters of **v1.21.4-r0**, **v1.23.3-r0**, or later, the node memory reservation model is optimized to v2. For details, see :ref:`Rules v2 for Reserving Node Memory `. + +You can use the following formula calculate how much memory you should reserve for running containers on a node: + +Total reserved amount = :ref:`Reserved memory for system components ` + :ref:`Reserved memory for kubelet to manage pods ` + +.. _cce_10_0178__table19962121035915: + +.. table:: **Table 1** Reservation rules for system components + + +----------------------+-------------------------------------------------------------------------+ + | Total Memory (TM) | Reserved Memory for System Components | + +======================+=========================================================================+ + | TM <= 8 GB | 0 MB | + +----------------------+-------------------------------------------------------------------------+ + | 8 GB < TM <= 16 GB | [(TM - 8 GB) x 1024 x 10%] MB | + +----------------------+-------------------------------------------------------------------------+ + | 16 GB < TM <= 128 GB | [8 GB x 1024 x 10% + (TM - 16 GB) x 1024 x 6%] MB | + +----------------------+-------------------------------------------------------------------------+ + | TM > 128 GB | (8 GB x 1024 x 10% + 112 GB x 1024 x 6% + (TM - 128 GB) x 1024 x 2%) MB | + +----------------------+-------------------------------------------------------------------------+ + +.. _cce_10_0178__table124614211528: + +.. table:: **Table 2** Reservation rules for kubelet + + +-------------------+---------------------------------+-------------------------------------------------+ + | Total Memory (TM) | Number of Pods | Reserved Memory for kubelet | + +===================+=================================+=================================================+ + | TM <= 2 GB | None | TM x 25% | + +-------------------+---------------------------------+-------------------------------------------------+ + | TM > 2 GB | 0 < Max. pods on a node <= 16 | 700 MB | + +-------------------+---------------------------------+-------------------------------------------------+ + | | 16 < Max. pods on a node <= 32 | [700 + (Max. pods on a node - 16) x 18.75] MB | + +-------------------+---------------------------------+-------------------------------------------------+ + | | 32 < Max. pods on a node <= 64 | [1024 + (Max. pods on a node - 32) x 6.25] MB | + +-------------------+---------------------------------+-------------------------------------------------+ + | | 64 < Max. pods on a node <= 128 | [1230 + (Max. pods on a node - 64) x 7.80] MB | + +-------------------+---------------------------------+-------------------------------------------------+ + | | Max. pods on a node > 128 | [1740 + (Max. pods on a node - 128) x 11.20] MB | + +-------------------+---------------------------------+-------------------------------------------------+ + +.. important:: + + For a small-capacity node, adjust the maximum number of instances based on the site requirements. Alternatively, when creating a node on the CCE console, you can adjust the maximum number of instances for the node based on the node specifications. + +.. _cce_10_0178__section156741258145010: + +Rules v2 for Reserving Node Memory +---------------------------------- + +For clusters of **v1.21.4-r0**, **v1.23.3-r0**, or later, the node memory reservation model is optimized to v2 and can be dynamically adjusted using the node pool parameters **kube-reserved-mem** and **system-reserved-mem**. For details, see :ref:`Managing a Node Pool `. + +The total reserved node memory of the v2 model is equal to the sum of that reserved for the OS and that reserved for CCE to manage pods. + +Reserved memory includes basic and floating parts. For the OS, the floating memory depends on the node specifications. For CCE, the floating memory depends on the number of pods on a node. + +.. table:: **Table 3** Rules for reserving node memory v2 + + +-----------------+--------------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Reserved for | Basic/Floating | Reservation | Used by | + +=================+========================================================+======================+=====================================================================================================================================================================================================+ + | OS | Basic | 400 MB (fixed) | OS service components such as sshd and systemd-journald. | + +-----------------+--------------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | | Floating (depending on the node memory) | 25 MB/GB | Kernel | + +-----------------+--------------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | CCE | Basic | 500 MB (fixed) | Container engine components, such as kubelet and kube-proxy, when the node is unloaded | + +-----------------+--------------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | | Floating (depending on the number of pods on the node) | Docker: 20 MB/pod | Container engine components when the number of pods increases | + | | | | | + | | | containerd: 5 MB/pod | .. note:: | + | | | | | + | | | | When the v2 model reserves memory for a node by default, the default maximum number of pods is estimated based on the memory. For details, see :ref:`Table 1 `. | + +-----------------+--------------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Rules for Reserving Node CPU +---------------------------- + +.. table:: **Table 4** Node CPU reservation rules + + +----------------------------+------------------------------------------------------------------------+ + | Total CPU Cores (Total) | Reserved CPU Cores | + +============================+========================================================================+ + | Total <= 1 core | Total x 6% | + +----------------------------+------------------------------------------------------------------------+ + | 1 core < Total <= 2 cores | 1 core x 6% + (Total - 1 core) x 1% | + +----------------------------+------------------------------------------------------------------------+ + | 2 cores < Total <= 4 cores | 1 core x 6% + 1 core x 1% + (Total - 2 cores) x 0.5% | + +----------------------------+------------------------------------------------------------------------+ + | Total > 4 cores | 1 core x 6% + 1 core x 1% + 2 cores x 0.5% + (Total - 4 cores) x 0.25% | + +----------------------------+------------------------------------------------------------------------+ + +Rules for CCE to Reserve Data Disks on Nodes +-------------------------------------------- + +CCE uses Logical Volume Manager (LVM) to manage disks. LVM creates a metadata area on a disk to store logical and physical volumes, occupying 4 MiB space. Therefore, the actual available disk space of a node is equal to the disk size minus 4 MiB. diff --git a/umn/source/nodes/node_overview/precautions_for_using_a_node.rst b/umn/source/nodes/node_overview.rst similarity index 95% rename from umn/source/nodes/node_overview/precautions_for_using_a_node.rst rename to umn/source/nodes/node_overview.rst index 852cbb3..88fdd31 100644 --- a/umn/source/nodes/node_overview/precautions_for_using_a_node.rst +++ b/umn/source/nodes/node_overview.rst @@ -1,9 +1,9 @@ -:original_name: cce_10_0461.html +:original_name: cce_10_0180.html -.. _cce_10_0461: +.. _cce_10_0180: -Precautions for Using a Node -============================ +Node Overview +============= Introduction ------------ @@ -16,12 +16,12 @@ A container cluster consists of a set of worker machines, called nodes, that run CCE uses high-performance Elastic Cloud Servers (ECSs) as nodes to build highly available Kubernetes clusters. -.. _cce_10_0461__section1667513391595: +.. _cce_10_0180__section1667513391595: Supported Node Specifications ----------------------------- -Different regions support different node flavors, and node flavors may be changed. You are advised to log in to the CCE console and check whether the required node flavors are supported on the page for creating nodes. +Different regions support different node flavors, and node flavors may be changed. Log in to the CCE console and check whether the required node flavors are supported on the page for creating nodes. Underlying File Storage System of Docker ---------------------------------------- @@ -70,7 +70,7 @@ A lifecycle indicates the node statuses recorded from the time when the node is +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------+ | Deleting | Intermediate state | The node is being deleted. | | | | | - | | | If this state stays for a long time, an exception occurs. | + | | | If this state stays for a long time, an exception occurred. | +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------+ | Stopped | Stable state | The node is stopped properly. | | | | | diff --git a/umn/source/nodes/node_overview/container_engine.rst b/umn/source/nodes/node_overview/container_engine.rst deleted file mode 100644 index 41bd442..0000000 --- a/umn/source/nodes/node_overview/container_engine.rst +++ /dev/null @@ -1,86 +0,0 @@ -:original_name: cce_10_0462.html - -.. _cce_10_0462: - -Container Engine -================ - -Introduction to Container Engines ---------------------------------- - -Container engines, one of the most important components of Kubernetes, manage the lifecycle of images and containers. The kubelet interacts with a container runtime through the Container Runtime Interface (CRI). - -.. _cce_10_0462__section159298451879: - -Mapping between Node OSs and Container Engines ----------------------------------------------- - -.. table:: **Table 1** Node OSs and container engines in CCE clusters - - +--------------+----------------+-------------------------------------------------+-----------------------------------------------------+-------------------+ - | OS | Kernel Version | Container Engine | Container Storage Rootfs | Container Runtime | - +==============+================+=================================================+=====================================================+===================+ - | CentOS 7.x | 3.x | Docker | Clusters of v1.19.16 and earlier use Device Mapper. | runC | - | | | | | | - | | | Clusters of v1.23 and later support containerd. | Clusters of v1.19.16 and later use OverlayFS. | | - +--------------+----------------+-------------------------------------------------+-----------------------------------------------------+-------------------+ - | EulerOS 2.5 | 3.x | Docker | Device Mapper | runC | - +--------------+----------------+-------------------------------------------------+-----------------------------------------------------+-------------------+ - | EulerOS 2.9 | 4.x | Docker | OverlayFS | runC | - | | | | | | - | | | Clusters of v1.23 and later support containerd. | | | - +--------------+----------------+-------------------------------------------------+-----------------------------------------------------+-------------------+ - | Ubuntu 22.04 | 4.x | Docker | OverlayFS | runC | - | | | | | | - | | | containerd | | | - +--------------+----------------+-------------------------------------------------+-----------------------------------------------------+-------------------+ - -.. table:: **Table 2** Node OSs and container engines in CCE Turbo clusters - - +---------------------------+--------------+----------------+-------------------------------------------------+--------------------------+-------------------+ - | Node Type | OS | Kernel Version | Container Engine | Container Storage Rootfs | Container Runtime | - +===========================+==============+================+=================================================+==========================+===================+ - | Elastic Cloud Server (VM) | CentOS 7.x | 3.x | Docker | OverlayFS | runC | - +---------------------------+--------------+----------------+-------------------------------------------------+--------------------------+-------------------+ - | | EulerOS 2.5 | 3.x | Docker | OverlayFS | runC | - +---------------------------+--------------+----------------+-------------------------------------------------+--------------------------+-------------------+ - | | EulerOS 2.9 | 4.x | Docker | OverlayFS | runC | - | | | | | | | - | | | | Clusters of v1.23 and later support containerd. | | | - +---------------------------+--------------+----------------+-------------------------------------------------+--------------------------+-------------------+ - | | Ubuntu 22.04 | 4.x | Docker | OverlayFS | runC | - | | | | | | | - | | | | containerd | | | - +---------------------------+--------------+----------------+-------------------------------------------------+--------------------------+-------------------+ - -Differences in Tracing ----------------------- - -- Docker (Kubernetes 1.23 and earlier versions): - - kubelet --> docker shim (in the kubelet process) --> docker --> containerd - -- Docker (community solution for Kubernetes v1.24 or later): - - kubelet --> cri-dockerd (kubelet uses CRI to connect to cri-dockerd) --> docker--> containerd - -- containerd: - - kubelet --> cri plugin (in the containerd process) --> containerd - -Although Docker has added functions such as swarm cluster, docker build, and Docker APIs, it also introduces bugs. Compared with containerd, Docker has one more layer of calling. **Therefore, containerd is more resource-saving and secure.** - -Container Engine Version Description ------------------------------------- - -- Docker - - - EulerOS/CentOS: docker 18.9.0, a Docker version customized for CCE. Security vulnerabilities will be fixed in a timely manner. - - Ubuntu 22.04: docker-ce 20.10.21 (community version). - - .. note:: - - - You are advised to use the containerd engine for Ubuntu nodes. - - The open source docker-ce of the Ubuntu 18.04 node may trigger bugs when concurrent exec operations are performed (for example, multiple exec probes are configured). You are advised to use HTTP/TCP probes. - -- containerd: 1.6.14 diff --git a/umn/source/nodes/node_overview/data_disk_space_allocation.rst b/umn/source/nodes/node_overview/data_disk_space_allocation.rst deleted file mode 100644 index 030b4a2..0000000 --- a/umn/source/nodes/node_overview/data_disk_space_allocation.rst +++ /dev/null @@ -1,97 +0,0 @@ -:original_name: cce_10_0341.html - -.. _cce_10_0341: - -Data Disk Space Allocation -========================== - -This section describes how to allocate data disk space. - -When creating a node, you need to configure a data disk whose capacity is greater than or equal to 100GB for the node. You can click **Expand** to customize the data disk space allocation. - -- :ref:`Allocate Disk Space `: CCE divides the data disk space for container engines and pods. The container engine space stores the Docker/containerd working directories, container images, and image metadata. The pod space stores kubelet components and emptyDir volumes. The available container engine space affects image download and container startup and running. - - - Container engine and container image space (90% by default): functions as the container runtime working directory and stores container image data and image metadata. - - kubelet component and emptyDir volume space (10% by default): stores pod configuration files, secrets, and mounted storage such as emptyDir volumes. - -- :ref:`Allocate Pod Basesize `: indicates the base size of a container, that is, the upper limit of the disk space occupied by each workload pod (including the space occupied by container images). This setting prevents the pods from taking all the disk space available, which may cause service exceptions. It is recommended that the value be smaller than or equal to 80% of the container engine space. This parameter is related to the node OS and container storage rootfs and is not supported in some scenarios. - -.. _cce_10_0341__section10653143445411: - -Setting Container Engine Space ------------------------------- - -A data disk, 100 GB for example, is divided as follows (depending on the container storage rootfs): - -You can log in to the node and run the **docker info** command to view the storage engine type. - -.. code-block:: - - # docker info - Containers: 20 - Running: 17 - Paused: 0 - Stopped: 3 - Images: 16 - Server Version: 18.09.0 - Storage Driver: devicemapper - -- **Rootfs (Device Mapper)** - - By default, 90% of the data disk is the container engine and container image space, which can be divided into the following two parts: - - - The **/var/lib/docker** directory is the Docker working directory and occupies 20% of the container runtime space by default. (Space size of the **/var/lib/docker** directory = **Data disk space x 90% x 20%**) - - - The thin pool stores container image data, image metadata, and container data, and occupies 80% of the container runtime space by default. (Thin pool space = **Data disk space x 90% x 80%**) - - The thin pool is dynamically mounted. You can view it by running the **lsblk** command on a node, but not the **df -h** command. - - |image1| - -- **Rootfs (OverlayFS)** - - No separate thin pool. The entire container engine and container image space (90% of the data disk by default) are in the **/var/lib/docker** directory. - - |image2| - -Using rootfs for container storage in CCE - -- CCE cluster: EulerOS 2.5 nodes use Device Mapper and EulerOS 2.9 nodes use OverlayFS. CentOS 7.x nodes in clusters earlier than v1.19.16 use Device Mapper, and use OverlayFS in clusters of v1.19.16 and later. -- CCE Turbo cluster: BMSs use Device Mapper. ECSs use OverlayFS. - -.. _cce_10_0341__section12119191161518: - -Allocating Basesize for Pods ----------------------------- - -The capability of customizing pod basesize is related to the node OS and container storage rootfs. You can log in to the node and run the **docker info** command to view the container storage rootfs. - -- Device Mapper supports custom pod basesize. The default value is 10 GB. -- When OverlayFS is used, **basesize** is not limited by default. In clusters of latest versions (1.19.16, 1.21.3, 1.23.3, and later), EulerOS 2.9 supports **basesize** if the Docker engine is used. Other OSs do not support **basesize**. - - .. note:: - - In the case of using Docker on EulerOS 2.9 nodes, **basesize** will not take effect if **CAP_SYS_RESOURCE** or **privileged** is configured for a container. - -When configuring **basesize**, consider the maximum number of pods on a node. The container engine space should be greater than the total disk space used by containers. Formula: **the container engine space and container image space (90% by default)** > **Number of containers** x **basesize**. Otherwise, the container engine space allocated to the node may be insufficient and the container cannot be started. - -For nodes that support **basesize**, when Device Mapper is used, although you can limit the size of the **/home** directory of a single container (to 10 GB by default), all containers on the node still share the thin pool of the node for storage. They are not completely isolated. When the sum of the thin pool space used by certain containers reaches the upper limit, other containers cannot run properly. - -In addition, after a file is deleted in the **/home** directory of the container, the thin pool space occupied by the file is not released immediately. Therefore, even if **basesize** is set to 10 GB, the thin pool space occupied by files keeps increasing until 10 GB when files are created in the container. The space released after file deletion will be reused but after a while. If **the number of containers on the node multiplied by basesize** is greater than the thin pool space size of the node, there is a possibility that the thin pool space has been used up. - -Garbage Collection Policies for Container Images ------------------------------------------------- - -When the container engine space is insufficient, image garbage collection is triggered. - -The policy for garbage collecting images takes two factors into consideration: **HighThresholdPercent** and **LowThresholdPercent**. Disk usage above the high threshold (default: 85%) will trigger garbage collection. The garbage collection will delete least recently used images until the low threshold (default: 80%) has been met. - -Recommended Configuration for the Container Engine Space --------------------------------------------------------- - -- The container engine space should be greater than the total disk space used by containers. Formula: **Container engine space** > **Number of containers** x **basesize** -- You are advised to create and delete files of containerized services in local storage volumes (such as emptyDir and hostPath volumes) or cloud storage directories mounted to the containers. In this way, the thin pool space is not occupied. emptyDir volumes occupy the kubelet space. Therefore, properly plan the size of the kubelet space. -- If OverlayFS is used by in CCE clusters, you can deploy services on these nodes so that the disk space occupied by files created or deleted in containers can be released immediately. - -.. |image1| image:: /_static/images/en-us_image_0000001517902940.png -.. |image2| image:: /_static/images/en-us_image_0000001517743364.png diff --git a/umn/source/nodes/node_overview/formula_for_calculating_the_reserved_resources_of_a_node.rst b/umn/source/nodes/node_overview/formula_for_calculating_the_reserved_resources_of_a_node.rst deleted file mode 100644 index b85546a..0000000 --- a/umn/source/nodes/node_overview/formula_for_calculating_the_reserved_resources_of_a_node.rst +++ /dev/null @@ -1,129 +0,0 @@ -:original_name: cce_10_0178.html - -.. _cce_10_0178: - -Formula for Calculating the Reserved Resources of a Node -======================================================== - -Some of the resources on the node need to run some necessary Kubernetes system components and resources to make the node as part of your cluster. Therefore, the total number of node resources and the number of assignable node resources in Kubernetes are different. The larger the node specifications, the more the containers deployed on the node. Therefore, more node resources need to be reserved to run Kubernetes components. - -To ensure node stability, a certain amount of CCE node resources will be reserved for Kubernetes components (such as kubelet, kube-proxy, and docker) based on the node specifications. - -CCE calculates the resources that can be allocated to user nodes as follows: - -**Allocatable resources = Total amount - Reserved amount - Eviction threshold** - -The memory eviction threshold is fixed at 100 MiB. - -When the memory consumed by all pods on a node increases, the following behaviors may occur: - -#. When the available memory on a node is lower than the eviction threshold, kubelet is triggered to evict pods. For details about Kubernetes eviction threshold, see `Node-pressure Eviction `__. -#. If a node triggers an OS Out-Of-Memory (OOM) event before kubelet reclaims memory, the system terminates the container. However, kubelet does not evict the pod, but restarts the container based on the RestartPolicy of the pod. - -Rules for Reserving Node Memory (v1) ------------------------------------- - -For clusters of **v1.21.4-r0**, **v1.23.3-r0**, or later, the node memory reservation model is optimized to V2. For details, see :ref:`Rules for Reserving Node Memory (v2) `. - -You can use the following formula calculate how much memory you should reserve for running containers on a node: - -Total reserved amount = Reserved memory for system components + Reserved memory for kubelet to manage pods - -.. table:: **Table 1** Reservation rules for system components - - +------------------------+-----------------------------------------------------------------------------+ - | Total Memory (TM) | Reserved Memory for System Components | - +========================+=============================================================================+ - | TM <= 8 GiB | 0 MiB | - +------------------------+-----------------------------------------------------------------------------+ - | 8 GiB < TM <= 16 GiB | [(TM - 8 GiB) x 1024 x 10%] MiB | - +------------------------+-----------------------------------------------------------------------------+ - | 16 GiB < TM <= 128 GiB | [8 GiB x 1024 x 10% + (TM - 16 GiB) x 1024 x 6%] MiB | - +------------------------+-----------------------------------------------------------------------------+ - | TM > 128 GiB | (8 GiB x 1024 x 10% + 112 GiB x 1024 x 6% + (TM - 128 GiB) x 1024 x 2%) MiB | - +------------------------+-----------------------------------------------------------------------------+ - -.. table:: **Table 2** Reservation rules for kubelet - - +-------------------+---------------------------------+--------------------------------------------------+ - | Total Memory (TM) | Number of Pods | Reserved Memory for kubelet | - +===================+=================================+==================================================+ - | TM <= 2 GiB | ``-`` | TM x 25% | - +-------------------+---------------------------------+--------------------------------------------------+ - | TM > 2 GiB | 0 < Max. pods on a node <= 16 | 700 MB | - +-------------------+---------------------------------+--------------------------------------------------+ - | | 16 < Max. pods on a node <= 32 | [700 + (Max. pods on a node - 16) x 18.75] MiB | - +-------------------+---------------------------------+--------------------------------------------------+ - | | 32 < Max. pods on a node <= 64 | [1024 + (Max. pods on a node - 32) x 6.25] MiB | - +-------------------+---------------------------------+--------------------------------------------------+ - | | 64 < Max. pods on a node <= 128 | [1230 + (Max. pods on a node - 64) x 7.80] MiB | - +-------------------+---------------------------------+--------------------------------------------------+ - | | Max. pods on a node > 128 | [1740 + (Max. pods on a node - 128) x 11.20] MiB | - +-------------------+---------------------------------+--------------------------------------------------+ - -.. important:: - - For a small-capacity node, adjust the maximum number of instances based on the site requirements. Alternatively, when creating a node on the CCE console, you can adjust the maximum number of instances for the node based on the node specifications. - -.. _cce_10_0178__section156741258145010: - -Rules for Reserving Node Memory (v2) ------------------------------------- - -For clusters of **v1.21.4-r0**, **v1.23.3-r0**, or later, the node memory reservation model is optimized to V2 and can be dynamically adjusted using the node pool parameters **kube-reserved-mem** and **system-reserved-mem**. For details, see :ref:`Managing a Node Pool `. - -The total reserved node memory of the V2 model is equal to the sum of that reserved for the OS and that reserved for CCE to manage pods. - -Reserved memory includes basic and floating parts. For the OS, the floating memory depends on the node specifications. For CCE, the floating memory depends on the number of pods on a node. - -.. table:: **Table 3** Rules for reserving node memory (v2) - - +-----------------+--------------------------------------------------------+-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Reserved for | Basic/Floating | Reservation | Used by | - +=================+========================================================+=======================+========================================================================================================================================================================================================================================+ - | OS | Basic | 400 MiB (fixed) | OS service components such as sshd and systemd-journald. | - +-----------------+--------------------------------------------------------+-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | | Floating (depending on the node memory) | 25 MiB/GiB | Kernel | - +-----------------+--------------------------------------------------------+-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | CCE | Basic | 500 MiB (fixed) | Container engine components, such as kubelet and kube-proxy, when the node is unloaded | - +-----------------+--------------------------------------------------------+-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | | Floating (depending on the number of pods on the node) | Docker: 20 MiB/pod | Container engine components when the number of pods increases | - | | | | | - | | | containerd: 5 MiB/pod | .. note:: | - | | | | | - | | | | When the v2 model reserves memory for a node by default, the default maximum number of pods is estimated based on the memory. For details, see :ref:`Default Maximum Number of Pods on a Node `. | - +-----------------+--------------------------------------------------------+-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -Rules for Reserving Node CPU ----------------------------- - -.. table:: **Table 4** Node CPU reservation rules - - +----------------------------+------------------------------------------------------------------------+ - | Total CPU Cores (Total) | Reserved CPU Cores | - +============================+========================================================================+ - | Total <= 1 core | Total x 6% | - +----------------------------+------------------------------------------------------------------------+ - | 1 core < Total <= 2 cores | 1 core x 6% + (Total - 1 core) x 1% | - +----------------------------+------------------------------------------------------------------------+ - | 2 cores < Total <= 4 cores | 1 core x 6% + 1 core x 1% + (Total - 2 cores) x 0.5% | - +----------------------------+------------------------------------------------------------------------+ - | Total > 4 cores | 1 core x 6% + 1 core x 1% + 2 cores x 0.5% + (Total - 4 cores) x 0.25% | - +----------------------------+------------------------------------------------------------------------+ - -.. _cce_10_0178__section1057416013173: - -Default Maximum Number of Pods on a Node ----------------------------------------- - -.. table:: **Table 5** Default maximum number of pods on a node - - =============== ============================== - Memory Default Maximum Number of Pods - =============== ============================== - 4 GiB 20 - 8 GiB 40 - 16 GiB 60 - 32 GiB 80 - 64 GiB or above 110 - =============== ============================== diff --git a/umn/source/nodes/node_overview/index.rst b/umn/source/nodes/node_overview/index.rst deleted file mode 100644 index 506163b..0000000 --- a/umn/source/nodes/node_overview/index.rst +++ /dev/null @@ -1,24 +0,0 @@ -:original_name: cce_10_0180.html - -.. _cce_10_0180: - -Node Overview -============= - -- :ref:`Precautions for Using a Node ` -- :ref:`Container Engine ` -- :ref:`Kata Containers and Common Containers ` -- :ref:`Maximum Number of Pods That Can Be Created on a Node ` -- :ref:`Formula for Calculating the Reserved Resources of a Node ` -- :ref:`Data Disk Space Allocation ` - -.. toctree:: - :maxdepth: 1 - :hidden: - - precautions_for_using_a_node - container_engine - kata_containers_and_common_containers - maximum_number_of_pods_that_can_be_created_on_a_node - formula_for_calculating_the_reserved_resources_of_a_node - data_disk_space_allocation diff --git a/umn/source/cloud_trace_service_cts/cce_operations_supported_by_cts.rst b/umn/source/observability/cts_logs/cce_operations_supported_by_cts.rst similarity index 100% rename from umn/source/cloud_trace_service_cts/cce_operations_supported_by_cts.rst rename to umn/source/observability/cts_logs/cce_operations_supported_by_cts.rst diff --git a/umn/source/cloud_trace_service_cts/index.rst b/umn/source/observability/cts_logs/index.rst similarity index 82% rename from umn/source/cloud_trace_service_cts/index.rst rename to umn/source/observability/cts_logs/index.rst index 7149ada..03d970a 100644 --- a/umn/source/cloud_trace_service_cts/index.rst +++ b/umn/source/observability/cts_logs/index.rst @@ -2,8 +2,8 @@ .. _cce_10_0024: -Cloud Trace Service (CTS) -========================= +CTS Logs +======== - :ref:`CCE Operations Supported by CTS ` - :ref:`Querying CTS Logs ` diff --git a/umn/source/cloud_trace_service_cts/querying_cts_logs.rst b/umn/source/observability/cts_logs/querying_cts_logs.rst similarity index 88% rename from umn/source/cloud_trace_service_cts/querying_cts_logs.rst rename to umn/source/observability/cts_logs/querying_cts_logs.rst index 19ea48d..58ee43e 100644 --- a/umn/source/cloud_trace_service_cts/querying_cts_logs.rst +++ b/umn/source/observability/cts_logs/querying_cts_logs.rst @@ -42,7 +42,7 @@ Procedure #. Click |image2| on the left of a trace to expand its details, as shown below. - .. figure:: /_static/images/en-us_image_0000001569022781.png + .. figure:: /_static/images/en-us_image_0000001695896201.png :alt: **Figure 1** Expanding trace details **Figure 1** Expanding trace details @@ -50,10 +50,10 @@ Procedure #. Click **View Trace** in the **Operation** column. The trace details are displayed. - .. figure:: /_static/images/en-us_image_0000001517743372.png + .. figure:: /_static/images/en-us_image_0000001695736933.png :alt: **Figure 2** Viewing event details **Figure 2** Viewing event details -.. |image1| image:: /_static/images/en-us_image_0000001569182497.gif -.. |image2| image:: /_static/images/en-us_image_0000001569182505.png +.. |image1| image:: /_static/images/en-us_image_0000001647417272.gif +.. |image2| image:: /_static/images/en-us_image_0000001695896213.png diff --git a/umn/source/observability/index.rst b/umn/source/observability/index.rst new file mode 100644 index 0000000..765588f --- /dev/null +++ b/umn/source/observability/index.rst @@ -0,0 +1,18 @@ +:original_name: cce_10_0705.html + +.. _cce_10_0705: + +Observability +============= + +- :ref:`Logging ` +- :ref:`Monitoring ` +- :ref:`CTS Logs ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + logging/index + monitoring/index + cts_logs/index diff --git a/umn/source/logging/index.rst b/umn/source/observability/logging/index.rst similarity index 74% rename from umn/source/logging/index.rst rename to umn/source/observability/logging/index.rst index 7c22d1c..1e6f4a4 100644 --- a/umn/source/logging/index.rst +++ b/umn/source/observability/logging/index.rst @@ -5,12 +5,12 @@ Logging ======= -- :ref:`Log Management Overview ` +- :ref:`Overview ` - :ref:`Using ICAgent to Collect Container Logs ` .. toctree:: :maxdepth: 1 :hidden: - log_management_overview + overview using_icagent_to_collect_container_logs diff --git a/umn/source/logging/log_management_overview.rst b/umn/source/observability/logging/overview.rst similarity index 95% rename from umn/source/logging/log_management_overview.rst rename to umn/source/observability/logging/overview.rst index 1ba037d..e964849 100644 --- a/umn/source/logging/log_management_overview.rst +++ b/umn/source/observability/logging/overview.rst @@ -2,8 +2,8 @@ .. _cce_10_0557: -Log Management Overview -======================= +Overview +======== CCE allows you to configure policies for collecting, managing, and analyzing workload logs periodically to prevent logs from being over-sized. diff --git a/umn/source/logging/using_icagent_to_collect_container_logs.rst b/umn/source/observability/logging/using_icagent_to_collect_container_logs.rst similarity index 88% rename from umn/source/logging/using_icagent_to_collect_container_logs.rst rename to umn/source/observability/logging/using_icagent_to_collect_container_logs.rst index 8f9814d..a46ef31 100644 --- a/umn/source/logging/using_icagent_to_collect_container_logs.rst +++ b/umn/source/observability/logging/using_icagent_to_collect_container_logs.rst @@ -7,8 +7,8 @@ Using ICAgent to Collect Container Logs CCE works with AOM to collect workload logs. When creating a node, CCE installs the ICAgent for you (the DaemonSet named **icagent** in the kube-system namespace of the cluster). After the ICAgent collects workload logs and reports them to AOM, you can view workload logs on the CCE or AOM console. -Notes and Constraints ---------------------- +Constraints +----------- The ICAgent only collects **\*.log**, **\*.trace**, and **\*.out** text log files. @@ -22,24 +22,24 @@ Using ICAgent to Collect Logs The following uses Nginx as an example. Log policies vary depending on workloads. - .. figure:: /_static/images/en-us_image_0000001569022957.png + .. figure:: /_static/images/en-us_image_0000001691644354.png :alt: **Figure 1** Adding a log policy **Figure 1** Adding a log policy -#. Set **Storage Type** to **Host Path** or **Container Path**. +#. Set **Volume Type** to **Host Path** or **Container Path**. .. table:: **Table 1** Configuring log policies +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Parameter | Description | +===================================+===========================================================================================================================================================================================================================================================================================================================================================================================================================+ - | Storage Type | - **Host Path** (hostPath): A host path is mounted to the specified container path (mount path). In the node host path, you can view the container logs output into the mount path. | + | Volume Type | - **Host Path** (hostPath): A host path is mounted to the specified container path (mount path). In the node host path, you can view the container logs output into the mount path. | | | - **Container Path** (emptyDir): A temporary path of the node is mounted to the specified path (mount path). Log data that exists in the temporary path but is not reported by the collector to AOM will disappear after the pod is deleted. | +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Host Path | Enter a host path, for example, **/var/paas/sys/log/nginx**. | +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Container Path | Container path (for example, **/tmp**) to which the storage resources will be mounted. | + | Mount Path | Container path (for example, **/tmp**) to which the storage resources will be mounted. | | | | | | .. important:: | | | | @@ -63,9 +63,22 @@ Using ICAgent to Collect Logs | | - **PodUID/ContainerName**: ID of a pod or name of a container. | | | - **PodName/ContainerName**: name of a pod or container. | +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Collection Path | A collection path narrows down the scope of collection to specified logs. | + | | | + | | - If no collection path is specified, log files in **.log**, **.trace**, and **.out** formats will be collected from the specified path. | + | | - **/Path/**/** indicates that all log files in **.log**, **.trace**, and **.out** formats will be recursively collected from the specified path and all subdirectories at 5 levels deep. | + | | - \* in log file names indicates a fuzzy match. | + | | | + | | Example: The collection path **/tmp/**/test*.log** indicates that all **.log** files prefixed with **test** will be collected from **/tmp** and subdirectories at 5 levels deep. | + | | | + | | .. caution:: | + | | | + | | CAUTION: | + | | Ensure that the ICAgent version is 5.12.22 or later. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Log Dump | Log dump refers to rotating log files on a local host. | | | | - | | - **Enabled**: AOM scans log files every minute. When a log file exceeds 50 MB, it is dumped immediately. A new **.zip** file is generated in the directory where the log file locates. For a log file, AOM stores only the latest 20 **.zip** files. When the number of **.zip** files exceeds 20, earlier **.zip** files will be deleted. After the dump is complete, the log file in AOM will be cleared. | + | | - **Enabled**: AOM scans log files every minute. When a log file exceeds 50 MB, it is dumped. A new **.zip** file is generated in the directory where the log file locates. For a log file, AOM stores only the latest 20 **.zip** files. When the number of **.zip** files exceeds 20, earlier **.zip** files will be deleted. | | | - **Disabled**: AOM does not dump log files. | | | | | | .. note:: | @@ -238,4 +251,4 @@ You can also run the **kubectl logs** command to view the standard output of a c kubectl logs pod_name -c container_name -n namespace (one-off query) kubectl logs -f -n namespace (real-time query in tail -f mode) -.. |image1| image:: /_static/images/en-us_image_0000001569182673.png +.. |image1| image:: /_static/images/en-us_image_0000001695737369.png diff --git a/umn/source/monitoring_and_alarm/index.rst b/umn/source/observability/monitoring/index.rst similarity index 58% rename from umn/source/monitoring_and_alarm/index.rst rename to umn/source/observability/monitoring/index.rst index 8632ca8..b3cf617 100644 --- a/umn/source/monitoring_and_alarm/index.rst +++ b/umn/source/observability/monitoring/index.rst @@ -2,15 +2,15 @@ .. _cce_10_0110: -Monitoring and Alarm -==================== +Monitoring +========== - :ref:`Monitoring Overview ` -- :ref:`Custom Monitoring ` +- :ref:`Monitoring Custom Metrics on AOM ` .. toctree:: :maxdepth: 1 :hidden: monitoring_overview - custom_monitoring + monitoring_custom_metrics_on_aom diff --git a/umn/source/observability/monitoring/monitoring_custom_metrics_on_aom.rst b/umn/source/observability/monitoring/monitoring_custom_metrics_on_aom.rst new file mode 100644 index 0000000..34d1cd3 --- /dev/null +++ b/umn/source/observability/monitoring/monitoring_custom_metrics_on_aom.rst @@ -0,0 +1,261 @@ +:original_name: cce_10_0201.html + +.. _cce_10_0201: + +Monitoring Custom Metrics on AOM +================================ + +CCE allows you to upload custom metrics to AOM. The ICAgent on a node periodically calls the metric monitoring API configured on a workload to read monitoring data and then uploads the data to AOM. + + +.. figure:: /_static/images/en-us_image_0000001695736981.png + :alt: **Figure 1** Using ICAgent to collect monitoring metrics + + **Figure 1** Using ICAgent to collect monitoring metrics + +The custom metric API of a workload can be configured when the workload is created. The following procedure uses an Nginx application as an example to describe how to report custom metrics to AOM. + +#. :ref:`Preparing an Application ` + + Prepare an application image. The application must provide a metric monitoring API for ICAgent to collect data, and the monitoring data must :ref:`comply with the prometheus specifications `. + +#. :ref:`Deploying Applications and Converting Nginx Metrics ` + + Use the application image to deploy a workload in a cluster. Custom monitoring metrics are automatically reported. + +#. :ref:`Verification ` + + Go to AOM to check whether the custom metrics are successfully collected. + +Constraints +----------- + +- The ICAgent is compatible with the monitoring data specifications of `Prometheus `__. The custom metrics provided by pods can be collected by the ICAgent only when they meet the monitoring data specifications of Prometheus. For details, see :ref:`Prometheus Monitoring Data Collection `. +- The ICAgent supports only `Gauge `__ metrics. +- The interval for the ICAgent to call the custom metric API is 1 minute, which cannot be changed. + +.. _cce_10_0201__section173671127160: + +Prometheus Monitoring Data Collection +------------------------------------- + +Prometheus periodically calls the metric monitoring API (**/metrics** by default) of an application to obtain monitoring data. The application needs to provide the metric monitoring API for Prometheus to call, and the monitoring data must meet the following specifications of Prometheus: + +.. code-block:: + + # TYPE nginx_connections_active gauge + nginx_connections_active 2 + # TYPE nginx_connections_reading gauge + nginx_connections_reading 0 + +Prometheus provides clients in various languages. For details about the clients, see `Prometheus CLIENT LIBRARIES `__. For details about how to develop an exporter, see `WRITING EXPORTERS `__. The Prometheus community provides various third-party exporters that can be directly used. For details, see `EXPORTERS AND INTEGRATIONS `__. + +.. _cce_10_0201__section14984815298: + +Preparing an Application +------------------------ + +User-developed applications must provide a metric monitoring API for ICAgent to collect data, and the monitoring data must comply with the Prometheus specifications. For details, see :ref:`Prometheus Monitoring Data Collection `. + +This document uses Nginx as an example to describe how to collect monitoring data. There is a module named **ngx_http_stub_status_module** in Nginx, which provides basic monitoring functions. You can configure the **nginx.conf** file to provide an interface for external systems to access Nginx monitoring data. + +#. Log in to a Linux VM that can access to the Internet and run Docker commands. + +#. Create an **nginx.conf** file. Add the server configuration under **http** to enable Nginx to provide an interface for the external systems to access the monitoring data. + + .. code-block:: + + user nginx; + worker_processes auto; + + error_log /var/log/nginx/error.log warn; + pid /var/run/nginx.pid; + + events { + worker_connections 1024; + } + + http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /var/log/nginx/access.log main; + sendfile on; + #tcp_nopush on; + keepalive_timeout 65; + #gzip on; + include /etc/nginx/conf.d/*.conf; + + server { + listen 8080; + server_name localhost; + location /stub_status { + stub_status on; + access_log off; + } + } + } + +#. Use this configuration to create an image and a Dockerfile file. + + .. code-block:: + + vi Dockerfile + + The content of Dockerfile is as follows: + + .. code-block:: + + FROM nginx:1.21.5-alpine + ADD nginx.conf /etc/nginx/nginx.conf + EXPOSE 80 + CMD ["nginx", "-g", "daemon off;"] + +#. Use this Dockerfile to build an image and upload it to SWR. The image name is **nginx:exporter**. + + a. In the navigation pane, choose **My Images** and then click **Upload Through Client**\ in the upper right corner. On the page displayed, click **Generate a temporary login command** and click |image1| to copy the command. + + b. Run the login command copied in the previous step on the node. If the login is successful, the message "Login Succeeded" is displayed. + + c. Run the following command to build an image named nginx. The image version is exporter. + + .. code-block:: + + docker build -t nginx:exporter . + + d. Tag the image and upload it to the image repository. Change the image repository address and organization name based on your requirements. + + .. code-block:: + + docker tag nginx:exporter {swr-address}/{group}/nginx:exporter + docker push {swr-address}/{group}/nginx:exporter + +#. View application metrics. + + a. Use **nginx:exporter** to create a workload. + + b. :ref:`Access the container ` and use http://:8080/stub_status to obtain nginx monitoring data. **** indicates the IP address of the container. Information similar to the following is displayed. + + .. code-block:: + + # curl http://127.0.0.1:8080/stub_status + Active connections: 3 + server accepts handled requests + 146269 146269 212 + Reading: 0 Writing: 1 Waiting: 2 + +.. _cce_10_0201__section1539954011362: + +Deploying Applications and Converting Nginx Metrics +--------------------------------------------------- + +The data format of the monitoring data provided by **nginx:exporter** does not meet the requirements of Prometheus. Convert the data format to the format required by Prometheus. To convert the format of Nginx metrics, use `nginx-prometheus-exporter `__, as shown in the following figure. + + +.. figure:: /_static/images/en-us_image_0000001695896253.png + :alt: **Figure 2** Using exporter to convert the data format + + **Figure 2** Using exporter to convert the data format + +Deploy **nginx:exporter** and **nginx-prometheus-exporter** in the same pod. + +.. code-block:: + + kind: Deployment + apiVersion: apps/v1 + metadata: + name: nginx-exporter + namespace: default + spec: + replicas: 1 + selector: + matchLabels: + app: nginx-exporter + template: + metadata: + labels: + app: nginx-exporter + annotations: + metrics.alpha.kubernetes.io/custom-endpoints: '[{"api":"prometheus","path":"/metrics","port":"9113","names":""}]' + spec: + containers: + - name: container-0 + image: 'nginx:exporter' # Replace it with the address of the image you uploaded to SWR. + resources: + limits: + cpu: 250m + memory: 512Mi + requests: + cpu: 250m + memory: 512Mi + - name: container-1 + image: 'nginx/nginx-prometheus-exporter:0.9.0' + command: + - nginx-prometheus-exporter + args: + - '-nginx.scrape-uri=http://127.0.0.1:8080/stub_status' + imagePullSecrets: + - name: default-secret + +.. note:: + + The **nginx/nginx-prometheus-exporter:0.9.0** image needs to be pulled from the public network. Therefore, a public IP address needs to be bound to each node in the cluster. + +nginx-prometheus-exporter requires a startup command. **nginx-prometheus-exporter -nginx.scrape-uri=http://127.0.0.1:8080/stub_status** is used to obtain Nginx monitoring data. + +In addition, add an annotation **metrics.alpha.kubernetes.io/custom-endpoints: '[{"api":"prometheus","path":"/metrics","port":"9113","names":""}]'** to the pod. + +.. _cce_10_0201__section42551081185: + +Verification +------------ + +After an application is deployed, you can access Nginx to construct some access data and check whether the corresponding monitoring data can be obtained in AOM. + +#. Obtain the pod name of Nginx. + + .. code-block:: + + $ kubectl get pod + NAME READY STATUS RESTARTS AGE + nginx-exporter-78859765db-6j8sw 2/2 Running 0 4m + +#. Log in to the container and run commands to access Nginx. + + .. code-block:: + + $ kubectl exec -it nginx-exporter-78859765db-6j8sw -- /bin/sh + Defaulting container name to container-0. + Use 'kubectl describe pod/nginx-exporter-78859765db-6j8sw -n default' to see all of the containers in this pod. + / # curl http://localhost + + + + Welcome to nginx! + + + +

      Welcome to nginx!

      +

      If you see this page, the nginx web server is successfully installed and + working. Further configuration is required.

      + +

      For online documentation and support please refer to + nginx.org.
      + Commercial support is available at + nginx.com.

      + +

      Thank you for using nginx.

      + + + / # + +#. Log in to AOM. In the navigation pane, choose **Monitoring** > **Metric Monitoring** to view Nginx-related metrics, for example, **nginx_connections_active**. + +.. |image1| image:: /_static/images/en-us_image_0000001695896249.png diff --git a/umn/source/observability/monitoring/monitoring_overview.rst b/umn/source/observability/monitoring/monitoring_overview.rst new file mode 100644 index 0000000..155efe5 --- /dev/null +++ b/umn/source/observability/monitoring/monitoring_overview.rst @@ -0,0 +1,210 @@ +:original_name: cce_10_0182.html + +.. _cce_10_0182: + +Monitoring Overview +=================== + +CCE works with AOM to comprehensively monitor clusters. When a node is created, the ICAgent (the DaemonSet named **icagent** in the kube-system namespace of the cluster) of AOM is installed by default. The ICAgent collects monitoring data of underlying resources and workloads running on the cluster. It also collects monitoring data of custom metrics of the workload. + +- Resource metrics + + Basic resource monitoring includes CPU, memory, and disk monitoring. For details, see :ref:`Resource Metrics `. You can view these metrics of clusters, nodes, and workloads on the CCE or AOM console. + +- Custom metrics + + The ICAgent collects custom metrics of applications and uploads them to AOM. For details, see :ref:`Monitoring Custom Metrics on AOM `. + +.. _cce_10_0182__section205486212251: + +Resource Metrics +---------------- + +On the CCE console, you can view the following metrics. + +- :ref:`Viewing Cluster Monitoring Data ` +- :ref:`Viewing Monitoring Data of Worker Nodes ` +- :ref:`Viewing Workload Monitoring Data ` +- :ref:`Viewing Pod Monitoring Data ` + +On the AOM console, you can view host metrics and container metrics. + +.. _cce_10_0182__section1932383618498: + +Viewing Cluster Monitoring Data +------------------------------- + +#. Log in to the CCE console and click the cluster name to access the cluster console. +#. CCE allows you to view the monitoring data of all nodes. Choose **Clusters** from the navigation pane. Click the cluster name, and information like **CPU Metrics** and **Memory** of all nodes (excluding master nodes) in the last hour, the **Status**, **AZ** are displayed. + + .. table:: **Table 1** Cluster monitoring metrics + + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Metric | Description | + +===================================+===========================================================================================================================================================================================+ + | CPU Allocation (%) | A metric indicates the percentage of CPUs allocated to workloads. | + | | | + | | **CPU Allocation (%)** = Sum of CPU quotas requested by running pods in the cluster/Sum of CPU quotas that can be allocated from all nodes (excluding master nodes) to workloads | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Memory Allocation (%) | A metric indicates the percentage of memory allocated to workloads. | + | | | + | | **Memory Allocation (%)** = Sum of memory quotas requested by running pods in the cluster/Sum of memory quotas that can be allocated from all nodes (excluding master nodes) to workloads | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | CPU Usage (%) | A metric indicates the CPU usage of the cluster. | + | | | + | | This metric is the average CPU usage of all nodes (excluding master nodes) in a cluster. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Memory Usage (%) | A metric indicates the memory usage of your cluster. | + | | | + | | This metric is the average memory usage of all nodes (excluding master nodes) in a cluster. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: + + Allocatable node resources (CPU or memory) = Total amount - Reserved amount - Eviction thresholds. For details, see :ref:`Node Resource Reservation Policy `. + +.. _cce_10_0182__section965517431154: + +Viewing Monitoring Data of Worker Nodes +--------------------------------------- + +CCE also allows you to view monitoring data of a single node. + +#. Log in to the CCE console and click the cluster name to access the cluster console. +#. Choose **Nodes** in the navigation pane. On the right of the page, click **Monitor** of the target node to view the monitoring data. +#. You can select statistical **Dimension** and choose time range to view the monitoring data. The data is provided by AOM. You can view the monitoring data of a node, including the CPU, memory, disk, networking, and GPU. + + .. table:: **Table 2** Node monitoring metrics + + +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Metric | Description | + +===================================+====================================================================================================================================================================================================+ + | CPU Usage (%) | A metric indicates the CPU usage of the node. | + | | | + | | **CPU Usage (%)** = Used CPU cores/Total number of CPU cores | + +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Used CPU Cores (cores) | A metric indicates the number of used CPU cores. | + +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Physical Memory Usage (%) | A metric indicates the physical memory usage of the node | + | | | + | | **Physical Memory Usage (%)** = (Physical memory capacity - Available physical memory)/Physical memory capacity | + +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Available Physical Memory (GiB) | A metric indicates the unused physical memory of the node. | + +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Disk Usage (%) | A metric indicates the disk usage of the file system on the data disk of the node. It is calculated based on the file partition. For details, see :ref:`Data Disk Space Allocation `. | + | | | + | | **Disk Usage (%)** = (Disk capacity - Available disk space)/Disk capacity | + +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Available Disk Space (GiB) | A metric indicates the unused disk space. | + +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Downlink Rate (BPS) (KB/s) | A metric indicates the speed at which data is downloaded from the Internet to the node. | + +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Uplink Rate (BPS) (KB/s) | A metric indicates the speed at which data is uploaded from the node to the Internet. | + +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | GPU Usage (%) | A metric indicates the GPU usage of the node. | + +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | GPU Memory Usage (%) | A metric indicates the percentage of the used GPU memory to the GPU memory capacity. | + | | | + | | **GPU Memory Usage (%)** = Used GPU memory/GPU memory capacity | + +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Used GPU Memory (GiB) | A metric indicates the used GPU memory. | + +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. _cce_10_0182__section2221948202013: + +Viewing Workload Monitoring Data +-------------------------------- + +CCE allows you to view monitoring data of a single workload. + +#. Log in to the CCE console and click the cluster name to access the cluster console. +#. Choose **Workloads** in the navigation pane. On the right of the page, click **Monitor** of the target workload. In the window that slides out from the right, the workload monitoring data is displayed. +#. You can select statistical **Dimension** and choose time range to view the monitoring data. The data is provided by AOM. You can view the monitoring data of a workload, including the CPU, memory, networking, and GPU. + + .. note:: + + If there are multiple pods exist in the workload, the monitoring data may vary according to the statistical **Dimension**. For example, if you select **Maximum** or **Minimum** for **Dimension**, the value of each monitoring data is the maximum or minimum value of all pods under the workload. If **Average** is selected, the value of each monitoring data is the average value of all pods under the workload. + + .. table:: **Table 3** Workload monitoring metrics + + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Metric | Description | + +===================================+===================================================================================================================================================================================+ + | CPU Usage (%) | A metric indicates the CPU usage of the workload. | + | | | + | | **CPU Usage (%)** = Used CPU cores/Total number of CPU cores of all running pods (If no limit is configured, the total number of the node's CPU cores is used.) | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Used CPU Cores (cores) | A metric indicates the number of used CPU cores. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Physical Memory Usage (%) | A metric indicates the physical memory usage of the workload. | + | | | + | | **Physical Memory Usage (%)** = Used physical memory/Total number of CPU cores of all running pods (If no limit is configured, the total number of the node's CPU cores is used.) | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Used Physical Memory (GiB) | A metric indicates the amount of the used physical memory. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Disk Read Rate | A metric indicates the data volume read from a disk per second. The unit is KB/s. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Disk Write Rate | A metric indicates the data volume written to a disk per second. The unit is KB/s. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Downlink Rate (BPS) (KB/s) | A metric indicates the speed at which data is downloaded from the Internet. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Uplink Rate (BPS) (KB/s) | A metric indicates the speed at which data is uploaded from the node to the Internet | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | GPU Usage (%) | A metric indicates the GPU usage of the workload. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | GPU Memory Usage (%) | A metric indicates the percentage of the used GPU memory to the GPU memory capacity. | + | | | + | | **GPU Memory Usage (%)** = Used GPU memory/GPU memory capacity | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Used GPU Memory (GiB) | A metric indicates the used GPU memory. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. _cce_10_0182__section1799803015267: + +Viewing Pod Monitoring Data +--------------------------- + +CCE allows you to view the monitoring date of your pods. + +#. Log in to the CCE console and click the cluster name to access the cluster console. +#. Choose **Workloads** from the navigation pane. Then click the workload name of the target workload to list the pods. +#. Click **Monitor** of the target pod to view the monitoring data. +#. You can select statistical **Dimension** and choose time range to view the monitoring data. The data is provided by AOM. You can view the monitoring data of a pod, including the CPU, memory, disk, networking, and GPU. + + .. note:: + + If multiple containers exist in a single pod, the monitoring data may vary according to the statistical **Dimension**. For example, if you select **Maximum** or **Minimum** for **Dimension**, the value of each monitoring data is the maximum or minimum value of all containers under the pod. If **Average** is selected, the value of each monitoring data is the average value of all containers in the pod. + + .. table:: **Table 4** Pod monitoring metrics + + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Metric | Description | + +===================================+===============================================================================================================================================================================================================================+ + | CPU Usage (%) | A metric indicates the CPU usage of the pod. | + | | | + | | **CPU Usage (%)** = Used CPU cores/Total number of limited CPU cores of all running containers in the pod (If the limited CPU cores of all running containers are not specified, the number of the node's CPU cores is used.) | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Used CPU Cores (cores) | A metric indicates the number of used CPU cores. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Physical Memory Usage (%) | A metric indicates the physical memory usage of the pod. | + | | | + | | **Physical Memory Usage (%)** = Used physical memory/Sum of physical memory limits of all running containers in the pod (If not specified, the value of the node's physical memory is used.) | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Used Physical Memory (GiB) | A metric indicates the amount of the used physical memory. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Disk Read Rate | A metric indicates the data volume read from a disk per second. The unit is KB/s. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Disk Write Rate | A metric indicates the data volume written to a disk per second. The unit is KB/s. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Downlink Rate (BPS) (KB/s) | A metric indicates the speed at which data is downloaded from the Internet. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Uplink Rate (BPS) (KB/s) | A metric indicates the speed at which data is uploaded from the node to the Internet. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | GPU Usage (%) | A metric indicates the GPU usage of the pod. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | GPU Memory Usage (%) | A metric indicates the percentage of the used GPU memory to the GPU memory capacity. | + | | | + | | **GPU Memory Usage (%)** = Used GPU memory/GPU memory capacity | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Used GPU Memory (GiB) | A metric indicates the used GPU memory of the pod. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/permissions_management/cluster_permissions_iam-based.rst b/umn/source/permissions/cluster_permissions_iam-based.rst similarity index 90% rename from umn/source/permissions_management/cluster_permissions_iam-based.rst rename to umn/source/permissions/cluster_permissions_iam-based.rst index 75e0914..10dbaae 100644 --- a/umn/source/permissions_management/cluster_permissions_iam-based.rst +++ b/umn/source/permissions/cluster_permissions_iam-based.rst @@ -9,7 +9,8 @@ CCE cluster-level permissions are assigned based on **IAM system policies** and .. caution:: - **Cluster permissions** are configured only for cluster-related resources (such as clusters and nodes). You must also configure :ref:`namespace permissions ` to operate Kubernetes resources (such as workloads and Services). + - Cluster permissions are granted for users to operate cluster-related resources only (such as clusters and nodes). To operate Kubernetes resources like workloads and Services, you must be granted the :ref:`namespace permissions ` at the same time. + - When viewing a cluster on the CCE console, the information displayed depends on the namespace permissions. If you have no namespace permissions, you cannot view the resources in the cluster. For details, see :ref:`Permission Dependency of the CCE Console `. Prerequisites ------------- @@ -25,7 +26,7 @@ Process Flow ------------ -.. figure:: /_static/images/en-us_image_0000001517743544.png +.. figure:: /_static/images/en-us_image_0000001647417636.png :alt: **Figure 1** Process of assigning CCE permissions **Figure 1** Process of assigning CCE permissions @@ -48,8 +49,8 @@ Process Flow Log in to the management console as the user you created, and verify that the user has the assigned permissions. - - Log in to the management console, switch to the CCE console, and buy a cluster. If you fail to do so (assuming that only the CCEReadOnlyAccess permission is assigned), the permission control policy takes effect. - - Switch to the console of any other service. If a message appears indicating that you do not have the required permissions to access the service, the **CCEReadOnlyAccess** policy takes effect. + - Log in to the management console, switch to the CCE console, and buy a cluster. If you fail to do so (assuming that only the **CCEReadOnlyAccess** permission is assigned), the **CCEReadOnlyAccess** policy takes effect. + - Switch to the console of any other service. If a message appears indicating that you do not have the required permissions for accessing the service, the **CCEReadOnlyAccess** policy takes effect. System-defined Roles -------------------- @@ -177,4 +178,4 @@ When RBAC and IAM policies co-exist, the backend authentication logic for open A Using clusterCert to obtain the cluster kubeconfig: cceadm/teadmin -.. |image1| image:: /_static/images/en-us_image_0000001518062684.png +.. |image1| image:: /_static/images/en-us_image_0000001695896569.png diff --git a/umn/source/permissions_management/example_designing_and_configuring_permissions_for_users_in_a_department.rst b/umn/source/permissions/example_designing_and_configuring_permissions_for_users_in_a_department.rst similarity index 85% rename from umn/source/permissions_management/example_designing_and_configuring_permissions_for_users_in_a_department.rst rename to umn/source/permissions/example_designing_and_configuring_permissions_for_users_in_a_department.rst index 87bca61..888d218 100644 --- a/umn/source/permissions_management/example_designing_and_configuring_permissions_for_users_in_a_department.rst +++ b/umn/source/permissions/example_designing_and_configuring_permissions_for_users_in_a_department.rst @@ -22,7 +22,7 @@ Permission Design The following uses company X as an example. -Generally, a company has multiple departments or projects, and each department has multiple members. Therefore, you need to design how permissions are to be assigned to different groups and projects, and set a user name for each member to facilitate subsequent user group and permissions configuration. +Generally, a company has multiple departments or projects, and each department has multiple members. Design how permissions are to be assigned to different groups and projects, and set a user name for each member to facilitate subsequent user group and permissions configuration. The following figure shows the organizational structure of a department in a company and the permissions to be assigned to each member: @@ -31,7 +31,7 @@ The following figure shows the organizational structure of a department in a com Director: David --------------- -David is a department director of company X. To assign him all CCE permissions (both cluster and namespace permissions), you need to create the **cce-admin** user group for David on the IAM console and assign the CCE Administrator role. +David is a department director of company X. To assign him all CCE permissions (both cluster and namespace permissions), create the **cce-admin** user group for David on the IAM console and assign the CCE Administrator role. .. note:: @@ -67,14 +67,14 @@ Development Team Leader: Robert In the previous steps, Robert has been assigned the read-only permission on all clusters and namespaces. Now, assign the administrator permissions on all namespaces to Robert. -Therefore, you need to assign the administrator permissions on all namespaces in all clusters to Robert. +Therefore, assign the administrator permissions on all namespaces in all clusters to Robert. O&M Engineer: William --------------------- -In the previous steps, William has been assigned the read-only permission on all clusters and namespaces. He also requires the cluster management permissions. Therefore, you can log in to the IAM console, create a user group named **cce-sre-b4** and assign CCE FullAccess to William. +In the previous steps, William has been assigned the read-only permission on all clusters and namespaces. He also requires the cluster management permissions in his region. Therefore, you can log in to the IAM console, create a user group named **cce-sre-b4** and assign CCE FullAccess to William for his region. -Now, William has the cluster management permissions and the read-only permission on all namespaces. +Now, William has the cluster management permissions for his region and the read-only permission on all namespaces. Development Engineers: Linda and Peter -------------------------------------- @@ -83,4 +83,4 @@ In the previous steps, Linda and Peter have been assigned the read-only permissi By now, all the required permissions are assigned to the department members. -.. |image1| image:: /_static/images/en-us_image_0000001569182569.jpg +.. |image1| image:: /_static/images/en-us_image_0000001695737145.jpg diff --git a/umn/source/permissions_management/index.rst b/umn/source/permissions/index.rst similarity index 94% rename from umn/source/permissions_management/index.rst rename to umn/source/permissions/index.rst index a6d7451..efd15e6 100644 --- a/umn/source/permissions_management/index.rst +++ b/umn/source/permissions/index.rst @@ -2,8 +2,8 @@ .. _cce_10_0164: -Permissions Management -====================== +Permissions +=========== - :ref:`Permissions Overview ` - :ref:`Cluster Permissions (IAM-based) ` diff --git a/umn/source/permissions_management/namespace_permissions_kubernetes_rbac-based.rst b/umn/source/permissions/namespace_permissions_kubernetes_rbac-based.rst similarity index 75% rename from umn/source/permissions_management/namespace_permissions_kubernetes_rbac-based.rst rename to umn/source/permissions/namespace_permissions_kubernetes_rbac-based.rst index 6de8c98..fca183b 100644 --- a/umn/source/permissions_management/namespace_permissions_kubernetes_rbac-based.rst +++ b/umn/source/permissions/namespace_permissions_kubernetes_rbac-based.rst @@ -19,7 +19,7 @@ You can regulate users' or user groups' access to Kubernetes resources in a sing Role and ClusterRole specify actions that can be performed on specific resources. RoleBinding and ClusterRoleBinding bind roles to specific users, user groups, or ServiceAccounts. Illustration: -.. figure:: /_static/images/en-us_image_0000001517743636.png +.. figure:: /_static/images/en-us_image_0000001647577104.png :alt: **Figure 1** Role binding **Figure 1** Role binding @@ -38,9 +38,9 @@ On the CCE console, you can assign permissions to a user or user group to access Cluster Permissions (IAM-based) and Namespace Permissions (Kubernetes RBAC-based) --------------------------------------------------------------------------------- -Users with different cluster permissions (assigned using IAM) have different namespace permissions (assigned using Kubernetes RBAC). :ref:`Table 1 ` lists the namespace permissions of different users. +Users with different cluster permissions (assigned using IAM) have different namespace permissions (assigned using Kubernetes RBAC). :ref:`Table 1 ` lists the namespace permissions of different users. -.. _cce_10_0189__en-us_topic_0000001199181174_table886210176509: +.. _cce_10_0189__cce_10_0187_table886210176509: .. table:: **Table 1** Differences in namespace permissions @@ -56,11 +56,10 @@ Users with different cluster permissions (assigned using IAM) have different nam | IAM user with the Tenant Guest role | Requires Kubernetes RBAC authorization. | +-------------------------------------------------------------+-----------------------------------------+ -Notes ------ +Precautions +----------- -- Kubernetes RBAC authorization can be used for clusters of v1.11.7-r2 and later. Ensure that you have deployed a supported cluster version. For details about upgrading a cluster, see :ref:`Performing Replace or Rolling Upgrade `. -- After you create a cluster of v1.11.7-r2 or later, CCE automatically assigns the cluster-admin permission to you, which means you have full control on all resources in all namespaces in the cluster. The ID of a federated user changes upon each login and logout. Therefore, the user with the permissions is displayed as deleted. In this case, do not delete the permissions. Otherwise, the authentication fails. You are advised to grant the cluster-admin permission to a user group on CCE and add federated users to the user group. +- After you create a cluster, CCE automatically assigns the cluster-admin permission to you, which means you have full control on all resources in all namespaces in the cluster. The ID of a federated user changes upon each login and logout. Therefore, the user with the permissions is displayed as deleted. In this case, do not delete the permissions. Otherwise, the authentication fails. You are advised to grant the cluster-admin permission to a user group on CCE and add federated users to the user group. - A user with the Security Administrator role has all IAM permissions except role switching. For example, an account in the admin user group has this role by default. Only these users can assign permissions on the **Permissions** page on the CCE console. Configuring Namespace Permissions (on the Console) @@ -91,11 +90,11 @@ Using kubectl to Configure Namespace Permissions .. note:: - When you access a cluster using kubectl, CCE uses the kubeconfig.json file generated on the cluster for authentication. This file contains user information, based on which CCE determines which Kubernetes resources can be accessed by kubectl. The permissions recorded in a kubeconfig.json file vary from user to user. The permissions that a user has are listed in :ref:`Cluster Permissions (IAM-based) and Namespace Permissions (Kubernetes RBAC-based) `. + When you access a cluster using kubectl, CCE uses **kubeconfig.json** generated on the cluster for authentication. This file contains user information, based on which CCE determines which Kubernetes resources can be accessed by kubectl. The permissions recorded in a kubeconfig.json file vary from user to user. The permissions that a user has are listed in :ref:`Cluster Permissions (IAM-based) and Namespace Permissions (Kubernetes RBAC-based) `. -In addition to cluster-admin, admin, edit, and view, you can define Roles and RoleBindings to configure the permissions to add, delete, modify, and query resources, such as pods, Deployments, and Services, in the namespace. +In addition to cluster-admin, admin, edit, and view, you can define Roles and RoleBindings to configure the permissions to add, delete, modify, and obtain resources, such as pods, Deployments, and Services, in the namespace. -The procedure for creating a Role is very simple. To be specific, specify a namespace and then define rules. The rules in the following example are to allow GET and LIST operations on pods in the default namespace. +The procedure for creating a Role is very simple. To be specific, specify a namespace and then define rules. The rules in the following example are to allow GET and LIST operations on pods in the **default** namespace. .. code-block:: @@ -115,7 +114,7 @@ The procedure for creating a Role is very simple. To be specific, specify a name For details, see `Using RBAC Authorization `__. -After creating a Role, you can bind the Role to a specific user, which is called RoleBinding. The following is an example. +After creating a Role, you can bind the Role to a specific user, which is called RoleBinding. The following shows an example: .. code-block:: @@ -138,10 +137,10 @@ After creating a Role, you can bind the Role to a specific user, which is called The **subjects** section binds a Role with an IAM user so that the IAM user can obtain the permissions defined in the Role, as shown in the following figure. -.. figure:: /_static/images/en-us_image_0000001518222732.png - :alt: **Figure 2** A RoleBinding binds the Role to the user. +.. figure:: /_static/images/en-us_image_0000001647577100.png + :alt: **Figure 2** Binding a Role to a user - **Figure 2** A RoleBinding binds the Role to the user. + **Figure 2** Binding a Role to a user You can also specify a user group in the **subjects** section. In this case, all users in the user group obtain the permissions defined in the Role. @@ -168,7 +167,7 @@ Use the IAM user user-example to connect to the cluster and obtain the pod infor NAME READY STATUS RESTARTS AGE nginx-658dff48ff-7rkph 1/1 Running 0 4d9h -Try querying Deployments and Services in the namespace. The output shows **user-example** does not have the required permissions. Try querying the pods in namespace kube-system. The output shows **user-example** does not have the required permissions, either. This indicates that the IAM user **user-example** has only the GET and LIST Pod permissions in the default namespace, which is the same as expected. +Try querying Deployments and Services in the namespace. The output shows that **user-example** does not have the required permissions. Try querying the pods in namespace kube-system. The output shows that **user-example** does not have the required permissions, either. This indicates that the IAM user **user-example** has only the GET and LIST Pod permissions in the default namespace, which is the same as expected. .. code-block:: @@ -184,7 +183,7 @@ Try querying Deployments and Services in the namespace. The output shows **user- Example: Assigning Cluster Administrator Permissions (cluster-admin) -------------------------------------------------------------------- -You can use the cluster-admin role to assign all permissions on a cluster. This role contains the permissions for cluster resources (such as PVs and StorageClasses). +You can use the cluster-admin role to assign all permissions on a cluster. This role contains the permissions for all cluster resources. In the following example kubectl output, a ClusterRoleBinding has been created and binds the cluster-admin role to the user group **cce-role-group**. @@ -230,9 +229,56 @@ Connect to the cluster as an authorized user. If the PVs and StorageClasses can Example: Assigning Namespace O&M Permissions (admin) ---------------------------------------------------- -**admin** has all permissions on namespaces. You can grant this role to a user or user group to manage one or all namespaces. +The admin role has the read and write permissions on most namespace resources. You can grant the admin permission on all namespaces to a user or user group. -In the following example kubectl output, a RoleBinding has been created, the admin role is bound to the user group **cce-role-group**, and the target namespace is the default namespace. +In the following example kubectl output, a RoleBinding has been created and binds the admin role to the user group **cce-role-group**. + +.. code-block:: + + # kubectl get rolebinding + NAME ROLE AGE + clusterrole_admin_group0c96fad22880f32a3f84c009862af6f7 ClusterRole/admin 18s + # kubectl get rolebinding clusterrole_admin_group0c96fad22880f32a3f84c009862af6f7 -oyaml + apiVersion: rbac.authorization.k8s.io/v1 + kind: RoleBinding + metadata: + annotations: + CCE.com/IAM: "true" + creationTimestamp: "2021-06-24T01:30:08Z" + name: clusterrole_admin_group0c96fad22880f32a3f84c009862af6f7 + resourceVersion: "36963685" + selfLink: /apis/rbac.authorization.k8s.io/v1/namespaces/default/rolebindings/clusterrole_admin_group0c96fad22880f32a3f84c009862af6f7 + uid: 6c6f46a6-8584-47da-83f5-9eef1f7b75d6 + roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: admin + subjects: + - apiGroup: rbac.authorization.k8s.io + kind: Group + name: 0c96fad22880f32a3f84c009862af6f7 + +Connect to the cluster as an authorized user. If the PVs and StorageClasses can be queried but a namespace cannot be created, the permission configuration takes effect. + +.. code-block:: + + # kubectl get pv + No resources found + # kubectl get sc + NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE + csi-disk everest-csi-provisioner Delete Immediate true 75d + csi-disk-topology everest-csi-provisioner Delete WaitForFirstConsumer true 75d + csi-nas everest-csi-provisioner Delete Immediate true 75d + csi-obs everest-csi-provisioner Delete Immediate false 75d + # kubectl apply -f namespaces.yaml + Error from server (Forbidden): namespaces is forbidden: User "0c97ac3cb280f4d91fa7c0096739e1f8" cannot create resource "namespaces" in API group "" at the cluster scope + +Example: Assigning Namespace Developer Permissions (edit) +--------------------------------------------------------- + +The edit role has the read and write permissions on most namespace resources. You can grant the edit permission on all namespaces to a user or user group. + +In the following example kubectl output, a RoleBinding has been created, the edit role is bound to the user group **cce-role-group**, and the target namespace is the default namespace. .. code-block:: @@ -254,13 +300,13 @@ In the following example kubectl output, a RoleBinding has been created, the adm roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole - name: admin + name: edit subjects: - apiGroup: rbac.authorization.k8s.io kind: Group name: 0c96fad22880f32a3f84c009862af6f7 -Connect to a cluster as an authorized user. In this example, you can create and query resources in the default namespace, but cannot query resources in the kube-system namespace or cluster resources. +Connect to the cluster as an authorized user. In this example, you can create and obtain resources in the default namespace, but cannot query resources in the kube-system namespace or cluster resources. .. code-block:: diff --git a/umn/source/permissions_management/permission_dependency_of_the_cce_console.rst b/umn/source/permissions/permission_dependency_of_the_cce_console.rst similarity index 93% rename from umn/source/permissions_management/permission_dependency_of_the_cce_console.rst rename to umn/source/permissions/permission_dependency_of_the_cce_console.rst index d8e50c0..4701109 100644 --- a/umn/source/permissions_management/permission_dependency_of_the_cce_console.rst +++ b/umn/source/permissions/permission_dependency_of_the_cce_console.rst @@ -5,10 +5,10 @@ Permission Dependency of the CCE Console ======================================== -Some CCE permissions policies depend on the policies of other cloud services. To view or use other cloud resources on the CCE console, you need to enable the system policy access control feature of IAM and assign dependency policies for the other cloud services. +Some CCE permissions policies depend on the policies of other cloud services. To view or use other cloud resources on the CCE console, enable the system policy access control feature of IAM and assign dependency policies for the other cloud services. - Dependency policies are assigned based on the CCE FullAccess or CCE ReadOnlyAccess policy you configure. -- Only users and user groups with namespace permissions can gain the view access to resources in clusters of v1.11.7-r2 and later. +- Only users and user groups with namespace permissions can gain the view access to resources in clusters. - If a user is granted the view access to all namespaces of a cluster, the user can view all namespace resources (except secrets) in the cluster. To view secrets in the cluster, the user must gain the **admin** or **edit** role in all namespaces of the cluster. - HPA policies take effect only after the cluster-admin permissions are configured for the namespace. @@ -32,7 +32,7 @@ To grant an IAM user the permissions to view or use resources of other cloud ser +-------------------------------------+------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Console Function | Dependent Services | Roles or Policies Required | +=====================================+==========================================+=====================================================================================================================================================================================================================================================================+ - | Dashboard | Application Operations Management (AOM) | - An IAM user with CCE Administrator assigned can use this function only after AOM FullAccess policy is assigned. | + | Cluster overview | Application Operations Management (AOM) | - An IAM user with CCE Administrator assigned can use this function only after AOM FullAccess policy is assigned. | | | | - IAM users with IAM ReadOnlyAccess, CCE FullAccess, or CCE ReadOnlyAccess assigned can directly use this function. | +-------------------------------------+------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Workload management | Elastic Load Balance (ELB) | Except in the following cases, the user does not require any additional role to create workloads. | @@ -43,27 +43,28 @@ To grant an IAM user the permissions to view or use resources of other cloud ser | | | - To use OBS, you must have OBS Administrator globally assigned. | | | NAT Gateway | | | | | .. note:: | - | | OBS | | + | | Object Storage Service (OBS) | | | | | Because of the cache, it takes about 13 minutes for the RBAC policy to take effect after being granted to users, enterprise projects, and user groups. After an OBS-related system policy is granted, it takes about 5 minutes for the policy to take effect. | - | | SFS | | + | | Scalable File Service (SFS) | | | | | - To use SFS, you must have SFS FullAccess assigned. | +-------------------------------------+------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Cluster management | Application Operations Management (AOM) | - Auto scale-out or scale-up requires the AOM FullAccess policy. | +-------------------------------------+------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Node management | Elastic Cloud Server (ECS) | If the permission assigned to an IAM user is CCE Administrator, creating or deleting a node requires the ECS FullAccess or ECS Administrator policy and the VPC Administrator policy. | +-------------------------------------+------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Network management | Elastic Load Balance (ELB) | Except in the following cases, the user does not require any additional role to create a Service. | + | Networking | Elastic Load Balance (ELB) | Except in the following cases, the user does not require any additional role to create a Service. | | | | | | | NAT Gateway | - To create a Service using ELB, you must have ELB FullAccess or ELB Administrator plus VPC Administrator assigned. | | | | - To create a Service using NAT Gateway, you must have NAT Administrator assigned. | +-------------------------------------+------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Storage management | OBS | - To use OBS, you must have OBS Administrator globally assigned. | + | Container storage | Object Storage Service (OBS) | - To use OBS, you must have OBS Administrator globally assigned. | | | | | - | | SFS | .. note:: | + | | Scalable File Service (SFS) | .. note:: | | | | | - | | | Because of the cache, it takes about 13 minutes for the RBAC policy to take effect after being granted to users, enterprise projects, and user groups. After an OBS-related system policy is granted, it takes about 5 minutes for the policy to take effect. | + | | SFS Turbo | Because of the cache, it takes about 13 minutes for the RBAC policy to take effect after being granted to users, enterprise projects, and user groups. After an OBS-related system policy is granted, it takes about 5 minutes for the policy to take effect. | | | | | | | | - To use SFS, you must have SFS FullAccess assigned. | + | | | - Using SFS Turbo requires the SFS Turbo Admin role. | | | | | | | | The CCE Administrator role is required for importing storage devices. | +-------------------------------------+------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -75,9 +76,9 @@ To grant an IAM user the permissions to view or use resources of other cloud ser +-------------------------------------+------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Permissions management | None | - For cloud accounts, no additional policy/role is required. | | | | - IAM users with CCE Administrator or global Security Administrator assigned can use this function. | - | | | - IAM users with the CCE FullAccess or CCE ReadOnlyAccess permission can access the namespace. In addition, the IAM users must have the :ref:`administrator permission (cluster-admin) ` on the namespace. | + | | | - IAM users with the CCE FullAccess or CCE ReadOnlyAccess permission can access the namespace. In addition, the IAM users must have the :ref:`administrator permissions (cluster-admin) ` on the namespace. | +-------------------------------------+------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Configuration center | None | - Creating ConfigMaps does not require any additional policy. | + | ConfigMaps and Secrets | None | - Creating ConfigMaps does not require any additional policy. | | | | - Viewing secrets requires that the cluster-admin, admin, or edit permission be configured for the namespace. The DEW KeypairFullAccess or DEW KeypairReadOnlyAccess policy must be assigned for dependent services. | +-------------------------------------+------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Help center | None | None | diff --git a/umn/source/permissions_management/permissions_overview.rst b/umn/source/permissions/permissions_overview.rst similarity index 93% rename from umn/source/permissions_management/permissions_overview.rst rename to umn/source/permissions/permissions_overview.rst index f7f618a..7ea7649 100644 --- a/umn/source/permissions_management/permissions_overview.rst +++ b/umn/source/permissions/permissions_overview.rst @@ -18,18 +18,16 @@ CCE permissions are described as follows: - **Cluster-level permissions**: Cluster-level permissions management evolves out of the system policy authorization feature of IAM. IAM users in the same user group have the same permissions. On IAM, you can configure system policies to describe which IAM user groups can perform which operations on cluster resources. For example, you can grant user group A to create and delete cluster X, add a node, or install an add-on, while granting user group B to view information about cluster X. - Cluster-level permissions involve CCE non-Kubernetes APIs and support fine-grained IAM policies. + Cluster-level permissions involve non-Kubernetes APIs in CCE clusters and support fine-grained IAM policies. - **Namespace-level permissions**: You can regulate users' or user groups' access to Kubernetes resources in a single namespace based on their Kubernetes RBAC roles. CCE has also been enhanced based on open-source capabilities. It supports RBAC authorization based on IAM user or user group, and RBAC authentication on access to APIs using IAM tokens. Namespace-level permissions involve CCE Kubernetes APIs and are enhanced based on the Kubernetes RBAC capabilities. Namespace-level permissions can be granted to IAM users or user groups for authentication and authorization, but are independent of fine-grained IAM policies. - Starting from version 1.11.7-r2, CCE clusters allow you to configure namespace permissions. Clusters earlier than v1.11.7-r2 have all namespace permissions by default. - In general, you configure CCE permissions in two scenarios. The first is creating and managing clusters and related resources, such as nodes. The second is creating and using Kubernetes resources in the cluster, such as workloads and Services. -.. figure:: /_static/images/en-us_image_0000001569182621.png +.. figure:: /_static/images/en-us_image_0000001647576892.png :alt: **Figure 1** Illustration on CCE permissions **Figure 1** Illustration on CCE permissions diff --git a/umn/source/permissions/pod_security/configuring_a_pod_security_policy.rst b/umn/source/permissions/pod_security/configuring_a_pod_security_policy.rst new file mode 100644 index 0000000..a8c76d7 --- /dev/null +++ b/umn/source/permissions/pod_security/configuring_a_pod_security_policy.rst @@ -0,0 +1,225 @@ +:original_name: cce_10_0275.html + +.. _cce_10_0275: + +Configuring a Pod Security Policy +================================= + +A pod security policy (PSP) is a cluster-level resource that controls sensitive security aspects of the pod specification. The `PodSecurityPolicy `__ object in Kubernetes defines a group of conditions that a pod must comply with to be accepted by the system, as well as the default values of related fields. + +By default, the PSP access control component is enabled for clusters of v1.17.17 and a global default PSP named **psp-global** is created. You can modify the default policy (but not delete it). You can also create a PSP and bind it to the RBAC configuration. + +.. note:: + + - In addition to the global default PSP, the system configures independent PSPs for system components in namespace kube-system. Modifying the psp-global configuration does not affect pod creation in namespace kube-system. + - PodSecurityPolicy was deprecated in Kubernetes v1.21, and removed from Kubernetes in v1.25. You can use pod security admission as a substitute for PodSecurityPolicy. For details, see :ref:`Configuring Pod Security Admission `. + +Modifying the Global Default PSP +-------------------------------- + +Before modifying the global default PSP, ensure that a CCE cluster has been created and connected by using kubectl. + +#. Run the following command: + + **kubectl edit psp psp-global** + +#. Modify the required parameters, as shown in :ref:`Table 1 `. + + .. _cce_10_0275__table1928122594918: + + .. table:: **Table 1** PSP configuration + + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Item | Description | + +===================================+================================================================================================================================================================================================+ + | privileged | Starts the privileged container. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | hostPID | Uses the host namespace. | + | | | + | hostIPC | | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | hostNetwork | Uses the host network and port. | + | | | + | hostPorts | | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | volumes | Specifies the type of the mounted volume that can be used. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | allowedHostPaths | Specifies the host path to which a hostPath volume can be mounted. The **pathPrefix** field specifies the host path prefix group to which a hostPath volume can be mounted. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | allowedFlexVolumes | Specifies the FlexVolume driver that can be used. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | fsGroup | Configures the supplemental group ID used by the mounted volume in the pod. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | readOnlyRootFilesystem | Pods can only be started using a read-only root file system. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | runAsUser | Specifies the user ID, primary group ID, and supplemental group ID for starting containers in a pod. | + | | | + | runAsGroup | | + | | | + | supplementalGroups | | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | allowPrivilegeEscalation | Specifies whether **allowPrivilegeEscalation** can be set to **true** in a pod. This configuration controls the use of Setuid and whether programs can use additional privileged system calls. | + | | | + | defaultAllowPrivilegeEscalation | | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | defaultAddCapabilities | Controls the Linux capabilities used in pods. | + | | | + | requiredDropCapabilities | | + | | | + | allowedCapabilities | | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | seLinux | Controls the configuration of seLinux used in pods. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | allowedProcMountTypes | Controls the ProcMountTypes that can be used by pods. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | annotations | Configures AppArmor or Seccomp used by containers in a pod. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | forbiddenSysctls | Controls the configuration of Sysctl used by containers in a pod. | + | | | + | allowedUnsafeSysctls | | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. _cce_10_0275__section155111941177: + +Example of Enabling Unsafe Sysctls in Pod Security Policy +--------------------------------------------------------- + +You can configure allowed-unsafe-sysctls for a node pool. For CCE clusters of **v1.17.17** and later versions, add configurations in **allowedUnsafeSysctls** of the pod security policy to make the configuration take effect. For details, see :ref:`Table 1 `. + +In addition to modifying the global pod security policy, you can add new pod security policies. For example, enable the **net.core.somaxconn** unsafe sysctls. The following is an example of adding a pod security policy: + +.. code-block:: + + apiVersion: policy/v1beta1 + kind: PodSecurityPolicy + metadata: + annotations: + seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*' + name: sysctl-psp + spec: + allowedUnsafeSysctls: + - net.core.somaxconn + allowPrivilegeEscalation: true + allowedCapabilities: + - '*' + fsGroup: + rule: RunAsAny + hostIPC: true + hostNetwork: true + hostPID: true + hostPorts: + - max: 65535 + min: 0 + privileged: true + runAsGroup: + rule: RunAsAny + runAsUser: + rule: RunAsAny + seLinux: + rule: RunAsAny + supplementalGroups: + rule: RunAsAny + volumes: + - '*' + --- + kind: ClusterRole + apiVersion: rbac.authorization.k8s.io/v1 + metadata: + name: sysctl-psp + rules: + - apiGroups: + - "*" + resources: + - podsecuritypolicies + resourceNames: + - sysctl-psp + verbs: + - use + + --- + apiVersion: rbac.authorization.k8s.io/v1 + kind: ClusterRoleBinding + metadata: + name: sysctl-psp + roleRef: + kind: ClusterRole + name: sysctl-psp + apiGroup: rbac.authorization.k8s.io + subjects: + - kind: Group + name: system:authenticated + apiGroup: rbac.authorization.k8s.io + +Restoring the Original PSP +-------------------------- + +If you have modified the default pod security policy and want to restore the original pod security policy, perform the following operations. + +#. Create a policy description file named **policy.yaml**. **policy.yaml** is an example file name. You can rename it as required. + + **vi policy.yaml** + + The content of the description file is as follows: + + .. code-block:: + + apiVersion: policy/v1beta1 + kind: PodSecurityPolicy + metadata: + name: psp-global + annotations: + seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*' + spec: + privileged: true + allowPrivilegeEscalation: true + allowedCapabilities: + - '*' + volumes: + - '*' + hostNetwork: true + hostPorts: + - min: 0 + max: 65535 + hostIPC: true + hostPID: true + runAsUser: + rule: 'RunAsAny' + seLinux: + rule: 'RunAsAny' + supplementalGroups: + rule: 'RunAsAny' + fsGroup: + rule: 'RunAsAny' + + --- + kind: ClusterRole + apiVersion: rbac.authorization.k8s.io/v1 + metadata: + name: psp-global + rules: + - apiGroups: + - "*" + resources: + - podsecuritypolicies + resourceNames: + - psp-global + verbs: + - use + + --- + apiVersion: rbac.authorization.k8s.io/v1 + kind: ClusterRoleBinding + metadata: + name: psp-global + roleRef: + kind: ClusterRole + name: psp-global + apiGroup: rbac.authorization.k8s.io + subjects: + - kind: Group + name: system:authenticated + apiGroup: rbac.authorization.k8s.io + +#. Run the following command: + + **kubectl apply -f policy.yaml** diff --git a/umn/source/permissions_management/pod_security/configuring_pod_security_admission.rst b/umn/source/permissions/pod_security/configuring_pod_security_admission.rst similarity index 91% rename from umn/source/permissions_management/pod_security/configuring_pod_security_admission.rst rename to umn/source/permissions/pod_security/configuring_pod_security_admission.rst index c775122..ebfab26 100644 --- a/umn/source/permissions_management/pod_security/configuring_pod_security_admission.rst +++ b/umn/source/permissions/pod_security/configuring_pod_security_admission.rst @@ -5,7 +5,7 @@ Configuring Pod Security Admission ================================== -Before using `Pod Security Admission `__, you need to understand Kubernetes `Pod Security Standards `__. These standards define different isolation levels for pods. They let you define how you want to restrict the behavior of pods in a clear, consistent fashion. Kubernetes offers a built-in pod security admission controller to enforce the pod security standards. Pod security restrictions are applied at the namespace level when pods are created. +Before using `pod security admission `__, understand Kubernetes `Pod Security Standards `__. These standards define different isolation levels for pods. They let you define how you want to restrict the behavior of pods in a clear, consistent fashion. Kubernetes offers a built-in pod security admission controller to enforce the pod security standards. Pod security restrictions are applied at the namespace level when pods are created. The pod security standard defines three security policy levels: @@ -18,7 +18,7 @@ The pod security standard defines three security policy levels: +============+================================================================================================================================================================================================================+ | privileged | Unrestricted policy, providing the widest possible level of permissions, typically aimed at system- and infrastructure-level workloads managed by privileged, trusted users, such as CNIs and storage drivers. | +------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | baseline | Minimally restrictive policy which prevents known privilege escalations, typically targeted at non-critical workloads. This policy disables capabilities such as hostNetwork and hostPID. | + | baseline | Minimally restrictive policy that prevents known privilege escalations, typically targeted at non-critical workloads. This policy disables capabilities such as hostNetwork and hostPID. | +------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | restricted | Heavily restricted policy, following current Pod hardening best practices. | +------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -30,7 +30,7 @@ Setting security context: `Configure a Security Context for a Pod or Container < Pod Security Admission Labels ----------------------------- -Kubernetes defines three types of labels for Pod Security Admission (see :ref:`Table 2 `). You can set these labels in a namespace to define the pod security standard level to be used. However, do not change the pod security standard level in system namespaces such as kube-system. Otherwise, pods in the system namespace may be faulty. +Kubernetes defines three types of labels for pod security admission (see :ref:`Table 2 `). You can set these labels in a namespace to define the pod security standard level to be used. However, do not change the pod security standard level in system namespaces such as kube-system. Otherwise, pods in the system namespace may be faulty. .. _cce_10_0466__table198561415448: @@ -96,6 +96,8 @@ If pods are deployed in the preceding namespace, the following security restrict #. Restrictions related to the baseline policy are verified (audit mode + baseline level). That is, if the pod or container violates the policy, the corresponding event is recorded into the audit log. #. Restrictions related to the restricted policy are verified (warn mode + restricted level). That is, if the pod or container violates the policy, the user will receive an alarm when creating the pod. +.. _cce_10_0466__section7164192319226: + Migrating from Pod Security Policy to Pod Security Admission ------------------------------------------------------------ @@ -108,8 +110,8 @@ If you use pod security policies in a cluster earlier than v1.25 and need to rep #. PSP lets you bind different policies to different service accounts. This approach has many pitfalls and is not recommended, but if you require this feature anyway you will need to use a third-party webhook instead. #. Do not apply pod security admission to namespaces where CCE components, such as kube-system, kube-public, and kube-node-lease, are deployed. Otherwise, CCE components and add-on functions will be abnormal. -Reference ---------- +Documentation +------------- - `Pod Security Admission `__ - `Mapping PodSecurityPolicies to Pod Security Standards `__ diff --git a/umn/source/permissions_management/pod_security/index.rst b/umn/source/permissions/pod_security/index.rst similarity index 100% rename from umn/source/permissions_management/pod_security/index.rst rename to umn/source/permissions/pod_security/index.rst diff --git a/umn/source/permissions_management/service_account_token_security_improvement.rst b/umn/source/permissions/service_account_token_security_improvement.rst similarity index 89% rename from umn/source/permissions_management/service_account_token_security_improvement.rst rename to umn/source/permissions/service_account_token_security_improvement.rst index 13b846e..7997de9 100644 --- a/umn/source/permissions_management/service_account_token_security_improvement.rst +++ b/umn/source/permissions/service_account_token_security_improvement.rst @@ -7,7 +7,7 @@ Service Account Token Security Improvement In clusters earlier than v1.21, a token is obtained by mounting the secret of the service account to a pod. Tokens obtained this way are permanent. This approach is no longer recommended starting from version 1.21. Service accounts will stop auto creating secrets in clusters from version 1.25. -In clusters of version 1.21 or later, you can use the `TokenRequest `__ API to obtain the token and use the projected volume to mount the token to the pod. Such tokens are valid for a fixed period (one hour by default). Before expiration, Kubelet refreshes the token to ensure that the pod always uses a valid token. When the mounting pod is deleted, the token automatically becomes invalid. This approach is implemented by the `BoundServiceAccountTokenVolume `__ feature to improve the token security of the service account. Kubernetes clusters of v1.21 and later enables this approach by default. +In clusters of version 1.21 or later, you can use the `TokenRequest `__ API to obtain the token and use the projected volume to mount the token to the pod. Such tokens are valid for a fixed period (one hour by default). Before expiration, Kubelet refreshes the token to ensure that the pod always uses a valid token. When the mounting pod is deleted, the token automatically becomes invalid. This approach is implemented by the `BoundServiceAccountTokenVolume `__ feature to improve the token security of the service account. Clusters of v1.21 or later enable this approach by default. For smooth transition, the community extends the token validity period to one year by default. After one year, the token becomes invalid, and clients that do not support certificate reloading cannot access the API server. It is recommended that clients of earlier versions be upgraded as soon as possible. Otherwise, service faults may occur. @@ -30,12 +30,12 @@ For details, visit https://github.com/kubernetes/enhancements/tree/master/keps/s Diagnosis --------- -Run the following steps to check your CCE clusters of v1.21 and later: +Perform the following steps to check your CCE clusters of v1.21 or later: -#. Use kubectl to connect to the cluster and run the **kubectl get --raw "/metrics" \| grep stale** command to query the metrics. Check the metric named **serviceaccount_stale_tokens_total**. +#. Use kubectl to connect to the cluster and run the **kubectl get --raw "/metrics" \| grep stale** command to obtain the metrics. Check the metric named **serviceaccount_stale_tokens_total**. If the value is greater than 0, some workloads in the cluster may be using an earlier client-go version. In this case, check whether this problem occurs in your deployed applications. If yes, upgrade client-go to the version specified by the community as soon as possible. The version must be at least two major versions of the CCE cluster. For example, if your cluster version is 1.23, the Kubernetes dependency library version must be at least 1.19. |image1| -.. |image1| image:: /_static/images/en-us_image_0000001518062816.png +.. |image1| image:: /_static/images/en-us_image_0000001647577164.png diff --git a/umn/source/permissions_management/pod_security/configuring_a_pod_security_policy.rst b/umn/source/permissions_management/pod_security/configuring_a_pod_security_policy.rst deleted file mode 100644 index 6d618e1..0000000 --- a/umn/source/permissions_management/pod_security/configuring_a_pod_security_policy.rst +++ /dev/null @@ -1,171 +0,0 @@ -:original_name: cce_10_0275.html - -.. _cce_10_0275: - -Configuring a Pod Security Policy -================================= - -A pod security policy (PSP) is a cluster-level resource that controls sensitive security aspects of the pod specification. The PodSecurityPolicy object in Kubernetes defines a group of conditions that a pod must comply with to be accepted by the system, as well as the default values of related fields. - -By default, the PSP access control component is enabled for clusters of v1.17.17 and a global default PSP named **psp-global** is created. You can modify the default policy (but not delete it). You can also create a PSP and bind it to the RBAC configuration. - -.. note:: - - - In addition to the global default PSP, the system configures independent PSPs for system components in namespace kube-system. Modifying the psp-global configuration does not affect pod creation in namespace kube-system. - - In Kubernetes 1.25, PSP has been removed and replaced by Pod Security Admission. For details, see :ref:`Configuring Pod Security Admission `. - -Modifying the Global Default PSP --------------------------------- - -Before modifying the global default PSP, ensure that a CCE cluster has been created and connected by using kubectl. - -#. Run the following command: - - **kubectl edit psp psp-global** - -#. Modify the parameters as required. For details, see `PodSecurityPolicy `__. - -.. _cce_10_0275__section155111941177: - -Example of Enabling Unsafe Sysctls in Pod Security Policy ---------------------------------------------------------- - -You can configure allowed-unsafe-sysctls for a node pool. For CCE **v1.17.17** and later versions, add configurations in **allowedUnsafeSysctls** of the pod security policy to make the configuration take effect. For details, see `PodSecurityPolicy `__. - -In addition to modifying the global pod security policy, you can add new pod security policies. For example, enable the **net.core.somaxconn** unsafe sysctls. The following is an example of adding a pod security policy: - -.. code-block:: - - apiVersion: policy/v1beta1 - kind: PodSecurityPolicy - metadata: - annotations: - seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*' - name: sysctl-psp - spec: - allowedUnsafeSysctls: - - net.core.somaxconn - allowPrivilegeEscalation: true - allowedCapabilities: - - '*' - fsGroup: - rule: RunAsAny - hostIPC: true - hostNetwork: true - hostPID: true - hostPorts: - - max: 65535 - min: 0 - privileged: true - runAsGroup: - rule: RunAsAny - runAsUser: - rule: RunAsAny - seLinux: - rule: RunAsAny - supplementalGroups: - rule: RunAsAny - volumes: - - '*' - --- - kind: ClusterRole - apiVersion: rbac.authorization.k8s.io/v1 - metadata: - name: sysctl-psp - rules: - - apiGroups: - - "*" - resources: - - podsecuritypolicies - resourceNames: - - sysctl-psp - verbs: - - use - - --- - apiVersion: rbac.authorization.k8s.io/v1 - kind: ClusterRoleBinding - metadata: - name: sysctl-psp - roleRef: - kind: ClusterRole - name: sysctl-psp - apiGroup: rbac.authorization.k8s.io - subjects: - - kind: Group - name: system:authenticated - apiGroup: rbac.authorization.k8s.io - -Restoring the Original PSP --------------------------- - -If you have modified the default pod security policy and want to restore the original pod security policy, perform the following operations. - -#. Create a policy description file named **policy.yaml**. **policy.yaml** is an example file name. You can rename it as required. - - **vi policy.yaml** - - The content of the description file is as follows: - - .. code-block:: - - apiVersion: policy/v1beta1 - kind: PodSecurityPolicy - metadata: - name: psp-global - annotations: - seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*' - spec: - privileged: true - allowPrivilegeEscalation: true - allowedCapabilities: - - '*' - volumes: - - '*' - hostNetwork: true - hostPorts: - - min: 0 - max: 65535 - hostIPC: true - hostPID: true - runAsUser: - rule: 'RunAsAny' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'RunAsAny' - fsGroup: - rule: 'RunAsAny' - - --- - kind: ClusterRole - apiVersion: rbac.authorization.k8s.io/v1 - metadata: - name: psp-global - rules: - - apiGroups: - - "*" - resources: - - podsecuritypolicies - resourceNames: - - psp-global - verbs: - - use - - --- - apiVersion: rbac.authorization.k8s.io/v1 - kind: ClusterRoleBinding - metadata: - name: psp-global - roleRef: - kind: ClusterRole - name: psp-global - apiGroup: rbac.authorization.k8s.io - subjects: - - kind: Group - name: system:authenticated - apiGroup: rbac.authorization.k8s.io - -#. Run the following command: - - **kubectl apply -f policy.yaml** diff --git a/umn/source/product_bulletin/index.rst b/umn/source/product_bulletin/index.rst index b67e229..147518f 100644 --- a/umn/source/product_bulletin/index.rst +++ b/umn/source/product_bulletin/index.rst @@ -5,7 +5,7 @@ Product Bulletin ================ -- :ref:`Kubernetes Version Support Mechanism ` +- :ref:`Kubernetes Version Policy ` - :ref:`CCE Cluster Version Release Notes ` - :ref:`OS Patch Notes for Cluster Nodes ` - :ref:`Security Vulnerability Responses ` @@ -14,7 +14,7 @@ Product Bulletin :maxdepth: 1 :hidden: - kubernetes_version_support_mechanism + kubernetes_version_policy cce_cluster_version_release_notes os_patch_notes_for_cluster_nodes security_vulnerability_responses/index diff --git a/umn/source/product_bulletin/kubernetes_version_policy.rst b/umn/source/product_bulletin/kubernetes_version_policy.rst new file mode 100644 index 0000000..be5b357 --- /dev/null +++ b/umn/source/product_bulletin/kubernetes_version_policy.rst @@ -0,0 +1,66 @@ +:original_name: cce_bulletin_0033.html + +.. _cce_bulletin_0033: + +Kubernetes Version Policy +========================= + +CCE provides highly scalable, high-performance, enterprise-class Kubernetes clusters. As the Kubernetes community periodically releases Kubernetes versions, CCE will release cluster Open Beta Test (OBT) and commercially used versions accordingly. This section describes the Kubernetes version policy of CCE clusters. + +Lifecycle of CCE Cluster Versions +--------------------------------- + ++--------------------+-------------------------------------------------------------------------+----------------------+--------------------------------+---------------------+ +| Kubernetes Version | Status | Community Release In | Commercial Use of CCE Clusters | EOS of CCE Clusters | ++====================+=========================================================================+======================+================================+=====================+ +| v1.25 | In commercial use\ :sup:`:ref:`a `` | August 2022 | March 2023 | March 2025 | ++--------------------+-------------------------------------------------------------------------+----------------------+--------------------------------+---------------------+ +| v1.23 | In commercial use\ :sup:`:ref:`a `` | December 2021 | September 2022 | September 2024 | ++--------------------+-------------------------------------------------------------------------+----------------------+--------------------------------+---------------------+ +| v1.21 | In commercial use\ :sup:`:ref:`b `` | April 2021 | April 2022 | April 2024 | ++--------------------+-------------------------------------------------------------------------+----------------------+--------------------------------+---------------------+ +| v1.19 | In commercial use\ :sup:`:ref:`b `` | August 2020 | March 2021 | September 2023 | ++--------------------+-------------------------------------------------------------------------+----------------------+--------------------------------+---------------------+ +| v1.17 | End of service (EOS) | December 2019 | July 2020 | January 2023 | ++--------------------+-------------------------------------------------------------------------+----------------------+--------------------------------+---------------------+ +| v1.15 | EOS | June 2019 | December 2019 | September 2022 | ++--------------------+-------------------------------------------------------------------------+----------------------+--------------------------------+---------------------+ +| v1.13 | EOS | December 2018 | June 2019 | March 2022 | ++--------------------+-------------------------------------------------------------------------+----------------------+--------------------------------+---------------------+ +| v1.11 | EOS | August 2018 | October 2018 | March 2021 | ++--------------------+-------------------------------------------------------------------------+----------------------+--------------------------------+---------------------+ +| v1.9 | EOS | December 2017 | March 2018 | December 2020 | ++--------------------+-------------------------------------------------------------------------+----------------------+--------------------------------+---------------------+ + +.. note:: + + The CCE console supports clusters of the latest two commercially used versions: + + - .. _cce_bulletin_0033__li1996032514227: + + a: Clusters created using the console or APIs + + - .. _cce_bulletin_0033__li1896032515222: + + b: Clusters created only using APIs + +Phases of CCE Cluster Versions +------------------------------ + +- In commercial use: The cluster version has been fully verified and is stable and reliable. You can use clusters of this version in the production environment, and the CCE SLA is valid for such clusters. +- EOS: After the cluster version EOS, CCE does not support the creation of new clusters or provide technical support including new feature updates, vulnerability or issue fixes, new patches, work order guidance, and online checks for the EOS cluster version. The CCE SLA is not valid for such clusters. + +CCE Cluster Versions +-------------------- + +- .. _cce_bulletin_0033__en-us_topic_0261805755_li19299112592014: + + Cluster version: The format is *x.y*, where *x* indicates the major Kubernetes version and *y* indicates the minor Kubernetes version. For details, see the `Kubernetes community documentation `__. + +- Patch version: The format is *x.y.z-r(n)*, where *x.y* indicates the :ref:`CCE cluster version `, *z* indicates the minor CCE version, and -r(*n*) indicates the patch version. + + +.. figure:: /_static/images/en-us_image_0000001690672798.png + :alt: **Figure 1** Cluster version + + **Figure 1** Cluster version diff --git a/umn/source/product_bulletin/kubernetes_version_support_mechanism.rst b/umn/source/product_bulletin/kubernetes_version_support_mechanism.rst deleted file mode 100644 index e2d1bfc..0000000 --- a/umn/source/product_bulletin/kubernetes_version_support_mechanism.rst +++ /dev/null @@ -1,56 +0,0 @@ -:original_name: cce_bulletin_0003.html - -.. _cce_bulletin_0003: - -Kubernetes Version Support Mechanism -==================================== - -This section explains versioning in CCE, and the policies for Kubernetes version support. - -Version Description -------------------- - -**Version number**: The format is **x.y.z**, where **x.y** is the major version and **z** is the minor version. If the version number is followed by **-r**, the version is a patch version, for example, v1.15.6-r1. - -|image1| - -Version Requirements --------------------- - -.. important:: - - **Offline**: After a version is brought offline, a cluster of this version cannot be created on the CCE console and no new features will be released for the clusters of this version. - - **Obsolete**: CCE will no longer provide support for this version, including release of new functions, community bug fixes, vulnerability management, and upgrade. - -CCE releases only odd major Kubernetes versions, such as v1.25, v1.23, and v1.21. The specific version support policies in different scenarios are as follows: - -- Cluster creation - - CCE allows you to create clusters of two latest major Kubernetes versions, for example, v1.25 and v1.23. When v1.25 is commercially available, support for earlier versions (such as v1.21) will be removed. In this case, you will not be able to create clusters of v1.21 on the CCE console. - -- Cluster maintenance - - CCE maintains clusters of four major Kubernetes versions at most, such as v1.25, v1.23, v1.21, and v1.19. For example, after v1.25 is commercially available, support for v1.17 will be removed. - - |image2| - -- Cluster upgrade - - CCE allows you to upgrade clusters of **three major versions** at the same time. Clusters of 1.19 and later versions can be upgraded skipping one major version at most (for example, from 1.19 directly to 1.23). Each version is maintained for one year. For example, after v1.25 is available, support for earlier versions (such as v1.17) will be removed. You are advised to upgrade your Kubernetes cluster before the maintenance period ends. - - - Cluster version upgrade: After the latest major version (for example, v1.25) is available, CCE allows you to upgrade clusters to the last stable version of the second-latest major version, for example, v1.23. For details, see :ref:`Upgrade Overview `. - - Cluster patch upgrade: For existing clusters running on the live network, if there are major Kubernetes issues or vulnerabilities, CCE will perform the patch upgrade on these clusters in the background. Users are unaware of the patch upgrade. If the patch upgrade has adverse impact on user services, CCE will release a notice one week in advance. - -Version Release Cycle ---------------------- - -Kubernetes releases a major version in about four months. CCE will provide support to mirror the new Kubernetes version in about seven months after the version release. - -Version Constraints -------------------- - -After a cluster is upgraded, it cannot be rolled back to the source version. - -.. |image1| image:: /_static/images/en-us_image_0000001460905374.png -.. |image2| image:: /_static/images/en-us_image_0000001461224886.png diff --git a/umn/source/product_bulletin/os_patch_notes_for_cluster_nodes.rst b/umn/source/product_bulletin/os_patch_notes_for_cluster_nodes.rst index aa6534c..750fb1d 100644 --- a/umn/source/product_bulletin/os_patch_notes_for_cluster_nodes.rst +++ b/umn/source/product_bulletin/os_patch_notes_for_cluster_nodes.rst @@ -8,39 +8,33 @@ OS Patch Notes for Cluster Nodes Nodes in Hybrid Clusters ------------------------ -CCE nodes in Hybrid clusters can run on EulerOS 2.5, EulerOS 2.9, CentOS 7.7 and Ubuntu 22.04. The following table lists the supported patches for these OSs. +CCE nodes in Hybrid clusters can run on EulerOS 2.5, EulerOS 2.9and Ubuntu 22.04. You are not advised to use the CentOS 7.7 image to create nodes because the OS maintenance has stopped. + +The following table lists the supported patches for these OSs. .. table:: **Table 1** Node OS patches - +--------------------------+-----------------+-------------------------------------------+ - | OS | Cluster Version | Latest Kernel | - +==========================+=================+===========================================+ - | EulerOS release 2.5 | v1.25 | 3.10.0-862.14.1.5.h687.eulerosv2r7.x86_64 | - +--------------------------+-----------------+-------------------------------------------+ - | | v1.23 | 3.10.0-862.14.1.5.h687.eulerosv2r7.x86_64 | - +--------------------------+-----------------+-------------------------------------------+ - | | v1.21 | 3.10.0-862.14.1.5.h687.eulerosv2r7.x86_64 | - +--------------------------+-----------------+-------------------------------------------+ - | | v1.19 | 3.10.0-862.14.1.5.h687.eulerosv2r7.x86_64 | - +--------------------------+-----------------+-------------------------------------------+ - | EulerOS release 2.9 | v1.25 | 4.18.0-147.5.1.6.h766.eulerosv2r9.x86_64 | - +--------------------------+-----------------+-------------------------------------------+ - | | v1.23 | 4.18.0-147.5.1.6.h766.eulerosv2r9.x86_64 | - +--------------------------+-----------------+-------------------------------------------+ - | | v1.21 | 4.18.0-147.5.1.6.h766.eulerosv2r9.x86_64 | - +--------------------------+-----------------+-------------------------------------------+ - | | v1.19 | 4.18.0-147.5.1.6.h766.eulerosv2r9.x86_64 | - +--------------------------+-----------------+-------------------------------------------+ - | CentOS Linux release 7.7 | v1.25 | 3.10.0-1160.76.1.el7.x86_64 | - +--------------------------+-----------------+-------------------------------------------+ - | | v1.23 | 3.10.0-1160.76.1.el7.x86_64 | - +--------------------------+-----------------+-------------------------------------------+ - | | v1.21 | 3.10.0-1160.76.1.el7.x86_64 | - +--------------------------+-----------------+-------------------------------------------+ - | | v1.19 | 3.10.0-1160.76.1.el7.x86_64 | - +--------------------------+-----------------+-------------------------------------------+ - | Ubuntu 22.04 | v1.25 | 5.15.0-53-generic | - +--------------------------+-----------------+-------------------------------------------+ + +---------------------+-----------------+-------------------------------------------+ + | OS | Cluster Version | Latest Kernel | + +=====================+=================+===========================================+ + | EulerOS release 2.5 | v1.25 | 3.10.0-862.14.1.5.h687.eulerosv2r7.x86_64 | + +---------------------+-----------------+-------------------------------------------+ + | | v1.23 | 3.10.0-862.14.1.5.h687.eulerosv2r7.x86_64 | + +---------------------+-----------------+-------------------------------------------+ + | | v1.21 | 3.10.0-862.14.1.5.h687.eulerosv2r7.x86_64 | + +---------------------+-----------------+-------------------------------------------+ + | | v1.19 | 3.10.0-862.14.1.5.h687.eulerosv2r7.x86_64 | + +---------------------+-----------------+-------------------------------------------+ + | EulerOS release 2.9 | v1.25 | 4.18.0-147.5.1.6.h766.eulerosv2r9.x86_64 | + +---------------------+-----------------+-------------------------------------------+ + | | v1.23 | 4.18.0-147.5.1.6.h766.eulerosv2r9.x86_64 | + +---------------------+-----------------+-------------------------------------------+ + | | v1.21 | 4.18.0-147.5.1.6.h766.eulerosv2r9.x86_64 | + +---------------------+-----------------+-------------------------------------------+ + | | v1.19 | 4.18.0-147.5.1.6.h766.eulerosv2r9.x86_64 | + +---------------------+-----------------+-------------------------------------------+ + | Ubuntu 22.04 | v1.25 | 5.15.0-53-generic | + +---------------------+-----------------+-------------------------------------------+ .. table:: **Table 2** Mappings between BMS node OS versions and cluster versions @@ -54,34 +48,26 @@ CCE nodes in Hybrid clusters can run on EulerOS 2.5, EulerOS 2.9, CentOS 7.7 and .. table:: **Table 3** Mappings between OS versions and network model - +--------------------------+-----------------+-------------+----------------+--------------------------+ - | OS Version | Cluster Version | VPC Network | Tunnel Network | Cloud Native Network 2.0 | - +==========================+=================+=============+================+==========================+ - | Ubuntu 22.04 | v1.25 | Y | x | Y | - +--------------------------+-----------------+-------------+----------------+--------------------------+ - | CentOS Linux release 7.7 | v1.25 | Y | Y | Y | - +--------------------------+-----------------+-------------+----------------+--------------------------+ - | | v1.23 | Y | Y | Y | - +--------------------------+-----------------+-------------+----------------+--------------------------+ - | | v1.21 | Y | Y | Y | - +--------------------------+-----------------+-------------+----------------+--------------------------+ - | | v1.19 | Y | Y | Y | - +--------------------------+-----------------+-------------+----------------+--------------------------+ - | EulerOS release 2.9 | v1.25 | Y | Y | Y | - +--------------------------+-----------------+-------------+----------------+--------------------------+ - | | v1.23 | Y | Y | Y | - +--------------------------+-----------------+-------------+----------------+--------------------------+ - | | v1.21 | Y | Y | Y | - +--------------------------+-----------------+-------------+----------------+--------------------------+ - | | v1.19 | Y | Y | Y | - +--------------------------+-----------------+-------------+----------------+--------------------------+ - | EulerOS release 2.5 | v1.25 | Y | Y | Y | - +--------------------------+-----------------+-------------+----------------+--------------------------+ - | | v1.23 | Y | Y | Y | - +--------------------------+-----------------+-------------+----------------+--------------------------+ - | | v1.21 | Y | Y | Y | - +--------------------------+-----------------+-------------+----------------+--------------------------+ - | | v1.19 | Y | Y | Y | - +--------------------------+-----------------+-------------+----------------+--------------------------+ + +---------------------+-----------------+-------------+----------------+--------------------------+ + | OS Version | Cluster Version | VPC Network | Tunnel Network | Cloud Native Network 2.0 | + +=====================+=================+=============+================+==========================+ + | Ubuntu 22.04 | v1.25 | Y | x | Y | + +---------------------+-----------------+-------------+----------------+--------------------------+ + | EulerOS release 2.9 | v1.25 | Y | Y | Y | + +---------------------+-----------------+-------------+----------------+--------------------------+ + | | v1.23 | Y | Y | Y | + +---------------------+-----------------+-------------+----------------+--------------------------+ + | | v1.21 | Y | Y | Y | + +---------------------+-----------------+-------------+----------------+--------------------------+ + | | v1.19 | Y | Y | Y | + +---------------------+-----------------+-------------+----------------+--------------------------+ + | EulerOS release 2.5 | v1.25 | Y | Y | Y | + +---------------------+-----------------+-------------+----------------+--------------------------+ + | | v1.23 | Y | Y | Y | + +---------------------+-----------------+-------------+----------------+--------------------------+ + | | v1.21 | Y | Y | Y | + +---------------------+-----------------+-------------+----------------+--------------------------+ + | | v1.19 | Y | Y | Y | + +---------------------+-----------------+-------------+----------------+--------------------------+ The OS patches and verification results will be updated from time to time. You can update the operating system based on your needs. diff --git a/umn/source/workloads/volcano_scheduling/hybrid_deployment_of_online_and_offline_jobs.rst b/umn/source/scheduling/cloud_native_hybrid_deployment/dynamic_resource_oversubscription.rst similarity index 61% rename from umn/source/workloads/volcano_scheduling/hybrid_deployment_of_online_and_offline_jobs.rst rename to umn/source/scheduling/cloud_native_hybrid_deployment/dynamic_resource_oversubscription.rst index 3f1ff75..55570c7 100644 --- a/umn/source/workloads/volcano_scheduling/hybrid_deployment_of_online_and_offline_jobs.rst +++ b/umn/source/scheduling/cloud_native_hybrid_deployment/dynamic_resource_oversubscription.rst @@ -2,19 +2,8 @@ .. _cce_10_0384: -Hybrid Deployment of Online and Offline Jobs -============================================ - -Online and Offline Jobs ------------------------ - -Jobs can be classified into online jobs and offline jobs based on whether services are always online. - -- **Online job**: Such jobs run for a long time, with regular traffic surges, tidal resource requests, and high requirements on SLA, such as advertising and e-commerce services. -- **Offline jobs**: Such jobs run for a short time, have high computing requirements, and can tolerate high latency, such as AI and big data services. - -Resource Oversubscription and Hybrid Deployment ------------------------------------------------ +Dynamic Resource Oversubscription +================================= Many services see surges in traffic. To ensure performance and stability, resources are often requested at the maximum needed. However, the surges may ebb very shortly and resources, if not released, are wasted in non-peak hours. Especially for online jobs that request a large quantity of resources to ensure SLA, resource utilization can be as low as it gets. @@ -23,13 +12,17 @@ Resource oversubscription is the process of making use of idle requested resourc Hybrid deployment of online and offline jobs in a cluster can better utilize cluster resources. -.. figure:: /_static/images/en-us_image_0000001568902489.png +.. figure:: /_static/images/en-us_image_0000001647576720.png :alt: **Figure 1** Resource oversubscription **Figure 1** Resource oversubscription -Oversubscription for Hybrid Deployment --------------------------------------- +Features +-------- + +.. note:: + + After dynamic resource oversubscription and elastic scaling are enabled in a node pool, oversubscribed resources change rapidly because the resource usage of high-priority applications changes in real time. To prevent frequent node scale-ins and scale-outs, do not consider oversubscribed resources when evaluating node scale-ins. Hybrid deployment is supported, and CPU and memory resources can be oversubscribed. The key features are as follows: @@ -60,60 +53,57 @@ Hybrid deployment is supported, and CPU and memory resources can be oversubscrib - Resource oversubscription and hybrid deployment: - If only hybrid deployment is used, you need to configure the label **volcano.sh/colocation=true** for the node and delete the node label **volcano.sh/oversubscription** or set its value to **false**. + If only hybrid deployment is used, configure the label **volcano.sh/colocation=true** for the node and delete the node label **volcano.sh/oversubscription** or set its value to **false**. If the label **volcano.sh/colocation=true** is configured for a node, hybrid deployment is enabled. If the label **volcano.sh/oversubscription=true** is configured, resource oversubscription is enabled. The following table lists the available feature combinations after hybrid deployment or resource oversubscription is enabled. - +--------------------------------------------------------+----------------------------------------------------------------------+-------------------------------+----------------------------------------------------------------------------------------+ - | Hybrid Deployment Enabled (volcano.sh/colocation=true) | Resource oversubscription Enabled (volcano.sh/oversubscription=true) | Use Oversubscribed Resources? | Conditions for Evicting Offline Pods | - +========================================================+======================================================================+===============================+========================================================================================+ - | No | No | No | None | - +--------------------------------------------------------+----------------------------------------------------------------------+-------------------------------+----------------------------------------------------------------------------------------+ - | Yes | No | No | The node resource usage exceeds the high threshold. | - +--------------------------------------------------------+----------------------------------------------------------------------+-------------------------------+----------------------------------------------------------------------------------------+ - | No | Yes | Yes | The node resource usage exceeds the high threshold, and the node request exceeds 100%. | - +--------------------------------------------------------+----------------------------------------------------------------------+-------------------------------+----------------------------------------------------------------------------------------+ - | Yes | Yes | Yes | The node resource usage exceeds the high threshold. | - +--------------------------------------------------------+----------------------------------------------------------------------+-------------------------------+----------------------------------------------------------------------------------------+ + +--------------------------------------------------------+----------------------------------------------------------------------+------------------------------+----------------------------------------------------------------------------------------+ + | Hybrid Deployment Enabled (volcano.sh/colocation=true) | Resource oversubscription Enabled (volcano.sh/oversubscription=true) | Use Oversubscribed Resources | Conditions for Evicting Offline Pods | + +========================================================+======================================================================+==============================+========================================================================================+ + | No | No | No | None | + +--------------------------------------------------------+----------------------------------------------------------------------+------------------------------+----------------------------------------------------------------------------------------+ + | Yes | No | No | The node resource usage exceeds the high threshold. | + +--------------------------------------------------------+----------------------------------------------------------------------+------------------------------+----------------------------------------------------------------------------------------+ + | No | Yes | Yes | The node resource usage exceeds the high threshold, and the node request exceeds 100%. | + +--------------------------------------------------------+----------------------------------------------------------------------+------------------------------+----------------------------------------------------------------------------------------+ + | Yes | Yes | Yes | The node resource usage exceeds the high threshold. | + +--------------------------------------------------------+----------------------------------------------------------------------+------------------------------+----------------------------------------------------------------------------------------+ -Constraints ------------ +kubelet Oversubscription +------------------------ -**Specifications** +.. important:: -- Kubernetes version: + **Specifications** - - v1.19: v1.19.16-r4 or later - - v1.21: v1.21.7-r0 or later - - v1.23: v1.23.5-r0 or later - - v1.25 or later + - Cluster Version -- Cluster type: CCE or CCE Turbo -- Node OS: EulerOS 2.9 (kernel-4.18.0-147.5.1.6.h729.6.eulerosv2r9.x86_64) -- Node type: ECS -- volcano add-on version: 1.7.0 or later + - v1.19: v1.19.16-r4 or later + - v1.21: v1.21.7-r0 or later + - v1.23: v1.23.5-r0 or later + - v1.25 or later -**Constraints** + - Cluster Type: CCE or CCE Turbo + - Node OS: EulerOS 2.9 (kernel-4.18.0-147.5.1.6.h729.6.eulerosv2r9.x86_64) + - Node Type: ECS + - The volcano add-on version: 1.7.0 or later -- Before enabling the volcano oversubscription plug-in, ensure that the overcommit plug-in is not enabled. -- Modifying the label of an oversubscribed node does not affect the running pods. -- Running pods cannot be converted between online and offline services. To convert services, you need to rebuild pods. -- If the label **volcano.sh/oversubscription=true** is configured for a node in the cluster, the **oversubscription** configuration must be added to the volcano add-on. Otherwise, the scheduling of oversubscribed nodes will be abnormal. Ensure that you have correctly configure labels because the scheduler does not check the add-on and node configurations. For details about the labels, see :ref:`Configuring Oversubscription Labels for Scheduling `. -- To disable oversubscription, perform the following operations: + **Constraints** - - Remove the **volcano.sh/oversubscription** label from the oversubscribed node. - - Set **over-subscription-resource** to **false**. - - Modify the configmap of the volcano scheduler named **volcano-scheduler-configmap** and remove the oversubscription add-on. + - Before enabling oversubscription, ensure that the overcommit add-on is not enabled on volcano. + - Modifying the label of an oversubscribed node does not affect the running pods. + - Running pods cannot be converted between online and offline services. To convert services, you need to rebuild pods. + - If the label **volcano.sh/oversubscription=true** is configured for a node in the cluster, the **oversubscription** configuration must be added to the volcano add-on. Otherwise, the scheduling of oversold nodes will be abnormal. Ensure that you have correctly configure labels because the scheduler does not check the add-on and node configurations. For details about the labels, see :ref:`Table 1 `. + - To disable oversubscription, perform the following operations: -- If **cpu-manager-policy** is set to static core binding on a node, do not assign the QoS class of Guaranteed to offline pods. If core binding is required, change the pods to online pods. Otherwise, offline pods may occupy the CPUs of online pods, causing online pod startup failures, and offline pods fail to be started although they are successfully scheduled. -- If **cpu-manager-policy** is set to static core binding on a node, do not bind cores to all online pods. Otherwise, online pods occupy all CPU or memory resources, leaving a small number of oversubscribed resources. + - Remove the **volcano.sh/oversubscription** label from the oversubscribed node. + - Set **over-subscription-resource** to **false**. + - Modify the configmap of the volcano scheduler named **volcano-scheduler-configmap** and remove the oversubscription add-on. -.. _cce_10_0384__section1940910414220: + - If **cpu-manager-policy** is set to static core binding on a node, do not assign the QoS class of Guaranteed to offline pods. If core binding is required, change the pods to online pods. Otherwise, offline pods may occupy the CPUs of online pods, causing online pod startup failures, and offline pods fail to be started although they are successfully scheduled. + - If **cpu-manager-policy** is set to static core binding on a node, do not bind cores to all online pods. Otherwise, online pods occupy all CPU or memory resources, leaving a small number of oversubscribed resources. -Configuring Oversubscription Labels for Scheduling --------------------------------------------------- - -If the label **volcano.sh/oversubscription=true** is configured for a node in the cluster, the **oversubscription** configuration must be added to the volcano add-on. Otherwise, the scheduling of oversubscribed nodes will be abnormal. For details about the related configuration, see :ref:`Table 1 `. +If the label **volcano.sh/oversubscription=true** is configured for a node in the cluster, the **oversubscription** configuration must be added to the volcano add-on. Otherwise, the scheduling of oversold nodes will be abnormal. For details about the related configuration, see :ref:`Table 1 `. Ensure that you have correctly configure labels because the scheduler does not check the add-on and node configurations. @@ -133,14 +123,11 @@ Ensure that you have correctly configure labels because the scheduler does not c | No | Yes | Not triggered or failed. Avoid this configuration. | +----------------------------+--------------------------------+----------------------------------------------------+ -Using Hybrid Deployment ------------------------ - #. Configure the volcano add-on. a. Use kubectl to connect to the cluster. - b. Install the volcano plug-in and add the **oversubscription** plug-in to **volcano-scheduler-configmap**. Ensure that the plug-in configuration does not contain the **overcommit** plug-in. If **- name: overcommit** exists, delete this configuration. + b. Install the volcano add-on and add the oversubscription add-on to **volcano-scheduler-configmap**. Ensure that the add-on configuration does not contain the overcommit add-on. If **- name: overcommit** exists, delete this configuration. In addition, set **enablePreemptable** and **enableJobStarving** of the gang add-on to **false** and configure a preemption action. .. code-block:: @@ -148,10 +135,12 @@ Using Hybrid Deployment apiVersion: v1 data: volcano-scheduler.conf: | - actions: "enqueue, allocate, backfill" + actions: "enqueue, allocate, preempt" # Configure a preemption action. tiers: - plugins: - name: gang + enablePreemptable: false + enableJobStarving: false - name: priority - name: conformance - name: oversubscription @@ -171,7 +160,9 @@ Using Hybrid Deployment a. Create a node pool. b. Choose **More** > **Manage** in the **Operation** column of the created node pool. - c. In the **Manage Component** window that is displayed, set **over-subscription-resource** under **kubelet** to **true** and click **OK**. + c. In the **Manage Components** window that is displayed, set **over-subscription-resource** under **kubelet** to **true** and click **OK**. + + |image1| #. Set the node oversubscription label. @@ -231,9 +222,33 @@ Using Hybrid Deployment | | The default value is **cpu,memory**. | +-------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------+ -#. Deploy online and offline jobs. +#. Create resources at a high- and low-priorityClass, respectively. - The **volcano.sh/qos-level** label needs to be added to annotation to distinguish offline jobs. The value is an integer ranging from -7 to 7. If the value is less than 0, the job is an offline job. If the value is greater than or equal to 0, the job is a high-priority job, that is, online job. You do not need to set this label for online jobs. For both online and offline jobs, set **schedulerName** to **volcano** to enable the Volcano scheduler. + .. code-block:: + + cat < 4h58m v1.19.16-r2-CCE22.5.1 192.168.0.3 Ready 148m v1.19.16-r2-CCE22.5.1 - - 192.168.0.173 is an oversubscribed node (with the **volcano.sh/oversubscirption=true** label). - - 192.168.0.3 is a non-oversubscribed node (without the **volcano.sh/oversubscirption=true** label). + - 192.168.0.173 is an oversubscribed node (with the **volcano.sh/oversubscription=true** label). + - 192.168.0.3 is a non-oversubscribed node (without the **volcano.sh/oversubscription=true** label). .. code-block:: @@ -343,9 +360,10 @@ The following uses an example to describe how to deploy online and offline jobs labels: app: offline annotations: - volcano.sh/qos-level: "-1" #Offline job label + volcano.sh/qos-level: "-1" # Offline job label spec: - schedulerName: volcano # The Volcano scheduler is used. + schedulerName: volcano # The volcano scheduler is used. + priorityClassName: testing # Configure the testing priorityClass. containers: - name: container-1 image: nginx:latest @@ -390,7 +408,8 @@ The following uses an example to describe how to deploy online and offline jobs labels: app: online spec: - schedulerName: volcano # The Volcano scheduler is used. + schedulerName: volcano # The volcano scheduler is used. + priorityClassName: production # Configure the production priorityClass. containers: - name: container-1 image: resource_consumer:latest @@ -435,7 +454,7 @@ The following uses an example to describe how to deploy online and offline jobs labels: app: online spec: - affinity: # Submit an online job to an oversubscribed node. + affinity: # Submit an online job to an oversubscribed node. nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: @@ -444,7 +463,8 @@ The following uses an example to describe how to deploy online and offline jobs operator: In values: - 192.168.0.173 - schedulerName: volcano # The Volcano scheduler is used. + schedulerName: volcano # The volcano scheduler is used. + priorityClassName: production # Configure the production priorityClass. containers: - name: container-1 image: resource_consumer:latest @@ -504,132 +524,6 @@ The following uses an example to describe how to deploy online and offline jobs online-6f44bb68bd-b8z9p 1/1 Running 0 24m 192.168.10.18 192.168.0.173 online-6f44bb68bd-g6xk8 1/1 Running 0 24m 192.168.10.69 192.168.0.173 -#. Log in to the CCE console and click the cluster name to access the cluster console. - -#. In the navigation pane on the left, choose **Nodes**. Click the **Node Pools** tab. When creating or updating a node pool, enable hybrid deployment of online and offline services in **Advanced Settings**. - -#. In the navigation pane on the left, choose **Add-ons**. Click **Install** under volcano. In the **Advanced Settings** area, set **colocation_enable** to **true** to enable hybrid deployment of online and offline services. For details about the installation, see :ref:`volcano `. - - If the volcano add-on has been installed, click **Edit** to view or modify the parameter **colocation_enable**. - -#. Enable CPU Burst. - - After confirming that the volcano add-on is working, run the following command to edit the parameter **configmap** of **volcano-agent-configuration** in the namespace **kube-system**. If **enable** is set to **true**, CPU Burst is enabled. If **enable** is set to **false**, CPU Burst is disabled. - - .. code-block:: - - kubectl edit configmap -nkube-system volcano-agent-configuration - - For example: - - .. code-block:: - - cpuBurstConfig: - enable: true - -#. Deploy a workload in a node pool where hybrid deployment has been enabled. Take Nginx as an example. Set **cpu** under **requests** to **2** and **cpu** under **limits** to **4**, and create a Service that can be accessed in the cluster for the workload. - - .. code-block:: - - apiVersion: apps/v1 - kind: Deployment - metadata: - name: nginx - namespace: default - spec: - replicas: 2 - selector: - matchLabels: - app: nginx - template: - metadata: - labels: - app: nginx - annotations: - volcano.sh/enable-quota-burst=true - volcano.sh/quota-burst-time=200000 - spec: - containers: - - name: container-1 - image: nginx:latest - resources: - limits: - cpu: "4" - requests: - cpu: "2" - imagePullSecrets: - - name: default-secret - --- - apiVersion: v1 - kind: Service - metadata: - name: nginx - namespace: default - labels: - app: nginx - spec: - selector: - app: nginx - ports: - - name: cce-service-0 - targetPort: 80 - nodePort: 0 - port: 80 - protocol: TCP - type: ClusterIP - - +------------------------------------+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Annotation | Mandatory | Description | - +====================================+=======================+=================================================================================================================================================================================================================================================================================================================================================+ - | volcano.sh/enable-quota-burst=true | Yes | CPU Burst is enabled for the workload. | - +------------------------------------+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | volcano.sh/quota-burst-time=200000 | No | To ensure CPU scheduling stability and reduce contention when multiple containers encounter CPU bursts at the same time, the default **CPU Burst** value is the same as the **CPU Quota** value. That is, a container can use a maximum of twice the **CPU Limit** value. By default, **CPU Burst** is set for all service containers in a pod. | - | | | | - | | | In this example, the **CPU Limit** of the container is **4**, that is, the default value is **400,000** (1 core = 100,000), indicating that a maximum of four additional cores can be used after the **CPU Limit** value is reached. | - +------------------------------------+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -#. Verify CPU Burst. - - You can use the wrk tool to increase load of the workload and observe the service latency, traffic limiting, and CPU limit exceeding when CPU Burst is enabled and disabled, respectively. - - a. Run the following command to increase load of the pod. *$service_ip* indicates the service IP address associated with the pod. - - .. code-block:: - - # You need to download and install the wrk tool on the node. - # The Gzip compression module is enabled in the Apache configuration to simulate the computing logic for the server to process requests. - # Run the following command to increase the load. Note that you need to change the IP address of the target application. - wrk -H "Accept-Encoding: deflate, gzip" -t 4 -c 28 -d 120 --latency --timeout 2s http://$service_ip - - b. Obtain the pod ID. - - .. code-block:: - - kubectl get pods -n -o jsonpath='{.metadata.uid}' - - c. You can run the following command on the node to view the traffic limiting status and CPU limit exceeding status. In the command, *$PodID* indicates the pod ID. - - .. code-block:: - - $cat /sys/fs/cgroup/cpuacct/kubepods/$PodID/cpu.stat - nr_periods 0 # Number of scheduling periods - nr_throttled 0 # Traffic limiting times - throttled_time 0 # Traffic limiting duration (ns) - nr_bursts 0 # CPU Limit exceeding times - burst_time 0 # Total Limit exceeding duration - - .. table:: **Table 3** Result summary in this example - - +-----------------------+-------------+------------------------+---------------------------+-----------------------+--------------------------------+ - | CPU Burst | P99 Latency | nr_throttled | throttled_time | nr_bursts | bursts_time | - | | | | | | | - | | | Traffic Limiting Times | Traffic Limiting Duration | Limit Exceeding Times | Total Limit Exceeding Duration | - +=======================+=============+========================+===========================+=======================+================================+ - | CPU Burst not enabled | 2.96 ms | 986 | 14.3s | 0 | 0 | - +-----------------------+-------------+------------------------+---------------------------+-----------------------+--------------------------------+ - | CPU Burst enabled | 456 µs | 0 | 0 | 469 | 3.7s | - +-----------------------+-------------+------------------------+---------------------------+-----------------------+--------------------------------+ - Handling Suggestions -------------------- @@ -642,3 +536,9 @@ Handling Suggestions - You can add oversubscribed resources (such as CPU and memory) at any time. You can reduce the oversubscribed resource types only when the resource allocation rate does not exceed 100%. + +- If an offline job is deployed on a node ahead of an online job and the online job cannot be scheduled due to insufficient resources, configure a higher priorityClass for the online job than that for the offline job. + +- If there are only online jobs on a node and the eviction threshold is reached, the offline jobs that are scheduled to the current node will be evicted soon. This is normal. + +.. |image1| image:: /_static/images/en-us_image_0000001647576724.png diff --git a/umn/source/scheduling/cloud_native_hybrid_deployment/index.rst b/umn/source/scheduling/cloud_native_hybrid_deployment/index.rst new file mode 100644 index 0000000..6e3a365 --- /dev/null +++ b/umn/source/scheduling/cloud_native_hybrid_deployment/index.rst @@ -0,0 +1,14 @@ +:original_name: cce_10_0709.html + +.. _cce_10_0709: + +Cloud Native Hybrid Deployment +============================== + +- :ref:`Dynamic Resource Oversubscription ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + dynamic_resource_oversubscription diff --git a/umn/source/workloads/cpu_core_binding/binding_cpu_cores.rst b/umn/source/scheduling/cpu_scheduling/cpu_policy.rst similarity index 63% rename from umn/source/workloads/cpu_core_binding/binding_cpu_cores.rst rename to umn/source/scheduling/cpu_scheduling/cpu_policy.rst index d489906..ef55a32 100644 --- a/umn/source/workloads/cpu_core_binding/binding_cpu_cores.rst +++ b/umn/source/scheduling/cpu_scheduling/cpu_policy.rst @@ -2,8 +2,11 @@ .. _cce_10_0351: -Binding CPU Cores -================= +CPU Policy +========== + +Scenarios +--------- By default, kubelet uses `CFS quotas `__ to enforce pod CPU limits. When the node runs many CPU-bound pods, the workload can move to different CPU cores depending on whether the pod is throttled and which CPU cores are available at scheduling time. Many workloads are not sensitive to this migration and thus work fine without any intervention. Some applications are CPU-sensitive. They are sensitive to: @@ -13,40 +16,34 @@ By default, kubelet uses `CFS quotas `. -- Both **requests** and **limits** must be set in the pod definition and their values must be the same. -- The value of **requests** must be an integer for the container. -- For an init container, it is recommended that you set its **requests** to the same as that of the service container. Otherwise, the service container does not inherit the CPU allocation result of the init container, and the CPU manager reserves more CPU resources than supposed. For more information, see `App Containers can't inherit Init Containers CPUs - CPU Manager Static Policy `__. - -You can use :ref:`Scheduling Policy (Affinity/Anti-affinity) ` to schedule the configured pods to the nodes where the static CPU policy is enabled. In this way, cores can be bound. +If your workloads are sensitive to any of these items and CPU cache affinity and scheduling latency significantly affect workload performance, kubelet allows alternative CPU management policies (CPU binding) to determine some placement preferences on the node. The CPU manager preferentially allocates resources on a socket and full physical cores to avoid interference. .. _cce_10_0351__section173918176434: Enabling the CPU Management Policy ---------------------------------- -A `CPU management policy `__ is specified by the kubelet flag **--cpu-manager-policy**. The following policies are supported: +A `CPU management policy `__ is specified by the kubelet flag **--cpu-manager-policy**. By default, Kubernetes supports the following policies: - Disabled (**none**): the default policy. The **none** policy explicitly enables the existing default CPU affinity scheme, providing no affinity beyond what the OS scheduler does automatically. -- Enabled (**static**): The **static** policy allows containers in **Guaranteed** pods with integer CPU requests to be granted increased CPU affinity and exclusivity on the node. +- Enabled (**static**): The **static** policy allows containers in `guaranteed `__ pods with integer GPU requests to be granted increased CPU affinity and exclusivity on the node. -When creating a cluster, you can configure the CPU management policy in **Advanced Settings**, as shown in the following figure. - -|image1| +When creating a cluster, you can configure the CPU management policy in **Advanced Settings**. You can also configure the policy in a node pool. The configuration will change the kubelet flag **--cpu-manager-policy** on the node. Log in to the CCE console, click the cluster name, access the cluster details page, and choose **Nodes** in the navigation pane. On the page displayed, click the **Node Pools** tab. Choose **More** > **Manage** in the **Operation** column of the target node pool, and change the value of **cpu-manager-policy** to **static**. -Pod Configuration ------------------ +Allowing Pods to Exclusively Use the CPU Resources +-------------------------------------------------- -For CPU, both **requests** and **limits** must be set to the same, and **requests** must be an integer. +Prerequisites: + +- Enable the **static** policy on the node. For details, see :ref:`Enabling the CPU Management Policy `. +- Both requests and limits must be configured in pods and their values must be the same integer. +- If an init container needs to exclusively use CPUs, set its requests to the same as that of the service container. Otherwise, the service container does not inherit the CPU allocation result of the init container, and the CPU manager reserves more CPU resources than supposed. For more information, see `App Containers can't inherit Init Containers CPUs - CPU Manager Static Policy `__. + +You can use :ref:`Scheduling Policy (Affinity/Anti-affinity) ` to schedule the configured pods to the nodes where the **static** policy is enabled. In this way, the pods can exclusively use the CPU resources. + +Example YAML: .. code-block:: @@ -76,5 +73,3 @@ For CPU, both **requests** and **limits** must be set to the same, and **request memory: 2048Mi imagePullSecrets: - name: default-secret - -.. |image1| image:: /_static/images/en-us_image_0000001569022837.png diff --git a/umn/source/workloads/cpu_core_binding/index.rst b/umn/source/scheduling/cpu_scheduling/index.rst similarity index 50% rename from umn/source/workloads/cpu_core_binding/index.rst rename to umn/source/scheduling/cpu_scheduling/index.rst index 05441bd..a0f4354 100644 --- a/umn/source/workloads/cpu_core_binding/index.rst +++ b/umn/source/scheduling/cpu_scheduling/index.rst @@ -2,13 +2,13 @@ .. _cce_10_0551: -CPU Core Binding -================ +CPU Scheduling +============== -- :ref:`Binding CPU Cores ` +- :ref:`CPU Policy ` .. toctree:: :maxdepth: 1 :hidden: - binding_cpu_cores + cpu_policy diff --git a/umn/source/workloads/gpu_scheduling.rst b/umn/source/scheduling/gpu_scheduling/default_gpu_scheduling_in_kubernetes.rst similarity index 87% rename from umn/source/workloads/gpu_scheduling.rst rename to umn/source/scheduling/gpu_scheduling/default_gpu_scheduling_in_kubernetes.rst index 21bac57..85c738f 100644 --- a/umn/source/workloads/gpu_scheduling.rst +++ b/umn/source/scheduling/gpu_scheduling/default_gpu_scheduling_in_kubernetes.rst @@ -2,8 +2,8 @@ .. _cce_10_0345: -GPU Scheduling -============== +Default GPU Scheduling in Kubernetes +==================================== You can use GPUs in CCE containers. @@ -12,9 +12,9 @@ Prerequisites - A GPU node has been created. For details, see :ref:`Creating a Node `. -- The gpu-beta add-on has been installed. During the installation, select the GPU driver on the node. For details, see :ref:`gpu-beta `. +- The gpu-device-plugin (previously gpu-beta add-on) has been installed. During the installation, select the GPU driver on the node. For details, see :ref:`gpu-beta `. -- gpu-beta mounts the driver directory to **/usr/local/nvidia/lib64**. To use GPU resources in a container, you need to add **/usr/local/nvidia/lib64** to the **LD_LIBRARY_PATH** environment variable. +- gpu-device-plugin mounts the driver directory to **/usr/local/nvidia/lib64**. To use GPU resources in a container, add **/usr/local/nvidia/lib64** to the **LD_LIBRARY_PATH** environment variable. Generally, you can use any of the following methods to add a file: @@ -77,6 +77,10 @@ Create a workload and request GPUs. You can specify the number of GPUs as follow **nvidia.com/gpu** specifies the number of GPUs to be requested. The value can be smaller than **1**. For example, **nvidia.com/gpu: 0.5** indicates that multiple pods share a GPU. In this case, all the requested GPU resources come from the same GPU card. +.. note:: + + When you use **nvidia.com/gpu** to specify the number of GPUs, the values of requests and limits must be the same. + After **nvidia.com/gpu** is specified, workloads will not be scheduled to nodes without GPUs. If the node is GPU-starved, Kubernetes events similar to the following are reported: - 0/2 nodes are available: 2 Insufficient nvidia.com/gpu. @@ -84,12 +88,6 @@ After **nvidia.com/gpu** is specified, workloads will not be scheduled to nodes To use GPUs on the CCE console, select the GPU quota and specify the percentage of GPUs reserved for the container when creating a workload. - -.. figure:: /_static/images/en-us_image_0000001569022929.png - :alt: **Figure 1** Using GPUs - - **Figure 1** Using GPUs - GPU Node Labels --------------- diff --git a/umn/source/scheduling/gpu_scheduling/index.rst b/umn/source/scheduling/gpu_scheduling/index.rst new file mode 100644 index 0000000..a6fad57 --- /dev/null +++ b/umn/source/scheduling/gpu_scheduling/index.rst @@ -0,0 +1,14 @@ +:original_name: cce_10_0720.html + +.. _cce_10_0720: + +GPU Scheduling +============== + +- :ref:`Default GPU Scheduling in Kubernetes ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + default_gpu_scheduling_in_kubernetes diff --git a/umn/source/scheduling/index.rst b/umn/source/scheduling/index.rst new file mode 100644 index 0000000..78b5e25 --- /dev/null +++ b/umn/source/scheduling/index.rst @@ -0,0 +1,22 @@ +:original_name: cce_10_0674.html + +.. _cce_10_0674: + +Scheduling +========== + +- :ref:`Overview ` +- :ref:`CPU Scheduling ` +- :ref:`GPU Scheduling ` +- :ref:`Volcano Scheduling ` +- :ref:`Cloud Native Hybrid Deployment ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + overview + cpu_scheduling/index + gpu_scheduling/index + volcano_scheduling/index + cloud_native_hybrid_deployment/index diff --git a/umn/source/scheduling/overview.rst b/umn/source/scheduling/overview.rst new file mode 100644 index 0000000..78030d1 --- /dev/null +++ b/umn/source/scheduling/overview.rst @@ -0,0 +1,55 @@ +:original_name: cce_10_0702.html + +.. _cce_10_0702: + +Overview +======== + +CCE supports different types of resource scheduling and task scheduling, improving application performance and overall cluster resource utilization. This section describes the main functions of CPU resource scheduling, GPU/NPU heterogeneous resource scheduling, and Volcano scheduling. + +CPU Scheduling +-------------- + +CCE provides CPU policies to allocate complete physical CPU cores to applications, improving application performance and reducing application scheduling latency. + ++------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+ +| Function | Description | Reference | ++============+=====================================================================================================================================================================================================================================================================================================================================================================================================================+=================================+ +| CPU policy | When many CPU-intensive pods are running on a node, workloads may be migrated to different CPU cores. Many workloads are not sensitive to this migration and thus work fine without any intervention. For CPU-sensitive applications, you can use the CPU policy provided by Kubernetes to allocate dedicated cores to applications, improving application performance and reducing application scheduling latency. | :ref:`CPU Policy ` | ++------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+ + +GPU Scheduling +-------------- + +CCE schedules heterogeneous GPU resources in clusters and allows GPUs to be used in containers. + ++--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------+ +| Function | Description | Reference | ++======================================+=================================================================================================================================================+===========================================================+ +| Default GPU scheduling in Kubernetes | This function allows you to specify the number of GPUs that a pod requests. The value can be less than 1 so that multiple pods can share a GPU. | :ref:`Default GPU Scheduling in Kubernetes ` | ++--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------+ + +Volcano Scheduling +------------------ + +Volcano is a Kubernetes-based batch processing platform that supports machine learning, deep learning, bioinformatics, genomics, and other big data applications. It provides general-purpose, high-performance computing capabilities, such as job scheduling, heterogeneous chip management, and job running management. + ++--------------------------+---------------------------------------------------------------------------------------+-----------------------------------------------+ +| Function | Description | Reference | ++==========================+=======================================================================================+===============================================+ +| NUMA affinity scheduling | Volcano targets to lift the limitation to make scheduler NUMA topology aware so that: | :ref:`NUMA Affinity Scheduling ` | +| | | | +| | - Pods are not scheduled to the nodes that NUMA topology does not match. | | +| | - Pods are scheduled to the best node for NUMA topology. | | ++--------------------------+---------------------------------------------------------------------------------------+-----------------------------------------------+ + +Cloud Native Hybrid Deployment +------------------------------ + +The cloud native hybrid deployment solution focuses on the Volcano and Kubernetes ecosystems to help users improve resource utilization and efficiency and reduce costs. + ++-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------+ +| Function | Description | Reference | ++===================================+==================================================================================================================================================================================================================================================================================================================================================================+========================================================+ +| Dynamic resource oversubscription | Based on the types of online and offline jobs, Volcano scheduling is used to utilize the resources that are requested but not used in the cluster (that is, the difference between the number of requested resources and the number of used resources), implementing resource oversubscription and hybrid deployment and improving cluster resource utilization. | :ref:`Dynamic Resource Oversubscription ` | ++-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------+ diff --git a/umn/source/workloads/volcano_scheduling/index.rst b/umn/source/scheduling/volcano_scheduling/index.rst similarity index 53% rename from umn/source/workloads/volcano_scheduling/index.rst rename to umn/source/scheduling/volcano_scheduling/index.rst index 71363a4..b8726dc 100644 --- a/umn/source/workloads/volcano_scheduling/index.rst +++ b/umn/source/scheduling/volcano_scheduling/index.rst @@ -5,10 +5,10 @@ Volcano Scheduling ================== -- :ref:`Hybrid Deployment of Online and Offline Jobs ` +- :ref:`NUMA Affinity Scheduling ` .. toctree:: :maxdepth: 1 :hidden: - hybrid_deployment_of_online_and_offline_jobs + numa_affinity_scheduling diff --git a/umn/source/scheduling/volcano_scheduling/numa_affinity_scheduling.rst b/umn/source/scheduling/volcano_scheduling/numa_affinity_scheduling.rst new file mode 100644 index 0000000..bc2fa9e --- /dev/null +++ b/umn/source/scheduling/volcano_scheduling/numa_affinity_scheduling.rst @@ -0,0 +1,327 @@ +:original_name: cce_10_0425.html + +.. _cce_10_0425: + +NUMA Affinity Scheduling +======================== + +Background +---------- + +When the node runs many CPU-bound pods, the workload can move to different CPU cores depending on whether the pod is throttled and which CPU cores are available at scheduling time. Many workloads are not sensitive to this migration and thus work fine without any intervention. However, in workloads where CPU cache affinity and scheduling latency significantly affect workload performance, the kubelet allows alternative CPU management policies to determine some placement preferences on the node. + +Both the CPU Manager and Topology Manager are kubelet components, but they have the following limitations: + +- The scheduler is not topology-aware. Therefore, the workload may be scheduled on a node and then fail on the node due to the Topology Manager. This is unacceptable for TensorFlow jobs. If any worker or ps failed on node, the job will fail. +- The managers are node-level that results in an inability to match the best node for NUMA topology in the whole cluster. + +For more information, see https://github.com/volcano-sh/volcano/blob/master/docs/design/numa-aware.md. + +Volcano targets to resolve the limitation to make scheduler NUMA topology aware so as to achieve the following: + +- Do not schedule pods to the nodes which NUMA topology does not match. +- Schedule pods to the best node for NUMA topology. + +Application Scope +----------------- + +- Support CPU resource topology scheduling +- Support pod-level topology policies + +.. _cce_10_0425__section2430103110429: + +Scheduling Prediction +--------------------- + +For pods with the topology policy, predicate the matched node list. + ++-----------------------------------+---------------------------------------------------------------------------------------------------+ +| policy | action | ++===================================+===================================================================================================+ +| none | 1. No filter action | ++-----------------------------------+---------------------------------------------------------------------------------------------------+ +| best-effort | 1. Filter out the node with the topology policy **best-effort**. | ++-----------------------------------+---------------------------------------------------------------------------------------------------+ +| restricted | 1. Filter out the node with the topology policy **restricted**. | +| | | +| | 2. Filter out the node that the CPU topology meets the CPU requirements for **restricted**. | ++-----------------------------------+---------------------------------------------------------------------------------------------------+ +| single-numa-node | 1. Filter out the node with the topology policy **single-numa-node**. | +| | | +| | 2. Filter out the node that the CPU topology meets the CPU requirements for **single-numa-node**. | ++-----------------------------------+---------------------------------------------------------------------------------------------------+ + + +.. figure:: /_static/images/en-us_image_0000001647417448.png + :alt: **Figure 1** Comparison of NUMA scheduling policies + + **Figure 1** Comparison of NUMA scheduling policies + +Scheduling Priority +------------------- + +Topology policy aims to schedule pods to the optimal node. In this example, each node is scored to sort out the optimal node. + +Principle: Schedule pods to the worker nodes that require the fewest NUMA nodes. + +The scoring formula is as follows: + +score = weight \* (100 - 100 \* numaNodeNum / maxNumaNodeNum) + +Parameter description: + +- **weight**: indicates the weight of NUMA Aware Plugin. +- **numaNodeNum**: indicates the number of NUMA nodes required for running the pod on the worker node. +- **maxNumaNodeNum**: indicates the maximum number of NUMA nodes in a pod of all worker nodes. + +Enabling Volcano to Support NUMA Affinity Scheduling +---------------------------------------------------- + +#. Enable the CPU management policy. For details, see :ref:`Enabling the CPU Management Policy `. + +#. Configure a CPU topology policy. + + a. Log in to the CCE console, click the cluster name, access the cluster details page, and choose **Nodes** in the navigation pane. On the page displayed, click the **Node Pools** tab. Choose **More** > **Manage** in the **Operation** column of the target node pool. + + b. Change the value of **topology-manager-policy** under **kubelet** to the required CPU topology policy. As shown in the following figure, the CPU topology policy is **best-effort**. + + The valid topology policies are **none**, **best-effort**, **restricted**, and **single-numa-node**. For details about these policies, see :ref:`Scheduling Prediction `. + + |image1| + +#. Enable the numa-aware add-on and the **resource_exporter** function. + + **volcano 1.7.1 or later** + + a. Log in to the CCE console and access the cluster console. In the navigation pane, choose **Add-ons**. On the right of the page, locate the **volcano** add-on and click **Edit**. In the **Parameters** area, configure Volcano scheduler parameters. + + .. code-block:: + + { + "ca_cert": "", + "default_scheduler_conf": { + "actions": "allocate, backfill", + "tiers": [ + { + "plugins": [ + { + "name": "priority" + }, + { + "name": "gang" + }, + { + "name": "conformance" + } + ] + }, + { + "plugins": [ + { + "name": "drf" + }, + { + "name": "predicates" + }, + { + "name": "nodeorder" + } + ] + }, + { + "plugins": [ + { + "name": "cce-gpu-topology-predicate" + }, + { + "name": "cce-gpu-topology-priority" + }, + { + "name": "cce-gpu" + }, + { + // add this also enable resource_exporter + "name": "numa-aware", + // the weight of the NUMA Aware Plugin + "arguments": { + "weight": "10" + } + } + ] + }, + { + "plugins": [ + { + "name": "nodelocalvolume" + }, + { + "name": "nodeemptydirvolume" + }, + { + "name": "nodeCSIscheduling" + }, + { + "name": "networkresource" + } + ] + } + ] + }, + "server_cert": "", + "server_key": "" + } + + **volcano earlier than 1.7.1** + + a. The **resource_exporter_enable** parameter is enabled for the volcano add-on to collect node NUMA information. + + .. code-block:: + + { + "plugins": { + "eas_service": { + "availability_zone_id": "", + "driver_id": "", + "enable": "false", + "endpoint": "", + "flavor_id": "", + "network_type": "", + "network_virtual_subnet_id": "", + "pool_id": "", + "project_id": "", + "secret_name": "eas-service-secret" + } + }, + "resource_exporter_enable": "true" + } + + After this function is enabled, you can view the NUMA topology information of the current node. + + .. code-block:: + + kubectl get numatopo + NAME AGE + node-1 4h8m + node-2 4h8m + node-3 4h8m + + b. Enable the volcano numa-aware algorithm add-on. + + **kubectl edit cm -n kube-system volcano-scheduler-configmap** + + .. code-block:: + + kind: ConfigMap + apiVersion: v1 + metadata: + name: volcano-scheduler-configmap + namespace: kube-system + data: + default-scheduler.conf: |- + actions: "allocate, backfill" + tiers: + - plugins: + - name: priority + - name: gang + - name: conformance + - plugins: + - name: overcommit + - name: drf + - name: predicates + - name: nodeorder + - plugins: + - name: cce-gpu-topology-predicate + - name: cce-gpu-topology-priority + - name: cce-gpu + - plugins: + - name: nodelocalvolume + - name: nodeemptydirvolume + - name: nodeCSIscheduling + - name: networkresource + arguments: + NetworkType: vpc-router + - name: numa-aware # add it to enable numa-aware plugin + arguments: + weight: 10 # the weight of the NUMA Aware Plugin + +Using Volcano to Support NUMA Affinity Scheduling +------------------------------------------------- + +#. Configure NUMA affinity for Deployments. The following is an example: + + .. code-block:: + + kind: Deployment + apiVersion: apps/v1 + metadata: + name: numa-tset + spec: + replicas: 1 + selector: + matchLabels: + app: numa-tset + template: + metadata: + labels: + app: numa-tset + annotations: + volcano.sh/numa-topology-policy: single-numa-node # set the topology policy + spec: + containers: + - name: container-1 + image: nginx:alpine + resources: + requests: + cpu: 2 # The value must be an integer and must be the same as that in limits. + memory: 2048Mi + limits: + cpu: 2 # The value must be an integer and must be the same as that in requests. + memory: 2048Mi + imagePullSecrets: + - name: default-secret + +#. Create a volcano job and use NUMA affinity. + + .. code-block:: + + apiVersion: batch.volcano.sh/v1alpha1 + kind: Job + metadata: + name: vj-test + spec: + schedulerName: volcano + minAvailable: 1 + tasks: + - replicas: 1 + name: "test" + topologyPolicy: best-effort # set the topology policy for task + template: + spec: + containers: + - image: alpine + command: ["/bin/sh", "-c", "sleep 1000"] + imagePullPolicy: IfNotPresent + name: running + resources: + limits: + cpu: 20 + memory: "100Mi" + restartPolicy: OnFailure + +#. Check the NUMA usage. + + .. code-block:: + + # Check the CPU usage of the current node. + lscpu + ... + CPU(s): 32 + NUMA node(s): 2 + NUMA node0 CPU(s): 0-15 + NUMA node1 CPU(s): 16-31 + + # Check the CPU allocation of the current node. + cat /var/lib/kubelet/cpu_manager_state + {"policyName":"static","defaultCpuSet":"0,10-15,25-31","entries":{"777870b5-c64f-42f5-9296-688b9dc212ba":{"container-1":"16-24"},"fb15e10a-b6a5-4aaa-8fcd-76c1aa64e6fd":{"container-1":"1-9"}},"checksum":318470969} + +.. |image1| image:: /_static/images/en-us_image_0000001695737101.png diff --git a/umn/source/storage/deployment_examples/creating_a_deployment_mounted_with_an_evs_volume.rst b/umn/source/storage/deployment_examples/creating_a_deployment_mounted_with_an_evs_volume.rst deleted file mode 100644 index 6f5232b..0000000 --- a/umn/source/storage/deployment_examples/creating_a_deployment_mounted_with_an_evs_volume.rst +++ /dev/null @@ -1,255 +0,0 @@ -:original_name: cce_10_0257.html - -.. _cce_10_0257: - -Creating a Deployment Mounted with an EVS Volume -================================================ - -Scenario --------- - -After an EVS volume is created or imported to CCE, you can mount it to a workload. - -.. important:: - - EVS disks cannot be attached across AZs. Before mounting a volume, you can run the **kubectl get pvc** command to query the available PVCs in the AZ where the current cluster is located. - -Prerequisites -------------- - -You have created a cluster and installed the CSI plug-in (:ref:`everest `) in the cluster. - -Notes and Constraints ---------------------- - -The following configuration example applies to clusters of Kubernetes 1.15 or later. - -Using EVS Volumes for Deployments ---------------------------------- - -#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. - -#. Run the following commands to configure the **evs-deployment-example.yaml** file, which is used to create a Deployment. - - **touch evs-deployment-example.yaml** - - **vi evs-deployment-example.yaml** - - Example of mounting an EVS volume to a Deployment (PVC-based, shared volume): - - .. code-block:: - - apiVersion: apps/v1 - kind: Deployment - metadata: - name: evs-deployment-example - namespace: default - spec: - replicas: 1 - selector: - matchLabels: - app: evs-deployment-example - template: - metadata: - labels: - app: evs-deployment-example - spec: - containers: - - image: nginx - name: container-0 - volumeMounts: - - mountPath: /tmp - name: pvc-evs-example - imagePullSecrets: - - name: default-secret - restartPolicy: Always - volumes: - - name: pvc-evs-example - persistentVolumeClaim: - claimName: pvc-evs-auto-example - - .. table:: **Table 1** Key parameters - - +--------------------------------------------------+-----------+------------------------------------------------------------------------------------------------+ - | Parent Parameter | Parameter | Description | - +==================================================+===========+================================================================================================+ - | spec.template.spec.containers.volumeMounts | name | Name of the volume mounted to the container. | - +--------------------------------------------------+-----------+------------------------------------------------------------------------------------------------+ - | spec.template.spec.containers.volumeMounts | mountPath | Mount path of the container. In this example, the volume is mounted to the **/tmp** directory. | - +--------------------------------------------------+-----------+------------------------------------------------------------------------------------------------+ - | spec.template.spec.volumes | name | Name of the volume. | - +--------------------------------------------------+-----------+------------------------------------------------------------------------------------------------+ - | spec.template.spec.volumes.persistentVolumeClaim | claimName | Name of an existing PVC. | - +--------------------------------------------------+-----------+------------------------------------------------------------------------------------------------+ - - .. note:: - - **spec.template.spec.containers.volumeMounts.name** and **spec.template.spec.volumes.name** must be consistent because they have a mapping relationship. - -#. Run the following command to create the workload: - - **kubectl create -f evs-deployment-example.yaml** - -Using EVS Volumes for StatefulSets ----------------------------------- - -#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. - -#. Run the following commands to configure the **evs-statefulset-example.yaml** file, which is used to create a Deployment. - - **touch** **evs-statefulset-example.yaml** - - **vi** **evs-statefulset-example.yaml** - - Mounting an EVS volume to a StatefulSet (PVC template-based, non-shared volume): - - **Example YAML:** - - .. code-block:: - - apiVersion: apps/v1 - kind: StatefulSet - metadata: - name: evs-statefulset-example - namespace: default - spec: - replicas: 1 - selector: - matchLabels: - app: evs-statefulset-example - template: - metadata: - labels: - app: evs-statefulset-example - spec: - containers: - - name: container-0 - image: 'nginx:latest' - volumeMounts: - - name: pvc-evs-auto-example - mountPath: /tmp - restartPolicy: Always - imagePullSecrets: - - name: default-secret - volumeClaimTemplates: - - metadata: - name: pvc-evs-auto-example - namespace: default - labels: - failure-domain.beta.kubernetes.io/region: eu-de - failure-domain.beta.kubernetes.io/zone: - annotations: - everest.io/disk-volume-type: SAS - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 10Gi - storageClassName: csi-disk - serviceName: evs-statefulset-example-headless - updateStrategy: - type: RollingUpdate - - .. table:: **Table 2** Key parameters - - +-------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | Parent Parameter | Parameter | Description | - +===========================================+=============+====================================================================================================================================+ - | metadata | name | Name of the created workload. | - +-------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | spec.template.spec.containers | image | Image of the workload. | - +-------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | spec.template.spec.containers.volumeMount | mountPath | Mount path of the container. In this example, the volume is mounted to the **/tmp** directory. | - +-------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | spec | serviceName | Service corresponding to the workload. For details about how to create a Service, see :ref:`Creating a StatefulSet `. | - +-------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - - .. note:: - - **spec.template.spec.containers.volumeMounts.name** and **spec.volumeClaimTemplates.metadata.name** must be consistent because they have a mapping relationship. - -#. Run the following command to create the workload: - - **kubectl create -f evs-statefulset-example.yaml** - -Verifying Persistent Storage of an EVS Volume ---------------------------------------------- - -#. Query the pod and EVS files of the deployed workload (for example, **evs-statefulset-example**). - - a. Run the following command to query the pod name of the workload: - - .. code-block:: - - kubectl get po | grep evs-statefulset-example - - Expected outputs: - - .. code-block:: - - evs-statefulset-example-0 1/1 Running 0 22h - - b. Run the following command to check whether an EVS volume is mounted to the **/tmp** directory: - - .. code-block:: - - kubectl exec evs-statefulset-example-0 -- df tmp - - Expected outputs: - - .. code-block:: - - /dev/sda 10255636 36888 10202364 1% /tmp - -#. Run the following command to create a file named **test** in the **/tmp** directory: - - .. code-block:: - - kubectl exec evs-statefulset-example-0 -- touch /tmp/test - -#. Run the following command to view the file in the **/tmp** directory: - - .. code-block:: - - kubectl exec evs-statefulset-example-0 -- ls -l /tmp - - Expected outputs: - - .. code-block:: - - -rw-r--r-- 1 root root 0 Jun 1 02:50 test - -#. Run the following command to delete the pod named **evs-statefulset-example-0**: - - .. code-block:: - - kubectl delete po evs-statefulset-example-0 - -#. Check whether the file still exists after the pod is rebuilt. - - a. Run the following command to query the name of the rebuilt pod: - - .. code-block:: - - kubectl get po - - Expected outputs: - - .. code-block:: - - evs-statefulset-example-0 1/1 Running 0 2m - - b. Run the following command to view the file in the **/tmp** directory: - - .. code-block:: - - kubectl exec evs-statefulset-example-0 -- ls -l /tmp - - Expected outputs: - - .. code-block:: - - -rw-r--r-- 1 root root 0 Jun 1 02:50 test - - c. The **test** file still exists after the pod is rebuilt, indicating that the data in the EVS volume can be persistently stored. diff --git a/umn/source/storage/deployment_examples/creating_a_deployment_mounted_with_an_obs_volume.rst b/umn/source/storage/deployment_examples/creating_a_deployment_mounted_with_an_obs_volume.rst deleted file mode 100644 index 1f474db..0000000 --- a/umn/source/storage/deployment_examples/creating_a_deployment_mounted_with_an_obs_volume.rst +++ /dev/null @@ -1,73 +0,0 @@ -:original_name: cce_10_0269.html - -.. _cce_10_0269: - -Creating a Deployment Mounted with an OBS Volume -================================================ - -Scenario --------- - -After an OBS volume is created or imported to CCE, you can mount the volume to a workload. - -Prerequisites -------------- - -You have created a cluster and installed the CSI plug-in (:ref:`everest `) in the cluster. - -Notes and Constraints ---------------------- - -The following configuration example applies to clusters of Kubernetes 1.15 or later. - -Procedure ---------- - -#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. - -#. Run the following commands to configure the **obs-deployment-example.yaml** file, which is used to create a pod. - - **touch obs-deployment-example.yaml** - - **vi obs-deployment-example.yaml** - - Example of mounting an OBS volume to a Deployment (PVC-based, shared volume): - - .. code-block:: - - apiVersion: apps/v1 - kind: Deployment - metadata: - name: obs-deployment-example # Workload name - namespace: default - spec: - replicas: 1 - selector: - matchLabels: - app: obs-deployment-example - template: - metadata: - labels: - app: obs-deployment-example - spec: - containers: - - image: nginx - name: container-0 - volumeMounts: - - mountPath: /tmp # Mount path - name: pvc-obs-example - restartPolicy: Always - imagePullSecrets: - - name: default-secret - volumes: - - name: pvc-obs-example - persistentVolumeClaim: - claimName: pvc-obs-auto-example # PVC name - - .. note:: - - **spec.template.spec.containers.volumeMounts.name** and **spec.template.spec.volumes.name** must be consistent because they have a mapping relationship. - -#. Run the following command to create the workload: - - **kubectl create -f obs-deployment-example.yaml** diff --git a/umn/source/storage/deployment_examples/creating_a_deployment_mounted_with_an_sfs_volume.rst b/umn/source/storage/deployment_examples/creating_a_deployment_mounted_with_an_sfs_volume.rst deleted file mode 100644 index cc680ed..0000000 --- a/umn/source/storage/deployment_examples/creating_a_deployment_mounted_with_an_sfs_volume.rst +++ /dev/null @@ -1,73 +0,0 @@ -:original_name: cce_10_0263.html - -.. _cce_10_0263: - -Creating a Deployment Mounted with an SFS Volume -================================================ - -Scenario --------- - -After an SFS volume is created or imported to CCE, you can mount the volume to a workload. - -Prerequisites -------------- - -You have created a cluster and installed the CSI plug-in (:ref:`everest `) in the cluster. - -Notes and Constraints ---------------------- - -The following configuration example applies to clusters of Kubernetes 1.15 or later. - -Procedure ---------- - -#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. - -#. Run the following commands to configure the **sfs-deployment-example.yaml** file, which is used to create a pod. - - **touch sfs-deployment-example.yaml** - - **vi sfs-deployment-example.yaml** - - Example of mounting an SFS volume to a Deployment (PVC-based, shared volume): - - .. code-block:: - - apiVersion: apps/v1 - kind: Deployment - metadata: - name: sfs-deployment-example # Workload name - namespace: default - spec: - replicas: 1 - selector: - matchLabels: - app: sfs-deployment-example - template: - metadata: - labels: - app: sfs-deployment-example - spec: - containers: - - image: nginx - name: container-0 - volumeMounts: - - mountPath: /tmp # Mount path - name: pvc-sfs-example - imagePullSecrets: - - name: default-secret - restartPolicy: Always - volumes: - - name: pvc-sfs-example - persistentVolumeClaim: - claimName: pvc-sfs-auto-example # PVC name - - .. note:: - - **spec.template.spec.containers.volumeMounts.name** and **spec.template.spec.volumes.name** must be consistent because they have a mapping relationship. - -#. Run the following command to create the workload: - - **kubectl create -f sfs-deployment-example.yaml** diff --git a/umn/source/storage/deployment_examples/creating_a_statefulset_mounted_with_an_obs_volume.rst b/umn/source/storage/deployment_examples/creating_a_statefulset_mounted_with_an_obs_volume.rst deleted file mode 100644 index e9c3747..0000000 --- a/umn/source/storage/deployment_examples/creating_a_statefulset_mounted_with_an_obs_volume.rst +++ /dev/null @@ -1,216 +0,0 @@ -:original_name: cce_10_0268.html - -.. _cce_10_0268: - -Creating a StatefulSet Mounted with an OBS Volume -================================================= - -Scenario --------- - -CCE allows you to use an existing OBS volume to create a StatefulSet through a PVC. - -Prerequisites -------------- - -You have created a cluster and installed the CSI plug-in (:ref:`everest `) in the cluster. - -Notes and Constraints ---------------------- - -The following configuration example applies to clusters of Kubernetes 1.15 or later. - -Procedure ---------- - -#. Create an OBS volume by referring to :ref:`PVCs ` and obtain the PVC name. - -#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. - -#. Create a YAML file for creating the workload. Assume that the file name is **obs-statefulset-example.yaml**. - - **touch obs-statefulset-example.yaml** - - **vi obs-statefulset-example.yaml** - - Configuration example: - - .. code-block:: - - apiVersion: apps/v1 - kind: StatefulSet - metadata: - name: obs-statefulset-example - namespace: default - spec: - replicas: 1 - selector: - matchLabels: - app: obs-statefulset-example - template: - metadata: - labels: - app: obs-statefulset-example - spec: - volumes: - - name: pvc-obs-example - persistentVolumeClaim: - claimName: pvc-obs-example - containers: - - name: container-0 - image: 'nginx:latest' - volumeMounts: - - name: pvc-obs-example - mountPath: /tmp - restartPolicy: Always - imagePullSecrets: - - name: default-secret - serviceName: obs-statefulset-example-headless # Name of the headless Service - - .. table:: **Table 1** Key parameters - - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +=============+====================================================================================================================================+ - | replicas | Number of pods. | - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | name | Name of the new workload. | - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | image | Image used by the workload. | - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | mountPath | Mount path of a container. | - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | serviceName | Service corresponding to the workload. For details about how to create a Service, see :ref:`Creating a StatefulSet `. | - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | claimName | Name of an existing PVC. | - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - - Example of mounting an OBS volume to a StatefulSet (PVC template-based, dedicated volume): - - **Example YAML:** - - .. code-block:: - - apiVersion: apps/v1 - kind: StatefulSet - metadata: - name: obs-statefulset-example - namespace: default - spec: - replicas: 1 - selector: - matchLabels: - app: obs-statefulset-example - template: - metadata: - labels: - app: obs-statefulset-example - spec: - containers: - - name: container-0 - image: 'nginx:latest' - volumeMounts: - - name: pvc-obs-auto-example - mountPath: /tmp - restartPolicy: Always - imagePullSecrets: - - name: default-secret - volumeClaimTemplates: - - metadata: - name: pvc-obs-auto-example - namespace: default - annotations: - everest.io/obs-volume-type: STANDARD - spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 1Gi - storageClassName: csi-obs - serviceName: obs-statefulset-example-headless - -#. Create a StatefulSet. - - **kubectl create -f obs-statefulset-example.yaml** - -Verifying Persistent Storage of an OBS Volume ---------------------------------------------- - -#. Query the pod and OBS volume of the deployed workload (for example, **obs-statefulset-example**). - - a. Run the following command to query the pod name of the workload: - - .. code-block:: - - kubectl get po | grep obs-statefulset-example - - Expected outputs: - - .. code-block:: - - obs-statefulset-example-0 1/1 Running 0 2m5s - - b. Run the following command to check whether an OBS volume is mounted to the **/tmp** directory: - - .. code-block:: - - kubectl exec obs-statefulset-example-0 -- mount|grep /tmp - - Expected outputs: - - .. code-block:: - - s3fs on /tmp type fuse.s3fs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other) - -#. Run the following command to create a file named **test** in the **/tmp** directory: - - .. code-block:: - - kubectl exec obs-statefulset-example-0 -- touch /tmp/test - -#. Run the following command to view the file in the **/tmp** directory: - - .. code-block:: - - kubectl exec obs-statefulset-example-0 -- ls -l /tmp - - Expected outputs: - - .. code-block:: - - -rw-r--r-- 1 root root 0 Jun 1 02:50 test - -#. Run the following command to delete the pod named **obs-statefulset-example-0**: - - .. code-block:: - - kubectl delete po obs-statefulset-example-0 - -#. Check whether the file still exists after the pod is rebuilt. - - a. Run the following command to query the name of the rebuilt pod: - - .. code-block:: - - kubectl get po - - Expected outputs: - - .. code-block:: - - obs-statefulset-example-0 1/1 Running 0 2m - - b. Run the following command to view the file in the **/tmp** directory: - - .. code-block:: - - kubectl exec obs-statefulset-example-0 -- ls -l /tmp - - Expected outputs: - - .. code-block:: - - -rw-r--r-- 1 root root 0 Jun 1 02:50 test - - c. The **test** file still exists after the pod is rebuilt, indicating that the data in the OBS volume can be persistently stored. diff --git a/umn/source/storage/deployment_examples/creating_a_statefulset_mounted_with_an_sfs_volume.rst b/umn/source/storage/deployment_examples/creating_a_statefulset_mounted_with_an_sfs_volume.rst deleted file mode 100644 index 0026419..0000000 --- a/umn/source/storage/deployment_examples/creating_a_statefulset_mounted_with_an_sfs_volume.rst +++ /dev/null @@ -1,141 +0,0 @@ -:original_name: cce_10_0262.html - -.. _cce_10_0262: - -Creating a StatefulSet Mounted with an SFS Volume -================================================= - -Scenario --------- - -CCE allows you to use an existing SGS volume to create a StatefulSet (by using a PVC). - -Prerequisites -------------- - -You have created a cluster and installed the CSI plug-in (:ref:`everest `) in the cluster. - -Notes and Constraints ---------------------- - -The following configuration example applies to clusters of Kubernetes 1.15 or later. - -Procedure ---------- - -#. Create an SFS volume by referring to :ref:`PVCs ` and record the volume name. - -#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. - -#. Create a YAML file for creating the workload. Assume that the file name is **sfs-statefulset-example**.\ **yaml**. - - **touch sfs-statefulset-example.yaml** - - **vi sfs-statefulset-example.yaml** - - Configuration example: - - .. code-block:: - - apiVersion: apps/v1 - kind: StatefulSet - metadata: - name: sfs-statefulset-example - namespace: default - spec: - replicas: 1 - selector: - matchLabels: - app: sfs-statefulset-example - template: - metadata: - labels: - app: sfs-statefulset-example - spec: - volumes: - - name: pvc-sfs-example - persistentVolumeClaim: - claimName: pvc-sfs-example - containers: - - name: container-0 - image: 'nginx:latest' - volumeMounts: - - name: pvc-sfs-example - mountPath: /tmp - restartPolicy: Always - imagePullSecrets: - - name: default-secret - serviceName: sfs-statefulset-example-headless - updateStrategy: - type: RollingUpdate - - .. table:: **Table 1** Key parameters - - +--------------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | Parent Parameter | Parameter | Description | - +==================================================+=============+====================================================================================================================================+ - | spec | replicas | Number of pods. | - +--------------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | metadata | name | Name of the new workload. | - +--------------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | spec.template.spec.containers | image | Image used by the workload. | - +--------------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | spec.template.spec.containers.volumeMounts | mountPath | Mount path of a container. | - +--------------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | spec | serviceName | Service corresponding to the workload. For details about how to create a Service, see :ref:`Creating a StatefulSet `. | - +--------------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | spec.template.spec.volumes.persistentVolumeClaim | claimName | Name of an existing PVC. | - +--------------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - - Example of mounting an SFS volume to a StatefulSet (PVC template-based, dedicated volume): - - **Example YAML file:** - - .. code-block:: - - apiVersion: apps/v1 - kind: StatefulSet - metadata: - name: sfs-statefulset-example - namespace: default - spec: - replicas: 1 - selector: - matchLabels: - app: sfs-statefulset-example - template: - metadata: - labels: - app: sfs-statefulset-example - spec: - containers: - - name: container-0 - image: 'nginx:latest' - volumeMounts: - - name: pvc-sfs-auto-example - mountPath: /tmp - restartPolicy: Always - imagePullSecrets: - - name: default-secret - volumeClaimTemplates: - - metadata: - name: pvc-sfs-auto-example - namespace: default - spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 10Gi - storageClassName: csi-nas - serviceName: sfs-statefulset-example-headless - updateStrategy: - type: RollingUpdate - - .. note:: - - **spec.template.spec.containers.volumeMounts.name** and **spec.template.spec.volumes.name** must be consistent because they have a mapping relationship. - -#. Create a StatefulSet. - - **kubectl create -f sfs-statefulset-example.yaml** diff --git a/umn/source/storage/deployment_examples/index.rst b/umn/source/storage/deployment_examples/index.rst deleted file mode 100644 index d63fdf4..0000000 --- a/umn/source/storage/deployment_examples/index.rst +++ /dev/null @@ -1,22 +0,0 @@ -:original_name: cce_10_0393.html - -.. _cce_10_0393: - -Deployment Examples -=================== - -- :ref:`Creating a Deployment Mounted with an EVS Volume ` -- :ref:`Creating a Deployment Mounted with an OBS Volume ` -- :ref:`Creating a StatefulSet Mounted with an OBS Volume ` -- :ref:`Creating a Deployment Mounted with an SFS Volume ` -- :ref:`Creating a StatefulSet Mounted with an SFS Volume ` - -.. toctree:: - :maxdepth: 1 - :hidden: - - creating_a_deployment_mounted_with_an_evs_volume - creating_a_deployment_mounted_with_an_obs_volume - creating_a_statefulset_mounted_with_an_obs_volume - creating_a_deployment_mounted_with_an_sfs_volume - creating_a_statefulset_mounted_with_an_sfs_volume diff --git a/umn/source/storage/elastic_volume_service_evs/dynamically_mounting_an_evs_disk_to_a_statefulset.rst b/umn/source/storage/elastic_volume_service_evs/dynamically_mounting_an_evs_disk_to_a_statefulset.rst new file mode 100644 index 0000000..8c0fbc4 --- /dev/null +++ b/umn/source/storage/elastic_volume_service_evs/dynamically_mounting_an_evs_disk_to_a_statefulset.rst @@ -0,0 +1,306 @@ +:original_name: cce_10_0616.html + +.. _cce_10_0616: + +Dynamically Mounting an EVS Disk to a StatefulSet +================================================= + +Application Scenarios +--------------------- + +Dynamic mounting is available only for creating a :ref:`StatefulSet `. It is implemented through a volume claim template (`volumeClaimTemplates `__ field) and depends on the storage class to dynamically provision PVs. In this mode, each pod in a multi-pod StatefulSet is associated with a unique PVC and PV. After a pod is rescheduled, the original data can still be mounted to it based on the PVC name. In the common mounting mode for a Deployment, if ReadWriteMany is supported, multiple pods of the Deployment will be mounted to the same underlying storage. + +Prerequisites +------------- + +- You have created a cluster and installed the CSI add-on (:ref:`everest `) in the cluster. +- If you want to create a cluster using commands, use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. + +(Console) Dynamically Mounting an EVS Disk +------------------------------------------ + +#. Log in to the CCE console and click the cluster name to access the cluster console. + +#. In the navigation pane on the left, click **Workloads**. In the right pane, click the **StatefulSets** tab. + +#. Click **Create Workload** in the upper right corner. On the displayed page, click **Data Storage** in the **Container Settings** area and click **Add Volume** to select **VolumeClaimTemplate (VTC)**. + +#. Click **Create PVC**. In the dialog box displayed, configure the PVC parameters. + + Click **Create**. + + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+=============================================================================================================================================================================================================+ + | PVC Type | In this example, select **EVS**. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PVC Name | Enter the name of the PVC. After a PVC is created, a suffix is automatically added based on the number of pods. The format is <*Custom PVC name*>-<*Serial number*>, for example, example-0. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Creation Method | You can select **Dynamically provision** to create a PVC, PV, and underlying storage on the console in cascading mode. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Storage Classes | The storage class for EVS disks is **csi-disk**. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | AZ | Select the AZ of the EVS disk. The AZ must be the same as that of the cluster node. | + | | | + | | .. note:: | + | | | + | | An EVS disk can only be mounted to a node in the same AZ. After an EVS disk is created, its AZ cannot be changed. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Disk Type | Select an EVS disk type. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Access Mode | EVS disks support only **ReadWriteOnce**, indicating that a storage volume can be mounted to one node in read/write mode. For details, see :ref:`Volume Access Modes `. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Capacity (GiB) | Capacity of the requested storage volume. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Encryption | You can select **Encryption** and an encryption key to encrypt underlying storage. Only EVS disks and SFS file systems support encryption. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +#. Enter the path to which the volume is mounted. + + .. table:: **Table 1** Mounting a storage volume + + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+============================================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | Mount Path | Enter a mount path, for example, **/tmp**. | + | | | + | | This parameter indicates the container path to which a data volume will be mounted. Do not mount the volume to a system directory such as **/** or **/var/run**. Otherwise, errors will occur in containers. Mount the volume to an empty directory. If the directory is not empty, ensure that there are no files that affect container startup. Otherwise, the files will be replaced, causing container startup failures or workload creation failures. | + | | | + | | .. important:: | + | | | + | | NOTICE: | + | | If a volume is mounted to a high-risk directory, use an account with minimum permissions to start the container. Otherwise, high-risk files on the host may be damaged. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Subpath | Enter a subpath, for example, **tmp**, indicating that data in the mount path of the container will be stored in the **tmp** folder of the volume. | + | | | + | | A subpath is used to mount a local volume so that the same data volume is used in a single pod. If this parameter is left blank, the root path is used by default. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Permission | - **Read-only**: You can only read the data in the mounted volumes. | + | | - **Read/Write**: You can modify the data volumes mounted to the path. Newly written data is not migrated if the container is migrated, which may cause data loss. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + In this example, the disk is mounted to the **/data** path of the container. The container data generated in this path is stored in the EVS disk. + +#. Dynamically mount and use storage volumes. For details about other parameters, see :ref:`Creating a StatefulSet `. After the configuration, click **Create Workload**. + + After the workload is created, the data in the container mount directory will be persistently stored. Verify the storage by referring to :ref:`Verifying Data Persistence `. + +(kubectl) Using an Existing EVS Disk +------------------------------------ + +#. Use kubectl to connect to the cluster. + +#. Create a file named **statefulset-evs.yaml**. In this example, the EVS volume is mounted to the **/data** path. + + .. code-block:: + + apiVersion: apps/v1 + kind: StatefulSet + metadata: + name: statefulset-evs + namespace: default + spec: + selector: + matchLabels: + app: statefulset-evs + template: + metadata: + labels: + app: statefulset-evs + spec: + containers: + - name: container-1 + image: nginx:latest + volumeMounts: + - name: pvc-disk # The value must be the same as that in the volumeClaimTemplates field. + mountPath: /data # Location where the storage volume is mounted. + imagePullSecrets: + - name: default-secret + serviceName: statefulset-evs # Headless Service name. + replicas: 2 + volumeClaimTemplates: + - apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + name: pvc-disk + namespace: default + annotations: + everest.io/disk-volume-type: SAS # EVS disk type. + everest.io/crypt-key-id: # (Optional) Encryption key ID. Mandatory for an encrypted disk. + labels: + failure-domain.beta.kubernetes.io/region: # Region of the node where the application is to be deployed. + failure-domain.beta.kubernetes.io/zone: # AZ of the node where the application is to be deployed. + spec: + accessModes: + - ReadWriteOnce # The value must be ReadWriteOnce for EVS disks. + resources: + requests: + storage: 10Gi # EVS disk capacity, ranging from 1 to 32768. + storageClassName: csi-disk # Storage class type for EVS disks. + --- + apiVersion: v1 + kind: Service + metadata: + name: statefulset-evs # Headless Service name. + namespace: default + labels: + app: statefulset-evs + spec: + selector: + app: statefulset-evs + clusterIP: None + ports: + - name: statefulset-evs + targetPort: 80 + nodePort: 0 + port: 80 + protocol: TCP + type: ClusterIP + + .. table:: **Table 2** Key parameters + + +------------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Mandatory | Description | + +==========================================+=======================+===========================================================================================================================================================================================================================================================================================================================+ + | failure-domain.beta.kubernetes.io/region | Yes | Region where the cluster is located. | + | | | | + | | | For details about the value of **region**, see `Regions and Endpoints `__. | + +------------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | failure-domain.beta.kubernetes.io/zone | Yes | AZ where the EVS volume is created. It must be the same as the AZ planned for the workload. | + | | | | + | | | For details about the value of **zone**, see `Regions and Endpoints `__. | + +------------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | everest.io/disk-volume-type | Yes | EVS disk type. All letters are in uppercase. | + | | | | + | | | - **SATA**: common I/O | + | | | - **SAS**: high I/O | + | | | - **SSD**: ultra-high I/O | + +------------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | everest.io/crypt-key-id | No | Mandatory when the EVS disk is encrypted. Enter the encryption key ID selected during EVS disk creation. | + | | | | + | | | To obtain the encryption key ID, log in to the **Cloud Server Console**. In the navigation pane, choose **Elastic Volume Service** > **Disks**. Click the name of the target EVS disk to go to its details page. On the **Summary** tab page, copy the value of **KMS Key ID** in the **Configuration Information** area. | + +------------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | storage | Yes | Requested PVC capacity, in Gi. The value ranges from **1** to **32768**. | + +------------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | storageClassName | Yes | The storage class name for EVS disks is **csi-disk**. | + +------------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +#. Run the following command to create a workload to which the EVS volume is mounted: + + .. code-block:: + + kubectl apply -f statefulset-evs.yaml + + After the workload is created, the data in the container mount directory will be persistently stored. Verify the storage by referring to :ref:`Verifying Data Persistence `. + +.. _cce_10_0616__section11593165910013: + +Verifying Data Persistence +-------------------------- + +#. View the deployed application and EVS volume files. + + a. Run the following command to view the created pod: + + .. code-block:: + + kubectl get pod | grep statefulset-evs + + Expected output: + + .. code-block:: + + statefulset-evs-0 1/1 Running 0 45s + statefulset-evs-1 1/1 Running 0 28s + + b. Run the following command to check whether the EVS volume has been mounted to the **/data** path: + + .. code-block:: + + kubectl exec statefulset-evs-0 -- df | grep data + + Expected output: + + .. code-block:: + + /dev/sdd 10255636 36888 10202364 0% /data + + c. Run the following command to view the files in the **/data** path: + + .. code-block:: + + kubectl exec statefulset-evs-0 -- ls /data + + Expected output: + + .. code-block:: + + lost+found + +#. Run the following command to create a file named **static** in the **/data** path: + + .. code-block:: + + kubectl exec statefulset-evs-0 -- touch /data/static + +#. Run the following command to view the files in the **/data** path: + + .. code-block:: + + kubectl exec statefulset-evs-0 -- ls /data + + Expected output: + + .. code-block:: + + lost+found + static + +#. Run the following command to delete the pod named **web-evs-auto-0**: + + .. code-block:: + + kubectl delete pod statefulset-evs-0 + + Expected output: + + .. code-block:: + + pod "statefulset-evs-0" deleted + +#. After the deletion, the StatefulSet controller automatically creates a replica with the same name. Run the following command to check whether the files in the **/data** path have been modified: + + .. code-block:: + + kubectl exec statefulset-evs-0 -- ls /data + + Expected output: + + .. code-block:: + + lost+found + static + + If the **static** file still exists, the data in the EVS volume can be stored persistently. + +Related Operations +------------------ + +You can also perform the operations listed in :ref:`Table 3 `. + +.. _cce_10_0616__cce_10_0615_table1619535674020: + +.. table:: **Table 3** Related operations + + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Operation | Description | Procedure | + +=======================================+====================================================================================================================================================+=============================================================================================================================================================================================+ + | Expanding the capacity of an EVS disk | Quickly expand the capacity of a mounted EVS disk on the CCE console. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** tab. Click **More** in the **Operation** column of the target PVC and select **Scale-out**. | + | | | #. Enter the capacity to be added and click **OK**. | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Viewing events | You can view event names, event types, number of occurrences, Kubernetes events, first occurrence time, and last occurrence time of the PVC or PV. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** or **PersistentVolumes (PVs)** tab. | + | | | #. Click **View Events** in the **Operation** column of the target PVC or PV to view events generated within one hour (event data is retained for one hour). | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Viewing a YAML file | You can view, copy, and download the YAML files of a PVC or PV. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** or **PersistentVolumes (PVs)** tab. | + | | | #. Click **View YAML** in the **Operation** column of the target PVC or PV to view or download the YAML. | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/storage/elastic_volume_service_evs/index.rst b/umn/source/storage/elastic_volume_service_evs/index.rst new file mode 100644 index 0000000..3e63476 --- /dev/null +++ b/umn/source/storage/elastic_volume_service_evs/index.rst @@ -0,0 +1,22 @@ +:original_name: cce_10_0044.html + +.. _cce_10_0044: + +Elastic Volume Service (EVS) +============================ + +- :ref:`Overview ` +- :ref:`Using an Existing EVS Disk Through a Static PV ` +- :ref:`Using an EVS Disk Through a Dynamic PV ` +- :ref:`Dynamically Mounting an EVS Disk to a StatefulSet ` +- :ref:`Snapshots and Backups ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + overview + using_an_existing_evs_disk_through_a_static_pv + using_an_evs_disk_through_a_dynamic_pv + dynamically_mounting_an_evs_disk_to_a_statefulset + snapshots_and_backups diff --git a/umn/source/storage/elastic_volume_service_evs/overview.rst b/umn/source/storage/elastic_volume_service_evs/overview.rst new file mode 100644 index 0000000..eb83c62 --- /dev/null +++ b/umn/source/storage/elastic_volume_service_evs/overview.rst @@ -0,0 +1,49 @@ +:original_name: cce_10_0613.html + +.. _cce_10_0613: + +Overview +======== + +To achieve persistent storage, CCE allows you to mount the storage volumes created from Elastic Volume Service (EVS) disks to a path of a container. When the container is migrated within an AZ, the mounted EVS volumes are also migrated. By using EVS volumes, you can mount the remote file directory of a storage system to a container so that data in the data volume is permanently preserved. Even if the container is deleted, the data in the data volume is still stored in the storage system. + +EVS Disk Performance Specifications +----------------------------------- + +EVS performance metrics include: + +- IOPS: number of read/write operations performed by an EVS disk per second +- Throughput: amount of data read from and written into an EVS disk per second +- Read/write I/O latency: minimum interval between two consecutive read/write operations on an EVS disk + +.. table:: **Table 1** EVS disk performance specifications + + +----------------------------------+--------------------------------------+------------------------------------+----------------------------------+ + | Parameter | Ultra-high I/O | High I/O | Common I/O | + +==================================+======================================+====================================+==================================+ + | Max. capacity (GiB) | - System disk: 1,024 | - System disk: 1,024 | - System disk: 1,024 | + | | - Data disk: 32,768 | - Data disk: 32,768 | - Data disk: 32,768 | + +----------------------------------+--------------------------------------+------------------------------------+----------------------------------+ + | Max. IOPS | 50,000 | 5,000 | 2,200 | + +----------------------------------+--------------------------------------+------------------------------------+----------------------------------+ + | Max. throughput (MiB/s) | 350 | 150 | 50 | + +----------------------------------+--------------------------------------+------------------------------------+----------------------------------+ + | Burst IOPS limit | 16,000 | 5,000 | 2,200 | + +----------------------------------+--------------------------------------+------------------------------------+----------------------------------+ + | Disk IOPS | Min. (50,000, 1,800 + 50 x Capacity) | Min. (5,000, 1,800 + 8 x Capacity) | Min. (2,200, 500 + 2 x Capacity) | + +----------------------------------+--------------------------------------+------------------------------------+----------------------------------+ + | Disk throughput (MiB/s) | Min. (350, 120 + 0.5 x Capacity) | Min. (150, 100 + 0.15 x Capacity) | 50 | + +----------------------------------+--------------------------------------+------------------------------------+----------------------------------+ + | Single-queue access latency (ms) | 1 | 1-3 | 5-10 | + +----------------------------------+--------------------------------------+------------------------------------+----------------------------------+ + | API name | SSD | SAS | SATA | + +----------------------------------+--------------------------------------+------------------------------------+----------------------------------+ + +Application Scenarios +--------------------- + +EVS disks can be mounted in the following modes based on application scenarios: + +- :ref:`Using an Existing EVS Disk Through a Static PV `: static creation mode, where you use an existing EVS disk to create a PV and then mount storage to the workload through a PVC. This mode applies to scenarios where the underlying storage is available. +- :ref:`Using an EVS Disk Through a Dynamic PV `: dynamic creation mode, where you do not need to create EVS volumes in advance. Instead, specify a StorageClass during PVC creation and an EVS disk and a PV will be automatically created. This mode applies to scenarios where no underlying storage is available. +- :ref:`Dynamically Mounting an EVS Disk to a StatefulSet `: Only StatefulSets support this mode. Each pod is associated with a unique PVC and PV. After a pod is rescheduled, the original data can still be mounted to it based on the PVC name. This mode applies to StatefulSets with multiple pods. diff --git a/umn/source/storage/snapshots_and_backups.rst b/umn/source/storage/elastic_volume_service_evs/snapshots_and_backups.rst similarity index 74% rename from umn/source/storage/snapshots_and_backups.rst rename to umn/source/storage/elastic_volume_service_evs/snapshots_and_backups.rst index e6b3937..259fd69 100644 --- a/umn/source/storage/snapshots_and_backups.rst +++ b/umn/source/storage/elastic_volume_service_evs/snapshots_and_backups.rst @@ -7,18 +7,19 @@ Snapshots and Backups CCE works with EVS to support snapshots. A snapshot is a complete copy or image of EVS disk data at a certain point of time, which can be used for data DR. -You can create snapshots to rapidly save the disk data at specified time points. In addition, you can use snapshots to create new disks so that the created disks will contain the snapshot data in the beginning. +You can create snapshots to rapidly save the disk data at a certain point of time. In addition, you can use snapshots to create disks so that the created disks will contain the snapshot data in the beginning. Precautions ----------- - The snapshot function is available **only for clusters of v1.15 or later** and requires the CSI-based everest add-on. - The subtype (common I/O, high I/O, or ultra-high I/O), disk mode (SCSI or VBD), data encryption, sharing status, and capacity of an EVS disk created from a snapshot must be the same as those of the disk associated with the snapshot. These attributes cannot be modified after being queried or set. -- Snapshots can be created only for available or in-use CSI disks. During the free trial, you can create up to 7 snapshots per disk. +- The disk must be available or in use. During the free trial, you can create up to 7 snapshots per disk. +- Snapshots can be created only for PVCs created using the storage class (whose name starts with csi) provided by the everest add-on. Snapshots cannot be created for PVCs created using the Flexvolume storage class whose name is ssd, sas, or sata. - Snapshot data of encrypted disks is stored encrypted, and that of non-encrypted disks is stored non-encrypted. -Application Scenario --------------------- +Application Scenarios +--------------------- The snapshot feature helps address your following needs: @@ -43,18 +44,18 @@ The snapshot feature helps address your following needs: Creating a Snapshot ------------------- -**Using the CCE Console** +**Using the CCE console** #. Log in to the CCE console. #. Click the cluster name and go to the cluster console. Choose **Storage** from the navigation pane, and click the **Snapshots and Backups** tab. #. Click **Create Snapshot** in the upper right corner. In the dialog box displayed, set related parameters. - **Snapshot Name**: Enter a snapshot name. - - **Storage**: Select a PVC. Only EVS PVCs can create a snapshot. + - **Storage**: Select an EVS PVC. #. Click **Create**. -**Creating from YAML** +**Using YAML** .. code-block:: @@ -64,26 +65,29 @@ Creating a Snapshot finalizers: - snapshot.storage.kubernetes.io/volumesnapshot-as-source-protection - snapshot.storage.kubernetes.io/volumesnapshot-bound-protection - name: cce-disksnap-test + name: cce-disksnap-test # Snapshot name namespace: default spec: source: - persistentVolumeClaimName: pvc-evs-test # PVC name. Only an EVS PVC can be created. + persistentVolumeClaimName: pvc-evs-test # PVC name. Only an EVS PVC can be selected. volumeSnapshotClassName: csi-disk-snapclass -Using a Snapshot to Creating a PVC ----------------------------------- +Using a Snapshot to Create a PVC +-------------------------------- The disk type, encryption setting, and disk mode of the created EVS PVC are consistent with those of the snapshot's source EVS disk. -**Using the CCE Console** +**Using the CCE console** #. Log in to the CCE console. #. Click the cluster name and go to the cluster console. Choose **Storage** from the navigation pane, and click the **Snapshots and Backups** tab. -#. Locate the snapshot for which you want to create a PVC, click **Create PVC**, and specify the PVC name in the displayed dialog box. +#. Locate the snapshot that you want to use for creating a PVC, click **Create PVC**, and configure PVC parameters in the displayed dialog box. + + - **PVC Name**: Enter a PVC name. + #. Click **Create**. -**Creating from YAML** +**Using YAML** .. code-block:: @@ -93,16 +97,16 @@ The disk type, encryption setting, and disk mode of the created EVS PVC are cons name: pvc-test namespace: default annotations: - everest.io/disk-volume-type: SSD # EVS disk type, which must be the same as that of the source EVS disk of the snapshot. + everest.io/disk-volume-type: SSD # EVS disk type, which must be the same as that of the snapshot's source EVS disk. labels: - failure-domain.beta.kubernetes.io/region: eu-de - failure-domain.beta.kubernetes.io/zone: + failure-domain.beta.kubernetes.io/region: # Replace the region with the one where the EVS disk is located. + failure-domain.beta.kubernetes.io/zone: # Replace the AZ with the one where the EVS disk is located. spec: accessModes: - ReadWriteOnce resources: requests: - storage: '10' + storage: 10Gi storageClassName: csi-disk dataSource: name: cce-disksnap-test # Snapshot name diff --git a/umn/source/storage/elastic_volume_service_evs/using_an_evs_disk_through_a_dynamic_pv.rst b/umn/source/storage/elastic_volume_service_evs/using_an_evs_disk_through_a_dynamic_pv.rst new file mode 100644 index 0000000..85f22e1 --- /dev/null +++ b/umn/source/storage/elastic_volume_service_evs/using_an_evs_disk_through_a_dynamic_pv.rst @@ -0,0 +1,346 @@ +:original_name: cce_10_0615.html + +.. _cce_10_0615: + +Using an EVS Disk Through a Dynamic PV +====================================== + +CCE allows you to specify a StorageClass to automatically create an EVS disk and the corresponding PV. This function is applicable when no underlying storage volume is available. + +Prerequisites +------------- + +- You have created a cluster and installed the CSI add-on (:ref:`everest `) in the cluster. +- If you want to create a cluster using commands, use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. + +Constraints +----------- + +- EVS disks cannot be attached across AZs and cannot be used by multiple workloads, multiple pods of the same workload, or multiple tasks. Data sharing of a shared disk is not supported between nodes in a CCE cluster. If an EVS disk is attacked to multiple nodes, I/O conflicts and data cache conflicts may occur. Therefore, create only one pod when creating a Deployment that uses EVS disks. + +- For clusters earlier than v1.19.10, if an HPA policy is used to scale out a workload with EVS disks attached, the existing pods cannot be read or written when a new pod is scheduled to another node. + + For clusters of v1.19.10 and later, if an HPA policy is used to scale out a workload with EVS disks attached, a new pod cannot be started because EVS disks cannot be attached. + +(Console) Automatically Creating an EVS Disk +-------------------------------------------- + +#. Log in to the CCE console and click the cluster name to access the cluster console. +#. Dynamically create a PVC and PV. + + a. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** tab. Click **Create PVC** in the upper right corner. In the dialog box displayed, configure the PVC parameters. + + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+===========================================================================================================================================================================================================================================================+ + | PVC Type | In this example, select **EVS**. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PVC Name | Enter the PVC name, which must be unique in the same namespace. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Creation Method | - If no underlying storage is available, select **Dynamically provision** to create a PVC, PV, and underlying storage on the console in cascading mode. | + | | - If underlying storage is available, create a storage volume or use an existing storage volume to statically create a PVC based on whether a PV has been created. For details, see :ref:`Using an Existing EVS Disk Through a Static PV `. | + | | | + | | In this example, select **Dynamically provision**. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Storage Classes | The storage class for EVS disks is **csi-disk**. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | AZ | Select the AZ of the EVS disk. The AZ must be the same as that of the cluster node. | + | | | + | | .. note:: | + | | | + | | An EVS disk can only be mounted to a node in the same AZ. After an EVS disk is created, its AZ cannot be changed. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Disk Type | Select an EVS disk type. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Access Mode | EVS disks support only **ReadWriteOnce**, indicating that a storage volume can be mounted to one node in read/write mode. For details, see :ref:`Volume Access Modes `. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Capacity (GiB) | Capacity of the requested storage volume. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Encryption | You can select **Encryption** and an encryption key to encrypt underlying storage. Before using the encryption function, check whether the region where the EVS disk is located supports disk encryption. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + b. Click **Create**. + + You can choose **Storage** in the navigation pane and view the created PVC and PV on the **PersistentVolumeClaims (PVCs)** and **PersistentVolumes (PVs)** tab pages. + +#. Create an application. + + a. In the navigation pane on the left, click **Workloads**. In the right pane, click the **StatefulSets** tab. + + b. Click **Create Workload** in the upper right corner. On the displayed page, click **Data Storage** in the **Container Settings** area and click **Add Volume** to select **PVC**. + + Mount and use storage volumes, as shown in :ref:`Table 1 `. For details about other parameters, see :ref:`Workloads `. + + .. _cce_10_0615__cce_10_0614_table2529244345: + + .. table:: **Table 1** Mounting a storage volume + + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+===========================================================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | PVC | Select an existing EVS volume. | + | | | + | | An EVS volume cannot be repeatedly mounted to multiple workloads. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Mount Path | Enter a mount path, for example, **/tmp**. | + | | | + | | This parameter indicates the container path to which a data volume will be mounted. Do not mount the volume to a system directory such as **/** or **/var/run**; this action may cause container errors. You are advised to mount the volume to an empty directory. If the directory is not empty, ensure that there are no files that affect container startup. Otherwise, the files will be replaced, causing container startup failures or workload creation failures. | + | | | + | | .. important:: | + | | | + | | NOTICE: | + | | When the container is mounted to a high-risk directory, you are advised to use an account with minimum permissions to start the container; otherwise, high-risk files on the host machine may be damaged. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Subpath | Enter a subpath, for example, **tmp**, indicating that data in the mount path of the container will be stored in the **tmp** folder of the volume. | + | | | + | | A subpath is used to mount a local volume so that the same data volume is used in a single pod. If this parameter is left blank, the root path is used by default. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Permission | - **Read-only**: You can only read the data in the mounted volumes. | + | | - **Read/Write**: You can modify the data volumes mounted to the path. Newly written data is not migrated if the container is migrated, which may cause data loss. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + In this example, the disk is mounted to the **/data** path of the container. The container data generated in this path is stored in the EVS disk. + + .. note:: + + A non-shared EVS disk cannot be attached to multiple pods in a workload. Otherwise, the pods cannot start properly. Ensure that the number of workload pods is 1 when you attach an EVS disk. + + c. After the configuration, click **Create Workload**. + + After the workload is created, the data in the container mount directory will be persistently stored. Verify the storage by referring to :ref:`Verifying Data Persistence `. + +(kubectl) Automatically Creating an EVS Disk +-------------------------------------------- + +#. Use kubectl to connect to the cluster. +#. Use **StorageClass** to dynamically create a PVC and PV. + + a. Create the **pvc-evs-auto.yaml** file. + + .. code-block:: + + apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + name: pvc-evs-auto + namespace: default + annotations: + everest.io/disk-volume-type: SAS # EVS disk type. + everest.io/crypt-key-id: # (Optional) Encryption key ID. Mandatory for an encrypted disk. + labels: + failure-domain.beta.kubernetes.io/region: # Region of the node where the application is to be deployed. + failure-domain.beta.kubernetes.io/zone: # AZ of the node where the application is to be deployed. + spec: + accessModes: + - ReadWriteOnce # The value must be ReadWriteOnce for EVS disks. + resources: + requests: + storage: 10Gi # EVS disk capacity, ranging from 1 to 32768. + storageClassName: csi-disk # Storage class type for EVS disks. + + .. table:: **Table 2** Key parameters + + +------------------------------------------+-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Mandatory | Description | + +==========================================+=======================+==============================================================================================================================================================================================+ + | failure-domain.beta.kubernetes.io/region | Yes | Region where the cluster is located. | + | | | | + | | | For details about the value of **region**, see `Regions and Endpoints `__. | + +------------------------------------------+-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | failure-domain.beta.kubernetes.io/zone | Yes | AZ where the EVS volume is created. It must be the same as the AZ planned for the workload. | + | | | | + | | | For details about the value of **zone**, see `Regions and Endpoints `__. | + +------------------------------------------+-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | everest.io/disk-volume-type | Yes | EVS disk type. All letters are in uppercase. | + | | | | + | | | - **SATA**: common I/O | + | | | - **SAS**: high I/O | + | | | - **SSD**: ultra-high I/O | + +------------------------------------------+-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | everest.io/crypt-key-id | No | This parameter is mandatory when an EVS disk is encrypted. Enter the encryption key ID selected during EVS disk creation. You can use a custom key or the default key named **evs/default**. | + | | | | + | | | To obtain a key ID, log in to the DEW console, locate the key to be encrypted, and copy the key ID. | + +------------------------------------------+-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | storage | Yes | Requested PVC capacity, in Gi. The value ranges from **1** to **32768**. | + +------------------------------------------+-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | storageClassName | Yes | The storage class name of the EVS volumes is **csi-disk**. | + +------------------------------------------+-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + b. Run the following command to create a PVC: + + .. code-block:: + + kubectl apply -f pvc-evs-auto.yaml + +#. Create an application. + + a. Create a file named **web-evs-auto.yaml**. In this example, the EVS volume is mounted to the **/data** path. + + .. code-block:: + + apiVersion: apps/v1 + kind: StatefulSet + metadata: + name: web-evs-auto + namespace: default + spec: + replicas: 1 + selector: + matchLabels: + app: web-evs-auto + serviceName: web-evs-auto # Headless Service name. + template: + metadata: + labels: + app: web-evs-auto + spec: + containers: + - name: container-1 + image: nginx:latest + volumeMounts: + - name: pvc-disk # Volume name, which must be the same as the volume name in the volumes field. + mountPath: /data # Location where the storage volume is mounted. + imagePullSecrets: + - name: default-secret + volumes: + - name: pvc-disk # Volume name, which can be customized. + persistentVolumeClaim: + claimName: pvc-evs-auto # Name of the created PVC. + --- + apiVersion: v1 + kind: Service + metadata: + name: web-evs-auto # Headless Service name. + namespace: default + labels: + app: web-evs-auto + spec: + selector: + app: web-evs-auto + clusterIP: None + ports: + - name: web-evs-auto + targetPort: 80 + nodePort: 0 + port: 80 + protocol: TCP + type: ClusterIP + + b. Run the following command to create a workload to which the EVS volume is mounted: + + .. code-block:: + + kubectl apply -f web-evs-auto.yaml + + After the workload is created, the data in the container mount directory will be persistently stored. Verify the storage by referring to :ref:`Verifying Data Persistence `. + +.. _cce_10_0615__section11593165910013: + +Verifying Data Persistence +-------------------------- + +#. View the deployed application and EVS volume files. + + a. Run the following command to view the created pod: + + .. code-block:: + + kubectl get pod | grep web-evs-auto + + Expected output: + + .. code-block:: + + web-evs-auto-0 1/1 Running 0 38s + + b. Run the following command to check whether the EVS volume has been mounted to the **/data** path: + + .. code-block:: + + kubectl exec web-evs-auto-0 -- df | grep data + + Expected output: + + .. code-block:: + + /dev/sdc 10255636 36888 10202364 0% /data + + c. Run the following command to view the files in the **/data** path: + + .. code-block:: + + kubectl exec web-evs-auto-0 -- ls /data + + Expected output: + + .. code-block:: + + lost+found + +#. Run the following command to create a file named **static** in the **/data** path: + + .. code-block:: + + kubectl exec web-evs-auto-0 -- touch /data/static + +#. Run the following command to view the files in the **/data** path: + + .. code-block:: + + kubectl exec web-evs-auto-0 -- ls /data + + Expected output: + + .. code-block:: + + lost+found + static + +#. Run the following command to delete the pod named **web-evs-auto-0**: + + .. code-block:: + + kubectl delete pod web-evs-auto-0 + + Expected output: + + .. code-block:: + + pod "web-evs-auto-0" deleted + +#. After the deletion, the StatefulSet controller automatically creates a replica with the same name. Run the following command to check whether the files in the **/data** path have been modified: + + .. code-block:: + + kubectl exec web-evs-auto-0 -- ls /data + + Expected output: + + .. code-block:: + + lost+found + static + + If the **static** file still exists, the data in the EVS volume can be stored persistently. + +Related Operations +------------------ + +You can also perform the operations listed in :ref:`Table 3 `. + +.. _cce_10_0615__table1619535674020: + +.. table:: **Table 3** Related operations + + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Operation | Description | Procedure | + +=======================================+====================================================================================================================================================+=============================================================================================================================================================================================+ + | Expanding the capacity of an EVS disk | Quickly expand the capacity of a mounted EVS disk on the CCE console. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** tab. Click **More** in the **Operation** column of the target PVC and select **Scale-out**. | + | | | #. Enter the capacity to be added and click **OK**. | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Viewing events | You can view event names, event types, number of occurrences, Kubernetes events, first occurrence time, and last occurrence time of the PVC or PV. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** or **PersistentVolumes (PVs)** tab. | + | | | #. Click **View Events** in the **Operation** column of the target PVC or PV to view events generated within one hour (event data is retained for one hour). | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Viewing a YAML file | You can view, copy, and download the YAML files of a PVC or PV. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** or **PersistentVolumes (PVs)** tab. | + | | | #. Click **View YAML** in the **Operation** column of the target PVC or PV to view or download the YAML. | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/storage/elastic_volume_service_evs/using_an_existing_evs_disk_through_a_static_pv.rst b/umn/source/storage/elastic_volume_service_evs/using_an_existing_evs_disk_through_a_static_pv.rst new file mode 100644 index 0000000..896450c --- /dev/null +++ b/umn/source/storage/elastic_volume_service_evs/using_an_existing_evs_disk_through_a_static_pv.rst @@ -0,0 +1,454 @@ +:original_name: cce_10_0614.html + +.. _cce_10_0614: + +Using an Existing EVS Disk Through a Static PV +============================================== + +CCE allows you to create a PV using an existing EVS disk. After the PV is created, you can create a PVC and bind it to the PV. This mode applies to scenarios where the underlying storage is available. + +Prerequisites +------------- + +- You have created a cluster and installed the CSI add-on (:ref:`everest `) in the cluster. +- You have created an EVS disk that meets the following requirements: + + - The existing EVS disk cannot be a system disk, DSS disk, or shared disk. + - The device type of the EVS disk must be **SCSI** (the default device type is **VBD** when you purchase an EVS disk). + - The EVS disk must be available and not used by other resources. + - The AZ of the EVS disk must be the same as that of the cluster node. Otherwise, the EVS disk cannot be mounted and the pod cannot start. + - If the EVS disk is encrypted, the key must be available. + - EVS disks that have partitions or use non-ext4 file systems are not supported. + +- If you want to create a cluster using commands, use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. + +Constraints +----------- + +- EVS disks cannot be attached across AZs and cannot be used by multiple workloads, multiple pods of the same workload, or multiple tasks. Data sharing of a shared disk is not supported between nodes in a CCE cluster. If an EVS disk is attacked to multiple nodes, I/O conflicts and data cache conflicts may occur. Therefore, create only one pod when creating a Deployment that uses EVS disks. + +- For clusters earlier than v1.19.10, if an HPA policy is used to scale out a workload with EVS disks attached, the existing pods cannot be read or written when a new pod is scheduled to another node. + + For clusters of v1.19.10 and later, if an HPA policy is used to scale out a workload with EVS disks attached, a new pod cannot be started because EVS disks cannot be attached. + +Using an Existing EVS Disk on the Console +----------------------------------------- + +#. Log in to the CCE console and click the cluster name to access the cluster console. +#. Statically create a PVC and PV. + + a. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** tab. Click **Create PVC** in the upper right corner. In the dialog box displayed, configure the PVC parameters. + + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+=============================================================================================================================================================================================================+ + | PVC Type | In this example, select **EVS**. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PVC Name | Enter the PVC name, which must be unique in the same namespace. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Creation Method | - If underlying storage is available, create a storage volume or use an existing storage volume to statically create a PVC based on whether a PV has been created. | + | | - If no underlying storage is available, select **Dynamically provision**. For details, see :ref:`Using an EVS Disk Through a Dynamic PV `. | + | | | + | | In this example, select **Create new** to create a PV and PVC at the same time on the console. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PV\ :sup:`a` | Select an existing PV in the cluster. Create a PV in advance. For details, see "Creating a storage volume" in :ref:`Related Operations `. | + | | | + | | In this example, you do not need to set this parameter. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | EVS\ :sup:`b` | Click **Select EVS**. On the displayed page, select the EVS disk that meets your requirements and click **OK**. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PV Name\ :sup:`b` | Enter the PV name, which must be unique in the same cluster. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Access Mode\ :sup:`b` | EVS disks support only **ReadWriteOnce**, indicating that a storage volume can be mounted to one node in read/write mode. For details, see :ref:`Volume Access Modes `. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Reclaim Policy\ :sup:`b` | You can select **Delete** or **Retain** to specify the reclaim policy of the underlying storage when the PVC is deleted. For details, see :ref:`PV Reclaim Policy `. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: + + a: The parameter is available when **Creation Method** is set to **Use existing**. + + b: The parameter is available when **Creation Method** is set to **Create new**. + + b. Click **Create** to create a PVC and a PV. + + You can choose **Storage** in the navigation pane and view the created PVC and PV on the **PersistentVolumeClaims (PVCs)** and **PersistentVolumes (PVs)** tab pages. + +#. Create an application. + + a. In the navigation pane on the left, click **Workloads**. In the right pane, click the **StatefulSets** tab. + + b. Click **Create Workload** in the upper right corner. On the displayed page, click **Data Storage** in the **Container Settings** area and click **Add Volume** to select **PVC**. + + Mount and use storage volumes, as shown in :ref:`Table 1 `. For details about other parameters, see :ref:`Workloads `. + + .. _cce_10_0614__table2529244345: + + .. table:: **Table 1** Mounting a storage volume + + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+===========================================================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | PVC | Select an existing EVS volume. | + | | | + | | An EVS volume cannot be repeatedly mounted to multiple workloads. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Mount Path | Enter a mount path, for example, **/tmp**. | + | | | + | | This parameter indicates the container path to which a data volume will be mounted. Do not mount the volume to a system directory such as **/** or **/var/run**; this action may cause container errors. You are advised to mount the volume to an empty directory. If the directory is not empty, ensure that there are no files that affect container startup. Otherwise, the files will be replaced, causing container startup failures or workload creation failures. | + | | | + | | .. important:: | + | | | + | | NOTICE: | + | | When the container is mounted to a high-risk directory, you are advised to use an account with minimum permissions to start the container; otherwise, high-risk files on the host machine may be damaged. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Subpath | Enter a subpath, for example, **tmp**, indicating that data in the mount path of the container will be stored in the **tmp** folder of the volume. | + | | | + | | A subpath is used to mount a local volume so that the same data volume is used in a single pod. If this parameter is left blank, the root path is used by default. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Permission | - **Read-only**: You can only read the data in the mounted volumes. | + | | - **Read/Write**: You can modify the data volumes mounted to the path. Newly written data is not migrated if the container is migrated, which may cause data loss. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + In this example, the disk is mounted to the **/data** path of the container. The container data generated in this path is stored in the EVS disk. + + .. note:: + + A non-shared EVS disk cannot be attached to multiple pods in a workload. Otherwise, the pods cannot start properly. Ensure that the number of workload pods is 1 when you attach an EVS disk. + + c. After the configuration, click **Create Workload**. + + After the workload is created, the data in the container mount directory will be persistently stored. Verify the storage by referring to :ref:`Verifying Data Persistence `. + +(kubectl) Using an Existing EVS Disk +------------------------------------ + +#. Use kubectl to connect to the cluster. +#. Create a PV. If a PV has been created in your cluster, skip this step. + + a. .. _cce_10_0614__li162841212145314: + + Create the **pv-evs.yaml** file. + + .. code-block:: + + apiVersion: v1 + kind: PersistentVolume + metadata: + annotations: + pv.kubernetes.io/provisioned-by: everest-csi-provisioner + everest.io/reclaim-policy: retain-volume-only # (Optional) The PV is deleted while the underlying volume is retained. + name: pv-evs # PV name. + labels: + failure-domain.beta.kubernetes.io/region: # Region of the node where the application is to be deployed. + failure-domain.beta.kubernetes.io/zone: # AZ of the node where the application is to be deployed. + spec: + accessModes: + - ReadWriteOnce # Access mode. The value is fixed to ReadWriteOnce for EVS disks. + capacity: + storage: 10Gi # EVS disk capacity, in the unit of Gi. The value ranges from 1 to 32768. + csi: + driver: disk.csi.everest.io # Dependent storage driver for the mounting. + fsType: ext4 + volumeHandle: # Volume ID of the EVS disk. + volumeAttributes: + everest.io/disk-mode: SCSI # Device type of the EVS disk. Only SCSI is supported. + everest.io/disk-volume-type: SAS # EVS disk type. + storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner + everest.io/crypt-key-id: # (Optional) Encryption key ID. Mandatory for an encrypted disk. + persistentVolumeReclaimPolicy: Delete # Reclaim policy. + storageClassName: csi-disk # Storage class name. The value must be csi-disk for EVS disks. + + .. table:: **Table 2** Key parameters + + +-----------------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Mandatory | Description | + +===============================================+=======================+===========================================================================================================================================================================================================================================================================================================================+ + | everest.io/reclaim-policy: retain-volume-only | No | Optional. | + | | | | + | | | Currently, only **retain-volume-only** is supported. | + | | | | + | | | This field is valid only when the everest version is 1.2.9 or later and the reclaim policy is **Delete**. If the reclaim policy is **Delete** and the current value is **retain-volume-only**, the associated PV is deleted while the underlying storage volume is retained, when a PVC is deleted. | + +-----------------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | failure-domain.beta.kubernetes.io/region | Yes | Region where the cluster is located. | + | | | | + | | | For details about the value of **region**, see `Regions and Endpoints `__. | + +-----------------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | failure-domain.beta.kubernetes.io/zone | Yes | AZ where the EVS volume is created. It must be the same as the AZ planned for the workload. | + | | | | + | | | For details about the value of **zone**, see `Regions and Endpoints `__. | + +-----------------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | volumeHandle | Yes | Volume ID of the EVS disk. | + | | | | + | | | To obtain the volume ID, log in to the **Cloud Server Console**. In the navigation pane, choose **Elastic Volume Service** > **Disks**. Click the name of the target EVS disk to go to its details page. On the **Summary** tab page, click the copy button after **ID**. | + +-----------------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | everest.io/disk-volume-type | Yes | EVS disk type. All letters are in uppercase. | + | | | | + | | | - **SATA**: common I/O | + | | | - **SAS**: high I/O | + | | | - **SSD**: ultra-high I/O | + +-----------------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | everest.io/crypt-key-id | No | Mandatory when the EVS disk is encrypted. Enter the encryption key ID selected during EVS disk creation. | + | | | | + | | | To obtain the encryption key ID, log in to the **Cloud Server Console**. In the navigation pane, choose **Elastic Volume Service** > **Disks**. Click the name of the target EVS disk to go to its details page. On the **Summary** tab page, copy the value of **KMS Key ID** in the **Configuration Information** area. | + +-----------------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | persistentVolumeReclaimPolicy | Yes | A reclaim policy is supported when the cluster version is or later than 1.19.10 and the everest version is or later than 1.2.9. | + | | | | + | | | The **Delete** and **Retain** reclaim policies are supported. For details, see :ref:`PV Reclaim Policy `. If high data security is required, you are advised to select **Retain** to prevent data from being deleted by mistake. | + | | | | + | | | **Delete**: | + | | | | + | | | - If **everest.io/reclaim-policy** is not specified, both the PV and EVS volare deleted when a PVC is deleted. | + | | | - If **everest.io/reclaim-policy** is set to **retain-volume-only**, when a PVC is deleted, the PV is deleted but the EVS resources are retained. | + | | | | + | | | **Retain**: When a PVC is deleted, the PV and underlying storage resources are not deleted. Instead, you must manually delete these resources. After that, the PV is in the **Released** status and cannot be bound to the PVC again. | + +-----------------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | storageClassName | Yes | The storage class name for EVS disks is **csi-disk**. | + +-----------------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + b. Run the following command to create a PV: + + .. code-block:: + + kubectl apply -f pv-evs.yaml + +#. Create a PVC. + + a. Create the **pvc-evs.yaml** file. + + .. code-block:: + + apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + name: pvc-evs + namespace: default + annotations: + everest.io/disk-volume-type: SAS # EVS disk type. + everest.io/crypt-key-id: # (Optional) Encryption key ID. Mandatory for an encrypted disk. + labels: + failure-domain.beta.kubernetes.io/region: # Region of the node where the application is to be deployed. + failure-domain.beta.kubernetes.io/zone: # AZ of the node where the application is to be deployed. + spec: + accessModes: + - ReadWriteOnce # The value must be ReadWriteOnce for EVS disks. + resources: + requests: + storage: 10Gi # EVS disk capacity, ranging from 1 to 32768. The value must be the same as the storage size of the existing PV. + storageClassName: csi-disk # Storage class type for EVS disks. + volumeName: pv-evs # PV name. + + .. table:: **Table 3** Key parameters + + +------------------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Mandatory | Description | + +==========================================+=======================+======================================================================================================================================+ + | failure-domain.beta.kubernetes.io/region | Yes | Region where the cluster is located. | + | | | | + | | | For details about the value of **region**, see `Regions and Endpoints `__. | + +------------------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------+ + | failure-domain.beta.kubernetes.io/zone | Yes | AZ where the EVS volume is created. It must be the same as the AZ planned for the workload. | + | | | | + | | | For details about the value of **zone**, see `Regions and Endpoints `__. | + +------------------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------+ + | storage | Yes | Requested capacity in the PVC, in Gi. | + | | | | + | | | The value must be the same as the storage size of the existing PV. | + +------------------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------+ + | volumeName | Yes | PV name, which must be the same as the PV name in :ref:`1 `. | + +------------------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------+ + | storageClassName | Yes | Storage class name, which must be the same as the storage class of the PV in :ref:`1 `. | + | | | | + | | | The storage class name of the EVS volumes is **csi-disk**. | + +------------------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------+ + + b. Run the following command to create a PVC: + + .. code-block:: + + kubectl apply -f pvc-evs.yaml + +#. Create an application. + + a. Create a file named **web-evs.yaml**. In this example, the EVS volume is mounted to the **/data** path. + + .. code-block:: + + apiVersion: apps/v1 + kind: StatefulSet + metadata: + name: web-evs + namespace: default + spec: + replicas: 1 # The number of workload replicas that use the EVS volume must be 1. + selector: + matchLabels: + app: web-evs + serviceName: web-evs # Headless Service name. + template: + metadata: + labels: + app: web-evs + spec: + containers: + - name: container-1 + image: nginx:latest + volumeMounts: + - name: pvc-disk # Volume name, which must be the same as the volume name in the volumes field. + mountPath: /data # Location where the storage volume is mounted. + imagePullSecrets: + - name: default-secret + volumes: + - name: pvc-disk # Volume name, which can be customized. + persistentVolumeClaim: + claimName: pvc-evs # Name of the created PVC. + --- + apiVersion: v1 + kind: Service + metadata: + name: web-evs # Headless Service name. + namespace: default + labels: + app: web-evs + spec: + selector: + app: web-evs + clusterIP: None + ports: + - name: web-evs + targetPort: 80 + nodePort: 0 + port: 80 + protocol: TCP + type: ClusterIP + + b. Run the following command to create a workload to which the EVS volume is mounted: + + .. code-block:: + + kubectl apply -f web-evs.yaml + + After the workload is created, the data in the container mount directory will be persistently stored. Verify the storage by referring to :ref:`Verifying Data Persistence `. + +.. _cce_10_0614__section11593165910013: + +Verifying Data Persistence +-------------------------- + +#. View the deployed application and EVS volume files. + + a. Run the following command to view the created pod: + + .. code-block:: + + kubectl get pod | grep web-evs + + Expected output: + + .. code-block:: + + web-evs-0 1/1 Running 0 38s + + b. Run the following command to check whether the EVS volume has been mounted to the **/data** path: + + .. code-block:: + + kubectl exec web-evs-0 -- df | grep data + + Expected output: + + .. code-block:: + + /dev/sdc 10255636 36888 10202364 0% /data + + c. Run the following command to view the files in the **/data** path: + + .. code-block:: + + kubectl exec web-evs-0 -- ls /data + + Expected output: + + .. code-block:: + + lost+found + +#. Run the following command to create a file named **static** in the **/data** path: + + .. code-block:: + + kubectl exec web-evs-0 -- touch /data/static + +#. Run the following command to view the files in the **/data** path: + + .. code-block:: + + kubectl exec web-evs-0 -- ls /data + + Expected output: + + .. code-block:: + + lost+found + static + +#. Run the following command to delete the pod named **web-evs-0**: + + .. code-block:: + + kubectl delete pod web-evs-0 + + Expected output: + + .. code-block:: + + pod "web-evs-0" deleted + +#. After the deletion, the StatefulSet controller automatically creates a replica with the same name. Run the following command to check whether the files in the **/data** path have been modified: + + .. code-block:: + + kubectl exec web-evs-0 -- ls /data + + Expected output: + + .. code-block:: + + lost+found + static + + If the **static** file still exists, the data in the EVS volume can be stored persistently. + +.. _cce_10_0614__section16505832153318: + +Related Operations +------------------ + +You can also perform the operations listed in :ref:`Table 4 `. + +.. _cce_10_0614__table1619535674020: + +.. table:: **Table 4** Related operations + + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Operation | Description | Procedure | + +=======================================+====================================================================================================================================================+====================================================================================================================================================================================================================================+ + | Creating a storage volume (PV) | Create a PV on the CCE console. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumes (PVs)** tab. Click **Create Volume** in the upper right corner. In the dialog box displayed, configure the parameters. | + | | | | + | | | - **Volume Type**: Select **EVS**. | + | | | - **EVS**: Click **Select EVS**. On the displayed page, select the EVS disk that meets your requirements and click **OK**. | + | | | - **PV Name**: Enter the PV name, which must be unique in the same cluster. | + | | | - **Access Mode**: EVS disks support only **ReadWriteOnce**, indicating that a storage volume can be mounted to one node in read/write mode. For details, see :ref:`Volume Access Modes `. | + | | | - **Reclaim Policy**: **Delete** or **Retain**. For details, see :ref:`PV Reclaim Policy `. | + | | | | + | | | #. Click **Create**. | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Expanding the capacity of an EVS disk | Quickly expand the capacity of a mounted EVS disk on the CCE console. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** tab. Click **More** in the **Operation** column of the target PVC and select **Scale-out**. | + | | | #. Enter the capacity to be added and click **OK**. | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Viewing events | You can view event names, event types, number of occurrences, Kubernetes events, first occurrence time, and last occurrence time of the PVC or PV. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** or **PersistentVolumes (PVs)** tab. | + | | | #. Click **View Events** in the **Operation** column of the target PVC or PV to view events generated within one hour (event data is retained for one hour). | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Viewing a YAML file | You can view, copy, and download the YAML files of a PVC or PV. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** or **PersistentVolumes (PVs)** tab. | + | | | #. Click **View YAML** in the **Operation** column of the target PVC or PV to view or download the YAML. | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/storage/ephemeral_volumes_emptydir/importing_an_ev_to_a_storage_pool.rst b/umn/source/storage/ephemeral_volumes_emptydir/importing_an_ev_to_a_storage_pool.rst new file mode 100644 index 0000000..56d5ca2 --- /dev/null +++ b/umn/source/storage/ephemeral_volumes_emptydir/importing_an_ev_to_a_storage_pool.rst @@ -0,0 +1,41 @@ +:original_name: cce_10_0725.html + +.. _cce_10_0725: + +Importing an EV to a Storage Pool +================================= + +CCE allows you to use LVM to combine data volumes on nodes into a storage pool (VolumeGroup) and create LVs for containers to mount. Before creating a local EV, import the data disk of the node to the storage pool. + +Constraints +----------- + +- Local EVs are supported only when the cluster version is v1.21.2-r0 or later and the everest add-on version is 1.2.29 or later. + +- The first data disk (used by container runtime and the kubelet component) on a node cannot be imported as a storage pool. +- Storage pools in striped mode do not support scale-out. After scale-out, fragmented space may be generated and the storage pool cannot be used. +- Storage pools cannot be scaled in or deleted. +- If disks in a storage pool on a node are deleted, the storage pool will malfunction. + +Importing a Storage Pool +------------------------ + +**Imported during node creation** + +When creating a node, you can add a data disk to the node in **Storage Settings** and import the data disk to the storage pool as an EV. For details, see :ref:`Creating a Node `. + +**Imported manually** + +If no EV is imported during node creation, or the capacity of the current storage volume is insufficient, you can manually import a storage pool. + +#. Go to the ECS console and add a SCSI disk to the node. +#. Log in to the CCE console and click the cluster name to access the cluster console. +#. In the navigation pane, choose **Storage** and switch to the **Storage Pool** tab. +#. View the node to which the disk has been added and select **Import as EV**. You can select a write mode during the import. + + .. note:: + + If the manually attached disk is not displayed in the storage pool, wait for 1 minute and refresh the list. + + - **Linear**: A linear logical volume integrates one or more physical volumes. Data is written to the next physical volume when the previous one is used up. + - **Striped**: A striped logical volume stripes data into blocks of the same size and stores them in multiple physical volumes in sequence, allowing data to be concurrently read and written. Select this option only when there are multiple volumes. diff --git a/umn/source/storage/ephemeral_volumes_emptydir/index.rst b/umn/source/storage/ephemeral_volumes_emptydir/index.rst new file mode 100644 index 0000000..4b9858d --- /dev/null +++ b/umn/source/storage/ephemeral_volumes_emptydir/index.rst @@ -0,0 +1,20 @@ +:original_name: cce_10_0636.html + +.. _cce_10_0636: + +Ephemeral Volumes (emptyDir) +============================ + +- :ref:`Overview ` +- :ref:`Importing an EV to a Storage Pool ` +- :ref:`Using a Local EV ` +- :ref:`Using a Temporary Path ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + overview + importing_an_ev_to_a_storage_pool + using_a_local_ev + using_a_temporary_path diff --git a/umn/source/storage/ephemeral_volumes_emptydir/overview.rst b/umn/source/storage/ephemeral_volumes_emptydir/overview.rst new file mode 100644 index 0000000..f96b681 --- /dev/null +++ b/umn/source/storage/ephemeral_volumes_emptydir/overview.rst @@ -0,0 +1,26 @@ +:original_name: cce_10_0637.html + +.. _cce_10_0637: + +Overview +======== + +Introduction +------------ + +Some applications require additional storage, but whether the data is still available after a restart is not important. For example, although cache services are limited by memory size, cache services can move infrequently used data to storage slower than memory. As a result, overall performance is not impacted significantly. Other applications require read-only data injected as files, such as configuration data or secrets. + +`Ephemeral volumes `__ (EVs) in Kubernetes are designed for the above scenario. EVs are created and deleted together with pods following the pod lifecycle. + +Common EVs in Kubernetes: + +- :ref:`emptyDir `: empty at pod startup, with storage coming locally from the kubelet base directory (usually the root disk) or memory. emptyDir is allocated from the `EV of the node `__. If data from other sources (such as log files or image tiering data) occupies the temporary storage, the storage capacity may be insufficient. +- :ref:`ConfigMap `: Kubernetes data of the ConfigMap type is mounted to pods as data volumes. +- :ref:`Secret `: Kubernetes data of the Secret type is mounted to pods as data volumes. + +Constraints +----------- + +- Local EVs are supported only when the cluster version is v1.21.2-r0 or later and the everest add-on version is 1.2.29 or later. +- Do not manually delete the corresponding storage pool or detach data disks from the node. Otherwise, exceptions such as data loss may occur. +- Ensure that the **/var/lib/kubelet/pods/** directory is not mounted to the pod on the node. Otherwise, the pod, mounted with such volumes, may fail to be deleted. diff --git a/umn/source/storage/ephemeral_volumes_emptydir/using_a_local_ev.rst b/umn/source/storage/ephemeral_volumes_emptydir/using_a_local_ev.rst new file mode 100644 index 0000000..18de523 --- /dev/null +++ b/umn/source/storage/ephemeral_volumes_emptydir/using_a_local_ev.rst @@ -0,0 +1,107 @@ +:original_name: cce_10_0726.html + +.. _cce_10_0726: + +Using a Local EV +================ + +Local Ephemeral Volumes (EVs) are stored in EV :ref:`storage pools `. Local EVs deliver better performance than the default storage medium of native emptyDir and support scale-out. + +Prerequisites +------------- + +- You have created a cluster and installed the CSI add-on (:ref:`everest `) in the cluster. +- If you want to create a cluster using commands, use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. +- To use a local EV, import a data disk of a node to the local EV storage pool. For details, see :ref:`Importing an EV to a Storage Pool `. + +Constraints +----------- + +- Local EVs are supported only when the cluster version is v1.21.2-r0 or later and the everest add-on version is 1.2.29 or later. +- Do not manually delete the corresponding storage pool or detach data disks from the node. Otherwise, exceptions such as data loss may occur. +- The **/var/lib/kubelet/pods/** directory cannot be mounted to pods running on the node. Otherwise, the pods mounted with such volumes may fail to be deleted. + +Using the Console to Mount a Local EV +------------------------------------- + +#. Log in to the CCE console and click the cluster name to access the cluster console. + +#. In the navigation pane on the left, click **Workloads**. In the right pane, click the **Deployments** tab. + +#. Click **Create Workload** in the upper right corner of the page. In the **Container Settings** area, click the **Data Storage** tab and click **Add Volume** > **Local Ephemeral Volume (emptyDir)**. + +#. Mount and use storage volumes, as shown in :ref:`Table 1 `. For details about other parameters, see :ref:`Workloads `. + + .. _cce_10_0726__table2529244345: + + .. table:: **Table 1** Mounting a local EV + + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+=============================================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | Capacity | Capacity of the requested storage volume. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Mount Path | Enter a mount path, for example, **/tmp**. | + | | | + | | This parameter indicates the container path to which a data volume will be mounted. Do not mount the volume to a system directory such as **/** or **/var/run**. Otherwise, containers will be malfunctional. Mount the volume to an empty directory. If the directory is not empty, ensure that there are no files that affect container startup. Otherwise, the files will be replaced, causing container startup failures or workload creation failures. | + | | | + | | .. important:: | + | | | + | | NOTICE: | + | | If a volume is mounted to a high-risk directory, use an account with minimum permissions to start the container. Otherwise, high-risk files on the host may be damaged. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Subpath | Enter a subpath, for example, **tmp**, indicating that data in the mount path of the container will be stored in the **tmp** folder of the volume. | + | | | + | | A subpath is used to mount a local volume so that the same data volume is used in a single pod. If this parameter is left blank, the root path is used by default. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Permission | - **Read-only**: You can only read the data in the mounted volumes. | + | | - **Read/Write**: You can modify the data volumes mounted to the path. Newly written data is not migrated if the container is migrated, which may cause data loss. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +#. After the configuration, click **Create Workload**. + +Using kubectl to Mount a Local EV +--------------------------------- + +#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. + +#. Create a file named **nginx-emptydir.yaml** and edit it. + + **vi nginx-emptydir.yaml** + + Content of the YAML file: + + .. code-block:: + + apiVersion: apps/v1 + kind: Deployment + metadata: + name: nginx-emptydir + namespace: default + spec: + replicas: 2 + selector: + matchLabels: + app: nginx-emptydir + template: + metadata: + labels: + app: nginx-emptydir + spec: + containers: + - name: container-1 + image: nginx:latest + volumeMounts: + - name: vol-emptydir # Volume name, which must be the same as the volume name in the volumes field. + mountPath: /tmp # Path to which an EV is mounted. + imagePullSecrets: + - name: default-secret + volumes: + - name: vol-emptydir # Volume name, which can be customized. + emptyDir: + medium: LocalVolume # If the disk medium of emptyDir is set to LocalVolume, the local EV is used. + sizeLimit: 1Gi # Volume capacity. + +#. Create a workload. + + **kubectl apply -f nginx-emptydir.yaml** diff --git a/umn/source/storage/ephemeral_volumes_emptydir/using_a_temporary_path.rst b/umn/source/storage/ephemeral_volumes_emptydir/using_a_temporary_path.rst new file mode 100644 index 0000000..07dabf9 --- /dev/null +++ b/umn/source/storage/ephemeral_volumes_emptydir/using_a_temporary_path.rst @@ -0,0 +1,102 @@ +:original_name: cce_10_0638.html + +.. _cce_10_0638: + +Using a Temporary Path +====================== + +A temporary path is of the Kubernetes-native emptyDir type. Its lifecycle is the same as that of a pod. Memory can be specified as the storage medium. When the pod is deleted, the emptyDir volume is deleted and its data is lost. + +Using the Console to Use a Temporary Path +----------------------------------------- + +#. Log in to the CCE console and click the cluster name to access the cluster console. + +#. In the navigation pane on the left, click **Workloads**. In the right pane, click the **Deployments** tab. + +#. Click **Create Workload** in the upper right corner of the page. In the **Container Settings** area, click the **Data Storage** tab and click **Add Volume** > **emptyDir**. + +#. Mount and use storage volumes, as shown in :ref:`Table 1 `. For details about other parameters, see :ref:`Workloads `. + + .. _cce_10_0638__table1867417102475: + + .. table:: **Table 1** Mounting an EV + + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+=============================================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | Storage Medium | **Memory**: | + | | | + | | - You can select this option to improve the running speed, but the storage capacity is subject to the memory size. This mode is applicable when data volume is small and efficient read and write is required. | + | | - If this function is disabled, data is stored in hard disks, which applies to a large amount of data with low requirements on reading and writing efficiency. | + | | | + | | .. note:: | + | | | + | | - If **Memory** is selected, pay attention to the memory size. If the storage capacity exceeds the memory size, an OOM event occurs. | + | | - If **Memory** is selected, the size of an EV is the same as pod specifications. | + | | - If **Memory** is not selected, EVs will not occupy the system memory. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Mount Path | Enter a mount path, for example, **/tmp**. | + | | | + | | This parameter indicates the container path to which a data volume will be mounted. Do not mount the volume to a system directory such as **/** or **/var/run**. Otherwise, containers will be malfunctional. Mount the volume to an empty directory. If the directory is not empty, ensure that there are no files that affect container startup. Otherwise, the files will be replaced, causing container startup failures or workload creation failures. | + | | | + | | .. important:: | + | | | + | | NOTICE: | + | | If a volume is mounted to a high-risk directory, use an account with minimum permissions to start the container. Otherwise, high-risk files on the host may be damaged. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Subpath | Enter a subpath, for example, **tmp**, indicating that data in the mount path of the container will be stored in the **tmp** folder of the volume. | + | | | + | | A subpath is used to mount a local volume so that the same data volume is used in a single pod. If this parameter is left blank, the root path is used by default. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Permission | - **Read-only**: You can only read the data in the mounted volumes. | + | | - **Read/Write**: You can modify the data volumes mounted to the path. Newly written data is not migrated if the container is migrated, which may cause data loss. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +#. After the configuration, click **Create Workload**. + +Using kubectl to Use a Temporary Path +------------------------------------- + +#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. + +#. Create a file named **nginx-emptydir.yaml** and edit it. + + **vi nginx-emptydir.yaml** + + Content of the YAML file: + + .. code-block:: + + apiVersion: apps/v1 + kind: Deployment + metadata: + name: nginx-emptydir + namespace: default + spec: + replicas: 2 + selector: + matchLabels: + app: nginx-emptydir + template: + metadata: + labels: + app: nginx-emptydir + spec: + containers: + - name: container-1 + image: nginx:latest + volumeMounts: + - name: vol-emptydir # Volume name, which must be the same as the volume name in the volumes field. + mountPath: /tmp # Path to which an EV is mounted. + imagePullSecrets: + - name: default-secret + volumes: + - name: vol-emptydir # Volume name, which can be customized. + emptyDir: + medium: Memory # EV disk medium: If this parameter is set to Memory, the memory is enabled. If this parameter is left blank, the native default storage medium is used. + sizeLimit: 1Gi # Volume capacity. + +#. Create a workload. + + **kubectl apply -f nginx-emptydir.yaml** diff --git a/umn/source/storage/hostpath.rst b/umn/source/storage/hostpath.rst new file mode 100644 index 0000000..95576e9 --- /dev/null +++ b/umn/source/storage/hostpath.rst @@ -0,0 +1,111 @@ +:original_name: cce_10_0377.html + +.. _cce_10_0377: + +hostPath +======== + +hostPath is used for mounting the file directory of the host where the container is located to the specified mount point of the container. If the container needs to access **/etc/hosts**, use hostPath to map **/etc/hosts**. + +.. important:: + + - Avoid using hostPath volumes as much as possible, as they are prone to security risks. If hostPath volumes must be used, they can only be applied to files or paths and mounted in read-only mode. + - After the pod to which a hostPath volume is mounted is deleted, the data in the hostPath volume is retained. + +Mounting a hostPath Volume on the Console +----------------------------------------- + +You can mount a path on the host to a specified container path. A hostPath volume is usually used to **store workload logs permanently** or used by workloads that need to **access internal data structure of the Docker engine on the host**. + +#. Log in to the CCE console. + +#. When creating a workload, click **Data Storage** in the **Container Settings** area. Click **Add Volume** and choose **hostPath** from the drop-down list. + +#. Set parameters for adding a local volume, as listed in :ref:`Table 1 `. + + .. _cce_10_0377__table14312815449: + + .. table:: **Table 1** Setting parameters for mounting a hostPath volume + + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+=============================================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | Storage Type | Select **HostPath**. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Host Path | Path of the host to which the local volume is to be mounted, for example, **/etc/hosts**. | + | | | + | | .. note:: | + | | | + | | **Host Path** cannot be set to the root directory **/**. Otherwise, the mounting fails. Mount paths can be as follows: | + | | | + | | - **/opt/xxxx** (excluding **/opt/cloud**) | + | | - **/mnt/xxxx** (excluding **/mnt/paas**) | + | | - **/tmp/xxx** | + | | - **/var/xxx** (excluding key directories such as **/var/lib**, **/var/script**, and **/var/paas**) | + | | - **/xxxx** (It cannot conflict with the system directory, such as **bin**, **lib**, **home**, **root**, **boot**, **dev**, **etc**, **lost+found**, **mnt**, **proc**, **sbin**, **srv**, **tmp**, **var**, **media**, **opt**, **selinux**, **sys**, and **usr**.) | + | | | + | | Do not set this parameter to **/home/paas**, **/var/paas**, **/var/lib**, **/var/script**, **/mnt/paas**, or **/opt/cloud**. Otherwise, the system or node installation will fail. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Mount Path | Enter a mount path, for example, **/tmp**. | + | | | + | | This parameter indicates the container path to which a data volume will be mounted. Do not mount the volume to a system directory such as **/** or **/var/run**. Otherwise, containers will be malfunctional. Mount the volume to an empty directory. If the directory is not empty, ensure that there are no files that affect container startup. Otherwise, the files will be replaced, causing container startup failures or workload creation failures. | + | | | + | | .. important:: | + | | | + | | NOTICE: | + | | If a volume is mounted to a high-risk directory, use an account with minimum permissions to start the container. Otherwise, high-risk files on the host may be damaged. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Subpath | Enter a subpath, for example, **tmp**, indicating that data in the mount path of the container will be stored in the **tmp** folder of the volume. | + | | | + | | A subpath is used to mount a local volume so that the same data volume is used in a single pod. If this parameter is left blank, the root path is used by default. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Permission | - **Read-only**: You can only read the data in the mounted volumes. | + | | - **Read/Write**: You can modify the data volumes mounted to the path. Newly written data is not migrated if the container is migrated, which may cause data loss. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +#. After the configuration, click **Create Workload**. + +Mounting a hostPath Volume Using kubectl +---------------------------------------- + +#. Use kubectl to connect to the cluster. + +#. Create a file named **nginx-hostpath.yaml** and edit it. + + **vi nginx-hostpath.yaml** + + The content of the YAML file is as follows. Mount the **/data** directory on the node to the **/data** directory in the container. + + .. code-block:: + + apiVersion: apps/v1 + kind: Deployment + metadata: + name: nginx-hostpath + namespace: default + spec: + replicas: 2 + selector: + matchLabels: + app: nginx-hostpath + template: + metadata: + labels: + app: nginx-hostpath + spec: + containers: + - name: container-1 + image: nginx:latest + volumeMounts: + - name: vol-hostpath # Volume name, which must be the same as the volume name in the volumes field. + mountPath: /data # Mount path in the container. + imagePullSecrets: + - name: default-secret + volumes: + - name: vol-hostpath # Volume name, which can be customized. + hostPath: + path: /data # Directory location on the host node. + +#. Create a workload. + + **kubectl apply -f nginx-hostpath.yaml** diff --git a/umn/source/storage/index.rst b/umn/source/storage/index.rst index 68cc663..355da37 100644 --- a/umn/source/storage/index.rst +++ b/umn/source/storage/index.rst @@ -6,25 +6,27 @@ Storage ======= - :ref:`Overview ` -- :ref:`Using Local Disks as Storage Volumes ` -- :ref:`PVs ` -- :ref:`PVCs ` +- :ref:`Storage Basics ` +- :ref:`Elastic Volume Service (EVS) ` +- :ref:`Scalable File Service (SFS) ` +- :ref:`SFS Turbo File Systems ` +- :ref:`Object Storage Service (OBS) ` +- :ref:`Local Persistent Volumes (Local PVs) ` +- :ref:`Ephemeral Volumes (emptyDir) ` +- :ref:`hostPath ` - :ref:`StorageClass ` -- :ref:`Snapshots and Backups ` -- :ref:`Using a Custom AK/SK to Mount an OBS Volume ` -- :ref:`Setting Mount Options ` -- :ref:`Deployment Examples ` .. toctree:: :maxdepth: 1 :hidden: overview - using_local_disks_as_storage_volumes - pvs - pvcs + storage_basics + elastic_volume_service_evs/index + scalable_file_service_sfs/index + sfs_turbo_file_systems/index + object_storage_service_obs/index + local_persistent_volumes_local_pvs/index + ephemeral_volumes_emptydir/index + hostpath storageclass - snapshots_and_backups - using_a_custom_ak_sk_to_mount_an_obs_volume - setting_mount_options - deployment_examples/index diff --git a/umn/source/storage/local_persistent_volumes_local_pvs/dynamically_mounting_a_local_pv_to_a_statefulset.rst b/umn/source/storage/local_persistent_volumes_local_pvs/dynamically_mounting_a_local_pv_to_a_statefulset.rst new file mode 100644 index 0000000..eb029d0 --- /dev/null +++ b/umn/source/storage/local_persistent_volumes_local_pvs/dynamically_mounting_a_local_pv_to_a_statefulset.rst @@ -0,0 +1,272 @@ +:original_name: cce_10_0635.html + +.. _cce_10_0635: + +Dynamically Mounting a Local PV to a StatefulSet +================================================ + +Application Scenarios +--------------------- + +Dynamic mounting is available only for creating a :ref:`StatefulSet `. It is implemented through a volume claim template (`volumeClaimTemplates `__ field) and depends on the storage class to dynamically provision PVs. In this mode, each pod in a multi-pod StatefulSet is associated with a unique PVC and PV. After a pod is rescheduled, the original data can still be mounted to it based on the PVC name. In the common mounting mode for a Deployment, if ReadWriteMany is supported, multiple pods of the Deployment will be mounted to the same underlying storage. + +Prerequisites +------------- + +- You have created a cluster and installed the CSI add-on (:ref:`everest `) in the cluster. +- If you want to create a cluster using commands, use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. +- You have imported a data disk of a node to the local PV storage pool. + +Dynamically Mounting a Local PV on the Console +---------------------------------------------- + +#. Log in to the CCE console and click the cluster name to access the cluster console. + +#. In the navigation pane on the left, click **Workloads**. In the right pane, click the **StatefulSets** tab. + +#. Click **Create Workload** in the upper right corner. On the displayed page, click **Data Storage** in the **Container Settings** area and click **Add Volume** to select **VolumeClaimTemplate (VTC)**. + +#. Click **Create PVC**. In the dialog box displayed, configure the volume claim template parameters. + + Click **Create**. + + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +=================+=============================================================================================================================================================================================================+ + | PVC Type | In this section, select **Local PV**. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PVC Name | Enter the name of the PVC. After a PVC is created, a suffix is automatically added based on the number of pods. The format is <*Custom PVC name*>-<*Serial number*>, for example, example-0. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Creation Method | You can only select **Dynamically provision** to create a PVC, PV, and underlying storage on the console in cascading mode. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Storage Classes | The storage class of local PVs is **csi-local-topology**. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Access Mode | Local PVs support only **ReadWriteOnce**, indicating that a storage volume can be mounted to one node in read/write mode. For details, see :ref:`Volume Access Modes `. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Storage Pool | View the imported storage pool. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Capacity (GiB) | Capacity of the requested storage volume. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +#. Enter the path to which the volume is mounted. + + .. table:: **Table 1** Mounting a storage volume + + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+============================================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | Mount Path | Enter a mount path, for example, **/tmp**. | + | | | + | | This parameter indicates the container path to which a data volume will be mounted. Do not mount the volume to a system directory such as **/** or **/var/run**. Otherwise, errors will occur in containers. Mount the volume to an empty directory. If the directory is not empty, ensure that there are no files that affect container startup. Otherwise, the files will be replaced, causing container startup failures or workload creation failures. | + | | | + | | .. important:: | + | | | + | | NOTICE: | + | | If a volume is mounted to a high-risk directory, use an account with minimum permissions to start the container. Otherwise, high-risk files on the host may be damaged. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Subpath | Enter a subpath, for example, **tmp**, indicating that data in the mount path of the container will be stored in the **tmp** folder of the volume. | + | | | + | | A subpath is used to mount a local volume so that the same data volume is used in a single pod. If this parameter is left blank, the root path is used by default. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Permission | - **Read-only**: You can only read the data in the mounted volumes. | + | | - **Read/Write**: You can modify the data volumes mounted to the path. Newly written data is not migrated if the container is migrated, which may cause data loss. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + In this example, the disk is mounted to the **/data** path of the container. The container data generated in this path is stored in the local PV. + +#. Dynamically mount and use storage volumes. For details about other parameters, see :ref:`Creating a StatefulSet `. After the configuration, click **Create Workload**. + + After the workload is created, the data in the container mount directory will be persistently stored. Verify the storage by referring to :ref:`Verifying Data Persistence `. + +(kubectl) Using an Existing Local PV +------------------------------------ + +#. Use kubectl to connect to the cluster. + +#. Create a file named **statefulset-local.yaml**. In this example, the local PV is mounted to the **/data** path. + + .. code-block:: + + apiVersion: apps/v1 + kind: StatefulSet + metadata: + name: statefulset-local + namespace: default + spec: + selector: + matchLabels: + app: statefulset-local + template: + metadata: + labels: + app: statefulset-local + spec: + containers: + - name: container-1 + image: nginx:latest + volumeMounts: + - name: pvc-local # The value must be the same as that in the volumeClaimTemplates field. + mountPath: /data # Location where the storage volume is mounted. + imagePullSecrets: + - name: default-secret + serviceName: statefulset-local # Headless Service name. + replicas: 2 + volumeClaimTemplates: + - apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + name: pvc-local + namespace: default + spec: + accessModes: + - ReadWriteOnce # The local PV must adopt ReadWriteOnce. + resources: + requests: + storage: 10Gi # Storage volume capacity. + storageClassName: csi-local-topology # StorageClass is local PV. + --- + apiVersion: v1 + kind: Service + metadata: + name: statefulset-local # Headless Service name. + namespace: default + labels: + app: statefulset-local + spec: + selector: + app: statefulset-local + clusterIP: None + ports: + - name: statefulset-local + targetPort: 80 + nodePort: 0 + port: 80 + protocol: TCP + type: ClusterIP + + .. table:: **Table 2** Key parameters + + +------------------+-----------+-----------------------------------------------------------+ + | Parameter | Mandatory | Description | + +==================+===========+===========================================================+ + | storage | Yes | Requested capacity in the PVC, in Gi. | + +------------------+-----------+-----------------------------------------------------------+ + | storageClassName | Yes | The storage class of local PVs is **csi-local-topology**. | + +------------------+-----------+-----------------------------------------------------------+ + +#. Run the following command to create an application to which the local PV is mounted: + + .. code-block:: + + kubectl apply -f statefulset-local.yaml + + After the workload is created, you can try :ref:`Verifying Data Persistence `. + +.. _cce_10_0635__section11593165910013: + +Verifying Data Persistence +-------------------------- + +#. View the deployed application and files. + + a. Run the following command to view the created pod: + + .. code-block:: + + kubectl get pod | grep statefulset-local + + Expected output: + + .. code-block:: + + statefulset-local-0 1/1 Running 0 45s + statefulset-local-1 1/1 Running 0 28s + + b. Run the following command to check whether the local PV has been mounted to the **/data** path: + + .. code-block:: + + kubectl exec statefulset-local-0 -- df | grep data + + Expected output: + + .. code-block:: + + /dev/mapper/vg--everest--localvolume--persistent-pvc-local 10255636 36888 10202364 0% /data + + c. Run the following command to view the files in the **/data** path: + + .. code-block:: + + kubectl exec statefulset-local-0 -- ls /data + + Expected output: + + .. code-block:: + + lost+found + +#. Run the following command to create a file named **static** in the **/data** path: + + .. code-block:: + + kubectl exec statefulset-local-0 -- touch /data/static + +#. Run the following command to view the files in the **/data** path: + + .. code-block:: + + kubectl exec statefulset-local-0 -- ls /data + + Expected output: + + .. code-block:: + + lost+found + static + +#. Run the following command to delete the pod named **web-local-auto-0**: + + .. code-block:: + + kubectl delete pod statefulset-local-0 + + Expected output: + + .. code-block:: + + pod "statefulset-local-0" deleted + +#. After the deletion, the StatefulSet controller automatically creates a replica with the same name. Run the following command to check whether the files in the **/data** path have been modified: + + .. code-block:: + + kubectl exec statefulset-local-0 -- ls /data + + Expected output: + + .. code-block:: + + lost+found + static + + If the **static** file still exists, the data in the local PV can be stored persistently. + +Related Operations +------------------ + +You can also perform the operations listed in :ref:`Table 3 `. + +.. _cce_10_0635__cce_10_0634_table1619535674020: + +.. table:: **Table 3** Related operations + + +-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Operation | Description | Procedure | + +=======================+====================================================================================================================================================+==============================================================================================================================================================+ + | Viewing events | You can view event names, event types, number of occurrences, Kubernetes events, first occurrence time, and last occurrence time of the PVC or PV. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** or **PersistentVolumes (PVs)** tab. | + | | | #. Click **View Events** in the **Operation** column of the target PVC or PV to view events generated within one hour (event data is retained for one hour). | + +-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Viewing a YAML file | You can view, copy, and download the YAML files of a PVC or PV. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** or **PersistentVolumes (PVs)** tab. | + | | | #. Click **View YAML** in the **Operation** column of the target PVC or PV to view or download the YAML. | + +-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/storage/local_persistent_volumes_local_pvs/importing_a_pv_to_a_storage_pool.rst b/umn/source/storage/local_persistent_volumes_local_pvs/importing_a_pv_to_a_storage_pool.rst new file mode 100644 index 0000000..966872c --- /dev/null +++ b/umn/source/storage/local_persistent_volumes_local_pvs/importing_a_pv_to_a_storage_pool.rst @@ -0,0 +1,41 @@ +:original_name: cce_10_0642.html + +.. _cce_10_0642: + +Importing a PV to a Storage Pool +================================ + +CCE allows you to use LVM to combine data volumes on nodes into a storage pool (VolumeGroup) and create LVs for containers to mount. Before creating a local PV, import the data disk of the node to the storage pool. + +Constraints +----------- + +- Local PVs are supported only when the cluster version is v1.21.2-r0 or later and the everest add-on version is 2.1.23 or later. Version 2.1.23 or later is recommended. + +- The first data disk (used by container runtime and the kubelet component) on a node cannot be imported as a storage pool. +- Storage pools in striped mode do not support scale-out. After scale-out, fragmented space may be generated and the storage pool cannot be used. +- Storage pools cannot be scaled in or deleted. +- If disks in a storage pool on a node are deleted, the storage pool will malfunction. + +Importing a Storage Pool +------------------------ + +**Imported during node creation** + +When creating a node, you can add a data disk to the node in **Storage Settings** and import the data disk to the storage pool as a PV. For details, see :ref:`Creating a Node `. + +**Imported manually** + +If no PV is imported during node creation, or the capacity of the current storage volume is insufficient, you can manually import a storage pool. + +#. Go to the ECS console and add a SCSI disk to the node. +#. Log in to the CCE console and click the cluster name to access the cluster console. +#. In the navigation pane, choose **Storage** and switch to the **Storage Pool** tab. +#. View the node to which the disk has been added and select **Import as PV**. You can select a write mode during the import. + + .. note:: + + If the manually attached disk is not displayed in the storage pool, wait for 1 minute and refresh the list. + + - **Linear**: A linear logical volume integrates one or more physical volumes. Data is written to the next physical volume when the previous one is used up. + - **Striped**: A striped logical volume stripes data into blocks of the same size and stores them in multiple physical volumes in sequence, allowing data to be concurrently read and written. Select this option only when there are multiple volumes. diff --git a/umn/source/storage/local_persistent_volumes_local_pvs/index.rst b/umn/source/storage/local_persistent_volumes_local_pvs/index.rst new file mode 100644 index 0000000..22d371f --- /dev/null +++ b/umn/source/storage/local_persistent_volumes_local_pvs/index.rst @@ -0,0 +1,20 @@ +:original_name: cce_10_0391.html + +.. _cce_10_0391: + +Local Persistent Volumes (Local PVs) +==================================== + +- :ref:`Overview ` +- :ref:`Importing a PV to a Storage Pool ` +- :ref:`Using a Local PV Through a Dynamic PV ` +- :ref:`Dynamically Mounting a Local PV to a StatefulSet ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + overview + importing_a_pv_to_a_storage_pool + using_a_local_pv_through_a_dynamic_pv + dynamically_mounting_a_local_pv_to_a_statefulset diff --git a/umn/source/storage/local_persistent_volumes_local_pvs/overview.rst b/umn/source/storage/local_persistent_volumes_local_pvs/overview.rst new file mode 100644 index 0000000..4a5ae62 --- /dev/null +++ b/umn/source/storage/local_persistent_volumes_local_pvs/overview.rst @@ -0,0 +1,33 @@ +:original_name: cce_10_0633.html + +.. _cce_10_0633: + +Overview +======== + +Introduction +------------ + +CCE allows you to use LVM to combine data volumes on nodes into a storage pool (VolumeGroup) and create LVs for containers to mount. A PV that uses a local persistent volume as the medium is considered local PV. + +Compared with the HostPath volume, the local PV can be used in a persistent and portable manner. In addition, the PV of the local PV has the node affinity configuration. The pod mounted to the local PV is automatically scheduled based on the affinity configuration. You do not need to manually schedule the pod to a specific node. + +Mounting Modes +-------------- + +Local PVs can be mounted only in the following modes: + +- :ref:`Using a Local PV Through a Dynamic PV `: dynamic creation mode, where you specify a StorageClass during PVC creation and an OBS volume and a PV will be automatically created. +- :ref:`Dynamically Mounting a Local PV to a StatefulSet `: Only StatefulSets support this mode. Each pod is associated with a unique PVC and PV. After a pod is rescheduled, the original data can still be mounted to it based on the PVC name. This mode applies to StatefulSets with multiple pods. + +.. note:: + + Local PVs cannot be used through static PVs. That is, local PVs cannot be manually created and then mounted to workloads through PVCs. + +Constraints +----------- + +- Local PVs are supported only when the cluster version is v1.21.2-r0 or later and the everest add-on version is 2.1.23 or later. Version 2.1.23 or later is recommended. +- Deleting, removing, resetting, or scaling in a node will cause the PVC/PV data of the local PV associated with the node to be lost, which cannot be restored or used again. For details, see :ref:`Removing a Node `, :ref:`Deleting a Node `, :ref:`Resetting a Node `, and :ref:`Scaling In a Node `. In these scenarios, the pod that uses the local PV is evicted from the node. A new pod will be created and stay in the pending state. This is because the PVC used by the pod has a node label, due to which the pod cannot be scheduled. After the node is reset, the pod may be scheduled to the reset node. In this case, the pod remains in the creating state because the underlying logical volume corresponding to the PVC does not exist. +- Do not manually delete the corresponding storage pool or detach data disks from the node. Otherwise, exceptions such as data loss may occur. +- A local PV cannot be mounted to multiple workloads or jobs at the same time. diff --git a/umn/source/storage/local_persistent_volumes_local_pvs/using_a_local_pv_through_a_dynamic_pv.rst b/umn/source/storage/local_persistent_volumes_local_pvs/using_a_local_pv_through_a_dynamic_pv.rst new file mode 100644 index 0000000..73714a3 --- /dev/null +++ b/umn/source/storage/local_persistent_volumes_local_pvs/using_a_local_pv_through_a_dynamic_pv.rst @@ -0,0 +1,306 @@ +:original_name: cce_10_0634.html + +.. _cce_10_0634: + +Using a Local PV Through a Dynamic PV +===================================== + +Prerequisites +------------- + +- You have created a cluster and installed the CSI add-on (:ref:`everest `) in the cluster. +- If you want to create a cluster using commands, use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. +- You have imported a data disk of a node to the local PV storage pool. For details, see :ref:`Importing a PV to a Storage Pool `. + +Constraints +----------- + +- Local PVs are supported only when the cluster version is v1.21.2-r0 or later and the everest add-on version is 2.1.23 or later. Version 2.1.23 or later is recommended. +- Deleting, removing, resetting, or scaling in a node will cause the PVC/PV data of the local PV associated with the node to be lost, which cannot be restored or used again. For details, see :ref:`Removing a Node `, :ref:`Deleting a Node `, :ref:`Resetting a Node `, and :ref:`Scaling In a Node `. In these scenarios, the pod that uses the local PV is evicted from the node. A new pod will be created and stay in the pending state. This is because the PVC used by the pod has a node label, due to which the pod cannot be scheduled. After the node is reset, the pod may be scheduled to the reset node. In this case, the pod remains in the creating state because the underlying logical volume corresponding to the PVC does not exist. +- Do not manually delete the corresponding storage pool or detach data disks from the node. Otherwise, exceptions such as data loss may occur. +- A local PV cannot be mounted to multiple workloads or jobs at the same time. + +Automatically Creating a Local PV on the Console +------------------------------------------------ + +#. Log in to the CCE console and click the cluster name to access the cluster console. +#. Dynamically create a PVC and PV. + + a. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** tab. Click **Create PVC** in the upper right corner. In the dialog box displayed, configure the PVC parameters. + + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +=================+=============================================================================================================================================================================================================+ + | PVC Type | In this section, select **Local PV**. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PVC Name | Enter the PVC name, which must be unique in the same namespace. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Creation Method | You can only select **Dynamically provision** to create a PVC, PV, and underlying storage on the console in cascading mode. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Storage Classes | The storage class of local PVs is **csi-local-topology**. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Access Mode | Local PVs support only **ReadWriteOnce**, indicating that a storage volume can be mounted to one node in read/write mode. For details, see :ref:`Volume Access Modes `. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Storage Pool | View the imported storage pool. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Capacity (GiB) | Capacity of the requested storage volume. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + b. Click **Create** to create a PVC and a PV. + + You can choose **Storage** in the navigation pane and view the created PVC and PV on the **PersistentVolumeClaims (PVCs)** and **PersistentVolumes (PVs)** tab pages. + + .. note:: + + The volume binding mode of the local storage class (named **csi-local-topology**) is late binding (that is, the value of **volumeBindingMode** is **WaitForFirstConsumer**). In this mode, PV creation and binding are delayed. The corresponding PV is created and bound only when the PVC is used during workload creation. + +#. Create an application. + + a. In the navigation pane on the left, click **Workloads**. In the right pane, click the **Deployments** tab. + + b. Click **Create Workload** in the upper right corner. On the displayed page, click **Data Storage** in the **Container Settings** area and click **Add Volume** to select **PVC**. + + Mount and use storage volumes, as shown in :ref:`Table 1 `. For details about other parameters, see :ref:`Workloads `. + + .. _cce_10_0634__table2529244345: + + .. table:: **Table 1** Mounting a storage volume + + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+=============================================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | PVC | Select an existing local PV. | + | | | + | | A local PV cannot be repeatedly mounted to multiple workloads. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Mount Path | Enter a mount path, for example, **/tmp**. | + | | | + | | This parameter indicates the container path to which a data volume will be mounted. Do not mount the volume to a system directory such as **/** or **/var/run**. Otherwise, containers will be malfunctional. Mount the volume to an empty directory. If the directory is not empty, ensure that there are no files that affect container startup. Otherwise, the files will be replaced, causing container startup failures or workload creation failures. | + | | | + | | .. important:: | + | | | + | | NOTICE: | + | | If a volume is mounted to a high-risk directory, use an account with minimum permissions to start the container. Otherwise, high-risk files on the host may be damaged. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Subpath | Enter a subpath, for example, **tmp**, indicating that data in the mount path of the container will be stored in the **tmp** folder of the volume. | + | | | + | | A subpath is used to mount a local volume so that the same data volume is used in a single pod. If this parameter is left blank, the root path is used by default. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Permission | - **Read-only**: You can only read the data in the mounted volumes. | + | | - **Read/Write**: You can modify the data volumes mounted to the path. Newly written data is not migrated if the container is migrated, which may cause data loss. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + In this example, the disk is mounted to the **/data** path of the container. The container data generated in this path is stored in the local PV. + + c. After the configuration, click **Create Workload**. + + After the workload is created, the data in the container mount directory will be persistently stored. Verify the storage by referring to :ref:`Verifying Data Persistence `. + +(kubectl) Automatically Creating a Local PV +------------------------------------------- + +#. Use kubectl to connect to the cluster. +#. Use **StorageClass** to dynamically create a PVC and PV. + + a. Create the **pvc-local.yaml** file. + + .. code-block:: + + apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + name: pvc-local + namespace: default + spec: + accessModes: + - ReadWriteOnce # The local PV must adopt ReadWriteOnce. + resources: + requests: + storage: 10Gi # Size of the local PV. + storageClassName: csi-local-topology # StorageClass is local PV. + + .. table:: **Table 2** Key parameters + + +------------------+-----------+-----------------------------------------------------------------------------------+ + | Parameter | Mandatory | Description | + +==================+===========+===================================================================================+ + | storage | Yes | Requested capacity in the PVC, in Gi. | + +------------------+-----------+-----------------------------------------------------------------------------------+ + | storageClassName | Yes | Storage class name. The storage class name of local PV is **csi-local-topology**. | + +------------------+-----------+-----------------------------------------------------------------------------------+ + + b. Run the following command to create a PVC: + + .. code-block:: + + kubectl apply -f pvc-local.yaml + +#. Create an application. + + a. Create a file named **web-demo.yaml**. In this example, the local PV is mounted to the **/data** path. + + .. code-block:: + + apiVersion: apps/v1 + kind: StatefulSet + metadata: + name: web-local + namespace: default + spec: + replicas: 1 + selector: + matchLabels: + app: web-local + serviceName: web-local # Headless Service name. + template: + metadata: + labels: + app: web-local + spec: + containers: + - name: container-1 + image: nginx:latest + volumeMounts: + - name: pvc-disk #Volume name, which must be the same as the volume name in the volumes field. + mountPath: /data #Location where the storage volume is mounted. + imagePullSecrets: + - name: default-secret + volumes: + - name: pvc-disk #Volume name, which can be customized. + persistentVolumeClaim: + claimName: pvc-local #Name of the created PVC. + --- + apiVersion: v1 + kind: Service + metadata: + name: web-local # Headless Service name. + namespace: default + labels: + app: web-local + spec: + selector: + app: web-local + clusterIP: None + ports: + - name: web-local + targetPort: 80 + nodePort: 0 + port: 80 + protocol: TCP + type: ClusterIP + + b. Run the following command to create an application to which the local PV is mounted: + + .. code-block:: + + kubectl apply -f web-local.yaml + + After the workload is created, the data in the container mount directory will be persistently stored. Verify the storage by referring to :ref:`Verifying Data Persistence `. + +.. _cce_10_0634__section11593165910013: + +Verifying Data Persistence +-------------------------- + +#. View the deployed application and local files. + + a. Run the following command to view the created pod: + + .. code-block:: + + kubectl get pod | grep web-local + + Expected output: + + .. code-block:: + + web-local-0 1/1 Running 0 38s + + b. Run the following command to check whether the local PV has been mounted to the **/data** path: + + .. code-block:: + + kubectl exec web-local-0 -- df | grep data + + Expected output: + + .. code-block:: + + /dev/mapper/vg--everest--localvolume--persistent-pvc-local 10255636 36888 10202364 0% /data + + c. Run the following command to view the files in the **/data** path: + + .. code-block:: + + kubectl exec web-local-0 -- ls /data + + Expected output: + + .. code-block:: + + lost+found + +#. Run the following command to create a file named **static** in the **/data** path: + + .. code-block:: + + kubectl exec web-local-0 -- touch /data/static + +#. Run the following command to view the files in the **/data** path: + + .. code-block:: + + kubectl exec web-local-0 -- ls /data + + Expected output: + + .. code-block:: + + lost+found + static + +#. Run the following command to delete the pod named **web-local-0**: + + .. code-block:: + + kubectl delete pod web-local-0 + + Expected output: + + .. code-block:: + + pod "web-local-0" deleted + +#. After the deletion, the StatefulSet controller automatically creates a replica with the same name. Run the following command to check whether the files in the **/data** path have been modified: + + .. code-block:: + + kubectl exec web-local-0 -- ls /data + + Expected output: + + .. code-block:: + + lost+found + static + + If the **static** file still exists, the data in the local PV can be stored persistently. + +Related Operations +------------------ + +You can also perform the operations listed in :ref:`Table 3 `. + +.. _cce_10_0634__table1619535674020: + +.. table:: **Table 3** Related operations + + +-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Operation | Description | Procedure | + +=======================+====================================================================================================================================================+==============================================================================================================================================================+ + | Viewing events | You can view event names, event types, number of occurrences, Kubernetes events, first occurrence time, and last occurrence time of the PVC or PV. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** or **PersistentVolumes (PVs)** tab. | + | | | #. Click **View Events** in the **Operation** column of the target PVC or PV to view events generated within one hour (event data is retained for one hour). | + +-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Viewing a YAML file | You can view, copy, and download the YAML files of a PVC or PV. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** or **PersistentVolumes (PVs)** tab. | + | | | #. Click **View YAML** in the **Operation** column of the target PVC or PV to view or download the YAML. | + +-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/storage/object_storage_service_obs/configuring_obs_mount_options.rst b/umn/source/storage/object_storage_service_obs/configuring_obs_mount_options.rst new file mode 100644 index 0000000..fa0584e --- /dev/null +++ b/umn/source/storage/object_storage_service_obs/configuring_obs_mount_options.rst @@ -0,0 +1,171 @@ +:original_name: cce_10_0631.html + +.. _cce_10_0631: + +Configuring OBS Mount Options +============================= + +This section describes how to configure OBS volume mount options. You can configure mount options in a PV and bind the PV to a PVC. Alternatively, configure mount options in a StorageClass and use the StorageClass to create a PVC. In this way, PVs can be dynamically created and inherit mount options configured in the StorageClass by default. + +Prerequisites +------------- + +The everest add-on version must be **1.2.8 or later**. The add-on identifies the mount options and transfers them to the underlying storage resources, which determine whether the specified options are valid. + +Constraints +----------- + +Mount options cannot be configured for Kata containers. + +.. _cce_10_0631__section1254912109811: + +OBS Mount Options +----------------- + +When mounting an OBS volume, the everest add-on presets the options described in :ref:`Table 1 ` and :ref:`Table 2 ` by default. The options in :ref:`Table 1 ` are mandatory. + +.. _cce_10_0631__table1688593020213: + +.. table:: **Table 1** Mandatory mount options configured by default + + +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Value | Description | + +=======================+=======================+==========================================================================================================================================+ + | use_ino | Leave it blank. | If enabled, obsfs allocates the **inode** number. Enabled by default in read/write mode. | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------+ + | big_writes | Leave it blank. | If configured, the maximum size of the cache can be modified. | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------+ + | nonempty | Leave it blank. | Allows non-empty mount paths. | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------+ + | allow_other | Leave it blank. | Allows other users to access the parallel file system. | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------+ + | no_check_certificate | Leave it blank. | Disables server certificate verification. | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------+ + | enable_noobj_cache | Leave it blank. | Enables cache entries for objects that do not exist, which can improve performance. Enabled by default in object bucket read/write mode. | + | | | | + | | | **This option is no longer configured by default since everest 1.2.40.** | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------+ + | sigv2 | Leave it blank. | Specifies the signature version. Used by default in object buckets. | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------+ + +.. _cce_10_0631__table9886123010217: + +.. table:: **Table 2** Optional mount options configured by default + + +---------------------+-----------------+--------------------------------------------------------------------------------------------------------------------+ + | Parameter | Value | Description | + +=====================+=================+====================================================================================================================+ + | max_write | 131072 | This parameter is valid only when **big_writes** is configured. The recommended value is **128 KB**. | + +---------------------+-----------------+--------------------------------------------------------------------------------------------------------------------+ + | ssl_verify_hostname | 0 | Disables SSL certificate verification based on the host name. | + +---------------------+-----------------+--------------------------------------------------------------------------------------------------------------------+ + | max_background | 100 | Allows setting the maximum number of waiting requests in the background. Used by default in parallel file systems. | + +---------------------+-----------------+--------------------------------------------------------------------------------------------------------------------+ + | public_bucket | 1 | If set to **1**, public buckets are mounted anonymously. Enabled by default in object bucket read/write mode. | + +---------------------+-----------------+--------------------------------------------------------------------------------------------------------------------+ + | umask | Leave it blank. | Mask of the configuration file permission. | + +---------------------+-----------------+--------------------------------------------------------------------------------------------------------------------+ + +Configuring Mount Options in a PV +--------------------------------- + +You can use the **mountOptions** field to configure mount options in a PV. The options you can configure in **mountOptions** are listed in :ref:`OBS Mount Options `. + +#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. + +#. Configure mount options in a PV. Example: + + .. code-block:: + + apiVersion: v1 + kind: PersistentVolume + metadata: + annotations: + pv.kubernetes.io/provisioned-by: everest-csi-provisioner + everest.io/reclaim-policy: retain-volume-only # (Optional) The PV is deleted while the underlying volume is retained. + name: pv-obs # PV name. + spec: + accessModes: + - ReadWriteMany # Access mode. The value must be ReadWriteMany for OBS. + capacity: + storage: 1Gi # OBS volume capacity. + csi: + driver: obs.csi.everest.io # Dependent storage driver for the mounting. + fsType: obsfs # Instance type. + volumeHandle: # Name of the OBS volume. + volumeAttributes: + storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner + everest.io/obs-volume-type: STANDARD + everest.io/region: # Region where the OBS volume is. + nodePublishSecretRef: # Custom secret of the OBS volume. + name: # Custom secret name. + namespace: # Namespace of the custom secret. + persistentVolumeReclaimPolicy: Retain # Reclaim policy. + storageClassName: csi-obs # Storage class name. + mountOptions: # Mount options. + - umask=0027 + +#. After a PV is created, you can create a PVC and bind it to the PV, and then mount the PV to the container in the workload. For details, see :ref:`Using an Existing OBS Bucket Through a Static PV `. + +#. Check whether the mount options take effect. + + In this example, the PVC is mounted to the workload that uses the **nginx:latest** image. You can log in to the node where the pod to which the OBS volume is mounted resides and view the progress details. + + Run the following command: + + - Object bucket: **ps -ef \| grep s3fs** + + .. code-block:: + + root 22142 1 0 Jun03 ? 00:00:00 /usr/bin/s3fs {your_obs_name} /mnt/paas/kubernetes/kubelet/pods/{pod_uid}/volumes/kubernetes.io~csi/{your_pv_name}/mount -o url=https://{endpoint}:443 -o endpoint={region} -o passwd_file=/opt/everest-host-connector/***_obstmpcred/{your_obs_name} -o nonempty -o big_writes -o sigv2 -o allow_other -o no_check_certificate -o ssl_verify_hostname=0 -o umask=0027 -o max_write=131072 -o multipart_size=20 + + - Parallel file system: **ps -ef \| grep obsfs** + + .. code-block:: + + root 1355 1 0 Jun03 ? 00:03:16 /usr/bin/obsfs {your_obs_name} /mnt/paas/kubernetes/kubelet/pods/{pod_uid}/volumes/kubernetes.io~csi/{your_pv_name}/mount -o url=https://{endpoint}:443 -o endpoint={region} -o passwd_file=/opt/everest-host-connector/***_obstmpcred/{your_obs_name} -o allow_other -o nonempty -o big_writes -o use_ino -o no_check_certificate -o ssl_verify_hostname=0 -o max_background=100 -o umask=0027 -o max_write=131072 + +Configuring Mount Options in a StorageClass +------------------------------------------- + +You can use the **mountOptions** field to configure mount options in a StorageClass. The options you can configure in **mountOptions** are listed in :ref:`OBS Mount Options `. + +#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. + +#. Create a customized StorageClass. Example: + + .. code-block:: + + kind: StorageClass + apiVersion: storage.k8s.io/v1 + metadata: + name: csi-obs-mount-option + provisioner: everest-csi-provisioner + parameters: + csi.storage.k8s.io/csi-driver-name: obs.csi.everest.io + csi.storage.k8s.io/fstype: s3fs + everest.io/obs-volume-type: STANDARD + reclaimPolicy: Delete + volumeBindingMode: Immediate + mountOptions: # Mount options. + - umask=0027 + +#. After the StorageClass is configured, you can use it to create a PVC. By default, the dynamically created PVs inherit the mount options configured in the StorageClass. For details, see :ref:`Using an OBS Bucket Through a Dynamic PV `. + +#. Check whether the mount options take effect. + + In this example, the PVC is mounted to the workload that uses the **nginx:latest** image. You can log in to the node where the pod to which the OBS volume is mounted resides and view the progress details. + + Run the following command: + + - Object bucket: **ps -ef \| grep s3fs** + + .. code-block:: + + root 22142 1 0 Jun03 ? 00:00:00 /usr/bin/s3fs {your_obs_name} /mnt/paas/kubernetes/kubelet/pods/{pod_uid}/volumes/kubernetes.io~csi/{your_pv_name}/mount -o url=https://{endpoint}:443 -o endpoint={region} -o passwd_file=/opt/everest-host-connector/***_obstmpcred/{your_obs_name} -o nonempty -o big_writes -o sigv2 -o allow_other -o no_check_certificate -o ssl_verify_hostname=0 -o umask=0027 -o max_write=131072 -o multipart_size=20 + + - Parallel file system: **ps -ef \| grep obsfs** + + .. code-block:: + + root 1355 1 0 Jun03 ? 00:03:16 /usr/bin/obsfs {your_obs_name} /mnt/paas/kubernetes/kubelet/pods/{pod_uid}/volumes/kubernetes.io~csi/{your_pv_name}/mount -o url=https://{endpoint}:443 -o endpoint={region} -o passwd_file=/opt/everest-host-connector/***_obstmpcred/{your_obs_name} -o allow_other -o nonempty -o big_writes -o use_ino -o no_check_certificate -o ssl_verify_hostname=0 -o max_background=100 -o umask=0027 -o max_write=131072 diff --git a/umn/source/storage/object_storage_service_obs/index.rst b/umn/source/storage/object_storage_service_obs/index.rst new file mode 100644 index 0000000..99f7a14 --- /dev/null +++ b/umn/source/storage/object_storage_service_obs/index.rst @@ -0,0 +1,22 @@ +:original_name: cce_10_0160.html + +.. _cce_10_0160: + +Object Storage Service (OBS) +============================ + +- :ref:`Overview ` +- :ref:`Using an Existing OBS Bucket Through a Static PV ` +- :ref:`Using an OBS Bucket Through a Dynamic PV ` +- :ref:`Configuring OBS Mount Options ` +- :ref:`Using a Custom Access Key (AK/SK) to Mount an OBS Volume ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + overview + using_an_existing_obs_bucket_through_a_static_pv + using_an_obs_bucket_through_a_dynamic_pv + configuring_obs_mount_options + using_a_custom_access_key_ak_sk_to_mount_an_obs_volume diff --git a/umn/source/storage/object_storage_service_obs/overview.rst b/umn/source/storage/object_storage_service_obs/overview.rst new file mode 100644 index 0000000..00f9d51 --- /dev/null +++ b/umn/source/storage/object_storage_service_obs/overview.rst @@ -0,0 +1,36 @@ +:original_name: cce_10_0628.html + +.. _cce_10_0628: + +Overview +======== + +Introduction +------------ + +Object Storage Service (OBS) provides massive, secure, and cost-effective data storage capabilities for you to store data of any type and size. You can use it in enterprise backup/archiving, video on demand (VoD), video surveillance, and many other scenarios. + +- **Standard APIs**: With HTTP RESTful APIs, OBS allows you to use client tools or third-party tools to access object storage. +- **Data sharing**: Servers, embedded devices, and IoT devices can use the same path to access shared object data in OBS. +- **Public/Private networks**: OBS allows data to be accessed from public networks to meet Internet application requirements. +- **Capacity and performance**: No capacity limit; high performance (read/write I/O latency within 10 ms). +- **Use cases**: Deployments/StatefulSets in the **ReadOnlyMany** mode and jobs created for big data analysis, static website hosting, online VOD, gene sequencing, intelligent video surveillance, backup and archiving, and enterprise cloud boxes (web disks). You can create object storage by using the OBS console, tools, and SDKs. + +OBS Specifications +------------------ + +OBS provides multiple storage classes to meet customers' requirements on storage performance and costs. + +- Parallel File System (PFS, **recommended**): It is an optimized high-performance file system provided by OBS. It provides millisecond-level access latency, TB/s-level bandwidth, and million-level IOPS, and can quickly process HPC workloads. PFS outperforms OBS buckets. +- Object bucket (**not recommended**): + + - Standard: features low latency and high throughput. It is therefore good for storing frequently (multiple times per month) accessed files or small files (less than 1 MB). Its application scenarios include big data analytics, mobile apps, hot videos, and social apps. + - OBS Infrequent Access: applicable to storing semi-frequently accessed (less than 12 times a year) data requiring quick response. Its application scenarios include file synchronization or sharing, and enterprise-level backup. This storage class has the same durability, low latency, and high throughput as the Standard storage class, with a lower cost, but its availability is slightly lower than the Standard storage class. + +Application Scenarios +--------------------- + +OBS supports the following mounting modes based on application scenarios: + +- :ref:`Using an Existing OBS Bucket Through a Static PV `: static creation mode, where you use an existing OBS volume to create a PV and then mount storage to the workload through a PVC. This mode applies to scenarios where the underlying storage is available. +- :ref:`Using an OBS Bucket Through a Dynamic PV `: dynamic creation mode, where you do not need to create OBS volumes in advance. Instead, specify a StorageClass during PVC creation and an OBS volume and a PV will be automatically created. This mode applies to scenarios where no underlying storage is available. diff --git a/umn/source/storage/using_a_custom_ak_sk_to_mount_an_obs_volume.rst b/umn/source/storage/object_storage_service_obs/using_a_custom_access_key_ak_sk_to_mount_an_obs_volume.rst similarity index 88% rename from umn/source/storage/using_a_custom_ak_sk_to_mount_an_obs_volume.rst rename to umn/source/storage/object_storage_service_obs/using_a_custom_access_key_ak_sk_to_mount_an_obs_volume.rst index 5a399b0..5292292 100644 --- a/umn/source/storage/using_a_custom_ak_sk_to_mount_an_obs_volume.rst +++ b/umn/source/storage/object_storage_service_obs/using_a_custom_access_key_ak_sk_to_mount_an_obs_volume.rst @@ -2,13 +2,13 @@ .. _cce_10_0336: -Using a Custom AK/SK to Mount an OBS Volume -=========================================== +Using a Custom Access Key (AK/SK) to Mount an OBS Volume +======================================================== Scenario -------- -You can solve this issue by using Everest 1.2.8 and later versions to use custom access keys for different IAM users. +You can solve this issue by using everest 1.2.8 or later to use custom access keys for different IAM users. Prerequisites ------------- @@ -19,14 +19,15 @@ Prerequisites Constraints ----------- -Custom access keys cannot be configured for secure containers. +- When an OBS volume is mounted using a custom access key (AK/SK), the access key cannot be deleted or disabled. Otherwise, the service container cannot access the mounted OBS volume. +- Custom access keys cannot be configured for Kata containers. Disabling Auto Key Mounting --------------------------- The key you uploaded is used by default when mounting an OBS volume. That is, all IAM users under your account will use the same key to mount OBS buckets, and they have the same permissions on buckets. This setting does not allow you to configure differentiated permissions for different IAM users. -If you have uploaded the AK/SK, you are advised to disable the automatic mounting of access keys by enabling the **disable_auto_mount_secret** parameter in the everest add-on to prevent IAM users from performing unauthorized operations. In this way, the access keys uploaded on the console will not be used when creating OBS volumes. +If you have uploaded the AK/SK, disable the automatic mounting of access keys by enabling the **disable_auto_mount_secret** parameter in the everest add-on to prevent IAM users from performing unauthorized operations. In this way, the access keys uploaded on the console will not be used when creating OBS volumes. .. note:: @@ -41,6 +42,8 @@ Search for **disable-auto-mount-secret** and set it to **true**. Run **:wq** to save the settings and exit. Wait until the pod is restarted. +.. _cce_10_0336__section4633162355911: + Obtaining an Access Key ----------------------- @@ -48,7 +51,7 @@ Obtaining an Access Key #. Hover the cursor over the username in the upper right corner and choose **My Credentials** from the drop-down list. #. In the navigation pane, choose **Access Keys**. #. Click **Create Access Key**. The **Create Access Key** dialog box is displayed. -#. Click **OK** to download the AK/SK. +#. Click **OK** to download the access key. Creating a Secret Using an Access Key ------------------------------------- @@ -81,23 +84,23 @@ Creating a Secret Using an Access Key Specifically: - +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+================================================================================================================================+ - | access.key | Base64-encoded AK. | - +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------+ - | secret.key | Base64-encoded SK. | - +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------+ - | name | Secret name. | - +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------+ - | namespace | Namespace of the secret. | - +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------+ - | secret.kubernetes.io/used-by: csi | You need to add this label in the YAML file if you want to make it available on the CCE console when you create an OBS PV/PVC. | - +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------+ - | type | Secret type. The value must be **cfe/secure-opaque**. | - | | | - | | When this type is used, the data entered by users is automatically encrypted. | - +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------+ + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+====================================================================================================================+ + | access.key | Base64-encoded AK. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------+ + | secret.key | Base64-encoded SK. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------+ + | name | Secret name. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------+ + | namespace | Namespace of the secret. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------+ + | secret.kubernetes.io/used-by: csi | Add this label in the YAML file if you want to make it available on the CCE console when you create an OBS PV/PVC. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------+ + | type | Secret type. The value must be **cfe/secure-opaque**. | + | | | + | | When this type is used, the data entered by users is automatically encrypted. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------+ #. Create the secret. @@ -152,7 +155,7 @@ After a secret is created using the AK/SK, you can associate the secret with the | volumeHandle | OBS bucket name. | +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -#. Create the PV. +#. Create a PV. **kubectl create -f pv-example.yaml** @@ -191,7 +194,7 @@ After a secret is created using the AK/SK, you can associate the secret with the csi.storage.k8s.io/node-publish-secret-namespace Namespace of the secret ================================================ ======================= -#. Create the PVC. +#. Create a PVC. **kubectl create -f pvc-example.yaml** @@ -231,7 +234,7 @@ When dynamically creating an OBS volume, you can use the following method to spe csi.storage.k8s.io/node-publish-secret-namespace Namespace of the secret ================================================ ======================= -#. Create the PVC. +#. Create a PVC. **kubectl create -f pvc-example.yaml** @@ -256,7 +259,7 @@ You can use a secret of an IAM user to mount an OBS volume. Assume that a worklo **kubectl exec obs-secret-5cd558f76f-vxslv -- ls -l /temp/** -#. Write data into the mount path. In this example, the write operation fails. +#. Write data into the mount path. In this example, the write operation failed. **kubectl exec obs-secret-5cd558f76f-vxslv -- touch /temp/test** @@ -271,7 +274,7 @@ You can use a secret of an IAM user to mount an OBS volume. Assume that a worklo |image2| -#. Write data into the mouth path again. In this example, the write operation succeeded. +#. Write data into the mount path again. In this example, the write operation succeeded. **kubectl exec obs-secret-5cd558f76f-vxslv -- touch /temp/test** @@ -285,5 +288,5 @@ You can use a secret of an IAM user to mount an OBS volume. Assume that a worklo -rwxrwxrwx 1 root root 0 Jun 7 01:52 test -.. |image1| image:: /_static/images/en-us_image_0000001715987941.png -.. |image2| image:: /_static/images/en-us_image_0000001569022933.png +.. |image1| image:: /_static/images/en-us_image_0000001695896633.png +.. |image2| image:: /_static/images/en-us_image_0000001695737357.png diff --git a/umn/source/storage/object_storage_service_obs/using_an_existing_obs_bucket_through_a_static_pv.rst b/umn/source/storage/object_storage_service_obs/using_an_existing_obs_bucket_through_a_static_pv.rst new file mode 100644 index 0000000..8fd2262 --- /dev/null +++ b/umn/source/storage/object_storage_service_obs/using_an_existing_obs_bucket_through_a_static_pv.rst @@ -0,0 +1,530 @@ +:original_name: cce_10_0379.html + +.. _cce_10_0379: + +Using an Existing OBS Bucket Through a Static PV +================================================ + +This section describes how to use an existing Object Storage Service (OBS) bucket to statically create PVs and PVCs and implement data persistence and sharing in workloads. + +Prerequisites +------------- + +- You have created a cluster and installed the CSI add-on (:ref:`everest `) in the cluster. +- If you want to create a cluster using commands, use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. +- You have created an OBS bucket. An OBS bucket of the parallel file system type can be selected only when it is in the same region as the cluster. + +Constraints +----------- + +- Kata containers do not support OBS volumes. + +- When parallel file systems and object buckets are used, the group and permission of the mount point cannot be modified. + +- CCE allows you to use OBS parallel file systems by calling the OBS SDK or mounting a PVC through the **obsfs** tool provided by OBS. Each time an OBS parallel file system is mounted, an obsfs resident process is generated, as shown in the following figure. + + + .. figure:: /_static/images/en-us_image_0000001647417468.png + :alt: **Figure 1** obsfs resident process + + **Figure 1** obsfs resident process + + Reserve 1 GiB of memory for each obsfs process. For example, for a node with 4 vCPUs and 8 GiB of memory, the obsfs parallel file system should be mounted to **no more than** eight pods. + + .. note:: + + An obsfs resident process runs on a node. If the consumed memory exceeds the upper limit of the node, the node malfunctions. On a node with 4 vCPUs and 8 GiB of memory, if more than 100 pods are mounted to parallel file systems, the node will be unavailable. Control the number of pods mounted to parallel file systems on a single node. + +- Multiple PVs can use the same OBS storage volume with the following restrictions: + + - If multiple PVCs/PVs use the same underlying object storage volume, when you attempt to mount the volume to the same pod, the operation will fail because the **volumeHandle** values of these PVs are the same. + - The **persistentVolumeReclaimPolicy** parameter in the PVs must be set to **Retain**. Otherwise, when a PV is deleted, the associated underlying volume may be deleted. In this case, other PVs associated with the underlying volume malfunction. + - When the underlying volume is repeatedly used, enable isolation and protection for ReadWriteMany at the application layer to prevent data overwriting and loss. + +Using an Existing OBS Bucket on the Console +------------------------------------------- + +#. Log in to the CCE console and click the cluster name to access the cluster console. +#. Statically create a PVC and PV. + + a. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** tab. Click **Create PVC** in the upper right corner. In the dialog box displayed, configure the PVC parameters. + + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+=====================================================================================================================================================================================================================+ + | PVC Type | In this section, select **OBS**. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PVC Name | Enter the PVC name, which must be unique in the same namespace. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Creation Method | - If underlying storage is available, create a storage volume or use an existing storage volume to statically create a PVC based on whether a PV has been created. | + | | - If no underlying storage is available, select **Dynamically provision**. For details, see :ref:`Using an OBS Bucket Through a Dynamic PV `. | + | | | + | | In this example, select **Create new** to create a PV and PVC at the same time on the console. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PV\ :sup:`a` | Select an existing PV volume in the cluster. Create a PV in advance. For details, see "Creating a storage volume" in :ref:`Related Operations `. | + | | | + | | You do not need to specify this parameter in this example. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | OBS\ :sup:`b` | Click **Select OBS**. On the displayed page, select the OBS bucket that meets your requirements and click **OK**. | + | | | + | | .. note:: | + | | | + | | Currently, only parallel file systems are supported. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PV Name\ :sup:`b` | Enter the PV name, which must be unique in the same cluster. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Access Mode\ :sup:`b` | OBS volumes support only **ReadWriteMany**, indicating that a storage volume can be mounted to multiple nodes in read/write mode. For details, see :ref:`Volume Access Modes `. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Reclaim Policy\ :sup:`b` | You can select **Delete** or **Retain** to specify the reclaim policy of the underlying storage when the PVC is deleted. For details, see :ref:`PV Reclaim Policy `. | + | | | + | | .. note:: | + | | | + | | If multiple PVs use the same OBS volume, use **Retain** to avoid cascading deletion of underlying volumes. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Secret\ :sup:`b` | **Custom**: Customize a secret if you want to assign different user permissions to different OBS storage devices. For details, see :ref:`Using a Custom Access Key (AK/SK) to Mount an OBS Volume `. | + | | | + | | Only secrets with the **secret.kubernetes.io/used-by = csi** label can be selected. The secret type is cfe/secure-opaque. If no secret is available, click **Create Secret** to create one. | + | | | + | | - **Name**: Enter a secret name. | + | | - **Namespace**: Select the namespace where the secret is. | + | | - **Access Key (AK/SK)**: Upload a key file in .csv format. For details, see :ref:`Obtaining an Access Key `. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Mount Options\ :sup:`b` | Enter the mounting parameter key-value pairs. For details, see :ref:`Configuring OBS Mount Options `. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: + + a: The parameter is available when **Creation Method** is set to **Use existing**. + + b: The parameter is available when **Creation Method** is set to **Create new**. + + b. Click **Create** to create a PVC and a PV. + + You can choose **Storage** in the navigation pane and view the created PVC and PV on the **PersistentVolumeClaims (PVCs)** and **PersistentVolumes (PVs)** tab pages. + +#. Create an application. + + a. In the navigation pane on the left, click **Workloads**. In the right pane, click the **Deployments** tab. + + b. Click **Create Workload** in the upper right corner. On the displayed page, click **Data Storage** in the **Container Settings** area and click **Add Volume** to select **PVC**. + + Mount and use storage volumes, as shown in :ref:`Table 1 `. For details about other parameters, see :ref:`Workloads `. + + .. _cce_10_0379__table2529244345: + + .. table:: **Table 1** Mounting a storage volume + + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+=============================================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | PVC | Select an existing object storage volume. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Mount Path | Enter a mount path, for example, **/tmp**. | + | | | + | | This parameter indicates the container path to which a data volume will be mounted. Do not mount the volume to a system directory such as **/** or **/var/run**. Otherwise, containers will be malfunctional. Mount the volume to an empty directory. If the directory is not empty, ensure that there are no files that affect container startup. Otherwise, the files will be replaced, causing container startup failures or workload creation failures. | + | | | + | | .. important:: | + | | | + | | NOTICE: | + | | If a volume is mounted to a high-risk directory, use an account with minimum permissions to start the container. Otherwise, high-risk files on the host may be damaged. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Subpath | Enter a subpath, for example, **tmp**, indicating that data in the mount path of the container will be stored in the **tmp** folder of the volume. | + | | | + | | A subpath is used to mount a local volume so that the same data volume is used in a single pod. If this parameter is left blank, the root path is used by default. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Permission | - **Read-only**: You can only read the data in the mounted volumes. | + | | - **Read/Write**: You can modify the data volumes mounted to the path. Newly written data is not migrated if the container is migrated, which may cause data loss. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + In this example, the disk is mounted to the **/data** path of the container. The container data generated in this path is stored in the OBS volume. + + c. After the configuration, click **Create Workload**. + + After the workload is created, the data in the container mount directory will be persistently stored. Verify the storage by referring to :ref:`PV Reclaim Policy `. + +(kubectl) Using an Existing OBS Bucket +-------------------------------------- + +#. Use kubectl to connect to the cluster. +#. Create a PV. + + a. .. _cce_10_0379__li162841212145314: + + Create the **pv-obs.yaml** file. + + .. code-block:: + + apiVersion: v1 + kind: PersistentVolume + metadata: + annotations: + pv.kubernetes.io/provisioned-by: everest-csi-provisioner + everest.io/reclaim-policy: retain-volume-only # (Optional) The PV is deleted while the underlying volume is retained. + name: pv-obs # PV name. + spec: + accessModes: + - ReadWriteMany # Access mode. The value must be ReadWriteMany for OBS. + capacity: + storage: 1Gi # OBS volume capacity. + csi: + driver: obs.csi.everest.io # Dependent storage driver for the mounting. + driver: obs.csi.everest.io # Instance type. + volumeHandle: # Name of the OBS volume. + volumeAttributes: + storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner + everest.io/obs-volume-type: STANDARD + everest.io/region: # Region where the OBS volume is. + nodePublishSecretRef: # Custom secret of the OBS volume. + name: # Custom secret name. + namespace: # Namespace of the custom secret. + persistentVolumeReclaimPolicy: Retain # Reclaim policy. + storageClassName: csi-obs # Storage class name. + mountOptions: [] # Mount options. + + .. table:: **Table 2** Key parameters + + +-----------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Mandatory | Description | + +===============================================+=======================+=====================================================================================================================================================================================================================================================================================================+ + | everest.io/reclaim-policy: retain-volume-only | No | Optional. | + | | | | + | | | Currently, only **retain-volume-only** is supported. | + | | | | + | | | This field is valid only when the everest version is 1.2.9 or later and the reclaim policy is **Delete**. If the reclaim policy is **Delete** and the current value is **retain-volume-only**, the associated PV is deleted while the underlying storage volume is retained, when a PVC is deleted. | + +-----------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | fsType | Yes | Instance type. The value can be **obsfs** or **s3fs**. | + | | | | + | | | - **obsfs**: Parallel file system, which is mounted using obsfs (recommended). | + | | | - **s3fs**: Object bucket, which is mounted using s3fs. | + +-----------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | volumeHandle | Yes | OBS volume name. | + +-----------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | everest.io/obs-volume-type | Yes | OBS storage class. | + | | | | + | | | - If **fsType** is set to **s3fs**, **STANDARD** (standard bucket) and **WARM** (infrequent access bucket) are supported. | + | | | - This parameter is invalid when **fsType** is set to **obsfs**. | + +-----------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | everest.io/region | Yes | Region where the OBS bucket is deployed. | + | | | | + | | | For details about the value of **region**, see `Regions and Endpoints `__. | + +-----------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | nodePublishSecretRef | No | Access key (AK/SK) used for mounting the object storage volume. You can use the AK/SK to create a secret and mount it to the PV. For details, see :ref:`Using a Custom Access Key (AK/SK) to Mount an OBS Volume `. | + | | | | + | | | An example is as follows: | + | | | | + | | | .. code-block:: | + | | | | + | | | nodePublishSecretRef: | + | | | name: secret-demo | + | | | namespace: default | + +-----------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | mountOptions | No | Mount options. For details, see :ref:`Configuring OBS Mount Options `. | + +-----------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | persistentVolumeReclaimPolicy | Yes | A reclaim policy is supported when the cluster version is or later than 1.19.10 and the everest version is or later than 1.2.9. | + | | | | + | | | The **Delete** and **Retain** reclaim policies are supported. For details, see :ref:`PV Reclaim Policy `. If multiple PVs use the same OBS volume, use **Retain** to avoid cascading deletion of underlying volumes. | + | | | | + | | | **Delete**: | + | | | | + | | | - If **everest.io/reclaim-policy** is not specified, both the PV and storage resources are deleted when a PVC is deleted. | + | | | - If **everest.io/reclaim-policy** is set to **retain-volume-only**, when a PVC is deleted, the PV is deleted but the storage resources are retained. | + | | | | + | | | **Retain**: When a PVC is deleted, the PV and underlying storage resources are not deleted. Instead, you must manually delete these resources. After that, the PV is in the **Released** status and cannot be bound to the PVC again. | + +-----------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | storage | Yes | Storage capacity, in Gi. | + | | | | + | | | For OBS buckets, this field is used only for verification (cannot be empty or 0). Its value is fixed at **1**, and any value you set does not take effect for OBS buckets. | + +-----------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | storageClassName | Yes | The storage class name of OBS volumes is **csi-obs**. | + +-----------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + b. Run the following command to create a PV: + + .. code-block:: + + kubectl apply -f pv-obs.yaml + +#. Create a PVC. + + a. Create the **pvc-obs.yaml** file. + + .. code-block:: + + apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + name: pvc-obs + namespace: default + annotations: + volume.beta.kubernetes.io/storage-provisioner: everest-csi-provisioner + everest.io/obs-volume-type: STANDARD + csi.storage.k8s.io/fstype: obsfs + csi.storage.k8s.io/node-publish-secret-name: # Custom secret name. + csi.storage.k8s.io/node-publish-secret-namespace: # Namespace of the custom secret. + spec: + accessModes: + - ReadWriteMany # The value must be ReadWriteMany for OBS. + resources: + requests: + storage: 1Gi + storageClassName: csi-obs # Storage class name, which must be the same as that of the PV. + volumeName: pv-obs # PV name. + + .. table:: **Table 3** Key parameters + + +--------------------------------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Mandatory | Description | + +==================================================+=======================+============================================================================================================================================================+ + | csi.storage.k8s.io/node-publish-secret-name | No | Name of the custom secret specified in the PV. | + +--------------------------------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | csi.storage.k8s.io/node-publish-secret-namespace | No | Namespace of the custom secret specified in the PV. | + +--------------------------------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | storage | Yes | Requested capacity in the PVC, in Gi. | + | | | | + | | | For OBS, this field is used only for verification (cannot be empty or 0). Its value is fixed at **1**, and any value you set does not take effect for OBS. | + +--------------------------------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | storageClassName | Yes | Storage class name, which must be the same as the storage class of the PV in :ref:`1 `. | + | | | | + | | | The storage class name of OBS volumes is **csi-obs**. | + +--------------------------------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | volumeName | Yes | PV name, which must be the same as the PV name in :ref:`1 `. | + +--------------------------------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + b. Run the following command to create a PVC: + + .. code-block:: + + kubectl apply -f pvc-obs.yaml + +#. Create an application. + + a. Create a file named **web-demo.yaml**. In this example, the OBS volume is mounted to the **/data** path. + + .. code-block:: + + apiVersion: apps/v1 + kind: Deployment + metadata: + name: web-demo + namespace: default + spec: + replicas: 2 + selector: + matchLabels: + app: web-demo + template: + metadata: + labels: + app: web-demo + spec: + containers: + - name: container-1 + image: nginx:latest + volumeMounts: + - name: pvc-obs-volume #Volume name, which must be the same as the volume name in the volumes field. + mountPath: /data #Location where the storage volume is mounted. + imagePullSecrets: + - name: default-secret + volumes: + - name: pvc-obs-volume #Volume name, which can be customized. + persistentVolumeClaim: + claimName: pvc-obs #Name of the created PVC. + + b. Run the following command to create an application to which the OBS volume is mounted: + + .. code-block:: + + kubectl apply -f web-demo.yaml + + After the workload is created, you can try :ref:`Verifying Data Persistence and Sharing `. + +.. _cce_10_0379__section11593165910013: + +Verifying Data Persistence and Sharing +-------------------------------------- + +#. View the deployed applications and files. + + a. Run the following command to view the created pod: + + .. code-block:: + + kubectl get pod | grep web-demo + + Expected output: + + .. code-block:: + + web-demo-846b489584-mjhm9 1/1 Running 0 46s + web-demo-846b489584-wvv5s 1/1 Running 0 46s + + b. Run the following commands in sequence to view the files in the **/data** path of the pods: + + .. code-block:: + + kubectl exec web-demo-846b489584-mjhm9 -- ls /data + kubectl exec web-demo-846b489584-wvv5s -- ls /data + + If no result is returned for both pods, no file exists in the **/data** path. + +#. Run the following command to create a file named **static** in the **/data** path: + + .. code-block:: + + kubectl exec web-demo-846b489584-mjhm9 -- touch /data/static + +#. Run the following command to view the files in the **/data** path: + + .. code-block:: + + kubectl exec web-demo-846b489584-mjhm9 -- ls /data + + Expected output: + + .. code-block:: + + static + +#. **Verify data persistence.** + + a. Run the following command to delete the pod named **web-demo-846b489584-mjhm9**: + + .. code-block:: + + kubectl delete pod web-demo-846b489584-mjhm9 + + Expected output: + + .. code-block:: + + pod "web-demo-846b489584-mjhm9" deleted + + After the deletion, the Deployment controller automatically creates a replica. + + b. Run the following command to view the created pod: + + .. code-block:: + + kubectl get pod | grep web-demo + + The expected output is as follows, in which **web-demo-846b489584-d4d4j** is the newly created pod: + + .. code-block:: + + web-demo-846b489584-d4d4j 1/1 Running 0 110s + web-demo-846b489584-wvv5s 1/1 Running 0 7m50s + + c. Run the following command to check whether the files in the **/data** path of the new pod have been modified: + + .. code-block:: + + kubectl exec web-demo-846b489584-d4d4j -- ls /data + + Expected output: + + .. code-block:: + + static + + If the **static** file still exists, the data can be stored persistently. + +#. **Verify data sharing.** + + a. Run the following command to view the created pod: + + .. code-block:: + + kubectl get pod | grep web-demo + + Expected output: + + .. code-block:: + + web-demo-846b489584-d4d4j 1/1 Running 0 7m + web-demo-846b489584-wvv5s 1/1 Running 0 13m + + b. Run the following command to create a file named **share** in the **/data** path of either pod: In this example, select the pod named **web-demo-846b489584-d4d4j**. + + .. code-block:: + + kubectl exec web-demo-846b489584-d4d4j -- touch /data/share + + Check the files in the **/data** path of the pod. + + .. code-block:: + + kubectl exec web-demo-846b489584-d4d4j -- ls /data + + Expected output: + + .. code-block:: + + share + static + + c. Check whether the **share** file exists in the **/data** path of another pod (**web-demo-846b489584-wvv5s**) as well to verify data sharing. + + .. code-block:: + + kubectl exec web-demo-846b489584-wvv5s -- ls /data + + Expected output: + + .. code-block:: + + share + static + + After you create a file in the **/data** path of a pod, if the file is also created in the **/data** path of another pods, the two pods share the same volume. + +.. _cce_10_0379__section16505832153318: + +Related Operations +------------------ + +You can also perform the operations listed in :ref:`Table 4 `. + +.. _cce_10_0379__table1619535674020: + +.. table:: **Table 4** Related operations + + +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Operation | Description | Procedure | + +================================+====================================================================================================================================================+============================================================================================================================================================================================================================================+ + | Creating a storage volume (PV) | Create a PV on the CCE console. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumes (PVs)** tab. Click **Create Volume** in the upper right corner. In the dialog box displayed, configure the parameters. | + | | | | + | | | - **Volume Type**: Select **OBS**. | + | | | | + | | | - **OBS**: Click **Select OBS**. On the displayed page, select the OBS storage that meets your requirements and click **OK**. | + | | | | + | | | - **PV Name**: Enter the PV name, which must be unique in the same cluster. | + | | | | + | | | - **Access Mode**: SFS volumes support only **ReadWriteMany**, indicating that a storage volume can be mounted to multiple nodes in read/write mode. For details, see :ref:`Volume Access Modes `. | + | | | | + | | | - **Reclaim Policy**: **Delete** or **Retain**. For details, see :ref:`PV Reclaim Policy `. | + | | | | + | | | .. note:: | + | | | | + | | | If multiple PVs use the same underlying storage volume, use **Retain** to prevent the underlying volume from being deleted with a PV. | + | | | | + | | | - **Custom**: Customize a secret if you want to assign different user permissions to different OBS storage devices. For details, see :ref:`Using a Custom Access Key (AK/SK) to Mount an OBS Volume `. | + | | | | + | | | Only secrets with the **secret.kubernetes.io/used-by = csi** label can be selected. The secret type is cfe/secure-opaque. If no secret is available, click **Create Secret** to create one. | + | | | | + | | | - **Mount Options**: Enter the mounting parameter key-value pairs. For details, see :ref:`Configuring OBS Mount Options `. | + | | | | + | | | #. Click **Create**. | + +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Updating an access key | Update the access key of object storage on the CCE console. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** tab. Click **More** > **Update Access Key** in the **Operation** column of the PVC. | + | | | #. Upload a key file in .csv format. For details, see :ref:`Obtaining an Access Key `. Click **OK**. | + | | | | + | | | .. note:: | + | | | | + | | | After a global access key is updated, all pods mounted with the object storage that uses this access key can be accessed only after being restarted. | + +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Viewing events | You can view event names, event types, number of occurrences, Kubernetes events, first occurrence time, and last occurrence time of the PVC or PV. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** or **PersistentVolumes (PVs)** tab. | + | | | #. Click **View Events** in the **Operation** column of the target PVC or PV to view events generated within one hour (event data is retained for one hour). | + +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Viewing a YAML file | You can view, copy, and download the YAML files of a PVC or PV. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** or **PersistentVolumes (PVs)** tab. | + | | | #. Click **View YAML** in the **Operation** column of the target PVC or PV to view or download the YAML. | + +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/storage/object_storage_service_obs/using_an_obs_bucket_through_a_dynamic_pv.rst b/umn/source/storage/object_storage_service_obs/using_an_obs_bucket_through_a_dynamic_pv.rst new file mode 100644 index 0000000..fa6d0aa --- /dev/null +++ b/umn/source/storage/object_storage_service_obs/using_an_obs_bucket_through_a_dynamic_pv.rst @@ -0,0 +1,385 @@ +:original_name: cce_10_0630.html + +.. _cce_10_0630: + +Using an OBS Bucket Through a Dynamic PV +======================================== + +This section describes how to automatically create an OBS bucket. It is applicable when no underlying storage volume is available. + +Constraints +----------- + +- Kata containers do not support OBS volumes. + +- When parallel file systems and object buckets are used, the group and permission of the mount point cannot be modified. + +- CCE allows you to use OBS parallel file systems by calling the OBS SDK or mounting a PVC through the **obsfs** tool provided by OBS. Each time an OBS parallel file system is mounted, an obsfs resident process is generated, as shown in the following figure. + + + .. figure:: /_static/images/en-us_image_0000001647417468.png + :alt: **Figure 1** obsfs resident process + + **Figure 1** obsfs resident process + + Reserve 1 GiB of memory for each obsfs process. For example, for a node with 4 vCPUs and 8 GiB of memory, the obsfs parallel file system should be mounted to **no more than** eight pods. + + .. note:: + + An obsfs resident process runs on a node. If the consumed memory exceeds the upper limit of the node, the node malfunctions. On a node with 4 vCPUs and 8 GiB of memory, if more than 100 pods are mounted to parallel file systems, the node will be unavailable. Control the number of pods mounted to parallel file systems on a single node. + +- OBS allows a single user to create a maximum of 100 buckets. If a large number of dynamic PVCs are created, the number of buckets may exceed the upper limit. As a result, no more OBS buckets can be created. In this scenario, use OBS through the OBS API or SDK and do not mount OBS buckets to the workload on the console. + +Automatically Creating an OBS Volume on the Console +--------------------------------------------------- + +#. Log in to the CCE console and click the cluster name to access the cluster console. +#. Dynamically create a PVC and PV. + + a. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** tab. Click **Create PVC** in the upper right corner. In the dialog box displayed, configure the PVC parameters. + + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+=============================================================================================================================================================================================================================================================+ + | PVC Type | In this section, select **OBS**. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PVC Name | Enter the PVC name, which must be unique in the same namespace. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Creation Method | - If no underlying storage is available, select **Dynamically provision** to create a PVC, PV, and underlying storage on the console in cascading mode. | + | | - If underlying storage is available, create a storage volume or use an existing storage volume to statically create a PVC based on whether a PV has been created. For details, see :ref:`Using an Existing OBS Bucket Through a Static PV `. | + | | | + | | In this example, select **Dynamically provision**. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Storage Classes | The storage class of OBS volumes is **csi-obs**. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Instance Type | - **Parallel file system**: a high-performance file system provided by OBS. It provides millisecond-level access latency, TB/s-level bandwidth, and million-level IOPS. **Parallel file systems are recommended.** | + | | - **Object bucket**: a container that stores objects in OBS. All objects in a bucket are at the same logical level. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | OBS Class | You can select the following object bucket types: | + | | | + | | - **Standard**: Applicable when a large number of hotspot files or small-sized files need to be accessed frequently (multiple times per month on average) and require fast access response. | + | | - **Infrequent access**: Applicable when data is not frequently accessed (fewer than 12 times per year on average) but requires fast access response. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Access Mode | OBS volumes support only **ReadWriteMany**, indicating that a storage volume can be mounted to multiple nodes in read/write mode. For details, see :ref:`Volume Access Modes `. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Secret | **Custom**: Customize a secret if you want to assign different user permissions to different OBS storage devices. For details, see :ref:`Using a Custom Access Key (AK/SK) to Mount an OBS Volume `. | + | | | + | | Only secrets with the **secret.kubernetes.io/used-by = csi** label can be selected. The secret type is cfe/secure-opaque. If no secret is available, click **Create Secret** to create one. | + | | | + | | - **Name**: Enter a secret name. | + | | - **Namespace**: Select the namespace where the secret is. | + | | - **Access Key (AK/SK)**: Upload a key file in .csv format. For details, see :ref:`Obtaining an Access Key `. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + b. Click **Create** to create a PVC and a PV. + + You can choose **Storage** in the navigation pane and view the created PVC and PV on the **PersistentVolumeClaims (PVCs)** and **PersistentVolumes (PVs)** tab pages. + +#. Create an application. + + a. In the navigation pane on the left, click **Workloads**. In the right pane, click the **Deployments** tab. + + b. Click **Create Workload** in the upper right corner. On the displayed page, click **Data Storage** in the **Container Settings** area and click **Add Volume** to select **PVC**. + + Mount and use storage volumes, as shown in :ref:`Table 1 `. For details about other parameters, see :ref:`Workloads `. + + .. _cce_10_0630__cce_10_0379_table2529244345: + + .. table:: **Table 1** Mounting a storage volume + + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+=============================================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | PVC | Select an existing object storage volume. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Mount Path | Enter a mount path, for example, **/tmp**. | + | | | + | | This parameter indicates the container path to which a data volume will be mounted. Do not mount the volume to a system directory such as **/** or **/var/run**. Otherwise, containers will be malfunctional. Mount the volume to an empty directory. If the directory is not empty, ensure that there are no files that affect container startup. Otherwise, the files will be replaced, causing container startup failures or workload creation failures. | + | | | + | | .. important:: | + | | | + | | NOTICE: | + | | If a volume is mounted to a high-risk directory, use an account with minimum permissions to start the container. Otherwise, high-risk files on the host may be damaged. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Subpath | Enter a subpath, for example, **tmp**, indicating that data in the mount path of the container will be stored in the **tmp** folder of the volume. | + | | | + | | A subpath is used to mount a local volume so that the same data volume is used in a single pod. If this parameter is left blank, the root path is used by default. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Permission | - **Read-only**: You can only read the data in the mounted volumes. | + | | - **Read/Write**: You can modify the data volumes mounted to the path. Newly written data is not migrated if the container is migrated, which may cause data loss. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + In this example, the disk is mounted to the **/data** path of the container. The container data generated in this path is stored in the OBS volume. + + c. After the configuration, click **Create Workload**. + + After the workload is created, the data in the container mount directory will be persistently stored. Verify the storage by referring to :ref:`PV Reclaim Policy `. + +(kubectl) Automatically Creating an OBS Volume +---------------------------------------------- + +#. Use kubectl to connect to the cluster. +#. Use **StorageClass** to dynamically create a PVC and PV. + + a. Create the **pvc-obs-auto.yaml** file. + + .. code-block:: + + apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + name: pvc-obs-auto + namespace: default + annotations: + everest.io/obs-volume-type: STANDARD # Object storage type. + csi.storage.k8s.io/fstype: obsfs # Instance type. + csi.storage.k8s.io/node-publish-secret-name: # Custom secret name. + csi.storage.k8s.io/node-publish-secret-namespace: # Namespace of the custom secret. + spec: + accessModes: + - ReadWriteMany # For object storage, the value must be ReadWriteMany. + resources: + requests: + storage: 1Gi # OBS volume capacity. + storageClassName: csi-obs # The storage class type is OBS. + + .. table:: **Table 2** Key parameters + + +--------------------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Mandatory | Description | + +==================================================+=======================+=====================================================================================================================================================================================================================+ + | everest.io/obs-volume-type | Yes | OBS storage class. | + | | | | + | | | - If **fsType** is set to **s3fs**, **STANDARD** (standard bucket) and **WARM** (infrequent access bucket) are supported. | + | | | - This parameter is invalid when **fsType** is set to **obsfs**. | + +--------------------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | csi.storage.k8s.io/fstype | Yes | Instance type. The value can be **obsfs** or **s3fs**. | + | | | | + | | | - **obsfs**: Parallel file system, which is mounted using obsfs (recommended). | + | | | - **s3fs**: Object bucket, which is mounted using s3fs. | + +--------------------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | csi.storage.k8s.io/node-publish-secret-name | No | Custom secret name. | + | | | | + | | | (Recommended) Select this option if you want to assign different user permissions to different OBS storage devices. For details, see :ref:`Using a Custom Access Key (AK/SK) to Mount an OBS Volume `. | + +--------------------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | csi.storage.k8s.io/node-publish-secret-namespace | No | Namespace of a custom secret. | + +--------------------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | storage | Yes | Requested capacity in the PVC, in Gi. | + | | | | + | | | For OBS buckets, this field is used only for verification (cannot be empty or 0). Its value is fixed at **1**, and any value you set does not take effect for OBS buckets. | + +--------------------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | storageClassName | Yes | Storage class name. The storage class name of OBS volumes is **csi-obs**. | + +--------------------------------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + b. Run the following command to create a PVC: + + .. code-block:: + + kubectl apply -f pvc-obs-auto.yaml + +#. Create an application. + + a. Create a file named **web-demo.yaml**. In this example, the OBS volume is mounted to the **/data** path. + + .. code-block:: + + apiVersion: apps/v1 + kind: Deployment + metadata: + name: web-demo + namespace: default + spec: + replicas: 2 + selector: + matchLabels: + app: web-demo + template: + metadata: + labels: + app: web-demo + spec: + containers: + - name: container-1 + image: nginx:latest + volumeMounts: + - name: pvc-obs-volume #Volume name, which must be the same as the volume name in the volumes field. + mountPath: /data #Location where the storage volume is mounted. + imagePullSecrets: + - name: default-secret + volumes: + - name: pvc-obs-volume #Volume name, which can be customized. + persistentVolumeClaim: + claimName: pvc-obs-auto #Name of the created PVC. + + b. Run the following command to create an application to which the OBS volume is mounted: + + .. code-block:: + + kubectl apply -f web-demo.yaml + + After the workload is created, you can try :ref:`Verifying Data Persistence and Sharing `. + +.. _cce_10_0630__section11593165910013: + +Verifying Data Persistence and Sharing +-------------------------------------- + +#. View the deployed applications and files. + + a. Run the following command to view the created pod: + + .. code-block:: + + kubectl get pod | grep web-demo + + Expected output: + + .. code-block:: + + web-demo-846b489584-mjhm9 1/1 Running 0 46s + web-demo-846b489584-wvv5s 1/1 Running 0 46s + + b. Run the following commands in sequence to view the files in the **/data** path of the pods: + + .. code-block:: + + kubectl exec web-demo-846b489584-mjhm9 -- ls /data + kubectl exec web-demo-846b489584-wvv5s -- ls /data + + If no result is returned for both pods, no file exists in the **/data** path. + +#. Run the following command to create a file named **static** in the **/data** path: + + .. code-block:: + + kubectl exec web-demo-846b489584-mjhm9 -- touch /data/static + +#. Run the following command to view the files in the **/data** path: + + .. code-block:: + + kubectl exec web-demo-846b489584-mjhm9 -- ls /data + + Expected output: + + .. code-block:: + + static + +#. **Verify data persistence.** + + a. Run the following command to delete the pod named **web-demo-846b489584-mjhm9**: + + .. code-block:: + + kubectl delete pod web-demo-846b489584-mjhm9 + + Expected output: + + .. code-block:: + + pod "web-demo-846b489584-mjhm9" deleted + + After the deletion, the Deployment controller automatically creates a replica. + + b. Run the following command to view the created pod: + + .. code-block:: + + kubectl get pod | grep web-demo + + The expected output is as follows, in which **web-demo-846b489584-d4d4j** is the newly created pod: + + .. code-block:: + + web-demo-846b489584-d4d4j 1/1 Running 0 110s + web-demo-846b489584-wvv5s 1/1 Running 0 7m50s + + c. Run the following command to check whether the files in the **/data** path of the new pod have been modified: + + .. code-block:: + + kubectl exec web-demo-846b489584-d4d4j -- ls /data + + Expected output: + + .. code-block:: + + static + + If the **static** file still exists, the data can be stored persistently. + +#. **Verify data sharing.** + + a. Run the following command to view the created pod: + + .. code-block:: + + kubectl get pod | grep web-demo + + Expected output: + + .. code-block:: + + web-demo-846b489584-d4d4j 1/1 Running 0 7m + web-demo-846b489584-wvv5s 1/1 Running 0 13m + + b. Run the following command to create a file named **share** in the **/data** path of either pod: In this example, select the pod named **web-demo-846b489584-d4d4j**. + + .. code-block:: + + kubectl exec web-demo-846b489584-d4d4j -- touch /data/share + + Check the files in the **/data** path of the pod. + + .. code-block:: + + kubectl exec web-demo-846b489584-d4d4j -- ls /data + + Expected output: + + .. code-block:: + + share + static + + c. Check whether the **share** file exists in the **/data** path of another pod (**web-demo-846b489584-wvv5s**) as well to verify data sharing. + + .. code-block:: + + kubectl exec web-demo-846b489584-wvv5s -- ls /data + + Expected output: + + .. code-block:: + + share + static + + After you create a file in the **/data** path of a pod, if the file is also created in the **/data** path of another pods, the two pods share the same volume. + +Related Operations +------------------ + +You can also perform the operations listed in :ref:`Table 3 `. + +.. _cce_10_0630__table1619535674020: + +.. table:: **Table 3** Related operations + + +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Operation | Description | Procedure | + +========================+====================================================================================================================================================+=====================================================================================================================================================================================+ + | Updating an access key | Update the access key of object storage on the CCE console. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** tab. Click **More** > **Update Access Key** in the **Operation** column of the PVC. | + | | | #. Upload a key file in .csv format. For details, see :ref:`Obtaining an Access Key `. Click **OK**. | + | | | | + | | | .. note:: | + | | | | + | | | After a global access key is updated, all pods mounted with the object storage that uses this access key can be accessed only after being restarted. | + +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Events | You can view event names, event types, number of occurrences, Kubernetes events, first occurrence time, and last occurrence time of the PVC or PV. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** or **PersistentVolumes (PVs)** tab. | + | | | #. Click **View Events** in the **Operation** column of the target PVC or PV to view events generated within one hour (event data is retained for one hour). | + +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Viewing a YAML file | You can view, copy, and download the YAML files of a PVC or PV. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** or **PersistentVolumes (PVs)** tab. | + | | | #. Click **View YAML** in the **Operation** column of the target PVC or PV to view or download the YAML. | + +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/storage/overview.rst b/umn/source/storage/overview.rst index 4aaa3a2..a9f4f04 100644 --- a/umn/source/storage/overview.rst +++ b/umn/source/storage/overview.rst @@ -5,187 +5,56 @@ Overview ======== -Volume ------- +Container Storage +----------------- -On-disk files in a container are ephemeral, which will be lost when the container crashes and are difficult to be shared between containers running together in a pod. The Kubernetes volume abstraction solves both of these problems. Volumes cannot be independently created, but defined in the pod spec. All containers in a pod can access its volumes, but the volumes must have been mounted to any directory in a container. - -The following figure shows how a storage volume is used between containers in a pod. - -|image1| - -A volume will no longer exist if the pod to which it is mounted does not exist. However, files in the volume may outlive the volume, depending on the volume type. - -.. _cce_10_0307__section16559121287: - -Volume Types ------------- - -Volumes can be classified into local volumes and cloud volumes. - -- Local volumes - - CCE supports the following five types of local volumes. For details about how to use them, see :ref:`Using Local Disks as Storage Volumes `. - - - emptyDir: an empty volume used for temporary storage - - hostPath: mounts a directory on a host (node) to your container for reading data from the host. - - ConfigMap: references the data stored in a ConfigMap for use by containers. - - Secret: references the data stored in a secret for use by containers. - -- Cloud volumes - - CCE supports the following types of cloud volumes: - - - EVS - - SFS Turbo - - OBS - - SFS - -CSI ---- - -You can use Kubernetes Container Storage Interface (CSI) to develop plug-ins to support specific storage volumes. - -CCE developed the storage add-on :ref:`everest ` for you to use cloud storage services, such as EVS and OBS. You can install this add-on when creating a cluster. - -PV and PVC ----------- - -Kubernetes provides PersistentVolumes (PVs) and PersistentVolumeClaims (PVCs) to abstract details of how storage is provided from how it is consumed. You can request specific size of storage when needed, just like pods can request specific levels of resources (CPU and memory). - -- PV: A PV is a persistent storage volume in a cluster. Same as a node, a PV is a cluster-level resource. -- PVC: A PVC describes a workload's request for storage resources. This request consumes existing PVs in the cluster. If there is no PV available, underlying storage and PVs are dynamically created. When creating a PVC, you need to describe the attributes of the requested persistent storage, such as the size of the volume and the read/write permissions. - -You can bind PVCs to PVs in a pod so that the pod can use storage resources. The following figure shows the relationship between PVs and PVCs. +CCE container storage is implemented based on Kubernetes container storage APIs (:ref:`CSI `). CCE integrates multiple types of cloud storage and covers different application scenarios. CCE is fully compatible with Kubernetes native storage services, such as emptyDir, hostPath, secret, and ConfigMap. -.. figure:: /_static/images/en-us_image_0000001518222608.png - :alt: **Figure 1** PVC-to-PV binding +.. figure:: /_static/images/en-us_image_0000001647576484.png + :alt: **Figure 1** Container storage type - **Figure 1** PVC-to-PV binding + **Figure 1** Container storage type -PVs describes storage resources in the cluster. PVCs are requests for those resources. The following sections will describe how to use kubectl to connect to storage resources. +CCE allows you to mount cloud storage volumes to your pods. Their features are described below. -If you do not want to create storage resources or PVs manually, you can use :ref:`StorageClasses `. +.. table:: **Table 1** Cloud storage comparison -.. _cce_10_0307__section19926174743310: + +----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Dimension | EVS | SFS | SFS Turbo | OBS | + +======================+=======================================================================================================================================================================================================================================================================+========================================================================================================================================================================================================================================+================================================================================================================================================================================================================================================================================================================================================+========================================================================================================================================================================================================================================================+ + | Definition | EVS offers scalable block storage for cloud servers. With high reliability, high performance, and rich specifications, EVS disks can be used for distributed file systems, dev/test environments, data warehouses, and high-performance computing (HPC) applications. | Expandable to petabytes, SFS provides fully hosted shared file storage, highly available and stable to handle data- and bandwidth-intensive applications in HPC, media processing, file sharing, content management, and web services. | Expandable to 320 TB, SFS Turbo provides a fully hosted shared file storage, which is highly available and stable, to support small files and applications requiring low latency and high IOPS. You can use SFS Turbo in high-traffic websites, log storage, compression/decompression, DevOps, enterprise OA, and containerized applications. | Object Storage Service (OBS) provides massive, secure, and cost-effective data storage for you to store data of any type and size. You can use it in enterprise backup/archiving, video on demand (VoD), video surveillance, and many other scenarios. | + +----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Data storage logic | Stores binary data and cannot directly store files. To store files, format the file system first. | Stores files and sorts and displays data in the hierarchy of files and folders. | Stores files and sorts and displays data in the hierarchy of files and folders. | Stores objects. Files directly stored automatically generate the system metadata, which can also be customized by users. | + +----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Access mode | Accessible only after being mounted to ECSs or BMSs and initialized. | Mounted to ECSs or BMSs using network protocols. A network address must be specified or mapped to a local directory for access. | Supports the Network File System (NFS) protocol (NFSv3 only). You can seamlessly integrate existing applications and tools with SFS Turbo. | Accessible through the Internet or Direct Connect (DC). Specify the bucket address and use transmission protocols such as HTTP or HTTPS. | + +----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Static provisioning | Supported. For details, see :ref:`Using an Existing EVS Disk Through a Static PV `. | Supported. For details, see :ref:`Using an Existing SFS File System Through a Static PV `. | Supported. For details, see :ref:`Using an Existing SFS Turbo File System Through a Static PV `. | Supported. For details, see :ref:`Using an Existing OBS Bucket Through a Static PV `. | + +----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Dynamic provisioning | Supported. For details, see :ref:`Using an EVS Disk Through a Dynamic PV `. | Supported. For details, see :ref:`Using an SFS File System Through a Dynamic PV `. | Not supported | Supported. For details, see :ref:`Using an OBS Bucket Through a Dynamic PV `. | + +----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Features | Non-shared storage. Each volume can be mounted to only one node. | Shared storage featuring high performance and throughput | Shared storage featuring high performance and bandwidth | Shared, user-mode file system | + +----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Usage | HPC, enterprise core cluster applications, enterprise application systems, and dev/test | HPC, media processing, content management, web services, big data, and analysis applications | High-traffic websites, log storage, DevOps, and enterprise OA | Big data analytics, static website hosting, online video on demand (VoD), gene sequencing, intelligent video surveillance, backup and archiving, and enterprise cloud boxes (web disks) | + | | | | | | + | | .. note:: | .. note:: | | | + | | | | | | + | | HPC apps here require high-speed and high-IOPS storage, such as industrial design and energy exploration. | HPC apps here require high bandwidth and shared file storage, such as gene sequencing and image rendering. | | | + +----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Capacity | TB | SFS 1.0: PB | General-purpose: TB | EB | + +----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Latency | 1-2 ms | SFS 1.0: 3-20 ms | General-purpose: 1-5 ms | 10 ms | + +----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | IOPS/TPS | 33,000 for a single disk | SFS 1.0: 2,000 | General-purpose: up to 100,000 | Tens of millions | + +----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Bandwidth | MB/s | SFS 1.0: GB/s | General-purpose: up to GB/s | TB/s | + +----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -StorageClass ------------- +Documentation +------------- -StorageClass describes the storage class used in the cluster. You need to specify StorageClass when creating a PVC or PV. As of now, CCE provides storage classes such as csi-disk, csi-nas, and csi-obs by default. When defining a PVC, you can use a StorageClassName to create a PV of the corresponding type and automatically create underlying storage resources. - -You can run the following command to query the storage classes that CCE supports. You can use the CSI plug-in provided by CCE to customize a storage class, which functions similarly as the default storage classes in CCE. - -.. code-block:: - - # kubectl get sc - NAME PROVISIONER AGE - csi-disk everest-csi-provisioner 17d # Storage class for EVS disks - csi-disk-topology everest-csi-provisioner 17d # Storage class for EVS disks with delayed binding - csi-nas everest-csi-provisioner 17d # Storage class for SFS file systems - csi-obs everest-csi-provisioner 17d # Storage class for OBS buckets - -After a StorageClass is set, PVs can be automatically created and maintained. You only need to specify the StorageClass when creating a PVC, which greatly reduces the workload. - -Cloud Services for Container Storage ------------------------------------- - -CCE allows you to mount local and cloud storage volumes listed in :ref:`Volume Types ` to your pods. Their features are described below. - - -.. figure:: /_static/images/en-us_image_0000001568902557.png - :alt: **Figure 2** Volume types supported by CCE - - **Figure 2** Volume types supported by CCE - -.. table:: **Table 1** Detailed description of cloud storage services - - +----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Dimension | EVS | SFS | OBS | SFS Turbo | - +======================+=======================================================================================================================================================================================================================================================================+========================================================================================================================================================================================================================================+====================================================================================================================================================================================================================================================+======================================================================================================================================================================================================================================================================================================================================+ - | Definition | EVS offers scalable block storage for cloud servers. With high reliability, high performance, and rich specifications, EVS disks can be used for distributed file systems, dev/test environments, data warehouses, and high-performance computing (HPC) applications. | Expandable to petabytes, SFS provides fully hosted shared file storage, highly available and stable to handle data- and bandwidth-intensive applications in HPC, media processing, file sharing, content management, and web services. | OBS is a stable, secure, and easy-to-use object storage service that lets you inexpensively store data of any format and size. You can use it in enterprise backup/archiving, video on demand (VoD), video surveillance, and many other scenarios. | Expandable to 320 TB, SFS Turbo provides a fully hosted shared file storage, highly available and stable to support small files and applications requiring low latency and high IOPS. You can use SFS Turbo in high-traffic websites, log storage, compression/decompression, DevOps, enterprise OA, and containerized applications. | - +----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Data storage logic | Stores binary data and cannot directly store files. To store files, you need to format the file system first. | Stores files and sorts and displays data in the hierarchy of files and folders. | Stores objects. Files directly stored automatically generate the system metadata, which can also be customized by users. | Stores files and sorts and displays data in the hierarchy of files and folders. | - +----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Services | Accessible only after being mounted to ECSs or BMSs and initialized. | Mounted to ECSs or BMSs using network protocols. A network address must be specified or mapped to a local directory for access. | Accessible through the Internet or Direct Connect (DC). You need to specify the bucket address and use transmission protocols such as HTTP and HTTPS. | Supports the Network File System (NFS) protocol (NFSv3 only). You can seamlessly integrate existing applications and tools with SFS Turbo. | - +----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Static provisioning | Supported | Supported | Supported | Supported | - +----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Dynamic provisioning | Supported | Supported | Supported | Not supported | - +----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Features | Non-shared storage. Each volume can be mounted to only one node. | Shared storage featuring high performance and throughput | Shared, user-mode file system | Shared storage featuring high performance and bandwidth | - +----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Usage | HPC, enterprise core cluster applications, enterprise application systems, and dev/test | HPC, media processing, content management, web services, big data, and analysis applications | Big data analysis, static website hosting, online video on demand (VoD), gene sequencing, intelligent video surveillance, backup and archiving, and enterprise cloud boxes (web disks) | High-traffic websites, log storage, DevOps, and enterprise OA | - | | | | | | - | | .. note:: | .. note:: | | | - | | | | | | - | | HPC apps here require high-speed and high-IOPS storage, such as industrial design and energy exploration. | HPC apps here require high bandwidth and shared file storage, such as gene sequencing and image rendering. | | | - +----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Capacity | TB | SFS 1.0: PB | EB | TB | - +----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Latency | 1-2 ms | SFS 1.0: 3-20 ms | 10 ms | 1-2 ms | - +----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | IOPS/TPS | 33,000 for a single disk | SFS 1.0: 2K | Tens of millions | 100K | - +----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Bandwidth | MiB/s | SFS 1.0: GiB/s | TB/s | GiB/s | - +----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -Constraints ------------ - -Secure containers do not support OBS volumes. - -- A single user can create a maximum of 100 OBS buckets on the console. If you have a large number of CCE workloads and you want to mount an OBS bucket to every workload, you may easily run out of buckets. In this scenario, you are advised to use OBS through the OBS API or SDK and do not mount OBS buckets to the workload on the console. - -- For clusters earlier than v1.19.10, if an HPA policy is used to scale out a workload with EVS volumes mounted, the existing pods cannot be read or written when a new pod is scheduled to another node. - - For clusters of v1.19.10 and later, if an HPA policy is used to scale out a workload with EVS volume mounted, a new pod cannot be started because EVS disks cannot be attached. - -- When you uninstall a subpath in a cluster of v1.19 or earlier, all folders in the subpath are traversed. If there are a large number of folders, the traversal takes a long time, so does the volume unmount. You are advised not to create too many folders in the subpath. - -- The maximum size of a single file in OBS mounted to a CCE cluster is far smaller than that defined by obsfs. - -Notice on Using Add-ons ------------------------ - -- To use the CSI plug-in (the :ref:`everest ` add-on in CCE), your cluster must be using **Kubernetes 1.15 or later**. This add-on is installed by default when you create a cluster of v1.15 or later. The FlexVolume plug-in (the :ref:`storage-driver ` add-on in CCE) is installed by default when you create a cluster of v1.13 or earlier. -- If your cluster is upgraded from v1.13 to v1.15, :ref:`storage-driver ` is replaced by everest (v1.1.6 or later) for container storage. The takeover does not affect the original storage functions. -- In version 1.2.0 of the everest add-on, **key authentication** is optimized when OBS is used. After the everest add-on is upgraded from a version earlier than 1.2.0, you need to restart all workloads that use OBS in the cluster. Otherwise, workloads may not be able to use OBS. - -Differences Between CSI and FlexVolume Plug-ins ------------------------------------------------ - -.. table:: **Table 2** CSI and FlexVolume - - +---------------------+-----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Kubernetes Solution | CCE Add-on | Feature | Recommendation | - +=====================+=================+================================================================================================================================================================================================================================================================================================================================================================================================================================================+================================================================================================================================================================================================================================================================================+ - | CSI | Everest | CSI was developed as a standard for exposing arbitrary block and file storage storage systems to containerized workloads. Using CSI, third-party storage providers can deploy plugins exposing new storage systems in Kubernetes without having to touch the core Kubernetes code. In CCE, the everest add-on is installed by default in clusters of Kubernetes v1.15 and later to connect to storage services (EVS, OBS, SFS, and SFS Turbo). | The :ref:`everest ` add-on is installed by default in clusters of **v1.15 and later**. CCE will mirror the Kubernetes community by providing continuous support for updated CSI capabilities. | - | | | | | - | | | The everest add-on consists of two parts: | | - | | | | | - | | | - **everest-csi-controller** for storage volume creation, deletion, capacity expansion, and cloud disk snapshots | | - | | | - **everest-csi-driver** for mounting, unmounting, and formatting storage volumes on nodes | | - | | | | | - | | | For details, see :ref:`everest `. | | - +---------------------+-----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Flexvolume | storage-driver | FlexVolume is an out-of-tree plugin interface that has existed in Kubernetes since version 1.2 (before CSI). CCE provided FlexVolume volumes through the storage-driver add-on installed in clusters of Kubernetes v1.13 and earlier versions. This add-on connects clusters to storage services (EVS, OBS, SFS, and SFS Turbo). | For the created clusters of **v1.13 or earlier**, the installed FlexVolume plug-in (CCE add-on :ref:`storage-driver `) can still be used. CCE stops providing update support for this add-on, and you are advised to :ref:`upgrade these clusters `. | - | | | | | - | | | For details, see :ref:`storage-driver `. | | - +---------------------+-----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -.. note:: - - - A cluster can use only one type of storage plug-ins. - - The FlexVolume plug-in cannot be replaced by the CSI plug-in in clusters of v1.13 or earlier. You can only upgrade these clusters. For details, see :ref:`Cluster Upgrade `. - -Checking Storage Add-ons ------------------------- - -#. Log in to the CCE console. -#. In the navigation tree on the left, click **Add-ons**. -#. Click the **Add-on Instance** tab. -#. Select a cluster in the upper right corner. The default storage add-on installed during cluster creation is displayed. - -.. |image1| image:: /_static/images/en-us_image_0000001517903088.png +- :ref:`Storage Basics ` +- :ref:`Elastic Volume Service (EVS) ` +- :ref:`Scalable File Service (SFS) ` +- :ref:`SFS Turbo File Systems ` +- :ref:`Object Storage Service (OBS) ` diff --git a/umn/source/storage/pvcs.rst b/umn/source/storage/pvcs.rst deleted file mode 100644 index b467578..0000000 --- a/umn/source/storage/pvcs.rst +++ /dev/null @@ -1,317 +0,0 @@ -:original_name: cce_10_0378.html - -.. _cce_10_0378: - -PVCs -==== - -PersistentVolumeClaims (PVCs) describe a workload's request for storage resources. This request consumes existing PVs in the cluster. If there is no PV available, underlying storage and PVs are dynamically created. When creating a PVC, you need to describe the attributes of the requested persistent storage, such as the size of the volume and the read/write permissions. - -Constraints ------------ - -When a PVC is created, the system checks whether there is an available PV with the same configuration in the cluster. If yes, the PVC binds the available PV to the cluster. If no PV meets the matching conditions, the system dynamically creates a storage volume. - -+---------------+-------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------+ -| Description | PVC Field | PV Field | Matching Logic | -+===============+=================================================================================================+================================================================================================+=======================================================================================+ -| region | pvc.metadata.labels (failure-domain.beta.kubernetes.io/region or topology.kubernetes.io/region) | pv.metadata.labels (failure-domain.beta.kubernetes.io/region or topology.kubernetes.io/region) | Defined or not defined at the same time. If defined, the settings must be consistent. | -+---------------+-------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------+ -| zone | pvc.metadata.labels (failure-domain.beta.kubernetes.io/zone or topology.kubernetes.io/zone) | pv.metadata.labels (failure-domain.beta.kubernetes.io/zone or topology.kubernetes.io/zone) | Defined or not defined at the same time. If defined, the settings must be consistent. | -+---------------+-------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------+ -| EVS disk type | pvc.metadata.annotations (everest.io/disk-volume-type) | pv.spec.csi.volumeAttributes (everest.io/disk-volume-type) | Defined or not defined at the same time. If defined, the settings must be consistent. | -+---------------+-------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------+ -| Key ID | pvc.metadata.annotations (everest.io/crypt-key-id) | pv.spec.csi.volumeAttributes (everest.io/crypt-key-id) | Defined or not defined at the same time. If defined, the settings must be consistent. | -+---------------+-------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------+ -| accessMode | accessMode | accessMode | The settings must be consistent. | -+---------------+-------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------+ -| Storage class | storageclass | storageclass | The settings must be consistent. | -+---------------+-------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------+ - -.. _cce_10_0378__section43881411172418: - -Volume Access Modes -------------------- - -PVs can be mounted to the host system only in the mode supported by underlying storage resources. For example, a file storage system can be read and written by multiple nodes, but an EVS disk can be read and written by only one node. - -- ReadWriteOnce: A volume can be mounted as read-write by a single node. This access mode is supported by EVS. -- ReadWriteMany: A volume can be mounted as read-write by multiple nodes. This access mode is supported by SFS, SFS Turbo and OBS. - -.. table:: **Table 1** Supported access modes - - ============ ============= ============= - Storage Type ReadWriteOnce ReadWriteMany - ============ ============= ============= - EVS Y x - SFS x Y - OBS x Y - SFS Turbo x Y - ============ ============= ============= - -Using a Storage Class to Create a PVC -------------------------------------- - -StorageClass describes the storage class used in the cluster. You need to specify StorageClass to dynamically create PVs and underlying storage resources when creating a PVC. - -**Using the CCE Console** - -#. Log in to the CCE console. -#. Click the cluster name and go to the cluster console. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** tab. -#. Click **Create PVC** in the upper right corner. In the dialog box displayed, set the PVC parameters. - - - **Storage Volume Claim Type**: Select a storage type as required. - - **PVC Name**: Enter a PVC name. - - **Creation Method**: Select **Dynamic creation**. - - **Storage Classes**: Select the required storage class. The following storage resources can be dynamically provisioned: - - - **csi-disk**: EVS disk. - - **csi-nas**: SFS Capacity-Oriented file storage. - - **csi-obs**: OBS bucket. - - - **AZ** (supported only by EVS): Select the AZ where the EVS disk is located. - - **Disk Type** (supported only by EVS disks): Select an EVS disk type as required. EVS disk types vary in different regions. - - - Common I/O - - High I/O - - Ultra-high I/O - - - **Access Mode**: **ReadWriteOnce** and **ReadWriteMany** are supported. For details, see :ref:`Volume Access Modes `. - - **Capacity (GiB)** (supported only for EVS, SFS): storage capacity. This parameter is not available for OBS. - - **Encryption** (supported only for EVS and SFS): Select **Encryption**. After selecting this option, you need to select a key. - - **Secret** (supported only for OBS): Select an access key for OBS. For details, see :ref:`Using a Custom AK/SK to Mount an OBS Volume `. - -#. Click **Create**. - -**Using YAML** - -Example YAML for EVS - -- **failure-domain.beta.kubernetes.io/region**: region where the cluster is located. - - For details about the value of **Region**, see `Regions and Endpoints `__. - -- **failure-domain.beta.kubernetes.io/zone**: AZ where the EVS volume is created. It must be the same as the AZ planned for the workload. - - For details about the value of **zone**, see `Regions and Endpoints `__. - -.. code-block:: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - name: pvc-evs-auto-example - namespace: default - annotations: - everest.io/disk-volume-type: SSD # EVS disk type. - everest.io/crypt-key-id: 0992dbda-6340-470e-a74e-4f0db288ed82 # (Optional) Key ID, which is used to encrypt EVS disks - - labels: - failure-domain.beta.kubernetes.io/region: eu-de - failure-domain.beta.kubernetes.io/zone: - spec: - accessModes: - - ReadWriteOnce # The value must be ReadWriteOnce for EVS. - resources: - requests: - storage: 10Gi # EVS disk capacity, ranging from 1 to 32768. - storageClassName: csi-disk # The storage class type is EVS. - -Example YAML for file storage: - -.. code-block:: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - name: pvc-sfs-auto-example - namespace: default - annotations: - everest.io/crypt-key-id: 0992dbda-6340-470e-a74e-4f0db288ed82 # (Optional) Key ID, which is used to encrypt file systems - everest.io/crypt-alias: sfs/default # (Optional) Key name, which is mandatory for encrypted volumes - everest.io/crypt-domain-id: 2cd7ebd02e4743eba4e6342c09e49344 # (Optional) ID of the tenant to which the encrypted volume belongs. Mandatory for encrypted volumes. - spec: - accessModes: - - ReadWriteMany # The value must be ReadWriteMany for SFS. - resources: - requests: - storage: 10Gi # SFS file system size. - storageClassName: csi-nas # The storage class type is SFS. - -Example YAML for OBS: - -.. code-block:: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - name: obs-warm-provision-pvc - namespace: default - annotations: - everest.io/obs-volume-type: STANDARD # OBS bucket type. Currently, standard (STANDARD) and infrequent access (WARM) are supported. - csi.storage.k8s.io/fstype: obsfs # File type. obsfs indicates to create a parallel file system (recommended), and s3fs indicates to create an OBS bucket. - - spec: - accessModes: - - ReadWriteMany # The value must be ReadWriteMany for OBS. - resources: - requests: - storage: 1Gi # This field is valid only for verification (fixed to 1, cannot be empty or 0). The value setting does not take effect for OBS buckets. - storageClassName: csi-obs # The storage class type is OBS. - -Using a PV to Create a PVC --------------------------- - -If a PV has been created, you can create a PVC to apply for PV resources. - -**Using the CCE Console** - -#. Log in to the CCE console. -#. Click the cluster name and go to the cluster console. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** tab. -#. Click **Create PVC** in the upper right corner. In the dialog box displayed, set the PVC parameters. - - - **Storage Volume Claim Type**: Select a storage type as required. - - **PVC Name**: name of a PVC. - - **Creation Method**: Select **Existing storage volume**. - - **PV**: Select the volume to be associated, that is, the PV. - -#. Click **Create**. - -**Using YAML** - -Example YAML for EVS - -- **failure-domain.beta.kubernetes.io/region**: region where the cluster is located. - - For details about the value of **Region**, see `Regions and Endpoints `__. - -- **failure-domain.beta.kubernetes.io/zone**: AZ where the EVS volume is created. It must be the same as the AZ planned for the workload. - - For details about the value of **zone**, see `Regions and Endpoints `__. - -.. code-block:: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - name: pvc-test - namespace: default - annotations: - everest.io/disk-volume-type: SAS # EVS disk type. - everest.io/crypt-key-id: fe0757de-104c-4b32-99c5-ee832b3bcaa3 # (Optional) Key ID, which is used to encrypt EVS disks - volume.beta.kubernetes.io/storage-provisioner: everest-csi-provisioner - - labels: - failure-domain.beta.kubernetes.io/region: eu-de - failure-domain.beta.kubernetes.io/zone: - spec: - accessModes: - - ReadWriteOnce # The value must be ReadWriteOnce for EVS. - resources: - requests: - storage: 10Gi - storageClassName: csi-disk # Storage class name. The value is csi-disk for EVS. - volumeName: cce-evs-test # PV name. - -Example YAML for SFS: - -.. code-block:: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - name: pvc-sfs-test - namespace: default - annotations: - volume.beta.kubernetes.io/storage-provisioner: everest-csi-provisioner - spec: - accessModes: - - ReadWriteMany # The value must be ReadWriteMany for SFS. - resources: - requests: - storage: 100Gi # Requested PVC capacity - storageClassName: csi-nas # Storage class name - volumeName: cce-sfs-test # PV name - -Example YAML for OBS: - -.. code-block:: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - name: pvc-obs-test - namespace: default - annotations: - everest.io/obs-volume-type: STANDARD # OBS bucket type. Currently, standard (STANDARD) and infrequent access (WARM) are supported. - csi.storage.k8s.io/fstype: s3fs # File type. obsfs indicates to create a parallel file system (recommended), and s3fs indicates to create an OBS bucket. - csi.storage.k8s.io/node-publish-secret-name: test-user - csi.storage.k8s.io/node-publish-secret-namespace: default - volume.beta.kubernetes.io/storage-provisioner: everest-csi-provisioner - - spec: - accessModes: - - ReadWriteMany # The value must be ReadWriteMany for OBS. - resources: - requests: - storage: 1Gi # Requested PVC capacity. This field is valid only for verification (fixed to 1, cannot be empty or 0). The value setting does not take effect for OBS buckets. - storageClassName: csi-obs # Storage class name. The value is csi-obs for OBS. - volumeName: cce-obs-test # PV name. - -Example YAML for SFS Turbo: - -.. code-block:: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - name: pvc-test - namespace: default - annotations: - volume.beta.kubernetes.io/storage-provisioner: everest-csi-provisioner - spec: - accessModes: - - ReadWriteMany # The value must be ReadWriteMany for SFS Turbo. - resources: - requests: - storage: 100Gi # Requested PVC capacity. - storageClassName: csi-sfsturbo # Storage class name. The value is csi-sfsturbo for SFS Turbo. - volumeName: pv-sfsturbo-test # PV name. - -Using a Snapshot to Creating a PVC ----------------------------------- - -The disk type, encryption setting, and disk mode of the created EVS PVC are consistent with those of the snapshot's source EVS disk. - -**Using the CCE Console** - -#. Log in to the CCE console. -#. Click the cluster name and go to the cluster console. Choose **Storage** from the navigation pane, and click the **Snapshots and Backups** tab. -#. Locate the snapshot that you want to use for creating a PVC, click **Create PVC**, and specify the PVC name in the displayed dialog box. -#. Click **Create**. - -**Using YAML** - -.. code-block:: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - name: pvc-test - namespace: default - annotations: - everest.io/disk-volume-type: SSD # EVS disk type, which must be the same as that of the source EVS disk of the snapshot. - labels: - failure-domain.beta.kubernetes.io/region: eu-de - failure-domain.beta.kubernetes.io/zone: - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: '10' - storageClassName: csi-disk - dataSource: - name: cce-disksnap-test # Snapshot name - kind: VolumeSnapshot - apiGroup: snapshot.storage.k8s.io diff --git a/umn/source/storage/pvs.rst b/umn/source/storage/pvs.rst deleted file mode 100644 index 0c2b472..0000000 --- a/umn/source/storage/pvs.rst +++ /dev/null @@ -1,428 +0,0 @@ -:original_name: cce_10_0379.html - -.. _cce_10_0379: - -PVs -=== - -PersistentVolumes (PVs) are persistent storage volumes in a cluster. Same as a node, a PV is a cluster-level resource. - -Constraints ------------ - -- On the new CCE console (the cluster needs to be **upgraded to v1.19.10 or later** and **the everest add-on needs to be upgraded to v1.2.10 or later**), PVs are open to you for management. On the old CCE console, PVs can only be imported or dynamically created. You cannot manage the PV lifecycle on the console. -- Multiple PVs can use the same SFS or SFS Turbo file system with the following restrictions: - - - An error may occur if multiple PVCs/PVs that use the same underlying SFS or SFS Turbo file system are mounted to the same pod. - - The **persistentVolumeReclaimPolicy** parameter in the PVs must be set to **Retain**. Otherwise, when a PV is deleted, the associated underlying volume may be deleted. In this case, other PVs associated with the underlying volume may be abnormal. - - When the underlying volume is repeatedly used, it is recommended that ReadWriteMany be implemented at the application layer to prevent data overwriting and loss. - -Volume Access Modes -------------------- - -PVs can be mounted to the host system only in the mode supported by underlying storage resources. For example, a file storage system can be read and written by multiple nodes, but an EVS disk can be read and written by only one node. - -- ReadWriteOnce: A volume can be mounted as read-write by a single node. This access mode is supported by EVS. -- ReadWriteMany: A volume can be mounted as read-write by multiple nodes. This access mode is supported by SFS, OBS, and SFS Turbo. - -.. table:: **Table 1** Access modes supported by cloud storage - - ============ ============= ============= - Storage Type ReadWriteOnce ReadWriteMany - ============ ============= ============= - EVS Y x - SFS x Y - OBS x Y - SFS Turbo x Y - ============ ============= ============= - -.. _cce_10_0379__section19999142414413: - -PV Reclaim Policy ------------------ - -A PV reclaim policy is used to delete or reclaim underlying volumes when a PVC is deleted. The value can be **Delete** or **Retain**. - -- **Delete**: When a PVC is deleted, the PV and underlying storage resources are deleted. -- **Retain**: When a PVC is deleted, the PV and underlying storage resources are not deleted. Instead, you must manually delete these resources. After a PVC is deleted, the PV resource is in the Released state and cannot be bound to the PVC again. - -Everest also allows you to delete a PVC without deleting underlying storage resources. This function can be achieved only by using a YAML file. Set the PV reclaim policy to **Delete** and add **annotations"everest.io/reclaim-policy: retain-volume-only"**. In this way, when the PVC is deleted, the PV resource is deleted, but the underlying storage resources are retained. - -Creating an EVS Volume ----------------------- - -.. note:: - - The requirements for creating an EVS volume are as follows: - - - System disks, DSS disks, and shared disks cannot be used. - - The EVS disk is one of the supported types (common I/O, high I/O, and ultra-high I/O), and the EVS disk device type is SCSI. - - The EVS disk is not frozen or used, and the status is available. - - If the EVS disk is encrypted, the key must be available. - -**Using the CCE Console** - -#. Log in to the CCE console. -#. Click the cluster name and access the cluster console. Choose **Storage** from the navigation pane, and click the **PersistentVolumes (PVs)** tab. -#. Click **Create Volume** in the upper right corner. In the dialog box displayed, set the volume parameters. - - - **Volume Type**: Select **EVS**. - - **EVS**: - - **PV Name**: Enter a PV name. - - **Access Mode**: ReadWriteOnce - - **Reclaim Policy**: Select **Delete** or **Retain** as required. For details, see :ref:`PV Reclaim Policy `. - -#. Click **Create**. - -**Using YAML** - -.. code-block:: - - apiVersion: v1 - kind: PersistentVolume - metadata: - annotations: - pv.kubernetes.io/provisioned-by: everest-csi-provisioner - everest.io/reclaim-policy: retain-volume-only # (Optional) The PV is deleted while the underlying volume is retained. - name: cce-evs-test - labels: - failure-domain.beta.kubernetes.io/region: eu-de - failure-domain.beta.kubernetes.io/zone: - spec: - accessModes: - - ReadWriteOnce # Access mode. The value is fixed to ReadWriteOnce for EVS. - capacity: - storage: 10Gi # EVS disk capacity, in the unit of Gi. The value ranges from 1 to 32768. - csi: - driver: disk.csi.everest.io # Dependent storage driver for the mounting. - fsType: ext4 - volumeHandle: 459581af-e78c-4356-9e78-eaf9cd8525eb # Volume ID of the EVS disk. - volumeAttributes: - everest.io/disk-mode: SCSI # Device type of the EVS disk. Only SCSI is supported. - everest.io/disk-volume-type: SAS # EVS disk type. - storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner - everest.io/crypt-key-id: 0992dbda-6340-470e-a74e-4f0db288ed82 # (Optional) Encryption key ID. Mandatory for an encrypted disk. - persistentVolumeReclaimPolicy: Delete # Reclaim policy. - storageClassName: csi-disk # Storage class name. The value must be csi-disk. - -.. table:: **Table 2** Key parameters - - +-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===============================================+=============================================================================================================================================================================================================================================================================================+ - | everest.io/reclaim-policy: retain-volume-only | This field is optional. | - | | | - | | Currently, only **retain-volume-only** is supported. | - | | | - | | This field is valid only when the everest version is 1.2.9 or later and the reclaim policy is Delete. If the reclaim policy is Delete and the current value is **retain-volume-only**, the associated PV is deleted while the underlying storage volume is retained, when a PVC is deleted. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | failure-domain.beta.kubernetes.io/region | Region where the cluster is located. | - | | | - | | For details about the value of **region**, see `Regions and Endpoints `__. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | failure-domain.beta.kubernetes.io/zone | AZ where the EVS volume is created. It must be the same as the AZ planned for the workload. | - | | | - | | For details about the value of **zone**, see `Regions and Endpoints `__. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | volumeHandle | Volume ID of the EVS disk. | - | | | - | | To obtain the volume ID, log in to the **Cloud Server Console**. In the navigation pane, choose **Elastic Volume Service** > **Disks**. Click the name of the target EVS disk to go to its details page. On the **Summary** tab page, click the copy button after **ID**. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | everest.io/disk-volume-type | EVS disk type. All letters are in uppercase. | - | | | - | | - **SATA**: common I/O | - | | - **SAS**: high I/O | - | | - **SSD**: ultra-high I/O | - +-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | everest.io/crypt-key-id | Encryption key ID. This field is mandatory when the volume is an encrypted volume. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | persistentVolumeReclaimPolicy | A reclaim policy is supported when the cluster version is equal to or later than 1.19.10 and the everest version is equal to or later than 1.2.9. | - | | | - | | The Delete and Retain policies are supported. | - | | | - | | **Delete**: | - | | | - | | - If **everest.io/reclaim-policy** is not specified, both the PV and EVS disk are deleted when a PVC is deleted. | - | | - If **everest.io/reclaim-policy** is set to **retain-volume-only**, when a PVC is deleted, the PV is deleted but the EVS resources are retained. | - | | | - | | **Retain**: When a PVC is deleted, the PV and underlying storage resources are not deleted. Instead, you must manually delete these resources. After that, the PV resource is in the Released state and cannot be bound to the PVC again. | - | | | - | | If high data security is required, you are advised to select **Retain** to prevent data from being deleted by mistake. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -Creating an SFS Volume ----------------------- - -.. note:: - - - The SFS file system and the cluster must be in the same VPC. - -**Using the CCE Console** - -#. Log in to the CCE console. -#. Click the cluster name and access the cluster console. Choose **Storage** from the navigation pane, and click the **PersistentVolumes (PVs)** tab. -#. Click **Create Volume** in the upper right corner. In the dialog box displayed, set the volume parameters. - - - **Volume Type**: Select **SFS**. - - Select SFS resources. - - **PV Name**: Enter a PV name. - - **Access Mode**: ReadWriteMany - - **Reclaim Policy**: Select **Delete** or **Retain** as required. For details, see :ref:`PV Reclaim Policy `. - - **Mount Options**: mount options. For details about the options, see :ref:`Setting Mount Options `. - -#. Click **Create**. - -**Using YAML** - -.. code-block:: - - apiVersion: v1 - kind: PersistentVolume - metadata: - annotations: - pv.kubernetes.io/provisioned-by: everest-csi-provisioner - everest.io/reclaim-policy: retain-volume-only # (Optional) The PV is deleted while the underlying volume is retained. - name: cce-sfs-test - spec: - accessModes: - - ReadWriteMany # Access mode. The value must be ReadWriteMany for SFS. - capacity: - storage: 1Gi # File storage capacity. - csi: - driver: disk.csi.everest.io # Mount the dependent storage driver. - fsType: nfs - volumeHandle: 30b3d92a-0bc7-4610-b484-534660db81be # SFS file system ID. - volumeAttributes: - everest.io/share-export-location: # Path to shared file storage - storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner - persistentVolumeReclaimPolicy: Retain # Reclaim policy. - storageClassName: csi-nas # Storage class name - mountOptions: [] # Mount options - -.. table:: **Table 3** Key parameters - - +-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===============================================+=============================================================================================================================================================================================================================================================================================+ - | everest.io/reclaim-policy: retain-volume-only | This field is optional. | - | | | - | | Currently, only **retain-volume-only** is supported. | - | | | - | | This field is valid only when the everest version is 1.2.9 or later and the reclaim policy is Delete. If the reclaim policy is Delete and the current value is **retain-volume-only**, the associated PV is deleted while the underlying storage volume is retained, when a PVC is deleted. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | volumeHandle | - If SFS Capacity-Oriented file storage is used, enter the file storage ID. | - | | | - | | On the management console, choose **Service List** > **Storage** > **Scalable File Service**. In the SFS file system list, click the name of the target file system and copy the content following **ID** on the page displayed. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | everest.io/share-export-location | Shared path of the file system. | - | | | - | | On the management console, choose **Service List** > **Storage** > **Scalable File Service**. You can obtain the shared path of the file system from the **Mount Address** column. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | mountOptions | Mount options. | - | | | - | | If not specified, the following configurations are used by default. For details, see :ref:`SFS Volume Mount Options `. | - | | | - | | .. code-block:: | - | | | - | | mountOptions: | - | | - vers=3 | - | | - timeo=600 | - | | - nolock | - | | - hard | - +-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | everest.io/crypt-key-id | Encryption key ID. This field is mandatory when the volume is an encrypted volume. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | persistentVolumeReclaimPolicy | A reclaim policy is supported when the cluster version is equal to or later than 1.19.10 and the everest version is equal to or later than 1.2.9. | - | | | - | | The options are as follows: | - | | | - | | **Delete**: | - | | | - | | - If **everest.io/reclaim-policy** is not specified, both the PV and SFS volume are deleted when a PVC is deleted. | - | | - If **everest.io/reclaim-policy** is set to **retain-volume-only**, when a PVC is deleted, the PV is deleted but the SFS volume resources are retained. | - | | | - | | **Retain**: When a PVC is deleted, the PV and underlying storage resources are not deleted. Instead, you must manually delete these resources. After that, the PV resource is in the Released state and cannot be bound to the PVC again. | - | | | - | | If high data security is required, you are advised to select **Retain** to prevent data from being deleted by mistake. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -Creating an OBS Volume ----------------------- - -.. note:: - - Secure containers do not support OBS volumes. - - A single user can create a maximum of 100 OBS buckets on the console. If you have a large number of CCE workloads and you want to mount an OBS bucket to every workload, you may easily run out of buckets. In this scenario, you are advised to use OBS through the OBS API or SDK and do not mount OBS buckets to the workload on the console. - -**Using the CCE Console** - -#. Log in to the CCE console. -#. Click the cluster name and access the cluster console. Choose **Storage** from the navigation pane, and click the **PersistentVolumes (PVs)** tab. -#. Click **Create Volume** in the upper right corner. In the dialog box displayed, set the volume parameters. - - - **Volume Type**: Select **OBS**. - - Select OBS resources. - - **PV Name**: Enter a PV name. - - **Access Mode**: ReadWriteMany - - **Reclaim Policy**: Select **Delete** or **Retain** as required. For details, see :ref:`PV Reclaim Policy `. - - **Secret**: You can customize the access key (AK/SK) for mounting an OBS volume. You can use the AK/SK to create a secret and mount the secret to the PV. For details, see :ref:`Using a Custom AK/SK to Mount an OBS Volume `. - - **Mount Options**: mount options. For details about the options, see :ref:`Setting Mount Options `. - -#. Click **Create**. - -**Using YAML** - -.. code-block:: - - apiVersion: v1 - kind: PersistentVolume - metadata: - annotations: - pv.kubernetes.io/provisioned-by: everest-csi-provisioner - everest.io/reclaim-policy: retain-volume-only # (Optional) The PV is deleted while the underlying volume is retained. - name: cce-obs-test - spec: - accessModes: - - ReadWriteMany # Access mode. The value must be ReadWriteMany for OBS. - capacity: - storage: 1Gi # Storage capacity. This parameter is set only to meet the PV format requirements. It can be set to any value. The actual OBS space size is not limited by this value. - csi: - driver: obs.csi.everest.io # Dependent storage driver for the mounting. - fsType: obsfs # OBS file type. - volumeHandle: cce-obs-bucket # OBS bucket name. - volumeAttributes: - everest.io/obs-volume-type: STANDARD - everest.io/region: eu-de - - storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner - nodePublishSecretRef: - name: test-user - namespace: default - persistentVolumeReclaimPolicy: Retain # Reclaim policy. - storageClassName: csi-obs # Storage class name. The value must be csi-obs for OBS. - mountOptions: [] # Mount options. - -.. table:: **Table 4** Key parameters - - +-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===============================================+=============================================================================================================================================================================================================================================================================================+ - | everest.io/reclaim-policy: retain-volume-only | This field is optional. | - | | | - | | Currently, only **retain-volume-only** is supported. | - | | | - | | This field is valid only when the everest version is 1.2.9 or later and the reclaim policy is Delete. If the reclaim policy is Delete and the current value is **retain-volume-only**, the associated PV is deleted while the underlying storage volume is retained, when a PVC is deleted. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | fsType | File type. The value can be **obsfs** or **s3fs**. If the value is **s3fs**, an OBS bucket is created and mounted using s3fs. If the value is **obsfs**, an OBS parallel file system is created and mounted using obsfs. You are advised to set this field to **obsfs**. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | volumeHandle | OBS bucket name. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | everest.io/obs-volume-type | Storage class, including **STANDARD** (standard bucket) and **WARM** (infrequent access bucket). | - +-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | everest.io/region | Region where the OBS bucket is deployed. | - | | | - | | For details about the value of **region**, see `Regions and Endpoints `__. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | nodePublishSecretRef | Access key (AK/SK) used for mounting the object storage volume. You can use the AK/SK to create a secret and mount it to the PV. For details, see :ref:`Using a Custom AK/SK to Mount an OBS Volume `. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | mountOptions | Mount options. For details, see :ref:`OBS Volume Mount Options `. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | persistentVolumeReclaimPolicy | A reclaim policy is supported when the cluster version is equal to or later than 1.19.10 and the everest version is equal to or later than 1.2.9. | - | | | - | | The Delete and Retain policies are supported. | - | | | - | | **Delete**: | - | | | - | | - If **everest.io/reclaim-policy** is not specified, both the PV and OBS volume are deleted when a PVC is deleted. | - | | - If **everest.io/reclaim-policy** is set to **retain-volume-only**, when a PVC is deleted, the PV is deleted but the object storage resources are retained. | - | | | - | | **Retain**: When a PVC is deleted, the PV and underlying storage resources are not deleted. Instead, you must manually delete these resources. After that, the PV resource is in the Released state and cannot be bound to the PVC again. | - | | | - | | If high data security is required, you are advised to select **Retain** to prevent data from being deleted by mistake. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -Creating an SFS Turbo Volume ----------------------------- - -.. note:: - - SFS Turbo and the cluster must be in the same VPC. - -**Using the CCE Console** - -#. Log in to the CCE console. -#. Click the cluster name and access the cluster console. Choose **Storage** from the navigation pane, and click the **PersistentVolumes (PVs)** tab. -#. Click **Create Volume** in the upper right corner. In the dialog box displayed, set the volume parameters. - - - **Volume Type**: Select **SFS Turbo**. - - **SFS Turbo**: Select SFS Turbo resources. - - **PV Name**: Enter a PV name. - - **Access Mode**: ReadWriteMany - - **Reclaim Policy**: Select **Retain**. For details, see :ref:`PV Reclaim Policy `. - - **Mount Options**: mount options. For details about the options, see :ref:`Setting Mount Options `. - -#. Click **Create**. - -**Using YAML** - -.. code-block:: - - apiVersion: v1 - kind: PersistentVolume - metadata: - annotations: - pv.kubernetes.io/provisioned-by: everest-csi-provisioner - name: cce-sfsturbo-test - spec: - accessModes: - - ReadWriteMany # Access mode. The value must be ReadWriteMany for SFS Turbo. - capacity: - storage: 100.00Gi # SFS Turbo volume capacity. - csi: - driver: sfsturbo.csi.everest.io # Dependent storage driver for the mounting. - fsType: nfs - volumeHandle: 6674bd0a-d760-49de-bb9e-805c7883f047 # SFS Turbo volume ID. - volumeAttributes: - everest.io/share-export-location: 192.168.0.85:/ # Shared path of the SFS Turbo volume. - storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner - persistentVolumeReclaimPolicy: Retain # Reclaim policy. - storageClassName: csi-sfsturbo # Storage class name. The value must be csi-sfsturbo for SFS Turbo. - mountOptions: [] # Mount options. - -.. table:: **Table 5** Key parameters - - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+===========================================================================================================================================================================================================================================+ - | volumeHandle | SFS Turbo volume ID. | - | | | - | | You can obtain the ID on the SFS Turbo storage instance details page on the SFS console. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | everest.io/share-export-location | Shared path of the SFS Turbo volume. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | mountOptions | Mount options. | - | | | - | | If not specified, the following configurations are used by default. For details, see :ref:`SFS Volume Mount Options `. | - | | | - | | .. code-block:: | - | | | - | | mountOptions: | - | | - vers=3 | - | | - timeo=600 | - | | - nolock | - | | - hard | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | persistentVolumeReclaimPolicy | A reclaim policy is supported when the cluster version is equal to or later than 1.19.10 and the everest version is equal to or later than 1.2.9. | - | | | - | | The Delete and Retain policies are supported. | - | | | - | | **Delete**: | - | | | - | | - If **everest.io/reclaim-policy** is not specified, both the PV and SFS Turbo volume are deleted when a PVC is deleted. | - | | - If **everest.io/reclaim-policy** is set to **retain-volume-only**, when a PVC is deleted, the PV is deleted but the SFS Turbo resources are retained. | - | | | - | | **Retain**: When a PVC is deleted, the PV and underlying storage resources are not deleted. Instead, you must manually delete these resources. After that, the PV resource is in the Released state and cannot be bound to the PVC again. | - | | | - | | If high data security is required, you are advised to select **Retain** to prevent data from being deleted by mistake. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/storage/scalable_file_service_sfs/configuring_sfs_volume_mount_options.rst b/umn/source/storage/scalable_file_service_sfs/configuring_sfs_volume_mount_options.rst new file mode 100644 index 0000000..b97b6a6 --- /dev/null +++ b/umn/source/storage/scalable_file_service_sfs/configuring_sfs_volume_mount_options.rst @@ -0,0 +1,180 @@ +:original_name: cce_10_0337.html + +.. _cce_10_0337: + +Configuring SFS Volume Mount Options +==================================== + +This section describes how to configure SFS volume mount options. You can configure mount options in a PV and bind the PV to a PVC. Alternatively, configure mount options in a StorageClass and use the StorageClass to create a PVC. In this way, PVs can be dynamically created and inherit mount options configured in the StorageClass by default. + +Prerequisites +------------- + +The everest add-on version must be **1.2.8 or later**. The add-on identifies the mount options and transfers them to the underlying storage resources, which determine whether the specified options are valid. + +Constraints +----------- + +Mount options cannot be configured for secure containers. + +.. _cce_10_0337__section14888047833: + +SFS Volume Mount Options +------------------------ + +The everest add-on in CCE presets the options described in :ref:`Table 1 ` for mounting SFS volumes. + +.. _cce_10_0337__table128754351546: + +.. table:: **Table 1** SFS volume mount options + + +-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Value | Description | + +=========================+=======================+===============================================================================================================================================================================================+ + | keep-original-ownership | Leave it blank. | Whether to retain the ownership of the file mount point. If this option is used, the everest add-on must be v1.2.63 or v2.1.2 or later. | + | | | | + | | | - By default, this option is not added. and the mount point ownership is **root:root** when SFS is mounted. | + | | | | + | | | - If this option is added, the original ownership of the file system is retained when SFS is mounted. | + +-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | vers | 3 | File system version. Currently, only NFSv3 is supported. Value: **3** | + +-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | nolock | Leave it blank. | Whether to lock files on the server using the NLM protocol. If **nolock** is selected, the lock is valid for applications on one host. For applications on another host, the lock is invalid. | + +-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | timeo | 600 | Waiting time before the NFS client retransmits a request. The unit is 0.1 seconds. Recommended value: **600** | + +-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | hard/soft | Leave it blank. | Mounting mode. | + | | | | + | | | - **hard**: If the NFS request times out, the client keeps resending the request until the request is successful. | + | | | - **soft**: If the NFS request times out, the client returns an error to the invoking program. | + | | | | + | | | The default value is **hard**. | + +-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +You can set other mount options if needed. For details, see `Mounting an NFS File System to ECSs (Linux) `__. + +Setting Mount Options in a PV +----------------------------- + +You can use the **mountOptions** field to set mount options in a PV. The options you can configure in **mountOptions** are listed in :ref:`SFS Volume Mount Options `. + +#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. + +#. Set mount options in a PV. Example: + + .. code-block:: + + apiVersion: v1 + kind: PersistentVolume + metadata: + annotations: + pv.kubernetes.io/provisioned-by: everest-csi-provisioner + everest.io/reclaim-policy: retain-volume-only # (Optional) The PV is deleted while the underlying volume is retained. + name: pv-sfs + spec: + accessModes: + - ReadWriteMany # Access mode. The value must be ReadWriteMany for SFS. + capacity: + storage: 1Gi # SFS volume capacity. + csi: + driver: disk.csi.everest.io # Dependent storage driver for the mounting. + fsType: nfs + volumeHandle: # ID of the SFS Capacity-Oriented volume. + volumeAttributes: + everest.io/share-export-location: # Shared path of the SFS volume. + storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner + persistentVolumeReclaimPolicy: Retain # Reclaim policy. + storageClassName: csi-nas # Storage class name. + mountOptions: # Mount options. + - vers=3 + - nolock + - timeo=600 + - hard + +#. After a PV is created, you can create a PVC and bind it to the PV, and then mount the PV to the container in the workload. For details, see :ref:`Using an Existing SFS File System Through a Static PV `. + +#. Check whether the mount options take effect. + + In this example, the PVC is mounted to the workload that uses the **nginx:latest** image. You can run the **mount -l** command to check whether the mount options take effect. + + a. View the pod to which the SFS volume has been mounted. In this example, the workload name is **web-sfs**. + + .. code-block:: + + kubectl get pod | grep web-sfs + + Command output: + + .. code-block:: + + web-sfs-*** 1/1 Running 0 23m + + b. Run the following command to check the mount options (**web-sfs-**\*** is an example pod): + + .. code-block:: + + kubectl exec -it web-sfs-*** -- mount -l | grep nfs + + If the mounting information in the command output is consistent with the configured mount options, the mount options are set successfully. + + .. code-block:: + + on /data type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,noresvport,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=**.**.**.**,mountvers=3,mountport=2050,mountproto=tcp,local_lock=all,addr=**.**.**.**) + +Setting Mount Options in a StorageClass +--------------------------------------- + +You can use the **mountOptions** field to set mount options in a StorageClass. The options you can configure in **mountOptions** are listed in :ref:`SFS Volume Mount Options `. + +#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. + +#. Create a customized StorageClass. Example: + + .. code-block:: + + apiVersion: storage.k8s.io/v1 + kind: StorageClass + metadata: + name: csi-sfs-mount-option + provisioner: everest-csi-provisioner + parameters: + csi.storage.k8s.io/csi-driver-name: nas.csi.everest.io + csi.storage.k8s.io/fstype: nfs + everest.io/share-access-to: # VPC ID of the cluster. + reclaimPolicy: Delete + volumeBindingMode: Immediate + mountOptions: # Mount options + - vers=3 + - nolock + - timeo=600 + - hard + +#. After the StorageClass is configured, you can use it to create a PVC. By default, the dynamically created PVs inherit the mount options configured in the StorageClass. For details, see :ref:`Using an SFS File System Through a Dynamic PV `. + +#. Check whether the mount options take effect. + + In this example, the PVC is mounted to the workload that uses the **nginx:latest** image. You can run the **mount -l** command to check whether the mount options take effect. + + a. View the pod to which the SFS volume has been mounted. In this example, the workload name is **web-sfs**. + + .. code-block:: + + kubectl get pod | grep web-sfs + + Command output: + + .. code-block:: + + web-sfs-*** 1/1 Running 0 23m + + b. Run the following command to check the mount options (**web-sfs-**\*** is an example pod): + + .. code-block:: + + kubectl exec -it web-sfs-*** -- mount -l | grep nfs + + If the mounting information in the command output is consistent with the configured mount options, the mount options are set successfully. + + .. code-block:: + + on /data type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,noresvport,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=**.**.**.**,mountvers=3,mountport=2050,mountproto=tcp,local_lock=all,addr=**.**.**.**) diff --git a/umn/source/storage/scalable_file_service_sfs/index.rst b/umn/source/storage/scalable_file_service_sfs/index.rst new file mode 100644 index 0000000..faec562 --- /dev/null +++ b/umn/source/storage/scalable_file_service_sfs/index.rst @@ -0,0 +1,20 @@ +:original_name: cce_10_0111.html + +.. _cce_10_0111: + +Scalable File Service (SFS) +=========================== + +- :ref:`Overview ` +- :ref:`Using an Existing SFS File System Through a Static PV ` +- :ref:`Using an SFS File System Through a Dynamic PV ` +- :ref:`Configuring SFS Volume Mount Options ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + overview + using_an_existing_sfs_file_system_through_a_static_pv + using_an_sfs_file_system_through_a_dynamic_pv + configuring_sfs_volume_mount_options diff --git a/umn/source/storage/scalable_file_service_sfs/overview.rst b/umn/source/storage/scalable_file_service_sfs/overview.rst new file mode 100644 index 0000000..59adb03 --- /dev/null +++ b/umn/source/storage/scalable_file_service_sfs/overview.rst @@ -0,0 +1,27 @@ +:original_name: cce_10_0617.html + +.. _cce_10_0617: + +Overview +======== + +Introduction +------------ + +CCE allows you to mount a volume created from a Scalable File Service (SFS) file system to a container to store data persistently. SFS volumes are commonly used in ReadWriteMany scenarios for large-capacity expansion and cost-sensitive services, such as media processing, content management, big data analysis, and workload process analysis. For services with massive volume of small files, SFS Turbo file systems are recommended. + +Expandable to petabytes, SFS provides fully hosted shared file storage, highly available and stable to handle data- and bandwidth-intensive applications + +- **Standard file protocols**: You can mount file systems as volumes to servers, the same as using local directories. +- **Data sharing**: The same file system can be mounted to multiple servers, so that data can be shared. +- **Private network**: Users can access data only in private networks of data centers. +- **Capacity and performance**: The capacity of a single file system is high (PB level) and the performance is excellent (ms-level read/write I/O latency). +- **Use cases**: Deployments/StatefulSets in the ReadWriteMany mode and jobs created for high-performance computing (HPC), media processing, content management, web services, big data analysis, and workload process analysis + +Application Scenarios +--------------------- + +SFS supports the following mounting modes based on application scenarios: + +- :ref:`Using an Existing SFS File System Through a Static PV `: static creation mode, where you use an existing SFS volume to create a PV and then mount storage to the workload through a PVC. This mode applies to scenarios where the underlying storage is available. +- :ref:`Using an SFS File System Through a Dynamic PV `: dynamic creation mode, where you do not need to create SFS volumes in advance. Instead, specify a StorageClass during PVC creation and an SFS volume and a PV will be automatically created. This mode applies to scenarios where no underlying storage is available. diff --git a/umn/source/storage/scalable_file_service_sfs/using_an_existing_sfs_file_system_through_a_static_pv.rst b/umn/source/storage/scalable_file_service_sfs/using_an_existing_sfs_file_system_through_a_static_pv.rst new file mode 100644 index 0000000..f227d4a --- /dev/null +++ b/umn/source/storage/scalable_file_service_sfs/using_an_existing_sfs_file_system_through_a_static_pv.rst @@ -0,0 +1,465 @@ +:original_name: cce_10_0619.html + +.. _cce_10_0619: + +Using an Existing SFS File System Through a Static PV +===================================================== + +SFS is a network-attached storage (NAS) that provides shared, scalable, and high-performance file storage. It applies to large-capacity expansion and cost-sensitive services. This section describes how to use an existing SFS file system to statically create PVs and PVCs and implement data persistence and sharing in workloads. + +Prerequisites +------------- + +- You have created a cluster and installed the CSI add-on (:ref:`everest `) in the cluster. +- If you want to create a cluster using commands, use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. +- You have created an SFS file system that is in the same VPC as the cluster. + +Constraints +----------- + +- Multiple PVs can use the same SFS or SFS Turbo file system with the following restrictions: + + - If multiple PVCs/PVs use the same underlying SFS or SFS Turbo file system, when you attempt to mount these PVCs/PVs to the same pod, all PVCs cannot be mounted to the pod and the pod startup fails. This is because the **volumeHandle** values of these PVs are the same. + - The **persistentVolumeReclaimPolicy** parameter in the PVs must be set to **Retain**. Otherwise, when a PV is deleted, the associated underlying volume may be deleted. In this case, other PVs associated with the underlying volume malfunction. + - When the underlying volume is repeatedly used, enable isolation and protection for ReadWriteMany at the application layer to prevent data overwriting and loss. + +Using an Existing SFS File System on the Console +------------------------------------------------ + +#. Log in to the CCE console and click the cluster name to access the cluster console. +#. Statically create a PVC and PV. + + a. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** tab. Click **Create PVC** in the upper right corner. In the dialog box displayed, configure the PVC parameters. + + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+=====================================================================================================================================================================================================================+ + | PVC Type | In this example, select **SFS**. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PVC Name | Enter the PVC name, which must be unique in the same namespace. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Creation Method | - If underlying storage is available, create a storage volume or use an existing storage volume to statically create a PVC based on whether a PV has been created. | + | | - If no underlying storage is available, select **Dynamically provision**. For details, see :ref:`Using an SFS File System Through a Dynamic PV `. | + | | | + | | In this example, select **Create new** to create a PV and PVC at the same time on the console. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PV\ :sup:`a` | Select an existing PV in the cluster. Create a PV in advance. For details, see "Creating a storage volume " in :ref:`Related Operations `. | + | | | + | | In this example, you do not need to set this parameter. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SFS\ :sup:`b` | Click **Select SFS**. On the displayed page, select the SFS file system that meets your requirements and click **OK**. | + | | | + | | .. note:: | + | | | + | | Currently, only SFS 3.0 Capacity-Oriented is supported. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PV Name\ :sup:`b` | Enter the PV name, which must be unique in the same cluster. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Access Mode\ :sup:`b` | SFS volumes support only **ReadWriteMany**, indicating that a storage volume can be mounted to multiple nodes in read/write mode. For details, see :ref:`Volume Access Modes `. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Reclaim Policy\ :sup:`b` | You can select **Delete** or **Retain** to specify the reclaim policy of the underlying storage when the PVC is deleted. For details, see :ref:`PV Reclaim Policy `. | + | | | + | | .. note:: | + | | | + | | If multiple PVs use the same underlying storage volume, use **Retain** to avoid cascading deletion of underlying volumes. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Mount Options\ :sup:`b` | Enter the mounting parameter key-value pairs. For details, see :ref:`Configuring SFS Volume Mount Options `. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: + + a: The parameter is available when **Creation Method** is set to **Use existing**. + + b: The parameter is available when **Creation Method** is set to **Create new**. + + b. Click **Create** to create a PVC and a PV. + + You can choose **Storage** in the navigation pane and view the created PVC and PV on the **PersistentVolumeClaims (PVCs)** and **PersistentVolumes (PVs)** tab pages. + +#. Create an application. + + a. In the navigation pane on the left, click **Workloads**. In the right pane, click the **Deployments** tab. + + b. Click **Create Workload** in the upper right corner. On the displayed page, click **Data Storage** in the **Container Settings** area and click **Add Volume** to select **PVC**. + + Mount and use storage volumes, as shown in :ref:`Table 1 `. For details about other parameters, see :ref:`Workloads `. + + .. _cce_10_0619__table2529244345: + + .. table:: **Table 1** Mounting a storage volume + + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+=============================================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | PVC | Select an existing SFS volume. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Mount Path | Enter a mount path, for example, **/tmp**. | + | | | + | | This parameter indicates the container path to which a data volume will be mounted. Do not mount the volume to a system directory such as **/** or **/var/run**. Otherwise, containers will be malfunctional. Mount the volume to an empty directory. If the directory is not empty, ensure that there are no files that affect container startup. Otherwise, the files will be replaced, causing container startup failures or workload creation failures. | + | | | + | | .. important:: | + | | | + | | NOTICE: | + | | If a volume is mounted to a high-risk directory, use an account with minimum permissions to start the container. Otherwise, high-risk files on the host may be damaged. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Subpath | Enter a subpath, for example, **tmp**, indicating that data in the mount path of the container will be stored in the **tmp** folder of the volume. | + | | | + | | A subpath is used to mount a local volume so that the same data volume is used in a single pod. If this parameter is left blank, the root path is used by default. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Permission | - **Read-only**: You can only read the data in the mounted volumes. | + | | - **Read/Write**: You can modify the data volumes mounted to the path. Newly written data is not migrated if the container is migrated, which may cause data loss. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + In this example, the disk is mounted to the **/data** path of the container. The container data generated in this path is stored in the SFS file system. + + c. After the configuration, click **Create Workload**. + + After the workload is created, the data in the container mount directory will be persistently stored. Verify the storage by referring to :ref:`Verifying Data Persistence and Sharing `. + +(kubectl) Using an Existing SFS File System +------------------------------------------- + +#. Use kubectl to connect to the cluster. +#. Create a PV. + + a. .. _cce_10_0619__li162841212145314: + + Create the **pv-sfs.yaml** file. + + SFS Capacity-Oriented: + + .. code-block:: + + apiVersion: v1 + kind: PersistentVolume + metadata: + annotations: + pv.kubernetes.io/provisioned-by: everest-csi-provisioner + everest.io/reclaim-policy: retain-volume-only # (Optional) The PV is deleted while the underlying volume is retained. + name: pv-sfs # PV name. + spec: + accessModes: + - ReadWriteMany # Access mode. The value must be ReadWriteMany for SFS. + capacity: + storage: 1Gi # SFS volume capacity. + csi: + driver: disk.csi.everest.io # Dependent storage driver for the mounting. + fsType: nfs + volumeHandle: # SFS Capacity-Oriented volume ID. + volumeAttributes: + everest.io/share-export-location: # Shared path of the SFS volume. + storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner + persistentVolumeReclaimPolicy: Retain # Reclaim policy. + storageClassName: csi-nas # Storage class name. csi-nas indicates that SFS Capacity-Oriented is used. + mountOptions: [] # Mount options. + + .. table:: **Table 2** Key parameters + + +-----------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Mandatory | Description | + +===============================================+=======================+=====================================================================================================================================================================================================================================================================================================+ + | everest.io/reclaim-policy: retain-volume-only | No | Optional. | + | | | | + | | | Currently, only **retain-volume-only** is supported. | + | | | | + | | | This field is valid only when the everest version is 1.2.9 or later and the reclaim policy is **Delete**. If the reclaim policy is **Delete** and the current value is **retain-volume-only**, the associated PV is deleted while the underlying storage volume is retained, when a PVC is deleted. | + +-----------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | volumeHandle | Yes | - If an SFS Capacity-Oriented volume is used, enter the volume ID. | + | | | | + | | | Log in to the console, choose **Service List** > **Storage** > **Scalable File Service**, and select **SFS Turbo**. In the list, click the name of the target SFS file system. On the details page, copy the content following **ID**. | + +-----------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | everest.io/share-export-location | Yes | Shared path of the file system. | + | | | | + | | | - For an SFS Capacity-Oriented file system, log in to the console, choose **Service List** > **Storage** > **Scalable File Service**, and obtain the shared path from the **Mount Address** column. | + +-----------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | mountOptions | Yes | Mount options. | + | | | | + | | | If not specified, the following configurations are used by default. For details, see :ref:`Configuring SFS Volume Mount Options `. | + | | | | + | | | .. code-block:: | + | | | | + | | | mountOptions: | + | | | - vers=3 | + | | | - timeo=600 | + | | | - nolock | + | | | - hard | + +-----------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | persistentVolumeReclaimPolicy | Yes | A reclaim policy is supported when the cluster version is or later than 1.19.10 and the everest version is or later than 1.2.9. | + | | | | + | | | The **Delete** and **Retain** reclaim policies are supported. For details, see :ref:`PV Reclaim Policy `. If multiple PVs use the same SFS volume, use **Retain** to avoid cascading deletion of underlying volumes. | + | | | | + | | | **Delete**: | + | | | | + | | | - If **everest.io/reclaim-policy** is not specified, both the PV and SFS volume are deleted when a PVC is deleted. | + | | | - If **everest.io/reclaim-policy** is set to **retain-volume-only set**, when a PVC is deleted, the PV is deleted but the SFS volume resources are retained. | + | | | | + | | | **Retain**: When a PVC is deleted, the PV and underlying storage resources are not deleted. Instead, you must manually delete these resources. After that, the PV is in the **Released** status and cannot be bound to the PVC again. | + +-----------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | storage | Yes | Requested capacity in the PVC, in Gi. | + | | | | + | | | For SFS, this field is used only for verification (cannot be empty or **0**). Its value is fixed at **1**, and any value you set does not take effect for SFS file systems. | + +-----------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + b. Run the following command to create a PV: + + .. code-block:: + + kubectl apply -f pv-sfs.yaml + +#. Create a PVC. + + a. Create the **pvc-sfs.yaml** file. + + .. code-block:: + + apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + name: pvc-sfs + namespace: default + annotations: + volume.beta.kubernetes.io/storage-provisioner: everest-csi-provisioner + spec: + accessModes: + - ReadWriteMany # The value must be ReadWriteMany for SFS. + resources: + requests: + storage: 1Gi # SFS volume capacity. + storageClassName: csi-nas # Storage class name, which must be the same as the PV's storage class. + volumeName: pv-sfs # PV name. + + .. table:: **Table 3** Key parameters + + +-----------------------+-----------------------+----------------------------------------------------------------------------------------------+ + | Parameter | Mandatory | Description | + +=======================+=======================+==============================================================================================+ + | storage | Yes | Requested capacity in the PVC, in Gi. | + | | | | + | | | The value must be the same as the storage size of the existing PV. | + +-----------------------+-----------------------+----------------------------------------------------------------------------------------------+ + | volumeName | Yes | PV name, which must be the same as the PV name in :ref:`1 `. | + +-----------------------+-----------------------+----------------------------------------------------------------------------------------------+ + + b. Run the following command to create a PVC: + + .. code-block:: + + kubectl apply -f pvc-sfs.yaml + +#. Create an application. + + a. Create a file named **web-demo.yaml**. In this example, the SFS volume is mounted to the **/data** path. + + .. code-block:: + + apiVersion: apps/v1 + kind: Deployment + metadata: + name: web-demo + namespace: default + spec: + replicas: 2 + selector: + matchLabels: + app: web-demo + template: + metadata: + labels: + app: web-demo + spec: + containers: + - name: container-1 + image: nginx:latest + volumeMounts: + - name: pvc-sfs-volume # Volume name, which must be the same as the volume name in the volumes field. + mountPath: /data # Location where the storage volume is mounted. + imagePullSecrets: + - name: default-secret + volumes: + - name: pvc-sfs-volume # Volume name, which can be customized. + persistentVolumeClaim: + claimName: pvc-sfs # Name of the created PVC. + + b. Run the following command to create an application to which the SFS volume is mounted: + + .. code-block:: + + kubectl apply -f web-demo.yaml + + After the workload is created, the data in the container mount directory will be persistently stored. Verify the storage by referring to :ref:`Verifying Data Persistence and Sharing `. + +.. _cce_10_0619__section11593165910013: + +Verifying Data Persistence and Sharing +-------------------------------------- + +#. View the deployed applications and files. + + a. Run the following command to view the created pod: + + .. code-block:: + + kubectl get pod | grep web-demo + + Expected output: + + .. code-block:: + + web-demo-846b489584-mjhm9 1/1 Running 0 46s + web-demo-846b489584-wvv5s 1/1 Running 0 46s + + b. Run the following commands in sequence to view the files in the **/data** path of the pods: + + .. code-block:: + + kubectl exec web-demo-846b489584-mjhm9 -- ls /data + kubectl exec web-demo-846b489584-wvv5s -- ls /data + + If no result is returned for both pods, no file exists in the **/data** path. + +#. Run the following command to create a file named **static** in the **/data** path: + + .. code-block:: + + kubectl exec web-demo-846b489584-mjhm9 -- touch /data/static + +#. Run the following command to view the files in the **/data** path: + + .. code-block:: + + kubectl exec web-demo-846b489584-mjhm9 -- ls /data + + Expected output: + + .. code-block:: + + static + +#. **Verify data persistence.** + + a. Run the following command to delete the pod named **web-demo-846b489584-mjhm9**: + + .. code-block:: + + kubectl delete pod web-demo-846b489584-mjhm9 + + Expected output: + + .. code-block:: + + pod "web-demo-846b489584-mjhm9" deleted + + After the deletion, the Deployment controller automatically creates a replica. + + b. Run the following command to view the created pod: + + .. code-block:: + + kubectl get pod | grep web-demo + + The expected output is as follows, in which **web-demo-846b489584-d4d4j** is the newly created pod: + + .. code-block:: + + web-demo-846b489584-d4d4j 1/1 Running 0 110s + web-demo-846b489584-wvv5s 1/1 Running 0 7m50s + + c. Run the following command to check whether the files in the **/data** path of the new pod have been modified: + + .. code-block:: + + kubectl exec web-demo-846b489584-d4d4j -- ls /data + + Expected output: + + .. code-block:: + + static + + If the **static** file still exists, the data can be stored persistently. + +#. **Verify data sharing.** + + a. Run the following command to view the created pod: + + .. code-block:: + + kubectl get pod | grep web-demo + + Expected output: + + .. code-block:: + + web-demo-846b489584-d4d4j 1/1 Running 0 7m + web-demo-846b489584-wvv5s 1/1 Running 0 13m + + b. Run the following command to create a file named **share** in the **/data** path of either pod: In this example, select the pod named **web-demo-846b489584-d4d4j**. + + .. code-block:: + + kubectl exec web-demo-846b489584-d4d4j -- touch /data/share + + Check the files in the **/data** path of the pod. + + .. code-block:: + + kubectl exec web-demo-846b489584-d4d4j -- ls /data + + Expected output: + + .. code-block:: + + share + static + + c. Check whether the **share** file exists in the **/data** path of another pod (**web-demo-846b489584-wvv5s**) as well to verify data sharing. + + .. code-block:: + + kubectl exec web-demo-846b489584-wvv5s -- ls /data + + Expected output: + + .. code-block:: + + share + static + + After you create a file in the **/data** path of a pod, if the file is also created in the **/data** path of another pods, the two pods share the same volume. + +.. _cce_10_0619__section16505832153318: + +Related Operations +------------------ + +You can also perform the operations listed in :ref:`Table 4 `. + +.. _cce_10_0619__table1619535674020: + +.. table:: **Table 4** Related operations + + +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Operation | Description | Procedure | + +================================+====================================================================================================================================================+============================================================================================================================================================================================================================================+ + | Creating a storage volume (PV) | Create a PV on the CCE console. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumes (PVs)** tab. Click **Create Volume** in the upper right corner. In the dialog box displayed, configure the parameters. | + | | | | + | | | - **Volume Type**: Select **SFS**. | + | | | - **SFS**: Click **Select SFS**. On the displayed page, select the SFS file system that meets your requirements and click **OK**. | + | | | - PV Name: Enter the PV name. The PV name must be unique in the same cluster. | + | | | - **Access Mode**: SFS volumes support only **ReadWriteMany**, indicating that a storage volume can be mounted to multiple nodes in read/write mode. For details, see :ref:`Volume Access Modes `. | + | | | - **Reclaim Policy**: **Delete** or **Retain**. For details, see :ref:`PV Reclaim Policy `. | + | | | | + | | | .. note:: | + | | | | + | | | If multiple PVs use the same underlying storage volume, use **Retain** to avoid cascading deletion of underlying volumes. | + | | | | + | | | - **Mount Options**: Enter the mounting parameter key-value pairs. For details, see :ref:`Configuring SFS Volume Mount Options `. | + | | | | + | | | #. Click **Create**. | + +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Viewing events | You can view event names, event types, number of occurrences, Kubernetes events, first occurrence time, and last occurrence time of the PVC or PV. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** or **PersistentVolumes (PVs)** tab. | + | | | #. Click **View Events** in the **Operation** column of the target PVC or PV to view events generated within one hour (event data is retained for one hour). | + +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Viewing a YAML file | You can view, copy, and download the YAML files of a PVC or PV. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** or **PersistentVolumes (PVs)** tab. | + | | | #. Click **View YAML** in the **Operation** column of the target PVC or PV to view or download the YAML. | + +--------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/storage/scalable_file_service_sfs/using_an_sfs_file_system_through_a_dynamic_pv.rst b/umn/source/storage/scalable_file_service_sfs/using_an_sfs_file_system_through_a_dynamic_pv.rst new file mode 100644 index 0000000..fe108ef --- /dev/null +++ b/umn/source/storage/scalable_file_service_sfs/using_an_sfs_file_system_through_a_dynamic_pv.rst @@ -0,0 +1,332 @@ +:original_name: cce_10_0620.html + +.. _cce_10_0620: + +Using an SFS File System Through a Dynamic PV +============================================= + +This section describes how to use storage classes to dynamically create PVs and PVCs and implement data persistence and sharing in workloads. + +Automatically Creating an SFS File System on the Console +-------------------------------------------------------- + +#. Log in to the CCE console and click the cluster name to access the cluster console. +#. Dynamically create a PVC and PV. + + a. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** tab. Click **Create PVC** in the upper right corner. In the dialog box displayed, configure the PVC parameters. + + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+==================================================================================================================================================================================================================================================================+ + | PVC Type | In this example, select **SFS**. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PVC Name | Enter the PVC name, which must be unique in the same namespace. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Creation Method | - If no underlying storage is available, select **Dynamically provision** to create a PVC, PV, and underlying storage on the console in cascading mode. | + | | - If underlying storage is available, create a storage volume or use an existing storage volume to statically create a PVC based on whether a PV has been created. For details, see :ref:`Using an Existing SFS File System Through a Static PV `. | + | | | + | | In this example, select **Dynamically provision**. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Storage Classes | The storage class for SFS volumes is **csi-sfs**. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Access Mode | SFS volumes support only **ReadWriteMany**, indicating that a storage volume can be mounted to multiple nodes in read/write mode. For details, see :ref:`Volume Access Modes `. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + b. Click **Create** to create a PVC and a PV. + + You can choose **Storage** in the navigation pane and view the created PVC and PV on the **PersistentVolumeClaims (PVCs)** and **PersistentVolumes (PVs)** tab pages. + +#. Create an application. + + a. In the navigation pane on the left, click **Workloads**. In the right pane, click the **Deployments** tab. + + b. Click **Create Workload** in the upper right corner. On the displayed page, click **Data Storage** in the **Container Settings** area and click **Add Volume** to select **PVC**. + + Mount and use storage volumes, as shown in :ref:`Table 1 `. For details about other parameters, see :ref:`Workloads `. + + .. _cce_10_0620__cce_10_0619_table2529244345: + + .. table:: **Table 1** Mounting a storage volume + + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+=============================================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | PVC | Select an existing SFS volume. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Mount Path | Enter a mount path, for example, **/tmp**. | + | | | + | | This parameter indicates the container path to which a data volume will be mounted. Do not mount the volume to a system directory such as **/** or **/var/run**. Otherwise, containers will be malfunctional. Mount the volume to an empty directory. If the directory is not empty, ensure that there are no files that affect container startup. Otherwise, the files will be replaced, causing container startup failures or workload creation failures. | + | | | + | | .. important:: | + | | | + | | NOTICE: | + | | If a volume is mounted to a high-risk directory, use an account with minimum permissions to start the container. Otherwise, high-risk files on the host may be damaged. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Subpath | Enter a subpath, for example, **tmp**, indicating that data in the mount path of the container will be stored in the **tmp** folder of the volume. | + | | | + | | A subpath is used to mount a local volume so that the same data volume is used in a single pod. If this parameter is left blank, the root path is used by default. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Permission | - **Read-only**: You can only read the data in the mounted volumes. | + | | - **Read/Write**: You can modify the data volumes mounted to the path. Newly written data is not migrated if the container is migrated, which may cause data loss. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + In this example, the disk is mounted to the **/data** path of the container. The container data generated in this path is stored in the SFS file system. + + c. After the configuration, click **Create Workload**. + + After the workload is created, the data in the container mount directory will be persistently stored. Verify the storage by referring to :ref:`Verifying Data Persistence and Sharing `. + +(kubectl) Automatically Creating an SFS File System +--------------------------------------------------- + +#. Use kubectl to connect to the cluster. +#. Use **StorageClass** to dynamically create a PVC and PV. + + a. Create the **pvc-sfs-auto.yaml** file. + + .. code-block:: + + apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + name: pvc-sfs-auto + namespace: default + annotations: + everest.io/crypt-key-id: # (Optional) ID of the key for encrypting file systems + everest.io/crypt-alias: sfs/default # (Optional) Key name. Mandatory for encrypting volumes. + everest.io/crypt-domain-id: # (Optional) ID of the tenant to which an encrypted volume belongs. Mandatory for encrypting volumes. + spec: + accessModes: + - ReadWriteMany # The value must be ReadWriteMany for SFS. + resources: + requests: + storage: 1Gi # SFS volume capacity. + storageClassName: csi-nas # The storage class type is SFS. + + .. table:: **Table 2** Key parameters + + +----------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Mandatory | Description | + +============================+=======================+==================================================================================================================================================================================================+ + | storage | Yes | Requested capacity in the PVC, in Gi. | + | | | | + | | | For SFS, this field is used only for verification (cannot be empty or **0**). Its value is fixed at **1**, and any value you set does not take effect for SFS file systems. | + +----------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | everest.io/crypt-key-id | No | This parameter is mandatory when an SFS system is encrypted. Enter the encryption key ID selected during SFS system creation. You can use a custom key or the default key named **sfs/default**. | + | | | | + | | | To obtain a key ID, log in to the DEW console, locate the key to be encrypted, and copy the key ID. | + +----------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | everest.io/crypt-alias | No | Key name, which is mandatory when you create an encrypted volume. | + | | | | + | | | To obtain a key name, log in to the DEW console, locate the key to be encrypted, and copy the key name. | + +----------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | everest.io/crypt-domain-id | No | ID of the tenant to which the encrypted volume belongs. This parameter is mandatory for creating an encrypted volume. | + | | | | + | | | To obtain a tenant ID, hover the cursor over the username in the upper right corner of the ECS console, choose **My Credentials**, and copy the account ID. | + +----------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + b. Run the following command to create a PVC: + + .. code-block:: + + kubectl apply -f pvc-sfs-auto.yaml + +#. Create an application. + + a. Create a file named **web-demo.yaml**. In this example, the SFS volume is mounted to the **/data** path. + + .. code-block:: + + apiVersion: apps/v1 + kind: Deployment + metadata: + name: web-demo + namespace: default + spec: + replicas: 2 + selector: + matchLabels: + app: web-demo + template: + metadata: + labels: + app: web-demo + spec: + containers: + - name: container-1 + image: nginx:latest + volumeMounts: + - name: pvc-sfs-volume # Volume name, which must be the same as the volume name in the volumes field. + mountPath: /data # Location where the storage volume is mounted. + imagePullSecrets: + - name: default-secret + volumes: + - name: pvc-sfs-volume # Volume name, which can be customized. + persistentVolumeClaim: + claimName: pvc-sfs-auto # Name of the created PVC. + + b. Run the following command to create an application to which the SFS volume is mounted: + + .. code-block:: + + kubectl apply -f web-demo.yaml + + After the workload is created, the data in the container mount directory will be persistently stored. Verify the storage by referring to :ref:`Verifying Data Persistence and Sharing `. + +.. _cce_10_0620__section11593165910013: + +Verifying Data Persistence and Sharing +-------------------------------------- + +#. View the deployed applications and files. + + a. Run the following command to view the created pod: + + .. code-block:: + + kubectl get pod | grep web-demo + + Expected output: + + .. code-block:: + + web-demo-846b489584-mjhm9 1/1 Running 0 46s + web-demo-846b489584-wvv5s 1/1 Running 0 46s + + b. Run the following commands in sequence to view the files in the **/data** path of the pods: + + .. code-block:: + + kubectl exec web-demo-846b489584-mjhm9 -- ls /data + kubectl exec web-demo-846b489584-wvv5s -- ls /data + + If no result is returned for both pods, no file exists in the **/data** path. + +#. Run the following command to create a file named **static** in the **/data** path: + + .. code-block:: + + kubectl exec web-demo-846b489584-mjhm9 -- touch /data/static + +#. Run the following command to view the files in the **/data** path: + + .. code-block:: + + kubectl exec web-demo-846b489584-mjhm9 -- ls /data + + Expected output: + + .. code-block:: + + static + +#. **Verify data persistence.** + + a. Run the following command to delete the pod named **web-demo-846b489584-mjhm9**: + + .. code-block:: + + kubectl delete pod web-demo-846b489584-mjhm9 + + Expected output: + + .. code-block:: + + pod "web-demo-846b489584-mjhm9" deleted + + After the deletion, the Deployment controller automatically creates a replica. + + b. Run the following command to view the created pod: + + .. code-block:: + + kubectl get pod | grep web-demo + + The expected output is as follows, in which **web-demo-846b489584-d4d4j** is the newly created pod: + + .. code-block:: + + web-demo-846b489584-d4d4j 1/1 Running 0 110s + web-demo-846b489584-wvv5s 1/1 Running 0 7m50s + + c. Run the following command to check whether the files in the **/data** path of the new pod have been modified: + + .. code-block:: + + kubectl exec web-demo-846b489584-d4d4j -- ls /data + + Expected output: + + .. code-block:: + + static + + If the **static** file still exists, the data can be stored persistently. + +#. **Verify data sharing.** + + a. Run the following command to view the created pod: + + .. code-block:: + + kubectl get pod | grep web-demo + + Expected output: + + .. code-block:: + + web-demo-846b489584-d4d4j 1/1 Running 0 7m + web-demo-846b489584-wvv5s 1/1 Running 0 13m + + b. Run the following command to create a file named **share** in the **/data** path of either pod: In this example, select the pod named **web-demo-846b489584-d4d4j**. + + .. code-block:: + + kubectl exec web-demo-846b489584-d4d4j -- touch /data/share + + Check the files in the **/data** path of the pod. + + .. code-block:: + + kubectl exec web-demo-846b489584-d4d4j -- ls /data + + Expected output: + + .. code-block:: + + share + static + + c. Check whether the **share** file exists in the **/data** path of another pod (**web-demo-846b489584-wvv5s**) as well to verify data sharing. + + .. code-block:: + + kubectl exec web-demo-846b489584-wvv5s -- ls /data + + Expected output: + + .. code-block:: + + share + static + + After you create a file in the **/data** path of a pod, if the file is also created in the **/data** path of another pods, the two pods share the same volume. + +Related Operations +------------------ + +You can also perform the operations listed in :ref:`Table 3 `. + +.. _cce_10_0620__table1619535674020: + +.. table:: **Table 3** Related operations + + +-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Operation | Description | Procedure | + +=======================+====================================================================================================================================================+==============================================================================================================================================================+ + | Viewing events | You can view event names, event types, number of occurrences, Kubernetes events, first occurrence time, and last occurrence time of the PVC or PV. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** or **PersistentVolumes (PVs)** tab. | + | | | #. Click **View Events** in the **Operation** column of the target PVC or PV to view events generated within one hour (event data is retained for one hour). | + +-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Viewing a YAML file | You can view, copy, and download the YAML files of a PVC or PV. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** or **PersistentVolumes (PVs)** tab. | + | | | #. Click **View YAML** in the **Operation** column of the target PVC or PV to view or download the YAML. | + +-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/storage/setting_mount_options.rst b/umn/source/storage/setting_mount_options.rst deleted file mode 100644 index 744454a..0000000 --- a/umn/source/storage/setting_mount_options.rst +++ /dev/null @@ -1,178 +0,0 @@ -:original_name: cce_10_0337.html - -.. _cce_10_0337: - -Setting Mount Options -===================== - -Scenario --------- - -You can mount cloud storage volumes to your containers and use these volumes as local directories. - -This section describes how to set mount options when mounting SFS and OBS volumes. You can set mount options in a PV and bind the PV to a PVC. Alternatively, set mount options in a StorageClass and use the StorageClass to create a PVC. In this way, PVs can be dynamically created and inherit mount options configured in the StorageClass by default. - -.. _cce_10_0337__section14888047833: - -SFS Volume Mount Options ------------------------- - -The everest add-on in CCE presets the options described in :ref:`Table 1 ` for mounting SFS volumes. You can set other mount options if needed. For details, see `Mounting an NFS File System to ECSs (Linux) `__. - -.. _cce_10_0337__table128754351546: - -.. table:: **Table 1** SFS volume mount options - - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Option | Description | - +===================================+===============================================================================================================================================================================================+ - | vers=3 | File system version. Currently, only NFSv3 is supported, Value: **3** | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | nolock | Whether to lock files on the server using the NLM protocol. If **nolock** is selected, the lock is valid for applications on one host. For applications on another host, the lock is invalid. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | timeo=600 | Waiting time before the NFS client retransmits a request. The unit is 0.1 seconds. Recommended value: **600** | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | hard/soft | Mounting mode. | - | | | - | | - **hard**: If the NFS request times out, the client keeps resending the request until the request is successful. | - | | - **soft**: If the NFS request times out, the client returns an error to the invoking program. | - | | | - | | The default value is **hard**. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -.. _cce_10_0337__section1254912109811: - -OBS Volume Mount Options ------------------------- - -When mounting file storage, the everest add-on presets the options described in :ref:`Table 2 ` and :ref:`Table 3 ` by default. The options in :ref:`Table 2 ` are mandatory. - -.. _cce_10_0337__table1688593020213: - -.. table:: **Table 2** Mandatory mount options configured by default - - +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ - | Option | Description | - +===================================+==========================================================================================================================================+ - | use_ino | If enabled, obsfs allocates the **inode** number. Enabled by default in read/write mode. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ - | big_writes | If configured, the maximum size of the cache can be modified. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ - | nonempty | Allows non-empty mount paths. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ - | allow_other | Allows other users to access the parallel file system. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ - | no_check_certificate | Disables server certificate verification. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ - | enable_noobj_cache | Enables cache entries for objects that do not exist, which can improve performance. Enabled by default in object bucket read/write mode. | - | | | - | | **This option is no longer set by default since everest 1.2.40.** | - +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ - | sigv2 | Specifies the signature version. Used by default in object buckets. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ - -.. _cce_10_0337__table9886123010217: - -.. table:: **Table 3** Optional mount options configured by default - - +-----------------------+--------------------------------------------------------------------------------------------------------------------+ - | Option | Description | - +=======================+====================================================================================================================+ - | max_write=131072 | This parameter is valid only when **big_writes** is configured. The recommended value is **128 KB**. | - +-----------------------+--------------------------------------------------------------------------------------------------------------------+ - | ssl_verify_hostname=0 | Disables verifying the SSL certificate based on the host name. | - +-----------------------+--------------------------------------------------------------------------------------------------------------------+ - | max_background=100 | Allows setting the maximum number of waiting requests in the background. Used by default in parallel file systems. | - +-----------------------+--------------------------------------------------------------------------------------------------------------------+ - | public_bucket=1 | If set to **1**, public buckets are mounted anonymously. Enabled by default in object bucket read/write mode. | - +-----------------------+--------------------------------------------------------------------------------------------------------------------+ - -You can log in to the node to which the pod is scheduled and view all mount options used for mounting the OBS volume in the process details. - -- Object bucket: ps -ef \| grep s3fs - - .. code-block:: - - root 22142 1 0 Jun03 ? 00:00:00 /usr/bin/s3fs pvc-82fe2cbe-3838-43a2-8afb-f994e402fb9d /mnt/paas/kubernetes/kubelet/pods/0b13ff68-4c8e-4a1c-b15c-724fd4d64389/volumes/kubernetes.io~csi/pvc-82fe2cbe-3838-43a2-8afb-f994e402fb9d/mount -o url=https://{{endpoint}}:443 -o endpoint=xxxxxx -o passwd_file=/opt/everest-host-connector/1622707954357702943_obstmpcred/pvc-82fe2cbe-3838-43a2-8afb-f994e402fb9d -o nonempty -o big_writes -o enable_noobj_cache -o sigv2 -o allow_other -o no_check_certificate -o ssl_verify_hostname=0 -o max_write=131072 -o multipart_size=20 -o umask=0 - -- Parallel file system: ps -ef \| grep obsfs - - .. code-block:: - - root 1355 1 0 Jun03 ? 00:03:16 /usr/bin/obsfs pvc-86720bb9-5aa8-4cde-9231-5253994f8468 /mnt/paas/kubernetes/kubelet/pods/c959a91d-eced-4b41-91c6-96cbd65324f9/volumes/kubernetes.io~csi/pvc-86720bb9-5aa8-4cde-9231-5253994f8468/mount -o url=https://{{endpoint}}:443 -o endpoint=xxxxxx -o passwd_file=/opt/everest-host-connector/1622714415305160399_obstmpcred/pvc-86720bb9-5aa8-4cde-9231-5253994f8468 -o allow_other -o nonempty -o big_writes -o use_ino -o no_check_certificate -o ssl_verify_hostname=0 -o umask=0027 -o max_write=131072 -o max_background=100 -o uid=10000 -o gid=10000 - -Prerequisites -------------- - -- The everest add-on version must be **1.2.8 or later**. -- The add-on identifies the mount options and transfers them to the underlying storage resources, which determine whether the specified options are valid. - -Constraints ------------ - -Mount options cannot be configured for secure containers. - -Setting Mount Options in a PV ------------------------------ - -You can use the **mountOptions** field to set mount options in a PV. The options you can configure in **mountOptions** are listed in :ref:`SFS Volume Mount Options ` and :ref:`OBS Volume Mount Options `. - -.. code-block:: - - apiVersion: v1 - kind: PersistentVolume - metadata: - name: pv-obs-example - annotations: - pv.kubernetes.io/provisioned-by: everest-csi-provisioner - spec: - mountOptions: - - umask=0027 - - uid=10000 - - gid=10000 - accessModes: - - ReadWriteMany - capacity: - storage: 1Gi - claimRef: - apiVersion: v1 - kind: PersistentVolumeClaim - name: pvc-obs-example - namespace: default - csi: - driver: obs.csi.everest.io - fsType: obsfs - volumeAttributes: - everest.io/obs-volume-type: STANDARD - everest.io/region: eu-de - storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner - volumeHandle: obs-normal-static-pv - persistentVolumeReclaimPolicy: Delete - storageClassName: csi-obs - -After a PV is created, you can create a PVC and bind it to the PV, and then mount the PV to the container in the workload. - -Setting Mount Options in a StorageClass ---------------------------------------- - -You can use the **mountOptions** field to set mount options in a StorageClass. The options you can configure in **mountOptions** are listed in :ref:`SFS Volume Mount Options ` and :ref:`OBS Volume Mount Options `. - -.. code-block:: - - apiVersion: storage.k8s.io/v1 - kind: StorageClass - metadata: - name: csi-obs-mount-option - mountOptions: - - umask=0027 - - uid=10000 - - gid=10000 - parameters: - csi.storage.k8s.io/csi-driver-name: obs.csi.everest.io - csi.storage.k8s.io/fstype: s3fs - everest.io/obs-volume-type: STANDARD - provisioner: everest-csi-provisioner - reclaimPolicy: Delete - volumeBindingMode: Immediate - -After the StorageClass is configured, you can use it to create a PVC. By default, the dynamically created PVs inherit the mount options set in the StorageClass. diff --git a/umn/source/storage/sfs_turbo_file_systems/configuring_sfs_turbo_mount_options.rst b/umn/source/storage/sfs_turbo_file_systems/configuring_sfs_turbo_mount_options.rst new file mode 100644 index 0000000..e69c248 --- /dev/null +++ b/umn/source/storage/sfs_turbo_file_systems/configuring_sfs_turbo_mount_options.rst @@ -0,0 +1,116 @@ +:original_name: cce_10_0626.html + +.. _cce_10_0626: + +Configuring SFS Turbo Mount Options +=================================== + +This section describes how to configure SFS Turbo mount options. For SFS Turbo, you can only set mount options in a PV and bind the PV by creating a PVC. + +Prerequisites +------------- + +The everest add-on version must be **1.2.8 or later**. The add-on identifies the mount options and transfers them to the underlying storage resources, which determine whether the specified options are valid. + +Constraints +----------- + +Mount options cannot be configured for Kata containers. + +.. _cce_10_0626__section14888047833: + +SFS Turbo Mount Options +----------------------- + +The everest add-on in CCE presets the options described in :ref:`Table 1 ` for mounting SFS Turbo volumes. + +.. _cce_10_0626__table128754351546: + +.. table:: **Table 1** SFS Turbo mount options + + +-----------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Value | Description | + +=======================+=======================+===============================================================================================================================================================================================+ + | vers | 3 | File system version. Currently, only NFSv3 is supported. Value: **3** | + +-----------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | nolock | Leave it blank. | Whether to lock files on the server using the NLM protocol. If **nolock** is selected, the lock is valid for applications on one host. For applications on another host, the lock is invalid. | + +-----------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | timeo | 600 | Waiting time before the NFS client retransmits a request. The unit is 0.1 seconds. Recommended value: **600** | + +-----------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | hard/soft | Leave it blank. | Mount mode. | + | | | | + | | | - **hard**: If the NFS request times out, the client keeps resending the request until the request is successful. | + | | | - **soft**: If the NFS request times out, the client returns an error to the invoking program. | + | | | | + | | | The default value is **hard**. | + +-----------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +You can set other mount options if needed. For details, see `Mounting an NFS File System to ECSs (Linux) `__. + +Configuring Mount Options in a PV +--------------------------------- + +You can use the **mountOptions** field to configure mount options in a PV. The options you can configure in **mountOptions** are listed in :ref:`SFS Turbo Mount Options `. + +#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. + +#. Set mount options in a PV. Example: + + .. code-block:: + + apiVersion: v1 + kind: PersistentVolume + metadata: + annotations: + pv.kubernetes.io/provisioned-by: everest-csi-provisioner + name: pv-sfsturbo # PV name. + spec: + accessModes: + - ReadWriteMany # Access mode. The value must be ReadWriteMany for SFS Turbo. + capacity: + storage: 500Gi # SFS Turbo volume capacity. + csi: + driver: sfsturbo.csi.everest.io # Dependent storage driver for the mounting. + fsType: nfs + volumeHandle: {your_volume_id} # SFS Turbo volume ID + volumeAttributes: + everest.io/share-export-location: {your_location} # Shared path of the SFS Turbo volume. + everest.io/enterprise-project-id: {your_project_id} # Project ID of the SFS Turbo volume. + storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner + persistentVolumeReclaimPolicy: Retain # Reclaim policy. + storageClassName: csi-sfsturbo # SFS Turbo storage class name. + mountOptions: # Mount options. + - vers=3 + - nolock + - timeo=600 + - hard + +#. After a PV is created, you can create a PVC and bind it to the PV, and then mount the PV to the container in the workload. For details, see :ref:`Using an Existing SFS Turbo File System Through a Static PV `. + +#. Check whether the mount options take effect. + + In this example, the PVC is mounted to the workload that uses the **nginx:latest** image. You can run the **mount -l** command to check whether the mount options take effect. + + a. View the pod to which the SFS Turbo volume has been mounted. In this example, the workload name is **web-sfsturbo**. + + .. code-block:: + + kubectl get pod | grep web-sfsturbo + + Command output: + + .. code-block:: + + web-sfsturbo-*** 1/1 Running 0 23m + + b. Run the following command to check the mount options (**web-sfsturbo-\**\*** is an example pod): + + .. code-block:: + + kubectl exec -it web-sfsturbo-*** -- mount -l | grep nfs + + If the mounting information in the command output is consistent with the configured mount options, the mount options have been configured. + + .. code-block:: + + on /data type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,noresvport,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=**.**.**.**,mountvers=3,mountport=20048,mountproto=tcp,local_lock=all,addr=**.**.**.**) diff --git a/umn/source/storage/sfs_turbo_file_systems/dynamically_creating_and_mounting_subdirectories_of_an_sfs_turbo_file_system.rst b/umn/source/storage/sfs_turbo_file_systems/dynamically_creating_and_mounting_subdirectories_of_an_sfs_turbo_file_system.rst new file mode 100644 index 0000000..f230dc5 --- /dev/null +++ b/umn/source/storage/sfs_turbo_file_systems/dynamically_creating_and_mounting_subdirectories_of_an_sfs_turbo_file_system.rst @@ -0,0 +1,248 @@ +:original_name: cce_bestpractice_00253_0.html + +.. _cce_bestpractice_00253_0: + +Dynamically Creating and Mounting Subdirectories of an SFS Turbo File System +============================================================================ + +Background +---------- + +The minimum capacity of an SFS Turbo file system is 500 GiB, and the SFS Turbo file system cannot be billed by usage. By default, the root directory of an SFS Turbo file system is mounted to a container which, in most case, does not require such a large capacity. + +The everest add-on allows you to dynamically create subdirectories in an SFS Turbo file system and mount these subdirectories to containers. In this way, an SFS Turbo file system can be shared by multiple containers to increase storage efficiency. + +Constraints +----------- + +- Only clusters of v1.15 or later are supported. +- The cluster must use the everest add-on of version 1.1.13 or later. +- Kata containers are not supported. +- When the everest add-on earlier than 1.2.69 or 2.1.11 is used, a maximum of 10 PVCs can be created concurrently at a time by using the subdirectory function. everest of 1.2.69 or later or of 2.1.11 or later is recommended. + +Creating an SFS Turbo Volume of the subpath Type +------------------------------------------------ + +.. caution:: + + Do not expand, disassociate, or delete a **subpath** volume. + +#. Create an SFS Turbo file system in the same VPC and subnet as the cluster. + +#. Create a YAML file of StorageClass, for example, **sfsturbo-subpath-sc.yaml**. + + The following is an example: + + .. code-block:: + + apiVersion: storage.k8s.io/v1 + allowVolumeExpansion: true + kind: StorageClass + metadata: + name: sfsturbo-subpath-sc + mountOptions: + - lock + parameters: + csi.storage.k8s.io/csi-driver-name: sfsturbo.csi.everest.io + csi.storage.k8s.io/fstype: nfs + everest.io/archive-on-delete: "true" + everest.io/share-access-to: 7ca2dba2-1234-1234-1234-626371a8fb3a + everest.io/share-expand-type: bandwidth + everest.io/share-export-location: 192.168.1.1:/sfsturbo/ + everest.io/share-source: sfs-turbo + everest.io/share-volume-type: STANDARD + everest.io/volume-as: subpath + everest.io/volume-id: 0d773f2e-1234-1234-1234-de6a35074696 + provisioner: everest-csi-provisioner + reclaimPolicy: Delete + volumeBindingMode: Immediate + + In this example: + + - **name**: indicates the name of the StorageClass. + - **mountOptions**: indicates the mount options. This field is optional. + + - In versions later than everest 1.1.13 and earlier than everest 1.2.8, only the **nolock** parameter can be configured. By default, the **nolock** parameter is used for the mount operation and does not need to be configured. If **nolock** is set to **false**, the **lock** field is used. + + - More options are available in everest 1.2.8 or a later version. For details, see `Setting Mount Options `__. **Do not set nolock to true. Otherwise, the mount operation will fail.** + + .. code-block:: + + mountOptions: + - vers=3 + - timeo=600 + - nolock + - hard + + - **everest.io/volume-as**: This parameter is set to **subpath** to use the **subpath** volume. + - **everest.io/share-access-to**: This parameter is optional. In a **subpath** volume, set this parameter to the ID of the VPC where the SFS Turbo file system is located. + - **everest.io/share-expand-type**: This parameter is optional. If the type of the SFS Turbo file system is **SFS Turbo Standard - Enhanced** or **SFS Turbo Performance - Enhanced**, set this parameter to **bandwidth**. + - **everest.io/share-export-location**: This parameter indicates the mount directory. It consists of the SFS Turbo shared path and sub-directory. The shared path can be obtained on the SFS Turbo console. The sub-directory is user-defined. The PVCs created using the StorageClass are located in this sub-directory. + - **everest.io/share-volume-type**: This parameter is optional. It specifies the SFS Turbo file system type. The value can be **STANDARD** or **PERFORMANCE**. For enhanced types, this parameter must be used together with **everest.io/share-expand-type** (whose value should be **bandwidth**). + - **everest.io/zone**: This parameter is optional. Set it to the AZ where the SFS Turbo file system is located. + - **everest.io/volume-id**: This parameter indicates the ID of the SFS Turbo volume. You can obtain the volume ID on the SFS Turbo page. + - **everest.io/archive-on-delete**: If this parameter is set to **true** and **Delete** is selected for **Reclaim Policy**, the original documents of the PV will be archived to the directory named **archived-**\ *{$PV name.timestamp}* before the PVC is deleted. If this parameter is set to **false**, the SFS Turbo subdirectory of the corresponding PV will be deleted. The default value is **true**, indicating that the original documents of the PV will be archived to the directory named **archived-**\ *{$PV name.timestamp}* before the PVC is deleted. + +3. Run **kubectl create -f sfsturbo-subpath-sc.yaml**. + +4. Create a PVC YAML file named **sfs-turbo-test.yaml**. + + The following is an example: + + .. code-block:: + + apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + name: sfs-turbo-test + namespace: default + spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 50Gi + storageClassName: sfsturbo-subpath-sc + volumeMode: Filesystem + + In this example: + + - **name**: indicates the name of the PVC. + - **storageClassName**: specifies the name of the StorageClass. + - **storage**: In the subpath mode, it is useless to specify this parameter. The storage capacity is limited by the total capacity of the SFS Turbo file system. If the total capacity of the SFS Turbo file system is insufficient, expand the capacity on the SFS Turbo page in a timely manner. + +5. Run **kubectl create -f sfs-turbo-test.yaml**. + +.. note:: + + It is meaningless to conduct capacity expansion on an SFS Turbo volume created in the subpath mode. This operation does not expand the capacity of the SFS Turbo file system. Ensure that the total capacity of the SFS Turbo file system is not used up. + +Creating a Deployment and Mounting an Existing Volume to the Deployment +----------------------------------------------------------------------- + +#. Create a YAML file for the Deployment, for example, **deployment-test.yaml**. + + The following is an example: + + .. code-block:: + + apiVersion: apps/v1 + kind: Deployment + metadata: + name: test-turbo-subpath-example + namespace: default + generation: 1 + labels: + appgroup: '' + spec: + replicas: 1 + selector: + matchLabels: + app: test-turbo-subpath-example + template: + metadata: + labels: + app: test-turbo-subpath-example + spec: + containers: + - image: nginx:latest + name: container-0 + volumeMounts: + - mountPath: /tmp + name: pvc-sfs-turbo-example + restartPolicy: Always + imagePullSecrets: + - name: default-secret + volumes: + - name: pvc-sfs-turbo-example + persistentVolumeClaim: + claimName: sfs-turbo-test + + In this example: + + - **name**: indicates the name of the Deployment. + - **image**: specifies the image used by the Deployment. + - **mountPath**: indicates the mount path of the container. In this example, the volume is mounted to the **/tmp** directory. + - **claimName**: indicates the name of an existing PVC. + +2. Create the Deployment. + + **kubectl create -f deployment-test.yaml** + +Dynamically Creating a subpath Volume for a StatefulSet +------------------------------------------------------- + +#. Create a YAML file for a StatefulSet, for example, **statefulset-test.yaml**. + + The following is an example: + + .. code-block:: + + apiVersion: apps/v1 + kind: StatefulSet + metadata: + name: test-turbo-subpath + namespace: default + generation: 1 + labels: + appgroup: '' + spec: + replicas: 2 + selector: + matchLabels: + app: test-turbo-subpath + template: + metadata: + labels: + app: test-turbo-subpath + annotations: + metrics.alpha.kubernetes.io/custom-endpoints: '[{"api":"","path":"","port":"","names":""}]' + pod.alpha.kubernetes.io/initialized: 'true' + spec: + containers: + - name: container-0 + image: 'nginx:latest' + resources: {} + volumeMounts: + - name: sfs-turbo-160024548582479676 + mountPath: /tmp + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + imagePullPolicy: IfNotPresent + restartPolicy: Always + terminationGracePeriodSeconds: 30 + dnsPolicy: ClusterFirst + securityContext: {} + imagePullSecrets: + - name: default-secret + affinity: {} + schedulerName: default-scheduler + volumeClaimTemplates: + - metadata: + name: sfs-turbo-160024548582479676 + namespace: default + annotations: {} + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi + storageClassName: sfsturbo-subpath-sc + serviceName: wwww + podManagementPolicy: OrderedReady + updateStrategy: + type: RollingUpdate + revisionHistoryLimit: 10 + + In this example: + + - **name**: indicates the name of the StatefulSet. + - **image**: specifies the image used by the StatefulSet. + - **mountPath**: indicates the mount path of the container. In this example, the volume is mounted to the **/tmp** directory. + - **spec.template.spec.containers.volumeMounts.name** and **spec.volumeClaimTemplates.metadata.name**: must be consistent because they are mapped to each other. + - **storageClassName**: indicates the name of the StorageClass. + +2. Create the StatefulSet. + + **kubectl create -f statefulset-test.yaml** diff --git a/umn/source/storage/sfs_turbo_file_systems/index.rst b/umn/source/storage/sfs_turbo_file_systems/index.rst new file mode 100644 index 0000000..cc2d0ec --- /dev/null +++ b/umn/source/storage/sfs_turbo_file_systems/index.rst @@ -0,0 +1,20 @@ +:original_name: cce_10_0125.html + +.. _cce_10_0125: + +SFS Turbo File Systems +====================== + +- :ref:`Overview ` +- :ref:`Using an Existing SFS Turbo File System Through a Static PV ` +- :ref:`Configuring SFS Turbo Mount Options ` +- :ref:`Dynamically Creating and Mounting Subdirectories of an SFS Turbo File System ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + overview + using_an_existing_sfs_turbo_file_system_through_a_static_pv + configuring_sfs_turbo_mount_options + dynamically_creating_and_mounting_subdirectories_of_an_sfs_turbo_file_system diff --git a/umn/source/storage/sfs_turbo_file_systems/overview.rst b/umn/source/storage/sfs_turbo_file_systems/overview.rst new file mode 100644 index 0000000..51129d9 --- /dev/null +++ b/umn/source/storage/sfs_turbo_file_systems/overview.rst @@ -0,0 +1,27 @@ +:original_name: cce_10_0624.html + +.. _cce_10_0624: + +Overview +======== + +Introduction +------------ + +CCE allows you to mount storage volumes created by SFS Turbo file systems to a path of a container to meet data persistence requirements. SFS Turbo file systems are fast, on-demand, and scalable, which are suitable for scenarios with a massive number of small files, such as DevOps, containerized microservices, and enterprise office applications. + +Expandable to 320 TB, SFS Turbo provides a fully hosted shared file storage, which is highly available and stable, to support small files and applications requiring low latency and high IOPS. + +- **Standard file protocols**: You can mount file systems as volumes to servers, the same as using local directories. +- **Data sharing**: The same file system can be mounted to multiple servers, so that data can be shared. +- **Private network**: Users can access data only in private networks of data centers. +- **Data isolation**: The on-cloud storage service provides exclusive cloud file storage, which delivers data isolation and ensures IOPS performance. +- **Use cases**: Deployments/StatefulSets in the ReadWriteMany mode, DaemonSets, and jobs created for high-traffic websites, log storage, DevOps, and enterprise OA applications + +Application Scenarios +--------------------- + +SFS Turbo supports the following mounting modes: + +- :ref:`Using an Existing SFS Turbo File System Through a Static PV `: static creation mode, where you use an existing SFS volume to create a PV and then mount storage to the workload through a PVC. +- :ref:`Dynamically Creating and Mounting Subdirectories of an SFS Turbo File System `: SFS Turbo allows you to dynamically create subdirectories and mount them to containers so that SFS Turbo can be shared and the SFS Turbo storage capacity can be used more economically and properly. diff --git a/umn/source/storage/sfs_turbo_file_systems/using_an_existing_sfs_turbo_file_system_through_a_static_pv.rst b/umn/source/storage/sfs_turbo_file_systems/using_an_existing_sfs_turbo_file_system_through_a_static_pv.rst new file mode 100644 index 0000000..7872c37 --- /dev/null +++ b/umn/source/storage/sfs_turbo_file_systems/using_an_existing_sfs_turbo_file_system_through_a_static_pv.rst @@ -0,0 +1,444 @@ +:original_name: cce_10_0625.html + +.. _cce_10_0625: + +Using an Existing SFS Turbo File System Through a Static PV +=========================================================== + +SFS Turbo is a shared file system with high availability and durability. It is suitable for applications that contain massive small files and require low latency, and high IOPS. This section describes how to use an existing SFS Turbo file system to statically create PVs and PVCs and implement data persistence and sharing in workloads. + +Prerequisites +------------- + +- You have created a cluster and installed the CSI add-on (:ref:`everest `) in the cluster. +- If you want to create a cluster using commands, use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. +- You have created an available SFS Turbo file system, and the SFS Turbo file system and the cluster are in the same VPC. + +Constraints +----------- + +- Multiple PVs can use the same SFS or SFS Turbo file system with the following restrictions: + + - If multiple PVCs/PVs use the same underlying SFS or SFS Turbo file system, when you attempt to mount these PVCs/PVs to the same pod, all PVCs cannot be mounted to the pod and the pod startup fails. This is because the **volumeHandle** values of these PVs are the same. + - The **persistentVolumeReclaimPolicy** parameter in the PVs must be set to **Retain**. Otherwise, when a PV is deleted, the associated underlying volume may be deleted. In this case, other PVs associated with the underlying volume malfunction. + - When the underlying volume is repeatedly used, enable isolation and protection for ReadWriteMany at the application layer to prevent data overwriting and loss. + +Using an Existing SFS Turbo File System on the Console +------------------------------------------------------ + +#. Log in to the CCE console and click the cluster name to access the cluster console. +#. Statically create a PVC and PV. + + a. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** tab. Click **Create PVC** in the upper right corner. In the dialog box displayed, configure the PVC parameters. + + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+===========================================================================================================================================================================================================================+ + | PVC Type | In this section, select **SFS Turbo**. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PVC Name | Enter the PVC name, which must be unique in the same namespace. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Creation Method | You can create a storage volume or use an existing storage volume to statically create a PVC based on whether a PV has been created. | + | | | + | | In this example, select **Create new** to create a PV and PVC at the same time on the console. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PV\ :sup:`a` | Select an existing PV volume in the cluster. Create a PV in advance. For details, see "Creating a storage volume" in :ref:`Related Operations `. | + | | | + | | You do not need to specify this parameter in this example. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SFS Turbo\ :sup:`b` | Click **Select SFS Turbo**. On the displayed page, select the SFS Turbo file system that meets your requirements and click **OK**. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PV Name\ :sup:`b` | Enter the PV name, which must be unique in the same cluster. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Access Mode\ :sup:`b` | SFS Turbo volumes support only **ReadWriteMany**, indicating that a storage volume can be mounted to multiple nodes in read/write mode. For details, see :ref:`Volume Access Modes `. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Reclaim Policy\ :sup:`b` | Only **Retain** is supported, indicating that the PV is not deleted when the PVC is deleted. For details, see :ref:`PV Reclaim Policy `. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Mount Options\ :sup:`b` | Enter the mounting parameter key-value pairs. For details, see :ref:`Configuring SFS Turbo Mount Options `. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: + + a: The parameter is available when **Creation Method** is set to **Use existing**. + + b: The parameter is available when **Creation Method** is set to **Create new**. + + b. Click **Create** to create a PVC and a PV. + + You can choose **Storage** in the navigation pane and view the created PVC and PV on the **PersistentVolumeClaims (PVCs)** and **PersistentVolumes (PVs)** tab pages. + +#. Create an application. + + a. In the navigation pane on the left, click **Workloads**. In the right pane, click the **Deployments** tab. + + b. Click **Create Workload** in the upper right corner. On the displayed page, click **Data Storage** in the **Container Settings** area and click **Add Volume** to select **PVC**. + + Mount and use storage volumes, as shown in :ref:`Table 1 `. For details about other parameters, see :ref:`Workloads `. + + .. _cce_10_0625__table2529244345: + + .. table:: **Table 1** Mounting a storage volume + + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+=============================================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | PVC | Select an existing SFS Turbo volume. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Mount Path | Enter a mount path, for example, **/tmp**. | + | | | + | | This parameter indicates the container path to which a data volume will be mounted. Do not mount the volume to a system directory such as **/** or **/var/run**. Otherwise, containers will be malfunctional. Mount the volume to an empty directory. If the directory is not empty, ensure that there are no files that affect container startup. Otherwise, the files will be replaced, causing container startup failures or workload creation failures. | + | | | + | | .. important:: | + | | | + | | NOTICE: | + | | If a volume is mounted to a high-risk directory, use an account with minimum permissions to start the container. Otherwise, high-risk files on the host may be damaged. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Subpath | Enter a subpath, for example, **tmp**, indicating that data in the mount path of the container will be stored in the **tmp** folder of the volume. | + | | | + | | A subpath is used to mount a local volume so that the same data volume is used in a single pod. If this parameter is left blank, the root path is used by default. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Permission | - **Read-only**: You can only read the data in the mounted volumes. | + | | - **Read/Write**: You can modify the data volumes mounted to the path. Newly written data is not migrated if the container is migrated, which may cause data loss. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + In this example, the disk is mounted to the **/data** path of the container. The container data generated in this path is stored in the SFS Turbo file system. + + c. After the configuration, click **Create Workload**. + + After the workload is created, the data in the container mount directory will be persistently stored. Verify the storage by referring to :ref:`Verifying Data Persistence and Sharing `. + +(kubectl) Using an Existing SFS File System +------------------------------------------- + +#. Use kubectl to connect to the cluster. +#. Create a PV. + + a. .. _cce_10_0625__li162841212145314: + + Create the **pv-sfsturbo.yaml** file. + + .. code-block:: + + apiVersion: v1 + kind: PersistentVolume + metadata: + annotations: + pv.kubernetes.io/provisioned-by: everest-csi-provisioner + name: pv-sfsturbo # PV name. + spec: + accessModes: + - ReadWriteMany # Access mode. The value must be ReadWriteMany for SFS Turbo. + capacity: + storage: 500Gi # SFS Turbo volume capacity. + csi: + driver: sfsturbo.csi.everest.io # Dependent storage driver for the mounting. + fsType: nfs + volumeHandle: # SFS Turbo volume ID. + volumeAttributes: + everest.io/share-export-location: # Shared path of the SFS Turbo volume. + storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner + persistentVolumeReclaimPolicy: Retain # Reclaim policy. + storageClassName: csi-sfsturbo # Storage class name of the SFS Turbo file system. + mountOptions: [] # Mount options. + + .. table:: **Table 2** Key parameters + + +----------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Mandatory | Description | + +==================================+=======================+========================================================================================================================================================================================================================================================+ + | volumeHandle | Yes | SFS Turbo volume ID. | + | | | | + | | | How to obtain: Log in to the console, choose **Service List** > **Storage** > **Scalable File Service**, and select **SFS Turbo**. In the list, click the name of the target SFS Turbo volume. On the details page, copy the content following **ID**. | + +----------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | everest.io/share-export-location | Yes | Shared path of the SFS Turbo volume. | + | | | | + | | | Log in to the console, choose **Service List** > **Storage** > **Scalable File Service**, and select **SFS Turbo**. You can obtain the shared path of the file system from the **Mount Address** column. | + +----------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | mountOptions | No | Mount options. | + | | | | + | | | If not specified, the following configurations are used by default. For details, see :ref:`Configuring SFS Turbo Mount Options `. | + | | | | + | | | .. code-block:: | + | | | | + | | | mountOptions: | + | | | - vers=3 | + | | | - timeo=600 | + | | | - nolock | + | | | - hard | + +----------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | persistentVolumeReclaimPolicy | Yes | A reclaim policy is supported when the cluster version is or later than 1.19.10 and the everest version is or later than 1.2.9. | + | | | | + | | | Only the **Retain** reclaim policy is supported. For details, see :ref:`Verifying Data Persistence and Sharing `. | + | | | | + | | | **Retain**: When a PVC is deleted, the PV and underlying storage resources are not deleted. Instead, you must manually delete these resources. After that, the PV is in the **Released** status and cannot be bound to the PVC again. | + +----------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | storage | Yes | Requested capacity in the PVC, in Gi. | + +----------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | storageClassName | Yes | The storage class name of SFS Turbo volumes is **csi-sfsturbo**. | + +----------------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + b. Run the following command to create a PV: + + .. code-block:: + + kubectl apply -f pv-sfsturbo.yaml + +#. Create a PVC. + + a. Create the **pvc-sfsturbo.yaml** file. + + .. code-block:: + + apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + name: pvc-sfsturbo + namespace: default + annotations: + volume.beta.kubernetes.io/storage-provisioner: everest-csi-provisioner + spec: + accessModes: + - ReadWriteMany # The value must be ReadWriteMany for SFS Turbo. + resources: + requests: + storage: 500Gi # SFS Turbo volume capacity. + storageClassName: csi-sfsturbo # Storage class of the SFS Turbo volume, which must be the same as that of the PV. + volumeName: pv-sfsturbo # PV name. + + .. table:: **Table 3** Key parameters + + +-----------------------+-----------------------+-------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Mandatory | Description | + +=======================+=======================+=========================================================================================================================+ + | storage | Yes | Requested capacity in the PVC, in Gi. | + | | | | + | | | The value must be the same as the storage size of the existing PV. | + +-----------------------+-----------------------+-------------------------------------------------------------------------------------------------------------------------+ + | storageClassName | Yes | Storage class name, which must be the same as the storage class of the PV in :ref:`1 `. | + | | | | + | | | The storage class name of SFS Turbo volumes is **csi-sfsturbo**. | + +-----------------------+-----------------------+-------------------------------------------------------------------------------------------------------------------------+ + | volumeName | Yes | PV name, which must be the same as the PV name in :ref:`1 `. | + +-----------------------+-----------------------+-------------------------------------------------------------------------------------------------------------------------+ + + b. Run the following command to create a PVC: + + .. code-block:: + + kubectl apply -f pvc-sfsturbo.yaml + +#. Create an application. + + a. Create a file named **web-demo.yaml**. In this example, the SFS Turbo volume is mounted to the **/data** path. + + .. code-block:: + + apiVersion: apps/v1 + kind: Deployment + metadata: + name: web-demo + namespace: default + spec: + replicas: 2 + selector: + matchLabels: + app: web-demo + template: + metadata: + labels: + app: web-demo + spec: + containers: + - name: container-1 + image: nginx:latest + volumeMounts: + - name: pvc-sfsturbo-volume #Volume name, which must be the same as the volume name in the volumes field. + mountPath: /data #Location where the storage volume is mounted. + imagePullSecrets: + - name: default-secret + volumes: + - name: pvc-sfsturbo-volume #Volume name, which can be customized. + persistentVolumeClaim: + claimName: pvc-sfsturbo #Name of the created PVC. + + b. Run the following command to create an application to which the SFS Turbo volume is mounted: + + .. code-block:: + + kubectl apply -f web-demo.yaml + + After the workload is created, you can try :ref:`Verifying Data Persistence and Sharing `. + +.. _cce_10_0625__section11593165910013: + +Verifying Data Persistence and Sharing +-------------------------------------- + +#. View the deployed applications and files. + + a. Run the following command to view the created pod: + + .. code-block:: + + kubectl get pod | grep web-demo + + Expected output: + + .. code-block:: + + web-demo-846b489584-mjhm9 1/1 Running 0 46s + web-demo-846b489584-wvv5s 1/1 Running 0 46s + + b. Run the following commands in sequence to view the files in the **/data** path of the pods: + + .. code-block:: + + kubectl exec web-demo-846b489584-mjhm9 -- ls /data + kubectl exec web-demo-846b489584-wvv5s -- ls /data + + If no result is returned for both pods, no file exists in the **/data** path. + +#. Run the following command to create a file named **static** in the **/data** path: + + .. code-block:: + + kubectl exec web-demo-846b489584-mjhm9 -- touch /data/static + +#. Run the following command to view the files in the **/data** path: + + .. code-block:: + + kubectl exec web-demo-846b489584-mjhm9 -- ls /data + + Expected output: + + .. code-block:: + + static + +#. **Verify data persistence.** + + a. Run the following command to delete the pod named **web-demo-846b489584-mjhm9**: + + .. code-block:: + + kubectl delete pod web-demo-846b489584-mjhm9 + + Expected output: + + .. code-block:: + + pod "web-demo-846b489584-mjhm9" deleted + + After the deletion, the Deployment controller automatically creates a replica. + + b. Run the following command to view the created pod: + + .. code-block:: + + kubectl get pod | grep web-demo + + The expected output is as follows, in which **web-demo-846b489584-d4d4j** is the newly created pod: + + .. code-block:: + + web-demo-846b489584-d4d4j 1/1 Running 0 110s + web-demo-846b489584-wvv5s 1/1 Running 0 7m50s + + c. Run the following command to check whether the files in the **/data** path of the new pod have been modified: + + .. code-block:: + + kubectl exec web-demo-846b489584-d4d4j -- ls /data + + Expected output: + + .. code-block:: + + static + + If the **static** file still exists, the data can be stored persistently. + +#. **Verify data sharing.** + + a. Run the following command to view the created pod: + + .. code-block:: + + kubectl get pod | grep web-demo + + Expected output: + + .. code-block:: + + web-demo-846b489584-d4d4j 1/1 Running 0 7m + web-demo-846b489584-wvv5s 1/1 Running 0 13m + + b. Run the following command to create a file named **share** in the **/data** path of either pod: In this example, select the pod named **web-demo-846b489584-d4d4j**. + + .. code-block:: + + kubectl exec web-demo-846b489584-d4d4j -- touch /data/share + + Check the files in the **/data** path of the pod. + + .. code-block:: + + kubectl exec web-demo-846b489584-d4d4j -- ls /data + + Expected output: + + .. code-block:: + + share + static + + c. Check whether the **share** file exists in the **/data** path of another pod (**web-demo-846b489584-wvv5s**) as well to verify data sharing. + + .. code-block:: + + kubectl exec web-demo-846b489584-wvv5s -- ls /data + + Expected output: + + .. code-block:: + + share + static + + After you create a file in the **/data** path of a pod, if the file is also created in the **/data** path of another pods, the two pods share the same volume. + +.. _cce_10_0625__section16505832153318: + +Related Operations +------------------ + +You can also perform the operations listed in :ref:`Table 4 `. + +.. _cce_10_0625__table1619535674020: + +.. table:: **Table 4** Related operations + + +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Operation | Description | Procedure | + +===============================================+====================================================================================================================================================+============================================================================================================================================================================================================================================+ + | Creating a storage volume (PV) | Create a PV on the CCE console. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumes (PVs)** tab. Click **Create Volume** in the upper right corner. In the dialog box displayed, configure the parameters. | + | | | | + | | | - **Volume Type**: Select **SFS Turbo**. | + | | | - **SFS Turbo**: Click **Select SFS Turbo**. On the page displayed, select the SFS Turbo volume that meets the requirements and click **OK**. | + | | | - **PV Name**: Enter the PV name, which must be unique in the same cluster. | + | | | - **Access Mode**: SFS volumes support only **ReadWriteMany**, indicating that a storage volume can be mounted to multiple nodes in read/write mode. For details, see :ref:`Volume Access Modes `. | + | | | - **Reclaim Policy**: Only **Retain** is supported. For details, see :ref:`PV Reclaim Policy `. | + | | | - **Mount Options**: Enter the mounting parameter key-value pairs. For details, see :ref:`Configuring SFS Turbo Mount Options `. | + | | | | + | | | #. Click **Create**. | + +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Expanding the capacity of an SFS Turbo volume | Quickly expand the capacity of a mounted SFS Turbo volume on the CCE console. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** tab. Click **More** in the **Operation** column of the target PVC and select **Scale-out**. | + | | | #. Enter the capacity to be added and click **OK**. | + +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Viewing events | You can view event names, event types, number of occurrences, Kubernetes events, first occurrence time, and last occurrence time of the PVC or PV. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** or **PersistentVolumes (PVs)** tab. | + | | | #. Click **View Events** in the **Operation** column of the target PVC or PV to view events generated within one hour (event data is retained for one hour). | + +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Viewing a YAML file | You can view, copy, and download the YAML files of a PVC or PV. | #. Choose **Storage** from the navigation pane, and click the **PersistentVolumeClaims (PVCs)** or **PersistentVolumes (PVs)** tab. | + | | | #. Click **View YAML** in the **Operation** column of the target PVC or PV to view or download the YAML. | + +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/storage/storage_basics.rst b/umn/source/storage/storage_basics.rst new file mode 100644 index 0000000..cb8e140 --- /dev/null +++ b/umn/source/storage/storage_basics.rst @@ -0,0 +1,188 @@ +:original_name: cce_10_0378.html + +.. _cce_10_0378: + +Storage Basics +============== + +Volumes +------- + +On-disk files in a container are ephemeral, which presents the following problems to important applications running in the container: + +#. When a container is rebuilt, files in the container will be lost. +#. When multiple containers run in a pod at the same time, files need to be shared among the containers. + +Kubernetes volumes resolve both of these problems. Volumes, as part of a pod, cannot be created independently and can only be defined in pods. All containers in a pod can access its volumes, but the volumes must have been mounted to any directory in a container. + +The following figure shows how a storage volume is used between containers in a pod. + +|image1| + +The basic principles for using volumes are as follows: + +- Multiple volumes can be mounted to a pod. However, do not mount too many volumes to a pod. +- Multiple types of volumes can be mounted to a pod. +- Each volume mounted to a pod can be shared among containers in the pod. +- You are advised to use PVCs and PVs to mount volumes for Kubernetes. + +.. note:: + + The lifecycle of a volume is the same as that of the pod to which the volume is mounted. When the pod is deleted, the volume is also deleted. However, files in the volume may outlive the volume, depending on the volume type. + +Kubernetes provides various volume types, which can be classified as in-tree and out-of-tree. + ++-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Volume Classification | Description | ++===================================+===============================================================================================================================================================================================================================================================================================================================================================================================================================================================================+ +| In-tree | Maintained through the Kubernetes code repository and built, edited, and released with Kubernetes binary files. Kubernetes does not accept this volume type anymore. | +| | | +| | Kubernetes-native volumes such as HostPath, EmptyDir, Secret, and ConfigMap are all the in-tree type. | +| | | +| | PVCs are a special in-tree volume. Kubernetes uses this type of volume to convert from in-tree to out-of-tree. PVCs allow you to request for PVs created using the underlying storage resources provided by different storage vendors. | ++-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Out-of-tree | Out-of-tree volumes include container storage interfaces (CSIs) and FlexVolumes (deprecated). Storage vendors only need to comply with certain specifications to create custom storage add-ons and PVs that can be used by Kubernetes, without adding add-on source code to the Kubernetes code repository. Cloud storage such as SFS and OBS is used by installing storage drivers in a cluster. You need to create PVs in the cluster and mount the PVs to pods using PVCs. | ++-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +PV and PVC +---------- + +Kubernetes provides PersistentVolumes (PVs) and PersistentVolumeClaims (PVCs) to abstract details of how storage is provided from how it is consumed. You can request specific size of storage when needed, just like pods can request specific levels of resources (CPU and memory). + +- PV: describes a persistent storage volume in a cluster. A PV is a cluster-level resource just like a node. It applies to the entire Kubernetes cluster. A PV has a lifecycle independent of any individual Pod that uses the PV. +- PVC: describes a request for storage by a user. When configuring storage for an application, claim a storage request (that is, PVC). Kubernetes selects a PV that best meets the request and binds the PV to the PVC. A PVC to PV binding is a one-to-one mapping. When creating a PVC, describe the attributes of the requested persistent storage, such as the storage size and read/write permission. + +You can bind PVCs to PVs in a pod so that the pod can use storage resources. The following figure shows the relationship between PVs and PVCs. + + +.. figure:: /_static/images/en-us_image_0000001695896709.png + :alt: **Figure 1** PVC-to-PV binding + + **Figure 1** PVC-to-PV binding + +.. _cce_10_0378__section79711433131110: + +CSI +--- + +CSI is a standard for container storage interfaces and a storage plug-in implementation solution recommended by the Kubernetes community. :ref:`everest ` is a storage add-on developed based on CSI. It provides different types of persistent storage for containers. + +.. _cce_10_0378__section43881411172418: + +Volume Access Modes +------------------- + +Storage volumes can be mounted to the host system only in the mode supported by underlying storage resources. For example, a file storage system can be read and written by multiple nodes, but an EVS disk can be read and written by only one node. + +- **ReadWriteOnce**: A storage volume can be mounted to a single node in read-write mode. +- **ReadWriteMany**: A storage volume can be mounted to multiple nodes in read-write mode. + +.. table:: **Table 1** Access modes supported by storage volumes + + ============ ============= ============= + Storage Type ReadWriteOnce ReadWriteMany + ============ ============= ============= + EVS Y x + SFS x Y + OBS x Y + SFS Turbo x Y + ============ ============= ============= + +Mounting a Storage Volume +------------------------- + +You can mount volumes in the following ways: + +Use PVs to describe existing storage resources, and then create PVCs to use the storage resources in pods. You can also use the dynamic creation mode. That is, specify the :ref:`StorageClass ` when creating a PVC and use the provisioner in the StorageClass to automatically create a PV and bind the PV to the PVC. + +.. table:: **Table 2** Modes of mounting volumes + + +-----------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+--------------------------------+ + | Mounting Mode | Description | Supported Volume Type | Other Constraints | + +=======================================================================+========================================================================================================================================================================================================================================================================================================================================================================================+=============================+================================+ + | Statically creating storage volume (using existing storage) | Use existing storage (such as EVS disks and SFS file systems) to create PVs and mount the PVs to the workload through PVCs. Kubernetes binds PVCs to the matching PVs so that workloads can access storage services. | All volumes | None | + +-----------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+--------------------------------+ + | Dynamically creating storage volumes (automatically creating storage) | Specify a :ref:`StorageClass ` for a PVC. The storage provisioner creates underlying storage media as required to automatically create PVs and directly bind the PV to the PVC. | EVS, OBS, SFS, and local PV | None | + +-----------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+--------------------------------+ + | Dynamic mounting (VolumeClaimTemplate) | Achieved by using the `volumeClaimTemplates `__ field and depends on the dynamic PV creation capability of StorageClass. In this mode, each pod is associated with a unique PVC and PV. After a pod is rescheduled, the original data can still be mounted to it based on the PVC name. | EVS and local PV | Supported only by StatefulSets | + +-----------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+--------------------------------+ + +.. _cce_10_0378__section19999142414413: + +PV Reclaim Policy +----------------- + +A PV reclaim policy is used to delete or reclaim underlying volumes when a PVC is deleted. The value can be **Delete** or **Retain**. + +- **Delete**: Deleting a PVC will remove the PV from Kubernetes, so the associated underlying storage assets from the external infrastructure. + +- **Retain**: When a PVC is deleted, the PV and underlying storage resources are not deleted. Instead, you must manually delete these resources. After that, the PV resources are in the **Released** state and cannot be directly bound to the PVC. + + You can manually delete and reclaim volumes by performing the following operations: + + #. Delete the PV. + #. Clear data on the associated underlying storage resources as required. + #. Delete the associated underlying storage resources. + + To reuse the underlying storage resources, create a PV. + +CCE also allows you to delete a PVC without deleting underlying storage resources. This function can be achieved only by using a YAML file: Set the PV reclaim policy to **Delete** and add **everest.io/reclaim-policy: retain-volume-only** to **annotations**. In this way, when the PVC is deleted, the PV is deleted, but the underlying storage resources are retained. + +The following YAML file takes EVS as an example: + +.. code-block:: + + apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + name: test + namespace: default + annotations: + volume.beta.kubernetes.io/storage-provisioner: everest-csi-provisioner + everest.io/disk-volume-type: SAS + labels: + failure-domain.beta.kubernetes.io/region: # Region of the node where the application is to be deployed + failure-domain.beta.kubernetes.io/zone: # AZ of the node where the application is to be deployed + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi + storageClassName: csi-disk + volumeName: pv-evs-test + + --- + apiVersion: v1 + kind: PersistentVolume + metadata: + annotations: + pv.kubernetes.io/provisioned-by: everest-csi-provisioner + everest.io/reclaim-policy: retain-volume-only + name: pv-evs-test + labels: + failure-domain.beta.kubernetes.io/region: # Region of the node where the application is to be deployed + failure-domain.beta.kubernetes.io/zone: # AZ of the node where the application is to be deployed + spec: + accessModes: + - ReadWriteOnce + capacity: + storage: 10Gi + csi: + driver: disk.csi.everest.io + fsType: ext4 + volumeHandle: 2af98016-6082-4ad6-bedc-1a9c673aef20 + volumeAttributes: + storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner + everest.io/disk-mode: SCSI + everest.io/disk-volume-type: SAS + persistentVolumeReclaimPolicy: Delete + storageClassName: csi-disk + +Documentation +------------- + +- For more information about Kubernetes storage, see `Storage `__. +- For more information about CCE container storage, see :ref:`Overview `. + +.. |image1| image:: /_static/images/en-us_image_0000001647417776.png diff --git a/umn/source/storage/storageclass.rst b/umn/source/storage/storageclass.rst index 3739a38..0c8b8e6 100644 --- a/umn/source/storage/storageclass.rst +++ b/umn/source/storage/storageclass.rst @@ -5,26 +5,84 @@ StorageClass ============ -StorageClass describes the storage class used in the cluster. You need to specify StorageClass when creating a PVC or PV. As of now, CCE provides storage classes such as csi-disk, csi-nas, and csi-obs by default. When defining a PVC, you can use a StorageClassName to automatically create a PV of the corresponding type and automatically create underlying storage resources. +Introduction +------------ -You can run the following command to query the storage classes that CCE supports. You can use the CSI plug-in provided by CCE to customize a storage class, which functions similarly as the default storage classes in CCE. +StorageClass describes the classification of storage types in a cluster and can be represented as a configuration template for creating PVs. When creating a PVC or PV, specify StorageClass. + +As a user, you only need to specify **storageClassName** when defining a PVC to automatically create a PV and underlying storage, significantly reducing the workload of creating and maintaining a PV. + +In addition to the :ref:`default storage classes ` provided by CCE, you can also customize storage classes. + +- :ref:`Application Scenarios of Custom Storage ` +- :ref:`Custom Storage Class ` +- :ref:`Specifying a Default StorageClass ` + +.. _cce_10_0380__section77737156273: + +CCE Default Storage Classes +--------------------------- + +As of now, CCE provides storage classes such as csi-disk, csi-nas, and csi-obs by default. When defining a PVC, you can use a **storageClassName** to automatically create a PV of the corresponding type and automatically create underlying storage resources. + +Run the following kubectl command to obtain the storage classes that CCE supports. Use the CSI add-on provided by CCE to create a storage class. .. code-block:: # kubectl get sc NAME PROVISIONER AGE - csi-disk everest-csi-provisioner 17d # Storage class for EVS disks - csi-nas everest-csi-provisioner 17d # Storage class for SFS 1.0 file systems - csi-obs everest-csi-provisioner 17d # Storage class for OBS buckets + csi-disk everest-csi-provisioner 17d # EVS disk + csi-disk-topology everest-csi-provisioner 17d # EVS disks created with delayed + csi-nas everest-csi-provisioner 17d # SFS 1.0 + csi-obs everest-csi-provisioner 17d # OBS + csi-sfsturbo everest-csi-provisioner 17d # SFS Turbo -After a StorageClass is set, PVs can be automatically created and maintained. You only need to specify the StorageClass when creating a PVC, which greatly reduces the workload. +Each storage class contains the default parameters used for dynamically creating a PV. The following is an example of storage class for EVS disks: -In addition to the predefined storage classes provided by CCE, you can also customize storage classes. The following sections describe the application status, solutions, and methods of customizing storage classes. +.. code-block:: -Challenges ----------- + kind: StorageClass + apiVersion: storage.k8s.io/v1 + metadata: + name: csi-disk + provisioner: everest-csi-provisioner + parameters: + csi.storage.k8s.io/csi-driver-name: disk.csi.everest.io + csi.storage.k8s.io/fstype: ext4 + everest.io/disk-volume-type: SAS + everest.io/passthrough: 'true' + reclaimPolicy: Delete + allowVolumeExpansion: true + volumeBindingMode: Immediate -When using storage resources in CCE, the most common method is to specify **storageClassName** to define the type of storage resources to be created when creating a PVC. The following configuration shows how to use a PVC to apply for an SAS (high I/O) EVS disk (block storage). ++-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Parameter | Description | ++===================================+=======================================================================================================================================================================================================================================+ +| provisioner | Specifies the storage resource provider, which is the everest add-on for CCE. Set this parameter to **everest-csi-provisioner**. | ++-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| parameters | Specifies the storage parameters, which vary with storage types. | ++-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| reclaimPolicy | Specifies the value of **persistentVolumeReclaimPolicy** for creating a PV. The value can be **Delete** or **Retain**. If **reclaimPolicy** is not specified when a StorageClass object is created, the value defaults to **Delete**. | +| | | +| | - **Delete**: indicates that a dynamically created PV will be automatically destroyed. | +| | - **Retain**: indicates that a dynamically created PV will not be automatically destroyed. | ++-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| allowVolumeExpansion | Specifies whether the PV of this storage class supports dynamic capacity expansion. The default value is **false**. Dynamic capacity expansion is implemented by the underlying storage add-on. This is only a switch. | ++-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| volumeBindingMode | Specifies the volume binding mode, that is, the time when a PV is dynamically created. The value can be **Immediate** or **WaitForFirstConsumer**. | +| | | +| | - **Immediate**: PV binding and dynamic creation are completed when a PVC is created. | +| | - **WaitForFirstConsumer**: PV binding and creation are delayed. The PV creation and binding processes are executed only when the PVC is used in the workload. | ++-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| mountOptions | This field must be supported by the underlying storage. If this field is not supported but is specified, the PV creation will fail. | ++-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. _cce_10_0380__section18703932139: + +Application Scenarios of Custom Storage +--------------------------------------- + +When using storage resources in CCE, the most common method is to specify **storageClassName** to define the type of storage resources to be created when creating a PVC. The following configuration shows how to use a PVC to apply for a SAS (high I/O) EVS disk (block storage). .. code-block:: @@ -43,88 +101,73 @@ When using storage resources in CCE, the most common method is to specify **stor storage: 10Gi storageClassName: csi-disk -If you need to specify the EVS disk type, you can set the **everest.io/disk-volume-type** field. The value **SAS** is used as an example here, indicating the high I/O EVS disk type. Or you can choose **SATA** (common I/O) and **SSD** (ultra-high I/O). +To specify the EVS disk type on CCE, use the **everest.io/disk-volume-type** field. SAS indicates the EVS disk type. -This configuration method may not work if you want to: +The preceding is a basic method of using StorageClass. In real-world scenarios, you can use StorageClass to perform other operations. -- Set **storageClassName** only, which is simpler than specifying the EVS disk type by using **everest.io/disk-volume-type**. -- Avoid modifying YAML files or Helm charts. Some users switch from self-built or other Kubernetes services to CCE and have written YAML files of many applications. In these YAML files, different types of storage resources are specified by different StorageClassNames. When using CCE, they need to modify a large number of YAML files or Helm charts to use storage resources, which is labor-consuming and error-prone. -- Set the default **storageClassName** for all applications to use the default storage class. In this way, you can create storage resources of the default type without needing to specify **storageClassName** in the YAML file. ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+ +| Application Scenario | Solution | Procedure | ++===========================================================================================================================================================================================================================================================================================================================================================+=============================================================================================================================================================================================================================================================================================+===========================================================================+ +| When **annotations** is used to specify storage configuration, the configuration is complex. For example, the **everest.io/disk-volume-type** field is used to specify the EVS disk type. | Define PVC annotations in the **parameters** field of StorageClass. When compiling a YAML file, you only need to specify **storageClassName**. | :ref:`Custom Storage Class ` | +| | | | +| | For example, you can define SAS EVS disk and SSD EVS disk as a storage class, respectively. If a storage class named **csi-disk-sas** is defined, it is used to create SAS storage. | | ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+ +| When a user migrates services from a self-built Kubernetes cluster or other Kubernetes services to CCE, the storage class used in the original application YAML file is different from that used in CCE. As a result, a large number of YAML files or Helm chart packages need to be modified when the storage is used, which is complex and error-prone. | Create a storage class with the same name as that in the original application YAML file in the CCE centralization. After the migration, you do not need to modify the **storageClassName** in the application YAML file. | | +| | | | +| | For example, the EVS disk storage class used before the migration is **disk-standard**. After migrating services to a CCE cluster, you can copy the YAML file of the **csi-disk** storage class in the CCE cluster, change its name to **disk-standard**, and create another storage class. | | ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+ +| **storageClassName** must be specified in the YAML file to use the storage. If not, the storage cannot be created. | If you set the default StorageClass in the cluster, you can create storage without specifying the **storageClassName** in the YAML file. | :ref:`Specifying a Default StorageClass ` | ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+ -Solution --------- - -This section describes how to set a custom storage class in CCE and how to set the default storage class. You can specify different types of storage resources by setting **storageClassName**. - -- For the first scenario, you can define custom storageClassNames for SAS and SSD EVS disks. For example, define a storage class named **csi-disk-sas** for creating SAS disks. The following figure shows the differences before and after you use a custom storage class. - - |image1| - -- For the second scenario, you can define a storage class with the same name as that in the existing YAML file without needing to modify **storageClassName** in the YAML file. - -- For the third scenario, you can set the default storage class as described below to create storage resources without specifying **storageClassName** in YAML files. - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - name: pvc-evs-example - namespace: default - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 10Gi +.. _cce_10_0380__section92221021258: Custom Storage Class -------------------- -You can customize a high I/O storage class in a YAML file. For example, the name **csi-disk-sas** indicates that the disk type is SAS (high I/O). +This section uses the custom storage class of EVS disks as an example to describe how to define SAS EVS disk and SSD EVS disk as a storage class, respectively. For example, if you define a storage class named **csi-disk-sas**, which is used to create SAS storage, the differences are shown in the following figure. When compiling a YAML file, you only need to specify **storageClassName**. -.. code-block:: +|image1| - apiVersion: storage.k8s.io/v1 - kind: StorageClass - metadata: - name: csi-disk-sas # Name of the high I/O storage class, which can be customized. - parameters: - csi.storage.k8s.io/csi-driver-name: disk.csi.everest.io - csi.storage.k8s.io/fstype: ext4 - everest.io/disk-volume-type: SAS # High I/O EVS disk type, which cannot be customized. - everest.io/passthrough: "true" - provisioner: everest-csi-provisioner - reclaimPolicy: Delete - volumeBindingMode: Immediate - allowVolumeExpansion: true # true indicates that capacity expansion is allowed. +- You can customize a high I/O storage class in a YAML file. For example, the name **csi-disk-sas** indicates that the disk type is SAS (high I/O). -For an ultra-high I/O storage class, you can set the class name to **csi-disk-ssd** to create SSD EVS disk (ultra-high I/O). + .. code-block:: -.. code-block:: + apiVersion: storage.k8s.io/v1 + kind: StorageClass + metadata: + name: csi-disk-sas # Name of the high I/O storage class, which can be customized. + parameters: + csi.storage.k8s.io/csi-driver-name: disk.csi.everest.io + csi.storage.k8s.io/fstype: ext4 + everest.io/disk-volume-type: SAS # High I/O EVS disk type, which cannot be customized. + everest.io/passthrough: "true" + provisioner: everest-csi-provisioner + reclaimPolicy: Delete + volumeBindingMode: Immediate + allowVolumeExpansion: true # true indicates that capacity expansion is allowed. - apiVersion: storage.k8s.io/v1 - kind: StorageClass - metadata: - name: csi-disk-ssd # Name of the ultra-high I/O storage class, which can be customized. - parameters: - csi.storage.k8s.io/csi-driver-name: disk.csi.everest.io - csi.storage.k8s.io/fstype: ext4 - everest.io/disk-volume-type: SSD # Ultra-high I/O EVS disk type, which cannot be customized. - everest.io/passthrough: "true" - provisioner: everest-csi-provisioner - reclaimPolicy: Delete - volumeBindingMode: Immediate - allowVolumeExpansion: true +- For an ultra-high I/O storage class, you can set the class name to **csi-disk-ssd** to create SSD EVS disk (ultra-high I/O). + + .. code-block:: + + apiVersion: storage.k8s.io/v1 + kind: StorageClass + metadata: + name: csi-disk-ssd # Name of the ultra-high I/O storage class, which can be customized. + parameters: + csi.storage.k8s.io/csi-driver-name: disk.csi.everest.io + csi.storage.k8s.io/fstype: ext4 + everest.io/disk-volume-type: SSD # Ultra-high I/O EVS disk type, which cannot be customized. + everest.io/passthrough: "true" + provisioner: everest-csi-provisioner + reclaimPolicy: Delete + volumeBindingMode: Immediate + allowVolumeExpansion: true **reclaimPolicy**: indicates the reclaim policies of the underlying cloud storage. The value can be **Delete** or **Retain**. - **Delete**: When a PVC is deleted, both the PV and the EVS disk are deleted. -- **Retain**: When a PVC is deleted, the PV and underlying storage resources are not deleted. Instead, you must manually delete these resources. After a PVC is deleted, the PV resource is in the Released state and cannot be bound to the PVC again. - -.. note:: - - The reclamation policy set here has no impact on the SFS Turbo storage. +- **Retain**: When a PVC is deleted, the PV and underlying storage resources are not deleted. Instead, you must manually delete these resources. After that, the PV is in the **Released** status and cannot be bound to the PVC again. If high data security is required, you are advised to select **Retain** to prevent data from being deleted by mistake. @@ -137,7 +180,7 @@ After the definition is complete, run the **kubectl create** commands to create # kubectl create -f ssd.yaml storageclass.storage.k8s.io/csi-disk-ssd created -Query the storage class again. Two more types of storage classes are displayed in the command output, as shown below. +Query **StorageClass** again. The command output is as follows: .. code-block:: @@ -151,48 +194,10 @@ Query the storage class again. Two more types of storage classes are displayed i csi-obs everest-csi-provisioner 17d csi-sfsturbo everest-csi-provisioner 17d -Other types of storage resources can be defined in the similar way. You can use kubectl to obtain the YAML file and modify it as required. +.. _cce_10_0380__section9720192252: -- File Storage - - .. code-block:: - - # kubectl get sc csi-nas -oyaml - kind: StorageClass - apiVersion: storage.k8s.io/v1 - metadata: - name: csi-nas - provisioner: everest-csi-provisioner - parameters: - csi.storage.k8s.io/csi-driver-name: nas.csi.everest.io - csi.storage.k8s.io/fstype: nfs - everest.io/share-access-level: rw - everest.io/share-access-to: 5e3864c6-e78d-4d00-b6fd-de09d432c632 # ID of the VPC to which the cluster belongs - everest.io/share-is-public: 'false' - everest.io/zone: xxxxx # AZ - reclaimPolicy: Delete - allowVolumeExpansion: true - volumeBindingMode: Immediate - -- Object storage - - .. code-block:: - - # kubectl get sc csi-obs -oyaml - kind: StorageClass - apiVersion: storage.k8s.io/v1 - metadata: - name: csi-obs - provisioner: everest-csi-provisioner - parameters: - csi.storage.k8s.io/csi-driver-name: obs.csi.everest.io - csi.storage.k8s.io/fstype: s3fs # Object storage type. s3fs indicates an object bucket, and obsfs indicates a parallel file system. - everest.io/obs-volume-type: STANDARD # Storage class of the OBS bucket - reclaimPolicy: Delete - volumeBindingMode: Immediate - -Setting a Default Storage Class -------------------------------- +Specifying a Default StorageClass +--------------------------------- You can specify a storage class as the default class. In this way, if you do not specify **storageClassName** when creating a PVC, the PVC is created using the default storage class. @@ -300,4 +305,4 @@ Verification View the PVC details on the CCE console. On the PV details page, you can see that the disk type is ultra-high I/O. -.. |image1| image:: /_static/images/en-us_image_0000001517903252.png +.. |image1| image:: /_static/images/en-us_image_0000001695737417.png diff --git a/umn/source/storage/using_local_disks_as_storage_volumes.rst b/umn/source/storage/using_local_disks_as_storage_volumes.rst deleted file mode 100644 index b3e1059..0000000 --- a/umn/source/storage/using_local_disks_as_storage_volumes.rst +++ /dev/null @@ -1,349 +0,0 @@ -:original_name: cce_10_0377.html - -.. _cce_10_0377: - -Using Local Disks as Storage Volumes -==================================== - -You can mount a file directory of the host where a container is located to a specified container path (the hostPath mode in Kubernetes) for persistent data storage. Alternatively, you can leave the source path empty (the emptyDir mode in Kubernetes), and a temporary directory of the host will be mounted to the mount point of the container for temporary storage. - -Using Local Volumes -------------------- - -CCE supports four types of local volumes. - -- :ref:`hostPath `: mounts a file directory of the host where the container is located to the specified mount point of the container. For example, if the container needs to access **/etc/hosts**, you can use a hostPath volume to map **/etc/hosts**. -- :ref:`emptyDir `: stores data temporarily. An emptyDir volume is first created when a pod is assigned to a node, and exists as long as that pod is running on that node. When a container pod is terminated, **EmptyDir** will be deleted and the data is permanently lost. -- :ref:`ConfigMap `: A ConfigMap can be mounted as a volume, and all contents stored in its key are mounted onto the specified container directory. A ConfigMap is a type of resource that stores configuration information required by a workload. Its content is user-defined. For details about how to create a ConfigMap, see :ref:`Creating a ConfigMap `. For details about how to use a ConfigMap, see :ref:`Using a ConfigMap `. -- :ref:`Secret mounting `: Data in the secret is mounted to a path of the container. A secret is a type of resource that holds sensitive data, such as authentication and key information. All content is user-defined. For details about how to create a secret, see :ref:`Creating a Secret `. For details about how to use a secret, see :ref:`Using a Secret `. - -The following describes how to mount these four types of volumes. - -.. _cce_10_0377__section196700523438: - -hostPath --------- - -You can mount a path on the host to a specified container path. A hostPath volume is usually used to **store workload logs permanently** or used by workloads that need to **access internal data structure of the Docker engine on the host**. - -#. Log in to the CCE console. - -#. When creating a workload, click **Data Storage** in the **Container Settings**. Click **Add Volume** and choose **hostPath** from the drop-down list. - -#. Set parameters for adding a local volume, as listed in :ref:`Table 1 `. - - .. _cce_10_0377__table14312815449: - - .. table:: **Table 1** Setting parameters for mounting a hostPath volume - - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+=====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================+ - | Storage Type | Select **hostPath**. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Host Path | Path of the host to which the local volume is to be mounted, for example, **/etc/hosts**. | - | | | - | | .. note:: | - | | | - | | **Host Path** cannot be set to the root directory **/**. Otherwise, the mounting fails. Mount paths can be as follows: | - | | | - | | - /opt/xxxx (excluding **/opt/cloud**) | - | | - /mnt/xxxx (excluding **/mnt/paas**) | - | | - /tmp/xxx | - | | - /var/xxx (excluding key directories such as **/var/lib**, **/var/script**, and **/var/paas**) | - | | - /xxxx (It cannot conflict with the system directory, such as bin, lib, home, root, boot, dev, etc, lost+found, mnt, proc, sbin, srv, tmp, var, media, opt, selinux, sys, and usr.) | - | | | - | | Do not set this parameter to **/home/paas**, **/var/paas**, **/var/lib**, **/var/script**, **/mnt/paas**, or **/opt/cloud**. Otherwise, the system or node installation will fail. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Add Container Path | Configure the following parameters: | - | | | - | | a. **subPath**: Enter a subpath, for example, **tmp**. | - | | | - | | A subpath is used to mount a local disk so that the same data volume is used in a single pod. If this parameter is left blank, the root path is used by default. | - | | | - | | b. **Container Path**: Enter the path of the container, for example, **/tmp**. | - | | | - | | This parameter indicates the container path to which a data volume will be mounted. Do not mount the volume to a system directory such as **/** or **/var/run**; this action may cause container errors. You are advised to mount the container to an empty directory. If the directory is not empty, ensure that there are no files affecting container startup in the directory. Otherwise, such files will be replaced, resulting in failures to start the container and create the workload. | - | | | - | | .. important:: | - | | | - | | NOTICE: | - | | When the container is mounted to a high-risk directory, you are advised to use an account with minimum permissions to start the container; otherwise, high-risk files on the host machine may be damaged. | - | | | - | | c. Permission | - | | | - | | - **Read-only**: You can only read the data volumes mounted to the path. | - | | - **Read/Write**: You can modify the data volumes mounted to the path. Newly written data is not migrated if the container is migrated, which may cause a data loss. | - | | | - | | You can click |image1| to add multiple paths and subpaths. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -.. _cce_10_0377__section550555216467: - -emptyDir --------- - -emptyDir applies to temporary data storage, disaster recovery, and runtime data sharing. It will be deleted upon deletion or transfer of workload pods. - -#. Log in to the CCE console. - -#. When creating a workload, click **Data Storage** in the **Container Settings**. Click **Add Volume** and choose **emptyDir** from the drop-down list. - -#. Set the local volume type to **emptyDir** and set parameters for adding a local volume, as described in :ref:`Table 2 `. - - .. _cce_10_0377__table1867417102475: - - .. table:: **Table 2** Setting parameters for mounting an emptyDir volume - - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+=====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================+ - | Storage Type | Select **emptyDir**. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Storage Medium | - **Default**: Data is stored in hard disks, which is applicable to a large amount of data with low requirements on reading and writing efficiency. | - | | - **Memory**: Selecting this option can improve the running speed, but the storage capacity is subject to the memory size. This mode applies to scenarios where the data volume is small and the read and write efficiency is high. | - | | | - | | .. note:: | - | | | - | | - If you select **Memory**, any files you write will count against your container's memory limit. Pay attention to the memory quota. If the memory usage exceeds the threshold, OOM may occur. | - | | - If **Memory** is selected, the size of an emptyDir volume is 50% of the pod specifications and cannot be changed. | - | | - If **Memory** is not selected, emptyDir volumes will not occupy the system memory. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Add Container Path | Configure the following parameters: | - | | | - | | a. **subPath**: Enter a subpath, for example, **tmp**. | - | | | - | | A subpath is used to mount a local disk so that the same data volume is used in a single pod. If this parameter is left blank, the root path is used by default. | - | | | - | | b. **Container Path**: Enter the path of the container, for example, **/tmp**. | - | | | - | | This parameter indicates the container path to which a data volume will be mounted. Do not mount the volume to a system directory such as **/** or **/var/run**; this action may cause container errors. You are advised to mount the container to an empty directory. If the directory is not empty, ensure that there are no files affecting container startup in the directory. Otherwise, such files will be replaced, resulting in failures to start the container and create the workload. | - | | | - | | .. important:: | - | | | - | | NOTICE: | - | | When the container is mounted to a high-risk directory, you are advised to use an account with minimum permissions to start the container; otherwise, high-risk files on the host machine may be damaged. | - | | | - | | c. Permission | - | | | - | | - **Read-only**: You can only read the data volumes mounted to the path. | - | | - **Read/Write**: You can modify the data volumes mounted to the path. Newly written data is not migrated if the container is migrated, which may cause a data loss. | - | | | - | | You can click |image2| to add multiple paths and subpaths. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -.. _cce_10_0377__section18638191594712: - -ConfigMap ---------- - -The data stored in a ConfigMap can be referenced in a volume of type ConfigMap. You can mount such a volume to a specified container path. The platform supports the separation of workload codes and configuration files. ConfigMap volumes are used to store workload configuration parameters. Before that, you need to create ConfigMaps in advance. For details, see :ref:`Creating a ConfigMap `. - -#. Log in to the CCE console. - -#. When creating a workload, click **Data Storage** in the **Container Settings**. Click **Add Volume** and choose **ConfigMap** from the drop-down list. - -#. Set the local volume type to **ConfigMap** and set parameters for adding a local volume, as shown in :ref:`Table 3 `. - - .. _cce_10_0377__table1776324831114: - - .. table:: **Table 3** Setting parameters for mounting a ConfigMap volume - - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+=====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================+ - | Storage Type | Select **ConfigMap**. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Option | Select the desired ConfigMap name. | - | | | - | | A ConfigMap must be created in advance. For details, see :ref:`Creating a ConfigMap `. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Add Container Path | Configure the following parameters: | - | | | - | | a. **subPath**: Enter a subpath, for example, **tmp**. | - | | | - | | - A subpath is used to mount a local volume so that the same data volume is used in a single pod. | - | | - The subpath can be the key and value of a ConfigMap or secret. If the subpath is a key-value pair that does not exist, the data import does not take effect. | - | | - The data imported by specifying a subpath will not be updated along with the ConfigMap/secret updates. | - | | | - | | b. **Container Path**: Enter the path of the container, for example, **/tmp**. | - | | | - | | This parameter indicates the container path to which a data volume will be mounted. Do not mount the volume to a system directory such as **/** or **/var/run**; this action may cause container errors. You are advised to mount the container to an empty directory. If the directory is not empty, ensure that there are no files affecting container startup in the directory. Otherwise, such files will be replaced, resulting in failures to start the container and create the workload. | - | | | - | | .. important:: | - | | | - | | NOTICE: | - | | When the container is mounted to a high-risk directory, you are advised to use an account with minimum permissions to start the container; otherwise, high-risk files on the host machine may be damaged. | - | | | - | | c. Set the permission to **Read-only**. Data volumes in the path are read-only. | - | | | - | | You can click |image3| to add multiple paths and subpaths. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -.. _cce_10_0377__section10197243134710: - -Secret ------- - -You can mount a secret as a volume to the specified container path. Contents in a secret are user-defined. Before that, you need to create a secret. For details, see :ref:`Creating a Secret `. - -#. Log in to the CCE console. - -#. When creating a workload, click **Data Storage** in the **Container Settings**. Click **Add Volume** and choose **Secret** from the drop-down list. - -#. Set the local volume type to **Secret** and set parameters for adding a local volume, as shown in :ref:`Table 4 `. - - .. _cce_10_0377__table861818920109: - - .. table:: **Table 4** Setting parameters for mounting a secret volume - - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+=====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================+ - | Storage Type | Select **Secret**. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Secret | Select the desired secret name. | - | | | - | | A secret must be created in advance. For details, see :ref:`Creating a Secret `. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Add Container Path | Configure the following parameters: | - | | | - | | a. **subPath**: Enter a subpath, for example, **tmp**. | - | | | - | | - A subpath is used to mount a local volume so that the same data volume is used in a single pod. | - | | - The subpath can be the key and value of a ConfigMap or secret. If the subpath is a key-value pair that does not exist, the data import does not take effect. | - | | - The data imported by specifying a subpath will not be updated along with the ConfigMap/secret updates. | - | | | - | | b. **Container Path**: Enter the path of the container, for example, **/tmp**. | - | | | - | | This parameter indicates the container path to which a data volume will be mounted. Do not mount the volume to a system directory such as **/** or **/var/run**; this action may cause container errors. You are advised to mount the container to an empty directory. If the directory is not empty, ensure that there are no files affecting container startup in the directory. Otherwise, such files will be replaced, resulting in failures to start the container and create the workload. | - | | | - | | .. important:: | - | | | - | | NOTICE: | - | | When the container is mounted to a high-risk directory, you are advised to use an account with minimum permissions to start the container; otherwise, high-risk files on the host machine may be damaged. | - | | | - | | c. Set the permission to **Read-only**. Data volumes in the path are read-only. | - | | | - | | You can click |image4| to add multiple paths and subpaths. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -Mounting a hostPath Volume Using kubectl ----------------------------------------- - -You can use kubectl to mount a file directory of the host where the container is located to a specified mount path of the container. - -#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. - -#. Run the following commands to configure the **hostPath-pod-example.yaml** file, which is used to create a pod. - - **touch hostPath-pod-example.yaml** - - **vi hostPath-pod-example.yaml** - - Mount the hostPath volume for the Deployment. The following is an example: - - .. code-block:: - - apiVersion: apps/v1 - kind: Deployment - metadata: - name: hostpath-pod-example - namespace: default - spec: - replicas: 1 - selector: - matchLabels: - app: hostpath-pod-example - template: - metadata: - labels: - app: hostpath-pod-example - spec: - containers: - - image: nginx - name: container-0 - volumeMounts: - - mountPath: /tmp - name: hostpath-example - imagePullSecrets: - - name: default-secret - restartPolicy: Always - volumes: - - name: hostpath-example - hostPath: - path: /tmp/test - - .. table:: **Table 5** Local disk storage dependency parameters - - +-----------+------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===========+================================================================================================+ - | mountPath | Mount path of the container. In this example, the volume is mounted to the **/tmp** directory. | - +-----------+------------------------------------------------------------------------------------------------+ - | hostPath | Host path. In this example, the host path is **/tmp/test**. | - +-----------+------------------------------------------------------------------------------------------------+ - - .. note:: - - **spec.template.spec.containers.volumeMounts.name** and **spec.template.spec.volumes.name** must be consistent because they have a mapping relationship. - -#. Run the following command to create the pod: - - **kubectl create -f hostPath-pod-example.yaml** - -#. Verify the mounting. - - a. Query the pod name of the workload (**hostpath-pod-example** is used as an example). - - .. code-block:: - - kubectl get po|grep hostpath-pod-example - - Expected outputs: - - .. code-block:: - - hostpath-pod-example-55c8d4dc59-md5d9 1/1 Running 0 35s - - b. Create the **test1** file in the container mount path **/tmp**. - - .. code-block:: - - kubectl exec hostpath-pod-example-55c8d4dc59-md5d9 -- touch /tmp/test1 - - c. Verify that the file is created in the host path **/tmp/test/**. - - .. code-block:: - - ll /tmp/test/ - - Expected outputs: - - .. code-block:: - - -rw-r--r-- 1 root root 0 Jun 1 16:12 test1 - - d. Create the **test2** file in the host path **/tmp/test/**. - - .. code-block:: - - touch /tmp/test/test2 - - e. Verify that the file is created in the container mount path. - - .. code-block:: - - kubectl exec hostpath-pod-example-55c8d4dc59-md5d9 -- ls -l /tmp - - Expected outputs: - - .. code-block:: - - -rw-r--r-- 1 root root 0 Jun 1 08:12 test1 - -rw-r--r-- 1 root root 0 Jun 1 08:14 test2 - -.. |image1| image:: /_static/images/en-us_image_0000001568902637.png -.. |image2| image:: /_static/images/en-us_image_0000001517903168.png -.. |image3| image:: /_static/images/en-us_image_0000001517743600.png -.. |image4| image:: /_static/images/en-us_image_0000001569023013.png diff --git a/umn/source/storage_management_flexvolume_deprecated/flexvolume_overview.rst b/umn/source/storage_management_flexvolume_deprecated/flexvolume_overview.rst deleted file mode 100644 index c8a8dc2..0000000 --- a/umn/source/storage_management_flexvolume_deprecated/flexvolume_overview.rst +++ /dev/null @@ -1,58 +0,0 @@ -:original_name: cce_10_0306.html - -.. _cce_10_0306: - -FlexVolume Overview -=================== - -In container storage, you can use different types of volumes and mount them to containers in pods as many as you want. - -In CCE, container storage is backed both by Kubernetes-native objects, such as emptyDir, hostPath, secret, and ConfigMap, and by cloud storage services. - -CCE clusters of **1.13 and earlier versions** use the :ref:`storage-driver ` add-on to connect to cloud storage services to support Kubernetes FlexVolume driver for container storage. The FlexVolume driver has been deprecated in favor of the Container Storage Interface (CSI). **The everest add-on for CSI is installed in CCE clusters of 1.15 and later versions by default.** For details, see :ref:`Overview `. - -.. note:: - - - In CCE clusters earlier than Kubernetes 1.13, end-to-end capacity expansion of container storage is not supported, and the PVC capacity is inconsistent with the storage capacity. - - **In a cluster of v1.13 or earlier**, when an upgrade or bug fix is available for storage functionalities, you only need to install or upgrade the storage-driver add-on. Upgrading the cluster or creating a cluster is not required. - -Notes and Constraints ---------------------- - -- For clusters created in CCE, Kubernetes v1.15.11 is a transitional version in which the FlexVolume plug-in (:ref:`storage-driver `) is compatible with the CSI plug-in (:ref:`everest `). Clusters of v1.17 and later versions do not support FlexVolume anymore. You need to use the everest add-on. -- The FlexVolume plug-in will be maintained by Kubernetes developers, but new functionality will only be added to CSI. You are advised not to create storage that connects to the FlexVolume plug-in (storage-driver) in CCE anymore. Otherwise, the storage resources may not function normally. - -Checking Storage Add-ons ------------------------- - -#. Log in to the CCE console. -#. In the navigation tree on the left, click **Add-ons**. -#. Click the **Add-on Instance** tab. -#. Select a cluster in the upper right corner. The default storage add-on installed during cluster creation is displayed. - -Differences Between CSI and FlexVolume Plug-ins ------------------------------------------------ - -.. table:: **Table 1** CSI and FlexVolume - - +---------------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Kubernetes Solution | CCE Add-on | Feature | Recommendation | - +=====================+=================+=========================================================================================================================================================================================================================================================================================================================================================================================================================================+================================================================================================================================================================================================================================================================================+ - | CSI | everest | CSI was developed as a standard for exposing arbitrary block and file storage systems to containerized workloads. Using CSI, third-party storage providers can deploy plug-ins exposing new storage systems in Kubernetes without having to touch the core Kubernetes code. In CCE, the everest add-on is installed by default in clusters of Kubernetes v1.15 and later to connect to storage services (EVS, OBS, SFS, and SFS Turbo). | The :ref:`everest ` add-on is installed by default in clusters of **v1.15 and later**. CCE will mirror the Kubernetes community by providing continuous support for updated CSI capabilities. | - | | | | | - | | | The everest add-on consists of two parts: | | - | | | | | - | | | - **everest-csi-controller** for storage volume creation, deletion, capacity expansion, and cloud disk snapshots | | - | | | - **everest-csi-driver** for mounting, unmounting, and formatting storage volumes on nodes | | - | | | | | - | | | For details, see :ref:`everest `. | | - +---------------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | FlexVolume | storage-driver | FlexVolume is an out-of-tree plug-in interface that has existed in Kubernetes since the early stage. CCE provided FlexVolume volumes through the storage-driver add-on installed in clusters of Kubernetes v1.13 and earlier versions. This add-on connects clusters to storage services (EVS, OBS, SFS, and SFS Turbo). | For the created clusters of **v1.13 or earlier**, the installed FlexVolume plug-in (CCE add-on :ref:`storage-driver `) can still be used. CCE stops providing update support for this add-on, and you are advised to :ref:`upgrade these clusters `. | - | | | | | - | | | For details, see :ref:`storage-driver `. | | - +---------------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -.. note:: - - - A cluster can only use either CSI or FlexVolume. - - The FlexVolume plug-in cannot be replaced by the CSI plug-in in clusters of v1.13 or earlier. You can only upgrade clusters of v1.13. For details, see :ref:`Cluster Upgrade `. diff --git a/umn/source/storage_management_flexvolume_deprecated/how_do_i_change_the_storage_class_used_by_a_cluster_of_v1.15_from_flexvolume_to_csi_everest.rst b/umn/source/storage_management_flexvolume_deprecated/how_do_i_change_the_storage_class_used_by_a_cluster_of_v1.15_from_flexvolume_to_csi_everest.rst deleted file mode 100644 index fff3b1a..0000000 --- a/umn/source/storage_management_flexvolume_deprecated/how_do_i_change_the_storage_class_used_by_a_cluster_of_v1.15_from_flexvolume_to_csi_everest.rst +++ /dev/null @@ -1,595 +0,0 @@ -:original_name: cce_10_0343.html - -.. _cce_10_0343: - -How Do I Change the Storage Class Used by a Cluster of v1.15 from FlexVolume to CSI Everest? -============================================================================================ - -In clusters later than v1.15.11-r1, CSI (the everest add-on) has taken over all functions of fuxi FlexVolume (the storage-driver add-on) for managing container storage. You are advised to use CSI Everest. - -To migrate your storage volumes, create a static PV to associate with the original underlying storage, and then create a PVC to associate with this static PV. When you upgrade your application, mount the new PVC to the original mounting path to migrate the storage volumes. - -.. warning:: - - Services will be interrupted during the migration. Therefore, properly plan the migration and back up data. - -Procedure ---------- - -#. (Optional) Back up data to prevent data loss in case of exceptions. - -#. .. _cce_10_0343__en-us_topic_0285037038_li1219802032512: - - Configure a YAML file of the PV in the CSI format according to the PV in the FlexVolume format and associate the PV with the existing storage. - - To be specific, run the following commands to configure the pv-example.yaml file, which is used to create a PV. - - **touch pv-example.yaml** - - **vi pv-example.yaml** - - Configuration example of **a PV for an EVS volume**: - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolume - metadata: - labels: - failure-domain.beta.kubernetes.io/region: eu-de - failure-domain.beta.kubernetes.io/zone: - annotations: - pv.kubernetes.io/provisioned-by: everest-csi-provisioner - name: pv-evs-example - spec: - accessModes: - - ReadWriteOnce - capacity: - storage: 10Gi - csi: - driver: disk.csi.everest.io - fsType: ext4 - volumeAttributes: - everest.io/disk-mode: SCSI - everest.io/disk-volume-type: SAS - storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner - volumeHandle: 0992dbda-6340-470e-a74e-4f0db288ed82 - persistentVolumeReclaimPolicy: Delete - storageClassName: csi-disk - - Pay attention to the fields in bold and red. The parameters are described as follows: - - .. table:: **Table 1** EVS volume configuration parameters - - +------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +==========================================+====================================================================================================================================================+ - | failure-domain.beta.kubernetes.io/region | Region where the EVS disk is located. Use the same value as that of the FlexVolume PV. | - +------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ - | failure-domain.beta.kubernetes.io/zone | AZ where the EVS disk is located. Use the same value as that of the FlexVolume PV. | - +------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ - | name | Name of the PV, which must be unique in the cluster. | - +------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ - | storage | EVS volume capacity in the unit of Gi. Use the value of **spec.capacity.storage** of the FlexVolume PV. | - +------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ - | driver | Storage driver used to attach the volume. Set the driver to **disk.csi.everest.io** for the EVS volume. | - +------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ - | volumeHandle | Volume ID of the EVS disk. Use the value of **spec.flexVolume.options.volumeID** of the FlexVolume PV. | - +------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ - | everest.io/disk-mode | EVS disk mode. Use the value of **spec.flexVolume.options.disk-mode** of the FlexVolume PV. | - +------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ - | everest.io/disk-volume-type | EVS disk type. Use the value of **kubernetes.io/volumetype** in the storage class corresponding to **spec.storageClassName** of the FlexVolume PV. | - +------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ - | storageClassName | Name of the Kubernetes storage class associated with the storage volume. Set this field to **csi-disk** for EVS disks. | - +------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ - - Configuration example of **a PV for an SFS volume**: - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolume - metadata: - name: pv-sfs-example - annotations: - pv.kubernetes.io/provisioned-by: everest-csi-provisioner - spec: - accessModes: - - ReadWriteMany - capacity: - storage: 10Gi - csi: - driver: nas.csi.everest.io - fsType: nfs - volumeAttributes: - everest.io/share-export-location: # Path to shared file storage - storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner - volumeHandle: 682f00bb-ace0-41d8-9b3e-913c9aa6b695 - persistentVolumeReclaimPolicy: Delete - storageClassName: csi-nas - - Pay attention to the fields in bold and red. The parameters are described as follows: - - .. table:: **Table 2** SFS volume configuration parameters - - +----------------------------------+--------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +==================================+====================================================================================================================+ - | name | Name of the PV, which must be unique in the cluster. | - +----------------------------------+--------------------------------------------------------------------------------------------------------------------+ - | storage | File storage size in the unit of Gi. Use the value of **spec.capacity.storage** of the FlexVolume PV. | - +----------------------------------+--------------------------------------------------------------------------------------------------------------------+ - | driver | Storage driver used to attach the volume. Set the driver to **nas.csi.everest.io** for the file system. | - +----------------------------------+--------------------------------------------------------------------------------------------------------------------+ - | everest.io/share-export-location | Shared path of the file system. Use the value of **spec.flexVolume.options.deviceMountPath** of the FlexVolume PV. | - +----------------------------------+--------------------------------------------------------------------------------------------------------------------+ - | volumeHandle | File system ID. Use the value of **spec.flexVolume.options.volumeID** of the FlexVolume PV. | - +----------------------------------+--------------------------------------------------------------------------------------------------------------------+ - | storageClassName | Name of the Kubernetes storage class. Set this field to **csi-nas**. | - +----------------------------------+--------------------------------------------------------------------------------------------------------------------+ - - Configuration example of **a PV for an OBS volume**: - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolume - metadata: - name: pv-obs-example - annotations: - pv.kubernetes.io/provisioned-by: everest-csi-provisioner - spec: - accessModes: - - ReadWriteMany - capacity: - storage: 1Gi - csi: - driver: obs.csi.everest.io - fsType: s3fs - volumeAttributes: - everest.io/obs-volume-type: STANDARD - everest.io/region: eu-de - storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner - volumeHandle: obs-normal-static-pv - persistentVolumeReclaimPolicy: Delete - storageClassName: csi-obs - - Pay attention to the fields in bold and red. The parameters are described as follows: - - .. table:: **Table 3** OBS volume configuration parameters - - +----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +============================+===========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================+ - | name | Name of the PV, which must be unique in the cluster. | - +----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storage | Storage capacity, in the unit of Gi. Set this parameter to the fixed value **1Gi**. | - +----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | driver | Storage driver used to attach the volume. Set the driver to **obs.csi.everest.io** for the OBS volume. | - +----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | fsType | File type. Value options are **obsfs** or **s3fs**. If the value is **s3fs**, an OBS bucket is created and mounted using s3fs. If the value is **obsfs**, an OBS parallel file system is created and mounted using obsfs. Set this parameter according to the value of **spec.flexVolume.options.posix** of the FlexVolume PV. If the value of **spec.flexVolume.options.posix** is **true**, set this parameter to **obsfs**. If the value is **false**, set this parameter to **s3fs**. | - +----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | everest.io/obs-volume-type | Storage class, including **STANDARD** (standard bucket) and **WARM** (infrequent access bucket). Set this parameter according to the value of **spec.flexVolume.options.storage_class** of the FlexVolume PV. If the value of **spec.flexVolume.options.storage_class** is **standard**, set this parameter to **STANDARD**. If the value is **standard_ia**, set this parameter to **WARM**. | - +----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | everest.io/region | Region where the OBS bucket is located. Use the value of **spec.flexVolume.options.region** of the FlexVolume PV. | - +----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | volumeHandle | OBS bucket name. Use the value of **spec.flexVolume.options.volumeID** of the FlexVolume PV. | - +----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storageClassName | Name of the Kubernetes storage class. Set this field to **csi-obs**. | - +----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - Configuration example of **a PV for an SFS Turbo volume**: - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolume - metadata: - name: pv-efs-example - annotations: - pv.kubernetes.io/provisioned-by: everest-csi-provisioner - spec: - accessModes: - - ReadWriteMany - capacity: - storage: 10Gi - csi: - driver: sfsturbo.csi.everest.io - fsType: nfs - volumeAttributes: - everest.io/share-export-location: 192.168.0.169:/ - storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner - volumeHandle: 8962a2a2-a583-4b7f-bb74-fe76712d8414 - persistentVolumeReclaimPolicy: Delete - storageClassName: csi-sfsturbo - - Pay attention to the fields in bold and red. The parameters are described as follows: - - .. table:: **Table 4** SFS Turbo volume configuration parameters - - +----------------------------------+-------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +==================================+=========================================================================================================================+ - | name | Name of the PV, which must be unique in the cluster. | - +----------------------------------+-------------------------------------------------------------------------------------------------------------------------+ - | storage | File system size. Use the value of **spec.capacity.storage** of the FlexVolume PV. | - +----------------------------------+-------------------------------------------------------------------------------------------------------------------------+ - | driver | Storage driver used to attach the volume. Set it to **sfsturbo.csi.everest.io**. | - +----------------------------------+-------------------------------------------------------------------------------------------------------------------------+ - | everest.io/share-export-location | Shared path of the SFS Turbo volume. Use the value of **spec.flexVolume.options.deviceMountPath** of the FlexVolume PV. | - +----------------------------------+-------------------------------------------------------------------------------------------------------------------------+ - | volumeHandle | SFS Turbo volume ID. Use the value of **spec.flexVolume.options.volumeID** of the FlexVolume PV. | - +----------------------------------+-------------------------------------------------------------------------------------------------------------------------+ - | storageClassName | Name of the Kubernetes storage class. Set this field to **csi-sfsturbo** for SFS Turbo volumes. | - +----------------------------------+-------------------------------------------------------------------------------------------------------------------------+ - -#. .. _cce_10_0343__en-us_topic_0285037038_li1710710385418: - - Configure a YAML file of the PVC in the CSI format according to the PVC in the FlexVolume format and associate the PVC with the PV created in :ref:`2 `. - - To be specific, run the following commands to configure the pvc-example.yaml file, which is used to create a PVC. - - **touch pvc-example.yaml** - - **vi pvc-example.yaml** - - Configuration example of **a PVC for an EVS volume**: - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - labels: - failure-domain.beta.kubernetes.io/region: eu-de - failure-domain.beta.kubernetes.io/zone: - annotations: - everest.io/disk-volume-type: SAS - volume.beta.kubernetes.io/storage-provisioner: everest-csi-provisioner - name: pvc-evs-example - namespace: default - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 10Gi - volumeName: pv-evs-example - storageClassName: csi-disk - - Pay attention to the fields in bold and red. The parameters are described as follows: - - .. table:: **Table 5** PVC configuration parameters for an EVS volume - - +------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +==========================================+============================================================================================================================================================================================================================================+ - | failure-domain.beta.kubernetes.io/region | Region where the cluster is located. Use the same value as that of the FlexVolume PVC. | - +------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | failure-domain.beta.kubernetes.io/zone | AZ where the EVS disk is deployed. Use the same value as that of the FlexVolume PVC. | - +------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | everest.io/disk-volume-type | Storage class of the EVS disk. The value can be **SAS** or **SSD**. Set this parameter to the same value as that of the PV created in :ref:`2 `. | - +------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | name | PVC name, which must be unique in the namespace. The value must be unique in the namespace. (If the PVC is dynamically created by a stateful application, the value of this parameter must be the same as the name of the FlexVolume PVC.) | - +------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | namespace | Namespace to which the PVC belongs. Use the same value as that of the FlexVolume PVC. | - +------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storage | Requested capacity of the PVC, which must be the same as the storage size of the existing PV. | - +------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | volumeName | Name of the PV. Set this parameter to the name of the static PV in :ref:`2 `. | - +------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storageClassName | Name of the Kubernetes storage class. Set this field to **csi-disk** for EVS disks. | - +------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - Configuration example of **a PVC for an SFS volume**: - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - annotations: - volume.beta.kubernetes.io/storage-provisioner: everest-csi-provisioner - name: pvc-sfs-example - namespace: default - spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 10Gi - storageClassName: csi-nas - volumeName: pv-sfs-example - - Pay attention to the fields in bold and red. The parameters are described as follows: - - .. table:: **Table 6** PVC configuration parameters for an SFS volume - - +------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +==================+============================================================================================================================================================================================================================================+ - | name | PVC name, which must be unique in the namespace. The value must be unique in the namespace. (If the PVC is dynamically created by a stateful application, the value of this parameter must be the same as the name of the FlexVolume PVC.) | - +------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | namespace | Namespace to which the PVC belongs. Use the same value as that of the FlexVolume PVC. | - +------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storage | Storage capacity, in the unit of Gi. The value must be the same as the storage size of the existing PV. | - +------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storageClassName | Set this field to **csi-nas**. | - +------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | volumeName | Name of the PV. Set this parameter to the name of the static PV in :ref:`2 `. | - +------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - Configuration example of **a PVC for an OBS volume**: - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - annotations: - volume.beta.kubernetes.io/storage-provisioner: everest-csi-provisioner - everest.io/obs-volume-type: STANDARD - csi.storage.k8s.io/fstype: s3fs - name: pvc-obs-example - namespace: default - spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 1Gi - storageClassName: csi-obs - volumeName: pv-obs-example - - Pay attention to the fields in bold and red. The parameters are described as follows: - - .. table:: **Table 7** PVC configuration parameters for an OBS volume - - +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +============================+============================================================================================================================================================================================================================================+ - | everest.io/obs-volume-type | OBS volume type, which can be **STANDARD** (standard bucket) and **WARM** (infrequent access bucket). Set this parameter to the same value as that of the PV created in :ref:`2 `. | - +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | csi.storage.k8s.io/fstype | File type, which can be **obsfs** or **s3fs**. The value must be the same as that of **fsType** of the static OBS volume PV. | - +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | name | PVC name, which must be unique in the namespace. The value must be unique in the namespace. (If the PVC is dynamically created by a stateful application, the value of this parameter must be the same as the name of the FlexVolume PVC.) | - +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | namespace | Namespace to which the PVC belongs. Use the same value as that of the FlexVolume PVC. | - +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storage | Storage capacity, in the unit of Gi. Set this parameter to the fixed value **1Gi**. | - +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storageClassName | Name of the Kubernetes storage class. Set this field to **csi-obs**. | - +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | volumeName | Name of the PV. Set this parameter to the name of the static PV created in :ref:`2 `. | - +----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - Configuration example of **a PVC for an SFS Turbo volume**: - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - annotations: - volume.beta.kubernetes.io/storage-provisioner: everest-csi-provisioner - name: pvc-efs-example - namespace: default - spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 10Gi - storageClassName: csi-sfsturbo - volumeName: pv-efs-example - - Pay attention to the fields in bold and red. The parameters are described as follows: - - .. table:: **Table 8** PVC configuration parameters for an SFS Turbo volume - - +------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +==================+============================================================================================================================================================================================================================================+ - | name | PVC name, which must be unique in the namespace. The value must be unique in the namespace. (If the PVC is dynamically created by a stateful application, the value of this parameter must be the same as the name of the FlexVolume PVC.) | - +------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | namespace | Namespace to which the PVC belongs. Use the same value as that of the FlexVolume PVC. | - +------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storageClassName | Name of the Kubernetes storage class. Set this field to **csi-sfsturbo**. | - +------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storage | Storage capacity, in the unit of Gi. The value must be the same as the storage size of the existing PV. | - +------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | volumeName | Name of the PV. Set this parameter to the name of the static PV created in :ref:`2 `. | - +------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -#. .. _cce_10_0343__en-us_topic_0285037038_li487255772614: - - Upgrade the workload to use a new PVC. - - **For Deployments** - - a. Run the **kubectl create -f** commands to create a PV and PVC. - - **kubectl create -f pv-example.yaml** - - **kubectl create -f pvc-example.yaml** - - .. note:: - - Replace the example file name **pvc-example.yaml** in the preceding commands with the names of the YAML files configured in :ref:`2 ` and :ref:`3 `. - - b. Go to the CCE console. On the workload upgrade page, click **Upgrade** > **Advanced Settings** > **Data Storage** > **Cloud Storage**. - - c. Uninstall the old storage and add the PVC in the CSI format. Retain the original mounting path in the container. - - d. Click **Submit**. - - e. Wait until the pods are running. - - **For StatefulSets that use existing storage** - - a. Run the **kubectl create -f** commands to create a PV and PVC. - - **kubectl create -f pv-example.yaml** - - **kubectl create -f pvc-example.yaml** - - .. note:: - - Replace the example file name **pvc-example.yaml** in the preceding commands with the names of the YAML files configured in :ref:`2 ` and :ref:`3 `. - - b. Run the **kubectl edit** command to edit the StatefulSet and use the newly created PVC. - - **kubectl edit sts sts-example -n** xxx - - |image1| - - .. note:: - - Replace **sts-example** in the preceding command with the actual name of the StatefulSet to upgrade. **xxx** indicates the namespace to which the StatefulSet belongs. - - c. Wait until the pods are running. - - .. note:: - - The current console does not support the operation of adding new cloud storage for StatefulSets. Use the kubectl commands to replace the storage with the newly created PVC. - - **For StatefulSets that use dynamically allocated storage** - - a. Back up the PV and PVC in the flexVolume format used by the StatefulSet. - - **kubectl get pvc xxx -n {namespaces} -oyaml > pvc-backup.yaml** - - **kubectl get pv xxx -n {namespaces} -oyaml > pv-backup.yaml** - - b. Change the number of pods to **0**. - - c. On the storage page, disassociate the flexVolume PVC used by the StatefulSet. - - d. Run the **kubectl create -f** commands to create a PV and PVC. - - **kubectl create -f pv-example.yaml** - - **kubectl create -f pvc-example.yaml** - - .. note:: - - Replace the example file name **pvc-example.yaml** in the preceding commands with the names of the YAML files configured in :ref:`2 ` and :ref:`3 `. - - e. Change the number of pods back to the original value and wait until the pods are running. - - .. note:: - - The dynamic allocation of storage for StatefulSets is achieved by using **volumeClaimTemplates**. This field cannot be modified by Kubernetes. Therefore, data cannot be migrated by using a new PVC. - - The PVC naming rule of the **volumeClaimTemplates** is fixed. When a PVC that meets the naming rule exists, this PVC is used. - - Therefore, disassociate the original PVC first, and then create a PVC with the same name in the CSI format. - - 6. (Optional) Recreate the stateful application to ensure that a CSI PVC is used when the application is scaled out. Otherwise, FlexVolume PVCs are used in scaling out. - - - Run the following command to obtain the YAML file of the StatefulSet: - - **kubectl get sts xxx -n {namespaces} -oyaml > sts.yaml** - - - Run the following command to back up the YAML file of the StatefulSet: - - **cp sts.yaml sts-backup.yaml** - - - Modify the definition of **volumeClaimTemplates** in the YAML file of the StatefulSet. - - **vi sts.yaml** - - Configuration example of **volumeClaimTemplates for an EVS volume**: - - .. code-block:: - - volumeClaimTemplates: - - metadata: - name: pvc-161070049798261342 - namespace: default - creationTimestamp: null - annotations: - everest.io/disk-volume-type: SAS - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 10Gi - storageClassName: csi-disk - - The parameter value must be the same as the PVC of the EVS volume created in :ref:`3 `. - - Configuration example of **volumeClaimTemplates for an SFS volume**: - - .. code-block:: - - volumeClaimTemplates: - - metadata: - name: pvc-161063441560279697 - namespace: default - creationTimestamp: null - spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 10Gi - storageClassName: csi-nas - - The parameter value must be the same as the PVC of the SFS volume created in :ref:`3 `. - - Configuration example of **volumeClaimTemplates for an OBS volume**: - - .. code-block:: - - volumeClaimTemplates: - - metadata: - name: pvc-161070100417416148 - namespace: default - creationTimestamp: null - annotations: - csi.storage.k8s.io/fstype: s3fs - everest.io/obs-volume-type: STANDARD - spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 1Gi - storageClassName: csi-obs - - The parameter value must be the same as the PVC of the OBS volume created in :ref:`3 `. - - - Delete the StatefulSet. - - **kubectl delete sts xxx -n** {namespaces} - - - Create the StatefulSet. - - **kubectl create -f sts.yaml** - -#. Check service functions. - - a. Check whether the application is running properly. - b. Checking whether the data storage is normal. - - .. note:: - - If a rollback is required, perform :ref:`4 `. Select the PVC in FlexVolume format and upgrade the application. - -#. Uninstall the PVC in the FlexVolume format. - - If the application functions normally, unbind the PVC in the FlexVolume format on the storage management page. - - You can also run the kubectl command to delete the PVC and PV of the FlexVolume format. - - .. caution:: - - Before deleting a PV, change the persistentVolumeReclaimPolicy of the PV to **Retain**. Otherwise, the underlying storage will be reclaimed after the PV is deleted. - - If the cluster has been upgraded before the storage migration, PVs may fail to be deleted. You can remove the PV protection field **finalizers** to delete PVs. - - kubectl patch pv {pv_name} -p '{"metadata":{"finalizers":null}}' - -.. |image1| image:: /_static/images/en-us_image_0000001518062756.png diff --git a/umn/source/storage_management_flexvolume_deprecated/index.rst b/umn/source/storage_management_flexvolume_deprecated/index.rst deleted file mode 100644 index d9419d8..0000000 --- a/umn/source/storage_management_flexvolume_deprecated/index.rst +++ /dev/null @@ -1,24 +0,0 @@ -:original_name: cce_10_0305.html - -.. _cce_10_0305: - -Storage Management: FlexVolume (Deprecated) -=========================================== - -- :ref:`FlexVolume Overview ` -- :ref:`How Do I Change the Storage Class Used by a Cluster of v1.15 from FlexVolume to CSI Everest? ` -- :ref:`Using EVS Disks as Storage Volumes ` -- :ref:`Using SFS Turbo File Systems as Storage Volumes ` -- :ref:`Using OBS Buckets as Storage Volumes ` -- :ref:`Using SFS File Systems as Storage Volumes ` - -.. toctree:: - :maxdepth: 1 - :hidden: - - flexvolume_overview - how_do_i_change_the_storage_class_used_by_a_cluster_of_v1.15_from_flexvolume_to_csi_everest - using_evs_disks_as_storage_volumes/index - using_sfs_turbo_file_systems_as_storage_volumes/index - using_obs_buckets_as_storage_volumes/index - using_sfs_file_systems_as_storage_volumes/index diff --git a/umn/source/storage_management_flexvolume_deprecated/using_evs_disks_as_storage_volumes/index.rst b/umn/source/storage_management_flexvolume_deprecated/using_evs_disks_as_storage_volumes/index.rst deleted file mode 100644 index e2eedae..0000000 --- a/umn/source/storage_management_flexvolume_deprecated/using_evs_disks_as_storage_volumes/index.rst +++ /dev/null @@ -1,20 +0,0 @@ -:original_name: cce_10_0309.html - -.. _cce_10_0309: - -Using EVS Disks as Storage Volumes -================================== - -- :ref:`Overview ` -- :ref:`(kubectl) Automatically Creating an EVS Disk ` -- :ref:`(kubectl) Creating a PV from an Existing EVS Disk ` -- :ref:`(kubectl) Creating a Pod Mounted with an EVS Volume ` - -.. toctree:: - :maxdepth: 1 - :hidden: - - overview - kubectl_automatically_creating_an_evs_disk - kubectl_creating_a_pv_from_an_existing_evs_disk - kubectl_creating_a_pod_mounted_with_an_evs_volume diff --git a/umn/source/storage_management_flexvolume_deprecated/using_evs_disks_as_storage_volumes/kubectl_automatically_creating_an_evs_disk.rst b/umn/source/storage_management_flexvolume_deprecated/using_evs_disks_as_storage_volumes/kubectl_automatically_creating_an_evs_disk.rst deleted file mode 100644 index 950b26c..0000000 --- a/umn/source/storage_management_flexvolume_deprecated/using_evs_disks_as_storage_volumes/kubectl_automatically_creating_an_evs_disk.rst +++ /dev/null @@ -1,67 +0,0 @@ -:original_name: cce_10_0312.html - -.. _cce_10_0312: - -(kubectl) Automatically Creating an EVS Disk -============================================ - -Notes and Constraints ---------------------- - -The following configuration example applies to clusters of Kubernetes 1.13 or earlier. - -Procedure ---------- - -#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. - -#. Run the following commands to configure the **pvc-evs-auto-example.yaml** file, which is used to create a PVC. - - **touch pvc-evs-auto-example.yaml** - - **vi pvc-evs-auto-example.yaml** - - **Example YAML file for clusters of v1.9, v1.11, and v1.13:** - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - name: pvc-evs-auto-example - namespace: default - annotations: - volume.beta.kubernetes.io/storage-class: sas - labels: - failure-domain.beta.kubernetes.io/region: eu-de - failure-domain.beta.kubernetes.io/zone: eu-de-01 - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 10Gi - - .. table:: **Table 1** Key parameters - - +------------------------------------------+------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +==========================================+============================================================================================================+ - | volume.beta.kubernetes.io/storage-class | EVS disk type. The value is in lowercase. | - +------------------------------------------+------------------------------------------------------------------------------------------------------------+ - | failure-domain.beta.kubernetes.io/region | Region where the cluster is located. | - +------------------------------------------+------------------------------------------------------------------------------------------------------------+ - | failure-domain.beta.kubernetes.io/zone | AZ where the EVS volume is created. It must be the same as the AZ planned for the workload. | - +------------------------------------------+------------------------------------------------------------------------------------------------------------+ - | storage | Storage capacity in the unit of Gi. | - +------------------------------------------+------------------------------------------------------------------------------------------------------------+ - | accessModes | Read/write mode of the volume. | - | | | - | | You can set this parameter to **ReadWriteMany** (shared volume) and **ReadWriteOnce** (non-shared volume). | - +------------------------------------------+------------------------------------------------------------------------------------------------------------+ - -#. Run the following command to create a PVC. - - **kubectl create -f pvc-evs-auto-example.yaml** - - After the command is executed, an EVS disk is created in the partition where the cluster is located. Choose **Storage** > **EVS** to view the EVS disk. Alternatively, you can view the EVS disk based on the volume name on the EVS console. diff --git a/umn/source/storage_management_flexvolume_deprecated/using_evs_disks_as_storage_volumes/kubectl_creating_a_pod_mounted_with_an_evs_volume.rst b/umn/source/storage_management_flexvolume_deprecated/using_evs_disks_as_storage_volumes/kubectl_creating_a_pod_mounted_with_an_evs_volume.rst deleted file mode 100644 index a24f45b..0000000 --- a/umn/source/storage_management_flexvolume_deprecated/using_evs_disks_as_storage_volumes/kubectl_creating_a_pod_mounted_with_an_evs_volume.rst +++ /dev/null @@ -1,150 +0,0 @@ -:original_name: cce_10_0314.html - -.. _cce_10_0314: - -(kubectl) Creating a Pod Mounted with an EVS Volume -=================================================== - -Scenario --------- - -After an EVS volume is created or imported to CCE, you can mount it to a workload. - -.. important:: - - EVS disks cannot be attached across AZs. Before mounting a volume, you can run the **kubectl get pvc** command to query the available PVCs in the AZ where the current cluster is located. - -Notes and Constraints ---------------------- - -The following configuration example applies to clusters of Kubernetes 1.13 or earlier. - -Procedure ---------- - -#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. - -#. Run the following commands to configure the **evs-deployment-example.yaml** file, which is used to create a Deployment. - - **touch evs-deployment-example.yaml** - - **vi evs-deployment-example.yaml** - - Example of mounting an EVS volume to a Deployment (PVC-based, shared volume): - - .. code-block:: - - apiVersion: apps/v1 - kind: Deployment - metadata: - name: evs-deployment-example - namespace: default - spec: - replicas: 1 - selector: - matchLabels: - app: evs-deployment-example - template: - metadata: - labels: - app: evs-deployment-example - spec: - containers: - - image: nginx - name: container-0 - volumeMounts: - - mountPath: /tmp - name: pvc-evs-example - imagePullSecrets: - - name: default-secret - restartPolicy: Always - volumes: - - name: pvc-evs-example - persistentVolumeClaim: - claimName: pvc-evs-auto-example - - .. table:: **Table 1** Key parameters - - +--------------------------------------------------+-----------+------------------------------------------------------------------------------------------------+ - | Parent Parameter | Parameter | Description | - +==================================================+===========+================================================================================================+ - | spec.template.spec.containers.volumeMounts | name | Name of the volume mounted to the container. | - +--------------------------------------------------+-----------+------------------------------------------------------------------------------------------------+ - | spec.template.spec.containers.volumeMounts | mountPath | Mount path of the container. In this example, the volume is mounted to the **/tmp** directory. | - +--------------------------------------------------+-----------+------------------------------------------------------------------------------------------------+ - | spec.template.spec.volumes | name | Name of the volume. | - +--------------------------------------------------+-----------+------------------------------------------------------------------------------------------------+ - | spec.template.spec.volumes.persistentVolumeClaim | claimName | Name of an existing PVC. | - +--------------------------------------------------+-----------+------------------------------------------------------------------------------------------------+ - - .. note:: - - **spec.template.spec.containers.volumeMounts.name** and **spec.template.spec.volumes.name** must be consistent because they have a mapping relationship. - - Mounting an EVS volume to a StatefulSet (PVC template-based, non-shared volume): - - **Example YAML:** - - .. code-block:: - - apiVersion: apps/v1 - kind: StatefulSet - metadata: - name: deploy-evs-sas-in - spec: - replicas: 1 - selector: - matchLabels: - app: deploy-evs-sata-in - template: - metadata: - labels: - app: deploy-evs-sata-in - failure-domain.beta.kubernetes.io/region: eu-de - failure-domain.beta.kubernetes.io/zone: eu-de-01 - spec: - containers: - - name: container-0 - image: 'nginx:1.12-alpine-perl' - volumeMounts: - - name: bs-sas-mountoptionpvc - mountPath: /tmp - imagePullSecrets: - - name: default-secret - volumeClaimTemplates: - - metadata: - name: bs-sas-mountoptionpvc - annotations: - volume.beta.kubernetes.io/storage-class: sas - volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxivol - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 10Gi - serviceName: wwww - - .. table:: **Table 2** Key parameters - - +-------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | Parent Parameter | Parameter | Description | - +===========================================+=============+====================================================================================================================================+ - | metadata | name | Name of the created workload. | - +-------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | spec.template.spec.containers | image | Image of the workload. | - +-------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | spec.template.spec.containers.volumeMount | mountPath | Mount path of the container. In this example, the volume is mounted to the **/tmp** directory. | - +-------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | spec | serviceName | Service corresponding to the workload. For details about how to create a Service, see :ref:`Creating a StatefulSet `. | - +-------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - - .. note:: - - **spec.template.spec.containers.volumeMounts.name** and **spec.volumeClaimTemplates.metadata.name** must be consistent because they have a mapping relationship. - -#. Run the following command to create the pod: - - **kubectl create -f evs-deployment-example.yaml** - - After the creation is complete, log in to the CCE console. In the navigation pane, choose **Resource Management** > **Storage** > **EVS**. Then, click the PVC name. On the PVC details page, you can view the binding relationship between the EVS volume and the PVC. diff --git a/umn/source/storage_management_flexvolume_deprecated/using_evs_disks_as_storage_volumes/kubectl_creating_a_pv_from_an_existing_evs_disk.rst b/umn/source/storage_management_flexvolume_deprecated/using_evs_disks_as_storage_volumes/kubectl_creating_a_pv_from_an_existing_evs_disk.rst deleted file mode 100644 index 46639af..0000000 --- a/umn/source/storage_management_flexvolume_deprecated/using_evs_disks_as_storage_volumes/kubectl_creating_a_pv_from_an_existing_evs_disk.rst +++ /dev/null @@ -1,437 +0,0 @@ -:original_name: cce_10_0313.html - -.. _cce_10_0313: - -(kubectl) Creating a PV from an Existing EVS Disk -================================================= - -Notes and Constraints ---------------------- - -The following configuration example applies to clusters of Kubernetes 1.13 or earlier. - -Procedure ---------- - -#. Log in to the EVS console, create an EVS disk, and record the volume ID, capacity, and disk type of the EVS disk. - -#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. - -#. Create two YAML files for creating the PersistentVolume (PV) and PersistentVolumeClaim (PVC). Assume that the file names are **pv-evs-example.yaml** and **pvc-evs-example.yaml**. - - **touch pv-evs-example.yaml** **pvc-evs-example.yaml** - - +-------------------------------+--------------------------------+-----------------------------------------------------+ - | Kubernetes Cluster Version | Description | YAML Example | - +===============================+================================+=====================================================+ - | 1.11.7 <= K8s version <= 1.13 | Clusters from v1.11.7 to v1.13 | :ref:`Example YAML ` | - +-------------------------------+--------------------------------+-----------------------------------------------------+ - | 1.11 <= K8s version < 1.11.7 | Clusters from v1.11 to v1.11.7 | :ref:`Example YAML ` | - +-------------------------------+--------------------------------+-----------------------------------------------------+ - | K8s version = 1.9 | Clusters of v1.9 | :ref:`Example YAML ` | - +-------------------------------+--------------------------------+-----------------------------------------------------+ - - **Clusters from v1.11.7 to v1.13** - - - .. _cce_10_0313__li0648350102513: - - **Example YAML file for the PV:** - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolume - metadata: - labels: - failure-domain.beta.kubernetes.io/region: eu-de - failure-domain.beta.kubernetes.io/zone: eu-de-01 - annotations: - pv.kubernetes.io/provisioned-by: flexvolume-huawei.com/fuxivol - name: pv-evs-example - spec: - accessModes: - - ReadWriteOnce - capacity: - storage: 10Gi - claimRef: - apiVersion: v1 - kind: PersistentVolumeClaim - name: pvc-evs-example - namespace: default - flexVolume: - driver: huawei.com/fuxivol - fsType: ext4 - options: - disk-mode: SCSI - fsType: ext4 - volumeID: 0992dbda-6340-470e-a74e-4f0db288ed82 - persistentVolumeReclaimPolicy: Delete - storageClassName: sas - - .. table:: **Table 1** Key parameters - - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +==========================================+===========================================================================================================================================================================================================================================================================================================================+ - | failure-domain.beta.kubernetes.io/region | Region where the cluster is located. | - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | failure-domain.beta.kubernetes.io/zone | AZ where the EVS volume is created. It must be the same as the AZ planned for the workload. | - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storage | EVS volume capacity in the unit of Gi. | - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storageClassName | EVS disk type. Supported values: Common I/O (SATA), High I/O (SAS), and Ultra-high I/O (SSD) | - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | driver | Storage driver. | - | | | - | | For EVS disks, set this parameter to **huawei.com/fuxivol**. | - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | volumeID | Volume ID of the EVS disk. | - | | | - | | To obtain the volume ID, log in to the CCE console, choose **Resource Management** > **Storage**, click the PVC name in the **EVS** tab page, and copy the PVC ID on the PVC details page. | - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | disk-mode | Device type of the EVS disk. The value is **VBD** or **SCSI**. | - | | | - | | For CCE clusters earlier than v1.11.7, you do not need to set this field. The value defaults to **VBD**. | - | | | - | | This field is mandatory for CCE clusters from v1.11.7 to v1.13 that use Linux x86. As the EVS volumes dynamically provisioned by a PVC are created from SCSI EVS disks, you are advised to choose **SCSI** when manually creating volumes (static PVs). Volumes in the VBD mode can still be used after cluster upgrades. | - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | spec.claimRef.apiVersion | The value is fixed at **v1**. | - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | spec.claimRef.kind | The value is fixed at **PersistentVolumeClaim**. | - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | spec.claimRef.name | PVC name. The value is the same as the name of the PVC created in the next step. | - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | spec.claimRef.namespace | Namespace of the PVC. The value is the same as the namespace of the PVC created in the next step. | - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - - **Example YAML file for the PVC:** - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - annotations: - volume.beta.kubernetes.io/storage-class: sas - volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxivol - labels: - failure-domain.beta.kubernetes.io/region: eu-de - failure-domain.beta.kubernetes.io/zone: eu-de-01 - name: pvc-evs-example - namespace: default - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 10Gi - volumeName: pv-evs-example - - .. table:: **Table 2** Key parameters - - +-----------------------------------------------+---------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===============================================+=============================================================================================+ - | volume.beta.kubernetes.io/storage-class | Storage class, which must be the same as that of the existing PV. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------+ - | volume.beta.kubernetes.io/storage-provisioner | The field must be set to **flexvolume-huawei.com/fuxivol**. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------+ - | failure-domain.beta.kubernetes.io/region | Region where the cluster is located. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------+ - | failure-domain.beta.kubernetes.io/zone | AZ where the EVS volume is created. It must be the same as the AZ planned for the workload. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------+ - | storage | Requested capacity in the PVC, in Gi. | - | | | - | | The value must be the same as the storage size of the existing PV. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------+ - | volumeName | Name of the PV. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------+ - - **Clusters from v1.11 to v1.11.7** - - - .. _cce_10_0313__li19211184720504: - - **Example YAML file for the PV:** - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolume - metadata: - labels: - failure-domain.beta.kubernetes.io/region: eu-de - failure-domain.beta.kubernetes.io/zone: - name: pv-evs-example - spec: - accessModes: - - ReadWriteOnce - capacity: - storage: 10Gi - flexVolume: - driver: huawei.com/fuxivol - fsType: ext4 - options: - fsType: ext4 - volumeID: 0992dbda-6340-470e-a74e-4f0db288ed82 - persistentVolumeReclaimPolicy: Delete - storageClassName: sas - - .. table:: **Table 3** Key parameters - - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +==========================================+===========================================================================================================================================================================================================================================================================================================================+ - | failure-domain.beta.kubernetes.io/region | Region where the cluster is located. | - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | failure-domain.beta.kubernetes.io/zone | AZ where the EVS volume is created. It must be the same as the AZ planned for the workload. | - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storage | EVS volume capacity in the unit of Gi. | - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storageClassName | EVS disk type. Supported values: Common I/O (SATA), High I/O (SAS), and Ultra-high I/O (SSD) | - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | driver | Storage driver. | - | | | - | | For EVS disks, set this parameter to **huawei.com/fuxivol**. | - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | volumeID | Volume ID of the EVS disk. | - | | | - | | To obtain the volume ID, log in to the CCE console, choose **Resource Management** > **Storage**, click the PVC name in the **EVS** tab page, and copy the PVC ID on the PVC details page. | - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | disk-mode | Device type of the EVS disk. The value is **VBD** or **SCSI**. | - | | | - | | For CCE clusters earlier than v1.11.7, you do not need to set this field. The value defaults to **VBD**. | - | | | - | | This field is mandatory for CCE clusters from v1.11.7 to v1.13 that use Linux x86. As the EVS volumes dynamically provisioned by a PVC are created from SCSI EVS disks, you are advised to choose **SCSI** when manually creating volumes (static PVs). Volumes in the VBD mode can still be used after cluster upgrades. | - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - - **Example YAML file for the PVC:** - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - annotations: - volume.beta.kubernetes.io/storage-class: sas - volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxivol - labels: - failure-domain.beta.kubernetes.io/region: eu-de - failure-domain.beta.kubernetes.io/zone: eu-de-01 - name: pvc-evs-example - namespace: default - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 10Gi - volumeName: pv-evs-example - - .. table:: **Table 4** Key parameters - - +-----------------------------------------------+------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===============================================+============================================================================================================+ - | volume.beta.kubernetes.io/storage-class | Storage class. The value can be **sas** or **ssd**. The value must be the same as that of the existing PV. | - +-----------------------------------------------+------------------------------------------------------------------------------------------------------------+ - | volume.beta.kubernetes.io/storage-provisioner | The field must be set to **flexvolume-huawei.com/fuxivol**. | - +-----------------------------------------------+------------------------------------------------------------------------------------------------------------+ - | failure-domain.beta.kubernetes.io/region | Region where the cluster is located. | - +-----------------------------------------------+------------------------------------------------------------------------------------------------------------+ - | failure-domain.beta.kubernetes.io/zone | AZ where the EVS volume is created. It must be the same as the AZ planned for the workload. | - +-----------------------------------------------+------------------------------------------------------------------------------------------------------------+ - | storage | Requested capacity in the PVC, in Gi. | - | | | - | | The value must be the same as the storage size of the existing PV. | - +-----------------------------------------------+------------------------------------------------------------------------------------------------------------+ - | volumeName | Name of the PV. | - +-----------------------------------------------+------------------------------------------------------------------------------------------------------------+ - - **Clusters of v1.9** - - - .. _cce_10_0313__li813222310297: - - **Example YAML file for the PV:** - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolume - metadata: - labels: - failure-domain.beta.kubernetes.io/region: eu-de - failure-domain.beta.kubernetes.io/zone: - name: pv-evs-example - namespace: default - spec: - accessModes: - - ReadWriteOnce - capacity: - storage: 10Gi - flexVolume: - driver: huawei.com/fuxivol - fsType: ext4 - options: - fsType: ext4 - kubernetes.io/namespace: default - volumeID: 0992dbda-6340-470e-a74e-4f0db288ed82 - persistentVolumeReclaimPolicy: Delete - storageClassName: sas - - .. table:: **Table 5** Key parameters - - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +==========================================+===========================================================================================================================================================================================================================================================================================================================+ - | failure-domain.beta.kubernetes.io/region | Region where the cluster is located. | - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | failure-domain.beta.kubernetes.io/zone | AZ where the EVS volume is created. It must be the same as the AZ planned for the workload. | - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storage | EVS volume capacity in the unit of Gi. | - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storageClassName | EVS disk type. Supported values: Common I/O (SATA), High I/O (SAS), and Ultra-high I/O (SSD) | - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | driver | Storage driver. | - | | | - | | For EVS disks, set this parameter to **huawei.com/fuxivol**. | - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | volumeID | Volume ID of the EVS disk. | - | | | - | | To obtain the volume ID, log in to the CCE console, choose **Resource Management** > **Storage**, click the PVC name in the **EVS** tab page, and copy the PVC ID on the PVC details page. | - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | disk-mode | Device type of the EVS disk. The value is **VBD** or **SCSI**. | - | | | - | | For CCE clusters earlier than v1.11.7, you do not need to set this field. The value defaults to **VBD**. | - | | | - | | This field is mandatory for CCE clusters from v1.11.7 to v1.13 that use Linux x86. As the EVS volumes dynamically provisioned by a PVC are created from SCSI EVS disks, you are advised to choose **SCSI** when manually creating volumes (static PVs). Volumes in the VBD mode can still be used after cluster upgrades. | - +------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - - **Example YAML file for the PVC:** - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - annotations: - volume.beta.kubernetes.io/storage-class: sas - volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxivol - labels: - failure-domain.beta.kubernetes.io/region: eu-de - failure-domain.beta.kubernetes.io/zone: - name: pvc-evs-example - namespace: default - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 10Gi - volumeName: pv-evs-example - volumeNamespace: default - - .. table:: **Table 6** Key parameters - - +-----------------------------------------------+---------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===============================================+=============================================================================================+ - | volume.beta.kubernetes.io/storage-class | Storage class, which must be the same as that of the existing PV. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------+ - | volume.beta.kubernetes.io/storage-provisioner | The field must be set to **flexvolume-huawei.com/fuxivol**. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------+ - | failure-domain.beta.kubernetes.io/region | Region where the cluster is located. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------+ - | failure-domain.beta.kubernetes.io/zone | AZ where the EVS volume is created. It must be the same as the AZ planned for the workload. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------+ - | storage | Requested capacity in the PVC, in Gi. | - | | | - | | The value must be the same as the storage size of the existing PV. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------+ - | volumeName | Name of the PV. | - +-----------------------------------------------+---------------------------------------------------------------------------------------------+ - -#. Create the PV. - - **kubectl create -f pv-evs-example.yaml** - -#. Create the PVC. - - **kubectl create -f pvc-evs-example.yaml** - - After the operation is successful, choose **Resource Management** > **Storage** to view the created PVC. You can also view the EVS disk by name on the EVS console. - -#. (Optional) Add the metadata associated with the cluster to ensure that the EVS disk associated with the mounted static PV is not deleted when the node or cluster is deleted. - - .. caution:: - - If you skip this step in this example or when creating a static PV or PVC, ensure that the EVS disk associated with the static PV has been unbound from the node before you delete the node. - - a. .. _cce_10_0313__li6891526204113: - - Obtain the tenant token. For details, see `Obtaining a User Token `__. - - b. .. _cce_10_0313__li17017349418: - - Obtain the EVS access address **EVS_ENDPOINT**. For details, see `Regions and Endpoints `__. - - c. Add the metadata associated with the cluster to the EVS disk backing the static PV. - - .. code-block:: - - curl -X POST ${EVS_ENDPOINT}/v2/${project_id}/volumes/${volume_id}/metadata --insecure \ - -d '{"metadata":{"cluster_id": "${cluster_id}", "namespace": "${pvc_namespace}"}}' \ - -H 'Accept:application/json' -H 'Content-Type:application/json;charset=utf8' \ - -H 'X-Auth-Token:${TOKEN}' - - .. table:: **Table 7** Key parameters - - +---------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===============+========================================================================================================================================================================================================================================================+ - | EVS_ENDPOINT | EVS access address. Set this parameter to the value obtained in :ref:`6.b `. | - +---------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | project_id | Project ID. | - +---------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | volume_id | ID of the associated EVS disk. Set this parameter to **volume_id** of the static PV to be created. You can also log in to the EVS console, click the name of the EVS disk to be imported, and obtain the ID from **Summary** on the disk details page. | - +---------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | cluster_id | ID of the cluster where the EVS PV is to be created. On the CCE console, choose **Resource Management** > **Clusters**. Click the name of the cluster to be associated. On the cluster details page, obtain the cluster ID. | - +---------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | pvc_namespace | Namespace where the PVC is to be bound. | - +---------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | TOKEN | User token. Set this parameter to the value obtained in :ref:`6.a `. | - +---------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - For example, run the following commands: - - .. code-block:: - - curl -X POST https://evs.eu-de.otc.t-systems.com:443/v2/060576866680d5762f52c0150e726aa7/volumes/69c9619d-174c-4c41-837e-31b892604e14/metadata --insecure \ - -d '{"metadata":{"cluster_id": "71e8277e-80c7-11ea-925c-0255ac100442", "namespace": "default"}}' \ - -H 'Accept:application/json' -H 'Content-Type:application/json;charset=utf8' \ - -H 'X-Auth-Token:MIIPe******IsIm1ldG - - After the request is executed, run the following commands to check whether the EVS disk has been associated with the metadata of the cluster: - - .. code-block:: - - curl -X GET ${EVS_ENDPOINT}/v2/${project_id}/volumes/${volume_id}/metadata --insecure \ - -H 'X-Auth-Token:${TOKEN}' - - For example, run the following commands: - - .. code-block:: - - curl -X GET https://evs.eu-de.otc.t-systems.com/v2/060576866680d5762f52c0150e726aa7/volumes/69c9619d-174c-4c41-837e-31b892604e14/metadata --insecure \ - -H 'X-Auth-Token:MIIPeAYJ***9t1c31ASaQ==' - - The command output displays the current metadata of the EVS disk. - - .. code-block:: - - { - "metadata": { - "namespace": "default", - "cluster_id": "71e8277e-80c7-11ea-925c-0255ac100442", - "hw:passthrough": "true" - } - } diff --git a/umn/source/storage_management_flexvolume_deprecated/using_evs_disks_as_storage_volumes/overview.rst b/umn/source/storage_management_flexvolume_deprecated/using_evs_disks_as_storage_volumes/overview.rst deleted file mode 100644 index ea9a6ee..0000000 --- a/umn/source/storage_management_flexvolume_deprecated/using_evs_disks_as_storage_volumes/overview.rst +++ /dev/null @@ -1,24 +0,0 @@ -:original_name: cce_10_0310.html - -.. _cce_10_0310: - -Overview -======== - -To achieve persistent storage, CCE allows you to mount the storage volumes created from Elastic Volume Service (EVS) disks to a path of a container. When the container is migrated, the mounted EVS volumes are also migrated. By using EVS volumes, you can mount the remote file directory of storage system into a container so that data in the data volume is permanently preserved even when the container is deleted. - - -.. figure:: /_static/images/en-us_image_0000001517903060.png - :alt: **Figure 1** Mounting EVS volumes to CCE - - **Figure 1** Mounting EVS volumes to CCE - -Description ------------ - -- **User-friendly**: Similar to formatting disks for on-site servers in traditional layouts, you can format block storage (disks) mounted to cloud servers, and create file systems on them. -- **Data isolation**: Each server uses an independent block storage device (disk). -- **Private network**: User can access data only in private networks of data centers. -- **Capacity and performance**: The capacity of a single volume is limited (TB-level), but the performance is excellent (ms-level read/write I/O latency). -- **Restriction**: EVS disks that have partitions or have non-ext4 file systems cannot be imported. -- **Applications**: HPC, enterprise core applications running in clusters, enterprise application systems, and development and testing. These volumes are often used by single-pod Deployments and jobs, or exclusively by each pod in a StatefulSet. EVS disks are non-shared storage and cannot be attached to multiple nodes at the same time. If two pods are configured to use the same EVS disk and the two pods are scheduled to different nodes, one pod cannot be started because the EVS disk cannot be attached to it. diff --git a/umn/source/storage_management_flexvolume_deprecated/using_obs_buckets_as_storage_volumes/index.rst b/umn/source/storage_management_flexvolume_deprecated/using_obs_buckets_as_storage_volumes/index.rst deleted file mode 100644 index e279a1a..0000000 --- a/umn/source/storage_management_flexvolume_deprecated/using_obs_buckets_as_storage_volumes/index.rst +++ /dev/null @@ -1,22 +0,0 @@ -:original_name: cce_10_0322.html - -.. _cce_10_0322: - -Using OBS Buckets as Storage Volumes -==================================== - -- :ref:`Overview ` -- :ref:`(kubectl) Automatically Creating an OBS Volume ` -- :ref:`(kubectl) Creating a PV from an Existing OBS Bucket ` -- :ref:`(kubectl) Creating a Deployment Mounted with an OBS Volume ` -- :ref:`(kubectl) Creating a StatefulSet Mounted with an OBS Volume ` - -.. toctree:: - :maxdepth: 1 - :hidden: - - overview - kubectl_automatically_creating_an_obs_volume - kubectl_creating_a_pv_from_an_existing_obs_bucket - kubectl_creating_a_deployment_mounted_with_an_obs_volume - kubectl_creating_a_statefulset_mounted_with_an_obs_volume diff --git a/umn/source/storage_management_flexvolume_deprecated/using_obs_buckets_as_storage_volumes/kubectl_automatically_creating_an_obs_volume.rst b/umn/source/storage_management_flexvolume_deprecated/using_obs_buckets_as_storage_volumes/kubectl_automatically_creating_an_obs_volume.rst deleted file mode 100644 index 0fbff41..0000000 --- a/umn/source/storage_management_flexvolume_deprecated/using_obs_buckets_as_storage_volumes/kubectl_automatically_creating_an_obs_volume.rst +++ /dev/null @@ -1,65 +0,0 @@ -:original_name: cce_10_0325.html - -.. _cce_10_0325: - -(kubectl) Automatically Creating an OBS Volume -============================================== - -Scenario --------- - -During the use of OBS, expected OBS buckets can be automatically created and mounted as volumes. Currently, standard and infrequent access OBS buckets are supported, which correspond to **obs-standard** and **obs-standard-ia**, respectively. - -Notes and Constraints ---------------------- - -The following configuration example applies to clusters of Kubernetes 1.13 or earlier. - -Procedure ---------- - -#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. - -#. Run the following commands to configure the **pvc-obs-auto-example.yaml** file, which is used to create a PVC. - - **touch pvc-obs-auto-example.yaml** - - **vi pvc-obs-auto-example.yaml** - - **Example YAML:** - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - annotations: - volume.beta.kubernetes.io/storage-class: obs-standard # OBS bucket type. The value can be obs-standard (standard) or obs-standard-ia (infrequent access). - name: pvc-obs-auto-example # PVC name - namespace: default - spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 1Gi # Storage capacity in the unit of Gi. For OBS buckets, this parameter is used only for verification (fixed to 1, cannot be empty or 0). Any value you set does not take effect for OBS buckets. - - .. table:: **Table 1** Key parameters - - +-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +=========================================+================================================================================================================================================================================================================+ - | volume.beta.kubernetes.io/storage-class | Bucket type. Currently, **obs-standard** and **obs-standard-ia** are supported. | - +-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | name | Name of the PVC to be created. | - +-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | accessModes | Only **ReadWriteMany** is supported. **ReadWriteOnly** is not supported. | - +-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storage | Storage capacity in the unit of Gi. For OBS buckets, this field is used only for verification (cannot be empty or 0). Its value is fixed at **1**, and any value you set does not take effect for OBS buckets. | - +-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -#. Run the following command to create a PVC: - - **kubectl create -f pvc-obs-auto-example.yaml** - - After the command is executed, an OBS bucket is created in the VPC to which the cluster belongs. You can click the bucket name in **Storage** > **OBS** to view the bucket or view it on the OBS console. diff --git a/umn/source/storage_management_flexvolume_deprecated/using_obs_buckets_as_storage_volumes/kubectl_creating_a_deployment_mounted_with_an_obs_volume.rst b/umn/source/storage_management_flexvolume_deprecated/using_obs_buckets_as_storage_volumes/kubectl_creating_a_deployment_mounted_with_an_obs_volume.rst deleted file mode 100644 index 10e71ef..0000000 --- a/umn/source/storage_management_flexvolume_deprecated/using_obs_buckets_as_storage_volumes/kubectl_creating_a_deployment_mounted_with_an_obs_volume.rst +++ /dev/null @@ -1,168 +0,0 @@ -:original_name: cce_10_0327.html - -.. _cce_10_0327: - -(kubectl) Creating a Deployment Mounted with an OBS Volume -========================================================== - -Scenario --------- - -After an OBS volume is created or imported to CCE, you can mount the volume to a workload. - -Notes and Constraints ---------------------- - -The following configuration example applies to clusters of Kubernetes 1.13 or earlier. - -Procedure ---------- - -#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. - -#. Run the following commands to configure the **obs-deployment-example.yaml** file, which is used to create a pod. - - **touch obs-deployment-example.yaml** - - **vi obs-deployment-example.yaml** - - Example of mounting an OBS volume to a Deployment (PVC-based, shared volume): - - .. code-block:: - - apiVersion: apps/v1 - kind: Deployment - metadata: - name: obs-deployment-example # Workload name - namespace: default - spec: - replicas: 1 - selector: - matchLabels: - app: obs-deployment-example - template: - metadata: - labels: - app: obs-deployment-example - spec: - containers: - - image: nginx - name: container-0 - volumeMounts: - - mountPath: /tmp # Mount path - name: pvc-obs-example - restartPolicy: Always - imagePullSecrets: - - name: default-secret - volumes: - - name: pvc-obs-example - persistentVolumeClaim: - claimName: pvc-obs-auto-example # PVC name - - .. table:: **Table 1** Key parameters - - ========= =========================================== - Parameter Description - ========= =========================================== - name Name of the pod to be created. - app Name of the application running in the pod. - mountPath Mount path in the container. - ========= =========================================== - - .. note:: - - **spec.template.spec.containers.volumeMounts.name** and **spec.template.spec.volumes.name** must be consistent because they have a mapping relationship. - - Example of mounting an OBS volume to a StatefulSet (PVC template-based, dedicated volume): - - **Example YAML:** - - .. code-block:: - - apiVersion: apps/v1 - kind: StatefulSet - metadata: - name: deploy-obs-standard-in - namespace: default - generation: 1 - labels: - appgroup: '' - spec: - replicas: 1 - selector: - matchLabels: - app: deploy-obs-standard-in - template: - metadata: - labels: - app: deploy-obs-standard-in - annotations: - metrics.alpha.kubernetes.io/custom-endpoints: '[{"api":"","path":"","port":"","names":""}]' - pod.alpha.kubernetes.io/initialized: 'true' - spec: - containers: - - name: container-0 - image: 'nginx:1.12-alpine-perl' - env: - - name: PAAS_APP_NAME - value: deploy-obs-standard-in - - name: PAAS_NAMESPACE - value: default - - name: PAAS_PROJECT_ID - value: a2cd8e998dca42e98a41f596c636dbda - resources: {} - volumeMounts: - - name: obs-bs-standard-mountoptionpvc - mountPath: /tmp - terminationMessagePath: /dev/termination-log - terminationMessagePolicy: File - imagePullPolicy: IfNotPresent - restartPolicy: Always - terminationGracePeriodSeconds: 30 - dnsPolicy: ClusterFirst - securityContext: {} - imagePullSecrets: - - name: default-secret - affinity: {} - schedulerName: default-scheduler - volumeClaimTemplates: - - metadata: - name: obs-bs-standard-mountoptionpvc - annotations: - volume.beta.kubernetes.io/storage-class: obs-standard - volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxiobs - spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 1Gi - serviceName: wwww - podManagementPolicy: OrderedReady - updateStrategy: - type: RollingUpdate - revisionHistoryLimit: 10 - - .. table:: **Table 2** Key parameters - - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +=============+====================================================================================================================================+ - | name | Name of the created workload. | - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | image | Image of the workload. | - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | mountPath | Mount path in the container. In this example, the volume is mounted to the **/tmp** directory. | - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | serviceName | Service corresponding to the workload. For details about how to create a Service, see :ref:`Creating a StatefulSet `. | - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - - .. note:: - - **spec.template.spec.containers.volumeMounts.name** and **spec.volumeClaimTemplates.metadata.name** must be consistent because they have a mapping relationship. - -#. Run the following command to create the pod: - - **kubectl create -f obs-deployment-example.yaml** - - After the creation is complete, choose **Storage** > **OBS** on the CCE console and click the PVC name. On the PVC details page, you can view the binding relationship between the OBS service and the PVC. diff --git a/umn/source/storage_management_flexvolume_deprecated/using_obs_buckets_as_storage_volumes/kubectl_creating_a_pv_from_an_existing_obs_bucket.rst b/umn/source/storage_management_flexvolume_deprecated/using_obs_buckets_as_storage_volumes/kubectl_creating_a_pv_from_an_existing_obs_bucket.rst deleted file mode 100644 index 5efd49b..0000000 --- a/umn/source/storage_management_flexvolume_deprecated/using_obs_buckets_as_storage_volumes/kubectl_creating_a_pv_from_an_existing_obs_bucket.rst +++ /dev/null @@ -1,225 +0,0 @@ -:original_name: cce_10_0326.html - -.. _cce_10_0326: - -(kubectl) Creating a PV from an Existing OBS Bucket -=================================================== - -Scenario --------- - -CCE allows you to use an existing OBS bucket to create a PersistentVolume (PV). You can create a PersistentVolumeClaim (PVC) and bind it to the PV. - -Notes and Constraints ---------------------- - -The following configuration example applies to clusters of Kubernetes 1.13 or earlier. - -Procedure ---------- - -#. Log in to the OBS console, create an OBS bucket, and record the bucket name and storage class. - -#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. - -#. Create two YAML files for creating the PV and PVC. Assume that the file names are **pv-obs-example.yaml** and **pvc-obs-example.yaml**. - - **touch pv-obs-example.yaml** **pvc-obs-example.yaml** - - +-----------------------------+------------------------------+-----------------------------------------------------+ - | Kubernetes Cluster Version | Description | YAML Example | - +=============================+==============================+=====================================================+ - | 1.11 <= K8s version <= 1.13 | Clusters from v1.11 to v1.13 | :ref:`Example YAML ` | - +-----------------------------+------------------------------+-----------------------------------------------------+ - | K8s version = 1.9 | Clusters of v1.9 | :ref:`Example YAML ` | - +-----------------------------+------------------------------+-----------------------------------------------------+ - - **Clusters from v1.11 to v1.13** - - - .. _cce_10_0326__li45671840132016: - - **Example YAML file for the PV:** - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolume - metadata: - name: pv-obs-example - annotations: - pv.kubernetes.io/provisioned-by: flexvolume-huawei.com/fuxiobs - spec: - accessModes: - - ReadWriteMany - capacity: - storage: 1Gi - claimRef: - apiVersion: v1 - kind: PersistentVolumeClaim - name: pvc-obs-example - namespace: default - flexVolume: - driver: huawei.com/fuxiobs - fsType: obs - options: - fsType: obs - region: eu-de - storage_class: STANDARD - volumeID: test-obs - persistentVolumeReclaimPolicy: Delete - storageClassName: obs-standard - - .. table:: **Table 1** Key parameters - - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+===============================================================================================================================================================================================+ - | driver | Storage driver used to mount the volume. Set the driver to **huawei.com/fuxiobs** for the OBS volume. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storage_class | Storage class, including **STANDARD** (standard bucket) and **STANDARD_IA** (infrequent access bucket). | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | region | Region where the cluster is located. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | volumeID | OBS bucket name. | - | | | - | | To obtain the name, log in to the CCE console, choose **Resource Management** > **Storage**, click the PVC name in the **OBS** tab page, and copy the PV name on the **PV Details** tab page. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storage | Storage capacity in the unit of Gi. The value is fixed at **1Gi**. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storageClassName | Storage class supported by OBS, including **obs-standard** (standard bucket) and **obs-standard-ia** (infrequent access bucket). | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | spec.claimRef.apiVersion | The value is fixed at **v1**. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | spec.claimRef.kind | The value is fixed at **PersistentVolumeClaim**. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | spec.claimRef.name | The value is the same as the name of the PVC created in the next step. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | spec.claimRef.namespace | The value is the same as the namespace of the PVC created in the next step. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - - **Example YAML file for the PVC:** - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - annotations: - volume.beta.kubernetes.io/storage-class: obs-standard - volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxiobs - name: pvc-obs-example - namespace: default - spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 1Gi - volumeName: pv-obs-example - - .. table:: **Table 2** Key parameters - - +-----------------------------------------------+-------------------------------------------------------------------------------------+ - | Parameter | Description | - +===============================================+=====================================================================================+ - | volume.beta.kubernetes.io/storage-class | Storage class supported by OBS, including **obs-standard** and **obs-standard-ia**. | - +-----------------------------------------------+-------------------------------------------------------------------------------------+ - | volume.beta.kubernetes.io/storage-provisioner | Must be set to **flexvolume-huawei.com/fuxiobs**. | - +-----------------------------------------------+-------------------------------------------------------------------------------------+ - | volumeName | Name of the PV. | - +-----------------------------------------------+-------------------------------------------------------------------------------------+ - | storage | Storage capacity in the unit of Gi. The value is fixed at **1Gi**. | - +-----------------------------------------------+-------------------------------------------------------------------------------------+ - - **Clusters of v1.9** - - - .. _cce_10_0326__li154036581589: - - **Example YAML file for the PV:** - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolume - metadata: - name: pv-obs-example - namespace: default - spec: - accessModes: - - ReadWriteMany - capacity: - storage: 1Gi - flexVolume: - driver: huawei.com/fuxiobs - fsType: obs - options: - fsType: obs - kubernetes.io/namespace: default - region: eu-de - storage_class: STANDARD - volumeID: test-obs - persistentVolumeReclaimPolicy: Delete - storageClassName: obs-standard - - .. table:: **Table 3** Key parameters - - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+===============================================================================================================================================================================================+ - | driver | Storage driver used to mount the volume. Set the driver to **huawei.com/fuxiobs** for the OBS volume. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storage_class | Storage class, including **STANDARD** (standard bucket) and **STANDARD_IA** (infrequent access bucket). | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | region | Region where the cluster is located. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | volumeID | OBS bucket name. | - | | | - | | To obtain the name, log in to the CCE console, choose **Resource Management** > **Storage**, click the PVC name in the **OBS** tab page, and copy the PV name on the **PV Details** tab page. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storage | Storage capacity in the unit of Gi. The value is fixed at **1Gi**. | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storageClassName | Storage class supported by OBS, including **obs-standard** (standard bucket) and **obs-standard-ia** (infrequent access bucket). | - +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - - **Example YAML file for the PVC:** - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - annotations: - volume.beta.kubernetes.io/storage-class: obs-standard - volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxiobs - name: pvc-obs-example - namespace: default - spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 1Gi - volumeName: pv-obs-example - volumeNamespace: default - - .. table:: **Table 4** Key parameters - - +-----------------------------------------------+-------------------------------------------------------------------------------------+ - | Parameter | Description | - +===============================================+=====================================================================================+ - | volume.beta.kubernetes.io/storage-class | Storage class supported by OBS, including **obs-standard** and **obs-standard-ia**. | - +-----------------------------------------------+-------------------------------------------------------------------------------------+ - | volume.beta.kubernetes.io/storage-provisioner | Must be set to **flexvolume-huawei.com/fuxiobs**. | - +-----------------------------------------------+-------------------------------------------------------------------------------------+ - | volumeName | Name of the PV. | - +-----------------------------------------------+-------------------------------------------------------------------------------------+ - | storage | Storage capacity in the unit of Gi. The value is fixed at **1Gi**. | - +-----------------------------------------------+-------------------------------------------------------------------------------------+ - -#. Create the PV. - - **kubectl create -f pv-obs-example.yaml** - -#. Create the PVC. - - **kubectl create -f pvc-obs-example.yaml** diff --git a/umn/source/storage_management_flexvolume_deprecated/using_obs_buckets_as_storage_volumes/kubectl_creating_a_statefulset_mounted_with_an_obs_volume.rst b/umn/source/storage_management_flexvolume_deprecated/using_obs_buckets_as_storage_volumes/kubectl_creating_a_statefulset_mounted_with_an_obs_volume.rst deleted file mode 100644 index 1fb3491..0000000 --- a/umn/source/storage_management_flexvolume_deprecated/using_obs_buckets_as_storage_volumes/kubectl_creating_a_statefulset_mounted_with_an_obs_volume.rst +++ /dev/null @@ -1,90 +0,0 @@ -:original_name: cce_10_0328.html - -.. _cce_10_0328: - -(kubectl) Creating a StatefulSet Mounted with an OBS Volume -=========================================================== - -Scenario --------- - -CCE allows you to use an existing OBS volume to create a StatefulSet through a PersistentVolumeClaim (PVC). - -Notes and Constraints ---------------------- - -The following configuration example applies to clusters of Kubernetes 1.13 or earlier. - -Procedure ---------- - -#. Create an OBS volume by referring to :ref:`(kubectl) Automatically Creating an OBS Volume ` and obtain the PVC name. - -#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. - -#. Create a YAML file for creating the workload. Assume that the file name is **obs-statefulset-example.yaml**. - - **touch obs-statefulset-example.yaml** - - **vi obs-statefulset-example.yaml** - - **Example YAML:** - - .. code-block:: - - apiVersion: apps/v1 - kind: StatefulSet - metadata: - name: obs-statefulset-example - namespace: default - spec: - replicas: 1 - selector: - matchLabels: - app: obs-statefulset-example - serviceName: qwqq - template: - metadata: - annotations: - metrics.alpha.kubernetes.io/custom-endpoints: '[{"api":"","path":"","port":"","names":""}]' - pod.alpha.kubernetes.io/initialized: "true" - creationTimestamp: null - labels: - app: obs-statefulset-example - spec: - affinity: {} - containers: - image: nginx:latest - imagePullPolicy: Always - name: container-0 - volumeMounts: - - mountPath: /tmp - name: pvc-obs-example - imagePullSecrets: - - name: default-secret - volumes: - - name: pvc-obs-example - persistentVolumeClaim: - claimName: cce-obs-demo - - .. table:: **Table 1** Key parameters - - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +=============+====================================================================================================================================+ - | replicas | Number of pods. | - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | name | Name of the created workload. | - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | image | Image used by the workload. | - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | mountPath | Mount path in the container. | - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | serviceName | Service corresponding to the workload. For details about how to create a Service, see :ref:`Creating a StatefulSet `. | - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | claimName | Name of an existing PVC. | - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - -#. Create the StatefulSet. - - **kubectl create -f obs-statefulset-example.yaml** diff --git a/umn/source/storage_management_flexvolume_deprecated/using_obs_buckets_as_storage_volumes/overview.rst b/umn/source/storage_management_flexvolume_deprecated/using_obs_buckets_as_storage_volumes/overview.rst deleted file mode 100644 index 372cf52..0000000 --- a/umn/source/storage_management_flexvolume_deprecated/using_obs_buckets_as_storage_volumes/overview.rst +++ /dev/null @@ -1,37 +0,0 @@ -:original_name: cce_10_0323.html - -.. _cce_10_0323: - -Overview -======== - -CCE allows you to mount a volume created from an Object Storage Service (OBS) bucket to a container to store data persistently. Object storage is commonly used in cloud workloads, data analysis, content analysis, and hotspot objects. - - -.. figure:: /_static/images/en-us_image_0000001517743540.png - :alt: **Figure 1** Mounting OBS volumes to CCE - - **Figure 1** Mounting OBS volumes to CCE - -Storage Class -------------- - -Object storage offers three storage classes, Standard, Infrequent Access, and Archive, to satisfy different requirements for storage performance and costs. - -- The Standard storage class features low access latency and high throughput. It is therefore applicable to storing a large number of hot files (frequently accessed every month) or small files (less than 1 MB). The application scenarios include big data analytics, mobile apps, hot videos, and picture processing on social media. -- The Infrequent Access storage class is ideal for storing data that is semi-frequently accessed (less than 12 times a year), with requirements for quick response. The application scenarios include file synchronization or sharing, and enterprise-level backup. It provides the same durability, access latency, and throughput as the Standard storage class but at a lower cost. However, the Infrequent Access storage class has lower availability than the Standard storage class. -- The Archive storage class is suitable for archiving data that is rarely-accessed (averagely once a year). The application scenarios include data archiving and long-term data backup. The Archive storage class is secure and durable at an affordable low cost, which can be used to replace tape libraries. However, it may take hours to restore data from the Archive storage class. - -Description ------------ - -- **Standard APIs**: With HTTP RESTful APIs, OBS allows you to use client tools or third-party tools to access object storage. -- **Data sharing**: Servers, embedded devices, and IoT devices can use the same path to access shared object data in OBS. -- **Public/Private networks**: OBS allows data to be accessed from public networks to meet Internet application requirements. -- **Capacity and performance**: No capacity limit; high performance (read/write I/O latency within 10 ms). -- **Use cases**: Deployments/StatefulSets in the ReadOnlyMany mode and jobs created for big data analysis, static website hosting, online video on demand (VoD), gene sequencing, intelligent video surveillance, backup and archiving, and enterprise cloud boxes (web disks). You can create object storage by using the OBS console, tools, and SDKs. - -Reference ---------- - -CCE clusters can also be mounted with OBS buckets of third-party tenants, including OBS parallel file systems (preferred) and OBS object buckets. diff --git a/umn/source/storage_management_flexvolume_deprecated/using_sfs_file_systems_as_storage_volumes/index.rst b/umn/source/storage_management_flexvolume_deprecated/using_sfs_file_systems_as_storage_volumes/index.rst deleted file mode 100644 index d0cc819..0000000 --- a/umn/source/storage_management_flexvolume_deprecated/using_sfs_file_systems_as_storage_volumes/index.rst +++ /dev/null @@ -1,22 +0,0 @@ -:original_name: cce_10_0315.html - -.. _cce_10_0315: - -Using SFS File Systems as Storage Volumes -========================================= - -- :ref:`Overview ` -- :ref:`(kubectl) Automatically Creating an SFS Volume ` -- :ref:`(kubectl) Creating a PV from an Existing SFS File System ` -- :ref:`(kubectl) Creating a Deployment Mounted with an SFS Volume ` -- :ref:`(kubectl) Creating a StatefulSet Mounted with an SFS Volume ` - -.. toctree:: - :maxdepth: 1 - :hidden: - - overview - kubectl_automatically_creating_an_sfs_volume - kubectl_creating_a_pv_from_an_existing_sfs_file_system - kubectl_creating_a_deployment_mounted_with_an_sfs_volume - kubectl_creating_a_statefulset_mounted_with_an_sfs_volume diff --git a/umn/source/storage_management_flexvolume_deprecated/using_sfs_file_systems_as_storage_volumes/kubectl_automatically_creating_an_sfs_volume.rst b/umn/source/storage_management_flexvolume_deprecated/using_sfs_file_systems_as_storage_volumes/kubectl_automatically_creating_an_sfs_volume.rst deleted file mode 100644 index cb320c6..0000000 --- a/umn/source/storage_management_flexvolume_deprecated/using_sfs_file_systems_as_storage_volumes/kubectl_automatically_creating_an_sfs_volume.rst +++ /dev/null @@ -1,60 +0,0 @@ -:original_name: cce_10_0318.html - -.. _cce_10_0318: - -(kubectl) Automatically Creating an SFS Volume -============================================== - -Notes and Constraints ---------------------- - -The following configuration example applies to clusters of Kubernetes 1.13 or earlier. - -Procedure ---------- - -#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. - -#. Run the following commands to configure the **pvc-sfs-auto-example.yaml** file, which is used to create a PVC. - - **touch pvc-sfs-auto-example.yaml** - - **vi pvc-sfs-auto-example.yaml** - - **Example YAML file:** - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - annotations: - volume.beta.kubernetes.io/storage-class: nfs-rw - name: pvc-sfs-auto-example - namespace: default - spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 10Gi - - .. table:: **Table 1** Key parameters - - +-----------------------------------------+---------------------------------------------------------------------------------------+ - | Parameter | Description | - +=========================================+=======================================================================================+ - | volume.beta.kubernetes.io/storage-class | File storage class. Currently, the standard file protocol type (nfs-rw) is supported. | - +-----------------------------------------+---------------------------------------------------------------------------------------+ - | name | Name of the PVC to be created. | - +-----------------------------------------+---------------------------------------------------------------------------------------+ - | accessModes | Only **ReadWriteMany** is supported. **ReadWriteOnly** is not supported. | - +-----------------------------------------+---------------------------------------------------------------------------------------+ - | storage | Storage capacity in the unit of Gi. | - +-----------------------------------------+---------------------------------------------------------------------------------------+ - -#. Run the following command to create a PVC: - - **kubectl create -f pvc-sfs-auto-example.yaml** - - After the command is executed, a file system is created in the VPC to which the cluster belongs. Choose **Storage** > **SFS** on the CCE console or log in to the SFS console to view the file system. diff --git a/umn/source/storage_management_flexvolume_deprecated/using_sfs_file_systems_as_storage_volumes/kubectl_creating_a_deployment_mounted_with_an_sfs_volume.rst b/umn/source/storage_management_flexvolume_deprecated/using_sfs_file_systems_as_storage_volumes/kubectl_creating_a_deployment_mounted_with_an_sfs_volume.rst deleted file mode 100644 index 3470ba8..0000000 --- a/umn/source/storage_management_flexvolume_deprecated/using_sfs_file_systems_as_storage_volumes/kubectl_creating_a_deployment_mounted_with_an_sfs_volume.rst +++ /dev/null @@ -1,145 +0,0 @@ -:original_name: cce_10_0320.html - -.. _cce_10_0320: - -(kubectl) Creating a Deployment Mounted with an SFS Volume -========================================================== - -Scenario --------- - -After an SFS volume is created or imported to CCE, you can mount the volume to a workload. - -Notes and Constraints ---------------------- - -The following configuration example applies to clusters of Kubernetes 1.13 or earlier. - -Procedure ---------- - -#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. - -#. Run the following commands to configure the **sfs-deployment-example.yaml** file, which is used to create a pod. - - **touch sfs-deployment-example.yaml** - - **vi sfs-deployment-example.yaml** - - Example of mounting an SFS volume to a Deployment (PVC-based, shared volume): - - .. code-block:: - - apiVersion: apps/v1 - kind: Deployment - metadata: - name: sfs-deployment-example # Workload name - namespace: default - spec: - replicas: 1 - selector: - matchLabels: - app: sfs-deployment-example - template: - metadata: - labels: - app: sfs-deployment-example - spec: - containers: - - image: nginx - name: container-0 - volumeMounts: - - mountPath: /tmp # Mount path - name: pvc-sfs-example - imagePullSecrets: - - name: default-secret - restartPolicy: Always - volumes: - - name: pvc-sfs-example - persistentVolumeClaim: - claimName: pvc-sfs-auto-example # PVC name - - .. table:: **Table 1** Key parameters - - +--------------------------------------------------+-----------+---------------------------------------------------------------------------+ - | Parent Parameter | Parameter | Description | - +==================================================+===========+===========================================================================+ - | metadata | name | Name of the pod to be created. | - +--------------------------------------------------+-----------+---------------------------------------------------------------------------+ - | spec.template.spec.containers.volumeMounts | mountPath | Mount path in the container. In this example, the mount path is **/tmp**. | - +--------------------------------------------------+-----------+---------------------------------------------------------------------------+ - | spec.template.spec.volumes.persistentVolumeClaim | claimName | Name of an existing PVC. | - +--------------------------------------------------+-----------+---------------------------------------------------------------------------+ - - .. note:: - - **spec.template.spec.containers.volumeMounts.name** and **spec.template.spec.volumes.name** must be consistent because they have a mapping relationship. - - Example of mounting an SFS volume to a StatefulSet (PVC template-based, dedicated volume): - - **Example YAML:** - - .. code-block:: - - apiVersion: apps/v1 - kind: StatefulSet - metadata: - name: deploy-sfs-nfs-rw-in - namespace: default - labels: - appgroup: '' - spec: - replicas: 2 - selector: - matchLabels: - app: deploy-sfs-nfs-rw-in - template: - metadata: - labels: - app: deploy-sfs-nfs-rw-in - spec: - containers: - - name: container-0 - image: 'nginx:1.12-alpine-perl' - volumeMounts: - - name: bs-nfs-rw-mountoptionpvc - mountPath: /aaa - imagePullSecrets: - - name: default-secret - volumeClaimTemplates: - - metadata: - name: bs-nfs-rw-mountoptionpvc - annotations: - volume.beta.kubernetes.io/storage-class: nfs-rw - volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxinfs - spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 1Gi - serviceName: wwww - - .. table:: **Table 2** Key parameters - - +-------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | Parent Parameter | Parameter | Description | - +===========================================+=============+====================================================================================================================================+ - | metadata | name | Name of the created workload. | - +-------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | spec.template.spec.containers | image | Image of the workload. | - +-------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | spec.template.spec.containers.volumeMount | mountPath | Mount path in the container. In this example, the mount path is **/tmp**. | - +-------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | spec | serviceName | Service corresponding to the workload. For details about how to create a Service, see :ref:`Creating a StatefulSet `. | - +-------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - - .. note:: - - **spec.template.spec.containers.volumeMounts.name** and **spec.volumeClaimTemplates.metadata.name** must be consistent because they have a mapping relationship. - -#. Run the following command to create the pod: - - **kubectl create -f sfs-deployment-example.yaml** - - After the creation is complete, log in to the CCE console. In the navigation pane, choose **Resource Management** > **Storage** > **SFS**. Click the PVC name. On the PVC details page, you can view the binding relationship between SFS and PVC. diff --git a/umn/source/storage_management_flexvolume_deprecated/using_sfs_file_systems_as_storage_volumes/kubectl_creating_a_pv_from_an_existing_sfs_file_system.rst b/umn/source/storage_management_flexvolume_deprecated/using_sfs_file_systems_as_storage_volumes/kubectl_creating_a_pv_from_an_existing_sfs_file_system.rst deleted file mode 100644 index bed800b..0000000 --- a/umn/source/storage_management_flexvolume_deprecated/using_sfs_file_systems_as_storage_volumes/kubectl_creating_a_pv_from_an_existing_sfs_file_system.rst +++ /dev/null @@ -1,222 +0,0 @@ -:original_name: cce_10_0319.html - -.. _cce_10_0319: - -(kubectl) Creating a PV from an Existing SFS File System -======================================================== - -Notes and Constraints ---------------------- - -The following configuration example applies to clusters of Kubernetes 1.13 or earlier. - -Procedure ---------- - -#. Log in to the SFS console, create a file system, and record the file system ID, shared path, and capacity. - -#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. - -#. Create two YAML files for creating the PV and PVC. Assume that the file names are **pv-sfs-example.yaml** and **pvc-sfs-example.yaml**. - - **touch pv-sfs-example.yaml** **pvc-sfs-example.yaml** - - +----------------------------+------------------------------+-----------------------------------------------------+ - | Kubernetes Cluster Version | Description | YAML Example | - +============================+==============================+=====================================================+ - | 1.11 <= K8s version < 1.13 | Clusters from v1.11 to v1.13 | :ref:`Example YAML ` | - +----------------------------+------------------------------+-----------------------------------------------------+ - | K8s version = 1.9 | Clusters of v1.9 | :ref:`Example YAML ` | - +----------------------------+------------------------------+-----------------------------------------------------+ - - **Clusters from v1.11 to v1.13** - - - .. _cce_10_0319__li1252510101515: - - **Example YAML file for the PV:** - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolume - metadata: - name: pv-sfs-example - annotations: - pv.kubernetes.io/provisioned-by: flexvolume-huawei.com/fuxinfs - spec: - accessModes: - - ReadWriteMany - capacity: - storage: 10Gi - claimRef: - apiVersion: v1 - kind: PersistentVolumeClaim - name: pvc-sfs-example - namespace: default - flexVolume: - driver: huawei.com/fuxinfs - fsType: nfs - options: - deviceMountPath: # Shared storage path of your file. - fsType: nfs - volumeID: f6976f9e-2493-419b-97ca-d7816008d91c - persistentVolumeReclaimPolicy: Delete - storageClassName: nfs-rw - - .. table:: **Table 1** Key parameters - - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+=====================================================================================================================================================================================+ - | driver | Storage driver used to mount the volume. Set the driver to **huawei.com/fuxinfs** for the file system. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | deviceMountPath | Shared path of the file system. | - | | | - | | On the management console, choose **Service List** > **Storage** > **Scalable File Service**. You can obtain the shared path of the file system from the **Mount Address** column. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | volumeID | File system ID. | - | | | - | | To obtain the ID, log in to the CCE console, choose **Resource Management** > **Storage**, click the PVC name in the **SFS** tab page, and copy the PVC ID on the PVC details page. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storage | File system size. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storageClassName | Read/write mode supported by the file system. Currently, **nfs-rw** and **nfs-ro** are supported. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | spec.claimRef.apiVersion | The value is fixed at **v1**. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | spec.claimRef.kind | The value is fixed at **PersistentVolumeClaim**. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | spec.claimRef.name | The value is the same as the name of the PVC created in the next step. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | spec.claimRef.namespace | Namespace of the PVC. The value is the same as the namespace of the PVC created in the next step. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - - **Example YAML file for the PVC:** - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - annotations: - volume.beta.kubernetes.io/storage-class: nfs-rw - volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxinfs - name: pvc-sfs-example - namespace: default - spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 10Gi - volumeName: pv-sfs-example - - .. table:: **Table 2** Key parameters - - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===============================================+===============================================================================================================================================+ - | volume.beta.kubernetes.io/storage-class | Read/write mode supported by the file system. **nfs-rw** and **nfs-ro** are supported. The value must be the same as that of the existing PV. | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ - | volume.beta.kubernetes.io/storage-provisioner | Must be set to **flexvolume-huawei.com/fuxinfs**. | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ - | storage | Storage capacity, in the unit of Gi. The value must be the same as the storage size of the existing PV. | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ - | volumeName | Name of the PV. | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ - - **Clusters of v1.9** - - - .. _cce_10_0319__li10858156164514: - - **Example YAML file for the PV:** - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolume - metadata: - name: pv-sfs-example - namespace: default - spec: - accessModes: - - ReadWriteMany - capacity: - storage: 10Gi - flexVolume: - driver: huawei.com/fuxinfs - fsType: nfs - options: - deviceMountPath: # Shared storage path of your file. - fsType: nfs - kubernetes.io/namespace: default - volumeID: f6976f9e-2493-419b-97ca-d7816008d91c - persistentVolumeReclaimPolicy: Delete - storageClassName: nfs-rw - - .. table:: **Table 3** Key parameters - - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+=====================================================================================================================================================================================+ - | driver | Storage driver used to mount the volume. Set the driver to **huawei.com/fuxinfs** for the file system. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | deviceMountPath | Shared path of the file system. | - | | | - | | On the management console, choose **Service List** > **Storage** > **Scalable File Service**. You can obtain the shared path of the file system from the **Mount Address** column. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | volumeID | File system ID. | - | | | - | | To obtain the ID, log in to the CCE console, choose **Resource Management** > **Storage**, click the PVC name in the **SFS** tab page, and copy the PVC ID on the PVC details page. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storage | File system size. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storageClassName | Read/write mode supported by the file system. Currently, **nfs-rw** and **nfs-ro** are supported. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - - **Example YAML file for the PVC:** - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - annotations: - volume.beta.kubernetes.io/storage-class: nfs-rw - volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxinfs - name: pvc-sfs-example - namespace: default - spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 10Gi - volumeName: pv-sfs-example - volumeNamespace: default - - .. table:: **Table 4** Key parameters - - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===============================================+===============================================================================================================================================+ - | volume.beta.kubernetes.io/storage-class | Read/write mode supported by the file system. **nfs-rw** and **nfs-ro** are supported. The value must be the same as that of the existing PV. | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ - | volume.beta.kubernetes.io/storage-provisioner | The field must be set to **flexvolume-huawei.com/fuxinfs**. | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ - | storage | Storage capacity, in the unit of Gi. The value must be the same as the storage size of the existing PV. | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ - | volumeName | Name of the PV. | - +-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ - - .. note:: - - The VPC to which the file system belongs must be the same as the VPC of the ECS VM to which the workload is planned. - -#. Create the PV. - - **kubectl create -f pv-sfs-example.yaml** - -#. Create the PVC. - - **kubectl create -f pvc-sfs-example.yaml** diff --git a/umn/source/storage_management_flexvolume_deprecated/using_sfs_file_systems_as_storage_volumes/kubectl_creating_a_statefulset_mounted_with_an_sfs_volume.rst b/umn/source/storage_management_flexvolume_deprecated/using_sfs_file_systems_as_storage_volumes/kubectl_creating_a_statefulset_mounted_with_an_sfs_volume.rst deleted file mode 100644 index 2e25ca0..0000000 --- a/umn/source/storage_management_flexvolume_deprecated/using_sfs_file_systems_as_storage_volumes/kubectl_creating_a_statefulset_mounted_with_an_sfs_volume.rst +++ /dev/null @@ -1,92 +0,0 @@ -:original_name: cce_10_0321.html - -.. _cce_10_0321: - -(kubectl) Creating a StatefulSet Mounted with an SFS Volume -=========================================================== - -Scenario --------- - -CCE allows you to use an existing SFS volume to create a StatefulSet through a PersistentVolumeClaim (PVC). - -Notes and Constraints ---------------------- - -The following configuration example applies to clusters of Kubernetes 1.13 or earlier. - -Procedure ---------- - -#. Create an SFS volume by referring to :ref:`(kubectl) Automatically Creating an SFS Volume ` and record the volume name. - -#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. - -#. Create a YAML file for creating the workload. Assume that the file name is **sfs-statefulset-example**.\ **yaml**. - - **touch sfs-statefulset-example.yaml** - - **vi sfs-statefulset-example.yaml** - - **Example YAML:** - - .. code-block:: - - apiVersion: apps/v1 - kind: StatefulSet - metadata: - name: sfs-statefulset-example - namespace: default - spec: - replicas: 2 - selector: - matchLabels: - app: sfs-statefulset-example - serviceName: qwqq - template: - metadata: - annotations: - metrics.alpha.kubernetes.io/custom-endpoints: '[{"api":"","path":"","port":"","names":""}]' - pod.alpha.kubernetes.io/initialized: "true" - labels: - app: sfs-statefulset-example - spec: - affinity: {} - containers: - - image: nginx:latest - name: container-0 - volumeMounts: - - mountPath: /tmp - name: pvc-sfs-example - imagePullSecrets: - - name: default-secret - volumes: - - name: pvc-sfs-example - persistentVolumeClaim: - claimName: cce-sfs-demo - - .. table:: **Table 1** Key parameters - - +--------------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | Parent Parameter | Parameter | Description | - +==================================================+=============+====================================================================================================================================+ - | spec | replicas | Number of pods. | - +--------------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | metadata | name | Name of the created workload. | - +--------------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | spec.template.spec.containers | image | Image used by the workload. | - +--------------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | spec.template.spec.containers.volumeMounts | mountPath | Mount path in the container. | - +--------------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | spec | serviceName | Service corresponding to the workload. For details about how to create a Service, see :ref:`Creating a StatefulSet `. | - +--------------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | spec.template.spec.volumes.persistentVolumeClaim | claimName | Name of an existing PVC. | - +--------------------------------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ - - .. note:: - - **spec.template.spec.containers.volumeMounts.name** and **spec.template.spec.volumes.name** must be consistent because they have a mapping relationship. - -#. Create the StatefulSet. - - **kubectl create -f sfs-statefulset-example .yaml** diff --git a/umn/source/storage_management_flexvolume_deprecated/using_sfs_file_systems_as_storage_volumes/overview.rst b/umn/source/storage_management_flexvolume_deprecated/using_sfs_file_systems_as_storage_volumes/overview.rst deleted file mode 100644 index 58b0917..0000000 --- a/umn/source/storage_management_flexvolume_deprecated/using_sfs_file_systems_as_storage_volumes/overview.rst +++ /dev/null @@ -1,23 +0,0 @@ -:original_name: cce_10_0316.html - -.. _cce_10_0316: - -Overview -======== - -CCE allows you to mount a volume created from a Scalable File Service (SFS) file system to a container to store data persistently. SFS volumes are commonly used in ReadWriteMany scenarios, such as media processing, content management, big data analysis, and workload process analysis. - - -.. figure:: /_static/images/en-us_image_0000001568822709.png - :alt: **Figure 1** Mounting SFS volumes to CCE - - **Figure 1** Mounting SFS volumes to CCE - -Description ------------ - -- **Standard file protocols**: You can mount file systems as volumes to servers, the same as using local directories. -- **Data sharing**: The same file system can be mounted to multiple servers, so that data can be shared. -- **Private network**: User can access data only in private networks of data centers. -- **Capacity and performance**: The capacity of a single file system is high (PB level) and the performance is excellent (ms-level read/write I/O latency). -- **Use cases**: Deployments/StatefulSets in the ReadWriteMany mode and jobs created for high-performance computing (HPC), media processing, content management, web services, big data analysis, and workload process analysis diff --git a/umn/source/storage_management_flexvolume_deprecated/using_sfs_turbo_file_systems_as_storage_volumes/index.rst b/umn/source/storage_management_flexvolume_deprecated/using_sfs_turbo_file_systems_as_storage_volumes/index.rst deleted file mode 100644 index ac171ac..0000000 --- a/umn/source/storage_management_flexvolume_deprecated/using_sfs_turbo_file_systems_as_storage_volumes/index.rst +++ /dev/null @@ -1,20 +0,0 @@ -:original_name: cce_10_0329.html - -.. _cce_10_0329: - -Using SFS Turbo File Systems as Storage Volumes -=============================================== - -- :ref:`Overview ` -- :ref:`(kubectl) Creating a PV from an Existing SFS Turbo File System ` -- :ref:`(kubectl) Creating a Deployment Mounted with an SFS Turbo Volume ` -- :ref:`(kubectl) Creating a StatefulSet Mounted with an SFS Turbo Volume ` - -.. toctree:: - :maxdepth: 1 - :hidden: - - overview - kubectl_creating_a_pv_from_an_existing_sfs_turbo_file_system - kubectl_creating_a_deployment_mounted_with_an_sfs_turbo_volume - kubectl_creating_a_statefulset_mounted_with_an_sfs_turbo_volume diff --git a/umn/source/storage_management_flexvolume_deprecated/using_sfs_turbo_file_systems_as_storage_volumes/kubectl_creating_a_deployment_mounted_with_an_sfs_turbo_volume.rst b/umn/source/storage_management_flexvolume_deprecated/using_sfs_turbo_file_systems_as_storage_volumes/kubectl_creating_a_deployment_mounted_with_an_sfs_turbo_volume.rst deleted file mode 100644 index e9355c9..0000000 --- a/umn/source/storage_management_flexvolume_deprecated/using_sfs_turbo_file_systems_as_storage_volumes/kubectl_creating_a_deployment_mounted_with_an_sfs_turbo_volume.rst +++ /dev/null @@ -1,82 +0,0 @@ -:original_name: cce_10_0333.html - -.. _cce_10_0333: - -(kubectl) Creating a Deployment Mounted with an SFS Turbo Volume -================================================================ - -Scenario --------- - -After an SFS Turbo volume is created or imported to CCE, you can mount the volume to a workload. - -Notes and Constraints ---------------------- - -The following configuration example applies to clusters of Kubernetes 1.13 or earlier. - -Procedure ---------- - -#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. - -#. Run the following commands to configure the **efs-deployment-example.yaml** file, which is used to create a Deployment: - - **touch efs-deployment-example.yaml** - - **vi efs-deployment-example.yaml** - - Example of mounting an SFS Turbo volume to a Deployment (PVC-based, shared volume): - - .. code-block:: - - apiVersion: apps/v1 - kind: Deployment - metadata: - name: efs-deployment-example # Workload name - namespace: default - spec: - replicas: 1 - selector: - matchLabels: - app: efs-deployment-example - template: - metadata: - labels: - app: efs-deployment-example - spec: - containers: - - image: nginx - name: container-0 - volumeMounts: - - mountPath: /tmp # Mount path - name: pvc-efs-example - restartPolicy: Always - imagePullSecrets: - - name: default-secret - volumes: - - name: pvc-efs-example - persistentVolumeClaim: - claimName: pvc-sfs-auto-example # PVC name - - .. table:: **Table 1** Key parameters - - +-----------+---------------------------------------------------------------------------+ - | Parameter | Description | - +===========+===========================================================================+ - | name | Name of the created Deployment. | - +-----------+---------------------------------------------------------------------------+ - | app | Name of the application running in the Deployment. | - +-----------+---------------------------------------------------------------------------+ - | mountPath | Mount path in the container. In this example, the mount path is **/tmp**. | - +-----------+---------------------------------------------------------------------------+ - - .. note:: - - **spec.template.spec.containers.volumeMounts.name** and **spec.template.spec.volumes.name** must be consistent because they have a mapping relationship. - -#. Run the following command to create the pod: - - **kubectl create -f efs-deployment-example.yaml** - - After the creation is complete, choose **Storage** > **SFS Turbo** on the CCE console and click the PVC name. On the PVC details page, you can view the binding relationship between SFS Turbo and PVC. diff --git a/umn/source/storage_management_flexvolume_deprecated/using_sfs_turbo_file_systems_as_storage_volumes/kubectl_creating_a_pv_from_an_existing_sfs_turbo_file_system.rst b/umn/source/storage_management_flexvolume_deprecated/using_sfs_turbo_file_systems_as_storage_volumes/kubectl_creating_a_pv_from_an_existing_sfs_turbo_file_system.rst deleted file mode 100644 index 7892ff7..0000000 --- a/umn/source/storage_management_flexvolume_deprecated/using_sfs_turbo_file_systems_as_storage_volumes/kubectl_creating_a_pv_from_an_existing_sfs_turbo_file_system.rst +++ /dev/null @@ -1,129 +0,0 @@ -:original_name: cce_10_0332.html - -.. _cce_10_0332: - -(kubectl) Creating a PV from an Existing SFS Turbo File System -============================================================== - -Scenario --------- - -CCE allows you to use an existing SFS Turbo file system to create a PersistentVolume (PV). After the creation is successful, you can create a PersistentVolumeClaim (PVC) and bind it to the PV. - -Notes and Constraints ---------------------- - -The following configuration example applies to clusters of Kubernetes 1.13 or earlier. - -Procedure ---------- - -#. Log in to the SFS console, create a file system, and record the file system ID, shared path, and capacity. - -#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. - -#. Create two YAML files for creating the PV and PVC. Assume that the file names are **pv-efs-example.yaml** and **pvc-efs-example.yaml**. - - **touch pv-efs-example.yaml** **pvc-efs-example.yaml** - - - **Example YAML file for the PV:** - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolume - metadata: - name: pv-efs-example - annotations: - pv.kubernetes.io/provisioned-by: flexvolume-huawei.com/fuxiefs - spec: - accessModes: - - ReadWriteMany - capacity: - storage: 100Gi - claimRef: - apiVersion: v1 - kind: PersistentVolumeClaim - name: pvc-efs-example - namespace: default - flexVolume: - driver: huawei.com/fuxiefs - fsType: efs - options: - deviceMountPath: # Shared storage path of your SFS Turbo file. - fsType: efs - volumeID: 8962a2a2-a583-4b7f-bb74-fe76712d8414 - persistentVolumeReclaimPolicy: Delete - storageClassName: efs-standard - - .. table:: **Table 1** Key parameters - - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+=======================================================================================================================================================================================================+ - | driver | Storage driver used to mount the volume. Set it to **huawei.com/fuxiefs**. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | deviceMountPath | Shared path of the SFS Turbo volume. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | volumeID | SFS Turbo volume ID. | - | | | - | | To obtain the ID, log in to the CCE console, choose **Resource Management** > **Storage**, click the PVC name in the **SFS Turbo** tab page, and copy the PVC ID on the PVC details page. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storage | File system size. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storageClassName | Volume type supported by SFS Turbo. The value can be **efs-standard** and **efs-performance**. Currently, SFS Turbo does not support dynamic creation; therefore, this parameter is not used for now. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | spec.claimRef.apiVersion | The value is fixed at **v1**. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | spec.claimRef.kind | The value is fixed at **PersistentVolumeClaim**. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | spec.claimRef.name | The value is the same as the name of the PVC created in the next step. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | spec.claimRef.namespace | The value is the same as the namespace of the PVC created in the next step. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - - **Example YAML file for the PVC:** - - .. code-block:: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - annotations: - volume.beta.kubernetes.io/storage-class: efs-standard - volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxiefs - name: pvc-efs-example - namespace: default - spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 100Gi - volumeName: pv-efs-example - - .. table:: **Table 2** Key parameters - - +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===============================================+==========================================================================================================================================================+ - | volume.beta.kubernetes.io/storage-class | Read/write mode supported by SFS Turbo. The value can be **efs-standard** or **efs-performance**. The value must be the same as that of the existing PV. | - +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ - | volume.beta.kubernetes.io/storage-provisioner | The field must be set to **flexvolume-huawei.com/fuxiefs**. | - +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ - | storage | Storage capacity, in the unit of Gi. The value must be the same as the storage size of the existing PV. | - +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ - | volumeName | Name of the PV. | - +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ - - .. note:: - - The VPC to which the SFS Turbo file system belongs must be the same as the VPC of the ECS VM planned for the workload. Ports 111, 445, 2049, 2051, and 20048 must be enabled in the security groups. - -#. Create the PV. - - **kubectl create -f pv-efs-example.yaml** - -#. Create the PVC. - - **kubectl create -f pvc-efs-example.yaml** diff --git a/umn/source/storage_management_flexvolume_deprecated/using_sfs_turbo_file_systems_as_storage_volumes/kubectl_creating_a_statefulset_mounted_with_an_sfs_turbo_volume.rst b/umn/source/storage_management_flexvolume_deprecated/using_sfs_turbo_file_systems_as_storage_volumes/kubectl_creating_a_statefulset_mounted_with_an_sfs_turbo_volume.rst deleted file mode 100644 index 7d3a0fc..0000000 --- a/umn/source/storage_management_flexvolume_deprecated/using_sfs_turbo_file_systems_as_storage_volumes/kubectl_creating_a_statefulset_mounted_with_an_sfs_turbo_volume.rst +++ /dev/null @@ -1,117 +0,0 @@ -:original_name: cce_10_0334.html - -.. _cce_10_0334: - -(kubectl) Creating a StatefulSet Mounted with an SFS Turbo Volume -================================================================= - -Scenario --------- - -CCE allows you to use an existing SFS Turbo volume to create a StatefulSet. - -Notes and Constraints ---------------------- - -The following configuration example applies to clusters of Kubernetes 1.13 or earlier. - -Procedure ---------- - -#. Create an SFS Turbo volume and record the volume name. - -#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. - -#. Create a YAML file for creating the workload. Assume that the file name is **efs-statefulset-example.yaml**. - - **touch efs-statefulset-example.yaml** - - **vi efs-statefulset-example.yaml** - - **Example YAML:** - - .. code-block:: - - apiVersion: apps/v1 - kind: StatefulSet - metadata: - name: efs-statefulset-example - namespace: default - spec: - replicas: 1 - selector: - matchLabels: - app: efs-statefulset-example - template: - metadata: - annotations: - metrics.alpha.kubernetes.io/custom-endpoints: '[{"api":"","path":"","port":"","names":""}]' - pod.alpha.kubernetes.io/initialized: 'true' - labels: - app: efs-statefulset-example - spec: - containers: - - image: 'nginx:1.0.0' - name: container-0 - resources: - requests: {} - limits: {} - env: - - name: PAAS_APP_NAME - value: efs-statefulset-example - - name: PAAS_NAMESPACE - value: default - - name: PAAS_PROJECT_ID - value: b18296881cc34f929baa8b9e95abf88b - volumeMounts: - - name: efs-statefulset-example - mountPath: /tmp - readOnly: false - subPath: '' - imagePullSecrets: - - name: default-secret - terminationGracePeriodSeconds: 30 - volumes: - - persistentVolumeClaim: - claimName: cce-efs-import-jnr481gm-3y5o - name: efs-statefulset-example - affinity: {} - tolerations: - - key: node.kubernetes.io/not-ready - operator: Exists - effect: NoExecute - tolerationSeconds: 300 - - key: node.kubernetes.io/unreachable - operator: Exists - effect: NoExecute - tolerationSeconds: 300 - podManagementPolicy: OrderedReady - serviceName: test - updateStrategy: - type: RollingUpdate - - .. table:: **Table 1** Key parameters - - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +=============+====================================================================================================================================+ - | replicas | Number of pods. | - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | name | Name of the created workload. | - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | image | Image used by the workload. | - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | mountPath | Mount path in the container. | - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | serviceName | Service corresponding to the workload. For details about how to create a Service, see :ref:`Creating a StatefulSet `. | - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - | claimName | Name of an existing PVC. | - +-------------+------------------------------------------------------------------------------------------------------------------------------------+ - - .. note:: - - **spec.template.spec.containers.volumeMounts.name** and **spec.template.spec.volumes.name** must be consistent because they have a mapping relationship. - -#. Create the StatefulSet. - - **kubectl create -f efs-statefulset-example.yaml** diff --git a/umn/source/storage_management_flexvolume_deprecated/using_sfs_turbo_file_systems_as_storage_volumes/overview.rst b/umn/source/storage_management_flexvolume_deprecated/using_sfs_turbo_file_systems_as_storage_volumes/overview.rst deleted file mode 100644 index a99cb85..0000000 --- a/umn/source/storage_management_flexvolume_deprecated/using_sfs_turbo_file_systems_as_storage_volumes/overview.rst +++ /dev/null @@ -1,23 +0,0 @@ -:original_name: cce_10_0330.html - -.. _cce_10_0330: - -Overview -======== - -CCE allows you to mount a volume created from an SFS Turbo file system to a container to store data persistently. Provisioned on demand and fast, SFS Turbo is suitable for DevOps, container microservices, and enterprise OA scenarios. - - -.. figure:: /_static/images/en-us_image_0000001568902669.png - :alt: **Figure 1** Mounting SFS Turbo volumes to CCE - - **Figure 1** Mounting SFS Turbo volumes to CCE - -Description ------------ - -- **Standard file protocols**: You can mount file systems as volumes to servers, the same as using local directories. -- **Data sharing**: The same file system can be mounted to multiple servers, so that data can be shared. -- **Private network**: User can access data only in private networks of data centers. -- **Data isolation**: The on-cloud storage service provides exclusive cloud file storage, which delivers data isolation and ensures IOPS performance. -- **Use cases**: Deployments/StatefulSets in the ReadWriteMany mode, DaemonSets, and jobs created for high-traffic websites, log storage, DevOps, and enterprise OA applications diff --git a/umn/source/workloads/accessing_a_container.rst b/umn/source/workloads/accessing_a_container.rst index 6fd23a8..b0327ba 100644 --- a/umn/source/workloads/accessing_a_container.rst +++ b/umn/source/workloads/accessing_a_container.rst @@ -8,7 +8,7 @@ Accessing a Container Scenario -------- -If you encounter unexpected problems when using a container, you can log in to the container for debugging. +If you encounter unexpected problems when using a container, you can log in to the container to debug it. Logging In to a Container Using kubectl --------------------------------------- @@ -28,7 +28,7 @@ Logging In to a Container Using kubectl NAME READY STATUS RESTARTS AGE nginx-59d89cb66f-mhljr 1/1 Running 0 11m -#. Query the name of the container in the pod. +#. Query the container name in the pod. .. code-block:: @@ -40,7 +40,7 @@ Logging In to a Container Using kubectl container-1 -#. Run the following command to log in to the container named **container-1** in **nginx-59d89cb66f-mhljrPod**: +#. Run the following command to log in to the **container-1** container in the **nginx-59d89cb66f-mhljr** pod: .. code-block:: diff --git a/umn/source/workloads/configuring_a_container/configuring_an_image_pull_policy.rst b/umn/source/workloads/configuring_a_container/configuring_an_image_pull_policy.rst index 0eb5389..101f23c 100644 --- a/umn/source/workloads/configuring_a_container/configuring_an_image_pull_policy.rst +++ b/umn/source/workloads/configuring_a_container/configuring_an_image_pull_policy.rst @@ -32,7 +32,7 @@ The image pull policy can also be set to **Always**, indicating that the image i imagePullSecrets: - name: default-secret -You can also set the image pull policy when creating a workload on the CCE console. As shown in the following figure, if you select **Always**, the image is always pulled. If you do not select it, the policy will be **IfNotPresent**, which means that the image is not pulled. +You can also set the image pull policy when creating a workload on the CCE console. If you select **Always**, the image is always pulled. If you do not select it, the policy will be **IfNotPresent**, which means that the image is not pulled. .. important:: diff --git a/umn/source/workloads/configuring_a_container/configuring_the_workload_upgrade_policy.rst b/umn/source/workloads/configuring_a_container/configuring_the_workload_upgrade_policy.rst index 9894d82..fbb088d 100644 --- a/umn/source/workloads/configuring_a_container/configuring_the_workload_upgrade_policy.rst +++ b/umn/source/workloads/configuring_a_container/configuring_the_workload_upgrade_policy.rst @@ -15,35 +15,27 @@ You can set different upgrade policies: Upgrade Parameters ------------------ -- **Max. Surge** (maxSurge) - - Specifies the maximum number of pods that can exist over **spec.replicas**. The default value is 25%. For example, if **spec.replicas** is set to **4**, no more than 5 pods can exist during the upgrade process, that is, the upgrade step is 1. The absolute number is calculated from the percentage by rounding up. The value can also be set to an absolute number. - - This parameter is supported only by Deployments. - -- **Max. Unavailable Pods** (maxUnavailable) - - Specifies the maximum number of pods that can be unavailable during the update process. The default value is 25%. For example, if **spec.replicas** is set to **4**, at least 3 pods exist during the upgrade process, that is, the deletion step is 1. The value can also be set to an absolute number. - - This parameter is supported only by Deployments. - -- **Min. Ready Seconds** (minReadySeconds) - - A pod is considered available only when the minimum readiness time is exceeded without any of its containers crashing. The default value is **0** (the pod is considered available immediately after it is ready). - -- **Revision History Limit** (revisionHistoryLimit) - - Specifies the number of old ReplicaSets to retain to allow rollback. These old ReplicaSets consume resources in etcd and crowd the output of **kubectl get rs**. The configuration of each Deployment revision is stored in its ReplicaSets. Therefore, once the old ReplicaSet is deleted, you lose the ability to roll back to that revision of Deployment. By default, 10 old ReplicaSets will be kept, but the ideal value depends on the frequency and stability of the new Deployments. - -- **Max. Upgrade Duration** (progressDeadlineSeconds) - - Specifies the number of seconds that the system waits for a Deployment to make progress before reporting a Deployment progress failure. It is surfaced as a condition with Type=Progressing, Status=False, and Reason=ProgressDeadlineExceeded in the status of the resource. The Deployment controller will keep retrying the Deployment. In the future, once automatic rollback will be implemented, the Deployment controller will roll back a Deployment as soon as it observes such a condition. - - If this parameter is specified, the value of this parameter must be greater than that of **.spec.minReadySeconds**. - -- **Scale-In Time Window** (terminationGracePeriodSeconds) - - Graceful deletion time. The default value is 30 seconds. When a pod is deleted, a SIGTERM signal is sent and the system waits for the applications in the container to terminate. If the application is not terminated within the time specified by **terminationGracePeriodSeconds**, a SIGKILL signal is sent to forcibly terminate the pod. ++------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ +| Parameter | Description | Constraint | ++======================================================+=======================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================+=================================================================+ +| Max. Surge (maxSurge) | Specifies the maximum number of pods that can exist compared with **spec.replicas**. The default value is **25%**. | This parameter is supported only by Deployments and DaemonSets. | +| | | | +| | For example, if **spec.replicas** is set to **4**, a maximum of five pods can exist during the upgrade. That is, the upgrade is performed at a step of 1. During the actual upgrade, the value is converted into a number and rounded up. The value can also be set to an absolute number. | | ++------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ +| Max. Unavailable Pods (maxUnavailable) | Specifies the maximum number of pods that can be unavailable compared with **spec.replicas**. The default value is **25%** | This parameter is supported only by Deployments and DaemonSets. | +| | | | +| | For example, if **spec.replicas** is set to **4**, at least three pods exist during the upgrade. That is, the deletion is performed at a step of 1. The value can also be set to an absolute number. | | ++------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ +| **Min. Ready Seconds** (minReadySeconds) | A pod is considered available only when the minimum readiness time is exceeded without any of its containers crashing. The default value is **0** (the pod is considered available immediately after it is ready). | None | ++------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ +| Revision History Limit (revisionHistoryLimit) | Specifies the number of old ReplicaSets to retain to allow rollback. These old ReplicaSets consume resources in etcd and crowd the output of **kubectl get rs**. The configuration of each Deployment revision is stored in its ReplicaSets. Therefore, once the old ReplicaSet is deleted, you lose the ability to roll back to that revision of Deployment. By default, 10 old ReplicaSets will be kept, but the ideal value depends on the frequency and stability of the new Deployments. | None | ++------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ +| Max. Upgrade Duration (progressDeadlineSeconds) | Specifies the number of seconds that the system waits for a Deployment to make progress before reporting a Deployment progress failure. It is surfaced as a condition with Type=Progressing, Status=False, and Reason=ProgressDeadlineExceeded in the status of the resource. The Deployment controller will keep retrying the Deployment. In the future, once automatic rollback will be implemented, the Deployment controller will roll back a Deployment as soon as it observes such a condition. | None | +| | | | +| | If this parameter is specified, the value of this parameter must be greater than that of **.spec.minReadySeconds**. | | ++------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ +| Scale-In Time Window (terminationGracePeriodSeconds) | Graceful deletion time. The default value is 30 seconds. When a pod is deleted, a SIGTERM signal is sent and the system waits for the applications in the container to terminate. If the application is not terminated within the time specified by **terminationGracePeriodSeconds**, a SIGKILL signal is sent to forcibly terminate the pod. | None | ++------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ Upgrade Example --------------- diff --git a/umn/source/workloads/configuring_a_container/index.rst b/umn/source/workloads/configuring_a_container/index.rst index 8578dea..3eea92b 100644 --- a/umn/source/workloads/configuring_a_container/index.rst +++ b/umn/source/workloads/configuring_a_container/index.rst @@ -5,30 +5,30 @@ Configuring a Container ======================= -- :ref:`Setting Basic Container Information ` -- :ref:`Using a Third-Party Image ` +- :ref:`Configuring Time Zone Synchronization ` +- :ref:`Configuring an Image Pull Policy ` +- :ref:`Using Third-Party Images ` - :ref:`Setting Container Specifications ` - :ref:`Setting Container Lifecycle Parameters ` - :ref:`Setting Health Check for a Container ` - :ref:`Setting an Environment Variable ` -- :ref:`Enabling ICMP Security Group Rules ` -- :ref:`Configuring an Image Pull Policy ` -- :ref:`Configuring Time Zone Synchronization ` - :ref:`Configuring the Workload Upgrade Policy ` - :ref:`Scheduling Policy (Affinity/Anti-affinity) ` +- :ref:`Taints and Tolerations ` +- :ref:`Labels and Annotations ` .. toctree:: :maxdepth: 1 :hidden: - setting_basic_container_information - using_a_third-party_image + configuring_time_zone_synchronization + configuring_an_image_pull_policy + using_third-party_images setting_container_specifications setting_container_lifecycle_parameters setting_health_check_for_a_container setting_an_environment_variable - enabling_icmp_security_group_rules - configuring_an_image_pull_policy - configuring_time_zone_synchronization configuring_the_workload_upgrade_policy scheduling_policy_affinity_anti-affinity + taints_and_tolerations + labels_and_annotations diff --git a/umn/source/workloads/pod_labels_and_annotations.rst b/umn/source/workloads/configuring_a_container/labels_and_annotations.rst similarity index 76% rename from umn/source/workloads/pod_labels_and_annotations.rst rename to umn/source/workloads/configuring_a_container/labels_and_annotations.rst index 47233eb..fe209db 100644 --- a/umn/source/workloads/pod_labels_and_annotations.rst +++ b/umn/source/workloads/configuring_a_container/labels_and_annotations.rst @@ -2,14 +2,16 @@ .. _cce_10_0386: -Pod Labels and Annotations -========================== +Labels and Annotations +====================== Pod Annotations --------------- CCE allows you to add annotations to a YAML file to realize some advanced pod functions. The following table describes the annotations you can add. +.. _cce_10_0386__table194691458405: + .. table:: **Table 1** Pod annotations +----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ @@ -21,15 +23,19 @@ CCE allows you to add annotations to a YAML file to realize some advanced pod fu | | | | | | - Collecting none of the stdout logs: | | | | | | - | | kubernetes.AOM.log.stdout: '[]' | | + | | .. code-block:: | | + | | | | + | | kubernetes.AOM.log.stdout: '[]' | | | | | | | | - Collecting stdout logs of container-1 and container-2: | | | | | | - | | kubernetes.AOM.log.stdout: '["container-1","container-2"]' | | + | | .. code-block:: | | + | | | | + | | kubernetes.AOM.log.stdout: '["container-1","container-2"]' | | +----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ | metrics.alpha.kubernetes.io/custom-endpoints | Parameter for reporting AOM monitoring metrics that you specify. | None | | | | | - | | For details, see :ref:`Custom Monitoring `. | | + | | For details, see :ref:`Monitoring Custom Metrics on AOM `. | | +----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ | kubernetes.io/ingress-bandwidth | Ingress bandwidth of a pod. | None | | | | | @@ -43,9 +49,11 @@ CCE allows you to add annotations to a YAML file to realize some advanced pod fu Pod Labels ---------- -When you create a workload on the console, the following labels are added to the pod by default. The value of **app** is the workload name. You can add labels as required. +When you create a workload on the console, the following labels are added to the pod by default. The value of **app** is the workload name. -The pod labels added here will be added to the **selector.matchLabels** parameter in the workload definition. The following is an example YAML file: +|image1| + +Example YAML: .. code-block:: @@ -62,3 +70,19 @@ The pod labels added here will be added to the **selector.matchLabels** paramete version: v1 spec: ... + +You can also add other labels to the pod for affinity and anti-affinity scheduling. In the following figure, three pod labels (release, env, and role) are defined for workload APP 1, APP 2, and APP 3. The values of these labels vary with workload. + +- APP 1: [release:alpha;env:development;role:frontend] +- APP 2: [release:beta;env:testing;role:frontend] +- APP 3: [release:alpha;env:production;role:backend] + + +.. figure:: /_static/images/en-us_image_0000001647417504.png + :alt: **Figure 1** Label example + + **Figure 1** Label example + +For example, if **key/value** is set to **role/backend**, APP 3 will be selected for affinity scheduling. For details, see :ref:`Workload Affinity (podAffinity) `. + +.. |image1| image:: /_static/images/en-us_image_0000001715625689.png diff --git a/umn/source/workloads/configuring_a_container/scheduling_policy_affinity_anti-affinity.rst b/umn/source/workloads/configuring_a_container/scheduling_policy_affinity_anti-affinity.rst index eff8a90..9c1ed40 100644 --- a/umn/source/workloads/configuring_a_container/scheduling_policy_affinity_anti-affinity.rst +++ b/umn/source/workloads/configuring_a_container/scheduling_policy_affinity_anti-affinity.rst @@ -5,14 +5,85 @@ Scheduling Policy (Affinity/Anti-affinity) ========================================== -A nodeSelector provides a very simple way to constrain pods to nodes with particular labels, as mentioned in :ref:`Creating a DaemonSet `. The affinity and anti-affinity feature greatly expands the types of constraints you can express. +Kubernetes supports node affinity and pod affinity/anti-affinity. You can configure custom rules to achieve affinity and anti-affinity scheduling. For example, you can deploy frontend pods and backend pods together, deploy the same type of applications on a specific node, or deploy different applications on different nodes. -Kubernetes supports node-level and pod-level affinity and anti-affinity. You can configure custom rules to achieve affinity and anti-affinity scheduling. For example, you can deploy frontend pods and backend pods together, deploy the same type of applications on a specific node, or deploy different applications on different nodes. +Kubernetes affinity applies to nodes and pods. + +- :ref:`nodeAffinity `: similar to pod nodeSelector, and they both schedule pods only to the nodes with specified labels. The difference between nodeAffinity and nodeSelector lies in that nodeAffinity features stronger expression than nodeSelector and allows you to specify preferentially selected soft constraints. The two types of node affinity are as follows: + + - requiredDuringSchedulingIgnoredDuringExecution: hard constraint that **must be met**. The scheduler can perform scheduling only when the rule is met. This function is similar to nodeSelector, but it features stronger syntax expression. For details, see :ref:`Node Affinity (nodeAffinity) `. + - preferredDuringSchedulingIgnoredDuringExecution: soft constraint that is **met as much as possible**. The scheduler attempts to find the node that meets the rule. If no matching node is found, the scheduler still schedules the pod. For details, see :ref:`Node Preference Rule `. + +- :ref:`Workload Affinity (podAffinity) `/:ref:`Workload Anti-affinity (podAntiAffinity) `: The nodes to which a pod can be scheduled are determined based on the label of the pod running on a node, but not the label of the node. Similar to node affinity, workload affinity and anti-affinity are also of requiredDuringSchedulingIgnoredDuringExecution and preferredDuringSchedulingIgnoredDuringExecution types. + + .. note:: + + Workload affinity and anti-affinity require a certain amount of computing time, which significantly slows down scheduling in large-scale clusters. Do not enable workload affinity and anti-affinity in a cluster that contains hundreds of nodes. + +You can create the preceding affinity policies on the console. For details, see :ref:`Configuring Scheduling Policies `. + +.. _cce_10_0232__section182211754174317: + +Configuring Scheduling Policies +------------------------------- + +#. Log in to the CCE console. + +#. When creating a workload, click **Scheduling** in the **Advanced Settings** area. + + .. table:: **Table 1** Node affinity settings + + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+===========================================================================================================================================================+ + | Required | Hard constraint, which corresponds to requiredDuringSchedulingIgnoredDuringExecution for specifying the conditions that must be met. | + | | | + | | If multiple rules **that must be met** are added, scheduling will be performed when only one rule is met. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Preferred | Soft constraint, which corresponds to preferredDuringSchedulingIgnoredDuringExecution for specifying the conditions that must be met as many as possible. | + | | | + | | If multiple rules **that must be met as much as possible** are added, scheduling will be performed even if one or none of the rules is met. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+ + +#. Click |image1| under **Node Affinity**, **Workload Affinity**, or **Workload Anti-Affinity** to add scheduling policies. In the dialog box that is displayed, directly add policies. Alternatively, you can specify nodes or AZs to be scheduled on the console. + + Specifying nodes and AZs is also implemented through labels. The console frees you from manually entering node labels. The **kubernetes.io/hostname** label is used when you specify a node, and the **failure-domain.beta.kubernetes.io/zone** label is used when you specify an AZ. + + .. table:: **Table 2** Parameters for configuring the scheduling policy + + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+=========================================================================================================================================+ + | Label | Node label. You can use the default label or customize a label. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ + | Operator | The following relations are supported: **In**, **NotIn**, **Exists**, **DoesNotExist**, **Gt**, and **Lt**. | + | | | + | | - **In**: The label of the affinity or anti-affinity object is in the label value list (**values** field). | + | | - **NotIn**: The label of the affinity or anti-affinity object is not in the label value list (**values** field). | + | | - **Exists**: The affinity or anti-affinity object has a specified label name. | + | | - **DoesNotExist**: The affinity or anti-affinity object does not have the specified label name. | + | | - **Gt**: (available only for node affinity) The label value of the scheduled node is greater than the list value (string comparison). | + | | - **Lt**: (available only for node affinity) The label value of the scheduling node is less than the list value (string comparison). | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ + | Label Value | Label value. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ + | Namespace | This parameter is available only in a workload affinity or anti-affinity scheduling policy. | + | | | + | | Namespace for which the scheduling policy takes effect. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ + | Topology Key | This parameter can be used only in a workload affinity or anti-affinity scheduling policy. | + | | | + | | Select the scope specified by **topologyKey** and then select the content defined by the policy. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ + | Weight | This parameter can be set only in a **Preferred** scheduling policy. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ + +.. _cce_10_0232__section1665272918139: Node Affinity (nodeAffinity) ---------------------------- -Labels are the basis of affinity rules. Check the labels on the nodes in a cluster. +Workload node affinity rules are implemented using node labels. When a node is created in a CCE cluster, certain labels are automatically added. You can run the **kubectl describe node** command to view the labels. The following is an example: .. code-block:: @@ -34,13 +105,13 @@ Labels are the basis of affinity rules. Check the labels on the nodes in a clust os.name=EulerOS_2.0_SP5 os.version=3.10.0-862.14.1.5.h328.eulerosv2r7.x86_64 -These labels are automatically added by CCE during node creation. The following describes a few that are frequently used during scheduling. +In workload scheduling, common node labels are as follows: - **failure-domain.beta.kubernetes.io/region**: region where the node is located. - **failure-domain.beta.kubernetes.io/zone**: availability zone to which the node belongs. - **kubernetes.io/hostname**: host name of the node. -When you deploy pods, you can use a nodeSelector, as described in :ref:`DaemonSet `, to constrain pods to nodes with specific labels. The following example shows how to use a nodeSelector to deploy pods only on the nodes with the **gpu=true** label. +Kubernetes provides the **nodeSelector** field. When creating a workload, you can set this field to specify that the pod can be deployed only on a node with the specific label. The following example shows how to use a nodeSelector to deploy the pod only on the node with the **gpu=true** label. .. code-block:: @@ -53,7 +124,16 @@ When you deploy pods, you can use a nodeSelector, as described in :ref:`DaemonSe gpu: true ... -Node affinity rules can achieve the same results, as shown in the following example. +Node affinity rules can achieve the same results. Compared with nodeSelector, node affinity rules seem more complex, but with a more expressive syntax. You can use the **spec.affinity.nodeAffinity** field to set node affinity. There are two types of node affinity: + +- **requiredDuringSchedulingIgnoredDuringExecution**: Kubernetes cannot schedule the pod unless the rule is met. +- **PreferredDuringSchedulingIgnoredDuringExecution**: Kubernetes tries to find a node that meets the rule. If a matching node is not available, Kubernetes still schedules the pod. + +.. note:: + + In these two types of node affinity, **requiredDuringScheduling** or **preferredDuringScheduling** indicates that the pod can be scheduled to a node only when all the defined rules are met (required). **IgnoredDuringExecution** indicates that if the node label changes after Kubernetes schedules the pod, the pod continues to run and will not be rescheduled. + +The following is an example of setting node affinity: .. code-block:: @@ -95,22 +175,7 @@ Node affinity rules can achieve the same results, as shown in the following exam values: - "true" -Even though the node affinity rule requires more lines, it is more expressive, which will be further described later. - -**requiredDuringSchedulingIgnoredDuringExecution** seems to be complex, but it can be easily understood as a combination of two parts. - -- requiredDuringScheduling indicates that pods can be scheduled to the node only when all the defined rules are met (required). -- IgnoredDuringExecution indicates that pods already running on the node do not need to meet the defined rules. That is, a label on the node is ignored, and pods that require the node to contain that label will not be re-scheduled. - -In addition, the value of **operator** is **In**, indicating that the label value must be in the values list. Other available operator values are as follows: - -- **NotIn**: The label value is not in a list. -- **Exists**: A specific label exists. -- **DoesNotExist**: A specific label does not exist. -- **Gt**: The label value is greater than a specified value (string comparison). -- **Lt**: The label value is less than a specified value (string comparison). - -Note that there is no such thing as nodeAntiAffinity because operators **NotIn** and **DoesNotExist** provide the same function. +In this example, the scheduled node must contain a label with the key named **gpu**. The value of **operator** is to **In**, indicating that the label value must be in the **values** list. That is, the key value of the **gpu** label of the node is **true**. For details about other values of **operator**, see :ref:`Operator Value Description `. Note that there is no such thing as nodeAntiAffinity because operators **NotIn** and **DoesNotExist** provide the same function. The following describes how to check whether the rule takes effect. Assume that a cluster has three nodes. @@ -148,6 +213,8 @@ Create the Deployment. You can find that all pods are deployed on the **192.168. gpu-6df65c44cf-jzjvs 1/1 Running 0 15s 172.16.0.36 192.168.0.212 gpu-6df65c44cf-zv5cl 1/1 Running 0 15s 172.16.0.38 192.168.0.212 +.. _cce_10_0232__section168955237561: + Node Preference Rule -------------------- @@ -239,16 +306,22 @@ From the preceding output, you can find that no pods of the Deployment are sched In the preceding example, the node scheduling priority is as follows. Nodes with both **SSD** and **gpu=true** labels have the highest priority. Nodes with the **SSD** label but no **gpu=true** label have the second priority (weight: 80). Nodes with the **gpu=true** label but no **SSD** label have the third priority. Nodes without any of these two labels have the lowest priority. -.. figure:: /_static/images/en-us_image_0000001569022881.png +.. figure:: /_static/images/en-us_image_0000001695896365.png :alt: **Figure 1** Scheduling priority **Figure 1** Scheduling priority +.. _cce_10_0232__section3218151791419: + Workload Affinity (podAffinity) ------------------------------- Node affinity rules affect only the affinity between pods and nodes. Kubernetes also supports configuring inter-pod affinity rules. For example, the frontend and backend of an application can be deployed together on one node to reduce access latency. There are also two types of inter-pod affinity rules: **requiredDuringSchedulingIgnoredDuringExecution** and **preferredDuringSchedulingIgnoredDuringExecution**. +.. note:: + + For workload affinity, topologyKey cannot be left blank when requiredDuringSchedulingIgnoredDuringExecution and preferredDuringSchedulingIgnoredDuringExecution are used. + Assume that the backend of an application has been created and has the **app=backend** label. .. code-block:: @@ -314,7 +387,7 @@ Deploy the frontend and you can find that the frontend is deployed on the same n frontend-67ff9b7b97-hxm5t 1/1 Running 0 6s 172.16.0.71 192.168.0.100 frontend-67ff9b7b97-z8pdb 1/1 Running 0 6s 172.16.0.72 192.168.0.100 -The **topologyKey** field specifies the selection range. The scheduler selects nodes within the range based on the affinity rule defined. The effect of **topologyKey** is not fully demonstrated in the preceding example because all the nodes have the **kubernetes.io/hostname** label, that is, all the nodes are within the range. +The **topologyKey** field is used to divide topology domains to specify the selection range. If the label keys and values of nodes are the same, the nodes are considered to be in the same topology domain. Then, the contents defined in the following rules are selected. The effect of **topologyKey** is not fully demonstrated in the preceding example because all the nodes have the **kubernetes.io/hostname** label, that is, all the nodes are within the range. To see how **topologyKey** works, assume that the backend of the application has two pods, which are running on different nodes. @@ -341,7 +414,7 @@ Add the **prefer=true** label to nodes **192.168.0.97** and **192.168.0.94**. 192.168.0.94 Ready 91m v1.15.6-r1-20.3.0.2.B001-15.30.2 true 192.168.0.97 Ready 91m v1.15.6-r1-20.3.0.2.B001-15.30.2 true -Define **topologyKey** in the **podAffinity** section as **prefer**. The node topology domains are divided as shown in :ref:`Figure 2 `. +If the **topologyKey** of **podAffinity** is set to **prefer**, the node topology domains are divided as shown in :ref:`Figure 2 `. .. code-block:: @@ -358,12 +431,12 @@ Define **topologyKey** in the **podAffinity** section as **prefer**. The node to .. _cce_10_0232__fig511152614544: -.. figure:: /_static/images/en-us_image_0000001517903036.png - :alt: **Figure 2** Topology domain example +.. figure:: /_static/images/en-us_image_0000001647576692.png + :alt: **Figure 2** Topology domains - **Figure 2** Topology domain example + **Figure 2** Topology domains -During scheduling, node topology domains are divided based on the **prefer** label. In this example, **192.168.0.97** and **192.168.0.94** are divided into the same topology domain. If pods with the **app=backend** label run in **192.168.0.97**, all frontend pods are deployed in **192.168.0.97** or **192.168.0.94**. +During scheduling, node topology domains are divided based on the **prefer** label. In this example, **192.168.0.97** and **192.168.0.94** are divided into the same topology domain. If a pod with the **app=backend** label runs in the topology domain, even if not all nodes in the topology domain run the pod with the **app=backend** label (in this example, only the **192.168.0.97** node has such a pod), **frontend** is also deployed in this topology domain (**192.168.0.97** or **192.168.0.94**). .. code-block:: @@ -378,12 +451,18 @@ During scheduling, node topology domains are divided based on the **prefer** lab frontend-67ff9b7b97-hxm5t 1/1 Running 0 6s 172.16.0.71 192.168.0.97 frontend-67ff9b7b97-z8pdb 1/1 Running 0 6s 172.16.0.72 192.168.0.97 +.. _cce_10_0232__section59542620588: + Workload Anti-Affinity (podAntiAffinity) ---------------------------------------- Unlike the scenarios in which pods are preferred to be scheduled onto the same node, sometimes, it could be the exact opposite. For example, if certain pods are deployed together, they will affect the performance. -In the following example, an anti-affinity rule is defined. This rule indicates that node topology domains are divided based on the **kubernetes.io/hostname** label. If a pod with the **app=frontend** label already exists on a node in the topology domain, pods with the same label cannot be scheduled to other nodes in the topology domain. +.. note:: + + For workload anti-affinity, when requiredDuringSchedulingIgnoredDuringExecution is used, the default access controller LimitPodHardAntiAffinityTopology of Kubernetes requires that topologyKey can only be **kubernetes.io/hostname**. To use other custom topology logic, modify or disable the access controller. + +The following is an example of defining an anti-affinity rule. This rule divides node topology domains by the **kubernetes.io/hostname** label. If a pod with the **app=frontend** label already exists on a node in the topology domain, pods with the same label cannot be scheduled to other nodes in the topology domain. .. code-block:: @@ -418,7 +497,7 @@ In the following example, an anti-affinity rule is defined. This rule indicates affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - - topologyKey: kubernetes.io/hostname # Node topology domain + - topologyKey: kubernetes.io/hostname # Topology domain of the node labelSelector: # Pod label matching rule matchExpressions: - key: app @@ -426,7 +505,7 @@ In the following example, an anti-affinity rule is defined. This rule indicates values: - frontend -Create an anti-affinity rule and view the deployment result. In the example, node topology domains are divided by the **kubernetes.io/hostname** label. Among nodes with the **kubernetes.io/hostname** label, the label value of each node is different. Therefore, there is only one node in a topology domain. If a frontend pod already exists in a topology (a node in this example), the same pods will not be scheduled to this topology. In this example, there are only four nodes. Therefore, another pod is pending and cannot be scheduled. +Create an anti-affinity rule and view the deployment result. In the example, node topology domains are divided by the **kubernetes.io/hostname** label. The label values of nodes with the **kubernetes.io/hostname** label are different, so there is only one node in a topology domain. If a **frontend** pod already exists in a topology domain, pods with the same label will not be scheduled to the topology domain. In this example, there are only four nodes. Therefore, there is one pod which is in the **Pending** state and cannot be scheduled. .. code-block:: @@ -441,54 +520,18 @@ Create an anti-affinity rule and view the deployment result. In the example, nod frontend-6f686d8d87-q7cfq 1/1 Running 0 18s 172.16.0.47 192.168.0.212 frontend-6f686d8d87-xl8hx 1/1 Running 0 18s 172.16.0.23 192.168.0.94 -Configuring Scheduling Policies -------------------------------- +.. _cce_10_0232__section333404214910: -#. Log in to the CCE console. +Operator Value Description +-------------------------- -#. When creating a workload, click **Scheduling** in the **Advanced Settings** area. +You can use the **operator** field to set the logical relationship of the usage rule. The value of **operator** can be: - .. table:: **Table 1** Node affinity settings +- **In**: The label of the affinity or anti-affinity object is in the label value list (**values** field). +- **NotIn**: The label of the affinity or anti-affinity object is not in the label value list (**values** field). +- **Exists**: The affinity or anti-affinity object has a specified label name. +- **DoesNotExist**: The affinity or anti-affinity object does not have the specified label name. +- **Gt**: (available only for node affinity) The label value of the scheduled node is greater than the list value (string comparison). +- **Lt**: (available only for node affinity) The label value of the scheduling node is less than the list value (string comparison). - +-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===========+===========================================================================================================================================================================================================================================================================+ - | Required | This is a hard rule that must be met for scheduling. It corresponds to **requiredDuringSchedulingIgnoredDuringExecution** in Kubernetes. Multiple required rules can be set, and scheduling will be performed if only one of them is met. | - +-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Preferred | This is a soft rule specifying preferences that the scheduler will try to enforce but will not guarantee. It corresponds to **preferredDuringSchedulingIgnoredDuringExecution** in Kubernetes. Scheduling is performed when one rule is met or none of the rules are met. | - +-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -#. Under **Node Affinity**, **Workload Affinity**, and **Workload Anti-Affinity**, click |image1| to add scheduling policies. In the dialog box displayed, add a policy directly or by specifying a node or an AZ. - - Specifying a node or an AZ is essentially implemented through labels. The **kubernetes.io/hostname** label is used when you specify a node, and the **failure-domain.beta.kubernetes.io/zone** label is used when you specify an AZ. - - .. table:: **Table 2** Scheduling policy configuration - - +-----------------------------------+------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+============================================================================================================+ - | Label | Node label. You can use the default label or customize a label. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------+ - | Operator | The following relations are supported: **In**, **NotIn**, **Exists**, **DoesNotExist**, **Gt**, and **Lt** | - | | | - | | - **In**: A label exists in the label list. | - | | - **NotIn**: A label does not exist in the label list. | - | | - **Exists**: A specific label exists. | - | | - **DoesNotExist**: A specific label does not exist. | - | | - **Gt**: The label value is greater than a specified value (string comparison). | - | | - **Lt**: The label value is less than a specified value (string comparison). | - +-----------------------------------+------------------------------------------------------------------------------------------------------------+ - | Label Value | Label value. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------+ - | Namespace | This parameter is available only in a workload affinity or anti-affinity scheduling policy. | - | | | - | | Namespace for which the scheduling policy takes effect. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------+ - | Topology Key | This parameter can be used only in a workload affinity or anti-affinity scheduling policy. | - | | | - | | Select the scope specified by **topologyKey** and then select the content defined by the policy. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------+ - | Weight | This parameter can be set only in a **Preferred** scheduling policy. | - +-----------------------------------+------------------------------------------------------------------------------------------------------------+ - -.. |image1| image:: /_static/images/en-us_image_0000001518062612.png +.. |image1| image:: /_static/images/en-us_image_0000001647576696.png diff --git a/umn/source/workloads/configuring_a_container/setting_an_environment_variable.rst b/umn/source/workloads/configuring_a_container/setting_an_environment_variable.rst index d2c21ee..3c33fec 100644 --- a/umn/source/workloads/configuring_a_container/setting_an_environment_variable.rst +++ b/umn/source/workloads/configuring_a_container/setting_an_environment_variable.rst @@ -20,22 +20,31 @@ The function of setting environment variables on CCE is the same as that of spec Environment variables can be set in the following modes: -- **Custom** -- **Added from ConfigMap**: Import all keys in a ConfigMap as environment variables. -- **Added from ConfigMap key**: Import a key in a ConfigMap as the value of an environment variable. For example, if you import **configmap_value** of **configmap_key** in a ConfigMap as the value of environment variable **key1**, an environment variable named **key1** with its value **is configmap_value** exists in the container. +- **Custom**: Enter the environment variable name and parameter value. +- **Added from ConfigMap key**: Import all keys in a ConfigMap as environment variables. +- **Added from ConfigMap**: Import a key in a ConfigMap as the value of an environment variable. As shown in :ref:`Figure 1 `, if you import **configmap_value** of **configmap_key** in a ConfigMap as the value of environment variable **key1**, an environment variable named **key1** whose value is **configmap_value** exists in the container. - **Added from secret**: Import all keys in a secret as environment variables. -- **Added from secret key**: Import the value of a key in a secret as the value of an environment variable. For example, if you import **secret_value** of **secret_key** in secret **secret-example** as the value of environment variable **key2**, an environment variable named **key2** with its value **secret_value** exists in the container. -- **Variable value/reference**: Use the field defined by a pod as the value of the environment variable, for example, the pod name. -- **Resource Reference**: Use the field defined by a container as the value of the environment variable, for example, the CPU limit of the container. +- **Added from secret key**: Import the value of a key in a secret as the value of an environment variable. As shown in :ref:`Figure 1 `, if you import **secret_value** of **secret_key** in secret **secret-example** as the value of environment variable **key2**, an environment variable named **key2** whose value is **secret_value** exists in the container. +- **Variable value/reference**: Use the field defined by a pod as the value of the environment variable. As shown in :ref:`Figure 1 `, if the pod name is imported as the value of environment variable **key3**, an environment variable named **key3** exists in the container and its value is the pod name. +- **Resource Reference**: The value of **Request** or **Limit** defined by the container is used as the value of the environment variable. As shown in :ref:`Figure 1 `, if you import the CPU limit of container-1 as the value of environment variable **key4**, an environment variable named **key4** exists in the container and its value is the CPU limit of container-1. Adding Environment Variables ---------------------------- -#. Log in to the CCE console. When creating a workload, select **Environment Variables** under **Container Settings**. +#. Log in to the CCE console. -#. Set environment variables. +#. Click the cluster name to go to the cluster console, choose **Workloads** in the navigation pane, and click the **Create Workload** in the upper right corner. - |image1| +#. When creating a workload, modify the container information in the **Container Settings** area and click the **Environment Variables** tab. + +#. Configure environment variables. + + .. _cce_10_0113__fig164568529317: + + .. figure:: /_static/images/en-us_image_0000001695896581.png + :alt: **Figure 1** Configuring environment variables + + **Figure 1** Configuring environment variables YAML Example ------------ @@ -138,5 +147,3 @@ The environment variables in the pod are as follows: key4=1 # limits.cpu defined by container1. The value is rounded up, in unit of cores. configmap_key=configmap_value # Added from ConfigMap. The key value in the original ConfigMap key is directly imported. secret_key=secret_value # Added from key. The key value in the original secret is directly imported. - -.. |image1| image:: /_static/images/en-us_image_0000001569022913.png diff --git a/umn/source/workloads/configuring_a_container/setting_basic_container_information.rst b/umn/source/workloads/configuring_a_container/setting_basic_container_information.rst deleted file mode 100644 index 57a934d..0000000 --- a/umn/source/workloads/configuring_a_container/setting_basic_container_information.rst +++ /dev/null @@ -1,46 +0,0 @@ -:original_name: cce_10_0396.html - -.. _cce_10_0396: - -Setting Basic Container Information -=================================== - -A workload is an abstract model of a group of pods. One pod can encapsulate one or more containers. You can click **Add Container** in the upper right corner to add multiple container images and set them separately. - -.. table:: **Table 1** Image parameters - - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Parameter | Description | - +===================================+=====================================================================================================================================================================================================================================================================================+ - | Container Name | Name the container. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Image Name | Click **Select Image** and select the image used by the container. | - | | | - | | If you need to use a third-party image, see :ref:`Using a Third-Party Image `. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Image Tag | Select the image tag to be deployed. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Pull Policy | Image update or pull policy. If you select **Always**, the image is pulled from the image repository each time. If you do not select **Always**, the existing image of the node is preferentially used. If the image does not exist, the image is pulled from the image repository. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | CPU Quota | - **Request**: minimum number of CPU cores required by a container. The default value is 0.25 cores. | - | | - **Limit**: maximum number of CPU cores available for a container. Do not leave **Limit** unspecified. Otherwise, intensive use of container resources will occur and your workload may exhibit unexpected behavior. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Memory Quota | - **Request**: minimum amount of memory required by a container. The default value is 512 MiB. | - | | - **Limit**: maximum amount of memory available for a container. When memory usage exceeds the specified memory limit, the container will be terminated. | - | | | - | | For more information about **Request** and **Limit**, see :ref:`Setting Container Specifications `. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | GPU Quota | It is configurable only when the cluster contains GPU nodes. | - | | | - | | - **All**: The GPU is not used. | - | | - **Dedicated**: GPU resources are exclusively used by the container. | - | | - **Shared**: percentage of GPU resources used by the container. For example, if this parameter is set to **10%**, the container uses 10% of GPU resources. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Privileged Container | Programs in a privileged container have certain privileges. | - | | | - | | If **Privileged Container** is enabled, the container is assigned privileges. For example, privileged containers can manipulate network devices on the host machine and modify kernel parameters. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Init Container | Indicates whether to use the container as an init container. | - | | | - | | An init container is a special container that run before app containers in a pod. For details, see `Init Container `__. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/workloads/configuring_a_container/setting_container_lifecycle_parameters.rst b/umn/source/workloads/configuring_a_container/setting_container_lifecycle_parameters.rst index 1700061..cfd2795 100644 --- a/umn/source/workloads/configuring_a_container/setting_container_lifecycle_parameters.rst +++ b/umn/source/workloads/configuring_a_container/setting_container_lifecycle_parameters.rst @@ -51,7 +51,7 @@ If the commands and arguments used to run a container are set during application +===================================+=============================================================================================================================================+ | Command | Enter an executable command, for example, **/run/server**. | | | | - | | If there are multiple commands, separate them with spaces. If the command contains a space, you need to add a quotation mark (""). | + | | If there are multiple executable commands, write them in different lines. | | | | | | .. note:: | | | | @@ -92,7 +92,7 @@ Post-Start Processing | | | | | - **Path**: (optional) request URL. | | | - **Port**: (mandatory) request port. | - | | - **Host**: (optional) IP address of the request. The default value is the IP address of the node where the container resides. | + | | - **Host**: (optional) requested host IP address. The default value is the IP address of the pod. | +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. _cce_10_0105__section2334114473712: @@ -125,7 +125,7 @@ Pre-Stop Processing | | | | | - **Path**: (optional) request URL. | | | - **Port**: (mandatory) request port. | - | | - **Host**: (optional) IP address of the request. The default value is the IP address of the node where the container resides. | + | | - **Host**: (optional) requested host IP address. The default value is the IP address of the pod. | +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ Example YAML @@ -154,19 +154,19 @@ In the following configuration file, the **postStart** command is defined to run containers: - image: nginx command: - - sleep 3600 #Startup command + - sleep 3600 # Startup command imagePullPolicy: Always lifecycle: postStart: exec: command: - /bin/bash - - install.sh #Post-start command + - install.sh # Post-start command preStop: exec: command: - /bin/bash - - uninstall.sh #Pre-stop command + - uninstall.sh # Pre-stop command name: nginx imagePullSecrets: - name: default-secret diff --git a/umn/source/workloads/configuring_a_container/setting_container_specifications.rst b/umn/source/workloads/configuring_a_container/setting_container_specifications.rst index c78d517..f951f3d 100644 --- a/umn/source/workloads/configuring_a_container/setting_container_specifications.rst +++ b/umn/source/workloads/configuring_a_container/setting_container_specifications.rst @@ -8,15 +8,19 @@ Setting Container Specifications Scenario -------- -CCE allows you to set resource limits for added containers during workload creation. You can apply for and limit the CPU and memory quotas used by each pod in a workload. +CCE allows you to set resource requirements and limits, such as CPU and RAM, for added containers during workload creation. Kubernetes also allows using YAML to set requirements of other resource types. -Meanings --------- +Request and Limit +----------------- For **CPU** and **Memory**, the meanings of **Request** and **Limit** are as follows: -- **Request**: Schedules the pod to the node that meets the requirements for workload deployment. -- **Limit**: Limits the resources used by the workload. +- **Request**: The system schedules a pod to the node that meets the requirements for workload deployment based on the request value. +- **Limit**: The system limits the resources used by the workload based on the limit value. + +If a node has sufficient resources, the pod on this node can use more resources than requested, but no more than limited. + +For example, if you set the memory request of a container to 1 GiB and the limit value to 2 GiB, a pod is scheduled to a node with 8 GiB CPUs with no other pod running. In this case, the pod can use more than 1 GiB memory when the load is heavy, but the memory usage cannot exceed 2 GiB. If a process in a container attempts to use more than 2 GiB resources, the system kernel attempts to terminate the process. As a result, an out of memory (OOM) error occurs. .. note:: @@ -25,9 +29,9 @@ For **CPU** and **Memory**, the meanings of **Request** and **Limit** are as fol Configuration Description ------------------------- -In actual production services, the recommended ratio of **Request** to **Limit** is about 1:1.5. For some sensitive services, the recommended ratio is 1:1. If the **Request** is too small and the **Limit** is too large, node resources are overcommitted. During service peaks, the memory or CPU of a node may be used up. As a result, the node is unavailable. +In real-world scenarios, the recommended ratio of **Request** to **Limit** is about 1:1.5. For some sensitive services, the recommended ratio is 1:1. If the **Request** is too small and the **Limit** is too large, node resources are oversubscribed. During service peaks, the memory or CPU of a node may be used up. As a result, the node is unavailable. -- CPU quotas: +- CPU quota: The unit of CPU resources is core, which can be expressed by quantity or an integer suffixed with the unit (m). For example, 0.1 core in the quantity expression is equivalent to 100m in the expression. However, Kubernetes does not allow CPU resources whose precision is less than 1m. .. table:: **Table 1** Description of CPU quotas @@ -43,7 +47,7 @@ In actual production services, the recommended ratio of **Request** to **Limit** Actual available CPU of a node >= Sum of CPU limits of all containers on the current node >= Sum of CPU requests of all containers on the current node. You can view the actual available CPUs of a node on the CCE console (**Resource Management** > **Nodes** > **Allocatable**). -- Memory quotas: +- Memory quota: The default unit of memory resources is byte. You can also use an integer with the unit suffix, for example, 100 Mi. Note that the unit is case-sensitive. .. table:: **Table 2** Description of memory quotas @@ -61,19 +65,30 @@ In actual production services, the recommended ratio of **Request** to **Limit** .. note:: - The allocatable resources are calculated based on the resource request value (**Request**), which indicates the upper limit of resources that can be requested by pods on this node, but does not indicate the actual available resources of the node. The calculation formula is as follows: + The allocatable resources are calculated based on the resource request value (**Request**), which indicates the upper limit of resources that can be requested by pods on this node, but does not indicate the actual available resources of the node (for details, see :ref:`Example of CPU and Memory Quota Usage `). The calculation formula is as follows: - Allocatable CPU = Total CPU - Requested CPU of all pods - Reserved CPU for other resources - Allocatable memory = Total memory - Requested memory of all pods - Reserved memory for other resources -Example -------- +.. _cce_10_0163__section17887209103612: -Assume that a cluster contains a node with 4 cores and 8 GB. A workload containing two pods has been deployed on the cluster. The resources of the two pods (pods 1 and 2) are as follows: {CPU request, CPU limit, memory request, memory limit} = {1 core, 2 cores, 2 GB, 2 GB}. +Example of CPU and Memory Quota Usage +------------------------------------- + +Assume that a cluster contains a node with 4 CPU cores and 8 GiB memory. Two pods (pod 1 and pod 2) have been deployed on the cluster. Pod 1 oversubscribes resources (that is **Limit** > **Request**). The specifications of the two pods are as follows. + +===== =========== ========= ============== ============ +Pod CPU Request CPU Limit Memory Request Memory Limit +===== =========== ========= ============== ============ +Pod 1 1 core 2 cores 1 GiB 4 GiB +Pod 2 2 cores 2 cores 2 GiB 2 GiB +===== =========== ========= ============== ============ The CPU and memory usage of the node is as follows: -- Allocatable CPU = 4 cores - (1 core requested by pod 1 + 1 core requested by pod 2) = 2 cores -- Allocatable memory = 8 GB - (2 GB requested by pod 1 + 2 GB requested by pod 2) = 4 GB +- Allocatable CPUs = 4 cores - (1 core requested by pod 1 + 2 cores requested by pod 2) = 1 core +- Allocatable memory = 8 GiB - (1 GiB requested by pod 1 + 2 GiB requested by pod 2) = 5 GiB -Therefore, the remaining 2 cores and 4 GB can be used by the next new pod. +In this case, the remaining 1 core 5 GiB can be used by the next new pod. + +If pod 1 is under heavy load during peak hours, it will use more CPUs and memory within the limit. Therefore, the actual allocatable resources are fewer than 1 core 5 GiB. diff --git a/umn/source/workloads/configuring_a_container/setting_health_check_for_a_container.rst b/umn/source/workloads/configuring_a_container/setting_health_check_for_a_container.rst index 9661a4c..468cfd1 100644 --- a/umn/source/workloads/configuring_a_container/setting_health_check_for_a_container.rst +++ b/umn/source/workloads/configuring_a_container/setting_health_check_for_a_container.rst @@ -14,14 +14,14 @@ Kubernetes provides the following health check probes: - **Liveness probe** (livenessProbe): checks whether a container is still alive. It is similar to the **ps** command that checks whether a process exists. If the liveness check of a container fails, the cluster restarts the container. If the liveness check is successful, no operation is executed. - **Readiness probe** (readinessProbe): checks whether a container is ready to process user requests. Upon that the container is detected unready, service traffic will not be directed to the container. It may take a long time for some applications to start up before they can provide services. This is because that they need to load disk data or rely on startup of an external module. In this case, the application process is running, but the application cannot provide services. To address this issue, this health check probe is used. If the container readiness check fails, the cluster masks all requests sent to the container. If the container readiness check is successful, the container can be accessed. -- **Startup probe** (startupProbe): checks when a container application has started. If such a probe is configured, it disables liveness and readiness checks until it succeeds, ensuring that those probes do not interfere with the application startup. This can be used to perform liveness checks on slow starting containers to prevent them from getting terminated by the kubelet before they are started. +- **Startup probe** (startupProbe): checks when a containerized application has started. If such a probe is configured, it disables liveness and readiness checks until it succeeds, ensuring that those probes do not interfere with the application startup. This can be used to adopt liveness checks on slow starting containers, avoiding them getting terminated by the kubelet before they are started. Check Method ------------ - **HTTP request** - This health check mode is applicable to containers that provide HTTP/HTTPS services. The cluster periodically initiates an HTTP/HTTPS GET request to such containers. If the return code of the HTTP/HTTPS response is within 200-399, the probe is successful. Otherwise, the probe fails. In this health check mode, you must specify a container listening port and an HTTP/HTTPS request path. + This health check mode applies to containers that provide HTTP/HTTPS services. The cluster periodically initiates an HTTP/HTTPS GET request to such containers. If the return code of the HTTP/HTTPS response is within 200-399, the probe is successful. Otherwise, the probe fails. In this health check mode, you must specify a container listening port and an HTTP/HTTPS request path. For example, for a container that provides HTTP services, the HTTP check path is **/health-check**, the port is 80, and the host address is optional (which defaults to the container IP address). Here, 172.16.0.186 is used as an example, and we can get such a request: GET http://172.16.0.186:80/health-check. The cluster periodically initiates this request to the container. You can also add one or more headers to an HTTP request. For example, set the request header name to **Custom-Header** and the corresponding value to **example**. @@ -29,7 +29,7 @@ Check Method For a container that provides TCP communication services, the cluster periodically establishes a TCP connection to the container. If the connection is successful, the probe is successful. Otherwise, the probe fails. In this health check mode, you must specify a container listening port. - For example, if you have a Nginx container with service port 80, after you specify TCP port 80 for container listening, the cluster will periodically initiate a TCP connection to port 80 of the container. If the connection is successful, the probe is successful. Otherwise, the probe fails. + For example, if you have an Nginx container with service port 80, after you specify TCP port 80 for container listening, the cluster will periodically initiate a TCP connection to port 80 of the container. If the connection is successful, the probe is successful. Otherwise, the probe fails. - **CLI** @@ -39,7 +39,7 @@ Check Method - For a TCP port, you can use a program script to connect to a container port. If the connection is successful, the script returns **0**. Otherwise, the script returns **-1**. - - For an HTTP request, you can run the **wget** command to check the container. + - For an HTTP request, you can use the script command to run the **wget** command to detect the container. **wget http://127.0.0.1:80/health-check** @@ -52,7 +52,7 @@ Check Method - **gRPC Check** - gRPC checks can configure startup, liveness, and readiness probes for your gRPC application without exposing any HTTP endpoint, nor do you need an executable. Kubernetes can connect to your workload via gRPC and query its status. + gRPC checks can configure startup, liveness, and readiness probes for your gRPC application without exposing any HTTP endpoint, nor do you need an executable. Kubernetes can connect to your workload via gRPC and obtain its status. .. important:: diff --git a/umn/source/workloads/configuring_a_container/taints_and_tolerations.rst b/umn/source/workloads/configuring_a_container/taints_and_tolerations.rst new file mode 100644 index 0000000..7369bd3 --- /dev/null +++ b/umn/source/workloads/configuring_a_container/taints_and_tolerations.rst @@ -0,0 +1,73 @@ +:original_name: cce_10_0728.html + +.. _cce_10_0728: + +Taints and Tolerations +====================== + +Tolerations allow the scheduler to schedule pods to nodes with target taints. Tolerances work with :ref:`node taints `. Each node allows one or more taints. If no tolerance is configured for a pod, the scheduler will schedule the pod based on node taint policies to prevent the pod from being scheduled to an inappropriate node. + +The following table shows how taint policies and tolerations affect pod running. + ++-----------------------+-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Taint Policy | No Taint Toleration Configured | Taint Toleration Configured | ++=======================+=========================================================================+======================================================================================================================================================================================+ +| NoExecute | - Pods running on the node will be evicted immediately. | - If the tolerance time window **tolerationSeconds** is not specified, pods can run on this node all the time. | +| | - Inactive pods will not scheduled to the node. | - If the tolerance time window **tolerationSeconds** is specified, pods still run on the node with taints within the time window. After the time expires, the pods will be evicted. | ++-----------------------+-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| PreferNoSchedule | - Pods running on the node will not be evicted. | Pods can run on this node all the time. | +| | - Inactive pods will not scheduled to the node **to the best extend**. | | ++-----------------------+-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| NoSchedule | - Pods running on the node will not be evicted. | Pods can run on this node all the time. | +| | - Inactive pods will not scheduled to the node. | | ++-----------------------+-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Configuring Tolerance Policies on the Console +--------------------------------------------- + +#. Log in to the CCE console. +#. When creating a workload, click **Toleration** in the **Advanced Settings** area. +#. Add a taint tolerance policy. + + .. table:: **Table 1** Parameters for configuring a taint tolerance policy + + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+=======================================================================================================================================================================================================+ + | Taint key | Key of a node taint | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Operator | - **Equal**: **Exact match** for the specified taint key (mandatory) and taint value. If the taint value is left blank, all taints with the key the same as the specified taint key will be matched. | + | | - **Exists**: **matches only** the nodes with the specified taint key. In this case, the taint value cannot be specified. If the taint key is left blank, all taints will be tolerated. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Taint value | Taint value specified if the operator is set to **Equal**. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Taint Policy | - **All**: All taint policies are matched. | + | | - **NoSchedule**: Only the **NoSchedule** taint is matched. | + | | - **PreferNoSchedule**: Only the **PreferNoSchedule** taint is matched. | + | | - **NoExecute**: Only the **NoExecute** taint is matched. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Toleration Time Window | **tolerationSeconds**, which is configurable only when **Taint Policy** is set to **NoExecute**. | + | | | + | | Within the tolerance time window, pods still run on the node with taints. After the time expires, the pods will be evicted. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Default Tolerance Policy +------------------------ + +Kubernetes automatically adds tolerances for the **node.kubernetes.io/not-ready** and **node.kubernetes.io/unreachable** taints to pods, and sets the tolerance time window (**tolerationSeconds**) to 300s. These default tolerance policies indicate that when either of the preceding taint is added to the node where pods are running, the pods can still run on the node for 5 minutes. + +.. note:: + + When a DaemonSet pod is created, no tolerance time window will be specified for the tolerances automatically added for the preceding taints. When either of the preceding taints is added to the node where the DaemonSet pod is running, the DaemonSet pod will never be evicted. + +.. code-block:: + + tolerations: + - key: node.kubernetes.io/not-ready + operator: Exists + effect: NoExecute + tolerationSeconds: 300 + - key: node.kubernetes.io/unreachable + operator: Exists + effect: NoExecute + tolerationSeconds: 300 diff --git a/umn/source/workloads/configuring_a_container/using_a_third-party_image.rst b/umn/source/workloads/configuring_a_container/using_third-party_images.rst similarity index 56% rename from umn/source/workloads/configuring_a_container/using_a_third-party_image.rst rename to umn/source/workloads/configuring_a_container/using_third-party_images.rst index 026dac6..43e94cf 100644 --- a/umn/source/workloads/configuring_a_container/using_a_third-party_image.rst +++ b/umn/source/workloads/configuring_a_container/using_third-party_images.rst @@ -2,15 +2,15 @@ .. _cce_10_0009: -Using a Third-Party Image -========================= +Using Third-Party Images +======================== Scenario -------- CCE allows you to create workloads using images pulled from third-party image repositories. -Generally, a third-party image repository can be accessed only after authentication (using your account and password). CCE uses the secret-based authentication to pull images. Therefore, you need to create a secret for an image repository before pulling images from the repository. +Generally, a third-party image repository can be accessed only after authentication (using your account and password). CCE uses the secret-based authentication to pull images. Therefore, create a secret for an image repository before pulling images from the repository. Prerequisites ------------- @@ -24,11 +24,11 @@ Using the Console Create a secret for accessing a third-party image repository. - Click the cluster name and access the cluster console. In the navigation pane, choose **ConfigMaps and Secrets**. On the **Secrets** tab page, click **Create Secret** in the upper right corner. Set **Secret Type** to **kubernetes.io/dockerconfigjson**. For details, see :ref:`Creating a Secret `. + Click the cluster name to access the cluster console. In the navigation pane, choose **ConfigMaps and Secrets**. On the **Secrets** tab, click **Create Secret** in the upper right corner. Set **Secret Type** to **kubernetes.io/dockerconfigjson**. For details, see :ref:`Creating a Secret `. Enter the user name and password used to access the third-party image repository. -#. When creating a workload, you can enter a private image path in the format of **domainname/namespace/imagename:tag** in **Image Name** and select the key created in :ref:`1 `. +#. When creating a workload, you can enter a private image path in the format of *domainname/namespace/imagename:tag* for **Image Name** and select the key created in :ref:`1 ` for **Image Access Credential**. #. Set other parameters and click **Create Workload**. @@ -37,13 +37,13 @@ Using kubectl #. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. -#. Create a secret of the dockercfg type using kubectl. +#. Use kubectl to create a secret of the kubernetes.io/dockerconfigjson. .. code-block:: - kubectl create secret docker-registry myregistrykey --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL + kubectl create secret docker-registry myregistrykey -n default --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL - In the preceding commands, **myregistrykey** indicates the secret name, and other parameters are described as follows: + In the preceding command, *myregistrykey* indicates the key name, *default* indicates the namespace where the key is located, and other parameters are as follows: - **DOCKER_REGISTRY_SERVER**: address of a third-party image repository, for example, **www.3rdregistry.com** or **10.10.10.10:443** - **DOCKER_USER**: account used for logging in to a third-party image repository @@ -52,7 +52,7 @@ Using kubectl #. Use a third-party image to create a workload. - A dockecfg secret is used for authentication when you obtain a private image. The following is an example of using the myregistrykey for authentication. + A kubernetes.io/dockerconfigjson secret is used for authentication when you obtain a private image. The following is an example of using the myregistrykey for authentication. .. code-block:: diff --git a/umn/source/workloads/configuring_qos_rate_limiting_for_inter-pod_access.rst b/umn/source/workloads/configuring_qos_rate_limiting_for_inter-pod_access.rst deleted file mode 100644 index 05e7b74..0000000 --- a/umn/source/workloads/configuring_qos_rate_limiting_for_inter-pod_access.rst +++ /dev/null @@ -1,54 +0,0 @@ -:original_name: cce_10_0382.html - -.. _cce_10_0382: - -Configuring QoS Rate Limiting for Inter-Pod Access -================================================== - -Scenario --------- - -Bandwidth preemption occurs between different containers deployed on the same node, which may cause service jitter. You can configure QoS rate limiting for inter-pod access to prevent this problem. - -Using kubectl -------------- - -You can add annotations to a workload to specify its egress and ingress bandwidth. - -.. code-block:: - - apiVersion: apps/v1 - kind: Deployment - metadata: - name: test - namespace: default - labels: - app: test - spec: - replicas: 2 - selector: - matchLabels: - app: test - template: - metadata: - labels: - app: test - annotations: - kubernetes.io/ingress-bandwidth: 100M - kubernetes.io/egress-bandwidth: 100M - spec: - containers: - - name: container-1 - image: nginx:alpine - imagePullPolicy: IfNotPresent - imagePullSecrets: - - name: default-secret - -- **kubernetes.io/ingress-bandwidth**: ingress bandwidth of the pod -- **kubernetes.io/egress-bandwidth**: egress bandwidth of the pod - -If these two parameters are not specified, the bandwidth is not limited. - -.. note:: - - After modifying the ingress or egress bandwidth limit of a pod, you need to restart the container for the modification to take effect. After annotations are modified in a pod not managed by workloads, the container will not be restarted, so the bandwidth limits do not take effect. You can create a pod again or manually restart the container. diff --git a/umn/source/workloads/creating_a_cron_job.rst b/umn/source/workloads/creating_a_cron_job.rst deleted file mode 100644 index 2f69db9..0000000 --- a/umn/source/workloads/creating_a_cron_job.rst +++ /dev/null @@ -1,204 +0,0 @@ -:original_name: cce_10_0151.html - -.. _cce_10_0151: - -Creating a Cron Job -=================== - -Scenario --------- - -A cron job runs on a repeating schedule. You can perform time synchronization for all active nodes at a fixed time point. - -A cron job runs periodically at the specified time. It is similar with Linux crontab. A cron job has the following characteristics: - -- Runs only once at the specified time. -- Runs periodically at the specified time. - -The typical usage of a cron job is as follows: - -- Schedules jobs at the specified time. -- Creates jobs to run periodically, for example, database backup and email sending. - -Prerequisites -------------- - -Resources have been created. For details, see :ref:`Creating a Node `. - -Using the CCE Console ---------------------- - -#. Log in to the CCE console. - -#. Click the cluster name to go to the cluster console, choose **Workloads** in the navigation pane, and click the **Create Workload** in the upper right corner. - -#. Set basic information about the workload. - - **Basic Info** - - - **Workload Type**: Select **Cron Job**. For details about workload types, see :ref:`Overview `. - - **Workload Name**: Enter the name of the workload. Enter 1 to 52 characters starting with a lowercase letter and ending with a letter or digit. Only lowercase letters, digits, and hyphens (-) are allowed. - - **Namespace**: Select the namespace of the workload. The default value is **default**. You can also click **Create Namespace** to create one. For details, see :ref:`Creating a Namespace `. - - **Container Runtime**: A CCE cluster uses runC by default, whereas a CCE Turbo cluster supports both runC and Kata. For details about the differences between runC and Kata, see :ref:`Kata Containers and Common Containers `. - - **Container Settings** - - - Container Information - - Multiple containers can be configured in a pod. You can click **Add Container** on the right to configure multiple containers for the pod. - - - **Basic Info**: See :ref:`Setting Basic Container Information `. - - **Lifecycle**: See :ref:`Setting Container Lifecycle Parameters `. - - **Environment Variables**: See :ref:`Setting an Environment Variable `. - - - **Image Access Credential**: Select the credential used for accessing the image repository. The default value is **default-secret**. You can use default-secret to access images in SWR. For details about **default-secret**, see :ref:`default-secret `. - - - **GPU graphics card**: **All** is selected by default. The workload instance will be scheduled to the node with the specified GPU graphics card type. - - **Schedule** - - - **Concurrency Policy**: The following three modes are supported: - - - **Forbid**: A new job cannot be created before the previous job is completed. - - **Allow**: The cron job allows concurrently running jobs, which preempt cluster resources. - - **Replace**: A new job replaces the previous job when it is time to create a job but the previous job is not completed. - - - **Policy Settings**: specifies when a new cron job is executed. Policy settings in YAML are implemented using cron expressions. - - - A cron job is executed at a fixed interval. The unit can be minute, hour, day, or month. For example, if a cron job is executed every 30 minutes, the cron expression is **\*/30 \* \* \* \***, the execution time starts from 0 in the unit range, for example, **00:00:00**, **00:30:00**, **01:00:00**, and **...**. - - The cron job is executed at a fixed time (by month). For example, if a cron job is executed at 00:00 on the first day of each month, the cron expression is **0 0 1 \*/1 \***, and the execution time is **\****-01-01 00:00:00**, **\****-02-01 00:00:00**, and **...**. - - The cron job is executed at a fixed time (by week). For example, if a cron job is executed at 00:00 every Monday, the cron expression is **0 0 \* \* 1**, and the execution time is **\****-**-01 00:00:00 on Monday**, **\****-**-08 00:00:00 on Monday**, and **...**. - - For details about how to use cron expressions, see `cron `__. - - .. note:: - - - If a cron job is executed at a fixed time (by month) and the number of days in a month does not exist, the cron job will not be executed in this month. For example, if the number of days is set to 30 but February does not have the 30th day, the cron job skips this month and continues on March 30. - - - Due to the definition of the cron expression, the fixed period is not a strict period. The time unit range is divided from 0 by period. For example, if the unit is minute, the value ranges from 0 to 59. If the value cannot be exactly divided, the last period is reset. Therefore, an accurate period can be represented only when the period can evenly divide its time unit range. - - For example, the unit of the period is hour. Because **/2, /3, /4, /6, /8, and /12** can be divided by 24, the accurate period can be represented. If another period is used, the last period will be reset at the beginning of a new day. For example, if the cron expression is **\* \*/12 \* \* \***, the execution time is **00:00:00** and **12:00:00** every day. If the cron expression is **\* \*/13 \* \* \***, the execution time is **00:00:00** and **13:00:00** every day. At 00:00 on the next day, the execution time is updated even if the period does not reach 13 hours. - - - **Job Records**: You can set the number of jobs that are successfully executed or fail to be executed. Setting a limit to **0** corresponds to keeping none of the jobs after they finish. - - **Advanced Settings** - - - **Labels and Annotations**: See :ref:`Pod Labels and Annotations `. - - Network configuration: - - - Pod ingress/egress bandwidth limitation: You can set ingress/egress bandwidth limitation for pods. For details, see :ref:`Configuring QoS Rate Limiting for Inter-Pod Access `. - -#. Click **Create Workload** in the lower right corner. - -Using kubectl -------------- - -A cron job has the following configuration parameters: - -- **.spec.schedule**: takes a `Cron `__ format string, for example, **0 \* \* \* \*** or **@hourly**, as schedule time of jobs to be created and executed. -- **.spec.jobTemplate**: specifies jobs to be run, and has the same schema as when you are :ref:`Creating a Job Using kubectl `. -- **.spec.startingDeadlineSeconds**: specifies the deadline for starting a job. -- **.spec.concurrencyPolicy**: specifies how to treat concurrent executions of a job created by the Cron job. The following options are supported: - - - **Allow** (default value): allows concurrently running jobs. - - **Forbid**: forbids concurrent runs, skipping next run if previous has not finished yet. - - **Replace**: cancels the currently running job and replaces it with a new one. - -The following is an example cron job, which is saved in the **cronjob.yaml** file. - -.. code-block:: - - apiVersion: batch/v1beta1 - kind: CronJob - metadata: - name: hello - spec: - schedule: "*/1 * * * *" - jobTemplate: - spec: - template: - spec: - containers: - - name: hello - image: busybox - args: - - /bin/sh - - -c - - date; echo Hello from the Kubernetes cluster - restartPolicy: OnFailure - -**Run the job.** - -#. Create a cron job. - - **kubectl create -f cronjob.yaml** - - Information similar to the following is displayed: - - .. code-block:: - - cronjob.batch/hello created - -#. Query the running status of the cron job: - - **kubectl get cronjob** - - .. code-block:: - - NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE - hello */1 * * * * False 0 9s - - **kubectl get jobs** - - .. code-block:: - - NAME COMPLETIONS DURATION AGE - hello-1597387980 1/1 27s 45s - - **kubectl get pod** - - .. code-block:: - - NAME READY STATUS RESTARTS AGE - hello-1597387980-tjv8f 0/1 Completed 0 114s - hello-1597388040-lckg9 0/1 Completed 0 39s - - **kubectl logs** **hello-1597387980-tjv8f** - - .. code-block:: - - Fri Aug 14 06:56:31 UTC 2020 - Hello from the Kubernetes cluster - - **kubectl delete cronjob hello** - - .. code-block:: - - cronjob.batch "hello" deleted - - .. important:: - - When a cron job is deleted, the related jobs and pods are deleted too. - -Related Operations ------------------- - -After a cron job is created, you can perform operations listed in :ref:`Table 1 `. - -.. _cce_10_0151__t6d520710097a4ee098eae42bcb508608: - -.. table:: **Table 1** Other operations - - +-----------------------------------+----------------------------------------------------------------------------------------------------+ - | Operation | Description | - +===================================+====================================================================================================+ - | Editing a YAML file | Click **More** > **Edit YAML** next to the cron job name to edit the YAML file of the current job. | - +-----------------------------------+----------------------------------------------------------------------------------------------------+ - | Stopping a cron job | #. Select the job to be stopped and click **Stop** in the **Operation** column. | - | | #. Click **Yes**. | - +-----------------------------------+----------------------------------------------------------------------------------------------------+ - | Deleting a cron job | #. Select the cron job to be deleted and click **More** > **Delete** in the **Operation** column. | - | | | - | | #. Click **Yes**. | - | | | - | | Deleted jobs cannot be restored. Therefore, exercise caution when deleting a job. | - +-----------------------------------+----------------------------------------------------------------------------------------------------+ diff --git a/umn/source/workloads/creating_a_daemonset.rst b/umn/source/workloads/creating_a_daemonset.rst deleted file mode 100644 index e246297..0000000 --- a/umn/source/workloads/creating_a_daemonset.rst +++ /dev/null @@ -1,156 +0,0 @@ -:original_name: cce_10_0216.html - -.. _cce_10_0216: - -Creating a DaemonSet -==================== - -Scenario --------- - -CCE provides deployment and management capabilities for multiple types of containers and supports features of container workloads, including creation, configuration, monitoring, scaling, upgrade, uninstall, service discovery, and load balancing. - -DaemonSet ensures that only one pod runs on all or some nodes. When a node is added to a cluster, a new pod is also added for the node. When a node is removed from a cluster, the pod is also reclaimed. If a DaemonSet is deleted, all pods created by it will be deleted. - -The typical application scenarios of a DaemonSet are as follows: - -- Run the cluster storage daemon, such as glusterd or Ceph, on each node. -- Run the log collection daemon, such as Fluentd or Logstash, on each node. -- Run the monitoring daemon, such as Prometheus Node Exporter, collectd, Datadog agent, New Relic agent, or Ganglia (gmond), on each node. - -You can deploy a DaemonSet for each type of daemons on all nodes, or deploy multiple DaemonSets for the same type of daemons. In the second case, DaemonSets have different flags and different requirements on memory and CPU for different hardware types. - -Prerequisites -------------- - -You must have one cluster available before creating a DaemonSet. For details about how to create a cluster, see :ref:`Creating a CCE Cluster `. - -Using the CCE Console ---------------------- - -#. Log in to the CCE console. - -#. Click the cluster name to go to the cluster console, choose **Workloads** in the navigation pane, and click the **Create Workload** in the upper right corner. - -#. Set basic information about the workload. - - **Basic Info** - - - **Workload Type**: Select **DaemonSet**. For details about workload types, see :ref:`Overview `. - - **Workload Name**: Enter the name of the workload. Enter 1 to 63 characters starting with a lowercase letter and ending with a letter or digit. Only lowercase letters, digits, and hyphens (-) are allowed. - - **Namespace**: Select the namespace of the workload. The default value is **default**. You can also click **Create Namespace** to create one. For details, see :ref:`Creating a Namespace `. - - **Container Runtime**: A CCE cluster uses runC by default, whereas a CCE Turbo cluster supports both runC and Kata. For details about the differences between runC and Kata, see :ref:`Kata Containers and Common Containers `. - - **Time Zone Synchronization**: Specify whether to enable time zone synchronization. After time zone synchronization is enabled, the container and node use the same time zone. The time zone synchronization function depends on the local disk mounted to the container. Do not modify or delete the time zone. For details, see :ref:`Configuring Time Zone Synchronization `. - - **Container Settings** - - - Container Information - - Multiple containers can be configured in a pod. You can click **Add Container** on the right to configure multiple containers for the pod. - - - **Basic Info**: See :ref:`Setting Basic Container Information `. - - **Lifecycle**: See :ref:`Setting Container Lifecycle Parameters `. - - **Health Check**: See :ref:`Setting Health Check for a Container `. - - **Environment Variables**: See :ref:`Setting an Environment Variable `. - - **Data Storage**: See :ref:`Overview `. - - .. note:: - - If the workload contains more than one pod, EVS volumes cannot be mounted. - - - **Security Context**: Set container permissions to protect the system and other containers from being affected. Enter the user ID to set container permissions and prevent systems and other containers from being affected. - - **Logging**: See :ref:`Using ICAgent to Collect Container Logs `. - - - **Image Access Credential**: Select the credential used for accessing the image repository. The default value is **default-secret**. You can use default-secret to access images in SWR. For details about **default-secret**, see :ref:`default-secret `. - - - **GPU graphics card**: **All** is selected by default. The workload instance will be scheduled to the node with the specified GPU graphics card type. - - **Service Settings** - - A Service is used for pod access. With a fixed IP address, a Service forwards access traffic to pods and performs load balancing for these pods. - - You can also create a Service after creating a workload. For details about the Service, see :ref:`Service Overview `. - - **Advanced Settings** - - - **Upgrade**: See :ref:`Configuring the Workload Upgrade Policy `. - - **Scheduling**: See :ref:`Scheduling Policy (Affinity/Anti-affinity) `. - - **Labels and Annotations**: See :ref:`Pod Labels and Annotations `. - - **Toleration**: Using both taints and tolerations allows (not forcibly) the pod to be scheduled to a node with the matching taints, and controls the pod eviction policies after the node where the pod is located is tainted. For details, see :ref:`Tolerations `. - - **DNS**: See :ref:`DNS Configuration `. - - Network configuration: - - - Pod ingress/egress bandwidth limitation: You can set ingress/egress bandwidth limitation for pods. For details, see :ref:`Configuring QoS Rate Limiting for Inter-Pod Access `. - -#. Click **Create Workload** in the lower right corner. - -Using kubectl -------------- - -The following procedure uses Nginx as an example to describe how to create a workload using kubectl. - -#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. - -#. Create and edit the **nginx-daemonset.yaml** file. **nginx-daemonset.yaml** is an example file name, and you can change it as required. - - **vi nginx-daemonset.yaml** - - The content of the description file is as follows: The following provides an example. For more information on DaemonSets, see `Kubernetes documents `__. - - .. code-block:: - - apiVersion: apps/v1 - kind: DaemonSet - metadata: - name: nginx-daemonset - labels: - app: nginx-daemonset - spec: - selector: - matchLabels: - app: nginx-daemonset - template: - metadata: - labels: - app: nginx-daemonset - spec: - nodeSelector: # Node selection. A pod is created on a node only when the node meets daemon=need. - daemon: need - containers: - - name: nginx-daemonset - image: nginx:alpine - resources: - limits: - cpu: 250m - memory: 512Mi - requests: - cpu: 250m - memory: 512Mi - imagePullSecrets: - - name: default-secret - - The **replicas** parameter used in defining a Deployment or StatefulSet does not exist in the above configuration for a DaemonSet, because each node has only one replica. It is fixed. - - The nodeSelector in the preceding pod template specifies that a pod is created only on the nodes that meet **daemon=need**, as shown in the following figure. If you want to create a pod on each node, delete the label. - -#. Create a DaemonSet. - - **kubectl create -f nginx-daemonset.yaml** - - If the following information is displayed, the DaemonSet is being created. - - .. code-block:: - - daemonset.apps/nginx-daemonset created - -#. Query the DaemonSet status. - - **kubectl get ds** - - .. code-block:: - - $ kubectl get ds - NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE - nginx-daemonset 1 1 0 1 0 daemon=need 116s - -#. If the workload will be accessed through a ClusterIP or NodePort Service, set the corresponding workload access type. For details, see :ref:`Networking `. diff --git a/umn/source/workloads/creating_a_job.rst b/umn/source/workloads/creating_a_job.rst deleted file mode 100644 index 5526f16..0000000 --- a/umn/source/workloads/creating_a_job.rst +++ /dev/null @@ -1,197 +0,0 @@ -:original_name: cce_10_0150.html - -.. _cce_10_0150: - -Creating a Job -============== - -Scenario --------- - -Jobs are short-lived and run for a certain time to completion. They can be executed immediately after being deployed. It is completed after it exits normally (exit 0). - -A job is a resource object that is used to control batch tasks. It is different from a long-term servo workload (such as Deployment and StatefulSet). - -A job is started and terminated at specific times, while a long-term servo workload runs unceasingly unless being terminated. The pods managed by a job automatically exit after successfully completing the job based on user configurations. The success flag varies according to the spec.completions policy. - -- One-off jobs: A single pod runs once until successful termination. -- Jobs with a fixed success count: N pods run until successful termination. -- A queue job is considered completed based on the global success confirmed by the application. - -Prerequisites -------------- - -Resources have been created. For details, see :ref:`Creating a Node `. If clusters and nodes are available, you need not create them again. - -Using the CCE Console ---------------------- - -#. Log in to the CCE console. - -#. Click the cluster name to go to the cluster console, choose **Workloads** in the navigation pane, and click the **Create Workload** in the upper right corner. - -#. Set basic information about the workload. - - **Basic Info** - - - **Workload Type**: Select **Job**. For details about workload types, see :ref:`Overview `. - - **Workload Name**: Enter the name of the workload. Enter 1 to 63 characters starting with a lowercase letter and ending with a letter or digit. Only lowercase letters, digits, and hyphens (-) are allowed. - - **Namespace**: Select the namespace of the workload. The default value is **default**. You can also click **Create Namespace** to create one. For details, see :ref:`Creating a Namespace `. - - **Pods**: Enter the number of pods. - - **Container Runtime**: A CCE cluster uses runC by default, whereas a CCE Turbo cluster supports both runC and Kata. For details about the differences between runC and Kata, see :ref:`Kata Containers and Common Containers `. - - **Container Settings** - - - Container Information - - Multiple containers can be configured in a pod. You can click **Add Container** on the right to configure multiple containers for the pod. - - - **Basic Info**: See :ref:`Setting Basic Container Information `. - - **Lifecycle**: See :ref:`Setting Container Lifecycle Parameters `. - - **Environment Variables**: See :ref:`Setting an Environment Variable `. - - **Data Storage**: See :ref:`Overview `. - - .. note:: - - If the workload contains more than one pod, EVS volumes cannot be mounted. - - - **Logging**: See :ref:`Using ICAgent to Collect Container Logs `. - - - **Image Access Credential**: Select the credential used for accessing the image repository. The default value is **default-secret**. You can use default-secret to access images in SWR. For details about **default-secret**, see :ref:`default-secret `. - - - **GPU graphics card**: **All** is selected by default. The workload instance will be scheduled to the node with the specified GPU graphics card type. - - **Advanced Settings** - - - **Labels and Annotations**: See :ref:`Pod Labels and Annotations `. - - **Job Settings**: - - - **Parallel Pods**: Maximum number of pods that can run in parallel during job execution. The value cannot be greater than the total number of pods in the job. - - **Timeout (s)**: Once a job reaches this time, the job status becomes failed and all pods in this job will be deleted. If you leave this parameter blank, the job will never time out. - - - Network configuration: - - - Pod ingress/egress bandwidth limitation: You can set ingress/egress bandwidth limitation for pods. For details, see :ref:`Configuring QoS Rate Limiting for Inter-Pod Access `. - -#. Click **Create Workload** in the lower right corner. - -.. _cce_10_0150__section450152719412: - -Using kubectl -------------- - -A job has the following configuration parameters: - -- **spec.template**: has the same schema as a pod. -- **RestartPolicy**: can only be set to **Never** or **OnFailure**. -- For a single-pod job, the job ends after the pod runs successfully by default. -- **.spec.completions**: indicates the number of pods that need to run successfully to end a job. The default value is **1**. -- **.spec.parallelism**: indicates the number of pods that run concurrently. The default value is **1**. -- **spec.backoffLimit**: indicates the maximum number of retries performed if a pod fails. When the limit is reached, the pod will not try again. -- **.spec.activeDeadlineSeconds**: indicates the running time of pods. Once the time is reached, all pods of the job are terminated. The priority of .spec.activeDeadlineSeconds is higher than that of .spec.backoffLimit. That is, if a job reaches the .spec.activeDeadlineSeconds, the spec.backoffLimit is ignored. - -Based on the **.spec.completions** and **.spec.Parallelism** settings, jobs are classified into the following types. - -.. table:: **Table 1** Job types - - +---------------------------------------------+-----------------------------------------------------------------------+-------------------------------------------------------+ - | Job Type | Description | Example | - +=============================================+=======================================================================+=======================================================+ - | One-off jobs | A single pod runs once until successful termination. | Database migration | - +---------------------------------------------+-----------------------------------------------------------------------+-------------------------------------------------------+ - | Jobs with a fixed completion count | One pod runs until reaching the specified **completions** count. | Work queue processing pod | - +---------------------------------------------+-----------------------------------------------------------------------+-------------------------------------------------------+ - | Parallel jobs with a fixed completion count | Multiple pods run until reaching the specified **completions** count. | Multiple pods for processing work queues concurrently | - +---------------------------------------------+-----------------------------------------------------------------------+-------------------------------------------------------+ - | Parallel jobs | One or more pods run until successful termination. | Multiple pods for processing work queues concurrently | - +---------------------------------------------+-----------------------------------------------------------------------+-------------------------------------------------------+ - -The following is an example job, which calculates Pi till the 2000\ :sup:`th` digit and prints the output. - -.. code-block:: - - apiVersion: batch/v1 - kind: Job - metadata: - name: myjob - spec: - completions: 50 # 50 pods need to be run to finish a job. In this example, Pi is printed for 50 times. - parallelism: 5 # 5 pods are run in parallel. - backoffLimit: 5 # The maximum number of retry times is 5. - template: - spec: - containers: - - name: pi - image: perl - command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] - restartPolicy: Never - -**Description** - -- **apiVersion: batch/v1** indicates the version of the current job. -- **kind: Job** indicates that the current resource is a job. -- **restartPolicy: Never** indicates the current restart policy. For jobs, this parameter can only be set to **Never** or **OnFailure**. For other controllers (for example, Deployments), you can set this parameter to **Always**. - -**Run the job.** - -#. Start the job. - - .. code-block:: console - - [root@k8s-master k8s]# kubectl apply -f myjob.yaml - job.batch/myjob created - -#. View the job details. - - **kubectl get job** - - .. code-block:: console - - [root@k8s-master k8s]# kubectl get job - NAME COMPLETIONS DURATION AGE - myjob 50/50 23s 3m45s - - If the value of **COMPLETIONS** is **50/50**, the job is successfully executed. - -#. Query the pod status. - - **kubectl get pod** - - .. code-block:: console - - [root@k8s-master k8s]# kubectl get pod - NAME READY STATUS RESTARTS AGE - myjob-29qlw 0/1 Completed 0 4m5s - ... - - If the status is **Completed**, the job is complete. - -#. View the pod logs. - - **kubectl logs** - - .. code-block:: - - # kubectl logs myjob-29qlw - 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632788659361533818279682303019520353018529689957736225994138912497217752834791315155748572424541506959508295331168617278558890750983817546374649393192550604009277016711390098488240128583616035637076601047101819429555961989467678374494482553797747268471040475346462080466842590694912933136770289891521047521620569660240580381501935112533824300355876402474964732639141992726042699227967823547816360093417216412199245863150302861829745557067498385054945885869269956909272107975093029553211653449872027559602364806654991198818347977535663698074265425278625518184175746728909777727938000816470600161452491921732172147723501414419735685481613611573525521334757418494684385233239073941433345477624168625189835694855620992192221842725502542568876717904946016534668049886272327917860857843838279679766814541009538837863609506800642251252051173929848960841284886269456042419652850222106611863067442786220391949450471237137869609563643719172874677646575739624138908658326459958133904780275901 - -Related Operations ------------------- - -After a one-off job is created, you can perform operations listed in :ref:`Table 2 `. - -.. _cce_10_0150__t84075653e7544394939d13740fad0c20: - -.. table:: **Table 2** Other operations - - +-----------------------------------+-------------------------------------------------------------------------------------------------------------+ - | Operation | Description | - +===================================+=============================================================================================================+ - | Editing a YAML file | Click **More** > **Edit YAML** next to the job name to edit the YAML file corresponding to the current job. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------+ - | Deleting a job | #. Select the job to be deleted and click **Delete** in the **Operation** column. | - | | | - | | #. Click **Yes**. | - | | | - | | Deleted jobs cannot be restored. Exercise caution when deleting a job. | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/workloads/creating_a_statefulset.rst b/umn/source/workloads/creating_a_statefulset.rst deleted file mode 100644 index 8313b56..0000000 --- a/umn/source/workloads/creating_a_statefulset.rst +++ /dev/null @@ -1,228 +0,0 @@ -:original_name: cce_10_0048.html - -.. _cce_10_0048: - -Creating a StatefulSet -====================== - -Scenario --------- - -StatefulSets are a type of workloads whose data or status is stored while they are running. For example, MySQL is a StatefulSet because it needs to store new data. - -A container can be migrated between different hosts, but data is not stored on the hosts. To store StatefulSet data persistently, attach HA storage volumes provided by CCE to the container. - -Constraints ------------ - -- When you delete or scale a StatefulSet, the system does not delete the storage volumes associated with the StatefulSet to ensure data security. -- When you delete a StatefulSet, reduce the number of replicas to **0** before deleting the StatefulSet so that pods in the StatefulSet can be stopped in order. -- When you create a StatefulSet, a headless Service is required for pod access. For details, see :ref:`Headless Service `. -- When a node is unavailable, pods become **Unready**. In this case, you need to manually delete the pods of the StatefulSet so that the pods can be migrated to a normal node. - -Prerequisites -------------- - -- Before creating a workload, you must have an available cluster. For details about how to create a cluster, see :ref:`Creating a CCE Cluster `. -- To enable public access to a workload, ensure that an EIP or load balancer has been bound to at least one node in the cluster. - - .. note:: - - If a pod has multiple containers, ensure that the ports used by the containers do not conflict with each other. Otherwise, creating the StatefulSet will fail. - -Using the CCE Console ---------------------- - -#. Log in to the CCE console. - -#. Click the cluster name and access the cluster details page, choose **Workloads** in the navigation pane, and click the **Create Workload** in the upper right corner. - -#. Set basic information about the workload. - - **Basic Info** - - - **Workload Type**: Select **StatefulSet**. For details about workload types, see :ref:`Overview `. - - **Workload Name**: Enter the name of the workload. Enter 1 to 52 characters starting with a lowercase letter and ending with a letter or digit. Only lowercase letters, digits, and hyphens (-) are allowed. - - **Namespace**: Select the namespace of the workload. The default value is **default**. You can also click **Create Namespace** to create one. For details, see :ref:`Creating a Namespace `. - - **Pods**: Enter the number of pods. - - **Container Runtime**: A CCE cluster uses runC by default, whereas a CCE Turbo cluster supports both runC and Kata. For details about the differences between runC and Kata, see :ref:`Kata Containers and Common Containers `. - - **Time Zone Synchronization**: Specify whether to enable time zone synchronization. After time zone synchronization is enabled, the container and node use the same time zone. The time zone synchronization function depends on the local disk mounted to the container. Do not modify or delete the time zone. For details, see :ref:`Configuring Time Zone Synchronization `. - - **Container Settings** - - - Container Information - - Multiple containers can be configured in a pod. You can click **Add Container** on the right to configure multiple containers for the pod. - - - **Basic Info**: See :ref:`Setting Basic Container Information `. - - **Lifecycle**: See :ref:`Setting Container Lifecycle Parameters `. - - **Health Check**: See :ref:`Setting Health Check for a Container `. - - **Environment Variables**: See :ref:`Setting an Environment Variable `. - - **Data Storage**: See :ref:`Overview `. - - .. note:: - - - StatefulSets support dynamically provisioned EVS volumes. - - Dynamic mounting is achieved by using the `volumeClaimTemplates `__ field and depends on the dynamic creation capability of StorageClass. A StatefulSet associates each pod with a unique PVC using the **volumeClaimTemplates** field, and the PVCs are bound to their corresponding PVs. Therefore, after the pod is rescheduled, the original data can still be mounted thanks to the PVC. - - - After a workload is created, the storage that is dynamically mounted cannot be updated. - - - **Security Context**: Set container permissions to protect the system and other containers from being affected. Enter the user ID to set container permissions and prevent systems and other containers from being affected. - - **Logging**: See :ref:`Using ICAgent to Collect Container Logs `. - - - **Image Access Credential**: Select the credential used for accessing the image repository. The default value is **default-secret**. You can use default-secret to access images in SWR. For details about **default-secret**, see :ref:`default-secret `. - - - **GPU graphics card**: **All** is selected by default. The workload instance will be scheduled to the node with the specified GPU graphics card type. - - **Headless Service Parameters** - - A headless Service is used to solve the problem of mutual access between pods in a StatefulSet. The headless Service provides a fixed access domain name for each pod. For details, see :ref:`Headless Service `. - - **Service Settings** - - A Service is used for pod access. With a fixed IP address, a Service forwards access traffic to pods and performs load balancing for these pods. - - You can also create a Service after creating a workload. For details about the Service, see :ref:`Service Overview `. - - **Advanced Settings** - - - **Upgrade**: See :ref:`Configuring the Workload Upgrade Policy `. - - - **Scheduling**: See :ref:`Scheduling Policy (Affinity/Anti-affinity) `. - - - **Instances Management Policies** - - For some distributed systems, the StatefulSet sequence is unnecessary and/or should not occur. These systems require only uniqueness and identifiers. - - - **OrderedReady**: The StatefulSet will deploy, delete, or scale pods in order and one by one. (The StatefulSet continues only after the previous pod is ready or deleted.) This is the default policy. - - **Parallel**: The StatefulSet will create pods in parallel to match the desired scale without waiting, and will delete all pods at once. - - - **Toleration**: Using both taints and tolerations allows (not forcibly) the pod to be scheduled to a node with the matching taints, and controls the pod eviction policies after the node where the pod is located is tainted. For details, see :ref:`Tolerations `. - - - **Labels and Annotations**: See :ref:`Pod Labels and Annotations `. - - - **DNS**: See :ref:`DNS Configuration `. - - - Network configuration: - - - Pod ingress/egress bandwidth limitation: You can set ingress/egress bandwidth limitation for pods. For details, see :ref:`Configuring QoS Rate Limiting for Inter-Pod Access `. - -#. Click **Create Workload** in the lower right corner. - -Using kubectl -------------- - -In this example, an nginx workload is used and the EVS volume is dynamically mounted to it using the **volumeClaimTemplates** field. - -#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. - -#. Create and edit the **nginx-statefulset.yaml** file. - - **nginx-statefulset.yaml** is an example file name, and you can change it as required. - - **vi nginx-statefulset.yaml** - - The following provides an example of the file contents. For more information on StatefulSet, see the `Kubernetes documentation `__. - - .. code-block:: - - apiVersion: apps/v1 - kind: StatefulSet - metadata: - name: nginx - spec: - selector: - matchLabels: - app: nginx - template: - metadata: - labels: - app: nginx - spec: - containers: - - name: container-1 - image: nginx:latest - imagePullPolicy: IfNotPresent - resources: - requests: - cpu: 250m - memory: 512Mi - limits: - cpu: 250m - memory: 512Mi - volumeMounts: - - name: test - readOnly: false - mountPath: /usr/share/nginx/html - subPath: '' - imagePullSecrets: - - name: default-secret - dnsPolicy: ClusterFirst - volumes: [] - serviceName: nginx-svc - replicas: 2 - volumeClaimTemplates: # Dynamically mounts the EVS volume to the workload. - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - name: test - namespace: default - annotations: - everest.io/disk-volume-type: SAS # SAS EVS volume type. - labels: - failure-domain.beta.kubernetes.io/region: eu-de # region where the EVS volume is created. - failure-domain.beta.kubernetes.io/zone: # AZ where the EVS volume is created. It must be the same as the AZ of the node. - spec: - accessModes: - - ReadWriteOnce # The value must be ReadWriteOnce for the EVS volume. - resources: - requests: - storage: 10Gi - storageClassName: csi-disk # Storage class name. The value is csi-disk for the EVS volume. - updateStrategy: - type: RollingUpdate - - **vi nginx-headless.yaml** - - .. code-block:: - - apiVersion: v1 - kind: Service - metadata: - name: nginx-svc - namespace: default - labels: - app: nginx - spec: - selector: - app: nginx - version: v1 - clusterIP: None - ports: - - name: nginx - targetPort: 80 - nodePort: 0 - port: 80 - protocol: TCP - type: ClusterIP - -#. Create a workload and the corresponding headless service. - - **kubectl create -f nginx-statefulset.yaml** - - If the following information is displayed, the StatefulSet has been successfully created. - - .. code-block:: - - statefulset.apps/nginx created - - **kubectl create -f nginx-headless.yaml** - - If the following information is displayed, the headless service has been successfully created. - - .. code-block:: - - service/nginx-svc created - -#. If the workload will be accessed through a ClusterIP or NodePort Service, set the corresponding workload access type. For details, see :ref:`Networking `. diff --git a/umn/source/workloads/creating_a_workload/creating_a_cron_job.rst b/umn/source/workloads/creating_a_workload/creating_a_cron_job.rst new file mode 100644 index 0000000..3d1f611 --- /dev/null +++ b/umn/source/workloads/creating_a_workload/creating_a_cron_job.rst @@ -0,0 +1,254 @@ +:original_name: cce_10_0151.html + +.. _cce_10_0151: + +Creating a Cron Job +=================== + +Scenario +-------- + +A cron job runs on a repeating schedule. You can perform time synchronization for all active nodes at a fixed time point. + +A cron job runs periodically at the specified time. It is similar with Linux crontab. A cron job has the following characteristics: + +- Runs only once at the specified time. +- Runs periodically at the specified time. + +The typical usage of a cron job is as follows: + +- Schedules jobs at the specified time. +- Creates jobs to run periodically, for example, database backup and email sending. + +Prerequisites +------------- + +Resources have been created. For details, see :ref:`Creating a Node `. + +Using the CCE Console +--------------------- + +#. Log in to the CCE console. + +#. Click the cluster name to go to the cluster console, choose **Workloads** in the navigation pane, and click the **Create Workload** in the upper right corner. + +#. Set basic information about the workload. + + **Basic Info** + + - **Workload Type**: Select **Cron Job**. For details about workload types, see :ref:`Overview `. + - **Workload Name**: Enter the name of the workload. Enter 1 to 63 characters starting with a lowercase letter and ending with a lowercase letter or digit. Only lowercase letters, digits, and hyphens (-) are allowed. + - **Namespace**: Select the namespace of the workload. The default value is **default**. You can also click **Create Namespace** to create one. For details, see :ref:`Creating a Namespace `. + - **Container Runtime**: A CCE cluster uses runC by default, whereas a CCE Turbo cluster supports both runC and Kata. For details about the differences, see :ref:`Kata Runtime and Common Runtime `. + + **Container Settings** + + - Container Information + + Multiple containers can be configured in a pod. You can click **Add Container** on the right to configure multiple containers for the pod. + + - **Basic Info**: Configure basic information about the container. + + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+====================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | Container Name | Name the container. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Pull Policy | Image update or pull policy. If you select **Always**, the image is pulled from the image repository each time. If you do not select **Always**, the existing image of the node is preferentially used. If the image does not exist, the image is pulled from the image repository. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Image Name | Click **Select Image** and select the image used by the container. | + | | | + | | To use a third-party image, see :ref:`Using Third-Party Images `. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Image Tag | Select the image tag to be deployed. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | CPU Quota | - **Request**: minimum number of CPU cores required by a container. The default value is 0.25 cores. | + | | - **Limit**: maximum number of CPU cores available for a container. Do not leave **Limit** unspecified. Otherwise, intensive use of container resources will occur and your workload may exhibit unexpected behavior. | + | | | + | | If **Request** and **Limit** are not specified, the quota is not limited. For more information and suggestions about **Request** and **Limit**, see :ref:`Setting Container Specifications `. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Memory Quota | - **Request**: minimum amount of memory required by a container. The default value is 512 MiB. | + | | - **Limit**: maximum amount of memory available for a container. When memory usage exceeds the specified memory limit, the container will be terminated. | + | | | + | | If **Request** and **Limit** are not specified, the quota is not limited. For more information and suggestions about **Request** and **Limit**, see :ref:`Setting Container Specifications `. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | (Optional) GPU Quota | Configurable only when the cluster contains GPU nodes and the :ref:`gpu-beta ` add-on is installed. | + | | | + | | - **All**: The GPU is not used. | + | | - **Dedicated**: GPU resources are exclusively used by the container. | + | | - **Shared**: percentage of GPU resources used by the container. For example, if this parameter is set to **10%**, the container uses 10% of GPU resources. | + | | | + | | For details about how to use GPU in the cluster, see :ref:`Default GPU Scheduling in Kubernetes `. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | (Optional) Privileged Container | Programs in a privileged container have certain privileges. | + | | | + | | If **Privileged Container** is enabled, the container is assigned privileges. For example, privileged containers can manipulate network devices on the host machine and modify kernel parameters. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | (Optional) Init Container | Indicates whether to use the container as an init container. The init container does not support health check. | + | | | + | | An init container is a special container that runs before other app containers in a pod are started. Each pod can contain multiple containers. In addition, a pod can contain one or more Init containers. Application containers in a pod are started and run only after the running of all Init containers completes. For details, see `Init Container `__. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + - (Optional) **Lifecycle**: Configure operations to be performed in a specific phase of the container lifecycle, such as Startup Command, Post-Start, and Pre-Stop. For details, see :ref:`Setting Container Lifecycle Parameters `. + - (Optional) **Environment Variables**: Set variables for the container running environment using key-value pairs. These variables transfer external information to containers running in pods and can be flexibly modified after application deployment. For details, see :ref:`Setting an Environment Variable `. + + - **Image Access Credential**: Select the credential used for accessing the image repository. The default value is **default-secret**. You can use default-secret to access images in SWR. For details about **default-secret**, see :ref:`default-secret `. + + - (Optional) **GPU**: **All** is selected by default. The workload instance will be scheduled to the node with the specified GPU graphics card type. + + **Schedule** + + - **Concurrency Policy**: The following three modes are supported: + + - **Forbid**: A new job cannot be created before the previous job is completed. + - **Allow**: The cron job allows concurrently running jobs, which preempt cluster resources. + - **Replace**: A new job replaces the previous job when it is time to create a job but the previous job is not completed. + + - **Policy Settings**: specifies when a new cron job is executed. Policy settings in YAML are implemented using cron expressions. + + - A cron job is executed at a fixed interval. The unit can be minute, hour, day, or month. For example, if a cron job is executed every 30 minutes and the corresponding cron expression is **\*/30 \* \* \* \***, the execution time starts from 0 in the unit range, for example, **00:00:00**, **00:30:00**, **01:00:00**, and **...**. + - The cron job is executed at a fixed time (by month). For example, if a cron job is executed at 00:00 on the first day of each month, the cron expression is **0 0 1 \*/1 \***, and the execution time is **\****-01-01 00:00:00**, **\****-02-01 00:00:00**, and **...**. + - The cron job is executed by week. For example, if a cron job is executed at 00:00 every Monday, the cron expression is **0 0 \* \* 1**, and the execution time is **\****-**-01 00:00:00 on Monday**, **\****-**-08 00:00:00 on Monday**, and **...**. + - **Custom Cron Expression**: For details about how to use cron expressions, see `CronJob `__. + + .. note:: + + - If a cron job is executed at a fixed time (by month) and the number of days in a month does not exist, the cron job will not be executed in this month. For example, the execution will skip February if the date is set to 30. + + - Due to the definition of cron, the fixed period is not a strict period. The time unit range is divided from 0 by period. For example, if the unit is minute, the value ranges from 0 to 59. If the value cannot be exactly divided, the last period is reset. Therefore, an accurate period can be represented only when the period can be evenly divided. + + Take a cron job that is executed by hour as an example. As **/2, /3, /4, /6, /8, and /12** can exactly divide 24 hours, an accurate period can be represented. If another period is used, the last period will be reset at the beginning of a new day. For example, if the cron expression is **\* \*/12 \* \* \***, the execution time is **00:00:00** and **12:00:00** every day. If the cron expression is **\* \*/13 \* \* \***, the execution time is **00:00:00** and **13:00:00** every day. At 00:00 on the next day, the execution time is updated even if the period does not reach 13 hours. + + - **Job Records**: You can set the number of jobs that are successfully executed or fail to be executed. Setting a limit to **0** corresponds to keeping none of the jobs after they finish. + + **(Optional) Advanced Settings** + + - **Labels and Annotations**: Add labels or annotations for pods using key-value pairs. After entering the key and value, click **Confirm**. For details about how to use and configure labels and annotations, see :ref:`Labels and Annotations `. + + - Network configuration: + + - Pod ingress/egress bandwidth limitation: You can set ingress/egress bandwidth limitation for pods. For details, see :ref:`Configuring QoS Rate Limiting for Inter-Pod Access `. + +#. Click **Create Workload** in the lower right corner. + +Using kubectl +------------- + +A cron job has the following configuration parameters: + +- **.spec.schedule**: takes a `Cron `__ format string, for example, **0 \* \* \* \*** or **@hourly**, as schedule time of jobs to be created and executed. +- **.spec.jobTemplate**: specifies jobs to be run, and has the same schema as when you are :ref:`Creating a Job Using kubectl `. +- **.spec.startingDeadlineSeconds**: specifies the deadline for starting a job. +- **.spec.concurrencyPolicy**: specifies how to treat concurrent executions of a job created by the Cron job. The following options are supported: + + - **Allow** (default value): allows concurrently running jobs. + - **Forbid**: forbids concurrent runs, skipping next run if previous has not finished yet. + - **Replace**: cancels the currently running job and replaces it with a new one. + +The following is an example cron job, which is saved in the **cronjob.yaml** file. + +.. note:: + + In clusters of v1.21 or later, CronJob apiVersion is **batch/v1**. + + In clusters earlier than v1.21, CronJob apiVersion is **batch/v1beta1**. + +.. code-block:: + + apiVersion: batch/v1 + kind: CronJob + metadata: + name: hello + spec: + schedule: "*/1 * * * *" + jobTemplate: + spec: + template: + spec: + containers: + - name: hello + image: busybox + command: + - /bin/sh + - -c + - date; echo Hello from the Kubernetes cluster + restartPolicy: OnFailure + imagePullSecrets: + - name: default-secret + +**Run the job.** + +#. Create a cron job. + + **kubectl create -f cronjob.yaml** + + Information similar to the following is displayed: + + .. code-block:: + + cronjob.batch/hello created + +#. Query the running status of the cron job: + + **kubectl get cronjob** + + .. code-block:: + + NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE + hello */1 * * * * False 0 9s + + **kubectl get jobs** + + .. code-block:: + + NAME COMPLETIONS DURATION AGE + hello-1597387980 1/1 27s 45s + + **kubectl get pod** + + .. code-block:: + + NAME READY STATUS RESTARTS AGE + hello-1597387980-tjv8f 0/1 Completed 0 114s + hello-1597388040-lckg9 0/1 Completed 0 39s + + **kubectl logs** **hello-1597387980-tjv8f** + + .. code-block:: + + Fri Aug 14 06:56:31 UTC 2020 + Hello from the Kubernetes cluster + + **kubectl delete cronjob hello** + + .. code-block:: + + cronjob.batch "hello" deleted + + .. important:: + + When a CronJob is deleted, the related jobs and pods are deleted accordingly. + +Related Operations +------------------ + +After a CronJob is created, you can perform operations listed in :ref:`Table 1 `. + +.. _cce_10_0151__t6d520710097a4ee098eae42bcb508608: + +.. table:: **Table 1** Related operations + + +-----------------------------------+----------------------------------------------------------------------------------------------------+ + | Operation | Description | + +===================================+====================================================================================================+ + | Editing a YAML file | Click **More** > **Edit YAML** next to the cron job name to edit the YAML file of the current job. | + +-----------------------------------+----------------------------------------------------------------------------------------------------+ + | Stopping a CronJob | #. Select the job to be stopped and click **Stop** in the **Operation** column. | + | | #. Click **Yes**. | + +-----------------------------------+----------------------------------------------------------------------------------------------------+ + | Deleting a CronJob | #. Select the CronJob to be deleted and click **More** > **Delete** in the **Operation** column. | + | | | + | | #. Click **Yes**. | + | | | + | | Deleted jobs cannot be restored. Therefore, exercise caution when deleting a job. | + +-----------------------------------+----------------------------------------------------------------------------------------------------+ diff --git a/umn/source/workloads/creating_a_workload/creating_a_daemonset.rst b/umn/source/workloads/creating_a_workload/creating_a_daemonset.rst new file mode 100644 index 0000000..ff71c86 --- /dev/null +++ b/umn/source/workloads/creating_a_workload/creating_a_daemonset.rst @@ -0,0 +1,201 @@ +:original_name: cce_10_0216.html + +.. _cce_10_0216: + +Creating a DaemonSet +==================== + +Scenario +-------- + +CCE provides deployment and management capabilities for multiple types of containers and supports features of container workloads, including creation, configuration, monitoring, scaling, upgrade, uninstall, service discovery, and load balancing. + +DaemonSet ensures that only one pod runs on all or some nodes. When a node is added to a cluster, a new pod is also added for the node. When a node is removed from a cluster, the pod is also reclaimed. If a DaemonSet is deleted, all pods created by it will be deleted. + +The typical application scenarios of a DaemonSet are as follows: + +- Run the cluster storage daemon, such as glusterd or Ceph, on each node. +- Run the log collection daemon, such as Fluentd or Logstash, on each node. +- Run the monitoring daemon, such as Prometheus Node Exporter, collectd, Datadog agent, New Relic agent, or Ganglia (gmond), on each node. + +You can deploy a DaemonSet for each type of daemons on all nodes, or deploy multiple DaemonSets for the same type of daemons. In the second case, DaemonSets have different flags and different requirements on memory and CPU for different hardware types. + +Prerequisites +------------- + +You must have one cluster available before creating a DaemonSet. For details on how to create a cluster, see :ref:`Creating a Cluster `. + +Using the CCE Console +--------------------- + +#. Log in to the CCE console. + +#. Click the cluster name to go to the cluster console, choose **Workloads** in the navigation pane, and click the **Create Workload** in the upper right corner. + +#. Set basic information about the workload. + + **Basic Info** + + - **Workload Type**: Select **DaemonSet**. For details about workload types, see :ref:`Overview `. + - **Workload Name**: Enter the name of the workload. Enter 1 to 63 characters starting with a lowercase letter and ending with a lowercase letter or digit. Only lowercase letters, digits, and hyphens (-) are allowed. + - **Namespace**: Select the namespace of the workload. The default value is **default**. You can also click **Create Namespace** to create one. For details, see :ref:`Creating a Namespace `. + - **Container Runtime**: A CCE cluster uses runC by default, whereas a CCE Turbo cluster supports both runC and Kata. For details about the differences, see :ref:`Kata Runtime and Common Runtime `. + - **Time Zone Synchronization**: Specify whether to enable time zone synchronization. After time zone synchronization is enabled, the container and node use the same time zone. The time zone synchronization function depends on the local disk mounted to the container. Do not modify or delete the time zone. For details, see :ref:`Configuring Time Zone Synchronization `. + + **Container Settings** + + - Container Information + + Multiple containers can be configured in a pod. You can click **Add Container** on the right to configure multiple containers for the pod. + + - **Basic Info**: Configure basic information about the container. + + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+====================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | Container Name | Name the container. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Pull Policy | Image update or pull policy. If you select **Always**, the image is pulled from the image repository each time. If you do not select **Always**, the existing image of the node is preferentially used. If the image does not exist, the image is pulled from the image repository. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Image Name | Click **Select Image** and select the image used by the container. | + | | | + | | To use a third-party image, see :ref:`Using Third-Party Images `. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Image Tag | Select the image tag to be deployed. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | CPU Quota | - **Request**: minimum number of CPU cores required by a container. The default value is 0.25 cores. | + | | - **Limit**: maximum number of CPU cores available for a container. Do not leave **Limit** unspecified. Otherwise, intensive use of container resources will occur and your workload may exhibit unexpected behavior. | + | | | + | | If **Request** and **Limit** are not specified, the quota is not limited. For more information and suggestions about **Request** and **Limit**, see :ref:`Setting Container Specifications `. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Memory Quota | - **Request**: minimum amount of memory required by a container. The default value is 512 MiB. | + | | - **Limit**: maximum amount of memory available for a container. When memory usage exceeds the specified memory limit, the container will be terminated. | + | | | + | | If **Request** and **Limit** are not specified, the quota is not limited. For more information and suggestions about **Request** and **Limit**, see :ref:`Setting Container Specifications `. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | (Optional) GPU Quota | Configurable only when the cluster contains GPU nodes and the :ref:`gpu-beta ` add-on is installed. | + | | | + | | - **All**: The GPU is not used. | + | | - **Dedicated**: GPU resources are exclusively used by the container. | + | | - **Shared**: percentage of GPU resources used by the container. For example, if this parameter is set to **10%**, the container uses 10% of GPU resources. | + | | | + | | For details about how to use GPU in the cluster, see :ref:`Default GPU Scheduling in Kubernetes `. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | (Optional) Privileged Container | Programs in a privileged container have certain privileges. | + | | | + | | If **Privileged Container** is enabled, the container is assigned privileges. For example, privileged containers can manipulate network devices on the host machine and modify kernel parameters. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | (Optional) Init Container | Indicates whether to use the container as an init container. The init container does not support health check. | + | | | + | | An init container is a special container that runs before other app containers in a pod are started. Each pod can contain multiple containers. In addition, a pod can contain one or more Init containers. Application containers in a pod are started and run only after the running of all Init containers completes. For details, see `Init Container `__. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + - (Optional) **Lifecycle**: Configure operations to be performed in a specific phase of the container lifecycle, such as Startup Command, Post-Start, and Pre-Stop. For details, see :ref:`Setting Container Lifecycle Parameters `. + + - (Optional) **Health Check**: Set the liveness probe, ready probe, and startup probe as required. For details, see :ref:`Setting Health Check for a Container `. + + - (Optional) **Environment Variables**: Set variables for the container running environment using key-value pairs. These variables transfer external information to containers running in pods and can be flexibly modified after application deployment. For details, see :ref:`Setting an Environment Variable `. + + - (Optional) **Data Storage**: Mount local storage or cloud storage to the container. The application scenarios and mounting modes vary with the storage type. For details, see :ref:`Storage `. + + - (Optional) **Security Context**: Set container permissions to protect the system and other containers from being affected. Enter the user ID to set container permissions and prevent systems and other containers from being affected. + + - (Optional) **Logging**: Report container stdout streams to AOM by default and require no manual settings. You can manually configure the log collection path. For details, see :ref:`Using ICAgent to Collect Container Logs `. + + To disable the standard output of the current workload, add the annotation kubernetes.AOM.log.stdout: [] in :ref:`Labels and Annotations `. For details about how to use this annotation, see :ref:`Table 1 `. + + - **Image Access Credential**: Select the credential used for accessing the image repository. The default value is **default-secret**. You can use default-secret to access images in SWR. For details about **default-secret**, see :ref:`default-secret `. + + - (Optional) **GPU**: **All** is selected by default. The workload instance will be scheduled to the node with the specified GPU graphics card type. + + **(Optional) Service Settings** + + A Service provides external access for pods. With a static IP address, a Service forwards access traffic to pods and performs automatic load balancing for these pods. + + You can also create a Service after creating a workload. For details about Services of different types, see :ref:`Overview `. + + **(Optional) Advanced Settings** + + - Upgrade: Specify the upgrade mode and upgrade parameters of the workload. **Rolling upgrade** and **Replace upgrade** are supported. For details, see :ref:`Configuring the Workload Upgrade Policy `. + + - **Scheduling**: Configure affinity and anti-affinity policies for flexible workload scheduling. Node affinity, pod affinity, and pod anti-affinity are supported. For details, see :ref:`Scheduling Policy (Affinity/Anti-affinity) `. + + - **Toleration**: Using both taints and tolerations allows (not forcibly) the pod to be scheduled to a node with the matching taints, and controls the pod eviction policies after the node where the pod is located is tainted. For details, see :ref:`Taints and Tolerations `. + - **Labels and Annotations**: Add labels or annotations for pods using key-value pairs. After entering the key and value, click **Confirm**. For details about how to use and configure labels and annotations, see :ref:`Labels and Annotations `. + - **DNS**: Configure a separate DNS policy for the workload. For details, see :ref:`DNS Configuration `. + - Network configuration: + + - Pod ingress/egress bandwidth limitation: You can set ingress/egress bandwidth limitation for pods. For details, see :ref:`Configuring QoS Rate Limiting for Inter-Pod Access `. + +#. Click **Create Workload** in the lower right corner. + +Using kubectl +------------- + +The following procedure uses Nginx as an example to describe how to create a workload using kubectl. + +#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. + +#. Create and edit the **nginx-daemonset.yaml** file. **nginx-daemonset.yaml** is an example file name, and you can change it as required. + + **vi nginx-daemonset.yaml** + + The content of the description file is as follows: The following provides an example. For more information on DaemonSets, see `Kubernetes documents `__. + + .. code-block:: + + apiVersion: apps/v1 + kind: DaemonSet + metadata: + name: nginx-daemonset + labels: + app: nginx-daemonset + spec: + selector: + matchLabels: + app: nginx-daemonset + template: + metadata: + labels: + app: nginx-daemonset + spec: + nodeSelector: # Node selection. A pod is created on a node only when the node meets daemon=need. + daemon: need + containers: + - name: nginx-daemonset + image: nginx:alpine + resources: + limits: + cpu: 250m + memory: 512Mi + requests: + cpu: 250m + memory: 512Mi + imagePullSecrets: + - name: default-secret + + The **replicas** parameter used in defining a Deployment or StatefulSet does not exist in the above configuration for a DaemonSet, because each node has only one replica. It is fixed. + + The nodeSelector in the preceding pod template specifies that a pod is created only on the nodes that meet **daemon=need**, as shown in the following figure. If you want to create a pod on each node, delete the label. + +#. Create a DaemonSet. + + **kubectl create -f nginx-daemonset.yaml** + + If the following information is displayed, the DaemonSet is being created. + + .. code-block:: + + daemonset.apps/nginx-daemonset created + +#. Query the DaemonSet status. + + **kubectl get ds** + + .. code-block:: + + $ kubectl get ds + NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE + nginx-daemonset 1 1 0 1 0 daemon=need 116s + +#. If the workload will be accessed through a ClusterIP or NodePort Service, set the corresponding workload access type. For details, see :ref:`Network `. diff --git a/umn/source/workloads/creating_a_deployment.rst b/umn/source/workloads/creating_a_workload/creating_a_deployment.rst similarity index 50% rename from umn/source/workloads/creating_a_deployment.rst rename to umn/source/workloads/creating_a_workload/creating_a_deployment.rst index 2498905..7d83c93 100644 --- a/umn/source/workloads/creating_a_deployment.rst +++ b/umn/source/workloads/creating_a_workload/creating_a_deployment.rst @@ -13,7 +13,7 @@ Deployments are workloads (for example, Nginx) that do not store any data or sta Prerequisites ------------- -- Before creating a containerized workload, you must have an available cluster. For details about how to create a cluster, see :ref:`Creating a CCE Cluster `. +- Before creating a workload, you must have an available cluster. For details on how to create a cluster, see :ref:`Creating a Cluster `. - To enable public access to a workload, ensure that an EIP or load balancer has been bound to at least one node in the cluster. .. note:: @@ -25,17 +25,17 @@ Using the CCE Console #. Log in to the CCE console. -#. Click the cluster name and access the cluster details page, choose **Workloads** in the navigation pane, and click the **Create Workload** in the upper right corner. +#. Click the cluster name to go to the cluster console, choose **Workloads** in the navigation pane, and click the **Create Workload** in the upper right corner. #. Set basic information about the workload. **Basic Info** - **Workload Type**: Select **Deployment**. For details about workload types, see :ref:`Overview `. - - **Workload Name**: Enter the name of the workload. Enter 1 to 63 characters starting with a lowercase letter and ending with a letter or digit. Only lowercase letters, digits, and hyphens (-) are allowed. + - **Workload Name**: Enter the name of the workload. Enter 1 to 63 characters starting with a lowercase letter and ending with a lowercase letter or digit. Only lowercase letters, digits, and hyphens (-) are allowed. - **Namespace**: Select the namespace of the workload. The default value is **default**. You can also click **Create Namespace** to create one. For details, see :ref:`Creating a Namespace `. - - **Pods**: Enter the number of pods. - - **Container Runtime**: A CCE cluster uses runC by default, whereas a CCE Turbo cluster supports both runC and Kata. For details about the differences between runC and Kata, see :ref:`Kata Containers and Common Containers `. + - **Pods**: Enter the number of pods of the workload. + - **Container Runtime**: A CCE cluster uses runC by default, whereas a CCE Turbo cluster supports both runC and Kata. For details about the differences, see :ref:`Kata Runtime and Common Runtime `. - **Time Zone Synchronization**: Specify whether to enable time zone synchronization. After time zone synchronization is enabled, the container and node use the same time zone. The time zone synchronization function depends on the local disk mounted to the container. Do not modify or delete the time zone. For details, see :ref:`Configuring Time Zone Synchronization `. **Container Settings** @@ -44,36 +44,90 @@ Using the CCE Console Multiple containers can be configured in a pod. You can click **Add Container** on the right to configure multiple containers for the pod. - - **Basic Info**: See :ref:`Setting Basic Container Information `. - - **Lifecycle**: See :ref:`Setting Container Lifecycle Parameters `. - - **Health Check**: See :ref:`Setting Health Check for a Container `. - - **Environment Variables**: See :ref:`Setting an Environment Variable `. - - **Data Storage**: See :ref:`Overview `. + - **Basic Info**: Configure basic information about the container. + + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+====================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | Container Name | Name the container. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Pull Policy | Image update or pull policy. If you select **Always**, the image is pulled from the image repository each time. If you do not select **Always**, the existing image of the node is preferentially used. If the image does not exist, the image is pulled from the image repository. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Image Name | Click **Select Image** and select the image used by the container. | + | | | + | | To use a third-party image, see :ref:`Using Third-Party Images `. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Image Tag | Select the image tag to be deployed. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | CPU Quota | - **Request**: minimum number of CPU cores required by a container. The default value is 0.25 cores. | + | | - **Limit**: maximum number of CPU cores available for a container. Do not leave **Limit** unspecified. Otherwise, intensive use of container resources will occur and your workload may exhibit unexpected behavior. | + | | | + | | If **Request** and **Limit** are not specified, the quota is not limited. For more information and suggestions about **Request** and **Limit**, see :ref:`Setting Container Specifications `. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Memory Quota | - **Request**: minimum amount of memory required by a container. The default value is 512 MiB. | + | | - **Limit**: maximum amount of memory available for a container. When memory usage exceeds the specified memory limit, the container will be terminated. | + | | | + | | If **Request** and **Limit** are not specified, the quota is not limited. For more information and suggestions about **Request** and **Limit**, see :ref:`Setting Container Specifications `. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | (Optional) GPU Quota | Configurable only when the cluster contains GPU nodes and the :ref:`gpu-beta ` add-on is installed. | + | | | + | | - **All**: The GPU is not used. | + | | - **Dedicated**: GPU resources are exclusively used by the container. | + | | - **Shared**: percentage of GPU resources used by the container. For example, if this parameter is set to **10%**, the container uses 10% of GPU resources. | + | | | + | | For details about how to use GPU in the cluster, see :ref:`Default GPU Scheduling in Kubernetes `. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | (Optional) Privileged Container | Programs in a privileged container have certain privileges. | + | | | + | | If **Privileged Container** is enabled, the container is assigned privileges. For example, privileged containers can manipulate network devices on the host machine and modify kernel parameters. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | (Optional) Init Container | Indicates whether to use the container as an init container. The init container does not support health check. | + | | | + | | An init container is a special container that runs before other app containers in a pod are started. Each pod can contain multiple containers. In addition, a pod can contain one or more Init containers. Application containers in a pod are started and run only after the running of all Init containers completes. For details, see `Init Container `__. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + - (Optional) **Lifecycle**: Configure operations to be performed in a specific phase of the container lifecycle, such as Startup Command, Post-Start, and Pre-Stop. For details, see :ref:`Setting Container Lifecycle Parameters `. + + - (Optional) **Health Check**: Set the liveness probe, ready probe, and startup probe as required. For details, see :ref:`Setting Health Check for a Container `. + + - (Optional) **Environment Variables**: Set variables for the container running environment using key-value pairs. These variables transfer external information to containers running in pods and can be flexibly modified after application deployment. For details, see :ref:`Setting an Environment Variable `. + + - (Optional) **Data Storage**: Mount local storage or cloud storage to the container. The application scenarios and mounting modes vary with the storage type. For details, see :ref:`Storage `. .. note:: If the workload contains more than one pod, EVS volumes cannot be mounted. - - **Security Context**: Set container permissions to protect the system and other containers from being affected. Enter the user ID to set container permissions and prevent systems and other containers from being affected. - - **Logging**: See :ref:`Using ICAgent to Collect Container Logs `. + - (Optional) **Security Context**: Set container permissions to protect the system and other containers from being affected. Enter the user ID to set container permissions and prevent systems and other containers from being affected. + + - (Optional) **Logging**: Report container stdout streams to AOM by default and require no manual settings. You can manually configure the log collection path. For details, see :ref:`Using ICAgent to Collect Container Logs `. + + To disable the standard output of the current workload, add the annotation kubernetes.AOM.log.stdout: [] in :ref:`Labels and Annotations `. For details about how to use this annotation, see :ref:`Table 1 `. - **Image Access Credential**: Select the credential used for accessing the image repository. The default value is **default-secret**. You can use default-secret to access images in SWR. For details about **default-secret**, see :ref:`default-secret `. - - **GPU graphics card**: **All** is selected by default. The workload instance will be scheduled to the node with the specified GPU graphics card type. + - (Optional) **GPU**: **All** is selected by default. The workload instance will be scheduled to the node with the specified GPU graphics card type. - **Service Settings** + **(Optional) Service Settings** - A Service is used for pod access. With a fixed IP address, a Service forwards access traffic to pods and performs load balancing for these pods. + A Service provides external access for pods. With a static IP address, a Service forwards access traffic to pods and performs automatic load balancing for these pods. - You can also create a Service after creating a workload. For details about the Service, see :ref:`Service Overview `. + You can also create a Service after creating a workload. For details about Services of different types, see :ref:`Overview `. - **Advanced Settings** + **(Optional) Advanced Settings** + + - Upgrade: Specify the upgrade mode and upgrade parameters of the workload. **Rolling upgrade** and **Replace upgrade** are supported. For details, see :ref:`Configuring the Workload Upgrade Policy `. + + - **Scheduling**: Configure affinity and anti-affinity policies for flexible workload scheduling. Node affinity, pod affinity, and pod anti-affinity are supported. For details, see :ref:`Scheduling Policy (Affinity/Anti-affinity) `. + + - **Toleration**: Using both taints and tolerations allows (not forcibly) the pod to be scheduled to a node with the matching taints, and controls the pod eviction policies after the node where the pod is located is tainted. For details, see :ref:`Taints and Tolerations `. + + - .. _cce_10_0047__li179714209414: + + **Labels and Annotations**: Add labels or annotations for pods using key-value pairs. After entering the key and value, click **Confirm**. For details about how to use and configure labels and annotations, see :ref:`Labels and Annotations `. + + - **DNS**: Configure a separate DNS policy for the workload. For details, see :ref:`DNS Configuration `. - - **Upgrade**: See :ref:`Configuring the Workload Upgrade Policy `. - - **Scheduling**: See :ref:`Scheduling Policy (Affinity/Anti-affinity) `. - - **Labels and Annotations**: See :ref:`Pod Labels and Annotations `. - - **Toleration**: Using both taints and tolerations allows (not forcibly) the pod to be scheduled to a node with the matching taints, and controls the pod eviction policies after the node where the pod is located is tainted. For details, see :ref:`Tolerations `. - - **DNS**: See :ref:`DNS Configuration `. - Network configuration: - Pod ingress/egress bandwidth limitation: You can set ingress/egress bandwidth limitation for pods. For details, see :ref:`Configuring QoS Rate Limiting for Inter-Pod Access `. @@ -144,7 +198,7 @@ The following procedure uses Nginx as an example to describe how to create a wor +-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ | name | Name of the Deployment. | Mandatory | +-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ - | Spec | Detailed description of the Deployment. | Mandatory | + | spec | Detailed description of the Deployment. | Mandatory | +-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ | replicas | Number of pods. | Mandatory | +-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ @@ -202,4 +256,4 @@ The following procedure uses Nginx as an example to describe how to create a wor - **AVAILABLE**: indicates the number of available pods. - **AGE**: period the Deployment keeps running -#. If the Deployment will be accessed through a ClusterIP or NodePort Service, add the corresponding Service. For details, see :ref:`Networking `. +#. If the Deployment will be accessed through a ClusterIP or NodePort Service, add the corresponding Service. For details, see :ref:`Network `. diff --git a/umn/source/workloads/creating_a_workload/creating_a_job.rst b/umn/source/workloads/creating_a_workload/creating_a_job.rst new file mode 100644 index 0000000..e851118 --- /dev/null +++ b/umn/source/workloads/creating_a_workload/creating_a_job.rst @@ -0,0 +1,245 @@ +:original_name: cce_10_0150.html + +.. _cce_10_0150: + +Creating a Job +============== + +Scenario +-------- + +Jobs are short-lived and run for a certain time to completion. They can be executed immediately after being deployed. It is completed after it exits normally (exit 0). + +A job is a resource object that is used to control batch tasks. It is different from a long-term servo workload (such as Deployment and StatefulSet). + +A job is started and terminated at specific times, while a long-term servo workload runs unceasingly unless being terminated. The pods managed by a job automatically exit after successfully completing the job based on user configurations. The success flag varies according to the spec.completions policy. + +- One-off jobs: A single pod runs once until successful termination. +- Jobs with a fixed success count: N pods run until successful termination. +- A queue job is considered completed based on the global success confirmed by the application. + +Prerequisites +------------- + +Resources have been created. For details, see :ref:`Creating a Node `. If clusters and nodes are available, you need not create them again. + +Using the CCE Console +--------------------- + +#. Log in to the CCE console. + +#. Click the cluster name to go to the cluster console, choose **Workloads** in the navigation pane, and click the **Create Workload** in the upper right corner. + +#. Set basic information about the workload. + + **Basic Info** + + - **Workload Type**: Select **Job**. For details about workload types, see :ref:`Overview `. + - **Workload Name**: Enter the name of the workload. Enter 1 to 63 characters starting with a lowercase letter and ending with a lowercase letter or digit. Only lowercase letters, digits, and hyphens (-) are allowed. + - **Namespace**: Select the namespace of the workload. The default value is **default**. You can also click **Create Namespace** to create one. For details, see :ref:`Creating a Namespace `. + - **Pods**: Enter the number of pods of the workload. + - **Container Runtime**: A CCE cluster uses runC by default, whereas a CCE Turbo cluster supports both runC and Kata. For details about the differences, see :ref:`Kata Runtime and Common Runtime `. + + **Container Settings** + + - Container Information + + Multiple containers can be configured in a pod. You can click **Add Container** on the right to configure multiple containers for the pod. + + - **Basic Info**: Configure basic information about the container. + + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+====================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | Container Name | Name the container. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Pull Policy | Image update or pull policy. If you select **Always**, the image is pulled from the image repository each time. If you do not select **Always**, the existing image of the node is preferentially used. If the image does not exist, the image is pulled from the image repository. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Image Name | Click **Select Image** and select the image used by the container. | + | | | + | | To use a third-party image, see :ref:`Using Third-Party Images `. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Image Tag | Select the image tag to be deployed. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | CPU Quota | - **Request**: minimum number of CPU cores required by a container. The default value is 0.25 cores. | + | | - **Limit**: maximum number of CPU cores available for a container. Do not leave **Limit** unspecified. Otherwise, intensive use of container resources will occur and your workload may exhibit unexpected behavior. | + | | | + | | If **Request** and **Limit** are not specified, the quota is not limited. For more information and suggestions about **Request** and **Limit**, see :ref:`Setting Container Specifications `. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Memory Quota | - **Request**: minimum amount of memory required by a container. The default value is 512 MiB. | + | | - **Limit**: maximum amount of memory available for a container. When memory usage exceeds the specified memory limit, the container will be terminated. | + | | | + | | If **Request** and **Limit** are not specified, the quota is not limited. For more information and suggestions about **Request** and **Limit**, see :ref:`Setting Container Specifications `. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | (Optional) GPU Quota | Configurable only when the cluster contains GPU nodes and the :ref:`gpu-beta ` add-on is installed. | + | | | + | | - **All**: The GPU is not used. | + | | - **Dedicated**: GPU resources are exclusively used by the container. | + | | - **Shared**: percentage of GPU resources used by the container. For example, if this parameter is set to **10%**, the container uses 10% of GPU resources. | + | | | + | | For details about how to use GPU in the cluster, see :ref:`Default GPU Scheduling in Kubernetes `. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | (Optional) Privileged Container | Programs in a privileged container have certain privileges. | + | | | + | | If **Privileged Container** is enabled, the container is assigned privileges. For example, privileged containers can manipulate network devices on the host machine and modify kernel parameters. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | (Optional) Init Container | Indicates whether to use the container as an init container. The init container does not support health check. | + | | | + | | An init container is a special container that runs before other app containers in a pod are started. Each pod can contain multiple containers. In addition, a pod can contain one or more Init containers. Application containers in a pod are started and run only after the running of all Init containers completes. For details, see `Init Container `__. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + - (Optional) **Lifecycle**: Configure operations to be performed in a specific phase of the container lifecycle, such as Startup Command, Post-Start, and Pre-Stop. For details, see :ref:`Setting Container Lifecycle Parameters `. + + - (Optional) **Environment Variables**: Set variables for the container running environment using key-value pairs. These variables transfer external information to containers running in pods and can be flexibly modified after application deployment. For details, see :ref:`Setting an Environment Variable `. + + - (Optional) **Data Storage**: Mount local storage or cloud storage to the container. The application scenarios and mounting modes vary with the storage type. For details, see :ref:`Storage `. + + .. note:: + + If the workload contains more than one pod, EVS volumes cannot be mounted. + + - (Optional) **Logging**: Report container stdout streams to AOM by default and require no manual settings. You can manually configure the log collection path. For details, see :ref:`Using ICAgent to Collect Container Logs `. + + To disable the standard output of the current workload, add the annotation kubernetes.AOM.log.stdout: [] in :ref:`Labels and Annotations `. For details about how to use this annotation, see :ref:`Table 1 `. + + - **Image Access Credential**: Select the credential used for accessing the image repository. The default value is **default-secret**. You can use default-secret to access images in SWR. For details about **default-secret**, see :ref:`default-secret `. + + - (Optional) **GPU**: **All** is selected by default. The workload instance will be scheduled to the node with the specified GPU graphics card type. + + **(Optional) Advanced Settings** + + - **Labels and Annotations**: Add labels or annotations for pods using key-value pairs. After entering the key and value, click **Confirm**. For details about how to use and configure labels and annotations, see :ref:`Labels and Annotations `. + + - **Job Settings** + + - **Parallel Pods**: Maximum number of pods that can run in parallel during job execution. The value cannot be greater than the total number of pods in the job. + - **Timeout (s)**: Once a job reaches this time, the job status becomes failed and all pods in this job will be deleted. If you leave this parameter blank, the job will never time out. + + - Network configuration: + + - Pod ingress/egress bandwidth limitation: You can set ingress/egress bandwidth limitation for pods. For details, see :ref:`Configuring QoS Rate Limiting for Inter-Pod Access `. + +#. Click **Create Workload** in the lower right corner. + +.. _cce_10_0150__section450152719412: + +Using kubectl +------------- + +A job has the following configuration parameters: + +- **spec.template**: has the same schema as a pod. +- **RestartPolicy**: can only be set to **Never** or **OnFailure**. +- For a single-pod job, the job ends after the pod runs successfully by default. +- **.spec.completions**: indicates the number of pods that need to run successfully to end a job. The default value is **1**. +- **.spec.parallelism**: indicates the number of pods that run concurrently. The default value is **1**. +- **spec.backoffLimit**: indicates the maximum number of retries performed if a pod fails. When the limit is reached, the pod will not try again. +- **.spec.activeDeadlineSeconds**: indicates the running time of pods. Once the time is reached, all pods of the job are terminated. The priority of .spec.activeDeadlineSeconds is higher than that of .spec.backoffLimit. That is, if a job reaches the .spec.activeDeadlineSeconds, the spec.backoffLimit is ignored. + +Based on the **.spec.completions** and **.spec.Parallelism** settings, jobs are classified into the following types. + +.. table:: **Table 1** Job types + + +---------------------------------------------+-----------------------------------------------------------------------+-------------------------------------------------------+ + | Job Type | Description | Example | + +=============================================+=======================================================================+=======================================================+ + | One-off jobs | A single pod runs once until successful termination. | Database migration | + +---------------------------------------------+-----------------------------------------------------------------------+-------------------------------------------------------+ + | Jobs with a fixed completion count | One pod runs until reaching the specified **completions** count. | Work queue processing pod | + +---------------------------------------------+-----------------------------------------------------------------------+-------------------------------------------------------+ + | Parallel jobs with a fixed completion count | Multiple pods run until reaching the specified **completions** count. | Multiple pods for processing work queues concurrently | + +---------------------------------------------+-----------------------------------------------------------------------+-------------------------------------------------------+ + | Parallel jobs | One or more pods run until successful termination. | Multiple pods for processing work queues concurrently | + +---------------------------------------------+-----------------------------------------------------------------------+-------------------------------------------------------+ + +The following is an example job, which calculates Pi till the 2000\ :sup:`th` digit and prints the output. + +.. code-block:: + + apiVersion: batch/v1 + kind: Job + metadata: + name: myjob + spec: + completions: 50 # 50 pods need to be run to finish a job. In this example, Pi is printed for 50 times. + parallelism: 5 # 5 pods are run in parallel. + backoffLimit: 5 # The maximum number of retry times is 5. + template: + spec: + containers: + - name: pi + image: perl + command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] + restartPolicy: Never + imagePullSecrets: + - name: default-secret + +**Description** + +- **apiVersion: batch/v1** indicates the version of the current job. +- **kind: Job** indicates that the current resource is a job. +- **restartPolicy: Never** indicates the current restart policy. For jobs, this parameter can only be set to **Never** or **OnFailure**. For other controllers (for example, Deployments), you can set this parameter to **Always**. + +**Run the job.** + +#. Start the job. + + .. code-block:: console + + [root@k8s-master k8s]# kubectl apply -f myjob.yaml + job.batch/myjob created + +#. View the job details. + + **kubectl get job** + + .. code-block:: console + + [root@k8s-master k8s]# kubectl get job + NAME COMPLETIONS DURATION AGE + myjob 50/50 23s 3m45s + + If the value of **COMPLETIONS** is **50/50**, the job is successfully executed. + +#. Query the pod status. + + **kubectl get pod** + + .. code-block:: console + + [root@k8s-master k8s]# kubectl get pod + NAME READY STATUS RESTARTS AGE + myjob-29qlw 0/1 Completed 0 4m5s + ... + + If the status is **Completed**, the job is complete. + +#. View the pod logs. + + **kubectl logs** + + .. code-block:: + + # kubectl logs myjob-29qlw + 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632788659361533818279682303019520353018529689957736225994138912497217752834791315155748572424541506959508295331168617278558890750983817546374649393192550604009277016711390098488240128583616035637076601047101819429555961989467678374494482553797747268471040475346462080466842590694912933136770289891521047521620569660240580381501935112533824300355876402474964732639141992726042699227967823547816360093417216412199245863150302861829745557067498385054945885869269956909272107975093029553211653449872027559602364806654991198818347977535663698074265425278625518184175746728909777727938000816470600161452491921732172147723501414419735685481613611573525521334757418494684385233239073941433345477624168625189835694855620992192221842725502542568876717904946016534668049886272327917860857843838279679766814541009538837863609506800642251252051173929848960841284886269456042419652850222106611863067442786220391949450471237137869609563643719172874677646575739624138908658326459958133904780275901 + +Related Operations +------------------ + +After a one-off job is created, you can perform operations listed in :ref:`Table 2 `. + +.. _cce_10_0150__t84075653e7544394939d13740fad0c20: + +.. table:: **Table 2** Related operations + + +-----------------------------------+-------------------------------------------------------------------------------------------------------------+ + | Operation | Description | + +===================================+=============================================================================================================+ + | Editing a YAML file | Click **More** > **Edit YAML** next to the job name to edit the YAML file corresponding to the current job. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------+ + | Deleting a job | #. Select the job to be deleted and choose **More** > **Delete** in the **Operation** column. | + | | | + | | #. Click **Yes**. | + | | | + | | Deleted jobs cannot be restored. Exercise caution when deleting a job. | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/workloads/creating_a_workload/creating_a_statefulset.rst b/umn/source/workloads/creating_a_workload/creating_a_statefulset.rst new file mode 100644 index 0000000..6055e5e --- /dev/null +++ b/umn/source/workloads/creating_a_workload/creating_a_statefulset.rst @@ -0,0 +1,275 @@ +:original_name: cce_10_0048.html + +.. _cce_10_0048: + +Creating a StatefulSet +====================== + +Scenario +-------- + +StatefulSets are a type of workloads whose data or status is stored while they are running. For example, MySQL is a StatefulSet because it needs to store new data. + +A container can be migrated between different hosts, but data is not stored on the hosts. To store StatefulSet data persistently, attach HA storage volumes provided by CCE to the container. + +Constraints +----------- + +- When you delete or scale a StatefulSet, the system does not delete the storage volumes associated with the StatefulSet to ensure data security. +- When you delete a StatefulSet, reduce the number of replicas to **0** before deleting the StatefulSet so that pods in the StatefulSet can be stopped in order. +- When you create a StatefulSet, a headless Service is required for pod access. For details, see :ref:`Headless Service `. +- When a node is unavailable, pods become **Unready**. In this case, manually delete the pods of the StatefulSet so that the pods can be migrated to a normal node. + +Prerequisites +------------- + +- Before creating a workload, you must have an available cluster. For details on how to create a cluster, see :ref:`Creating a Cluster `. +- To enable public access to a workload, ensure that an EIP or load balancer has been bound to at least one node in the cluster. + + .. note:: + + If a pod has multiple containers, ensure that the ports used by the containers do not conflict with each other. Otherwise, creating the StatefulSet will fail. + +Using the CCE Console +--------------------- + +#. Log in to the CCE console. + +#. Click the cluster name to go to the cluster console, choose **Workloads** in the navigation pane, and click the **Create Workload** in the upper right corner. + +#. Set basic information about the workload. + + **Basic Info** + + - **Workload Type**: Select **StatefulSet**. For details about workload types, see :ref:`Overview `. + - **Workload Name**: Enter the name of the workload. Enter 1 to 63 characters starting with a lowercase letter and ending with a lowercase letter or digit. Only lowercase letters, digits, and hyphens (-) are allowed. + - **Namespace**: Select the namespace of the workload. The default value is **default**. You can also click **Create Namespace** to create one. For details, see :ref:`Creating a Namespace `. + - **Pods**: Enter the number of pods of the workload. + - **Container Runtime**: A CCE cluster uses runC by default, whereas a CCE Turbo cluster supports both runC and Kata. For details about the differences, see :ref:`Kata Runtime and Common Runtime `. + - **Time Zone Synchronization**: Specify whether to enable time zone synchronization. After time zone synchronization is enabled, the container and node use the same time zone. The time zone synchronization function depends on the local disk mounted to the container. Do not modify or delete the time zone. For details, see :ref:`Configuring Time Zone Synchronization `. + + **Container Settings** + + - Container Information + + Multiple containers can be configured in a pod. You can click **Add Container** on the right to configure multiple containers for the pod. + + - **Basic Info**: Configure basic information about the container. + + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+====================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | Container Name | Name the container. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Pull Policy | Image update or pull policy. If you select **Always**, the image is pulled from the image repository each time. If you do not select **Always**, the existing image of the node is preferentially used. If the image does not exist, the image is pulled from the image repository. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Image Name | Click **Select Image** and select the image used by the container. | + | | | + | | To use a third-party image, see :ref:`Using Third-Party Images `. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Image Tag | Select the image tag to be deployed. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | CPU Quota | - **Request**: minimum number of CPU cores required by a container. The default value is 0.25 cores. | + | | - **Limit**: maximum number of CPU cores available for a container. Do not leave **Limit** unspecified. Otherwise, intensive use of container resources will occur and your workload may exhibit unexpected behavior. | + | | | + | | If **Request** and **Limit** are not specified, the quota is not limited. For more information and suggestions about **Request** and **Limit**, see :ref:`Setting Container Specifications `. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Memory Quota | - **Request**: minimum amount of memory required by a container. The default value is 512 MiB. | + | | - **Limit**: maximum amount of memory available for a container. When memory usage exceeds the specified memory limit, the container will be terminated. | + | | | + | | If **Request** and **Limit** are not specified, the quota is not limited. For more information and suggestions about **Request** and **Limit**, see :ref:`Setting Container Specifications `. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | (Optional) GPU Quota | Configurable only when the cluster contains GPU nodes and the :ref:`gpu-beta ` add-on is installed. | + | | | + | | - **All**: The GPU is not used. | + | | - **Dedicated**: GPU resources are exclusively used by the container. | + | | - **Shared**: percentage of GPU resources used by the container. For example, if this parameter is set to **10%**, the container uses 10% of GPU resources. | + | | | + | | For details about how to use GPU in the cluster, see :ref:`Default GPU Scheduling in Kubernetes `. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | (Optional) Privileged Container | Programs in a privileged container have certain privileges. | + | | | + | | If **Privileged Container** is enabled, the container is assigned privileges. For example, privileged containers can manipulate network devices on the host machine and modify kernel parameters. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | (Optional) Init Container | Indicates whether to use the container as an init container. The init container does not support health check. | + | | | + | | An init container is a special container that runs before other app containers in a pod are started. Each pod can contain multiple containers. In addition, a pod can contain one or more Init containers. Application containers in a pod are started and run only after the running of all Init containers completes. For details, see `Init Container `__. | + +-----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + - (Optional) **Lifecycle**: Configure operations to be performed in a specific phase of the container lifecycle, such as Startup Command, Post-Start, and Pre-Stop. For details, see :ref:`Setting Container Lifecycle Parameters `. + + - (Optional) **Health Check**: Set the liveness probe, ready probe, and startup probe as required. For details, see :ref:`Setting Health Check for a Container `. + + - (Optional) **Environment Variables**: Set variables for the container running environment using key-value pairs. These variables transfer external information to containers running in pods and can be flexibly modified after application deployment. For details, see :ref:`Setting an Environment Variable `. + + - (Optional) **Data Storage**: Mount local storage or cloud storage to the container. The application scenarios and mounting modes vary with the storage type. For details, see :ref:`Storage `. + + .. note:: + + - StatefulSets support dynamic attachment of EVS disks. For details, see :ref:`Dynamically Mounting an EVS Disk to a StatefulSet ` and :ref:`Dynamically Mounting a Local PV to a StatefulSet `. + + Dynamic mounting is achieved by using the `volumeClaimTemplates `__ field and depends on the dynamic creation capability of StorageClass. A StatefulSet associates each pod with a PVC using the **volumeClaimTemplates** field, and the PVC is bound to the corresponding PV. Therefore, after the pod is rescheduled, the original data can still be mounted based on the PVC name. + + - After a workload is created, the storage that is dynamically mounted cannot be updated. + + - (Optional) **Security Context**: Set container permissions to protect the system and other containers from being affected. Enter the user ID to set container permissions and prevent systems and other containers from being affected. + + - (Optional) **Logging**: Report container stdout streams to AOM by default and require no manual settings. You can manually configure the log collection path. For details, see :ref:`Using ICAgent to Collect Container Logs `. + + To disable the standard output of the current workload, add the annotation kubernetes.AOM.log.stdout: [] in :ref:`Labels and Annotations `. For details about how to use this annotation, see :ref:`Table 1 `. + + - **Image Access Credential**: Select the credential used for accessing the image repository. The default value is **default-secret**. You can use default-secret to access images in SWR. For details about **default-secret**, see :ref:`default-secret `. + + - (Optional) **GPU**: **All** is selected by default. The workload instance will be scheduled to the node with the specified GPU graphics card type. + + **Headless Service Parameters** + + A headless Service is used to solve the problem of mutual access between pods in a StatefulSet. The headless Service provides a fixed access domain name for each pod. For details, see :ref:`Headless Service `. + + **(Optional) Service Settings** + + A Service provides external access for pods. With a static IP address, a Service forwards access traffic to pods and performs automatic load balancing for these pods. + + You can also create a Service after creating a workload. For details about Services of different types, see :ref:`Overview `. + + **(Optional) Advanced Settings** + + - Upgrade: Specify the upgrade mode and upgrade parameters of the workload. **Rolling upgrade** and **Replace upgrade** are supported. For details, see :ref:`Configuring the Workload Upgrade Policy `. + + - **Pod Management Policies**: + + For some distributed systems, the StatefulSet sequence is unnecessary and/or should not occur. These systems require only uniqueness and identifiers. + + - **OrderedReady**: The StatefulSet will deploy, delete, or scale pods in order and one by one. (The StatefulSet continues only after the previous pod is ready or deleted.) This is the default policy. + - **Parallel**: The StatefulSet will create pods in parallel to match the desired scale without waiting, and will delete all pods at once. + + - **Scheduling**: Configure affinity and anti-affinity policies for flexible workload scheduling. Node affinity, pod affinity, and pod anti-affinity are supported. For details, see :ref:`Scheduling Policy (Affinity/Anti-affinity) `. + + - **Toleration**: Using both taints and tolerations allows (not forcibly) the pod to be scheduled to a node with the matching taints, and controls the pod eviction policies after the node where the pod is located is tainted. For details, see :ref:`Taints and Tolerations `. + + - **Labels and Annotations**: Add labels or annotations for pods using key-value pairs. After entering the key and value, click **Confirm**. For details about how to use and configure labels and annotations, see :ref:`Labels and Annotations `. + + - **DNS**: Configure a separate DNS policy for the workload. For details, see :ref:`DNS Configuration `. + + - Network configuration: + + - Pod ingress/egress bandwidth limitation: You can set ingress/egress bandwidth limitation for pods. For details, see :ref:`Configuring QoS Rate Limiting for Inter-Pod Access `. + +#. Click **Create Workload** in the lower right corner. + +Using kubectl +------------- + +In this example, an nginx workload is used and the EVS volume is dynamically mounted to it using the **volumeClaimTemplates** field. + +#. Use kubectl to connect to the cluster. For details, see :ref:`Connecting to a Cluster Using kubectl `. + +#. Create and edit the **nginx-statefulset.yaml** file. + + **nginx-statefulset.yaml** is an example file name, and you can change it as required. + + **vi nginx-statefulset.yaml** + + The following provides an example of the file contents. For more information on StatefulSet, see the `Kubernetes documentation `__. + + .. code-block:: + + apiVersion: apps/v1 + kind: StatefulSet + metadata: + name: nginx + spec: + selector: + matchLabels: + app: nginx + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: container-1 + image: nginx:latest + imagePullPolicy: IfNotPresent + resources: + requests: + cpu: 250m + memory: 512Mi + limits: + cpu: 250m + memory: 512Mi + volumeMounts: + - name: test + readOnly: false + mountPath: /usr/share/nginx/html + subPath: '' + imagePullSecrets: + - name: default-secret + dnsPolicy: ClusterFirst + volumes: [] + serviceName: nginx-svc + replicas: 2 + volumeClaimTemplates: # Dynamically mounts the EVS volume to the workload. + - apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + name: test + namespace: default + annotations: + everest.io/disk-volume-type: SAS # SAS EVS volume type. + labels: + failure-domain.beta.kubernetes.io/region: eu-de # region where the EVS volume is created. + failure-domain.beta.kubernetes.io/zone: # AZ where the EVS volume is created. It must be the same as the AZ of the node. + spec: + accessModes: + - ReadWriteOnce # The value must be ReadWriteOnce for the EVS volume. + resources: + requests: + storage: 10Gi + storageClassName: csi-disk # Storage class name. The value is csi-disk for the EVS volume. + updateStrategy: + type: RollingUpdate + + **vi nginx-headless.yaml** + + .. code-block:: + + apiVersion: v1 + kind: Service + metadata: + name: nginx-svc + namespace: default + labels: + app: nginx + spec: + selector: + app: nginx + version: v1 + clusterIP: None + ports: + - name: nginx + targetPort: 80 + nodePort: 0 + port: 80 + protocol: TCP + type: ClusterIP + +#. Create a workload and the corresponding headless service. + + **kubectl create -f nginx-statefulset.yaml** + + If the following information is displayed, the StatefulSet has been successfully created. + + .. code-block:: + + statefulset.apps/nginx created + + **kubectl create -f nginx-headless.yaml** + + If the following information is displayed, the headless service has been successfully created. + + .. code-block:: + + service/nginx-svc created + +#. If the workload will be accessed through a ClusterIP or NodePort Service, set the corresponding workload access type. For details, see :ref:`Network `. diff --git a/umn/source/workloads/creating_a_workload/index.rst b/umn/source/workloads/creating_a_workload/index.rst new file mode 100644 index 0000000..520d302 --- /dev/null +++ b/umn/source/workloads/creating_a_workload/index.rst @@ -0,0 +1,22 @@ +:original_name: cce_10_0673.html + +.. _cce_10_0673: + +Creating a Workload +=================== + +- :ref:`Creating a Deployment ` +- :ref:`Creating a StatefulSet ` +- :ref:`Creating a DaemonSet ` +- :ref:`Creating a Job ` +- :ref:`Creating a Cron Job ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + creating_a_deployment + creating_a_statefulset + creating_a_daemonset + creating_a_job + creating_a_cron_job diff --git a/umn/source/workloads/index.rst b/umn/source/workloads/index.rst index b6cb8e1..0317c6a 100644 --- a/umn/source/workloads/index.rst +++ b/umn/source/workloads/index.rst @@ -6,37 +6,19 @@ Workloads ========= - :ref:`Overview ` -- :ref:`Creating a Deployment ` -- :ref:`Creating a StatefulSet ` -- :ref:`Creating a DaemonSet ` -- :ref:`Creating a Job ` -- :ref:`Creating a Cron Job ` -- :ref:`Managing Workloads and Jobs ` +- :ref:`Creating a Workload ` - :ref:`Configuring a Container ` -- :ref:`GPU Scheduling ` -- :ref:`CPU Core Binding ` - :ref:`Accessing a Container ` -- :ref:`Configuring QoS Rate Limiting for Inter-Pod Access ` -- :ref:`Pod Labels and Annotations ` -- :ref:`Volcano Scheduling ` -- :ref:`Security Group Policies ` +- :ref:`Managing Workloads and Jobs ` +- :ref:`Kata Runtime and Common Runtime ` .. toctree:: :maxdepth: 1 :hidden: overview - creating_a_deployment - creating_a_statefulset - creating_a_daemonset - creating_a_job - creating_a_cron_job - managing_workloads_and_jobs + creating_a_workload/index configuring_a_container/index - gpu_scheduling - cpu_core_binding/index accessing_a_container - configuring_qos_rate_limiting_for_inter-pod_access - pod_labels_and_annotations - volcano_scheduling/index - security_group_policies + managing_workloads_and_jobs + kata_runtime_and_common_runtime diff --git a/umn/source/nodes/node_overview/kata_containers_and_common_containers.rst b/umn/source/workloads/kata_runtime_and_common_runtime.rst similarity index 79% rename from umn/source/nodes/node_overview/kata_containers_and_common_containers.rst rename to umn/source/workloads/kata_runtime_and_common_runtime.rst index 2101440..d864eb0 100644 --- a/umn/source/nodes/node_overview/kata_containers_and_common_containers.rst +++ b/umn/source/workloads/kata_runtime_and_common_runtime.rst @@ -2,43 +2,45 @@ .. _cce_10_0463: -Kata Containers and Common Containers -===================================== +Kata Runtime and Common Runtime +=============================== -The most significant difference is that each Kata container (pod) runs on an independent micro-VM, has an independent OS kernel, and is securely isolated at the virtualization layer. CCE provides container isolation that is more secure than independent private Kubernetes clusters. With isolated OS kernels, computing resources, and networks, pod resources and data will not be preempted and stolen by other pods. +The most significant difference is that each Kata container (pod) runs on an independent micro-VM, has an independent OS kernel, and is securely isolated at the virtualization layer. With Kata runtime, kernels, compute resources, and networks are isolated between containers to protect pod resources and data from being preempted and stolen by other pods. -You can run common or Kata containers on a single node in a CCE Turbo cluster. The differences between them are as follows: +CCE Turbo clusters allow you to create workloads using common runtime or Kata runtime as required. The differences between them are as follows. -+------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+------------------------------------------------------------------------+ -| Category | Kata Container | Common Container (Docker) | Common Container (containerd) | -+==========================================================================================+=====================================================================================================================================================================================================================================================================================================+========================================================================+========================================================================+ -| Node type used to run containers | Bare-metal server (BMS) | VM | VM | -+------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+------------------------------------------------------------------------+ -| Container Engine | containerd | Docker | containerd | -+------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+------------------------------------------------------------------------+ -| Container Runtime | Kata | runC | runC | -+------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+------------------------------------------------------------------------+ -| Container kernel | Exclusive kernel | Sharing the kernel with the host | Sharing the kernel with the host | -+------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+------------------------------------------------------------------------+ -| Container isolation | Lightweight VMs | cgroups and namespaces | cgroups and namespaces | -+------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+------------------------------------------------------------------------+ -| Container engine storage driver | Device Mapper | OverlayFS2 | OverlayFS | -+------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+------------------------------------------------------------------------+ -| `Pod overhead `__ | Memory: 100 MiB | None | None | -| | | | | -| | CPU: 0.1 cores | | | -| | | | | -| | Pod overhead is a feature for accounting for the resources consumed by the pod infrastructure on top of the container requests and limits. For example, if **limits.cpu** is set to 0.5 cores and **limits.memory** to 256 MiB for a pod, the pod will request 0.6-core CPUs and 356 MiB of memory. | | | -+------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+------------------------------------------------------------------------+ -| Minimal specifications | Memory: 256 MiB | None | None | -| | | | | -| | CPU: 0.25 cores | | | -| | | | | -| | It is recommended that the ratio of CPU (unit: core) to memory (unit: GiB) be in the range of 1:1 to 1:8. For example, if CPU is 0.5 cores, the memory should range form 512 MiB to 4 GiB. | | | -+------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+------------------------------------------------------------------------+ -| Container engine CLI | crictl | Docker | crictl | -+------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+------------------------------------------------------------------------+ -| Pod computing resources | The request and limit values must be the same for both CPU and memory. | The request and limit values can be different for both CPU and memory. | The request and limit values can be different for both CPU and memory. | -+------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+------------------------------------------------------------------------+ -| Host network | Not supported | Supported | Supported | -+------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+------------------------------------------------------------------------+ ++------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+ +| Category | Kata Runtime | Common Runtime | ++==========================================================================================+=====================================================================================================================================================================================================================================================================================================+========================================================================+ +| Node type used to run containers | Bare-metal server (BMS) | VM | ++------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+ +| Container engine | containerd | Docker and containerd | ++------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+ +| Container runtime | Kata | runC | ++------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+ +| Container kernel | Exclusive kernel | Sharing the kernel with the host | ++------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+ +| Container isolation | Lightweight VMs | cgroups and namespaces | ++------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+ +| Container engine storage driver | Device Mapper | - Docker container: OverlayFS2 | +| | | - containerd container: OverlayFS | ++------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+ +| `Pod overhead `__ | Memory: 100 MiB | None | +| | | | +| | CPU: 0.1 cores | | +| | | | +| | Pod overhead is a feature for accounting for the resources consumed by the pod infrastructure on top of the container requests and limits. For example, if **limits.cpu** is set to 0.5 cores and **limits.memory** to 256 MiB for a pod, the pod will request 0.6-core CPUs and 356 MiB of memory. | | ++------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+ +| Minimal specifications | Memory: 256 MiB | None | +| | | | +| | CPU: 0.25 cores | | +| | | | +| | It is recommended that the ratio of CPU (unit: core) to memory (unit: GiB) be in the range of 1:1 to 1:8. For example, if CPU is 0.5 cores, the memory should range form 512 MiB to 4 GiB. | | ++------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+ +| Container engine CLI | crictl | - Docker container: docker | +| | | - containerd container: crictl | ++------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+ +| Pod computing resources | The request and limit values must be the same for both CPU and memory. | The request and limit values can be different for both CPU and memory. | ++------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+ +| :ref:`Host Network ` | Not supported | Supported | ++------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+ diff --git a/umn/source/workloads/managing_workloads_and_jobs.rst b/umn/source/workloads/managing_workloads_and_jobs.rst index a47252c..6ef5e8e 100644 --- a/umn/source/workloads/managing_workloads_and_jobs.rst +++ b/umn/source/workloads/managing_workloads_and_jobs.rst @@ -29,7 +29,7 @@ After a workload is created, you can upgrade, monitor, roll back, or delete the +------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Enabling/Disabling the Upgrade ` | Only Deployments support this operation. | +------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Manage Label ` | Labels are key-value pairs and can be attached to workloads for affinity and anti-affinity scheduling. Jobs and Cron Jobs do not support this operation. | + | :ref:`Manage Label ` | Labels are attached to workloads as key-value pairs to manage and select workloads. Jobs and Cron Jobs do not support this operation. | +------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Delete ` | You can delete a workload or job that is no longer needed. Deleted workloads or jobs cannot be recovered. | +------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -56,11 +56,19 @@ Viewing Logs You can view logs of Deployments, StatefulSets, DaemonSets, and jobs. This section uses a Deployment as an example to describe how to view logs. +.. important:: + + Before viewing logs, ensure that the time of the browser is the same as that on the backend server. + #. Log in to the CCE console, go to an existing cluster, and choose **Workloads** in the navigation pane. #. Click the **Deployments** tab and click the **View Log** of the target workload. - On the displayed **View Log** window, you can view logs by time. + On the displayed **View Log** window, you can view logs. + + .. note:: + + The displayed logs are standard output logs of containers and do not have persistence and advanced O&M capabilities. To use more comprehensive log capabilities, see :ref:`Logs `. If the function of collecting standard output is enabled for the workload (enabled by default), you can go to AOM to view more workload logs. For details, see :ref:`Using ICAgent to Collect Container Logs `. .. _cce_10_0007__en-us_topic_0107283638_section17604174417381: @@ -79,7 +87,7 @@ Before replacing an image or image version, upload the new image to the SWR serv .. note:: - Workloads cannot be upgraded in batches. - - Before performing an in-place StatefulSet upgrade, you must manually delete old pods. Otherwise, the upgrade status is always displayed as **Upgrading**. + - Before performing an in-place StatefulSet upgrade, you must manually delete old pods. Otherwise, the upgrade status is always displayed as **Processing**. #. Upgrade the workload based on service requirements. The method for setting parameter is the same as that for creating a workload. #. After the update is complete, click **Upgrade Workload**, manually confirm the YAML file, and submit the upgrade. @@ -92,7 +100,7 @@ Editing a YAML file You can modify and download the YAML files of Deployments, StatefulSets, DaemonSets, and pods on the CCE console. YAML files of jobs and cron jobs can only be viewed, copied, and downloaded. This section uses a Deployment as an example to describe how to edit the YAML file. #. Log in to the CCE console, go to an existing cluster, and choose **Workloads** in the navigation pane. -#. Click the **Deployments** tab and choose **More** > **Edit YAML** in the **Operation** column of the target workload. In the dialog box displayed, modify the YAML file. +#. Click the **Deployments** tab and choose **More** > **Edit YAML** in the **Operation** column of the target workload. In the dialog box that is displayed, modify the YAML file. #. Click **OK**. #. (Optional) In the **Edit YAML** window, click **Download** to download the YAML file. @@ -144,23 +152,7 @@ Only Deployments support this operation. Managing Labels --------------- -Labels are key-value pairs and can be attached to workloads. Workload labels are often used for affinity and anti-affinity scheduling. You can add labels to multiple workloads or a specified workload. - -You can manage the labels of Deployments, StatefulSets, and DaemonSets based on service requirements. This section uses Deployments as an example to describe how to manage labels. - -In the following figure, three labels (release, env, and role) are defined for workload APP 1, APP 2, and APP 3. The values of these labels vary with workload. - -- Label of APP 1: [release:alpha;env:development;role:frontend] -- Label of APP 2: [release:beta;env:testing;role:frontend] -- Label of APP 3: [release:alpha;env:production;role:backend] - -If you set **key** to **role** and **value** to **frontend** when using workload scheduling or another function, APP 1 and APP 2 will be selected. - - -.. figure:: /_static/images/en-us_image_0000001517903028.png - :alt: **Figure 1** Label example - - **Figure 1** Label example +Labels are key-value pairs and can be attached to workloads. You can manage and select workloads by labels. You can add labels to multiple workloads or a specified workload. #. Log in to the CCE console, go to an existing cluster, and choose **Workloads** in the navigation pane. #. Click the **Deployments** tab and choose **More** > **Manage Label** in the **Operation** column of the target workload. @@ -192,8 +184,8 @@ You can delete a workload or job that is no longer needed. Deleted workloads or .. _cce_10_0007__en-us_topic_0107283638_section1947616516301: -Viewing Events --------------- +Events +------ This section uses Deployments as an example to illustrate how to view events of a workload. To view the event of a job or cron jon, click **View Event** in the **Operation** column of the target workload. diff --git a/umn/source/workloads/overview.rst b/umn/source/workloads/overview.rst index 84ab7aa..d448940 100644 --- a/umn/source/workloads/overview.rst +++ b/umn/source/workloads/overview.rst @@ -20,12 +20,12 @@ Pods can be used in either of the following ways: .. _cce_10_0006__en-us_topic_0254767870_fig347141918551: - .. figure:: /_static/images/en-us_image_0000001518222716.png + .. figure:: /_static/images/en-us_image_0000001695896725.png :alt: **Figure 1** Pod **Figure 1** Pod -In Kubernetes, pods are rarely created directly. Instead, controllers such as Deployments and jobs, are used to manage pods. Controllers can create and manage multiple pods, and provide replica management, rolling upgrade, and self-healing capabilities. A controller generally uses a pod template to create corresponding pods. +In Kubernetes, pods are rarely created directly. Instead, controllers such as Deployments and Jobs, are used to manage pods. Controllers can create and manage multiple pods, and provide replica management, rolling upgrade, and self-healing capabilities. A controller typically uses a pod template to create corresponding pods. Deployment ---------- @@ -33,10 +33,10 @@ Deployment A pod is the smallest and simplest unit that you create or deploy in Kubernetes. It is designed to be an ephemeral, one-off entity. A pod can be evicted when node resources are insufficient and disappears along with a cluster node failure. Kubernetes provides controllers to manage pods. Controllers can create and manage pods, and provide replica management, rolling upgrade, and self-healing capabilities. The most commonly used controller is Deployment. -.. figure:: /_static/images/en-us_image_0000001569023033.png - :alt: **Figure 2** Relationship between a Deployment and pods +.. figure:: /_static/images/en-us_image_0000001695896721.png + :alt: **Figure 2** Deployment - **Figure 2** Relationship between a Deployment and pods + **Figure 2** Deployment A Deployment can contain one or more pods. These pods have the same role. Therefore, the system automatically distributes requests to multiple pods of a Deployment. @@ -49,7 +49,7 @@ All pods under a Deployment have the same characteristics except for the name an However, Deployments cannot meet the requirements in some distributed scenarios when each pod requires its own status or in a distributed database where each pod requires independent storage. -With detailed analysis, it is found that each part of distributed stateful applications plays a different role. For example, the database nodes are deployed in active/standby mode, and pods are dependent on each other. In this case, you need to meet the following requirements for the pods: +With detailed analysis, it is found that each part of distributed stateful applications plays a different role. For example, the database nodes are deployed in active/standby mode, and pods are dependent on each other. In this case, the pods need to meet the following requirements: - A pod can be recognized by other pods. Therefore, a pod must have a fixed identifier. - Each pod has an independent storage device. After a pod is deleted and then restored, the data read from the pod must be the same as the previous one. Otherwise, the pod status is inconsistent. @@ -58,7 +58,7 @@ To address the preceding requirements, Kubernetes provides StatefulSets. #. A StatefulSet provides a fixed name for each pod following a fixed number ranging from 0 to N. After a pod is rescheduled, the pod name and the host name remain unchanged. -#. A StatefulSet provides a fixed access domain name for each pod through the headless Service (described in following sections). +#. A StatefulSet provides a fixed access domain name for each pod through the headless Service (described in the following sections). #. The StatefulSet creates PersistentVolumeClaims (PVCs) with fixed identifiers to ensure that pods can access the same persistent data after being rescheduled. @@ -72,7 +72,7 @@ A DaemonSet runs a pod on each node in a cluster and ensures that there is only DaemonSets are closely related to nodes. If a node becomes faulty, the DaemonSet will not create the same pods on other nodes. -.. figure:: /_static/images/en-us_image_0000001518062772.png +.. figure:: /_static/images/en-us_image_0000001647577048.png :alt: **Figure 3** DaemonSet **Figure 3** DaemonSet @@ -82,7 +82,7 @@ Job and Cron Job Jobs and cron jobs allow you to run short lived, one-off tasks in batch. They ensure the task pods run to completion. -- A job is a resource object used by Kubernetes to control batch tasks. Jobs are different from long-term servo tasks (such as Deployments and StatefulSets). The former is started and terminated at specific times, while the latter runs unceasingly unless being terminated. The pods managed by a job will be automatically removed after successfully completing tasks based on user configurations. +- A job is a resource object used by Kubernetes to control batch tasks. Jobs are different from long-term servo tasks (such as Deployments and StatefulSets). The former is started and terminated at specific times, while the latter runs unceasingly unless being terminated. The pods managed by a job will be automatically removed after completing tasks based on user configurations. - A cron job runs a job periodically on a specified schedule. A cron job object is similar to a line of a crontab file in Linux. This run-to-completion feature of jobs is especially suitable for one-off tasks, such as continuous integration (CI). @@ -92,24 +92,22 @@ Workload Lifecycle .. table:: **Table 1** Status description - +------------------------+-------------------------------------------------------------------------------------------------------------------------+ - | Status | Description | - +========================+=========================================================================================================================+ - | Running | All pods are running. | - +------------------------+-------------------------------------------------------------------------------------------------------------------------+ - | Unready | A container is abnormal, the number of pods is 0, or the workload is in pending state. | - +------------------------+-------------------------------------------------------------------------------------------------------------------------+ - | Upgrading/Rolling back | The workload is being upgraded or rolled back. | - +------------------------+-------------------------------------------------------------------------------------------------------------------------+ - | Available | For a multi-pod Deployment, some pods are abnormal but at least one pod is available. | - +------------------------+-------------------------------------------------------------------------------------------------------------------------+ - | Completed | The task is successfully executed. This status is available only for common tasks. | - +------------------------+-------------------------------------------------------------------------------------------------------------------------+ - | Stopped | The workload is stopped and the number of pods changes to 0. This status is available for workloads earlier than v1.13. | - +------------------------+-------------------------------------------------------------------------------------------------------------------------+ - | Deleting | The workload is being deleted. | - +------------------------+-------------------------------------------------------------------------------------------------------------------------+ - | Pausing | The workload is being paused. | - +------------------------+-------------------------------------------------------------------------------------------------------------------------+ + +------------+-------------------------------------------------------------------------------------------------------------------------+ + | Status | Description | + +============+=========================================================================================================================+ + | Running | All pods are running or the number of pods is 0. | + +------------+-------------------------------------------------------------------------------------------------------------------------+ + | Unready | The container malfunctions and the pod under the workload is not working. | + +------------+-------------------------------------------------------------------------------------------------------------------------+ + | Processing | The workload is not running but no error is reported. | + +------------+-------------------------------------------------------------------------------------------------------------------------+ + | Available | For a multi-pod Deployment, some pods are abnormal but at least one pod is available. | + +------------+-------------------------------------------------------------------------------------------------------------------------+ + | Completed | The task is successfully executed. This status is available only for common tasks. | + +------------+-------------------------------------------------------------------------------------------------------------------------+ + | Stopped | The workload is stopped and the number of pods changes to 0. This status is available for workloads earlier than v1.13. | + +------------+-------------------------------------------------------------------------------------------------------------------------+ + | Deleting | The workload is being deleted. | + +------------+-------------------------------------------------------------------------------------------------------------------------+ -.. |image1| image:: /_static/images/en-us_image_0000001517743628.png +.. |image1| image:: /_static/images/en-us_image_0000001647417792.png

      pR2Ak(W-SBOq?-gJzT{Oe*vaX`3Wq>Kn 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�L5I2 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≷ijsK@Bry7UE5dAd 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 T2xL&cgA^GFMe%abmmmKJ{qt3= literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001517743460.png b/umn/source/_static/images/en-us_image_0000001695896449.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001517743460.png rename to umn/source/_static/images/en-us_image_0000001695896449.png diff --git a/umn/source/_static/images/en-us_image_0000001518062624.png b/umn/source/_static/images/en-us_image_0000001695896453.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001518062624.png rename to umn/source/_static/images/en-us_image_0000001695896453.png diff --git a/umn/source/_static/images/en-us_image_0000001568902521.png b/umn/source/_static/images/en-us_image_0000001695896485.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001568902521.png rename to umn/source/_static/images/en-us_image_0000001695896485.png diff --git a/umn/source/_static/images/en-us_image_0000001695896529.png b/umn/source/_static/images/en-us_image_0000001695896529.png new file mode 100644 index 0000000000000000000000000000000000000000..b6535de6a32f64dfb08a008d11536b54ae65a4f2 GIT binary patch literal 35044 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 UPd=J)0{nMH%RsYS!zSwg0C+Z6aR2}S literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001695896533.png b/umn/source/_static/images/en-us_image_0000001695896533.png new file mode 100644 index 0000000000000000000000000000000000000000..39cc62aa5295931559740316575667cc604a28d6 GIT binary patch literal 54459 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 literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001518062684.png b/umn/source/_static/images/en-us_image_0000001695896569.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001518062684.png rename to umn/source/_static/images/en-us_image_0000001695896569.png diff --git a/umn/source/_static/images/en-us_image_0000001569022913.png b/umn/source/_static/images/en-us_image_0000001695896581.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001569022913.png rename to umn/source/_static/images/en-us_image_0000001695896581.png diff --git a/umn/source/_static/images/en-us_image_0000001628843805.png b/umn/source/_static/images/en-us_image_0000001695896617.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001628843805.png rename to umn/source/_static/images/en-us_image_0000001695896617.png diff --git a/umn/source/_static/images/en-us_image_0000001695896633.png b/umn/source/_static/images/en-us_image_0000001695896633.png new file mode 100644 index 0000000000000000000000000000000000000000..92e2615ecf89befd632926e723cd964cde7c2bc2 GIT binary patch literal 33699 zcmb@ucR&-}+ApfFN)ZGB1w;r6QWWV(FG^Lqpn#NwBE3X{lu)H8AWbB62qGfVMWhD; zQi8Nd@1Q`4bV#V7ok89Eb)W6~oqO)Re~c!~WY)}DYo6!%l{MkI+G=M`vz$J5?AVz* zx0Usd9XkmFK9^FE0srFO%Pb!|cInt1jxW}Z7qepGd5j#(6dpd{;OcpE8$2KU z((8`;-gP|=!K-@o8`cXZ&JSLid6>9tC63lE&24sxe`#@AQfiE9p!Tl)9?G`eKy@y1 z_=e4yb)}VKEywo1m<7Wf(B&mivU&T1uu{p`3$Z-@t{fuyF89atOvstY-8nfqr<$bD zl5{)mtsUUvK~9F!K#O`Ib7moGW-{s%&yF`f`Tc8PS$(}Rul>U~I+y=_*Y8J0I*W3& z|KmxHH`b4sn>(MoG0>T0_@C$h{UqXSCsb#c7wrDwQjQKa*Ag<1HfB(BmY%lTmlzoT zrzRaWEZ0NDK(x7#ldc)hrYWPysJQc`=RTOTJ@j{%kb633Ex;psdgs$Ku$>7u8h^fgBWLOY+E`I$Ej!so!zadn!RgBkVN>*vOW3#; zg7t~$QhdBdL*UT2)={4ogENr-DX}9x8wr2jBm32sf$727+&!TXHY9SgZ=e zr*5-MWcKp-ZAB8I)84VhiCU#Zl7)+IY+iwjzRKi@ksh!QY4$en+0%we)U}hAT0*I~8Xhju4jy(0g@h zH(4*lS_M7}S=C+5jH z)KDgvFjh`jWUKHWdkMHTn9%zXWg2voBxxQYp{|Ae4k?`S9P5K5(xZ!zj6GbVNJ4*J z;Ni%9jr0~+k$6jo!Yung%q>ppg7>8_F0EbZdhMS$KJl7lvB5&+^xqf#=6ko=iXhYO=QH!KdtE)5G)3H{TIGm<46K&*eKwU@onZN5e(ayBLEpW84xPklY2 zb*}eON6gLpF}Kd_nvHfMtT=3C3p}SE7q)kmvMKyiJ3`b2H^>I=!AE0DuW7!TvncrZ zPotX<8hC>X<}LTZbEcqpC3649&+Z?Q0+mUdF^BOpgbO;QX0d@f)%K&Y8xtroNY=?;MT5O|~E ziIjsDt2Onk?*+}$oZ;R-Pn`j}qr4Go^^e!|cit%E)TmUG-m;fOez6ncEGOqoi45&q z>CjyHP}{ZCF~pvq;azJ+Y8C31PS|Y}*5Zy+H{U}L66gbRHZw#9NJ=b9Xz4k5t17vQ z;R07H2a^?;Q&%1ylweX0O&kY{3W#GXv?k-3>4j`P=4^6ap5ezj{Y+=xj;DeyFg1y8 zxehNqy#qczdu>jyNB{G*%8b_#wDxS;u#S3aO`hXC618kTAD!IOuD-z7f~ZRUz4A-DG=zvBB={FR%-5UXV7f%K^E6Pj8GucIMCa>lT|HI(5~KB@lLM3TXOipZw%&2T zNXwo>8A^K($_o?5!THX3^F}!*D{RXUXcO*^ne(>#yy$Rn^bp%L)mJmS+{_9`U2K^X zR*AR@eiKO+9W@;>HYR>JFB~Bp^^B9n7IfxAqsU#w$mj+AyN2( zMYofK_zj>l4L~ROieH&*ug)+rcDld9sYLkFo_;I0J=XMqLAJldfe!3VtKI{y)h!eN z!S5zcvLVU`ha}tF+)oqUD!jUUR=EKBS|etK8nzoeuUMq;h)HyU(T+S>AfC8F*S+|X ze=w6aaN`fitMbidMy?$y$;{|0gnx!48&^PSKPaWLx;IWbfd6@Oc>dVg=73@I= z&%&ROmxo($)U~re;+X0Z!>CWwF5GERr+Sc;9^+0DTeyohl{Bpnx0Q?D``SkFGllOK65wK`e8X4mrkQetI!{%*}Obe)sqC2ORM?hD1%0_>W?C zRDJyi=?7Y-{RvR7D|ya}ZQ6E0Z=Sfl=0~H1V(P>{RiAtOq5NHZQ*N#avGcgr++yn{H61r46F^`L}hzwuxCPQ(xdrhL3`}kDc3c740m64kg#am)b*EsGXE($%IEnZbC2>^B@! zVEjAJv`LFhY-8rjmKaQF22=rlc_Y}uqI$*Zw5x(PSGO5+r1=Pl}Omh`S0 ze)lOc4bJ>XJC{B+aQtbx0SUkGWkjFp&Qs}^HBa=vJ>Bi{h+roYNuB+)MYN^6c16{X z>t9s_&SvE@)jtcjWL+;uwnIM;xPvdH#g&Ng#r8J6_(C37a=K=N&4)cgS7)F(uE!X8 z9e)^FSzoC+Dah$Lb8kh}%1_b6H1tdVoZ!;yIgX8v@AQk876>FupM%QnbnnRU51C5> zn2!f4er-(!x?3XCw!xwo5}*6idW&1J^MCPcD*}ZszPhQxLif!(! z#BkIU)8$>tZom5+TU~L~QV2(Ee=;0Q}35S}v1n*!vp3G3GCi&aB)Es&d`3(zmRh*LYfbs-yWrYS}mMi8awtFgfZR#^`Op z`4+K`U90Lz+ZG$jfCQ$2FE*1`tr9IT@2!}D`m|v4EAEc?;>WwU^!eX${?)`Ey`SDM ze5PjkaV}H8gOBXhn9y$v9NW0q!0ma8a>KUi8Y7ET1>ZASW1c(K8Hvr4e8M0zEB5P0l39A_+Gm=ilG!h{vpFx{XvL7HK&P?s+EL_l zK-smiIcn>gj}j0CX6_VMGm^u76)_=j^)^L`Vb0)5hKL7GW-*YfNVr*wThAJ}jffkE zvbpW>-95fFm84+11u6U_X;iOtDRw?xEfAIK0eYquic8a9SVU_+byJh#Hmv?G9w*;J z64Ds!T$gJ?X&$6R#_x^A&Ka7Z{p1<6VN6j96W|#T%6{62IRP| z!$0YoKyjn(qoqn?g~D-N*blYTMeyjYnvtL=4cw-=bJk{Yvw#YEg+8l6+dxMQn`CBy zv+P?Jy3Rso(^!9+e8c;=so%0YrFX&zAFk78Tf`hdbQ~me_XI!LLO*H-Vj2G9W(BeH z;0OZ*9p`3A9XHo7%IB3HYR(=0o9?(68W^>(>O^(7CJfo>QvOw}<{#^OBmm%Y7<}xN zyJTF)dIvK62 zDvglht*eSsRqkoJ(V$Td#5AUy0@t*bbwvg0=GRg)2dx_^W|kzax++RN2HN^++GO9! ztrner2|>P$&d`l!lT+snjb`OUxFu$AA*k?z45wR6wH-<0yH8Jqz_y;^DOLFMo7Q$| zK^zE~3J(fgYaE6GEIF9zf<8LJa84^ou!*ptkZ_4{v>UaQ`s{buJ z!+nU}Y|0-e`ZtRWj=5elcK| zDt&10?WspB{}(&Us80XmIUKi@{_}))rdAKVQ`@7d2EbF~sTgrk>aW%uiFbo?z=D@u zllpG`=TCr>7dD$|Dg0`r|AXqxl`AxH(yB8~dt)Cg$dWcJfzGI@t~ZT@k{V0=EUdcy zlg|s5CYU@9Fep5z5_n>J(N;eui>8jh|3OM|^?>r1n^<$#r9M&0z*MXOIa9tnPOIDzqU<^oTHtmaDuN+WT_@ zzB=zCyY6fG>JT>@WZzz}U}sOgVU9I+X^6XdqH9@xw3O=8`H#)lHy7^N7@#_gUE-YD z{mM?Q_Au6G>+mHKq@&_4xH=wPi|R~AM(c&h7BQAN3GW`%@iS^lEb9wpY5_MJ*Fsc- zmmOnOTEfcSjn0-tAu-HZN4U6AQi#LWKgJ;2?Y<~aHhk9-dE$)a)0)w4_0t3+THDXh+^q z(!f1;*RYLmmsdgcgZuLFE_LSXIN=h!Yhc8qvVe5o)QSfKD_>3O8u?rYrhP+A>W0q7 z7~GO-I+=J;mi94l(eVJq}{&FDUO~ek|KW)>qd=?)d23zDG0vkS&KScj3gOeSX-RR^+ke7lvCtUl*JAzw^}a zj;wc#_Ac~zUeTLT%GCLy!b)^kh4af3tVjIgq!YtMvtyh|Ej#CtvYS(=YpNj!?yH3c z6YTAz+Az^#cB}UUpL+j$G{Uh78f#Nnx)PzhQWjDFZ!5bEo3|I}-CyZ=JjfXV-{V;y z$5~G$5Aq`hHw;D#+GmO9d`O$h4{Wi<7`?RB%>;A>vgQu2p$l4*w^$({LiZyR(?oTN z67L|yD?+z!Hx#YGDK!`UL7u?2>@PQ`z^$Gf{;86}q+^4Ei=N zEvuXg?>q7wC>SmtTOm(k$$SM$JE)!91#>8D6WPzUwF^#gAkr@mQl8pxoXZi|Vvus% zzN}b9>;ld}>%Xc%*XF6eT-VBN=+jtohB_5-~9OhKMMKl_ypsMdF#4n$18wYaKxya76iIEZYnJPRG z>8BM)qKfe8O=rahcw}#eLV0>?RgN~pb4Je?S+68rP~}Q#NDz@Zhu!OIpfbs@h`z1U zq=HhVw7)m8_-xzO!3N~)=^`e{DB;9jh|ktjCs z2=TP?R|GHHgm_(^WoOFKIGWRar5K{ocPpET&odD;nud>X6selzR(}N^7XnFr3R#g? zv1XNQ5sUPw>)X5<&o^9Hs9ibA#(1~LbXi++VTS4CSA}fTcclXiy|HIL)|sdK+Hx&w z2W|R+5_7TPj9PW916L`y2e2z=!~KULM$w~63M6?iGhgF_Hd#a4mX!~hqlZR#5!ZpY zCXW7OIv>(jAgNI63w!MQJbOhX@ld8>s=*j{7!sp=Rq*@Ubu&J^dv3e^w4KAE$GhGb zox2XgEAG_U-^s$9`tvD8+a_tkpuEfUK6m2*vqhr(QH4=ue=wv;ec#mYkn`@8fncw z>9G;9#v2Ix~;FHY^^M;zB;Wo)&H%$v{#BgLN?%{T(9I%BGJo0Z#L%;fUV+*??9 zA+mLjN8*Y>Y-?m$_!7j^w*g2Y0ay5^=jAcSV7+?+{+QfrssJPK9|kwx*mR7kINo>P$oR8;$**p z@AJ-cAHcu4w8`8$l(K-RZhabl@zT`V8K~o3)!Lg2uW~ZBvmkeiWhPV-zd%)VG7^cg z6^^r>JCek@9)HmTx9UVfWzjXrMA^gLynP0FT|X0t;u+7o(5X?CnNu0p`~=Gk6We1r zJ0&(O%Y>q@`QSZw-Yu1VPmZ$9T)AK-m4QisXio2BqpGZ~_IHP+k;jco`ZDQ{E(O*A z6-bS1WNWSm-tJ9L-AHWk^iVdO=TRx+bKu@+Tden^({eqo=8+Jyd72>1EgkXJ$+PGr zucBRwl6+Q9Tf5?OaZIsHPIkm36N!^PecLAk)bMt2sz&v{Q^Nl0Uy$FtTozo+GX z7uOUEgB3zLP1)>pb|h1<4Ay-Sez7YX1atvJQF(2ugTd7QR?B`IgR67t%{sW*HcAgP zbd^9i17{nD=4yANYwI7pvCXBuELcjB)?AUPeahsMKzMXg&bDA=Xt^xWaE-=r5r*W1iY}mmk60%WWJh+!hq#fB@4KwXjLve4A(&4FHaY-c4&+N)x`U#UK zS-3=V^k1!OjKNi_o@Q|c&(D+YDVUG`?lJ=>bA;}=^HoYWotaf=;)*rZO!_Uh$028Yuh zF0+?|hDDcRiWI!VPLI(Lit1YH?h16x+QlRTy?KT{>? zw%veFBqrC9E6gy}yIoW(o6JjMK-Z6s>UFv?cf^DyKkBSjF5mJ{bI!T{FE2n|fCjvX z{esUjnMP(tJk1X=L%EAunI@8x-DE}(lPsocFfGtFZB}4eJ3~2U`e3+);{a-=^Jt7E zDkWWtHDBG$l`YP#+GeyA-XYiWBK6{+1*n}gU}b4={pvLKr&5_aAy>KUIV0xSZ&yT^ zE!OdQJ9Yxq$=Bjoy=aH2U$^wSOCdr7&{N|H&) zlatvIpGKb?{43)%c#!D|wFCRAS31@(|Fj>pw|T>=Zu%VolB>;CJRm9oYAeAoqy=>p z3DdU}1SR_dq-E6_&m!ymdCXsLcakoR$AAJ5y5$+(0M=s#aAc--cSSHc`xQhe4I2l- z4KG077EDe{|9qgOIY*Gbt$`CjYMHwVYP`mNp&;P+ErrJjU69vTf5j@-4USCTwQa`C zG?^N$@H8n6{7sPG;z=&TcHBB|YhvB{k7A?_wlu7~T!nWFA*?p4QF3)pmoTjNZ4N7g z0v3f8yB|xzri2xx)>efTtGqT@Gf|tfsUblm7>Srs#S`1klyMoccm)@M zDy$@wof`pO0V~3n`UM%bB;4Ngr>$Dk9YR|-=P-mdIn z#<;C4>HGu%OlQJT4#3-g!PgPrCx55=BRp$-@i#*`i?X)h@Q;)wqsAHUq}KJk$-!h2C#WhemQdr~$GtV)qU^6(kmvj;aXfF{-n)>! z+=iH}wd!%JPL=sRWq|%)`dj`kBHZFtE2Uaq+eW z{)5oH5!rHo`O(Q~rznA`tqM*j^Q3@(Qg+Rm?T)+!<(&U#rC%gEWx+!Z$50<(e#2SA z>7xF~)x)n!Y81E4J&MQEKi zZ*d*T8lXsK&Su(4XDk8pkxGY+6EOkxL+Wa0_^0WD{TBEEPDyl&zAZTic?l7Low$O) zu=^o&yW}@cX37#fL_-KY`B3^cCU)uDyeVcAq_)AMXRk2?HuL?i;w?EzzwOmbWa$$f6`^|72A>19?-SYYnP#iVf~G?AaurigrjcmAdZUJjT&wlDVNVoe1D#rFp^EXtRa1eu2`2g}gycJik4^Y@Cb7ewo8s z_qwoV(Pgp@d%o$9RRYnrM8`dNH;wz_q)H9<1OnrH;>(F_)G4ij-{x(n_HSSQp2Gi{ z^eJ8cavcRNUVQO7C2q&jkU}NGH3w^U2^c>h+VTma z6?t{i;VHW16%~}Y@rpWS-WA_HXJ9y2-9mb5@W9B7vin8p()cd}G?+JmPH|Y?{kd+@ zPs+ zK?3|CQhJv|7Au4niB&*1qsG|U2Tn{iOLJ)nxor&_t zv)t(xDrVQfXU(F-pc}J!rGQLdu=A? z41k)Q>qpIMSxP5m2$ZrYnVbb9)+6F3s(%eRd&W+ZrKf(ydydxb$cykklz0VFa4|M+ z+h;!Y7~Aa_fZ;$D8KvP+KRYsoA>sG&0RKN3%>Q4=J0NbZSJO$&`Sx|l*iW49y02RK zZcQr!?orTCK5RKyKIDFi@AR1b8MRK2_3ff-GiOp{%J#p7wZxHJ7QK{}(669pbaivk z5hjA5Y=OJ!E*8y8Yt1e1hV`g$Eu2FRqtIm*E0CaMzVr5@N*BaWn=Uh1CUoBK9+a~YSRBtEiP;|CQ_%0dFc)Ksn*~b?a(pPWu>oIBjVpv=o5nC%mBBarJ+hI-x>An zE+-#fPb|8Xro9XY?@{5y6N8Yfd+}^iu!uURVgaUgnvK2?ouTaMNjBljYJb^RZy%fo zut@(%J_V2Kw@==rgQ`tq-I+BQ(Mq&`8>&upDqdgD7G zej!|Tv+um(&dex4_cYRixDk#OP`bA9i!vdEk5ZLbKLI@#!a^FmSMkeEn=gp~-glNwT zCNqbo+DE89{r=**AXBubTNk`;k)G$HWN&s_m|#hvvQvC{y~oU+kTdvPv5JpK0{OmE z5kVq3C?m}ovBNv0`FSCTa-DNF-$z!wp_)1#Mt0#vUSep}0w#YoD1c_^+mz9~NDS)O zLC2KjAlOWx_MLqL`KULOd)`u6--FG&5q0xVmCaP!O_&ob<)T`pkiV5fzg0X(1(r12 zQkmwz#Djm=Rqd7O2iO{+i+^2?7R^R^nQqQ|&b*NUeFI`&-^)Q3tSPkvX=>M4z}79k zLVw#i*>D@h%u^E6k4lhkmw&!M>rIj}O^q=o7>}k>YUCml1nqA$lNb^@3KqcQY9C954Go)T9d%dZHZ zUj*34t@-v4*f;eIU6)#~RNV=mLtq4FO*|>B@grJ_JF9U}hBi<1hA===9!OB)VzYpv zpb(?OaC*LB&ICK5ITKav8-G;%q7VCZ=y$e*X(@0Ui2!>zx&knsYSF;lwbGH*=H2hr zp>Hc3RJejD_FbjRL>475Kb7!ydE=)h)FE8Nha5>}B$;kIG!tXn^ zsp;phhzG59G~e)@jmsAvkRMDAfTO?PG<(t7FfK~0Y)|gZUXCj_!dX#XZIO9w#J*Uw zsFbM`ML(rq+tTMX?J->)eb+)ZlkpTQY5nV+ql$`d?B6tPzL5p zeK$ag#=eF^>L8wAK2}}5c)%u488cZjg9+Bxq2!WG<3+`NW6wLk0G zYmtS|Gsik;>k9`SJQ0Zm>{@A|K>5o+9~#bf>8Gsp`{yGGije^z>XLsDb^ormfn+xl zmKMW7A4%nem=UZh_RBWfT=eb2R>c#CT$r+KXi9;o17X-!uB(K!G~=-uHk&n8v1CeTu; z&OEqt7Zl)a+Qj7Vc|qYd%T&xeHvy{Qt~F|pna5WXyKh{?J}()Y&5O^-uQvY_6@TIV zNvn>Z92ZK49AKMR{;(Ny>OA^EKmE|4Sby?UM;z79t?D8V2h5z+-tD#+`z`7iLV}!O zpg_v92X&EDhmGpcb@CIt=e-E+ta0=0Tn(>8psZl!j$2_Xs-KGuo?^c|`yl1>Sz5)X zxw#}j-VX`5lWpYlPqKlrXGP!g&UgEtLRG=B*y%7oVRFqDAEVAsl`0w;SBFbS)JDUgZ z@H8Or!X$`mF0!1cDXM3#c>g6ei+|yiC8{;eYCqx&9PBRedL>(015TWe>n|0YZrT9y zfn{9Jv!<&Td;60nX11%s>JsO#>@VCy9bh&}^pvx8T_M)dheaps{=KS$U zKMs>bm3nT$vjA#Z2-4{-4Zl?`>EdKjIV5Z11Vc^C)QuWJ&?PQz{iL0amgJodz|YES zRUgJ`b?KkM6kz(LBLofbLDKC31kNl`d6!berfz=5&$v_&Zr61)lTyT2!R@pa6o*QQsjlA507W2 zc@xAk)8zLhGg$++PiCf#`UmNPBz*yhmH~hR5PSxpO!k{70m|fnBNMeZ09XpXP6US# z*5`UdVBed7w7$8nA3|tZ0Py1T8>eb8I;R*H)*Om8L3ona$km9#E1S+_r zUgAR}h<6-!L#E-SpWv%6rFRyi-m}o|jt4uD`y>E!q_e+V^1X(4BH^K&88*&Z-#)Y7*Bgq52&d9|O z!c49jr3!HgCj)t_jFeVQyycxCb(2@Zqv)*qVGB*>*kQ5{Wp=>MUzuaRH~^&j<2W)+ zYk}&eNNx+DhDakOA%xZeSHXk715B|g zUhm2kOs>0-Fw$=`*r9|C5}w5b&%7|Qj+CC9?OY~qxU4<+bnB{)v!}Re;%Z4-lG;zL z;>ZEu==cA^4)7Zj^M8qA?iVac#m05@Mj`Dd<~zTUSjX2J2%U^IpX!TF=Lh>|vx#h2 zT7_?xoSN%d6=TK;96_;&_i}32e@Q9-TUGMM)*nB_c*kY{`DgLi|H=ChCHu>WU|dS| zcX4CfYuy``)?lZZ6|1eA13$qM{Y-4N2227z@QATocLmi)fTKlKXWm&gMlq#I5X)~} zUlK7(xu^j*HeKipb1W;WhN#XA0sa!$Ci~IdcKW8x7Jg-|Yp*nU4o?^~w+MDF(TVy3 zUCxVEn~Hr-n(~oksgWtV3oceW0$$(lMs}YY9on5)NYiXGGqsB$zAjvI5pMJh*s-)y zW;om?M<~g`>1I}raFzJOs`Ks$Ee|s| zRXNtdJ`7{Cbo6Qxx_qlr3yFRh$)<oVw1)vspIdf?*LIq5 z-LL8>?rcPcrKKTjKbn#x5ejPC74J0MC;E;<6M-UE#ogh+aqTXzAW6VCr~Cmv2R;!k zh3X*x3B6=sd6v}R za$NlbGbjISxX zjMu5_=DAidC2INeTezXD`=57R7rXQ3{iG}wZCYv~`3V66JiUa&ysqb{4H+&*QZ#Fh zk49QObCYWp&?As>L5DcC&$^*k2CS!Eg}F9B4wwh7?gzoep{g=pKGem>eC3j#4=ROs zrJ9W}RL+GhoKyqp&?`(C8FJWmC!yVmD(W-1#5u;+Bjg8L2Y7i?w0Asx6_L!0d?#+@ z;CQC&C_pczm_dAYZYa*73BVr$*6si_()KNY%-<)=WR?7&!dp=c;5C`aoe*8H&lXVG zFXsbH6e%5m4CDc8IY3THoVg(P57ZQQNEHW9bdi%)O1vuvn=*)2N5P(& zOSZ-G8oU)QwYLE_igXQ#-QU>h+W>rcU$J{4w$vRKp-VqD;Tu~trjFa+s#D?pE~>58 z!#}0lK{iTzQkX z0(|&Fw`jfiY}+^N1_iFAiwGp#%?pa~*-u=G!z0q#ym%~Nw)?@fmTSwa@@DwrQ$t{+ z4k-X7*Q)YP?hjx>KI|`=DeioYGNiyoNlbDg(AyFUmk^0az$s!|0e~cdSCUZxc5ak_ z+?m--H~ays^F6^jGr=(c)jLUAbykG$lnK(c1qO#ws4QUGE1>jk@dp4lTS@n%z>RxO zav%snPdrt`nZjMuuHu@fKNzApdB)c$@IaVJKn-}cxT=C*?HZY-u3B<^5$ z&=<1m#tB}n1q}}AQ?B5cZUeO7UqpM~F9OegOKFthjZHK!{_T?+8HF5h{8J(^<~;cu zsrTn}q&Ov1a^gQFgI@<0Q^y7iH)m@A@sPG<;+~r%;{L`5w}+AM4-NmK<;x6_4)35o zYkH~msp?f)GJb_=HjsM|>b8U_Z>yVdjQbkZJ*`ANB;>X|&KGRw<4>grW3ozosK!XBlWm)tDLzgKaIZ%wKZWYtw(c zAuK$6^)i-!F1HN7`vwP}j3+3LibKf`mBr~!no4$AT?$V8&dPnhxf+AdRM>M}%THj~ zdAD%Q>Q^ky^|-I%rt2b`I6J3@G{{IR{^%=X0M<$NGZ>eTc<^HCWX;$|NaR&4v8MS1 z^jj}cwUGq(tIK*LTY+34_b&+)WPG-l&ESF+6oCspx=A^A5BtKfM^sikd;K!CB&1>$ zdN*+%m4}_eeaV!+8zWoZF5SPW?uTcht=Qp3kf(EwdUg^$?m4lIbQ9lp_x=)WJ@8*$ zShc5tE!2p$<#MDwT}~erN?HLBf(1D0?lI-<2#%d%Q#R3OTVTbS;}t_;4o*v-F>3i+ zF;As18-dg5ux^l3K~uFhF?RW4s)S<=uUp(QdfxX&@k|ztS1xE!gB=<+c>SxI3N-Yv zYe_3+p=Vof>4RYs?ZG=Io1ZA|VHhhj-v~3lBz^S4MI65mO@{k&1+0^$%c;b~q`nCS zp>CrJcP%rMAc_90z-qFbVk19}`Cx z8>}gsIq4T4(h7oUuF$_!2a%(!yAwlI5^RFY52{46rQ=cKq<7`^>qZauEwyB4d8q4N zwc<)>YqdB~9d~~LaNAR1to~AUdzQTq$C_aL2c6%TSEOG+)TuM%x7=&I5?ZDPV7|xm zn_!+L3$ss!&%~wEpW?_7g4$TUSy9>?oYj&b|5jZ;tg!{TVS5$smKL*zYDH&Pl^_P6 zW0PH%2Ct12TQUXcy9_6J?mG^g{{Z(2l1EIxG1j$^~Aqc=nEu;*9d{dt|FJ!Sa?ySjgIsE0%lRez(bhN12 z2}E{%`@yQjA6Ml5Tv-gPxfN0?49|+R9+yq%_jQr~hl88y<*&d7+#^azxaSY{rxjA= z9CxB|1N{SLCmQ@$AciuUZWE`63w9K-Aye4vo=sa~`z|t`1~nbVMOqnVIKiuRi|QD; z)wK>%QL>zK(Wj?}<%mmf$2i)H$zW(LR5}sqiG3fnxZM zK#+kQ40(FS&5RX0YY5hi4BcNo_-?*%q_*TbaoUa{NBoiuhzQ7YgFgAxdQA%wo<97<~+AAl6}ThIvkiP5ac0rNnukGv8udcS*+ z;-{}Yi-#T1_4RWAA7p4J6OF7gFJ8cu3$Zl`kJs&z^GnthI7+zt?MxK7^ccVv8M?eH zmboq;5UJ~b=sCfOP}2d7d^+iV&yK_`y0)rPz%V&L^rXZQnoC1qxHc}u?p4ppU_dt| z%<)j-+PWM=2)Mz?D~Q1rQ_ic#siczQQQUEwrW!<2aOSqtR+4IOQ{z<(st9`7rBHoe z+|WIP({rJ;hxK0DsB;ZJPS6ZMwEO-Ux?KuDn_^>-dEllJk1U0QN5WY|BEXbCO)aKx zTS{kBY^ZDly!_tbV@LLPLK!VkbQw=-A4zQ>1wgF(xHJF5|K5_$1o+=irq#iSWy%6h z3PAZ#G8bo3v`moZWonTFQ56WXj7vX^LqEN0HA94ga_M&g8v)m zCh?`mr0j`dXRn=!0hGPSVM{Bg5?UE!h%c?0Rmy7mQ1=TG>KF`z5d#se7&%YxOhr2$ zy^11aG6<3}&9wghi8}dhg+BbmtCfY5W|C0eg&E&L5X31m1*7oF^n37N*5ufY7TGEl ziRxp4(wt^q7R$SA{%T^YOE`bq!qPraU-Bl@fE`{yOph|1yd;E;)Yr?zUpRCAdvnV|6 zCqw{iTUX#i37VBI`Bj(Q?OxM+*7}=i^Uax!#a7cCcf5|lO;5*}FwjiwYul^A|D`gQm z<%MT9qAUMg>EU)$K&P*l2@nF$I@1h|3x^F-g$aTcQuFiFLN73MnvTgIW-}9rcWsbG ze#|aob_?OxJ#70h7LTQjM1Cw>xC$so&(-ojO#7wJUK3Ujc&z==V=v7a{p=|t^`g>= zrz(%eCAb}vWWP<{uy2eQzWGsExhv^e^s$sr0z=?p4yP$9|4fZO*hqCoo45mI-B^Ju2)!_vkXq+m2J z4@>>5jSp6);C}kvRc`SRjZrA>L}~D_1y=Yy{&ZM#_*)G?G4re#d(9Qc!ze&w?tklA zbiOhTxz^U}c2}>lTsI%C*Gd96YX$sEq*qX5mPLiN)uz&S?d0h&AzGX!E9}a# zMIPVz-UtNT-qFzzdMDmR(jEZEet@eg)IM(}tK8nD%ru1nq%IBXFb5*1%Y~uMr?^g& zm#GLaUJOJ4n6`Ec4RC>V?uoh{MdMcxvl>dj*<;np3Ey(0x>g^p8US*niHS+bhgu*h zfqfT%4BS>|5(2XUGO)bcSHR0N7?7a*amah7p)rI|@3#dk8X)2+tQTgEJbMAjx-OHb zJAiQw$U25~dt{luL{GAiAjiM7C%qR^!}l7FEFzLyuB14q?~B%8HDFO#a)d2~NPVJJ(7?sQSS# z$c0whi4*)gFZ}ZouMtH9ldr#^UtuiIZz=2uyNRq#VlGF$|7z4Md@YfDt=VE6%Wga| z7JUl^zUk}gN4L@DS^zwtMa{R^x5|JwCuqPMJid6!M|-QA&BI2r@KsMA9qEc5KbF?yu9yKrVnki( zILD}G2bKE``O`5S{Y)bBQ(k0%b`HE0=RZ6sq0NTOSwe4{eczg`?-K5UR$9-wJ(;{3 z*D~m9Qa3T@e;MqS;c*e7e3&gDZrER^KYPMmK5yyW?5V|uy?Se#q!U3I=f5wCWNLP9bK|+-#y@rU0 zfHVPV(i8-wSLwZlj`R*vLkpn>(%*Q`{hfPmd7d}V{v&xZduL~6&7PSx>-$;DyF352 znfT|XVtI~2dA;pR?u>% z4^*YB-h;`)pKl#Duv06IIcG=Tj_1uN%uQK2yKgwd#+=KbM>8v44c+jCVz2o@Qdv#U zxHf@hVO+fJ*vhY2#pod{_Ej+N(s!<@c^|5MXj zz)h3bj$6qIyH-@kE+M$^zc(APG-n9}u6g)_QFx85S{s?XlMnI2fGCyb`d1}s{SWPG z3FQkq`>}|Ovvu5F>EO)8Va{3m?HlTfFySFEMaR&+%)k3B_Zu6?|W&tcpzwL+kb`u9zv3-6S9!agPdfz zJPZj8^sv8lxm)aj;@Mnu%cXT71xWs|<9I(hwhCp>{6a(o1oh+=GzvXMzPypx8CjB6 zJ!t7GeMtL+HG=nHZuj<339zIOo*${%&Z|D9ar5HpfuCXA1<=vyeU(}-_#EhyD?Yrw z2*!Hlvz*SV3M}gr629s;MA0)wz1Ar)R88fsTY-NX$&{NPB&4Dx*-W3FhQ;oM&@6U7 z`-*Wau$YE{ClVw4;q^k;mSZ3hiH_@0^xiYzi%*_Ntn!g3hIZCZb!?meAH^uZ@cu7= z0%11+@RKTN{bI1*vBAn9KPK!~x(E{VTd07^Ihi&=O6(Lg-lDys?B5d;6QUSfxflay zLQe5mP{T_nd_+W^M+^Vnf$Bf+`A>mpb!tVF-^+PtT39Z_3sZ5(L#js7Jj3$&Q52}1 z_lvP@!KZy6S=N7qDY9|pcZ_@c-L%&$C{KoH0XwK-#=NeGKfENH#Ko3tvpeZ#;5vja z6PeYK@(Z!9zN5bw3AeWRj$4k!_n_*18*mh!g_3sR&~`l2*tZcvP+TyazW*on;x{Nn zwz=8=q0f&$!glr*!zglBRyjb4FqunKvw<;3nf7hu@oHWa2au8 zji;f2R@lH40Dg;tUD!YhQg%UyD1^WPMU;eFn253@ZBMvuC^daI&5!}L%8zUB7b1Uo zscjnY;q*>k3wF9bdf%+{LT<&I5{m!qyx`!OUe{F!J0HUnKKKfyCgoVZ++ZWxcnX~j zm?*w>W}}qfG*|ldrbs-x?FK1qx<6i(F!4zsB2LRx7Io#RzQyG<(TxV9-I=WITWAlBe@WVJ`2}v$KmF z)k+L8bixSUYr;!yt(wA{udm$$eA}tVXS9N}6sL-6+u?;BET@@F_L*C(XogxcS{ecC^LOeitK-K%`&h260uO?x@`og7ye7ai| z>35D^nJAE5qXZvH(|U|ri2?he1D{JtRTl}vw``AnIO zrs?^b((8*Rdl48VcKu^r^RPFf7x3VLWL_{cB7O{bC5v;o!eQKE79 z=RJYmJi}Sfi*|sfiAu2HDc*>KBE*!8V>v(L(L!o^sB9MVhI9T@L6!z4SY?4ZT@Ez- zqU92bHu<%$1aLQ{T_k_NuIu~8-jdsgwdx+kl|{bY;TqYf(*ZaWpb3SJ+#7%3aF0qE z6w}^Dlgyj$7xnA;HtjqDCNlgPV#4#%45-;&FVR*v)>FF8C23Tk=b<&&p=hQx0J_yO zKC;e5%N?&e&4|9|Jtg<1u+_V$LF5X_@%&f1^bx^d9gaMRp=Rl?pIpdqxlFz&%l;sH z%R7wA1tgV?o<3-(M**z)PVstD2{aust-QN_!#qd6oOD7@3Ssp5@8 z2E?^z>AM;n3C99bw@oAaKpOM7-gH5p3+7FenE9$ACl=t3_}*|$LEdgoZqP|_W%-AT z8-d#t6>y1c01oSXH{_D7sD2JF=Om48-IZ?LtbCCk=~SYkJ>wlCLf5z6cQfBT3!e3b z$?4QZ{4uzmA(g4xB79q;+I15dXhE4G8<^tn#_|#bDVm!x4t(y4mYE*L_St6s`f@S; z&w-3FB6gl$wwzC1-M4m)4BuPoKuj+FIuuy7WIAzdxp#pULHonhKq;#2 zwW-_f4Djcx!eaIP8H$f)5{~TWUtDDh5~@83d(hO(07toKfoz=C2U>J)K&94Cw5p{#V`XOG#0LVxv~CMcqE_L?NQlz)$)Pbqz}doQ9%jdS{P zi7~st`95DZ9yvFUzHrY`#cA-QaXpy3XYde|qP?ml?NZY44U=SG!XNBC+laLOnN?KP z$n5wmZPUwKRFHS89cw`yo(*zFvvlYWz6m#K$SJW1&@;Z`#Q4}=$oWp8^4&B$pHdJC zJr{sJ;7^-}@ZF|iVRGVKU?yy7NPS!}l3|aTi>kqt2=`n$cP4e~z~@7)z>F?N=fj@X zqLdsDetT=z-F!h5tt-9!#-i^iAT%$9Qcc#XS?@dp<^eRVOVu-*O!pmk`%Cv-yu{S^ zcR;1!rLzRDr7@DJ-Ed^zw{9+zv-bVeb(rDRQrM$g`o{_U$OwI{VdsLC^YCsX*( z>B1!N2!IM zi=?F36KR$V{WWXhFS52epOunB)fL0__pc`hTrmN| zCDj27{(Mg3QgNOIck$+RWkNzxge7HWTra8l0NzxiF>nBnb66oCTdKOhvV==UCv3Tf zoHxn-Vyx{i?v;CgPGzZN{wo8=^bG=}lU$G_h(!XYoQi9jALdpO&v) z5_5&`&g`K`k?fe98^?K0KY|)1;^9b@QjG0PC`SX3o1R!YUByf0pQnZirr_Zch`Zg? zN4hm$985v(o>_4s62%Xfo2c&}tWe`DDUvcC?!SVYGDdu3n`Rls7oJs260w}M+S+@kZ6#AJ7vdSyrIhalfQ+W+!7Ge^n>a8o zcPjz&_0@%U@{|&dTvOD z4$Y=NGZb6r=NCK#&b#I`IGB*n)Uvo^`%Tj{Vd=|v5dC4XUjI1lv4QG3!aiZ$S!jNI zNBGussWv~7?)8|}toYuUiS;e*ESbvuNj+eks~89uK*%`J`zY1|91__8dp}O~|B;v9 zZz9dIt>TwPR$b+gOecQQAf8OPO~}fR)f3j5qx^NjdPi)vgjnd%MT$+FulN9H-R<51 z+ca(uw9(Avxw7InvzD3RBp|q?2w4@~$Yh=nS%Xn@EpMtRECY~#92H%e6}jrMcB9jw z88E)^9(SRt456mhjdbeV3;W1|^cR0ZGT!K3B`$wt-)a`llCwB4a_f$V5mYDv!uA6C zm7yKc9ID3>k%i^*8)GhmMS%O5tmyt) z7YSZDt7>Pn*WRBkoX2JU5_nSHxEngZ{0nZ}bAYn%0mTX}ad)_q5G@Lkn=_IpLN(u$ zpQMVhpaT=lB}#A;e+?r4SjU(lUN$prY+g4NY9t z%%JwJz%JZq6~bt2DyeJnc*H`EWU`)#9CK^J4L(P~bs*=E%twHntoo_tjKdeK442@{ zm-+l2dx-%eL& zBe|Vr;(@Bjx0RW-Y{Stiy}FgHK5St*@P_fR3JEr|>71J$G2w8a(ugqhlS*Daw6}8_ zIw`@ISKD{gP7T;w|HfVZj;OxXUl7bZDF7=3iPSPG1Wc5gA5E-fIL`Du9ZzuX#2_R*L;w!}!40;oodXEbV_ybibG)k?6RcB8lbxI|6&0& z)d3}{2GuU$+nUpY6W~K2h=(@QLSOZ#uAo>fmJ7mKw>&3l`sw^a=7NjQQ*=-5GUWhU z%;e4&eLyEgT856yrIX(8kpH<dzI7_ER2E67ijt|S=n`5z`o2D6PT>b<-?r;hxk4qLTOHs0jcQndd%)yfi@zkLr9< z)PP@duyt-+3BI9vI(vAh z&lZUdEib)DYx9nM;R;B>Bu2e|nQ&<$$+$$J_K)`PScl0i^$|&dh^(ncT zV|<1{h3-$$vZN|qd~#bXlJ&YIuRoDGrVfGfQ^gl3+z@=X)A}$2LPeIx#lMpxT6#d2 zH;}KKrs=OjY2yWFIT7p9N79LCLy2W44=`N;~?{LG1w&8+XL%DwUy zowMh#lG(#>W$`Ys?cQofZ3*aZWQLr@Zp?|(XSru}qpLE?&2VP`;z$1-NcKH|JzZlm z$&2N{P!>*L5mbhAfxpP!X__F9M2?}k$$LIG{A(B<%)hS~kp=5zG+OU+5m+b~G{4A3 z)JEweVNlQ4{_0};%&S#-9Esh+by_us2R{df^$+qGXFl567YmKol+Ew7W`7;fGTk9= zzSj&_glZBZQ*2}o`S&FYd@TeoNWJoDM`lRbfxnmLtlSwgovo@aJeMQn{&e}?4A==g zMJ3YOLpIYfXVXV2w;m2>y@IB?8sPy`XZIvIV>W|*`g1B#1hb~@NAebSBI%grMTE{o}3zG`|SFt#P>ncxtnhlhq&c5josXi0=1ZC7~!w!D)2jwq8pl@ z75y5R_q^+GsqsoTir#?sy>l&bP@{w7rAoO>#H@?P$KGXG>z0};-zJ-X06jYy;vWKI ztce{`BH(XyaFpveVS}7Lx}#7z0i=0KJIcjWVMU^BP2WvkM$Y}0Qd2g^d|aS6n0RxJ zvk$#j<2dbp-l8$%Z1fZA?KMyZ5hoHwswRdkX zgM%G5z*!7m{TDPt4H4nJHwm{ur`n}mOnlEw9JS6xzxp8Dl9uISn&VB*5Ec@n^YP&* zsRs)qN;Q zqg^ULEX~N5oJiugo1)3=X1?#6)Ignx{ANt%(UyCa*>ldBHHdoqmkCNf7S zX+cFp%N}YmICAAiQk$brm7kNmjE1+!W(Yfvi9zFmXT<@~U(xdgc@wPXjX3ahYfdMS zDDs|`_`vj^8%=wb6oFK-2E^J9SYQ0+W1CBcrs6{FLH6!7f?Rl}mCVX63zMC)p zXpSpk+m1Vqhqh+)A{Q_%-)at`Lh2k=O-Q8mD3;?jKCCqd|THo%YSO1Fw#?r05w_?j;erYADv*J;NaEOY#i)krBcdlFN zT{kJEP!)}ntETQ+DLPA~+*$eo=0P+-YAbRIA4$a>RF09pYznzoP|&S^dSD9f&?xLK zfatd$?7gCUlp^@U^%dJ*E3e77cd(uy@$sa|M8Lznj6A|SW1;sk=NnDlg~{!{<-e-z z^0*z)_BqXeZ_%x2T7_w*5&XG-FY#wq?UzBp$cGRYbe9xKa!DVmaAxg==8MLC#cYgw z%^xMokP?lggi!|kD2{tBw%*o(>DnzHLTFSqg8@CEyVefrm#*rAcO8W~pN622VqGWC z@>REj!GowV`1*=5l*u1Pn(TCdp8|V9W`ja*Db#SJ>sRnXn=N_*isoSS>-V-EH= zk}}fVQw`F#im3kMUt7mw(Hpa+MyOG6P~({8q=w(uE>K3Hzi6#5<+WrXG^5dDW>93n zv*k-3#%nXV?v6^rmJALf=JmZI!E#|yHU5&c1PV*jY~*_wShH8DK8FLQ zWlcfMf!xF6%ryamtB$X6m9YzFOdr;ndG{-E8v_UlEHjhYns$lG`K>3AB#2W~e~+!pn(}xo|E@nvqx8MaUy9tO zqk70+t;#iF6TomAiQUT8(3z@@D0fmJ4=JQ87qg}Vt$!o;=?#YIkB!Kbyr{TH!|OSw z1z%-}k+~_t+(4=jK6S9us&OzS0qb<%zLD5wX_W3z><}}N_0zM-#tq6U59#r#gx0Sv z)U;bBhkd3IFie(|C1Fog24g^hj*uR2wo{e+*h7r-PrsQ%?)6)n5t}P}_d5BbZvW6E zh8l=C;+*StPjvVOk5!KfF@aHhDt>(U@4~!rpcxPo2dJw2vok33hyx_Z1?;)NEWEkt)=gj5a=Esb+**6yPh9zubb% z;)B`QrQ(=ljvbbRzdLclf)=z=bxj))5aJvBC-eM+q^hXVnj6I;ngfy@d-}~e0ttIh zRDHQ;4NU{J%Y&v`e-CTgm$&tiEfZH-6`zkl)0*?^%=-tfR$YDViR>JMNiGc-RFD#@ zHfuX{wA1UBcd8P4AtHV+n5I8Kb&R4pMyOQNj(hV%bnhaKz0?R}{EcC4o@bJa?*{?$ z@;ob8lXa!9Jb>TZK?i4L z78ncRAxt4(JCd-K# zeo_z@e;d1E3%lNfgLfoWrr!hDqmDO{j_Mq|Rk~9Y{~^n!_vfj;2D2&V@1bvY(5`WVm3 z@)I4HG95hc_bvSQsm--!W@kg#$+aPb{Wo_{=M@X?p#(kQFZ-aCDx1Zd5pqY#lGYRG zHhuMiM#&SmC-z2PoZ~s0KZCBS+i*29Rq=$M45M$(bRh7)?#tc<#T&L*s^awwjo?lZ zE4?R6FK$a;yFb0oeoz=2fBzUWtn@x~13o%rm45@QubiNpI3xBfSU0(y6~6ZL*>{Bj zb`X|ML1Vow!#(k>mzfJ6>#p{vE2OFA2g$R+-dK2CNXk_=X^k(7M0z^qPG5yQk9(r( zBoD`%RhA}6o%0+p3t` zq*-*%zOMWx*H?~tx>DdsOn$Xw`uuX5Zm=Q1z_x}O*UQLy<<;-B9*fn}>QlN^6$6}m z8hzCKMLVvGYB$ug^R?}KuTe9FZErFkyXzd+P2^u7YABxm(#aW;#2}f4C%zhMz^JAcRvZ-BZ|fk2#)X9= z^1tu#~=eagk%d^&FZV=v~Nfjp`_ZLg_l0ls;_ z0jZ3`G;KdA8kn}qOEc4~?0s!Q_*%$dD!y8^GIJ5yg$wIwXZR={Bez8N2iDltc~qv8 zcC{X2g??gJ6E1w-n3fB5e7=%Wg|~To(|Mq1-^fGQCid!lL!j&HgqEL}2fq%k3x?ZV zJ*0(X%yEWG&!2wq0qJuue<~2k`0-4^lifLcv?T!r>fDlh>Kt%%qt381^QEH6C=$7R z`^wq)$0&Q?3|@cAV*I?G7CmXe=gL#}nFM4QGT6{F`g$Wo?HHsPB-o23rC`;AXe*S;c7bxqvY($ z59Zj4TDQnmA+(S2WU)(O!}A%TihYQCCvEWtB0p%LS$($N!BoR7EpZQZQh@-`F6iqmOpzuAz?X#Op_&K$cqJi(SPB2qJ9sdhxm#LJrXxWzWAM`#ztr;&i-NA4a+<5=V zCln|8DjgUxBuwBE&Qonntz{^L7XwbdtG0|smc6`=j1{LqqkN=gH%U!lVRYe`_c~{< zhx49txV|JeR{cy^$^_BTK_B}ers6xG%Q2<-9OK3?@TW~*9oTQdyL5T^EqI*V>n`T5 z0|=0l)%NAU>qFYx(PBuigeOh&K}(*MIu_+nwfCiT*ia@~chg)1*{?{mylQZe#IyPn z!wC#vwmU}pZS|R%)BCL1$4Jk2Fw~SSR*Q`r-Tyc_a&5s~&CNA?R<~_gI$`2OxKNZ+ zya0rqI1cC)Q{bCO+KXP-A5LR~`J({gH(x}~sLg~CuDNYIbj-(Rln!eZeYhPF5ePBr zQTA0t@_1&S^;IE_Fxu-lzRz_6jNYC}txMf4XOaUb^<-A2`hm~ts_w$_3HHA4 zL$5x$7Wg~$kHWq*FIZu3dTe7^rqcyX|M^IZzU@V7dFNn;@YqRjM_0R^DJ`Y$i^2SK zk<)^|X9v8`3?<<;_`Id{20dW$*{zDKx${8A%SSuu0xaNbCiYBvIPc4PC;$BLR z)DNuJEu1S(KMfNFtNDD(<#B8J$g2K$zx(*<)*qmQ&04Q(2^9gguO+F*!Zp40X7KU+ zdASAuT#XlEL)rqUEy1JHN3ph44sq3F+F@V}0Qcys*_)eL?9&`0CdIYQYhUj9eT~a^ z)4Ja;W(N62I>+OqHv5{iAEnF@uXqlYqg2nvWvi6@t~#aMwlF~kImYJ+&Z-riXPn`$ zZAalkWeY(=hSMM1VQh7qopxX@`haBeJtvr|Fc|0$e*Be|u$XjAZqepi^AQ|Fd|K;P&r!T&ylt1nqPXUY>ALm*Cgh2aeC%#q$uiiH;;cUT9HhJxY zlo~K6*Kl}o_}!?w?Z@#_gork=f;{`hRG_`>UkpFD+N#UP|F`diU|!OHT&9_H)i@s z1KJ5DY#x3h6VJ-0bXoo=*L`@b(H%CzzpL9)Q1dZ93>*z$+BoWX#K10of2E_+f2h|u zkCx=$pldw3Azaq6ENXuTYMp?6$U*#~=zDO>4WOAsMr#4$F4&+0Gs5o0a=X+=RD*|U zG77frCa57STIeUq{Vt6{xYI`kGf^VU%k8UioA&6yc3V86h6*Kq;D14Z-u$`Tt03>& zLNhTZzY=4*VX`ijdq-jX=*ObqfvAu$ zhVhY!sxa&{9);$B)MpfC^{aT#GfXY0QQC2-Oa@DSO(nX$p~yC#`eoQX`@GS`t^FqD z)Je~xCwRVK$b=pZW1)Ne+EkyxMYMWoIlb7PmvUD;y(Ob>&x7)-lF{g_)O`s$X%13# zTxkoA0r~B_z8wRJ7x}?hp%;=!&eqhmR!$gq&fjQ7-&{6yz1`P%VK3_k`;y7zJNN~- z$8wGZRRW59Hx3p?k$4dBlus)qf(u4P_r)xw$&}iLvO-bU;4P@tYzCxWXmgv_W?Igv!T~*LOevK46lr@#5&TTIB&R}LGBMT_mRgcux zM)XTc1{6=XXf{Ip=b9Irp`bV3tr|2>Z|cknUq^5f_bV%(7Zr)hcyMoxPA>=C-HJsK zmQ93*dO_24O%AnPQgI%-Twhdy_48!?^>l8R*$lOlmKnuQ?jA8d@%x*VV{%>%QbeA{ zII-B(A>jvuq(O-o#usz?+fTHLrs2y>OI#q|m#b(VPr6W-o8wZOT=r5{2_a?{ zP8DtYRsyJ(iA=og+?Q}=X6GxSm7(Um-c0*gmPvxEh4cn)DdWqyq%1FLft|-g+q$R_ zyUaRJ4QjD|@bnx-caNXV?j10TgG9+KREg4z+pk7Q`s%?a@cRATOM5p0=2VbcsY&&f zrCh+^Xe#izRodQyb5ew(iUnfSi}TWxn73k`yJcjt;x&o!i1-mg;Ut@iy8)ZRbX=1{8ut4@x1+h8@MxMMWhLy()ov`R$%YT9s+;r=7r$!tv{ zKWvE7)ZqHqPzT05KSjKOl zda{>}>nbM))?;=%HK6eg0SntCMq;#IHaf3Ue%gXDuI}PTI)}#a9R2LeYiu5QE)ESb zCw{Umkv?ov{#za6ayN50XaSkKfGKlE^}4&aD((~`K$V(RU)jL9#zaVY7TQkW*Sf5W z!p~@u^T6z#ocfcglsjiFk+HL*3gat@eUs0V)r}q7I)+gK$B-JnR|df;*ktCXQviV# zg+0sfqJEycy8E3nPGVy>>yA$0pTlXV^_zxV1$B zZjG!{$|2A8FazD~=c``~qFz1eX95IQI4PRjff^lnOhK;20|R@h685CU?c&a-ID22y zvag3Zvu3^STUq^)9sUSX!MLFvw2Q$bwucKaDOLf~Npwqz3a`*2xpUN#xr)}%|D!w{c&8x{hh{5%d zxlOHP9f~=0O&c&}CeOE{M=ZGxyfEfuc?mU;_$CX#i&6W#B%LLM(0X| z-yfZ)Y3fAw`&Ps4i%AKV8Lue7oh^CJdP-%jX$2XXy{m9hQa z6YYB0(=}GdOMFjf9KFlU*!jia`?BO>CijZOOY6hB)&&31i-n7W>%kvB!ko;O9S^3{ zYZ9+J%!L--eEiw@r$|h)Aqjwq_gV^yvr2NQzZM+dw0vB6FkM;U$6>v+o~5&IN`?zc zZZ&+cVBB^KQgW2I}HFN3?lZb-VrMW(sX zIykQUOwY7e)VbqLLPOP7+yib@yTm9<-?sGCOqt5TPlgAWAq=Z?2$pG8hnNz2y6|9y z&{Jb*?~4+P>~^n$K5c;Wf$d!b*bYZ&WBT!ahzn{K@D6&DCj$%P6XjWRPHhFTTypc8 z4F~KAj&H77PjW~UPkG!-9*zIxS@_(v_qIzK#upp)v_m@|f3!i?UxVx^%kFps1qK<@ zN0;ZNofakv?UZCaMC2lf!$pHtH3?wdf->T0=#x4ydoHHI`Az62r9=22NHp5nWOoj$ zy6$__n6z&YT?|i)(xj$|`&=8fjViw(T~}|MjzVi3adxHqR$3h2vn*1rsd6Xz^~9%| z%!ge=o(aooOf&NKEHR+JaI#JF^yDBC6;?m7T{Di zpQEElcxw@O0ze-2{Wt`k@chEba^w8VW40qWm++^l240G`+?&ur9FyZ7TAJl&4Ka09 zYdl9n_H}?cdXIOW9g$0`p)s`6!=y z%}^BBucz{nf|{X(h17uz=n}VTLi()Idt&DgS{k!cG)1kaYKWbJrsp#XIsWfnWCoif zVy7wMKV{&}mHmUe0h-i;|2lp>q|wMvY+(u%Wqxz|e;i(sr{A&bDEyCasKu)3lu&Ai2(I^|$D3N$%gcA_%7u)>RKrY8%2}C@9_Wr4VKX$?Qe_odt-X+~n^5*RS z^|<^@--C`pNQ)w8dgXyJAH!|b8E2koB17mqv1XCW&8PnD@Cy!*zOteuN>Fl~PLkr< zzkG$D*p-A7R=6N}WdTlG?`U7k#erRv{;xX@Sg`!{G!SPW-*47wE7n{4**&TMVZ7=$ zg+s%>(d#~(41phAGbbsIwA_-6zW;Uh>HcO2%>h?m!BdPoqqW23%%ruB0y`uAM?EM- za#e!)?Uh+>>?DgJulL4Ehp*S~x;$*Jf}A>aR!UjnvCiMB_C%3p=l(O!z6v)n9^oMN zN3PZ>`c3UBJzdu8w^n9vV<$sG&i;FS{iFIm1msI+axYaR=&hcKkVd5Oh=R&l;*63g zJDdK^a_7+?{-O%QBZ$E*;D1yY@%~wT`o?5MZQn8-&vIB&^c}+TJGkr9s)PY{Il}4N z@&j?OClim3;$&pe;Ub`{^lUsKE02I{rqgKND8jt^SGJk?ox!Trq$A98L=kL zCEpiQkxKLYgywHX^_PMDx=bT1xN@qU<&WpQvn~JLkiT!U*`3-`Z2LDCeJB5?^;I*U zJ-1?h`tebH(WbI}$d!MygnwLM>hi6XTPy$Zm;d>(S)KXTbMcF#Qy+jwnNn^4TP;BDZM%(~3`>wHAHzG4SL6YAkA5@t41h16cbWf~+9=`SDwsa4S%S0f?2S;CY@N~>BwN-j<0yqNAgftT6Dj%_Ts|H?%GaS;#@ zTpEZC31U;`0(Cq@%o~CQ5wR+S-Q2~Tw*tINAc+5wjb&d#w6kE8Pw`L-u0eES1$Pk|`nX00vTfdil z%RvbF#Met+rjH*cwh-$>5R_UE-DINj?u`;$#f#LJZ#{PpLr*VV?;uW$vU&JTOzB@RDH zco{f?9^bmwRn{QVD`>jhQppar;EfStBOa?>vc--NYvf!7y{ek%w!AH1b^ec+)I#=fN!?Q5(fV0 zk0--B6@+sx8fcd_v0Jkc1IwxYRj-ViTjg11s!VnKppv=%mLmD|E0Y5}^1Tq)X?kp| zaVy2A^vd>&3o~`Diw}q{`C7Ic^`9`oBM&51Jw^PNTLNHdHnLc#G-UCpuzxQUwzddH zJpC3SeR;C^eO-cms|DaBhzRQXl!Z!=He$4Z9V88S!hih0KQ!S>!@KWGEm6#U|5%;r zOs^JpuL~9T`V>llaF|Da5ZF}gLw1n6A)&ZCIbCQ(QX&mFi4*?*6yT)q!a+z6*58LR z^yn{+*!mA1aKXw!kw>e)?6k71>Kt&muGg!c4wb(Z7NbB&h;ap{HilgpI8P+DTFW5V z(Jdz2xrxc}$>%LB;ZjsUvcq?;hkY-4VC_|P^#H@Y)}EKTAI!s;Ze&SlSRrrno1X>9 zobl}4EK3-E4HeB#u_b`VEBVLsB20vh)l zg|-KEZmS~5c(gYa8+{O~YkRM2+g`5Zs{8?UAd5xr-+CXtgwQ*HCFQXf?SU>iLN53r z{l8S3H^g(H-c2u@Ab9|b?^U$kD_!z^->aPmENkVPFdAGhxxIApab|t@vL$}!^FCvL zcA7F@B!F$CQ}LIaVy50)52XfC-K(hOjAN9oT2Z=CX2Z>7sA@an`KrndK+zAtXAf!U zUqWtopTJJ^S5J947qb}~$oyrE<{qY&rxwv02FdAa+BtQiUEYtiR^No>Spzw)n`_?S zp|mrHG34`BtpX)1rr$DjDDL+5v$&0LKO+4OrlL|Isg%7<#vd$AXkhcOG}Lr^9{WjI zg6=PS0-oXGT~FWA0Fy@u^g62v8L6FX;9yEL*>bkYp&bovI9{qnRr;opqH7(RQysZG z`TPYtc4SBeO=9yMTu;DN(hDe1YR$Lyjh-5y{cnSH)RDl4C&Lp(Z@%Hm4 zRi+GK#qy@nmFUgse$dLc)$H=yB1=-6l9$6?ZBmwC&l?&;wOudsy0l!kLE4L$ z@b@j6qtJ1kpnffgF`_Q~hKMjU*@fVIRH}W<-!L`dE;$!5t9JEbvJxihVJCXW{$g_C z)cP&_ouR?*TC;J0?a&&k@&+|zE#k|l4Tbt%YC}jhI0o1Gh93#(@F7?cv|8ApY_FgaI_sT9d#J+5_MpPjVQi1<88{K2H4{YQN1kDMo9As0#bGLB;qGc|FA9Sk?BfVeQ@{k(l@zMFba%HsJPd9RDj-S0$_9m9)f;Ui5+2{b%Z3oF#3gCE zzqnOWTvwu5KJ0aYiKJq+ob7?=8v63Jc!RMpNeM}UJ@oESh&^D82o`78kTOU0t=<|* zG$8rE^63ASXn)~QA*tPq{U1rW8Gjw`+g4RDeIRibs2cR08G%X6kPc*yw?&kmqMoYH zwu37z@8egrS@R}n8A28X6QrTBn3)S_$G24j_I548$B#bYTv&XRRm8jkACP&)rvrilVt1G z9XXyUJ+EwWONmff;JSv0Xt-5>)_uq2nN|{b`nO~pm^AY8!l^>-uJl75h=}xnA#8=c z9!Zg4&w;c2d!@S!v!XEp`V#zFGXWqWH0=Ct+#$AyD|57tSfqA3G+1)7BJO#1kI^x~ z#}Ny!lUXAolCxdv66$x~Z$yj&9yhXkrw%;b;0#5r--O_Rq-VVW0u{2CRaLU#QsQs> zS`8Rh*oj&dv$QHVpAYNwEA}?^Tf!-cdCAX_`#lEI>J+(#r-v z4GX%IqF=za_Y)n)56D)=HoT?{{m1a02*nMTN06VUIrbaV@Q(jm4DSp2d_wQ?>|^tn zYeYP8t;$3Oy<;Pzv-Z2O`K}r<*U@ygjU1@EzqE;SjFH>7Y78I$*nDi%vfjsOFKYT} zmeYE3dqk#<3@oep|#%qST4Li#(mFPRCld zW>Ua7N_YTh)Dv&~z9&+`WY!h?6<)dd#`|2s(t4J;@$j7!+c2MJC$YWp7|_(U!HhQ!kgv1 z=$)3lAnzz_b8yHwB(K|mmc44rV04c$KD1?lKdTni7F9pk5c8QZ$ zqun!M-!B>~?8!^JccA2}rY{QsLG#G+eS!~^VXbQQBz)G#7|5Cp3t_ZB{9A)kFRmFT z2MiM99apWa8w(dA{MmtGt!bGQ@A80PHIx^Yx$f~Gz?4Lbx=-)dUwmnjD%mhFB(Dj$ z?g#eSCkPqg83z~iya!z}U-Re&O5S>LQm)=_I`lf=oM0fb&O5^&4=^^4>M9HL_|Ce| zX7|L*@#2YNx;Z+`aH_`fio2FcCyhKxuqh?p+-y^ei@E1(`HI(leB00CgYMUAUI0eG zaNKiPKGuTv0v5S=&S`^pn*&#DzvFVUl`{63OUPG5r6xElvMJN9A4z*r3JIoXU=`5L zjVZo*58bx7;c{-N#r9r^r?4*7vyUWgBeQ=`T-ALEYmB9;H`w08ga2%G0=RwNAnhl8 z?GWdNLulxkj#GP#=R46xx4esAK8SWR&}+|v5q$rH$khH6I37Wia3m}2&A9%yJx*wv zBzIhN(Qc|T&e&APOEy*KOAhm$o(LQ09P7>&D;ZxBLRxb?vOcpGk>;DPTl4bMK-~;I z3N>NjG#&X#f#vLaRXcIbw_Ln2OIl;joulzp@nR+2^K-jvM!&DUXJTk#D-7T=P-#x| zRM-0P_^)$o6)}{$nbw((oSS3$i)ecGdD|g{1&*A?bn1Y{x=sL^Zis&{P+Zk*{y09` z+so-xqj_n5w2!~a$*ar?cnVW9~Yd*yA1iy~Lt{{LKlM3zvf84afOY68cPJ690->(HOuxqS|v|n=~(MhrcnNoQh zs!(*K;oh9*r_UN^p$0)t?P=%s`5S}%B`YY&RscS$k(|&rpJkF=rH@_s?;x7X}{t@PQw;Y$M-zNF;u) zogHx8i=OB1h%P2?7qfOAcb&W%WQG-{R4=oHoU zxu5{(Ub%y-7gy^m?9++%`+FhN_s0U$b#A}rd2NU+=_5Vqp2n>y|E=JY$@)_KO z@m`*$_O@{{d+e1=-hdy(x)g<~(j$#$59z%FiZ@Wc!=-*Rcyp9|eX{hT97^PoEZF@I zDevjuHpPEWn=3tox+`ph{L4N%?c0vC|Sl zjJ)HCo-SP^PU81N8G8#oE{T|7GU>@w1u0!Q|Z7=C-8;L;+O~7g6A!qXcrU$wPv!=_) z-`Av*QuI^3a{o}PzIn!XX5_wO!b_%0fZabGLv8bt&Pj~$ZdgNNc;CtQ0g{1@r!+W8 z;oQx)KbedIz+cnjqlc}VXNoDl=@1WdnldfQm+XB(;Rk}tQ4yEp$ZaLI%Zvx>e{1I3 zvjXi|yG0m!EBk#9a5voN4UgK3W&h|Px&JnCJ{k?rGHYZgl>VZZFWrxJLij| ziFW~}78CykE^dD~O(&x>eYMyj_ef)u{MF3UaJGU)?UiBPUd|+_6ECu$*&My_Kz&Ubl+udM{0a?wn= zBD*6Xwm$G(37(RHYBsJZRxVj&an^Q3*OoltwHv(mw2Xe*f&T~I1y*;~msnrvC7sNn zPU|(T2qc#*1WOQzbsP4wYmgrb?&8?9%?=#oHEQjn`3q59XUIM(DY7qMN! z7Op${ct=5|1*LS_tsxYuccUMm>2LdssAFDn$yvW5&m%=`p?8fv@97#QA7df=cLNtO zr%qkR&LC|ns%pp%mh+@NtjD!gexpRGihrxVojkf>y#~Q$W7$R0WJ%7WY_B;g!tF{J z(R0Hxy=HGdh?HOx8QeG}YPweRtbZ|^c@NcFdMUE6>_{VMngbX2Fd!ElDXvm0(`)LE zOPCidW9<)W7opEyi&Y9>!L2%-@Dm3WvqsakBBF|CLRScaX*?HNW&S!HXR*Upe2p@K z4{Xdu2sx#m^&^$t%vfG7V26W=Z-RWJ3F*uJ9Px#>yoEV0p$zYOkMMoeNY{T|^2P&M z&|TY@zq}Kk8vV*Jl-CJ+fjDL}Hjb*{?v9kC=v7-onuVsSUy$E>;w<@G$3`SCFG%Ov z3g<%R`Ui2hz^_tT0`&_uUA+L!X)cR0?}{OD;RR+qc{0w`{9Bf;fkAe1s5Uz4k)#Iu zea|cn;>8Exfw{Eb5fPdYCh^tg*&;<6_n)$=4QmQ?cEXOV9S+@T$13;U{}OZlDTA5@ppf_3$Ys5{bV2E{?#b`3wA z=}igH6T}hsii4s$V+Y2DZ8>)xZ~9&+1x{`@6=>e8;8t9=Q=;01xZj6nZM5+WqQmQr zH)(;3;rJR~p3$#7H=TAQN}D0G)w_w}4D#@v>5JiJtWNd3bRJ6B6A&`qTGUkz#d|{J zd%%XOF$}ttT)mX=Cnadw<^>JYL6KIOI1_&jIYGWXEAbjV zsQY-XRykU}KJnVzt+CL?`HfU~BnYYC>L-0q^rIVK+O3OW<<G&Y~4Sp+~hkz3=>dPgT1F7s!o*4B#(P@pX>%V4e!>(2GZ_$Dl zNNYe50B&WE9tMAKtRvY5@JuydU?C1eMTqY0i2QQ%vz#z#!6Q%ffdZ^%NK3CVe|-?Y`KJ*}hhf}Hnw0Z=s8r71Euv$MWqZE5#+h9$VxV?vzfh)G zepQzx_1ms_!m@XIM{nR*{FF^kqZfVs(S~XEK?Xc8z?htdP0v9buQt1ap!B*TMj8&jw40P z%i{i6vnT))<}|NhqV4u5kxO-xn|3FiBXrY~VsE-HI8Z5-i3BR~Y$Nj>(`Ms#4-+()9X`($ z+V96+XyWy$=t@nkZIVCAX;(U1_sye)Y=xV)b6uXTV7AGB6M_yW8K&LlO?0oXldg9oYCWRO0*3xNa~r z-wW@@0jvBUv$yKNm};76P@)e|O#W-A~hS}_>DryK6fK6#e=XSGYtYhMiYwf?CY2ivXiXYRj809yTL>DU0Grb zh8g?BU<@pfFV!69%zf^2-PiJdU)Obte54I!pkt#0fj|uEYASjl z(AilK=w$5KGa%53ZI0?3;KT_JJ?MQ<=>W$vaB$l0p4L4Os675W*^&l0J_l1X@&JJ@ zc^>^aF=NZ^3j$H!tE=48_cdRmAYyLd(q~D25+;us8}h$S5o#y*(zOy)-!tV%El^{^hXx`pXH5R9v8Vp z-JDpQLjB>tezjZJTgQh9I#Qxq^3_(u;D>PJ=h8z13TEe^5r3f4_y=oxGAnC3E9)jD zLC3D09U>tiaUBy|I1@-f{0aK=;aW@Tota+wKPQ)@a+DY6;8_2M+(0=dl2^l)$jk z(!KC7{;~V_Qe?m!-*zJy`$fSLr|KAiA+7bM2!0u7~~24ncdB7PdWSL(;U{ zjW>g>4(A;Rh(pmsbBURC?|#vsdRueE2S?;)+#Ba`hlWy9+~{6Qc;7hOZ&VRw)~A_N zF^+gXU0=1f?9pJ^R87vzvFMpDFhd?_?#hD`{AP^0-#B#DV>Yc(-giVBr@azgn%hh3 zF7}HK^5w0nSNFP1=;J2>pZ-R)##L+k-%zHYjQPHpdF1(m$c3k5K5Y< zBx^3#xbeKXF;1m=uLlGN`9#&vOx$wRB@@JJ)|?01ca~Q!ZPIER%t7d*3K{6ACl(@h zPPu2#Lm^XMx>6;ve>i@ly>RbhW#qaAX#=Y7{JO)|r++Qm!n4h+ZvBhl^xo7;!Rtfq z4KzaSV*BU$V7$kzu?e;dFZSn7(f++vYzM)YiJufi#mlC&E{0xz^7h^4GavDoG^B7G zG*5JQ(nXdqzsgaMDr+=RY|?dGkL~j%rpvx2uKZ*l%&0moG$tfuvT+`@V_ zoO|}D{rP5a!Byq}(x2!b%V5k5tK3>OOiMn`Eb{VN zl~KTRIg?Mj+@zsN@lTz1Y;kKLf~5^VOc$XLxc~^5vU=%|zi;LJ(kVO28>cd-b^p0l zH+*6Mx}w%ob7;Ssit=+# z$aBrHDt@CZF|R+i5lVjG{-iXmsQ_xGc8A07^Cf8xO&V#ASN?&swTG}LrUP;VM%H;dsN(EuxNTVJiqfrTdnV zL;Y%RneS^SW<+)t6tb8yU_pLMsB38!-}Z!@j5@B?nSktb@^?`!$~ zuzhymv}K~df1q!W53D6O{8TIL@3~vPOYNR2T+%_DzIUaw>d}!ykEOKu?ftT3Ir)hB zI}ls?BDjNC!WF@=M z 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

    av}?PpTorzV$PZlAGf&9Exqx}R<}b6Jzm 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 ZlJ~YmY2bP*nF;WJ>dM+mWr`Mo{||o9KR^Hg literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001647417468.png b/umn/source/_static/images/en-us_image_0000001647417468.png new file mode 100644 index 0000000000000000000000000000000000000000..0ee4bb107df76f704639d99741cd549962a15a6b GIT binary patch literal 22353 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 literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001517903028.png b/umn/source/_static/images/en-us_image_0000001647417504.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001517903028.png rename to umn/source/_static/images/en-us_image_0000001647417504.png diff --git a/umn/source/_static/images/en-us_image_0000001518062664.png b/umn/source/_static/images/en-us_image_0000001647417520.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001518062664.png rename to umn/source/_static/images/en-us_image_0000001647417520.png diff --git a/umn/source/_static/images/en-us_image_0000001517743600.png b/umn/source/_static/images/en-us_image_0000001647417524.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001517743600.png rename to umn/source/_static/images/en-us_image_0000001647417524.png diff --git a/umn/source/_static/images/en-us_image_0000001568822773.png b/umn/source/_static/images/en-us_image_0000001647417536.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001568822773.png rename to umn/source/_static/images/en-us_image_0000001647417536.png diff --git a/umn/source/_static/images/en-us_image_0000001568822825.png b/umn/source/_static/images/en-us_image_0000001647417544.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001568822825.png rename to umn/source/_static/images/en-us_image_0000001647417544.png diff --git a/umn/source/_static/images/en-us_image_0000001569022905.png b/umn/source/_static/images/en-us_image_0000001647417588.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001569022905.png rename to umn/source/_static/images/en-us_image_0000001647417588.png diff --git a/umn/source/_static/images/en-us_image_0000001517903064.png b/umn/source/_static/images/en-us_image_0000001647417596.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001517903064.png rename to umn/source/_static/images/en-us_image_0000001647417596.png diff --git a/umn/source/_static/images/en-us_image_0000001517903068.png b/umn/source/_static/images/en-us_image_0000001647417600.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001517903068.png rename to umn/source/_static/images/en-us_image_0000001647417600.png diff --git a/umn/source/_static/images/en-us_image_0000001517743544.png b/umn/source/_static/images/en-us_image_0000001647417636.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001517743544.png rename to umn/source/_static/images/en-us_image_0000001647417636.png diff --git a/umn/source/_static/images/en-us_image_0000001518062704.png b/umn/source/_static/images/en-us_image_0000001647417648.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001518062704.png rename to umn/source/_static/images/en-us_image_0000001647417648.png diff --git a/umn/source/_static/images/en-us_image_0000001647417744.png b/umn/source/_static/images/en-us_image_0000001647417744.png new file mode 100644 index 0000000000000000000000000000000000000000..3e6e245b5225ded684fd7244220457f47909aae4 GIT binary patch literal 321 zcmV-H0lxl;P)0EJ3aj@4}ic_DT#A9kWzqsS! z>CLT#U$mWsoSp2@@9Cex*244LU~Tn7uZ3lJc@Mzp@ql(zJ*^;s?uI5<2n)XlB%69M zZ%J9M2=zzXwz`^5?6xNBx78l(!T%4e>fY7H2-Djffc@PVt=+E7+Tc~Gu~xqWRMAx> T#$x5d00000NkvXXu0mjf30#TQ literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001569182741.png b/umn/source/_static/images/en-us_image_0000001647417772.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001569182741.png rename to umn/source/_static/images/en-us_image_0000001647417772.png diff --git a/umn/source/_static/images/en-us_image_0000001518222716.png b/umn/source/_static/images/en-us_image_0000001647417776.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001518222716.png rename to umn/source/_static/images/en-us_image_0000001647417776.png diff --git a/umn/source/_static/images/en-us_image_0000001517743628.png b/umn/source/_static/images/en-us_image_0000001647417792.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001517743628.png rename to umn/source/_static/images/en-us_image_0000001647417792.png diff --git a/umn/source/_static/images/en-us_image_0000001568902601.png b/umn/source/_static/images/en-us_image_0000001647417808.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001568902601.png rename to umn/source/_static/images/en-us_image_0000001647417808.png diff --git a/umn/source/_static/images/en-us_image_0000001518062812.png b/umn/source/_static/images/en-us_image_0000001647417812.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001518062812.png rename to umn/source/_static/images/en-us_image_0000001647417812.png diff --git a/umn/source/_static/images/en-us_image_0000001569023045.png b/umn/source/_static/images/en-us_image_0000001647417816.png similarity index 100% rename from umn/source/_static/images/en-us_image_0000001569023045.png rename to umn/source/_static/images/en-us_image_0000001647417816.png diff --git a/umn/source/_static/images/en-us_image_0000001647417828.png b/umn/source/_static/images/en-us_image_0000001647417828.png new file mode 100644 index 0000000000000000000000000000000000000000..198a6e02bc0f1dc57405f9e6ffb21931ac2afa10 GIT binary patch literal 49269 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 MUe{7BzG@!&e`jc+?*IS* diff --git a/umn/source/_static/images/en-us_image_0000001568822965.png b/umn/source/_static/images/en-us_image_0000001568822965.png deleted file mode 100644 index 184d45e62bd7f36161137c125a932757981141f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29754 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ȉ%2z%TTOa1qn{1}-GnH(eM4@tc-WG1f#Zn)xA*)D4LNv!w zi(hPmYe;IXZ`9KCbp1ZGv&~HTycd}S+%xmIlGDVv>!6B^HB6Mv+n6>Z#f6xP1G{L3 zmDu#@-XWV->N_=-`Y<&;&i0$(@HyHEnmH_)ZENUC#R5)wsoWl zg@87QsP`(&!rkRDO8A=ISH3YUQkKmhP7QikdOG@}L(WFNL|8Uo=2;XeQEw}ak9{+T z1T#3{!*}s+HB}e%_f|^r$#euKWx^m5P-_HUY;xTEwC+>r;?v#i>ap|b+S<*Yd9y^W zW$5!Ue@~l3)r6GOsDleP`Z}c)=M3Hvf5@X|lyCiP6ZdD&&oa*5A8g21sDhmqQpP_< z(!kESE9bszy>IHqUn;K~)#M&8c;N*SzRH`4_gJwNla(6VVWrga$td^OXQSSInNK%k ze|e^%?>&*^u+*6ePmqG-%P&Y-?k2GhIw?aQ^L%|RGED)e9F3o1((C;R5H$`ksqMKY zZRy=_O33laa;-RcvbFN3WA-P@*6g&E>%JWk5Jy2#t}tv0Q}f~20%Su0mLY+ zQV&@}67RX=v*&}nl~;S_i$g~PHlP&h%dLAy9u;yt!Xhmhb=MJs}aE`{*Y3ni*NIKuGFro7;A%TaD+HvbW{z4gk3`VRH_PLK_@YChlHzutB~AO zgv9jBS0h}$&Gm(_TYF2ry?)Cy@oXwb5jm0JjV1`{`3R|3ph?!uoR_?_fTbQ`N-j7q z(c*O-HOUnh-332P`$2C$|aYF;ubV%u2x7D2&-S3k0gPZ1|0vk88%s^!i zM_X%c)BaZ~;j+Idnwy*Zv&Z0jC0fI=69iit`Wgb~bB@ds1VmF~yvkkaAUY8Y#>f1N zcTWRSX{*hKX8a-Zsz9!o{7PnGvW9UvWf31qj)pe6SE+IF-t1w& zBTx!Ng`+ul_em#QIGwb#X|F|>n$X>3c4(+g%Rq3!KSg1}hI<@_U`B(x>h(rqm8wiK z%FOIqpPfCJrj4xtt*wpAv<2~gnZ?x7TV=zbA-_9WQ?K=~GxU2v$@++&e{g#bz`I`o zwx9<98G!)S_36{|Q~$%9W=#4a&3!?T)X0zpqNbvVV)gVo)N^+fNsc|wOtU$kd+|;( zHL{C?DL@OBF3(<6N}=LLdM9j^ZZkDgh}IB?Q8`fwYQrA!Rg7U_q`O$kZwI-yB#t^kun&73OXaalKFb+!p)VJRa1wIisHW zjlR9=;#nrUAzFeAEd(k1?J~|@esdj@8NDJJlk=2;%6W`(Yz8ssGjvrRv|D*!xK%6x zQ6lofw*Cypule5XAYlsj6y{r{mboq*C=0KFQd9T8qEP-S{)YXl>HzQ!8338}9}Kne zt0T$vQ^%J2(%B4hSEuI^#V0GrohHK^Wb=z?D*95J*fGx?>iKS`F1|dZCd9%Y0jl6! z4HY=a^bb-#8yJT{A8W?!W8DMPUyb&~3VGob%}Ql*bWF28CqsJ-KuE{}Hr}myc1@Uh z+fPuxm@WTiWYzHbv4>0Mkp7*mcaEU~QI1SiN$b2@zz>#zj*FH*EJZ$$ z>+0&t$d6$G$gIow)RZYe#RGUAAWI38!`T}gM5(F09*)wmc&s1N#kwN=9fFM98m}F2@tE8FoszkLs^WPsVs5qPJ9kQY^A=> zk=%W#KXJG7rm!M%nR= z9I%C76>BH$N)V2PF^Nh}egzx=`A%H3ZC@>>6HPUa85I|ETOn7CZX-kyjD)=%W7o&X} zh_KTfM>U&t@4l^lu)Zv9JhAHNtbS^ApKXc65LU&UCGz+${-<^q8DMP50pPcsGo{nt z^Eicp_HqOQiJx>Br282zIqO z=9@)-tWdrGq%X6xM_nw);|+2cbWkIH&8~P*3eis+I>T(Bd#4g_6p4|BMnZa*s_irB z0vRvK0{L^?v$Knp(i5XLWsSAbvmx~ts44!LSnQ`Ko3x}VSP5eo^n4*@g~KfmLpgYz zQR~-8jn))|h68D6?@hfz_cqagf}<^p)H|PzNI(oQQJvl0rhSRefXZ2kCu{Zz;AKZf zMnWSZ#sQqzw%&!HIrWlOA#^Sb&0#(NGs zYB4b}S--JvMovx*fT58@ep7Pb@l02Kj;bV#cU2JZlR#ebo4#TDTzjwWPG~=e61s`w zIXo1);WFo9PKfV7{?8K<;plSCH5?8HsAP35tzdxO+YHrVmPNLMg$aP+#>q*wH&u}t z6`IpCh-}x4OU$Q+eI6_1M5*Zf{Xpkk>p?Z&eC@mUs*-NJdF z{(go3#rrrsJ_MZ;Xe0C`Z6UsRLZXE&bpLvlRYWh1g2pcJZ>a;x;ITI2LM0MIV%#^u zrUyvu7+@sfP_X zzX={VR{{{(6IHLgcDVjhH3I_!$=tT7QK8gDB}l&eNQ>Bh2rpkA8}U#XR>=ozDnw8` zv3vKQSMw#-)YSY7sk3#V$^Aq6rp92yN#BmQ$oOD5jO>6Gf{g^%to;CrpUAzDC37=& zNSCJ*NF4*i{`Yoyoa-ERK!-I#F@F?JwpQBPyZH|t16bB*p1kJ&i(cw{PXHJYEptET z$6EU-q;*k?0!zU;UjY^UQk1Z?$`VAE0*7awO^NzRa^6V}KF)VE3r9nmCc;9T58R&; z61O6s&vQEUPtA&i{ugzKUx2G?W8;q+l7JwbtlZrDzgT}lIB^6xpYKS$V8N4khdfUn z72P6~L0pE0tJ!t`8tW4T2LT{u=rFq6)iCPUGTMA4e&v7ADrn0O$FPUwcQhmf9u;Xk8}gRz57F)OiWGXD0$-Ii0RAbIjC~D zZtMJ2CLsDr%G5%LRa(5#bQRX$a&ok7&{j9_p^fV{iI1EV889X+~o*k zMk+2v>?sBOh5}&M1IcVi4h{}~&k$&5>dux7hZEdnAG#hWk|iw(Bf{xQQWcs-n|Ta< z576_m`nSS*{QUlHH<;(UZmW8dLNe(xK28Ewq%$tgp4(O;1mmO?c?9mpT>EFQ7hhDG z(`vYI49}wpHjVZN9X3~(NqPWHLUpBlCi~ZbejI#DL>>oPygu142>+oV0ia)6iZpW` zo^COj?<}+#!Zm69LY9S7qP3P!QHe9_@@%hydYN?Ihp7J6^9h?Ob~@EqB$Kc1iCsaU zZ&;Wz*4pIKyPwX?LK?xFU1NR@W)?`r`6TBz`bWG>H<@-^w+Y*H#@11~#dNfzEnPk| zak8F#(Bz+pu-asvd8znq!-0t-v+X;{5&x$Km3fH&SEi4W-7GXJ^j#VT{YDcN-D={> zeSM|PrlzG5Py?#FJLx`bACDC$ogVNlkdgWpfmAI#FRGN{wwtnpkP}k}l9NSCoa#+< zLxgz`X>1%iC*BIIXl3~?3$&D-F&>sW^%eM_nrEI{Vc+NcFZ;ZYl4)i-f-a}TvKq*H zinyaG*-zV_8}+_=($>`+Z6-_3g8WLyl)|voG-CTo)pQ~5EcvQp!l}9>!iUt4eMwq7Lib}p72fc9ywF};lZlzQE+6TIKP1kHk0HrE;MvVAFWQ}D z&_!fb`r=jNLW5jHnPLCEs6+%@lmXL>3J)cKOs4-R-di4e)zi=E#fM2*j-n)L&9vWV zc<;qUSZ?E{=&~8WJq$%iTsv9ayA@ugzvaI`MIMmtO#jeH|ER7LosLAsvGgZ_g}1BA zJ?RKoH+5IDbUq?kb^nxO7AootHnZIQ;?#b%mb2OvS^z`Ts@ID(A5>&Pp(U;`_{=af zYvBoy+9oDI>}F<;5Xz!&1DwtH+CW-mB2zxj^2?6jT_vIK^f2gk=P&b4)}X#V;TJoO zk~!1cE-env1Z)yK4(AP~RUFxe0fmLPkE2RaV`#@ z@_+T7haAwr?&eIotU3HqPKan76+C+D6)HHQEKDSBEHgYxDQX7Oo7#r2MsJY%Or49Lc4i2fFBCw#Sf5v7 z!qIAWVfVC}6<1sJrp36-zi+V8sfob#WO|4sYUKuPo z6_cyhS@XleN1CpPJW_E@Oj`pD)rI#}jj%^Kv?ZlzDK8xbiasHR9ByiCr2aIrdsbVZ zZEBrbWZSjlBCDz6@cAB7%`$cpH2@uCpQS=(R0YD>Oy#M*)dD}mrq-8WHThj-eeG8z zj{9q)Hq8y&^{@0G@3d=HPMN|v4%A9N*272}=#i)iDW=|t4@no4n8Ol-S!CLWFDy|3 z*x1j5M0p-!LqC#>+2HP_p2m-SeyNWh#EisP_v89dT!B7(llBQWlo>Ax7W`QH(1o=i zb7<4*F_di^Jom}_tE!W)TFOP<`(*7yUiN6f?Y^^>-zSv!EJ6RLwL)`0J3Ar=5ok8U zwd2gnjrh7*M+G?wAT~IB?wUrTN4NfwssENr?ID{T-LP9&!vKFJ5!9A1Akj4S_(!r; z|BYD^pCLea6L5OvFV{hnQZBo!}ir~m%_(vUhlrFI>$E{fysyzq+*%j*nRm2kFSxn5COSsrvd z&wa z`6&eIidcWpmdrUbW*yIG1n#quDgXAKdewjiIS||N zs=Zp+PbqK0AI3)gh(nJ3-P$(eZgwY1@26vx3$`*|wUN$i$eFG}@(o|j_X3yU^ORhC zo~N4fcIzZBrm|BLO&Ph(z~Z{arS>}zE)d8LVz63-3`3HaTVj^AOgFQv@hEJkEu*jM zOWQa59wwAU0Z{7HMCL{YY9LY&ri|$s?TTNzHH8}uY?3{4ToA^45{LSvr1xCV`Y09= zJloytpISR4I4Be6;IU!C?m?CzU--FzEgsp=V!Ht}F$<#a!vE4^67*PtP4vF-X&iEeD$6N(FC z;9%-%jv<`juA!o?+fP=dhM?OIp&wNJ&;s}C^s>dP&HCSmCbH4!a;Q~(=BUmO=g!wC z#)zs3o+Nqc^7&pRN^hf#La?rYf+Q)VpP0?Kw4XTEEMCSH+Vs+KW-JD`rFEQH7qX4d zBo2;GrUoc;5;lz}@MmI(8VH(INz*r>NAf%oSt5^EPB`DU8WL?W_&RL*Xj@QS93#vF zrpphy1Spm+_vWa|62}Sa6OHeQV*Ni}1*N>yGVgziEjvB68T2quGkE2urpknQ2U^}4 zF#8hRABwdyL0y!EWqWtY!)V`xB0aS$dctETIWyK0qd6Jce@JUa!dPe}YJB35Fj<>b z)w)w3v4C>XVmS_(f!Km?C|*7dpet!UNJa#cD7O>lnnoT7sIx8*yD#Nx?l*(FlY!QQ ztr*kD_&F#MB?Jw070arzGNtAzBa2-)$M3fCZep!cZ>_ftA`2Sm<%opgW70o`cU!(9 z)~o$ld&MG-^<)`KJwUUGssNZYi0qM>8x91*Wc|Ze+AAiuhOU_3&T1OJ2_68RTec*< zz7Oqsfe_)y1#hao^Gl%mz{J){wul^suU&d!A6lEmnq8X1_9JRJEoz7lCHpR2clE9O z0AH28$Ixx2uo*lFME|(1%~`U54(*6xPcaoT!zfdRIFgPD;>c2_)FXinXh_(r-3Te; zl5xg(h>TK0XiJB>rL7O6HUhaC+y#Wm?hMMovxL-ARq8aRQZ%#?$;?B8W9)X}Ul046 z6~M)zm!y!c&S+)jFKrmmHnr9j%UT)TxOk?bD=XOsh}&s|U`7EVb$*Q5k-JrY@8g73 z>PI;n;xHHYROP20Eg8CECThAV5{WB5c&1&9NO2K4iba|RpQ&?xoHvZSszS6~)y;Kt ztd_SK*j@=@@-?_?n`eg5AjvCyfo)p#gxZM8qV3Ox_@~+5r#O%DF5JTGu$4(nx_)*C zUdBB+YgjRAU{6*Kj>DwCfY6wwq^RmmzxGD1;8x5Fi8P%+5$KonWORM` zqILLO{dttS8h@)inYtwbJlD4M66x&ZE0lVV^8%8Z`o5z>;&;>HuRh<06#Nk-vJ4|J zrO}#b3B?~vIX%e*c`z%w@?eoQF1_yiE~7tbJTj8yNj{{X_dS$QY~-md6+E7LVD97y zb$(>VVAGIUgWd2tChj)f>d5ylf{pd@rk=mIsbSShO@C~IBimA~=Kf0d`qY^G{+^|D zyaTn5X~%V}BLlSYVAqi28@0GJ4M-6(aJ2j0ra1>R&7N60q@5opW2d~J=HEjunVbiz z6Y}a|W~XU!rxEBnWR+V0BsUY(ZX2b$Ca8jk=@z2Gu z_+wbH&FhIAy6$p-h{*8}gs_S!nTv$2^g-(C5Nf(ArD9;(vMnB0MwJ(NVadEz3qXOu zbet+{@{)kmX;t1&S5p~-`NCwCC>D^rBH$$}el>!+s{vq+aeMGa&xan#PsgV*;dYj_ z0zUFo^ZJSJj7KaP1y(xWktCbzU-xx3>wl6*i#rx|)I-ZS?g>?Xa7u`PjyJGY@dATG z`E6e5t}ZoU?m_*!WZz8}^yVxg?y4QsB?W82&)IxYsnTaEFBR`Lrd>y(a!AqI`Vo@} zE6G^I?BOc|NEr2n%WKZ^ER6=pfmG;6%d$g)*F$-EMYu?p)o32WF=^J$qC zH7J`*l=@J`y)|;gWr#mfq{rx`gj`1m3CyvSe-3t%3rENSRI0%R0AvRfcV_BL$7p>{ z!~l4*tgH+e1{#g^iiwD7nXX}UT4}FoDApI1i!=+f-WaPgQZD+zlE-U8>JICoT^Ust zS8~q_Qc{}id|VYlokG{b8T9GKz_2O(lRR>K{AO6nR3ERTC;Q~KHa-S&y#ANS1#l}Z zl;RR-9$;t5Q|Q-TND!e0h9TgC2ptojCn3P-YpDwih}kxWOFh$sAtKw}etn=nHi zM4j`^W8z_9xS%5tlU$VcBwM#SJFQ{9j!$-}2fHhG^pyHPDA7Bi`zWK4B4=iCRp3?>dN2J z(KR1F``qJ{kv{t(uL)ZwIR1DdCeD4D7K9FA0Lh#5S&5BG!wk_8J(%)n#N-%D8>%QR zFB$8BG*174GDaUc30E<`6e+@9Z?US-+wHf+Dn6ITBe)J+9Oekx`iR@(ZCNB;loyda z_o$_k+0d*2c;rKgH+hryhQj)Tmwz~%t}ZD~F0PHxn8o0dMW9)pk&$u#hjqn9&utH* zk>tccG2-V^`V&|0sFzmFXZ>aqX%>fF-lc+S0n`^KRxSljon^@5&`aA;=y4mah+|61 zG))OsSPIQvz&32IY)v?~R5UeCo}@GOkyClRc<2bt5oHE)zu@b^gtOsDS@|U|skd0p)Biq`9Y@wI03-h* z5RcmnftE91mO)WL0V6v*`xkUH8srU3FY#AV=GBz(#^{B>n^JrYGJ0(w1WmaY)upu{ zruVWiaLN>;Vpt;@4~dGsEw|xVSE)LWHvtj@C&gtS6*rirPVP{vHSfYc~@m)lF zK(eOV=zg!KQ}c8(r3-5E=WhMYms&iJ5(^q<{HtV`EHz5npzodJu@Z}XO@q!85(yWH z+7NsX@f;qXWT6ZRqt80y#UvG=$UOfKG73i;n;np)P{00fjPU_hkr8BdxVkUx6Ip}br4G!r9(I(C?CRUn9!fEi=uecGbJc*qJpV|Y%{>- zOQG0RW82i=8Dl1_yB60UcZkf;gy+OG!5fhHAf-5RYq2K9oRwjNh``~CxA$K6n^YwW z5i}Fua^>=lMUNt4g0ujjSI1L+h}vh)onp&z-fyAbm)}_i+g();UGVz(e!&YUYY+v^ zS0F?DpFLASuXA}YIPU!(1c6V>s1A)xj)Xye5Y_};ZyR)4>0YkqjEyioMFZN!U~w)N zI-Z3XD3RzF)w(AIO>clLL1;@yJ5DsFl`|l5CMj1X^iC<;cbGgJ8O?jFwDA%0({qMv zX-D9wSwo6FXY(X=XIem$uFI8X)Itj)7hnu&5APi|^--v>SPW4t9`*$QSi^b|j??B* zCeHxlqxgR?^WT#@I#p(2QK)EkK+&(NO;m61h(>jrS5@`Mv^#1d_Kv>7zH{l?vsCb9 zKp5FWjU#ggT}bfKUF49~O?s}XyR2==ODq0iz$E##WrO30cr+KeA=>y=yx8d8|=oPufUcTzxVwkpdSBW zK7J#lo(#ldZ_`)%l1xXkCE*Nd5XO!gr_Ano4QINx7TkljiU_6}1gO{0kPT^r7asM}bE%>|xBbK@?pYSnsuXP#Q;!nI{3 zU>qI1;f+ZzdW+Q&lrTY-S9DwZ*~K?f{a{L3rJVEch zKdXVE7ZVKBo0YU5A3-HC=_{;VN~c%gqd0lH0KT=E`lHgwK5WzPbiP-AC7x&F*_^zW zS5vFxV`XWS=Wm|um)RpqN_y@;cHero7;bp~5gr`q|4Soj=;#o8iQr}f1S|SvnI3$Q zZl>e)Y@4 z9aC4Q@Hq(meVgAS6U(l}q%#`oE9W;4+^=isBcl4c{0s3h!j-xKz)3S_ALt3|DY20< zaB5oUeYgFKPETE!%yY{<3BDI)*~U=lfnaIX*rD&jJPpc`?dh zTm;5qi6K{73f`3XpJM?^Q4=S24vyH=)M7vYc(Jb(KwM?tKWK*ckaxN}=@J69eSoNw znx^a6)d7i)$LB|A4^HTdY#lTi<{ID@vcihgn_Uc`kM*Z1DM1H7lhgFp#TU(e{kNq? zXWvb`SeM-VQ%QxsV>0Wb>N~t+b}B^))%*BQm)Enedd=>Ya6e*3AP7$gbTxQtmsDPn zCq8EGz7Kor+VKse=3dgV9i%D~-Y)g51sQ0=&6-*vgEJg{WGaNC@`{(GC(#O0*GrC{ zYcppI3xIfjbvl9TzzoFmq*o7Z7Rpf?W4{IlRQO=_3<2a{coP#qI;nMr8E-?m~HSM7q;< zI8Z3aJF&NF~Ft?f~EB>)^DA@Mfpx3((7fxXk?@2M2iAl7u!?DiLRA&T8se5hbiQV~StGSvLbH zOm4lMPBKomP7wIWtkQlse9odcknYt~-;WLNS8E*RD{`k3MyakPGFE>-P2W7gRK20V z@a$Qq5kvPA1Nf}m!yrVk!*if@tsjC53cr^gR>W+WyVheN>_A)fc8O~WK|1Ou;tTfa z^9OC4j7C!|LL#&G|B0%$*oA+FMuDN=U!|OMwGGLelZh{*d7fW}dLG0aClhnYVaKRb z0e$Mwo&G}A$Zv-4`!sYF)#T`ivS5>|#+qUe*n3G;r-xk!gX4Jqp0|u;lQI9(Uo2+;cNX(u^mJ#Y66n$+$L*#zk2!vOIk$H` zXnRtsh6_l)Fx zNoqAaP1#3*bI}GU5#%K(Z^JLwTqoizm0inv)ndRCnIDq!S%?ioW#L%Hr)3#FwfAHy zucm&$fHNCq&Cg%!2>)&r0w=ZYkmH|#nw(q{vKC6sykC3g_gF-|`;+}s(dhi^lmI-& zwYA~mJRm*B2*~am;&rS0X$xj*Hv;U$s*254DRjR|_wMUQ9UB+hTD8Ysdos^z7qi@# z?lw0O(RjZ(#cmG9GC55wW`58hVsmEkY>rP27*o+U^wInyjVR=JNpsz}P4o#jtw%t2 zdT|1~zz;n((@STeKwwJdKmKVnCZTWYk;x-GyuiXjdU9Otk&>io_s`8_(Z2R=nEHM# z4ibtZNW0k|^9;Z&whBdJ!1z;h6)#>3HAJI&e=5n`_^|65x1R95-Bgij)jHDd#1;0N_NPL@ z0H6sy4ULYTf{(5PxpxAZq`r)0k;DDwKF;jMoTZH@a)6>D;W+lMwtT%IV(h|!wUQk9 zZ9zXV^5fA!E0dbi*=?~tK=4L&eDjPSugwB|$#Y(RPplG%f<5_rKDMd}5v;1Zknh=l z0uLwFRVpvHZkaX2dZ1y#53fBa_LX6r8C99LgqUX9Ta<(wZ1AD$kdSILJ}S};Om%|+ zW$CFZpC;Y+7T&ubh#*{-i-BDu$M!-^p2|EUBhz6(vp5a@xGD52dxT+9ND_>FX4ubm2~SHdBXM?pbBKSOok7SGq|U&Ra24u8?wa6fP@*LZd0 zp|;N}_%{Qr!&~}7Ls6M^t0dq9`YtXmg=J+x`~i(d=%)tL(fkZ>TD({fNVB_lczEpJ zVrjD>B4tSp&<)g91=IBUsTaM)&J`?!9l(GH5aEv@QecJYN;h>kD$qJ5(0uWC2zYW$ z>Uf9pEtl*BF-}6nRFc`#hI&zZ`0V*xA|NT}Fz*-9*H4EB(?nLoa?)5lBI?L?zdNr* zlov7aJVNe-r7s@<-2k6n$5MPE8jaVMTfthND3V%&3>1oqO~E?D{naKKPtVMws8OQWDF@l@-UuMPasBr z-2c3NwV0uv^I?)&<89Z2?|OaJxD72jT)0V6OJzG>!Q2;OT0V1i_CQn5ubF6|jpp`7 z5vkY2Q0dvLP$ljBtF>`PAvs_$^F9&qc;K5KVz=om`<37N=g9|@RB+!3;hBZi3HwBp z90P^t7iJjMw4&~+;`bEQK#wLM?3KhIA+r$r-g*>1q^rw%;uyS&9jp z_2B&NxdA!@oYupXbqKX$m{k~feBC6ms`^ro2?1T8;r%tTq%12d`|CRu{tS_ZZh0&{ zs7_K>ilX3s(6xtL-uO_bP6_**h#``x!d_C$xP>t#PV*;_YL#o{#jSQPyvm47Zpq_~ zQ4hZ^HU}%kj#2+^Vf|+woc`ktez@q01}Cf~fv>kTi9nd_WqRG4j)o`C9tfWlDKC-g zx>L&liEX$i_KKk&!0z9w6*a}IU+y;TZ3179F-QsMi?OlsHt_8jQc7x*C;x}8w+yRt z-NHsi1Vu#!loq5V1Zim$rMssfC@C!^9U>}7cZbqlQc4L(htdrKf^>I%<3-(jpYNRW zYhBk`OXr+#jAx8-SKwD+Q{g8!SC3ZEtM{%l((1lqv$>?`I7(vvwR%62tq^0yuBeI?N@F+JO5(>2qhHM1Hjlg_07279z<0`Q1vv|fA*4* z`cb3M+3_Q0`Cfs_hxNiOInNukrYLVa%F#oY(@>Lsy*E#<=i_DHCvmR<4hmEsaG!7B z`t<$9JQuk8+&wiS`J>$5cAuyE^}|ruZ_Rm7UGs&0i()Q)2++lhcIt!os(y80PCJ-u6;oGN0}&o5j(FL>hcbU{^M;;Y`&`^EQ+ z?v+kkHG@Bf#xhiOf<=FJCCt6ub*9j?x6?>Y^^O%o^!I@WMa>C7 z>O9rq|6y8rV}|M-#A0WB^Rw4A!p9V)AxUV}&uwK0^QB{DPrfWCeY@NRh|rbAj5;0S z_yKJ=&1M#LGtx6ny6=DJw>vBrH1_a>(TyDh?X8mvM46IWSMFFB&MtdLny)+E+6ii7 zaTr~<$8{1^bC8W6e5UigS=W)0HgJnLXO?o~m+SgHd^WLZ?-8;1q7gCbogHWAOAeP8 zc$%DBIg){=I46sgR}uoPzkVft*&dB#^7mVmV8r&4!*oe+j?cfm3*v_{M)vqs3T*)j{_aLu*V`%C%p%RYEIq z9{Tqjs_4RbrlKmTyqYQ3>s#sz3O!`G#e6BW8@%dxuNmiK+aZipIXMD^BmLgk1VU9(pidZ)(Z5Y!6p4G66CAD?c3>;;*~t(H-d zpD47qY$Tbo(*~z+m0gUt`0Jq29FaaaILON@r1$mRxAU#vS=dlva;+`NvLe#>7VHgd z-1W`{*K{8?Opk|H(poc#{8BE=zf3EoBkB;XqqFPvLDwvzUx$b{ZBj2vY^-y9Xr);% zN@z?p z5WdLRaKPfJySmW2w)oMsBL6Pl$&+|L3@6DKcT2Cp`quRN^3!_vi`dw`e;+p;tg)g_ z!K|d^4~dx=p^&DvLX~ zsYp{kpY2Wk-J+S;%yTQSmRo6D|F%acpXL~U7HkK_<$%WZ9`@f4JiNF4WqV3LQDs$N zfdcmFWW!l#LzQwQ`z>A)YdO#p2fY?*n5h^ly& z7SfWI_0NdiE`Bg45bx8HhIY?Y-8hHahhDO+$Fn z*tML0My?LjF)WL{nLIsWi06PHkc8`SHt0ZI-Z5+qRpLh z`rdGiS5G?VW;zfYJyb!2+6p@F+59j0Axm0bEjzk`i!7b-wUN%m^Y3*q4|9y$P=LKAdMf{r306= z^O5*hrlsY18TS(?u7jichgeto}$w&#W0O9HZgTF~35m#(Ld zL$GMPdfSjnMpw#MBT)IYvDyX6@!JkLCBNEV8jH|3KJ&MvC}8=b8a84(H>#{?s_8I_ z*<>}=S9>{_egj~w@^S-d(g3in$<6)SmLu$Y#I|NHAiI#Z_fo!_-bMT+79h39s096UM3ctt5wE(85Ew5Nlcdw64*^noLBuE#7XFW;-wzAMlXJpsVeD3$F#MrNeVbyeQ@)8*T?hTAsOlEHCcI8 zng8u{JDwS~MSh?<>H6`*+pmF@#zvMwl&P)em~@Kp8J=vo%anJR3zhYq`ZEP>ltF~F zY@H$OQB-gJXGvKNrd{K`=&7dqNFB(=-ul$X9~893c2neOu*FUbUYQ zHVw=rQ&Uq&IW4l8Q`CPDRMQ0j#rkK};&UY&7onrN%JMKROOZE-13O?y!FLqJnOUtg zx)=Ijdio6a$eGK)HFdu0!iy|n`f}i-Z~S$}`p;Og|2a_of1d+mc^=cz{Mk3!qNlB^h_%2#vN~IE!1c_4SwUXj%7I!*TQ*0`0L+ zxK1F!$!SW+i23}Px2Laf-fI_~ z-Zunu0+AL@KP3{>jLX_L64&hy@?l#YYawkLev<8IqTE-S5#m(MYDRo3YiwyK1!%XH z1xCUGN1sqv#YrW=EKP8C0{y=v@ncPl73m#qePmMl5X@hEGSH$ix{Br`e;=%wTQaP zY=3)jz!LlIkAf)Rzg`&b&O+AK(Wzwo&x9PWmo4+oor5*8yG%@*mcq}UaEneslhR?6 zEe1ZMZ+nP7e+W~_yPuc3ds$@*9aEBH;ksbK?N8Jzev8a|O)i(U&_>o-U(B9kxVArY zZ^B#ssP4rX(+94uUO$!9dp+(Lsd$Yjc-pB=!?=}J7jl=M_GSn-{!`HElXm2(`PHI} zg0D$P!Wp51D2D@6``Mclz_-T5-8^H73s!EY{%-$qc3K(N7TZoNC`R|$4*Mwg5O<8# z|22`mpW`KXV!N#2d9mUXQA4wHo;;xTS+B15oL@@B*9|`6KpfwKx)l_MJzhK5wkQ)< zGt0S5@!ev;U}2VS?&^BEt#fwmx(_9r(9&_ndKx5V(V;>HGwtdjfMWaeuY)a*@iB8+jo{-{Dx|*W7=Up zu(11?k^ivbT8O_~-!I*@uWY1EIU@QZSyd6}=~?Jxju&<}5<07c>`j?gqdLW>?g|LU zy8rJ^2gEhKJw2Y_fGj7r{m7A2bcsnc&x_jm6RliW79R3->Y<n}SOWus~9X->it|-3Q@2v4*L#q+Q8na&rS_2}~us)e-BOc5ZYY z9!K|qIN01=CcP*BueT8RI2IRr#F8#kKiKCVuibe?x<#gEDElTgDSzQm-&B zZ3=VCYhUGGzp(mcTmsvRjQVBj*ltvgdclK#UjZ{TPW3Av-s54u-j@6i){1M2rkGb| z`{(Y!Qz5>C_-OL;lll;R;ePZ6c+g;;@G9+7?hWA8UaL&IPM+KGEg!?ko{hhGm-{Ap zUUOZoOUgiu8P`R-JNo)HIi+VS9no%%9-3`@eQh9OeLmFvniU(;ltiNST8H+R>denP zC|1ngRAsW;u#AKc4A6xSWMsUAfq}tmMGlvM5grymX#x&Sh3>h(>3eK3|G6bm)TpJnB6cs~P(|i^_v3F_j z^3hK9t1m0zv?7jy12}VNH*j(P=anof!aLPGG5h7*RCmn3d_<*$4CTrA-1ErQZz_kY zZw#xFfeMEr|B>_XFubR+AAP6Cz0{iVXz>-BuSP_gbZS~H9;=Njv7maG&mQav*^4k! zitl_48MNWGvVN84jA4K5ATS|TZ(rDQ=w$}Jn^oR2XU&hl@3wLIM<~BoAZb|nI0qOksjQ>f=?}i@?TR7Cn!(4(CfFzB7T8ldIYgg!N-4#;1=aqfvW+Mzw}R^IH+le z)O65NGe2O@rT7g*D!!SExdc@c9SQ?dACh$0S=$Li%*w;sjg1VAm}M&hF@L)4qOaDV zH;@d8jQd**oIx}|`tJwV;s&m;CjRkTESWtkSAX^>T>fh=o!|KDH{QsX6aO3tIhk)0wLF|ssNq%xfkE$Mdi79;jagy6@jhHQe<`7ITr(3WP8<=@w`g|IoG=D zE~lRnMrX)Jw0LI2T&5#s3S!3}3ahYzzMsD+&qHh8q&EIS@J75R3aYsY9nU-a1jb80|Zwft8wrXw|Ss-%D=a4H6 zEA?WN{`n@bQo5M!QF%Ue)4YknLXolajRj+U`XeGj$`qSRU94SY0!AW&eKaZ=Jc=*H z>b$R=P#)=IW@Vk)gzEfp&09`szb7;hs+hu-^sX^EEB^FDGT=jyvIo|U|Gk|XD2%+6 z9K0L0IRi0Ie0aV{Dt|uodPDS^Ajo}3WA7G*v=*ax5vhq z`pew&`vR)8%1`H0&+2n+y%(=7+UQ<=>0H8lettj5@})RO%b z*a`OZ%t|@Z8zUYZf6t9)W)D&xm*-Ygg{9bd4qX4QDXNi~nM&jG)8z6TbYyb;9;*zK z<0Y&&Tc@YEj?&-K$k#-1PwMZHX>4LFud0=?&$`r^BeFS$3;VyUeNKsuP5`P`U*WKT zr;Y%s_;$AOPvZm6dtUz*`PU|GJW|g0WCRu-Bcv4kmjitdR8kQON~l6$P*W33BL(H( zW6=GxMexd6d??=K^yt)=)cBkT72IHn=^LYz^$(4RuF7JjO9+M5#foN~A^OM2(0zC= z&MT>?y!mVInud2dYa)*Rz03l#VL04(^A*JT~(gO5H+kag)+ z&AfcK9DT;wf_Sy&`uMPuB=G9yV}=#fM?C~koRLLYgn4(G6&bs{2RWP-@G)i8eRgKe z9z2$yk~Bd{ig}S3Sy=RgC$sE3Ol7rce!7=#^uV^BSo$^CbldFo^*ToaJz9zBpa%$& zemA**PTlc2!|E!BNJI5F=jO!qZc^OWGh^OWE7r_~(m4ggulxpUR%TzW9CxZ38VgI1 zzlKRT-D0llQk{Q?Z10yjfavjw=yVG&j;0S>245s!ApYB1=riLl(tq3DB<{Vf>GkCL z>++(`Y(Qq}9hx%poVFKF4S>DSdaK>sZsPcWjaDz4aLfA4GP7y}m;wh*AdlB@!D}?z zopVpWD%|=)+{7BHf;u?b61IlBeT4;>V93>mVHKS{$g8^Ls@87$Y**RT) z*1m}pa4G>IzxivKCM-(=#EhcSsnp+#&MLZyDv4NxAo*D&1xox49Gt6&@hH%F#3d!W zf)4UuqtVQC^^tDu>8YZffA3C3Bm8Fjad7J^q0SYuq$ak+?dxa!%xZ*m7tMre2skI+ z{N^|`TUR*Loma?~O#iMS>qjUKdO>8(@9;%xwQt>2SIB^Vv}mJCd1@8-chCZ9an70w z)cx{K`mfFIHS|*%wdXbNTeR1CczPSKej@BJ*06xSY0B!ZwtaBeo-`joXE*~lc_`LQ zFkx2pY-s>@(MMNaJTHm6js1qv)+s`;JjJg6RuMGI{JHykbM$+sj>^$M{;_4}0}}b* z4C-GmKy52{2hA?PdD}O!t%2P4%LvK8$vX5mg6-w$PKHjTZj-IgPnGTwaC7OEKtP-*+cHa!uj!D1pI<8$U#U( z=Ksw{uA64)>i`JxXQ{y1%{W-GLZ}TRdZ=w?T1V8yg7`)LKrD&tncW@Ai466p+Z5JJ zIkilqcpDO`eZyfE{*5$InBm!u1jH80d1JIh@-CZs5gdf%Rd>`x8c5pnkkEv89yYnmnbEF9Asd?+wAg4hcZWk zyR@>pJ(f?$k4UO+4Xj0VOq==369|=F{)R>JQO1C*sYHgd6q?W8bll!FJ$;>zkfM22 z{u$sdb@-kqcb1oEqhpnzreYvmOGE1gB!~_2Exxuzv7es&{~Ft-@>`XO;pEJX?&*3J zRUDTxzG0u9TXfK3gL8sNa}M$rCS#|M7(cbX0zQQICQ4&;L03xNab`L09Fq)JE?#3!{^!h*)krMj#&A$#IH|F z&zKGtVt@n4Kmm`AYjY%BA$b%P3f1RY(N0kw5P3KLAgKQZZBtdYOY4-nzE^wzg)VNZ zZYx(5%SuSveY(#3C8$m{bB%*dCd1I9rZT!dr(b)-E|oj$(b==N@)WkE&|4ll3co>M zb2x1QH&#$lNujb5yslFE^zgIuW>lCjitl~zyaTjhu|9AXf}^kwM1#N>0(aFvoR}ae z%)oo3h2!b;;O>p9sjtOO8IgenOCM=#P0%c(dH~H%*b?1v01MM=>20H> zVYb5Qk~hB1x=q#*4(rj>;j{V_Q&vI_?SfeM<;D0n+4YKp-&6OmG7Tts za7XC>j2fi>Ex<0Z<#X|zk&%(OY@gBddb+W<@AbvK2Y-6&4|%Okd5@^I;rs+#&0(_j zUJz?*J`TI|HkE-7UE$S*DxHgaj!X^$@wCC*eN~mS>N5eH=0rkcE3fP0JKNv?Dt6LY z>ik@NL!-&rA$RPTe;@yXZ8Pc0POGCdv3x4p4Ps)1QrHdY3nFhX|G=4Jp1xG~yE4W2 z#w2WiZhfghSs<R;PI??(L3lTYFnR(1AZe5Reel%``Sop z{V`gEa3E5rlA_Rz za(pT)HG_R^8Mc8i#+fff@^!wmRPD7c?ID7)iotZGx6is>HxRTVBEU0xl3Kp>jWZQ( zYfYA2E6#jbX~x@#hH>FW9}%5C7YYLamvrGGWE2|6zb{r#(yF({rCUD|Xel=(rqdeB zLzEVyOT>^C+=f$cgA>v~Oi&~$P1HH7r*DD^?w@MSUaM#O>`XD$w?SatXgxkw*hap< ziRv7#bs7N*#I`kCv$Mk;t6`^c4}L-H+ljEcDldPvz%F)SPOIL1{rIe>jgW?7mWo7t z=!}Fn8L|UL)&{h+m?r(k{dI4Ux)!Yq-G$sUVTtW7yR@?;HjL;-%FLbGj<>y=sk1vd zoJ1usd*uwzI&jYH7G9rv;6QX&S4dvbFnq1I6bx*^)Odbc9VMC;Y-kW#KdLVrXVehP zFUI<8TBn{Zsorb-VH>+ce0UV?`r?P__CZ4Vv4CHfERvex2SlLRX3o;X-yzV&@)p|% z%kt{qQLH{ene)@LnQh82Y)+6b7(WJhq`nIJdst08ur6|1_`IYeoFk5&8RPzyQPy18 zdpYj;_Ph5IXXg3+7ZiiIR=l+C$dO3uFbNQuaM7&%=9q1EF(Bh;-E1Ltr^5#iDw48` zW6cGUmGxyf*7X{N?eoplvDp=}($`JK=4RAW+va>DLMV3lq9~}mp3wxbSj)cM8j@A> zFkEV6pK2la1Nv>1;aeS?Vp7_uCrn=fYVKsrtALd<WHollLGBd00K$O7(8*^p`D?57fc=Bx7 zVqS4^@9eRjt=8B6V`Gzc)4Gr)x#=T53Tuq=yxFp*p#=Wa*)o1Q2lKR{1i*SMgZK^a zkKuJ%nz*f#Ij+c!ncN?9f`5DHJ8eiK#NKJS7uC|K>e?_?UDW4LdT4I%?=x-p+jOTt z#7(JC$PFGrNmsNS?jgT{ukN@m7SV&whac#xN}VKua4@y$gECN6I!URKqioBj3!2qr zjYy{0t0qAEuvXJ)7_D0^#1W05!(&m3@kIB-U(Hk|DCytBLT;k|HPlp}u0!XBxsG|%!@dK( zp91DfY&I4#?h6~3)24Q9izMKxqxiIKY` z`v!uUye$#Iw?+~IK1{0)$Y|2OXJBZ^7&4txIyPTuHd1EUa(NI;wjihq6194dr$@%E zoqN(1TJGT}P5E(;{Vp_{toLp)h55)1{-4jb3q8lljfJzjtt{2q(ieHoyDSy=e>RO_ z(|^w<@h9KtlTkNqaWzc5HbfCDUDL!`)TIKYG709IXNa2^b|CV}h?6paCSZ<-xli7B{TLM^%9YC5GI3YY^`hW} zsM)eZ>0gG7Lb`h>C-b5zo3L?g)_wI5_`DZypnjx>}bw6I39XvPA=f6 ze3aX|QZZYibR=`oq&ud(uDq!B`jzY(EK9lR&J5pm*pzb|Sl!T^F{D(OS9e&fdH?~1ij`3YX zs?uYT0Z5k*!bygCjV=7HQ7`)7s0@-?+y|OptvdzMEcOs~L~sc(?_ZO86xB0hD(Axj zJTy7=@m$gLJ-XJawT719!Z!T9em0+nI-&L}Q_?fyivo>BHeKArrJeV~dW0>4Kj^5*q);n~ z-#-$(XcPix4Wgd0scqBb#bAa;ZIK{bTclmEh#LgwEYg;&I%EsSL5HyrlKH(Ov%=hP zcl9TOuE({>E6JC?k2kU)KSH%suNn8xe(eS@62NQA#!=!M#HpdPCd!7zNjdrhEL?x{ zw#ax?^X|$zX>!DVb+yD@R@-@HJ^i_`_ZKMq#V)729_`OH3Bf559NqQb^(&s#YBCON zFDjeR65vC@BxAg~+TZJDQ=V}HaE-qM?Gc;^L}jRitiPbo6;mBKf$58IhgeEpj1Y{q z#kLEor1xG3|5=rty58|ov{R*6-lnL(c^AEHy8Gp$J0_;R!kw95m2o05? zPd06MWMn#I|L_PPuw1zaw_D_2kf*sTrf)sb^V-heYzo+U2ut7Av0#&oS>0YYz3e5a z>hh6TV<6?wG)QF?aVa39MmOG?@8w;Gw2K>O{;uDWscq}tVxPKBLb}W(b8_~}wn$c9 z%9p80c!0Be8yciN1>FXqMBN%qQ8h?f(xdO&|8d8859^8lk0IL&FCD;2Sjlb1M|paa ztOGjtu{2PL)p_>?H8u6=JmK;326zRZTI?_g2;77)uG243uKuLB<=$QJ+Cqy7D!jAC#M&yMm5{pO3((sCq{^#mY@bW4QM(>7*sD` zasgq-_CJW;p9~*Rwdx-SPgPWqmCd0~Y_BQjFKCdX3ti!seSb65t7~8&-Er!gp^|d9 zhg{$6hm~x-ho+2*`i{wrFb;{hx>muVA)5x^MGUt^UyvIN>NFiOHc##T0wtc;_$UMt zPvdtyxw)feUgvebU?{VJERqw-IDO$}EN2y!Fn_P^!33pu1UhVY^|TnkoQ0^`=Za+G z20Oz0JP6c{Jbg?7%Qqd;i*@-7LV#B{q#(QOr3Y*;L8^eb)!p91Ely7dUpQ=z5}R8F z7FZCn(eQ=Q3LF-aOV4qirZ7-6=AAA+Pp<~3s!kmMPw`FD2eM#x_*Xh{;nau?NDSv7 z{1GGz=9Fn4u~u?g6plW?+VBxL8I9q_`Vw=#2SOQ0(k5JfMDIWAjo+!;urFz4rt?@7)>+`o?&9j)#!?xk@JJ=1Pw4BiTO!;Z9u~dbY`am9mVw7ps<6 zS{B2q+i>g79hp-ogmFT`LeUL@p2L%K)6>5P9S~NWE&HWA!8|qMIS&zdq^l3JkDuLh zkNj_l)U>eBsYu}ORlbg;)w1xI)m8~D9@K|D?HIS&b-3AqHv8|@taoqe?Ck&ZoDvL! zCtZKg!LB{sshylpy6|su)*6kNt*dot2suIjKE$ng|AmO*cS20nbK&BW5}l*{Endp6 zO&>;hef`@X{*F}!cJV{07`~f5Ka#|(K@qR%2@)G5RPXfCL(*J#Xx9!;O~(zus{CDHBAC%s1wJOLg$@%6I^RQV)Npi!_rARQ z@c-oS1A*LyXeSVbv}{*F%_RZ5e6^ztRLK$iXA zlO&o|7ZZ68fT;q+%C7TJ^|TIhf7%o|-t1PiTqAKldLtzFWXo-t3zjth z*Nc9E2XAPIuK=XjBH-z?TYGu2HRDZp=Aft_@i!ALxS4vwIgg7a#g1Q{hATqo7Mv?2 zr*iZ*cU~OiN4n}e=_hx5jk8KT)mXd};D1SO3hZ{i=+{m=OVTP2S-|ImN% zl7|=2`08yp7G0SUF`Z`uTBz7JuN3IjEt6rK+CE7khi3p67Z>?J-uquJl0gIE9}*t^ zc6wUx)cQj+I~Pe^eE3@eeg0KO&Fg1x4Pw*Jr|wmCvdXZ|{4R&#`O8qL=~Zq${)UWg zy5XLU!1DEh1{at1OI$p?$bmPl`P_J^riJRX?NsYL6M!&QFs7 zzq&0U^0zU*jn&}7&wqDxB!ZKh@Ru@DWrH?8l%+ljo034qht8^SenR*OlR~f!u*1xQ zH)L_q^g2HNJfi71H9dftx`%*e`ksKkutdX;cDeT2G{G%;BpnIjlC+F|Ura$v|G5vh zM7qzxR@TDNik7)-l~U9BTLgp!pi-kaFu+s%X4T;)t( zbogId=z{=#;db{HY23QGnAfV4+X_yW!xwUXetFU9L{lZTKy5wm$DwJpQpn08w5!%|AJ*paWn4KF;yig2#+Ciz_jiisw<7{b-Ar|tMR00L-&MY&iHYg{ahLB$3adiQ4#ow}BTZ?>u8AnH6gm8lxm;Ngp0)3v&7gzUI zguFW;Dx#6tjj_8~tS^Ly^>wmPPZ~=lF*xO;^f{Z&IrdblfVZRC&xBq|E8Vu@>?g%mGdcO2XSY?lAB_gr2o0WO@}B! zwwGYH-ST1|@^+L4<<&;^t6{Uo>6TgkF)mUDvXUAIj?;vg%O)N;v+E6FSqsqYl$+I? zYrgoIwg!o7L;)lfE{Ox4v4MCQ=B7YR*8yPF6JR}{ZKEvaP+D$Bwz)mhUOpFwR930c z8IZh0C>fAj_icY`0f8k*0K9B!ZSBUvajbWbrc9M5VgB;#AQNrxQG`}fVThpZ*EeN{ z;bN9k)oDNZ@P@x+o9@I(=JHXpYz6^a5_GsJiFP?@@Fdq9jqX`a2` zg@jv(XTfvvwuJ=Gn5_^=W_;(JPA0Xtp?MBpZ>9aq#XP1ePR6ldYFC7Yj+{x%TBGy$ zL(@kE8JX=l2?$$-LNY)4rPTir6mz$YK3ABJ@*5R5*F)OT8dUGb7nbV zNMIdRMT^Z3tm=m9O%4{8SA(vE3Z5CLF9UwH)q2AdQd#gE!V@v75BKLAP1b z)pYe`H#T(161SuiC^K8wWxwCEWF9@)-dgz?^LjEY=+_3%+`;Jfq^$n?CkLxj4I?EX z9oU#qtJinf`aIPU*|wPu4cMK21y~#Si2WLea<;adk2N&@@;&zW7{>vnzBhO0&K*SJ zb^3J2AT*7`^;TXh!LFp~y5DB@W;47MtR_c1b1S<2Q$Z1ZQ|DRiUTZym{Z5dn_DE1B zwnJCnN>Ph0crgjG#lFo}IdU@}F5W2HXt&{f385*L;89}C5qsGP{1914>c?dWb0zi{~J@y(T288;hejhh8moCQ!@$@_~D zEA>xSrsE2gSqKr$4bn8y5zEB}k|k&7-st8cNR)fXmTJl%jLJFj`|yADj3yV5>XKPj zrXClF_uxOxVOe~G=+i~@i6$I@?{$mAhJu3CKNeY&vG$PA(P?Km@K=X}idMh7W7(&l z)LVD$oR_T+h>!9jk54jFgF# zx-<_V(vF)cBukxjlbmA~|S7POZ*xZSG9>g~ZW?radpTt;UFttFvkbR7r`HiP436++;UbvB=0mW+0d%`!;!$ zg3jT{YQ#=4+KtzIS~9Bbbu{=Jzdd{eUteNAzRb*V92T#@=KA$f#DukW`K28{lNvi& z#qFJ^=T=irNHS*JtiQMD5-Blk%=sxhZ!_AZ3o39V__x9o6iN*V%vjV2$IUALGJ2BY z>V6l~DaUQJ6{2>_AzO#}f#hnu%Qouf>H6pA&!6gltrzC!=jAmtvZ!#cPtTkMuL%B= z3bNl6Z?B#=|BUriWRVO)El-`atps(1kA9}yKAhTeaHM`wZ!S?ob<~*9foi57oww+4b2*k6RQ*4xZgGcjdjveMBeCNhg#F9ZZq-XKVs3EBdPaM!VJa zz;DKGJ95vzx-?YLWM#Cv`t3sOWXk1qNLt9&(HE=?_w3Yk%VNu4c4QYJQc;}=W%#=B z%mBkDb_l&?Tt*X%2T#woBA|cfgWW@1O1tYHQZt@d%#pn%nZ*W`N4Ec z+I(bF1og&ik6MOIA`plCs;2D?->V`56Nb~n`>o6&xjT;To7aIXxVt+QU_0&1gg(E* zbvIFm>!v^k8cjn02Uhj|vCx!8XKtg*)O^o?zzV@sYqcww+Vwlnvg~&B$m*YwDCv6r zldOw2h)^Y=YLj?mLko*6xPYiD`w&mlw$sA*DEC_>xoTE$m6K35yy1RzkeedRNmad5 zC&{_fM^G|V)bB(~~o4Z)Q+(wMBQh_yA z0C8udDxutFLmYaBhLCb2ED4WS6;gwXy?}SN=PW)Xb4iS+O68W{59@ql1u>XVMQR?Yxk`lfKC#`gc(F6= zz+m0H;o8XY4LItB7S2}*ocDFY%9Gi`eUHX=S2D_WGxO5deEg2wmKp7kWKH8}xpDi4 zTLFquG7VLEpEpiI2WbNKkVH-B52f{$9p>SeXB_Q2lQ9!O5B~Yx=hT;N<4PW`LCyAV z`d2_XxfyOP=KrLN{q3JUTyIvypC4y7T=Ek%r+@5q)^CYAvK_6ytFdrnY-O0cFLZ0% z#`$2_JwdJVRuwWb0qve@cIq?$=KHAbd&_RTpJm4pEE7H_d>6F$-KZ?3nsAFe0d>wh zu=$aEWrXd8H$(fEm87AmUoVZTAC;B&n>x=$)U_WGpSV_9aKN!Y@J;$NjUJKt;ViZD z5;-1Zas=#TI5mVvxuj$_VpGDwa=J6TP(XmvmjSyAv9Mo{R_;8~Z7n~s1e5dx)V^og z1=cV+ndsy{n~rN%q(;Jmr~LFp5l2SnHJ_S;m4#R4qJ;~&WoOmDs9p_>Z}5|8iqjGH zrmmA{Sy0{%w$x~&ppW9~4(5)^iuQJD7b?-#bxRw{`&?~klyEg}&e}2wnXe(%xI0yb zm$Kfqsn$M5G4rmTIWdrH8^;!{7dTsBuNYVa`i350*bjd9za|5I9+XsmMHaXfZP6Ic z#~U@_cN`OA0u5%h4~SPMeZW-g>>nV^OfQDy5)ntfZ8X}WK@Bi_zhHS0+?c%v zR6UVZGz@F+Gc~{jMHkQn881}38=WO!MOWb<#0JG-<1im^sel*tk0>;AhPVZoF{j3BZ33;1Oiu2D{ z3V~M;?CL<#O{)v40x*R^Y15r9Dm_Zh|FPL&k(2_$FlM}?r2iGiRsKl9QKrh_a;2+* z!U~Ft9fTWxkKA^9E7!nY$bP8e?4^)<;)}*-ekffmRGiG$q-09tn}ri z81;*kWeiZgMGX>yMtzv_v@Cdd>fT*7?7c|AO!*w4wm)jJ?CRs3tnM0Qr1%9AmokT__`rh8N1O3Ls zrP~igjgpT0D)8JuqiY)yd%BvKRF?GXJdhyS_+e@`58L$8r%LT+OG2NU1tv$4Qu3FC&$CKys}`Wq%7L4JLF!tDJQ~4YjB!3I~vBL z?vPAcO+@7FR>7)0&iCTGyHyo@`rg60_-k&~AU>?q?P7f{%g{%s@?oPbbNvFv717JL z-3(WUy4+iuo9`=|dF zs=*EJXBotP5j`d8gTiaYbR95k)Ad;(Uqbp)j zX43)1%I6O^+#I85?3H(#;0TYcX`MXlS@!0z#lShAm*5C2d6si^dVb$f5c4Jc3VDiU zmr+=q2?$DYET^a>ec>4v84p%#M2t**=O=9~Q16efoORm|Aw_N8DnOqtx(IHh!8z39 zlH^S}b*VkZ#U4LEniyG9E=(k4!PHv2`eqIRBk3SYxHF*r&=#!Dk`s(+wB*Y7~-N<6|INYF@=oWLi)jQ|PG6E1h3(t{|qo1IX-EMi_ zBbr0oN+L%?oEUnFSwsl>veB5oTvpE)hT>n#^lIUuuGBjQRA8@Xz4}msQkK+2%UvTg z{NrO$4zNY|%IK4Fj`>NHgvdTi7+OONALwg34bBSn?pv0v8IoY~KldFs zA`SW6P5s&F>?-$E=b(|+O*&86zPJV~M~m|`1OK!~I22l>0v9!%at1X=2nzYv%}UYa zgxb6Kgb)Wl>BvvPqNHtEbp}t)a=Y1KrCKm6|1#4dtpr&TS`hv2j_<=we{s0i84Mb8 zGW4&&wJqukLl1WgtlM>cm|wLrm^^T(M4jz7dfoeux_d4F&;RN4$IB|qb|96x*)M?i zN{GlpL_Z|sGk)TL{eo5ItKz7djjUJaQ*E@%V+kLlM?~eh%xeLVQ#A{}l=H89(TJ3# z1ePi(Q|+y(NZORKU?ZsumdpSSEstvaxyu|+v`Wq6{u7IH-AOp88?~jjO zX;_4bia5H*UYyHN?(TUz8I2FxF{<)1G}vF|Q^zq6)_`g))4 z@-nWYPp4zaU-~v{;yw%K4xhtS>~vuY z%+TtH0^0g3$|@=!ijrhpP?V?wByN0NwAtURmmLO9%~f#; zOFk#N&md8q40cjez2Bl3>ck|+lBQq;+3f~9d8qvo5vum=#g&ys4dRjc& z)S)w2?_tEdjrl%#Pbe6ilPo!5wUAGfLkyN^kdV-iTLx~oVL_V-MBbTc!5mBYNfMG1 z)JYOm1#uuoY_-9P4aE`HrZMWfgBiZ5vaUuHo9%Jxfl z$5ScJk8BMBGE|>X@OWb?*E}~f`-UKQ551g-1ROcQW6QQDtactB1YZb$qL(34(Gk!~ zZbgrs#iGvnQ+~i7{qbou-k)bY9nk>y^nhbo_v#O^8bd*J=Q*hwvZ;$4HR4#BF>6Ao zn`s|XM7F%|%A`EbmdURFcm(l=QIadUO$wD^qD(FFslnN2c5EI7x2QW(@ZPjw=~Sh8 z(WPbt#BY@crF>cVVwdJsuwpl3?>%v&wM_}N!n>^&L?)!}-8(ZQN>J@i>aAEe$ z+e~noU1%=TW4R;8S&FTV?!2J;bnzv7_zi3Q;=b_?%y?gnD+Do9V5OJhXf+O)u`W@V z@HkD)Rf9d&I^j zN|ppiNF7d(!~FO4n4Fq=aF>C2OT=Dh%v7Q}`CPG99gtY3tiT(vzje@@KDvfOxPB`}gai zHzYEOb-}aZ9dje!tu1aK(!$I)rg<@#@>{clu#nIy%W|u4VCYrXjWK#5fOV;zU4 zp@penFiD{Wx47>r!{E=BKn?EYQi^Zs>eHeyLuXy7i|DzUM~-)%Cnj)3y(A#qNw9YY zl+fwcU*BCXC!oubBWge!1Fs*nzKdqt#{>g3%sHvEuR+-lR5&bGY9WQSy3hpr zZEsTdt0WqO!8jOWoPwer-2!x;u4Sn6X2bCydJ9>TVxMPOoI;Xl9K?8)sBP4x$Y8}v?d3*OeGzBp zj|2nbV4I(~46(SLF6>}(A%E#tj;S`WJ9D4Ceu^7*#ew;S&-jIeW^QVI3cnoXAVH%P z|3joN`wbDvyQk;%BnAa#!sNV(-e#UJ+f1Sgy7@tiF3RbdB1MUKA_(Q@6h+ov%hXEE z31#i3mex>2kXo@@=^nDvg95(YK=WLvw%=k6%a_UuSl;GsR#lbVA<-L`@RC*THkES) zRpzNrHMvHAV`g-4zG`%kWMBN;Nei84a!$L!D$(J%fVQx3Psgl5*b!?O#|;9Ic`uM%sAyBFOOP2 z484>pq(@GFm0VhS~cA8m> zNcfA_qNL{(sj3tuIa9s9$zb@X*XHc(EYrPvsxnOpvX^4{m-9jQD~q`lN)r{Qo>CO? zqM7QBp9egu{;@_F_2X_H*+y)opR09tyKY#YaGOSSNv|$G_sOQ6>SK+FjskND1ksoq zTAiIsz&mN@+(zL*Kz5N&7(zzNRWD4 zIv2l><0l|Vg8b&*bBI32kFJn_;is48=H{Tw5@hp(&zq7R(Q|Q}t~U(!MezUK{#orD zD3!9YM-h^Hz?{g7_@d5GhGT-=7lWBs5W~mD0QAe`3r#KS1C-SfS^S{lN%5y_lj`(i z>_{}gOM_+ook4zOu`P0s9rH1HTS262Ep?AQh@+mNMm9`6vKGzN{|-uTY@DveB2CFG z*vdr^&ayP~0__NmXyOd>R!Rom%t>hvzrn4Q$1RmV1$J3yBuVg2Xz-4#gUyuM#N5O( z=oBOW0#jxEma)ZL5=w7@Pqzgc|Iz-56z5}lp#q@xNAxuk=;jxmlvkIeFLHz4>8ZIA za)$g@F7~OM@^VwTFUJG6mm`=ue^AXcB4_v2^`$crC?;x26uIN->Z~+y8_nWgZwaYs{3U6$(t6Fu61A{9G+`0(oHVhXIr0shsF0%SNI{V7muYx8*iJSiAV-W)F_n)rHy zX6bixa_$u|XQzB~pJzgUZ{QXVwjBRF_z%CqslVDaNg@j7iB9k^1}_^tG$cFdU@CG~ zJ`z4^vJ&S4isTjx%k(?>V)fJv5V^;gXU8d{-rdAUw-!arZ*VJfd;w8kn;Q1ab8ZDy z&W&;`72ooT0Mk#4B5qr8*2n6xWP4hBxRZu`q*bHX{BWpYtlMT(Dw26AZStbf$-Deo z)c)O(B*HE~K>nT{1BrY$3~+k_Qrgr%)nnjx{tRD!QyvBE9y$}pn0X=gRG^C<(yJ$$Yvt^jq9$ZiaHBv_`7})(#5s!ZwHe@YQ~Em5X+>dgd44K!)VIm8 z;3bDewDC7kdmz8uOz*26Z`SlKzYY*ZTebqStmeuK`T6P*Aj`}oLIX&Prt->m>fJ71 zBh+>Nni{)|bA>HcE#TO&@{FGT5#9&+ACJFnw$Ry7XWVY7cnk^UVG+6w&*BlBt9I~F zpkLh-V8OD6BmFXN1EBshNv3dxust)FCq9d}B~z?;}KY;J~kMK0*L&lk$!ygv4xODB-A-R%aUvDp~g2*4xLvq~hguGkT_Uj{rM zpLf`8!#?c*lK!1|GZ632Shr~w@kIc4Hso8L|GNpDWVtEl7XwVa!wLNFb1lr_R}GuU z`DuJ|>-OPdyZh^NWcht>vQ*<1eiy4A~jH$F-W2oWMk@&Ro|e;MVk zrOjJ|T}i13DVs|q=d%VfK(ZR7cvjBBS?vS1HE=lN@2HAS6lqbzEw)4 z-DIVV&Z&Ql2n(;*8j))RQxm?5ygV2MvvIS{_K10xsGkScfzoU&Tga?@Sf1Let1|52 zA}qHf!s{ajOW9|#3;kJaaio?D3n~bNJvGT4@%kPvf0FT?JSH=}w0cSB?oC3>hYv)5 zihr~I8=O*ie}eJ_rQc}dEKcd-KH;c{z!TW{@ChgL+1PVQuYM}vU0$3 zlI0`A-L6Dh)9f2vRi*h=4onlUyIY_TF#yhKN5k+^?8D(IB!9wfS|82v&ZLL+*Xk|? z(xec|Dyr)1pTk+_m5iVy3=2)su!_DZk9C>!x(51@p+sVxEpBx{KfBseWx_&+GA@08L7Z z!qo|q)b5-4uR7Hmw=}6m>~CSqH(xNO24s~4x}t=m$R@SlwG+(TNDcUpiJzOFKL>BZ zSQerHG4@TD=PsZ`=-4j)Kv&2(=BskwH_ry^ewd2ao9HAGvaA;E@E5vtisIfrZ69b$ zhgP{*!f7y3t%Xz>!v?bqVC*MD&IJXz!J_u)P&O9ZuLA5dvOpET&!S9t4d#U8{4O(D zNXzn;%f7%3)idS+m;8cXej+>s@N=pk#D>?WQ3)ji8cqkQW+P|E*me!`lwwLxYF3y1 zcDV13qxckIsvXkj#OMfTlEoTONr?l7`ZId;zje}&ANNIr5nAV{l_LyGD;2n63Z})V zTd}1cH_Z=ZGnlcQkHc{?2c`BuLYe=R-C?Vx3q^hIt(wA)ZQq(Pz2|jY5iZ_Qc=s4m zd%(Nd=YCH@>4Ml*6T!PaU@RB~%NxeKdw1qld1hK~ORGEGyK7Fr*?)27p)1whXJ2dh z5_36uY@mTD>Q8hs_&k=QN0m*hFSl`{04@+A!*LgmR&Q?wgLAiria6CRxTX6-E3y_D zzvj|1z3r0!{-ls5doL`!13MOW|K=QcDjJKIjX>m|O^X^ZiVKd;mQ&Lxzjre<_AR=F zG2zASPJxqW$MRY9}WJ2PNWz z?KFn8kEK;WDZ3a=Qsl%Th6N8|k3gB!Zr0 zvf7al+tc|X@&ZkB3*$%X2a00Py@QYxmVEh#1?9M3pz0tI1dA>YrZe#@4>S5x1P;oL zZ&81d@PZZ<7dySM!HzQpgK>5QyVi`87!Hz0z;KeHGE-O_Edcld*Xmilfq6?H&AXtW z!B17+KI5os+vp>y263|HVDI%u^hna+f?v9~;mY%|UidA?x1Fq@-Wi2nRows3BZ&6x zs6$mjOGxy5IJG!mw{_0cxW!_|y=YKzOA96-t8#n~()#*3D~1R=z+&i@njt(gyj~#N zTfQjP!s%hmA%Rq2TD)|-vazx3l^3#i#uj^F@moo~pP$|h{z*)=2wq{;GFS?(%O%2$+~R6Po*T_Q5JBWARBp)OhBW ztwmeLLP%XjzrXFd9ilpatZopH|5$R%5Jr-|&+mZIiRo0STE2acW4Wxj6Vo9EdbU;A z_h*w8KtVlzlM+o#zYPKN2D1TUUSo4 z<{!Y#G?P;5#+J#)tx|dEuR1n(r|^|e>QC;kQ0J2V`*j?2=$6Or&K9njwrJL`Pa9e| zi=TEoNV?FB&Y;_KY^bjh+rMHnc6Js@oE6x$>mlrJ@F(W=Ky1AQt$gqKnaQyfzkl@t zw!Q-}9)tRh8c@mFj*$P+{RS|ep0yC)_*}U2j3!#A`}FnOGf$3v6Qq$*#U>$Zbf`EE z1VHItddq%Lo)zhaE`7eTG-f{Kb2B&wOm^n=vGJ?8F;Pc_Tld8{a!X+GiWqO^i+Fxv zAJgm_5;j(^%||ja_rMKZdx*FE*HgZvz#)HQR`=UByQ_)Z6CFbAjOCtKO3>3$kL6C8 zoBdI$SS&0r@mEKKVi3b-qW=_w0BKAC8PL1^w|>XFBqRl7d`)v}Xc~VxGQQTb9c7t` z^Tcn+xnC{pz>qVqkHu}n>YhP{Y+xQzFq-iP;YT3iTrq-HzwEo-lvDrVnff;nDME!v z9LmbPDZeH}twaULlFiZPTD|V5dE9Vh=`t5KOFQS4r^9~JjR95p=5x>V>7}{aVLw(WOYbV{cpxoX1ZQq6 z9IIFC_cz@HjSIRV3;_h;cOJvaN6Y7b=f)SlcBOYUKW~gXiST4PaTl~ryf_TMc=W8L zjg;*Z^^;Sr3zk3lVgfq|bHe-Eh+IzvTk;0ib1Qgq3Bo#jTLcr^LivRms~cR`4(clb zaf8W6PMa7&Bmz1{MngXiVmZ>@op){tVBwxi1lZ9IzkgH6Q)l$|^!c$6cH9LaKJa>^ z%^#;s;95S;Ymm%fnJT;^!^^~X@P=UCSs-y%yE|K<@D@ij7+O%#?&c!9yZ3`XaZ)9* zE=g6-WVZyXmB5svCNdD|^SdN_?ov|?n_o3Qlx5H84x7`bbG zIhWDz`<4OZOdxu~RuA7AK5O;B_F7T6K6rQ9cGjS2zoq7S!MFbt0-=BWLJ03 z)Z!a71a38P((`UTD!Io?agTTV=kGULO%%L}P5t6CJHlH(pHk)wS~|;gB#(>dA#`#8 zHMB2hpFiRQ>{2;16Vpf2(GP0G_#b>N4GY<*@cEt6y|os278urRoIYl!@+o>t{?l5y zFl)d4^7(v4UAtHoM*<2?z8+GV5V&3`qkSd&qzYA9AlYSQ$Z>DXS}j59 z%7{sVQvlf@!QHIhZ#OnP-CH`{mneizzJ?U%Bv49Z9d*0ut^0_NN5~6Fkt8}Y!!Wc9 z4KbJ2O4siWJWO-+`)&~2C&=MjIY_8fu*TxcP9Y960*a?LGUNe)lDlVKUm0bDxUXE& zWf%_Il^~qKiHUWK%eZVGBKQcDmg^IQ?HZ82j)1C~V}v!Tbpo@RV^iQs)Y0isH5Otp zwxZzWz#CJLi4%^?>~EG3>u7z{(RI9WwM+i`enqSq3<^OKN^+XIDJ7~0VM z@c38ApZGhP=1|Zo!&qkdOGombxSg*=^3$k;t63M^+#Rgv^4C6mqT1hY{$iIheHp8sO>%7ST+v$@xuzVd*v z{PP{;;tb5Tef9z;TWHj(YhaL2kYFJ<}_)xCk+qr*s9?fd(|m3HWm~xZoqZqz>LR6FB9UqHnwIF7gN$+(K>0jUaa~$ zVLM{|yPH$BxacN_xGk#Uw8V8&jt50Rg)tv5 z=glGU&JNYh_9tF_U+%vYa`kco-m+w6cgc2VMcj_A+c`C7#- zidm6jc$vMC_7L=3ltHEFMs+`u>1>ZAi31^dzXwY*$>L(Fs*W!X?Q1Bv`l{HbvQGQg z3WMw4fbQ8`Bk`1>-48z8t7Eh@*voP_oh?M6*)-iPPN#N6he*3}aQMBvCge3c~b^-?gmD1!4brpZEVkzcm5$9R$9dPXr*E)J*GBJW;At8OjcgbRpRN-`lV4-%Q zF`GODy0>vLF)R_X3<@K#N_cl3{o_EbK$gju76Yt72*Iom=q>gny_sh8@f8WN1m~km z52=*(?!U)pB2ux`*Fi+MQSO*B_(KIl{O>H6)5ybncY|KUyK^%2A0cA##oVnL&}I@f zArp$DHW-<;Xqg196?MIYj@{RV2Ro|Tu;!~QYNrOx-wR(}g&_axHSEa{|0E;R{td3jA#FmhITa%;Rx4PDxVcg2Yb?Q73S zm>p$&uIW0qYMsKE)>JxefZq9aa@g;II)Bv4GJUJ>0H@}+davCP zlUjm14v;iKy=MNsn(y7ezbh}CjBdZ4j60bzT+r|o8?K%5ViY9h+^(!+*+`Ql?MiX7 z2;DyRw%vwTT}o_!gfr0ep2CZZ5$tE>83K6s|Iu|jQU;1|n|^2w|6?HaVp^IyJCnhH zl+wZ}{$+C{Qt(b{p|igLYT~Y`xpBN^@s#x1?#ZFqij~@`3pN8i5vnq^_W2v#c*pg4udV3zC}0uqaWfGJL4yt%W{+*q zWaq@_y`NN&=Kn{X(Z120Nq#;{Is7I`Mz?_@MXli4n>X5VCYij^fv;})KP3v{H0=`% z(EiHGKL#<+LAMG$ztCa5u(c>ML z_^rq1zjc3(oU%W)f96KFIM(u({QtiFH(ugm+1^rt`AhzC@_B*&qub4?Z(3&uJr!48>XN&XYfL7I(!vg zEj;+8vtnrX?ZvO%@_ZzCBb^yNoI{+l9HOKTBmlFD!RyN~<=k*y-%8i5WDm?*8P@&+ z&xZPqm`W2wPKvoll5U^uFpjD&V0jnnWzx5>54@>kHSz1=V;}P0^zqjWVTLu84!d%Y zTSrD(zzNU?S0L)VYFp*J_Pey?@}Dh$tk^73rt&i!=@j2)Tx#MMmM6mH%HLij_1n(B z$D^yFS6X8yD*k2FAED6rH6vcwly7UH^xzjv9{$KbL1sgB;}~pUqTTy)XGS-T{`)kf zdB5kK8@`oS{ygw$09@cGey>td21NHUJ6#KYuxJl>yB%<7%^e|vhq~Y z<_!{^<-#0C{yH|2LfB)e`|t4C(+AyF+Zj4jLZ3VjdBBoVFSkCdnsi~|RfLmn0St435^Ah44c5N}@GI zgM9!(&)TLaOs(_}Zl>Wi+{~o8xJF7o-{sX+N1GaS zWC6}#3zsVl-(-Aa;3#jX3rUkMUB`hUh2 zv)61y_O1c%fQJCO8Ezi6A+|ndAgNlbv-$Gp7pzGJ0pdf*RqTBLEuny;rlS*6F!%cY z4;%>fLso@Y+p<5%$dS_id26)+^FU!grbQ{$YFbUA^ZT|RlvzA~9PP0$$ZT0Vp<1!dV1^@NFIqYSm?!Kn7&F-Vg6j+&g;&Fi0=bOhM8g1*4mg)W#-du3|Na_4gPFugY^lO_utoYr=ZU2NCf)baW08_vOdFrP8u846SbwkR>A>}%Z2$DeN>(1vn% z>A`ROy`OU#!G^X7tI@FlM(;&%KfD)3LJ(dR|7iY5%ucwKuGqm zKP0;X7@CTM?FG!)SK^ef{%d?7S-niNz;8nfK#X0sen~wrR%HeA@a zhAQnq`kMDsZ0@{}g_r?_26HbLxTIcx7TKR4XufaXCXXBYDzy?IKHd>XL29c2PxE9}b4DS%^ zpP#WJ{a~W&0WI)o47i-v6C~!xTo^Ja^Tswa9Zu_u<7l&2RW~mt`gZJYOm2Y5$qV4S zQvN71h;hbg1_;wu!D|Dk*{Zv{yC-RKjExJu%lh%nuH!AXG}Ae9yt=5Gqt90FAVd%& z7!E|~22tYg^?E$WT@-jIU+#WK{#O10S?)=CxDMK8Y6;Zn{=z$BjBdnJD6D^IEsv{$ z?Ct&JWrG(=0N@z#`u>Guh#&upHn@+v9;b? zA3t)sB>UwLq;V##U=-~pP+EXq=C&{Hm1GE*i_?kx{hetR0trl_U{$!QPZD~WfLTTz zt46H5F+di`bJx#5xnzQ`w-FfQPmL8Bcj(H< z1b|0J`Z^R3(k}ZtbUX1n6aDe=@j95fhmH4vM!C5FI3Cxqx(wz${+5tQo+vS0K4u=f z0r*zk$>9nR$tUoQ-#}f_SK{+*NSHC>WlDXdssJr&K%1`ZEcLGsWT~EM)27lt7YRhv z<1#$)BEJR+9EP)`bRItdo4}(VtB1yU_U$I1+}AR|3#G;X86tU7j@@$ntAOmD&mH8~ zg{RI>?~j)b{tBoF@k`{s4i-bXZ3H(6L%GKt$eBoq694t8am}+(1T^aX zAIev4>W&dBz+!+8%Rumbc@rTJwtw)I+yFZdgxU(6+S4ynXM1*9>`7XUya2&E8skg- z84fS1R`hwYInggJ)p!k3m<4pP`|kj@#S>{oS&=8 zLy*3DrrFF7RU5UUn1^?K`PFvsxK`rIl}!U3fVK7j-8z%c?M=WpfPK&Znt3yl#@bp5 z>^Bi5f{}|0=K=&`!ZPn;cOXFWMldd|q9*JivwG;^<71_+C4>>!{!0Gg6Yw~_fEE4M zv@gNZS*LNPfc{^u1)Lj}{~ul}@S(c?-(IWr>B;f`Fy#pK91UZzKiSW?nP&az2ii_! zKBvc6Fw_B%^6hfnbm*5CGB)NnjgfX3T`uhQ$!o@#@$b^*_vplWILmt2t9V#8 zH8;-6^#W3A+I!>d9&Tm?51KmtmabBD=Yl4>xo}JFPrbI;+cI5`(GUX!XX{xR@xMzg z7PP(XguM<+M4gtyvA8jTofSYJN|%{@Z}`eZ{M7(E7vTB6xP3_w_6=SV;QesvR}a^K zv#AxdU)BuLV6`a`O}leJ$-NKoOf)d9T?;a?&s+2=B`+woIB3345B!?$L*QPqJ@fwc zp4BrCdNJ{0qDr&srqb0)(bM|>5ov2l)*N-H3c&woB`AI z$>}~!Is`fbC(-h~N@AFD+d&%F3frvL`d&jM?h-tBjF zn8cO3$K74A&3Q{2va2vsBGPj}nVcURO2vHA?nSr*RGlN!wl zcKQL0V)hDlt$0blCT;1)u`A(D@4VT#hg`V0_kLHeCfMg_WJf!0!8ZQe@NQYx+)AEsE}#3>C89~DCqKWw!YX%BdV~X zX$_y%)^TMh+Z%MZ@`93^iilpz(%a@A6^v=^BGwM+x&{pxJ}mKyR@}&{M9F(H^x6xC zSoxIawV-y2Y4RR!n;DqtWn1W!o@~aBEqgy)DaR#J-|7o!?-I zmW(;u(DM?qFW%Ym9Ye$txvCjtFUJZgYYI?#c-iRY?PmHOcm5ErjIP9?l;CVc8_FtX zaJu)fp(`8luzA>|XV=0jTgOCV)e`01za!1xx%)|f)LTVwG~Ehbl_xYNQEE{&$UIbS z*J`j9JvrYmW=`Sd9n(EuIF&hgY`tMIYFhX4TR-)>kr%<$8ibbv*Wz*pm<50pL(|K@ zf&Y4_?KI2_Z=HO(s(ZP=Xu6^^xWk!&PkW+^9@=fnP~-BWfzg9ev<`bZtYVWNy2R0u zgB7xChj(@lf+loEpDpkiZI6ibEpM5;Gt-+s`Db)~dR>U5yZPg_ap1fDNwt8Bss9EH zv`X|zuMFb>>W9`sHVrXtu90bO@k@H~9FA|7n(3e9w9+f-)G8B}FvPHu1Uwp5Dk#oY z$el0i%9ijM9#IS6%cU#zkCPv@0pB&^$voItFH;gS$lwyaMtpy4E2PeL*!yA`tNx_z zUe%!dk=F8>5hnRcR}`x_j-uk*3!%3`8tUkJ|GQu$yL7?KcJMG}QP*fX^w{qPr?y6` zv$9vFRk7PIhhjvEvTX`_RB+UpM!sKgcvtgMS%o^nYD+}nmjsLhL)w^8cLOhL1}H{t z$Mrsn;cZ8&+WX|6TYR-E?9&Q@VxjQotTyE(xllvHxXSXzJLY9QP5Ep@qMtMdtZ_8P zaPnH`-@i`ZJbqx;lhSPyCm)kO_iIfhCcW7QpI)x!ILG}6KK(LIYt+CH!#2@6l%F8& zgo))FJDynN>69*5Su+}iBO8EQGZtf0yL9Gp3phg3w%>ML(w1&Dz`w0M)Ma%ge&vC7 z*F@_?vDQDLCj6ra>Fqbns+?mj?h7$5rMAnmdl`*xO(@!pzXAJkSRWJF>v>3yjY6=t zJc1t2oHOB7#-s1<+LF{}C$q7Uh7LpoJa$ zS6i(laCzu`@#SQ&%wG^WbW+Kc7XvXSsW{=#$P}rS;Ie`VgkBEB{1#XZj~oQOl#x(b zQ#mBwMA1YfP<1yyc3#c zUPcyBv!LW-93+~E=8tCetW&D)e7?|!@F_WIXGiba?4Ptq$kcRMQY#3cTG6PPJ(?x& zkWqBygoK7p&D?f9wGu?-MeFFkCS%cz_jPKms<_dn;L~Xl>4jH!Z3`ti-*h|{GpN~? z&+Qc(N_aQAMy@Rwsp?rcrbF}UzDjSimGl~@&R8K7awneb95gDVLL<{R_8ld8l}UbBX4H9I#`}(3j6; zQAS3Gdc_A zsb;VBTX1Dq6_mxI_-kllcv36ZibJh{X^<#{{oH+zTB)(AapubCP7)-3FI_Y_?xD#hJ*now(k##a7n z8?uP2`~nT!f)3gtEyI`Q41vC*V#qQT9V{f%THs6V{)fk;44)d~*$JI8-1b*1 zC{w&O!HP(bPf_ryaVCyx*!{G+=f1WjF|>=imSEwhv*}x+jt06kdxv@j)L$L~9Tfix ze(KR9YpNGi`;Zi#vZ0oe)$5X-Tt$UR4|F7+Fg?atq=ueq159oaOuhkF5CY&ao9}d( zo`Z1j>DOP_h|35jpCB=g^$f|2)a!6RKt4d&S%?xruN@ZmIzsZHuwkT<8UWy)RZ}xD z{~Ld;S1iPX9K1TH=YT|nwM*bD!eL8-VvsJto-hcg`+LvaXN*y6@BzSJR3T}jXup9a zqKWN=Zj817DXXuFrqRsrEYtE(VM~>&e9nH}rulv)rmb>M^xNz2TS+WgUi3nDXjc8S zwL@CSDM=0Z29$WvxNJ2B)nkJf#I+SzUX0Rg2z6%c@o#B{L~Gdmh;r4WU)!@~)Cf9E z{gc|}^VKdi^w$B?zpz0YZz33!40f%O^0@}O1?fwKm>=zLVMASmflGcmB_!F1zN3A$@SB$k{n%&1OGJuF3PqJ~l?b8vYq z;4wqblfFoNe2>TGq39);rwB|Dpyjc7XcaSm36EJP%9~am9nGdjbVzQ4w7!M6ydh80p#*$E{SpHBBU;Z65`V6Q7nwiN<&&A_;UObnlCVT&Y#-DfE`JKNK z)oc?^I70kLOxh~?rS_%7U)?uRw>esN0}ySy5eSad?j&PNMpR`Z(-TX*X%7u7WOtN< z1q+~_`*(dv395}dA}fM}$*_Se0W%>a{8Rqj=a+vE;buygcv26W>P=sjzD;5ax_SNC z>@GdLnzLeZ6P?d@rF4+^r=xLrx>h{}fs&wnhyQ4*;dgaUj%lTao*zR691#spW|eDn zF)!h7{hRY&T^STGxLyq&z1J@L;>LyxW^ZHfe_$4XqL;mjlpGcfTy1P}7XUH&zkJYx zZ~&)7JjL+@| zC2@v-$0$aCqZ5(F;BQ97y_9{6IJAVjO75{06>4OcpQF!ma&hm% zsE|5&;%|n=ZvYtrv&P54a0>w7mBxvC40(a*1smjMC?+`99k1D715=AsUC ze*vl3>yeqiSC*69gfPjxoI6sh?4ceq4IaKi?BaQ-{OtRyRUoIj&Z5}>nSnr>Ga%-G z$r-G~IPZcIm2*?lyV6#iaD4gOWL~S;OgS;GwJ(`J7S`WR|Mv8|!gc#QUwV(+dEQ4M z5lEf<-b3vqCzLm0Z?INPufO5j58NEvgbx$Qp_>SsUx{rkq2`EgmGnQ59Y7wF*q#$Y1{Z6Rvuvs4Nm9`Y!A)TGy5-3c(?t{NtaUFGw|wf&m! ztzGGug+=19R@@$d$z=efGQjH-FzLEZz`S=~E+tv%VZ-G|%?<4}{g6fmvKs{~Gl z3E~q%$!jEgW%%wbyFrK!gcPR7+u(;HsHjO>5_MU}qR%@Q#KdW?z@oAGh2i)rjVwKO zVSSU68)q=(Sr)0I*42~it|`cSS&vsbVP%Ub@hm?BQQ6#VB*(yEl>l5WQFA8AG>La> z0eCR82YU|)lI!lJb z`3J$*MZ$szlX-m_%qoebPniI`9aUo^yatfDwjq$;L`CnqZO|Gd!}&8|!7e6Uv2DRV)BN;|bo4WgIQJW!>4g;IpkUVV^%*M?*-i?C1w9H8 zA0N*V+y5DS9B~Vc&S<;=Mx{Df9oYG?lZsE`#ZmR#$y9II;e788hoEYm ze_3cL^369rspA{ykYC>Y8$PEPW{f;YDr(4A&8ybQk0yER3dk(h-)A({S;8+@m?H7iz=HOk5xEe^NRxg1CNo11BE1`>JpgMVoR^X zuq%ihqiltE=<4#(+x`gv*jawX_Ro~$WXkg^4rAdX?TjIMh2qOkN5Mx;W2ESReA7!% zPEb!6IT6=B0FSQN802yc`ty^$vd?eFC2`WWY6$WrMoFD#suy zk#s13cHeh&FM)ON^wss2Po^qm<{qb4pCo=B}th`q2zF&7a`c6`qHFx z-z$Oj%Q7m$?(xiRo_mlGsn zQv=TbM~RInad&+jo7=l<)IxH~&iL;dR`RQgcyboH;v7J|h&>P!2g##p@;WXsmZE#! z19;NrD1ij)aZ!*h#T<0|=-*od`QVP0h{LJZZHV2L7d*u4&y zGS%pSy znO}E-L{(wYH;_m`mgE3Hly2k@q(p##@j8()O2m?)@_V>rcZZEajLXEWCaNpa^^CzF zjFH25_vNhU-GrlA))94fcJL^3zwS0sD8A?b^8k~;hrq^0N?I9xs?+sWdJy!W8&1bX z*b3Ny5k3oKex4b8q|(Vka1B{^;v|m&N!21R7i==3IG`V!?BUu5v&X=*SRF3BIa)?8 zzM~|M0gCI*XnF1J-35Eg@Vhj4R7o&$S0bt zcx*Lavp}J3bl~K>ySpz>8U6cr9NVN%6>E0-o{Sv+I?YH|h>I5gWS@DO!EYd(S6qBg zC*fEUTT5llC^U=&cP6Ne@FIeH26 zmqx9;P%W-r?lxIv5^H!B(P%RRV2%(H$6XE1$7Hm5il zNo_Itm45q1t%TzkD@3jP>C1xMQ@>u#gky%^4y#WG&C^a=y z3_+l4F(42@G$}FgW6e{$58zVsAiaX6L=tUQqoZZf$9>-&uy;*&t#q&U>^{O z>f6;nf>eGgCJ;z(R8vLi*(KS(i|ZzH%mSMJ^N zz4_hX;^$*h^0~7PXyuv7RP|Ox&DL(kE_OXfx4omHvZ4}eblA}ygqbed$+`v@$SgB^ zNdN+c(M6~LPh2;-fS2sy?6&}L~-nOSJI~~;QID+r$H|K$*uC(upeG64ehO#E?nX#SUxOt} ziz>-IbmN3ha^(_TfFQW?P3hM0;X0*UbyJR~)gYc~$w8XSh)#&Jj_vEn_hzvKUCevz z%(qAB3m2`)j+>#rpO0Vusb7YquD59W>?9mQxG{txlcY4^ccuNZ3?e%K_DV;Z@Zyo>EiL22?r8=3@A)eN%m()&Sq;*O7rA1EjL%OW=#4`D_ z$&x?cx6pN6vN3$}BJ&7F_L^?XU1V@{P~J?>C-Temx`#7~scKPm%SOnK-N7|i>uvl#V7GeLT0P4kn=UZdh3gI&7F}@Hv8&I1 zl+2qTi!L4wnQC7QnQ4^dYcd|O+XxU11y-hd5?eE~Uu1=*IHURO$)Q2CrKbD&$l0p; z=jRV}`rl9GF{wTs18%WT>%Ba}l2T&^e-lgZUcVdg{cLr$OOf|DWQTp`=;`QjP%+Q; zV0^dnFj^GT0hz#H*8H!JG84rpQudRb%sxjq3Lui9OYFscG4dmRsdH&`UGdo^Qb;83 z1JI{v8M$7?jeKwSZX#ISkX0$V;w58jti2Ec1@~2~tb7G+X4AF3RU%;-*Aw2&bJr5| z#Z_o3G;5j=h^sbR zhd4=!>>QZixo-zjqgCS2SJ&h7Dfs#fMnj!_H?#^~JBIDm>{jpzf15jEAz~|hag&BZ zTTUS3=sJEL+4rU=^EKx2^ij;yDccTd_orzN)Ei-Zo$X*@$eRmc3*F$3{TpX0&CN}* zl^M(Uz2By6XSbJX@4s`qH0eTfcg&3cY8f#4Vc6Yq(f#fxn_`#F3lVn;a_4u1F3#@^ z(USx-@7v>!1U@A}H`uY`Lba1ZPoh>0T%p(PHL|n0*@+c-Zh-=Kud#IM>_FFaNZiu5 zpermFW#+#=$@bi3zxI+d`E7v`&n@V^@X6JQZSsQ17F)#o#ZUK=Nr^~l9*P6d@eF_> z($NKq|6{zl0yR%_c@XDnGYU~7e^8JxZwd+%2Y@Ut1?6$Zdqx3DeDg23`@aXTtIqx# zLjG?zVF;}4+6WJCWQ~4fk54wD2X#>P*f68pL=9I(f2SLGz;o z7vNnp76h^Y45jE|@n0}NW*xGgJ@DKph`z;sO_3M?UryVjZO-k6&mCwvlsqBm1h9;O zjD*=Uao!=_66xdY67NJu05SkL5G5|9m$|2w zl|{f#67`wj?r+P%ZQ7JQ9NPU^Xolz@;z>)0tOp##V0PuO+t*Y;ebN8h&U*jXe;HSo z03!fx+$WwOzWb3X(%JgYtztUF7sRO01j;uWwj@Y)-V9SNcMWwymqp&!g6%&mE}2hv z$zHm2jVNteSR$|yakn}7ph=V%OQf#;^ivU`^8RS}_<`-v)*R@s6(0W;8;HZEO84s$ zhZz8&^zyBeBaI#a(_m@+e_&eHK5wvejy`Z{0%EXba5ip_p59{LZ)KNhu~N9K4P=Eh z>yqRtOz*!L>eM3|Sro|g&-9c3MSTmj$;C1otlw=_TdJ8)OKd^E0ebLXLAd_kKsXKL9x9{LC{IsK^k%6h=rB}r zQ*j6%*NH_fJwY$l2xDY^r2ChLVEb&6#x^?$6pevwvCsZ(KVlfiRzk?jvi+K1hDAEe ztd{VpWUH%ACH^-K+?{`$_?ot1dzbrD>XN+M$+b4;n`Gu~b%m>-AaRz0C zjGN}XyK^OzPf8&<2iY=)-KKu8nEP9y$(rIQu|Wi%R%j_?>#)6~>mF$eY#`+L#6J$w z0nUR7X#t(_g#m^*0XX{M+cOr5rYz0FeF+@w9{$hJbtb>8wm(n0(|hYld`CHvrQUVX zR!cYV)~z|h8|#bqG(92V)$Ti^wIWX-Jzcv_hsxFNP8beU<(-RN7DS-{#p75 z`QJ^;P+%Y%8s(oLBs=mQgOX81fxpLOcj(-ZTPm00b&-WWu4{_#Ej@D#jmX8V2^Ecj zXG$d=FL4dFZ_}R_o{+r#l@SMh!gGru1Rx~kn_M4t0owni?j!cUP*tEFJGLKGL}3*G z25hu-PlTIKcO@u`qOY@fXr`}5_}^~|sW!y6tCp+p1a&#?_PCKuQ(5LmKBKLgSI2Y= zW<(F4?XG`?ahXc?rjvjo0fA@p(tc6Cme+Um_<9?4gP6*Dq9FCbPZERM%S>82=_vYn zr8+EhweYqcmz_i(N(X%dUSn?XWIDd^fjh|H)tEY=W~Hv}7w28J zpfVO29pPTeo0fs6$6J>k0~6MUB*}VP4imLBpV@B#p6$3JZ6h`($zr2vBPqvi&Z{)@ z?)}jl%K9~_{pPgf-)1ZV%_Y6l5+TnI_WfsVYA2*E$2+^Gh|`lOb6wyiZ6+iQrI3m6 zkM{Q)B2>GEcn|BHX463;q(D}=AjR2GCFnQOo)5lSJbR(QPwgD<*L1Bj!vd3%|L0gs zXEvSZQ-fZE25rM;!pq3-jpTtv5C^kA6d*jXSozc1`*rR#X}wMN!!5tcOOqzYYUPY* z@rMCe-+AynL~JL!eKN7n z{p$v|@Z`X=a?rDBMwlG`W*9rJtRu(=0j$$hw@rYWbgk7*`(-n&=PHS(yUTS( zR&26yseP${KZyw0b)@MjaQy1PhUtX+=bFRGuXWLN>9)-}R8ZYEhtG`6XoRZcTW2h5 zLdu%%gSA-nS<54h(WxV#QQ_of*CVO0yUC7vlS8+Q5#^DepYpSInn(TAq-1yfO4J65 zx|^v2+DN1NEworNsq<(b{Kk_sPnzT{NR1GX_xJjMBmvT>CqesvReJnCX7Ala3Y!i5 zuK#5P;<&40s$oRF^5Ud7)TsLuDdsYqQ#kd7gsq}PH`j6f8mJY3Uy5oHw)2?w==opX3VN$oR)XNYmMuX@KsFh}B_4fQM)mk7J9MJ}D}D*|)`8L^{QQzr zgGl5V*B|qiT@PC3-PYy!tyw#CWxT9+&3wRm?hdn(Vj6 z9W@yxTLu4BZ3;e3pA-%~O~FAfcS0LQ-|8vgg|~o7jS?*DO{NJZRLUKlkWUD}euhVv z)z#rASNfBY!61=sV6NiRgTmcah)X<_$CVG+mn0#(ma#l3)UoZdzOj8JwWh1U)pUaG zv-VV$|45(hI`v7;1X;JN8tyP=Ce(~QBenE~{^3yz)?u9}?3XeSj$T~P%^TKqp_h0j z?dCtN%S)9@r^8@B7q2APd30#2Zf*$f35z`|1g(>_z1%~sP{u}`d0Fgi9`QYrO8VQm zFmeVYB5-9}g#95`M#tIil(fcq@um}BW>1BXc)(u2dkOq^6&P#al;f4QIWik_;O-l# zw%NTw{N6)B1N8FlRe1A+XV_ED)LNGw&D!bFG9b^Axg!_FG3z3yqui#E245@V}$V)R@3FAOWtBKv_us1GzzwCb<3;4a0Dz z&!l3OyJ;=La?uZ^P`*FX-DgiYm~;`FEvevEAGg=tDZi4~GdYw=l6C2ia+j3h1x*qH zD<7WhR$x!b_R6Mkla`PEqdledgm4nFbGN;6Dq8*kj!cv`zEY!&HCbtw+Lan+p^F}10QmrAL?=KV5Ed;8U84{d|2AG z(+PiL^(&)uTH2cP<_Mn-=GS!*8j%V3EyeCD%;axtUCs+axL#9XOxMp!seC!S!|i<6 zs($6c;ohKdxoWJ?X28U!xXV_DLAwtZao)dTiQXSL5&h$fK-~ydMub{cN+=#CZ0PO<+-|?x6nvT!ti-O0`r6Ehf$^Cb)d%rn4oDqKL z|K>x;JLoo3#x(q4CoKh@k)Y^mybK~%Z)m+eWpMyFE4dilw&A`V^<5I-)v#H~7ye?A z(7rz`N@rrPd*KZCGm_evg!L6E&{PEw4ShN|gr?0aG>l2x=AO<#Qfh>#(*6v>uTXk9 zu3^aXMb-<?X z)JWvU-*$KlH`0?sB2dhG<_br%YbK*7Lt@>ccHjZyi9H28WB3>#>pnlt;$CGP@D^U( zoH#a6XMJ`j5j$H8T;<#ZLbF|3WGtqb627RB%&cp^hWfU$?A5Fj?x@D!E=@7nr z6rp1Cy8m(Dc+olFzl>PHBF%tjQMH@&{X-#}PoGY1mI{l*?nI~B>lMqs0ju>(N15ud z1^>BcUl>jd>{6&{KMsCx@sVP77s0U&WYlDeWc~#p{%+mVi9B9tP+JVWq@I*POAQi5j|;rLNX&QM9Iw=- zMTjdTm?a)ytS<*B)>tUE@cDtjgr?g;j@@|2@g{<@dw}_GHEHvS-ndRznT*IC2T4Gd zVz&A?*MT$%>wBXlxzsvDA?EYz4gBurJqI2hR!QW9ZK&Gj+D+p3z5$>upcrR(@()QY z18T<9d3#XTf{@Y|r-B;cn9;u%)A9e{vTflP|Xatm62JdG|fi;G%@z z_+yBO|I2%`BYF|ry{th+Q*Z;(D-aw(UoXD@V`hsNBhi{I?*>EkMuEz8)iD}<@mkf-D7Gs8c?XBbv*(`m@Uy2@w-@2+)%I-UdoL?NzWL6c#)$xLr+ZcfI z-ml5WhC%a7H;67eA>sEZH8y;5#R)pk`I_G@z-CjEAj)tT0fl_ zN&MximVMAV2)x{;uz%} zPvNHjsF7T6&&4H@Beu>LRjVYVC*OuVFp}LWYulPM(rdtev@Ux3_Sx1~?d2=Z23QKL z#^@5Q#To^Oq)|KX7ayvA5mLK}`#%AgmjOY%n7F3T_{zM-Qvuug{h0`{22N~1kdWIZ z#jP;T_Q97IkL8zB?n4@Vt|3(uNe{wu6d$>rAllD%Wu~4AcU8s9`Q`P49tKkmB*jhd zt{{yn&W36H z+~F0~RVDi^yPW1_T}Tr*jj}`W^yi@lr$oo*hexTs*->-X#1r2FLo@qijT_=isTAQ`D|4m7tI=&LB<{~4IolG*Yb?! zw0>0WoX<#ki6$7woODl7LG!a0!0#D0%Z(Fsh8K4g+Y4KjcQitOC{sykBXa`sPvH+A z8qfn(DM8Y$#Bl#r`GF+H#E_^Y2`<_&r6hK{{-jFZu+~Vk#tj-=w?tfA`WEr~akxQ5 zNWb_%{?d6K!|ezac9P8$Ax7nX=7I0LNfN-iz4SpF)U}(6W}!Rd>G| zS!%dPPe1Y985cBXmF&U1rvD7YHeMx>)IQOz;6NfJL}ffh7NE!7z;Ls(rQ=-_>r0## z^x~90EB_jD4Ku<=|NV^;XEnnHur153mbJUGW#4~yfWYjEAv4Xr3+_LHggmzl#nT*K z9K&6HtbY5GxSV{BNODNIEDkLsinSfp2vvI)!+z_N{el!31#qqq*>;#Fem^-z$*BL0 zvGw`y^{F_Y4vXjK@URJZ2KTGMv|jDc zeBpLLegiTQAlorAB@VTy1L5<2y+>I*tJUW4Pdzh3%MbM9h&G*q_L0`c>pA<@|L_VT z*5LP%)A`&8t6?ny_m1&}`YsXY86f_9Hf;8P#ehq?K$-Daov(KPuRCnjIxIFe_FzFyykXDp7vAt6g$P=dH;qnkfO zm`Q2I9*=L|n@jjln#@w%5GM3h-@PM1-#C=%Q-m9hmUls4-%Fm(0WdT`2ms&$zm<@Q zmpl?q4PMI$+MawpGenVA-7}L`1S!W~$ww-SpVo>Zqn4M~v-!=7A;PdggOtWS z*?;5}AI!R^vIHn?1c+kFu9IDZWh(wBZ)Pc6+KX*S=rAfCu3-QCU`o%_PJH$afty<8 zF}kcv$hBJsUC|Iw%yHq5>D$|!O76hbfsfI%P%JLi17b?V+vemqy#hp6tKhhE-SZG}jOV2S zeGb#smh}*g5q*@00kEthSvRm7cKsmAp1gP)&}ZdUuXQF+&2qNwY-F3nf5#H?lxPZi zf!=O<-x|1***eIYhGE?6Hh0#rFSx_n&|sbujZ#Ys&$%VbUuIYR&~JGGi_?XiUUF=c99%^G^{ zbymTOzW*%R8A$1hi=f2rqN?+Q)be6o>KBW68D9A*C3f^$HuA~zhgAD6ojoV z(a!wH8npee35pqkay#;hxhJCLzBz+?k(2BXEpCFuzn`46nl-y+!i+8EMhF!r?7s&q zX|OJ<<$*?T8yXQ4YwETtCfjpg?*dMP#cv6+Gc?v~(nV-b0$>DsZqM=XW#dW#y8Z#r z68i^2?l7JQ*>CRAlG#k!8*6teagb<%bX4ewBh`|w_q<+n1by0|j;bHv0S{cyteiS2 z;+z~OJFDk679i~T%EYxMr7wSRLU%T#eq)YH0wEo&8&0Snx+?l1Hy*m{b?Xm?*`9dy zr6IX+g7kysB0W9e|u<mAsEB6xmXc`Z zmD%80Yg}Gcu|kB+*XlxfCCknxU*KCF_Ma|mpsCDbz=CjSiE3KzxlF9b@%VGqmrn%c zIC6Bam&dUlY7SMj(VhI|3j^W!1ZmrF72maHq6)#E8Dl4@v9hL%f7)ha{A1;&GopjM z-?Py-ByfJP8$EfoRVN%_=eT@_Qj{0r6Klv80N*Qi;z?sI&<%bSGyj7Bkw0tW^Y>B; z7QQ&T!%f%@(V(`e|CaOMGf{$?!I*N%H+OjD63%tpx{Y#~coMeRv`csN4doR|CvRk4 z^r+%GHum;*GOJHp2GMgdJKe=6dnRS(zKjraIr$PgHZD|k=~IVzZP${acQH#bWR)h> z^&`@4J{>|7D5&jQFLc6iVJK#2%fhniTN*bCfSmrLZ@rYK3vD=b>xy)XfK+gYcN#4? zI@7v4zRGFvhx${#eUcbZ_S%9SAHzU%cMpely->Bqr->39`| z7KgK3|AB_8otwMOtx53Zj5(S0yr3G`bnY;`rCaah?e^2-7Tt^8FF_swhpD`07c_XL zmVwuL(IYKO$4Fi*be<|*MsI#^yaZDp^s002kQkS0y=Z!wxgU6O z21W8(n0g0@(ZS60sPEvZK)7OF<)7NJH3?KC^K75kNl+&s8U;hLaE@iF{AqkmuLQDklgXuYgC9=|V5IzBC8&aXKb$nq_RG-6 zXGV_0?|B|vP>3}c61SWP35*4WWOiwMa|}a%XVvvVpF5aOCPnMHIlSuLNwK%P5N&ek z?~&F&a41>5#@j)OYiJ4P>ip!2XrDcA+c@5dmUdVFdLBDPGnE%wfYT^4q*>h6+(Ka! zOw1y7X?Hfq$Qy2^gCCAHwZA@RflNr}I6^s6XPk3AEXPi%{7qa$R(KH#{#U z<2&zd_RZ&A{^5T5Vqc{c9^}-5CICQ~^=u`A{1_|m_2I3Yu10hywyvPhiz|ep9vc`B zb01sv8e)#Cr>{9!`(1g@>EaQL-o2nob1&hd@I3>v~jJ~ zv#z~X(TF1K3m}qa=YYUKn%nt;WNj=L=$%)ZzOl%S)_d%Hh{Y<4W=@d__Vt<P7xvAt_Q(1KxkJnt=)rO{5wyreNiZ-;^{``qy4^0E37p3B1gzdPjytf})7Q z3>0Q_T;xhTTfmkDNI>)hgSgq=CxhnbC*4I}11dV8np9R{~6zqGE9l%kx< zBKa@3c+RSp_#_X($a>dHPZ4aB5SId&BQ-9O`>eQ3q^M9GkU*Z^MJ_2!rIRT1H4NxJ^|L9T% z9&t&+Fx60z6yrzzPZDFK|J5Ll<9~MP2Vjs7_DU0g*Z>R_5%2qIGYY7StA)Edi3%9} zcWooVkbeHt_pB=9VogEFs5bXJ@Jy@xEYGSCf&X@6KX@LFEtL=Ga~j%jHP$;Xod0v+ zkKC_vm>f$Dg(kyHAjaw0As5p=N3Uw79pGX+l|{k|2jHfi%g`ajzbiYvQq;Yyli`vYN*#GQgCrmnm%W`xhiTEkM16M0zF~f z-{vpAIN4*HM4!U}fd}l=3k~KekU%f0?M{cJe?+Z5i?0nm?+(>qUjDkrz#0o%Z5{Sf zQ%J}K_sT(dKJaAwrVq87;g7yMY5z)!&S@=X*9!O5{6eu##%4R3=+DSd6>>Sfm+2`F zE=fG?Ietg{wy?~N&T&%ogP}aPBE?{a>{8>tIWk6aSTNR5zL3`6gty zp*BUz>!~g3m@<0SU%K)ImwR>Md04pC(6-wPnPgzB(|2UAGX>|>2#`$D}J zN`_@cKem&;niNUZzH`Vw-a0WKBtTZ<2f_`kp6Y;E_bjq9Rzr_}@-ngnjNq$C6=>yG z4*8ghFKm*WKYSim&)V|~-C;d4HhlGjDmxo~HUZK3%%EWK6ttC>p{{h5$&L>V5i5_+ z;uon~u#JQ3$Cun?;#yMaH=fF}r`#~e?Fg6(m((a)c5A>N?{dfg4 zoPOo_l8fokSDOJo-c-~f^%qTgu!&Ay-q02@ecYJ_y8hECclG5+8AGvl(Sb1@$p&w( z{TOok)kJKO+ksP{*LK2EV<0O<@EAg{SimiOKO`>O?zUojMo#=u{l z2iw2a)w`Z-zqs;$K{Bn&E5pdB~o6o-RNh1vnNCtIW>uvb_*fv{~|iH7VLyV zmZ%Am^m#IUwGmy|Uw@4P1A4ENlTq}FC%xJ`QHLmeAmnh+N|b0_AGX0r`qp~ z8X`*a)bt!Wk@%)xZ{Rz|e|`$_PBiyIZk2~Cm93w-Q)DTdl@PhC;8GuNjS#l6311$(POGBaFI8-Y_^9F_hZ zXYVw-Tyr7iJ+pRPE1sdaYT$f#gSPMifPF059aLO*0KIrKHPTumi@Jxf;Nh zJwZ>Xyzd){D|JE>0{ff4*O(1kF*#!AWRl6Lp(0dxm+NCr$@Lfqy+2@pSq#>f!NP+! zbOTOZliV8iq|E;!ljYz12TcD^$3f|je+T8(_WzN0`cz(wzU)`-2I?(_Yb2jX`Tn=c z#sAMTF+b=farw_QsebQmfV~IV^?3pAVz`@=^YA4_c%&_GI0mA_e*rc;0u-;N{BITU zvq$90JT#xnYyszSh6_*-zvm*4x>6A~V{8--|HhjC`nK?`HW%^xG}!}llkeY{xV-a; zMpgdB&7uOG_!q1-R+;RL4!9{TDjPbXO%8qI*?^M9_NZ$HGT=QE`+ zP2O6ifvPiB)BXEZ^q{zlTN}iy#88zsl|=)!N?`jQbaj*c8*5=GQM*!`5{rS5fq%-F z3vl`hy1EBn*SocGP;~Pzua!HsU`;Wsi*eWWy1CjmUZakGpIV7L< zKgT6jdO`hW(_?&zFTy)g`lH3iUB1F8PL1sX5xmYklj?tlK%mUUdq;TTi_jydP{$i? z8P`bm^8aI)!$48p-?73F(~(Q(4qOl1%2>GjsbywaQM_{@o16y=-Q6w&DlL3^HysB5`DUu} z>YLiDZz5DC^q$Q4g3?pS?lY+xU=QZX=2Hy&UQ6oh07-r>?xpTA)HYT$3k zQ{;AAH6WrA^^Z-e#+HCh8%>=K%@}qA4*ibpNqNEr_K4 z_I=J2-l9#XISuO>H)ub#HE;u~noXh8Oh+K`=Q7b@W@)Xd&o;B?lr8!ol<9GNfwOe# z9E}nOQnb&cC{8~wu>|hGdE8Ey^D&azdhJ1Z?si~=-FmEXWmf%Nw8t;RdNB3=TO@yXteD)XOxh|6QPD4r z%f4Qtn~9%DfH6(|<1cS5bzap0(p55N9Qe`r%pD@OwQoV+IJXw~^*&)++*?;}OL(0+ zCcB^KP?>r(VSC&5<%;Mh@*q)Wp9UQH;a0_t7Jl!MCN+j^&6z`?vQBCP!Cv6~4Q%~t zip~5$!<3%+gtVZ4l=R-p+}3nQ1PD{k`>5PMN7j0$SkKM6Yg-Z8b($mWGvnOOFaNKZ zXdRtZlbc+J@1KVlZ&-t&q9}gqNrwsIXEf|W`hJ(!snLkCZfX0E>dK{}C@65vAilPF z6_MUTXI3;l4WoqgaF5-E9YB}d1uHj>I#5%1e>PSRpM8R@sBaLzbh8%k<}7~;&nHWm z9KFr3@4V9RtRO94gbAHS{fq3$k%^;#yi>#VG4yKkBMniEe+l&Yu2nDWdDrro;MRSK zf@yTk_Hjl*$q4S9w6KKCmEG%|0mnv9KcUUhK^ct$qp!`{?30B`RU`RN&(dJ!Y}I&= z%Qad?rvU4tw(Pn)n}a9Y-0E|2KHiztRlf6`NB)OSA7PldedKcIdKG6I<*%T>BfSnt zS^+Tx)#Y)L^WrXQY11c>0d4ygHZsS!b}PFDYD3DplRNAB*L}NJvx_Ziv!iwE8F>?L zsfi!wMSG2eqsv}-3DR`mm%X6|8d3R{8J)(QzbnGX-v6$+Pt1DBp=~c%4bdV0zS_FQ zta{9cSxRS#LNv%f&axn35V5RTx>>`#@3+5rx3}LSJDP|(L{G5$$)Yp{)HL(xSh8PF zw92J;dl0#mq+aVe+=hs2P_WBxii@ecEM_%>BIXAXe(3>~n<%DtBTRcvA17w!)&^Mz zgQ~R=_O|qGN+!Nc?Uw5D0rhKORAO^?g>jGei%*ee3N}0A8$G^z%+rdWDYsNR_I~Z~ zH=CqaPy1SbSC(h1{dFDla%M&PI2pIyeuD9wyKsL$qs2|gSZyf{Pwu9+){(MmfFfKw z=&+UL(Szxi%V@crJPY*?2&eblyvy&MD%*T^T$M#_jw>ZxcP_v!4_1qoY!Ue02*Qx9 z^=jGuRm-%>Wv8NkaCx=A+{YAW7Y`IB=dxHRGc|7tBfdE0we%G&*o<}^k)qC0mt~;3 zU|ogmaFL0(Q{65aukcOe9Ly@OS$NewKR>@7$TTiGd~0s-r33PPmBWv9%G3HmFot68 zMgUh3b0>ZO3S=^s75m7yBffLb9@)@*&pp(*atVnn9^d$)Ih^zDkS!@^;j1HJBSviJ z^%er_Cq$jbl#>GsSIWs%FnuQ%ENoH2Buna_{nh=jYh3|cN^))32NLZ!W~Jv>dLH7; z#uXV&BpTv@d^l&SE!>Mz7+kIWrRwUPd!`9<^f+&_jN_~{X`h*OJDd>Q`T62SnoI7% zqlLpehw*hb9rZ4G7iPgG@Q0WF$F+qT=!O!n0o1LQihvm4)*e3Hs(R8vEHdB#{!yVP z^&y-YYm)c-^qkCPH^K(L1`&nItLFv$_6~8Zg;70gsad!!l}X%745L9^8o4NOB(G)) zrQU^zWkSFK-Jxy>($lk)?x!7SF})$3o9A-Gy-enGrSHobKZNlL`-3l*4V{byICaeY z+R`x;l)r<%A1()#FexT(FuNf+@heu3-Y-eVT#7vAtCdm0+T+hz_)VKa5*ukNn4YW1 zq<2KHNuB%+X6aJK$*gPFsZTRKeKRO-y(Nq8mmVRLZO`@iyy9VMQhI(7bMdQ4QbyG^ zz8~=-P^!&kP`)lJC+Eb>p}o)h$y}4+1lv&BBBlRk^1%zdj)%2-eTG7)_(IxtR_SHO zTKQP}__Tqql+L~Idh=-n`i7PKL|~1Mj5WS6cRjvN2REDQJ>v@w9mb$E=4>8zd1 z;g39yWS4^>ni~UNpqK-4v0~m|-n|Q!Jod4j(=o4+^VrlvM$@0wTO%A+FE9E}=O@O~ z^O-jU;!iwKB#r-G5|S1I*SZozn7 zpD^#W(OZ*|am{mL3Umc2y(mo%l6fnTu10_K?Y@KnKDhlh(Z1}t(zveQ*k_K%1tooV z80@cec;x>ALn<8^v}1{Hs_IT7j(?9gi?v&B=I%xJHDe|-ZB=>nMmbmWXYfVZ){jqh z4zPdAw~*E!0L_sAMtBs1Dnwx4KO~@)c&YR87msCfKyCAch#k_7U}< znc5l5T2MX|Ubnp?Fn;Wo(MKkIF5~9J6s_q=asP6Wt1x{!E8OPt+i~4l9wgAbk(u~R zO3tUUt+#y|OJl8m02Q~ZTs2d(!SVL&JhcuvXp(Ii^h@}@1pRR;kLgTrqck(cycKlX zJv`bMmCGyeSD@!>fCLpR!D!6eH4E22_|@~@e7@W3tObQ*7TC?6Oj~|({Xmvg^j}EtM0721msrMg{`%7mu@gx;|+T?9lBf( zyfp6)AR!1BIV9LF>D=K6r{8O^?s9|QxySo~fAWB>{nn?eiDZkf=lIUykEZ6f0%IzA z+^jx=rQO@=pc)OoZ_$^-vqoke28@pJ*PSpR8>4}GH~2uG?4BB5hP9wR&Rz&5l-cc> zH`~lGEXuim!yi@|F(2)JCbwUVNUyi%m^c`0#McSBUy@LTpzO~C%>7r(9~(t^TzYOD zeKhl~%Q(0$gqo9vNIj^uUcK2<=>{&Q_=v6_aDzvF+cJjIY~{ZCGZpNSfA}mKZynA4 z(5&q($B-}!OB zW?m}|(HfGx^_OR3!icvEA`YWbJU*!P)cDG*X7}9bJ6j%SqQ}enZ?WkfLKeR1_u4IW z6~4E$(Pw>P8*qLFR8w8Xmr6s+A2Dan1FuTQyq+(kep`n=LmaNKm`cD2Z;4L z{&8GI#cVP=DaB<7yM_wkVP(`T2AXmY z)+4sBB`5uMXB1miS1kGjYYSo$%ifqCihMRBiv)r z{rp)h@6lcSuq?R!vqJyBd(|C2CT$%8o^_~KB~GER!DEQewCI8i96CQT7NC5Aoj9nH z$W);qC@o1N^*~M3;E-QGwW)S-`K{w}q~Fu&-ApS@ z7Vh?VKB?}u+>9&_%AX!I4{Y)wAN(m(;_%>|15s89V`PSZngo?=epdKs2cv1zezS4u zcF1<5iHUW*@-DU@GH)`@Wm+809)!Ya^FbG#+mYAk`>mWDLiaZ0}JgNJiYcASa`gM8;sv#-xjR8X+*xfN<$y8Xo)DuA1w z`YGc0--|syeM3^Pvd7h$S?$rq&qr9IkV_<$bPM$=e_kf! z$s@+b+A?UhjYzehr2yxs$|37F+3o}Lq|@f&9?)L-3siZmd1YIh@k7ml(2mCX0c>wx z5=^{ICg2dd_{B>!^ho+KD@pH^M??1&f6gCou1W{hVwFDTw0_*&0aS%`Mfl}Y-{QB4SCyr2@B2Tz>DpM^sy=W&i}C5PM7Yl_^wu3eEfdEs1RwE z@ODb5tLbmmPI>!}P3yc(>*Ec&WI4Cv(!m$l0FMn(18L4t{iA8KYQo_2roL9#v{Q|C z$DPbvG%I<}X-~l3;>W=|_|8k{$*C@i#=5(siVEY^yblm%b(PK9&M(mx!5wJcI>(Xp z%+541-=VJ64#i7R{#*$pZ`m^*(TX<^VKX7}9O0nc`sz2g!D?f$IXb+&vD>lDp_B%N zZqnF+-+D6SPWejk;M)ci_i;RxUfNpQ{^{go@DFKzN_J^?JK>|jPxs9Vck(gwtrv0w zlaF=OMp;_M8)W;bwhUWBawp(IRwc^Lj6Yt#J7&9EyNJ&ZSgxSTVU9I|{LM^Dr2|g{ zuVAP9m$bNrp^J0i)!q8fdD~6QGF_RDUDalbN{|rwyCO?K%8j9whZ$O8*KI9NDSQbqn5Um}WVU z(m2R%9Vo6q4dmH(JbNrrdnggcFdDL1cyMKFdRc1p-eK>6rMYhPdnb22t@mP0j)D<8 z5(D+giIG?e|GL_%rzKBw1o-uyH9+^ z03G>FCD0rrWNgWk%B)3v?T!5-@}e@)u)g95ykQ3|qV^H}^yCYPuPF!vgNwU1AL+8% z^Wt`5t`eu$Xj!`!+<~HzrD6Qtc(-a(j~=CGCVsXYf^9ySZ^B#T#eu?vz9op&R5|P1 zLl;nGHrvjoPyKT!O8$#yrHdODsN0V3*^2-6TpQ18sy%r9;i9$iZ#!N)E-Q zWVKwXy11U7(E6eJW#tFzi_tC0LRsQ>7#RU~YYA3|u%!rA=9rH`zz%+WIIc(8-3`b2 z5*=ip(ULBn@7(n)U8X;3?6m8m7WoVRu#mX+qzfC0(ZOr!G>%DS+>H1_OXhbH1Pf(y zUYLJ!EV~{{{me8(s@>x1PrfA#Tf%rg_uni;DuCMT%g28_v~)m|w@obMe+y8kuWD^P z-G20{*X})kJM2q+B^$4az57!>hL8Pm(>CoJjnM~5BkKG$!+WB~g;W%a1nUlMj*rW1 zokFP_tXBd)>}uWfXZ(m-J$Mp~$||}*=>l}d*h!d}ZR-A^&Pq@J1J7`ymlh{nGmaXS zCWpq~U#?SwHo)q)w|ZlcOKHtyO-&N#Ne3VNh@t7RIJ%tiiq^Hogz%qF5Yr+yAAU`% zDH*4RB#{(Gu;1dW7`SVp;1YRfdV!m1dZ4q&9$uvI+|G4|d<7wETX0*Mqya%|<4P@%$th;Z8ez zbbBDaHysY_e;?pp>L>92-=X5=GD^7;C}(i1(_?5R$alNwdh z@A9UW3Py4&=BwyP~~lYKAksa{#O3*8&CF^ zkx=rf-TGx!kB9Sv+JUe{&F#01f%t=V;`L$r>Nh;;f>?ipWawE_fa~S`{rSk;?q-a6 zsq4S-q;&h+&+iM zxsgDd-6TlW|J)<^+x;LKalR(Uu{$mtdrY_I6mVEh(Vv~-&e^<&Mvs;G>q}0Fz_Zg% zPs%a66Zf;TojQvCuRhK-oC&{;<8;tzIw?X@4mspdbI75Ll8ok5h-oV35H^H4>z@)? zPICxlndD3vTgK)uF~*2wo3T~SJjglLc*g&Fo>$NHy#Kzqe=qLqy1)15{(W6cku#GX zzeYbER|Dz0rukYES@V}VP)n*9n0%DzQN`L^z5Hi}_8}o7?y80`&`(gmGk2ek>gGOe zX54qv$h`IPi)0ygSKsJot|dE3dmi34-OxlWp7aydC=<_d3CYr7^?#A+fwyYy+!`bX z5bFjNHSB+Z-`$Ws0ga-#Q}~75Sw_NhF{$ehXk3=^yr?lpeAmD=svh0Y$QL!-Mk28( zNh7-)gI+N^{Q}zC4Ww?Ee|ZyRBe5x3y=v|M2S9=TT0KI4!fJfhKTi>HhpuPjzmR5< zg6qCem)a^WlO-d&BVkSRdV1H7wR6VrP;}e4CCTej3bQ)8P=1hQee1;wmJEQO=$D|q zveS`|A)x%Y=Xu7>V)M&WZu*AB*S{`$cW9&$R@CJ$|BkPUQD~PfzWmD(8rxC%bgZmo zyttj6UtU$$qR4z;II(;0@(*5fH z`D-IE{R;vAt{v*;0a;8Pj#o-_(KB?pMld`~uJug0yaNA)M+)aGkoUJmCHBDJy*_Un zO>l3M{qX&9^+6SpAB-TmV`{{!p)5>LkC+$F^c68S+(#N+1LqOsAsn#=BwxOGTt|RC?Pir)B{0EVxzEVDB{`8sXHJyxX-WLxQLxHIb~36)akp${z#s9W+?($%S@f zK7H1hj4XdJ->Fb6narQ-2X+N47YH}m5Ru<`eWJcEQ_yg2o;c8=kltIR! zMF3_rbu_mx%p>ovq>mM6aJK8PBuv2=qxEQGzlPPxKd-3|GU2BlfukBx__qj&39%lF zT=m38aiAG{+W|^=mQ6z-##U%YyVHLXCd4gPZO zD>!w0UJVq?`mpxN!;Z^0BX@jJnz0PA8?U%EC6o0`X(4^i@n$Rq^^hD!lWmwn&3XKt z9C5M0TVVM%V?Q4`D~v^VXj?$qcO^LOJ-R4oUaqA=6?i=dJPg#giWH=iKrr?myuras zG;^rD1_!mwkK8jwR611k|OKL-mw-eyJ(1b_QFf6uKWfcuGVP@9(sM1@wH{5lM3_TGiBPhY0CKXT4ZDK4&p7j;!Q<_WK`3}XT zv;<-!vbkCnxqiu9nmQ3ZgVsqU6#5l-3h^q5W!{&vzopkd&1Q4sgbT7XEzj|)+lD@! z?>u|KN-jJh;Hd3WgBKWOe(lx}w_!5xW3r=jJ-KmmmRc0&1z;@&U@FX_SP8EEc*)Tgwhcq3oq12 zRddCsoQ_7>LKfzNI~xeBEXlTy;B{uqbmrIHRSZm|HxLgk!#@mTTZ&I(;`8J%@v40) zn7!^QSa3NGFl9WKu0G{fOAjfq3Qq$MdQ-tGlHVQw1A<}$tG7Je9PqZ;ak^Q};RUQqwm-ebvOkcwFfgfLwCs0HLJC*m5r-BOL~ad$NRNl0P@S zSlDIz4+(^kRkvgosX+Gf-GPAajUV>Q(-JV-3^l+Dg*`edq4s@6|C3WXr6|K9!|KD$ zB*r8*Oao3S_O98l>)smDHV>0hC#!Bf_XuNdi$ppNWeSk#=agd;R@RLhcd zxv|0ATJqJSD9N(D3)>P^ngS2A-7uK8{`z)XC!lT!-R*N)@7YJCXnZ diff --git a/umn/source/_static/images/en-us_image_0000001568902669.png b/umn/source/_static/images/en-us_image_0000001568902669.png deleted file mode 100644 index 2ba77583fca8681f7e8c0b71911f5b442c5b16ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12240 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 Ten+4SA5B*Jxm2md3*Y|*Gr}Lv diff --git a/umn/source/_static/images/en-us_image_0000001569022837.png b/umn/source/_static/images/en-us_image_0000001569022837.png deleted file mode 100644 index 25122445118d4f371f56c3eddeb80ef035d4bcf6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6760 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 ZMQIPN{0)5kGv*M&?7HQ(>c8Bc{|94DZ7u)+ diff --git a/umn/source/_static/images/en-us_image_0000001569022901.png b/umn/source/_static/images/en-us_image_0000001569022901.png deleted file mode 100644 index 827836e13fd6816d51ba93304941768210c03716..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52712 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 diff --git a/umn/source/_static/images/en-us_image_0000001569022957.png b/umn/source/_static/images/en-us_image_0000001569022957.png deleted file mode 100644 index 55f1ee85f419d10d9949a92533b5d8736740c875..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38062 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�QFlq>n2gQjfaNW!#H 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 H!x#St;`iV4 diff --git a/umn/source/_static/images/en-us_image_0000001569022961.png b/umn/source/_static/images/en-us_image_0000001569022961.png deleted file mode 100644 index b7ea66b1192d8b40c00d1df43fbe6a5d3091659f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109084 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 =E`YtSoJ8Z2YaV!4Ksn&;i{|i8TL&b&Txt&2#A; z?~JCfmw^XW)=>!+tUmHUQ#Ga&J<6NNOWE!dPrAVQe>Xwx4v7>a2c~V z;p9`bwEl8oVDX2;hENcTbGtI!c1c3-bX~#L2$wfcJowp931gr-ae15F?>gOQVHVsy zq1pq0Mgaj6Ju?U}N%wp*FK|qX(M`MnE6B5Eo)}I*$_$;Z`VM&HH6xX!dd5YM%Q+FD zTior&dGRhdEqDcvK|^d2m6hoGl$D9t!os#@`k2+-ezbj|qq)Ct!E+VqR*Oy{0?W$G$S79MetOGkn*pEt$A)5HiZy{}81{4#AtA^k5rKL=~ zxapo3X+`lDK-I&7;$v1FR8m|^4bu)>q(R-?wjdxtAfvQm^JY+c^NL3H;J85JJSow{ z)23ZvQt&WxY4vgO4i;<9eRP(&kDnb(cD@W^+pP7j*vO#LaghhX&uQM&!E418)W<-| zi)stI=<~rD3kQ?4IIEC5-`elt3-Db6mK$vh?cXHak|ZMI?s@O>(onl zeZiu*cZ_<4$xv>~{x;orw17G}@lg^}1!tPR^sTs(XD;{#p83hc>$N+$o-oo??AVeN zp8D68zRg5YEfVnrVu28noUo%jL8}m8q z)lBvAi(Pljag%YeY584+Pca)!$46p;MJ8~gosJ6 zE>+~^RyywE)aq%nFn?e4D*qrk%^uU+`x&oe3X$RwV$->m7{4PfIooD z(TwdSCFZ`{t)UscLTw({8p+yaW#%CmAuGjwuX0e1ULWzi5OteJPFqQdRa{Ve_Kx68 z5Fux9eX7Pmw_MM8W$h{s9CHK{byJO3>pp6w5mopw<8DJ80$QkpEBxsPkq^ZT@u|V_ zLJZtiItF&TIaO8_1XPGvOV&0yg>m*-HVv}2BuGNQATa7eNL+emty@UiVcRO9#V?68 zl9EMQz3RPf%oSiJT#X7Zu#nrAdYV?(D0q0G(RyQQ%+sq2yOQ5~STVT1S)76eXLew{ z2Fr|P0S#Q-IU8+eTscyRz@s*Hn52vsHQDsMH+QC6eYMO))cYbbBQ7j_T5FL2vSE(7dcII zU0-i<_?bWmbP|K#vHwaDGhOi9Xz((_vw1z;Ivvz11>aD^PPa+T&u}b8WKyHa$u~7O zUBNPG1_Tcp4oxZX;eF)dg?R+`&wAtrgPoX0^zEyWA{;yC;EMJ)F4LDtX2-k8&Nf z#t8TE?n#jlI$CWyDl}8|je6tgY1b;mr+%I3crO7N7g}H?SF3zRO+%Aq0)gPs&uy(V zsj#_cI)k>!_-J}-{i4`*>$e)V?2)&XT4~ji8$wpyQ;Fh@j@d^mw(7c?Tfw>RUXg6% zqWf9zO28zC0tN&<44^>rTMYUI zB&S(iv7{v<6CP~fKDUU7HhcS>!7`h@4v1W1+j;8loT0?L%+F&7`5ZEqRI(vg_PvY-|t7N&WPjWCd-vU%jq z%9LlcrZiaT+L3c5FMh+ZZ*G5G2>!%zPqUC%w4@Kql>}Hfgi>Vvdn7AV6l(18xuB`kxc`%tG%;N zgkZZnn?kdoL5@-!2>iZ$z*cf=#{lTeJ9Zs#B#Bj%n+z-&tZ!So*Fk-2;U1m(&mlZ@ zaY>ytr4HZ{;KCNwz8oJb=GP9JNyajj8UbdRYWik{M%@%U1CK^0``+=PPUl~@*7dT( zjJW$)nluj5#GERyRk<9*NlAxZJGm+G=bkcO937ZY{_%%KpgB-1kuyR+$nr z8s3BjT)$Y_G0WQZG?D|dDZmvR;tWA%?KQ7Z<45Z0;mLIzuVGd1B$OGo_H$-*dtUNH z9dZSYRx(?@y3QnM{#c$p=y0n+`gMeiRHNyJvIL)AbqUz`sZrq{w{(x#WbIq+dIGJq z{90H!7G1oGlUatMN)b|q3id+j`W*V5YLA@W7~*=(rtMw*hmA7~;!Du-_C`~lV+A7N zzn)KQ^^A6bA|7e(eckg7Ir#Q7bna?|iN4KCIJ3aa?EVycne9DG@5Yq)iKfORSAQe9 zV@v6hMTg0X|7Nv=$9hKG%;5}-vVNLM5wdUIS#VC8EEF@T<)y33ES>1vMaS$3>^)Qm zTK3_OE}H7s2R4I_$=h2km$Vl~-XM9dg$*7n%nwH?D{rZY-6sY3JbnbKQsAH~>@&8X zc-IM=sO#d24ObJfX)CF)>D=$!32xorE*(QUJs#GPDO(}&0%_y@5%>XNMVi9 zz{U2Z$QFreV@(Y$?*evCXwhqz z(MN7WY!{Y_yr=0Yso=`cI5)lT0)uUm0!?I#it=VP$fn27{YdW1;b8sU`_~05yF;^P zlR;!~HiX0nm$ygR(y2kK8=w9Q0V9DWrAV4w5!$H7+(Gstu2G;jgv}#nF+l5}z&vuF zJ(=o|Xw4eehjS$A+YJ_(AaRNGa3ir6GCZVmg>nIIvllT4U)s^@`Ia+STfsa%yd>s9 zY8dpZcN|zt6!z4^OXK3Tx^O)LJ!Vp+udGC}Jk)({7u)-I)8st&vTE=Pf>l4%u>)%r zycP#htrm8RtNfVimDN-O-{~tA8X1n085-yfe+e2zE~_(mLUBZ32U+;5kl<8%H%N`7J2u_F)F7b?$DO?qbI!}dk$$Vf?C zzbyVO!$nYw(lv~o=mWT(#_R+jVw;+=w3^z>J-5k=DNTX9!Th|BqI=AK8k$z-dy%t! zc9vR!Cn4Ekx_Yyb+$K+6i*e|Q>jFcp0!i0mduTbK@)C=Xi+JR5*F3_2Ke1#-Ju}~u7x@+MDW8?3lwL1l}&y-NN>p*FsV0*2r zmGaKQ%({PF`@x|{U^+nr!g>Ie`fB8l<<~5E?Ge<1i1wrSu5aKvPyT{bL9wFiO+yP& z+yMS&JO!Z-D{j-BEuU40r7o@^y#eQhvl3agnH#}~Ec1`haNbRc>C?E+f3iytT5M89QW9XUiXx|7leXo=Djy`_cX6VI~8 zd{>LR+JjkK5{=DFJ-!p?d*2;#LGXYR6dJk;D6w=(B-Q;`1JM)@C%m{jHPo6abI=jGXM|dEL6CG4(G%BFI&LZHyAF=0)9--ss5Tu0G^UAB4Kl+?~}=h->LtlM2`?E!1xR``0UJ$ znz{B=l#F}N2H0i<>~&O(Msg^~BPOaKYxx|IU+i#Ts+6qz0g>YBt}R_8SM`+8iDnSO zs+?tl#?h;5o<0M^sr`8e5itgU;{`uKGWbHZvUzpRGqVIh;?>+C)~g;a?}ch?m`sP4 zxIAd#*$kDeOc1YFUN3tFIyrz|28X^sSBRiB4!zZcf{i7vxvE3X)pLW2Ub!{&=<)+Oxw8ZtnbfXv^e3b4}IU zpc3H(@focWQ@JfZnDz&N4~xtjZm>5gJ=aA|I1H4>Fft+gZk~BCTYqz|)fkR8xb6vL zEvoB!23lylPr=HXgEPv;vSOvItQH3ZwnZN^S`Li&u&ej823NS;3Ge~>NrDyhlQjSJ zUg1&8{Jt18i`jGId0xA`0rjhBNOceP3|94r^@Sc+`+=qi7$I(t**Y%u0H!@u_Og1YkQZ5QS-lrz~%g3=tt0gT# zKhIE|7uOd;K#hoa)ch`3xIOPPq(YW0r`Db{r&1qeSFjpWfEul3p7Z4d&Zn1xhW{Yd zvkY{H8R5)AQDT%??p>9~!#B`Ka;vSxgXWKgzZpSJDS&P0)=A3|ig2lDV)BHBwT48R zQ+*R0e8_c=8a-s)=sA?9Ed+7_?=&fvJ|DyYD6d1#XYjP%9gi&_^PUXY4OHM!lwO(3 zvaq0eKKk#0c3cU5&<247-4~oR{4QGTm6uQ}cSx@mT>|o!u8KzNWGMy+y9BF~$wM+t zmv(4nWgrK`BH9$9hOm0KM~od1xm&?X=<0pU1@3719LPq3`Co{s;*C;QXtec2YHD9D z_iCxERy{my27GR2Cr5>B12@pDtB3g4iZjo7ne~ZKZA$L5=7bz0cO1u+t;N%I)mHkS ze+IL(ZDXzlx##lsguCM7%LAOVg)r4er1J(3|9qUs1VA5;Ow zU4BfS=uI}NFN(StZ{3ggV+}lqSo9VLBNUW>&p$Z`WL4m4;U`_;02EYEiz?8m5$*$% z^6oa%*!0=lFurI={;$`O2~8I0V3B^F9+KSl`uvdCdKXgi98EE&iG?63`*ZtrXwx_- zXIzZmk%Qh(J)XK~Mn7L|qA#y{k3s#qCTbOgK6W83NMEph&uTcCWR*T9yCzw0dOiyRn;Hv?T z;oV&$MX}2{u&l~bD9TuhTY~J}0Kk~NgNr276QIOKp|e=T`Lpn|1ih}>zV%6odzvus1XLml3Cq1i?6@>R0Mt4} z>8!UKzoik^-~7P!)+I?UZf}n^;~fHVz$Y@4on-SMdD17$CUBe3SnEA80F6@!Z|XAy z_fDykxzXI{3UW|A^EzR$rrH86X+zrF$@zBAmJ1{=wU<9Y6-$Lz%bhQu4V#i{A$gnY zy1zLP!&6b!L70^Odj-i3D~mmobvFyplRhCt&C5eKEV^WZE|&Y-S>{_8ODLPa^ngf% z_k}cmj^qXDuNfOSg6=&W0iW_)vUc=z2tYO71{N|Q>W655pt78=uMa>?9d(LesO#1#>I)A%BP0 z*#aXSREJ}R(@F_xjqUwtn3xh`ZxTKslOL+82Ze&G_p3pBqt?Tp?GZ%ud4&?6J5ci@ zjRf3#`4?mRvd@(Lh{V`orp+1+uJl*J0315Fl1fwoJyeAH1t2=5!t{Jj&CaLePzXa+ zS`yFu;RGXClA`70SqiPm`N%Hk<*O|4TL+$=p3of2TnG+7o|YtOv*Bm(Rvq zl3Qj~0HgM|-U_G1!~4N^Xib^k!JK0Y7U}g0qUR$KrwTKdApo4v>`q0EGky*LDScf{ zWlrKvu=oM`j{F(|cqG4EH3SBmMrUA#oArXqxh0L)fLh1xf4aI9tSonXtFo3^SS~B` z+^O5|qjzUg25K*QBV>4%?aT!E-T-Lq5a^+rZg4>+y%|2w2yDi)!hW`9cc0abr$qbIYa7( z06vT4fSZC-?xrV7ee?$u;wWItu6z>B-41=1hTzhV0Xq@k`a&9R&NVc1iJNnS{-k~+ zpw~U&NS=P|E7Wdz(aoyd(@vyd*K(q;gI(Ea6v7@uwZv^_bZb|7g!izCM7p&`~hxg^vMwIV7Mh^)}W^XhR@9E~+&tGHHU z&`>u1Z81>1vr-B}K|dI{Ve*~^D1}>ontkYZ8HtG)Ojj9!kceaRbwPrgj?m(BazQ`? zy+jO?+@vVKG7xzG0M`SToNMB`>av=VsjL6c1F(LXr!Cf+3?NwoPAd#3x!0dW99h3Z zkHXz&_mcJ@jjyg#LSrROfxz@15?Tl=*+5%M$g-4w;)Rv5gV;2aCtmP#REq9GO-!IM zFsI;Q)5IH%k9z>eoEO@xp$fxQ-GYFTE7Y8U0j?*|&p3wjY&)ZXM~j`w4m)z{=<17| z>>EMdA^}umYeL&^7Sd%HP!Rk<)h|qUcyq3sCHzjVfUT-BtGN7JKO3o}*lYsvtT!vP zkUbRYX*m{N$uUGY4XW)ogzo%+49k-ERNw2vJ+=(69lS{g@)mISi1R7&qbF60ve zFtA&+H$rPlg@r1wqsugYc5fhUH;cos6>#UgSgzvc+<5i5MpFPc5yP9VcXI$Vq&anZ z<^W;Nl96;wd0dY2`P*ayw~X^k({r%`RoyTB(7AHi7HX0g6xgz^z3`qEB5dzvhlgh~ zusT=hf`$rA#Xt0%YI=6OMEm&pOlOdo50?Hn=gOJGU*9&oAZJkLT#PXnfKqJVT0+%q zw@3;BbJu6rx62|Kv87$R*QcV<^X zI%-uJbO)R(8!Vq>@`=93w{GPzmT@Eig-w<`kH(&??l&LJ{sR%v&eKD)MU3C@)b!p{ zz)%I}s2fnTX10K*EfdP{TH=O|0X@*m(N-=eMq1T>;rPE|&v) z2*L3 zyLT7bIU&v`71i{h>61!`7@1mq>;%CZq3QieVFl)u{Sz#=I#mFBwzY#fminzPeCWJF zTYoS+2aHlD6A9wTQc=B9qKSYo#5Mq0xe)gjVzxpYVsIq^h`ZQ!GNEZS-weEEX7AvG zK6nUU0Id10>o3ivL{YJ)vWeXkQ+|K^Rs(dnKQXLRnZ`{F7*eZfV?K+{c+MN2ff#D< z9)KkuvIaq~&4uR3m26$ai_y#%&%Yc9Yz%l@K*8fgmU-~OSINZ8))j2wHP`0_F0sfMAI*YNqy90DnCl))Z*Dh*+qS8RI zN;#tfrJev$mJc}5DJM^L1Vuem9+O9&GVLeiO8`MAeE@xX{=ec~TfZf+_d!EPP(68r zs?cEs!oh<9(l6zY)er<^cFLA3mETgC5K7{3teGAQ$QP3C< zJklx@hy6y`UI%;}0f-O&7}9|K#z0WLj)FL$^FS>Jz?{s8*~@uChsq}}h3)?@7o+lc zFi{Pys~78CDxEEPpkrQFCX`lm3WjtuiW%b&=y03Tco7il;*4qjrz^GM$y!Ji00SwR zd1JDFrn%$r0z{SmzaOUG7>bz{GbRBI19FBf0gkgWN5i5Sc#Rou3&Q0D;z)6MqYkek)=? z%;(;5$$cJ}u>f0ea<;*C>cy9&MVcGnZ~BIuj7QT8h^GcY;QMI6SB%>{Qac%0mXjxK z+Cu-`-f}%B8`rktn@M5Tmi9w#JKAdTljr;rb3j#(itiZKmD;yuCmLvvC4WEG=y z0tzw%)Dq+|uwMdD3*^kCn<1@3=FO84(*}8(|AaAAz7sRqZLL1_$4cppCl*YQAKfmh zf(V)jaLd8zBogVjx++&Y!xHEOsC=8Dk%lCKz!C`{u=9Y(+*2_EkzHOc4uG~h-}%m; z2fmT9vdiK=_WZrz15}(Hf@pEe)xDFLMsqs@JcN3Ma#j_$5yYB}jClZC5S4!FByBy0wA)LNrA_yoF>y}Y`46kdcrmgTk| z)sE_*NZnxh3k&wFCIA%%%NQEcy`3W_$2+`dpj|&C_qBr7LS?M%hNk<2wmuKAKzOw^ zWaIKEyr6=)6=hgB2Q*8(QG>5Wvc`pNR|F5rm73>f1G#d0l2aTgLy9$EFCYn>e0G}{ z*B!YzCmFUFhxfxTOX4RJfV0-4Bel!M2yZ_aaW3m;*^&TNR~s7>w?ryy$RZC|ntz>q z&42vVkO`E8j`e+})sTQOwB)h>@mt6ue1dfc0Gxrb2jvo;_;TZkJK@ZTzDD#kC@ zxXEmoHl~rgW>rGGn|LYHs5Mr7<53_ z5RUEROY28*A4|)(1LArMGm?7EirukewM2^@Iq?8&jDvW6)aT?NYBoO(_Z2vK;?Nv7 z%#5ohd7lNgzW=RYQ(^EB{220P0~%g5?acsWK~o<^!3XbB(Xx80nq zaUFt3=G|#SgG^B|MXGWKALZIOk~HOAi}ATFi%zgQ+zb@Qpme ze7Y?WeV&HX`y1Ogx#OKioLtA0h)B{6k)&B{pIfhAZ|bV~_f(v0-y{flsHmmL$YXL(@nMY2tXR3q*X>r@%nVCr_6vyas?70Gkc+0q zRtiPqT9a{MFXi=S+Mgn1Mpqdd`c@LVpJq>7YJ7CJo!;5>PK7poDVXn6gKzGhAk^*- z_DRSIDbOAcRDRrz9Rf$@xC+WC( zaqlk71RZthikU#^V}Ep{p7DBlg&e9grzOroJr8|B8?7CFPP19}F)y5t!2WRj-GBzd zhiO>daqQ)LAoan z;VP6JZ@9Wo$ljCY*q)r!ne4przE!@!x#%3t)woc;(uZ@Nd@)xMEhzq_*atCUELne| zYy@zB%G@8f>z>jRR%mMr$Bo^~&7V}aoR((H46DF=8_%-6C443)H&>4rW4Xn|hz|@( zZ4CPu-RZ`>dTBY~=Dh*&`tDTEUX67MEzcF>3Q?^)++XKk>}A6oA9HB^VUn9=FgkUH z{;ME(&YaUMeFA@*?`EpWB{ajEo37^g@46NC-FI;)||FDF^PP zv+b)%ptaBf=nLrLAX4_U5&6Rvnv}OHBXzc{O|i8N*33I*JU3WwKKl7*l8uTP_ca!e zYGc^(&J7`<2^|}UQ^@xf7@oV=@%t)@umDe=OE@ucTQ+K_+eto^=$Ex+AR6YJ|)7M8TF&JlX+m&bDf`EjI>Tdca zQB$8*?Wet=SL|WWSLs~in)5!wtMWg-2s-NTCDrapcvbbSq;ojV#$5eIw*CqgkrkK~}4I>hGl_HZC10ZFN+U#GCs2s8x_ZYSuF| z<3r15bR#mt8H``HuYXjN7O&A-Q+M;sx`>>LSu3;r`6uHy_s;K0iXZ(-{%jA|lZu)< z@CvI(eR`(b^UiKGe(tFXm|&kq^k|s?O9Em;ffR6;^6B2Vyu4$x`}eYULoRg*>bwYgu>DJD7+Lc5_y@!9-F(8_GdawrJz4&uHqW?fgqvZw^p;YV!-{KQpAD>z% zaZdFKBXuvkS};hbaN;?OZCIn zT~0%Z@WUl{@SR-u*dJl_OZScPEiqLQC>)KxjV?8Gg-`7(BwZ4HdH2!%2Lv(O#G~gn zG`tQ>y}i6)<(M0_YX(Ul0$)u;UCIGpK|b!LDOJbM*jNoMRQo!C8F}h{-E8)U*O5F| z@<>v5+l6oD%vhq@b#Eijd0g)7wG>(1J znayXK*L_x`R%&5a&_xyOXe~y?t1|u1`J;Y(ie6DF5V-s4RGj73=$|)WkFV=+&0O@v z%NMy`M;VAB*w@{nhSd5f)Hy`S2y<=ty=qh1?DGsDG`;wqvmUKrgg4RBw+4wdp<&YJ#WG? zTG}!p)<8M8LGp_D=zaU+qIo!@E{zeia}0kBrT_QLUyRrrPADssLDPeDDeF>QSi7}|iN?`gnS6$F7ceY2 zEWcO8v|yU67-{!tL0#sxWwmGy!Rph>t6nK#y7@nPunIRn6F43mkvAW>q;cLYOGp~0 z4JOhb%)R$|p?(3@U_~b)5+3QdZmZXx8zsy};~?~b24Obk;wd~U6v%j6=iP{xA8$@w zi7qVL?tp=uQ&M-oNZIp6CJLoa9WOiLIl9BWoYx|*wuBv3L(^Q_FJ3INGmQ8$W9j_( z2`Y|816frvA+O@;4^tS~JM7(39#1#ToydMC5QqsHok4p%RIzq+j@_9P$KCXGl=Dma zv2NlpI8j}vlFtgu3;BKC%U2MTCt*4UQ$oV^|Mf`01soMD< zEcsNtC}!IIN^h9$UiiwNm%z|a-5u%W;ylh%S$O9way@+D^aGa^&X+p}oN{%^VOQ?k z(NnzQzJEk>k`YN@n4afwSUDs#DplpvyQX)JZa?(2t^1rO9j1t6sO@aoEcsApO5y_( z@u2~#oaHV!B!k?6DeA!_^YK42IytBK6dKeQi0p7v63t$=Q+#G9ceDrkQQsnx>%?&Sc-J)&h@s<4o zk?omw)kQp!wkvGDoluED(0!moTo|119DBn_XW^ibML7fGUHtl9<7wpV-~aHqxcM!0 zzP)`#RjRO!&qsQwQ(7h+X0pb2O9%W+f7E{=mM?GfQkO${hAI~uYltl6;&43$^Bkiou)K==Sz7YxK^Qm zwbvttq<`@F*g&ZE*#qXPq$oLg;UGln$b8xK_pTT>CBM!Cu5G)) z@BUIwihIbB)bhZR;>n3m6``Z93KI+rD?=59{wq_BcZ;kf4w_~B7Kiam8J@>4*QK^g zg*?NO?L1c*qW!`jf&2j#RRnm!AbCS7|Mcn7$V=!?J{YFcg~m2Ly~@ORTkntTXQbT~ z-b<#3oo|2dk?x4WsALvg9t*2d9 zy*nzrf|R2yEwno9DDuL^OH}Zc`S!o-B-NOUP)fv1lX{n0%(1%x1=3J)~uoLngQi`O#*?&Neox zHXgSNY?B#xeVcr}Ryjr5h%rI6B>n^JN8Ohr2d9%yDR=7g?XBQ0ltt~rH!?pHLot00 z7oH2EB|c|-KaG8`r|UtA_>K`8{|e=csC53Dw!GY0@F~jM@4a01Z-sqde^_bZZ5e$wH(l4`*39{&rIK_?_>4KVxxn6G__Mz zN5$sGxsG3sd`&@4r41N-*@pMSGoO#F+x|J2Nv*Kk$fNO)NmY39kQ!~Eh>uEA+7%w< zsCuW2qRW25oOW}2GebD?8t<6Vp83-<2-~FS^7}KsRw#QI{Cy=Y*P5_;UC#~k{flK* z*JmDTL|VK|sk8>QzLB#OXVcc^z~Ussh}FRGK!Athl8i)pafSEM#@yGs8y3|iK6QPc zj7K^8O;qb?tDGM!k_t}S?Y)1uFvFsPSB&SC$UAj!;Q5s2qx8VZ4TZg(p|f4fU*&dd zDiBH}FD&A#i>&rS7ju%zKO-3fr_s4kkb5ofzpz8hKtWl%MC^i6oQeJwWn1bA=Mh&# z)+s(zQ^w;zvY)K@WJr}Z`LA#P+|KSx0-P@{r!<~(3SrB+Cwul9dco3xAHl{ zpZbeif%CJ)8mk2X^&ZcyM7VE1W{5XgsM*oytY}MA`QV`NkB@hVBlPaRoBVmQ!8|=P zf{p6@R~PZM(;>`UdQg;~_gD5?B~<0qXaKhdIir-dq{4IVOav=$#j|g}{A;(e?!DYW zzO%Il9n=l8HWEtLtQT=I-lj=sFYzWWQ<$A6gtk)*e~%?Ml9iwL_U-o;VLnf30z${XMt z9N!AZTItrD3s$8oIWP(x<`9D>5|v38ZU=wegohf=Bw(5Y#mZFAoSH1`s3YF`6IlYa@=EBTl7VXLRYauK&}b=qUW#w3t$k z)fh}GmFZxl{`dXkbWR#pD5~hciQqO$3C<+V9LyOEg?__VKiu7#e>x+X`dT+ZwqyBq z^h(IG+jP^%?_x33onWeVr|QVij*JwNF4HFEuLikM zm+tsl_XM(ub}~TU{+i^A`wkBS3LdU!qho~E?tbOmoqAAkl-}qc?f9qe6?0XkOXbkb zE>OMweR_=#f4JunCvLkzE?{FkL*<@sI%BMtjA$yNwhsZo>*n5VM?45DQ z;qbezqvv_P&-45I;}hpx_kCa2d%WJS_v^ZD%}-XioioX^SwGfj`yN+D_S0$c=*osq z3^7!xfp9YDY5|de3>>ydPJMdlyy?#h&%I>ie0?d z;lZyc9utp-_~^P{EGItBCU!tH8IbfBRW=EEX_{fwz={#@>1ALyL1;=`5p!x&vDWn_ z3{BCmHy*MRVcip}X`v~9snl)1y3e~>J}p!8(#~nzzV-q=9P7uw#`1KRw>l?G-tkVn z?QXP7b4U8GdZ&-pOmYOF#lrrQiG-m8Ud9Hs#x*m+KMohud9obbd2?}jPl^%UvKc!RBHb$!|7S1<{f<|cINtTrB87y>xrO2MKi(^@AP5Ck z7-ig0qhGSy_ukj_s+N3>OBThsU!>mn0ODcV$?cJLKH{mg(J@Y?Rse8&!Epjy zMk^*mPYX#Xr3$Yq5`>Do+D}%T4h2!in1AI-q_|jZTbw1yo0M_khM$3~8v<@=)~83D zKH*=$voP?t=+As2WF;3m<*T_~!je3v#ubUm++PUj^+(qzyU~bR&)r;GRSlYr!4N{E zSeKE`^HE&@+*(+;<~c6CpRf{;oR>bXE#%I1TTo1HXpdHKdU|fk?p~zf*7PO8t<2JZ zo2y(Cxq&u*uM=@J&J<{VP-^5QswLCTew?Cb&iwU!C653Gy(VRO5Jzc*-GrwCqP&XR zHSJNjMbHlu5YzRzHXQolyMj50-e@eN9lF!27`{*#A3*j{EGGn|2(b# z$^$|!pF^)pdnHC)Afx8i%wBkYN-l9ZqCHw*cj2kFm%WOVx>yRTMsCm5BMBeiBd;7s zV@Wod^VjVr{qOnhEpZCzou>xuk3Ts=FpLr$Y~S!@Pw0-&IGIh-qNi zmna@whJ}UXybOgf@LPUOBO}f*3Llf}El5+sgiEIFCwQaN{m_p~o&eB87-a8G8Uew#DvR3i0zG2 zgjBFHir-pe1A6CJq^isJ{{}M3zfqA%G?7WGy~pnR2z~p+SZ=d~gk5PU<$!dAeCA2H zBcEAE8f4o*fJViI;@(ro^P(2^7fD>EO%wE$12u7f%SBjO7!R+-@`f=CtI)Etb5`yn80iUdjkD`wYzsrc9 zQ?X+gX%UPI=VojQVQCBv|NUzeSMyI2(e{r!ws|wV3aiX9SGbp=nJF%DdvPhvUB%BQ zz58D~fBN|pIYvHn7uBBv6JB>wrTee*am2m87eBlty6)Rs#Pen)pm)nQT0~O&%=(D? zZfk6PbLZOuS+*^Cd<<=&`Ri&)QMi>G-%};-GSWO6ZhW)((LaI~?baq4@8sqnHle2_ zziUl&y}r}}O+v|}6!Y2J9CyMKyEtWOb(p;H5uLl~km$F%;KK^!w@|iT} zzh22W&fOS#J^#WuD5!eXy6*BXg)+qG-YxWZuO1is+M!s2JSmqynbjNUt+&sz*}FEN z)SE2Ms7b?g*8Pj;F_==LKc*`fRVi6{_}PPVZ#|OJbo{w+d!)3yvEuU9=Y&%=B^d{_ zhBM*uUt9umit++_!>$nzO|w3lA*BYd$_=F(QkJj>F+t*%?Kih5oXKmFbw(b$e~xRL zbGMKBZvVR&h-0_!V0Hov1zIv6i&x5_(@ zi9^?ZC%G<$bE}^S^3bDV*DGrZJzZUSKZ~u390oPr*5hK}==8%1tEgk{zv##H2PCQl zA%3+0vQ$)0a1IWY>!PiSh7u1oKn(!{MNI`b;RuGrY5Y zuPdo9dYZqnK3#pM@BnH*0=gphzk#0!Gj{FEt0C`mOhn%c@2zCKyka@iveDm{YpEml zH8W+mUB`X-=WAAC_s*G8J&#rT-T)0-EC+Ty#^Pp6Hlu9QSg(BV!Ki^$@NUkRHl?M5RnvZzzn}6v#lkB^#o=TC! z>n_~4a-MK8EsE$ms?39KHGCz}3ZyXHI~BAnQbRd=0kn8M(}wOo@3=1e00P4vivKV7r-{8ay49Ci zV11qS_a!4Wjs&qFwZ-NeIEL~UBs3x%Xdk;OlCK8Bl_dsuo(9Cf(M5h*&;sZEP;xt! zy*|nDHpAPizNKb7$He7>ANd4tKc1wTx%oFP5i#xudwgl@wG*P>{4$$!sku0id3(C_ zFg;$@l9Fmx;BedtcoBuz$J`Da@>%?w`2WIl1*p1-Kk05@Hqo+FyK-FPyWda@ApL+I z2te{O$16JY>gxBr;wzrpH2tsc5g@zn<{yUCD96=_@(%87k9oTWWE+eb=3tDxXn5qoSYC7Zc(^m^@v@S_38U!ey8{9*s-Emc_^-H9rjmkA$z zpMC4g{;Pw2roT1XzgdvhigjZXi8K2pRWe2+W|Ss7)ciQ|7v|*k?>8bzx?EbX>}7c8 zU09&e%_tV57V?v`6fYWelJP@l82N3lFmI*~>buh0!dgz2j2+aAN((3e9zzEmqLy+O zQm)BX((qil;7W4MfU{4;OF#`g^S}KI9Vn%eH0>I3oTz1f0V7wZ~|>HSuKg2lvQiAAVpo*von4Nuy|#?aB-(dxH# zOtt^T32t^f-lXjJR_1J1L05D^7hTU=j;tLM;E*oWHS1jC3`hG-w4M&_8r6G!jZSMl zM%Z`AtI?N#IP~^m7}SeF$?JS8#AoVcKb)Y*t-m$ClDnUh+0gZVZa3OX)%yfdS8_W~ zw}<20_`}=SVUv?ZvoYolf!J)Ubs(nBF@G{`et0ErKV?tG5|c;YOF?dEL&$2YU@ie$togG zpoeU&tSzA%LDr~hoQU16q>dt|qv?$o4Zq=A+g{HwzMFn_j9xlljY#lua%rgD#GA zd-v^WEM1)QX65qF?$&-wm#g8di~QDR4PD$`%bAR2(*cG#Y8tbXpfWV3VbN?iOJtrD zxvk#djr@v@uiEo)Mk<&;6fo-#vjV9jreUR-3-aP35e zOc!O3G%OQr#fAEi4XQD*T1<0Dl#sR)Cl$){a73R0?KP}&)_I*hO8-_o{&xSlaokDi zzkec=uI}-!c~gFy^S9F3+C*XO6D$~q<6)>O}Mv@IXy@2{KHAhgJ0 zdwSi!0_+yQ>Gf;tbO`+7P0sygPWV5PWT(7?krUtb56!(&X57b^U-%xS8VD}v^Hd*^ znk{|ue-q)(5!o$qdvigAAxQ1r3!ZmGPsHxCIgPEaYI;v0k7V3COL;?(7I^;RCM)RG zp>lX&{U@m}*zcj|Mmx&jP2%vzaA-PQI`}WS_)*c4ghuFTkEpWQ z6tQxadcqH5mh!%%dDWTyQ98Oa<;qBN+E^}!(rDb#6F3phXLkTQ_GU@ z6-)`HjuBU@bMtUJFv3XA{i~5Cwx{;O=OOw5VF>b59@FGIOaK{4vW?!*`kPULGQWAE zew(3OOaH~OFX8zsA~nitN#e!Lrq+UDnqXhlJL?hi31o29`6821g{b$ZIzu05Hl~x0 z$xMvcOXNp8b5swEHtcHdeQ*#e=?~M_8*0Ud4y}I&?N?N`3 zjlmn5?Ulb2ZT3!ys3@D=-;HsypOiQ6-iR;T|1;~PC)ZYeYPFD-Tu^vS&ljEI<}Ytp z`|857DOc6@m;4ni66GFsD^xYu(b@7=1a6{R~NDT+ATzlP^S zaUZRE8E_C7B3K!%mY;>qZAgzeo7HkM=3=je%+ckJU+G)#S$`nTei#uO|G;IuW+!sW zSAIDla{tHWcfAtG{xcnLL;N`<1xs_rXwPt_!#T?(y6wnYs6K_!^W+rVfmQG#hNYgmg+?scy zvoYEj?TIctFsruyu(GseA47FZ!16acsVIlC&WQUb;tskD-oTeTG}gqH%kqN{`o}_u zT#CjIb3(7XB-WK`%w&_wg47qU;aI!9aykB4R$jELw^~OucDi5sqzX!tX&rgBcW`>8 z&mB%e&(N{OzOq^GO|CIWYP$^9-!Q1EW#?4lOiOU!97V<{G1i~c_sxIW3~}%m#Ts(= zaTr&x)PiSR_%1Hw;Zt&9kyq2ptzAG%WT3>^s|;O67Ha4(~nV`VGc@ zn;h%~P4j8w)jnWDW)IQ5s@XGT&xj(6Cgz59wVsU^xS-|V-&NA_tUo*_$w;Qrr_Ev5!t>)mrGe zIzHK*gmNRyYg(m1ctL8Zw`Lxl09%J^2L@ zbv@ejMd9d9LLJ)qg?LrtfDjJbv9H?hcSxF=n47CkBc#Q7eQzI){xKeP<-SzkbL?2*88#l zD}jtgv^~(k5he>e-@8SUYLOFCIKJ^xbm=I?`a_{{iIkIZ>y;d)KF7_{w-UC5{>Y1_ zUjyFrWE?%by}*0V@+@leX`nah@YW?I^Xn*;%%{>h|C|muT>ju~{-ro3hdf`|Nar@S z4Pp4LWIpLLbEJ2ip?%SN8kHCdeFkM{vkWM0lw1ShZ!fz8+ZpkCl-Wvxm5C_ObYOj$ zl_%LHmWr#U)!CsPM=7T;nf8XMEBfs=fH-M_8&%U0F3!wD^x?StRMDKl*LApci$#vy zk~d((4$*o{&AOb-4;|qxpc|CBK~Ak1FTRo2@s@C2G?R{I>&Qb(MnX8GjmW7iuxm-6 ziBdv8qTgR_OluZ5wCW)}v1e9Ivhyvo?c^E4*8|?qfruT1ScYTY(3LbNLb0c>5(>1g zeMxPZU=*1xSfhJaT?rEf4ZXrZ{qVs(LSJgM*R(u#qwtWGKI^%(<+Auoq_NO~2kXU; zZu^O4Hp{kNqVL+~Y8-a1+-OA8)&C}69N{z02~W5km*iW$#s+ujAu^6Jh*_l7?DS)B zRq;UNq*OQ^dOPeD{XM}L>x`2!jM#`?^Y#UK77-MC=5A#J>#|!Ns{P22f5)pD6V1ar zOu~-Zl`hpd)wKMnmw-{CsQn_eyMVxByE_2}+#BEj$L#sd%PZ&RIP_Sq1gZ0KMExt~ z(CYY}TkN3M7A`)zeubV=*)i|R=wzvU*WDBnPdnQo4$!=pFwu)b#zwXAYc?{H%fP|^ zmG|rv%um~mADL+F31U9tKHZ{WXRXb+*K{GpD#aQXW>70Rv~FOc$5FfZyreCrSYM^R z>y}2m;?ggF$EHh8-EY>BEs2T715#PBd7pX*ugop2+=P=-eJt&Wyv6#k+;iQ_kY6n( z%K5p#`vcrJ_u%~>BRNcEE-~t{gem+*_Zw%YlT^~*2X+tp4kAEzcV@}XFWK(u_j*?Q zpH^MS5(6WTa_bQ(wU}gx`RD~Iyi4-{6q4Z7t5A@Dk1{eduz00xt8_dyl6C8R?S>DOQn|sUxfS1M5z%#Gx?*Is3v39dwUV2yT{Sf9l;0p(FK-z;%ZZZf|i? z^C`#WQ|WMzbig&YXgkG{d1%bAL$*VLSPaEKjG^uVX68GhD9ft-x~m zivA#TB3bvdd4vOY$Y=#AMLaToxb8_?6w_QZEM0jZGPf~o%k5pbsH4=n(M|vJ8y%j9)qoW-Hiw=+ETC5-q5?{cSELXWsjhc?Wcznz5az4 z*2I2@o>~xOb#(dt-3XWBk|)_`S~6*=7j>2z-n1j0CIqq$iYsHJ_GK?S%T_-H@#O86 zM*8VZjA8Q+mcr=bAG8k;?0AdsJNI86m+0*;@GB0ym#=<9`<|NE$q^Y$A}03(dLT6p zE@$Zb;dadYqvixIobqv2OjU!wsgz&nTymDkDt`JqD0NLET?mGXSR}pzE0a zC| zRusl?7|RRC4=ui0E-&-0$DRAa$D+K-|v5tBzzK7jzhY&ID9plBs1u9ta7ygV2o zo~kZ!ixmX-d@5iCl56*wN`N|U+Ly{@@*b;TmQsuCvb6bsq9;I^ix)B{ZE;;%kI{;IsD^)#FC$sK`Me_A zy+rj16Q1uYpNQ1`MG#(`?2$;Oo?xlRK;>5Sw%G`+9+#(;y@Z^*^bD5qX{&hHBB_UZ zq`oTOp0UG4)(L{yOwRcR8$E^+2QRg__nIeeke{XG{UeGK1kiY~KNIbFHQ)(wXzb2l z!~&vJ+IMHrJwQ4pml5yC700}{!uJg=;xf#qpfdBxmpPhFsp3^Pvo08P)_mLijAd3S zFbARfibLwCG!s8wZ;wk}ZY8X|1i{CQ+WxSWswJZEWPQTLPFNfflvB&Lr8Cl6I zG_q&-R}HzwNPP0RR`T6Gwl^7Z9lK6J)t)N_%4)NAH|7%X1orf(Q%$XT&!$-z2_?0B z6T~)`#GdX8Ite~w)czcP*b1IMV90hCuO;_00Hm@XG(n4VD@NJMt*B3tHT`HN*6+^U zmj3p7I|P&XG&gJ;nZ)b(oaF4{r=Ea~8eVV2D`q1)`9@^qUc-p`{glgK&;`lk7}@h4 ziBKSTUb#}xPa!QzA) z5b{iqFH@)Q1(fIR;bLs${AsNbDOP2xj-OlG(+g6ZhDIcaQB9AZ3NdJ;IX4Zc30gsI z@I;T{)K(BQsMg#jp9lUrFkmW3;4Pd&iNMq7;O9AC6K!)+8i~P2b6G!XXa@oQ zi9*gMVaa%5;Q1yJ@zl^8 zh~$JeZaom%%WTGMg#&=IXih%c?ex1>GvmsqC6nT@f8!}}{X>AIt)I_>3$+OS|9Z%@ za?NXZ)CE#Vss;DHFYmU3?B8z_PecazRZ~#x0nGwG1@9l9Hue)O)*w8sa&Rq&D#t_# z*&e8Fg1~dP`yx$biO07?679)vtUz)lpcyaUc!CLBEv+1nF?+f|(5T_2_+GAevUak6 zL|Q_tMuCV6QqEP7Xs@CJA@y+HO$A`!V_@p@cJ>7KQtbbzHJd=c^s83g73c`s7(Psi}f?3DACng17BUM6Akq@w|$;T9%K=&9*nv6G=OY4o~u#U(fK)DtMlFJ z7wm_cuPk8nNZS_Jh8I#Ka23xtW=q^DjtldCuqaPHqrvp+>iD0xp0PAC*kMb1l5+?G zsv(DpuB((1X8C?dJHUwCpPXJ_H@LA5vgpJ(RjE5!HP3#2 z*5IAhGA-_%1c&`2By;{Za<(7=K+9ccjUcBc+TFc2$+YHdnHaku8Kvje@iVxlkQ$M; zrE&BC=38r7${*ezIhnC2=i>A%I9I~S$4c{fIgAk5cU+2rD3-`qqkF2rkbc>{n7iov z0L{!&*9L`Y$r}(EI*|xTP7f2@mCd1MuC|mfV;yh54|JZ&cgPC;-kuwtQYwpO zWvVh6RvP(e`JwCZsW201_XVu-xYlOJlDulc$ftuFPWFvv@FY&t<`xcURGq4tfBE4ZF|`(Tm+$i>W)%vQY8~W3E;B z(w?c>o)c^LWWfS_;wEQFGsU9tuTmE(Ph`!u1ZQsL_M0oqXA-L!482mLjmj$%Vq4-F z$7csB#htwLjjct8sP6;glw5PF9p`bF5bbXh)xE^N=~Zt5Hpsi!c!u?v|2)^a{8UM8 zeZ}-vh|7l@Ow#-DipN?~8U5Z~t?|C~GuuNAeIB>EL0v#ERcpbB zAKLnbu%QDkv7){tX*9}#ujU<${VlTMsokOGDgP0jOG;ESF+Y6U$_x@`mRwA(Ryhy6(?ZvF|KjapKBH*m7eQ@TZQa>%Djg98bEw-oFyTt;o= z`Im#pq9yLy#fP1Q;+dK7ozSOQHAUb`BaV(>2DkD)b?4MC&ju#5&ES$9+GBmGfQAzS zbV&I1U-n$V?7Q5zHfS`9=SC6)aaPRL-ot`QCyg=Be~f=c@3w=zpT+}+qr|m!mK0m& ziCf>^@Kl|Kv96De>eua=Pp7~!SpV{uVTyaCTxflxhet9Ul0fvS*m!uDQ9E-;l@eXj zU1wY@zW!j`Q}7uBLh{!ABU)8zan**qIHT&4nW|0TIN3+ZA?8bY@fIDGxSu&!PpN>5 zNb2K5cAuKzZzA+U_FCnG6Pdp?ouL39rKbCS)||JQf3a}Ug8gj`l|E+N@ym?J%!I99I#=Nb7kPeQu#yD9 z#S%wuIETcx(E2~%gjiqu;CNfD+2sLr`jSP6j(|8LtN}LPpnbHC5=Z-pp`1pt2Jce0 zwcI5NoSc?E50To~1K!o=;n13gba<*wB*w&i=2pZzlO`F!!bCx&XPmM@qw6xQwHc;M zy3ptJ1slfS4OYn+@|mFNg4@5gf>G^Gd~cDjQh*iEHm8DR?9Ec|7(9NeAbu_jjNvvY z1ma-smgn-3B@7<$sE8HVn2?44dbics4Ik>2H?5qeIZ&6_-93^PSuiByG}EwJQyjGLObpy zD=Lqf;s!iaKXAVM3(LE&>4rxt-*hLWx0lP6FZW#aw7_I;cE##+km1Jx)G9eB#X#b7 z5nocXh@l{R;+Q%Gc&%5~vP5g%3u8JG47)L+Qo5kea=E9-mNeOJUwfC-aolIaoR77 zSr?b?Gc7h4JJ%)&IqMyHA1pp)!rpn{22ruF9RF8AI4zN124r&v#|}0phK6sJTE=v- z5V-;3Aj_jqwEwd2`=wTQRu@OBK3(3K=TWIS-8aC#)Q4YMzhEthV;ZRpy0kGSSxWr` zRPQ8Y#C_ME>}`Kv2EB193s!iI%Z(X#VeKS|%@cW}-6Ky7NYxpYX=`5Q=p~nZe4&+* zTCisHfC897n&~)LI2U8N-nxJG_hqwRzpal)x(Du7a}B&t1z|=vSkn01ylQEM zUfYJ#C{1BJzEF6Sq>EqkTFO~6aJtpT0J@vEdHi~`HJJ*Is^oBdcaSrZPFz6U2>Vk} z$mL0DJWL<|KnIp&zUrr;;2KL~WW)Kc?Pd+OPJgzzoi2KvT!Pa%$Lkykn4V`~xbmjS zo4YiuFm8~ zY)fm?fHg~uRsEnnDKpuCy=3UL_OjKz<>T{K3()CmaWOrk{&tMBUVn{kugGWZvq+`| z6^iQK=k{JyN2Z5B6d0d=KQG!{ZKT!=D*U*(pqzWbBY%2%SU`*!Mz^>Gly23-U6WF@ zNd%|BwI?8AVV_44T^#rBc8NaiW=i#H>{2ZP;;pgQ$Llf>~VQ*+=&mQ8i-<*bLNn6cL zOCmfk0ppwD#OyYLy3wizWwxDm&O(hPrn>NuWUsY-@~w0;c+)W$a3S>U)!78fl9}0A zKH>>VUK&K?9b{`947rea@|+p;o>|mxh~(iGtDS9^&9qp0>iS-OoZ_H}%|CztMvdDq zJD!ibj$)vPN>A&$)mq_P+~+T!Clw}Ndt>%_l>H(odaXy8mRU5w6!cVIWVg8-nV?ic zMo#|XwAMgcj%PjJ5bt9}ixJ9=mtxFI_mLEq-e7?gVmv%IlZgyBXJL+UqZ!S}EvWU< z@i{1?bvNKMDfSt}ovH>5GLL1xz#L5@c#z=x{>pjmj4^guW#M?%T}E6>usL)DaC8ZW z-m)?IT1?B}W0APOQ8AtOY@Vcgin3B${@3;0L{#TMMSgy^rsZg(Uip)*^8*Um;{HZA z8qY}x~m1DYeaxzoJAC2$PF_&Cdc0K$%O9 zY551{Z94n=Zx~vHsA6*S%F=0;n&KcaPG0i1^-KHukN}(~`u!OfiW*7tsJF=Yms2}P zWkbWvyZpk^$phLtubRbLMZXLsm`i_T%PL;nlajVWktO5;E2neawX5sn$e+BCJH5!& z{U=<7TD%jIx(kBd5o>P`)_hgj20%#1sB%LBt>);P)kq(>T8m0G6+02Kt*)#`Bn9jW z)?8+b{T#`nnof2#E~KOq8PfUo0mpeniz47wc})4q4=6w>W6hTc6Y{2PjGqS6qvs-T zfS)Z`fs&nZH|F5MZoFXDx&klX+ZqZv4Ehf)VQe;=H03TRFcFchPW%ta9#-D0IEc^H z^Z6D$yIEl|Qc0GFB6HA)B7>W{`yYL%=ex|^9V~CIOu(f>QF(viK=l0sD%OjUlqDbP zGv?;=((_u_V&<`FNdJn?qGh=ceo&IjCR3ljEI z+s`}1dYA0IXlOMDMUI799wReJTl)0ADh&DY?DB!KCv+=s3jUam4cQBxJA{vNIkGK7 z^l8jn#h6LDA;QSPVm(&ZoIwklI?Wj;Ma7s8^*uDDquOO=(nKZ+V3YD}ylaAD!iQ)1 zWtX3ldoqbukUb9kP^X-HrT#a z4D9AINAE2_D3qLY#`3`y##+t64YA@Jp@Bb^MDy=r?N-AD?qT7XL6Q~<#~CGP1L*}rsu$}ul%!4V478d&F&Zl|iCss{9WOf~-jpu1h z(OxOf)qnHcBWu*Np}VUu-;?`pPbT&sry(7~OUM+IjfqTk-J`V-85`CW;u7 zZCIo{O9S9bvblXk{Pn#*!`VhTMSSg*dLD|R5y)X|*4>XsS)cFS-icAFz1mj5+KVF_ zJdGsFy-)PoS8-<%$*3H-f0tL6*T0>_o|lr*Z`Djy$LLu zoAdf&tb;M`m5=GrDNR9_{CG+mP@t-12fa(=5+TVlBIn9rTOQ#ov+7sRm+Fi z6YWi&6@WBiDyPq-=2>+e%Ty1I=k@|g<;A{Wjo77t8yC;YiPu+In9;ZGbnK%lf z`N7PrLmTK9B;4kA?Uf$Cv3xohWOL(I%upt4Jp?%lc;vD1Tn+|Xzxp%rumBp>>)O#p zKCF=xwfHd?$DmaSk}AD? zTXTNsF5mKXTX5hFzbX}C^i@qJM&oFA25nTUGr5SJ7}8-BHaYCu_O~UvjDqHh(3?9Q z2K53MV!_5A(-uJohS_Dcx78sGa06jF3p=tgsQr%x`jv5ho6^@=q9r=!Zl>aB9u(1D zVg+CO%Z<3;g2lb`K!InH3hzsV?>Y_+=tSy96v(vY55>oGII0r0pRt(`aHZZLF-`t3 zUUqreBY8DHJ*%xlTa<^H)R-vZit>&R-vLxGTi~CY}thdT<(XcMTRMzuV_45uR!~ zHyTSA%O8__{%8!)9f%^x^QNUqlIj+fB5juQzg?lMQc$stRV}c3RzRlPOm;QXdTvKS zR(45$1G!%)X7@nQ+y20pb4SsTt&$K?w6WA=IV0cgFMB}8asC{U&`XSnJ}6(gIl$Oi zfvl?q&*diT?Vo}(Z2)F#WphOjPqX&xoBK+Dj>M&r3Gk_l8+$&-8y&%m-4|~xlV5#Z zQmL_&&-QiNP5un`z}*OW*8KUP(;^kX9@JPJ2d%K@h$he3KF@s|{!yiz>01M6RQ*UH zLKR?IpY(^%L<@P1nNSTk8{Zgo)xeVXHS)VosECAo?$fg_EQlpqR!mnfA7%B>Hk9|5 zMf54fBxzlvJ^VenTZnPo@5j}FB_gTF*0+|`?2SDV&xF?plJtLt9 z?vv)aNy%X$Y6|v(;NB_Sy?_Xa%>%DMc$S;(HC_Ua9k^m)Q+~r&zD-rDfl@;mD(vkX zx~J@fA65LCj?1+0Wm{Umi`h-U)&db2eZQG>C}Yq*U`#&^F_jb)j%`@Tq$!w_`hpxb z3#bMuK)NE*0`m|(c5xFNlQm1ZcaCo9*LQN^G48L`AQwl-#+knii0E0&obBgaf`F@EYqJ$Ix(2?hUh-d|poNqd{lC&8Ah{I6usmE~ZYg)h7 zH3C+nJqgI>$3GVF%a<}5`%`EQu1&9xO7uhaum~0?5CkLXgIH&=Iy_*1~YT5Bi?FunB9|(~9 zg5E0pa*HACF(ilAm?AOiSzwHfNBQBnsuC|5(0YHA14aigI|1qd*ihS?rI_p$xbR}E z%pp*;?!bO8m7Emc*#)eDQZ z#*~%tEMnmRS+ob*Z$WR#GNUY`worNGdLR~DdQCTvBff-&7T!Rd{6_ZD4? zTZA2v0HnEeXdpOtFQ72T?<BV7ZxS1!P%eAZXxWwL*BCnhwq|Uz~f;qZHunCA0(` z#vhN!UU;Vq~b5k7?h-#zo-`Wf^gUHyX{Da6uq%BKn;FU z7VPP|ZypUrP+$h}#ySF3RrJ%S!i+a2+4Dek4D_0OFoUJ}f}$Mw{nx4f4ze+0eo-c_ zLa@{Ipf4G_4&GZG@C0%!ksAPV8ap3Jf_~nh9oU&LI}g4Z5T1tRA*uvQCzR2ytylw~ zibOYuy=SU-0qqG<-$($wC|jP0fOacsjH(RYrs4saiY7gG0kr{MY-Ql{;rtAUh>(_( zoP#79la4sS~FGs^u(s>LqjkM%ksS1+;GZV0poaxlu$^TI_q-j}wR zqvU?DyDSk&XxyMh7zS@pC8w=#+@(=x7RqBFEJN{Qs#d?Wqd9<@pc9a=0hQDLx4Z`v zyy&vDeGcC*0DGtWY7Xo@efyp9X(6)u)`i-KhnRA4!+Szd0I^vh;CGYD_jeYw>PTI< z_q&A!?Y(O<0s@is2xek%{2jOpN&W>OtMKUrgh<_Q3tmvq732CxjoauZ_T%y26oSMl z&&xJ?FXye-Ip&Elt%2qv-h^6w^4Z6eP)1NOCq~=Bx6J@at;plAJYPy&aA%|A$LF%y z*ZoJGFgFCOKm&A@kOS1*k{eWRH7Zm=)pyHH7*lD05Mz6?IFNqkmClMT2?lIsNEToqQxpdwn_me%!R zv;jSe+kcJrRri}ZN~x>apnz;ynrod=34Vh;6t97bu;S%XCd+|+8|+x@Y6Ad*aFJ_P z=L3yIu#Ig6D^a)03so;2U~R4Zp@+D<1N{m!kPWRzfE4uBaH@YTOkIfNh@}$e<-@QX zb1naCS75NFfr8bvFG+%f^g#Y8z)_o;0oVGS}RT3wRM?wSglU=5VMr3 z-1~6^&nWlog|WS(=6jS?_WCS1vp--52F9K>P`5v7N+1Sp1;TJJLV&@&PhiH(PC_4c z`v3qfzGH&tj3!H)@k!H3r!Jt^d0oOD&bu9)cPXi70B|TELD1bC05sPyNB-v%sv9UwqI`pOUy{o#aSuv_qO&k zyX@gNZ!iE6MT~zuCV=EJN-B(WS>Sl;Mc~v|y#BPNy@}14S7~?a{5obf5U_!7tVkmQ4KpRV7~+}$1+`NU9rq~z+~5LH@?Bc1z~6v{8|7(r~svqbud}7h&~oWX@;N3%h_#0N7EI1c(Ksq z0uXQaO8ttUCuF^ZX4x4^$!*jizU8;qR7eOL9cJXvONx2`%JF%Mt?$c~_ve*`-IBe| z#NBq-%Yxx=27=-Wp%{}H4n2kA?UzbWF|?XmBX3D51bC3B=1H$lFswww&D4=@cpeb^ z6Vaz?zG}?7!4FPNyO0TXr@(MUF9aiuwJQ)!?*SRqZ9r@)KH6o4kpLknYzV^2xI|tX zcg-4*R^0LjnrRqVC7u3*lODATaK?akdJBNEvr#(hc(pISxkqmZlGcv(?t=Ke5{aXo z$TAmjIrslD@BnFoV56hFriv$^19I0Cf18S!bNN_8;wrGg1RpxD!+oE97T;pyW zgn&6YhvDq`>L@q?aHDNN#UHRXPsB=lD^@6%K=bH$2}k>YETi*X(bSBIZq3p>T=R=` zjUWo?9q^S7gpL3@W5|2~-g8BLV|`G&>--T=R6g)I;K5yk{l@p1(_FHQ%@K=3>PU0utVCHx6XaCaX7^FVsb25>siZP4XGID)rd zu-#PZ2nduH<(t74pV__Lqh`3=8JVzl(1u1|;*T`dtBjv^IG)kb{&$U6vaNnR=`Z6T z6{YDzvw$@egwOq8@6oOj6!uvMZ!h*5=Y%!1!J!ZpRlgLCqo3_bt0=pW2LNFa{@I~e zI!zmL^J{x6-QPgFZ*k~Dkb#^1dnnZd@0Ee#At5d4eb%!;v%m?)l!z0o%4S-4mzn!Ska!Ays3HUV3n>K9B-#doGAIJM z0eN)Ia{KpBBtEvn4}ooO_V0Y;WrT#m&3pcjWwxjmRMvwRK2uNJg81r?@?kyUdpx+rO-c)$2|^VESnTDe;P-HGvV@oxsDXn2g-h$Q4L+vubOK?Z z5`O0b+#=)YV7o90%!J+@PTWmdbFz96o~%c5^dv;#eVB2Qv(!9U!GN#@GBmig0E52@ zIyfy*V|OEYiUerz0O!jOvo0us=l)Phvz~l1QELQKA-HN9@9+OU^vUTp(N%&(w=Qic zO#zY#EdejUyMC#7;y?az0DloVI4_^WlLT2nzgMMQ?i`q31ig0$wRM%$Zpk8G(m47VE9|R+GLXk(u`}@-8Ww?Le?Fi<2$${+nYd) z(SO( zuw=M69N*M0T+Z?x2-w~oe_B+VZ9&>We2jRl#j9yX#{OJd=&eyEAZo3g3umu5Z$q>K~ zDjc}=IiIjj9Xw1x5aY9_B_kuF{+~s6`cEKQc;EuxA=oM8H?0I}NVw=AI%g;w4Zm{gUw8LF%kupqCi+}K z_Uat+DuLLrEeCjnXt+K1qLzoh>~xR{-|-#2ff9eyN>ZLuGDGciQfY-3^P<{7v-VQO zsenTKtZQ}K?}1YUNc%6}rd9$2zy|WIml*vD>vga3AZrU$^yQ^G^9o9bl$mO!tinR2 z0}Dz7y$FmbU$-&wyX`muQ6_i8!$^F0$#H$^*v`Am9vxmBmq$rs3~NBW*WX63&9r?U zNFJzQMScH%8X>To9G=%mV_BeXFv|hg1s852NnwGiB_QgX1)_6SsONF!IX}AqsEN+w z13&)H>3_gE(E41QZ}yc^B1;T*3?Wn0#otC|A0hw4!XPG7{~-nUbn97#uqEZ(JcZ58 z%>=@N)uO`pb4{1P>Ax*bHt{mMjibd?3L(+s79S}cdUm!}F0c(s-2dwLP2YiNo_@)V zt!QhCUH^7WK4={pX_|9AE{MKtDb&{pDq{`c5ErKat+@&K3UfeYLZk{-iSr}6FO=81 zfxXy@fmg%YS1AjF+x{P4Zy6Tl_q7dU zAPRyKf{3Ib4N53o(%lUs-5{Ls;q~F5P@)7LT0UELrOu)HI*j+Q+I`?Is{}bd2V6>Ty4H+{F=!r94iecjyFm{M%6XO^Jud?Ix`x-lR-zpYeeO zn*D^H=DQ=I*3EPT1UvhnC2f+!wUMRxS&P(gv23-y;vea~D%U5Xuzi|9_RYdFn|X8P z_*ivTc{aJC5IrX2(oxmg3f@F`vh(9_O*EG0KdWJ577@W^T`$H5oqc|ycc2ja`?O!GvNQJ6Ormo*|(!V1@iQOh(O~}FN4*DbOxPx7I z_(U$t>MOVARxw_$b``wAH0eRrSog@E`*LShfiP9FXXFnE>PpZ(=fPWdew&xjymPwETi_jDNgADDkm#lQrhO{X~OLS zX<$%9tQHRY+qW`D+fIRmw6rSpy;Yyg~Ja_B{~bm+K9v-@Sc5QoJf;UUaF9GIZR z9ODU(h+cg!112_rJw~6zKND-^+>;wA^s&T@IVAyi3{6qc7A>kUE0)b=u+(AAtTUj6 zFUP9KX}2XMYd+oO(RIet&5@0NvrC0R)q&nk;8&mC;WX#>e($wQKPqh5&%>deDapj# zqALCy1aB&2z^P7h5^OED!pY?|(NOt)FsJ~cK~t8OGN!Le@SF}mf`!5L2W_BgBbCe5 zb=9hw0p0!u`Pa4*3VrJtUmc58`f}hZKX~yY;zf;8&e)KslRh;*$1!Ti%)$Qv7hq=S zmrX3df*7=@+QVR>$NoW-*rcVuY_1ZWSr_H6&pFM7ZWz!7)DmB|=(w(*Lo!!yibPLUI)D&A31gD4$L#kl? ziXF%$3DChb20(sj*0g-zg%nMBF{ld%Yeou+0(?J#wg32#yBT50X+D$Q(@rBNwz8&P zkz1))#4JESVWJ{RqU4%3Hhz)IBP*s*Sq>Uh9r2^0ak`9l3-gWtX)Z6FRqnU}ttUd8fs>_BKo-l9l={e#Nn15DZXmrjP&w4c|d z5~^3`VU;s`MdoSCLTgpYj+%c-7TcBP)M!MJRzpNLH8#WAdWi-_X}X@4RH*wHZ92$v z)7->6v@oXn7tEB_3ONB^P=tU%8R^5;Pl zkoBMeXEbq2$D@Pb{4&rznb(Q~L>|1NscrTYdYPZ0x8qcE`5+q5^|KDI(aLF!#*WGC zwN3SQ0<94BK$iS?N15Rt+o+JFjN3|%C2Rxnlm&ut8sy?bbbdg(m#K>asSY2tB-RzKwu)n_$zr2`* zOPesRR#8iPPZCpGY}8Cl{I0?0LNmSTGB994wZE~DDYSa$OKY00Bi@hBIZ)eUIL!yX z2wgt-k@7bIfF%2tKiqV$Ls#^CFVI=CnHYd$YmEs)3W@Zw20l;qT0!;~@fivd|Nc zH7^0xZGm9EC2%9WOX$LmSFObfwn^LoILz<<#WY0c_ac8gN5Gu|?Oi|#FCTa9nUSw# zr==Qp;%)qBd%uhbSr*9$aa2YY2f~?({W;=GT-kKYKeKRGaq;{hXtgye91D_^`W(Qz zSqM*Soi4E(OeZ6Vy)+lmt7GKtK&Ko;3`M= zHNmF=jb4hV-O5HYFy*w)mlsyt`v@IwI{U52vOeK9JvZ3WmP;$aQQS@9pk|O>WQgab zjv}D%CU`krRVFiB9eSILHur5#5kXI1pA7{8(*u$Sz12ZHM2c9_tDj*((o4J*-{~9r z|E8WL%3GWom|LGZ{QxTSKhez@gkMW-BOod3*VYSRk*fa?LaLO%_wi8;BVjk1aUo)h z&T#)Kh(I@a8RYz!@+2-5}duw9H@V~-|%MKXb z^FU@Sq{{aFRP-9D*g~II(Yu{x9LngnYWDvloPd^VA%IKH(QtV&Sw<8f7FPkm2T*eS zJF=}^hX4tTsczk{|1^F7<^wyH$KQ= zIZWyR4vk(uG$HdAhG|#(fO-ELKy>Tbou8!A7T+W2ArFJ9A#`qvS z`im5CET0j2q}1a^Uq7A0s~uF(A?CG8N@60GDmIRX?+7gD)>YPwZgh z(k6(Tc`@!P^q}xQiTjm(VZoPbN1Lg}uf+Aq9QFM0#<|79vbabOC7VG}0&I&RJ5O{E za_#6xb*Q?qBsc(^(LI<*J1j92^E2M}siZc-58`sv+M|E*6_)KudjK{I*JUvA$4QrUoXR9t{ZC&PXuH&i;j=`8JC3Uso*fvc)r&^{dRhjU4_EF6- zzHwg(0}JLs(I4{4y?kgk{c;7sh58e}sk(q?YUuf`NNR`ZzXm{h)NfH>5OK30)jbF0POtvFa{uZSTMUbI(^L|Nld?!5-rciaiO2eMkd4091(`Wk| z*N)Zu9{j4zgRUyDTCU%Y|E<3x=iDgf(dbG_yn%H#+9T(0y{d)V{itQfInyWtXdPM5 zRG>$j6TKHelrjK_^pK78k+)g3q;Y8(3G@??I=Tgp2C@M!PkO#OeF9X2hb1n>_~lGXTV;_yVWsPdoDyiF5ix#2uXyvDsn7|$ zZfTGwethn}P>^(ht^z^FDG6XQ9B5U@U!X%jlOqT%Wpe#vfo3M$TrZ&;11=}ZH0I$= zJz+3Nrc;(W$n}X6WU&Ii(pK1J#cG@@;3Nf1Z0N?%Sj)-(YPLnf`*!EG z(4Y*OHGyu&qkC3plmncE?*V*`?payUNySyPT8_z&%GN*gtmtQ7)QLQhumWlCQxG~Z zYVwUUxZV^sRcy6u+2(xTiihphY*VHqXd2JMK8k^=mg`nobdD8GwPT4O{o1LgV>0l7 zuppL(8=+_NG5{>3;k?baDUi~7rLo0LneHbvB-as64apus84omN6^ab15%HH&6{-J^ULrNy*FAwn>N?TK5mk{r%@#zWw(pyp+l z47b32Jrs=ZxKnz(;ha&_8Qur)ouJ)DQ79}UVM$lhK^YF4%G(WgC)2e{-c!RtNIs{V z7pJgaHg%-si2P^eEzQ@nxBlhIh4x_Tl4Ld)jA@@fpy$Ww6;>q#2hE z@zrHxnWcH^=04k(l!??|lR#z`zPF~)EkhpUm-x5@UFtYq){ZOjzy>-I?; zX~lHfB(K@T^a@D|p27`lJa$ZEu3D0hY@$z~O7Yl}ljWrdPlb{zWu$k{J?FBSgIdn% zm6q8cWaHqLpT_956e3~q{0V$sw>q9Blr*zQr^t!3XRu!aXmTIP*vLm6n~%TqwnU#Z z7Dsn~Qzlkc>!Xhw}{(Nf`vr zBvaT3r>^7<6E<*yCPAilIJ zvz=}-RB}h->A%pgs*OYd3KQD$BUeFET)+Ss#%?y5g?4g+kAJ$^AMXd|~ZC^w~kn1jkk8*#lu!+I|UlcjYdf7q;@f zcWgJ4M2tcB7QuVUjSg;Tf*~)M@@y3X06b=!`nJM+^f}UP03cTwurDrf-z_f8p3#^vt zdirB>C2x^MOQ5S&yVd+%?A4cXcJ<2sVVpqg@w(Y31V|U1k;CM?s))jLR41*seoxCw zyQbX`M}?}l%C)~!ydVbg@_y{~+YRBhHvaOiA$hhhQToUfn^ExV;`}aE0{4De{ z%o)(OMH_UXp_^7y1%A)bf|vA zKxd|^sX@nA!}aq>X@u>zaaVPo^w=`J)WY3O(h%7XY51utm#VAS8$`mU43*W?x}~Lc zaf1_FaZvf=+4@|;`C_};-5yXYu#7jBXD~6UAX}u5C*o|!7)HT^@F|;%=`@pkA%4Z? z`1!pC$d`4Av|qZFFz9ADh}fb}Wh~m!^(}xE0~WX}5YzMkFDm-hX-qV~2)t;Hahr#) zfnJ5f6`h2Yo{$uz=JOA0=`fAEek&5TFDxyM)6Gy?t#`c;4|3iNKUsR{OrK~`XDB<9 z%t37}Q&Q)pFmvc59;3HA4j9yDJY>1Q2ZAT2F{r zi##jjFZZi5K0f`|E}3_5k)@*=1Z26>xP%vNw;`h&2qczBaMT{~%W4le&5! zJ6;RJhk8%aWlxVjn|i!Uc>`uE$`A-j6BsnR!ey4JiN8V{!A#0lC7)KFcUF$fD0Zt* zI~a=FZb0az_s){l?x{83Y0DGr(4Sg*%-_Db4kSq)5?qn->dp6&e<(A7Ch(Z;Cd&?w ze=#s{DC@VMdmx5~&h2-dj6TT4$*LCsJs?G+B6ztQOGLM$m)k{Szf*7pVqqF7q30^ z*iq@Ljy}^D=lyARIWez=M+7F2?Q7#jmITRlgeJ4$=+kIK*Vqu$c3rq^ZQ2+yDr)wO zH6Hs)wWNAb(wGC)GW!cT-6n2arfGpAfnsBf9l-=%~zYg|P z{IrBepveMhmcSV$VNfNpl`Rq0ntf9B{RN-aLm(%r|01ICa!u0l73QdwSJbaJZzs?i1QWWAgDtgJ1;?m+)*c)~#^QtX&p!%8>Pp|xftx}6@sVUbZ9Qs@?US>t?SUjRX z>$ZWSbJgPiG4{eVxcVXj9Bx4Ck#Cs=AftJCs}_+JvCScqdUckaM1H;7eZ;a!MTFnN zI&4N&)UEDoaJFcwenT8gQ|qilhia|`QyI5#@HAA#yj1wRj}Mzg;WbD2>afoY`5~_W z8z%vfUlk&XGlxNHwzgkq!B!(>dWV-(kV!IzUP8if->XG678xB~#HgAz`t%2{`}_<^ zpzE8o+OXcLKIgdZk|r2J<^FP74MbKG>GNEtmc}=5>5s z@Ta8F(&h@U=#Xx{$H%CUrB3bjmf~s3$@sGgl&+nHwYcRx$()k>UhA5zzN_y@TyOM_ z9qb_a<@Gdea|B}sN?Vn`EH)R4h^aR+3i)1g+TxtLaopXnCC zo?dj8Vza6HqJC1>;Sfa^wHs}mWFpnFMU`uz7>2yHk8UP7b$+?~Swb<>5~$8O>By~@ zMUN-GT8P3SV4xD!Hn!Z)vgcK=Slzp`F*WF-HywHFrCh5F^Z9iq{2QdO-|T_xnn5g(z*ry z$Gxf4ps4PI@tlloYY7LTWdrqsEX7ujqEuO*ET9(ar!T5AexjDF3%;J!#kVKuUO z@)ZhUsIOxxxtc6fe%bDv!g3G1=wLPQQ=uWBzNvj6Z5AchdkK#q-o(;%yLyn;+dA<@ z3o(#zy|g`>QLLG2Q-8eF7Ju<)c+cRuRHo`zeKVTW6fURMo9vKFTmD@oJ^pL5tcy}? zCauvtKX#qn>fXjF)o1e^jdVw6<7s_X&G&;9O|Ax?pt&@pf((l9>E`-Ra}a8*-^hC6IF{V zjDTlNJI`#@+H{>(<=_svE?-OS$bFlzyA zcy(V#ku_#bNZgOI_WQtxK$yxM36bnEhd?)6B1SkWeyi`*C*15%;|6*eJ>*x6ZVK*4 z@#`$KL$_~BSYpQM#I6faL{R*m(s--ucc)0cKCfNP&Rjx8YXQ%ztV_2sP2Kx*9ho2H zjCh)B`m8x>=j$&%PEzSkzt%N7bgEC?QGcyGa<)V7$2}zd_OK!RLbTAP#L|nsX~4au zY1mFk55I3rWAf10cP(`{a&_0gaRb}CMPa7$Mo{IQgzNA8E}eRcROo(yqTER}Me|_h zlFjs^7Nz0Vrq4o43aF7wD6;JS&DdK?_rP;Q7yhoPnsjZ1hKxP)8h617PhVj>Z+ItU zGysy4I}}U@(ptIb-EnyHODn|bD)fOt9&Fv*+bd(>b)xf}Te$)Apx($#Rn2%q-L+kr z+qL8a{$PC6;?}!VzoE1t-J_-OmuLFgGoxKAJ{b*U?-V8WcrE!HSfQtMH+*y_=`vT& z#C-JUS2n~xI|Lq-yvQM4ougfG3rGp|R?FjUL96l?NvF>jarkalQ-iO4?_UYjoXyZI z9}?KyM}_hJ@D;xMXeVH?+Hg|mg< zYV>(}Nd4d+9FB!e+jNqK^4EiMzw5>@;d?)mTbW<9va3$UA3oEbag=JIGG|Tbx3Lbn zna-_1ANC&6f@SKEn7T=Ki?oG4@eB&oaY1#su#2uOp+#Zavdn{n+RCgKk? zq}C6wdNAOoHecLVb#s9kjTP?_s3S;0KJ#l*oCW+_6b5M02q%I>Q>P$2Z$ zsuao*!Q#AOTlwW~T6^qZyw^50kbDCTzjVhE+4*|qPR}9Z{fkF+4m~%`mWRhQ<*D!w z<4f+RH&_N_))!0t6w^x)8c?aShL89hv_AXyD+HTXDRdVNu8vXu|P4&H6Pw(};=3**7d3d-0*TjsTF zjgp_nAs5NIi|I3ei?EFBwXV2nbP-0e>5LEc;?QAP_uWoDWo$T%=iQBoKN0@rwzTCp z>-=0n4oM>&iu{KFiehY4jL(he`VfyZmtLKwy}MoKN2$Y4e9HfNz2sH(w}6ZYVy-rl zvEN6n&W3#z>k1hU1jTRcZJ(8p6rOLZk-Qc@6QppT$~=wayxVrY(Dw$*t<)}P%V8PG z`q~=dKVgD<*^0p-^7}M_U$(CFI0=cs#()bi^7+qi>$5K-_QDcy_lYi8#8!)$qH=qW z+~05;{?+RmtWsLW0b7Nn*HP#$f#v>#Q&=KS_}>PAjcZRv+YhZ#d`U5 zD?s&I*%ZW@DyVhp9BBz50E_pbu3v-sp<1=N>j!d+hDBcEs}Dpv)zrPdof{-Y+N*1U zVzt(KJJ=!4jV$Y)3Tjhb>O)Xtun(6FW9sHkJHNl2A}i2cQ)nq?lgn#Mm^sn!n!Z`x zjgDM$J1Mue(njzPKwDX*D-t|W`r2}x)1RnHZ+7H%TxIneuNBtLc01LDm2BS7?wit< zPtuQz?%wj7Y9_uAeIVVP!C5qF2|5@M40H!$`!sm?GN};%u(BqQT~C{-ww<4l##TqE z_AL2=tg3F^C&SWLN6SKz5Qb6)vgN&qhxJlL>yOF0F@AEiHHrz?*MGnAEi5Xky4Q9r zQ$G!qX=TN=t&jTEZY^`Qwe>z56J8is?P^<)zVlh48(V{JA&msdaNLzmimCd#1Tl57 z-+1WYa44eEw>6l2c%ZMUs`}Cl9zg|VHUHXmVU(Nk8!r_{1PGLy0g%+S6e9CKMd&|# zrVLSkHYE#fitS*B+zMutYJ#V%RuQMxdfVPk*r1DF%g3-OB^AQATXg3*H%Bt*+R%Q< znY_Guy#PU{xR)&(fA6M}5M6>=h98HC^K?Do*B)nSca9u$huF9-w>_{sOjo!#Tu$yp zcy7~jeK%>@Ib@nVdMfQYLeHffEUM zzunsQ5%g=pYH=)KetnRK0DY|SeW)Wm_|8|qka9DQ8$Qc(H0Rb1h$RGbSg6lZDpfOK zVDPe1;Ki-_?*qF`Qph*WyO!j%jX*Xq5F1WdkZOS#*wA$EN)rAs_J{@)$jCD?1L%$C zBJO|6CEJFhCjyki%W!XvIcf+RxxcX2bWPFK2ZZ$;Yw;+nwXHPX5Sm5r}Z{EPUEhPJk<@bVuZ9UoD|7i$6Hdu^pv0;+1 z=v8V!_HN}WDdQk4sC7N;Wf9QAwKYG&=`+EUWu%p?R36D{^q!N;LK}&3h^`Q4^K5F* ztA|5_q5o=iiT>C#6CCIJ^2|oMgjVC5humlPv5Wq7C(ULgpTAnZVo#mj4DI9l(gp?w z@Q2oZ?%UHa1Ymk(n&7jDNiwq-yuS)?oTQ^6Xu3AKdMsPO<(4pjUTX z?{mm6p+R(?Rc$Suf5yknARD2JS8J;b`y`?O>kplx*P5)-pi?C>gi*cM;;eW{PpjPU z%2IevRRx)oszL9#+E04E9HX?{9rZ$o#6<<={pX)sQ;n|0Xmt%*=wbT3n*jfiK$;!< zraf<`vzXI;4hV*m*L5vJ_>p3YF@MZ9w>Vx`2Cx^)@^RU5GRVmm5x-2J!!%`f)+!Os zo-jk+me!^uzxdoI5aKnLTi9{VV8*C1)y*SnD7EaXUF`aKW^o;NR(O7yb9>w=Lx_GtKow#F&w*DbzR> z?pNE698bfTIOplx#|BuV%zllzhqO#TMbQ0p-dfVGl4l|*qJKGZs?31Y@4OZ&w&k0T z&q%p+hh&c&IEW>~ZUj>Lnizx(9VQK<)JvR`N6?ZgIZDx$fur z^vB%SVD2A7xCX)Q%j&bfjdn9FPHl_TE~M!m@0fzK=q5JV_j=Z*t*L4$#dHBH-KoN? zEYXwg84F#o7hn7bQu)35Lr%O#JDhC`Pu)FmEO6|Prn_sI#F_Kq+;X>);6f>h1U9Zz7$wni>_8{*46W1uPL2-p4C@ zW7TSz&9=Jk`%j6P3&OaJKu1jl|DXX+bIs>^OhTol^p8;Y*Pj-*+r3(VV?i#w_*BZE zTZPir`Lxv6_jbuHc2ihh!{gDKa`^Z832W5g!TkYLHmdgiJV|Ydknnorp}^dX>*g(dEazBx_r@87?wTwXK$ec%}K5aQj_HW@0{dJ!GL@2 zmyLhv0F#fh3S3V*`eZs8N&&r0O_N#71FKGhj=(9{P|R#UvY5|d{XX*c`?I;ljYhfB zF%9n{WY2DSbWsr#zEa>A_l0TQRjl+zwv20F0UM=@@Ov~$Q2%d~ps||}fCQsYFI}Mc z-8*tW?4YVw|G@}UrvhuEx4s>p><8`^uZuTw4caYvL5g5BK9Ebz89w16hfg(g%NeV7 zu%qOcN7JfyM8Pm_qx@YIHfT4tL7r9-k%zK~TZ9BA=snRpWZ%Rx!vwre;=M@#7?f>ZStf5F?rK^CO*rEquf9GDhXG&)j74 zAr0>rR#snzT*r(Zm5l>0Q_uov?MrIS=AtW=n32wrEJ)qb3Ii_(ty^f;}>CE#l6SZ>O{`8+N!(|L>| z3BxJI`9-MI>W6nSik1EW6ospbG#K4R+-`^vPl+k0e_GM~m;`!5-;-M+nl#!0ENU#R ze~z-BCfi)kTxz&sb-3M#7Wo@piHLjDHlf+L)@cUTZRn=fW z79Uw0H%Z$0mM&PyvjycBar3f;AqVf+-(P)nTF-Q5zM#GJd;KmG$p)Fu?2|)Ag(SHW zKf*BtEZtf*`nCxCK|$MjXzrJT2LtjFiA4nE$Du&}WCth!;}a8`w=CV!T)h!;qTqXB z;E%qbE1rlZ-+FcR&Z+MkJ`h(+T&n2f^KKYH*k)00Zf6|5r-Vc!TdCGnK@3l8cJQiJlXaQ@JjE-v&L2xP1eV}%-8m*Ei#3k+(=e9 z%$G(JjD!M_SZ#_)q+ z?f;PZKGAJHs(+A2{?5p%lnbsQ7uZEkTv9a+=VL0_b`r%{+xlwe>l)}$!j4~$U`K;-e>i-7l$S^FU{}ycMBoc66g0RMf64`A(bZ2`*ONt3Ue*sTGe8>@-)e=%AxB+i0-AYF;XeQls} zZvx7TwO0#NU9Me6JgqGOSqSYJ+>H?%{`YRb4x;pa;C(N+OEF%LForlvBYc_q@&+}m zFQ_#?g%K21{ZhZ_Y^@j!(J+t3=FxG6H4f7c%mu$;&*x(;)7EEh*BDJzbzUs{vZnXS zmz2*2(ekJ_;2d5jX3pDXYA1IbGRrkI74bh9$a~qY^V03_r7NpJTad%L>{2B0F8z_IwK&)8ZeEB4~Y9SPa2{`6wC z&!z^^uUm6Z*w1DI*>g|qJ}IK2s<3i$Y0s}XV0=z`uA5`n5_$4p^daaAr)FXg-@>SR z&`$IBmOeh;Urll7E%&?HEO-Y-*vs-wJSj6T#Jl-oq1b1|=tkAS`sC0=xcf_j$x-4vhc^>qM{h|i%%IZ3yEHavSkU1XV06yzh7Iqx!BF=^h=k4_1>z!SXSjTQJ8OL(r#6XjkcHN#8;yM;SwvF!`KD*JxS1 zCm5MaXu3g_a^1f+;>WSlsLtZV+PzuO_M9VRej3dNywt=4Wdu|WW@gKyJJwP8+eBaI z3?c!Gv3{2&f;U$31amz5hcUXAHZcJm`r&5T&4QfJttD_S7os_N=ns`YQLk;wiRGfy?OhgEojxr~E<#zNG}i__q8^G63Q+i>Nx z!e|(ECG&X1u)uKB@UPUv1$O73Yg*FVq4n#Rwf$bc3JS4XS(Be$^ZWO*+EJw3!N|q^ z_a?(IO$0wmGQ9H&Bm(`8=I(AYd$VatwT5NYN@sg+78pdX77^lr|wC%5CKBHviec_`n zCvkSZr)OsaDcX$Yr3~co{^TkEzs1{?6F#whqPlx2hht~>djEG@cfFsfvIpEd@TE~nuNeU~(7gB)8!?oT9@GjF*;$%Jqk8jDVnz{JG#!r=Sr zHF}7NrZiKL>tYj8yYrF?SfkY^ciqaP(OxX}IpJ&6`sM5V$9sP@w1BTjaXmy?Hqp^0 z=v=+*XI@O2by>UNq;-n~#SA}C9XS77|l z`|vgk%b;~c8fqYt(nG2FDw33tl<4RVkM`c9rFE0C*CuaVNzAzXQ8mqgGylGBstddAPOCNQ-W=};iPVofALNEMpAK4|7wnis{St^;nmcN)69L)GNAtU(BLTwG z__(_`E-#awvGk(koo1AeNBsT%6snT-oV8_m4~9*RH29Q=fRWf?9+$@jxwexV%(ya#8(rqaD{9M=&xkuIAf@9NWCpk;Bps7HM?)9w1rOORrbgQrsq1!xyx?%#6JLjqUwgmPY3!xfdt^J-p82BdQFr?i$|aH^KD@Wz z(Fe65_1Evh469fjA>N*PT-=s2hEUqrWj=O~cLMHLI1f$=%#?JyQV<<@8!q+f#h>5V z{hgSX6!Bgqc~6Qzdja|hjI)UP_FiR`wVdtp=&gG-)1W~G*hS}H*!W>!)ZY8JjaXi7 zk5@&oKO~U@XZ)DmLO%8>rC^}qmOza}c$xs%jZCj{FaD@Z@eSV=-o`Hp$%n0sw-$yy zcO4BQTvpNHZ}C2w(BT8JZVBmEQsl@UPWo#<@0;5QNlzs7Mwou^{CRKyZNP_$Q4s=$ zd=WDS)>wb?_&|!0;1nT+zIUbDCs}TC9W9AO@%GkkSv77AR?PKE_3M=Oby<4fb&Q=E zSc$e^)R9io(k9N*?+6GMQ-?y9ZZ69jOy#Of?IaG>Cc{6DH%!(8ze)!PUK<*+bFI&P_tGlkSbEp^E7(1} z$$k45^BqfFOe zb*_rvSyDWo3#njZ;lA#|h%(aP*?Mg@gMDwNp&=B_zN18vTu)>mvL=QOo)e!h1i!O4 zX%k^vxXXS>5U3H=uC^?JEioCF(kB(97{v-RMwMXu-AsGQ>Zvr4z-TTWcKe4a?S(H9 z{o{9e;JsP5<9LUXe4@ngsH#HPw_R}$Ri{Ey^$pQ}Z0Q~0v;R%|zW@@_OY z<@J?~dWxVbpwKf2Hf00ekUp7wVo zA0QY;T@hXKT>|CCdT`4OiH(1v1oK?v6X%V5wmh`X6F+#wDHz4Y*XvyRmDQ^CkbbFP zs`{zAb>h7|jv5H8`24wjmHT4)19QO#h|2y&l$iaWvnL`D%ijkJJEvx+S#M@I)?N^1 z(l&a+%8iD!*qYxBru&AZIo$;RjF0(7bbUjD=fj4Y6yq(m42Nni&((3S`ZcsFI@H|1 zp%gd&z;+9xA>t6{=I~v*7>Lk19|;9aIdNfJso108MYSCp6)nN;$%?5jI+&nW4u-|G zYAwMKCJx)-P$S(SHXSeO4eynRNk$9uh^;6(CAONs_s^)hb>Nky*pch_;$=^y=sWpB zazYMVa%7zw)AM%n37xPdEsV+|znCB)ub80gj2URffWXFHL-oz;qOchyNTUJVLC-GV z%YEs*zUQ1CVxBKfVdz?3axp`>rM_F^>au*ZpMdb|tx1PRmtXjG;RdGe8}0Cv+En8p z2{0m2JZ*cz!pn^Regb#013T#K@L^D<0Eu~(Qt0dF0*#2UP0SMT$lor>?zUbZGoL0Z z%XP5AR%~5-1#~Z7a+Hir%uRjpPuoZ{eY6J{5DN+z?~Qi zL#+C$K77xGzFkj4%+AgE@%UmMq}26JRhXpV2G*r?b!)a(8h516>z;Hrnh$EN97I5e z6+;B}SJ{^X;a&YVSma#G!@j;pHy@MSu1Uhkg({ts_qq@~34n>&bsl(gPOU`Ea{D98 zKMyE=xBV!E$^UUNZCj6EI0(1L^-lLVM4HduRg{|jN5;Q+513XGYgHP>7!t|D%+w(X z5xAkz51NiR6-cv;Oa?GJ*+C2zS{gZ!c*e0FD2|&P`79jrX|@K6FrR94$nl)@e4pYu z);6V;=4hf$TCc8m5}Vc_U6wj`?5=m`Cf|;CN_!zw>c)2y;biB@=Y8NgcVQ@g{YU@y zzg|dWus|SqIjb<}JwE!aOZ=E@4dznTy=uovgPk0eIpN0txRS6Efr-Xh@w%ES)mK=K z?zk^w4M95;kJ;QjTRhIMEbOb)T0(JCjP)b~{e*DCB_EMnP}B;f2g!I1J6(Pu%>MBP zW3S21`)x16t*$%R`)y)dA>Y;T^*|nFx(8U~U$uS9Nv;MfD&Ee+j9PspL#0(}_U{n~ z!`4ZEE}{8P9(#2(+{IWHDvLl-8i9z>2L{17e#WATu6yX^y;(H)YW=s$TYcc)4A$Mc6s4!93<<0rQ|)-@ut@S-Yvj)>#zFuL6C)#V%L1Lq#77i13nY zBIt1AU7lmyOTI20`QW=b|BVAWyRO3OoUVVkdoT;}Gs*WNAv>|m5RQVL7Jm3%=0|w! zU~;ybbB&v}cuBtM@S<7vSl@VezQv8D`d1jKNmq0ixaH2SW5=7m^@@VV#%Tfg*jQqh z{9?kb{R#+G!eioFd$M{gR-Vn>pU=F ztuR=j(n!OBHRlIw+{^G}V+y6`oSa4FxERv(S2OiyL-(d?Hp$N|5m+xDBdSnP!e7Cd ziUw3|H&c4%`a|qBu50C5^Co#QuWb%^4~|2d49oq35wjz`C`_jZM))7EiR>$LjiSSCJh;4j&rfusT=leioHr9v z9$O=#=2l$=lispYy)|&jPb1K2v#Y&4f~^TfdPOtXj)ayhC|k{bAvB%cqv0$&bp7*# z`J*`35xmXh;xxCu%}7?xs`cv241HQU#CEp9(D$s%A$eW;S-%Z4?dk4sQ>4R4NSa@a zC27DX^bsd=@`6Q{Q0!J`hwmqSvGw~HQ;Kr)>zEUQ!EW929T(r#-1rWUD#65sf_PEp zw*t%&&C^e=k5*G-*y7lScCi!SK4%u^5{CwEOs`qjb4jd+5}nf5+3$+@4#WAM-LsqA z*COTgY4&McK0HYp)05sn#6(>8;d&okiuoT&8D3>sJ>i1R0-@=cx>{9C?-v+r*);4{en=Pd|p zU`D`wkgzIa{M~aOz&n%i+(y_~mnmtl+jFc{fQCQbLBB~pUFY;m+J=Gc{@hIN9kkmUVx%vRJq8@9!!X*?rU4@iGS&CMM(s17< zMlxRV3w!p<#*uLVtZxV1F;RhPn) zkd^CQmq75BUBY~pqPm>b-1k zU6=5@*bZL)rocXBp}$*K3XHezClM=>xs`0f39v;jtUf&7%+lK7ZVT?YD`5?etL?;1 zW)ilj8KFbY^S8*|kUG8*rvzONHIz;$?pF+9W(I}|lj}E@j}rgy_7wQ~^HJ_C&vgN$c9j=vS8mrLuLKCGB?1WGHT&CTR`Bxn}f*;kJ0C%-%Cc0S; z%(ZV5S3jM#)eQ{n(0K8CD$B%NlCLHxs*!lAxPj^H)T;EKaIz zB{CZ_-?KBQS?v%`Iq+!nIrnyQUrOM+L)-EPH`D!DRqN%o+N!%{&sTQY0;>>4GE#eu zTskDplZ+2_id*NFmuLHK{fL+HYuCa+ zj&MXd1SLMU_y#7!v0yyCUs_ta=+Cz71%tg%6uxrd$HbVD(POurL4C5FYf=%Ktrlgw znG_@Cb}4~s%Hsrk&{Yx)<4jCnFv_zB-Q4&dGOtg*RktqkV_1@suNuNQw^$lHu3GJg z%lnxgekv~4X~2mrcI!1bDP_H3%_kms{m#@+93$Iqs!HNyd(%1%Nv|vE(4Y94!wh?c z`W6*Fh$9)42SnIEZi^6Sy4(eKYX^Phyl9&we26`|!N9?w%BQ5qlCRl0-OL;Q z70775(&^j-CXAz152+?w5Uy-zr)W~#+n9HEwJq{$ho0c3*AQtYwx0M2IktGR;csh0 z#gvrBK~ZydQ0cF&%&3aPW%^)|#`)ZybgC4UXZM?TjfUUI%*Nn1fw?@MNOv zDk2_jbQMPSR#7tI#32pJO8(kyOZzho7}Lk!H9;&%lIB$FbF$?Z>)?0Mb>J`|1gv{6 zMb8f|{i@2H0^jAPTW-?WndO$Usj_-vnWk)`-pDOYn*kNjjoZn(G-ZabW4&(x7tsh@ zY&w6^z1+~;H@{~0HMl<5s_*fEt|%V8@@G;!A|nUdQNJR1+K-G}de$eBk={A1%rtt$ zR=;!2nvNDxLFAiT`c$YAM4he}fD}+ev$R7c-r{cLvuvAnWgHPk&oHd~44oC5mF;TQz1W?mayuW zH}qSV`v@%M&?C>U$p0PV!C$xW`fO!3Pt^T7@;(|oc}x3Y<2ElcS8ltSMycg0QegYx zz9rVpv*%VfVCd1{uI4;WHxaI2txI;0cob`}@w$-L{`y2Ow{xpC@(c$_0xsB1B>ddQ z3orD75NjJ9Z~(6G%uXY>G}J4{Z11ZQj~tuO_O9uC&BrvHTm(*OM9-*$u{b)iZlvH3IYO>BhuXs z1B$>aNOvn80@4kND9yltbl1?`!@$2bp7Z_Z{K0j-FX7Cdz4m(gx$kE&dtVfTwPqKU z$2s9OTZH{c1!c~_a;o?P^0LD%C1Jcad`|!P2M2GOvZpxKEmtd%r;0X&1f8Y`vigdnCYwivr9AThaHh5aQ-kzI5;DGQz0Gt z0O-(7*fUxq;0xAthbnd(O|)zE&PupDQZzZED0}MEvqMFHiQR-2MFt`>@LlXPy~;>J zu%g-CL_u6Ty5~#=^J#Ve1$TSN0i%n2S9Rq>6l}VOM4)ZX_Ja{HM+aKpvzQhUhbPKV zY@EUO+H1BOK5VK-p=hB{Wx433{u@8-4H|41I4C>yBGu;uKf{*b#4<_|u)TCXUyrwtDHutkRX*#K>>n!kt(Soa`o4<@ z?YP=TtA9v_G*EGNt{{gli(k*3s>4(T-*!~X2g#gN`FMQgefOgn%o^1^B>|C7!wwA; z2bHc)y9ieWA4u|ZJr&o2-snJVyfm%z(udw*J9~4 z#;W|L3F3EX4Zjo$5f(mH&OalH9Oozycl*(^oQ_fc=9CAy^4(Hph8}Kkm2l)WFz5#6 zOXURix_@*jt&=7)iK|v^@x@KqndvW!HQS8L3CptJxKhcQf*GH-i~`z+KW;k&h}YflqI7rcZaU62q12^RS75RWTGfp7jM^G9FBu1#z~&yngY zT7F8`A^|_#8{M0Q53$1oVsIufYn>;boAPLAHAz2GKtNzDkE_2mg=?yDtuLJqh<)^CrzjHf0_@0j!9hfe7>;-%a2XdW z9Zkt#VVC5K=ZpQgVx-v;siW<->MAqC25UL zb=MEeY4ceoPyM}rKeC^{t4+-G{TOih+cXdby1wrgoPD;bNdJHw2fC(&O`n(*WRJmq zqh?o)TfnjK`L(6rkaR=4F0578AT7i6@JV@jR!zRC}fp>#ppMN_M zEm_!mdafET!Lp0z69wThJU?05fFUzYb8e`q8QC*-LYBd!Wb_--dd*;Fd4dEVQxO|s&fs!*hH$Yqa}J3#9+7er_M7{__qPiHrq@GG5@M4) zx0I_Ab{r#a;1R`8BAZ?miOnfQr$COQm;GPH$f07Bn1GIz446|slx`PbrPT_ zCNa7PbJhl)+e$U|y%K!j}(>AZauL zg}p^&J%f!|CQ?uM&_sAa$jvE@S~9=9Yn%Y>J!Ul&tW=}jC~}_G^`w686jIOQPasJG z5}_>}@EraGO$sus_tB}9bZjChRSWUcIRU1Da;eHS_o*If25kqf%C+Q5=92?s@mOHN zq+dc>`C0iwD`7?-aPPfSBa83NUF+f=t0{s+2E-kmwS@(c&6NaM6^t|FPVf3&lYV_S ze#wu~J^P$79&iQNR_NcGcph?(cNE_MvazN^SSax#e+2Te#`C=wJ3AQVk(!qvfQn8# zKh#@P39LmoF@fx&1PLue!sD-BFn>P9B0A>dR;5VmlbEuSPLBemwU|+K0ptW+Y|ey$ z$2Wg*R|}zpE(EDk3iMvzJ-Q1^)mseIkbbIqULTT!Znv)l!h>?_yHg#jD5ufU6|!@0 z&2dCfQNpe|h>*e8@{Aw{8yg!h&cm1Qe|&~yVOn`N`>N5lF_Ap*O__FEFNKFlv=VKA z1h0>ue&PJ8E$;DCsfPc-2^6QP$qGOQSfVoB;gagif9WTz9u>X>g-Gj~r{f=FO3L{s z7AH1G^G>%0#)zD6wkfeE8op0|dev|JV$OstEi?%j_5Z?mxaPLBMU|NO;(Yp&i`e$W5D5s$wY~m-d z6JqQRN5fCur~P$|CkEABls0-B6A@*#gJ209m{FFE&{0U}VBt0wDkPEEcPKaYL7{)b zet~=8Lc#PP9j+g%d=7<%UxRrv|B-X)sxUtk-g&la=pwJ!Bz7p`SoZa7`l>LCr|9+~GRuCQSNKm#Y<$0}Bk&bA z=zqM<=BnZwgP`ls^@{{bTU%S3K)?8&^@6A}`>N7?>yq8on8S;jGc{i2Xw8Vs5EdBw zcrfb4W83VBOJ|mNxT8|-E8t#^Z3^?jd&ARmb$wsCO~AqR{`~p#uj|>FZ|^&FW*v6U z^YE=Db6JX=mO+K9aIz`)be+%qz5FdV@U%v6tmJS{Z~>X+?+5PXahQR&$42L_ZJgyI z;!h9s_-{HVcJ+r}dA&q)Ik|mmR&K&%5EJ&BHp%$sNmC)Xh zI?x=5(uzWY*h_xxE-+I$6+92Jt}>~r>ND+kclRXwUb!r^RMw5sg)=P#uNX-vPw7x* zalK~C(v^aR`+)^G&3*?b{p@|-j5-rQwA`-|w5#%3XckuVdCteuQ;Dob>}scs9|qdS z-*Il&-knKXk9Td4ZPuxBjyc_FYBD|11I_NK^1&E+Irj#B1qn6_%FL_`Ng<)c%se?f z>do-jSlqmLOR{@(h3v8N>J9qba)G?p6VeLh*n-zVQY`^=0-vyJjRRN(OUPswB?CO5 zLj$Oe@L7%3sUS|93wK(QnwBbJ`m!fBKA}1>NaG=6jy$T!emjFkg}0d(n|> zqR8U#fLP}1>alY5YJ0P9(Ntou$PWc!5>xJk!9hVmT`>IUHxJElGcQ5UmQH3}yj13* zh;>JBvX9Hh>e#xt@Dq&>qme#F$5e~c0Igoi8Qcu4IviB=bS_LI;R%$&JiJB0^jd#Y z1UIvi>Atb99c=dhFiyTx_HS@OP&f4X{Znuv=2)CcrX70*h?}BpvZl&ORG-ZEX^2r! zxkp&}NS7SYjIw^oW=f5{3j3}}K}*)aKu@A@@^U*vonrO9s>R8DrR=GN=hqX5uB7mo zn)ll}wv=W)%?s9gSx~a%xDisx(5=ptQXIw=MeC#Y-Z{ix{zRr&CT?JeJ5euiYqguV zN2o<7yQ0Tiuh%P*ANMC#v$crW*Gqz2hz{K4q6qRGu*o$RAh>b(>0Z?VRfCvAli#9i z%NKfsH$~_V&(3Ite$sO)AI>NG2+SFPlH_V0m0o^f&_HHi|3xa(s@}9#*$C3O#NVym zB-it*i@HRzyOP!7WZl&p_yzDX)6<*r-`O>FGI?;>z$sfj)FPYYC-1n{+*mKGsnO5x zP)LtUs`$3*PV%kTHNd}YO$43XSTs-+9D5{y#OtaZ(2P-#Q)Z8pK&=ktsl2xz{4w%G zb(5oC?Hn2M)U>8N28%Z>^Fdl7b?*CDQz{U}D}nC$jtoT^%9qk1RKg!<7ukm{<6j+3fA9y-(5cyd;U zo+gF-WJlYGpa9Z-TKnof)u@BI@s~3q8R*%MHou*E*5iT)DxGB2qUw?lEXP$>_1$ve z+UT!e3aY=NM4H^bV07Qi%=RGjKXLT&YIb5=Wo6Xd^b(Vu&2R6Yw(4v1yStFX5Z0|~)SU~y<9#|FIf$}JPGIyXg(Rce!nC3^=(LICP;X_Xzu98Ed zY`cWHFHFErWuU$8wTr@BbUbayte@_6)yk~B;^$si^03s(d>4)@NpZ{kW#&5&)gPM{ zb?v-d&a40f2UEHxU#5G_SJ`EXXCf&TWbH&6fp1 z_A#VWDwgHwquHq~dWlGOeYT}ao0R+YQvEaKDb1GgwLG@_h=>^8nx5o6&p&KnAcks= z08vbABJc4`Zi$-aF&02yzrY(9tMZufQZsT z9i(s$>-9+sV{zEm*_0}wY09a4H&hpxDU6!Fa`WU@P?wWBZK@%+i{ z^|9lstp9(MJrTd(X`R>sd*Mq9ZB8F>Cu_;6>!Rgq7sg4RV;tTGMJWH7I>`cOm2eEg zqRe^4svB+KoRA=+tif7o8}XKR+EpTmz}Rxz$n2Mza@ez5->||gRJB5g4PMvSmrGY* zP;N}$Po`+$Jl98!XR_Q18Gy5$gF*G{3cr8to@A4C_eT9}C2S8tPcggdS13ZU9J%=0 zNN?Pcpxv9WC7+Z(viTbdy+ii49(mEI+Q~_&#AU|~aI(BEd*UluNj2lDog*9LSj8Jt z_*CKk!PaS=9|Jmgi^O67fChS-BUOCXO-O8y`nE$|+)qOWa4uWx4X6nUSxY;ewa2Mg z5W;*@?`j4uPin4Y)tC1OmMLp!PPN!$u2yPma=7ZxB3W9aU@hZI`B?ff3?H^Kt7v_8q_JYv~r~_ChA^iW%5684%tTL=}@lT zzqeLvqoP~WvQAdrs4Kr(%iTYEuN+IJ*%sNcH(5GTU->K4KjxpB`*iy|ZUanU3UQOH zh;v4A`qqJ25nIHYaqHaGSt~e~7EIO`#OHV>=FJxmH2od2Z1wD?QWjT&1DJL9S>TuI z$N)pd=!l(T!>gFMc!ZCFg2MXr0gf)@tW^Zw$I9hq4QeR#87B{oDorSKuT~6A`wmoo zNY>1jsTK;ZAymyzQ)heX7)jgsMI#O6OjIoMF?t9YqwUzo)L&aE(=ZZnd+eu`q+T4N zI*QcS7Np#Ec5h;7AcLqogUV>LA+U^Xhw}Akf%B4ljY-`@GIMkD_TjBF%x3319K1Ca z&^ZeZ%HkcEKb^9CIKgWjXK1MR!_%>&BtK&l>IP|BK_nTyFvQUKBPT{ho0B(j-p9QQpbi{c3UXn{BRzg(0Q0jajARg3}+ZK4svUID($XukDjD zbL*Jj7}9oBoAKUvj=t3_mG@T{RJln|(^UMwZbnl0T~*aDeyWy?lkod zVH7Ho&AiAgJhX@eB+XbOP@yPwL=ukF@8f_G+D*cn0LbE&>zzg=ijW!=4sCyzQP*AX zE#oQ|NEHXPreo#+$Hc3nO>H4R%9a;t8Z=qWXFbY)Q8I^+d|p35Hx+;#W(7I&i;5nH zJ$m$LktgcNSVCkCst3si5>P${yf$FB4^W@YPWF~vZY=+XN)+IjLZa5h)XrXW*#X+8 zP+#BvvoqiB0!nCf*vHnR_lxUycGn*F>wv!MNBjKpwhScnCNoYwCvoGobC@;~HoGGnt0|1fvThaeA`m zCg1#M^JK240CZZuEAPb}evcp&bSsw(rFIQ)iC|n8;xeh7aF;?*h{$Hzy?n>_4?gvp z2%$?(AQ@>}uEAB+H*jzi7k(%lo0XOID|BD6v#n64sz=GW@3?(WhTr?diJZ^m6UcLS zO_8Yp*rB1S`WCP(Vd32W1J&?FQn?}w52?ktJPDoK^wBDQ^mHT?_e01Zw~^m4THAWc z`_KF}7%Fs5(?{+xhsQ#Urs9<3@?)PfubS!i0E}@_9;}&eD zp0XF5@4`{d!k}b&&N7C$CMP`x)-=}?Bs~5n*1l`4L}sHJ7rbY4qro%%mtcJQAG{O4 z$&?ICQsonr-$O_lB3D5;-J4c^CrG~we%{A3Vn1EY%7d2~yaBI;SB#Qc9Dnmsse$Ef z)i${i23uHIbOCAHQ@Sqt8Kvqd;nTl3xmrcbhoQf?$#zsJ8q^^tDl-<}irv1=D|g7< z;6lo!l7pdzZ300wx?PCOFBICNrCL~g818i5k9~P4vmy*nJL{6& z@OE@LXz;dzI_Pe^+)N#>sZ~o`-A%i-pAeir?vXH08y9@7ca(z=1#h?qjUGR^WW`fB^cwqNldt7RC78Yn^ zz%1_v&&v7p8ri)|nN!xKJ#0EVC2T;%qC34WGX3e0$Nt_vcz7CHWD{`brYzPAk(p<4 z6g4yz9^#w6xhRCowCtN{XZyrUAxcF&XF18Gs$b@|m)xPwgwKWDIhH}<5!s94h^1pz zf9tI`>)+f11-E-J+I3;BIzoq=gr^FJ@QJX$uQgnqbSX0Z9#>Ap2;P4G`RgltWsK`U z2WZcer+sQ^SI?lbKdjB$qr{t1fS|c`FMBBELyE*Ru#w_pm50?%cHY#25{HHpX%`o) zDVz}8&!7@?_z^3*S9SG1z-a6-7DjYXYs>7NSMwL;wtC6KWu7^743aeCK;xNNTKvT`x)>5gH zVQmB+sa5D(X!ka~S|7&-!X?$-nQwDi?Bm=7&g8e-l`+5Y>PF2gLy`pyTIdALPv1a& z?z!J_u_HWmjeyJj%}{i#+&s!^vVH_ePq}%&5#*!tP0#BqMndUnMZLBefHz90+O!L- zubPWbx$MxNM|{(G@7rbJt45);MaIOWKdMek;Y-}ZwS_VZ_q1+1=+4kZjHm@%3w#YL zB`~<{5oPr{n&4V6)PC?iD>rwoTYK{T7yf+ZM@GE%J^S&apswAY6;?>&r3*jx*%U9- z>DFC(?j=MKMi^S+_wxgq#Z$r>BsZo8mtf}GrT;=1hzh$!`?1f5Nv>@|FP`@F;G8oP zM!U9o*QPnH6WRg$<@+xC#lh*z#I0fbvl%*{Z%xp1^*y)WraJzBrM3fmPww({A{6F6 z{Q!L8_rTC3ede;M2to@=9M}n7VNkg8@YE$Tkf9mK90mG`I7EXsHH>z2644fFT*bML zSqEdK6MlvGwy~^j`a&V`!}UGdHnQ?e91s)V#1jwyNj-v9UJEZnAZd@jgYtj4R`fj? zF#{hwU9hDA+eCQKeZZz=3T0f{Z4WCtgk@YiBRFn`@V99DIK_#SqKiwn+w?($$+t_W zBc!;E5qwU;=br|xYIpE)yA2=Q`A81y8;5pjN>uN}7#Ve0hv zSROnp{adt8Or*Fd+F!ild(+az8Il*j(1n2~dGQnY-#pLXiYD~CuLw};fB!>x>%SAW zfBz-nHdw^}XbA|SF2w%gUr+zD&VTWjY3hrx=i+Ax8peNfJ%Az@UZo}!PK~s~lf$au zeg(m&Y?VM2RfVAhB3{7xA8JWBl!67262=+$Gp7bq@*Nc z2+b2+29AbS5ueI6=-HbtT4psgf$Gp}cc;5UxH-!VVbium@cK5eDJJ%uILFLm#m08t z)%;g!Bd?6Qaq#~R7l%kpp9=Hew+Mm-W>J13;v3)wF=3khS1W% zO(F^@f4qs`wR(&YMg^+eZaxpxq1BL1Ro=v|B%BY3sUIU+8>>BA+h@cF8QwIit?K~6u4(43so*`qX6NQ zVi1jaGT?pssvSLFo-TMm!T{Q|Q0VV0MynG*l<>5Z!Kd0{l>E+ zL5I`$wI^N@+J`oAG6G*?*8?3{J~!-lbKzFm{>q33wk2>#2yO_~M3p0o5E zE40FdByDr6xa}R?e)GLN!o=hP^)HRi%I8Wy&sQsw$L#xLXB;iV*dO0RwGPKV1HeWt zs9i41#QXsD{ec$6U9&g0vW>g-N4CCxqU346a)lxjpHd{fY$~PXCo|OaH=)|5wiIXZ zB-~u15I1TKbEQoaSSMC72u8SSKT~S*HSG?U{f#0C9JsRj|v>$kNk>dA;B*Pfd-C@%{&8X)tKol5=16|t$SzOw* zqQa7r^c{h3HQC&=fUaD!sZBToc^b@Ck{c16j@NZ>61($LT-jk1EdXG@E2i6$QofjiX~>Rug9?ruRq)i}rX@hrh{To}sW@TJWYL znuJHk07SDByjW+{9oP=1YXaRxV+aJ~prg?+RQWuBG}P`8`DM=N^^9G@^jgzNZh!5j z1uRS4wJ5rsk)uPu#6XU%@$k3W&X8yyw*FEL=$1(P{SU&m_m*{LWV{ffSd)BG;V-O81QXft|N&Xfs1$z^S7 zB|uGP+>R|3P)?r5JXL&TwPN{tf8n^QQ;-6#qSp4AW;lbg273CS|0_yTF->q3|(c(2deI?wwkE(QC$XSiD&BL3& z47?|nDXG}ltn-V^5JBuB5pKKvv-C?OPnN5_w!2*VciJ`~yZu4h{MqXdZr6f&GmK^4 zoh~gr6O?GL`I?cn%+_Na=cwGZkuhT>_O!E;X?9AG z?aHv4(aBN&eC9S2uVFKXTF1?{OuJsA%b6}!&i#{;!uRb)FB5ltFz@{QqHgLDX99oq zS_p1Rgz?e_7Aqb<6=L)&-~~~=T>)#>Fr|PL1*d@iw&o##>{vF+bfFJWoHRn8HJx!`s9o^o?I8cI*)g;Zk=M|r5A-2J~SLU zhmMYxmA#*HEzWoZo$H%)$ZwO<_d5u2SXf%}g-J_GgJR2H`9E2HIyB+KmT8;Lk^Qc3 zos70~C3_Ob+qc4?Rmj~2>!8M^WX>K47#E=D;VOX0D=Vh3rq6uW+x3w)ihRygaE?h( z#pUMlQ;a@pOIk9!XB$UnA$&Ktf2aqe{YoLt$K66jm0oSwI_)^&y7Es|y)yvj54)j5 z?Eiw|p1ED-rAS=4nOkxgOVm`~LxMl`9~3@FkFXy!yRJ@#&A)T@k-vA3X*J*6RCfA< z+Cs~1Lu03zhkUkEB|ozlRCi@I+xwHI9`C;W75fXbU&n6T6>i|LJRjMEh}jc;F1*{k zSunUZ%J9fm)G#OAyfatF#I>SV76v7yyJRIBf%;_}Fh z64fGwk;|5Qt};5;{ngKh(A}p--iIs3DhA5%pZT;RhXfG7k=WPV=M4pyzYdSNmI(H% z%Fo|IKD4a~FXhtuc_W}FU5TH9dYEO5lxYZ{{rC#mP^!~j3qZ-sXB9q6q@gVV0@^DZ zv+X$}d0a>!DkrpS>nu)(|i6w!&V{ZKYN#V03}J(0M214u4~?^8<&hIgxV)pq}zlk zlFdG+XU&w?Cs&U5P2q9=If9xf0QJ)yor>vMAWHnq0&u_(B(i3vUS|P<9mbR?P7hpN z6y0ms6J_+HCmHkUOZ_Rl{@UTK&at_V+{PTu2tYL+r@;5C#N%N{%T=_I0Gb3x^m)Yr z0GjdpJiD9EjJOG`-Twe3Ze2Y-`Kq8;5N~v!_%17_sViojeeKoTZ4gs= z@`v~NK2Vg5MX+zg6t6>B2|(Xd+ zH6z)KwDX;Vc?>~+xT4NoY1FqBPg@b=!G(9u+)`M@m7sq}mGjf@-y-2Rmmt&Er-hG| z^oh-#thJj$*q>4yfvOWcfvU@AzyBD(cIuq{=Bs@=I~JL+jeDM*nh*}xT=W~DQVHh- zS0={`aK7Qv_4yZoi;pQEV8gK~!2}+Au4;Z+ApS_&aiL(wu2zJ#V~2_#&P|=|g>`R! zZCo667f6a#h$w%gVx^EZxmA~jEyve2^HzJso+1_0noI{5vu+&sncUB=Q2eU=g0;l3 z=-lnRA~(`XTYudLyRQr|aaf9dW))f)WyGzC^VlM|)y>@DLwFrV63`0P4Il6>_3=7W zX!v*Tns4oGc^1d7=g>z67>es+WOkELJB}q-;)%wSk39?fDxKTQr3Mr>OvLGzV7;`} zHGh1nYe=@Z&qgo1DYyhs`p#NJp@^uQkcza>()p$5$4*vMyrz>g{w{&pjH$N%e4W1bm|mp&uw>~Rz(|f5VSC) zJgx=#9qi#ZXmvZ-MUC&sqwcFa_cj^_c& z*Kd&rAaz<5SCGidsP%46nf2E$9(I4;xEu4~!4b|gdviPcyQAx`TrSdV1)}xu`oe`n zrLRWc(kWuZ`;OzfwavIFa3mN;1#X_ob>^n<*#{&GZnW6^_=pnoEH@4bkS=*AQ(7(^ zg{!_Y$j8n1PCmZ!S?&Ix*0on&=QPzkYdeq#yPOb9FvMG)tcA7Q z^O@5mL02kF-#;HuN#3v|U;h37Yy2QaxJyMjPU7NjETm8mMD7Cu}ed1*tl+L3Qy{ znnh0SASNOTvpLsWM<232 zUPBq06SM{p+5hD6*88I8GVra0*J|q;U(rlLqf%IfVW%jgxbe>ld>fnnDy#aM3YHNX z(jVs#&u$m4OYrf8@xkSAtvaHS+efG#s zo_}{Vy`Q@r*^)yqXQfpg;r~&2<Kqh6*oFLrk2;joA7orKp z-8Lw*Nd}Aj`WCoo-DWh7XK0(u^@%OC-^OCPEi1Br4e+hf@N5=K9_<=-%HVjH%-s^G zJQ)e~^YZbXx`o7Xx4~RGbH`|L(TG?+*{d7!VNfnQb`@^Ta($vi!}Erp?N;wYsGwW47OR;`km z;qiY+72C~(>!(6%eiM@0w8H2bOMa$zPFRm(ivW{w^2$?)0Pv$1z_*Rx=KzMOkYA47 zlGB#i-V`-KBL9aV{3O7_C1bWi9clrt>tcfdfb(8~Q>`-I0S-flYij()JR2yKo&Z4n zEh6J3)Ev8VZ`a@^!r9to-O$^-)*B!f(N}f?!QozH>r`>EgGZ?2;0!Rr#Mh`#o8$)}04>CDy&-bsrnsso2;)UJuse{dE*F)<~4s|k}R6tb1 zuIe;xj#q94(#uqi@I)}}7L^)){I$BvOj3efnLpVXy<>v>lH!t&IS3xomca=bCVgVC zYpQS1svF@=>Q60KW0?H@|l0j{Ebh`Z5Z%^ z-+0HVcL<-|NnweeuXIKmcZmJex|c2jt{*iq)WQHxa!6PVv>f>$y~Wv_zBfJHdG5f( z0pWvL{kLt#D8SZN^xG1SbLNnAmpH=c9)Va=K{9lB@L78hfyS)AvbKx$h%h^pu`oNG z(B`C?US`renDDj+L#lQtNX-j!Fg+MdF3QmWgq7&8KhxGNs}vH`c-4^mmRxKyYXB*b?PcJ2e|K?Xj+MDw82Z> z#l&U{k0LU4hO;=|y)rU$nQo&Y7R%c@gR~wagAub} zhj}{UGfa?Fo~2eD6Wv&eb*uAoKU-him-oxH>&!L!L?NURt6w&*RC8$)2YtlKo)*Xtgm=&J$ z==ixaZyA@dlKCYx2qfhL_s2An&LYZ{2jIo^GKj5l0i*5n8VzWcM0V-B*xG*5*P{Z& zFe7#Xie>|xUdm!j@L#4Ev~d5)tZD~Ir?fi|WrHO;V!s0nWRUxbZ~Y=8tDk@ABN^4Q zh_@0vqj)_JNloync{2-pB!!BVirDNQqGO3Xqbf-ww>(FahRu zEPy<@N}&d#-#2HK@{uLjtpMutqs=dz{<8onX8%g@b-DQV`Hc!dInV-#)P*q4rkINq zIk}LLHdpkQ{yW6yQ=P7zfRv{w zvA3=){>CB{M?wfR)Fg^N<5Tx8yvE!fadgYM?pV1w#Q|(aIG`>ZXjL^a6TFLj^p}9X zS)#@OFujJ_^sMW6=D$DO>2J1JYza${At-bpH(m-SjQ*lP`@ef70N4>{HzlPVG}}ow zuJo4>ATx>%uhd3`v)HY?&;2ahopf-$W}Qzw3MvpnG3l{WJG$HQPE1WGr(c!vA+GSE zhGegU%jk_|O`o$yuk(bY%#$WDZgKBr7x$I*z^)gzqj$h0CUL08fqzYOCMc7|Q#{v_PY@-v{~@?bg4$uD{n5YwI2-F0e8oE{=Ys^KbQlu?aQN@@H^uH};xCA@XE%T1KnDx)d> zW}~^k#~5k~(dn33X6kS?z|ZzaTNMTCASw$eM~fNw@`K?I0P=3LTCm7m1Nfor3L0L0 zS7a#Y%;8|EMxZ_lZqnm4BpkFuT9rOR)Ki%-$7ZOZL?>)6ShuU(s8}S-K1@yret~Fn z0At;}m*UjXGIH>z2n+=n;o-Ryfhz+Mx0s)xU~+zpCxVw@Mi84tMJ0mV_Z`$kgMAkV zJOxP&8#e&--`f!3ymZmZLht|%4Dns_HxT140p(%M6o+MMw*^zg2x$L7&BtYTr9U|q-68f6 zd)TpV%+oAKq-^8%aa;~56Mh`PwsAx3(7oX7Lya~F^%lK)6Fq*%8SjGrGXFk-*fgos z*)>MgNPcMlE>(B@%eR-aWutS!TR;gNCh^<6ARRr(U8TlVcq|IWBe>jvHrAovT-ver zstjYmr%GgyuGeVAU#>y6R7&g?Gyi4S9`Fj_&4r^!cxrFy6_r1Uc^-(5vO@1|Bbu3B z@?1C{d!-!@O1sBLd%^2vMG%&LHwRKz$UI$y9iTgCLaRIez<=SUrwyUWTqlmu4oo@jdV6{3_WLv3g?NeuhBTt?aCNABfIIl!^%e{E6Q^R{=WY z-`zrA#ad7#ofXkHl$qhSwXq3ZDUenE04n@~e|ag_#wu+M#}RrJ{1Z6b<7`cySQd!K zAxtLGcn#Oj1Qz+1Y@)8InRE%pYkY8(AY-ugTGs ze_gVF@Hs?Rgecfh=d5Ra2O34t&~zS{J17H)wmARhCAR5lj%r9Zoi?=LqPL^aAG=&k zf5?>2kGmG1#ppW!jx!qQEpga3_c8qoQD{j7W%hBq$wFrSM3CI0T}JHR6hM8pa^B0Z zOfY-Nca2|VUTySfUNnNm^&gSq!r^yUKMbZ4FF+7EhHeqy#Pi7D^;z&GU51` zL;EnOEiJhx3gtBeinMRm&!M+A(!T~i0uKK@ZwJTMrc9@h<&92y&QZk zF*a;(fEq=o0C&SwIWKC4oow=U6`XM|&9bOmAW0Ehq5}# zWc@&&xpx052EgpWAiRbL=f`nr@iIn}Yd6O`?o*bteVlWUAI8}d{4X=)J5Jol$D;eb zD2lHzYssU|FlWqRP{_2g@=oOTw!(2_}OHG$yWPrwTW-nbqKikFFp86ibSnA9rjQ;R}ErA$eWQ& z^@gT7vIW%ZCV>Rrv)i>)vtW`W%xf2~{6I?*aa7V9 zvf9Ehr(;^dxfFp`p}D^j3!_tqHmg-CBB`AGP$_~kF4*hwk6T>QhuyC>hwb%?@f=GP zj8YOJ?iY71G_E^e0T|u-4Arl%hHNq$9YXyea56c~|&Hg3G^U`;tT{z-AhSY^4ZNCi|tPK1)D* z)EedlnoJEP+fGeYDh16t3p$l?F>{;@-_<68)Jq~;575!c8O(j2Lo{V2dQK%WE&dQ8q4L@V~}Q=2fl5p^^qg0?knRjKyCz=)V?cTORlQiDAWfxg1%u0pGS ze$x@qw9uQCk)b#EYfqEkbj9m0 z%(N{Nf;NC~u~e-Ha@igJjH1m8yFZzhnp4aB8)CZ8`!^>Lq3KWh{}k6`1m79AU3M0P z$;N`1^CH*|CndH?GlF)CCEy)>=zUrCe^lHY9 zQObkc5fbd5DLo#FC*O9~>Cr}a4N)2zd!14mHgE-w-}=8GB$<+>UbAopSfrssk(>>Q`QT(J4a&$JX#5_6qfgxntMyR;g57rfi}w2|cT(b!F)s zC!g9L@%#wGRdF3VJU4#tfYFb`@iqD%_8avf-m{uc~s(tt^B{=iN-Q$5P zX#1QtzJ`6vHIeiB%AJox6m1DjR&i|;@LR_d&mw5`fS5@G^~CIz%1Ea=$z%Xq2~(AT z9$oOc$EtAYY~eX81djlt-h%4>KsQTw6Jlv@SRK(qoV0L=wp-xi*(2s>#H90{Yb}9B zzE5=bQ=49~AS1Dqn7hRgW)gUuFwbl0^;~$cb}%lGgoGsF(!B>i-t^*23|Bp4KyxZL zNXh`8pn%zC-07Qa>KJUWTmZA#AV(zcDO2|s*7EQrAf>#(CBv^&W2hsviMue0_YEi5 z8PNVxVo64MRg?PXnSAGE9-PgDY2LpR;-seMoCS~I0O^Gjj{i5|%g+7{623K&&m;+T zKx|(?N}~oX%lBP6+N3Ne*)~Vl*4FzEC`nJJ<5R;vBVDMzS+5m>tf9p4@9Q3Wc7V`( zf2gnkl7B8p6w=m3wgiM16CZEz|1}Ty%)l6v-q4!Ksgh6xnADn#L^#=^@WR( z;n=vz&9PHOI5wqmr{$I~Zqv!13Y?}e?2yhB52)izIQ6CQ+G+#Lo5b175y=)U!uHa9 z?WVY6l+{!fm^(FokdVgo^+p7!vO27L{0d9<;Y%B5bubL_X7<$MqBQ!sA7s>>)UnTF z6iXZW$Q;BCOHl`NGDfXuOT12y$@;qxtB1yWASnsLhq4+f(h7j11t2@x$~8p4V1ikR znw|^I@SDpS-yo*`(e0?UyC>OTV$xOBm(%!JPfagE8pOi$ zUV3Z8uF1%x* z%>d0b0f03oauKs!ZxR?C9Av?bS^Ly^EQEV$av2I;b2EmX^9_|`3%^_~76ghB()wdZ z-x6paJ2tnjy`HMDkbU)%VL^Q#HBP1UqIRkNr}9-<0pjVhdT-)vb|YyX?a7lAhoTukbs?_Lf74 zt-qHuqSh1V-rvk}Cy$)Rs5}{T`aoV24mz(em>fB;+Xuyag8fQN*{%iVf_~7bl2R~; zYzM&0;&bp&&otgDTgYB~EsOEe+@AXF`X;rNA ziWmNQ6J(VS{QcCpnOp&l$z7WeHthpEt#4)st$iuALJvR=8tvn8UyLSO=6}Rm=v(sQ2Eze^ZLX_xFU%N^3pn^=nm=k4qfnm*9{tuTs9rU4 z*PSx!adFUxQ*4V}uTrT;S{6pVF?Xw}r4efl!qD_Q{y0h__tjCTaV*}sSYg5QN~8n? za)0w#Ph&?AO=Say3+Mr=T06x5z6+Sb(D;E!4gM8=;n;faWJiS?`=vU@zjoSkAJA0< zt62#QXtO}{2HEd_O-APJl+J|$A-KHMCsQ0nPbUG-9ZUB&^Q*^iWVSS_H~3?@`4 zSAO8?oos!#<_-6k*PkE1#c=7+<&m*|dW{}Nx(slyvsuSYZdPJyHM6%wp;3B6`SdF3 zr0s+$n(*^#DJlknuXZ)Fm$fe)YsVtOhEhoQ3qN@{^yL{hG~&X-#~`GsY+X%Cy^3?a4danEePjwa*&b&x~(hdR`LkPjR33rkQ>t!^}kHyHR6R@(uR9YDKm< zsjO=|gC}<-Q)cC_Kl0Bk&6L)rSRJp6Q&7lqQgO2Dr%G7Kq&wcXj&5aCi^~=Jl5Ac6 z#^9A(jGc4xLLwVurLFx?tdhon(5k5>S1@6XP}BJyqH6iIDhErtPydel)Y)|%qvAzts)IzeVc2Z!PpRWO5b*@dIA zKWMQnt_RNH2WAWlvOY*Kj zc^=wknP=X$H+sA8_xYah`TqNk?_0;=IQBKHbuHJm)_JaV4!_?-JbB~F3R_lwe$>v- z#|suLoT2(7z1_O&Q{PRrL)q4U#wmS>QHafdhEw=da$Z24qbS)K!d^XMHPQo;A&qmo z;ZWAMS#6g(D4RG-OFmKmOUcGKf|<$~Wf$+Co;J&O4+k=dwHPUUdmCro0KX(KjzJA@ zrf;SSZ;VkRlr?BBGzrtp(p4YU5Eu?m=?tLceC(Hn_(?SMg_VAJ75-IxdiOL0U&1n; zBikRbAk(tIZyqq2>2+8Sg{9{r*a_7_1lDL5>`f0-;{BZfz9L9Qkq`q$O>bI$W4R>a zu&+FOqmQW(OCUIbg_Oo*M6|z=(P(NX#vqDxcmzfLVvVnAbJ(rWvWKhEL92j6>tcKy z-viFsf|0nF!#eaC#M(-Pr5ASZtbBBQ#j#XneLke$gfWW)^s^rMSEmJYr=hNm2H%}Q zlL3!LSbgX-rp3@b&%&8Xuy58*ajajNrbMYtIfa3g<9@V~xw*rfrKzx1&&8TnE2A5; zC6b-m$~j$lS4UEISJI!vtil`=GhJCpxhD|s*axXpT3sU|@ze5dB6aHZSXw4_?%J1z zt?r=wHs#BM#y#{c;|FGkIeLDmnn>A>oX9Md2Iosfi;h|DZ_Vv6M0X(jqPVp5n`n;$ zAMr4+iVB@uqz6^hhlU`*8x;eV6Y)eF!t;l*#Nt)Tz87f2Bz?}#1Btx%1)!mJcR$95 zNKlFt8W@kfz5;+O0uh(Qo`nZq<{4J0@I7~#wI_Z@**^K*N27+|rj3PxO1!)22soYd zEk%ttqR#__eJmZ3r0aJ$2VI^#p)O?8o{Woj`cyPi{rWi@7WBHBCHe5(_y#oL$DV|Y?3^FfR6j-ItjJ14 zL$%Nd%oN@f138wfKiht)*(@sjsP7bG@gX<|Ec^D%`W$#O@TjVZ^2YDDJkJha^K5OY ziI4*)!ErL$fz3TEW~Iaije~KS{b<4t;T;>5i$KqlQ}dWbhbNGQFMoyR+vc(eh&auE zy8p<8%pxmj#-`yzZA5S7YU{l#O#Pdxb#HX~#;2#=&#kBC&#ixV-qpY)9m~iteP3Tq z9TqZQstUW2ewg@^Z5LMNI7?a&t+>V<%*)a+wlGP|wAgg0v+Mq|OVI`GOjF63yvsM6 zzf{_=1hPDh3wpcz?U_oNi-O3MvX|~wzso}3NJUh=j(t8GO33-ONow*9KTBrmFLKJ%TSe7|*WH9JjeedN@_wAnk~Orr`{ z?S3O3@{oRCN@s0!H2==0oSX|b+KnEE)0pqTr^7O(G!Sq;W-h<+ma}}=>b~$uSiI&=-#Jd@ zW${XJ#DG2m*quko+bq*`H~k0!q(x&Y>pgZ(eM!M1FQaYl5UUq7aqC>*QI!D{Ko)N3_}n;v)Wt`kl@ zNy&`09$!~A7izhsareo{cphi`$4tlW_BlSA$Vn-1&e(WEggD1>#KH;)w1Hl zPSM#~pFIsRzV+n_L%T9f%mJCnv^ehizBx6VC_OxOr#nUymd?_kjJkl}<-R>#6=IK~ z6`<}Q{}#e`ONP61k|Tws*j9C>SxPN`fl@O%@ydAhc!Ury%Zgt9O=WE6k2iBZ3s8%BaG)(`X>%B%MHAX|^zy_;*A|40=dF`$JRS`Y?yiuTY7r>^zL zYY9zt;h$nf*pWA7p3wUrt6xI}vW$-~LNBiuAVvJvy`pY$w|^=LnJ5hg;X@klgN&{ZmjnibYoqXIcRQhY zR7yX`g}~y!Q0C1YXVKoM!Y6&H8ncuU&g-4#I^F_uii!c$hS~YsQe{t@W%sHUJ?lUO z*0)W9EmDwhhGr%~CzK^D?}J>f2tEERAkMT{WUg$h| zQ&BfXVO5cdl7vN+Ingg3RxU0l-)K$V7|H?HoMc8glT&L*g>T=o!XVT3zHz5>fWEDL zP7P@K0Bk`fE9_OSJ^96p5C>hY1#6yb*-O;tD6$n4n6!GX=c*A(<`i3uh^I-K^K}-O zG-eyCb!dN6nVq}jGes7`!U6lMX3r|&N6SRedG>)q{^Vlazv&9~vfOySxN}1nIVen> z?*51p8PP)%Y_9DScR62L75zeP9lR!h5U=$Dz8+8>L-74)x;m*l1Wc91xP1JAJmhNx z_76bEI-KJSCSULnmUMkvE9>M~*O-Dr$-bAVNWKX-8xcRBYu8LE%iRN8;viq%S;LBSoczPVcxt4fMx7tv?m$9!j=pY*bj!bW(<_tiwH@-$$L=rv83Hp zr8?Z%GoxVO3S2eiV8_~R@A4R-fb7nt5d+tg#AU=C7}mFUzz;HX8VG6KvEAD-9D+Np zG_&WYdVron@bB2B@s;q&$*ei<4#!Lx`lJiuP@p=`sO^wwEou3-zY=-a#82I@VQSzBt(mFI2X;=Q5_B>^P z)=-zT`Z_-SP(u1uFr|5BZb#Ie?@yBfu7b{cDQG0(t_;_u$Jfr5H%lRfg;bqH7yer~ zU8BS7B}!D9V@Rf*teUoLhXX0V_A$fK?TSfLr)!49WU18R>)J zXI&_iVMFNZpnZEx?CDOcgS~CL&v;b5Sz9DQV)el;Wsg*!53ai>#lJ8Z+|M%NvHw`p z+|h>3l8hO9ZKRw>jC%v|>~Uq_C2N+DA8T%?B_gmJSi8gE&V%`yHhfPzVwuM1cRaQ^ zuj7nf;lO!l22s0p7)^}!jsKYL=vCu#aPx&I=2i*)QSh0-U+u_=>oP<{g>HoLu)Se` zFt9KjU&cVZOiv}Dkq+x8^4`OQT!OzCnJJvqFGs1um?TK=LA%ez6D#7ld-m=8{WmAA zsOWe{-qKfrF%~b)JZpr_l7tUbI_C=!5RnSU6O~uos5Y=H~mx3Qw&to+dcN}qCG-S z`iq;yCcHpwd;Ff0J-c@uxTh|Sz+fb9gv;4uCAxK4UhbWxL*-$ZJ;TSgg^a*)Y^H8V zMza*^`}glcFPrDxC+V!M+qgU{D<~w|LG?8`(mG0l;3m@i+spzURYSCA%$`biF0G*! zvIZQ7CrP&H?FZU6x)+eA9&nk5Ka_la;Q|22!n{#$s=-0wUm#q#Q5lcURneDVj3jg? zCC1aslQP8G##+dt!TUhKePkDGy&CAfZcmsHrmH4!_2@ar$NT4}rq%`5n-MEWx>TRG z&`r%M>_x7zp9^SC(`QRfx_V7dKw5ZJF@C%4RF;)Fnb%>o_OGH|kM!i{A}TjO0s0M) z*xP{_S>v6aMkTb*(%TZm4YLEOk>5{cI>UxSa=%=_ zvdh3;(#;v+N+`Eb2s`8N3S~}W&aGY)g_-LWsAmI{Vwc41ZhI(+Nq}X%Xoh~X&xJkg z*n!CT0v}FhW+QQ}#P^qcaiKVkw}R{pG>YWvLrZPnIaV)Sjx*&>?w|g*PdW};G@l!MtuL$*{R=;>^N_J2O zOznOA3}rp%mAC%{E$f(&%YJKBp_n2vr6N0Z)iG`8eOK=Sr6)a|>+be~u;byj4^nsy z0i()aGBr<7LOM;mSFd_R;jiynM+mQq*_P@pbHvQu=HoVagpkGzFn}kDNl=!nY~ik{ zvY*cF>|E3_&TaC~3tQBF=Znh()z{!|BMb5OKWlm>n(`V(?VzOTZ*e-NVS)LQTLh&U z7*O*Z5A?}cv}VQ~D-fOD_1oHWv1vko?f13x47A6WbReBsnD&HCwLn5HZ``JT(NO5N zQ1?K>VJt%0=Dho4s1-pA~eQU@2pnzpxx9D8KqmMYi8v@H#~^t@u-wo6*Ocivp*cy?$zm4ob5g4;^7N3o12lG#OJ?7pCOd1% zYg|$IV^H_!{gKn{PM+ONM1wsSqBP!b2T;xS3+C&U_j<(hsz<&OaYK3M!j!s`mwtRN z8Ct7$sAM`2noYB)kjq_N6>!Xxeq9_Llp8x>0U}y+KW%0*bW3_|YW1p@<0jil4D#piwEfSCUhIwQO;rn;$e0AD+<)c~rZm&s|H>6_E zgI$4#^KnP1SDsdw+W+!ACeJN%H;N&mWw3+m-MF@nA3$MXpab}Ui?lJPEljk_jM(lJ zFuk-FQCEa&%hAN)4(-_KJO!Mj2`BziNb3DLSE~nIv6|*jKH95D`H*oqs@zem+*x?T zt#&AT1?-&Q&%f%{LXNxP}VhSwjZ>Jnj3remYfZEg-ndb*7h z#<3Fm_nWVh%l97C&DojXgHSEWH3sK%wX@emmGpLclLoD- z!yLcNi9HzS=TW@d6l0wTOtu{?L3Rnl(dq@p64C@)>b7ao-}c@pJjR8DFaZPMh}~}P znLbv?c4CS3yYR~RrSknVj%FhQ%Baab&NG_>VIux%O1nSJ%|raXeebq`<=qv$v|$|@ zJT|t}QCd`d zChsbBtfLe@0h`gXPRi-^ZRn;}UP*z`L?pLD< zN~)hF%8j*g+FF>tE4v46YQ%K2Jm;Ob5Vs14-37?0CeWNq87{d+w?Zd2JSH0|FMgGL zKsqia(McmaSOj21%k{K4@Sw zmLJ4f(~p{CN1Iv%Ity5|bDG0#cunm!xoo>pE_n*7&nDuZ&211pHraP5gT2n%OAxpyUoc24W!foEn01sgw(V6u26dca5 zM_!conWf7NB1>yo^TJJjx>-fCp+#<_$vX@=Rx377<@V!mN-4ogOSB&*aU`Cl!}oSu z_5&KCcJm3n-*QVor6S-X7c0GO*JEp0R96wzaHGM#phf2L?jV)8+AlcF;FY47^9V^j za;I*9pO9}DJv^!Lok4lX8g5sLCbN&dKc3(vA6Caji4e-p$cDU0UGW^NRq7G#+E)x| zHd(yseC17x6%a^t<$>owo_ZpV2tI?*SlHa6^AN=YetAXdS3-oA)_GAou4sqcWKA7m zDMK4GB{RuP85)cDPO-|k4=MO@CYN;J2@H2vfGigrs1;Hp5fnGuLVwJ+aY|oD{-8up zb|E-E0y|oAX+TlryEL)2ZGf>`VxsoGZC6NKv4}T*IU&tvaH*<0^0c{A*{jw2(?fB} z5u$w57J7{R)e;ZKa7-=1TI*RDOk3BALZ8L)XL=;mURtGm4#RPTVK~YbElW1$1ZI>P=aA+J@(t<{V*9^|R-_ZUe4e z)r0(C!hE*ZQdd_u#($Vt?%YqXpuWL&Effz*Db|MDvD_|(Z<_SS zd?{Rj6LDW9=*xa!zvcwqGJYA8#|B~kF6_-fBL{V6?CZPunM`qON77%DQ@ zpxXRJ;A5%(h?hO^&9R$EHg*%ttq2N;yUTK}O}Ok`fvey*O8xunv-DhSqL zfgO=|TT(RzR91CNEw42!?1H@m%Z_BBrr`AKqoGUmO9e0W?e-1Ut$#iAg8kU|T55>b4eZG zj*dvnY@zIVKl-V{LTz*1(keW0m+9JMDL;{%!Rl>MFB-n4oZrR;Xu`OddQHa^HF?v|LAS0=S}_NdC%Eq7>+Q z58pbK8(?6tMBIj&k25AJ){*MW|TGdqov{3CJFj5L!4p!J5#iL7ES~!JXb_tNrvUpD_?GgHhXYB!t-~e)6VQR;rafC<3N~tq z@;WqZO257jeiSI_3Qz~zZdp0Xa&Gw}!Ob3rH#DUbOYX+2q#EP{mL>v7ey#DnI3y{} zfzUes2Z_Wl+k=sd0!tSjDBSOIvhB8u+zn4^FXNN5lBso3E?Q0LO-QSl^G$5s=kS>D zM7#2a@t#M-G;Oo8(dYmJ#A{~hT=qMa!i2i6<4eMh-yi#+cq|$Yz@H!gbcD2BxFKH&3}nRR12ys zAK?X3K3E^sg%|BkkxurG`6yXFVR$fekh=>^-QEVS8NcaX zH#|FyhYZi;zY79oy1M3c$8!?pY=d9B*LspTjFp|5CeYb&=(>lxGRZYm!@5ia8iHw1 zT7;Zk$oYwg)^YIu0XM8*CAw~JDpPV`QI+2uW59S$Z2n1Dz;q+QJX(Uv^OCnGaKS$m z!JoXmVFNz+WGM*fQTOYLQVglOu6j#B?~@A6L@}486|sVR#EhhZ1(obeDde8rLUT4F zoFm>K@MpTjq~K7Eqc{P^#JAHF{Rpp^OG*W`ud|71k0B%C)tyR@jYqiWQ=9sC*jTw) zLtdbuo%DBZXtAZ?;X#w%gq%)IW=vPTlCZ?9W9`0ngNyEp^UQ&A*?9@7gK^w_vwkfd z1BT5{2DlQ=81W;K#~N0Dt^|7ij9g-c_UznTe3JJ2`k1`T2;a!`IASu@i*0GrlX>zf z0RB&I?=EEDYzyFwioY-rnIsuXaIC=uX?Dc&5ISPE^d{;F{MD;)T2wAJ=tvorIwFf6 zReH^q#vxl1_YT$|5sX6kXF^WjS>5YF9NB$rW8DcB!o8HJmB}AW;t#!b^a4#b;(3bJ z04^@xo}2T6Aw&*dAB4Xd^zi;xiJC_$(ZZLKQjkC=eBlKE%lx9y+)Sg_Hga_AqYij|5AEN&(q3Mh;6346+tzK)$63VmhVsI=u8VC@7k@&hP15al^uhvVcc2^i1^w zo0~DJ;|q>`o*dCtW8NY0KGo-ww%eqQS6rQufy+KqbvJ#|ybp~oN*rUBdRSmPYdC|q z)fsSB+2Dpm>Gyr;rs|6;3;^s!f>QX=8bgeuRFYC+#Cd%0Qs(!!vO4BpV|#clIjveH zM(aActlfd%e9~^pVpRACTCj~BEHsgK5c`Jj{&%sOhM_;~KH8x;*n!Q>jDOb3-81cawCx+jtd?3PS(HX{q zyOWN^ON0V1|7A;nJ8Q&@=Oek=I27Yo=gF8{Qw2aL0rwT1-F!K3aR9A(kL}IQ1?1J0 zFnp<3K4)8>heq;o(9Wxna&v^J^-HxOfYk@W1&C}I_DSd#Lf&rBM~S`;Zn0H;!0>z# zpTaC6ToOnk27CKkqXeFU-D?=YH`O}_ByA8z!KFahhrb^U?8`L|i_&l#8LH6?ob~?>`Il`WPg@Ley zNL)sdKmXN)eE{(KW9f*n2Mlk2!$u!ngz)(M1LpqtJYEw=o^;GP&6Ld@rR}=Px_z_ba_IINZpu_q* z0~%xp1I`Z#$vqLfuVs$H0*{~M?FDk%kADN$?cV|Pzo9o7+OQJ~gbT3z`660R0*8+4 zhEV_0@^^fpwgzK{`}bhq|MRKX$|r!Isni|`*b{pIlkK=!(AVFP(pdTy%=u~d|0O9D zw%UOVHP%^%IXGz?dm*F&W6yzj^Q8dqIOazJCM5N^Oy2y1uncof;_*qm4@p3FPEOm& zjS$Eoh>-uyNOb(_A(NN{+2iuBo_ciYHxN5Up@Z@Z6Y_jqyl?;f8)Pu%^zo?a^Z)M& zb(AW4Tn96uj(`3}dB+}~OdV7pFo9r-Cx(9dxcm!PRms2m6Ho4h{2f&F=+&PPA|BoJ z|ImcZe?jt^PE}qo1`K3?6}PimH0o8Imi}hrYNS!cGc7K$$bh#~<3<%*T3iU2F4y-t z%o||P9$N)wJMuD-!;c?xBR{@`Yv zzl6(BxxH+odi&(UANQmc!jgNg?7pgLKiC3D+Zdk(rr6e1%8|2v7h-EEfc?FiK^~`o zWj9B~dbjSvg+1my59S?2XVaYNAJfg)kA5Zmh`k!y7{mp``+Z#gdy1W$@qV5$g{}&( z1d{HA4)N&H|88a--SzhY@lSCH!Q}?Djf@(9Q2Jr3VI{~(4~}Q*ziRJ46Q3ti$nBs2@EgPGaO5t<)Wgi3lMX_)WG~pzxA{CZRvlnz>aGFUp&pSF>>^H zEeaIr2Ta_-aXHaT*u%fCe?F>uV6w5~0R?dUY+h!j9H4xdSEs^=-YTvPGRIyDV*CZI z-@^0{nfagnG)SIum1_Az-F9dEF(`fs==`}D_>bn~-@fgCCYb(^%6}U`RZJ^~1S7!? VP7+m4*_f9jFQalNPwL@|{{p7GU8n#6 diff --git a/umn/source/_static/images/en-us_image_0000001569023013.png b/umn/source/_static/images/en-us_image_0000001569023013.png deleted file mode 100644 index ebc69763858c74127b4b0d033702bbdf85661ccf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3I*Y)==*5R2aAKmY&#uV>R@RLhcd zxv|0ATJqJSD9N(D3)>P^ngS2A-7uK8{`z)XC!lT!-R*N)@7YJCXnZ diff --git a/umn/source/_static/images/en-us_image_0000001569023025.png b/umn/source/_static/images/en-us_image_0000001569023025.png deleted file mode 100644 index ebc69763858c74127b4b0d033702bbdf85661ccf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3I*Y)==*5R2aAKmY&#uV>R@RLhcd zxv|0ATJqJSD9N(D3)>P^ngS2A-7uK8{`z)XC!lT!-R*N)@7YJCXnZ diff --git a/umn/source/_static/images/en-us_image_0000001569182569.jpg b/umn/source/_static/images/en-us_image_0000001569182569.jpg deleted file mode 100644 index 7747408f3cbfce0834f8de5c7c825397b0c22c9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 136985 zcmeFZ2Ut|gvM9U=l5C;p1Dr$A0Yf?(?XPqW8vAc`c~KMqW-t_@@tvkAz;sWb6@Ur;qUz3r zKg=Lss6V{J2LN!HEcM!^h8?`a{B#697m>|Jf==aVo~oG)nf<3kwb7 z2j^J7ONVCvhjeIeze|UX_LBzM1N2|CNwYUXt=nz1o#A0goIRl7wInY{ma+MM}QOua05~?&@KY#q-YqVXeXZmMv&Wc;K)G@ zo*x$)ItJ!BENmQHJbVzLhy*}K!@xkt#5i{j6YM@TZ?GJ|Bt1uVkyjdvT*CyL*@1%Z zVblv87Mc7{l$!0Uto){qzPNbjFHlj_uwA;$e&wowppdYLsF>^xIe7&|rJGvXI=6N2 z=;=evVCEK!9i;7E1 zKa|zfey*!;Xl(k@(b?7A)7#fSFg`IkH9a%?eQthjePeTLduMlVA0-z!0?x$xCD~u( zA_e6_$Hc_I#74=5hVBXm3{uQ<7kRPBq&2Wj9LSmZ9^z2QM7_xWgv-LOxk_p3*p7Fe zRbZTL4JF#CWdAwAeE*ju`z6>Pat#0k7-(SUVUPk4U}v8lc=-VDG-~Y@Y!R1_@ZS0& z7Zr&+b%d?e<&+WodH8W*9@(6J69>#CTBKEdb@;=lS-Nls{Vu_Ks^fAO{V4#A>*s!t zdc`%KQGaZ4i_6F~Ui05KHcVIl43p7^GIU*6_%gJ_vXVR`oO`7>b>LD{(kCHAyeJUQNE&eMv%t|Hi)P>n!d844{?$-N|b$#pKs|44&gmAZ76p82pp-XWLTCI zyWIXX-U%&xQ1<5WmoFD+q0`}t_z$#K-IziNHXYwuZ}S}p87Z$Am1)X!2R@fp@LU*j zc`6OO9U0qcMcy39xxZ{h=o{Sl?&pX=DVe#nG`NRR$b8^gEW+1O2_PVvio9ArG|<@Z z_ExDLGC5+rnwAn9_eQk-NK%t}rvC(JqfI%)jz47IusH!{!`hB9nvW@t3XUVa_4d3M z4jXgLON1g5UVPZN$#po`yp!K{Kfa~l1V|Q!>=JYDs%PIEUB$j8^tR`qcQ0ITiPZ0! zE>pz5Yy9EWF0E^gdKeFgq?}-oDD;>V{w~!R->MW3s^N z!cJ)`YuZSU>s6sx-Mx8gRq0o6*nbX$V1R@Bvo6`d_Y0jhgJ$8_FdGZZD@@1tw8AIi z8bU4aQgs%!y9#ciyATp6dTob(#4`>Yrm`K6^n{WUq)4%$D_J*-C#G+oXt&Ee2~a$laqT!&p=duHVO79*OWvctHz zP;3dwE9nN9X{yh4T@@p;p;qy86v1aR??u);wo1`P4aYiG$NUG@2co9fNd4E@<#?)J zW+;w1x=h|(xU3lFQs2fNx6Z0PpbHV25E}c?#)ydI*E|92=41N5o&bGw7l~MI1kX`L zW4A>sVpyYBwkllb&`~ppYI_kfUI|$3>>!jf1Ybz7c<0>8c~#)QCyg;p?>`eYDnRtsO#`!noU88iMx}Qv7r5Zm2DN5vy7|d=(!sRfS8+7257l`@Voz?p4ilLC zsueSnFMFr3WGy^ww(zmOHr5Rp6-y6^q0nv4>Z+V1L_wGOmI*LR3pGUHR+r<7Ovh=HEt{h_)P zB4!s2d(%%GFqa;y{+c>l=gH)kMMI-+8tUqxVKsB}y^`7a_4dJ|+>adGaSAM~LPR{0 zS#yV$35S>13#}j1j9BA7x{C4neGcYD0-x&u6Tv-;WJzMS)mq8t_OiIui5F?OWCl~| zwpj3_KYjwBGh-H+@;S{azL%<=+<2S#M9Kj8s*=AUeb3P$`2mSTIMw83Oflt=M2>3k~?ujzIY zUH%ZGkjpbf0hcymmIpVz!$MEd0^YMk*?TVwu7OiLfmMl1_^m@{qE+GY!|c$5YmlKM z6-HR#LCTw~?dWASX5#m?M{Qm0+jo#3_7f%3%LD%gf;Kf=N0&A$uiofRjTLcPp+n2c zQdHVl{fyx4;v%@zMw{C3URvYqt`L_8vZy+5y^bjTAe_fPsTp$GUfSZj69BO#aFkvi z)A-ONKvehs_^RR*Xjr!dm18`g#QFwbr%*p*_YIe=B+-USS8kDkKv`j=geo6S_LIZ{8dqJsD+Cv<&5M(>j}_i89Xocfq{_hIV1IR~vCjo|fsxf!}yjEpgZ z%b8j+$y)>HIE_;@G)k6Iu9pUf*wcAlzvW^sdN`9%Bkyj>q(G*Rf{D?U>;(O|7?U)&w@%+~MAef~ zu78V}{`!GRtLwR~XwzN@BI@BLeX&n#!b0$s;_=rvN80=1f}wa5RhMWVju(+)OeZ{1 zd3Y#w0<3Ztw)6L`HzUz3T?g1^(wvd}hN|K9w?k73_>w8@KQd(T3`KR)m$&)bave!K z9;>ropS80G@5lYfoAseXuUPjl+{U|le%=E{`8qf;blpHtBA=klS7vPElgJqP9=dmS zf-&iR^*Rb+egp3pho5Hgt)h8I-d)pvGk}KQ{gLUp5RYnpu(c+w>o-eVE&T!mZ@I#z z7cS`In40Jm7YGZW~%S(S}GAuJI!G3v;O8_bVRb% zN&R+LAg5jUGqsWs9GAQpwzng{fXhjM^FsALE zhnK$c?B6mG^#3a6v}y-?u3%r+t~!xmRC#mHB3f#VCADdBu{QC0ZPDsOWvq9Jx5EdF zlg$EjSdd?QjM`_Z4GBu5m*t!iC1a}s&5DaPuBJ{EIDYkv_DtCr$nKZ6L3D<`T)85= zZ~_omdKVinXHHo)xw9x{$&5vcX_wusKU@^NVP$hy&^D)EeP~rtVpaO^@qRB&FPVxr z*Rw2X+k#d#4w{EU8VPsK8xjeJWr;=ehQi)-R{GwqPGHL^E^#nurj{WXF)EPCyks7> zy6CO!6}HZEj73L~*b%&;9MI0CtMPcSb>>Fw@(xE_)83u@NxugoAII+9j&QVD6jS!3 zNS5sU5>Zk1x-1f1e!>ysUc~cR3GY$4y2s18`Yf!jqynB_?8wlC?FQt%UCp4q!TMOM zmI*@5IoxsU{iF9}*Xy>w_hApP*3x14!-oSfXS3091)5pjrjv#wNv-R#SRT6z;;c`a zKuejk#`tZ=yauJ0)J7`(l*zrHX$eiRm6Qi5@)ZjLUls4P#Yd-ywR~{I`H1PucTRy$ z|EmknkazgP68o#FFM^cznI^X72|ix$a9o{+6u-0Un!cB{DCtfw3zDjJr!&15c8%uE z;PeuP3zgZVXgwO6cz|e!La7mkj_~=;fhYbo$P6qO^;9e(Rg$%#Rd-31^Bs%axxo#0 zAE*dqOp}dVYi#4}LYI7cRS~p@JoFCD&L2O%=VA$Gja#@K-IwLwA;$;`C#Pk3qj*0#*|>?OsA64l>SaROaMSp8Lo*`3>NkR>o!Xtt zT)C40$341H)h=)NqIajpFj~dCiUZ;@7W1z)7X<-yYwAbAkQK-bN3tNDPE>ZV$u@g+ z#R>2R~g}(`U(#f3k_tx)Jw=C7$iQ zHzBv>io<&L9e7{b@y4-fM83k&>|q_m`l2J#0R?gd`Bh^Ze1bnEJ)Dq#`H!&`L}fx)GtDR46G~P&UB- zqz^%}Ua{7hc{u{1Q0RHbtI7l`FmqsXal5^)@SeLv)?{Al31C&tzo2yVFk`WQThYa~ zzogmFb_$xQmQcNtwxBl9c((;F@q7|pbYomT$JbBkCN#cNbiS&hqFWgTZV07<((s9q znt>~6qPmJ2imdn6u`?+u(}->$Px?=msAT?FzvAcO0Yqe!R8Wg2;KfLXrVn7yvMKz- zFSurgS~feyWjn1;|-mJFL`_g56W|A_KA$7z|^X<08AlYrrD*#_U<(aO$A&DqJ` z*$D)qmgoR=gp-yj9By-pp=9R-gV{OTq6$#y(_dQ)Ch(W|w62zw8wx|l$_Z5mReVMh z=BR373)7anqYZ-28au0??g)pQYr&kH?bS^0L&3sxmKQCBL#mK=sLBAI{jYK`cUn=# z#>wsn4+N&pRyIyncBe$Za@-gWdF$6IsK8jWom=?RibL)F?m02pgwUxVoFobS2dEz}V|#{nvhLI!_P zYy-Do=4WL7(yTVP3j24>YC&zz;OdUh>v|{(rxyv-5pJ(*2?IM99Ftad7C+TTgeuSk zd6I!UIl*mh;C2>2su27vL9y@~obV@H)5^l~_X7N%1t4#~@KLh^W9f_s)H*mg>QF1< zr@yB&=hA5z(P?}dK^~mVH;nbuEFQRaetP|wg@mV2)V$R{txx?c&v4q-#%Uh+GzKHI z)3FP#WTP&;voVhXpW<$vLKOjSb91o728_Y=W>o19$cu!;Ul6`ixIP&F#1TA&pytC5 z$SKWTFb@FsKe;~R{f`*qJF57P{O_s%ow8G1;Gk&#oSo>`!PyFiA9`azrA}AL&t@|X zDvKcrMrYikvH)rY9_5VyFnvDzG*}c{JOa}{CK9Ur*Yz6=h5u{i{_hZe!TvBCfSt1q z%ATQYE0!tT+0G2{mstyS;swi2%`!9v(rL1Bp7 zHn&g{3++$soI5Q8!DL{-KFuiI_^mB$3rD!K{hvTsa7QZ(t6w%#P76g{?Gy&mAT)7y zf-Au6V2&nEFf$MUXuI40H1c?7$S4S^MCr`b|5wY8;p}Mhr(4CT^8XA`L0J6xc7kPM zjbw4Z^Q`L z@AeAM1~hE{03|RzHH7~F#|OLE@~`NpvyL6r5I_J1bja#y`fP@go~A(`&M6kk+jcgf z1y1uQe1I5bJy3Hg6%6iRatr__z(7n2PyuM5r)mixIQ6|5%c=nAC(8iQX$~-Z0D#D# z3+fR-fP;gBi$ef9qDb-a@JT6&2?&TOsmRGG$;qim2~MvcKWCZ0#%P52_=H4+Bt%3c z6huTs6sU-Z;;ahke}=%B56d0p!(#sF!x{!>F5by!GziG$pFLR^phxGYCkwn4{J9Wx zqx^DnkpO6zXrPM={TwzH&N&PM{!8;!5F5ts;aedFswy=V(g==7ZW=TWu><;LS`r(cOU2mYXQ1Fz6i@ao*AO{Z2 ze&Z`k9dH_V&GPu^(dkWQ)Bk{>3y#h%;TGCwa>l@ee$bD>Zek-Sq}ysuVNRg&Je)PEfFj`|k5 zQ2FYeO@n6|o>-JCR_@}9AHq9sh?YOt7Jchkz2K8r5ay%us%B9a3J7p{8ecMnC>%Q) zk}lo7i5XsP{qk$vhfgok)jm;cX72TPA$`lzo&w*iE_FpKU3!aB%o9*knJ4YPD`)7w zrsngpcCK$o5AsUvq*lxnzc>r+{knDsTdD+VpV;xQ?l8^S2Mt2QdDhf+J$fauFxTo1 zeJV)>{MT9wruu`~Pveqtrr$CuMI6g^blGGF(SJGMt#%$oME8dsWG*|tiRqR=ccTuC$VygE?jP>YEh{Z~b1;>P=sk4ZS;DZUa5*6W1AVF25NY z>NI|%Ra^P$#iG-(U0=%Lk}63&EJLQmYckW@;Nt>8$z{>)zL^iPJUZ6ao`&lSjLsP| zcLsAB5tS+XI+jOTww2rqRC8PUc6pnHede&DmG=?4^2=pmRsIntK$rnlB|dpN%)o`S zh*76p&Ryty;=<*w&HjS9g2BV-l=RzDd7IaWVy)NjBL_I`HwUE86_qH6Wt{-xLn|3O z2j8eNSe2L>Ql%q#A7`;RZoavC0$4Ma`fQ24-NGd$2?`BJ=bFIPlr0{;g+YFa(sk?B zZISm4`Qh*m>*R0p&x)}3q^2;H`q(2GWEYltjk+A(fqY3NZ}-h{T93?XER_1V_V5dk2 zPJ(qGek#qf-OTdaHux-Z#x3HzXulshBZMD4)aKH@=i2j~ftjV;XD*}f%WPa571Nyzsjm^`N$?@}XDtnUnG|fYISLs@2HOCsHGDK45d2O;p zEEvhp=Xl-U?lh3K1{w#jON?9P5AGb*?qpIazrXQ-wwUY|!2>U?jMMR+a?<&u_n#O+ z^{?|^z5}G}KY21U-L;VQK4USS^l;L(7^B4V>1zlDRK3B_p{{;R@-`HMDZVmiGhx&C z1Ry>EUY(zU9#2-cAa~fPCIiF|K||#jKNLJ_XOs+GB7BF>7$ZBf9pw2giFI*Etum!- z^u^Jmn;YCj2#&A0FD;-Bbi=reiVYo`&+?sADI+oT=U5%-KZlJf@3B{f`7j144@a2M zInq`P)635qDbptoV!S0l$n!rdy&#$V)XNhx*|UAQ1Njk20hg~P{+tQ3F^hYgtp4N^ zrsg9>_V>qrK9El^BY)?9nVNZe`7tAdIU)zUHkFnwq~{*;`w1Xl^nBk2UG}*sLoael z%eLXD0hxFLEX(i%nsd-7aS=eOc{C)*N1U~CBqaZqEZu0v#!~)QI9PLBct5MoO*lXG z!=_k&eDya=Y+Xh;(eSdx2kSaI8`r(Ox&`%w)W%sMN52Y--pZhuI(!;*g=-hG-+FU0+g<77#}rxMk$nV zH4Sbmd=m4sF%iGvM}~%J3CW@8Ql2k4v+7-^oyk)+|2ns4VC+jD{_|N907F-_)wO-# zLy5P`cMQ?Y?$XGbcC?WMtBWIfFTl0p#beKJ`?yurgVr8Kg2mn(cGk8GOxS((;`=?f z>zak<^ST$rES9hZtL+4(Ho97R0*lAypvO(+-;OAsT{(~%J^{wI^$zE4rdV!sbu%z4 z24xXvm`-cN%W^k(+GKtDkY^RC5PfwDQnyuH_Iw~><68dPdy912ExGW$qDtqv#-MlU zpwWF};e5BUQ%p-?kaJ)bUBAA`9b-;JusU&cGyI6=n*`NeXg7P^ys&{j;Eg;2#UgOLTQk3IOAU2gY$ zPXLXP!O_e)7l_B;T}VPF`*$NaTjkZ3Lf*n*Bc|wixRpzfluuaC?Rqn*>Q!UQ%?oe4 zlyYCy5ZsrLh{hzr(YXBB?~OUgZ7h4`Qtqo2p7uAFRVm^{x8?`4zx#(qHrv8nq7EL# zp9kHuU!i2u0+jGxt_OU5^fCN0Fdd4ePp!)*hjv&H*9g9b(^jRvI&ZhKGoS!n79 zb$s==6EL~iGUsinpO|eaZ&d45#);GPl=ck4Z_UjM?+tGAc-%e#1PvtB+I3>~1$&So z3%NqGnwP&}l>>{Q+g2klVt9*IizM_>5JtwlglypBzR1p|B{C&e&?9})y(Lbc@88bb zuhlr;SDHHicwmD}%T2<_X@3-;tPFPu)WNr7pICAdI zMH2aJRz)$+ZhkQ-JMmRS^2g@u+wtei=WL+;i-&{H_Jxo4XVtnZ;_eN8Gw8|QTrBS) z_9i@#)mL%Z_tf9+IFJn8TsZ;cEH-=+2fuP<^->jYhLzSlyQyWIZ3WV!@Ibkv_=n*%Vs~qi1R=pcqzdc8}H5g@2Gy!Mb}nC3?11GT?yoo)GQw zYi)ex7exoE!{BpEmuLG}1Wb>pMQw|Uo|HfH6E=rfj;5q3O)p8$hkCYp)e-uG*H1^k zMx;z@@5kOA7#qmlG!*3O>un4aw(C7~WuGK5lbKM%;eg~hZ42gkcNay_KAo7rNW`!i zsx25Aj)2Bp=-~?U>*6$brq(er7l%G9@}0M{_FjZ_c?z#UCAp`&_a%du4Q%Q&0`?<> zY~7rTOnXfbe)_c5{hL;Ud(V6lNgK<3CT&}-BJ~&Lqe|=nVF$*_MNNB!_k)*R;uZG` zXU)a4oDIK}`5(Vs{d(VDAcTsB?!ejgjotQst6h&z%G}!=*!8fKh=cQ-qQ%WSVoSNh zga_>RXgn>3m;0AwGDcoR+3J+=GrwO|Lab5sG%{p<7(4+KK2)cf(vdD^OEUN;u(c5m zl8+$!f_H39TzPOKd|N(cUdjooW}OoJM%7VYVntgbrngxsmj>TZJAQK*6b+D|e~*#N zJb;pS39MKZrTczVaw;s!+Ya!t&N0o6N$T);E7<2ERi1^w&$Tu*@Q+p=h82knzJSV>Oq!#>ky4-e#tiD=_j;iA-o^5@zJ@|yz0w}T zl~%j0@*t_lm`&JP6JA;tBv>I6O57(sTQX=QH~jiu?+f}&`ix~nGw z^@6dc61Q$};VSerqjFlHbq2a4ARv2#7)a>undGv({Mny1x~DUZ_-1~s!cakadX=txJ*!cV!5DjTW&WKdv0DX9&SJa;%09GwT3w{ znZm#|B1z_z@@i%#D>F%ET|pHd6?<8jrIn(GBTUOfRU7JI4HY$GhDZ_ONw|r*+1lH} zoJ^S9Y;EiiVs4Vmr_{y3Gz!ek%yf$4WG%^jx&Xj*M@5}U7VZdR666x%gz^gTF$s%u z@e1*X@(El+ZOs+t<`L%R<>%z#72^>S;}>Q6aWR9<;Yv7~nTu)OkpIydn3H7wA(yMG zE0-%j7u?Z;n^#m+l$(c-n~#qZ#Nb4@+c}xIaoQnRPHCJGxdB5!9j#8+{h3fi!8L7X zCrM_I-7`6C?SE1JTaEohG=u)avj>-}PTMzwa>Hz3wlF&<1gKqJlnzdb+W*{z{Hw~J zNdGE6?UJ9BK>ezy{C$O=y=QCts|kdYoC_$%f7I6q)Y22TCJX_0c7(#@TtGHiel~`1 z(uDn?(m!$cv#~!{2hmR}+l$FM!c0K-fHoX%^Ruh}@LK)Du4`0-KkC3hj{;1R8MO_Y zlShP;Pgt9mSB#HWOpuoY+?CD4bB3w{H?uN#{|l<9_Rk&Le?kSvof+t*_@~HbP%(43 zqpb<3Fe_UV3mEr(dzb|?)31IIy9Ki_fx0WHYs=oSvVb8#JXvAE8@$4Dg2DnafGtaYTQUm8+KIPh3*^qj!KrAtG1S2s~!UO^sSL*w7b3f>Up6%pYRk(cM=UOe`}P)pp?*54RaC^3><~^Sc2Jno4M}FuB5+w*nSrBSz(kl|fS*%P2r9tI%L}GV zg+)v`1^IZOf@Ux?9zK}q&-ypuP-m2(Mb$sM@tDD(AdNrfFlbiz`S^u}IbmkzBAjNT z0)m_-B4#3-Jp8;uyrL$;!h9mUKdGHLLriRbr;6gr45Y|oY6{~u6XxR-77^g#6yy;w z;}kJ97337*5fBjM6M*uIm_g6(FSrt?He2k+d`8{3!0YtZr3G{Nkv+@XSTUViY%vok z$^$LQ3`JQ{m>KgAu+`tF=Rd{BkNU2l-}KM+&D9cZAzAnb_Nd zo-`9w2XedEnf-XY`ZWTXoZw8q-Cq8Q{>)&GR=;WR_r`v4!u0=rv;VZ)_+g?@n3<3n zr+|R4IVYbPI0sDmd10I|ewYXhCM>`wWcGhmxBXLr{&QC5Y<~P@9RA~D$A5Mj{rTwG z&++>=gHeJT^-%iDTu5;LjY;`oW^SB~7`#Y=gpPhE#1DzOXLVp?6f64s) zX#dR5{J&vF&*sRP4t{%3KYar@RSftF0A@g~{CxcYb3b1c{wsg~-N?VB-G8g=-|G68 zH1IDW|9f=(TV4N>2L2`Fe~+&J8`Sm3x+KibO!BhpWr)=28F+LwG}Ql(3*#IH>cRrg zUxRyYz=QE%z`@1G#lgV?kICZ^;^E<=HVHP2TU#A0Kdkz-Owc?~qvRsjmv3)nQe`(KZt7liU(?WzI+rF~5fSkX8Kw!LfCufF6dmeR*OyJk_1@nWoeoVe zOPZ$qEWM^Wt+v8>&*Zp?<5(~gw#HYF+-h&J^L%cnv4_~#?rL6W&}A%rJu#>Jrb9y~ z$649?rex2C0?$fOnKyEO%lre4Reut0W)>d%%gA#SsIM3N4-DpRexG}e83Or*=I(gq z=Z(Nu8Md%Pyfl*;iU!K>&P%Uz?|8TE%~Wj9%qtHD#F<;MBH~OvdSCf|6stNsX8bx{ zXL^)UPT#yg8Uh#WfkmrvF|@y^IhHC4dNUt4z!_Si8&9II|FJwh(H+yFUQ(F>*zf%c zDP}yR7_0@qn8L+X0U38&I#iixR0=nKeiWjDRH9Zj`ZOObFWP*C3X*gJP=lvuh-r?$ zi4_>R+0@Od;)B>vej^BIK&Jk7Y!TGD-cyC3A&WqxI4zgR3z*NtzjJF zNv^t%FRsf9hjMNyKiys5EH$gZo@2&fJciu$1P>IQd$Ox%%d6cX;b5P(JDFdMhg`{i zfV_Fw@UmjhynC>tF=k7=)_7GH@W#Ey8Z|h;1tQh(vBMSnveSqjkv0lyZv?+N znB#$XaxSMAB$x%rhs%BcVlU@>mu@%gOWkX4%tpxO#UnW%h2yV~RUKn$FSZZGonEHB z41BBWkpW82jxPx{&%aOEdV0K=a5-ZuuRZUPG1Z~yTIZ+R`zL_^mWVT_*yJ>uTQv3x zU9h_XH65e6J0|&e`3y#CTFDcD{H9K(%0bTl`77rwYdNrPQ)4pVWcDWQ%GRyC`1hlr2Us@eB@WJ!3&6A|p5>1kA@aFwq`STG)SuZ;CUW7B} z75GK9-1i7gEIN!Q^J=-+c98at@#b#GF`n^(cgyP3(4qLM&Rn2jqGVasD}1j3N1hWv zi<+M8o?}Zl8r5F7?sx7%j_tsZZP+e;wp-9G+bqR%ak1piS%!h*JnmL zC>K~eFg11)XJ&Vo#%bO0iYv_(kH^dzpJM8AtX(+9JptAZ)OQ8l*R(!Ykyi)S78lp- zD|{#m5P!@W4sqjj-FxiE6!ngT?=$pL72?e+&7>PctVxCKLtBvdLuA_}YRiXh`J2Q+ zK8$NOnh68)O%VJ}k8ffI9;4eMZw}|hodD)5{UP<$MG>FRueLoDNLli}OKVXXr9aLT zP8Io@tL-A5D2(1wi7HPoxS;_Qqoj_iiqT7_1MU>k6s6yx9Ixk?qbRSW{$81uMAsf# z^bnhhi6~w4C^33wq_=mOKR2#b;3$Wyea?9fQh>b#nc(iXm|zv_3E@|<;MMMOnssEV z4uLpVQklit^JR9O*P7|N9r^qP8~bvEz|rSj(KT1O-MQ7-TWj(U9k#>7H6!c^KSzp; zr#bX@zsK30Wb*Yk7;kvIcia|RsZXXhQ{B6f*LVW#vgs~KUam0?%^q92Ih7Y!0b>u~ zSy~@7b_#09O!#ck^>ky$dW)uKd~q3?C^X1wL#_6La`VYFojF4rva2IZSM|QaTMeDU z^69R^UAqhEjkFBOqk%UIj3qi%zwUIFm7#7?HNmKliTn=<6?vb9s|RSNyGGpv9$nd{ zBmRcB*`kUpuqq+*^P{sFjl5KmT$z)c{63{|1A%M#(#Q4$_ym*UY?|N>O=R>Ne|i*A z>jJr-gtmZyNJLo1@kvV5Z{>w8^g!$)$f|?E9j&8}g*Am{Lhi(UWwhi44j-9TBv(8) zQV{EiPnhx7I!f^&S6CZ7#xq#WtS$5ZP|?1GoUldUbAA6ZxYrpunbB(rl_AEqr=Oqp z_CEnIQ;!n31xAAgX6pzIR7#8V1S|`U7?dWiY(H|p)!CRp_qv}ffEpVSp})3q>*kAq z=lcWA-N{u7(%tp)LY*$&gA(`>Ds;i`6_~DmslE7c9w+bO8ulSMxHAwL?0khg&xc|c z&pLtDEBaChrVrGWv*kc4ffTa)0m>otmnhpiTG~a;f;*HI z;uLiuynF(wj9aN=5hnRcY482*%z~}`!*0A+pbn#7Ytms0_C-9nGv+F3y)j~?)k8K~ z)V>eDW|1C03QgLDt?GUPZ<3oIu2nFO!-;qA_Lvgn&v|&=4&kN8U(_f)c%HbMcT7aN zt86_H(Jw5$=4gP`Ey41(fvQwzFRl24yb?w7$1laRoh&0&sk?cr69)!sVHE@M^+*ag zE_%%|{qOs?Bc00Gr(*16{J^_pFF75V{Lv${gM44*YAf#k<%P+-MZbxaz_N^&1Iw?n zt;h`wM%6IwnCvMGvpcnbOC zuhZ)UD9{}dN*kwVB$h!~qOA&>uH{|o%)3}x5;dNTO{Tz1$Hyaz$*69v1(TlF)k}WE7oCD!icD;CbixYKE|b<(Cw`@W4F~S;R?wf?oU1bE`IqK z!Pr{q^)gMzP&}_uVGv2M;&nu(=sDPEFNrq0H&b?VLh8I)iDp?u!42AVk>jGl9#MZO z{dMK8?bYa+^tTimat=us|@kFo5d-)0`$ zhlja#Wxh` z;iiRkC-XT}U_?V`j+}Sd)+TEhX}!cLMku>-me1pmG@GU?NIqskW01-YC5>8tZm&2~ zeKC8udMv4$*5;V-_?!CMH};%`DWnETd{#!q4VeD1FQY0;xQ3nstgK^rdy5-rOW!xL zH{_Sxmk=Z4hYj=HN6&Mc#V;MW9BxT9?B;@|WMkKLEo8fOm9fDa=3KwlTU&m65UW)a6<%0Bz|6usi{jNq73o!M&JUy$va=>d4(|!~xZ&YIG`N zgWSX;yJ_|KnYo?Z&)@0k2|RcjcYC^NFz{;j&dtM*$x=M4DTfrw+ljk@1pC8z_1urP zc~x_u0qc{>1)k?jiQ4I+f^B<@*G_azplY1+z*b6IpYBUaKLr)P;dO-yqR z#~X_m`b7KmRIjS31tN<}KEnf~uB>G(WNPiIWhWWS9h?I{FESY|v)b6iH?}OZy_)hQ zo3Mfh({D+vwa8+8`0B*|@jN~Uhsc25Y|>|kng?bDyklrXiHC1@F+c+}+jC5$=01J` zghUN^DJEX=lgrz^S4S!*A)vw-PoZf$PmhBw!n(z1;4@-e#N`KBOfwarml3bujfI`7 zf36!K#CI+>gQE*elN|f`hvT_AWzIU!n@(4~IQymIh6gvgX5Tzj&%F7{ayc%$&8%8> zwr%$cV|^apA#ArKLuowWMb`zTe4$?bN6PDlypEqJP5`nDwU%%3BCY(!;u><^BNvEi zC}Ppz6PgFV65_nlPdD2!iXY(I|LpiF=?M_Qy{qeP z7+6y-nLpgBFv0;o@I$`p8fzuo+#0Tkus%ntDGff6<930D0r;O1C}*W4JAFP)h#Ks2 z@iHH&8TUexJOuCU?#LYXbVxMz^6O9c(lKC6hJTrIGUilXdzVR`c%%lCTww zT5Nof6uaK2-u(FiiS=FQ+>6aB@GHvhp$!)QaDG5FH;i4O^VBL%pjt5LZ5_BO3q1ijFhYUI82%qp^(beX=Dy1|BdReN?J1=ljr zs0SJrzr%aD&InhluZlsFGx=T?D*!i+(g=ysP_P|K5GjpQJZ@cRmH$eauAO(nqN zsCgqSDq5BKP39`E1~?V9DgOJ;LPPKrnU|Wwcy)n0KEC_lj{Ae>Q1~s<1%1uTt1;@~ zi@~uJEG;alFH0f2`ZR%uYv6YotH90O!D+|m174f}65tmdR{~CeiR_XCuIl&^#F0nT zh=w8KAt#~iu^V{YV3hC#r~|+0f-kEMo;?sk?$jdJw2`ph^@G}luJHBXG4N=R<$cDD z`nKa;`0>?l0n}*6oC%Rb+1i^wsps6qC@C$-5a;g5{Tap_WliTl30N>+7 z$+gRi3J#fvq6J;oe3*ATRibNVRjsw?e5m=Zgj?y`V8#|NuZOx{zS>HDj(Bo8K6}_Q z-qcz-h;y3pb6{R?mnY3OF%BrDXqC9zz_GXiw?BhWfF4n|^^xG_ZbSF75c{EGUb++} z@>4aE?9fU=m_fYP34+;2zA^Z5bU=5KzW4>n0}s26I}yvt0q@+rvah9G<%up#epAFP zXV;vX-_3uxL5kOXr8)6xQ~E@_t1HZ9%VVFB+lzlU+hL;eZl_{tLE@xFW$eA;gKP5g zrBUIOE?lY;igXsNo0R)$2k6L80+4aT5k0rw3ARFh>&PgfXX!$$DxzgU=8GNSU-(Ei znxXJ~pC;t0YMy^}ehxmwe^bkS0^Ogj*ICFQN%~XcMPoEmO-mB+;-=wVw07KC>1<5 zBM2-x#)n1ZYH!Xu<<28N>SCwvhN}^aOYjUx7j92ew zt*>=i_v~C;J+|l=zpt6OqKx?GlRLZhbap3I|JRrd`e{n=HTh45XSGm}cyH3;1n?3* z0Vox=jgZ_GQk9A;>~D$xVj^GvSv<)5g+1@_t$77^@L}$`v;Th=mxBW+<_R#v2%hkP zZ0j#_MC|6B0N`EszzSTX>$NjJUSmv|YPGRgHQwr){Qfd{KkYNPW(9sx`hP7*`UbP- zJ(h}Oe+hm|`M*Kzl3Cp*csHOF8hKp+v zpogTNV_bKM`T*(Ep<7K-MSUo>HawH$IsToKOG0*hP*T(2&Y)sYuzY8I9YwMtCc%bb zL~ULO!i!>!J5Y*I-^xQRSb!1t(5730ejL2hki6(xE>xyiovwdHqt|LSN*CA08h3M1 zFYcUW8${5XZ~{D_w!SiH94g^3jtoUo95WibP3N+9=Qt^QqffNz7MB>fCHaiL8u}90 ztP#ojNn%VV8`4Mnu}nA63nQanX#)SwG2^c9N*#|Xys90MJumFC6KObfx0$c}>-w|) zDO0?p1BXXOv7cxJq1a7nMO9v_@xrzgW^cE43Wt+4-(aT~jh+B1twJknB6B6>ZyWbY z2iaxAr){7^UjdorOKk!-b0UTg<+$>eLCNiAgy z9yhkzsct*F_~%Yp_)mr3h{g)O5nC%S&r?>tc*SG_4h+ogH+)tL+HVUk9QKw_%h>(0 zp;=@LRjO9}dUg9-h)HJcg~&GY>&2$ndaM>ZO}_1d`-dgBjojgc+}?|s13P!O z7RR4GG1Mt3*t^+LFlb$BmDPSwzTtj(N$&NbOUI%60q@*?e5eFQ+5%1B=a6PXqrxyo z^?21@&Q8^?jN+&<>%IXdlR!?JbyYG1c~0xaLAEA{9e2>}GL@7%+#D}T#v0|($I4^U zsYd}*yTRKNj?L*yR6H_Z(60b=J(T(miQW4$`wchwd@Yv)|0P7%kLdg!r$}UH7y!Bh3j|_bI zRV5`A1r?R;smZvLWO5R=+5H?WR~lhVkhRqM{GQ2rZhF~RV6 zJ?pefY%dI&b$utqACK@0Xx2rsD%aM33=P%p${0R}^>&GNubd0cX>`C9{H4*WdGL#a zi(yM1+t)pxX*eWdV|Iz~fbUTFDAY@CwYtF=_mFVhIFNxkra@mJkZWu;Bf&PUVM3fx ze%h9c({93FgG*BYS(s|yLOT#(=r#UrlwgcCtmh#v{%z zb(i0$d#Zz}tU9aGXAcHdt5KW_&AX`r~Eqw zi1EDcr)?h&V;ZZf3n3csRD_kg>eB_8=O@~hv~Ji*v<(fl3EX63(=lRpn}2RW4W3~o zhVZXPEUz#oh7R1EU;jR6`6RV-5u(OUIS><(4#;bUA z3oGJ)Vpmx9DCv3HSG1r{XE-6x?%O@y~Bp}R` zAbJL__7$yWKB^ENUlOjVlGsfdt6ogOF>oW-`p{lPE09u0qf)iP%u&mh{U{D1WFLRt zcf{!e*||um3MdK!3L?@H6=@=%Aib%85D@}M2@nz+ zy$J|NR{^OZB28&gs&uJ=P(tV>fdnK3QaI~5V|-`t_kH)b_gBX*fzCiYj6ignHRMcr}xWz&Qg1q)1%WVwCcWuAgfi(GD2Y$hMo|0CHXvTZZR-p>>p00ePiuOxUW$D_4aBk|K{kwNY9^qu}S zmsfa!P!S6qa|QE#=ge=a{ScQc#kdRHe}GX>7^`N}0xO-mjIWU1-q#W6b^F)q-C%$` z;dngc%zu_%u_cJ=$bPiPK?ABLm$D{6K?3L*Z30pq)j14#|9POk<=bK3U1&oA$fmt9 z7|2G7HMOTfV)XW(yX)j-YL_8BvKTp#nt~U@OS)Af4}7Q2rTgdbr#t)H5!M9X<*WN; z$amqmkBMYFaD<1q>+o8&&#t=1G_CT9*)f zONU3QD?BHiKL$AWiPGHx@YZSw;s!kE;Wm0r>-*{Mt?BErq^-sJ6qN9eh(f~i+)119 zNm+vJ*o0_CAWz$pYn0YrI#!eSGs1Gpr6~dR1N5>uDyn0j;o1->`&?d$3 zT$%UtADI1CSrM%A%F4m%1lVIpp>%+!wD79|3CY8HSFZ!5)&ZDt3$Fn4W>RbR84B_x z+HE_Q70DB0^Lj<~+Vi#0$B3KUAm@z%)y=#MU5&1Ou1Ft8x=ec-Lv<1XAc$}3Ku_s0 z2o!CPgM_KeIT7nl%67~m&jE4^<6}&L{?kMCYB_X(h?0}Q)XGsdv_xlkNIEZX)WJej z$5R~TihM9yq-1g%;vTEsZ=K5?p40?62^Jq;nmSJzK@*S8hBr-V)u;6C4qA;IdZ*0Q zT3MN8BmD7g*R%dWpASdu6ZN>Tlx_AgUZAPzD2ljA#2%r`{n#bvg!+B2%yKetjPSZS zo27olGd3@EW9h5yk=&Y1&h#+Dd8mA+dQpItaRC_sS`O0x;)GD6TO=<1bx8~vhL7UW zR+=LT1Np^n8gUs`#`fAzp)%$}`sc}$n~QFJ^kD`EJ%bht$U%h9QQPA*g=Q4F;U+Ej z;o-Nx=lr-*5L5YFe8Mss=23cXH0+?#P5!&o(b9O&m%{j4uF86N2hBZ>?)94HHEH(T zxS?fneaN`_ROi4wvM7v+?y%LNx@C+TNtfyUZ(W;f)B1R-1=YHOlGB_MPA-G@SyOqV zPvhxHZ8hG@BNjHsrL+JcA3{UbP{%@_w4|v12frBod;D>iMzC#|QO*`ZB`lr^k%`mv zp2qUQotlu6(Jkudy4m|;HC=Mwug%ok275eGXt{hg@yI9FxK`(2-y^*Pr_^2pgdk%y zil|$ZPfz-REPF z$vh!j(Snr%fy%oBy&bKkLznIT>r>QCFN-Tj z(-P7Wn7{Y!SGYNq1I}dNEvs=0{R-9IID22qk?qa`8O60djx-y_2HvJI)g)O1>QDYW z5f1dJT6cjaS7<#KrMXG{b5SllW0o_L{71VGn(AZY2(_`3#ieIWnCW&>)$u>5B}IoE zW;A_t;6g6}23d|Myk;6l>TxNBM_biUKZjCJnNx(~?yADLp4J3Ci7&lP_Tqmj**!wr zzG*9^DC%^E?@xG}~7}^s_tY29_aOj(WTqMDSI5V-N-W(-KtM?nI9?ai?7=R+1vw674e3w ztlg!WAfun5xoJ|dt_IWZ3d6%|JR2X$wVGzR9vvrZtQXHG-p6@b3aDAzPeHXxYo$!n z2P%Q9D2E>HIC# ztTyULH}^&b%wz5Fg8a8v#?NilK_s;q9?Ku}_{#K) zfhIg}cCG8^n4zvz9KYYavU4ZnukJ#ApvD{x>Gv6;blCLBcP(smr9G&bkM6)WAcOlP zFrH^Nq$dTp@n02g+LK>+CymtC*|FZR&(Yh7rc7BJ_?qns=!lIXsjJSHlB+#KHZkD9 zjLHnRF24wif2MRd<)T~*Z}-5LJFVT)M6< z$+)WVTVw6_FWI6+yt_6!V!HQ_l|E|~{^dLk@lfPiMO7&N0J@f9RG}73)YJvajS5pk0^ zJfvv^g+XWJRqZL=>9mAmm9Iz0Wdj#rm*&Hk&+b1t^F%LF$|B}{e>hJW>Ze-$O~n_! zML-rFX)%bn7vEk@;PZ<=wTcvXUzNAL7uJs!JoF`OZQ|$Cw>$USMS87I3QTNhDA$}S zQ1rV%nw}2^yFYlH^pqBG$H;zCZ`)n(@lbLWVJy+2F?KM~!oPMHot&|aul@d;-5vyM zwyyUsvZr6fx_v~!T;_YRCtRsBqwgn&*ej3|po+@xH#cu{N9An@#66;SFkG10zaap8 z!-u#+52mCVQCkDS*Lz6QK6@&Lk$ zn#$xam^oZG?I@_)%u-+w8zXZ&ik~|0hd7yFoq~%ib6jEI33>82w=si2Df7&ow+7#j zt=i)8d2&t^5`K>(?0Y;_hRx+PonedR9fx0A zCq{f5(UfwXy=c;65@EqU66vwF%}O8GPqC|N9oxvCdTDXth0(x*4reLd1aQF$Ll9_u z1YS3X()=SGSwqYq99ovps2|zN;cI;FaS7&H7dox~xboYk!tAxuTQDoaaqe=m+4(rY zeIKNaKwKx?4X|{f*&fv&Xc$qH_wb5;qZDP99@S@7^Mydu`0{pgtTG^Sp;yF+EcVJI z{ZgUIBvX_14u%k=*0g}H4b?+KX6&_F9JmJR&pki4mUU3|WQU79DK?1AnaT$>B6fQ> zi(pdQv>%z9ctAJ6U#rJ$3S?Jv5vdJ1GsDOg!iC+bKRX%A!O!t{#EuCMMU^SQJ7XEc zD7(_OQ}ZXG4FA9a(hkEUEwdvw zBe0if26TvC1y*g7c~#?6+k9**v3#f6oBFSQuu*ChS63W+6MIp3v2XJjUt8ZL*6zst z#1aKdIKilTp}=*}HrR+EpOpdepB>u(HbpsQe$pZ5z)oGAy)fZxJd+>P;#lQJE-U#6 z2lA^ux20K^Sb>{0zh)#asTFt}j#7ol z7SSbcNG^&((e(G^P{tC7k2s`hK-8idT)J2aMY|sxyK{>_@j_YIxhS(2iL&+4PYJYr zRMl9N8|(m`F(dR>LSi8l|S>rL;P zH|f4;d7R2VN}Vx@fJoGf&c;V%U!&+nZkdFCa_O%^EB`o}OaDw3nOYb-iyaD`i&Xh; zSd^E@73^*`_r9dK?L%8&v2NYxfvLV4!Y11h5>Ya+;1Pso{$VzdQBBXW2lqH&fOQah zbS>iPMnR@L?4-Rl6Fi83mf6Ci+f}bLW_Z98St-4u%V^K@LohpAJMqCINpq%~7rhRb z0p#pMl2p|;)ammX6cjN#V`f#Y5d?+sJs#53o=N%r=vwN+(z)Ctq_r{6@Ub?b!^&v^ z1`@5C59ui2-58<5e!vdWkpQ&T8m+}?5&k1ZVjq=fp@0}Lgx=D>^yU+uHZlo&%s7V+ z`80hvAX`#gTenpygmW5163=D#I$W=9ps>rmd?9p8yv&PBzKm$EOg?R8^7_A=N+9*vH_=17;# zMcfz$i!C=E0`e{52v`bkW=u8CaHSq-f87*c#QOG2^6TIm|A5$#=c2b~T+DUi5vN@@ z!H&hu12a6@tq#Wqw&ZPZHd5M(f}bT$LRFJ~YVIQ5Ao?}mY9^?ewaxi+mbouPK&EpX zu2B|A9Yn~RU04fmI8u`08BL7l<$W3iiDQe%L{xU|$X_;HJAHC@EZ6m6X@_R&1@6o5 zTU_iq)*UNyeu_hA?sOiYNgBRuwD7SIisTva_!Dd!y~yi*)vJxqFnQne7uW9rQp+5N zd=;Y#JYfM$)zmq3oyYPgC_#99a-M`)b@3-;G)78SOSP?uGxd zEri@D`q^*4$dqM4*uf4c0#N6-^zU&T!vgU#8<(>UL|y7t)YE&LyhY~M)#ZR+hdLGj zJ3hMiF~}%-`rn;`d`IHZmTUp1PCyQ&1jvMT$iQeu2nO&=dVhNcR*`l$IRC-)QrRY3 z0GYGLp@o60R{=Z&x4%C@)rG+Dq2f$&fhklI27quDs}@-_EYk?|_a~s`^IqOfHhcZ4 zuJ3QJH23e$z#jUz05UE1^0fpO_cs@+(#G^DHwi-?D<68s)un=q@HM)aGP`h7V66n| zdU2muz>!6tg6rJ;Z+{3}F}vQ}q+q=3Ufw8lvE{MctYoF_k9*}*lY&##a8-u;#k`1$3vZ?4@`_v@)t&B47!m<8 zwXjjTG9a1yoEXm*xCUYR#~%gEI8SG=Td)8sw(O5}$g=yA44rJvD;wz{kthANNIGKJ zW3zYAYMpjplAd};ZGRMY%Tlw!Rj<*o2@4R)IOs5HsSI%iX!d_@-{Xh_Tpmw3#g!ek z*bHLIK10#TL4E>ufI~_{O)KtkBwnG7IWl*O0PdR99!F<9@VkFl6Wt^JHRO*a_%y(H zGIQGFXm=kh%uT^=Dl!3Bc;hDdD|TnoY>(rx-X2G?1n~dAJ0IvD)`Tm#uP2XMaHMnX zam>9QcR_6~6tKDD_c&xV+u5Q{(|s&~zAy;=0RT5s@epD)m>bXrwW9-v4mAS4C5|!v z6lVj#cUTI5D0FaEcLL6{$Al>iVm}CsXI^XnnX@aG!;PX8l>^8|C93%u0?6h+eWw8S zIFQeON`3_ z_^Jwo;*8q4|37#S_42 zBwwH{mS>ZEq4QJW$7@-GL2@22)rsOEFTcw^Estg|eCxcjotKxMn6Z3htjtlX@2>!q zN4@nQHUP<~wl)fvQ)@!2&T zc~xQ{SxrMb`ND?oWt3RiLQ-<&Jn&6`59aW5r||zk7j@rj>VX+p82gl4!is||^>8>5 zt!^D!YyT8Swf?d3*6K{4@PqPW?ZUnMyCPJ=Xa(&Jg*TF^97trTwo9BCQdwOWgnwEY zH>w)(_+0lbbgSW(Z-S(y!mr<7-d#S(e>S}HxqUb}lA$_^1Txo(nn=x4!Sn6c@;#lu zeDmJpkVuW()Rrkb@Iq89`HA@IEQEfxon(NbEUdSJ_?Xt8jhsrgy&>Vgb-{0%$9IfP z*BtMr33VRy(fqEbixD~%(b5jO^X^Qhb9O^Db`HIQOiP&CIfvwHcPh7v)NN2}8X9oe ze0oQ)vD(wrhm?yfWQhR}A|9grzsfiJzxq2_(XP>FXE)C$JdO=YQR!R-ow}7I9%GAL z&U^j(k3f}})*bAAr6L=C_IZB+o*t%P?sif$h_NPEKfq`e+Kq%Mt$1K3%_@=F0yi?# z|9pIhtx^0olk%{!Q%h3#s=i;*){$`o`&%m)$n&*kr_-%w6@JA4+i51>jk_VkQRgJA zQgo;#fb0F7HD~b`l{w#~dAA(jXZ(B1};jLBs<65|rZ~A0&*HwR;>nfO}XhfMB*ryhj30crH{JdH{q-=fJ zn>^j94=nfN+ctGWDBOh6dDNTo@f}~xofLBmo1W2`qWD(>>e*@6Fi;r#>&ld7Q0E~@ z_Y|c}`S}viP1&4P2Xh@ilvDdo&V&=|qe44Isx%7%vfPHBd(vLRPcE}yN9 zV~f_U))(*4-N?Ahg!k<4Wlz(LbV|kdI1X4j&9Kio{VpsG;cD{_S{Sn2aD{C2>?Vnjq67#XH%?dkNJ%RWPEW z|Hqc|Tk5Aj;-j?v^!$&6ebP8r9eXQ(UafN|k!*ld40n@8qM&Lffg9R_r;$O$qpf*M}|1dPf>i z{J)B@X7`@xBIam2x$@;)CKe`3%PBFtCH)n zG_5^vu;wYPD8&fg7Xyf$Pd~Io%3KcRoiw$dEf6NU8uP_ z=zi3s=b@2OWWN`+LMhDZ_nTYC{+w%!t z%=V)O#IY|n6A3Y3393$M?6ssKXtY>e&^smYR{Qol^7XCLWzU-d%?cQjm)^$i?RE3> zI8*?YjPC9vIeoVl%_=zP?Az<3{ENEsc(rF$W=C9(^P*fCfwDM$f<5BM|KXiFQ;*vJ zh(!)sPTf$9BG>Z*80!Uk$24?MLO#jjrSV<$tV&DSJq}A*X=bKnhq@y93Q^pm-#LBP zQ20u>*$>9c-9o7?G@5q?NUae%USII;7K(D2vKl+j+J7HDppxls9#?F#ekJ)LdJuBA z@i36ty8J;uSrAo>kN|mz=WwjpSVPf6yOlCZvhg(QzN(OfX;_4aOiLe+?WzQ5_)=A@ z(h_oQX5_x)sR=RPN0Y`!v~FOUYS*!@eR$i}oC>|@K?_RnhuSEDn1p*P&sd4#R0cV#MR%*cQbGu~c%XcMm+^^I{{NOTQ{x#at zzx+Qdq%u{N#uE_-_WaE0$~eFvEbdyoTkgzzC-q%L_JUseZLk9M>ryD1OzZHAGoiF^ zZPUsGSJrHo@dkNNX)WtGgTloew?JuxlS21mfsX;E&t$xgeGCx5Wok;; zw!_PE`Tix-$?!>IY`s_wg%}76)QvlyH3dvUYRV4Jo3EDtStp-mpqN^$4CnMV#=Q{t z7CwqETJ>a)XwaP&QhW_}z{9zVm{=t6#Qb~&;MvuIQk0&!c%p`qaT{Mq?GkUm+dx-J zjAe(9{=lzZQa8y^`AWy*;B@!ec2VUM#ktZ+KQQO3U2Jl<9c4H6IFzM^fZ}f4b_N&u z1gZc&OE13Wlqe6I>PPJp{4HCS#&86*7z#F}=&`ewkMJIk15-ErrT$<9hmi7gSA%zX z__gK@~ySGF1-THpz*H+ba{EJ!6!^+Vex~8DP{;YXm3NbcRQxh0-ydWqONWtNWAt zQBnNE!+ms-;`ntDW__6Rw+I7Kxm@m&i@zR`pu@v@moY}`ehUVSerSOB1Yh65B5BhL ziE2_0JEu2J^9=>#?1_$`%DdIu-8RZi-9Z?})YKLo#}GyRyn!%eD6XXJdi+ThS${Q$ zB0vYg%a?v?Hq?P?_3U%}zAqUQce5yqGuNW2u0Q=H&QMr?)Kij*^cHSjb*0Gu*eE@I z)9lreGk-8ovhG~}<>0@P2ZBT%eVbvpntHk0x&M!hx^emkW~1F*ZG8wKDcH5_ zSX@)%Yk~WZyjD&STy`rKiyu5sO44+<98sv(F0mu52%U0pn7T7)XQC{W=<1a6#Hm9% z@wvInP3dQ%$q#RG4rEzj`Kkm5H20zHFOExJQ&s}$j(YFTG&;X4BOy>FJ6;467)&$C zx>-4b%j?*pX!+<{&Uth9PjquiYDBIqFt}r+qKHHYzVKHPJr&{?7w(!z;&f z6K^aulBkYMQ8ZP~m~Q|1sSPBGsagcjpWajv7ko&g{#bnbc7oY;mg7Z0sry^6mdD?( z1b!Ccy3ow0A|#J3i|$zp2@_Imv5ZbWU7fnMi40$i6<9-^z)q*_ae%<5C+dSzn{rOy zm68@3ycAae!iAJ4c(13=2+=I**_%6tl-c&!^WK$kyAkRb4;nEwzBx%&HDBT zZ*#{$&>^lizjl}|DkABA8nChT*|r+Sb>{s+=KYUdj8%)V=bl!j0l!bGHnF=oIm`Ej zpRptrG@&AQP1;c5>UvRE4eH6NRyC*Ea~g!_lvH!&_UHM_x>H6Pmw?c(f(T0Nv%`VK z9gQ-AzxAR&ABOnoH1z=3SfD>xomajuXiKTy@C_?zjO}`M*N-x8$1u;e)+cB}lw51K zLE&3v#q~AKL8&y0@33oL#nTW*!E1+nL#0n2EzSRkT}5ErHmU$B#4~w%UGd{dcO2g}k<(T#@-M}?ins|R0kN=$5G{AJcChjgSQ6g# z09OT#ZObpUHwbusmM!Cd$xCBj=Dtx54GViXy;K{0zlYhtt65U|l(u^~$vedFOdNjX zT8ggJhXdyu&FT5n)Ccsm!e1g#`N~$<1paK(Y&mLO6<6@gvJyFrZ(hc7r5x!669U8( z<5mu+vF@3J=rXCKL#4TP85t6BrmI1wHCte~)Mj|hlq^4G zD3{L}9`*2=dN!|J%=8N%&g_sd*v_mXi{fr$UNjt)rFK5&!CJtBTy>whbZA-35?GvR zG0YZOxp*$NxuJ~I1(gEH-Y3MhPdwjRb~LAJwE8!yQijWlp0qUkrs0trs<#Rz#G>dV zI+ArMdwO*05?@SZqv5mrgGn*R-N#W*S$+$HerT19Z7&1ymWQ;7V>Rqo*er*5r=Irv zcJ;I&TJ0``eYA)1xQB5aVHB@3qL9Hp(Z_eUd`hmSqoCWX#7B!`8dAL3aZhgXm~7#2 zvRYBghRIY5!ovmTr4s}T^}~?K5^8aptvk{nGB0(Nj%x)`?#9QPBHUSNBoEkUWp{~F zC{jjZyZog)AAX+QZM!wMarap;4ydKMs}!Xy5=WD&iAtOd?L7{3PG{q5VFAbE#qFQ5 zi>yF#EA==5`Tnd)pbY{J{&z1d>S(%?AvVhO>SpeBF;tartz|0 z+rv+9K9`8+Ol!N;g zj(zMAoCYZuijzW1d!Qc%>jSQLfe5UOikdLFN( ze@h2uS%L)Kvaf$oRgNthWWmLI9_me9CW$LEx9<(;tIEn=P!p@zZ@|eRF=zQYqQ&f^ z(MU1*^h$5cd5Qd>{(J)mqov?><_RGhBA%E^3Q&zvKug72P-(gHop-w;!L3Ixw`6}1 zKItm)Ne7&~ZH|ZrP@!+ESQ68Sp)oazxI3b0I1~H4Nu9hH=4b#u(-3ahpVIN>ek)JC zsh%)*hV=0j18bqv;?F&h+$#WX{T16n0Lg?gZ7B!Z8V`lh*7dUo?HU;>D>sj(Ii-&* z=!U_&I6|2XWyWTwC9zuFUmej-vJa9y?9kQeOH~c{8go#>ZX>4(9C1mq$SpO*mtbfO zInQ<-duQ1O;YJ=~dQ;cQho<9?Fzx8=B@S@CmMM`soI>dz4gITJX^QewlhT7WGh-H} zA3e2GbS=F3bGc%Nmr)$3C-R)YIEDcGjGMz5x*-~FqDyIAdaXSYhAq(n7oB#!FWKwL zDrs5ydwu;>Hxh)RV6koI+-&_Rl%aO!@OFi0igCT>Ieq$8Ry@ z#G`^b;5TCN^A4rwy3Q%Ize4`8EM5x8f%TK0tPJSpvAlZ%&4ct_jH5z5Oc21pWIMhw z`g;7@tfF$AVrnBUp&Xb6?92Y2(b?PglWAPP=~wuuuZugd{X2y9$WZ{u{vWc>7!c#f z68m(+jK0ECEuw@iAwj2;Kf{<2<(6X-kdP_4+C2{EGr$sbkin>*p6lY58b!v#SQD6{ zU(G{>l?V1XZb7m_4w*bZP~bub8X?(-&rX%*q*4BAxL$J(#FAx*as*L&fcBs-y&G49 z?-qR928o>K5#eo3)0=fHPd`Tphq&~GONddj;xbC?wev@H+z*vS=b8kbwfZfSA=wmj z%G)$RO*F&*=owrW_KP0rbsoav6|UXp&!&F*@p68=M<)E3r~KGCYiDVR0|HGkVnrS8 zoXdUVr)Fwm8jm7-03_2A$d(TqQMuYgw7wb^xSgmtsyLQ^8*!-X+OM&>QLOS#u%5K# zeEp;M+5*u9uL>}76(e0~W1fEoOEz6snWs{RnjgAG7ovNLS9UDw6j%*c)%Q5|Gj#^R zlB0&#a#$a^#=jVlF(jGt+85cn^e4Byc&|Tu^u^0aqaAYMDj__`Ilv~`p(c}Uca3IY z=4fv`>GifLUh1KbzA4At^mA)a1tG3phpIg78VYcv)_HoS*H5{N*a-z?M@nZqL6d6t zQ&0Vzrk&yYy}{#1|2Y%u^b>THX@Z6aXeYIbuoLp_9iX+EJ`ow_-{a21(aqWXzlfIC zuTM@jN<0`qcX(D$2El5&8Q+FHQ&p2`C_qt9Dq}=ZQxVWef>4EC`*|ojR8@>TbFQkZ z9KKo?s}4QuU0JXDU|&??@wrR)s}~Q(ux~BpR17bYni2Z%&CPvjv8Q+A~m00r#k|cw(1^1o*8`h*zngc$Md^K(!Q7opS7 za(s)W7AiLqr+zUwR2WI>;J1{)f%QnYjLWBwP6B4rX=zklfWi2LML? z@$b))l1ri&9bVNiK-H44KudDf(%Oox{*?g>^VF!cdW#fC-NhLnM^t?RhKjYgz4;dM z`Zus-2C+!f7GQ4gj;KuhUM4(~!XG{9gW4y|ETQ&d;hK6M#^EK+HF*1(z?7im`jm=- z?OZ?EX6iv4k0{{r-C&0Lk~cGef=r|8>EX8455h}YMw;ZkE02D%wbykM{>UR=)&0Dw_oG*t z8L}tWn`7VjB(is;@!~LAf%#}A{xqCqWt?h3OK+XKKPvs}XQFOZRn!q_mxsr85~>IG zoj$`y!I5|vP;G|#(*P09i24yqHv01WE|I|a&%HOy&i8joaeREyA$pS|GmO#Rw*H)o zAu8L!Ia^0|Lxz8!T;4^0j9WPDBF*o41RrP?pQgWc5Y(ld4(}ESFzP6V5#4KUXUFU0 zmsM^+9uap(HJf5=YbpoRS-TziArjjajIL}Ix_KTD&&dt(5tr5kjnr4k7MA|oChh?) z*CzyLrr_4jk+gDQi-TdZK1VrK*vH`!%RW|^*1pINCrQ!t0(Eiee+Hd`fWijI4P1qUqj*}&l6Zz=a5bqX*J>MiFQL<7zFv{P6u(fR z&q#Z}cxKa)+fdF#N~1#g%0zejxyaQX-#rcyu)@ZG1nMC(g%9y{m$`QWzJ@Ug6wQNVlLwBm@0dKu?@;%;>a`z=H{ajy@8dwH7B4R{(n>xt6D7u2<*4sDq z?2Rj~8_31O2O6TT?yOu0a7{#h!F`5b6NZvM%$%wi9pKk_)xYM;h=6O$Ge6 z11SA~20o7#uDNgj>OPZHr^1P`lt0S1%Q$D}K%H1^u&lMWyANmSUDSP+J0QGr!LrE! ze1+Y?mibx}(NzfbjORLBf5yCi{qn8Xm0fSKXeGH^xf1Ro z&a*Eu?LiDn+6C6P$`nd|_-m$1h+szG=QeqgifGvQp_V(B%YU)>hP;HooZgpIw~j=$ z1&S57KBoMxPi=K6v9aF469PW&DjuL7bnBTeH>fk!O{Ye`tlTw%0 zc56{IzF^igcm5{ca&*Y@L`J2Vc+1;4=c~cSdNW7zswxu?q$!-w8T2wgz}`8qh3WE# z*bTH)QFzG}3~PFH+mtd@=9Pyh`XQw!cDecyOhUTu%G=ZWbD1wCvxPXOU9V%1tP-rJ zmJm@PIwY6wzaehcnt1p{ptPpCyRW>IuR=ZXu(4iGT=?cf;9OnSTtc>i^y4*Bfbyvh z>Fx7a{ps$|$yx7vgT}UHb(^Rph{9~#+32VrM47UBGC0GBu;~cLU-*Q*15pGg189a3 z-DQg~4!T>bGf}IM6&M7BzOeXTeT$bd!*!ylDhGfw^vBPnd!~^e__6{*DwvlSUeUIF zB3a~3WZu}7)17*Zj)<*8>1VfMa0K>&a)xW)-rUsBT>$PZoQJUYnwE(;&NmEQm$k=}g zd9vSuz;H*l*7lJ;&icDpuQR2J?zG<>^3Dv{I42dFtoQr6FsP+u*5>?cV9vr=Lkm0- z+*Jf7d7pg(-s3Pa`)%3V88ZucGV)n|w8XK%k#cuZWLA%r=o=`*U4jbmdwxPIspkSj z=?zw^@#J&p#)vMDjTM=tXg<#2o{-IWw%k0zJ; z$d~dRtd5vn&@l&{<#~JK^e>fJYB=xgVrqM$XeX_)8X)*(Pu<;h;OV|RR6dYpZ97>r zh1)^O@H%EQli5`A~dY zs!CfNL*bgft=C#Vb+b^@**mAOFCF#M2+RjJv7(!Npc~W9Wmsg>S0t&o(8IOT&vGvQ z#K-h)2Occ&Q3AWZfx9ZlJ#NSc+k;wj@eJ7J=q^&e_p-{ywusq6fQgX>tM8YM++gE* zcIWQ)%QvYua5jDrCtZIrG8aUaQQIvGp*lQ&mlGH&Cz1#t+#8P2VIU~TMUe1Ng|UkQHCl8QC_MXtKB=8o&6 zctRSBfIfy&&w6-}8g``dck{M?Zh$d*6s1hJ{9q9f_Q&P-)s`2Ja@O^m=^0Ea-6A%S z-mOx5Rl}RCUdQ5eT(*}X z2{X)=vX8UAA;k#rsCE+xKK8I+&`YdN;?=kr)tXaaq`4K|JV`U5LT#q{$D9?(Mb+Ys z)=)-WzlN_p;p6P=bJF3HrEW8_Hl|SPr^8e0UssEEdx+vnMyHyB>@(YaM^X~B&-VIs zz5oqbga!~KzyiwG%hdXzoeBJfLGPL_J`AHLVyRUTzFBUF}$TKH7;9?BFILP&qh1h!D-QS*m?~`-4jBN@Zea+s*B~`%1dw6|eck z9yg*W1uZJrBsH?9{cpP^6UVUPn*dcSVMB~GpHY^}BdF796T4kuvz3UBT^dBd+ z;p;W5_i@)g;N6nV-9QR2f%V<$sQY)8%xl8CMkBSfJ7pHd$4 z?+=vT*P}{=k)cFL9GEw}#o_3Prp7EU?}SFHV8JK%6Dxu~wc=$Zmo(l2-75}?E)N2$ z(twGEOqa;J&$vA+gAfJjfgZ*5^KzerKYq)mtq>m6*67M?mz*e%%)2KnmE(D<^XE4L z-f$*741jw;)?a#JP+(#>yNtSoNzvDPC;SoG4>FRPRYV}*G zw(G5?M?(+h#n1J5IAmsSpvUyDEEe=GHJn>F#_N>@0?y#5N08(oNoreIt7 zhclYh%U;f$`|WqsH|y?ldcEaqC4bO1C_XZYDOFQ;-IhE#~c2uB{PA(t*OF?@~*7-8)b9E{fs0UD;I?3 zDp*|zUQ_n3qZ2RWi%+c>V(W*@U_n_>xek-bg;&NMQ%a_YE+bR#kcOeD6o@rqAH$fA zn!&#D(7Z`>CyTb!^3a_;il8=m0Vx6dta6{FX#M(&W+`(>e?=B`6#0ACB%Z0^Uh1Z_ zTsxA4$R}e;RStfy`F2nLob(Ozu$#gMH+T>^K(NfEB*(viJQkO`IrzvnL{*2%8F@)w z()?ICz&0+Fyl~)U=)LR3D9YU&K2+0L;QO@{1vD*C;V6i3@qr1MK#6!0Gp{b!AfYL$$!U@y#bwpJyav507wej5 z2!>M~b>p^LFz4iPeXRz|U&O0Jx!v_!&@r1`>B_2ce}kOQIsg3|)`p@O0b5a65kw%) zm~apu!kg;Us=iP&D=%k+^CW#7_!DdoKJn=B2({E-@?H|B?z_tT?KaKNp+{p_0wwe= z{og7LibjpYzT@JCc8U7FzkC^I4eT!h!9SmMCF{&! z-XMAE>G2r2N|m9b_|F+5T^`ZfNw&2fqBhkPm8dP%Ygg<-LlSokqFSW3vhZa0q%9s8s9%_4pMlH%?@h=Oq+r4N-nZ}NhY?QFAsoC8y2F=mT9%0QwwEM zwW^vt4LJXt**Nm^;Qk|LL?|d8VDKNIHGRrkDBMqxG;Waj#j;{^p*{DG^P%$I>!(3k zh#g?SB|b;A5;V4HM9(N?+6}1`)vHqN!JxiR@x03xy8#iE!+-{evYmrK_2$4%LU#uF z$tw=0m_QH;f#pIy&B1HWVk6H}ac`J%ROJT)kEoMVu@WzjQhdR@>RO-kXhIUt2JLyC zIh5WvRP!#^q!gZU`;IKtf^W9v34R@*jj3=3G$a@6^;l1h;8OWQE1e5ywzg}7iO|3) z-YyT5JYZlY66gXX0NOqm39RZ`ljDfPRMj{2GN_Nsjo`Yf0lzc1Y0Cw%1zP?&%5s?x z$x>3U(|4L%QDR_O083nQrKin8qCh+(#rg-&{y;xbo+MxpszaqY_oGGz@YbZ+5Sz|G zVm5bA$aD7--vcf-Ufr-=lU<2Z@>{;xHT_kwYGoD z#2-mfhzO~B#run6I5_uLA(Sz##O3rSRgBy1p-$%~UynZAT(|bM)VkxH8R$~p zFMPc&_sicnBtT~w%es!5L$TYw?aHMxRC$_=Oj4S-w!SB`su-P4RxoB?Kmz~3#gbN+vGq`!>?ARW-yH`qMW zaVH!nyUmPi{-^Z;+Rb|$e*mwS0EmH#%r52rx5ZxGop%5}1tLn*@c$Q80KfasW6ZyD z+*-8yI(Zjyiafrk`_-e@J0a6D5myWkX5SEmY^{UXujG2Vzf>0Ks6QnH;$EZGI*OF$ zfz(lL>GbY;j0XbZ|D{K~S@}Hk17}RaMEsqCzjUO58=I|~vkinZs(CzBo2^X&I*zq_ z97{%a-Gr5lCHKkP7oV176OCz&i>bB(rYd6h38<#uf6bT1F0v?CKyjK>2lQGX8m^AWU?WjW!i-X@m+s! z8+5>Pdvb~YoyFyCK$aWAhEJggT>nj#`=1+PXO)-9zuGb-Ob?lr4{mcfP)muOKplTp z?@jdJy#MuE)sSnQf3RVe0?|db=TgAJ@V=vbSEibi56-cml=-SfddSC`s0<_6DU~;z z7V5r=JUMt~)n@&>0Dr6PHN5cX%b0Ra+-;wFjRs6XPUa`_RIfZ3A8-YZFUGC1@24~t z8JTBtFZ;6vILizryM& z+;3;#Zo8EWWREO0!XDJgXVYvvkxBo?qS8^-1SWrbTh6}mHuZwgEeud1w2FSbS!OU@ zL%D{X@d$i;ZPkl_$61`rlK?5n@kiLVN+t-uYgBCqX#n@0i@rnEprx~7QBQRNzs)rW zXshz-*HY%!a*9SLj7nD%#g({9>fV0f9D!e`JLF`3~6167z{N4c@PrUKSpsmKL^GG)fP(TR%2t5CNqJ0b^ie4PHIU|vZ zdP?bm`BQ&g)*W61#x*cKu;?6$86-l)q$MZ92K9oe8dA87J?8oFZ;a{A^WQOM36qQU zp-~>${}*rVA{6h^{z_A7dOdtMxiJlTxP(~J)$o{Rh!z~!(j+*IaIOn;Uc-vyKq+1U5)oSp?kJOIsrDC*%-ZgJu>z zjcLV5lqJiAvd`HqXA2LY$)55STqPNyjf0r;wa~ej=bfvZd3}V3-f#h@x}>0f8+D zQE4J2QbMSSbO90Rk^mtfC?$|kLL?#ky!(635A!**)|oXkXU+Tp$$FFbdG2!E*L_`M z!|6M>8<>JBR+mKPUXWQs2_LGcUKNpcmYfIrT{8>kpBe;UO;^Dj09qS2#3^7pk14ddsYF=MQCkf z3PSKb*gqPisN{?fu5PyFnDTaSH15&ZxZR|(;ptNicapwD|L9SE0PC~Y>e~dE#q{G* zhxylc31%7?1FUG^4Ez8$Yq$eioLlyNvab{qdkAY(1PM7p>rDLU7biVGrA)b6_9RLyXlIFubB`U^67KM-v_BrEoj(O#VI8;}`V@B}G@* zKsQsdTLA`sK68NUjF)Ua$apeq0a+G&y$_dZIr!$D~~jIsE-zhDRP7A`mW^ zOLmw&n2Kj~#~J9@T;qmZYAJ*o^ECmbEIlkTkmG_@icji5!eW6|J(Z3~zttUoYUKExln*B*o|eWx8@1Y~dsj4|Rhb0| z@h&kRJpYpi6z4{?x!BT3gVFIMvh1Xro8?fSc4HB*N2{vu{MlN7xN2pZ?tg(YGd+-e zySFl5gM0sZ$?0r+%DzbOx8<#jnGkXff)xY^a>d;q4zWc9e>WQsDf!-#T)X!1;fv@$)f}% zwr`4QOO5|}dzH?^GoGYtd2bFsJ^lN;@9NV!@(U$>JGe=oTwS{JxH-BN{_4bxYK~kxt z7oY<1pGnl>fBpc3<1PwrCJ-D=1^{OW9G?vcO#CZ=_Fw)JKzD442Co4(f41!DyVR9N z1so>wQ7Iq<@xMycZt}-*-rqI=|B2CC8-PUn|KVHS|4;F82B=|l()QiGQ+zJ&|#j>D5&HYKo+4epfoI!8>bv4%<}gO zQ_xIe2=b2RRC~Df6#Jo0rgx~wsrj#tcX_x<(yQgMR&VpQ+00RsFMsG_4C_=k`!W(ymwJ6Xi=w=D&~vL6j3 z8bmrRx8uC?)Sd+QR0b4g+%iv-(C{17($qZT^#`(g7<^weCdYQ{iK&@b-Fd)c&UxB! zC?D3803C2{IWL!6q;vY~Mxe&`AldXHM{8Aj4iLb(>S|qRu`4t5!{51KHp76mE;v4} zwPzMCjs=fnO^TMXL<`;hh2B#a!-lVgR*1CETZ!E2Wr{E}_k9?|OHhFNfhyWMEw%fW zSSE*my5SP_)ki6qq#!qPJzr0wz;#LbY&XfS3%_A=$^uOc)YNe67|_ihdnu6vH4pNj z={-czBK2%r^nxqG%?mSSGt!HR4;Ld>f9`8SA}j`*CeE)AVksiEde0P&3))%CR8CYj zr>SX8?Q1%k?(Sw4WD=0}ii{{qt9pIp`<^{}HXzRcTQLd%R_--$*ZtX6jkO$NZn{E| zm(B~MoDA9-s&-LZ{5$#8`|xpl)uO#cOQo6O<6$rV+0$ruN(g`gIa}=Re{rpCC~7<2 zOp1S!wVN~1`o?N*Kxk?CEv6yA%cM?dR(?#gF3Ic@4i|bfjZ$*wW@Yc1kzm;A6^6 zF699E1lAI0zY=TV!qZUye6f}$3JW;ON32oc_G)(v{V)wrZ<>aV*Aipn=a zeJ=FU0ChWwpA29#Tb8!mXc4>iHm5D3tilA6>oF1#jFLj;39xm>4{C^cFQ2QtMAyX{ zifAVuI{JwlK;&WgZX~v95^MEqA7c)CJ#{vhe{swJ@j$mL)u85=y+3Q|FQ^FK&`|8} zFxaK`RlmY3=i*!)fVs3cAsH-2)>@7-W04YwqWcK(WGT$oOVSP_wf#qz1VhAeg@E*P%i^k}FhE;k4U4nw+ut)3Izc`^eEkCZx%v?JeXx-+%Ef!sej`P1?>-hBU&0*^Fm*SI)1%bt83eQUkLBlZ3KU|(OI4?`hY>axK4$&U z52UedVKdQBT z=RY(U9Sr%RTe@4T59eANz_~X%w{w3+7Wx6Qvx2YU02V-*;$VLRHOfDGU>oDrcIFp4 zZj3b_4lvQW`F}~)_b6qo{odmOpc2ivokIjI!X4H&|FJf1c^bUC z&pGuqR&49iValv`@4tMIt)oB$r|%cDA!XAV?~0?d#!6EwM9{EXO8MHfGVqkWH7L ziT#7By)#brf;oi;z<7ry681$QGRgh(+OIYVST4W|*}n}1eZ#ex?cLek+VpF! z_LcXTa$~N;#Qd2=0fOHXP_R+KtUS6s=|fCNk}m|g4%M1efZa#+RL2aomLsne_-Xsv zggmtse&TY~Ugbp`*d&~A`f!we+4^`d`3&%{=K!jpx42WYdPn$%gIfcC@Q!u0c-tTqN_X> z=i&VGMrfa7HF7-&9zMy%bCjAJx#K|ja*_+519j@fjZa@dUNk_;i_DuhB2Za9 zt+^4KRq1#vx;(MHPoKio$V({=d&A9eW{D>1Y@zhp@(n1Xwf$-x4jw8+T~8uW$Z(|O zN3knduMC|d9c6OwH2!etPqT1j^$GqJNteJXv-LXUfJ1=+bt>%prf;xYL}bUFjvWXuX`WOf9g6uOFs4;uHO6H^GlsoUzuBJ51`tVxmbg61&8vi^E|v2 zD%OkMVSA~M$|}O3OGF($5_m-(T=d)nu$VqAHJ&1+4?2XsqY4-2BCSSN=Bg<5ypv9N zKZ!o1%FW)b=pP!T0I`p{eSv51sT3v$E z-vq$F6M!}1Ue4;7yL5l9!xmNA)-@*5msUcRL+sz4sHjv7LsaUJs=RGiia(fr)$OZ} zjFPJ*P&Io2&F`k_AByKnSHH^7BXLHJbRAMgW5D#rIPTFD{yF$=q#nS+o7Fpp37eJf zpvR?gX)FD+dFR`9Vu~tA@m|pe&u*?;p;Y?InSU1A8ay8xI@cBVSBSHG$zxzF!_;GB z)v%T9zip)+b6tW<80;Ha3&?Tt&A3%>BNA~u0(VXoo@L@kmk@f$OX$rb0`n0`@Jx}1 zE-RAWm1hHtD20PtaILsMRu$35{Kw7o42_JF3lL+}r#<%qw2NGQQZ(piZMD@yJL~Md z?n#eCNsVpkJX&23FR$eWyNU}1m;H_QfF;#WpZV&O@Xq{M*-3R*mC1`LqP@C!t>n2# z`_;T6pXQ-q^C2qC;nKZ6T5&%D`TNo+Z_2HREy@TXbm~2Q^fP)ZY1bMF7V{haMIybw zpR#Vb5c4+u_SJCY>BF#iPORW$pc}j^_4{xeMIP(}4EnRm!U?X6JK~FLh5kE{y;sT> zrJYm_i7nChW5j0-lVPE4CECK7%FY#b&g$lMJ5BJCHd@lKPcF)!=8^C@|2`sfqdJOI z-LhS^G0>69RR#J_fhtm=4UYN^X zv8QRjf8rwM$Op3JzHh976m0lh|1I=Mtaa75C=EDmnoDV`%jO^okUd9;E!DI$NQc0~ zI+FFSW&@@W^|aBcZ;EPzBX>Uhb!!pVjwmTk?DIw)3+e-IiTf^gJJNMVaBla>W}Yw5 ze>7iV;6Yd`E*d?Dt}#m3#0$frt`o}u+9TZSVS~^`srpHtMm+GTdr{~YcF;VK7zVhh zfbCh7u1m73kq_4(+!;4+^u@}|oMSr=j1f}InumggeGeK!r(J8Ft8Xo-2j88Y8B5mR zm9O0#bbZk1@_zKSSCO<&4stYPYh!ujr$7=Tg^qVxB_T*K^DpX*hrXTDIDw^{(#vMN4SkHd#I8Mi?7MvQo5A3FF znI~?n@aiH9CtazqvY1IHMr`2ohk*GB1(kXX3+7Jou3!cn@Er*mC|shG!YR zN_#vfwxH0pd_SQ5ex!#Oy?_vNi3tZih`FlJ7^3m@r8v|`zk<&$Luw(v{P;ae91W>T zcCnUJ39EQRf9<`$jQsk8Rwms>C)js5$702*xUy&lFcoHxcc5jFb zeAblyJq#MsTAwT#@HJgcIu?dFes%1f&WA6)@JyFHsOFKD^5MbF=P+pK^ZV3a*%_K= zD^3)XQh~%jHMiZc_)|+Ej(0`SnlHLr_%1o5-=-t$o!!9LL4`dHKNOEwQ`dNw+M zs?`pu(8VjzdHLYE1Gj)D)XBD{yA1hoOWAN+mU9AAs@siK)Ut{XEcX8><23E}EZZr_ zo!YIhDK_+VcK^PbHz^k3a$j(ssWh8zJkgh#9e#YjKw`Q5x#JX44aNQrs=HGzip+N~Cx{spQ9x^S`#{}R`xm^-`Ct{`5^4w)Cc z1w^;}yi&p|8B&4jwRt)7$(5c*>Qwh{_Z;oq(68u`d_+O?7_|I$o6Pt%mYxBDeEKR} z82KH{cuyRf?3E&}43BA1K2y1+JRum?E(tn>WBBmx2Tet0k#?TtT;pC&+nm*i&T}oa zwus79;dWM)&7biT+N*c%HjMXWPTwe-73HdlKG}jz1>GLrf*j}KJVu%!h*{=&=iy47 zPI@ewS^Fz^1bJ3l^h9#Sz4d96XRl7$oH`Z#7MnT?;Y)S58j_+wbu1LUT`aI1b7P>( z9v_cCR>2n&r%kQ#3<~$pG$4~|=51R3EVtW}Tl6JS)Rl!72)n47kjPcJ$VfeY?kD3@o`RpgT=JgLQ&nbuZ4qz|EJ*tAYx zBvbmpFx9Y;WOw6TqSMeg$;Kwj1Q(H`QB2TUjxY&}ItIjyD6U0YHd$uGd#u^D9P_kY za2DSk_NafizoD6Zv<%4JM^wJ2?2A{VS--EMbqk-0KDB30>@pU_GjQR9xle$KQS294 zk*$gkpCgFFxEU@9wuLVyO%2buiriLy^6HcybJmC2<~}oPZtp}6{QpOk-mvIUPbZ?U zU=eBTKUKR+ou`iRjD)Th&Ta&A5U+~>B<@VSn;y(w3TAw(yU9-1tG<<&mUak zZ|HhBFOwqcHl(XEnLh(^mrHU7e?>Z*W6>-K2N+Zvb>N;(izPA8ZDVYeQG7eos4Hil z6yF>aB)3>Mo}f4JfI-d~n?>E&>Lj*Kok=h=*E^TJ$A1xUfCK7fUv@Nta!_z$k*r&j z%iv_NrF5=!m}#I6NFbsDqM>I}zB03ZMZUiGm*>Uo;ItLE;nG-)k&0e5^^sX3Wc^tl zV0oUX@55Q=yV>)-<&8#mz9w?Fa5Ep0*?aGBgNgy6CGy@l7j81c)}+%Ih3^nm5EV8n z;mn;%?7Jm4F>SE*1tpP?=_qxHbq^1i+dXEJnEOTBAQONlLH3;OUMOqQ4D{{C7!f6R z#)CfbJ1{#UTa%pHFmJTWi|xW({xI7H3Dmigv=BGledyhamJ@?EQBM zQFZ(izwS8qkO78fbTXGTqZf;Hp^K9x7pFn&1KB|1XwQv#i`aoD9W6ajfx4^2v(4;a z`if3e4wjHUC+jLI-q2E7ImH1VpgaIcV@l>$pUmJ+Vod-J?>~ElNU;G}M@CaFNIVbf z8$Av4%9-9#Lhh++aBO~3*QwIs_4~2Sdh`!X4Xdjrlwn|?@FG8#M}9mz6261uf#WFh zq2nVv2NGGS$si*7xjs7iQORR78NSJ|;4~(wO`s6h(YW#`E+IDN`)6lxH0Zw?w zc#s?{S_-Zxd8nw^eKOp+698+sp}Tl6iXiXq4qMu(O9Ha!_~Y`sEdEYuEFDrmO62i` z0{(oTep<7v3x0QZ=7}>#=HA)&Me3cACA}>nyN(1>q;POyff~QmB-}`HeaPx}!Ah^z z0`Sci0%18c&zQS5do(G8@%L&03mmtpW9i%y@_4s zUGx#pGQ0B(_8>*$OIp8j)!+V(7{m0Xk#gwq@N;rK z^vZ4w7JoH5MfR%eu@u$Zr1VEBVT<&^O&qeQ_4fN81t^b%aL$&y({e@X2X(@qyJ}Yc=T&aUDDo{3`oiZC+x)f8PyA6fvKg@g~xqf|l{bLa5GyM7P zdkXpxfFuIG>*Ncu!=HA3CK7EWtXRN;QO8i{5$@<#Zr&xO*rCg)w>gIUzZ4(={BFX@ z;9g;IMj{R|5k{^X{z`=xmxW*%(kdDjE7V;g0=>c83>~Ap*m>yjE(wMe)Pc!q*V+l} z1@_OU!SF-enzly)c@=L5vF54`B}-C9grJiTRMUrsu4j7HzVa|kl2Lc0DeL_$m&Yd+%PP z9G>ZCt~$-b!PT}UWzWBSEj|ik*LaX@4FYoTFgrN@Ha3*)RK^Q22eu6cBye}9u%UIs zO4Wj)*D%1fj`FylK7p;EVKV{~o?~bWSngCmu%2rr7@a=Db?05<9%SI32ox5{2II}) zMgBR}?*38A#=7_-i@TgBUsmf#=TLz`#G8Rl;rY-^YQM6VznV-U)$_U~i^s zkzZ4#2l982HJFE~*RhH@!_o;bZk` zZTcc?mJyYwYZ?&F{jWM6c8k&Ds}q%dQk}qD^{9^qB5?737Dp!P=rraVMjR}jhy7;{ zGP0H~ukS9ePunM@cKZNGe@ZBH7NUfBXP~6(0Vlp&*|G!V0H{_gJ8lUMFC8Aj&{M94 z!>}pkRg#nMh`w{%Hl5`}5aFu~>Gz9I)7y-tt9tD&outlNoTN!`76u9KeQ&ox52%ZMpAItm^Bbzru!gRHrJ+th8zyn-F6I*Q{Uq z3SH=d_E$s{Z$?Ul4pVH(&Mzlw{h%NFmvkZHwc8MNh#LhFS|rP}#uNBQ%8~g>-vXL1 zr_-SxS9GE+3qBLGE>cCo53U4As%=c=_MSZz37U}mH=9W_1IxZI$x1)P9(>O=T(y(j zY!vOVGyscnulLCH2rnCZLff*^8NybFot?$IPgBLsoznsglvLB{@U~kz9OBqEDgQ@r zZsI}&f?Gx#n=&$c`=1zT=6`a;`o5YS+R1x`>*#xFXO8{7bQ07l`dbtL6FimyHorm8 zt)_3Oc8QBo>bTEQpq*{_u25Mj`^ZR^@&3(0!-;#Ow85&^#|odq?QR6disnZs(>6_^ zgAWP4jWsd5>13cMYu6EcB}=nJIV29Scow>b27YDrZZ^}TDE$2VT4X)_dB7#Dfi1#! zKz4yF!L67}Ml#|$Z9seda1wg=MnjfG)`XM&S9^coOPNMioC|A6(L$)isy`$dZU-hP ziGGarLgxcCembpWwgi}eriBUA*azcND%j~uT9M$JV;R=ORP0W5t4hrHguTJDqK{3& z6PHstCxpI2TYMQ7{NspV`V*Wej@Wz=@Rpg@MaLOKlA94Bj6M;aoc$I3y zzRdd(%bHSQW+h#qk2V+*gTOq&SYQVgM14DOHGqEeF!gk#0?oF^PBUR(2b|me(k!xG zW-`KtFpX}AHY4f$8gZH=os zwcVa759L0+$<2ra0_|Du7ns|`uaA-M#vsT1Uo44ehBNieD{h`Xt9+~aXP{7WF zlNrGM;gqo*I>;AT?x`I}!qF+rBO06qdhE&CoqRX9GRKr=hK0S4Y+*>fI3#Xc)n)q0 zZd>>3Pl3=J?PgK@R~hT$ zN0usb!kA(_KR|DMkC`sl_=WzkAoSr2u$a3; z#&5shG5UM3VB}X@QnFErW+3cWP9}4V^RQ_On;GL&WMv&m%b+y|2%K$foBRe&a-RSQ zQ`MN6F_LV?2BnzZV{yQ8n1NPVd^E1E8N~X%c|sRh-ISq5+I$%aC>lAeh1wHyxJuje z%gI%H;BAZJW?mbQCo=irjDG1^>tDE|0^JG{U$yZ%Rl>txq8i%n`!JX`KvZ-U$@NpT z5Qj}NProvh=yp8FKknQ{R%H>M`m$1E_~<#@am<8XKCKPvPAno5OOk~48OPDgCW7`8 zNfVXAp9EfW!Ifp8S1*wIK(TMze7#Z(JY$FO*AaqeyU(&a6oz=mQQ_=j+=*beX>u0-=wV@0=>2_G$JVuMaf! ztCqZj(@C}~6;fXZC#7qB?RmJvtF{e6(CuzXaJ|S1=u9eP*yTO2qc1nUxTDn;jHgx7 zJIHFUg3&R+Atlle(3aD=p>UbS#>nKae`nvGBo+e9+p^G*^T(Yn*`{S)cA@&O)~{qG zt8tb|Y`ug9cR2>G6BX84xATK6pWS5~fcFe4Rv9tUL4bEOr}A!gN)DMqG$)R`C#zy# zcz;N?>>XPsF}8J_2)5>$50ig4`t61ck6RQk4cLl?z9S=8+05Oy$%^B*z6IkG03%)Z z3QSywlOgoD6!p6C`#75s<+`T7YiyCe@-M~118;0tSASN120G{D{|ey16ij;_$-NeK{^0Ya2?JaN?Eowzia(&yXxsXqIF;n;1 zR7sq_7{f+Ac-b9hBkMghu>?Xy^nKPI|J;C?J+153kOn=g=-pk3)!^1h17J>E!mLQL zXh*)NAJuP7pDy-&H+BP(uBvqk_v&59ek+M<$}c|Gd!>!U8Zeatkc%xluri2G#vt+C zqX3&{88uMm<3M-R4)d$j;UXe^jzhZe!wvW;Syz#@PYdo1P+W?ieH`NXWP{m|H@ z^IckKiLZ2TvB^svFy>r3MlgPak}G~*b*Yal3e0CNvIe?y>9NDtX21ziax8l1=Shr1 z2Xr*=nUic@FU;!USdn5=`htdOy)Sj>Q<~L}suT;SvW z=pET}2w)|7oM5}MY*XU|ApULk!9>%rqjh6Z^0hU?vy^JQWmC$KfV%jzIfZ&cDeZgg z`QNvcPJ3yywO?@c1i}>z+=)e5-D=8Ff#zbA)QIVg{G%g8+OAof9QY{GHk_mPaY~JL zq+RTx=ko#7aZYQI-A`=w10|<(>CfG1v;hxy(}o;pDpPB!tn|Ovmh;FaSW8AI-J&>! zZf6Gv1Dv(}$5|awni=RA(?GSyZ`mNeq67BwvG0Vq(<6K~;z!>2)vXsEV*b81PLFR| zo4QQ9i6mc#v*y9661{ci z(w1w{W%iZG1ZH3w{cpP_uLNxEJ)rq~!^{v^H;nQ^j4Q_)TPz@Ck+R7I;633NAz zG=*=coPg1m=!c^;UAbmIJL;w-A+omK_l~BZb#=wZ)Yc1|-7nLK?dA7ppfb6qM{~|8 zs~A_|wUQ_X6+fe3k^Dj8wtW&*U!p|4K|?Qg`?rUnZa$Ma!SN*zdT7lI(2%y=1h#iG z7!Z=4HLPHK-|8bArX=g=FNX)qY{_}Q7!X0dp4LVvLxdWT_fQL!14hceifFESNvsn4 zPA*nsF2QuaXgqLl#B*o&#CBpY9xeHq1W{gXlrE2EB{>*FYyZ4|CBwhw&wu*^XEurp zTWdzqa||ix8egi&Z3NTDVFX9tkjD8;fi(J!A3sh?WF*3gIe(m8{24K=sF){MR&RwZvy&}#0`;c$X0q7Fg50VVUwSi^$=WED-ajB0$ zhkd-!z1i5YrSPLiBVs)JhDnWawq+=+=D_3f{QK91zPm}#u3V!U72}gB{ZTOy8bKFe zcXDxB^o8=Zi8asR_k1Z!k%X@Y%^-VaYbk0v3w);LnDRbY$>AeJ;~UThgm~z z#8S)39}S5R-4mSJkIMGp+Ma2n1-@I5WV$@TOl%q7z{NY}p2+UVcXb zupfU2R|A(or0mB_U=2qMQV&hwW5{4&&~Jb`*H5Tz2{Ny*sk?G6?HoGVr{29(se|{# zq-z)+jxoBO>&S}D4Ebx?YuoUzKBc=yzI+zCa5Ci5`x2E48y08*)s8= z|6y14$NxqF`2TxEP5cEuZufDenLgj1n>O1AI_ZY-y~8Fw4W=AH)LbblU*|sBz6Dt4 z){QvkTvqYU@f&#Qh#T4cXHV|@1^^Kq| zCy`XqDI1l#w;Z$qlyhoW%N8Y^;2|?_xow(61S9EG5754-sXBo$+k&YAY*qn@l+L|! zdaMG*^pL9-j8Krj8G#E+oG`g6alM`sZl0>;f_|X8xM_Br<=j~jBYX`&Vuo<(~9G#@!$4Ij{O_)DvEzP4S^u z35N6axv9IvCV_;gFk)Ip@Rg@(*2A${E85@#vpV32*3J2J(&m2#PQ@&2!f7A6mijvD z9+BE92~i+6=^2Wt2Wrih3N@kv+8Cis$#M?mUSoY-x`t|sOJD8M$G^Q0&(9|Rlm!02 zA`dy%JRupyzX!;+=kI45Mb8br<_6t)3TYf6)_l0dp+0hzlk3Y3herHO-6QMuo!>KG z?Dk;Js(oTLPY_`D0|5&+DA8=rt}NVeMD=XVQ_^qg8m&|oR3_}0NK(A$Ts1)vPZdLN z-HClQ7a{L(Ymlt47`1ndsjGj$iilqM*${!OSCMuhnp75w$|*Bmsvj=V4%dsP{6W^n z06Yx`_Fi|EUXmO`kR8dQUmyH2YM>`YDoA1DbA$+gTm&t4_~pLl_z5! z5hfs<3O2kOLPO3Sj0vd_?GT6#VdWTGcEsv-j?uhZQhyJnQSl&h7#E>j?l%+@g(I|%z~(Hwh}zRlAYhuS#p;wxO`{YxzbfW= zk(=t=>Gc56ZJF8J`8~A`q8Im#GE+ni5)2y2HZ9546|qt~%#N{cy?ysv7OS!Q%B-mr zPF0y|jZ821&Kf)^h1Om_hF$nz_iTP;zPWIW#4Tb2O2ZL?FB8D#|6&+4YAPSWGm9Et z@IB}0GaXcaX9PEskBa17>z|uvzs_RnbzEn&YHih}o)hA3C2{U4S>FiX;I};stmy+s zwPb(7%LWtTDPqk?MvI{cr=BH0N{lTE{S`gB>RV@nS2R5A()?GSh?(Q%jTe7*hnm7# zDXcpXA#Qi4xH*81gF9OE+Oh;^>sgZB&-GTcX9snN@s;_5ckk=w{OH#1jn5YOxSB#)5C_3c~hmJrI(A}~zh-(}B||A_C@ z<4eqS;EzRJ!T@VuVy38>REZ_L==Ht=B-Hn@gazA{YS7YOeGOMC(j$(1nC)PtEX5hC z>N)G|n0)2=W(}^@-1ICcv5>}qoV1!z$65ft@Fo4&K0__W=Mbt7SXXe5R-V-$@Adjewko%v78uFcqp?%~F6IIxlOEx7;6>?wej9R+|yU%iv=9$cJDy)lTd#gzCYWgOXAA71fx7|JT@$cX*Z`Gq_G z(~bJG85vC?U-4WGA5-M49sr`ZC37dSA&f{f`2b#f(t+4GQMoSxrmxcL%)Q=FFuiSf&S#}%NYgS@ZL|6^I8Lp6;<}MqBNsWoY0)&jG zA?M2NMPAuYn_dsI;Ek0?;1=Qo)-V%G z`3)>wt64LOF))$Qh7;NZ@T{YJ^O-5>b}0pgkxiUDUmqfd$X(*YylFO9UAuVnx{{41@XnhPSTj^~1GErFvOF2#6gzE&s(~+C?9ww32^T zy&*;M>-(5@L4-oVRH#6OZQ56W)#FxFat-Nj+3nTbZrkCNfZ&eC*!c=Iz()~QQ~LM2 zMvH`bm|{{@;XwLfVpz;ApLon{^JkhvT%1+$~T3h6;l*c84* zTqpiyv)=4`fil)%m~T#40*MkqaXCld7IPhIzXz8g86YY;;4ZQ!d2}*)KiO3|`i#=u zs>*eXkM2=l=!o3{GX?%-0gVP6Y*5UW-jT?sD>(Kpr~4z$32%Xb#T37J!8SA9FJ^;TaJ4O4Z9|fh3;dKYI!zKc*7*qJHk?t_c2` zSlBMVq$ChdW<+}0Ne~`KskSp@ntjzCqfK26@}d#OQRR(K5zBG}n%UT(Rp5L~j#gNF z_%HdiEXQQK*Cz{Bwj;2s6cB10hmaoAesv=-$)0NT+g*#mFGA`xDA)R1*s`B;oY+w% z>^@-N$QqbEkUIm=@RZGW`Q!N*ca_v)jmu0_Op(v=|ekEyEx0eiwtxqn-}eT!<| z0Lz1CUazqUol!bt^K9l8xq^VfwL?Rae^Bq7xAA@N_vrafa?56`?1i7MKAEPU#ZJrF zwN<0-^Heia?*bH(;`@n<3Tl}T z5_P*W%q-81qj*=M2BDCZtpdM_kmBVi#c@-+Qq|Nqzht%TtV)q#4^lN!^o%Xv-hR=k zO;8@{mQ}v#+I`~h57#Sc_OP(K=;EyP zCD&>59N$JKOz(#kP4}h>m_QiK&;hkSQceZfgYgf!co+6F@*f#(X|7Pis$wL9Z_T53?-^$14lX&dHpMyLJ4>E+FnaZ2JqZU5Uq=dIztqsf`MUXzF-#Dsa3| zwzG#@vMZr_JgC2WC4{Zj8g+^7Q!xWd$^kz^nJGh1rQCPZaG)7RSRE+NV$UMM`zROhOKTXEIU(2oLHXt()Un9 zUxD*-=x<`ALRGfGR?AxG#3KCw2)1BGB=$c0U=o<23y5P*Cbb1dX7jWL*1;c% zuR?CFZDfbx7k-(j{}R7Phm>h1qyX+b0#GYwaGXh zDq$0JEKp~DzERq_?(Y2~3r2qz8@$kty|4wQP4_vnEaI@{GY|kSB5U{wPP2ZPX-Io0 zR8^5;d%t?o#d}l>!u(SI>XpgGK&@`8>&7dbTf9>w(}na8Snin)5csq6wxK2~Cy4Al={1pwvmCTZ|8y9d z=QGuGfUakf8+!1G;2W5AQ&a*A8x>q=2U!0JRMBUfkkl92(A^%^RX8Snzs(`0I911T z>Rs;X`Pg+YQkY{_NQz62d75$je+Q{N-g^7a;DDuy<7P@8aE#V1_Kx}6iAC1R5E{#t ztC^mLy?G`3XT{OAGud)dm#bw~u|Q^s&gFthNmNYfgNXwgj#fRmf5+CuB7u5Tn@eah+m^w>*=I++;^Yv;QYX* zUEHgusSUNeJ8yZed_`{B9GrJa@s;L|K&N{z0R;Gy5M!N2 zi-+53;or>lzvbroT`v{WwDNMQVG%g1akEXojAICG14&Y5!fY>{ptqPtq=-nemcz4- z;cI78sH@06mxTlyrD@pZ0?kU#&^x+8u^AcFDTEN;p3fP}(tSuZA7)LHs_CMuUQKUZ z6q7dGXiEwAm>SKj5gY_y6)=-5jJ0Ed5)0UlT@~*!a2xh<N75va}J6eyU}KuMA;4x2m=g+qjCPS3cHGPv-`3^`)esOq>d{L4F96RSbe|{YYFEC zo3BTo8(>cSeYwsjR3_f~%1;;v;A2MTV<4R8=)F@GGlT?%BdqNX8p4}Z+%jt;XM#NP z(C^)O8~xbp9#SZq{|@l4}BA;Vc@WOuJ7D3PJ-JDbKyf6$g;9X z$hFaszNGhzmSL})uM0+I?!*q?{)D+7=RStot(d9ozG#lbm1E?(vcQu1zs+Jf~ zR5yLf!DT6FK$>7cR>;Yv?>u5(>WVKw7<^iw6f0W~6=`1@4uwFmT zKjX#9PT^l-fIy~$T#GJQV#~`%;6#rL`N6Q@l=(HqjW>yiw?>BF66_W4q<^juyHjwe z(=Z*FTcO6YwX#YpE&~3-D{7kQua|5>X`!&GsqMz(%}48n#6hVLy$Q9>Y|3#n3GN_S zC9FDS=qU9@9*uK!)wTh?A!q8pxP#5u@TOTzg9 zerx=zfba+y5a7PUMQV|g%Mtm1*vfSpmHu#p6-w{CXwFn2X@uyfUqPc#a$g)rJ#XK? zDH?2|AO8|Z*0!-mk z0YFW1K4d9h0pL{aPu-2^{%6md#PyogXtNR@IQw6n7r5D@xP$+x;F8kdMa@qNN1bp? zpFNmt6TJWB6a3f4wM5W5C{EA<$k1H%U+DQn_|QK5oRug(Q3ifB>y(ikrZR{>%>NU( z32-ir5t_#GXtx{VtM1^QG>hvK#GzDTdoskemefodE=iyoOzlIIPS>1}gawEG(4ejV z{+Woq25cl+IL283;hZ-k$ejho?g~#C%=_J4vK5^4q>!T4AhhJ_bGp~P@|y5!t?xI! zSs!-#9c;80 z*2;DD5~&xzyig6k2Y3iUAiKrnL)@#|(8ghAbNG9Vk~KT4srdWEqy^G@|9Y?3obRM? zHtF@g4f#)y-1o|5w<#hB^ z*P?vzIY1yX0egXEu-YtAEI>usU;PnfGlPGIl~={<<;rhmz4erwn-nVW`(zG6nxD*? zOcAa;5R4V$9l#K-a1ZjdxVJX!Sv(J{SVJ`An9bo0nbkCXo2g6W&o?hOYy{ZF{jDT- zP2r8krU{*^PH4k4Ut;XqcRR6-5_AA9xNEa=7x))vrjQ;DsgPVV+x`wIr}RGL$y~S7 z^_JUz{}4$}CFOHbKr5gPpoAc5M2DFW5CR|~eo=?3*w3PLd6F}Ot8eO!4zHqR|3IER z+xh3m%wjDi{r6{BmIY;EnvQA)CK3I01d`V46`pIu?$|G12<^s^CVHmU7NYBTWs9>O zJt&AH#kFBeaQ@nT4fqdTWErYISg&lUgbnYUKTpT9gd zuSJEEj*)$Na5v0)w?NpNWw^{>;$uSG@6%h&v=EzX$KV4cP&zF)Pu_L^$Qd`&qvbuP z(2BR)&OHOBvS%+{YX_nS{+XE~ixj_A#6CbQUL;F@gLfLGFDpom)@IcYy%66XO9(;9 zdC=bPJqJy=gHFXyt1bf2YIF==4=%d6^W53PpxOOC!gCm<%|A$R_ct!LQx4b;9SfWw zc6PpyFc-W!j(TwO{l3EL=npnIfu$P$m1{*)BLz{^x*h0ZQNT0ZhHTw!_)E&Z@f=$) zJP&IFKws$qbp_NpJ}u2PU_b5ToaaU_cY4UPiEmTecb-xEw>i(MCvI{`=`btQ1+lKK zspjuCtLxu?Jj(tA{{9rog#j}AxWw$sT#K0&qc*ZUTMA$L%k1DV+;*6`8lu%==I1mG z*4A!Ss`biZJk!x)1_~cg&;QNB%^Ag#FL9;l0Ec!YwzLSMoi(2$ges}aQ9IkWk7Zq| zEpcP%Gut{z@yzL$Vu?!{g9XC2#{NAXeeY}yyytyGB51`q687cAwA?1N^Jvp5e^+NA zHNANEsp&nnmF$R_v!xg`@BZ9uE1TNSNg#jG#xXQyyR%@uQ$KfKqi7`btFB$jB@oeK z<;0w53Rt1pZZ=QNo;5|rS6rFF%%rT&dc8WDFe|jBRndC?zp?ioKuxyY+9*~ORFqzX zsDN}3q$nk^(FH_02oVtxB1A-bNE8H=76AdJML?tzsi8-@NRuv|gx(WM2&BB{dH4SR zGw=TP+24HM-h0kDGy9)0&M*(TL+-NHy05j?bv;yTzEtQZ;T0_Oh~Bd^!n5vEZ4p8^b`_UfxHI{iV;Bm`bJGLAmN)Z;WgjMrvjpEd z;pV?~*WDW7jx{j*+j?QY?N&~UJ(nv>>D5g< zR%vC>u^KoTuil@qIl|G~W%U z?vs}58ZcGD$YziHy|$Pr^ifdqh{WjRdF99|#|P`oZpb&acgz#?hg5fBw4v=U@9WB1 zGOhj8*dqGxsG6^}`C}`xa`*C%PhF0A+N>e-z9g;s3HxpkkGZQfq7Lt@To-SovR&)J zK+fb@ntk}f99TfYv-aiqV#(k#U`y_hZ_@?hn+|%LH(#UpWQ*&ph-uG$`=uXj->n+p zGat;U!PS%uiI!C-juEdt{=F(((?GF`nMZsU+ry4p%_zJB^Dw)oNpGnmEy>|;y$zRl zPi7~&J8W9V-wj^zcaCXQz+Uz8N$mS^QGfB!gwDx3{Mx%K(v~7@XHu+;B=L9R_G{%P z$80Yrh8on(LtIBbbuNsfX zbYtCr5|f^GDEHGQ>qh4qRH>&6{o*OZR22CVdz#8i2%8`DL7)6goG#xBqd;()n33Qc z$$RYjYMe8{9j`{k5WQHy52%4fb#s;~amgmlpa`%)1rR?}6ae$@m(pSzlkyqbkXMkh z%3k{>qK7Ec;XW%HHnlK1tNXsrL*O>3F1K)!zt-PjnzB=knJt_2DC~!sxXU{@B$;d& z%aA-)i+h&KnKFz})J)2hG9$4rh_rVP5VJW9WcZJdQ~SrPH8qY7TmByQ4zwHBuB=d8 z50jh??aSQeNZOJv50O<{_$N;1BVT9b;_CSlE;3Z4{n2Ja)YtD(joNaB zW{#p_R2!`U4E!-(vkGIpATC!2KB^gM&syXn+O(FMFoQq4k}OhRWG%O*W(3Q1Jv+`G zbn{Ehu}Uw0l(LgoPe}&+LQsabi!KKnA{FlhZ$z5v?~NqyIRd6@ZhCAQDD0g}Pmz<2 z)1$95;v0_94H#KWF2Bgek?`*%gn0a{Lp64C<<`~`tVxE0+r*!dS{V!yuNyCTe0g(S z`u=sBqo;m|IT3y7oV7%&7QB#tuA90-BcLVAi$A+wXV2Q=?rT1%0^xq(`W_|~$Quvm z9*(NH>p8w~L9Y1moBhWp&Q55SFyEP)8FC0Bd&ZlS95$p+0!gh$>QH;Q&)lRrR_bTg zvYLd)M2`^`@@}=E+qMq}JQ88SEb_Hr@y(xAe?Epnu+c*O@H#2imV=KQCv|&an|t>h0Sh{ zR1_Sm4_hwsK7C2Z5uU3Y`@OOUuCNg0;XkY_H^=deQ2=p?hRtH4ndeq)jfRuptgq@! z!MI$xi8#@2_GR_Z_twE#$5BcvO1F80EMi_9#yrlN)vk`gskJ0&59V}{q$#lWJ6Lt1$ zzK%X|_NP+wj&4)UgJe*c^0?F|K|2lW&o9EIZSG068(%BfF*TMxH*X(DOT{c+HZq9u z*xHoXP5^Arm(Ru91Qh+%Wq{!z3}}C}tWw_u12j-S4#N+qaK%qC;&bif{si^;@E|;KM{WPoU<++3yMd))=`)RA- zh=^rWn@0`-;_p*Y=?;dv%ezPnProsT@E1VrHlH+H0y2WZ2){<4i*dNO333`(4b_0)+Yidh05%VqkBx6+d9yQwKGtR47W8yD54>OBZ$OU> zjnOm&uqF<~396xY5J#8_gxxQ&>0Zx)MPgpYiW;9=Qh!lV*@NtUz1%$+PJRCP!&0ZD zw*XsVtn4I^*RGQ`5^o2IA5sX_imNMDk8T`D%v+)l4P!LKrq-X1m*P4x9FWKOw;*n$ z22gE=YF$=_b1XNg_9>s1F&Y5sTaBI!Z{KD1q?pFtyqta1hwFzJtQGM&>g?TTZ*;^G zmR^wO)xlPSDPPWGusqarJZ%!@O``Ud?HWC?rumKMOKd7t3&_czE3rC*_pc`l{*yTY9IbY@opiGULe};cN8Q7{#!-Ee=uEF4yC#QsWqW zZf3ojsiECtw)C=-wCh-zgKxMt1$nAqU-pY|N^K4}?!9r@Dygg8sX z%3N3m}j0D?nlA%aOuZGj&6EVGj- z`)dOL35YT%VQSJXJ_nhy@~Rp&wA*lIm+aoT+B!vhp`EdGvyUI!oRCEL@2hQ`$PV9z zBZ5i5p|6w&%YuXpr=O;*HMKK2GYb8k>x!mOqivJ5KKrTg@$He}a?6)b+u|b7qZJLt za;W8V+W|PAartalBcPogZ>Nu1-x_evj?))y1M+sGv$o}oZ_JB`Td*S8r3P7&aXg_` z?@nA$zDA^7w2qC4_Gr0|<<^BSied%xI)@-&`WfIPxKjZ;$J$)2yt)c~`sxPPMZ&dng&>^MqD>~Qex=O# zg?_fTqdj(g(qeZ4GP}Kpg3&Ay>4@lEP2h#r3|7Emi9ro&EhZTTohgNOCE@W_RH0B%o-#TjT2} z9drLhl3mWyW{~gdv~eQ%CJD19JX?T`Xb=GUWZ8jE!bYMYHX@FGlPrR9^z~Fp$G9n< zEDsFS&`&=KOS0G!{t|cX2yYTwt%XS`vKMry0{sTh&s6b?yk9-=q?8&>jC6+^8M+E* z2lMX~2&vkHTna@gjomt&C}fZttS3^TZGTM?p;fe1&eO1@YgN2A6yYtd<;;LdA-w`! zOKnBBasS28?_hJS4}f->XGYf92^e0trQ2irUip}yxLK*> zC+E)7#W(C{Wx*AhWzBujA`Zq$faS`}1VH+tn$=q8L9FzI!zS<_r56DE z;b;jJ?LGrx@pFOp0hFfZKpj76&ybX=>YzBJ!X7QuB>3g<%jzNbmsv3J$}F*WvVpeH zQsbi{)}J_aM0eC9l0RA-pW$%9GfnmoFNSQ^T|N(Aax*scg*R#|G_mVu4X>KbL4PYy zPLh+>>M2mFUWLM`Nd|@hP;(tem3dr__ufc7c%Aq_Q|hg?y>>ZcE&Q0yA*UOF!3d>6Ebfr_=a?#rr3C`#-5XLnI9kJ3^^wRsl1#nTS>w;O~2ti z&`)1&!QoHS_4Dn<5VzUgeL1riUQ?`P9bMvy=+JjodJ3d#*uNB#if{-aaU)g*Az3^wdQ zQ$+mN=1y(Or(Jj3<(-bAXK}<~y*L?*%9yQNYw^95@UW|uJWp=g0li9`;qAj9?uN6g zOfk}CW28OwyKU+SSeBgDP?Edqpg;}2Jm9gG?vE{A=Y4vmzm3@UwF-UALj0Y3pBRHH zv!XyJb>(^mSp%=OxTUXQyDT%=CMPoHQ*i)52@TU!F1J0;+KPDJ{T#{zMmkdtAx*Uc zBAYkh%kXd|gaRo%+?mu8&>A|qcCh%i=>A3cQ`^zZ2w|<^v!~t|`3Z+{>zpAhph_0$ zT+%ekvynQ!9DNd+VueG0mn3VG&-6A=!6SBuq6IZJRU!}>#jQB{%pWwxOBw4YrlT#PWe)e%$H;bdRNwy2rcaPX<{Ern)&=Twfc)WN8}odlt_N4}k3$?{?4;fD{U=-_@C^YEr4YQu}u>zxuJg zNav9?A>*O3v2(}DYY=Dal9U8UVxGRjISGjiw_hQ`DF77JaE19p(DzNT9l;}qxLOaJ z0XnuL$KBN)^aC0HH*kxAxjF^PNc#K{yDRn3sj;B!_IQbnl)34HW7;n*Ggr3N!a zzt$M}R1S%BJgeK}UcIK>BxPr$(%++GAJ_^<<}4-!L!3E85aQHBq{KF8D4zcr@}eL7 zdw@Jz;T@8Xextu|Q+A^;vUYSuRXub<(0xv_|4Q_i7>12YmC(hDrxNLbG%orxYGV#{ zytzRoX2fy?DUUcefB+Rxo7#wD!t%}bW$~tQre17yRw8#7RumhCk2^fxcM^i_utiAs zS)5Oy85>ddK4h-p*H`!4b=F5G+s{d^;A>Ymsybi|BnN#pm@B*oDu8Si5u-MeZnwW5 zr?XQtK2ukjJjE5CUH6zO)NU`L-rS%ty70BF@`rVMI(;9+K(&wTe(qt$ zW@m!--qN*ZT;-TTbRF{XjLfAZ!3TmP&FJ&D3B8mKfgHwrtHw?4<6 zxauy=`}iO%!Xv^pJA1t%vB$^`*G9n^3}n8*;WU43jXf&w-sDb29gdGc|Ik?ZKzrkGtm~8;=C1^H}(LrzG7}_`)L>6 zjjx~HSRehnlsx~DI+XAKZ>V}ST8FvZ(nYF*k8X>{dkp;$Xg)H%{J?~MK^;dwK+Ty0 z+}?YoHG>5GybielyqLe=nAeAah(P`w%l5zi4uo)M2)_vU$V)lYk(}LpNKeC#CruFZ zlQ}CA@f+CotUyC1#)KY$nbrO4`@j{t`y*2!zXzFCdw*}tzJDE3q%CI)U)7#j`Pa|u z1HASbAioaA?DIg{&_$+9@4e3y6-WZ3O^XLG7=L|8z2Obt2V(3Wc}(RXH}p2Pp0y;8 zj@?jPDnkGD8LH_>0jf8Lsck~eS~W+d1ubbso6Ms;(b~`c`iOZ}*p3+l*^)*@gKV?t ztD861+)y&Kr~nzKzdj zPWu)3zh*K1MtOY8K{3whQA5y3xPq1OpqU1;SHrIH1()2b(J&(K&p8CO=jIW!zkITI zbddjpXZs)Bv%7zj0R~L`UylMR z%dY+_8pa)2sYkfunEpoccwOOGxx|TF<=v&8wbR#iOg>qc0k}|DfG#T;@~>haRRD~X zTwSvUG@7QY!>nWMo@)LWKKo|VV$n-val%sKujl6=O61aqr`iSvlnpfBIRlR@SIFN# z9yQ2+IdM@z|6gzCe{_QXj-mN)G76=1E?0>b=y6w(3w=rJ$>4hDGg(fa7=_;8$DBGe z=&5Q;)>DTB=8hPyzEtq=-pkSsEu2~Syq0V?Q6 z0ROI$`$u=h?$n>sHt&y4?~1iRz+RMs6SO$HyvBp?M z>d8M?#O-EX7%_>{2Qf<(%R{|kR8S#)=WD?JG_3`-I;p@=VFBXZ&s+a3{C#!p6rgr4 zUYQCMhCFfrN?N{L8OgEw$OKw-x1RiYeOogGoa;`Q;9?Sac3GiE0;|i^_QtQyD=;qS zEf1P%zZALg-w0>_Exi37{d}nPPyX<;a3m-F5V<#^{P%j!pypKqjbS^ik?QBFxTs9DKi2$E? z0@DUR05$LfPVyL#Vd#v2{Oy1aY1$yma9^N%+K}E%^WvhH0~2VWz`U^y`ge=?|1jRp zisV7L2A<9aT>y=L#LVXaKt~>Gi}fQguM*@GX82|pgnAQ-+9IO=b~vjXQ{ABq0KuLC zruhnU0yqS65IPS~TJm1A{okz*H|lT3t5=Tz14XHSupCa>5C7|Gf2W_N+7}_zF|A2c z7l(K11FgwEWHnfX8G;D6FN`1h+_ zj3S^KO(H=jkpfiTrW$yQLU_C@Q(!=@JjF&H!R|MpdGAii#TPZDd5`i>UO1FGb0%SZ z(41kMg6IJZ7dO85N1x{zIkT5>IX}nT1EuW>zA(?c!`JTC!gJ~s#cVMxi2y@XXoZQqXT4xUQGn7*5h6|bqD#I5PwJ`Qd89@2=t zhgBqD=;=^2e$9|H%}j#rE)P1wJFvd{-+JYCzYycjeg)-{5-Y*jUcm5NT?=v3usp@Jr~sbdf>jkGqWpL8;ac^tqYH@z68 zRlMwRRX~Oe$VVJ7DpgFz0iMk=A`EjxE#zeyc=ws?yu01{^cd%{Nhwfuq}x{~f&CC( z$F_mA>2Vz8UIn8Rv8Q9S{>f$frqxfA+=I~O>;afji4&NxoQv#@> zUzk0RV+f6zG#=L92*{I48ii2&nAU%{nbxmo(_3p5Z5*cfgfn-MRv;&f8!^Iu#V*7i z=*XxLs!87G#Wl4`R=!~6T}O2%J$x4C>*Av1VDdKlVq+R^l9~1K+s`v2B!TevzxKlR zfX0)UY#n*@(~R65{HYZTyInUGMwC*4`S-q6Ev|ser}(>a9ilkRZy5GTST#oF+_y%e zt-63jFN)5Ubd!N?PzGvkop%z4XPfrY9dPU!lLfz}l)jullWB@eMZ_C;z5l#_z5Beq z!O4g7u9s`%Ea(H{sMrJ6u>Eij!c~2+SoXT4LF&*zoTrC^hmFj(OtXDzeE*0Rni5D& z%11n=N)hlpFcA=(ZJHX~4NozI;VV=!uV23M`1dC{0i6q9 zIn*X?u(RCSCZ#{Qx4D1-OJ}PmEZ&d0ereoIsxmXBU#b@8oIUQo>!{6bkxKZl(mdES z$S?;*cn9&{m`yb!qs}zeah~Mg51xUc$=qR5c%k6;o~h@C%X72Ey&vUuCK_1Q*RF3v z#F>ENun7~4xWOoYOk!Z)Ada}tDsZVJg~HdL3}6ujM@y>eV^ec$CfI`VXMX65J~MoE zLL6@^(}obDarzlHf-3gjH7Je&F+5lAx#hmm6qM|VBIjkTrc}nh#Us{NI-_SyKHi|X zZM{HclFt=9s*kU`{v^T1Kr%pW z2-nILOd@5K{2sTB?W%WSvg?u$`*#e`6=rDG+f5VVU2CjE&L;CZ(ZIzdi~9QL%!&vf zDQM7t-o1a}xadkhek*&IetDRF%6~C%5|f*VI#(eB-;L&;WmGgW6z!6sEwy%E*Kss>y3GSilIwW5MNNv-g&0X!siTxH0uY-O&p6AFcIT#t7W(O-%&1Rp3 zGqMQwfyTq@Rzl2PiOq`=pX08E-(LGJn61ldADDW7NBze6n6{;Ajgd%YXIUEv$}L90Llp4W~Vp^&ua%cj(aSFM~6TcC3%v|c{i}{G!%lA#KVsp1- z^=v*_n7`1UvE79zZa zKU1!+A{S^mP!2mmg+-2shG`x+zwH2r#5;7KFP8GMbV)H2nflN}*(OF0zS-v`wP;x< zLi+O{=v^xad8=UU5_Cmo4)PYbUs-X4g4xsclyN|ltrAJFX`nL%ys3Cgx2Axj$Uhyp zydA5qhPE58U-b~<=e z{;WajM-?A${#22W(+*@7nl{Et=N-_k{-l!!a2}hLp*1UtbCYBt$73Li4xOX|CYvh> zO^hM~9oFy;!gz^hIO{ek5nOS}5g{ z!V}lav0q|q%FZY6UKxG7P@Vr2&lOgwuGlYFR*I)$;OAuEaIxw2>%Z}Xf3QgZtf404 z-bMLb3=MR@ivczS3b<3dZHD6y-Ij>ZH2u1~=cX3)j=$F@2;$A}!gBDQwH~oM3!=)g zzTU}8*5YVliVdrh7ak~Edg2F?o&}i;uD$$b{xSi(h@E-f$zy46QUxJ^hkzn>5On_} zq^WR>ZZLQeQg^nie(y5Jas+(^U~`+oru@Mo)?HV(3qT0rsX^dw2CR_eOXm&weo)vc zQcXZ{KBZM{%ZhBP<0=VW3t+C?D88}Ff)3aT zgng3zYI89*D>gtWRWSLJyI^E;B#syp;kVpAJGlE(CYIFOa`XA>G3L;-nY-6c?+Q26 zgA+!MR9T_zIMnaYe_9?W5{w`N_P<2=KkWp5kfHDRnk$8>VDG@zzzRV=7s*7vsl@q< zxtC-nicyXvZ=Vjdj<+A2tBTjKdjs82aJ2t@Ub;x5)0tsC-}*=^^%>3?2J8b5K^vQN z-Rn=Z^s#7&J5XXIHHm2)ukB@{o*G+excug0@hf2fP(*O6@W=z|iT4FBSZW>5z$-)=Xk zE|!?wpiX91037Z~g6(fr4A-6RS6`1Ku9yKdaHn=mM|D_)SqhV%l@^}6S}QGmxU1_q z_n9xr)IdrGV64;JLkE)2Bq=OxKB2Umfc~G_xeljU1#Ua# zpu;O(+;sEG698?~ygE>`F+agT7Qqiw0eU;CGtn@}srewAg3hx$-|h*MivGTFMm=vM z=K@eH+%jDPr*j)@wx^3#kdn}1IJJ?kO9Q*+H_xWu?w2xmysf6~%)<3b#~8MzZkvgz&)iU`@uv<#f%`TF^lu4^9dMxna4)EanIv~aI{*5!MR+ozy~(w;TUtA>CX~K zfOWgsP*S=<377&!FEWPg55Ua3U5t~YoOgUJmO@o_Z<#jSC`d+8z*ar0b^NWt*($V# zRXB7L>*;`jKTlF!7IUvryZ1e2X8VElnnFq1Y?)S}ILcK>t55Df;i7H_1&XA(h;5x0 zbF=O%@VQx8*iH6*H_|+ek{_;$e>*ZTK|`r;r$l~IkQcGB?hsAu>Ygfu36|FkXNb2< zJ|NY9@HyN7Ac(=K$jLH2ALCJVA^TI~^7QficVOVnuam5lznT&Gcos6y5Mrf0-QYy&4EkYf< zQwK&IMow>Vr7zHE$`{bp^WKd|#_Favt!f%jO0a@=AGd3CpIkqPe?ZU4I#p@pVBEee z$Fo08z(hERk=%cFWUnTteRA;8ecsA3q(6o_3tPgz0#%07#cHA((8SiTsf`z+A@^>U zUbo({;meF?5Zbj^ZLi;5eJF9PTiB!m?}8dFt=lSLaBpD90sd=$M9^8V(9IZm0flQC(0E`@=p*e2xGQo!64 zsD3-+Kpj*=te4Om5*?Pk4`i0{rjsVmVRH(hgh z0I*@9;J|;Hb?yNq2JskfUszCHEtbj8Vs%-`9)!ey_4M#O%@Q5 z%6z!AG;VWZ?yT-DnN{eh29qt12oJ?s)SVQ~>LAAv_M&j#E8Qijy94)hS;#Og_`DNXwZ~04)J8|) z3!=pS*4QHaxvs@SKj|A6f=?WMRL}Z-N=enY(#nXIxbNfxS?SH7Frl4fUy2B$tioi} zu>EJ5zSd&MuD-cjqQK-lg?8t5d4zgQ%<+Lf118Q7)xzr_`>Sx*NOeW18*(pHUM}bD zhJMy_0c+5$6WEL_%XFnASscBtFIzqCO?76VGfxloNQ;EkKtr!6k~w&&m#pAKeMzr} zWnzz4TsKR3QzNpj9^rZarZ%^w^FJRxn%+3y+fr{nwrn~s;|@z)Wb}0~Jb{ggAx5Jc zp`ihL5fvQCBX`OJgFiKXIuLt!P@7=7(Nxbz)Y=?F+;Lj>cn#s|-328eWB`YjLQT8; znuKab@`M>h6XkAh6tifStFC~})*dHt41p_llu@IkRE9eW5C26Xn=RxsXSb)@nHqx) zl77?X&y*~7RDJX7#y5BY;dw#d;nmC1Gz+qXHE zMDedS3>T?!{@ajKej0i?@|M<70yu)mAmggs>T-JZKs> zV#_mlfrHBZ2w%D)vxpkW2jC+hM>hj9W#%?bx1fCKT+}oMB?ZV@$z7;=y`^5z_MQ1K z1X=_woo=VJ9WH(f0qW!5Voz*pK5oBA>Ad(*i{EM$;J&9ZPYw}G0AAL$b|MGc zimgWqDAK7S5OW%4!WkK@x^Mmw?;ky7_?}aH$rMeNj-{di5U)XPOsx^XLHvBpgMsGT z=7vk@!!Z9ak z4jxqktt<701XT16{_N7;@o}@hjr%K8H-9Om&cv+f+!Q_`=35vbGiH?Y67h)^Npb>q zUK=(vfFlA($t8~1l^eeL)De21`S>6!%xvRpeK_H3zDIeU+$Wq$nJ0634q1)u#ZW~h zT9#G*UGSJg=dw-r)F0{%34m`Qus``YL-0blx0d zA;yh_3U+*7=qNT^JOJ^Fb9}?($87VE+y#nU)axRjGF@VL$S&*e$T}!tghh4#?0Z0m zk{XmeEZIoN=HEV#wr_^_1$75~H9m$&qn%~`R0HAE)>%Dsj8xhwFO!bD>y6rvYoiYL z^t|&t@AZvSo4YVte)^+sDxwwE)aE2fkTm47A5*kKjrf*sYemJgYU+r_CD&C#M>4)M zd+?>3Xgmxgq7cReQDOJUm-EUsn^<^-?r8eQ8?=ZSrYo%-(mWM+ED*j9q zp5wPR-c4bYQx4Xw9?(I=hFvncZBmJgT&OOQKGt0-xxvG!eNXAG#*O^~(((GWobx5- z{s%cO2T0aW(M>eA)B=z2F-*x~Yc*ILp`z;BFQ8&{EOE@rDKYU9N8;i%OWy8y`tEAN z7V8>MVLiIFvr}ujwqfAQG1QpuEshyAr1vhv7b6<=HNzr%B_Mn)kap)!);VEi%sH_* zl=BbbfMuxv_WJo~y00@~gz-iA9d2LK*5&o{b*Ox zrQr_HWPV6A%u0Y%y2mwX7r*yGFKfAx`KVTXw(UN}JDaCugOKkvUdRZYy#_|LWuaf5oXGx2&=pI6b$>*Nb`#c1 z0Mwr)>!K?SMbczFzpX^Aeml1#dm8au+x`o}hGvL>RZ$1XA{+Bh;A??=PnDPOp-!wq zWX58f3F4s-&*BHO%y(a7O?f_j47D(gYoYLD>?lS=%-?=G=Cg<^LcT)*G$k{^fT{&e z4js`T3!rJinu6mlk%lt!D+i^!0+yhqK8%&nkEK^73@@)sEtkais>!T4O8pgbK(Nlv8iS9`p?Iit8}ysbltPyj;Sd7(Ep8c3Sw5 zl_=)cRK;Eb(vgbXFRu@1TfP<;_;%iG>Golnovns2-L_fchYz)($k)K)h@f1rSGX(O zr@9n8;EOlW8GQL@{l{C}W(H`ZjP*#di1Bx;#d%+7nL_JzFdHI>gngH2A}^b*v4&OgYIv-YqL`T$KM7i`c6vKAJFdU`mLZKnk9oF^N`A zsdh))Jlz&~dhi&c+A&qnrz4K-n(VF8uthja)X0FPx^7D>i8#^(mM5W_rXz;c^0`~!FP`7z|iwG4|V`(O)=k0GH) z&L>lplF1eyoO&G~0eAmU{-r%wU*yO0(0c;LY0@N{& zgVI2c00Y6h`$>)o@yjtex^LwGf`y5E)%a+RS{m3NS;mHmZy~fFO_k*{T|mQlCDcr0 z@|}3(FR(-d%f8Q)2+Rk(_27Fm!1kKVPz59*;BO1V8LGGU&yVy!giH$4e}=cA@Bd5B z&!3f0|9D1yOCt~2=Oq@-v{iJXChz{-5;)r`Dz%bxyuJ|QkHDLCcfp?mFv9IEfYiDS zTUkPLSsmVJP0}wdt+;`D!_Ns{l%lULN*{1A*{jIQZ2a$u__b+vT7%Fjs+{auedJ5P~nI zPw_TTJIJ6`=D8BGO5eavpuMQspsc7XmusR6>~v{q@y>*^mtfcfNwLLk4JJEKmUlD^ z$B2KHLde5Cf`^aKpYj9I`Rv-pOhSMg-Y4i;xn0#a z-B_)d6i4=SmnyaAKM&LLwZ$-c-2wg%O6CP-(K3^@`Y+1@tch)e!Q~#a%7|5b7hR7L zva?V}9q>{kjk(6*i4H35D<%Y}<47d46?LK*4D#chwH$PO>V4WTtI+sL-;K{}y%~>M zW(VL%nK79i*6RI4)yy=@Usg-H^m7U=99}bXQIYRYMw9%Hs6LztVgins{fUnfOQK!CogF zhLbIDw2K{our%l~E0%`(05&y&0Mw^dXFx4(AE6bMFk0@MQU#P**)NNWkFZ#;xZ}ZQ1HDy3vCGlNE~1NM9tpPlY1g*(FZYjaX6~o)>or*r1WV_mho&f2Lv(aF z%29zTrq;SSzHI?~HG)vd09_+<$?EWk>5%ub?U;~%2}az>!qwrf*Q*p=p-(Ta9$cq! z0$W?<<@E2`mYUtYH_9eqf3OJE`OoA)##$>}3B$7IAM=#PSf4Jfde|Hcx{&c+L}mpO z?4VIY+H8>vB=R*+N-()hj?wSy3X(yfzg{Tsb zx21pqT{<4W6f3G1DM(Y42nvNih3hc`D<`R`618p|g)4HtNica{nEeHcq+|?hC zE=qeRN7-6MCdrr>JIguA2@glw%c2LK``^v|sUkULywPu316!+Fn$0g8S}x9cPc;Kf z;#ay!18F#c01Cx(0eR;(GnLA4Va69;!616>RaN<@;@U?nNe_$4kGz-Z1BhdY94#2G zRnVDTeJ1M!tkks?(CyUP$nZ{aH9sDse@eROgJ-o5S4CsniJmVImIab;GwSdt6-;c? z3M2$|`3h>aW$`-JzPIaeSMM!L;A+(zeas3|ud*EDUIMT>!wkB419@oids+ZQ1Ukm9 z5v_Z7M447#V}9%&cdyr>^OvHTx2jD;+F2KYZ1eA3t^|HbfYN}wVtR5i8|E{-x9l`t zbiV(zPT@o))#>ZlS~_ks8{LQ+_hO#J&B8}fl$r*Tb559tSVi^I3Jw03tKoyQ!9Q*4 z%HbNF(PJuzulwgth@S41Sc%p(sp?l@kF?8ujH{`L%}kc!E@)ZNlfF53_U2KmrLcn8 z+=erLBP~$g1}V7)bdg_$+>X71;Ws(Nm~-^EM7?$Tug}V*`eLOT&tHAGXFS&SMIBAk+E_LQPW(Ztol5rb$7JOwvDFcRb^q5Bxl32g}t9z_7#tlpv>cyGK`#N%$vol8R z6}7q&mlpR&D(K27-6R5ZfAOj$gJTzal99YK3ZQ}m-&J2k>B9)!>U<)h?oO=xR@HPx zqjZt?7-HI6`UjN3!QE!YDD=k~KtRej_wwbRD9zeGh0^@5#JWfznYVMTLCjU-!6p0- zq;nVhr~NGlorc;1EznS&+X7CXr#qaVTTz{=?%f7GB;_7-Y(g`jTrbPKzUscrTEIP1 zqvZhI!RVek*lbQyAS4ELqV6U^gUBoF)|X*(qBmA@KkGdQMT~8lBzV9kv&s)PuEcde z^YhC`R6wVY7ffv(R7gGvm=F&~p`X?jZ>si-3 z8~Dh=BO!H0Ic^lr6Y%odT&N_2Xda7^ZVf+KU3m#nqTIV6H^g8q{MCqA}ucy;H z9KqnH6G*>nhr&3%(O(r0P!Qzd+8IdX*y*;{xel&-R(vG8s^I&<^MV$~)sBRjExnLg ztO^ki1INYrq{3bLC(W4U;P~*X9rL@@whM2HyhnymwwO#PfX1!gB*I6xZKEGi15re| z<3yFmgGCjmW3zw_|Kb8J=#5XO1dBvH@$oV7g9z~ z(sIL2^!!pXoQs+{wPiJuUtG6+J7Y?v0igcV(2l9COhr~yOE+=+{qk_x z>TVZWJPfMes`1kf-=QFe$>SeG3$*XSgF}g$Q1)J&-l9>&Ddx!sC z`TpNNtHZadq8!Pm=TJMpz8#3@Ze#BiOAwKt=BJu{vgTtEl?O4HoGq-OOkSs5!mci_ zI$sX5eZCi{!yq&-LwNz&gAZs1$Y#K{=@zTVGfv))Jt?KvtKSX;sSS82e&#c@Y?avu zD)T7H`Q5w-OTI2xoc!7OOQMQKmdK`n_mQu}hJ^jYH_bvCc@kZZZdY!O-3im>+OKM)NCy(~Ecjc6rRRG7AXL;AkreAKCacQM(OHrk0PT}Ye zRJ4FWEHxO`qnvHpMOBi7j4OX+JqQhcSb)r#~iruCGwrz~Mabo(D;6WcR0!{QocR-aH)Y z_wO6lS0%}kHG3udR>|#uoF|y3WSdt|B7Q@)G z3^SH7%$V-a_j-=&xqjDuKhJgF*B{S6&mSD-IGN>ep6~O$yp~TZgYi!rIxWyb0~Qsl zW80GA=tv=!fkhA{%%#r+I~7*pn_gsjGEB=#PC)q3RElx8;yJb|kQvwknmmd%5A@^n7RI)T?=F0BdN}i^3@uh;}=(Kw7`J0 zqqvFa;>r^j#FvdoG3ULUymkgz2|#v$4t&>PoU`k1{j`syX7N9s_L}_(bO<3keaYp0 zZrI=9Z|^)FFjp#wpVR+8K2kLZPcJ%&*G=VM0eT+!C5-Ki_VufdE4+U<<8IUy-}1gR zOSkNcDcY`JDSS;-jyQU<(#9!&u9{`4x@E@Z;baHy7XjeVj%YJ*Wbk1~DAII5 z#~@G7dIS(pjyfUd>aX-ymh5@g3tta&<_ALMpA)Svv=e!(O?gR>U?*1U?%twL^p{!B z_(XZ{iPfB4{~{bVuW1RuM5488T?WDFOQ2E6*v8j zdiT44;Mem>n;IHATkbEiyNlFC8ZJ6V-waR){n*rfFeSKm8r>HobF_hhqDdN4DFwI* zogRkY>*u?OE}o{}htBOEx)Vg#W1VEu5$T<>BJk#jh(qk})J7d_`uRQ2=G61%JDcQt z;18+%zT4DoH<$QhvmkRnzk)%(54h;V4<`${B$DIb|IPo^sg$AHx8^Q^b!2|W-v#(_ zfvjrx@ZvkVWx7SD&x!P0#*7v0gq_f8E9-@W}eza_oaH#5-(WB;>fuHx;AQbF^@ zq5o~eL{*k81e6|;00C6!4@a~tHGdhj1(0oCqgblQk0Wfe-HRZ9@LtxmpY0t0IQk!} z00!vgt_7g+Kwtr?Z?k5@Fr*ywZMZM;JAUh4Jb?N7Ppd4&MlkCDU^6NLf|f=VkUiO7 z#7TR$=WedBBj`UZf@ZG_AeR7I-5C(WcE^SEmAxo4f!fk+9xDLQ7yr5lXjrYM1He1v z9>Ah)OZm4qd!7yyY}pZu8N(mlC%aE1G+q`i7g>~;PF094>xL^*-<7jB={i8Q(iUFy zhog_gzJ{b$BE?oFK(8tzA@6Y~10}=2ebsXjnc0gwU@8|!Z`m~TaWG;(}!k5A;zv##S$2%de3GCT(bcu7cTVVnO_C*<4b zn0bEeogWubO#iFrv>##H|>fBm*$6sj)WS zYC+Pd=gEWQ>jG(4x)wwDZi-)4&wS!8!YHId+1!`mv$8R4u~;icXE!~#K8oBcF*Usw z7x2CBbaWByZtL_NF?SAr~(D9w(ql-^$0mdhy2oxVJD0AC$mI&jsy(9itUu41-j?JUYytfP$K>DfnDt@8s%j0urruHKa4qDz= zDPSWS#3w9-k3LCymK3&9BVc~lotwH#W~1g{G1aM=qxOk`+#of4F+Z}@cKs- zM8NWV>lGt9WV}stZZ;{-Jh!8$2byyhK(-1aeXU^FhLqWgE-l@iAeu~?IHby$>Ev?2 zFP=F&C2yItn+4rkk2LAKZ1Ka*+VVgW2x|~_do4nDun>@Bt1yjq9lEPpIR3pM{FGGS zMa}^W;TgVTl#JDjWTgCDAQH=IO3O9=H@nG7toU!gIEnklQu590$g^b{?#YWyonp%2qSmAsIfLhGI9{H~G^x;zPj`1*1^UnGByh~Hqkj4K^L~)gM zK(kWTy}as6Sv?!NN|i_k_z7wcz+rp^vjH~le;nY#6)Yk3;QJLUXb~D#ZQ}8tPB)-Q z{IBut-=6a>rThjID$CCA?=tvG8#A{KYRL zwc3xB%@Qe|SCS$h0LkYqzgX&@6t}*R-HmzCz)` zV_&6xMK(8yN@@eub5SaaSr>+}ap=3cPA<`;acM{A=4h@pTGL;K#I&v#FU@{m#f*3x z@wl+K`Y8y5BA?B%-!9<^)`p&W&dzbR&GWTsVN2)Iq2H0M8;LS<3~t)>>$K9BJ61`u z?fKG8kV(m}`0dAr;;e$8q&^wDU6PFb?J(C*tCZCp{`uhjJ+yW>S&r7S%otqNT ztm}EMtr%lZY$r|K9Rsw5^07-GLD0;{KOE9{O?D4~T4o5I>%9)4CV-{VTE+x@#V&Mx zgY*QlYwo;=MqKvDaDT{wkz;7im9x0#R>ccbGe=e&qLwdiHeToiH!jI7ufzO|%+}6- zd*}8mc{$zbvp2zGcw^oT+S@zIvkv4!^8LSz2@Ohm}-Php>9)!8OI+E zr@R5Z-P_0%aA!FL(jE4&`da0tdGJTf)9sYwj7NyecX1nFg%gzqDC0HN>Gs<(f+@8z z2cYl2+xmm#tG*5;>%@uNKH_kSBUpGv36po_%YTzw$oZO){yy6QKIcl=lkY0^H~^_^ zY9@n@Zl|OG;<{M)@m1UP+TpVkHA)8yb%k#-KogFwyRBSNCJ`sKc?>lr%kHOIe!9|% zxkU4dff8|q_K{85DMD%WE<0%5b1dUh_;Hk`&e&#kokZk-K@f-s&>t2UMS7*gJ&lcK z8FOWYJeVxVFy6$RIk%Q`aq13#+36Qi$E2bodn1QsYhrA89VTUF>SzD=DDx-wLbFFAj|pz$usp;E#bK{TJy_#N^)VN>|3wY zC~k7QCsxkx=P-ykwAZ|PiMSBz>~X%?V!G~4E+eL?pmvh z6k_)niH~Uel#Hq)oP9)bVOl0J_4#*R8(un`S9ZHBfN{CYlGT0VPL{8d?Qhk!4Zy1P zI9hh?Gc|Lgby}$(%NuAj*gh(8E;FFwoW@=tT!DN+{BV(Zq3GUzC@BG2MR;&By+2!8QKO8LK zbh;axbdagh98}S#ksdbdTp;1u^nNNb;6aSuHNNA|8Xi7n#U=*23(a5{D&Tf7FMBWq zB(PBwdkZ`CDr)P7tbFOX@uhf;V(G``>6z#9CZGQu44NrKQSFW#RIAtZ@i9Wc_u1fYE@dtZuoKi~?Vt z7q*IgppP*t&F*7yGtN}~Bc~#`4QyFPB)`@=4QHjwx!~M(jHDe~QwFj#=REfec|Vd1 zAvs{gfzTL0s1|h9_gN*t%!#{MTKVoy0M#Q`aq=`DhsbyKw?7>Jw(~qSft~leA3IVQ zEV3hQbNesYk~C<_I30WFOZSR}#~NFR+QW$7Wn@lYWOnV)W&Ut{Yq_Z)amgj1*m@s` zX8VYH^LzIK5V}8aT8?gN=pjLrw$;)W6r?ymO z!AspO?r#Fh0_}osV8c(^(WPOcI!e_=$Y!kwXLtUx$R4~A!+(w>xI#LHKO2f{YlJ3l zknRlEfrS|^$dhA}&<0!ej+Atyr#$YR>7GYOj&AyrNnDP-;@D8qQkYq`bA?aKoEN%L zS#^3DTbv798X|<;Ut33gtZiief)+g8MuJ$dgJOg~wTFI%u`|=OaSE1`m4ugM6b!cI z%M6pB$G$T3Ix;V+M;-g3c6aKaR2}<$q(Z&fI5jokSPEZHcc>6OH}@8h6gmLo^)o-4 zBQVQ)PwS(}Pyq(dwUK71?uR)z_cA>=&R^wMpW5bBB@J3xWt@54FF-Ew>#^I=!W~V9 z;tiLOC>AK_edy$^1afRF0-~6l)v5mjB~2UNaYpC=n3QVd2 z)|abQev;fFG&|B1{#7@)<1a?Iek-8V`!1u_*dd{6vpB zP^$U*=v_!G5FxkQwp)ta!#*yV3*V4GHeRyRT#}DA?SZIv=e<$sPqKu2cltWw%oK8P zH$FT_!(*~;ryFk3lMg;19+d#uhI}0XFe=ohsT10*rQCe>OJDi#WS<=wnKXNjG5J+n z5f)=rW)Bv8{g`;`vRqIEAbWDeo|gXsu#D#H)UVI02#qyujNUGS_3|yQkZhBcbyUq4 z1X{|4V!g*lcg@14o_ALv$^0xqI=}P^R6qkXtJi>oN-($$CE=Vt7U%R$h$e8}>4L)V zj=}k=(pOG+W_j1iUY_d0L;{e++Llp@G4m2E@<{clKkIT>dCR*`zV^$DY}GLJst=#- zesbT_Qa&Gj+B}wbq=^=9?;sVl7=p{A6i*CTs#y30z^(-Jfp|k3eO(^2>m&UeraJJ= zIBbq#EIlM;Rt+k2riF@O>0E@lxS>0KS#9FOBZ( z_Gn1`x|z@+9(?Bj*#_lj>q`gg(7f7HUQQ5V7n034)U{J$C1SF}l)T5CdK$7^8*ZG5 zPk#$NeX`XcRs^WATMcLWBRN@zsBWXLa-FaY(XU(ngNMD^zc!jozw1A8kxUA0)J$7H zI@Pj!!Z+O0#zwLVqLJH^J?{4Vvm2&j{EF=$cwEni{&Z(@%4L}rGUzt41ezf*l)4fP z9V!s#J`dvsO44UilGEHkF<9?ry9fB%I%};}+i0vLyyonrEBFL=jgnWM)03uR$2doK z*o-1e*s2p~>1obRam|*tNm{#mM~ZvnucU#6SSF3PV|a)`r)tATYZ@CG8jp^Nq?xq8 z|LR6oDgf&q~)Ug$`{Be&g#x3CB#&5Bp3~__jyVt#bMsT}Kv|Tu1N~ zyCEcKUWytG#S$g8-5YI7W%wa34q~r_w>rw`HNGJ0wZq^?fgQS1jjP3_qSvj5`!^S+ zMFf?G&iI(UEl80-wmvfCd73W?Jv@y#zl9|nn_zU>(}c+KxTw448i@%6c#t0 zT!cF~#Gfy7fln)432B2f6vYw=53WeI4ItDR<%Pd<=%|@IgI4#`xo*_Nocg>f`De%) z_b!<9LDQsbX|Dc!uZosA=NTo5#$F`dfVLaMR@6*3l4ae&4zS!RLjwkh`ASVRaJ0Qk zJ?&7PkHiEEGT}O=-ZCLxdicZnny-fv=Iw28*u|{cr-26Ec-hFw7N^!0R8{?3ruJyT zG?SUtlEt9-8*HDC1jaP2W;^^7wdB#*ZFn^M=pZ)b#LBclf3tsB)vEj12<`DZq+f1V zscI)(T*GjWBpuJ_6+OP&ntA0T^!Hos18Ao#pF-{EJ>1Wr2+ILTcy#~H3>~8_DxaXB~A|OsM;=&Kf#Q z?y8{rKrZp^T#SzOyZgFg1I_aO72}NHktyMYWOTeH#+Q#5!8Xc&6gcTXdtBT!YQ#C&Dq5~>e8)Ytn6PUA3k39@*Nb*wR|^K_9+d1DbvDk{VeTTucV*K zu%k}KWz$UdLjAJkk6jYU;wj$WNy}HTXiwTE)nXk>Pg?c|9KL#e3b9q8fU&sG9DfRK zKLXdb@p9k2c@)K`jeNDCOCZzxDYG%GDa|pQiRY8fSr^j683az|u2;gnI2|J{WUE=T z3C(40rW5xOq4|OcM0|q>lf=dsj5lsD-7M(eIXjM<9sZe0v#IK(+~=I^s%30L=QMg` zM%TiC1YjFJetnJE476alxp9oZ0t5)~U0f@U$=R*c=-WVL9~nCen!T{}Xet^9T)whw z0ZcTsHY)}>tHyLFq^-T zW&`tB+p!A!q^8CTS&FJwLDGf`YjbdXsn&1w!h;AQK=VZWzk(!4F99vSJr3(X98h2u z`5yfwqn8E5zP zGTc$Q@0ODrI(?_TPwGd1x!19kN;7Qe7QF!|z58Un0XI0a_Ko8Vc!!ak_ozkx4*2Bc z_=?1bG_dkv0gJQU%05QM)i#jleIh`ui&t`G4-!7*XH&1YvUwOKhHhjG|MK*yp^{O< zBUPax;Gh24XX5wQt$LWS&^yFqZ;Bq7Z(5wb`sz!q<~vrvLHP8h!qZ{LpyCr1P?UeIaD_>m$2X)?&Zb*z1Kz{PvX zn|yQn)9k~@St=LILhj*nUJ>5tGKW9rJ3;=w! z968UdZ8@k40Upwx?CDlp*qpXMtS{eYS{cUK>*1aXVCE*FZJ@(XAUce4+Qr!oB0(S` zbHvTG>lW?Zh3h_Qs|v%(5Y(CZq#T~-l6AJ(hc$x#suUw5qw#!Ht``U-EyzgD2a1i! zsPYA!#P(hrN67or&hjd({D36=1dGwni{6wDo6df)ZXK>iOo^!u?E;KrpU;^$tCE$q zr6Du)7ll3&nV$>YTMbu6T?+fW7ipq!1NeB(onjepg^Q=VMTnOEca?`~-n=_Ya*IgM zb&-ECj}FM0gc&uax=$1|S!($_4L5IvhZl>5@8I%A`}08ul?X9v!4mNkqm=9v&C=0J zDB7%3+JOqRKA0F}z3?wfGr5SGHfs-0*$`tAF9W<7?BdIy@uJ)={E-x*pwH6>g`VY# ziE=*cCaeLIfL?A}iPnoMYC>v#OHKM8qn;6#Hr8;n>Q;0ghSgz|FdmTBryWU2VskRW z+nz=gW1`_Y%IXWXF?*U%AnoRT^vJCs&akWpr%qiAcpavW>to3>4H)U<*tNNtw^?8C zr$_3fy#UR-1hX3hUZ3k5ts)*Rw!C`%@>0wc@f#>g_r#ce&f0uJ<#LCra;F~7LO*_E zFx4oRUYm)iFYQ%Cr|*p9Q5H6^qq7@9vO^oO$a=A7Y|T);J2bJEY~@h14jEZ09e@M5 zfz4_1EtLH1YQwIr#duTm`qJ+qsnPQ^JA~mumElQR$QON7f}tYKpbf7?t&bnj_)zI% zB!_DmTs!e7?!I83RFagZoM-SaqVH>)L%shB;|qyEGS4C-zBkJj;wk^44bwmmbH0$XSN|zf`n=>bfHo2Cyu!@FzK9YKlkB!gYf9_%@q1|>7 z>?DlESqla)A*Tq|x{+H_GjkfZHws|Abtuh`_|W5~uLFI_yNhhnD1<+XnG1l&7mf%Sx|kAV6YXbu&jpSQuP zcFg<1QQKdiFrPp0(71Idu=cCgeZhPDi${ne$BnOOJIs9_aKQ#t_1pa6Fd$XMRkVCp z2{WKzFkpi9?(h0bO~?sOiY&H;)J9s%BY091jg;AgOsDBBP5Jsw!@PGMJyQha<<4oX zP*S`*CqwQd!gj=;eI^tkZIp%(4y53KIn73o0y`Hv5-}+)$mwCf{HtUCncFc`q z#fJhE$+&iJHYc*x%8Tasd6x7lD_?4eEdlYl6@%ogu11LR*(J^Q3WkuCY1i*xhT1$qHp!_bN^kx0ak*(U8Nx!VVe#YW<2Pe0@ zg@ACF|!f2JuF7^}x$Vd&vO`NzP{{Wq8Bfpl{oWB<# z<^^*3fX?A$>5N%IvkCJS%bdoSIun6xcbBXkz{{+<&Smfnz;o1>MR>7EAm z(so#M%kcb&z+30LZ8u#e#2oHl(2jEqkYf4{w`kji)Y$sBOju=1J2tsk=D7Cbzwv@- zm-IyZUEe@j(&0t$f_?DJXshhFEInaRQxh-4Frx?3rt))@qSldo%PzX*B9$)#xaF=^ ziM*QUj4}y^F%Khnt{rEIGHxD!7iD;+6sSaBS1h3ziZOBI+>}WSnG}b$z+VV`LEK+@ z!Mfsqmz*NQFy-g7MqB#_md9lpg!=g>nZ8Ur8>3t9b@S>XU-AvBGl>Uj~+J3XIT%P!G?)daVHtejg0~x ziF3krH_{+(Jzffo`)OjGdU7I{SSnqtbNaCWJHs7GS_D#sQWHfRO~-gU*uACyya1X# zGXz@N-(mwcm5gD1m54V6nhlp1etiZqP`(cUI$#vFyGQ6uVVDQ;@3EWza1eUgIyUiF z{{Qo9BR{c|%h)CzSWk b4~E4ha=TW)&o(vch2nX=;#Hk+rI_*>(hzk*~I8vxTp z7uhYyDHCav=2qVO5VEa@ZEhsQV%W`?k9SlESHHK0fNS=b}&4MX38P z3hIKMFocAcc31d3MaF#?n3ou?w23pA>?@seo2FMfmfg9GEWEIkriZL_6C9vh@wet zW(m-AW9Nz)VWOYOyiV;BN4E7dQ%idkvaTc*zZ|uN$M)sGinF@;q|AJOd=oA|=b+RH zkWAm*A62oW-=0<1pWY0g(nc2!-^?>pGO-+u5AiP!x!l=Hfyqxg1yerI`+#9K?%(h$ z=K%Z)08s(FPc{IEiXy{lu5V4A8b|~QH5*eq`y3e`sQLWy6EDT;ktYoeiV>HZ!LM9M zxiCW)bV{5Ckd7!m;?BcmucOms^$p;Pe|x`XdaYTMO@}h)l5^QHSXXhqFHCj~#<76dz!9to-40VMcYh=c6MFc}vfOd}i{w52u19?^u3Y zA;#DpJDq$?XUl2Ljd=}mzK%*FN(LV^q7f#DiO4)ZJYNG%Hp;N6Jm*xuU$AkhS=j6O z(++Pf%{i(sciSW>#^ouSgyVmF>!Ik!kuc+supRHfavf8hv(wGHArZpr0Vto1g~iC1 z05kxwasi+{VCp}^f5^Xqn*@>3kygv3zYub>8{?0+$i-DJN;TUn_$M^(R3dDC#tc7U zoTGJP(?)n+Fu$Vn#TA^MnQ^o=o^bvBr!)93{Md7dSfv zCy;H90_mr6{~dMjfB zSguJM|2=z$>xN$$fVY16&wu3~YSlcBKpa%CWq(I%|9nCc_U0)^xPQ*I z7@C2gjdrp+9G~ByUb^u8Bjjmi{5R>7Uw*}#9e?7GaFYQ8?(b8fFJ`l%ffP5S9Vws< z;b%CzOGY4DgZ1bW+tthTtn<0dOZU9j>}J(ZY-)Q8-nhZPknzo^d$3f~OEyw{^?pWP z-V_dQGF4aCsDi!R=5S@#ySEF?9Klf%`#e=U|q2Y6<|;F1MNy0KE0F;z=}liatv5oW5@dQayNi((xyEU z5+Vw(zbh=}Qs>0Sc>=S3T_~wgXPv|=)Jk)K@yskxCnl@Vk9CX-k6q(63)u&w79P=) zNUM6RJ?5`b05(_Sv_>Ms6MiBd=7Jd{8sy7Ux7`j|As2kc>{sn0&kr?B{7856NuN5G z^lsg`b1$+%u+TXIB_>xlUg^V82vt^>Go zXl)gmmf}DaAw(CYw@)af!_e-N03U0`_%!x&ruTdQMgK}S^rGbLG~K|&s!02TD*O>( ztl&kt&i@?o2!r6K^0xw>e)@xTq}WdgXKLm2nV+r67K67$FIs$bE_(V__P)k<&(ERX z{SrCSgL#*Ts+efDHsdv0d>G9#p>4E7Yw;P1FAz?TW(jLhQAWv%TzN-Opg;U!$ zelta>t=>hk3_NBq2i(X#C&C|&xos4cf{Y?;%LCpH?tcKNLCWZoP2mjT&}1Ya1T2Py z#vn!T$5(*iT3gnr2aPK>QXFB>)IYJU^D#FJJDCo!5nWztF23p*vnth^O34-UKQKRd z8+k0$Y{slj{h~D$8T$mu4_Of)A|w6$=Ax`^D6>iT8yh@1dLJnalhmT~zV-;YX%A$q z*IV^D&etu&gLl^{{^ET`BHi~2*yUE!aJE~kjwe@DEG^@VN5#F|CUE`^-hYr(I==igsBBUMTcmozHo5fpdp;YBE8XbhDxdAfrQaHs za=!GRRcgx(-|R4D*PE+a_H<0dUT+O+XC_OLBHjbIUS#(1F)smo1g^Uf4%l> zfmpZ>v_<{_UxM1Ie^;_A%=W~7#nXpD*$0dNV88yKuS>@(!V!)so0^}w>dRSu8~^2V z7OvDGQzO1!!Gaf&Vb%ZX1ylYto}`$_Iux=J){QA2kr$c0|GM@MOzhw9g36}=q)T=l z`k3F}eh)Pb*m{KlOQZkGHQ~{3HVh;dXPK|VeNo@pTOR*phvhit&1N)Ep8%tO|1+ZPE>p_`(?2ZfTRawt$^gj5 zcN00TIb(yNN?OsjB|18DA5W{$epHiT*S+K#k|#Frp0iMxcQxml=2YP~)!7+Vwh5}t z%R1M@avh=!!vbLL`_RubokbqjJ|TTFlaGHeON;j+gAIwZUMyjub}%*N%Sg^f8$mV{ zM;;!HT5GlkdPsZ>_isO@!F=bwIk*Q6X;5CmwNrZ+CMvog8kQddzfS-88%ed3 zvWr7uU)ZN;xD*1`P_Km1inW$eJ@tgCuCVVsXI1XLzQT1dd3AF3h7bO3jh^ah8!kGq zgQ9{hXp;1DKzYiC#KS&}xC`8F=|uX3&Uy+>D8jFletdy+*%f%7cV1~ ztqv^~-)HF_#56-@Hlk29$e493KVNqQRe?US1Pv{H+Ywy-d$j(9y2UFoBmZybw+3yPdF6Erjm)V=H8@!t% zHTDko3)a(Xw(Uy226kfr0)$S67}`duF64!-*PcAnuvl9zx(l0G_hWtZRTmVPmx5)>WpO z?yan}Rm#yYh30&@mA%)i`W8J$?N>+$AgPVWS^VFK z-5D@LS>t&aHMe!wNQz48z{Ky4=AWpeWq$Nmdy)YN)oFRc6;^LSjV31ha(mvQTi&Lb zZQfTF{dp0C0s1Pei;u_){RsYr%ghu|7o@;5(8@Ba5);zv)aWR)#%Kd#Rmzg@H4Sd4M^Q6-t*bkHGq zvo&(yBR@(|Q#K>Ds5-#leyJ1@3TPlA%w~H*j-RQh_$QM7NSl#)fiAd~jo!JV7ZoQ& z|9*M#=&RFQl0APF)?=g(;*9thwe*04cac&o{m~Cp%8(H+H6uAYsQixaMe{-EwSvnh z&xAiY=o~&#lXb%4bbG_Ei1;Rz$K`nID#~&QoFP4&k84^?qK7Z-(1g@J?Y$E`d zWV69O1h_n*LkS(oS0f-UyjW;@$HY4)`(?b?zEId{w2oI?KAE`@O3V9fMewF0{#XDen00qgK-)v&A>$ z;}mAn!(Ui2PkIje1f(lMkw;l->0Pp?j8qtNME#)Tq$r>R4>Ks_u;{6yV0bxN~x0cyxKWQpABG`dH zeS_c`Pq~_-WPFvZ{jlI>!=X6eoeKUjp&9HFg+@zn-Jo{0UT-~*xcqbH73+NCP1O$_ zWxbCouI)#SMQ@63eT%x((e^&W>EQ`I-Oy(9h`ByD|o<4 zD)L5Jw&#ss#7c%AikD?e4WHwR*&d{Vzp#aB6HKz~7_rnhZYxl}pw@#@Wu{R@;iMMC zMF=is6-j`-;j#L#+iG~H^z=LD8Be9(fAE>ny_*oVFE{y3)H?uWkv_rKd*|I+&6 z+a)c5B$a~8k5krM6ym&Q^CbGL2mL5d4nW{&b+o^K!JQBFal$I5uimSCEaOn(;NTG1 z1IgfKMHvt>TCO!;grO;uTN>K;MN=;U&%5%N{|F<-ly=+LBjWNQZ1vDw^qDYQg~s%r z9D%_%C(%JCyJyX4rl|Si8umC34Q&24qEdcsZc?s+hvF!Da|eq5$n%%#KRE5*2WQz3?0H!**uO73lD+TFj0w2B0X6m4?! z2ru?YeukML3P9RW;A==lI6V`{=TIO3AT^#0XwIcz%m5+K7~_8lJ%|1eem>Io|JtBiWC6IfGfdfiM#>+K zYa#;(r#~ETkp}=Bd>qz`X77Rf**Dip*&Co#GD!v~&^EZ)-vM)_Ah?*D?@!38#2c3@ zFI^tQMO03^PkpQEJ`p_fu=is1onO?K2y6;9oZdy1?c$gI6$&+Lpqb{9t-^)MlQi4& z1&5n;LIQoIOb1&<3;j945(a0RZk#%k%IQD-d2@rI!khoO%o)KGOVm$JFIolO)j)K{ zVri*G+4y8P9YV^n3SD|W@9MSS{2J(fxrR_+RN@?0>qbnzA!7?2x6TgRIi#&E$vYY1Uy#^`Ynf?^QmG=-feFXfks0jCoz0g-R-MOz-m_0IYMlW7~wNvi#&f9FK2BP>>OR6aA}L_U}p(PiWO>rvzfuG1d207w`9x zM9sR@1aY1YInxfiC#K##%BrW2oO9K>sCpEXJ1u~tnMDyilR#uEgf*k0BDAy(B;nLL z0V6RQ*)Y9+`;J0Ort~l-mmWSa(x(uh;gL39tGs2FB{PNOv8Jic;hxW?SkrVik`)FJ zkh#4o1U~@50ozjD320*&#!wW18MtshI_FruIPPDRCV4C1z2@04pTyR2?a)Z`nlD~GY$U}gGJ;vtuggP7uCUx|oDo|M{dHND0D=2_uB z_4dS<8=0nF3K7j=g}RNG)t{OKLia)}$`zGL;ZLyOC5$!4vhP!+~zvxla8R zsL~;)#XgEP8EsF0KqVw;qhbg`_%pD5r#K^y(AZ8Vr-`ftOi*r<3oZ=RfTI@& z+T2}Y-~Qq7`ew55r6cS0GkuE5=3qeon_>;C5auY>+8?`oC1gY&nr$ZI@U=8zXU`>f zqvfNzZvXg1??IM{aq)8hvV><#k-9+#Ot3Ak=CqFNqWStwu1`p<1#N1~(#`y$>!6d(*OWk$Ne!_e|sat;3Q0a&2 z>NnOdRdG#~2DvWb_VM?HvGLGCvR52e!dAtXetPtmTVco0+07JeU|c;nX8VH#kCueX4NJ+3PK6#1P% zwe{X0c*_38D4Y`{mH_jAPdd6(_r(k_I$6nS-xXX2Fko9cElD-5Q*S-)yzW-Edo`dz z&g}=g$+Cn=GkNsb*}Uu4w4kL|XJ`d0;P)mU7~%HARoLoM0RF!;{vL}1Xn*CBiudxq zV$QB7iFZ9ioM(8=fybTZLI8+{#jGtEh&B-~y7Ys(UTF7*Tg0~Wct((QhW;K_w_9I1 zCXYLQ#)5YKiJs^m4&^f$frJ@gb8xfl0S*mImXVrXRPg$(fIR1+H&3i`bM`^Ozeb$!xSC-8TD}g`HK< zN1uAiz>glckqXn4Lc@Qc!$u6nxwyIu#i13qo9b!2`#z$h#J2sKW%~Y$uO4njE6eDY zq9L7Eh1PJIQq24d3yU|VikZBTr=A`Qu_?j)jk@Y)r zuXTn5HoWfO^iL~@c?iw^9E~NcA!&z@_mZsIY#IJe?M_gMzJ!jl7Oc#JT;QX|uRwh? z7ybIiy0SmvvOA}m*e*N#V_9wa7a50UQ9#w_PL+LiA`oFRvayDRgiq;O8BFq8**3K# zQ#B`Eeoa+-l_u9IKTW)6-jsdQuvFbQU}Pk?={9O+L1)k$=jr8f@|dY+>hvJ4(h2Ld zjratM7_gp#hSR4R!*k%55_-fQ&A(hj-GTdql%&?I0S}_6MA(gdQ=V-|E#5ryxjy9Y zySKRB6{e4ThVw`EvyB+4%-hQ-ek0Y;!r7Ep+f(6f`l$FA^n33tBWWa`NolWNTFaV~ zel$7P$8l)^g)nxR8md_T24j-|?D!27Rw09mF+sI8f)oE4C|w=gK?*ESybIoPu186U zS;<)lFZq3xFlS#CPkt;sL(b{~P`O;h0}uKQ28OyZ>l76!!_pjzJm)Rs^Z3{A9ASx@ zdUk7%j(yfGOQyvHb5*E(Wri7&^8mpp08v>J65{?%)RFRIvT?YM>{kBm$#Tm(kC1Vu zg&T>W;&MgZYiNqP%M$jQ<$u+zPQK!UFh=_{!lSpvXx8(MUC~&7`6}(A!!0`nZV=Pa z`W24vnFS7#b4$B%jp#m>aMLVrWsafs$Iupxp=p-g?@U{Un0wk5G=2<{T~dvMTvVSw z6L9a5+VS7ZEyLMoQ_~j!nXh-SIlPn&_hxd$Cwn!EBz0WRNhtV5IHlH8T zL}x124gQ^byE%4kv+nQaUDN(I=VY7iLB8#~@6Lc;6&=(W@i1zx$bcAT2*k%?_XCGJ6tk`32{1y`zi3gn4mk`tNteQ7c@{I!6R+c zKeoUA6_L4UUh<2Ul%1*vE@e+mAE9o<$TbW%+dd*!tWpA<2GuBrsx#<&^n;G*`OGa0 zJ)+UgO>6SJd2!?M(>}+~kI5&gcFNL0jAw*u)8bhrmTm=E6_e!EK^}6SNV#YY^vpVf zH0!dqbiLL*zK=n^&jm~YHNoGL?5}J!Du#Gc21~6ao0g-IZBBDmEg%<0&>Yi^r+q?L zBC}R~xGw%&GZx!`&AcFtmfHF%dgndA&uI;hA37?Jl`UZYPmn#<;~KkfhNmz+{%XCR zmN|`JA4pIQJt4P$g5PT5AOO8xOkxRh&APht|J(u8BAiFE+U;CByh?uKPYnn8!y;-A zHwrG-*AKXV`TKQcVA#*nbh!ef5l_25KK2Bg6Yz9q8R%xrQI7KR-|p8*vI{pjIJ-Ww zexcL~E1mv9@uBNyApt(M7-sJnw}xHf=MrU}u{Flfx147f!d zt!2pRX-P44x657H9}4jY{TL+FVf@Yw_+wA49e&t-3HPjM!%Om-gaT35;T=6gXxOia z9=@rYmD`A|pBM;em3XqA9^pTTXJ@VwLW?2{X8RaQm^N8p1m3>C9eHl3?!cf;;v~)V zeGrt-H^+6O=vf!@+Jt0o=t2{A&qkr%Ss?AbptEuH42q$o*anjEb-`kB@ec+~QwqAt z7XO2^_kK&VkN<|-Wu}%nN>j?2xzZfvyc$kYQ_F=)<(81kQgNWP+=JBA($p(=Dw+ey z1?3)@sfmdL!IcwmAPUlRet&p=xPN$_<9_bv58yc9I8Q#G*ZciiYQe1%Ks;t$({SNM zi!zr<_nRWRAr*~$c~f&qe6sqVmu&`!^~A60NuY+5SF-}%v(!kS3~k#`eTEW;I^zKV zo*(bEre#NQHnj~CNPJ_aTwT)m^XjLJX05)vzM{$DK5K_LS3|S9iRZZd5kfDu^2I_C zmTYI54gYd>z{m2Ee4pTFVf&evYSZpG%iqa>FG6*$e^8kGAlz8xp9e9*1h2t2P;a+z z`<#FwE$Z?9fzg$Q#GP=M7dqTezj&SEIp_#bPktz4_Qb3cSGUM5G{<@@K!tLzzLp7k zjYA6ze1d$mm1`)pZFseIC1-Z}5#_Ua^k=DO>fMM5MJj!jf}L2(yE2NqynVjXbJPb)!JzMjtn7V&|zz=STXIP!n1_O}0Kww+%#o)t#rqC~eQd z#5Xy1R3CTpRT9i8b8?#ev%}JKe>X7R`X$=s#{+^~i}aJS$LPt189#?lc3OqkmGP0P zqtBdux0)^7rgsQgwLd;Qp0JA~ic79%tmcHcVX;*lbUZ+>SHC9m8{8$U?!@7&>>s!Z zQ#t@m7d=+n_;e51b-`AYEhe_P@cSK9GpWGauoKm@6YibNv}q3q(g`FH5-zZ8SHhW= z5l81lCypgH-C4`s_sgcmN!g7b`yJ1ZD-a<23FyZNao%^z>0;a{d@WeO7|hn7B97dw z_-5d(Jawyc8&uydp&?x9@#FQU;Cm0=dS*P-ZV}>0v+Fv5qz_Z9@k~I)9NVWWi*l+v zy7a88N{y2{E-O7YO?bHn6yw|P>2n_IZ)qFtfD0t5VW8m!6Ud^6Tlmg}#L^R%MKV+A z^Ud2yl2Hx;;40G8HG5hMlLLq6-<}f*@B$33DWJN+E_ET)wf&M7ekw7#36lh!&C9y5r&b56 zS_%md$x-^LTEB#?KHAyls!}0eC~~!3#b)u2gn0}Lqn9BsZb#-+WSLbqX5*R^@I=q` zs_M}2pydd8`>CCLoeC2Up;_PE0iT!heGf(x=Zf%Cq3r@8tnT|H?Im%G1SK2{I4hbO zN{j!1?KRwo+inqgIUVhnT{2-}z+ zZvGrFF=o&FT=yWY7TpS^F_7qI*mH-C@5~;Ji?b@ znNZj;@nkK^mqYenllFlrmPM-v_-#!?au0JcZhXo{HQ2g787>wNp;c6baWV+j4MW-Ob>Iny#k29)+v5i z^tYQli9b3dRb8%%MYTFsg1Z!wFKA$ftZ;(xxyxs7bSaB9)+J9X9f3c)@Yq)JU4OJ3 zYJf)ko#n(%rCP!6|BO1tHDwSQgR9uL6!N<%BA!g6x=&6{u+PxR>MWh&NchqE%W^>z z!3#YDS2rBzHTMSB@)_xFqdX1uIIb>(J}W}r^vitno83;0P0?D@Vd>z%WZJ^ZmdF6Z z6#ZR!;d9b}C__2$>B)a?o#(q>{%Lc<-Mcb9{Bmh9Zk^)(pfGu2^q1eahUy^*Bw%DRBS`45bcmiBQ5)P~G#B?Yc%R8GnEp&R)ITYg1RP*yLKmLv#3jmcD5u6)Qznd-?Nji`S%8+v{*G{+Mjz0i~@!!9nL%&ae z_U_u1(k+9gcFaAB{j5d(%PPvcReQ z2{UI~XD7|iJs0QBfSm~fpK~l3F&VIb^ITb^e>-L7q$ZWWc0Z{6z@s@VA409~Go)|;mBN>=rry>(ge?BSsg;+Phr}w-R@so=znSsLtCn9xJ^t!BR)n%+w^AuD$x{-x_W?YLqp=3iZcX1 zTjXg`q*vU5R2sU5@``uEg?oh!dsd0M!?us4KKQw{lVe@SMwYqw3mqR%e*z03Pu5gE z_fUiXz5sgTb9k;gjxN+mf9Wp5eoxDfo4yQ{c8eMcN5rmgokyAd8}yFXOY3+kAZ>WL zm*rFxLz9|?H4NjQD5}eN{3ZLk;+@nP$Dl)A z_L6)aUfzzk!V|ay`){{y5P&)L+bzO*c2-CBPO`SD-S8qU16!FMT4?8F(5!wIVulE~ zbT%$qE8$j&O!0Y-*P5SWRP$CiUSEl)jb{pohoV5s#M1^|RO3_Z{C0PR#xKJ`AQ87e zsx)wg_ekEkq=wpVoj<<@E^Fu!eot9w)R%F8RooaZ)`!{cM<^M0njx&L6YB3@`4znt z{rA9e;Asn$W}A)GJI;^A5;VE4>{*)7YqY>xaJ+#P71C?qo$XK@!35a@?pTb>aIme< zBiZFWugaZk<_%s8z9W4cYs!uBHqn4?s&Q-!k_nz2`-YAMHm4sW%6)5m^R!{34DpUg zYfoZIx82C&+J=_Vi(*;Vrd{|X&U;;wL&kT!-c485yB__ZJHt;I7pY}|4<1@-Aixdz zKAENVT?_9VpKwFvKUgeH3(qge$N>T}$!uLPxW5Od^f8Sl`LIDRxRd*FKGnm{eVBJb*70?Zhp~>x@rMs2ew5ZV;SCA_SfoRiONPB5 zZCQP;m1qC&2yeP>Yjw-mtPH3l67_eNVLLMALOER$V;w@GZ0LRF(C3ksNX81S9v`9y zvA~*nz)O~;&o}yR&BY%n_+bwdU7f%#q-NfTOSSp`_i;<@#$7G^HGFA%N#Ee~IC)>P zspVH;|A0?~zPfQDV+S=|&UBfe+x+jZfb|~ijxvsSH7%|QFwt#9L9XBIptLg^>c~9a zkvJ!TjN2Aa;5avpwA^GxfYsL|{XD)n!Pn&9lgLW<&Ik*iG-)W~4d%%+9oKA`_A}^c zt{GtR73h9FKOA-OruL6i8n{&kAr9z<)^hXS2OAE2NVRmmUDLvza<}=Asic)KFY%+G z)Qeex4VRlB!tHBGD|Y3!_j1kgMRK(LfVF_-e#hdx*d-~^O`sxcq}yHQ7tvD+u|_Vz z(jviaM)FM4SEX+LS;A1L8|1e?K9d!%Re3kPMhO$Dhat@DC((-{ z<%d4g0;lDRpn_fjx~tcue%rD2^;Na!L+kVaPyEQ-vtv0dHS)ElIRJ(zjxe-xoZ7e9^LIpBCqtbnW1C&zqyqjq~$sVWBzSKmx?a`O*VSAsRHU z#e(@bbZbyF7uJc~i;lshuN-%Hl-J2JG8it zY$sjVqL1JoEIiP=Vs9I1m$uv6JzpNVRkxn?3wqK>>5s7_Pr}#zDx-CWRT_)3@)9d7 zncCI7&3Y$)uZJV|Ah_?%zkMgxj|KsB25EgAA|9@lU`?L^_5)yJy~7W_e=&ki-r#I9E}W}O1yE@`0` zQ8ITIJM8_5=e3jXvFipJ@_=4Hbs<+jrql0f$bj^G%FyUXutlMF>fNM}w^{fM5yJV) zM8}3^?WsRwcfK#%&n2WUf5<9;8=Do@jv`@@s8n01GH=vK@|Te^0OAOzLuJrnp|iIc zDW7KO!plHZ1C@Tp{ST2`do!@8QgWd_^TwO5;kskVL(E3qCuw)k`P}17Mb(%A##%+Zm76Q@wUR1INs!}$O*=@G z`!5^+X*vHaCcXtk#d=tc`UD>;2j#9m&}ac@_bW zbG=UWRQwLDuw#n15#wdMr>~L-7elMt_DWNdV{&Kdu~5-i z&RkyXX^vC1_Y^`aspk8gM6E#SA^VWpT%xF03(gKgUel@$ZMa|9H!ry&j>ulHnGYq< z9|Ym>f3!t+F$_xA-T|)Zk^WoIK}td7hg42$EIFg_4`X^r^_P@jdVqqzJJ114O*rWD(b>%lmmj=M9iFn*)Ccn(QpG z_=+jtre95W$VtL}*)Jfn22Uyr!ZI&^vy*a5E%Z#a9cv4Y^yrl6?vfIs8e%$Z;_SGF zBS!ibR0!OK(upi}AdX<7tF-wCuE0&aIrl4$&bHigd^;fBdFZCxmA+Z$KI=0sl#KA{ z?B>-h90uvRMZA)pA!+uWSi7(PY)n)!vnBk zf*G{xBr-BKfJ$Iy?8IKGd(O80!7@}6uqN}zZ*6~Rk%G@UrY6cXX>~5C+=@{B<+AnR zze3#9{@(*(a^%fn`tLsz`5J8t(ns37_iF8DsVaMv5rt$hn>f$dpg_v;2eh1HFtAYGNmIH2&X$@jF2k(T zfp?LOWLAIGsq@#75X(iEtVm1a2uzV3B-6zN;qgqmSgC$9+eE;CHZ_}I>KXLz64Vfw zXAq%voq1CG4Lohsjj?J8NvKdLvYlM$t4Ir}U>@;x%o2!_w~zdETeL&dLL_9B1jI8Q zIP;6gNC+w~Pn&l~hr15wuX(|BN8RK`{ELmuZxAv$AKuzSbqQpBoe{IC|CNkfG6FKU zzZ>(&=vCYRJA!wcWxUM<@m?zzv8(?cxcc`1#}5$NkBK67`l2u!J|@OHVO)$DduNss zLp)`0tpqqTVsJAE!9RQM#UguA#k8De2pFQjRwWZ!{N<8eWQkR=`4h43^MID?HK@U+ zO^7Vsk?u=4$gW^abW3!$HoNsd0=V6?&i+V^ua)J)_5b#KKYi^#71M)W=jR;L(ckVN zv-%0YIAHJre~8@Gn)#P>{>n^ZAn9Je<*|@;Oc1I@!W@ORgQkt57PAI;qKRf zuU`x#>bs*C8@Fa$yEUL1oUD0Bj26*BE`a$Cd==a{l(@+4KrD`^qBN*j$Byu*8o~UJ zlgoRCIWA5Vxif|X8I?SUR$$MuxdfXlG7rohHhyl_du$R}H8%0YT4cACP3H#JjXGlh9)vD5q+8?;*wiqvJ-V$;&^S(1|S z)8;>2@k0&o>cZ`t9u)ePXEmjdG`Bngrv44Dg|%Vw{y$LyY{M2EvIgUS)&MngzlaSI z-5gC&o%RmdXp~hbJw-s1jUyL4kncAak=oI-`Qz$T$4((Wv;RVKsQCcD>3eVanm==? zDL?kf`kFAyJ0$y$iJaGwVXd@l=EoK^HRLjH>?+de-Reo11etvxpZOU(#bQqI5n~7km-B(tNXw!=ZnFBM2xOj zF@V3jh^(<-Fh5-J){vGj_tJi1nOh=1Y|P4U8}e>j)Y*ORPE^;W4eG(sqBn28n6}>N zRC8o}(uR@MNC9IT4vt8$Rbs}KR3su~7>S$9Adi(>O*N~!SKF@+O7MCqCwX#Q{UH>H zrXG_ov<)z?Y=jTXI{s5=`0$GLFzZsXL1LJ!MkkKXw#HQC&2{XcAXkckc{OnxuGmJ9 z9G+;Gh*;9os2{oXilZ>VZDo--_rtE@GsHaZDs7C&&YuH}@`$yg%mTzQ9%=eIh9*`+ zy~J?oL$J+SuE9$D#KlNEs?;1X3DQ`E%e3gwy_SXP&p7z-+xMCblO^XUor$Pl6oHoG zy4}^nI$2EpZ-82Ofga$9F?LwOoqvqR(t%xoZ=o}D=})_AYb=%UjkC%0Gl|6 zy2<4zQ0>sF%3wTvw&Pi^cCE~Qi8kj}MV<1&#RE})4;W^}8J%TAI&AF|BIh&<1rO zu6fNX4%i0YfM<$*`nV!S((@V^eEVtsnleb^k#B)_YRc%rTU%)UsOzZvpPB0MDEZ?_ zyvr6$Z<~|L$ZYkOJT*43KEVH~hSTuA0Z+6e1+NF~UUXLTu=vO^`Cb^lxH^A<5Qycw zsV!M5M#?GvUYX_SRr_aswHhvO8knyf;%{Xbf^>v$IYzXShu6nA*B*@4t4Bwj$llmn zv0zYQxW?X|*ET~^{Wg;)m16^Q%*63MjEiyPz1#c?8#x;}E)H$}X-5g<7!z5Jiw=a3#dDv|DGa zj&<8+j@=7eE6O%^u{dv*E~iO62)9jM-=xwj30;a{oAxKoF3v?&{B;eoDtzGf@B&cKQ zIP^(>*F;g>@T?6y+&>~ilp(ZshGT(xxSxyQ$)auyN6AjI(_MbjTlgXhLMvQ{>K9w_ zu@KUPO=Dei0_lWm(LW9AJ-w&wp5(^t_f)&ja=c6D5~butxu zwu9_ljCJxOHANRr+mzkZZqyMY{p>x>kPUYQ4 z!xu~3uoslRoagVG&fwhPk@CfjJ5y8Drb&bNTtTX<=g-6}DQ^Mc2;m8B7vM08$@}Id^y`5E>#j;JP3=D z`MHYYgVXaO{1noTr<+a^)Ss3~HDSw}VhA7hagXU1YDMP%KJ4J$A!bMxa#G8&%eon>tG z`iPFlK4>K!_(Di~koBx8LxC;h`>RW?z2CSCL_R!g-8h3GS9E8qcLEEV2K14;j?)r9 zSL;=;&`2u*FFeZn5vU!pS}QpLxk~ZgwDXPwS(;ZjNH;PsnOM~C|C(csYgOS!jWSzT zMauM2P6|ZqsY4VIigeY%pXJIkHe?VB&#va2f=0FWwyti| z(I;{vEcwET+ahf}`;G1Lzv_B~MU0}5b#Sgc6Tjx>VN{u!C&hk2yS#04jN(dO1_7fr zRS;KO!#omLF|JzR>j+nNp1fvRl_g0we3NQ)>h-URrwt$6<6Em4jTL^QU-XepV{Qr} zyKgj5Ei;XHE8^KAwloxy1!43^M8(?50Hxo+SnA^(Erq||R*!Ek#a zIXF6u{Gn;wH^+MEzHcwUL59`WBS+HKNfQ)z1VpizM=Bs{X(J|PX*;VxS@jure|xSg z(=-OSY!bV|U7^BT#)3;vq3(XwK68^0$daEVBuz&$%Vd?ktD(60LnOP0A=d4 zr1#%MDWL9=jO5%<4|7Zyp`)u>`yM7EtHL98DK{icQ(%|Zx_`U2nDuA4-*ryjqAy3uO9{l`TW7X59UB@%#TL&gyIc1Unm1EmYQb#s;;4vY4}hDx6Vbkxn5Ezb zW@aMO-hrWp`v}(gRKflgsxumdwKxSAVxhvNzNg{pmp5a;smf;aU+;8l2JF!qAd2i@ z7hLt!j?*^_!v^~Fk}+HQBcPbR`ai0~|6{eG{4x>W-KoI9cdDNQTzw~6#LGj4sMh!j zzwFn8%tH~8Pxqv>F=U08-o+5UT|-JjQW{(4ye)u z;!4XTq^6YjGM$Ub-z|vEc^6=J_ z@R&)=@Q=+-STPtTFg4*KBk9!;9HUt#{Ogzu?cSq9s?CF4(h9&0Y(}MYCxXPdE=|{awH|uj!*s7H`@4ntYY4TPIcg^ryWv{9*by(T+AbQZKs$Q zy)D1IRF(Di0mV%wJ6xxz-tvc&{i~p`(x#Vaou%n1?Dr9u74dQ;cuUY`g8!@0DMo8o z@hm0|bdswqqKjmzly>P1!sf`+{Ept4Ua?Q&W!o=UW?TTEnu*SkdhT%Jr1^{l8;IBi+~OuByx+he zwcQ%=&1DT+^{NbYA1E{BSY%(Xlxt;*HoNply*+YmLTliB&!()JqjI`4x(@SFn=+1> zHI7Dw0ZPq->}AB!C71jTxY)3&dK-QZM|u^Arrkus{%sKZ+#AS>sBrS+54>P{Rp(G& zozfFOhYugE`mKE%C@?qY-QIDvfmN0+)>I?I+AYkdFKro+2=raijhG510CotJ^?q54 zBx7vGy@q+hpVY*ARa~FRl#=iyq}#SSC)fV|HlHTf81dmB+2clj$Kqa1@xOSe5NGb8x%Lm|S@MMA^&dx3V2*gy_b4qkmZKOde~&GC)5kJWqaHl|fT-UzW-=R&5G^O8%W#)-$b(Sk5?XK5!o2Jd1P z{ji~tME}S%OrP*&x+YEZKD(IpMEUZ?!W##_?LKo+;@F_H(`S0wDa6yt0h73LF%*P_s#q@8}>I_V0KLkYP?}s{M1oXk zy3JVdgAsR{x=4Ft|8Lx~d_hMocA)+Cyyc}S>4zb2HBO3dwa9bKP=-JzIBxKyue$-m z8%M+N$H0BeK9km}f(7K1k9Y(gx{-E4<0P`|+w~P_9`qziF_MX#{ei6v1${HR%vjI< zd!Rn*V}+$!P-3D|r5O6~6TRr~Ua0;D*$ZB1$`!rVwu*8~OTqRTpXWIGXML5lNbT6Ck@`VeCu((OtH8aIn4Y}kiMCl<}z-y;>bciN5c@&#-c6% z63#P-9h6vt98-3@s-OudG*Q;?U%+`c|n;Z!Vk_30iC9`!)c zr>-91kymW&mso1eYPQ_38WdoI3(((;Q6|i5w{Z;l{MBcXvkEOKRuWRj)CKxK<-FCO z)mb^AxtrkluhQnBMk(b#ksd%NG=!!eUk3z*vtcv*^z&|pE$Of^Y3ceb`wZ-~;&WWT zsh5J{OR-y!xvO2KC##I4*~HnwggisQ{&@_g$lQ5JxWGR9l_(;4Yvdwx4KPe-Hw>*` z6dQARv!Agw0aalAX|Lrw)pdD(d3D!gd%zO}`fB{RWe9Ek>+{cu>sv!oCR*+ zirEnSef_{KA5E*UgG%qJ>;=DD$faj*qRFK!TXrPSy4e4UnK zV+9Kt-6km<+o2XiYPDegNw&*^{`IQq35Q?Wu2yB1yhmzU?~%99m}tc7w0!w{0I!}B zB@;CYKrqT03_HQ*Ax?xMsq@i;v2d=ESgw~^e)&I5CfNC3J9S`wx804%8WKn*)Z?be zsa`ctp_8`h^&XY>SzwpR4`h9<5ew}|6;jV~p|y39NO3?&A!%pW+Hi!l&VsB|5hH-? z&~SDH^BHvj^O|cjgFeR2Z_^8XJ^qJWk_?Y1nFzC}RafIXQ|J~KQZ*`h^Xu0N-UYTH z6?EJvhHM5@krd;jS3#CT$$2@aj$72B)gy6)QR%y?^Cs^`PNIr>c1;Z&S?~5+w&*WF zM|d)>zD>FbRR#}cj8C~Oeoaw#fayRHju_PM?z2}6B-Q&lvAu=k&DC(q-bIR@vyjylC86)IrM zLOt3gI;a23^af8P>+#2{*^xW~{obFqcy#K!SEAf%h{_j5ZHD;T$SfirDnJkloo$O! zVkdtJ-LYh6Fcdr8FE!%`!$F+uL151H$}SZb(zH_4_mv2lU8K6fbF=fC7L$cJn!g03GSArJekQI}^+vDbFu-ph1 zQ6dH%NA3uI#(qag3^X0lXmmK(wr+7Y2r+{e1`v}_5>${2*8P@i#OVZLu;tKa(bO}E zU3yk2(Z^cDN^%9XTT@L!;r01zN1Tr~dYfSS9p3yi{7BFidt&JvSFNwVx-kMh6Sy{3 zQ}n5KeFt-G%asEZn`(}@jfF%O&w|EZQA;~)4)s#er&0P0wPxyj9G|w&u(rT4(sC!= z6PX51=kL1reNZlG7cHIhemv*;2h($D9O_@I1DQc7=EbI zc!bcOr)YS+-qGZ(c6){XMGLQx>p0G}OWCeE6eStMmW#!5xdl~QYv(9GmaNoURbww0 zTBawdS2pbSSwya@?hlOT2k+;%p%0@(%b{UW(m<-slk7#uUsXEorQ`qn7%&|8HLy{T z=^ZAQijk|+=vAm~5#<=7ZZHtZxcqaW$ge!UVUz`}L(ze>H6=mfU-NQ%m2X7T61wW$ zF10#-U7MM;X3V*R@&v?O`yo)a^Ukz<6Vv!xwJ@7JrM6|Isf^}d-g`Q3;QiGspo-MJ zmO^+i>q?NpXlhJDVXQ>c@R~ml-XmOFm?2 z4q(YAd`MaQmjdj}@M5HulkM>ZA%0hiuXj7ERyFz2tp(g!qu;jc9Hv>e5>G!orqKsN z@T5NBR&3-AIt5u=#q0jezDYGyw`9ymS4VU85gs#(&RYDT^}p>@1u_+*t;(Z2j+n@H zoqF_dO8?JP=O+4Vf)w`|^RA-Zh=KU50D`(+Afb+fK>Wqs&l7yp{&D=*yWw326EEph z`03Bh>bGb=dJ0I?=p1{t!$^*)2rPI*C8^jCS0_W!okk}a-hhISPqo%b^?Q~?XKB_m zZ25cAyxV_QA(e*?vf`$)U9d=wE6S8PwsyD*r9Hw8^C_5MV`#v4-J+jyUSh$GFeTN| z7fIe?8Uq(nEwnaO5|W=Po~c|7A&eg6nB2Io9fE^lcMC-$R@X=B>R=CW?|XK`=*4-h zD(L}JV-app>(X%@&W| z-m?ybURVLumv-^-F8LBqs_};3><;903$V~2|c+4@Yw-;%>Gl}k6{vTV;HX4x9dQK z%fw8!z=QrsUoSjW{@(3tP5HG4Uf-LaL7V(@wny(L)5oh4ma#W(UhZFC^RrS{rK(mp zMY^>%(7!bS)MmmeZfPr52mZ_opFKQcn>H%3PCB2URb!?kIeMYpz?Hy>RP3PeM@fYyg6jxhe$CX48tD3jA&yS9zgJTeyCHj}wh!pZKDPMSLN0qZ z5bY0&e+9_1yE>V4vKDMGp?}7QaYQdTaY+M^py%?-pcU7;?;RJ1B!5i|)Yz4b^8Y#v zP((IKBx61WHZF{5Z`*_)G13CheBoYclFrP2u%0rlq-X9t$I&J8hEvTg!6MA+^~V%R z{JUWv>mvV+?yQi^h9SHSI@i2aeRMq`TYiRk40d(d z#rQQ!y=YmiWbI>9-SB@eeUm2>RfilOoHE!wBYhV%t*P|njet0muSFb2tzHdlxke4$ zib%fapZ_RQ?`T8%JzZmeaU*B9l9|aU&i5_=&My8~hYc7%8H}Hn|B13Vr%cX!WAeE&pil*7z7)b0-UyW6 z08|BpN~nzGpN!IX4fPiY>9-j!_(EEnV^osg+D%=m^ELV9XOKBCXC`ttWnjKCT3Rm| z{OkVkc=3qIz>&2-i&FY43pREB!s%#lJ5Hevf#(d+%I{gMXolkqy`wq-%Ba^G z2gLO#)6q*qW3$tRAMvkZGD?loBRnE!`BVZ<4YxMCCw`dhm1%KQlGqJAeD+cQRz5%4 zKc9SimKd+V9DB`GW?s8L{D?UNfKhhQ zw-LqI_5g^m@#Y{lB>9GJN&imbpjl*Mhy7c5Tisx>*_FP9wC#FOW`+F{W;~sBoME;~ zubgJbz{T4L7n!47c&z`M&`(@r#4)TNqKq;*EvfxQe|}?DTpc8MnA`2YuIzRn_}dcO zB&((T^Dd`T9oxeUtg6gwm-U)My?d*1$DKWLUHrI2&0BT1MV{Bl8JJJqKeGU0*g(&s z{$cmRXF(F7-2h2g={&(Eb`UO%7#K?DmO}g*G8@8MSgeh@?k8$_R6F6EB%brF#-yH8 zvE6{`BY@p6P`U=66_BJg6jP^kXQXDnFs5VuKKeZ)Q{w9NRc}Ee7W2p!MK9)3UjnkZ zE4#HkW^AUctlfu4eDa^dqc9552h6zv_)*H4Y1u7=(p)i%k{x;*vX8RS|XrR>MjZRK* zL8!WWmJRZsF&(R{F(o8B#Bg$j}2-s!munM?FbtZzmpVIYSi^Vn4GOMoCiL zfGZR=@a(^F7e5^a;^w8H%?+mc1NUCy5(laJl+M?*O(D z1gzX5;iaz-Rq$Y;H~?nGx{N!qUtS+w%^cEFZpf%yKVR$!PF|DlG0#7C3qihoL(MVL zbBj>(G`V_ui=uAj=+J8$EF%BCayWrBy;2vIxRZq(i(JK2a368>0lj`SQ__SPLj>Le zSe_bV8VKn|+#7;d1*@vV#Gx|OpS@z|G9}MFObZ`7$|z)MejeT;Cj84aL-3=_0d$R{ zox!e%*@p(*E~*bCySRJ{fU7Aq3e~8}dWSq~?7ejFsO<(Zg$RSjha7qp4X|*tC74H>fOY+{8~yvP%~5#<$~#K zvPm{Nzs$SZND8(QfJA0}%WC?!&L^8c(&)O^m(PJwhbHHKrwr~o^S3$@8*YU)j@aP=KXgB2?|$j1SMqLPB}a<(<*WQ%Lvz4 z;gvtxEh%n(h}NJqZwg$BC(AC@$fiS&_)~zDK7BmB(_NFf6JE?UwEpOe1T*;f%)7RipjdtQdXm(E6|*f;ajFRpf8UsA*^Iu zPE1|b4`~{o9xm(c(;9K#^b0}WgHvEG{`=g)q88+g)NxwYYxNdm8eH6hDgCP4Y;Jm~ zsrUmj6B+*|q*vs5Vbwp^ADaGCX&jwjhi|99h^v^%Kg8DkwwzheX&PHF;YWpc)ZV=$ zZK=NAQ3qC-&Y2JCa!TL8v;p$NQPQ>LUOynAU0Mcnp8?+BwEwR z3eh3MxZHNF@}$7_iG-d3SzljMs!TfTDIDJC9@Yh9CpOTnu0*%J9w+7HSH=^vfZqQ z)9%~C2kcQ^9iL{&K;Oay6K%uHOJ}s5FuIT*e~)V=eQ0z$Yq(m{ByBiS5dL_=_T}K( zc;#g5474CBn4r$vl;>&Zh@67Hh*8Gzt?fAa5TfXxbM)Zrur8`Mw zaakIxn;>K{8^j7^#I_?6Ty~P`_4(I~-I?0B)~Yglhh~`mH-yN)?XoUfC6pgd1u4eY zP314Y0H=1MCYWZd9(MN(nh)i|j7~u55g6U8dyngxsvq_YCv~T<nA+ZcoV4mA66>rPvKg0#U;lseV$*q}R8y(7^^$jN^X`AS(o8}%)pkAv6uQeVMQtWuX9hETdt|mS|w>?tKy8hS#%1WYerKSS_X9FzfQZXXgICx zrQ~?fEQT~v}Laqvo~2D zBiridLXVq~w1wiuGbNh+B#b_)^UX7%IKE9q?Fvq=}2!>|7Lv3iYeJXtqQ+pbdgb& z^{ikC3H8m|7aOMj=T|u1>=B^zQ|d=?%#RcOKJ!qv5@=0hh6uP~gBN3Y;_O8#J*5Ty zADi9=R=||9Q^?C;{TDR-6GLj5;>Z`Mp_)Xsn@2okMOQ&}-2kG$kWUuxg7Wd?ZK#GG z9WKX`OWFC>q!!)cN#MX_i9dCP>^^lFeD;)SCBjNeil1_myLISvzoTi9PbCmcyEFeX z-1u^z%aeky?D1a2Ud_>l4%CKm%e`g__;OK+%*@~o8#pqTGR;Z-z7~+b2-{~tpRQsI$Bez82iWQD6k)BLspCIJcxvJZ zF%#BAG>@d}BbEMC?wAUo$cvgQotoN-_h@Avo&gA(s4J+etqh;I`Up2jyIyozU0&C0 zphI#XULdz``GK>Wd9as*-MK@0mY3%eG0HB^KxL)y7TD`2YNH8BUJGxA(rbwYt6|6D zImfwbLk6;CzQo^pnZ<%N6~AFk(F<6b0Qml>`ueJT0!%l1Z-EB>BqkoCnc7mKeV}Tp z^6O4GvQ1rZ$yh8HabaSK2Tceb&>S;sZQYzV3dYu__a2FIMyQ6ge(!!-=0QC2Mno_z z!A~B)T})Ip)cWlhf;ZzKx!c=g&-zdhjxaEY4W{4#2gY)?=+<6Vg4))=?FaYA)Two? zO(VrGA^I^miw@}^IQ+ookw@dQCpy!w1QBGSdWnKOReyp?3sW(Ab^ARxuwWuI0>Zgl zTaV0i7#>hLvr1{uNdd>Zc_yj6NXQ+(qx|RXea`i#8_p0nJ^xDHcHw#gE4_7nFG>uy z?x#)euUX7LV(gWFlsD)SgN>y28+yYbu1bP@Es1D8qpRL?ukDE~U3o_^=q9nr!^ketn(O zQL}YL=}SrF7#NkeGGbEtrclXb(`0=5?*Z+)ZL=3#YvAni;GSi7m$6?W&V<_A5pYaT z-)vGAC_WehmvsojLqZq7d`_5$dwnsVO_HOZ$&k35>uTWJKW+seBmG8(4W>n3F_vrv zqP>oCjGuwu`jcxL)hUWmUqE2?CC;U5yfs#%w}3&G1sETZY%q;7IQGS~DBa397NKrE zalsLQ*gnvsq3xY6?zoE3s4+XjP(651&}F}PF7r(3bQs7FAL^WBSDEkg8l>SwH9vCf z31j*w@U?@u(u|`S+m%M5O{6FEdLIUTyv3|)+2|6!c0}%LS{F%wcL5AW@}Kj?cKEhk zesRP!C$cHwg3J_o4BEBBS*K6an@{xFT55zVL*`+TB!@Mx-@BMuH217yyB>XYjd|@R zBal>u@|gu4UpD%`+WYRHCeyZGTnj29i!=oxDovzWC<;hck-i}U0!qs&ig&wIvN+MlAIs^!WkRVDY0Sti@&$I7&zw_>XXU;h@-#2H@oSE;BOfqvP zxu55H?sDDN^}Bw*<0HDz6P&I)tRF|DmyQ)EW(XpRHQ$DazuI?Lf5)=kxP5Oi=g&F5 z%z-jDKR9XIs#1ms@Mr&QDc1k0`&nb~b4e5fe`zHX-*LU&Ct zXwmwQX$%rBGjnRPP;_F1!9|UPNn?Njy;;Jq=83qy3bg=7p>TtX%jfl=g*CzUwCezJ z8MmYTUIEI~2bfS0T!YY5O<3!$**jgit6;85D+1OYo=;btv zj1L-MoFVBOOgQbf;+-w^UFU$_07ir=e zY9iAPrmj0Z4!#*K9Tza+G&r_1H4AzKKHlWde8P?;6UBL6EZkF+wQ&1@gmE@~K||+C zVCnd?1(}4t`jNthc+1g?8pHq%n;wD7{dzWXC!mVq7`LvX*<8 zs#vO6Jb&kSaFIZrC(In^TqYguWx(C8@1QhGu9Z!=bd*pjl-lWwO7FUje(Xtcjs2V? zFCCQPFnV4nar_IiUF;ZehRmMDOg3`0Z*wAMNt2ZEHcE4P2chH553pn2vQF`NsiN%g zVM~m6T=5xx3CWJf{(9(SJ z!AN6#fK6sY#Z0N2VV46CRqR!&wOQ)_#J`3AVVEb!>=GQl0G!{u?0wK$BYsU+ikFQ+ zm7@=Im)Av?e~io$xTx1h^=Aj2EJtXN@3tdOJ06m_ctA+|>-I`=84sM@3OcAEFt(%z zb0i9;Iom%E(^-zGfuuu|%l>fE!p-SBG^04LGd_$3=WBuU45)#Qa#SSXeC?|qH}cFy zcL=1P(4C^1bQ#bCmW%cl> zooyKdB?=$K}iV>@3I(x4~+e#4@T)xMuhGajKhq z>dvijKpc1^Qt8#ME>mKzKbdP9YIu{pWsR^Rk3+_F!D2m`L%9|s6Ykbtm(H5sov(Rb zX=kBqp``Zl5UZCR#7th5%U!Hr&(c)ppjE;|sh6VirFp|wSH-f@EH7%3mvT@ozq&? z31QaNs;>Mp)KP|M%^Vx=#MA4kc$YhUIJS550w7xybSZAa-3#;b+LY`4y#I^}1i9|? z2oOQ)J#iJZv032Rj8)-FtR$YVk#e^-45+E2tjV#_f`n4{aCC<)Y|j#{64dI0L4bc( z5KjY2h@w=0vR;6U`q;8;VY=2Ukx9&3(S6d-GSE@MoDP~C zZ-E^pd01=9`zR=ktfG7X4=>p|H#EXkjbzIdyv)&+7Ac(UpG*}Ie=uy$_MW(YqssG8 zaDUSi||~JY28f zZMXcVK@FJ!zYVLDj~}bm9^aAaP5CKk|C6X+^oEGeV+0osy*HLvI(tQh@E zGd=}liV^-k_ZMzzTvWGG(LNP?&QA5GGm)R3{((5hdo#u}Ef39ZLrXPqAhUfY9~xSD z>YP_%QCp-V@POs>#(n127Fs&iae1+|`91sU9$&tfWM|QCA*tfQS)v^()38p|Mud5)!(btl ztARtt)~eL}v28Va*pk_s?bPHssZI2^)#~c%%H2LwbTH4FpJOD$RGq^|Z;^y6-ZJ|^ zAk;C|Pb|In^sB~UK}pxWU92{OPGn3%I#yR8{)T1wMk}6aqM5oLfL#2J>*F=H18dUM1irPt+f{NJghLSYF zw!m7g3vfT0sRSRlQe!`tA%{#CaGEV9avng^WLJfwqikWqf~kinB~b0xBpG%RL`EQP zKPzIwWbq*L{NG_=<0OiS^$g~-28IDkJ{wu;o!mR8+alM^0*o7S zzac;qlDslB6hW>akJ3Og_h$~qc zY4LO^dICN9?7)$sFSojbdiTJv=qt@kznB1)I6x}`62erWu5rPfUVzkte&CUEMY80O z$cfW6jibatmT%^BrNp0eAWa{uWI|KCOl3XJH8|j|gFP*2!k)tIB zei&a%7r{(?Fxr)xX&ppZ5pID|3{5zz45;j4xM@Wx(tj3WMYATsKjz)Yx>JV0KW}%K zNEdfAJM;_gx4VypJQk!j2t0{Qfwl1J2>_q>EbY5cQD-tt!-w`C(Z@2haxArZQZZC&I8cx(Ys@Ql-7Rh;2`)}2R~HYnN*82{!Kp~ zd_N0|q8%;dSObhd;Y~Q-oosqzoFvV_*zSb)OAe`VYC9_`RvQICh@K8 z^iR@*X4|5&ce_tor&HX3a|3y5gOD5PHkO`kZ)EWFy^Fx9nqmoVRt;`+iOByhbn`5} z3!Gp;Ya{d11!sL^!BJ=_b2?C$!*p39YH_5BsbWV$qxD$l4kYO;-}I;)o2#>UGdu$? zWK^)oHT3UQa6#@yLG{k)i&Vuanm+9nTAH$lQ z6v)gj2;fPc13z8U2!uGzeMz3Z3ZwVqnCv+SQzefPX8a?^5s-$IYaBMK4U#74=G#)K znjc-1Gt?8ZeSWCwWW5uUc(moTssXT6W9Uze6|ZqMrx&E%MFAfVXP(_TZY(;ohUe)Y zeLYO6$VcQ>XUK(lNPCM;JEMk38J?SmKhDQ}OAdJBQukeG#`a63q!x`7TodkX4xk4> z^ZXgOR)r(iaH$ddcGPJeAY(?$pbWC<+MNIiJlY5)OW+_e(ouZ8aGQ2?NHA7xtFdT3 zq=~?w*}bpLFwFj~ZucqNU&!T}+_a8QjBy{ZIuwz4XJ``W(>@AEnD~~^Evi8eu$YFl zG}~O8CH?qugc_B!_4xp~%l?^U)clRCC8(CSiOo&3+H!-}8}kG+!7_Vf#LeE#??wN~ zcL8p)JOt9XZps>7@M>4{e=A$j>+z>-1?7L1tpGrzO%eq>E2d2)o$5Ef+Mw6$srLqh z{9=SgNhq41@w80^>`EUGQ-A6e^FpN}+Xq+eXnsJ?M)y|k$}rzX zjN!G?JBv(&{h-A0Vn7aP+P7SEzUINt*_JRH>N?PN$TFq9Tj{=zXNs#qRkUahJdKkC zn1;)-XL)p7g3Eq+Qs(OJD;-Qhmpu>7zEx8PNEg?iIsVP!^m~gS<-=B>I;E+U__|vu z?n9>GRq-$0&zCl@lllB0uYE4@^Uo5H8ChtNHS;GtfdBrn7fOmVRTlbexjjdM*hFAG zE*jUVN12w~S)f#xiTI^KaV8HlQf*T5@2Ywy77e!dwB(uD&k6G+3}^9O2~=mK1jlA~ z11#>t-o0N9M=&()S_jxtUlK32^Id>z7Xlr?2Nl#~uEpCiMJNPRvEnAf3HA@I)b%bf+T%SN)@R1~DeEE!ayb+jRRLOY= z;PR{m*np!tz4U_(1paiwc1IH!OmoAkYuSW_Vm!N>AY7jX(y?!Ss%>?_Ab=b$h`xSM zw_qjHXs1p~m=e0FGl-23Z0 zVVk@aR3n?^{@xT?72V*s29RqBOu-Hh3+x~rG`b@Ug%wN-oE4z6B!Idt`F9tSOem8- zO_%|VV>_fNNrGBTk?*A?BwYDz!~4eiS6>_b5$ZQc-eEudVS4ii6)GZt?Z6a^GrG!B zv}_(kt%4c!VAiiNL_KWv9@&3V|IAPK`kF4_)~q6_w9pLWC{w3%wdKP!O{r#0DO~DG zlx(Wq7pQ{(AwZBEX^vrlUd*Hn{cG1gQjuQ9iV`n1*L9D2#*Y&m z=k&C-XKd%l{%U-Vj6j(HK60_!B-Ny7>Y8Y6^H>?PCv~#-rM|yZWKpkK7a1SO(2vpp+IDqXTUO#uPv8@auo{Z5Z83we38a?jHe!E3{GieyTuot zeymJ+jV=-L6>Y!AC|KB=S^Z8`%?fLtJp`~L{j^F^j8v?EP-4vT>?0Nad7up0Bj5I!{%bM z?FB=!nH2pUfP{RG8P=%(Kp@{}?7S6!&f{Q*vJ@OKU(FlFC{IextCnKOr5nig$jNS$ zH|GQ$LlJ2eUqGvmD*@ZHUkVB5yi$ultE>%8dGa{Ev5JMX%{a6T!n6RkEKHH z{v@>LNd>xxxQC?*)O+~oH;BE#@m#fLG!j+`BK$JvenXYd7Dw(7qILM)(8k8~V_kzq zc^P`OH9*G3XEApKA#=Ag|Hb=}5MT@8(#X5CfDZyyOv?qqA)d!5>Y9FRlUgy%nNy_$ zfmGJQD~&+uQ@tZ~ zT~Z7%a8!3c&vMKx_niUNj^b+&$2QwCNIqf8Pkpv?%qfT&X%ER#)k(VWC&$Znd-h}- z=|95Ez5xq2?eUC+i$(d>W*e@a;2E-!;>!)mv51wL?(<5Owa)}$sl(LPPFZz-+4J$I zu89}Y{BmOs5`t^TS%|v#iSF^_9cNlldgGm7V-F7S)c1`s`y082sGkQ> zCxc3{Ks>x*kYcPvt;e<)_(um4@m+$Ke0-oCG-hQi-ACb zXT+4Qe2YD-m4{@&#PHEU7PXp=+qdF$sQG$WU#$X6xFHalhrCI#<7K0LXOf zHc(yW*L@at-f*YU!;bM#Is)(1i|m{Y19L3OdHTh0*=;tY|M%UP zSe|)FXfz{IZ`Mq?GG%>D<)SlI&8l@LNyNhTR`+QH^yzmYV8#Q#UoJ@kwGm`UQwDYm z`k*OF$9Alq&y!#s4w0raV~YKR8Oog$pHutLRc;HNY+1`7?-)|U4N1-0GMA=y7X{X9 z=CK?Z!J!dm#0P07@;i>>@||kp5VnnUpQX@P#EG8i{Wn3<9L+wBHA7h5j!YZ1m~tJ7Pcq<9It}_s5Df z28jnObgMW)uY1rxxozD3!EN&#g9KE9lG|Z51M$WOP2W=CSrF1wUI71nG2GzlmNbEK z(z0Mlydwbg`h@Zs#%;-VkMxrlj+wDCr3iG`gakn6L1fky_*ZZmU07lZ#eUv2sI zB`V(NT8Z^ty&U%y^TRh3U3?slsfW^U{CGoB=%Amr;Bf66h;swAhgq&w3sqPQS14!6 zK}No%GlTlekCsQ=XKz1Xn)6?nE=PM_w>w!$xy)#qV+V4|>DkyRg&FWu+3n6{JRl}( zIf|kCcFb|tCHmm`(vQ_@<}I3j>SP#Jg>)x)9{$DaVo;2sZMn_GB6iIi>NnSSIK9-#dYbk#V0jpCF{wDgyV4hMe5o;?IZpjs*|cu`kv{EHKvAwVleOcUpoiHdA9&qcHn>% z>cUtpGEN%c*>_ugvz8OocaX9u?Ht-*B0;6BzBGLped0#^V0WD2{<;d`m33g3#xs#! zn0R;LVKOW_WdSQu;aS7nG61(5BD^{rt9I<5e!38a%aW6a?!|3ZF#;s~80p~{=Kq#9X#Lzw%`kK?w+Yw?ARnT9C%u;(BG^tsAr^|0}Kndm*O}U(I zV{1$FW#(~VfSS=9Yng3N9(c0WB*vsMoMN@V$s0s~CAtIrOBTNZTq^9rCHB38d4$w! zpIw#IG>6r%bKfZF(6&gc+T80f)Uo8&aA*wAfT+R3CD$gexCujYIE!S+xfab&BW`X7 z3(jAYYC87bGv4W*l*4g?{Lu?BO(PK9f;S_sbt8dmd6C9F#JCf^Sv*2BgSuAUGd(hX zzx>lSp=q_Td4Q6@h7V!j+D`*Q_1k5mn+p~xp9smi5P!FhDz`HG?dL_x zKmBs4_60o(`a7wLpWFgE7W$;!DMy9nlx*b5cuF9QqD&e3HQWaoWO_$)iMbCFiIBYT zO8J+{)`A=-FRd=c&Y)zD8Z0(&eFb*3jY*tYW_Z%t)r?R2W*ui~0epSUg5EUyXqGml zVy7%;kBE%k;<>Wadn%#r$WGo*{AyGXYcB)e7AXpxDgeB!38QZys_EKWA9vM^Wy^64 zBZD}Kc<#o}Igl{})tijXm^l79@l8_Y?XR+UfZkAqg0wZnZhYq$KG z$mxvirO4B!D07yoK*VD<+l3@H6{@#RkF6&gDSFMRK>-dsN5R23#M(ALYxoDIYi-Bm zM#0P@$FsjfhQF8!mvNxLq|_P(`y|Iw%&^S14_RmeJ)5?FQNgf@{0%Eke2LINdNoGP zTHLFt-_)AZE4z-oO*?v|a@Ag`R~+KLPDg+pKGCN0G=m569)|8zi5-1O;`Z4|BtDHm zmUQYcJ^*Y-Z+TWM>?5Km2P=?tPeDy5C54(gX_Ys6X`g-hdzC>l_+t8WY_P2*A6v>*GPcL*IakB3{ ziSxcAX%r{6(gE1*5KCs&F`?8OEyC0)o_(Jl#a#f2(?@}No2x8K4Ye|#a`@p%tLu`f zXDcd{J=c_Qto{0hhZ`if##O>gej*-e7)Wz7nn^ZUYEYlUJjMVCyf~sF00Kya ziJ+wkaav^pkPlI3T(ik^F8d`7QrBdO?)4JgA`>Kh^(!}}r{~_ZI!rW@bax7t?Bp0;i;KF? z%nGe@(R~U5c=@Jn?jFX$tuDR$WmR+fD7@Dw60nUN3;6+dgi}dWMyZbgNKjF2x}bn1 za(!frBrR_z>P-1y&dyekqx6HS-SVKw6j|3BHxeDqC$0sRm?ah*&bmw`r6N}IsuIEj zubI6rdAOk+mrq1!XH;3c;fueeOKonq;HQK;X4E*`KSDuWprczfV5GGofbCN%)bC4I zJI?XdEFoi3g+Pp@e9)|LK%PQWTKboHKPji12n@5|Bpg!cMg@z#V*%Id&~wqzK?mhjYP`oT)aMjNNGfwwI~- zSvE0cIySF%zuz6Ycon}W*0kZ`C7p`6RZGBjDr94!+g@`{j}R!ueC;+aO@48F7Zy9^ z($rAJQ$YuaB)Z*rA=hk3~oYUDe1A4`yd_)2|r%v7NK5p5mqC z!y3a%5SYdGrn2=y-1rMXFb~X=5xEW%<5XEMgQE<{wfP*79gCP&2q+>%lHwt)6J}LV z4-BA#$B&+Skdl5*>r7-d;`z=mU^3*v!M$^EA48@(!_c*K4g!$ql(#bDCqX8oZ>53rYd0k6NeuRt0&mTCr* zr>577@F_q#Vx6M~2xy+0;7PHBhL@prePKb1-7V~_gqfZtv|uswHE8-DyPrqa(iP?k|x=JNt!q zdsd9XxZx-Z4u+15S=Mf$$~dz0+mnF^dbv~}R>36X58ogAaL`EU0wC5rd85x)`lRI- zXY(_U6mO(GI-XuK7=Z~w&G+^+!!A~RTUm*?qRF-7<)OV6-n%yjQ(;S4>R+PxjXVp0 zI<7ygNtjMm@4||Ho6F@?bUCu}gB4^4Pje02wQzcP<#(7$-Lgu9D#{7MNAX-!rm)D?igM zo@mzo#7g(As^{d@oW2f~Mrt?W>*PdWe&(eqSc@KCBbQcyb-+}W{2ib}yv_duJo`2T zQ-yDV9bUp5Gt#ER_Hn*;DxAt}%aHY}o`b`oN6S)nhUL10q7$|q@6Sk_tDZX4Yk3mm zb#$U)KyYZC>%V}hD{~&X4WVDr#qV1lS~MW=&Ipu}+p{#v7Edz!e2SF(56y+<-wZL8 zQ;It$wX^qPx<#Ljcz6MRngqnDb{{7sBx0R#0DetWp)qoSdnW!YKFRp^e*+b?^G>TPv=d|ODw1digce~i&Xyk~4!4Yc&A6r6gUDPZaSAOf$O?V}J zo2=$xH!I`R`UpNpYbn=e$8(e!1AE{hGVBI$VomlNSvFke#{2jabKcZEFUOno+p|^g z25yEsxtUr&b#+zf-`*r9GcCiF>MZI-|G_TA!Z| z$T(Lb>2>^Te6^|6!!*B@o(lj9Z4%HvwD{vM7yfTI@YnafaU7r`Mb4a`*CdRjQy+e{ ztF5X9sLT-Voj0D@>qf2UKQGpLrl<4#)ZN5%jXm~{4SmnP^)72@$BJnJLM0>pPM_40RT?D?6S&o*()z#fmTARz3rm zYcwg>h=*ax;C7-UZQYAo|NQ&^?926kSq6Y?qiujH0Tm7)Ftv5sO|=8F1B6Ydp!|#` z%0D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 Y7SVT2C7r|v|FdDq|KEO(`9AsI08!(--~a#s diff --git a/umn/source/_static/images/en-us_image_0000001569182625.png b/umn/source/_static/images/en-us_image_0000001569182625.png deleted file mode 100644 index ebc69763858c74127b4b0d033702bbdf85661ccf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3I*Y)==*5R2aAKmY&#uV>R@RLhcd zxv|0ATJqJSD9N(D3)>P^ngS2A-7uK8{`z)XC!lT!-R*N)@7YJCXnZ diff --git a/umn/source/_static/images/en-us_image_0000001579008782.png b/umn/source/_static/images/en-us_image_0000001579008782.png deleted file mode 100644 index bbd7fce00ad0eff629707b68f2865ceac9a0c30a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114587 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 diff --git a/umn/source/_static/images/en-us_image_0000001518222592.png b/umn/source/_static/images/en-us_image_0000001518222592.png deleted file mode 100644 index f9d93b4e22046f7d97486122ed7f6132f5ce9bec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57430 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