Azure Kubernetes hizmeti (AKS) için Kubernetes temel kavramlarıKubernetes core concepts for Azure Kubernetes Service (AKS)

Uygulama geliştirme, kapsayıcı tabanlı bir yaklaşıma geçmeye devam eder ve kaynakları düzenleme ve yönetme gereksinimimizi artırır.Application development continues to move toward a container-based approach, increasing our need to orchestrate and manage resources. Önde gelen platform olarak Kubernetes, hataya dayanıklı uygulama iş yüklerinin güvenilir bir şekilde planlanmasını sağlar.As the leading platform, Kubernetes provides reliable scheduling of fault-tolerant application workloads. Yönetilen bir Kubernetes teklifi olan Azure Kubernetes hizmeti (AKS), kapsayıcı tabanlı uygulama dağıtımını ve yönetimini de basitleştirir.Azure Kubernetes Service (AKS), a managed Kubernetes offering, further simplifies container-based application deployment and management.

Bu makale şunları tanıtır:This article introduces:

  • Temel Kubernetes altyapısı bileşenleri:Core Kubernetes infrastructure components:
    • Denetim düzlemicontrol plane
    • düğümlerininodes
    • düğüm havuzlarınode pools
  • İş yükü kaynakları:Workload resources:
    • Podpods
    • dağıtımlardeployments
    • yaparsets
  • Kaynakları ad alanlarına gruplama.How to group resources into namespaces.

Kubernetes nedir?What is Kubernetes?

Kubernetes kapsayıcı tabanlı uygulamaları ve bunların ilişkili ağ ve depolama bileşenlerini yöneten hızlı bir şekilde gelişen platformudur.Kubernetes is a rapidly evolving platform that manages container-based applications and their associated networking and storage components. Kubernetes, temel altyapı bileşenlerine değil uygulama iş yüklerine odaklanır.Kubernetes focuses on the application workloads, not the underlying infrastructure components. Kubernetes, yönetim işlemlerine yönelik güçlü bir API kümesiyle desteklenen dağıtımlar için bildirime dayalı bir yaklaşım sağlar.Kubernetes provides a declarative approach to deployments, backed by a robust set of APIs for management operations.

Uygulama bileşenlerinin kullanılabilirliğini düzenlemek ve yönetmek için Kubernetes kullanarak modern, taşınabilir ve mikro hizmet tabanlı uygulamalar oluşturabilir ve çalıştırabilirsiniz.You can build and run modern, portable, microservices-based applications, using Kubernetes to orchestrate and manage the availability of the application components. Kubernetes hem durum bilgisi olmayan hem de durum bilgisi olan uygulamaları destekleyerek, bu, mikro hizmet tabanlı uygulamaların benimsenmesiyle devam etmektedir.Kubernetes supports both stateless and stateful applications as teams progress through the adoption of microservices-based applications.

Açık bir platform olarak Kubernetes, uygulamalarınızı tercih ettiğiniz programlama dili, işletim sistemi, kitaplıklar veya mesajlaşma veri yolu ile oluşturmanıza olanak sağlar.As an open platform, Kubernetes allows you to build your applications with your preferred programming language, OS, libraries, or messaging bus. Mevcut sürekli tümleştirme ve sürekli teslim (CI/CD) araçları, sürümleri planlamak ve dağıtmak için Kubernetes ile tümleştirilebilir.Existing continuous integration and continuous delivery (CI/CD) tools can integrate with Kubernetes to schedule and deploy releases.

AKS, yükseltme koordinasyonu gibi dağıtım ve temel yönetim görevlerinin karmaşıklığını azaltan yönetilen bir Kubernetes hizmeti sağlar.AKS provides a managed Kubernetes service that reduces the complexity of deployment and core management tasks, like upgrade coordination. Azure platformu AKS denetim düzlemi 'ni yönetir ve yalnızca uygulamalarınızı çalıştıran AKS düğümleri için ödeme yaparsınız.The Azure platform manages the AKS control plane, and you only pay for the AKS nodes that run your applications. AKS, açık kaynaklı Azure Kubernetes hizmet altyapısının üzerine kurulmuştur: aks-Engine.AKS is built on top of the open-source Azure Kubernetes Service Engine: aks-engine.

Kubernetes kümesi mimarisiKubernetes cluster architecture

Bir Kubernetes kümesi iki bileşene ayrılmıştır:A Kubernetes cluster is divided into two components:

  • Denetim düzlemi: uygulama iş yüklerinin temel Kubernetes hizmetlerini ve düzenlemesini sağlar.Control plane: provides the core Kubernetes services and orchestration of application workloads.
  • Düğümler: uygulama iş yüklerinizi çalıştırın.Nodes: run your application workloads.

Kubernetes denetim düzlemi ve düğüm bileşenleri

Kontrol düzlemiControl plane

Bir AKS kümesi oluşturduğunuzda, otomatik olarak bir denetim düzlemi oluşturulup yapılandırılır.When you create an AKS cluster, a control plane is automatically created and configured. Bu denetim düzlemi, Kullanıcı tarafından soyutlandığından yönetilen bir Azure kaynağı olarak ücretsiz olarak sunulmaktadır.This control plane is provided at no cost as a managed Azure resource abstracted from the user. Yalnızca AKS kümesine eklenen düğümler için ödeme yaparsınız.You only pay for the nodes attached to the AKS cluster. Denetim düzlemi ve kaynakları yalnızca kümeyi oluşturduğunuz bölgede bulunur.The control plane and its resources reside only on the region where you created the cluster.

Denetim düzlemi aşağıdaki temel Kubernetes bileşenlerini içerir:The control plane includes the following core Kubernetes components:

BileşenComponent AçıklamaDescription
kuin-apiserverkube-apiserver API sunucusu, temeldeki Kubernetes API 'Lerinin sunulma şekli olur.The API server is how the underlying Kubernetes APIs are exposed. Bu bileşen, kubectl veya Kubernetes panosu gibi yönetim araçları için etkileşim sağlar.This component provides the interaction for management tools, such as kubectl or the Kubernetes dashboard.
etcdetcd Kubernetes kümenizin ve yapılandırmanızın durumunu korumak için, yüksek oranda kullanılabilir etcd , Kubernetes içindeki bir anahtar değer deposudur.To maintain the state of your Kubernetes cluster and configuration, the highly available etcd is a key value store within Kubernetes.
kuin-Schedulerkube-scheduler Uygulamaları oluşturduğunuzda veya ölçeklendirirseniz, Zamanlayıcı hangi düğümlerin iş yükünü çalıştırabileceğini belirler ve bunları başlatır.When you create or scale applications, the Scheduler determines what nodes can run the workload and starts them.
kuin-Controller-Managerkube-controller-manager Denetleyici Yöneticisi, Pod 'yi çoğaltma ve düğüm işlemlerini işleme gibi eylemleri gerçekleştiren bir dizi küçük denetleyiciyi fazla görür.The Controller Manager oversees a number of smaller Controllers that perform actions such as replicating pods and handling node operations.

AKS, adanmış bir API sunucusu, Zamanlayıcı vb. ile tek kiracılı bir denetim düzlemi sağlar. Düğümlerin sayısını ve boyutunu tanımlarsınız ve Azure platformu denetim düzlemi ve düğümleri arasındaki güvenli iletişimi yapılandırır.AKS provides a single-tenant control plane, with a dedicated API server, scheduler, etc. You define the number and size of the nodes, and the Azure platform configures the secure communication between the control plane and nodes. Denetim düzlemi ile etkileşim, ya da Kubernetes panosu gibi Kubernetes API 'Leri aracılığıyla oluşur kubectl .Interaction with the control plane occurs through Kubernetes APIs, such as kubectl or the Kubernetes dashboard.

Bu yönetilen denetim düzlemi ile bileşenleri (yüksek oranda kullanılabilir bir etcd deposu gibi) yapılandırmanız gerekmiyorsa, denetim düzlemini doğrudan erişemezsiniz.While you don't need to configure components (like a highly available etcd store) with this managed control plane, you can't access the control plane directly. Kubernetes denetim düzlemi ve düğüm yükseltmeleri, Azure CLı veya Azure portal aracılığıyla düzenlenir.Kubernetes control plane and node upgrades are orchestrated through the Azure CLI or Azure portal. Olası sorunları gidermek için, Azure Izleyici günlükleri aracılığıyla denetim düzlemi günlüklerini gözden geçirebilirsiniz.To troubleshoot possible issues, you can review the control plane logs through Azure Monitor logs.

Bir denetim düzlemini yapılandırmak veya doğrudan erişmek için aks-Enginekullanarak kendi Kubernetes kümenizi dağıtın.To configure or directly access a control plane, deploy your own Kubernetes cluster using aks-engine.

İlişkili en iyi uygulamalar için bkz. AKS 'de küme güvenliği ve yükseltmeleri Için en iyi uygulamalar.For associated best practices, see Best practices for cluster security and upgrades in AKS.

Düğümler ve düğüm havuzlarıNodes and node pools

Uygulamalarınızı ve destekleyici hizmetleri çalıştırmak için bir Kubernetes düğümüne ihtiyacınız vardır.To run your applications and supporting services, you need a Kubernetes node. AKS kümesinde, Kubernetes düğüm bileşenlerini ve kapsayıcı çalışma zamanını çalıştıran bir Azure sanal makinesi (VM) en az bir düğüm bulunur.An AKS cluster has at least one node, an Azure virtual machine (VM) that runs the Kubernetes node components and container runtime.

BileşenComponent AçıklamaDescription
kubelet Denetim düzleminden düzenleme isteklerini işleyen ve istenen kapsayıcıları çalıştırmanın zamanlayan Kubernetes Aracısı.The Kubernetes agent that processes the orchestration requests from the control plane and scheduling of running the requested containers.
kuin-proxykube-proxy Her düğümdeki sanal ağı işler.Handles virtual networking on each node. Proxy, ağ trafiğini yönlendirir ve hizmetler ve pods için IP adresini yönetir.The proxy routes network traffic and manages IP addressing for services and pods.
kapsayıcı çalışma zamanıcontainer runtime Kapsayıcılı uygulamaların sanal ağ ve depolama gibi ek kaynaklarla çalışmasına ve bunlarla etkileşime geçmesini sağlar.Allows containerized applications to run and interact with additional resources, such as the virtual network and storage. Kubernetes sürüm 1.19 + node havuzlarını kullanan AKS kümeleri containerd kapsayıcı çalışma zamanı olarak kullanır.AKS clusters using Kubernetes version 1.19+ node pools use containerd as their container runtime. Düğüm havuzları için düğüm havuzu sürüm 1,19 ' den önce Kubernetes kullanan AKS kümeleri, kapsayıcı çalışma zamanı olarak Moby (yukarı akış Docker) kullanır.AKS clusters using Kubernetes prior to node pool version 1.19 for node pools use Moby (upstream docker) as their container runtime.

Bir Kubernetes düğümü için Azure sanal makinesi ve destekleyici kaynaklar

Düğümleriniz için Azure VM boyutu depolama CPU 'Ları, bellek, boyut ve kullanılabilir (yüksek performanslı SSD veya normal HDD gibi) türünü tanımlar.The Azure VM size for your nodes defines the storage CPUs, memory, size, and type available (such as high-performance SSD or regular HDD). Uygulamalarınızın büyük miktarda CPU ve bellek ya da yüksek performanslı depolama ihtiyacı olup olmayacağını çevreleyen düğüm boyutunu planlayın.Plan the node size around whether your applications may require large amounts of CPU and memory or high-performance storage. Talepleri karşılamak için AKS kümenizdeki düğüm sayısını ölçeklendirin.Scale out the number of nodes in your AKS cluster to meet demand.

AKS 'de, kümenizin düğümlerine yönelik VM görüntüsü Ubuntu Linux veya Windows Server 2019 ' i temel alır.In AKS, the VM image for your cluster's nodes is based on Ubuntu Linux or Windows Server 2019. Bir AKS kümesi oluşturduğunuzda veya düğüm sayısını ölçeklendirirseniz, Azure platformu istenen sayıda VM 'yi otomatik olarak oluşturur ve yapılandırır.When you create an AKS cluster or scale out the number of nodes, the Azure platform automatically creates and configures the requested number of VMs. Aracı düğümleri standart VM 'Ler olarak faturalandırılır, bu nedenle tüm VM boyut iskontoları ( Azure ayırmalarıdahil) otomatik olarak uygulanır.Agent nodes are billed as standard VMs, so any VM size discounts (including Azure reservations) are automatically applied.

Farklı bir konak işletim sistemi, kapsayıcı çalışma zamanı veya farklı özel paketler dahil olmak üzere aks-Engine Ile kendi Kubernetes kümenizi dağıtın.Deploy your own Kubernetes cluster with aks-engine if using a different host OS, container runtime, or including different custom packages. Yukarı akış aks-engine sürümleri, ve AKS kümelerinde desteğin önünde yapılandırma seçenekleri sunar.The upstream aks-engine releases features and provides configuration options ahead of support in AKS clusters. Bu nedenle, veya Moby dışında bir kapsayıcı çalışma zamanı kullanmak containerd isterseniz , aks-engine geçerli Ihtiyaçlarınızı karşılayan bir Kubernetes kümesini yapılandırmak ve dağıtmak için komutunu çalıştırabilirsiniz.So, if you wish to use a container runtime other than containerd or Moby, you can run aks-engine to configure and deploy a Kubernetes cluster that meets your current needs.

Kaynak ayırmalarıResource reservations

AKS, düğümün kümenizin bir parçası olarak çalışmasını sağlamak için düğüm kaynakları kullanır.AKS uses node resources to help the node function as part of your cluster. Bu kullanım, düğümünüz içindeki toplam kaynaklar ile AKS 'deki allocatable kaynakları arasında bir tutarsızlık oluşturabilir.This usage can create a discrepancy between your node's total resources and the allocatable resources in AKS. Kullanıcı tarafından dağıtılan pods 'lerin isteklerini ve sınırlarını ayarlarken bu bilgileri unutmayın.Remember this information when setting requests and limits for user deployed pods.

Bir düğümün allocatable kaynaklarını bulmak için şunu çalıştırın:To find a node's allocatable resources, run:

kubectl describe node [NODE_NAME]

Düğüm performansını ve işlevselliğini sürdürmek için, AKS her bir düğümdeki kaynakları ayırır.To maintain node performance and functionality, AKS reserves resources on each node. Düğüm, kaynaklarda daha büyük bir süre büyüdükçe, Kullanıcı tarafından dağıtılan yığınların yönetimine yönelik daha yüksek olması nedeniyle kaynak ayırma artar.As a node grows larger in resources, the resource reservation grows due to a higher need for management of user-deployed pods.

Not

Container Insights (OMS) gibi AKS eklentilerinin kullanılması ek düğüm kaynakları kullanacaktır.Using AKS add-ons such as Container Insights (OMS) will consume additional node resources.

İki tür kaynak ayrılır:Two types of resources are reserved:

  • CPUCPU
    Ayrılmış CPU düğüm türüne ve küme yapılandırmasına bağımlıdır, bu da ek özellikleri çalıştırmak nedeniyle daha az ayrılamayabilir.Reserved CPU is dependent on node type and cluster configuration, which may cause less allocatable CPU due to running additional features.

    Konaktaki CPU çekirdekleriCPU cores on host 11 22 44 88 1616 3232 6464
    Kule ayrılmış (miliçekirdekler)Kube-reserved (millicores) 6060 100100 140140 180180 260260 420420 740740
  • BellekMemory
    AKS tarafından kullanılan bellek, iki değerin toplamını içerir.Memory utilized by AKS includes the sum of two values.

    1. kubelet inin kubelet daemon
      kubeletArka plan programı, kapsayıcı oluşturma ve sonlandırmayı yönetmek için tüm Kubernetes aracı düğümlerine yüklenir.The kubelet daemon is installed on all Kubernetes agent nodes to manage container creation and termination.

      AKS ' de varsayılan olarak, kubelet Daemon belleği vardır. kullanılabilir<750Mı çıkarma kuralı, bir düğümün her zaman en az 750 mi ayrılaşmasını sağlamak için gereklidir.By default on AKS, kubelet daemon has the memory.available<750Mi eviction rule, ensuring a node must always have at least 750 Mi allocatable at all times. Bir ana bilgisayar, kullanılabilir bellek eşiğinin altındaysa, çalışan bir kubelet yığından birini sonlandırmak ve ana makinede belleği boşaltmak için tetiklenecek.When a host is below that available memory threshold, the kubelet will trigger to terminate one of the running pods and free up memory on the host machine.

    2. Kubelet arka plan programının düzgün çalışması için (kuuya-ayrılmış) bellek ayırmalarının gerileme oranı .A regressive rate of memory reservations for the kubelet daemon to properly function (kube-reserved).

      • ilk 4 GB belleğin %25 ' i25% of the first 4 GB of memory
      • sonraki 4 GB belleğin %20 ' si (8 GB 'a kadar)20% of the next 4 GB of memory (up to 8 GB)
      • Sonraki 8 GB belleğin %10 ' ından (16 GB 'a kadar)10% of the next 8 GB of memory (up to 16 GB)
      • sonraki 112 GB belleğin %6 ' ından (128 GB 'a kadar)6% of the next 112 GB of memory (up to 128 GB)
      • 128 GB üzerinde herhangi bir belleğin %2 ' i2% of any memory above 128 GB

Bellek ve CPU ayırma kuralları:Memory and CPU allocation rules:

  • Küme durumu için bazı barındırma sistemi yığınlarını dahil, aracı düğümlerini sağlıklı tutun.Keep agent nodes healthy, including some hosting system pods critical to cluster health.
  • Düğüm, Kubernetes kümesinin bir parçası olmasaydı daha az ayrılanmasa belleği ve CPU raporlamasına neden olur.Cause the node to report less allocatable memory and CPU than it would if it were not part of a Kubernetes cluster.

Yukarıdaki kaynak ayırmaları değiştirilemez.The above resource reservations can't be changed.

Örneğin, bir düğüm 7 GB sunuyorsa, bu, 750Mı sabit çıkarma eşiği dahil olmak üzere bellek ayırıcıdan oluşan %34 ' ı rapor eder.For example, if a node offers 7 GB, it will report 34% of memory not allocatable including the 750Mi hard eviction threshold.

0.75 + (0.25*4) + (0.20*3) = 0.75GB + 1GB + 0.6GB = 2.35GB / 7GB = 33.57% reserved

Kubernetes 'in kendine yönelik ayırmaların yanı sıra, temeldeki düğüm IŞLETIM sistemi, işletim sistemi işlevlerini sürdürmek için bir miktar CPU ve bellek kaynağı da ayırır.In addition to reservations for Kubernetes itself, the underlying node OS also reserves an amount of CPU and memory resources to maintain OS functions.

İlişkili en iyi uygulamalar için bkz. AKS 'deki temel Zamanlayıcı özellikleri Için en iyi uygulamalar.For associated best practices, see Best practices for basic scheduler features in AKS.

Düğüm havuzlarıNode pools

Aynı yapılandırmanın düğümleri, düğüm havuzlarında birlikte gruplandırılır.Nodes of the same configuration are grouped together into node pools. Bir Kubernetes kümesi en az bir düğüm havuzu içerir.A Kubernetes cluster contains at least one node pool. Düğüm ve boyutun ilk sayısı, varsayılan bir düğüm havuzu oluşturan bir aks kümesi oluşturduğunuzda tanımlanır.The initial number of nodes and size are defined when you create an AKS cluster, which creates a default node pool. AKS 'deki bu varsayılan düğüm havuzu, aracı düğümlerinizi çalıştıran temel VM 'Leri içerir.This default node pool in AKS contains the underlying VMs that run your agent nodes.

Not

Kümenizin güvenilir bir şekilde çalıştığından emin olmak için varsayılan düğüm havuzunda en az iki (2) düğüm çalıştırmalısınız.To ensure your cluster operates reliably, you should run at least two (2) nodes in the default node pool.

Bir AKS kümesini varsayılan düğüm havuzunda ölçeklendirerek veya yükseltitirsiniz.You scale or upgrade an AKS cluster against the default node pool. Belirli bir düğüm havuzunu ölçeklendirmeye veya yükseltmeye seçim yapabilirsiniz.You can choose to scale or upgrade a specific node pool. Yükseltme işlemleri için, tüm düğümler başarıyla yükseltilene kadar, çalışan kapsayıcılar düğüm havuzundaki diğer düğümlerde zamanlanır.For upgrade operations, running containers are scheduled on other nodes in the node pool until all the nodes are successfully upgraded.

AKS 'de birden çok düğüm havuzu kullanma hakkında daha fazla bilgi için bkz. AKS 'deki bir küme için birden çok düğüm havuzu oluşturma ve yönetme.For more information about how to use multiple node pools in AKS, see Create and manage multiple node pools for a cluster in AKS.

Düğüm seçicileriNode selectors

Birden çok düğüm havuzu içeren bir AKS kümesinde, belirli bir kaynak için hangi düğüm havuzunun kullanılacağını Kubernetes Scheduler 'a bildirmeniz gerekebilir.In an AKS cluster with multiple node pools, you may need to tell the Kubernetes Scheduler which node pool to use for a given resource. Örneğin, giriş denetleyicileri Windows Server düğümlerinde çalıştırılmamalıdır.For example, ingress controllers shouldn't run on Windows Server nodes.

Düğüm seçicileri, bir pod 'ın zamanlanması gereken yeri denetlemek için düğüm işletim sistemi gibi çeşitli parametreleri tanımlamanıza olanak sağlar.Node selectors let you define various parameters, like node OS, to control where a pod should be scheduled.

Aşağıdaki temel örnek, "Beta.Kubernetes.io/OS" düğüm seçicisini kullanarak bir Linux düğümündeki NGINX örneğini zamanlar: Linux:The following basic example schedules an NGINX instance on a Linux node using the node selector "beta.kubernetes.io/os": linux:

kind: Pod
apiVersion: v1
metadata:
  name: nginx
spec:
  containers:
    - name: myfrontend
      image: mcr.microsoft.com/oss/nginx/nginx:1.15.12-alpine
  nodeSelector:
    "beta.kubernetes.io/os": linux

Yığınların nerede zamanlandığını denetleme hakkında daha fazla bilgi için bkz. AKS 'de gelişmiş Zamanlayıcı özellikleri Için en iyi uygulamalar.For more information on how to control where pods are scheduled, see Best practices for advanced scheduler features in AKS.

PodPods

Kubernetes, uygulamanızın bir örneğini çalıştırmak için Pod 'yi kullanır.Kubernetes uses pods to run an instance of your application. Pod, uygulamanızın tek bir örneğini temsil eder.A pod represents a single instance of your application.

Pods 'nin genellikle kapsayıcı ile 1:1 eşlemesi vardır.Pods typically have a 1:1 mapping with a container. Gelişmiş senaryolarda, Pod birden çok kapsayıcı içerebilir.In advanced scenarios, a pod may contain multiple containers. Birden çok Kapsayıcılı dizin aynı düğümde birlikte zamanlanır ve kapsayıcıların ilgili kaynakları paylaşmasına izin verir.Multi-container pods are scheduled together on the same node, and allow containers to share related resources.

Pod oluşturduğunuzda, belirli miktarda CPU veya bellek kaynağı istemek için kaynak istekleri tanımlayabilirsiniz.When you create a pod, you can define resource requests to request a certain amount of CPU or memory resources. Kubernetes Zamanlayıcı, kaynakları kullanılabilir kaynaklarla bir düğümde çalıştırmayı planlayarak isteği karşılamaları için dener.The Kubernetes Scheduler tries meet the request by scheduling the pods to run on a node with available resources. Ayrıca, bir pod 'ın temel alınan düğümden çok fazla bilgi işlem kaynağı kullanmasını engellemek için maksimum kaynak sınırları belirtebilirsiniz.You can also specify maximum resource limits to prevent a pod from consuming too much compute resource from the underlying node. Kubernetes Scheduler 'ın gerekli, izin verilen kaynakları belirlemesine yardımcı olmak için tüm yığınların kaynak sınırlarını dahil etmek en iyi uygulamadır.Best practice is to include resource limits for all pods to help the Kubernetes Scheduler identify necessary, permitted resources.

Daha fazla bilgi için bkz. Kubernetes Pod ve Kubernetes Pod yaşam döngüsü.For more information, see Kubernetes pods and Kubernetes pod lifecycle.

Pod bir mantıksal kaynaktır, ancak uygulama iş yükleri kapsayıcılar üzerinde çalışır.A pod is a logical resource, but application workloads run on the containers. Pods genellikle kısa ömürlü, atılabilir kaynaklarıdır.Pods are typically ephemeral, disposable resources. Yüksek kullanılabilirlik ve artıklık Kubernetes özelliklerinin bazılarını ayrı ayrı zamanlanmış bir şekilde kaçırmıştır.Individually scheduled pods miss some of the high availability and redundancy Kubernetes features. Bunun yerine, Pod 'ler, dağıtım denetleyicisi gibi Kubernetes denetleyicileri tarafından dağıtılır ve yönetilir.Instead, pods are deployed and managed by Kubernetes Controllers, such as the Deployment Controller.

Dağıtımlar ve YAML bildirimleriDeployments and YAML manifests

Dağıtım , Kubernetes dağıtım denetleyicisi tarafından yönetilen özdeş Pod 'yi temsil eder.A deployment represents identical pods managed by the Kubernetes Deployment Controller. Dağıtım, oluşturulacak Pod çoğaltmaları sayısını tanımlar.A deployment defines the number of pod replicas to create. Kubernetes Zamanlayıcı, düğüm veya düğümlerde sorun yaşarsanız sağlıklı düğümlerde ek yığınların zamanlanmasını sağlar.The Kubernetes Scheduler ensures that additional pods are scheduled on healthy nodes if pods or nodes encounter problems.

Pads yapılandırmalarını, kullanılan kapsayıcı görüntüsünü veya bağlı depolamayı değiştirmek için dağıtımları güncelleştirebilirsiniz.You can update deployments to change the configuration of pods, container image used, or attached storage. Dağıtım denetleyicisi:The Deployment Controller:

  • Belirli sayıda kopyayı boşaltır ve sonlandırır.Drains and terminates a given number of replicas.
  • Yeni dağıtım tanımından çoğaltmalar oluşturur.Creates replicas from the new deployment definition.
  • Dağıtımdaki tüm çoğaltmalar güncelleştirilene kadar işlemi devam ettirir.Continues the process until all replicas in the deployment are updated.

AKS 'teki çoğu durum bilgisiz uygulamaların, tek tek DS zamanlaması yerine dağıtım modelini kullanması gerekir.Most stateless applications in AKS should use the deployment model rather than scheduling individual pods. Kubernetes, gerekli sayıda çoğaltmanın küme içinde çalıştığından emin olmak için dağıtım durumunu ve durumunu izleyebilir.Kubernetes can monitor deployment health and status to ensure that the required number of replicas run within the cluster. Tek tek zamanlandıklarında, bir sorunla karşılaşmaları halinde Pod yeniden başlatılmaz ve geçerli düğümleri bir sorunla karşılaştığında sağlıklı düğümlerde yeniden planlanmaz.When scheduled individually, pods aren't restarted if they encounter a problem, and aren't rescheduled on healthy nodes if their current node encounters a problem.

Uygulamanız en az sayıda kullanılabilir örnek gerektiriyorsa, bir güncelleştirme işlemiyle yönetim kararlarını kesintiye uğratabilir.You don't want to disrupt management decisions with an update process if your application requires a minimum number of available instances. Pod kesinti bütçeleri , bir güncelleştirme veya düğüm yükseltmesi sırasında bir dağıtımda kaç çoğaltmanın alınacağını tanımlar.Pod Disruption Budgets define how many replicas in a deployment can be taken down during an update or node upgrade. Örneğin, dağıtımınızda beş (5) çoğaltmalarınız varsa, tek seferde yalnızca bir çoğaltmanın silinmesine veya yeniden zamanlanmasını sağlamak için 4 ' ün (dört) Pod kesintisini tanımlayabilirsiniz.For example, if you have five (5) replicas in your deployment, you can define a pod disruption of 4 (four) to only allow one replica to be deleted or rescheduled at a time. Pod kaynak limitleriyle birlikte en iyi yöntem, her zaman en az sayıda çoğaltma olmasını gerektiren uygulamalarda Pod kesinti bütçeleri tanımlamaktır.As with pod resource limits, best practice is to define pod disruption budgets on applications that require a minimum number of replicas to always be present.

Dağıtımlar genellikle veya ile oluşturulur ve yönetilir kubectl create kubectl apply .Deployments are typically created and managed with kubectl create or kubectl apply. YAML biçiminde bir bildirim dosyası tanımlayarak bir dağıtım oluşturun.Create a deployment by defining a manifest file in the YAML format.

Aşağıdaki örnek NGıNX Web sunucusunun temel bir dağıtımını oluşturur.The following example creates a basic deployment of the NGINX web server. Dağıtım, oluşturulacak üç (3) yinelemeyi belirtir ve bağlantı noktası 80 ' nin kapsayıcıda açık olmasını gerektirir.The deployment specifies three (3) replicas to be created, and requires port 80 to be open on the container. Kaynak istekleri ve sınırları, CPU ve bellek için de tanımlanır.Resource requests and limits are also defined for CPU and memory.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: mcr.microsoft.com/oss/nginx/nginx:1.15.2-alpine
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: 250m
            memory: 64Mi
          limits:
            cpu: 500m
            memory: 256Mi

YAML bildiriminde hizmetler (örneğin, yük dengeleyiciler) eklenerek daha karmaşık uygulamalar oluşturulabilir.More complex applications can be created by including services (such as load balancers) within the YAML manifest.

Daha fazla bilgi için bkz. Kubernetes dağıtımları.For more information, see Kubernetes deployments.

Held ile paket yönetimiPackage management with Helm

Helk genellikle Kubernetes içindeki uygulamaları yönetmek için kullanılır.Helm is commonly used to manage applications in Kubernetes. Uygulama kodu ve Kubernetes YAML bildirimlerinin paketlenmiş bir sürümünü içeren mevcut ortak Held grafiklerini oluşturup kullanarak kaynakları dağıtabilirsiniz.You can deploy resources by building and using existing public Helm charts that contain a packaged version of application code and Kubernetes YAML manifests. HELI grafiklerini yerel olarak veya Azure Container Registry Held grafikdeposu gibi uzak bir depoda saklayabilirsiniz.You can store Helm charts either locally or in a remote repository, such as an Azure Container Registry Helm chart repo.

Held 'yi kullanmak için, hele istemcisini bilgisayarınıza yükler veya Azure Cloud ShellHeld istemcisini kullanın.To use Helm, install the Helm client on your computer, or use the Helm client in the Azure Cloud Shell. HELI grafikleri arayın veya oluşturun ve ardından onları Kubernetes kümenize yükler.Search for or create Helm charts, and then install them to your Kubernetes cluster. Daha fazla bilgi için bkz. AKS 'de Held ile var olan uygulamaları yüklemeyin.For more information, see Install existing applications with Helm in AKS.

StatefulSets ve DaemonSetsStatefulSets and DaemonSets

Kubernetes Zamanlayıcı 'yı kullanarak, dağıtım denetleyicisi kullanılabilir kaynaklarla kullanılabilir olan herhangi bir düğümdeki çoğaltmaları çalıştırır.Using the Kubernetes Scheduler, the Deployment Controller runs replicas on any available node with available resources. Bu yaklaşım durum bilgisiz uygulamalar için yeterli olabilir, ancak dağıtım denetleyicisi şunları gerektiren uygulamalar için ideal değildir:While this approach may be sufficient for stateless applications, The Deployment Controller is not ideal for applications that require:

  • Kalıcı bir adlandırma kuralı veya depolama alanı.A persistent naming convention or storage.
  • Bir küme içindeki her bir SELECT düğümünde bulunan bir çoğaltma.A replica to exist on each select node within a cluster.

Ancak iki Kubernetes kaynağı, bu tür uygulamaları yönetmenizi sağlar:Two Kubernetes resources, however, let you manage these types of applications:

  • Statefulsets , depolama gibi tek bir pod yaşam döngüsünün ötesinde uygulamaların durumunu korur.StatefulSets maintain the state of applications beyond an individual pod lifecycle, such as storage.
  • DaemonSets , Kubernetes Bootstrap işleminin başlarında, her düğümde çalışan bir örnek olmasını sağlar.DaemonSets ensure a running instance on each node, early in the Kubernetes bootstrap process.

StatefulSetsStatefulSets

Modern uygulama geliştirme genellikle durum bilgisiz uygulamalar için amaçlar.Modern application development often aims for stateless applications. Veritabanı bileşenleri dahil olanlar gibi durum bilgisi olan uygulamalarda Statefulsets' i kullanabilirsiniz.For stateful applications, like those that include database components, you can use StatefulSets. Dağıtımlar gibi, bir StatefulSet, en az bir özdeş Pod oluşturur ve yönetir.Like deployments, a StatefulSet creates and manages at least one identical pod. Bir StatefulSet içindeki çoğaltmalar düzgün bir şekilde, dağıtım, ölçeklendirme, yükseltme ve sonlandırma için ardışık bir yaklaşım izler.Replicas in a StatefulSet follow a graceful, sequential approach to deployment, scale, upgrade, and termination. Çoğaltma olarak adlandırma kuralı, ağ adları ve depolama kalıcı olarak korunur, bir StatefulSet ile yeniden çizelgelenir.The naming convention, network names, and storage persist as replicas are rescheduled with a StatefulSet.

Kullanarak uygulamayı YAML biçiminde tanımlayın kind: StatefulSet .Define the application in YAML format using kind: StatefulSet. Bundan sonra, StatefulSet denetleyicisi gerekli çoğaltmaların dağıtımını ve yönetimini işler.From there, the StatefulSet Controller handles the deployment and management of the required replicas. Veriler, Azure yönetilen diskler veya Azure dosyaları tarafından belirtilen kalıcı depolama alanına yazılır.Data is written to persistent storage, provided by Azure Managed Disks or Azure Files. StatefulSets ile, StatefulSet silindiğinde bile temeldeki kalıcı depolama alanı kalır.With StatefulSets, the underlying persistent storage remains, even when the StatefulSet is deleted.

Daha fazla bilgi için bkz. Kubernetes StatefulSets.For more information, see Kubernetes StatefulSets.

Bir StatefulSet içindeki çoğaltmalar zamanlanır ve bir AKS kümesindeki tüm kullanılabilir düğümlerde çalıştırılır.Replicas in a StatefulSet are scheduled and run across any available node in an AKS cluster. Bir düğümde küme üzerinde en az bir pod 'ın çalıştığından emin olmak için, bunun yerine bir DaemonSet kullanırsınız.To ensure at least one pod in your set runs on a node, you use a DaemonSet instead.

DaemonSetsDaemonSets

Belirli günlük koleksiyonu veya izleme için, tüm düğümlerde veya seçili düğümlerde bir pod çalıştırmanız gerekebilir.For specific log collection or monitoring, you may need to run a pod on all, or selected, nodes. Bir veya daha fazla özdeş pods dağıtımı DaemonSet kullanabilirsiniz, ancak DaemonSet denetleyicisi, belirtilen her düğümün Pod 'ın bir örneğini çalıştırmasını sağlar.You can use DaemonSet deploy one or more identical pods, but the DaemonSet Controller ensures that each node specified runs an instance of the pod.

DaemonSet denetleyicisi, varsayılan Kubernetes Scheduler başlatılmadan önce küme önyükleme işlemindeki düğümlerde düğüm zamanlayabilir.The DaemonSet Controller can schedule pods on nodes early in the cluster boot process, before the default Kubernetes scheduler has started. Bu özellik, bir dağıtımdaki geleneksel köler veya StatefulSet zamanlanmadan önce bir DaemonSet içindeki yığınların başlatılmasını sağlar.This ability ensures that the pods in a DaemonSet are started before traditional pods in a Deployment or StatefulSet are scheduled.

StatefulSets gibi, bir DaemonSet, kullanılarak YAML tanımının bir parçası olarak tanımlanır kind: DaemonSet .Like StatefulSets, a DaemonSet is defined as part of a YAML definition using kind: DaemonSet.

Daha fazla bilgi için bkz. Kubernetes DaemonSets.For more information, see Kubernetes DaemonSets.

Not

Sanal düğümler eklentisikullanılıyorsa, DaemonSets sanal düğümde Pod oluşturmaz.If using the Virtual Nodes add-on, DaemonSets will not create pods on the virtual node.

Ad alanlarıNamespaces

Pod ve dağıtımlar gibi Kubernetes kaynakları, bir aks kümesini bölmek ve kaynaklara erişimi oluşturma, görüntüleme veya yönetme işlemlerini kısıtlamak için mantıksal olarak bir ad alanı halinde gruplandırılır.Kubernetes resources, such as pods and deployments, are logically grouped into a namespace to divide an AKS cluster and restrict create, view, or manage access to resources. Örneğin, iş gruplarını ayırmak için ad alanları oluşturabilirsiniz.For example, you can create namespaces to separate business groups. Kullanıcılar yalnızca atanan ad alanları içindeki kaynaklarla etkileşime girebilirler.Users can only interact with resources within their assigned namespaces.

Kaynak ve uygulamaları mantıksal olarak bölmek için Kubernetes ad alanları

Bir AKS kümesi oluşturduğunuzda, aşağıdaki ad alanları kullanılabilir:When you create an AKS cluster, the following namespaces are available:

Ad AlanıNamespace DescriptionDescription
defaultdefault Hiçbiri sağlanmadıysa, varsayılan olarak Pod ve dağıtımlar oluşturulur.Where pods and deployments are created by default when none is provided. Daha küçük ortamlarda, ek mantıksal ayırmalar oluşturmadan uygulamaları doğrudan varsayılan ad alanına dağıtabilirsiniz.In smaller environments, you can deploy applications directly into the default namespace without creating additional logical separations. İle gibi Kubernetes API 'siyle etkileşim kurarken kubectl get pods , hiçbiri belirtilmediğinde varsayılan ad alanı kullanılır.When you interact with the Kubernetes API, such as with kubectl get pods, the default namespace is used when none is specified.
kube-systemkube-system DNS ve proxy gibi ağ özellikleri ya da Kubernetes panosu gibi çekirdek kaynakları vardır.Where core resources exist, such as network features like DNS and proxy, or the Kubernetes dashboard. Genellikle kendi uygulamalarınızı bu ad alanına dağıtmazsınız.You typically don't deploy your own applications into this namespace.
kube-publickube-public Genellikle kullanılmaz, ancak kaynakların tüm küme genelinde görünebilmeleri için kullanılabilir ve herhangi bir kullanıcı tarafından görüntülenebilir.Typically not used, but can be used for resources to be visible across the whole cluster, and can be viewed by any user.

Daha fazla bilgi için bkz. Kubernetes ad alanları.For more information, see Kubernetes namespaces.

Sonraki adımlarNext steps

Bu makalede, bazı çekirdek Kubernetes bileşenleri ve AKS kümelerine nasıl uygulandığı ele alınmaktadır.This article covers some of the core Kubernetes components and how they apply to AKS clusters. Temel Kubernetes ve AKS kavramları hakkında daha fazla bilgi için aşağıdaki makalelere bakın:For more information on core Kubernetes and AKS concepts, see the following articles: