Ansichten:
Profilanwendbarkeit: Stufe 1
Die azure.json-Datei in einem Azure Kubernetes Service (AKS) Cluster ist eine Konfigurationsdatei, die von der Kubernetes-Cloud-Anbieter-Integration für Azure verwendet wird. Diese Datei enthält wesentliche Details, die es dem Kubernetes-Cluster ermöglichen, effektiv mit Azure-Ressourcen zu interagieren. Sie ist Teil der Azure Cloud-Anbieter-Konfiguration und ermöglicht es Kubernetes-Komponenten, mit Azure-Diensten für Funktionen wie Lastenausgleich, Speicher und Netzwerk zu kommunizieren.
Stellen Sie sicher, dass die Datei azure.json Berechtigungen von 644 oder restriktiver hat.
Die Datei azure.json in der AKS-Struktur enthält typischerweise:
  • Tenant ID: Die Azure-Mandanten-ID, in der sich der AKS-Cluster befindet.
  • Subscription ID: Die Azure-Abonnement-ID, die für Abrechnung und Ressourcenverwaltung verwendet wird.
  • AAD Client ID: Die Azure Active Directory (AAD) Anwendungs-Client-ID, die vom Kubernetes-Cloud-Anbieter verwendet wird, um mit Azure-Ressourcen zu interagieren.
  • AAD Client Secret: Das Geheimnis für die AAD-Anwendung.
  • Resource Group: Der Name der Ressourcengruppe, in der sich die AKS-Cluster-Ressourcen befinden.
  • Speicherort: Die Azure-Region, in der der AKS-Cluster bereitgestellt wird.
  • VM Type: Gibt den Typ der von dem Cluster verwendeten VMs an (z. B. Standard-VMs oder Virtual Machine Scale Sets).
  • Subnet Name, Security Group Name, Vnet Name, and Vnet Resource Group: Netzwerkdetails für den Cluster.
  • Route Table Name: Der Name der Routentabelle für den Cluster.
  • Storage Account Type: Der standardmäßige Speichertyp für Kubernetes-Persistent-Volumes.
Hinweis
Hinweis
Siehe die Azure AKS-Dokumentation für den Standardwert.

Prüfung

Method 1
  1. Um zu überprüfen, ob der Kubelet-Dienst läuft:
    sudo systemctl status kubelet
    Die Ausgabe sollte Active: active (running) since.. zurückgeben
  2. Führen Sie den folgenden Befehl auf jedem Knoten aus, um die entsprechende Kubelet-Konfigurationsdatei zu finden:
    ps -ef | grep kubelet
    Die Ausgabe des obigen Befehls sollte etwas Ähnliches wie --config /etc/kubernetes/azure.json zurückgeben, was den Speicherort der Kubelet-Konfigurationsdatei darstellt.
  3. Führen Sie folgenden Befehl aus:
    stat -c %a /etc/kubernetes/azure.json
    Die Ausgabe des obigen Befehls sind die Berechtigungen der Kubelet-Konfigurationsdatei.
  4. Überprüfen Sie, ob die Berechtigungen 644 oder restriktiver sind.
Method 2
Erstellen und Ausführen eines privilegierten Pods
  1. Sie müssen ein Pod ausführen, das ausreichend privilegiert ist, um auf das Dateisystem des Hosts zuzugreifen. Dies kann erreicht werden, indem ein Pod bereitgestellt wird, der das hostPath-Volume verwendet, um das Dateisystem des Knotens in das Pod einzubinden.
    Beispiel-Pod-Definition:
           apiVersion: v1
           kind: Pod
           metadata:
           name: file-check
           spec:
           volumes:
           - name: host-root
           hostPath:
           path: /
           type: Directory
           containers:
           - name: nsenter
           image: busybox
           command: ["sleep", "3600"]
           volumeMounts:
           - name: host-root
           mountPath: /host
           securityContext:
           privileged: true
          
  2. Speichern Sie dies in einer Datei (z. B. file-check-pod.yaml) und erstellen Sie das Pod:
    kubectl apply -f file-check-pod.yaml
  3. Sobald das Pod läuft, können Sie sich in das Pod einloggen, um die Dateiberechtigungen auf dem Knoten zu überprüfen:
    kubectl exec -it file-check -- sh
  4. Jetzt befinden Sie sich in einer Shell innerhalb des Pods, aber Sie können über das /host-Verzeichnis auf das Dateisystem des Knotens zugreifen und die Berechtigungsstufe der Datei überprüfen:
    ls -l /host/etc/kubernetes/azure.json
  5. Überprüfen Sie, ob die Datei existiert und die Berechtigungen 644 oder restriktiver sind.

Wiederherstellung

Führen Sie den folgenden Befehl (basierend auf dem Dateispeicherort auf Ihrem System) auf jedem Workerknoten aus:
chmod 644 <azure.json file>