{
    "componentChunkName": "component---src-templates-issues-tsx",
    "path": "/issues/266",
    "result": {"data":{"issuesJson":{"id":"72a9be42-2f73-52df-9342-40e53b8f7210","title":"derailed/k9s: Kubernetes CLI，以风格化的方式管理您的集群！","number":266,"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/derailed/k9s\">derailed/k9s</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/3c0c55b4e19613a4e29e03310017fedee3eadb13ae9b6dc919f512a1b7c507c1/68747470733a2f2f76696577732e77686174696c656172656e65642e746f6461792f76696577732f6769746875622f64657261696c65642f6b39732e737667\" alt=\"views\" data-canonical-src=\"https://views.whatilearened.today/views/github/derailed/k9s.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/7aa13a758fe2fa023fbac45e381dc9fdf4885fc3f51ad0b5975106588244fc2f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f64657261696c65642f6b39733f636f6c6f723d663266303864266c6f676f3d556e64657274616c65266c6f676f436f6c6f723d656234363330\" alt=\"stars\" data-canonical-src=\"https://img.shields.io/github/stars/derailed/k9s?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/1e61da11b5ae16726af2228005871fc8594053f1d715f5e14297fea8896a3424/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f64657261696c65642f6b39733f636f6c6f723d626138366562266c6f676f3d48616e647368616b65266c6f676f436f6c6f723d656136616136\" alt=\"forks\" data-canonical-src=\"https://img.shields.io/github/forks/derailed/k9s?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/dffea7568e19c612b9b2df857d2a8b70c4428dc179b5e660d8caf9426b642a1a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f64657261696c65642f6b39733f6c6f676f3d64617461253341696d616765253246706e672533426261736536342532436956424f5277304b47676f414141414e53556845556741414144414141414177434159414141425841766d48414141414358424957584d41414173544141414c457745416d70775941414144336b6c45515652346e4f335953557a5555426748384a726f57567255474a66456d3773584e63534446784d544c327069347348456778654e526f77586770455742445552522532424e414e4f4b4f4b36366f6f4b4a4742586545475263574163455646475152484677516d483525324630774861655748493944554455354c356b6e6568644f62377a66652532423139636e434a47495243516945596c514237594a4979474c38616f73756c565a36695246516a69474b6b7564576735614c6c704f70704e586e665071773555304459524a6d56786a4367464633424c755a476d416f5655694b4541726d583744375553677351706f72674761336748664b34483663754262435644334771683141352532424c6745253242467749656e514d306a6f446f66714c6f48564e7742796d384370546e416d327a51713073676478624964515a556c416b7150415a3664676a303541446f59526f6f66792532466f5869726f376b3551586a4c6f70677a4b69514e6c4c4461716f4967754577426a7a7150355066446a45394479495879493633464d547751464d43567271774e61763451666f52673538514625324266724d485172454b3844546f434d714e4179574e4866786d54526f4c4f726d5352566747744466714345715a4f4851727a6f34706243557341333431365169364551394b476a6345465267484f724f4b6e5536574162396247455459656b4b7843766a546167394534706a653534446b3551503862624d4859762532464333756541654a6b50304f4778422532424a70426e4172595238455951516e6f4e31414e4661426e5050356c385372736559514c303641646b30464a5938484f5761424d6c6541486a683068506f73497a6c6f3876304125324633345a694f6548726130714b52504d5653493774762532423932747725324676687855654252713456454c674d376642714b354770526d6f514c584e7075625475367a6f4e52706754386e5051627138347764253246494375767978694b4871694e41664933774d367549684271476b4c696977414f734b44714f68743749747239567938536a52424557667941627225324668523142667056514664484a42253246423268683778376a36517077435665655951326b72554235436c636a3641326d3067576a25324244306d4c34397a573563517943484c4e37726a6c6d6d6174457958582532464372547a412532466f51785a6b576c39474a5443566f25324279546a3837253242346769504b6376307149486f344156344430565a727251493334706e70524d36357875652532467a417265453425324654253246536f676c664542794d7369517441546c4c3352414a355948725378365a44665337307337754d486842705225324659423573305057366f455270316236253246667252684b3353444c35546965364f515548516c5133735644752532427a50636b397657453973747225324236496a533967486d5750616861444a25324277434b364e494242587348423948796b587378774470686c436d416476706c6162554a4e6e5a504239342532464e7436784f6538587a4562503257684d335741673147756236744825324233513150673337365239713475716c6e6f36676448476a444f5139306562303141484d3672596975554a314f713472344656756a35765239427a4d3957674e764f7977446869495951467667626366774166774d764863615067425041253246447948476a50624e394138616d6562636477416444354e6633373574787165774e5552656f797677424958594c645170576c6877465771745061435044334173467541535636717171496c62304a766b564331464c39576b4c55556c55574b337a585a4c46432532423125324642726f46746f364f7358497545594a5034447a7a5732594656316f4a614141414141456c46546b5375516d4343\" alt=\"license\" data-canonical-src=\"https://img.shields.io/github/license/derailed/k9s?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/9a50e7134d0705172efc23bb6d47b6817e087eff5a0384864f778971485e158c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f64657261696c65642f6b39733f646973706c61795f74696d657374616d703d636f6d6d6974746572266c6f676f3d64617461253341696d616765253246706e672533426261736536342532436956424f5277304b47676f414141414e5355684555674141414234414141416543415941414141374d4b3669414141414358424957584d41414173544141414c457745416d7077594141414648556c45515652346e4c5658375539615678776d3236646c582532466468627825324232253246516e626b7655627264554151674a4a496655444e574454546d4f76314651554661504a346b7573725630314a7431734e70637453327533626f745a746d786439744a5346536f714b71494635625944464c436f76436c656673747a4a387758524c445a4c7a6e6b634f343535376e3364332532466e655a3472454f515a74315771462532423858467234253242664f4c4565326a6f59307a776638546f795a50766a45676b4c592532426b306d6d72584f36644b696e787a476b30666a5430782532425279723055716e6359637a4d317263347451253242497270324c4758646f344e4334567657715453373277716c632532427231334f527269364b6458646e624f484c6c776c7a4a70524b6e3657342532424b36706f4f434e6e494166486a253246253242776168495a4234764b6e715a6630714a704e49716c2532467638545530634e6c3572627963337730516e54703379324c54614a374d314e617844723266526e315370504736476961323174664533345463614f617931694d55564f5146624659714957536f31573854694156616e43306576584f4542375770313448466232327a453566714c4f433545524c515769644e614e49347545636339693768634a6c644868324e57725135674464624f6c7061756d49754c62326174415144506e7a3062384e6257636d785656524a33486d7870536377777a4f4a6d4b44524765384c6c435a444c4739673754496e5631516c376462586256316533675430574b697243466f6d6b5079767758466c5a474a4f6a563625324253743634757564445a4f55354555636f782532464d455144567674364d62634e3237593341797a687633737061557242365a3971724a534f3139657a6a387032704c426b4a792532426343484a7857493567573574636652527a31645531394766476b6f7539505a4f34736d52396a4746777065783444793362766e6d4b79706f74625531335669646a71595a68726a343972764d457425324625324659714c7a396430304e6a57253246637a67796f394f35317a7336614e6c6f354644747530445a675146686c47584a30644241446f4e6864367576703657686f617967374e394c564748386d443462253246486e667455516f4e4734764c51306769784d716c5725324234714f6a744e48446733723166365969525347785279375576714c62395534716b716e78504f4e7661356c447048723125324279794b524e4b57425a793565644d554842326d3572792532422532424551772532427a6766347a6f39253246306f634e3357527a4c4277344a2532424a7950574372716d4967475974554f735744346f785a46516f50556a4770564871493425324661666b51504336665a5165654d31253242764c7549516e6a754257514444437363726d485039656f4e5041744271664f6e5875614b25324268364a45624772732532427076764d6d78654962683836336162565065597953456f39464a48704e4d464a59253242503563575a6b6667374f3174537759436553514c54593345385130392532464256504a556c78516a7368543142736343593032723955445542667643484236367063665041336c794165336e6772332532463437584467614a7a736c7937787741364e5a746c555550437541487161536a5549502532427375653842525741432532464e6651374a5a505a35397330476a3756747049537a34685125324243706658474d4b685a63764c70554b7866574d386f68766637702532464f446a4842666356463849736b383267314648796b63564645253242555a414158343761452532464d6c34504f3530506e75683025324678346e6d637957507364774468427836436d6b4c562532466746446a594b784f4a4f4674623077517949684c39527943774b33414f664947703159464542686e4d4a634c525745624b644b516f55366e63545a6b494544696341792532463831645675454d3552775066657934784f7830496b25324649324e6e466b692532425761664f6f464959466367595a43797864376543556a626334416d46363566742532466b4d686b336f25324235686337734d4a79716a4a45477659466151464972375930775077384246415925324236253242766d6b3377367a7a5275444d6d5a5652736668385274413075455453443775434254364459514e36697665553066706b594c6a453671725672744f78654e4b553954484c5a4a396b4255324a427342685635416976422532466f4b61514e4b675043427744596149665a4334616454684f71463457454e56694c4a77566f586f62664c424b56773637414f6154734c6336355461564b32317651344c613939654b6359673576627873624f627a5451394e37554b4467554f3177446a6944494942736868357a746733396e514d4c535a4248344f7a424f55444551586d323036643366634c67737762585141345068634b336e6873775531427a3877765130395248472532466f597933656a6677424e6d746f59714c4130586741414141424a52553545726b4a676767253344253344266c6162656c3d557064617465644174\" alt=\"last-commit\" data-canonical-src=\"https://img.shields.io/github/last-commit/derailed/k9s?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/6b29ef9ab14ccc62c52434fa284353a638864d322965f281473c70d000b4d9e8/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f637265617465642d61742f64657261696c65642f6b39733f6c6f676f3d64617461253341696d616765253246706e672533426261736536342532436956424f5277304b47676f414141414e5355684555674141414234414141416543415941414141374d4b3669414141414358424957584d41414173544141414c457745416d7077594141414648556c45515652346e4c5658375539615678776d3236646c582532466468627825324232253246516e626b7655627264554151674a4a496655444e574454546d4f76314651554661504a346b7573725630314a7431734e70637453327533626f745a746d786439744a5346536f714b71494635625944464c436f76436c656673747a4a387758524c445a4c7a6e6b634f343535376e3364332532466e655a3472454f515a74315771462532423858467234253242664f4c4565326a6f59307a776638546f795a50766a45676b4c592532426b306d6d72584f36644b696e787a476b30666a5430782532425279723055716e6359637a4d317263347451253242497270324c4758646f344e4334567657715453373277716c632532427231334f527269364b6458646e624f484c6c776c7a4a70524b6e3657342532424b36706f4f434e6e494166486a253246253242776168495a4234764b6e715a6630714a704e49716c2532467638545530634e6c3572627963337730516e54703379324c54614a374d314e617844723266526e315370504736476961323174664533345463614f617931694d55564f5146624659714957536f31573854694156616e43306576584f4542375770313448466232327a453566714c4f433545524c515769644e614e49347545636339693768634a6c644868324e57725135674464624f6c7061756d49754c62326174415144506e7a3062384e6257636d785656524a33486d7870536377777a4f4a6d4b44524765384c6c435a444c4739673754496e5631516c376462586256316533675430574b697243466f6d6b5079767758466c5a474a4f6a563625324253743634757564445a4f55354555636f782532464d455144567674364d62634e3237593341797a687633737061557242365a3971724a534f3139657a6a387032704c426b4a792532426343484a7857493567573574636652527a31645531394766476b6f7539505a4f34736d52396a4746777065783444793362766e6d4b79706f74625531335669646a71595a68726a343972764d457425324625324659714c7a396430304e6a57253246637a67796f394f35317a7336614e6c6f354644747530445a675146686c47584a30644241446f4e6864367576703657686f617967374e394c564748386d443462253246486e667455516f4e4734764c51306769784d716c5725324234714f6a744e48446733723166365969525347785279375576714c62395534716b716e78504f4e7661356c447048723125324279794b524e4b57425a793565644d554842326d3572792532422532424551772532427a6766347a6f39253246306f634e3357527a4c4277344a2532424a7950574372716d4967475974554f735744346f785a46516f50556a4770564871493425324661666b51504336665a5165654d31253242764c7549516e6a754257514444437363726d485039656f4e5041744271664f6e5875614b25324268364a45624772732532427076764d6d78654962683836336162565065597953456f39464a48704e4d464a59253242503563575a6b6667374f3174537759436553514c54593345385130392532464256504a556c78516a7368543142736343593032723955445542667643484236367063665041336c794165336e6772332532463437584467614a7a736c7937787741364e5a746c555550437541487161536a5549502532427375653842525741432532464e6651374a5a505a35397330476a3756747049537a34685125324243706658474d4b685a63764c70554b7866574d386f68766637702532464f446a4842666356463849736b383267314648796b63564645253242555a414158343761452532464d6c34504f3530506e75683025324678346e6d637957507364774468427836436d6b4c562532466746446a594b784f4a4f4674623077517949684c39527943774b33414f664947703159464542686e4d4a634c525745624b644b516f55366e63545a6b494544696341792532463831645675454d3552775066657934784f7830496b25324649324e6e466b692532425761664f6f464959466367595a43797864376543556a626334416d46363566742532466b4d686b336f25324235686337734d4a79716a4a45477659466151464972375930775077384246415925324236253242766d6b3377367a7a5275444d6d5a5652736668385274413075455453443775434254364459514e36697665553066706b594c6a453671725672744f78654e4b553954484c5a4a396b4255324a427342685635416976422532466f4b61514e4b675043427744596149665a4334616454684f71463457454e56694c4a77566f586f62664c424b56773637414f6154734c6336355461564b32317651344c613939654b6359673576627873624f627a5451394e37554b4467554f3177446a6944494942736868357a746733396e514d4c535a4248344f7a424f55444551586d323036643366634c67737762585141345068634b336e6873775531427a3877765130395248472532466f597933656a6677424e6d746f59714c4130586741414141424a52553545726b4a676767253344253344266c6162656c3d437265617465644174\" alt=\"create-at\" data-canonical-src=\"https://img.shields.io/github/created-at/derailed/k9s?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\"><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"assets/k9s.png\"><img src=\"assets/k9s.png\" alt=\"k9s\" style=\"max-width: 100%;\"></a></p>\n<h2 dir=\"auto\">K9s - Kubernetes CLI To Manage Your Clusters In Style!</h2>\n<p dir=\"auto\">K9s provides a terminal UI to interact with your Kubernetes clusters.<br>\nThe aim of this project is to make it easier to navigate, observe and manage<br>\nyour applications in the wild. K9s continually watches Kubernetes<br>\nfor changes and offers subsequent commands to interact with your observed resources.</p>\n<hr>\n<h2 dir=\"auto\">Note...</h2>\n<p dir=\"auto\">K9s is not pimped out by a big corporation with deep pockets.<br>\nIt is a complex OSS project that demands a lot of my time to maintain and support.<br>\nK9s will always remain OSS and therefore free! That said, if you feel k9s makes your day to day Kubernetes journey a tad brighter, saves you time and makes you more productive, please consider <a href=\"https://github.com/sponsors/derailed\">sponsoring us!</a><br>\nYour donations will go a long way in keeping our servers lights on and beers in our fridge!</p>\n<p dir=\"auto\"><strong>Thank you!</strong></p>\n<hr>\n<p dir=\"auto\"><a href=\"https://goreportcard.com/report/github.com/derailed/k9s\" rel=\"nofollow\"><img src=\"https://camo.githubusercontent.com/5e89b70f4b5cd6fa14933c2b2ab55ed2b099ae0ac2350ce08450f34939d2c699/68747470733a2f2f676f7265706f7274636172642e636f6d2f62616467652f6769746875622e636f6d2f64657261696c65642f6b39733f\" alt=\"Go Report Card\" data-canonical-src=\"https://goreportcard.com/badge/github.com/derailed/k9s?\" style=\"max-width: 100%;\"></a><br>\n<a href=\"https://golangci.com/r/github.com/derailed/k9s\" rel=\"nofollow\"><img src=\"https://github.com/golangci/golangci-web/blob/master/src/assets/images/badge_a_plus_flat.svg\" alt=\"golangci badge\" style=\"max-width: 100%;\"></a><br>\n<a href=\"https://codebeat.co/projects/github-com-derailed-k9s-master\" rel=\"nofollow\"><img src=\"https://camo.githubusercontent.com/2cfa01f7c0dbd3e199d5e21fc78db3f6f3e31584ffae308aeaf88af5bf35c8e8/68747470733a2f2f636f6465626561742e636f2f6261646765732f38396535613830652d646665382d343432362d616366362d366265373831653061313265\" alt=\"codebeat badge\" data-canonical-src=\"https://codebeat.co/badges/89e5a80e-dfe8-4426-acf6-6be781e0a12e\" style=\"max-width: 100%;\"></a><br>\n<a href=\"https://travis-ci.com/derailed/k9s\" rel=\"nofollow\"><img src=\"https://camo.githubusercontent.com/0695dacc6bfff6f85d7448899edd8c1360029b269c95b7df3c4826ede6d0e440/68747470733a2f2f6170692e7472617669732d63692e636f6d2f64657261696c65642f6b39732e7376673f6272616e63683d6d6173746572\" alt=\"Build Status\" data-canonical-src=\"https://api.travis-ci.com/derailed/k9s.svg?branch=master\" style=\"max-width: 100%;\"></a><br>\n<a href=\"https://quay.io/repository/derailed/k9s\" rel=\"nofollow\"><img src=\"https://camo.githubusercontent.com/d1bdfa3ac65e252212b1e4566b2cf92003663dc08ecb941850325f0d6544be94/68747470733a2f2f717561792e696f2f7265706f7369746f72792f64657261696c65642f6b39732f737461747573\" alt=\"Docker Repository on Quay\" title=\"Docker Repository on Quay\" data-canonical-src=\"https://quay.io/repository/derailed/k9s/status\" style=\"max-width: 100%;\"></a><br>\n<a href=\"https://github.com/derailed/k9s/releases\"><img src=\"https://camo.githubusercontent.com/8dea48f09d5aff4f0185fdd2c76cbf63fc9dac927bb4d9bb14f52c6b113e1ab7/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652d7072652f64657261696c65642f6b39732e737667\" alt=\"release\" data-canonical-src=\"https://img.shields.io/github/release-pre/derailed/k9s.svg\" style=\"max-width: 100%;\"></a><br>\n<a href=\"https://github.com/mum4k/termdash/blob/master/LICENSE\"><img src=\"https://camo.githubusercontent.com/859a1a0bc85ce8bbd7a730a274fec5c9e77c4726ffdf6aa762a78685e26033a4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d417061636865253230322e302d626c75652e737667\" alt=\"License\" data-canonical-src=\"https://img.shields.io/badge/License-Apache%202.0-blue.svg\" style=\"max-width: 100%;\"></a><br>\n<a href=\"https://github.com/derailed/k9s/releases\"><img src=\"https://camo.githubusercontent.com/3a6cbc0153357b958ccf203fdb8df00c1131e93d35e028ae6ebadc587f5d35f1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f64657261696c65642f6b39732f746f74616c2e737667\" alt=\"Releases\" data-canonical-src=\"https://img.shields.io/github/downloads/derailed/k9s/total.svg\" style=\"max-width: 100%;\"></a></p>\n<hr>\n<h2 dir=\"auto\">Screenshots</h2>\n<ol dir=\"auto\">\n<li>Pods<br>\n<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"assets/screen_po.png\"><img src=\"assets/screen_po.png\" style=\"max-width: 100%;\"></a></li>\n<li>Logs<br>\n<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"assets/screen_logs.png\"><img src=\"assets/screen_logs.png\" style=\"max-width: 100%;\"></a></li>\n<li>Deployments<br>\n<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"assets/screen_dp.png\"><img src=\"assets/screen_dp.png\" style=\"max-width: 100%;\"></a></li>\n</ol>\n<hr>\n<h2 dir=\"auto\">Demo Videos/Recordings</h2>\n<ul dir=\"auto\">\n<li><a href=\"https://youtu.be/iy6RDozAM4A\" rel=\"nofollow\">K9s v0.40.0 -Column Blow- Sneak peek</a></li>\n<li><a href=\"https://youtu.be/X3444KfjguE\" rel=\"nofollow\">K9s v0.31.0 Configs+Sneak peek</a></li>\n<li><a href=\"https://youtu.be/mVBc1XneRJ4\" rel=\"nofollow\">K9s v0.30.0 Sneak peek</a></li>\n<li><a href=\"https://youtu.be/ULkl0MsaidU\" rel=\"nofollow\">Vulnerability Scans</a></li>\n<li><a href=\"https://youtu.be/oiU3wmoAkBo\" rel=\"nofollow\">K9s v0.29.0</a></li>\n<li><a href=\"https://youtu.be/wG8KCwDAhnw\" rel=\"nofollow\">K9s v0.21.3</a></li>\n<li><a href=\"https://youtu.be/kj-WverKZ24\" rel=\"nofollow\">K9s v0.19.X</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=zMnD5e53yRw\" rel=\"nofollow\">K9s v0.18.0</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=7S33CNLAofk&amp;feature=youtu.be\" rel=\"nofollow\">K9s v0.17.0</a></li>\n<li><a href=\"https://asciinema.org/a/UbXKPal6IWpTaVAjBBFmizcGN\" rel=\"nofollow\">K9s Pulses</a></li>\n<li><a href=\"https://youtu.be/7Fx4XQ2ftpM\" rel=\"nofollow\">K9s v0.15.1</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=qaeR2iK7U0o&amp;t=15s\" rel=\"nofollow\">K9s v0.13.0</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=bxKfqumjW4I\" rel=\"nofollow\">K9s v0.9.0</a></li>\n<li><a href=\"https://youtu.be/83jYehwlql8\" rel=\"nofollow\">K9s v0.7.0 Features</a></li>\n<li><a href=\"https://youtu.be/k7zseUhaXeU\" rel=\"nofollow\">K9s v0 Demo</a></li>\n</ul>\n<hr>\n<h2 dir=\"auto\">Documentation</h2>\n<p dir=\"auto\">Please refer to our <a href=\"https://k9scli.io\" rel=\"nofollow\">K9s documentation</a> site for installation, usage, customization and tips.</p>\n<hr>\n<h2 dir=\"auto\">Slack Channel</h2>\n<p dir=\"auto\">Wanna discuss K9s features with your fellow <code class=\"notranslate\">K9sers</code> or simply show your support for this tool?</p>\n<ul dir=\"auto\">\n<li>Channel: <a href=\"https://k9sers.slack.com/\" rel=\"nofollow\">K9sersSlack</a></li>\n<li>Invite: <a href=\"https://join.slack.com/t/k9sers/shared_invite/zt-3360a389v-ElLHrb0Dp1kAXqYUItSAFA\" rel=\"nofollow\">K9slackers Invite</a></li>\n</ul>\n<hr>\n<h2 dir=\"auto\">🥳 A Word From Our Rhodium Sponsors...</h2>\n<p dir=\"auto\">Below are organizations that have opted to show their support and sponsor K9s.</p>\n<br>\n<a href=\"https://panfactum.com\" rel=\"nofollow\"><img src=\"assets/sponsors/panfactum.png\" alt=\"panfactum\" style=\"max-width: 100%;\"></a>\n<br>\n<br>\n<hr>\n<h2 dir=\"auto\">Installation</h2>\n<p dir=\"auto\">K9s is available on Linux, macOS and Windows platforms.<br>\nBinaries for Linux, Windows and Mac are available as tarballs in the <a href=\"https://github.com/derailed/k9s/releases\">release page</a>.</p>\n<ul dir=\"auto\">\n<li>\n<p dir=\"auto\">Via <a href=\"https://brew.sh/\" rel=\"nofollow\">Homebrew</a> for macOS or Linux</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"brew install derailed/k9s/k9s\"><pre class=\"notranslate\">brew install derailed/k9s/k9s</pre></div>\n</li>\n<li>\n<p dir=\"auto\">Via <a href=\"https://www.macports.org\" rel=\"nofollow\">MacPorts</a></p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"sudo port install k9s\"><pre class=\"notranslate\">sudo port install k9s</pre></div>\n</li>\n<li>\n<p dir=\"auto\">Via <a href=\"https://snapcraft.io/k9s\" rel=\"nofollow\">snap</a> for Linux</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"snap install k9s --devmode\"><pre class=\"notranslate\">snap install k9s --devmode</pre></div>\n</li>\n<li>\n<p dir=\"auto\">On Arch Linux</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"pacman -S k9s\"><pre class=\"notranslate\">pacman -S k9s</pre></div>\n</li>\n<li>\n<p dir=\"auto\">On OpenSUSE Linux distribution</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"zypper install k9s\"><pre class=\"notranslate\">zypper install k9s</pre></div>\n</li>\n<li>\n<p dir=\"auto\">On FreeBSD</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"pkg install k9s\"><pre class=\"notranslate\">pkg install k9s</pre></div>\n</li>\n<li>\n<p dir=\"auto\">On Ubuntu</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"wget https://github.com/derailed/k9s/releases/latest/download/k9s_linux_amd64.deb &amp;&amp; apt install ./k9s_linux_amd64.deb &amp;&amp; rm k9s_linux_amd64.deb\"><pre class=\"notranslate\">wget https://github.com/derailed/k9s/releases/latest/download/k9s_linux_amd64.deb <span class=\"pl-k\">&amp;&amp;</span> apt install ./k9s_linux_amd64.deb <span class=\"pl-k\">&amp;&amp;</span> rm k9s_linux_amd64.deb</pre></div>\n</li>\n<li>\n<p dir=\"auto\">Via <a href=\"https://github.com/microsoft/winget-cli\">Winget</a> for Windows</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"winget install k9s\"><pre class=\"notranslate\">winget install k9s</pre></div>\n</li>\n<li>\n<p dir=\"auto\">Via <a href=\"https://scoop.sh\" rel=\"nofollow\">Scoop</a> for Windows</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"scoop install k9s\"><pre class=\"notranslate\">scoop install k9s</pre></div>\n</li>\n<li>\n<p dir=\"auto\">Via <a href=\"https://chocolatey.org/packages/k9s\" rel=\"nofollow\">Chocolatey</a> for Windows</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"choco install k9s\"><pre class=\"notranslate\">choco install k9s</pre></div>\n</li>\n<li>\n<p dir=\"auto\">Via a GO install</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"# NOTE: The dev version will be in effect!\ngo install github.com/derailed/k9s@latest\"><pre class=\"notranslate\"><span class=\"pl-c\"><span class=\"pl-c\">#</span> NOTE: The dev version will be in effect!</span>\ngo install github.com/derailed/k9s@latest</pre></div>\n</li>\n<li>\n<p dir=\"auto\">Via <a href=\"https://webinstall.dev\" rel=\"nofollow\">Webi</a> for Linux and macOS</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"curl -sS https://webinstall.dev/k9s | bash\"><pre class=\"notranslate\">curl -sS https://webinstall.dev/k9s <span class=\"pl-k\">|</span> bash</pre></div>\n</li>\n<li>\n<p dir=\"auto\">Via <a href=\"https://pkgx.dev/pkgs/k9scli.io/\" rel=\"nofollow\">pkgx</a> for Linux and macOS</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"pkgx k9s\"><pre class=\"notranslate\">pkgx k9s</pre></div>\n</li>\n<li>\n<p dir=\"auto\">Via <a href=\"https://webinstall.dev\" rel=\"nofollow\">Webi</a> for Windows</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"curl.exe -A MS https://webinstall.dev/k9s | powershell\"><pre class=\"notranslate\">curl.exe -A MS https://webinstall.dev/k9s <span class=\"pl-k\">|</span> powershell</pre></div>\n</li>\n<li>\n<p dir=\"auto\">As a <a href=\"https://docs.docker.com/desktop/extensions/\" rel=\"nofollow\">Docker Desktop Extension</a> (for the Docker Desktop built in Kubernetes Server)</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"docker extension install spurin/k9s-dd-extension:latest\"><pre class=\"notranslate\">docker extension install spurin/k9s-dd-extension:latest</pre></div>\n</li>\n</ul>\n<hr>\n<h2 dir=\"auto\">Building From Source</h2>\n<p dir=\"auto\">K9s is currently using GO v1.23.X or above.<br>\nIn order to build K9s from source you must:</p>\n<ol dir=\"auto\">\n<li>\n<p dir=\"auto\">Clone the repo</p>\n</li>\n<li>\n<p dir=\"auto\">Build and run the executable</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"make build &amp;&amp; ./execs/k9s\"><pre class=\"notranslate\">make build <span class=\"pl-k\">&amp;&amp;</span> ./execs/k9s</pre></div>\n</li>\n</ol>\n<hr>\n<h2 dir=\"auto\">Running with Docker</h2>\n<h3 dir=\"auto\">Running the official Docker image</h3>\n<p dir=\"auto\">You can run k9s as a Docker container by mounting your <code class=\"notranslate\">KUBECONFIG</code>:</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9s\"><pre class=\"notranslate\">docker run --rm -it -v <span class=\"pl-smi\">$KUBECONFIG</span>:/root/.kube/config quay.io/derailed/k9s</pre></div>\n<p dir=\"auto\">For default path it would be:</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"docker run --rm -it -v ~/.kube/config:/root/.kube/config quay.io/derailed/k9s\"><pre class=\"notranslate\">docker run --rm -it -v <span class=\"pl-k\">~</span>/.kube/config:/root/.kube/config quay.io/derailed/k9s</pre></div>\n<h3 dir=\"auto\">Building your own Docker image</h3>\n<p dir=\"auto\">You can build your own Docker image of k9s from the <a href=\"Dockerfile\">Dockerfile</a> with the following:</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"docker build -t k9s-docker:v0.0.1 .\"><pre class=\"notranslate\">docker build -t k9s-docker:v0.0.1 <span class=\"pl-c1\">.</span></pre></div>\n<p dir=\"auto\">You can get the latest stable <code class=\"notranslate\">kubectl</code> version and pass it to the <code class=\"notranslate\">docker build</code> command with the <code class=\"notranslate\">--build-arg</code> option.<br>\nYou can use the <code class=\"notranslate\">--build-arg</code> option to pass any valid <code class=\"notranslate\">kubectl</code> version (like <code class=\"notranslate\">v1.18.0</code> or <code class=\"notranslate\">v1.19.1</code>).</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"KUBECTL_VERSION=$(make kubectl-stable-version 2&gt;/dev/null)\ndocker build --build-arg KUBECTL_VERSION=${KUBECTL_VERSION} -t k9s-docker:0.1 .\"><pre class=\"notranslate\">KUBECTL_VERSION=<span class=\"pl-s\"><span class=\"pl-pds\">$(</span>make kubectl-stable-version <span class=\"pl-k\">2&gt;</span>/dev/null<span class=\"pl-pds\">)</span></span>\ndocker build --build-arg KUBECTL_VERSION=<span class=\"pl-smi\">${KUBECTL_VERSION}</span> -t k9s-docker:0.1 <span class=\"pl-c1\">.</span></pre></div>\n<p dir=\"auto\">Run your container:</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"docker run --rm -it -v ~/.kube/config:/root/.kube/config k9s-docker:0.1\"><pre class=\"notranslate\">docker run --rm -it -v <span class=\"pl-k\">~</span>/.kube/config:/root/.kube/config k9s-docker:0.1</pre></div>\n<hr>\n<h2 dir=\"auto\">PreFlight Checks</h2>\n<ul dir=\"auto\">\n<li>\n<p dir=\"auto\">K9s uses 256 colors terminal mode. On `Nix system make sure TERM is set accordingly.</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"export TERM=xterm-256color\"><pre class=\"notranslate\"><span class=\"pl-k\">export</span> TERM=xterm-256color</pre></div>\n</li>\n<li>\n<p dir=\"auto\">In order to issue resource edit commands make sure your EDITOR and KUBE_EDITOR env vars are set.</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"# Kubectl edit command will use this env var.\nexport KUBE_EDITOR=my_fav_editor\"><pre class=\"notranslate\"><span class=\"pl-c\"><span class=\"pl-c\">#</span> Kubectl edit command will use this env var.</span>\n<span class=\"pl-k\">export</span> KUBE_EDITOR=my_fav_editor</pre></div>\n</li>\n<li>\n<p dir=\"auto\">K9s prefers recent kubernetes versions ie 1.28+</p>\n</li>\n</ul>\n<hr>\n<h2 dir=\"auto\">K8S Compatibility Matrix</h2>\n<markdown-accessiblity-table><table role=\"table\">\n<thead>\n<tr>\n<th>k9s</th>\n<th>k8s client</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>&gt;= v0.27.0</td>\n<td>1.26.1</td>\n</tr>\n<tr>\n<td>v0.26.7 - v0.26.6</td>\n<td>1.25.3</td>\n</tr>\n<tr>\n<td>v0.26.5 - v0.26.4</td>\n<td>1.25.1</td>\n</tr>\n<tr>\n<td>v0.26.3 - v0.26.1</td>\n<td>1.24.3</td>\n</tr>\n<tr>\n<td>v0.26.0 - v0.25.19</td>\n<td>1.24.2</td>\n</tr>\n<tr>\n<td>v0.25.18 - v0.25.3</td>\n<td>1.22.3</td>\n</tr>\n<tr>\n<td>v0.25.2 - v0.25.0</td>\n<td>1.22.0</td>\n</tr>\n<tr>\n<td>&lt;= v0.24</td>\n<td>1.21.3</td>\n</tr>\n</tbody>\n</table></markdown-accessiblity-table>\n<hr>\n<h2 dir=\"auto\">The Command Line</h2>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"# List current version\nk9s version\n\n# To get info about K9s runtime (logs, configs, etc..)\nk9s info\n\n# List all available CLI options\nk9s help\n\n# To run K9s in a given namespace\nk9s -n mycoolns\n\n# Start K9s in an existing KubeConfig context\nk9s --context coolCtx\n\n# Start K9s in readonly mode - with all cluster modification commands disabled\nk9s --readonly\"><pre class=\"notranslate\"><span class=\"pl-c\"><span class=\"pl-c\">#</span> List current version</span>\nk9s version\n\n<span class=\"pl-c\"><span class=\"pl-c\">#</span> To get info about K9s runtime (logs, configs, etc..)</span>\nk9s info\n\n<span class=\"pl-c\"><span class=\"pl-c\">#</span> List all available CLI options</span>\nk9s <span class=\"pl-c1\">help</span>\n\n<span class=\"pl-c\"><span class=\"pl-c\">#</span> To run K9s in a given namespace</span>\nk9s -n mycoolns\n\n<span class=\"pl-c\"><span class=\"pl-c\">#</span> Start K9s in an existing KubeConfig context</span>\nk9s --context coolCtx\n\n<span class=\"pl-c\"><span class=\"pl-c\">#</span> Start K9s in readonly mode - with all cluster modification commands disabled</span>\nk9s --readonly</pre></div>\n<h2 dir=\"auto\">Logs And Debug Logs</h2>\n<p dir=\"auto\">Given the nature of the ui k9s does produce logs to a specific location.<br>\nTo view the logs and turn on debug mode, use the following commands:</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"# Find out where the logs are stored\nk9s info\"><pre class=\"notranslate\"><span class=\"pl-c\"><span class=\"pl-c\">#</span> Find out where the logs are stored</span>\nk9s info</pre></div>\n<div class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\" ____  __.________\n|    |/ _/   __   \\______\n|      &lt; \\____    /  ___/\n|    |  \\   /    /\\___ \\\n|____|__ \\ /____//____  &gt;\n        \\/            \\/\n\nVersion:           vX.Y.Z\nConfig:            /Users/fernand/.config/k9s/config.yaml\nLogs:              /Users/fernand/.local/state/k9s/k9s.log\nDumps dir:         /Users/fernand/.local/state/k9s/screen-dumps\nBenchmarks dir:    /Users/fernand/.local/state/k9s/benchmarks\nSkins dir:         /Users/fernand/.local/share/k9s/skins\nContexts dir:      /Users/fernand/.local/share/k9s/clusters\nCustom views file: /Users/fernand/.local/share/k9s/views.yaml\nPlugins file:      /Users/fernand/.local/share/k9s/plugins.yaml\nHotkeys file:      /Users/fernand/.local/share/k9s/hotkeys.yaml\nAlias file:        /Users/fernand/.local/share/k9s/aliases.yaml\"><pre lang=\"text\" class=\"notranslate\"><code class=\"notranslate\"> ____  __.________\n|    |/ _/   __   \\______\n|      &lt; \\____    /  ___/\n|    |  \\   /    /\\___ \\\n|____|__ \\ /____//____  &gt;\n        \\/            \\/\n\nVersion:           vX.Y.Z\nConfig:            /Users/fernand/.config/k9s/config.yaml\nLogs:              /Users/fernand/.local/state/k9s/k9s.log\nDumps dir:         /Users/fernand/.local/state/k9s/screen-dumps\nBenchmarks dir:    /Users/fernand/.local/state/k9s/benchmarks\nSkins dir:         /Users/fernand/.local/share/k9s/skins\nContexts dir:      /Users/fernand/.local/share/k9s/clusters\nCustom views file: /Users/fernand/.local/share/k9s/views.yaml\nPlugins file:      /Users/fernand/.local/share/k9s/plugins.yaml\nHotkeys file:      /Users/fernand/.local/share/k9s/hotkeys.yaml\nAlias file:        /Users/fernand/.local/share/k9s/aliases.yaml\n</code></pre></div>\n<h3 dir=\"auto\">View K9s logs</h3>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"tail -f /Users/fernand/.local/data/k9s/k9s.log\"><pre class=\"notranslate\">tail -f /Users/fernand/.local/data/k9s/k9s.log</pre></div>\n<h3 dir=\"auto\">Start K9s in debug mode</h3>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"k9s -l debug\"><pre class=\"notranslate\">k9s -l debug</pre></div>\n<h3 dir=\"auto\">Customize logs destination</h3>\n<p dir=\"auto\">You can override the default log file destination either with the <code class=\"notranslate\">--logFile</code> argument:</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"k9s --logFile /tmp/k9s.log\nless /tmp/k9s.log\"><pre class=\"notranslate\">k9s --logFile /tmp/k9s.log\nless /tmp/k9s.log</pre></div>\n<p dir=\"auto\">Or through the <code class=\"notranslate\">K9S_LOGS_DIR</code> environment variable:</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"K9S_LOGS_DIR=/var/log k9s\nless /var/log/k9s.log\"><pre class=\"notranslate\">K9S_LOGS_DIR=/var/log k9s\nless /var/log/k9s.log</pre></div>\n<h2 dir=\"auto\">Key Bindings</h2>\n<p dir=\"auto\">K9s uses aliases to navigate most K8s resources.</p>\n<markdown-accessiblity-table><table role=\"table\">\n<thead>\n<tr>\n<th>Action</th>\n<th>Command</th>\n<th>Comment</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Show active keyboard mnemonics and help</td>\n<td><code class=\"notranslate\">?</code></td>\n<td></td>\n</tr>\n<tr>\n<td>Show all available resource alias</td>\n<td><code class=\"notranslate\">ctrl-a</code></td>\n<td></td>\n</tr>\n<tr>\n<td>To bail out of K9s</td>\n<td><code class=\"notranslate\">:quit</code>, <code class=\"notranslate\">:q</code>, <code class=\"notranslate\">ctrl-c</code></td>\n<td></td>\n</tr>\n<tr>\n<td>To go up/back to the previous view</td>\n<td><code class=\"notranslate\">esc</code></td>\n<td>If you have crumbs on, this will go to the previous one</td>\n</tr>\n<tr>\n<td>View a Kubernetes resource using singular/plural or short-name</td>\n<td><code class=\"notranslate\">:</code>pod⏎</td>\n<td>accepts singular, plural, short-name or alias ie pod or pods</td>\n</tr>\n<tr>\n<td>View a Kubernetes resource in a given namespace</td>\n<td><code class=\"notranslate\">:</code>pod ns-x⏎</td>\n<td></td>\n</tr>\n<tr>\n<td>View filtered pods (New v0.30.0!)</td>\n<td><code class=\"notranslate\">:</code>pod /fred⏎</td>\n<td>View all pods filtered by fred</td>\n</tr>\n<tr>\n<td>View labeled pods (New v0.30.0!)</td>\n<td><code class=\"notranslate\">:</code>pod app=fred,env=dev⏎</td>\n<td>View all pods with labels matching app=fred and env=dev</td>\n</tr>\n<tr>\n<td>View pods in a given context (New v0.30.0!)</td>\n<td><code class=\"notranslate\">:</code>pod <a class=\"user-mention notranslate\" data-hovercard-type=\"user\" data-hovercard-url=\"/users/cTx1/hovercard\" data-octo-click=\"hovercard-link-click\" data-octo-dimensions=\"link_type:self\" href=\"https://github.com/cTx1\">@cTx1</a>⏎</td>\n<td>View all pods in context ctx1. Switches out your current k9s context!</td>\n</tr>\n<tr>\n<td>Filter out a resource view given a filter</td>\n<td><code class=\"notranslate\">/</code>filter⏎</td>\n<td>Regex2 supported ie `fred</td>\n</tr>\n<tr>\n<td>Inverse regex filter</td>\n<td><code class=\"notranslate\">/</code>! filter⏎</td>\n<td>Keep everything that <em>doesn't</em> match.</td>\n</tr>\n<tr>\n<td>Filter resource view by labels</td>\n<td><code class=\"notranslate\">/</code>-l label-selector⏎</td>\n<td></td>\n</tr>\n<tr>\n<td>Fuzzy find a resource given a filter</td>\n<td><code class=\"notranslate\">/</code>-f filter⏎</td>\n<td></td>\n</tr>\n<tr>\n<td>Bails out of view/command/filter mode</td>\n<td><code class=\"notranslate\">&lt;esc&gt;</code></td>\n<td></td>\n</tr>\n<tr>\n<td>Key mapping to describe, view, edit, view logs,...</td>\n<td><code class=\"notranslate\">d</code>,<code class=\"notranslate\">v</code>, <code class=\"notranslate\">e</code>, <code class=\"notranslate\">l</code>,...</td>\n<td></td>\n</tr>\n<tr>\n<td>To view and switch to another Kubernetes context (Pod view)</td>\n<td><code class=\"notranslate\">:</code>ctx⏎</td>\n<td></td>\n</tr>\n<tr>\n<td>To view and switch directly to another Kubernetes context (Last used view)</td>\n<td><code class=\"notranslate\">:</code>ctx context-name⏎</td>\n<td></td>\n</tr>\n<tr>\n<td>To view and switch to another Kubernetes namespace</td>\n<td><code class=\"notranslate\">:</code>ns⏎</td>\n<td></td>\n</tr>\n<tr>\n<td>To switch back to the last active command (like how \"cd -\" works)</td>\n<td><code class=\"notranslate\">-</code></td>\n<td>Navigation that adds breadcrumbs to the bottom are not commands</td>\n</tr>\n<tr>\n<td>To go back and forward through the command history</td>\n<td>back: <code class=\"notranslate\">[</code>, forward: <code class=\"notranslate\">]</code></td>\n<td>Same as above</td>\n</tr>\n<tr>\n<td>To view all saved resources</td>\n<td><code class=\"notranslate\">:</code>screendump or sd⏎</td>\n<td></td>\n</tr>\n<tr>\n<td>To delete a resource (TAB and ENTER to confirm)</td>\n<td><code class=\"notranslate\">ctrl-d</code></td>\n<td></td>\n</tr>\n<tr>\n<td>To kill a resource (no confirmation dialog, equivalent to kubectl delete --now)</td>\n<td><code class=\"notranslate\">ctrl-k</code></td>\n<td></td>\n</tr>\n<tr>\n<td>Launch pulses view</td>\n<td><code class=\"notranslate\">:</code>pulses or pu⏎</td>\n<td></td>\n</tr>\n<tr>\n<td>Launch XRay view</td>\n<td><code class=\"notranslate\">:</code>xray RESOURCE [NAMESPACE]⏎</td>\n<td>RESOURCE can be one of po, svc, dp, rs, sts, ds, NAMESPACE is optional</td>\n</tr>\n<tr>\n<td>Launch Popeye view</td>\n<td><code class=\"notranslate\">:</code>popeye or pop⏎</td>\n<td>See <a href=\"#popeye\">popeye</a></td>\n</tr>\n</tbody>\n</table></markdown-accessiblity-table>\n<hr>\n<h2 dir=\"auto\">K9s Configuration</h2>\n<p dir=\"auto\">K9s keeps its configurations as YAML files inside of a <code class=\"notranslate\">k9s</code> directory and the location depends on your operating system. K9s leverages <a href=\"https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html\" rel=\"nofollow\">XDG</a> to load its various configurations files. For information on the default locations for your OS please see <a href=\"https://github.com/adrg/xdg/blob/master/README.md\">this link</a>. If you are still confused a quick <code class=\"notranslate\">k9s info</code> will reveal where k9s is loading its configurations from. Alternatively, you can set <code class=\"notranslate\">K9S_CONFIG_DIR</code> to tell K9s the directory location to pull its configurations from.</p>\n<markdown-accessiblity-table><table role=\"table\">\n<thead>\n<tr>\n<th>Unix</th>\n<th>macOS</th>\n<th>Windows</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"notranslate\">~/.config/k9s</code></td>\n<td><code class=\"notranslate\">~/Library/Application Support/k9s</code></td>\n<td><code class=\"notranslate\">%LOCALAPPDATA%\\k9s</code></td>\n</tr>\n</tbody>\n</table></markdown-accessiblity-table>\n<blockquote>\n<p dir=\"auto\">NOTE: This is still in flux and will change while in pre-release stage!</p>\n</blockquote>\n<p dir=\"auto\">You can now override the context portForward default address configuration by setting an env variable that can override all clusters portForward local address using <code class=\"notranslate\">K9S_DEFAULT_PF_ADDRESS=a.b.c.d</code></p>\n<div class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"# $XDG_CONFIG_HOME/k9s/config.yaml\nk9s:\n  # Enable periodic refresh of resource browser windows. Default false\n  liveViewAutoRefresh: false\n  # The path to screen dump. Default: '%temp_dir%/k9s-screens-%username%' (k9s info)\n  screenDumpDir: /tmp/dumps\n  # Represents ui poll intervals in seconds. Default 2secs\n  refreshRate: 2\n  # Overrides the default k8s api server requests timeout. Defaults 120s\n  apiServerTimeout: 15s\n  # Number of retries once the connection to the api-server is lost. Default 15.\n  maxConnRetry: 5\n  # Indicates whether modification commands like delete/kill/edit are disabled. Default is false\n  readOnly: false\n  # This setting allows users to specify the default view, but it is not set by default.\n  defaultView: &quot;&quot;\n  # Toggles whether k9s should exit when CTRL-C is pressed. When set to true, you will need to exit k9s via the :quit command. Default is false.\n  noExitOnCtrlC: false\n  #UI settings\n  ui:\n    # Enable mouse support. Default false\n    enableMouse: false\n    # Set to true to hide K9s header. Default false\n    headless: false\n    # Set to true to hide the K9S logo Default false\n    logoless: false\n    # Set to true to hide K9s crumbs. Default false\n    crumbsless: false\n    # Set to true to suppress the K9s splash screen on start. Default false. Note that for larger clusters or higher latency connections, there may be no resources visible initially until local caches have finished populating.\n    splashless: false\n    # Toggles icons display as not all terminal support these chars. Default: true\n    noIcons: false\n    # Toggles reactive UI. This option provide for watching on disk artifacts changes and update the UI live Defaults to false.\n    reactive: false\n    # By default all contexts will use the dracula skin unless explicitly overridden in the context config file.\n    skin: dracula # =&gt; assumes the file skins/dracula.yaml is present in the  $XDG_DATA_HOME/k9s/skins directory\n    # Allows to set certain views default fullscreen mode. (yaml, helm history, describe, value_extender, details, logs) Default false\n    defaultsToFullScreen: false\n    # Show full resource GVR (Group/Version/Resource) vs just R. Default: false.\n    useFullGVRTitle: false\n  # Toggles icons display as not all terminal support these chars.\n  noIcons: false\n  # Toggles whether k9s should check for the latest revision from the GitHub repository releases. Default is false.\n  skipLatestRevCheck: false\n  # When altering kubeconfig or using multiple kube configs, k9s will clean up clusters configurations that are no longer in use. Setting this flag to true will keep k9s from cleaning up inactive cluster configs. Defaults to false.\n  keepMissingClusters: false\n  # Logs configuration\n  logger:\n    # Defines the number of lines to return. Default 100\n    tail: 200\n    # Defines the total number of log lines to allow in the view. Default 1000\n    buffer: 500\n    # Represents how far to go back in the log timeline in seconds. Setting to -1 will tail logs. Default is -1.\n    sinceSeconds: 300 # =&gt; tail the last 5 mins.\n    # Toggles log line wrap. Default false\n    textWrap: false\n    # Autoscroll in logs will be disabled. Default is false.\n    disableAutoscroll: false\n    # Toggles log line timestamp info. Default false\n    showTime: false\n  # Provide shell pod customization when nodeShell feature gate is enabled!\n  shellPod:\n    # The shell pod image to use.\n    image: killerAdmin\n    # The namespace to launch to shell pod into.\n    namespace: default\n    # The resource limit to set on the shell pod.\n    limits:\n      cpu: 100m\n      memory: 100Mi\n    # Enable TTY\n    tty: true\n    hostPathVolume:\n    - name: docker-socket\n      # Mount the Docker socket into the shell pod\n      mountPath: /var/run/docker.sock\n      # The path on the host to mount\n      hostPath: /var/run/docker.sock\n      readOnly: true\"><pre class=\"notranslate\"><span class=\"pl-c\"><span class=\"pl-c\">#</span> $XDG_CONFIG_HOME/k9s/config.yaml</span>\n<span class=\"pl-ent\">k9s</span>:\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> Enable periodic refresh of resource browser windows. Default false</span>\n  <span class=\"pl-ent\">liveViewAutoRefresh</span>: <span class=\"pl-c1\">false</span>\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> The path to screen dump. Default: '%temp_dir%/k9s-screens-%username%' (k9s info)</span>\n  <span class=\"pl-ent\">screenDumpDir</span>: <span class=\"pl-s\">/tmp/dumps</span>\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> Represents ui poll intervals in seconds. Default 2secs</span>\n  <span class=\"pl-ent\">refreshRate</span>: <span class=\"pl-c1\">2</span>\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> Overrides the default k8s api server requests timeout. Defaults 120s</span>\n  <span class=\"pl-ent\">apiServerTimeout</span>: <span class=\"pl-c1\">15s</span>\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> Number of retries once the connection to the api-server is lost. Default 15.</span>\n  <span class=\"pl-ent\">maxConnRetry</span>: <span class=\"pl-c1\">5</span>\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> Indicates whether modification commands like delete/kill/edit are disabled. Default is false</span>\n  <span class=\"pl-ent\">readOnly</span>: <span class=\"pl-c1\">false</span>\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> This setting allows users to specify the default view, but it is not set by default.</span>\n  <span class=\"pl-ent\">defaultView</span>: <span class=\"pl-s\"><span class=\"pl-pds\">\"</span><span class=\"pl-pds\">\"</span></span>\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> Toggles whether k9s should exit when CTRL-C is pressed. When set to true, you will need to exit k9s via the :quit command. Default is false.</span>\n  <span class=\"pl-ent\">noExitOnCtrlC</span>: <span class=\"pl-c1\">false</span>\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span>UI settings</span>\n  <span class=\"pl-ent\">ui</span>:\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Enable mouse support. Default false</span>\n    <span class=\"pl-ent\">enableMouse</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Set to true to hide K9s header. Default false</span>\n    <span class=\"pl-ent\">headless</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Set to true to hide the K9S logo Default false</span>\n    <span class=\"pl-ent\">logoless</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Set to true to hide K9s crumbs. Default false</span>\n    <span class=\"pl-ent\">crumbsless</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Set to true to suppress the K9s splash screen on start. Default false. Note that for larger clusters or higher latency connections, there may be no resources visible initially until local caches have finished populating.</span>\n    <span class=\"pl-ent\">splashless</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Toggles icons display as not all terminal support these chars. Default: true</span>\n    <span class=\"pl-ent\">noIcons</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Toggles reactive UI. This option provide for watching on disk artifacts changes and update the UI live Defaults to false.</span>\n    <span class=\"pl-ent\">reactive</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> By default all contexts will use the dracula skin unless explicitly overridden in the context config file.</span>\n    <span class=\"pl-ent\">skin</span>: <span class=\"pl-s\">dracula </span><span class=\"pl-c\"><span class=\"pl-c\">#</span> =&gt; assumes the file skins/dracula.yaml is present in the  $XDG_DATA_HOME/k9s/skins directory</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Allows to set certain views default fullscreen mode. (yaml, helm history, describe, value_extender, details, logs) Default false</span>\n    <span class=\"pl-ent\">defaultsToFullScreen</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Show full resource GVR (Group/Version/Resource) vs just R. Default: false.</span>\n    <span class=\"pl-ent\">useFullGVRTitle</span>: <span class=\"pl-c1\">false</span>\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> Toggles icons display as not all terminal support these chars.</span>\n  <span class=\"pl-ent\">noIcons</span>: <span class=\"pl-c1\">false</span>\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> Toggles whether k9s should check for the latest revision from the GitHub repository releases. Default is false.</span>\n  <span class=\"pl-ent\">skipLatestRevCheck</span>: <span class=\"pl-c1\">false</span>\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> When altering kubeconfig or using multiple kube configs, k9s will clean up clusters configurations that are no longer in use. Setting this flag to true will keep k9s from cleaning up inactive cluster configs. Defaults to false.</span>\n  <span class=\"pl-ent\">keepMissingClusters</span>: <span class=\"pl-c1\">false</span>\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> Logs configuration</span>\n  <span class=\"pl-ent\">logger</span>:\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Defines the number of lines to return. Default 100</span>\n    <span class=\"pl-ent\">tail</span>: <span class=\"pl-c1\">200</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Defines the total number of log lines to allow in the view. Default 1000</span>\n    <span class=\"pl-ent\">buffer</span>: <span class=\"pl-c1\">500</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Represents how far to go back in the log timeline in seconds. Setting to -1 will tail logs. Default is -1.</span>\n    <span class=\"pl-ent\">sinceSeconds</span>: <span class=\"pl-c1\">300</span> <span class=\"pl-c\"><span class=\"pl-c\">#</span> =&gt; tail the last 5 mins.</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Toggles log line wrap. Default false</span>\n    <span class=\"pl-ent\">textWrap</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Autoscroll in logs will be disabled. Default is false.</span>\n    <span class=\"pl-ent\">disableAutoscroll</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Toggles log line timestamp info. Default false</span>\n    <span class=\"pl-ent\">showTime</span>: <span class=\"pl-c1\">false</span>\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> Provide shell pod customization when nodeShell feature gate is enabled!</span>\n  <span class=\"pl-ent\">shellPod</span>:\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> The shell pod image to use.</span>\n    <span class=\"pl-ent\">image</span>: <span class=\"pl-s\">killerAdmin</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> The namespace to launch to shell pod into.</span>\n    <span class=\"pl-ent\">namespace</span>: <span class=\"pl-s\">default</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> The resource limit to set on the shell pod.</span>\n    <span class=\"pl-ent\">limits</span>:\n      <span class=\"pl-ent\">cpu</span>: <span class=\"pl-c1\">100m</span>\n      <span class=\"pl-ent\">memory</span>: <span class=\"pl-s\">100Mi</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Enable TTY</span>\n    <span class=\"pl-ent\">tty</span>: <span class=\"pl-c1\">true</span>\n    <span class=\"pl-ent\">hostPathVolume</span>:\n    - <span class=\"pl-ent\">name</span>: <span class=\"pl-s\">docker-socket</span>\n      <span class=\"pl-c\"><span class=\"pl-c\">#</span> Mount the Docker socket into the shell pod</span>\n      <span class=\"pl-ent\">mountPath</span>: <span class=\"pl-s\">/var/run/docker.sock</span>\n      <span class=\"pl-c\"><span class=\"pl-c\">#</span> The path on the host to mount</span>\n      <span class=\"pl-ent\">hostPath</span>: <span class=\"pl-s\">/var/run/docker.sock</span>\n      <span class=\"pl-ent\">readOnly</span>: <span class=\"pl-c1\">true</span></pre></div>\n<hr>\n<h2 dir=\"auto\"><a id=\"user-content-popeye\"></a>Popeye Configuration</h2>\n<p dir=\"auto\">K9s has integration with <a href=\"https://popeyecli.io/\" rel=\"nofollow\">Popeye</a>, which is a Kubernetes cluster sanitizer.  Popeye itself uses a configuration called <code class=\"notranslate\">spinach.yml</code>, but when integrating with K9s the cluster-specific file should be name <code class=\"notranslate\">$XDG_CONFIG_HOME/share/k9s/clusters/clusterX/contextY/spinach.yml</code>.  This allows you to have a different spinach config per cluster.</p>\n<hr>\n<h2 dir=\"auto\">Node Shell</h2>\n<p dir=\"auto\">By enabling the nodeShell feature gate on a given cluster, K9s allows you to shell into your cluster nodes. Once enabled, you will have a new <code class=\"notranslate\">s</code> for <code class=\"notranslate\">shell</code> menu option while in node view. K9s will launch a pod on the selected node using a special k9s_shell pod. Furthermore, you can refine your shell pod by using a custom docker image preloaded with the shell tools you love. By default k9s uses a BusyBox image, but you can configure it as follows:</p>\n<p dir=\"auto\">Alternatively, you can now override the context configuration by setting an env variable that can override all clusters node shell gate using <code class=\"notranslate\">K9S_FEATURE_GATE_NODE_SHELL=true|false</code></p>\n<div class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"# $XDG_CONFIG_HOME/k9s/config.yaml\nk9s:\n  # You can also further tune the shell pod specification\n  shellPod:\n    image: cool_kid_admin:42\n    namespace: blee\n    limits:\n      cpu: 100m\n      memory: 100Mi\"><pre class=\"notranslate\"><span class=\"pl-c\"><span class=\"pl-c\">#</span> $XDG_CONFIG_HOME/k9s/config.yaml</span>\n<span class=\"pl-ent\">k9s</span>:\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> You can also further tune the shell pod specification</span>\n  <span class=\"pl-ent\">shellPod</span>:\n    <span class=\"pl-ent\">image</span>: <span class=\"pl-s\">cool_kid_admin:42</span>\n    <span class=\"pl-ent\">namespace</span>: <span class=\"pl-s\">blee</span>\n    <span class=\"pl-ent\">limits</span>:\n      <span class=\"pl-ent\">cpu</span>: <span class=\"pl-c1\">100m</span>\n      <span class=\"pl-ent\">memory</span>: <span class=\"pl-s\">100Mi</span></pre></div>\n<p dir=\"auto\">Then in your cluster configuration file...</p>\n<div class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"# $XDG_DATA_HOME/k9s/clusters/cluster-1/context-1\nk9s:\n  cluster: cluster-1\n  readOnly: false\n  namespace:\n    active: default\n    lockFavorites: false\n    favorites:\n    - kube-system\n    - default\n  view:\n    active: po\n  featureGates:\n    nodeShell: true # =&gt; Enable this feature gate to make nodeShell available on this cluster\n  portForwardAddress: localhost\"><pre class=\"notranslate\"><span class=\"pl-c\"><span class=\"pl-c\">#</span> $XDG_DATA_HOME/k9s/clusters/cluster-1/context-1</span>\n<span class=\"pl-ent\">k9s</span>:\n  <span class=\"pl-ent\">cluster</span>: <span class=\"pl-s\">cluster-1</span>\n  <span class=\"pl-ent\">readOnly</span>: <span class=\"pl-c1\">false</span>\n  <span class=\"pl-ent\">namespace</span>:\n    <span class=\"pl-ent\">active</span>: <span class=\"pl-s\">default</span>\n    <span class=\"pl-ent\">lockFavorites</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-ent\">favorites</span>:\n    - <span class=\"pl-s\">kube-system</span>\n    - <span class=\"pl-s\">default</span>\n  <span class=\"pl-ent\">view</span>:\n    <span class=\"pl-ent\">active</span>: <span class=\"pl-s\">po</span>\n  <span class=\"pl-ent\">featureGates</span>:\n    <span class=\"pl-ent\">nodeShell</span>: <span class=\"pl-s\">true </span><span class=\"pl-c\"><span class=\"pl-c\">#</span> =&gt; Enable this feature gate to make nodeShell available on this cluster</span>\n  <span class=\"pl-ent\">portForwardAddress</span>: <span class=\"pl-s\">localhost</span></pre></div>\n<h3 dir=\"auto\">Customizing the Shell Pod</h3>\n<p dir=\"auto\">You can also customize the shell pod by adding a <code class=\"notranslate\">hostPathVolume</code> to your shell pod. This allows you to mount a local directory or file into the shell pod. For example, if you want to mount the Docker socket into the shell pod, you can do so as follows:</p>\n<div class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"k9s:\n  shellPod:\n    hostPathVolume:\n    - name: docker-socket\n      # Mount the Docker socket into the shell pod\n      mountPath: /var/run/docker.sock\n      # The path on the host to mount\n      hostPath: /var/run/docker.sock\n      readOnly: true\"><pre class=\"notranslate\"><span class=\"pl-ent\">k9s</span>:\n  <span class=\"pl-ent\">shellPod</span>:\n    <span class=\"pl-ent\">hostPathVolume</span>:\n    - <span class=\"pl-ent\">name</span>: <span class=\"pl-s\">docker-socket</span>\n      <span class=\"pl-c\"><span class=\"pl-c\">#</span> Mount the Docker socket into the shell pod</span>\n      <span class=\"pl-ent\">mountPath</span>: <span class=\"pl-s\">/var/run/docker.sock</span>\n      <span class=\"pl-c\"><span class=\"pl-c\">#</span> The path on the host to mount</span>\n      <span class=\"pl-ent\">hostPath</span>: <span class=\"pl-s\">/var/run/docker.sock</span>\n      <span class=\"pl-ent\">readOnly</span>: <span class=\"pl-c1\">true</span></pre></div>\n<p dir=\"auto\">This will mount the Docker socket into the shell pod at <code class=\"notranslate\">/var/run/docker.sock</code> and make it read-only. You can also mount any other directory or file in a similar way.</p>\n<hr>\n<h2 dir=\"auto\">Command Aliases</h2>\n<p dir=\"auto\">In K9s, you can define your very own command aliases (shortnames) to access your resources. In your <code class=\"notranslate\">$HOME/.config/k9s</code> define a file called <code class=\"notranslate\">aliases.yaml</code>.<br>\nA K9s alias defines pairs of alias:gvr. A gvr (Group/Version/Resource) represents a fully qualified Kubernetes resource identifier. Here is an example of an alias file:</p>\n<div class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"#  $XDG_DATA_HOME/k9s/aliases.yaml\naliases:\n  pp: v1/pods\n  crb: rbac.authorization.k8s.io/v1/clusterrolebindings\n  # As of v0.30.0 you can also refer to another command alias...\n  fred: pod fred app=blee # =&gt; view pods in namespace fred with labels matching app=blee\"><pre class=\"notranslate\"><span class=\"pl-c\"><span class=\"pl-c\">#</span>  $XDG_DATA_HOME/k9s/aliases.yaml</span>\n<span class=\"pl-ent\">aliases</span>:\n  <span class=\"pl-ent\">pp</span>: <span class=\"pl-s\">v1/pods</span>\n  <span class=\"pl-ent\">crb</span>: <span class=\"pl-s\">rbac.authorization.k8s.io/v1/clusterrolebindings</span>\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> As of v0.30.0 you can also refer to another command alias...</span>\n  <span class=\"pl-ent\">fred</span>: <span class=\"pl-s\">pod fred app=blee </span><span class=\"pl-c\"><span class=\"pl-c\">#</span> =&gt; view pods in namespace fred with labels matching app=blee</span></pre></div>\n<p dir=\"auto\">Using this aliases file, you can now type <code class=\"notranslate\">:pp</code> or <code class=\"notranslate\">:crb</code> or <code class=\"notranslate\">:fred</code> to activate their respective commands.</p>\n<hr>\n<h2 dir=\"auto\">HotKey Support</h2>\n<p dir=\"auto\">Entering the command mode and typing a resource name or alias, could be cumbersome for navigating thru often used resources.<br>\nWe're introducing hotkeys that allow users to define their own key combination to activate their favorite resource views.</p>\n<p dir=\"auto\">Additionally, you can define context specific hotkeys by add a context level configuration file in <code class=\"notranslate\">$XDG_DATA_HOME/k9s/clusters/clusterX/contextY/hotkeys.yaml</code></p>\n<p dir=\"auto\">In order to surface hotkeys globally please follow these steps:</p>\n<ol dir=\"auto\">\n<li>\n<p dir=\"auto\">Create a file named <code class=\"notranslate\">$XDG_CONFIG_HOME/k9s/hotkeys.yaml</code></p>\n</li>\n<li>\n<p dir=\"auto\">Add the following to your <code class=\"notranslate\">hotkeys.yaml</code>. You can use resource name/short name to specify a command ie same as typing it while in command mode.</p>\n<div class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"#  $XDG_CONFIG_HOME/k9s/hotkeys.yaml\nhotKeys:\n  # Hitting Shift-0 navigates to your pod view\n  shift-0:\n    shortCut:    Shift-0\n    description: Viewing pods\n    command:     pods\n  # Hitting Shift-1 navigates to your deployments\n  shift-1:\n    shortCut:    Shift-1\n    description: View deployments\n    command:     dp\n  # Hitting Shift-2 navigates to your xray deployments\n  shift-2:\n    shortCut:    Shift-2\n    description: Xray Deployments\n    command:     xray deploy\n  # Hitting Shift-S view the resources in the namespace of your current selection\n  shift-s:\n    shortCut:    Shift-S\n    override:    true # =&gt; will override the default shortcut related action if set to true (default to false)\n    description: Namespaced resources\n    command:     &quot;$RESOURCE_NAME $NAMESPACE&quot;\n    keepHistory: true # whether you can return to the previous view\"><pre class=\"notranslate\"><span class=\"pl-c\"><span class=\"pl-c\">#</span>  $XDG_CONFIG_HOME/k9s/hotkeys.yaml</span>\n<span class=\"pl-ent\">hotKeys</span>:\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> Hitting Shift-0 navigates to your pod view</span>\n  <span class=\"pl-ent\">shift-0</span>:\n    <span class=\"pl-ent\">shortCut</span>:    <span class=\"pl-s\">Shift-0</span>\n    <span class=\"pl-ent\">description</span>: <span class=\"pl-s\">Viewing pods</span>\n    <span class=\"pl-ent\">command</span>:     <span class=\"pl-s\">pods</span>\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> Hitting Shift-1 navigates to your deployments</span>\n  <span class=\"pl-ent\">shift-1</span>:\n    <span class=\"pl-ent\">shortCut</span>:    <span class=\"pl-s\">Shift-1</span>\n    <span class=\"pl-ent\">description</span>: <span class=\"pl-s\">View deployments</span>\n    <span class=\"pl-ent\">command</span>:     <span class=\"pl-s\">dp</span>\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> Hitting Shift-2 navigates to your xray deployments</span>\n  <span class=\"pl-ent\">shift-2</span>:\n    <span class=\"pl-ent\">shortCut</span>:    <span class=\"pl-s\">Shift-2</span>\n    <span class=\"pl-ent\">description</span>: <span class=\"pl-s\">Xray Deployments</span>\n    <span class=\"pl-ent\">command</span>:     <span class=\"pl-s\">xray deploy</span>\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> Hitting Shift-S view the resources in the namespace of your current selection</span>\n  <span class=\"pl-ent\">shift-s</span>:\n    <span class=\"pl-ent\">shortCut</span>:    <span class=\"pl-s\">Shift-S</span>\n    <span class=\"pl-ent\">override</span>:    <span class=\"pl-s\">true </span><span class=\"pl-c\"><span class=\"pl-c\">#</span> =&gt; will override the default shortcut related action if set to true (default to false)</span>\n    <span class=\"pl-ent\">description</span>: <span class=\"pl-s\">Namespaced resources</span>\n    <span class=\"pl-ent\">command</span>:     <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>$RESOURCE_NAME $NAMESPACE<span class=\"pl-pds\">\"</span></span>\n    <span class=\"pl-ent\">keepHistory</span>: <span class=\"pl-s\">true </span><span class=\"pl-c\"><span class=\"pl-c\">#</span> whether you can return to the previous view</span></pre></div>\n</li>\n</ol>\n<p dir=\"auto\">Not feeling so hot? Your custom hotkeys will be listed in the help view <code class=\"notranslate\">?</code>.<br>\nAlso your hotkeys file will be automatically reloaded so you can readily use your hotkeys as you define them.</p>\n<p dir=\"auto\">You can choose any keyboard shortcuts that make sense to you, provided they are not part of the standard K9s shortcuts list.</p>\n<p dir=\"auto\">Similarly, referencing environment variables in hotkeys is also supported. The available environment variables can refer to the description in the <a href=\"#plugins\">Plugins</a> section.</p>\n<blockquote>\n<p dir=\"auto\">NOTE: This feature/configuration might change in future releases!</p>\n</blockquote>\n<hr>\n<h2 dir=\"auto\">Port Forwarding over websockets</h2>\n<p dir=\"auto\">K9s follows <code class=\"notranslate\">kubectl</code> feature flag environment variables to enable/disable port-forwarding over websockets. (default enabled in &gt;1.30)<br>\nTo disable Websocket support, set <code class=\"notranslate\">KUBECTL_PORT_FORWARD_WEBSOCKETS=false</code></p>\n<hr>\n<h2 dir=\"auto\">FastForwards</h2>\n<p dir=\"auto\">As of v0.25.0, you can leverage the <code class=\"notranslate\">FastForwards</code> feature to tell K9s how to default port-forwards. In situations where you are dealing with multiple containers or containers exposing multiple ports, it can be cumbersome to specify the desired port-forward from the dialog as in most cases, you already know which container/port tuple you desire. For these use cases, you can now annotate your manifests with the following annotations:</p>\n<p dir=\"auto\">@ <code class=\"notranslate\">k9scli.io/auto-port-forwards</code><br>\nactivates one or more port-forwards directly bypassing the port-forward dialog all together.<br>\n@ <code class=\"notranslate\">k9scli.io/port-forwards</code><br>\npre-selects one or more port-forwards when launching the port-forward dialog.</p>\n<p dir=\"auto\">The annotation value takes on the shape <code class=\"notranslate\">container-name::[local-port:]container-port</code></p>\n<blockquote>\n<p dir=\"auto\">NOTE: for either cases above you can specify the container port by name or number in your annotation!</p>\n</blockquote>\n<h3 dir=\"auto\">Example</h3>\n<div class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"# Pod fred\napiVersion: v1\nkind: Pod\nmetadata:\n  name: fred\n  annotations:\n    k9scli.io/auto-port-forwards: zorg::5556        # =&gt; will default to container zorg port 5556 and local port 5566. No port-forward dialog will be shown.\n    # Or...\n    k9scli.io/port-forwards: bozo::9090:p1          # =&gt; launches the port-forward dialog selecting default port-forward on container bozo port named p1(8081)\n                                                    # mapping to local port 9090.\n    ...\nspec:\n  containers:\n  - name: zorg\n    ports:\n    - name: p1\n      containerPort: 5556\n    ...\n  - name: bozo\n    ports:\n    - name: p1\n      containerPort: 8081\n    - name: p2\n      containerPort: 5555\n    ...\"><pre class=\"notranslate\"><span class=\"pl-c\"><span class=\"pl-c\">#</span> Pod fred</span>\n<span class=\"pl-ent\">apiVersion</span>: <span class=\"pl-c1\">v1</span>\n<span class=\"pl-ent\">kind</span>: <span class=\"pl-s\">Pod</span>\n<span class=\"pl-ent\">metadata</span>:\n  <span class=\"pl-ent\">name</span>: <span class=\"pl-s\">fred</span>\n  <span class=\"pl-ent\">annotations</span>:\n    <span class=\"pl-ent\">k9scli.io/auto-port-forwards</span>: <span class=\"pl-s\">zorg::5556        </span><span class=\"pl-c\"><span class=\"pl-c\">#</span> =&gt; will default to container zorg port 5556 and local port 5566. No port-forward dialog will be shown.</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Or...</span>\n    <span class=\"pl-ent\">k9scli.io/port-forwards</span>: <span class=\"pl-s\">bozo::9090:p1          </span><span class=\"pl-c\"><span class=\"pl-c\">#</span> =&gt; launches the port-forward dialog selecting default port-forward on container bozo port named p1(8081)</span>\n                                                    <span class=\"pl-c\"><span class=\"pl-c\">#</span> mapping to local port 9090.</span>\n    <span class=\"pl-s\">...</span>\n<span class=\"pl-ent\">spec</span>:\n  <span class=\"pl-ent\">containers</span>:\n  - <span class=\"pl-ent\">name</span>: <span class=\"pl-s\">zorg</span>\n    <span class=\"pl-ent\">ports</span>:\n    - <span class=\"pl-ent\">name</span>: <span class=\"pl-c1\">p1</span>\n      <span class=\"pl-ent\">containerPort</span>: <span class=\"pl-c1\">5556</span>\n    <span class=\"pl-s\">...</span>\n  - <span class=\"pl-ent\">name</span>: <span class=\"pl-s\">bozo</span>\n    <span class=\"pl-ent\">ports</span>:\n    - <span class=\"pl-ent\">name</span>: <span class=\"pl-c1\">p1</span>\n      <span class=\"pl-ent\">containerPort</span>: <span class=\"pl-c1\">8081</span>\n    - <span class=\"pl-ent\">name</span>: <span class=\"pl-c1\">p2</span>\n      <span class=\"pl-ent\">containerPort</span>: <span class=\"pl-c1\">5555</span>\n    <span class=\"pl-s\">...</span></pre></div>\n<p dir=\"auto\">The annotation value must specify a container to forward to as well as a local port and container port. The container port may be specified as either a port number or port name. If the local port is omitted then the local port will default to the container port number. Here are a few examples:</p>\n<ol dir=\"auto\">\n<li>bozo::http      - creates a pf on container <code class=\"notranslate\">bozo</code> with port name http. If http specifies port number 8080 then the local port will be 8080 as well.</li>\n<li>bozo::9090:http - creates a pf on container <code class=\"notranslate\">bozo</code> mapping local port 9090-&gt;http(8080)</li>\n<li>bozo::9090:8080 - creates a pf on container <code class=\"notranslate\">bozo</code> mapping local port 9090-&gt;8080</li>\n</ol>\n<hr>\n<h2 dir=\"auto\">Custom Views</h2>\n<p dir=\"auto\"><a href=\"https://youtu.be/7S33CNLAofk\" rel=\"nofollow\">SneakCast v0.17.0 on The Beach! - Yup! sound is sucking but what a setting!</a></p>\n<p dir=\"auto\">You can change which columns shows up for a given resource via custom views. To surface this feature, you will need to create a new configuration file, namely <code class=\"notranslate\">$XDG_CONFIG_HOME/k9s/views.yaml</code>. This file leverages GVR (Group/Version/Resource) to configure the associated table view columns. If no GVR is found for a view the default rendering will take over (ie what we have now). Going wide will add all the remaining columns that are available on the given resource after your custom columns. To boot, you can edit your views config file and tune your resources views live!</p>\n<p dir=\"auto\">📢 🎉 As of <code class=\"notranslate\">release v0.40.0</code> you can specify json parse expressions to further customize your resources rendering.</p>\n<p dir=\"auto\">The new column syntax is as follows:</p>\n<blockquote>\n<p dir=\"auto\">COLUMN_NAME&lt;:json_parse_expression&gt;&lt;|column_attributes&gt;</p>\n</blockquote>\n<p dir=\"auto\">Where <code class=\"notranslate\">:json_parse_expression</code> represents an expression to pull a specific snippet out of the resource manifest.<br>\nSimilar to <code class=\"notranslate\">kubectl -o custom-columns</code> command. This expression is optional.</p>\n<blockquote>\n<p dir=\"auto\">IMPORTANT! Columns must be valid YAML strings. Thus if your column definition contains non-alpha chars<br>\nthey must figure with either single/double quotes or escaped via <code class=\"notranslate\">\\</code></p>\n</blockquote>\n<blockquote>\n<p dir=\"auto\">NOTE! Be sure to watch k9s logs as any issues with the custom views specification are only surfaced in the logs.</p>\n</blockquote>\n<p dir=\"auto\">Additionally, you can specify column attributes to further tailor the column rendering.<br>\nTo use this you will need to add a <code class=\"notranslate\">|</code> indicator followed by your rendering bits.<br>\nYou can have one or more of the following attributes:</p>\n<ul dir=\"auto\">\n<li><code class=\"notranslate\">T</code> -&gt; time column indicator</li>\n<li><code class=\"notranslate\">N</code> -&gt; number column indicator</li>\n<li><code class=\"notranslate\">W</code> -&gt; turns on wide column aka only shows while in wide mode. Defaults to the standard resource definition when present.</li>\n<li><code class=\"notranslate\">S</code> -&gt; Ensures a column is visible and not wide. Overrides <code class=\"notranslate\">wide</code> std resource definition if present.</li>\n<li><code class=\"notranslate\">H</code> -&gt; Hides the column</li>\n<li><code class=\"notranslate\">L</code> -&gt; Left align (default)</li>\n<li><code class=\"notranslate\">R</code> -&gt; Right align</li>\n</ul>\n<p dir=\"auto\">Here is a sample views configuration that customize a pods and services views.</p>\n<div class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"# $XDG_CONFIG_HOME/k9s/views.yaml\nviews:\n  v1/pods:\n    columns:\n      - AGE\n      - NAMESPACE|WR                                     # =&gt; 🌚 Specifies the NAMESPACE column to be right aligned and only visible while in wide mode\n      - ZORG:.metadata.labels.fred\\.io\\.kubernetes\\.blee # =&gt; 🌚 extract fred.io.kubernetes.blee label into it's own column\n      - BLEE:.metadata.annotations.blee|R                # =&gt; 🌚 extract annotation blee into it's own column and right align it\n      - NAME\n      - IP\n      - NODE\n      - STATUS\n      - READY\n      - MEM/RL|S                                         # =&gt; 🌚 Overrides std resource default wide attribute via `S` for `Show`\n      - '%MEM/R|'                                        # =&gt; NOTE! column names with non alpha names need to be quoted as columns must be strings!\n\n  v1/pods@fred:                                          # =&gt; 🌚 New v0.40.6! Customize columns for a given resource and namespace!\n    columns:\n      - AGE\n      - NAME|WR\n\n  v1/pods@kube*:                                         # =&gt; 🌚 New v0.40.6! You can also specify a namespace using a regular expression.\n    columns:\n      - NAME\n      - AGE\n      - LABELS\n\n  cool-kid:                                              # =&gt; 🌚 New v0.40.8! You can also reference a specific alias and display a custom view for it\n    columns:\n      - AGE\n      - NAMESPACE|WR\n\n  v1/services:\n    columns:\n      - AGE\n      - NAMESPACE\n      - NAME\n      - TYPE\n      - CLUSTER-IP\"><pre class=\"notranslate\"><span class=\"pl-c\"><span class=\"pl-c\">#</span> $XDG_CONFIG_HOME/k9s/views.yaml</span>\n<span class=\"pl-ent\">views</span>:\n  <span class=\"pl-ent\">v1/pods</span>:\n    <span class=\"pl-ent\">columns</span>:\n      - <span class=\"pl-s\">AGE</span>\n      - <span class=\"pl-s\">NAMESPACE|WR                                     </span><span class=\"pl-c\"><span class=\"pl-c\">#</span> =&gt; 🌚 Specifies the NAMESPACE column to be right aligned and only visible while in wide mode</span>\n      - <span class=\"pl-s\">ZORG:.metadata.labels.fred\\.io\\.kubernetes\\.blee </span><span class=\"pl-c\"><span class=\"pl-c\">#</span> =&gt; 🌚 extract fred.io.kubernetes.blee label into it's own column</span>\n      - <span class=\"pl-s\">BLEE:.metadata.annotations.blee|R                </span><span class=\"pl-c\"><span class=\"pl-c\">#</span> =&gt; 🌚 extract annotation blee into it's own column and right align it</span>\n      - <span class=\"pl-s\">NAME</span>\n      - <span class=\"pl-s\">IP</span>\n      - <span class=\"pl-s\">NODE</span>\n      - <span class=\"pl-s\">STATUS</span>\n      - <span class=\"pl-s\">READY</span>\n      - <span class=\"pl-s\">MEM/RL|S                                         </span><span class=\"pl-c\"><span class=\"pl-c\">#</span> =&gt; 🌚 Overrides std resource default wide attribute via `S` for `Show`</span>\n      - <span class=\"pl-s\"><span class=\"pl-pds\">'</span>%MEM/R|<span class=\"pl-pds\">'</span></span>                                        <span class=\"pl-c\"><span class=\"pl-c\">#</span> =&gt; NOTE! column names with non alpha names need to be quoted as columns must be strings!</span>\n\n  <span class=\"pl-ent\">v1/pods@fred</span>:                                          <span class=\"pl-c\"><span class=\"pl-c\">#</span> =&gt; 🌚 New v0.40.6! Customize columns for a given resource and namespace!</span>\n    <span class=\"pl-ent\">columns</span>:\n      - <span class=\"pl-s\">AGE</span>\n      - <span class=\"pl-s\">NAME|WR</span>\n\n  <span class=\"pl-ent\">v1/pods@kube*</span>:                                         <span class=\"pl-c\"><span class=\"pl-c\">#</span> =&gt; 🌚 New v0.40.6! You can also specify a namespace using a regular expression.</span>\n    <span class=\"pl-ent\">columns</span>:\n      - <span class=\"pl-s\">NAME</span>\n      - <span class=\"pl-s\">AGE</span>\n      - <span class=\"pl-s\">LABELS</span>\n\n  <span class=\"pl-ent\">cool-kid</span>:                                              <span class=\"pl-c\"><span class=\"pl-c\">#</span> =&gt; 🌚 New v0.40.8! You can also reference a specific alias and display a custom view for it</span>\n    <span class=\"pl-ent\">columns</span>:\n      - <span class=\"pl-s\">AGE</span>\n      - <span class=\"pl-s\">NAMESPACE|WR</span>\n\n  <span class=\"pl-ent\">v1/services</span>:\n    <span class=\"pl-ent\">columns</span>:\n      - <span class=\"pl-s\">AGE</span>\n      - <span class=\"pl-s\">NAMESPACE</span>\n      - <span class=\"pl-s\">NAME</span>\n      - <span class=\"pl-s\">TYPE</span>\n      - <span class=\"pl-s\">CLUSTER-IP</span></pre></div>\n<blockquote>\n<p dir=\"auto\">🩻 NOTE: This is experimental and will most likely change as we iron this out!</p>\n</blockquote>\n<hr>\n<h2 dir=\"auto\">Plugins</h2>\n<p dir=\"auto\">K9s allows you to extend your command line and tooling by defining your very own cluster commands via plugins.<br>\nMinimally we look at <code class=\"notranslate\">$XDG_CONFIG_HOME/k9s/plugins.yaml</code> to locate all available plugins.<br>\nAdditionally, K9s will scan the following directories for additional plugins:</p>\n<ul dir=\"auto\">\n<li><code class=\"notranslate\">$XDG_CONFIG_HOME/k9s/plugins</code></li>\n<li><code class=\"notranslate\">$XDG_DATA_HOME/k9s/plugins</code></li>\n<li><code class=\"notranslate\">$XDG_DATA_DIRS/k9s/plugins</code></li>\n</ul>\n<p dir=\"auto\">The plugin file content can be either a single plugin snippet, a collections of snippets or a complete plugins definition (see examples below...).</p>\n<p dir=\"auto\">A plugin is defined as follows:</p>\n<ul dir=\"auto\">\n<li>Shortcut option represents the key combination a user would type to activate the plugin. Valid values are [a-z], Shift-[A-Z], Ctrl-[A-Z].</li>\n<li>Override option make that the default action related to the shortcut will be overridden by the plugin</li>\n<li>Confirm option (when enabled) lets you see the command that is going to be executed and gives you an option to confirm or prevent execution</li>\n<li>Description will be printed next to the shortcut in the k9s menu</li>\n<li>Scopes defines a collection of resources names/short-names for the views associated with the plugin. You can specify <code class=\"notranslate\">all</code> to provide this shortcut for all views.</li>\n<li>Command represents ad-hoc commands the plugin runs upon activation</li>\n<li>Background specifies whether or not the command runs in the background</li>\n<li>Args specifies the various arguments that should apply to the command above</li>\n<li>OverwriteOutput boolean option allows plugin developers to provide custom messages on plugin stdout execution. See example in <a href=\"https://github.com/derailed/k9s/pull/2644\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/derailed/k9s/pull/2644/hovercard\">#2644</a></li>\n<li>Dangerous boolean option enables disabling the plugin when read-only mode is set. See <a href=\"https://github.com/derailed/k9s/issues/2604\" data-hovercard-type=\"issue\" data-hovercard-url=\"/derailed/k9s/issues/2604/hovercard\">#2604</a></li>\n</ul>\n<p dir=\"auto\">K9s does provide additional environment variables for you to customize your plugins arguments. Currently, the available environment variables are as follows:</p>\n<ul dir=\"auto\">\n<li><code class=\"notranslate\">$RESOURCE_GROUP</code> -- the selected resource group</li>\n<li><code class=\"notranslate\">$RESOURCE_VERSION</code> -- the selected resource api version</li>\n<li><code class=\"notranslate\">$RESOURCE_NAME</code> -- the selected resource name</li>\n<li><code class=\"notranslate\">$NAMESPACE</code> -- the selected resource namespace</li>\n<li><code class=\"notranslate\">$NAME</code> -- the selected resource name</li>\n<li><code class=\"notranslate\">$CONTAINER</code> -- the current container if applicable</li>\n<li><code class=\"notranslate\">$FILTER</code> -- the current filter if any</li>\n<li><code class=\"notranslate\">$KUBECONFIG</code> -- the KubeConfig location.</li>\n<li><code class=\"notranslate\">$CLUSTER</code> the active cluster name</li>\n<li><code class=\"notranslate\">$CONTEXT</code> the active context name</li>\n<li><code class=\"notranslate\">$USER</code> the active user</li>\n<li><code class=\"notranslate\">$GROUPS</code> the active groups</li>\n<li><code class=\"notranslate\">$POD</code> while in a container view</li>\n<li><code class=\"notranslate\">$COL-&lt;RESOURCE_COLUMN_NAME&gt;</code> use a given column name for a viewed resource. Must be prefixed by <code class=\"notranslate\">COL-</code>!</li>\n</ul>\n<p dir=\"auto\">Curly braces can be used to embed an environment variable inside another string, or if the column name contains special characters. (e.g. <code class=\"notranslate\">${NAME}-example</code> or <code class=\"notranslate\">${COL-%CPU/L}</code>)</p>\n<h3 dir=\"auto\">Plugin Examples</h3>\n<p dir=\"auto\">Define several plugins and host them in a single file. These can leave in the K9s root config so that they are available on any clusters. Additionally, you can define cluster/context specific plugins for your clusters of choice by adding clusterA/contextB/plugins.yaml file.</p>\n<p dir=\"auto\">The following defines a plugin for viewing logs on a selected pod using <code class=\"notranslate\">ctrl-l</code> as shortcut.</p>\n<div class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"# Define several plugins in a single file in the K9s root configuration\n# $XDG_DATA_HOME/k9s/plugins.yaml\nplugins:\n  # Defines a plugin to provide a `ctrl-l` shortcut to tail the logs while in pod view.\n  fred:\n    shortCut: Ctrl-L\n    override: false\n    overwriteOutput: false\n    confirm: false\n    dangerous: false\n    description: Pod logs\n    scopes:\n    - pods\n    command: kubectl\n    background: false\n    args:\n    - logs\n    - -f\n    - $NAME\n    - -n\n    - $NAMESPACE\n    - --context\n    - $CONTEXT\"><pre class=\"notranslate\"><span class=\"pl-c\"><span class=\"pl-c\">#</span> Define several plugins in a single file in the K9s root configuration</span>\n<span class=\"pl-c\"><span class=\"pl-c\">#</span> $XDG_DATA_HOME/k9s/plugins.yaml</span>\n<span class=\"pl-ent\">plugins</span>:\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> Defines a plugin to provide a `ctrl-l` shortcut to tail the logs while in pod view.</span>\n  <span class=\"pl-ent\">fred</span>:\n    <span class=\"pl-ent\">shortCut</span>: <span class=\"pl-s\">Ctrl-L</span>\n    <span class=\"pl-ent\">override</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-ent\">overwriteOutput</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-ent\">confirm</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-ent\">dangerous</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-ent\">description</span>: <span class=\"pl-s\">Pod logs</span>\n    <span class=\"pl-ent\">scopes</span>:\n    - <span class=\"pl-s\">pods</span>\n    <span class=\"pl-ent\">command</span>: <span class=\"pl-s\">kubectl</span>\n    <span class=\"pl-ent\">background</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-ent\">args</span>:\n    - <span class=\"pl-s\">logs</span>\n    - <span class=\"pl-s\">-f</span>\n    - <span class=\"pl-s\">$NAME</span>\n    - <span class=\"pl-s\">-n</span>\n    - <span class=\"pl-s\">$NAMESPACE</span>\n    - <span class=\"pl-s\">--context</span>\n    - <span class=\"pl-s\">$CONTEXT</span></pre></div>\n<p dir=\"auto\">Similarly you can define the plugin above in a directory using either a file per plugin or several plugins per files as follow...</p>\n<p dir=\"auto\">The following defines two plugins namely fred and zorg.</p>\n<div class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"# Multiple plugins in a single file...\n# Note: as of v0.40.9 you can have ad-hoc plugin dirs\n# Loads plugins fred and zorg\n# $XDG_DATA_HOME/k9s/plugins/misc-plugins/blee.yaml\nfred:\n  shortCut: Shift-B\n  description: Bozo\n  scopes:\n  - deploy\n  command: bozo\n\nzorg:\n  shortCut: Shift-Z\n  description: Pod logs\n  scopes:\n  - svc\n  command: zorg\"><pre class=\"notranslate\"><span class=\"pl-c\"><span class=\"pl-c\">#</span> Multiple plugins in a single file...</span>\n<span class=\"pl-c\"><span class=\"pl-c\">#</span> Note: as of v0.40.9 you can have ad-hoc plugin dirs</span>\n<span class=\"pl-c\"><span class=\"pl-c\">#</span> Loads plugins fred and zorg</span>\n<span class=\"pl-c\"><span class=\"pl-c\">#</span> $XDG_DATA_HOME/k9s/plugins/misc-plugins/blee.yaml</span>\n<span class=\"pl-ent\">fred</span>:\n  <span class=\"pl-ent\">shortCut</span>: <span class=\"pl-s\">Shift-B</span>\n  <span class=\"pl-ent\">description</span>: <span class=\"pl-s\">Bozo</span>\n  <span class=\"pl-ent\">scopes</span>:\n  - <span class=\"pl-s\">deploy</span>\n  <span class=\"pl-ent\">command</span>: <span class=\"pl-s\">bozo</span>\n\n<span class=\"pl-ent\">zorg</span>:\n  <span class=\"pl-ent\">shortCut</span>: <span class=\"pl-s\">Shift-Z</span>\n  <span class=\"pl-ent\">description</span>: <span class=\"pl-s\">Pod logs</span>\n  <span class=\"pl-ent\">scopes</span>:\n  - <span class=\"pl-s\">svc</span>\n  <span class=\"pl-ent\">command</span>: <span class=\"pl-s\">zorg</span></pre></div>\n<p dir=\"auto\">Lastly you can define plugin snippets in their own file. The snippet will be named from the file name. In this case, we define a <code class=\"notranslate\">bozo</code> plugin using a plugin snippet.</p>\n<div class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"# $XDG_DATA_HOME/k9s/plugins/schtuff/bozo.yaml\nshortCut: Shift-B\ndescription: Bozo\nscopes:\n- deploy\ncommand: bozo\"><pre class=\"notranslate\"><span class=\"pl-c\"><span class=\"pl-c\">#</span> $XDG_DATA_HOME/k9s/plugins/schtuff/bozo.yaml</span>\n<span class=\"pl-ent\">shortCut</span>: <span class=\"pl-s\">Shift-B</span>\n<span class=\"pl-ent\">description</span>: <span class=\"pl-s\">Bozo</span>\n<span class=\"pl-ent\">scopes</span>:\n- <span class=\"pl-s\">deploy</span>\n<span class=\"pl-ent\">command</span>: <span class=\"pl-s\">bozo</span></pre></div>\n<blockquote>\n<p dir=\"auto\">NOTE: This is an experimental feature! Options and layout may change in future K9s releases as this feature solidifies.</p>\n</blockquote>\n<hr>\n<h2 dir=\"auto\">Benchmark Your Applications</h2>\n<p dir=\"auto\">K9s integrates <a href=\"https://github.com/rakyll/hey\">Hey</a> from the brilliant and super talented <a href=\"https://github.com/rakyll\">Jaana Dogan</a>. <code class=\"notranslate\">Hey</code> is a CLI tool to benchmark HTTP endpoints similar to AB bench. This preliminary feature currently supports benchmarking port-forwards and services (Read the paint on this is way fresh!).</p>\n<p dir=\"auto\">To setup a port-forward, you will need to navigate to the PodView, select a pod and a container that exposes a given port. Using <code class=\"notranslate\">SHIFT-F</code> a dialog comes up to allow you to specify a local port to forward. Once acknowledged, you can navigate to the PortForward view (alias <code class=\"notranslate\">pf</code>) listing out your active port-forwards. Selecting a port-forward and using <code class=\"notranslate\">CTRL-B</code> will run a benchmark on that HTTP endpoint. To view the results of your benchmark runs, go to the Benchmarks view (alias <code class=\"notranslate\">be</code>). You should now be able to select a benchmark and view the run stats details by pressing <code class=\"notranslate\">&lt;ENTER&gt;</code>. NOTE: Port-forwards only last for the duration of the K9s session and will be terminated upon exit.</p>\n<p dir=\"auto\">Initially, the benchmarks will run with the following defaults:</p>\n<ul dir=\"auto\">\n<li>Concurrency Level: 1</li>\n<li>Number of Requests: 200</li>\n<li>HTTP Verb: GET</li>\n<li>Path: /</li>\n</ul>\n<p dir=\"auto\">The PortForward view is backed by a new K9s config file namely: <code class=\"notranslate\">$XDG_DATA_HOME/k9s/clusters/clusterX/contextY/benchmarks.yaml</code>. Each cluster you connect to will have its own bench config file, containing the name of the K8s context for the cluster. Changes to this file should automatically update the PortForward view to indicate how you want to run your benchmarks.</p>\n<p dir=\"auto\">Benchmarks result reports are stored in <code class=\"notranslate\">$XDG_STATE_HOME/k9s/clusters/clusterX/contextY</code></p>\n<p dir=\"auto\">Here is a sample benchmarks.yaml configuration. Please keep in mind this file will likely change in subsequent releases!</p>\n<div class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"# This file resides in  $XDG_DATA_HOME/k9s/clusters/clusterX/contextY/benchmarks.yaml\nbenchmarks:\n  # Indicates the default concurrency and number of requests setting if a container or service rule does not match.\n  defaults:\n    # One concurrent connection\n    concurrency: 1\n    # Number of requests that will be sent to an endpoint\n    requests: 500\n  containers:\n    # Containers section allows you to configure your http container's endpoints and benchmarking settings.\n    # NOTE: the container ID syntax uses namespace/pod-name:container-name\n    default/nginx:nginx:\n      # Benchmark a container named nginx using POST HTTP verb using http://localhost:port/bozo URL and headers.\n      concurrency: 1\n      requests: 10000\n      http:\n        path: /bozo\n        method: POST\n        body:\n          {&quot;fred&quot;:&quot;blee&quot;}\n        header:\n          Accept:\n            - text/html\n          Content-Type:\n            - application/json\n  services:\n    # Similarly you can Benchmark an HTTP service exposed either via NodePort, LoadBalancer types.\n    # Service ID is ns/svc-name\n    default/nginx:\n      # Set the concurrency level\n      concurrency: 5\n      # Number of requests to be sent\n      requests: 500\n      http:\n        method: GET\n        # This setting will depend on whether service is NodePort or LoadBalancer. NodePort may require vendor port tunneling setting.\n        # Set this to a node if NodePort or LB if applicable. IP or dns name.\n        host: A.B.C.D\n        path: /bumblebeetuna\n      auth:\n        user: jean-baptiste-emmanuel\n        password: Zorg!\"><pre class=\"notranslate\"><span class=\"pl-c\"><span class=\"pl-c\">#</span> This file resides in  $XDG_DATA_HOME/k9s/clusters/clusterX/contextY/benchmarks.yaml</span>\n<span class=\"pl-ent\">benchmarks</span>:\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> Indicates the default concurrency and number of requests setting if a container or service rule does not match.</span>\n  <span class=\"pl-ent\">defaults</span>:\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> One concurrent connection</span>\n    <span class=\"pl-ent\">concurrency</span>: <span class=\"pl-c1\">1</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Number of requests that will be sent to an endpoint</span>\n    <span class=\"pl-ent\">requests</span>: <span class=\"pl-c1\">500</span>\n  <span class=\"pl-ent\">containers</span>:\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Containers section allows you to configure your http container's endpoints and benchmarking settings.</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> NOTE: the container ID syntax uses namespace/pod-name:container-name</span>\n    <span class=\"pl-ent\">default/nginx:nginx</span>:\n      <span class=\"pl-c\"><span class=\"pl-c\">#</span> Benchmark a container named nginx using POST HTTP verb using http://localhost:port/bozo URL and headers.</span>\n      <span class=\"pl-ent\">concurrency</span>: <span class=\"pl-c1\">1</span>\n      <span class=\"pl-ent\">requests</span>: <span class=\"pl-c1\">10000</span>\n      <span class=\"pl-ent\">http</span>:\n        <span class=\"pl-ent\">path</span>: <span class=\"pl-s\">/bozo</span>\n        <span class=\"pl-ent\">method</span>: <span class=\"pl-s\">POST</span>\n        <span class=\"pl-ent\">body</span>:\n          <span class=\"pl-s\">{\"fred\":\"blee\"}</span>\n        <span class=\"pl-ent\">header</span>:\n          <span class=\"pl-ent\">Accept</span>:\n            - <span class=\"pl-s\">text/html</span>\n          <span class=\"pl-ent\">Content-Type</span>:\n            - <span class=\"pl-s\">application/json</span>\n  <span class=\"pl-ent\">services</span>:\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Similarly you can Benchmark an HTTP service exposed either via NodePort, LoadBalancer types.</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Service ID is ns/svc-name</span>\n    <span class=\"pl-ent\">default/nginx</span>:\n      <span class=\"pl-c\"><span class=\"pl-c\">#</span> Set the concurrency level</span>\n      <span class=\"pl-ent\">concurrency</span>: <span class=\"pl-c1\">5</span>\n      <span class=\"pl-c\"><span class=\"pl-c\">#</span> Number of requests to be sent</span>\n      <span class=\"pl-ent\">requests</span>: <span class=\"pl-c1\">500</span>\n      <span class=\"pl-ent\">http</span>:\n        <span class=\"pl-ent\">method</span>: <span class=\"pl-s\">GET</span>\n        <span class=\"pl-c\"><span class=\"pl-c\">#</span> This setting will depend on whether service is NodePort or LoadBalancer. NodePort may require vendor port tunneling setting.</span>\n        <span class=\"pl-c\"><span class=\"pl-c\">#</span> Set this to a node if NodePort or LB if applicable. IP or dns name.</span>\n        <span class=\"pl-ent\">host</span>: <span class=\"pl-s\">A.B.C.D</span>\n        <span class=\"pl-ent\">path</span>: <span class=\"pl-s\">/bumblebeetuna</span>\n      <span class=\"pl-ent\">auth</span>:\n        <span class=\"pl-ent\">user</span>: <span class=\"pl-s\">jean-baptiste-emmanuel</span>\n        <span class=\"pl-ent\">password</span>: <span class=\"pl-s\">Zorg!</span></pre></div>\n<hr>\n<h2 dir=\"auto\">K9s RBAC FU</h2>\n<p dir=\"auto\">On RBAC enabled clusters, you would need to give your users/groups capabilities so that they can use K9s to explore their Kubernetes cluster. K9s needs minimally read privileges at both the cluster and namespace level to display resources and metrics.</p>\n<p dir=\"auto\">These rules below are just suggestions. You will need to customize them based on your environment policies. If you need to edit/delete resources extra Fu will be necessary.</p>\n<blockquote>\n<p dir=\"auto\">NOTE! Cluster/Namespace access may change in the future as K9s evolves.<br>\nNOTE! We expect K9s to keep running even in atrophied clusters/namespaces. Please file issues if this is not the case!</p>\n</blockquote>\n<h3 dir=\"auto\">Cluster RBAC scope</h3>\n<div class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"---\n# K9s Reader ClusterRole\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: k9s\nrules:\n  # Grants RO access to cluster resources node and namespace\n  - apiGroups: [&quot;&quot;]\n    resources: [&quot;nodes&quot;, &quot;namespaces&quot;]\n    verbs: [&quot;get&quot;, &quot;list&quot;, &quot;watch&quot;]\n  # Grants RO access to RBAC resources\n  - apiGroups: [&quot;rbac.authorization.k8s.io&quot;]\n    resources: [&quot;clusterroles&quot;, &quot;roles&quot;, &quot;clusterrolebindings&quot;, &quot;rolebindings&quot;]\n    verbs: [&quot;get&quot;, &quot;list&quot;, &quot;watch&quot;]\n  # Grants RO access to CRD resources\n  - apiGroups: [&quot;apiextensions.k8s.io&quot;]\n    resources: [&quot;customresourcedefinitions&quot;]\n    verbs: [&quot;get&quot;, &quot;list&quot;, &quot;watch&quot;]\n  # Grants RO access to metric server (if present)\n  - apiGroups: [&quot;metrics.k8s.io&quot;]\n    resources: [&quot;nodes&quot;, &quot;pods&quot;]\n    verbs: [&quot;get&quot;, &quot;list&quot;, &quot;watch&quot;]\n\n---\n# Sample K9s user ClusterRoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: k9s\nsubjects:\n  - kind: User\n    name: fernand\n    apiGroup: rbac.authorization.k8s.io\nroleRef:\n  kind: ClusterRole\n  name: k9s\n  apiGroup: rbac.authorization.k8s.io\"><pre class=\"notranslate\">---\n<span class=\"pl-c\"><span class=\"pl-c\">#</span> K9s Reader ClusterRole</span>\n<span class=\"pl-ent\">kind</span>: <span class=\"pl-s\">ClusterRole</span>\n<span class=\"pl-ent\">apiVersion</span>: <span class=\"pl-s\">rbac.authorization.k8s.io/v1</span>\n<span class=\"pl-ent\">metadata</span>:\n  <span class=\"pl-ent\">name</span>: <span class=\"pl-s\">k9s</span>\n<span class=\"pl-ent\">rules</span>:\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> Grants RO access to cluster resources node and namespace</span>\n  - <span class=\"pl-ent\">apiGroups</span>: <span class=\"pl-s\">[\"\"]</span>\n    <span class=\"pl-ent\">resources</span>: <span class=\"pl-s\">[\"nodes\", \"namespaces\"]</span>\n    <span class=\"pl-ent\">verbs</span>: <span class=\"pl-s\">[\"get\", \"list\", \"watch\"]</span>\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> Grants RO access to RBAC resources</span>\n  - <span class=\"pl-ent\">apiGroups</span>: <span class=\"pl-s\">[\"rbac.authorization.k8s.io\"]</span>\n    <span class=\"pl-ent\">resources</span>: <span class=\"pl-s\">[\"clusterroles\", \"roles\", \"clusterrolebindings\", \"rolebindings\"]</span>\n    <span class=\"pl-ent\">verbs</span>: <span class=\"pl-s\">[\"get\", \"list\", \"watch\"]</span>\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> Grants RO access to CRD resources</span>\n  - <span class=\"pl-ent\">apiGroups</span>: <span class=\"pl-s\">[\"apiextensions.k8s.io\"]</span>\n    <span class=\"pl-ent\">resources</span>: <span class=\"pl-s\">[\"customresourcedefinitions\"]</span>\n    <span class=\"pl-ent\">verbs</span>: <span class=\"pl-s\">[\"get\", \"list\", \"watch\"]</span>\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> Grants RO access to metric server (if present)</span>\n  - <span class=\"pl-ent\">apiGroups</span>: <span class=\"pl-s\">[\"metrics.k8s.io\"]</span>\n    <span class=\"pl-ent\">resources</span>: <span class=\"pl-s\">[\"nodes\", \"pods\"]</span>\n    <span class=\"pl-ent\">verbs</span>: <span class=\"pl-s\">[\"get\", \"list\", \"watch\"]</span>\n\n---\n<span class=\"pl-c\"><span class=\"pl-c\">#</span> Sample K9s user ClusterRoleBinding</span>\n<span class=\"pl-ent\">apiVersion</span>: <span class=\"pl-s\">rbac.authorization.k8s.io/v1</span>\n<span class=\"pl-ent\">kind</span>: <span class=\"pl-s\">ClusterRoleBinding</span>\n<span class=\"pl-ent\">metadata</span>:\n  <span class=\"pl-ent\">name</span>: <span class=\"pl-s\">k9s</span>\n<span class=\"pl-ent\">subjects</span>:\n  - <span class=\"pl-ent\">kind</span>: <span class=\"pl-s\">User</span>\n    <span class=\"pl-ent\">name</span>: <span class=\"pl-s\">fernand</span>\n    <span class=\"pl-ent\">apiGroup</span>: <span class=\"pl-s\">rbac.authorization.k8s.io</span>\n<span class=\"pl-ent\">roleRef</span>:\n  <span class=\"pl-ent\">kind</span>: <span class=\"pl-s\">ClusterRole</span>\n  <span class=\"pl-ent\">name</span>: <span class=\"pl-s\">k9s</span>\n  <span class=\"pl-ent\">apiGroup</span>: <span class=\"pl-s\">rbac.authorization.k8s.io</span></pre></div>\n<h3 dir=\"auto\">Namespace RBAC scope</h3>\n<p dir=\"auto\">If your users are constrained to certain namespaces, K9s will need to following role to enable read access to namespaced resources.</p>\n<div class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"---\n# K9s Reader Role (default namespace)\nkind: Role\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: k9s\n  namespace: default\nrules:\n  # Grants RO access to most namespaced resources\n  - apiGroups: [&quot;&quot;, &quot;apps&quot;, &quot;autoscaling&quot;, &quot;batch&quot;, &quot;extensions&quot;]\n    resources: [&quot;*&quot;]\n    verbs: [&quot;get&quot;, &quot;list&quot;, &quot;watch&quot;]\n  # Grants RO access to metric server\n  - apiGroups: [&quot;metrics.k8s.io&quot;]\n    resources: [&quot;pods&quot;, &quot;nodes&quot;]\n    verbs:\n      - get\n      - list\n      - watch\n\n---\n# Sample K9s user RoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: k9s\n  namespace: default\nsubjects:\n  - kind: User\n    name: fernand\n    apiGroup: rbac.authorization.k8s.io\nroleRef:\n  kind: Role\n  name: k9s\n  apiGroup: rbac.authorization.k8s.io\"><pre class=\"notranslate\">---\n<span class=\"pl-c\"><span class=\"pl-c\">#</span> K9s Reader Role (default namespace)</span>\n<span class=\"pl-ent\">kind</span>: <span class=\"pl-s\">Role</span>\n<span class=\"pl-ent\">apiVersion</span>: <span class=\"pl-s\">rbac.authorization.k8s.io/v1</span>\n<span class=\"pl-ent\">metadata</span>:\n  <span class=\"pl-ent\">name</span>: <span class=\"pl-s\">k9s</span>\n  <span class=\"pl-ent\">namespace</span>: <span class=\"pl-s\">default</span>\n<span class=\"pl-ent\">rules</span>:\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> Grants RO access to most namespaced resources</span>\n  - <span class=\"pl-ent\">apiGroups</span>: <span class=\"pl-s\">[\"\", \"apps\", \"autoscaling\", \"batch\", \"extensions\"]</span>\n    <span class=\"pl-ent\">resources</span>: <span class=\"pl-s\">[\"*\"]</span>\n    <span class=\"pl-ent\">verbs</span>: <span class=\"pl-s\">[\"get\", \"list\", \"watch\"]</span>\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> Grants RO access to metric server</span>\n  - <span class=\"pl-ent\">apiGroups</span>: <span class=\"pl-s\">[\"metrics.k8s.io\"]</span>\n    <span class=\"pl-ent\">resources</span>: <span class=\"pl-s\">[\"pods\", \"nodes\"]</span>\n    <span class=\"pl-ent\">verbs</span>:\n      - <span class=\"pl-s\">get</span>\n      - <span class=\"pl-s\">list</span>\n      - <span class=\"pl-s\">watch</span>\n\n---\n<span class=\"pl-c\"><span class=\"pl-c\">#</span> Sample K9s user RoleBinding</span>\n<span class=\"pl-ent\">apiVersion</span>: <span class=\"pl-s\">rbac.authorization.k8s.io/v1</span>\n<span class=\"pl-ent\">kind</span>: <span class=\"pl-s\">RoleBinding</span>\n<span class=\"pl-ent\">metadata</span>:\n  <span class=\"pl-ent\">name</span>: <span class=\"pl-s\">k9s</span>\n  <span class=\"pl-ent\">namespace</span>: <span class=\"pl-s\">default</span>\n<span class=\"pl-ent\">subjects</span>:\n  - <span class=\"pl-ent\">kind</span>: <span class=\"pl-s\">User</span>\n    <span class=\"pl-ent\">name</span>: <span class=\"pl-s\">fernand</span>\n    <span class=\"pl-ent\">apiGroup</span>: <span class=\"pl-s\">rbac.authorization.k8s.io</span>\n<span class=\"pl-ent\">roleRef</span>:\n  <span class=\"pl-ent\">kind</span>: <span class=\"pl-s\">Role</span>\n  <span class=\"pl-ent\">name</span>: <span class=\"pl-s\">k9s</span>\n  <span class=\"pl-ent\">apiGroup</span>: <span class=\"pl-s\">rbac.authorization.k8s.io</span></pre></div>\n<hr>\n<h2 dir=\"auto\">Skins</h2>\n<p dir=\"auto\">Example: Dracula Skin ;)</p>\n<p dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"assets/skins/dracula.png\"><img src=\"assets/skins/dracula.png\" alt=\"Dracula Skin\" style=\"max-width: 100%;\"></a></p>\n<p dir=\"auto\">You can style K9s based on your own sense of look and style. Skins are YAML files, that enable a user to change the K9s presentation layer. See this repo <code class=\"notranslate\">skins</code> directory for examples.<br>\nYou can skin k9s by default by specifying a UI.skin attribute. You can also change K9s skins based on the context you are connecting too.<br>\nIn this case, you can specify a skin field on your cluster config aka <code class=\"notranslate\">skin: dracula</code> (just the name of the skin file without the extension!) and copy this repo<br>\n<code class=\"notranslate\">skins/dracula.yaml</code> to <code class=\"notranslate\">$XDG_CONFIG_HOME/k9s/skins/</code> directory.</p>\n<p dir=\"auto\">In the case where your cluster spans several contexts, you can add a skin context configuration to your context configuration.<br>\nThis is a collection of {context_name, skin} tuples (please see example below!)</p>\n<p dir=\"auto\">Colors can be defined by name or using a hex representation. Of recent, we've added a color named <code class=\"notranslate\">default</code> to indicate a transparent background color to preserve your terminal background color settings if so desired.</p>\n<blockquote>\n<p dir=\"auto\">NOTE: This is very much an experimental feature at this time, more will be added/modified if this feature has legs so thread accordingly!<br>\nNOTE: Please see <a href=\"https://k9scli.io/topics/skins/\" rel=\"nofollow\">K9s Skins</a> for a list of available colors.</p>\n</blockquote>\n<p dir=\"auto\">To skin a specific context and provided the file <code class=\"notranslate\">in-the-navy.yaml</code> is present in your skins directory.</p>\n<div class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"#  $XDG_DATA_HOME/k9s/clusters/clusterX/contextY/config.yaml\nk9s:\n  cluster: clusterX\n  skin: in-the-navy\n  readOnly: false\n  namespace:\n    active: default\n    lockFavorites: false\n    favorites:\n    - kube-system\n    - default\n  view:\n    active: po\n  featureGates:\n    nodeShell: false\n  portForwardAddress: localhost\"><pre class=\"notranslate\"><span class=\"pl-c\"><span class=\"pl-c\">#</span>  $XDG_DATA_HOME/k9s/clusters/clusterX/contextY/config.yaml</span>\n<span class=\"pl-ent\">k9s</span>:\n  <span class=\"pl-ent\">cluster</span>: <span class=\"pl-s\">clusterX</span>\n  <span class=\"pl-ent\">skin</span>: <span class=\"pl-s\">in-the-navy</span>\n  <span class=\"pl-ent\">readOnly</span>: <span class=\"pl-c1\">false</span>\n  <span class=\"pl-ent\">namespace</span>:\n    <span class=\"pl-ent\">active</span>: <span class=\"pl-s\">default</span>\n    <span class=\"pl-ent\">lockFavorites</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-ent\">favorites</span>:\n    - <span class=\"pl-s\">kube-system</span>\n    - <span class=\"pl-s\">default</span>\n  <span class=\"pl-ent\">view</span>:\n    <span class=\"pl-ent\">active</span>: <span class=\"pl-s\">po</span>\n  <span class=\"pl-ent\">featureGates</span>:\n    <span class=\"pl-ent\">nodeShell</span>: <span class=\"pl-c1\">false</span>\n  <span class=\"pl-ent\">portForwardAddress</span>: <span class=\"pl-s\">localhost</span></pre></div>\n<p dir=\"auto\">You can also specify a default skin for all contexts in the root k9s config file as so:</p>\n<div class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"#  $XDG_CONFIG_HOME/k9s/config.yaml\nk9s:\n  liveViewAutoRefresh: false\n  screenDumpDir: /tmp/dumps\n  refreshRate: 2\n  maxConnRetry: 5\n  readOnly: false\n  noExitOnCtrlC: false\n  ui:\n    enableMouse: false\n    headless: false\n    logoless: false\n    crumbsless: false\n    splashless: false\n    noIcons: false\n    # Toggles reactive UI. This option provide for watching on disk artifacts changes and update the UI live  Defaults to false.\n    reactive: false\n    # By default all contexts will use the dracula skin unless explicitly overridden in the context config file.\n    skin: dracula # =&gt; assumes the file skins/dracula.yaml is present in the  $XDG_DATA_HOME/k9s/skins directory\n    defaultsToFullScreen: false\n  skipLatestRevCheck: false\n  disablePodCounting: false\n  shellPod:\n    image: busybox\n    namespace: default\n    limits:\n      cpu: 100m\n      memory: 100Mi\n  imageScans:\n    enable: false\n    exclusions:\n      namespaces: []\n      labels: {}\n  logger:\n    tail: 100\n    buffer: 5000\n    sinceSeconds: -1\n    textWrap: false\n    disableAutoscroll: false\n    showTime: false\n  thresholds:\n    cpu:\n      critical: 90\n      warn: 70\n    memory:\n      critical: 90\n      warn: 70\"><pre class=\"notranslate\"><span class=\"pl-c\"><span class=\"pl-c\">#</span>  $XDG_CONFIG_HOME/k9s/config.yaml</span>\n<span class=\"pl-ent\">k9s</span>:\n  <span class=\"pl-ent\">liveViewAutoRefresh</span>: <span class=\"pl-c1\">false</span>\n  <span class=\"pl-ent\">screenDumpDir</span>: <span class=\"pl-s\">/tmp/dumps</span>\n  <span class=\"pl-ent\">refreshRate</span>: <span class=\"pl-c1\">2</span>\n  <span class=\"pl-ent\">maxConnRetry</span>: <span class=\"pl-c1\">5</span>\n  <span class=\"pl-ent\">readOnly</span>: <span class=\"pl-c1\">false</span>\n  <span class=\"pl-ent\">noExitOnCtrlC</span>: <span class=\"pl-c1\">false</span>\n  <span class=\"pl-ent\">ui</span>:\n    <span class=\"pl-ent\">enableMouse</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-ent\">headless</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-ent\">logoless</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-ent\">crumbsless</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-ent\">splashless</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-ent\">noIcons</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Toggles reactive UI. This option provide for watching on disk artifacts changes and update the UI live  Defaults to false.</span>\n    <span class=\"pl-ent\">reactive</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> By default all contexts will use the dracula skin unless explicitly overridden in the context config file.</span>\n    <span class=\"pl-ent\">skin</span>: <span class=\"pl-s\">dracula </span><span class=\"pl-c\"><span class=\"pl-c\">#</span> =&gt; assumes the file skins/dracula.yaml is present in the  $XDG_DATA_HOME/k9s/skins directory</span>\n    <span class=\"pl-ent\">defaultsToFullScreen</span>: <span class=\"pl-c1\">false</span>\n  <span class=\"pl-ent\">skipLatestRevCheck</span>: <span class=\"pl-c1\">false</span>\n  <span class=\"pl-ent\">disablePodCounting</span>: <span class=\"pl-c1\">false</span>\n  <span class=\"pl-ent\">shellPod</span>:\n    <span class=\"pl-ent\">image</span>: <span class=\"pl-s\">busybox</span>\n    <span class=\"pl-ent\">namespace</span>: <span class=\"pl-s\">default</span>\n    <span class=\"pl-ent\">limits</span>:\n      <span class=\"pl-ent\">cpu</span>: <span class=\"pl-c1\">100m</span>\n      <span class=\"pl-ent\">memory</span>: <span class=\"pl-s\">100Mi</span>\n  <span class=\"pl-ent\">imageScans</span>:\n    <span class=\"pl-ent\">enable</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-ent\">exclusions</span>:\n      <span class=\"pl-ent\">namespaces</span>: <span class=\"pl-s\">[]</span>\n      <span class=\"pl-ent\">labels</span>: <span class=\"pl-s\">{}</span>\n  <span class=\"pl-ent\">logger</span>:\n    <span class=\"pl-ent\">tail</span>: <span class=\"pl-c1\">100</span>\n    <span class=\"pl-ent\">buffer</span>: <span class=\"pl-c1\">5000</span>\n    <span class=\"pl-ent\">sinceSeconds</span>: <span class=\"pl-c1\">-1</span>\n    <span class=\"pl-ent\">textWrap</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-ent\">disableAutoscroll</span>: <span class=\"pl-c1\">false</span>\n    <span class=\"pl-ent\">showTime</span>: <span class=\"pl-c1\">false</span>\n  <span class=\"pl-ent\">thresholds</span>:\n    <span class=\"pl-ent\">cpu</span>:\n      <span class=\"pl-ent\">critical</span>: <span class=\"pl-c1\">90</span>\n      <span class=\"pl-ent\">warn</span>: <span class=\"pl-c1\">70</span>\n    <span class=\"pl-ent\">memory</span>:\n      <span class=\"pl-ent\">critical</span>: <span class=\"pl-c1\">90</span>\n      <span class=\"pl-ent\">warn</span>: <span class=\"pl-c1\">70</span></pre></div>\n<div class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"# $XDG_DATA_HOME/k9s/skins/in-the-navy.yaml\n# Skin InTheNavy!\nk9s:\n  # General K9s styles\n  body:\n    fgColor: dodgerblue\n    bgColor: '#ffffff'\n    logoColor: '#0000ff'\n  # ClusterInfoView styles.\n  info:\n    fgColor: lightskyblue\n    sectionColor: steelblue\n  # Help panel styles\n  help:\n    fgColor: white\n    bgColor: black\n    keyColor: cyan\n    numKeyColor: blue\n    sectionColor: gray\n  frame:\n    # Borders styles.\n    border:\n      fgColor: dodgerblue\n      focusColor: aliceblue\n    # MenuView attributes and styles.\n    menu:\n      fgColor: darkblue\n      # Style of menu text. Supported options are &quot;dim&quot; (default), &quot;normal&quot;, and &quot;bold&quot;\n      fgStyle: dim\n      keyColor: cornflowerblue\n      # Used for favorite namespaces\n      numKeyColor: cadetblue\n    # CrumbView attributes for history navigation.\n    crumbs:\n      fgColor: white\n      bgColor: steelblue\n      activeColor: skyblue\n    # Resource status and update styles\n    status:\n      newColor: '#00ff00'\n      modifyColor: powderblue\n      addColor: lightskyblue\n      errorColor: indianred\n      highlightcolor: royalblue\n      killColor: slategray\n      completedColor: gray\n    # Border title styles.\n    title:\n      fgColor: aqua\n      bgColor: white\n      highlightColor: skyblue\n      counterColor: slateblue\n      filterColor: slategray\n  views:\n    # TableView attributes.\n    table:\n      fgColor: blue\n      bgColor: darkblue\n      cursorColor: aqua\n      # Header row styles.\n      header:\n        fgColor: white\n        bgColor: darkblue\n        sorterColor: orange\n    # YAML info styles.\n    yaml:\n      keyColor: steelblue\n      colonColor: blue\n      valueColor: royalblue\n    # Logs styles.\n    logs:\n      fgColor: lightskyblue\n      bgColor: black\n      indicator:\n        fgColor: dodgerblue\n        bgColor: black\n        toggleOnColor: limegreen\n        toggleOffColor: gray\"><pre class=\"notranslate\"><span class=\"pl-c\"><span class=\"pl-c\">#</span> $XDG_DATA_HOME/k9s/skins/in-the-navy.yaml</span>\n<span class=\"pl-c\"><span class=\"pl-c\">#</span> Skin InTheNavy!</span>\n<span class=\"pl-ent\">k9s</span>:\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> General K9s styles</span>\n  <span class=\"pl-ent\">body</span>:\n    <span class=\"pl-ent\">fgColor</span>: <span class=\"pl-s\">dodgerblue</span>\n    <span class=\"pl-ent\">bgColor</span>: <span class=\"pl-s\"><span class=\"pl-pds\">'</span>#ffffff<span class=\"pl-pds\">'</span></span>\n    <span class=\"pl-ent\">logoColor</span>: <span class=\"pl-s\"><span class=\"pl-pds\">'</span>#0000ff<span class=\"pl-pds\">'</span></span>\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> ClusterInfoView styles.</span>\n  <span class=\"pl-ent\">info</span>:\n    <span class=\"pl-ent\">fgColor</span>: <span class=\"pl-s\">lightskyblue</span>\n    <span class=\"pl-ent\">sectionColor</span>: <span class=\"pl-s\">steelblue</span>\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> Help panel styles</span>\n  <span class=\"pl-ent\">help</span>:\n    <span class=\"pl-ent\">fgColor</span>: <span class=\"pl-s\">white</span>\n    <span class=\"pl-ent\">bgColor</span>: <span class=\"pl-s\">black</span>\n    <span class=\"pl-ent\">keyColor</span>: <span class=\"pl-s\">cyan</span>\n    <span class=\"pl-ent\">numKeyColor</span>: <span class=\"pl-s\">blue</span>\n    <span class=\"pl-ent\">sectionColor</span>: <span class=\"pl-s\">gray</span>\n  <span class=\"pl-ent\">frame</span>:\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Borders styles.</span>\n    <span class=\"pl-ent\">border</span>:\n      <span class=\"pl-ent\">fgColor</span>: <span class=\"pl-s\">dodgerblue</span>\n      <span class=\"pl-ent\">focusColor</span>: <span class=\"pl-s\">aliceblue</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> MenuView attributes and styles.</span>\n    <span class=\"pl-ent\">menu</span>:\n      <span class=\"pl-ent\">fgColor</span>: <span class=\"pl-s\">darkblue</span>\n      <span class=\"pl-c\"><span class=\"pl-c\">#</span> Style of menu text. Supported options are \"dim\" (default), \"normal\", and \"bold\"</span>\n      <span class=\"pl-ent\">fgStyle</span>: <span class=\"pl-s\">dim</span>\n      <span class=\"pl-ent\">keyColor</span>: <span class=\"pl-s\">cornflowerblue</span>\n      <span class=\"pl-c\"><span class=\"pl-c\">#</span> Used for favorite namespaces</span>\n      <span class=\"pl-ent\">numKeyColor</span>: <span class=\"pl-s\">cadetblue</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> CrumbView attributes for history navigation.</span>\n    <span class=\"pl-ent\">crumbs</span>:\n      <span class=\"pl-ent\">fgColor</span>: <span class=\"pl-s\">white</span>\n      <span class=\"pl-ent\">bgColor</span>: <span class=\"pl-s\">steelblue</span>\n      <span class=\"pl-ent\">activeColor</span>: <span class=\"pl-s\">skyblue</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Resource status and update styles</span>\n    <span class=\"pl-ent\">status</span>:\n      <span class=\"pl-ent\">newColor</span>: <span class=\"pl-s\"><span class=\"pl-pds\">'</span>#00ff00<span class=\"pl-pds\">'</span></span>\n      <span class=\"pl-ent\">modifyColor</span>: <span class=\"pl-s\">powderblue</span>\n      <span class=\"pl-ent\">addColor</span>: <span class=\"pl-s\">lightskyblue</span>\n      <span class=\"pl-ent\">errorColor</span>: <span class=\"pl-s\">indianred</span>\n      <span class=\"pl-ent\">highlightcolor</span>: <span class=\"pl-s\">royalblue</span>\n      <span class=\"pl-ent\">killColor</span>: <span class=\"pl-s\">slategray</span>\n      <span class=\"pl-ent\">completedColor</span>: <span class=\"pl-s\">gray</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Border title styles.</span>\n    <span class=\"pl-ent\">title</span>:\n      <span class=\"pl-ent\">fgColor</span>: <span class=\"pl-s\">aqua</span>\n      <span class=\"pl-ent\">bgColor</span>: <span class=\"pl-s\">white</span>\n      <span class=\"pl-ent\">highlightColor</span>: <span class=\"pl-s\">skyblue</span>\n      <span class=\"pl-ent\">counterColor</span>: <span class=\"pl-s\">slateblue</span>\n      <span class=\"pl-ent\">filterColor</span>: <span class=\"pl-s\">slategray</span>\n  <span class=\"pl-ent\">views</span>:\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> TableView attributes.</span>\n    <span class=\"pl-ent\">table</span>:\n      <span class=\"pl-ent\">fgColor</span>: <span class=\"pl-s\">blue</span>\n      <span class=\"pl-ent\">bgColor</span>: <span class=\"pl-s\">darkblue</span>\n      <span class=\"pl-ent\">cursorColor</span>: <span class=\"pl-s\">aqua</span>\n      <span class=\"pl-c\"><span class=\"pl-c\">#</span> Header row styles.</span>\n      <span class=\"pl-ent\">header</span>:\n        <span class=\"pl-ent\">fgColor</span>: <span class=\"pl-s\">white</span>\n        <span class=\"pl-ent\">bgColor</span>: <span class=\"pl-s\">darkblue</span>\n        <span class=\"pl-ent\">sorterColor</span>: <span class=\"pl-s\">orange</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> YAML info styles.</span>\n    <span class=\"pl-ent\">yaml</span>:\n      <span class=\"pl-ent\">keyColor</span>: <span class=\"pl-s\">steelblue</span>\n      <span class=\"pl-ent\">colonColor</span>: <span class=\"pl-s\">blue</span>\n      <span class=\"pl-ent\">valueColor</span>: <span class=\"pl-s\">royalblue</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Logs styles.</span>\n    <span class=\"pl-ent\">logs</span>:\n      <span class=\"pl-ent\">fgColor</span>: <span class=\"pl-s\">lightskyblue</span>\n      <span class=\"pl-ent\">bgColor</span>: <span class=\"pl-s\">black</span>\n      <span class=\"pl-ent\">indicator</span>:\n        <span class=\"pl-ent\">fgColor</span>: <span class=\"pl-s\">dodgerblue</span>\n        <span class=\"pl-ent\">bgColor</span>: <span class=\"pl-s\">black</span>\n        <span class=\"pl-ent\">toggleOnColor</span>: <span class=\"pl-s\">limegreen</span>\n        <span class=\"pl-ent\">toggleOffColor</span>: <span class=\"pl-s\">gray</span></pre></div>\n<hr>\n<h2 dir=\"auto\">Contributors</h2>\n<p dir=\"auto\">Without the contributions from these fine folks, this project would be a total dud!</p>\n<a href=\"https://github.com/derailed/k9s/graphs/contributors\">\n  <img src=\"https://camo.githubusercontent.com/ae108e3679d8b8d93daf21355316f923f7b3a71fba2187c94e93a81ebf6453be/68747470733a2f2f636f6e747269622e726f636b732f696d6167653f7265706f3d64657261696c65642f6b3973\" data-canonical-src=\"https://contrib.rocks/image?repo=derailed/k9s\" style=\"max-width: 100%;\">\n</a>\n<hr>\n<h2 dir=\"auto\">Known Issues</h2>\n<p dir=\"auto\">This is still work in progress! If something is broken or there's a feature<br>\nthat you want, please file an issue and if so inclined submit a PR!</p>\n<p dir=\"auto\">K9s will most likely blow up if...</p>\n<ol dir=\"auto\">\n<li>You're running older versions of Kubernetes. K9s works best on later Kubernetes versions.</li>\n<li>You don't have enough RBAC fu to manage your cluster.</li>\n</ol>\n<hr>\n<h2 dir=\"auto\">ATTA Girls/Boys!</h2>\n<p dir=\"auto\">K9s sits on top of many open source projects and libraries. Our <em>sincere</em><br>\nappreciations to all the OSS contributors that work nights and weekends<br>\nto make this project a reality!</p>\n<hr>\n<h2 dir=\"auto\">Meet The Core Team!</h2>\n<p dir=\"auto\">If you have chops in GO and K8s and would like to offer your time to help maintain and enhance this project, please reach out to me.</p>\n<ul dir=\"auto\">\n<li><a href=\"https://github.com/derailed\">Fernand Galiana</a>\n<ul dir=\"auto\">\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"assets/mail.png\"><img src=\"assets/mail.png\" width=\"16\" height=\"auto\" alt=\"email\" style=\"max-width: 100%;\"></a>  <a href=\"mailto:fernand@imhotep.io\">fernand@imhotep.io</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"assets/twitter.png\"><img src=\"assets/twitter.png\" width=\"16\" height=\"auto\" alt=\"twitter\" style=\"max-width: 100%;\"></a> <a href=\"https://twitter.com/kitesurfer?lang=en\" rel=\"nofollow\">@kitesurfer</a></li>\n</ul>\n</li>\n</ul>\n<p dir=\"auto\">We always enjoy hearing from folks who benefit from our work!</p>\n<h2 dir=\"auto\">Contributions Guideline</h2>\n<ul dir=\"auto\">\n<li>File an issue first prior to submitting a PR!</li>\n<li>Ensure all exported items are properly commented</li>\n<li>If applicable, submit a test suite against your PR</li>\n</ul>\n<hr>\n<p dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"assets/imhotep_logo.png\"><img src=\"assets/imhotep_logo.png\" width=\"32\" height=\"auto\" alt=\"Imhotep\" style=\"max-width: 100%;\"></a>  © 2025 Imhotep Software LLC. All materials licensed under <a href=\"http://www.apache.org/licenses/LICENSE-2.0\" rel=\"nofollow\">Apache v2.0</a></p>","updatedAt":"2025-05-21T16:04:34Z","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-Cluster-Manage","color":"249bda"}},{"node":{"name":"derailed","color":"10e4bc"}}]},"comments":{"edges":[]}}},"pageContext":{"number":266,"previous":{"title":"gotomicro/k8z: 提供k8s集群资源的管理能力，还集成了抓包，debug等功能","number":265},"next":{"title":"obsidiandynamics/kafdrop: 一个用于查看 Kafka 主题和浏览消费者组的 Web UI。该工具显示代理、主题、分区、消费者等信息，并允许您查看消息","number":267}}},
    "staticQueryHashes": ["151096407","2861350382"]}