Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln är en del av en serie. Börja med översikten.
Antagningskontrollanter orsakar sällan problem, men det är viktigt att se till att de har rätt funktioner. I den här artikeln beskrivs hur antagningskontrollanter kan påverka andra komponenter när de inte fungerar korrekt. Den beskriver också kommandon som du kan använda för att verifiera prestanda för antagningskontrollanten.
Antagningskontrollant
En admission controller är en kod som fångar upp begäranden till en Kubernetes API-server innan ett objekt permanent sparas, men efter att en begäran har autentiserats och auktoriserats.
Antagningskontrollanter kan validera, mutera eller en kombination av båda. Muterande kontrollanter kan ändra relaterade objekt innan de godkänner en begäran. Verifiering av kontroller säkerställer att begäran endast uppfyller specifika fördefinierade kriterier.
En av de primära funktionerna för antagningskontrollanter är att reglera begäranden om skapande, borttagning och ändring av objekt. Dessutom kan antagningskontrollanter begränsa anpassade verb, till exempel begära en anslutning till en podd via en API-serverproxy. Antagningskontrollanter kan dock inte blockera begäranden om att läsa objekt, inklusive åtgärder som get, watcheller list.
Vissa komponenter kan påverka antagningskontrollanter, till exempel mutera och validera webhooks. När du införlivar muterande och verifierande webhooks i ditt Kubernetes-kluster är det absolut nödvändigt att säkerställa hög tillgänglighet. Noder med fel bör inte blockera API-serverbegäranden. Det är viktigt att övervaka pipelinen för antagningskontroll så att begäranden till API-servern inte blockeras. Felaktiga antagningskontrollanter kan påverka muterande och validering av webhooks. Webhook-baserade antagningskontrollanter som du bör övervaka inkluderar:
Azure Policy-tillägget för AKS-kluster (Azure Kubernetes Service), som utökar Gatekeeper. Gatekeeper är en admissionskontroll-webhook för Open Policy Agent.
Kyverno, som körs som en dynamisk antagningskontrollant i ett Kubernetes-kluster. Kyverno tar emot validering och mutering av http-återanrop för antagning från Kubernetes API-servern och tillämpar matchande principer för att returnera resultat som tillämpar antagningsprinciper eller avvisar begäranden. Felsökningsreferens (till exempel APIServer-misslyckade webhook-anrop) finns i felsökningsdokumentationen för Kyverno.
Alternativt kan antagningskontrollanter som inte fungerar korrekt påverka olika komponenter, till exempel servicenät. Servicenätverk, såsom Istio och Linkerd, använder antagningskontroller för att automatisera insprutning av sidokontainrar i en pod, och andra funktioner. Det är viktigt att utvärdera och verifiera att antagningskontrollanter fungerar korrekt för att stödja konsekvent drift av ett tjänstnät.
Kontrollera status för Azure Policy-tillägget för AKS-kluster
Om du installerar Azure Policy-tillägget för AKS kan du använda följande kubectl-kommandon för att verifiera installationen och funktionerna för Azure Policy-antagningskontrollanter i klustret:
# Verify that Azure Policy pods are running.
kubectl get pod -n gatekeeper-system
# Sample output
...
NAME READY STATUS RESTARTS AGE
gatekeeper-audit-65844778cb-rkflg 1/1 Running 0 163m
gatekeeper-controller-78797d4687-4pf6w 1/1 Running 0 163m
gatekeeper-controller-78797d4687-splzh 1/1 Running 0 163m
...
Kör föregående kommando för att verifiera tillgängligheten för Azure Policy-agentpoddar i namnområdet gatekeeper-system . Om utdata inte är vad du förväntar dig kan det tyda på ett problem med en antagningskontrollant, API-tjänst eller anpassad resursdefinition (CRD).
# Check that all API resources are working correctly. Use the following command to list all API resources.
kubectl api-resources
# Sample output
...
NAME SHORTNAMES APIGROUP NAMESPACED KIND
bindings true Binding
componentstatuses cs false ComponentStatus
configmaps cm true ConfigMap
...
Med föregående kommando kan du kontrollera att alla API-resurser fungerar korrekt. Se till att utdata innehåller de förväntade resurserna utan fel eller saknade komponenter. Använd kommandona kubectl get pod och kubectl api-resources för att kontrollera statusen på Azure Policy-tillägget i AKS och validera funktionaliteten hos antagningskontrollanter i ditt Kubernetes-kluster. Övervaka regelbundet antagningskontrollanter för att säkerställa att de fungerar korrekt så att du kan upprätthålla klustrets allmänna hälsa och stabilitet.
Använd följande kubectl get kommando för att bekräfta att principtilldelningar tillämpas på klustret:
kubectl get constrainttemplates
Anmärkning
Principtilldelningar kan ta upp till 20 minuter att synkronisera med varje kluster.
Dina utdata bör likna följande exempel:
NAME AGE
k8sazureallowedcapabilities 23m
k8sazureallowedusersgroups 23m
k8sazureblockhostnamespace 23m
k8sazurecontainerallowedimages 23m
k8sazurecontainerallowedports 23m
k8sazurecontainerlimits 23m
k8sazurecontainernoprivilege 23m
k8sazurecontainernoprivilegeescalation 23m
k8sazureenforceapparmor 23m
k8sazurehostfilesystem 23m
k8sazurehostnetworkingports 23m
k8sazurereadonlyrootfilesystem 23m
k8sazureserviceallowedports 23m
Mer information finns i följande resurser:
Verifiera webhooks
Följ dessa steg för att säkerställa att validering och mutering av webhooks fungerar som förväntat i Ditt Kubernetes-kluster.
Kör följande kommando för att visa en lista över verifierande webhooks i klustret:
kubectl get ValidatingWebhookConfiguration -o wideDina utdata bör likna följande exempel:
NAME WEBHOOKS AGE aks-node-validating-webhook 1 249d azure-policy-validating-webhook-configuration 1 249d gatekeeper-validating-webhook-configuration 1 249dGranska utdata för att kontrollera att valideringswebbhooks finns och att deras konfigurationer är som förväntat. Utdata innehåller namnet på varje verifierande webhook, antalet webhooks och åldern på varje webhook.
Kör följande kommando för att lista de muterande webhooks i klustret:
kubectl get MutatingWebhookConfiguration -o wideDina utdata bör likna följande exempel:
NAME WEBHOOKS AGE aks-node-mutating-webhook 1 249d azure-policy-mutating-webhook-configuration 1 249d gatekeeper-mutating-webhook-configuration 1 249dKontrollera utdata för att se till att de muterande webhooks visas korrekt och att deras konfigurationer är som önskat. Utdata innehåller namnet på varje muterande webhook, antalet webhooks och åldern på varje webhook.
Kör följande kommando för att hämta specifik information för en viss antagningskontrollant:
kubectl get MutatingWebhookConfiguration <mutating-webhook-name> -o yamlErsätt
<mutating-webhook-name>med namnet på den muterande webhooken som du vill hämta information för. Utdata från det här kommandot visar YAML-representationen av den angivna muterande webhookkonfigurationen.
Kör kommandona i det här avsnittet och granska utdata så att du kan bekräfta att de validerande och muterande webhooks i Kubernetes-klustret är närvarande och konfigurerade som förväntat. Den här valideringen är nödvändig för att säkerställa att den fungerar korrekt. Det är också viktigt att se till att webhooks följer principer för validering och ändring av resurser i klustret.
Bidragsgivare
Den här artikeln underhålls av Microsoft. Texten skrevs ursprungligen av följande bidragsgivare.
Huvudsakliga författare:
- Paolo Salvatori | Huvudkundtekniker
Övriga medarbetare:
- Francis Simy Nasaret | Senior teknisk specialist
Om du vill se icke-offentliga LinkedIn-profiler loggar du in på LinkedIn.