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.
![]() |
HinweisSiehe die Azure AKS-Dokumentation für den Standardwert.
|
Prüfung
Method 1
-
Um zu überprüfen, ob der Kubelet-Dienst läuft:
sudo systemctl status kubelet
Die Ausgabe sollteActive: active (running) since..
zurückgeben -
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. -
Führen Sie folgenden Befehl aus:
stat -c %a /etc/kubernetes/azure.json
Die Ausgabe des obigen Befehls sind die Berechtigungen der Kubelet-Konfigurationsdatei. -
Überprüfen Sie, ob die Berechtigungen 644 oder restriktiver sind.
Method 2
Erstellen und Ausführen eines privilegierten Pods
-
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
-
Speichern Sie dies in einer Datei (z. B. file-check-pod.yaml) und erstellen Sie das Pod:
kubectl apply -f file-check-pod.yaml
-
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
-
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
-
Ü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>