Speciális hálózati megfigyelhetőség beállítása az Azure Kubernetes Service -hez (AKS) (előzetes verzió)
Ez a cikk bemutatja, hogyan állíthatja be az Advanced Network Observability for Azure Kubernetes Service (AKS) szolgáltatást, és hogyan használhatja saját (BYO) Prometheus és Grafana használatával a metrikákat.
Az Advanced Network Observability használatával adatokat gyűjthet az AKS-fürtök hálózati forgalmi adatairól. Központi platformot tesz lehetővé az alkalmazás és a hálózat állapotának monitorozásához. A metrikák jelenleg a Prometheusban vannak tárolva, és a Grafana használatával vizualizálhatók. Az Advanced Network Observability lehetővé teszi a Hubble engedélyezését is. Ezek a képességek mind a Cilium, mind a nem Cilium-fürtök esetében támogatottak.
Az Advanced Network Observability az Advanced Container Networking Services egyik funkciója. Az Azure Kubernetes Service (AKS) speciális tárolóhálózati szolgáltatásairól további információt az Azure Kubernetes Service (AKS) speciális tárolóhálózati szolgáltatásairól talál.
Fontos
Az Advanced Network Observability jelenleg előzetes verzióban érhető el. A bétaverziójú, előzetes verziójú vagy másként még általánosan nem elérhető Azure-szolgáltatások jogi feltételeit lásd: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.
Előfeltételek
- Egy Azure-fiók, aktív előfizetéssel. Ha még nincs előfizetése, hozzon létre egy ingyenes fiókot, mielőtt hozzákezd.
Használja a Bash-környezetet az Azure Cloud Shellben. További információ: A Bash rövid útmutatója az Azure Cloud Shellben.
Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, telepítse az Azure CLI-t. Ha Windows vagy macOS rendszert használ, fontolja meg az Azure CLI Docker-tárolóban való futtatását. További információ: Az Azure CLI futtatása Docker-tárolóban.
Ha helyi telepítést használ, jelentkezzen be az Azure CLI-be az az login parancs futtatásával. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségekért lásd : Bejelentkezés az Azure CLI-vel.
Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. További információ a bővítményekről: Bővítmények használata az Azure CLI-vel.
Futtassa az az version parancsot a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra az az upgrade paranccsal frissíthet.
- A jelen cikkben ismertetett lépésekhez az Azure CLI minimális verziója a 2.56.0. A verzió azonosításához futtassa a következőt:
az --version
. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.
Az aks-preview
Azure CLI-bővítmény telepítése
Telepítse vagy frissítse az Azure CLI előzetes verziójú bővítményét a vagy az extension update
a az extension add
parancs használatával.
# Install the aks-preview extension
az extension add --name aks-preview
# Update the extension to make sure you have the latest version installed
az extension update --name aks-preview
A funkciójelző regisztrálása AdvancedNetworkingPreview
Regisztrálja a az feature register --namespace "Microsoft.ContainerService" --name "AdvancedNetworkingPreview"
funkciójelzőt a az feature register
paranccsal.
az feature register --namespace "Microsoft.ContainerService" --name "AdvancedNetworkingPreview"
Ellenőrizze a sikeres regisztrációt a az feature show
paranccsal. A regisztráció végrehajtása néhány percet vesz igénybe.
az feature show --namespace "Microsoft.ContainerService" --name "AdvancedNetworkingPreview"
Miután a funkció megjelenik Registered
, frissítse az Microsoft.ContainerService
erőforrás-szolgáltató regisztrációját a az provider register
paranccsal.
Erőforráscsoport létrehozása
Az erőforráscsoport olyan logikai tároló, amelybe a rendszer üzembe helyezi és kezeli az Azure-erőforrásokat. Hozzon létre egy erőforráscsoportot a az group create
paranccsal.
# Set environment variables for the resource group name and location. Make sure to replace the placeholders with your own values.
export RESOURCE_GROUP="<resource-group-name>"
export LOCATION="<azure-region>"
# Create a resource group
az group create --name $RESOURCE_GROUP --location $LOCATION
AKS-fürt létrehozása speciális hálózati megfigyelhetőséggel
Hozzon létre egy AKS-fürtöt speciális hálózati megfigyelhetőséggel egy nem Cilium adatsíkkal a parancs és a az aks create
--enable-advanced-networking-observability
jelző használatával.
# Set an environment variable for the AKS cluster name. Make sure to replace the placeholder with your own value.
export CLUSTER_NAME="<aks-cluster-name>"
# Create an AKS cluster
az aks create \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--generate-ssh-keys \
--network-plugin azure \
--network-plugin-mode overlay \
--pod-cidr 192.168.0.0/16 \
--enable-advanced-network-observability
Speciális hálózati megfigyelhetőség engedélyezése meglévő fürtön
Az Advanced Network Observability engedélyezése meglévő fürtön a az aks update
parancs használatával.
Feljegyzés
A Cilium adatsíkkal rendelkező fürtök támogatják az Advanced Observability-t a Kubernetes 1.29-es verziójától kezdve.
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-advanced-network-observability
Fürt hitelesítő adatainak lekérése
Kérje le a fürt hitelesítő adatait a az aks get-credentials
paranccsal.
az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Vizualizáció a Grafana használatával
Adja hozzá a következő kaparófeladatot a meglévő Prometheus-konfigurációhoz, és indítsa újra a Prometheus-kiszolgálót:
- job_name: networkobservability-hubble kubernetes_sd_configs: - role: pod relabel_configs: - target_label: cluster replacement: myAKSCluster action: replace - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_pod_label_k8s_app] regex: kube-system;(retina|cilium) action: keep - source_labels: [__address__] action: replace regex: ([^:]+)(?::\d+)? replacement: $1:9965 target_label: __address__ - source_labels: [__meta_kubernetes_pod_node_name] target_label: instance action: replace metric_relabel_configs: - source_labels: [__name__] regex: '|hubble_dns_queries_total|hubble_dns_responses_total|hubble_drop_total|hubble_tcp_flags_total' # if desired, add |hubble_flows_processed_total action: keep
A Prometheus-célokban ellenőrizze, hogy a network-obs-podok jelen vannak-e.
Jelentkezzen be a Grafana szolgáltatásba, és importálja a következő példa irányítópultokat a következő azonosítók használatával:
- Fürtök: a fürtök csomópontszintű metrikáit jeleníti meg. (Azonosító: 18814)
- DNS (fürt): egy fürt DNS-metrikáit vagy a csomópontok kiválasztását jeleníti meg.( Azonosító: 20925)
- DNS (számítási feladat): a megadott számítási feladat DNS-metrikáit jeleníti meg (például egy DaemonSet vagy üzembe helyezés podjait, például a CoreDNS-t). (Azonosító: [20926] https://grafana.com/grafana/dashboards/20926-kubernetes-networking-dns-workload/)
- Cseppek (számítási feladat): a megadott számítási feladatra vagy onnan érkező eséseket jeleníti meg (például egy központi telepítés vagy egy Démonkészlet podjai).( Azonosító: 20927).
- Podfolyamatok (Névtér): az L4/L7 csomagfolyamatokat jeleníti meg a megadott névtérbe vagy onnan (azaz a névtérben lévő podokra). (azonosító: 20928)
- Podfolyamatok (számítási feladat): az L4/L7 csomagfolyamatokat jeleníti meg a megadott számítási feladatba vagy onnan (például egy központi telepítés vagy egy Démonkészlet podjai).( Azonosító: 20929)
Feljegyzés
- A Prometheus/Grafana-példányok beállításaitól függően előfordulhat, hogy egyes irányítópult-panelek finomhangolást igényelnek az összes adat megjelenítéséhez.
- A Cilium jelenleg nem támogatja a DNS-metrikákat/irányítópultokat.
Telepítse a Hubble CLI-t az általa gyűjtött adatok eléréséhez az alábbi parancsokkal:
# Set environment variables export HUBBLE_VERSION=0.11 export HUBBLE_ARCH=amd64 # Install Hubble CLI if [ "$(uname -m)" = "aarch64" ]; then HUBBLE_ARCH=arm64; fi curl -L --fail --remote-name-all https://github.com/cilium/hubble/releases/download/$HUBBLE_VERSION/hubble-linux-${HUBBLE_ARCH}.tar.gz{,.sha256sum} sha256sum --check hubble-linux-${HUBBLE_ARCH}.tar.gz.sha256sum sudo tar xzvfC hubble-linux-${HUBBLE_ARCH}.tar.gz /usr/local/bin rm hubble-linux-${HUBBLE_ARCH}.tar.gz{,.sha256sum}
A Hubble-folyamatok vizualizációja
Győződjön meg arról, hogy a Hubble-podok futnak a
kubectl get pods
paranccsal.kubectl get pods -o wide -n kube-system -l k8s-app=hubble-relay
A kimenetnek a következő példakimenethez hasonlóan kell kinéznie:
hubble-relay-7ddd887cdb-h6khj 1/1 Running 0 23h
Állítsa be a Hubble Relay porttovábbítását a
kubectl port-forward
paranccsal.kubectl port-forward -n kube-system svc/hubble-relay --address 127.0.0.1 4245:443
A Kölcsönös TLS (mTLS) biztosítja a Hubble Relay-kiszolgáló biztonságát. Ahhoz, hogy a Hubble-ügyfél lekérhesse a folyamatokat, le kell szereznie a megfelelő tanúsítványokat, és konfigurálnia kell velük az ügyfelet. A tanúsítványok alkalmazása a következő parancsokkal:
#!/usr/bin/env bash set -euo pipefail set -x # Directory where certificates will be stored CERT_DIR="$(pwd)/.certs" mkdir -p "$CERT_DIR" declare -A CERT_FILES=( ["tls.crt"]="tls-client-cert-file" ["tls.key"]="tls-client-key-file" ["ca.crt"]="tls-ca-cert-files" ) for FILE in "${!CERT_FILES[@]}"; do KEY="${CERT_FILES[$FILE]}" JSONPATH="{.data['${FILE//./\\.}']}" # Retrieve the secret and decode it kubectl get secret hubble-relay-client-certs -n kube-system \ -o jsonpath="${JSONPATH}" | \ base64 -d > "$CERT_DIR/$FILE" # Set the appropriate hubble CLI config hubble config set "$KEY" "$CERT_DIR/$FILE" done hubble config set tls true hubble config set tls-server-name instance.hubble-relay.cilium.io
Ellenőrizze, hogy a titkos kulcsok a következő
kubectl get secrets
paranccsal lettek-e létrehozva:kubectl get secrets -n kube-system | grep hubble-
A kimenetnek a következő példakimenethez hasonlóan kell kinéznie:
kube-system hubble-relay-client-certs kubernetes.io/tls 3 9d kube-system hubble-relay-server-certs kubernetes.io/tls 3 9d kube-system hubble-server-certs kubernetes.io/tls 3 9d
Győződjön meg arról, hogy a Hubble Relay pod fut a
hubble relay service
paranccsal.hubble relay service
Vizualizáció a Hubble felhasználói felületén
A Hubble felhasználói felületének használatához mentse az alábbiakat a hubble-ui.yaml fájlba
apiVersion: v1 kind: ServiceAccount metadata: name: hubble-ui namespace: kube-system --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: hubble-ui labels: app.kubernetes.io/part-of: retina rules: - apiGroups: - networking.k8s.io resources: - networkpolicies verbs: - get - list - watch - apiGroups: - "" resources: - componentstatuses - endpoints - namespaces - nodes - pods - services verbs: - get - list - watch - apiGroups: - apiextensions.k8s.io resources: - customresourcedefinitions verbs: - get - list - watch - apiGroups: - cilium.io resources: - "*" verbs: - get - list - watch --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: hubble-ui labels: app.kubernetes.io/part-of: retina roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: hubble-ui subjects: - kind: ServiceAccount name: hubble-ui namespace: kube-system --- apiVersion: v1 kind: ConfigMap metadata: name: hubble-ui-nginx namespace: kube-system data: nginx.conf: | server { listen 8081; server_name localhost; root /app; index index.html; client_max_body_size 1G; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; # CORS add_header Access-Control-Allow-Methods "GET, POST, PUT, HEAD, DELETE, OPTIONS"; add_header Access-Control-Allow-Origin *; add_header Access-Control-Max-Age 1728000; add_header Access-Control-Expose-Headers content-length,grpc-status,grpc-message; add_header Access-Control-Allow-Headers range,keep-alive,user-agent,cache-control,content-type,content-transfer-encoding,x-accept-content-transfer-encoding,x-accept-response-streaming,x-user-agent,x-grpc-web,grpc-timeout; if ($request_method = OPTIONS) { return 204; } # /CORS location /api { proxy_http_version 1.1; proxy_pass_request_headers on; proxy_hide_header Access-Control-Allow-Origin; proxy_pass http://127.0.0.1:8090; } location / { try_files $uri $uri/ /index.html /index.html; } # Liveness probe location /healthz { access_log off; add_header Content-Type text/plain; return 200 'ok'; } } } --- kind: Deployment apiVersion: apps/v1 metadata: name: hubble-ui namespace: kube-system labels: k8s-app: hubble-ui app.kubernetes.io/name: hubble-ui app.kubernetes.io/part-of: retina spec: replicas: 1 selector: matchLabels: k8s-app: hubble-ui template: metadata: labels: k8s-app: hubble-ui app.kubernetes.io/name: hubble-ui app.kubernetes.io/part-of: retina spec: serviceAccount: hibble-ui serviceAccountName: hubble-ui automountServiceAccountToken: true containers: - name: frontend image: mcr.microsoft.com/oss/cilium/hubble-ui:v0.12.2 imagePullPolicy: Always ports: - name: http containerPort: 8081 livenessProbe: httpGet: path: /healthz port: 8081 readinessProbe: httpGet: path: / port: 8081 resources: {} volumeMounts: - name: hubble-ui-nginx-conf mountPath: /etc/nginx/conf.d/default.conf subPath: nginx.conf - name: tmp-dir mountPath: /tmp terminationMessagePolicy: FallbackToLogsOnError securityContext: {} - name: backend image: mcr.microsoft.com/oss/cilium/hubble-ui-backend:v0.12.2 imagePullPolicy: Always env: - name: EVENTS_SERVER_PORT value: "8090" - name: FLOWS_API_ADDR value: "hubble-relay:443" - name: TLS_TO_RELAY_ENABLED value: "true" - name: TLS_RELAY_SERVER_NAME value: ui.hubble-relay.cilium.io - name: TLS_RELAY_CA_CERT_FILES value: /var/lib/hubble-ui/certs/hubble-relay-ca.crt - name: TLS_RELAY_CLIENT_CERT_FILE value: /var/lib/hubble-ui/certs/client.crt - name: TLS_RELAY_CLIENT_KEY_FILE value: /var/lib/hubble-ui/certs/client.key livenessProbe: httpGet: path: /healthz port: 8090 readinessProbe: httpGet: path: /healthz port: 8090 ports: - name: grpc containerPort: 8090 resources: {} volumeMounts: - name: hubble-ui-client-certs mountPath: /var/lib/hubble-ui/certs readOnly: true terminationMessagePolicy: FallbackToLogsOnError securityContext: {} nodeSelector: kubernetes.io/os: linux volumes: - configMap: defaultMode: 420 name: hubble-ui-nginx name: hubble-ui-nginx-conf - emptyDir: {} name: tmp-dir - name: hubble-ui-client-certs projected: defaultMode: 0400 sources: - secret: name: hubble-relay-client-certs items: - key: tls.crt path: client.crt - key: tls.key path: client.key - key: ca.crt path: hubble-relay-ca.crt --- kind: Service apiVersion: v1 metadata: name: hubble-ui namespace: kube-system labels: k8s-app: hubble-ui app.kubernetes.io/name: hubble-ui app.kubernetes.io/part-of: retina spec: type: ClusterIP selector: k8s-app: hubble-ui ports: - name: http port: 80 targetPort: 8081
Alkalmazza a hubble-ui.yaml jegyzékfájlt a fürtre az alábbi paranccsal
kubectl apply -f hubble-ui.yaml
Tegye elérhetővé a szolgáltatást a porttovábbítás parancs használatával történő beállításával
kubectl port-forward
.kubectl port-forward svc/hubble-ui 12000:80
A Böngészőbe való belépéssel
http://localhost:12000/
elérheti a Hubble felhasználói felületét.
Az erőforrások eltávolítása
Ha nem tervezi az alkalmazás használatát, törölje a cikkben létrehozott többi erőforrást a az group delete
paranccsal.
az group delete --name $RESOURCE_GROUP
Következő lépések
Ebben az útmutatócikkben megtanulta, hogyan telepíthető és engedélyezhető az Advanced Network Observability az AKS-fürthöz.
Az Azure Kubernetes Service (AKS) speciális tárolóhálózati szolgáltatásairól további információt az Azure Kubernetes Service (AKS) speciális tárolóhálózati szolgáltatásairól talál.
Az Advanced Network Observability és az Azure által felügyelt Prometheus és Grafana AKS-fürt létrehozásához lásd: Advanced Network Observability for Azure Kubernetes Service (AKS) Azure managed Prometheus és Grafana.
Azure Kubernetes Service
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: