{
    "componentChunkName": "component---src-templates-issues-tsx",
    "path": "/issues/307",
    "result": {"data":{"issuesJson":{"id":"c07505b8-d058-59a9-a18c-f1fd7f9775ac","title":"astefanutti/kubebox: K8s 终端版管理工具","number":307,"bodyHTML":"<div align=\"center\" dir=\"auto\">\n<p dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/a15b413168923d02e21292705ceaf86b92675f98e250c5c896a02ba7504a6eae/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f657279616a662f7475406d61696e2f696d672f696d6167655f32303234303432305f3231343430382e676966\"><img src=\"https://camo.githubusercontent.com/a15b413168923d02e21292705ceaf86b92675f98e250c5c896a02ba7504a6eae/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f657279616a662f7475406d61696e2f696d672f696d6167655f32303234303432305f3231343430382e676966\" width=\"100%\" height=\"3\" data-animated-image=\"\" data-canonical-src=\"https://cdn.jsdelivr.net/gh/eryajf/tu@main/img/image_20240420_214408.gif\" style=\"max-width: 100%; height: auto; max-height: 3px;\"></a><br><br></p>\n<markdown-accessiblity-table><table role=\"table\">\n<thead>\n<tr>\n<th align=\"right\">Repos</th>\n<th align=\"left\"><a href=\"https://github.com/astefanutti/kubebox\">astefanutti/kubebox</a></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td align=\"right\"><strong>Views</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/67575d603dc9f59ca78bb0f3e8568e1853eb19278ab8c76cb50948b0add062d3/68747470733a2f2f76696577732e77686174696c656172656e65642e746f6461792f76696577732f6769746875622f6173746566616e757474692f6b756265626f782e737667\" alt=\"views\" data-canonical-src=\"https://views.whatilearened.today/views/github/astefanutti/kubebox.svg\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td align=\"right\"><strong>Stars</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/7f8a27790505384fc482236df6460a508ac6481c8fad7dd4ba4ac366374ec967/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6173746566616e757474692f6b756265626f783f636f6c6f723d663266303864266c6f676f3d556e64657274616c65266c6f676f436f6c6f723d656234363330\" alt=\"stars\" data-canonical-src=\"https://img.shields.io/github/stars/astefanutti/kubebox?color=f2f08d&amp;logo=Undertale&amp;logoColor=eb4630\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td align=\"right\"><strong>Forks</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/6f4bab5a20e77efb24a0fdff0c445c207e9f04e6094315a58969bc580690d749/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f6173746566616e757474692f6b756265626f783f636f6c6f723d626138366562266c6f676f3d48616e647368616b65266c6f676f436f6c6f723d656136616136\" alt=\"forks\" data-canonical-src=\"https://img.shields.io/github/forks/astefanutti/kubebox?color=ba86eb&amp;logo=Handshake&amp;logoColor=ea6aa6\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td align=\"right\"><strong>License</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/f647c40bf62bdcc1273588618b8c0d177382c5d14fd827bf5a4973751257d459/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6173746566616e757474692f6b756265626f783f6c6f676f3d64617461253341696d616765253246706e672533426261736536342532436956424f5277304b47676f414141414e53556845556741414144414141414177434159414141425841766d48414141414358424957584d41414173544141414c457745416d70775941414144336b6c45515652346e4f335953557a5555426748384a726f57567255474a66456d3773584e63534446784d544c327069347348456778654e526f77586770455742445552522532424e414e4f4b4f4b36366f6f4b4a4742586545475263574163455646475152484677516d483525324630774861655748493944554455354c356b6e6568644f62377a66652532423139636e434a47495243516945596c514237594a4979474c38616f73756c565a36695246516a69474b6b7564576735614c6c704f70704e586e665071773555304459524a6d56786a4367464633424c755a476d416f5655694b4541726d583744375553677351706f72674761336748664b34483663754262435644334771683141352532424c6745253242467749656e514d306a6f446f66714c6f48564e7742796d384370546e416d327a51713073676478624964515a556c416b7150415a3664676a303541446f59526f6f66792532466f5869726f376b3551586a4c6f70677a4b69514e6c4c4461716f4967754577426a7a7150355066446a45394479495879493633464d547751464d43567271774e61763451666f52673538514625324266724d485172454b3844546f434d714e4179574e4866786d54526f4c4f726d5352566747744466714345715a4f4851727a6f34706243557341333431365169364551394b476a6345465267484f724f4b6e5536574162396247455459656b4b7843766a546167394534706a653534446b3551503862624d4859762532464333756541654a6b50304f4778422532424a70426e4172595238455951516e6f4e31414e4661426e5050356c385372736559514c303641646b30464a5938484f5761424d6c6541486a683068506f73497a6c6f3876304125324633345a694f6548726130714b52504d5653493774762532423932747725324676687855654252713456454c674d376642714b354770526d6f514c584e7075625475367a6f4e52706754386e5051627138347764253246494375767978694b4871694e41664933774d367549684271476b4c696977414f734b44714f68743749747239567938536a52424557667941627225324668523142667056514664484a42253246423268683778376a36517077435665655951326b72554235436c636a3641326d3067576a25324244306d4c34397a573563517943484c4e37726a6c6d6d6174457958582532464372547a412532466f51785a6b576c39474a5443566f25324279546a3837253242346769504b6376307149486f344156344430565a727251493334706e70524d36357875652532467a417265453425324654253246536f676c664542794d7369517441546c4c3352414a355948725378365a44665337307337754d486842705225324659423573305057366f455270316236253246667252684b3353444c35546965364f515548516c5133735644752532427a50636b397657453973747225324236496a533967486d5750616861444a25324277434b364e494242587348423948796b587378774470686c436d416476706c6162554a4e6e5a504239342532464e7436784f6538587a4562503257684d335741673147756236744825324233513150673337365239713475716c6e6f36676448476a444f5139306562303141484d3672596975554a314f713472344656756a35765239427a4d3957674e764f7977446869495951467667626366774166774d764863615067425041253246447948476a50624e394138616d6562636477416444354e6633373574787165774e5552656f797677424958594c645170576c6877465771745061435044334173467541535636717171496c62304a766b564331464c39576b4c55556c55574b337a585a4c46432532423125324642726f46746f364f7358497545594a5034447a7a5732594656316f4a614141414141456c46546b5375516d4343\" alt=\"license\" data-canonical-src=\"https://img.shields.io/github/license/astefanutti/kubebox?logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD3klEQVR4nO3YSUzUUBgH8JroWVrUGJfEm7sXNcSDFxMTL2pi4sHEgxeNRowXgpEWBDURR%2BNANOKOK66ooKJGBXeEGRcWAcEVFGQRHFwQmH5%2F0wHaeWHI9DUDU5L5knehdOb7zfe%2B19cnCJGIRCQiEYlQB7YJIyGL8aosulVZ6iRFQjiGKkudWg5aLlpOppNXnfPqw5U0DYRJmVxjCgFF3BLuZGmAoVUiKEArmX7D7USgsQporgGa3gHfK4H6cuBbCVD3Gqh1A5%2BLgE%2BFwIenQM0joDofqLoHVNwBym8CpTnAm2zQq0sgdxbIdQZUlAkqPAZ6dgj05ADoYRoofy%2FoXiro7k5QXjLopgzKiQNlLDaqoIguEwBjzqP5PfDjE9DyIXyI63FMTwQFMCVrqwNav4QfoRg58QF%2BfrMHQrEK8DToCMqNAyWNHfxmTRoLOrmSRVgGtDfqCEqZOHQrzo4pbCUsA3416Qi6EQ9KGjcEFRgHOrOKnU6WAb9bGETYekKxCvjTag9E4pje54Dk5QP8bbMHYv%2FC3ueAeJkP0OGxB%2BJpBnArYR8EYQQnoN1ANFaBnPP5l8SrseYQL06Adk0FJY8HOWaBMleAHjh0hPosIzlo8v0A%2F34ZiOeHra0qKRPMVSI7tv%2B92tw%2FvhxUeBRq4VELgM7fBqK5GpRmoQLXNpubTu6zoNRpgT8nPQbq84wd%2FICuvyxiKHqiNAfI3wM6uIhBqGkLiiwAOsKDqOht7Itr9Vy8SjRBEWfyAbr%2FhR1BfpVQFdHJB%2FB2hh7x7j6QpwCVeeYQ2krUB5Clcj6A2m0gWj%2BD0mL49zW5cQyCHLN7rjlmmatEyXX%2FCrTzA%2FoQxZkWl9GJTCVo%2ByTj87%2B4giPKcv0qIHo4AV4D0VZrrQI34pnpRM65xue%2FzAreE4%2FT%2FSoglfEByMsiQtATlL3RAJ5YHrSx6ZDfS70s7uMHhBpR%2FYB5s0PW6oERp1b6%2FfrRhK3SDL5Tie6OQUHQlQ3sVDu%2BzPck9vWE9str%2B6IjS9gHmWPahaDJ%2BwCK6NIBBXsHB9HykXsxwDphlCmAdvplabUJNnZPB94%2FNt6xOe8XzEbP2WhM3WAg1Gub6tH%2B3Q1Pg376R9q4uqlno6gdHGjDOQ90eb01AHM6rYiuUJ1Oq4r4FVuj5vR9BzM9WgNvOywDhiIYQFvgbcfwAfwMvHcaPgBPA%2FDyHGjPbN9A8amebcdwAdD5Nf375txqewNUReoyvwBIXYLdQpWlhwFWqtPaCPD3AsFuASV6qqqIlb0JvkVC1FL9WkLUUlUWK3zXZLFC%2B1%2FBroFto6OsXIuEYJP4DzzW2YFV1oJaAAAAAElFTkSuQmCC\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td align=\"right\"><strong>UpdatedAt</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/e8d10f1e155487a95b49bc228601af3ba93d8a176e048b2245b492ca53615326/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f6173746566616e757474692f6b756265626f783f646973706c61795f74696d657374616d703d636f6d6d6974746572266c6f676f3d64617461253341696d616765253246706e672533426261736536342532436956424f5277304b47676f414141414e5355684555674141414234414141416543415941414141374d4b3669414141414358424957584d41414173544141414c457745416d7077594141414648556c45515652346e4c5658375539615678776d3236646c582532466468627825324232253246516e626b7655627264554151674a4a496655444e574454546d4f76314651554661504a346b7573725630314a7431734e70637453327533626f745a746d786439744a5346536f714b71494635625944464c436f76436c656673747a4a387758524c445a4c7a6e6b634f343535376e3364332532466e655a3472454f515a74315771462532423858467234253242664f4c4565326a6f59307a776638546f795a50766a45676b4c592532426b306d6d72584f36644b696e787a476b30666a5430782532425279723055716e6359637a4d317263347451253242497270324c4758646f344e4334567657715453373277716c632532427231334f527269364b6458646e624f484c6c776c7a4a70524b6e3657342532424b36706f4f434e6e494166486a253246253242776168495a4234764b6e715a6630714a704e49716c2532467638545530634e6c3572627963337730516e54703379324c54614a374d314e617844723266526e315370504736476961323174664533345463614f617931694d55564f5146624659714957536f31573854694156616e43306576584f4542375770313448466232327a453566714c4f433545524c515769644e614e49347545636339693768634a6c644868324e57725135674464624f6c7061756d49754c62326174415144506e7a3062384e6257636d785656524a33486d7870536377777a4f4a6d4b44524765384c6c435a444c4739673754496e5631516c376462586256316533675430574b697243466f6d6b5079767758466c5a474a4f6a563625324253743634757564445a4f55354555636f782532464d455144567674364d62634e3237593341797a687633737061557242365a3971724a534f3139657a6a387032704c426b4a792532426343484a7857493567573574636652527a31645531394766476b6f7539505a4f34736d52396a4746777065783444793362766e6d4b79706f74625531335669646a71595a68726a343972764d457425324625324659714c7a396430304e6a57253246637a67796f394f35317a7336614e6c6f354644747530445a675146686c47584a30644241446f4e6864367576703657686f617967374e394c564748386d443462253246486e667455516f4e4734764c51306769784d716c5725324234714f6a744e48446733723166365969525347785279375576714c62395534716b716e78504f4e7661356c447048723125324279794b524e4b57425a793565644d554842326d3572792532422532424551772532427a6766347a6f39253246306f634e3357527a4c4277344a2532424a7950574372716d4967475974554f735744346f785a46516f50556a4770564871493425324661666b51504336665a5165654d31253242764c7549516e6a754257514444437363726d485039656f4e5041744271664f6e5875614b25324268364a45624772732532427076764d6d78654962683836336162565065597953456f39464a48704e4d464a59253242503563575a6b6667374f3174537759436553514c54593345385130392532464256504a556c78516a7368543142736343593032723955445542667643484236367063665041336c794165336e6772332532463437584467614a7a736c7937787741364e5a746c555550437541487161536a5549502532427375653842525741432532464e6651374a5a505a35397330476a3756747049537a34685125324243706658474d4b685a63764c70554b7866574d386f68766637702532464f446a4842666356463849736b383267314648796b63564645253242555a414158343761452532464d6c34504f3530506e75683025324678346e6d637957507364774468427836436d6b4c562532466746446a594b784f4a4f4674623077517949684c39527943774b33414f664947703159464542686e4d4a634c525745624b644b516f55366e63545a6b494544696341792532463831645675454d3552775066657934784f7830496b25324649324e6e466b692532425761664f6f464959466367595a43797864376543556a626334416d46363566742532466b4d686b336f25324235686337734d4a79716a4a45477659466151464972375930775077384246415925324236253242766d6b3377367a7a5275444d6d5a5652736668385274413075455453443775434254364459514e36697665553066706b594c6a453671725672744f78654e4b553954484c5a4a396b4255324a427342685635416976422532466f4b61514e4b675043427744596149665a4334616454684f71463457454e56694c4a77566f586f62664c424b56773637414f6154734c6336355461564b32317651344c613939654b6359673576627873624f627a5451394e37554b4467554f3177446a6944494942736868357a746733396e514d4c535a4248344f7a424f55444551586d323036643366634c67737762585141345068634b336e6873775531427a3877765130395248472532466f597933656a6677424e6d746f59714c4130586741414141424a52553545726b4a676767253344253344266c6162656c3d557064617465644174\" alt=\"last-commit\" data-canonical-src=\"https://img.shields.io/github/last-commit/astefanutti/kubebox?display_timestamp=committer&amp;logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFHUlEQVR4nLVX7U9aVxwm26dlX%2Fdhbx%2B2%2FQnbkvUbrdUAQgJJIfUDNWDTTmOv1FQUFaPJ4kusrV01Jt1sNpctS2u3botZtmxd9tJSFSoqKqIF5bYDFLCovClefstzJ8wXRLDZLznkcO4557n3d3%2FneZ4rEOQZt1WqF%2B8XFr4%2BfOLEe2joY0zwf8ToyZPvjEgkLY%2Bk0mmrXO6dKinxzGk0fjT0x%2BRyr0UqncYczM1rc4tQ%2BIrp2LGXdo4NC4VvWqTS72wqlc%2Br13ORri6KdXdnbOHLlwlzJpRKn6W4%2BK6poOCNnIAfHj%2F%2BwahIZB4vKnqZf0qJpNIql%2Fv8TU0cNl5rbyc3w0QnTp3y2LTaJ7M1NaxDr2fRn1SpPG6Gia21tfE34TcaOay1iMUVOQFbFYqIWSo1W8TiAVanC0evXOEB7Wp14HFb22zE5fqLOC5ERLQWidNaNI4uEcc9i7hcJldHh2NWrQ5gDdbOlpaumIuLb2atAQDPnz0b8NbWcmxVVRJ3HmxpScwwzOJmKDRGe8LlCZDLG9g7TInV1Ql7dbXbV1e3gT0WKirCFomkPyvwXFlZGJOjV6%2BSt64uudDZOU5EUcox%2FMEQDVvt6MbcN27Y3Ayzhv3spaUrB6Z9qrJSO19ezj8p2pLBkJy%2BcCHJxWI5gW5tcfRRz1dU19GfGkou9PZO4smR9jGFwpex4Dy3bvnmKypotbU13VidjqYZhrj49rvMEt%2F%2FYqLz9d00NjW%2Fczgyo9O51zs6aNlo5FDtu0DZgQFhlGXJ0dBADoNhd6uvp6Whoayg7N9LVGH8mD4b%2FHnftUQoNG4vLQ0gixMqlW%2B4qOjtNHDg3r1f6YiRSGxRy7UvqLb9U4qkqnxPONva5lDpHr1%2ByyKRNKWBZy5edMUHB2m5ry%2B%2BEQw%2Bzgf4zo9%2F0ocN3WRzLBw4J%2BJyPWCrqmIgGYtUOsWD4oxZFQoPUjGpVHqI4%2FafkQPC6fZQeeM1%2BvLuIQnjuBWQDDCscrmHP9eoNPAtBqfOnXuaK%2Bh6JEbGrs%2BpvvMmxeIbh863abVPeYySEo9FJHpNMFJY%2BP5cWZkfg7O1tSwYCeSQLTY3E8Q09%2FBVPJUlxQjshT1BscCY02r9UDUBfvCHB66pcfPA3lyAe3ngr3%2F47XDgaJzsly7xwA6NZtlUUPCuAHqaSjUIP%2Bsue8BRWAC%2FNfQ7JZPZ59s0Gj7VtpISz4hQ%2BCpfXGMKhZcvLpUKxfWM8ohvf7p%2FODjHBfcVF8Isk82g1FHykcVFE%2BUZAAX47aE%2FMl4PO50Pnuh0%2Fx4nmcyWPsdwDhBx6CmkLV%2FgFDjYKxOJOFtb0wQyIhL9RyCwK3AOfIGp1YFEBhnMJcLRWEbKdKQoU6ncTZkIEDicAy%2F81dVuEM5RwPfey4xOx0Ik%2FI2NnFki%2BWafOoFIYFcgYZCyxd7eCUjbc4AmF65ft%2FkMhk3o%2B5hc7sMJyqjJEGvYFaQFIr7Y0wPw8BFAY%2B6%2Bvmk3w6zzRuDMmZVRsfh8RtA0uETSD7uCBT6DYQN6iveU0fpkYLjE6qrVrtOxeNKU9THLZJ9kBU2JBsBhV5AivB%2FoKaQNKgPCBwDYaIfZC4adThOqF4WENViLJwVoXobfLBKVw67AOaTsLc65TaVK21vQ4La99eKcYg5vbxsbObzTQ9N7UKDgUO1wDjiDIIBshh5ztg39nQMLSZBH4OzBOUDEQXm206d3fcLgswbXQA4PhcK3nhswU1Bz8wvQ09RHG%2FoYy3ejfwBNmtoYqLA0XgAAAABJRU5ErkJggg%3D%3D&amp;label=UpdatedAt\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td align=\"right\"><strong>CreatedAt</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/9e9c7cf13856329dd6e0fdb423387ed255c6f952e7d675a7bab9e352624a40d7/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f637265617465642d61742f6173746566616e757474692f6b756265626f783f6c6f676f3d64617461253341696d616765253246706e672533426261736536342532436956424f5277304b47676f414141414e5355684555674141414234414141416543415941414141374d4b3669414141414358424957584d41414173544141414c457745416d7077594141414648556c45515652346e4c5658375539615678776d3236646c582532466468627825324232253246516e626b7655627264554151674a4a496655444e574454546d4f76314651554661504a346b7573725630314a7431734e70637453327533626f745a746d786439744a5346536f714b71494635625944464c436f76436c656673747a4a387758524c445a4c7a6e6b634f343535376e3364332532466e655a3472454f515a74315771462532423858467234253242664f4c4565326a6f59307a776638546f795a50766a45676b4c592532426b306d6d72584f36644b696e787a476b30666a5430782532425279723055716e6359637a4d317263347451253242497270324c4758646f344e4334567657715453373277716c632532427231334f527269364b6458646e624f484c6c776c7a4a70524b6e3657342532424b36706f4f434e6e494166486a253246253242776168495a4234764b6e715a6630714a704e49716c2532467638545530634e6c3572627963337730516e54703379324c54614a374d314e617844723266526e315370504736476961323174664533345463614f617931694d55564f5146624659714957536f31573854694156616e43306576584f4542375770313448466232327a453566714c4f433545524c515769644e614e49347545636339693768634a6c644868324e57725135674464624f6c7061756d49754c62326174415144506e7a3062384e6257636d785656524a33486d7870536377777a4f4a6d4b44524765384c6c435a444c4739673754496e5631516c376462586256316533675430574b697243466f6d6b5079767758466c5a474a4f6a563625324253743634757564445a4f55354555636f782532464d455144567674364d62634e3237593341797a687633737061557242365a3971724a534f3139657a6a387032704c426b4a792532426343484a7857493567573574636652527a31645531394766476b6f7539505a4f34736d52396a4746777065783444793362766e6d4b79706f74625531335669646a71595a68726a343972764d457425324625324659714c7a396430304e6a57253246637a67796f394f35317a7336614e6c6f354644747530445a675146686c47584a30644241446f4e6864367576703657686f617967374e394c564748386d443462253246486e667455516f4e4734764c51306769784d716c5725324234714f6a744e48446733723166365969525347785279375576714c62395534716b716e78504f4e7661356c447048723125324279794b524e4b57425a793565644d554842326d3572792532422532424551772532427a6766347a6f39253246306f634e3357527a4c4277344a2532424a7950574372716d4967475974554f735744346f785a46516f50556a4770564871493425324661666b51504336665a5165654d31253242764c7549516e6a754257514444437363726d485039656f4e5041744271664f6e5875614b25324268364a45624772732532427076764d6d78654962683836336162565065597953456f39464a48704e4d464a59253242503563575a6b6667374f3174537759436553514c54593345385130392532464256504a556c78516a7368543142736343593032723955445542667643484236367063665041336c794165336e6772332532463437584467614a7a736c7937787741364e5a746c555550437541487161536a5549502532427375653842525741432532464e6651374a5a505a35397330476a3756747049537a34685125324243706658474d4b685a63764c70554b7866574d386f68766637702532464f446a4842666356463849736b383267314648796b63564645253242555a414158343761452532464d6c34504f3530506e75683025324678346e6d637957507364774468427836436d6b4c562532466746446a594b784f4a4f4674623077517949684c39527943774b33414f664947703159464542686e4d4a634c525745624b644b516f55366e63545a6b494544696341792532463831645675454d3552775066657934784f7830496b25324649324e6e466b692532425761664f6f464959466367595a43797864376543556a626334416d46363566742532466b4d686b336f25324235686337734d4a79716a4a45477659466151464972375930775077384246415925324236253242766d6b3377367a7a5275444d6d5a5652736668385274413075455453443775434254364459514e36697665553066706b594c6a453671725672744f78654e4b553954484c5a4a396b4255324a427342685635416976422532466f4b61514e4b675043427744596149665a4334616454684f71463457454e56694c4a77566f586f62664c424b56773637414f6154734c6336355461564b32317651344c613939654b6359673576627873624f627a5451394e37554b4467554f3177446a6944494942736868357a746733396e514d4c535a4248344f7a424f55444551586d323036643366634c67737762585141345068634b336e6873775531427a3877765130395248472532466f597933656a6677424e6d746f59714c4130586741414141424a52553545726b4a676767253344253344266c6162656c3d437265617465644174\" alt=\"create-at\" data-canonical-src=\"https://img.shields.io/github/created-at/astefanutti/kubebox?logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFHUlEQVR4nLVX7U9aVxwm26dlX%2Fdhbx%2B2%2FQnbkvUbrdUAQgJJIfUDNWDTTmOv1FQUFaPJ4kusrV01Jt1sNpctS2u3botZtmxd9tJSFSoqKqIF5bYDFLCovClefstzJ8wXRLDZLznkcO4557n3d3%2FneZ4rEOQZt1WqF%2B8XFr4%2BfOLEe2joY0zwf8ToyZPvjEgkLY%2Bk0mmrXO6dKinxzGk0fjT0x%2BRyr0UqncYczM1rc4tQ%2BIrp2LGXdo4NC4VvWqTS72wqlc%2Br13ORri6KdXdnbOHLlwlzJpRKn6W4%2BK6poOCNnIAfHj%2F%2BwahIZB4vKnqZf0qJpNIql%2Fv8TU0cNl5rbyc3w0QnTp3y2LTaJ7M1NaxDr2fRn1SpPG6Gia21tfE34TcaOay1iMUVOQFbFYqIWSo1W8TiAVanC0evXOEB7Wp14HFb22zE5fqLOC5ERLQWidNaNI4uEcc9i7hcJldHh2NWrQ5gDdbOlpaumIuLb2atAQDPnz0b8NbWcmxVVRJ3HmxpScwwzOJmKDRGe8LlCZDLG9g7TInV1Ql7dbXbV1e3gT0WKirCFomkPyvwXFlZGJOjV6%2BSt64uudDZOU5EUcox%2FMEQDVvt6MbcN27Y3Ayzhv3spaUrB6Z9qrJSO19ezj8p2pLBkJy%2BcCHJxWI5gW5tcfRRz1dU19GfGkou9PZO4smR9jGFwpex4Dy3bvnmKypotbU13VidjqYZhrj49rvMEt%2F%2FYqLz9d00NjW%2Fczgyo9O51zs6aNlo5FDtu0DZgQFhlGXJ0dBADoNhd6uvp6Whoayg7N9LVGH8mD4b%2FHnftUQoNG4vLQ0gixMqlW%2B4qOjtNHDg3r1f6YiRSGxRy7UvqLb9U4qkqnxPONva5lDpHr1%2ByyKRNKWBZy5edMUHB2m5ry%2B%2BEQw%2Bzgf4zo9%2F0ocN3WRzLBw4J%2BJyPWCrqmIgGYtUOsWD4oxZFQoPUjGpVHqI4%2FafkQPC6fZQeeM1%2BvLuIQnjuBWQDDCscrmHP9eoNPAtBqfOnXuaK%2Bh6JEbGrs%2BpvvMmxeIbh863abVPeYySEo9FJHpNMFJY%2BP5cWZkfg7O1tSwYCeSQLTY3E8Q09%2FBVPJUlxQjshT1BscCY02r9UDUBfvCHB66pcfPA3lyAe3ngr3%2F47XDgaJzsly7xwA6NZtlUUPCuAHqaSjUIP%2Bsue8BRWAC%2FNfQ7JZPZ59s0Gj7VtpISz4hQ%2BCpfXGMKhZcvLpUKxfWM8ohvf7p%2FODjHBfcVF8Isk82g1FHykcVFE%2BUZAAX47aE%2FMl4PO50Pnuh0%2Fx4nmcyWPsdwDhBx6CmkLV%2FgFDjYKxOJOFtb0wQyIhL9RyCwK3AOfIGp1YFEBhnMJcLRWEbKdKQoU6ncTZkIEDicAy%2F81dVuEM5RwPfey4xOx0Ik%2FI2NnFki%2BWafOoFIYFcgYZCyxd7eCUjbc4AmF65ft%2FkMhk3o%2B5hc7sMJyqjJEGvYFaQFIr7Y0wPw8BFAY%2B6%2Bvmk3w6zzRuDMmZVRsfh8RtA0uETSD7uCBT6DYQN6iveU0fpkYLjE6qrVrtOxeNKU9THLZJ9kBU2JBsBhV5AivB%2FoKaQNKgPCBwDYaIfZC4adThOqF4WENViLJwVoXobfLBKVw67AOaTsLc65TaVK21vQ4La99eKcYg5vbxsbObzTQ9N7UKDgUO1wDjiDIIBshh5ztg39nQMLSZBH4OzBOUDEQXm206d3fcLgswbXQA4PhcK3nhswU1Bz8wvQ09RHG%2FoYy3ejfwBNmtoYqLA0XgAAAABJRU5ErkJggg%3D%3D&amp;label=CreatedAt\" style=\"max-width: 100%;\"></a></td>\n</tr>\n</tbody>\n</table></markdown-accessiblity-table>\n<a href=\"https://github.com/opsre/awesome-ops\">\n</a><p dir=\"auto\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/b964a36ea4078c39f603d46a29436371c7541a2f26e0228d7b21b9d9805b43d3/68747470733a2f2f736f6369616c6966792e6769742e63692f6f707372652f617765736f6d652d6f70732f696d6167653f6465736372697074696f6e3d3126666f6e743d42697474657226666f726b733d31266973737565733d31266c616e67756167653d31266c6f676f3d6874747073253341253246253246617661746172732e67697468756275736572636f6e74656e742e636f6d25324675253246313838353638303230266e616d653d31266f776e65723d31267061747465726e3d436972637569742b426f6172642670756c6c733d31267374617267617a6572733d31267468656d653d4c69676874\" alt=\"\" data-canonical-src=\"https://socialify.git.ci/opsre/awesome-ops/image?description=1&amp;font=Bitter&amp;forks=1&amp;issues=1&amp;language=1&amp;logo=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F188568020&amp;name=1&amp;owner=1&amp;pattern=Circuit+Board&amp;pulls=1&amp;stargazers=1&amp;theme=Light\" style=\"max-width: 100%;\"></a></p>\n<a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/a15b413168923d02e21292705ceaf86b92675f98e250c5c896a02ba7504a6eae/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f657279616a662f7475406d61696e2f696d672f696d6167655f32303234303432305f3231343430382e676966\"><img src=\"https://camo.githubusercontent.com/a15b413168923d02e21292705ceaf86b92675f98e250c5c896a02ba7504a6eae/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f657279616a662f7475406d61696e2f696d672f696d6167655f32303234303432305f3231343430382e676966\" width=\"100%\" height=\"3\" data-animated-image=\"\" data-canonical-src=\"https://cdn.jsdelivr.net/gh/eryajf/tu@main/img/image_20240420_214408.gif\" style=\"max-width: 100%; height: auto; max-height: 3px;\"></a>\n</div>\n<p dir=\"auto\">= Kubebox [small]#^⎈❏^#<br>\nAntonin Stefanutti <a href=\"https://github.com/astefanutti%5B@astefanutti%5D\">https://github.com/astefanutti[@astefanutti]</a><br>\n// Meta<br>\n:description: Terminal and Web console for Kubernetes<br>\n// Settings<br>\n:idprefix:<br>\n:idseparator: -<br>\n:experimental:<br>\n// Aliases<br>\nifdef::env-github[]<br>\n:note-caption: ℹ️<br>\n:icon-check: ✔️<br>\n:icon-edit: ✏️<br>\nendif::[]<br>\nifndef::env-github[]<br>\n:icons: font<br>\n:icon-check: icon:check[]<br>\n:icon-edit: icon:pencil[fw]<br>\nendif::[]<br>\n// URIs<br>\n:uri-kubebox-download: <a href=\"https://github.com/astefanutti/kubebox/releases/download/v0.10.0\">https://github.com/astefanutti/kubebox/releases/download/v0.10.0</a><br>\n:uri-kubebox-twitter: <a href=\"https://twitter.com/kubebox\" rel=\"nofollow\">https://twitter.com/kubebox</a><br>\n:uri-kube-apiserver: <a href=\"https://kubernetes.io/docs/admin/kube-apiserver/\" rel=\"nofollow\">https://kubernetes.io/docs/admin/kube-apiserver/</a><br>\n:uri-ingress-controllers: <a href=\"https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-controllers\" rel=\"nofollow\">https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-controllers</a><br>\n:uri-service-account: <a href=\"https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\" rel=\"nofollow\">https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/</a><br>\n:uri-xterm-js: <a href=\"https://github.com/xtermjs/xterm.js\">https://github.com/xtermjs/xterm.js</a><br>\n:uri-cadvisor: <a href=\"https://github.com/google/cadvisor\">https://github.com/google/cadvisor</a></p>\n<p dir=\"auto\">{description}</p>\n<p dir=\"auto\">// image::./docs/kubebox.png[kubebox, align=\"center\"]<br>\n++++</p>\n<p align=\"center\" dir=\"auto\">\n  <a href=\"https://astefanutti.github.io/kubebox/kubebox.png\" rel=\"nofollow\">\n    <img align=\"center\" src=\"https://camo.githubusercontent.com/c1c116929f7d84a144fa157874da1b5a0769116dbe6ac2087a371d0d4c1638eb/68747470733a2f2f6173746566616e757474692e6769746875622e696f2f6b756265626f782f6b756265626f782e706e67\" data-canonical-src=\"https://astefanutti.github.io/kubebox/kubebox.png\" style=\"max-width: 100%;\">\n  </a>\n</p>\n++++\n<p dir=\"auto\">=== Features</p>\n<ul class=\"contains-task-list\">\n<li class=\"task-list-item\"><input type=\"checkbox\" id=\"\" disabled=\"\" class=\"task-list-item-checkbox\" aria-label=\"Completed task\" checked=\"\"> Configuration from <em>kubeconfig</em> files (<code class=\"notranslate\">KUBECONFIG</code> environment variable or <code class=\"notranslate\">$HOME/.kube</code>)</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" id=\"\" disabled=\"\" class=\"task-list-item-checkbox\" aria-label=\"Completed task\" checked=\"\"> Switch contexts interactively</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" id=\"\" disabled=\"\" class=\"task-list-item-checkbox\" aria-label=\"Completed task\" checked=\"\"> &lt;&lt;authentication,Authentication support&gt;&gt; (bearer token, basic auth, private key / cert, OAuth, OpenID Connect, Amazon EKS, Google Kubernetes Engine, Digital Ocean)</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" id=\"\" disabled=\"\" class=\"task-list-item-checkbox\" aria-label=\"Completed task\" checked=\"\"> Namespace selection and pods list watching</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" id=\"\" disabled=\"\" class=\"task-list-item-checkbox\" aria-label=\"Completed task\" checked=\"\"> Container log scrolling / watching</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" id=\"\" disabled=\"\" class=\"task-list-item-checkbox\" aria-label=\"Completed task\" checked=\"\"> Container resources usage (memory, CPU, network, file system charts) footnote:[Requires {uri-cadvisor}[cAdvisor] to be deployed as a DaemonSet. See the &lt;&gt; section for more details.]</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" id=\"\" disabled=\"\" class=\"task-list-item-checkbox\" aria-label=\"Completed task\" checked=\"\"> Container remote exec terminal</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" id=\"\" disabled=\"\" class=\"task-list-item-checkbox\" aria-label=\"Completed task\" checked=\"\"> Cluster, namespace, pod events</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" id=\"\" disabled=\"\" class=\"task-list-item-checkbox\" aria-label=\"Incomplete task\"> Object configuration editor and CRUD operations</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" id=\"\" disabled=\"\" class=\"task-list-item-checkbox\" aria-label=\"Incomplete task\"> Cluster and nodes views / monitoring</li>\n</ul>\n<p dir=\"auto\">See the &lt;&gt; section for some examples, and follow image:<a href=\"https://img.shields.io/badge/%40kubebox-00ACEE.svg?&amp;logo=twitter&amp;colorA=555&amp;logoColor=fff%5Blink=%7Buri-kubebox-twitter%7D%5D\" rel=\"nofollow\">https://img.shields.io/badge/%40kubebox-00ACEE.svg?&amp;logo=twitter&amp;colorA=555&amp;logoColor=fff[link={uri-kubebox-twitter}]</a> for some updates.</p>\n<p dir=\"auto\">== Run</p>\n<p dir=\"auto\">The following alternatives are available for you to use Kubebox, depending on your preferences and constraints:</p>\n<p dir=\"auto\">=== Executable</p>\n<p dir=\"auto\">Download the Kubebox standalone executable for your OS:</p>\n<h2 dir=\"auto\">[source,shell,subs=attributes+]</h2>\n<h1 dir=\"auto\">Linux (x86_64)</h1>\n<p dir=\"auto\">$ curl -Lo kubebox {uri-kubebox-download}/kubebox-linux &amp;&amp; chmod +x kubebox</p>\n<h1 dir=\"auto\">Linux (ARMv7)</h1>\n<p dir=\"auto\">$ curl -Lo kubebox {uri-kubebox-download}/kubebox-linux-arm &amp;&amp; chmod +x kubebox</p>\n<h1 dir=\"auto\">OSX</h1>\n<p dir=\"auto\">$ curl -Lo kubebox {uri-kubebox-download}/kubebox-macos &amp;&amp; chmod +x kubebox</p>\n<h1 dir=\"auto\">Windows</h1>\n<h2 dir=\"auto\">$ curl -Lo kubebox.exe {uri-kubebox-download}/kubebox-windows.exe</h2>\n<p dir=\"auto\">Then run:</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$ ./kubebox\"><pre class=\"notranslate\">$ ./kubebox</pre></div>\n<p dir=\"auto\">=== Server</p>\n<p dir=\"auto\">Kubebox can be served from a service hosted in your Kubernetes cluster.<br>\nTerminal emulation is provided by {uri-xterm-js}[Xterm.js] and the communication with the Kubernetes master API is proxied by the server.</p>\n<p dir=\"auto\">To deploy the server in your Kubernetes cluster, run:</p>\n<div class=\"highlight highlight-text-shell-session notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$ kubectl apply -f https://raw.github.com/astefanutti/kubebox/master/kubernetes.yaml\"><pre class=\"notranslate\">$ <span class=\"pl-s1\">kubectl apply -f https://raw.github.com/astefanutti/kubebox/master/kubernetes.yaml</span></pre></div>\n<p dir=\"auto\">To shut down the server and clean-up resources, run:</p>\n<div class=\"highlight highlight-text-shell-session notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$ kubectl delete namespace kubebox\"><pre class=\"notranslate\">$ <span class=\"pl-s1\">kubectl delete namespace kubebox</span></pre></div>\n<p dir=\"auto\">For the Ingress resource to work, the cluster must have an Ingress controller running.<br>\nSee {uri-ingress-controllers}[Ingress controllers] for more information.</p>\n<p dir=\"auto\">Alternatively, to deploy the server in your OpenShift cluster, run:</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$ oc new-app -f https://raw.github.com/astefanutti/kubebox/master/openshift.yaml\"><pre class=\"notranslate\">$ oc new-app -f https://raw.github.com/astefanutti/kubebox/master/openshift.yaml</pre></div>\n<p dir=\"auto\">=== Kubectl</p>\n<p dir=\"auto\">You can run Kubebox as an <em>in-cluster</em> client with <code class=\"notranslate\">kubectl</code>, e.g.:</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$ kubectl run kubebox -it --rm --env=&quot;TERM=xterm&quot; --image=astefanutti/kubebox --restart=Never\"><pre class=\"notranslate\">$ kubectl run kubebox -it --rm --env=<span class=\"pl-s\"><span class=\"pl-pds\">\"</span>TERM=xterm<span class=\"pl-pds\">\"</span></span> --image=astefanutti/kubebox --restart=Never</pre></div>\n<p dir=\"auto\">If RBAC is enabled, you'll have to use the <code class=\"notranslate\">--serviceaccount</code> option and reference a service account with sufficient permissions.</p>\n<p dir=\"auto\">=== Docker</p>\n<p dir=\"auto\">You can run Kubebox using Docker, e.g.:</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$ docker run -it --rm astefanutti/kubebox\"><pre class=\"notranslate\">$ docker run -it --rm astefanutti/kubebox</pre></div>\n<p dir=\"auto\">You may want to mount your home directory so that Kubebox can rely on the <code class=\"notranslate\">~/.kube/config</code> file, e.g.:</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$ docker run -it --rm -v ~/.kube/:/home/node/.kube/:ro astefanutti/kubebox\"><pre class=\"notranslate\">$ docker run -it --rm -v <span class=\"pl-k\">~</span>/.kube/:/home/node/.kube/:ro astefanutti/kubebox</pre></div>\n<p dir=\"auto\">=== Online</p>\n<p dir=\"auto\">Kubebox is available online at <a href=\"https://astefanutti.github.com/kubebox\">https://astefanutti.github.com/kubebox</a>.<br>\nNote that it requires this address to match the allowed origins for CORS by the API server.<br>\nThis can be achived with the {uri-kube-apiserver}[Kubernetes API server CLI], e.g.:</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$ kube-apiserver --cors-allowed-origins .*\"><pre class=\"notranslate\">$ kube-apiserver --cors-allowed-origins .<span class=\"pl-k\">*</span></pre></div>\n<p dir=\"auto\">== Authentication</p>\n<p dir=\"auto\">We try to support the various authentication strategies supported by <code class=\"notranslate\">kubectl</code>, in order to provide seamless integration with your local setup. Here are the different authentication strategies we support, depending on how you're using Kubebox:</p>\n<p dir=\"auto\">[cols=\"&lt;,^,^,^\",options=\"header\"]<br>\n|===<br>\n||Executable|Docker|Online</p>\n<p dir=\"auto\">|OpenID Connect<br>\n|{icon-check}<br>\n|{icon-check}<br>\n|{icon-check}footnote:[Custom IDP certificate authority files are not supported in Web versions.]</p>\n<p dir=\"auto\">|Amazon EKS|<br>\n{icon-check}<br>\n|<br>\n|</p>\n<p dir=\"auto\">|Digital Ocean<br>\n|{icon-check}<br>\n|<br>\n|</p>\n<p dir=\"auto\">|Google Kubernetes Engine|<br>\n{icon-check}<br>\n|<br>\n|<br>\n|===</p>\n<p dir=\"auto\">If the mode you're using isn't supported, you can refresh the authentication token/certs manually and update your <em>kubeconfig</em> file accordingly.</p>\n<p dir=\"auto\">== cAdvisor</p>\n<p dir=\"auto\">Kubebox relies on {uri-cadvisor}[cAdvisor] to retrieve the resource usage metrics.<br>\nBefore version 0.8.0, Kubebox used to access the cAdvisor endpoints, that are embedded in the <em>Kubelet</em>. However, these endpoints are being deprecated, and will eventually be removed, as discussed in <a href=\"https://github.com/kubernetes/kubernetes/issues/68522%5Bkubernetes#68522%5D\" data-hovercard-type=\"issue\" data-hovercard-url=\"/kubernetes/kubernetes/issues/68522/hovercard\">https://github.com/kubernetes/kubernetes/issues/68522[kubernetes#68522]</a>.</p>\n<p dir=\"auto\">Starting version 0.8.0, Kubebox expects cAdvisor to be deployed as a <a href=\"https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/%5BDaemonSet%5D\" rel=\"nofollow\">https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/[DaemonSet]</a>.<br>\nThis can be achieved with:</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$ kubectl apply -f https://raw.githubusercontent.com/astefanutti/kubebox/master/cadvisor.yaml\"><pre class=\"notranslate\">$ kubectl apply -f https://raw.githubusercontent.com/astefanutti/kubebox/master/cadvisor.yaml</pre></div>\n<p dir=\"auto\">It's recommended to use the provided <code class=\"notranslate\">cadvisor.yaml</code> file, that's tested to work with Kubebox.<br>\nHowever, the DaemonSet example, from the {uri-cadvisor}[cAdvisor] project, should also work just fine.<br>\nNote that the cAdvisor containers must run with a <em>privileged</em> security context, so that they can access the container runtime on each node.</p>\n<p dir=\"auto\">You can change the default <code class=\"notranslate\">--storage_duration</code> and <code class=\"notranslate\">--housekeeping_interval</code> options, added to the cAdvisor container arguments declared in the <code class=\"notranslate\">cadvisor.yaml</code> file, to adjust the duration of the storage moving window (default to <code class=\"notranslate\">5m0s</code>), and the sampling period (default to <code class=\"notranslate\">10s</code>) respectively.<br>\nYou may also have to provide the path of your cluster container runtime socket, in case it's not following the usual convention.</p>\n<p dir=\"auto\">== Hotkeys</p>\n<p dir=\"auto\">[cols=\"1v,2v\"]<br>\n|===<br>\n|Keybinding |Description</p>\n<p dir=\"auto\">2+^.e|General</p>\n<p dir=\"auto\">|kbd:[l], kbd:[Ctrl+l]<br>\n|Login</p>\n<p dir=\"auto\">|kbd:[n]<br>\n|Change current namespace</p>\n<p dir=\"auto\">|[kbd:[Shift]+]kbd:[←], kbd:[→] +<br>\n[kbd:[Alt]+]kbd:[1], ..., kbd:[9]<br>\n|Navigate screens +<br>\n(use kbd:[Shift] or kbd:[Alt] inside exec terminal)</p>\n<p dir=\"auto\">|kbd:[Tab], kbd:[Shift+Tab]<br>\n|Change focus within the active screen</p>\n<p dir=\"auto\">|kbd:[↑], kbd:[↓]<br>\n|Navigate list / form / log</p>\n<p dir=\"auto\">|kbd:[PgUp], kbd:[PgDn]<br>\n|Move one page up / down</p>\n<p dir=\"auto\">|kbd:[Enter]<br>\n|Select item / submit form</p>\n<p dir=\"auto\">|kbd:[Esc]<br>\n|Close modal window / cancel form</p>\n<p dir=\"auto\">|kbd:[Ctrl+z]<br>\n|Close current screen</p>\n<p dir=\"auto\">|kbd:[q], kbd:[Ctrl+q]<br>\n|Exit footnote:[Not available in Web versions.]</p>\n<p dir=\"auto\">2+^.e|Login</p>\n<p dir=\"auto\">|kbd:[←], kbd:[→]<br>\n|Navigate Kube configurations</p>\n<p dir=\"auto\">2+^.e|Pods</p>\n<p dir=\"auto\">|kbd:[Enter]<br>\n|Select pod / cycle containers</p>\n<p dir=\"auto\">|kbd:[r]<br>\n|Remote shell into container</p>\n<p dir=\"auto\">|kbd:[m]<br>\n|Memory usage</p>\n<p dir=\"auto\">|kbd:[c]<br>\n|CPU usage</p>\n<p dir=\"auto\">|kbd:[t]<br>\n|Network usage</p>\n<p dir=\"auto\">|kbd:[f]<br>\n|File system usage</p>\n<p dir=\"auto\">|kbd:[e]<br>\n|Pod events</p>\n<p dir=\"auto\">|kbd:[Shift+e]<br>\n|Namespace events</p>\n<p dir=\"auto\">|kbd:[Ctrl+e]<br>\n|Cluster events</p>\n<p dir=\"auto\">|===</p>\n<p dir=\"auto\">== FAQ</p>\n<ul dir=\"auto\">\n<li><em><em>Resources usage metrics are unavailable!</em></em></li>\n</ul>\n<ul dir=\"auto\">\n<li></li>\n</ul>\n<p dir=\"auto\">** Starting version 0.8.0, Kubebox expects {uri-cadvisor}[cAdvisor] to be deployed as a DaemonSet. See the &lt;&gt; section for more details;</p>\n<h2 dir=\"auto\">** The metrics are retrieved from the REST API, of the cAdvisor pod running on the same node as the container for which the metrics are being requested. That REST API is accessed via the API server proxy, which requires proper RBAC permission, e.g.:<br>\n+<br>\n[source,shell]</h2>\n<h1 dir=\"auto\">Permission to list the cAdvisor pods (selected using the <code class=\"notranslate\">spec.nodeName</code> field selector)</h1>\n<p dir=\"auto\">$ kubectl auth can-i list pods -n cadvisor<br>\nyes</p>\n<h1 dir=\"auto\">Permission to proxy the selected cAdvisor pod, to call its REST API</h1>\n<h2 dir=\"auto\">$ kubectl auth can-i get pod --subresource proxy -n cadvisor<br>\nyes</h2>\n<p dir=\"auto\">== Development</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$ git clone https://github.com/astefanutti/kubebox.git\n$ cd kubebox\n$ npm install\n$ node index.js\"><pre class=\"notranslate\">$ git clone https://github.com/astefanutti/kubebox.git\n$ <span class=\"pl-c1\">cd</span> kubebox\n$ npm install\n$ node index.js</pre></div>\n<p dir=\"auto\">== Screenshots</p>\n<p dir=\"auto\">Cluster events:<br>\n++++</p>\n<p align=\"center\" dir=\"auto\">\n  <a href=\"https://astefanutti.github.io/kubebox/events.png\" rel=\"nofollow\">\n    <img align=\"center\" src=\"https://camo.githubusercontent.com/f033fe28a311947bf637ec5795f93704e185d529b16f6741af9130e7ba60ae37/68747470733a2f2f6173746566616e757474692e6769746875622e696f2f6b756265626f782f6576656e74732e706e67\" data-canonical-src=\"https://astefanutti.github.io/kubebox/events.png\" style=\"max-width: 100%;\">\n  </a>\n</p>\n++++\n<p dir=\"auto\">Shell into a container:<br>\n++++</p>\n<p align=\"center\" dir=\"auto\">\n  <a href=\"https://astefanutti.github.io/kubebox/exec.png\" rel=\"nofollow\">\n    <img align=\"center\" src=\"https://camo.githubusercontent.com/2e0af0ff1905d5740b1463c794132a4395221be4c5ddae091a758fd1715dbd4d/68747470733a2f2f6173746566616e757474692e6769746875622e696f2f6b756265626f782f657865632e706e67\" data-canonical-src=\"https://astefanutti.github.io/kubebox/exec.png\" style=\"max-width: 100%;\">\n  </a>\n</p>\n++++\n<p dir=\"auto\">Terminal theme support:<br>\n++++</p>\n<p align=\"center\" dir=\"auto\">\n  <a href=\"https://astefanutti.github.io/kubebox/theme.png\" rel=\"nofollow\">\n    <img align=\"center\" src=\"https://camo.githubusercontent.com/2b06596d5d3530095f9b2647f6b8309bb7267702caff7d4c610fa9f22278a7b7/68747470733a2f2f6173746566616e757474692e6769746875622e696f2f6b756265626f782f7468656d652e706e67\" data-canonical-src=\"https://astefanutti.github.io/kubebox/theme.png\" style=\"max-width: 100%;\">\n  </a>\n</p>\n++++\n<p dir=\"auto\">Web browser version:<br>\n++++</p>\n<p align=\"center\" dir=\"auto\">\n  <a href=\"https://astefanutti.github.io/kubebox/web.png\" rel=\"nofollow\">\n    <img align=\"center\" src=\"https://camo.githubusercontent.com/4518dcb97a45365798e9f820788aa0dd6fa148f46420397f1fe653c6d07e38cf/68747470733a2f2f6173746566616e757474692e6769746875622e696f2f6b756265626f782f7765622e706e67\" data-canonical-src=\"https://astefanutti.github.io/kubebox/web.png\" style=\"max-width: 100%;\">\n  </a>\n</p>\n++++","updatedAt":"2025-05-21T16:07:24Z","upvoteCount":null,"author":{"login":"eryajf","avatarUrl":"https://avatars.githubusercontent.com/u/33259379?u=e4a4090a38ac2473aaed4ef9945233636776c6c3&v=4","url":"https://github.com/eryajf"},"category":null,"labels":{"edges":[{"node":{"name":"更多","color":"25B472"}},{"node":{"name":"K8S-Tools","color":"2d411a"}},{"node":{"name":"astefanutti","color":"a16717"}}]},"comments":{"edges":[]}}},"pageContext":{"number":307,"previous":{"title":"aquasecurity/kube-bench: 检查 Kubernetes 是否根据 CIS Kubernetes Benchmark 定义的安全最佳实践进行部署","number":306},"next":{"title":"kubeclipper/kubeclipper: KubeClipper 是一个轻量级的 Web 服务，为 Kubernetes 集群生命周期管理 提供友好的 Web 控制台 GUI、API 和 CLI 工具。","number":308}}},
    "staticQueryHashes": ["151096407","2861350382"]}