Gunakan topik ini untuk membantu Anda memecahkan masalah keamanan dan terkait identitas di AKS Arc.
Get-AksHciCredential gagal dengan kesalahan "tidak dapat menemukan jalur yang ditentukan"
Get-AksHciCredential
Cmdlet PowerShell gagal saat dijalankan oleh pengguna admin yang berbeda dari yang digunakan untuk menginstal AksHci. Perintah membuat direktori .kube dan menempatkan file konfigurasi di dalamnya. Namun, perintah gagal dengan kesalahan berikut:
Error: open C:\Users\<user>\.kube\config: The system cannot find the path specified.
Untuk mereprodusi
- Pasang AksHci.
- Buat kluster target.
- Masuk ke komputer sebagai pengguna admin yang berbeda (fitur multi-admin).
- Jalankan
Get-AksHciCredential -Name $clusterName
.
Perilaku yang diperkirakan
Get-AksHciCredential
harus dapat membuat direktori .kube di direktori beranda pengguna dan menempatkan file konfigurasi di direktori tersebut.
Untuk mengatasi masalah ini, buat direktori .kube di direktori beranda pengguna. Gunakan perintah berikut untuk membuat direktori:
mkdir "$HOME/.kube"
Setelah langkah ini, Get-AksHciCredential
seharusnya tidak gagal.
Kesalahan "Sertifikat kedaluwarsa - Tidak dapat tersambung ke server: x509"
Kluster target tidak dapat diakses ketika sertifikat sarana kontrol gagal diperpanjang. Saat mencoba mencapai kluster, kubectl
perintah menampilkan kesalahan berikut:
certificate expired - Unable to connect to the server: x509: certificate has expired or is not yet valid: current time 2022-07-26T12:24:15-04:00 is after 2022-07-15T15:01:07Z
Catatan
Masalah ini diperbaiki dalam rilis September 2022 dan yang lebih baru.
Untuk mereprodusi
- Pasang AksHci.
- Instal kluster target. 3. Nonaktifkan kluster (VM) selama lebih dari 4 hari.
- Aktifkan kluster lagi.
Gejala dan mitigasi
Kluster target tidak dapat dijangkau. Perintah apa pun kubectl
yang dijalankan terhadap kluster target mengembalikan pesan kesalahan yang mirip dengan yang berikut:
certificate expired - Unable to connect to the server: x509: certificate has expired or is not yet valid: current time 2022-07-26T12:24:15-04:00 is after 2022-07-15T15:01:07Z
Untuk memperbaiki masalah ini:
Jalankan perintah berikut untuk memperbarui sertifikat yang dihasilkan secara manual:
Update-AksHciClusterCertificates -Name my-workload -cluster -fixKubeletCredentials
Hasilkan kredensial baru:
Get-AksHciCredential -name <clustername>
Setelah beberapa menit, coba kubectl
perintah lagi untuk melihat apakah kluster sekarang tersedia.
Catatan
Ada bug yang diketahui di AksHci versi 1.0.14.x dan yang lebih lama. Jika VM sarana kontrol memiliki pola nama selain -control-plane-
, Update-AksHciClusterCertificates
perintah mungkin tidak berfungsi. Anda harus memperbarui sertifikat dengan masuk ke VM sarana kontrol:
- Temukan alamat IP VM sarana kontrol kluster target.
- Jalankan perintah berikut:
ssh -i (get-mocconfig).sshPrivateKey clouduser@<ip>
- Cantumkan file tato sertifikasi:
sudo ls /etc/kubernetes/pki/cert-tattoo-*
- Buat sertifikat menggunakan setiap file yang tercantum oleh perintah sebelumnya:
sudo /usr/bin/cert-tattoo-provision CreateCertsWithAltNames <absolute-path-of-cert-tattoo-file>
Jabat tangan autentikasi gagal: x509: sertifikat yang ditandatangani oleh otoritas yang tidak diketahui
Anda mungkin melihat kesalahan ini saat menyebarkan kluster AKS baru atau menambahkan kumpulan simpul ke kluster yang ada.
- Periksa apakah pengguna yang telah menjalankan perintah adalah pengguna yang sama yang menginstal AKS di Azure Stack atau Windows Server. Untuk informasi selengkapnya tentang memberikan akses ke beberapa pengguna, lihat Menyiapkan beberapa administrator.
- Jika pengguna sama dan kesalahan berlanjut, ikuti langkah-langkah di bawah ini untuk mengatasi masalah:
- Hapus sertifikat appliance manajemen lama dengan menghapus
$env:UserProfile.wssd\kvactl\cloudconfig
. - Jalankan
Repair-AksHciCerts
. - Jalankan
Get-AksHciCluster
untuk memeriksa apakah sudah diperbaiki.
Log pod kluster target tidak dapat diakses - kesalahan jarak jauh: tls: kesalahan internal
Log kluster target tidak dapat diakses. Ketika Anda mencoba mengakses log pod di kluster target, kesalahan TLS berikut ditampilkan:
Error from server: Get "[https://10.0.0.0:10250/containerLogs/kube-system/kube-apiserver-moc-l9iv8xjn3av/kube-apiserver":](https://10.0.0.0:10250/containerLogs/kube-system/kube-apiserver-moc-l9iv8xjn3av/kube-apiserver%22:) remote error: tls: internal error
Catatan
Ini adalah masalah yang diketahui di AksHci versi 1.0.14.x dan yang lebih lama. Ini diperbaiki sebagai bagian dari rilis 1.0.14.x (rilis September dan yang lebih baru). Kluster target yang diperbarui ke versi ini tidak boleh mengalami masalah ini.
Untuk mereprodusi
- Pasang AksHci.
- Instal kluster target.
- Jangan tingkatkan kluster selama 60 hari.
- Mulai ulang kluster.
Gejala dan mitigasi
Log pod target tidak boleh dapat diakses. Setiap kubectl
perintah log yang dijalankan terhadap kluster target harus kembali dengan pesan kesalahan yang mirip dengan yang berikut ini:
Error from server: Get "[https://10.0.0.0:10250/containerLogs/kube-system/kube-apiserver-moc-l9iv8xjn3av/kube-apiserver":](https://10.0.0.0:10250/containerLogs/kube-system/kube-apiserver-moc-l9iv8xjn3av/kube-apiserver%22:) remote error: tls: internal error
Untuk memperbaiki masalah ini:
Jalankan perintah berikut untuk memperbarui sertifikat yang dihasilkan secara manual:
Update-AksHciClusterCertificates -Name my-workload -fixKubeletCredentials
Hasilkan kredensial baru:
Get-AksHciCredential -name <clustername>
Kluster controlplane - sertifikat kedaluwarsa - Tidak dapat tersambung ke server: x509
Kluster target tidak dapat diakses ketika sertifikat sarana kontrol gagal diperpanjang. Saat mencoba mencapai kluster, kubectl
perintah menghasilkan kesalahan berikut:
certificate expired - Unable to connect to the server: x509: certificate has expired or is not yet valid: current time 2022-07-26T12:24:15-04:00 is after 2022-07-15T15:01:07Z
Catatan
Masalah ini diperbaiki dalam rilis September 2022 dan yang lebih baru.
Untuk mereprodusi
- Pasang AksHci.
- Instal kluster target.
- Nonaktifkan kluster (vm) selama lebih dari 4 hari.
- Aktifkan kluster lagi.
Gejala dan mitigasi
Kluster target harus tidak dapat dijangkau. Setiap kubectl
perintah yang dijalankan terhadap kluster target harus kembali dengan pesan kesalahan yang mirip dengan yang berikut ini:
certificate expired - Unable to connect to the server: x509: certificate has expired or is not yet valid: current time 2022-07-26T12:24:15-04:00 is after 2022-07-15T15:01:07Z
Untuk memperbaiki masalah ini:
Jalankan perintah berikut untuk memperbarui sertifikat yang dihasilkan secara manual:
Update-AksHciClusterCertificates -Name my-workload -cluster -fixKubeletCredentials
Hasilkan kredensial baru:
Get-AksHciCredential -name <clustername>
Setelah beberapa menit, coba kubectl
perintah lagi untuk melihat apakah kluster sekarang tersedia.
Pod KMS gagal dan log pod KMS berisi kesalahan
Beberapa kemungkinan gejala masalah ini adalah:
kubectl get secrets
gagal dengan kesalahan internal.kubectl logs <kmspod-name> -n kube-system
berisi kesalahan.- Memasang rahasia gagal dalam volume ketika Anda mencoba membuat pod.
- Apiserver gagal dimulai.
Lihat di log pod KMS untuk kesalahan dengan menjalankan perintah berikut:
kubectl logs <kmspod-name> -n kube-system
Jika log mengembalikan kesalahan mengenai token yang tidak valid di pod KMS kluster manajemen, jalankan perintah berikut:
Update-AksHciCertificates
Jika ada kesalahan mengenai token yang tidak valid dalam pod KMS kluster target, jalankan perintah berikut:
UpdateAksHciClusterCertificates -name <cluster-name> -fixcloudcredential
Kesalahan 'System.Collections.Hashtable.generic_non_zero 1 [Kesalahan: Sertifikat telah kedaluwarsa: Kedaluwarsa]'
Sertifikat mocctl kedaluwarsa jika tidak digunakan selama lebih dari 60 hari. AKS Arc menggunakan mocctl
alat baris perintah untuk berkomunikasi dengan MocStack untuk melakukan operasi terkait Moc. Sertifikat yang mocclt
digunakan perintah untuk berkomunikasi dengan cloudagent kedaluwarsa dalam 60 hari. Perintah mocctl
memperbarui sertifikat secara otomatis saat digunakan mendekati kedaluwarsanya (setelah ~42 hari). Jika perintah tidak sering digunakan, sertifikat akan kedaluwarsa.
Untuk mereproduksi perilaku, instal AKS Arc, dan tidak ada operasi yang melibatkan mocctl
perintah dilakukan selama 60 hari.
Untuk memperbaiki masalah, masuk lagi setelah sertifikat kedaluwarsa. Jalankan perintah PowerShell berikut untuk masuk:
Repair-MocLogin
Menghapus sertifikat KVA jika kedaluwarsa setelah 60 hari
Sertifikat KVA kedaluwarsa setelah 60 hari jika tidak ada peningkatan yang dilakukan.
Update-AksHci
dan setiap perintah yang melibatkan kvactl
akan menghasilkan kesalahan berikut ini.
Error: failed to get new provider: failed to create azurestackhci session: Certificate has expired: Expired
Untuk mengatasi kesalahan ini, hapus file sertifikat yang kedaluwarsa pada \kvactl\cloudconfig
dan coba Update-AksHci
lagi pada simpul dengan kesalahan kedaluwarsa sertifikat. Anda dapat menggunakan perintah berikut:
$env:UserProfile.wssd\kvactl\cloudconfig
Anda dapat menemukan diskusi mengenai masalah ini pada sertifikat KVA harus dihapus jika Sertifikat KVA kedaluwarsa sesudah 60 hari
Izin Direktori Aktif Khusus diperlukan untuk simpul Azure Local yang bergabung dengan domain
Pengguna yang menyebarkan dan mengonfigurasi Azure Kubernetes Service di Azure Local harus memiliki izin Kontrol Penuh untuk membuat objek AD di kontainer Direktori Aktif tempat server dan objek layanan dibuat.
Tingkatkan izin pengguna.
Uninstall-AksHciAdAuth gagal dengan kesalahan '[Error from server (NotFound): rahasia "keytab-akshci-scale-reliability" not found]'
Jika Uninstall-AksHciAdAuth menampilkan kesalahan ini, Anda harus mengabaikannya untuk saat ini karena masalah ini akan diperbaiki.
This issue will be fixed.
log kubectl mengembalikan "kesalahan: Anda harus masuk ke server (server telah meminta klien untuk memberikan kredensial)"
Ada masalah dengan AKS Arc di mana kluster dapat berhenti mengembalikan log. Ketika ini terjadi, menjalankan kubectl logs <pod_name>
mengembalikan "kesalahan: Anda harus masuk ke server (server telah meminta klien untuk memberikan kredensial)". AKS Arc memutar sertifikat kubernetes inti setiap 4 hari, tetapi terkadang server API Kubernetes tidak segera memuat ulang sertifikat kliennya untuk komunikasi dengan kubelet saat sertifikat diperbarui.
Untuk mengurangi masalah, ada beberapa opsi:
Jalankan ulang
kubectl logs
. Misalnya, jalankan perintah PowerShell berikut ini:while (1) {kubectl logs <POD_NAME>; sleep 1}
kube-apiserver
Mulai ulang kontainer pada setiap sarana kontrol untuk kluster. Menghidupkan ulang server API tidak berdampak pada menjalankan beban kerja. Untuk memulai ulang server API, ikuti langkah-langkah berikut:Dapatkan alamat IP untuk setiap sarana kontrol di kluster Anda:
kubectl get nodes -o wide
Jalankan perintah berikut:
ssh -i (get-akshciconfig).Moc.sshPrivateKey clouduser@<CONTROL_PLANE_IP> 'sudo crictl stop $(sudo crictl ps --name kube-apiserver -o json | jq -r .containers[0].id)'
Secara opsional, tetapi tidak direkomendasikan untuk beban kerja produksi, Anda dapat meminta
kube-apiserver
untuk tidak memverifikasi sertifikat server kubelet:kubectl logs <POD_NAME> --insecure-skip-tls-verify-backend=true