Kubernetes Dashboard - ข้อผิดพลาดเซิร์ฟเวอร์ที่ไม่รู้จักหลังจากเข้าสู่ระบบ


9

ฉันติดตั้ง Kubernetes ผ่าน Kubespray เรียบร้อยแล้วและดูเหมือนว่าทุกอย่างจะทำงานได้ดี ฉันสามารถเข้าถึงคลัสเตอร์ผ่าน kubectl และรายการโหนด, พ็อด, บริการ, ความลับและอื่น ๆ เป็นไปได้ที่จะใช้ ressources ใหม่และจุดสิ้นสุดแดชบอร์ดทำให้ฉันได้รับหน้าเข้าสู่ระบบแดชบอร์ด

ฉันได้เข้าสู่ระบบด้วยสัญญาณของความ serviceaccounts แตกต่างกัน (ค่าเริ่มต้น Kubernetes-แดชบอร์ด Kubernetes ผู้ดูแลระบบ, ... ) ... กับการเข้าสู่ระบบที่ฉันได้รับป๊อปอัพเหมือนกันทุกที่อธิบายไว้ในป๊อปอัพเตือนแดชบอร์ดที่ต้องห้าม kubesprayตัวอย่างเช่น

ดังนั้นฉันจึงใช้การควบคุมคลัสเตอร์สำหรับบัญชีบริการเริ่มต้นตามที่อธิบายไว้ เมื่อฉันเข้าสู่ระบบตอนนี้ด้วยโทเค็นบัญชีค่าเริ่มต้นฉันได้รับเท่านั้น

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

กล่องซึ่งเปลี่ยนเส้นทางฉันไปที่หน้าเข้าสู่ระบบหลังจากนั้น kubectl proxyพฤติกรรมเดียวกันถ้าฉันเชื่อมต่อกับแผงควบคุมผ่านทาง การเข้าถึงคือ HTTPS ผ่าน IP ของคลัสเตอร์สาธารณะและ HTTP ผ่านพรอกซี

ฉันกำลังใช้ Kubernetes 1.16.2 และอาจารย์ Kubespray รุ่นล่าสุดยอมรับ 18d19d9e

แก้ไข:ฉันทำลายและปรับโครงสร้างคลัสเตอร์ใหม่เพื่อรับอินสแตนซ์ Kubespray ที่จัดเตรียมใหม่เพื่อให้ขั้นตอนทั้งหมดเป็นไปตามที่กำหนดไว้โดยเพิ่มข้อมูลเพิ่มเติม ...

kubectl -n kube-system logs --follow kubernetes-dashboard-556b9ff8f8-jbmgg -- ในระหว่างการพยายามเข้าสู่ระบบให้ฉัน

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.

ฉันพบวิธีแก้ปัญหาแปลก ๆ เพื่อให้แดชบอร์ดทำงานได้ แต่นี่ไม่สามารถใช้ได้สำหรับเราในการผลิตบางทีใครบางคนสามารถอธิบายสิ่งนี้:

  1. ฉันใช้ตัวอย่างเช่น serviceaccount kube-system:default(หมายเหตุ: อันนี้ไม่ได้รับมอบหมายcluster-adminในจุดนี้
  2. ฉันได้รับโทเค็นและลงชื่อเข้าใช้ด้วย
  3. แดชบอร์ดแสดงให้ฉันเห็นอย่างชัดเจนว่า "ต้องห้าม - ป๊อปอัป"
  4. ในขณะที่ยังเข้าสู่ระบบฉันทำงาน kubectl create clusterrolebinding default-admin --clusterrole cluster-admin --serviceaccount=kube-system:default
  5. ฉันรีเฟรชแท็บเบราว์เซอร์ที่เก็บเซสชันแดชบอร์ดของฉัน ... และอื่น ๆ ทุกอย่างปรากฏขึ้นอย่างถูกต้อง

ดังนั้นฉันไม่สามารถออกจากระบบและลงชื่อเข้าใช้อีกครั้งฉันต้องลบการควบคุมคลัสเตอร์การเข้าสู่ระบบจากนั้นจึงใช้การควบคุมคลัสเตอร์อีกครั้ง

ดูเหมือนว่าจะเกี่ยวข้องอย่างมากกับกลุ่ม kubespray ที่จัดไว้ดังนั้นใครที่สามารถสร้างสิ่งนี้ด้วย kubespray?


คุณสามารถแบ่งปันบันทึกของฝักแดชบอร์ด Kubernetes และโทเค็นบัญชีบริการที่คุณใช้เพื่อเข้าสู่ระบบได้หรือไม่?
Umesh Kumhar

แบ่งปันการปรับใช้ yamls และขั้นตอนที่คุณลอง
P Ekambaram

คำตอบ:


7

หากคุณกำลังใช้ใบรับรองเพื่อเชื่อมต่อใบรับรองคุณควรอยู่ในระบบ: กลุ่มปริญญาโทดังนั้นให้รวม "เรื่อง: O = ระบบ: ปริญญาโท, CN ="

คุณยังสามารถสร้างโทเค็นจากนั้นใช้โทเค็นแทนใบรับรอง:

อาจเป็นไปได้ว่าบทบาทคลัสเตอร์ของคุณถูกผูกไว้กับ "บัญชีบริการ" แต่ไม่ใช่กลุ่มของคุณคุณควรตรวจสอบกลุ่มของคุณในไฟล์ yaml บัญชีบริการของคุณมีโทเค็นการเข้าถึงใช้เพื่อรับรองความถูกต้องแทนใบรับรองของคุณ

ใช้สิ่งนี้เพื่อสร้างโทเค็นและใช้มัน

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

token:

อัปเดต kubeconfig เพื่อตรวจสอบสิทธิ์ตัวคุณเองโดยใช้โทเค็นนั้นแทนใบรับรองที่คุณใช้อยู่ในปัจจุบันและคุณควรได้รับการรับรองความถูกต้องเป็นบัญชีบริการผู้ดูแลระบบคลัสเตอร์

Kubernetes RBAC - ความพยายามที่ต้องห้ามในการให้สิทธิ์พิเศษ


สิ่งนี้ส่งคืนโทเค็นของ serviceaccount "default" ในเนมสเปซ "default" เนื่องจากไม่มีการกำหนด "cluster-admin" แม้เมื่อฉันเพิ่ม "- all-namespaces" ดูเหมือนว่า Kubespray ไม่ได้จัดเตรียมบัญชีบริการของผู้ดูแลระบบคลัสเตอร์โดยทั่วไปฉันพูด: ฉันทราบถึงการใช้โทเค็นเพื่อรับรองความถูกต้องเป็น serviceaccount เฉพาะซึ่งผูกพันกับโทเค็นนั้น น่าเสียดายที่ฉันไม่ได้รับบัญชีบริการของฉันแม้ว่าฉันจะกำหนด clusterrolebinding
Jürgen Zornig

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.