Kubernetes Dashboard - Kesalahan server tidak dikenal setelah login


9

Saya telah berhasil menyebarkan Kubernetes melalui Kubespray dan semuanya tampak berfungsi dengan baik. Saya dapat mengakses cluster melalui kubectl dan mendaftar node, pod, layanan, rahasia dan sebagainya. Juga memungkinkan untuk menerapkan sumber daya baru dan titik akhir dasbor membuat saya masuk halaman login dasbor.

Saya sudah masuk dengan token akun layanan yang berbeda (default, kubernetes-dashboard, kubernetes-admin, ...) ... dengan setiap login saya mendapatkan popup yang sama seperti yang dijelaskan dalam peringatan dashboard kubespray peringatan popups dilarang misalnya.

Jadi saya menerapkan clusterrolebinding untuk akun layanan default seperti yang dijelaskan. Ketika saya masuk sekarang dengan token akun default, saya hanya mendapatkan

Unknown Server Error (404)
the server could not find the requested resource
Redirecting to previous state in 3 seconds...

kotak yang mengarahkan saya ke halaman login sesudahnya. Ini perilaku yang sama jika saya terhubung ke Dashboard via kubectl proxy. Aksesnya adalah HTTPS melalui IP cluster publik dan juga HTTP over proxy

Saya menggunakan Kubernetes 1.16.2 dan master Kubespray terbaru melakukan 18d19d9e

EDIT: Saya memusnahkan dan menyediakan kembali cluster untuk mendapatkan contoh yang disediakan Kubespray baru untuk membuat semua langkah deterministik, menambahkan info lebih lanjut ...

kubectl -n kube-system logs --follow kubernetes-dashboard-556b9ff8f8-jbmgg -- selama upaya login memberi saya

2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 GET /api/v1/csrftoken/login request from 10.233.74.0:57458: { contents hidden }
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 POST /api/v1/login request from 10.233.74.0:57458: { contents hidden }
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 GET /api/v1/login/status request from 10.233.74.0:57458: {}
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 GET /api/v1/csrftoken/token request from 10.233.74.0:57458: {}
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 POST /api/v1/token/refresh request from 10.233.74.0:57458: { contents hidden }
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 GET /api/v1/login/status request from 10.233.74.0:57458: {}
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 GET /api/v1/csrftoken/token request from 10.233.74.0:57458: {}
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 POST /api/v1/token/refresh request from 10.233.74.0:57458: { contents hidden }
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 GET /api/v1/overview/default?filterBy=&itemsPerPage=10&name=&page=1&sortBy=d,creationTimestamp request from 10.233.74.0:57458: {}
2019/12/16 12:35:03 Getting config category
2019/12/16 12:35:03 Getting discovery and load balancing category
2019/12/16 12:35:03 Getting lists of all workloads
2019/12/16 12:35:03 the server could not find the requested resource
2019/12/16 12:35:03 [2019-12-16T12:35:03Z] Outcoming response to 10.233.74.0:57458 with 404 status code
2019/12/16 12:35:03 No metric client provided. Skipping metrics.
2019/12/16 12:35:03 No metric client provided. Skipping metrics.
2019/12/16 12:35:03 No metric client provided. Skipping metrics.
2019/12/16 12:35:03 Getting pod metrics
2019/12/16 12:35:03 No metric client provided. Skipping metrics.
2019/12/16 12:35:03 No metric client provided. Skipping metrics.
2019/12/16 12:35:03 [2019-12-16T12:35:03Z] Incoming HTTP/2.0 GET /api/v1/systembanner request from 10.233.74.0:57458: {}
2019/12/16 12:35:03 [2019-12-16T12:35:03Z] Incoming HTTP/2.0 GET /api/v1/login/status request from 10.233.74.0:57458: {}
2019/12/16 12:35:03 [2019-12-16T12:35:03Z] Incoming HTTP/2.0 GET /api/v1/rbac/status request from 10.233.74.0:57458: {}
2019/12/16 12:35:03 [2019-12-16T12:35:03Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:03 [2019-12-16T12:35:03Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:03 [2019-12-16T12:35:03Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:12 Metric client health check failed: the server could not find the requested resource (get services heapster). Retrying in 30 seconds.
2019/12/16 12:35:42 Metric client health check failed: the server could not find the requested resource (get services heapster). Retrying in 30 seconds.

Saya telah menemukan solusi aneh untuk membuat dashboard berfungsi , tetapi ini tidak dapat digunakan untuk kita dalam produksi, mungkin seseorang dapat menjelaskan ini:

  1. Saya mengambil contoh akun layanan kube-system:default(Catatan: ini TIDAK ditugaskan cluster-adminpada saat ini
  2. Saya mendapatkan token dan login dengan itu
  3. Dashboard jelas menunjukkan kepada saya "pop-up terlarang"
  4. Saat masih login, saya jalankan kubectl create clusterrolebinding default-admin --clusterrole cluster-admin --serviceaccount=kube-system:default
  5. Saya menyegarkan tab browser yang memegang sesi dasbor saya ... dan voila, semuanya muncul dengan benar.

Karena itu saya tidak dapat logout dan login lagi, saya selalu harus menghapus clusterrolebinding, masuk kemudian dan setelah itu menerapkan clusterrolebinding lagi.

Ini tampaknya sangat terkait dengan klaster yang disediakan kubespray, jadi siapa pun yang dapat mereproduksi ini dengan kubespray?


Bisakah Anda membagikan log pod dash Kubernetes dan token akun layanan mana yang Anda gunakan untuk login?
Umesh Kumhar

bagikan yamls penyebaran dan langkah-langkah yang telah Anda coba
P Ekambaram

Jawaban:


7

Jika Anda menggunakan sertifikat untuk menghubungkan Anda, sertifikat Anda seharusnya ada di sistem: grup master Jadi sertakan "Subjek: O = sistem: master, CN ="

Anda juga dapat membuat Token dan kemudian menggunakan token alih-alih sertifikat:

Mungkin ada kemungkinan bahwa peran kluster Anda terikat dengan "Akun Layanan" tetapi bukan grup Anda, Anda harus memeriksa grup Anda di file yaml. Akun layanan Anda memiliki token akses, menggunakannya untuk mengotentikasi alih-alih sertifikat Anda.

Gunakan ini untuk membuat token dan menggunakannya.

kubectl describe secret $(kubectl get secret | grep cluster-admin | awk '{print $1}')

token:

Perbarui kubeconfig untuk mengautentikasi diri Anda menggunakan token itu, alih-alih sertifikat yang saat ini Anda gunakan, dan Anda harus berhasil diautentikasi sebagai akun layanan cluster-admin itu.

Kubernetes RBAC - upaya terlarang untuk memberikan hak istimewa ekstra


Ini mengembalikan saya token dari akun layanan "default" di namespace "default", karena tidak ada "cluster-admin" yang ditentukan. Bahkan ketika saya menambahkan "--all-namespaces" tampaknya, bahwa Kubespray tidak menyediakan akun layanan cluster-admin Secara umum: Saya mengetahui penggunaan token untuk mengotentikasi sebagai akun layanan khusus yang terikat pada token itu. Sayangnya saya tidak mendapatkan akun layanan saya berfungsi, bahkan jika saya mendefinisikan clusterrolebinding
Jürgen Zornig

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.