Najlepsze rozwiązania dla deweloperów aplikacji w zakresie zarządzania zasobami w usłudze Azure Kubernetes Service (AKS)

Podczas tworzenia i uruchamiania aplikacji w usłudze Azure Kubernetes Service (AKS) należy wziąć pod uwagę kilka kluczowych obszarów. Sposób zarządzania wdrożeniami aplikacji może negatywnie wpłynąć na środowisko użytkownika końcowego usług, które udostępniasz.

Ten artykuł koncentruje się na uruchamianiu klastrów i obciążeń z perspektywy dewelopera aplikacji. Aby uzyskać informacje na temat najlepszych rozwiązań administracyjnych, zobacz Najlepsze rozwiązania dotyczące operatorów klastra dotyczące izolacji i zarządzania zasobami w usłudze Azure Kubernetes Service (AKS).

W tym artykule opisano następujące tematy:

  • Żądania i limity zasobów zasobnika.
  • Sposoby tworzenia, debugowania i wdrażania aplikacji za pomocą rozwiązania Bridge to Kubernetes i Visual Studio Code.

Definiowanie żądań i limitów zasobów zasobnika

Wskazówki dotyczące najlepszych rozwiązań

Ustaw żądania zasobnika i limity dla wszystkich zasobników w manifestach YAML. Jeśli klaster usługi AKS używa przydziałów zasobów i nie zdefiniujesz tych wartości, wdrożenie może zostać odrzucone.

Użyj żądań zasobników i limitów, aby zarządzać zasobami obliczeniowymi w klastrze usługi AKS. Żądania zasobników i limity informują harmonogram platformy Kubernetes o zasobnikach obliczeniowych w celu przypisania do zasobnika.

Żądania procesora/pamięci zasobnika

Żądania zasobników definiują określoną ilość procesora CPU i pamięci, których zasobnik potrzebuje regularnie.

W specyfikacji zasobnika ważne jest, aby zdefiniować te żądania i limity na podstawie powyższych informacji. Jeśli nie uwzględnisz tych wartości, harmonogram kubernetes nie może rozważyć zasobów, które aplikacje wymagają, aby pomóc w podejmowaniu decyzji dotyczących planowania.

Monitorowanie wydajności aplikacji w celu dostosowania żądań zasobników. Jeśli nie doceniasz żądań zasobników, aplikacja może otrzymać obniżoną wydajność z powodu nadmiernego planowania węzła. Jeśli żądania są przeszacowane, aplikacja mogła zwiększyć trudności z planowaniem.

Limity procesora/pamięci zasobnika

Limity zasobników ustawiają maksymalną ilość procesora CPU i pamięci, z których może korzystać zasobnik. Limity pamięci określają, które zasobniki powinny zostać usunięte, gdy węzły są niestabilne z powodu niewystarczającej ilości zasobów. Bez ustawionych odpowiednich limitów zasobniki są usuwane do momentu podniesienia ciśnienia zasobów. Chociaż zasobnik może okresowo przekraczać limit procesora CPU, zasobnik nie jest usuwany w celu przekroczenia limitu procesora CPU.

Limity zasobników określają, kiedy zasobnik traci kontrolę nad zużyciem zasobów. Po przekroczeniu limitu zasobnik zostanie oznaczony do usunięcia. To zachowanie utrzymuje kondycję węzła i minimalizuje wpływ na zasobniki współużytkowania węzła. Jeśli nie ustawisz limitu zasobnika, wartość domyślna to najwyższa dostępna wartość w danym węźle.

Unikaj ustawiania limitu zasobnika wyższego niż węzły mogą obsługiwać. Każdy węzeł usługi AKS rezerwuje zestaw zasobów procesora CPU i pamięci dla podstawowych składników platformy Kubernetes. Aplikacja może próbować używać zbyt wielu zasobów w węźle, aby inne zasobniki mogły zostać pomyślnie uruchomione.

Monitoruj wydajność aplikacji w różnych porach dnia lub tygodnia. Określ szczytowe czasy zapotrzebowania i dopasuj limity zasobników do zasobów wymaganych do spełnienia maksymalnych potrzeb.

Ważne

W specyfikacji zasobnika zdefiniuj te żądania i limity na podstawie powyższych informacji. Nie można uwzględnić tych wartości, aby harmonogram kubernetes uwzględniał zasoby wymagane przez aplikacje, aby pomóc w podejmowaniu decyzji dotyczących planowania.

Jeśli harmonogram umieszcza zasobnik w węźle z niewystarczającymi zasobami, wydajność aplikacji zostanie obniżona. Administratorzy klastra muszą ustawić limity przydziału zasobów w przestrzeni nazw, która wymaga ustawienia żądań zasobów i limitów. Aby uzyskać więcej informacji, zobacz limity przydziału zasobów w klastrach usługi AKS.

Podczas definiowania żądania lub limitu procesora CPU wartość jest mierzona w jednostkach procesora CPU.

  • Procesor CPU 1.0 odpowiada jednemu bazowemu rdzeniu wirtualnego procesora CPU w węźle.
    • Ten sam pomiar jest używany dla procesorów GPU.
  • Można zdefiniować ułamki mierzone w milisekundach. Na przykład 100 m to 0,1 bazowego rdzenia procesorów wirtualnych.

W poniższym podstawowym przykładzie pojedynczego zasobnika NGINX zasobnik żąda 100 m czasu procesora CPU i 128Mi pamięci. Limity zasobów zasobnika są ustawione na 250 m cpu i 256Mi pamięci.

kind: Pod
apiVersion: v1
metadata:
  name: mypod
spec:
  containers:
  - name: mypod
    image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
    resources:
      requests:
        cpu: 100m
        memory: 128Mi
      limits:
        cpu: 250m
        memory: 256Mi

Aby uzyskać więcej informacji na temat pomiarów zasobów i przypisań, zobacz Zarządzanie zasobami obliczeniowymi dla kontenerów.

Tworzenie i debugowanie aplikacji w klastrze usługi AKS

Wskazówki dotyczące najlepszych rozwiązań

Zespoły programistyczne powinny wdrażać i debugować w klastrze usługi AKS przy użyciu rozwiązania Bridge to Kubernetes.

Za pomocą rozwiązania Bridge to Kubernetes można tworzyć, debugować i testować aplikacje bezpośrednio w klastrze usługi AKS. Deweloperzy w ramach zespołu współpracują w celu tworzenia i testowania w całym cyklu życia aplikacji. Możesz nadal używać istniejących narzędzi, takich jak Visual Studio lub Visual Studio Code z rozszerzeniem Bridge to Kubernetes.

Korzystanie ze zintegrowanego procesu programowania i testowania z rozwiązaniem Bridge to Kubernetes zmniejsza zapotrzebowanie na lokalne środowiska testowe, takie jak minikube. Zamiast tego programujesz i testujesz w klastrze usługi AKS, nawet w klastrach zabezpieczonych i izolowanych.

Uwaga

Rozwiązanie Bridge to Kubernetes jest przeznaczone do użytku z aplikacjami działającymi na zasobnikach i węzłach systemu Linux.

Używanie rozszerzenia programu Visual Studio Code (VS Code) dla platformy Kubernetes

Wskazówki dotyczące najlepszych rozwiązań

Zainstaluj i użyj rozszerzenia programu VS Code dla platformy Kubernetes podczas pisania manifestów YAML. Można również użyć rozszerzenia do zintegrowanego rozwiązania wdrażania, które może pomóc właścicielom aplikacji, którzy często wchodzą w interakcję z klastrem usługi AKS.

Rozszerzenie programu Visual Studio Code dla platformy Kubernetes ułatwia tworzenie i wdrażanie aplikacji w usłudze AKS. Rozszerzenie udostępnia następujące funkcje:

  • Funkcja IntelliSense dla zasobów platformy Kubernetes, wykresów helm i szablonów.

  • Możliwość przeglądania, wdrażania i edytowania możliwości zasobów kubernetes z poziomu programu VS Code.

  • Funkcja IntelliSense sprawdza żądania zasobów lub limity ustawiane w specyfikacji zasobnika:

    VS Code extension for Kubernetes warning about missing memory limits

Następne kroki

W tym artykule opisano sposób uruchamiania klastra i obciążeń z perspektywy operatora klastra. Aby uzyskać informacje na temat najlepszych rozwiązań administracyjnych, zobacz Najlepsze rozwiązania dotyczące operatorów klastra dotyczące izolacji i zarządzania zasobami w usłudze Azure Kubernetes Service (AKS).

Aby zaimplementować niektóre z tych najlepszych rozwiązań, zobacz Develop with Bridge to Kubernetes (Programowanie za pomocą mostka na platformie Kubernetes).