Пожалуйста, обратитесь к нашему сайту документации K9S для установки, использования, настройки и советов.
Хотите обсудить функции K9S с вашими коллегами K9sers
или просто продемонстрировать свою поддержку этого инструмента?
K9S доступен на платформах Linux, MacOS и Windows. Двоичные файлы для Linux, Windows и Mac доступны в виде тарболов на странице выпуска.
Через Homebrew для macOS или Linux
brew install derailed/k9s/k9s
Через Macports
sudo port install k9s
Через Snap for Linux
snap install k9s --devmode
На Arch Linux
pacman -S k9s
На распределении OpenSuse Linux
zypper install k9s
На FreeBSD
pkg install k9s
На Ubuntu
wget https://github.com/derailed/k9s/releases/download/v0.32.7/k9s_linux_amd64.deb && apt install ./k9s_linux_amd64.deb && rm k9s_linux_amd64.deb
Через Winget для Windows
winget install k9s
Через Scoop для Windows
scoop install k9s
Через шоколадный для окон
choco install k9s
Через установку GO
# NOTE: The dev version will be in effect!
go install github.com/derailed/k9s@latest
Через Webi для Linux и MacOS
curl -sS https://webinstall.dev/k9s | bash
Через PKGX для Linux и MacOS
pkgx k9s
Через Webi для Windows
curl.exe -A MS https://webinstall.dev/k9s | powershell
В качестве расширения Docker Desktop (для настольного настольного компьютера Docker встроенный на сервере Kubernetes)
docker extension install spurin/k9s-dd-extension:latest
K9S в настоящее время использует GO V1.23.x или выше. Чтобы построить K9s из источника, вы должны:
Клонировать репо
Создайте и запустите исполняемый файл
make build && ./execs/k9s
Вы можете запустить K9s в качестве контейнера Docker, установив свой KUBECONFIG
:
docker run --rm -it -v $KUBECONFIG :/root/.kube/config quay.io/derailed/k9s
Для пути по умолчанию это было бы:
docker run --rm -it -v ~ /.kube/config:/root/.kube/config quay.io/derailed/k9s
Вы можете построить собственное изображение Docker K9s из Dockerfile со следующим:
docker build -t k9s-docker:v0.0.1 .
Вы можете получить последнюю стабильную версию kubectl
и передать ее в команду docker build
с опцией --build-arg
. Вы можете использовать опцию --build-arg
, чтобы передать любую действительную версию kubectl
(например, v1.18.0
или v1.19.1
).
KUBECTL_VERSION= $( make kubectl-stable-version 2> /dev/null )
docker build --build-arg KUBECTL_VERSION= ${KUBECTL_VERSION} -t k9s-docker:0.1 .
Запустите контейнер:
docker run --rm -it -v ~ /.kube/config:/root/.kube/config k9s-docker:0.1
K9S использует 256 цветов терминала режима. В системе NIX убедитесь, что термин устанавливается соответствующим образом.
export TERM=xterm-256color
Чтобы выпустить команды редактирования ресурсов, убедитесь, что ваш редактор и kube_editor env vars установлены.
# Kubectl edit command will use this env var.
export KUBE_EDITOR=my_fav_editor
K9S предпочитает недавние версии Kubernetes, т.е. 1,28+
K9s | Клиент K8S |
---|---|
> = v0.27.0 | 1.26.1 |
v0.26.7 - v0.26.6 | 1.25.3 |
V0.26.5 - V0.26.4 | 1.25.1 |
v0.26.3 - v0.26.1 | 1.24.3 |
v0.26.0 - v0.25.19 | 1.24.2 |
v0.25.18 - v0.25.3 | 1.22.3 |
v0.25.2 - v0.25.0 | 1.22.0 |
<= v0.24 | 1.21.3 |
# List current version
k9s version
# To get info about K9s runtime (logs, configs, etc..)
k9s info
# List all available CLI options
k9s help
# To run K9s in a given namespace
k9s -n mycoolns
# Start K9s in an existing KubeConfig context
k9s --context coolCtx
# Start K9s in readonly mode - with all cluster modification commands disabled
k9s --readonly
Учитывая природу пользовательского интерфейса K9s производит журналы в определенное место. Чтобы просмотреть журналы и включить режим отладки, используйте следующие команды:
# Find out where the logs are stored
k9s info
____ __.________
| |/ _/ __ ______
| < ____ / ___/
| | / /___
|____|__ /____//____ >
/ /
Version: vX.Y.Z
Config: /Users/fernand/.config/k9s/config.yaml
Logs: /Users/fernand/.local/state/k9s/k9s.log
Dumps dir: /Users/fernand/.local/state/k9s/screen-dumps
Benchmarks dir: /Users/fernand/.local/state/k9s/benchmarks
Skins dir: /Users/fernand/.local/share/k9s/skins
Contexts dir: /Users/fernand/.local/share/k9s/clusters
Custom views file: /Users/fernand/.local/share/k9s/views.yaml
Plugins file: /Users/fernand/.local/share/k9s/plugins.yaml
Hotkeys file: /Users/fernand/.local/share/k9s/hotkeys.yaml
Alias file: /Users/fernand/.local/share/k9s/aliases.yaml
tail -f /Users/fernand/.local/data/k9s/k9s.log
k9s -l debug
Вы можете переопределить пункт назначения файла журнала по умолчанию либо с помощью аргумента --logFile
:
k9s --logFile /tmp/k9s.log
less /tmp/k9s.log
Или через переменную среды K9S_LOGS_DIR
:
K9S_LOGS_DIR=/var/log k9s
less /var/log/k9s.log
K9S использует псевдонимы для навигации большинства ресурсов K8S.
Действие | Командование | Комментарий |
---|---|---|
Покажите активную клавиатуру Mnemonics и помощь | ? | |
Показать все доступные псевдоним ресурсов | ctrl-a | |
Чтобы выручить из K9s | :quit , :q , ctrl-c | |
Чтобы подняться/вернуться к предыдущему представлению | esc | Если у вас есть крошки, это пойдет на предыдущий |
Посмотреть ресурс Kubernetes с использованием единственного/множественного числа или короткого имени | : Pod⏎ | Принимает единственное, множественное число, короткое имя или псевдоним, т.е. |
Посмотреть ресурс Kubernetes в данном пространстве имен | : pod ns-x⏎ | |
Посмотреть фильтрованные стручки (новый v0.30.0!) | : pod /fred⏎ | Посмотреть все стручки, отфильтрованные Фредом |
Просмотр маркированных стручков (новый v0.30.0!) | : pod app = fred, env = dev⏎ | Просмотреть все стручки с метками сопоставление app = fred и env = dev |
Просмотреть стручки в данном контексте (новый v0.30.0!) | : pod @ctx1⏎ | Просмотреть все стручки в контексте CTX1. Переключает ваш текущий контекст K9S! |
Отфильтруйте представление ресурса, учитывая фильтр | / фильтр | Regex2 поддерживает т.е. |
Обратный фильтр режима | / ! фильтр | Держите все, что не соответствует. |
Фильтруя ресурсное представление на этикетках | / -l Метка -селектор | |
Нечеткий найдите ресурс, данный фильтром | / -f Filter⏎ | |
Залога вне просмотра/команда/режим фильтра | <esc> | |
Картирование ключей для описания, просмотреть, редактировать, просмотреть журналы, ... | d , v , e , l , ... | |
Чтобы просмотреть и переключиться на другой контекст Kubernetes (представление POD) | : ctx⏎ | |
Чтобы просмотреть и переключаться непосредственно на другой контекст Kubernetes (последний использованный представление) | : ctx context-name⏎ | |
Чтобы просмотреть и переключиться на другое пространство имен Kubernetes | : ns⏎ | |
Чтобы просмотреть все сохраненные ресурсы | : Screendump или Sd⏎ | |
Чтобы удалить ресурс (вкладка и введите, чтобы подтвердить) | ctrl-d | |
Чтобы убить ресурс (без диалога подтверждения, эквивалентно Kubectl Delete -Now) | ctrl-k | |
Запустить пульс. Вид | : импульсы или pu⏎ | |
Запустите xray View | : xray resource [пространство имен] ⏎ | Ресурс может быть одним из PO, SVC, DP, RS, STS, DS, пространство имен является необязательным |
Запустите Popeye View | : Popeye или Pop⏎ | Смотрите Попай |
K9S сохраняет свои конфигурации в качестве файлов YAML внутри каталога k9s
, и местоположение зависит от вашей операционной системы. K9S использует XDG для загрузки своих различных файлов конфигураций. Для получения информации о местоположениях по умолчанию для вашей ОС, пожалуйста, посмотрите эту ссылку. Если вы все еще запутались, k9s info
покажет, откуда K9S загружает свои конфигурации. В качестве альтернативы вы можете установить K9S_CONFIG_DIR
, чтобы сообщить K9S местоположение каталога, чтобы извлечь его конфигурации.
Unix | macOS | Окна |
---|---|---|
~/.config/k9s | ~/Library/Application Support/k9s | %LOCALAPPDATA%k9s |
ПРИМЕЧАНИЕ. Это все еще в потоке и изменится, находясь на стадии перед выпуском!
Теперь вы можете переопределить контекстную конфигурацию адреса адреса по умолчанию, установив переменную ENV, которая может переопределить все кластеры локального адреса, используя K9S_DEFAULT_PF_ADDRESS=abcd
# $XDG_CONFIG_HOME/k9s/config.yaml
k9s :
# Enable periodic refresh of resource browser windows. Default false
liveViewAutoRefresh : false
# The path to screen dump. Default: '%temp_dir%/k9s-screens-%username%' (k9s info)
screenDumpDir : /tmp/dumps
# Represents ui poll intervals. Default 2secs
refreshRate : 2
# Number of retries once the connection to the api-server is lost. Default 15.
maxConnRetry : 5
# Indicates whether modification commands like delete/kill/edit are disabled. Default is false
readOnly : false
# Toggles whether k9s should exit when CTRL-C is pressed. When set to true, you will need to exist k9s via the :quit command. Default is false.
noExitOnCtrlC : false
# UI settings
ui :
# Enable mouse support. Default false
enableMouse : false
# Set to true to hide K9s header. Default false
headless : false
# Set to true to hide the K9S logo Default false
logoless : false
# Set to true to hide K9s crumbs. Default false
crumbsless : false
noIcons : false
# Toggles reactive UI. This option provide for watching on disk artifacts changes and update the UI live Defaults to false.
reactive : false
# By default all contexts wil use the dracula skin unless explicitly overridden in the context config file.
skin : dracula # => assumes the file skins/dracula.yaml is present in the $XDG_DATA_HOME/k9s/skins directory
# Allows to set certain views default fullscreen mode. (yaml, helm history, describe, value_extender, details, logs) Default false
defaultsToFullScreen : false
# Toggles icons display as not all terminal support these chars.
noIcons : false
# Toggles whether k9s should check for the latest revision from the Github repository releases. Default is false.
skipLatestRevCheck : false
# 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.
keepMissingClusters : false
# Logs configuration
logger :
# Defines the number of lines to return. Default 100
tail : 200
# Defines the total number of log lines to allow in the view. Default 1000
buffer : 500
# Represents how far to go back in the log timeline in seconds. Setting to -1 will tail logs. Default is -1.
sinceSeconds : 300 # => tail the last 5 mins.
# Toggles log line wrap. Default false
textWrap : false
# Toggles log line timestamp info. Default false
showTime : false
# Provide shell pod customization when nodeShell feature gate is enabled!
shellPod :
# The shell pod image to use.
image : killerAdmin
# The namespace to launch to shell pod into.
namespace : default
# The resource limit to set on the shell pod.
limits :
cpu : 100m
memory : 100Mi
# Enable TTY
tty : true
K9S имеет интеграцию с Popeye, который является кластером Kubernetes Cluster. Сам Popeye использует конфигурацию, называемую spinach.yml
, но при интеграции с K9s файл, специфичный для кластера, должен быть имя $XDG_CONFIG_HOME/share/k9s/clusters/clusterX/contextY/spinach.yml
. Это позволяет вам иметь другой конфигуратор шпината на кластер.
Включив ворота функции NodeShell на данном кластере, K9S позволяет вам обернуться в узлы кластеров. После включения у вас будет новая опция s
shell
Menu, находясь в View Node. K9S запустит стручок на выбранном узле, используя специальную стручку K9S_SHELL. Кроме того, вы можете усовершенствовать свой корпус Shell, используя пользовательское изображение Docker, предварительно загруженное инструментами для оболочки, которые вы любите. По умолчанию K9S использует изображение Busybox, но вы можете настроить его следующим образом:
В качестве альтернативы, теперь вы можете переопределить конфигурацию контекста, установив переменную ENV, которая может переопределить все шерсть оболочки узла кластеров, используя K9S_FEATURE_GATE_NODE_SHELL=true|false
# $XDG_CONFIG_HOME/k9s/config.yaml
k9s :
# You can also further tune the shell pod specification
shellPod :
image : cool_kid_admin:42
namespace : blee
limits :
cpu : 100m
memory : 100Mi
Затем в файле конфигурации кластера ...
# $XDG_DATA_HOME/k9s/clusters/cluster-1/context-1
k9s :
cluster : cluster-1
readOnly : false
namespace :
active : default
lockFavorites : false
favorites :
- kube-system
- default
view :
active : po
featureGates :
nodeShell : true # => Enable this feature gate to make nodeShell available on this cluster
portForwardAddress : localhost
В K9S вы можете определить свои собственные псевдонимы команд (короткие имена) для доступа к вашим ресурсам. В вашем $HOME/.config/k9s
определяйте файл с названием aliases.yaml
. Псевдоним K9S определяет пары псевдонима: GVR. GVR (группа/версия/ресурс) представляет собой полностью квалифицированный идентификатор ресурса Kubernetes. Вот пример файла псевдонима:
# $XDG_DATA_HOME/k9s/aliases.yaml
aliases :
pp : v1/pods
crb : rbac.authorization.k8s.io/v1/clusterrolebindings
# As of v0.30.0 you can also refer to another command alias...
fred : pod fred app=blee # => view pods in namespace fred with labels matching app=blee
Используя этот файл псевдонимов, теперь вы можете ввести :pp
или :crb
или :fred
, чтобы активировать свои соответствующие команды.
Ввод в режим команд и ввод имени ресурса или псевдонима, может быть громоздким для навигации через часто используемые ресурсы. Мы представляем горячие клавиши, которые позволяют пользователям определять свою собственную комбинацию ключей, чтобы активировать свои любимые представления ресурсов.
Кроме того, вы можете определить контекст -специфические Hotkeys, добавив файл конфигурации уровня контекста в $XDG_DATA_HOME/k9s/clusters/clusterX/contextY/hotkeys.yaml
Для того, чтобы выяснить горячие клавиши во всем мире, следуйте этим шагам:
Создать файл с именем $XDG_CONFIG_HOME/k9s/hotkeys.yaml
Добавьте следующее в свои hotkeys.yaml
. Вы можете использовать имя ресурса/короткое имя, чтобы указать команду, то есть такую же, как ввод ее в командном режиме.
# $XDG_CONFIG_HOME/k9s/hotkeys.yaml
hotKeys :
# Hitting Shift-0 navigates to your pod view
shift-0 :
shortCut : Shift-0
description : Viewing pods
command : pods
# Hitting Shift-1 navigates to your deployments
shift-1 :
shortCut : Shift-1
description : View deployments
command : dp
# Hitting Shift-2 navigates to your xray deployments
shift-2 :
shortCut : Shift-2
description : Xray Deployments
command : xray deploy
# Hitting Shift-S view the resources in the namespace of your current selection
shift-s :
shortCut : Shift-S
override : true # => will override the default shortcut related action if set to true (default to false)
description : Namespaced resources
command : " $RESOURCE_NAME $NAMESPACE "
keepHistory : true # whether you can return to the previous view
Не чувствуете себя таким горячим? Ваши индивидуальные горячие клавиши будут перечислены в справочном представлении ?
Полем Кроме того, ваш файл Hotkeys будет автоматически перезагружаться, поэтому вы можете легко использовать свои горячие клавиши по мере их определения.
Вы можете выбрать любые сочетания клавиш, которые имеют смысл для вас, при условии, что они не являются частью стандартного списка ярлыков K9S.
Точно так же также поддерживается ссылка на переменные среды в Hotkeys. Доступные переменные среды могут относиться к описанию в разделе плагинов.
Примечание. Эта функция/конфигурация может измениться в будущих выпусках!
По состоянию на v0.25.0 вы можете использовать функцию FastForwards
, чтобы рассказать K9s, как по умолчанию портовые. В ситуациях, когда вы имеете дело с несколькими контейнерами или контейнерами, выявляющими несколько портов, может быть громоздко указать желаемый порт-наход из диалога, как в большинстве случаев, вы уже знаете, какой контейнер/портовый корзин вы хотите. Для этих вариантов использования вы можете аннотировать свои манифесты следующими аннотациями:
@ k9scli.io/auto-port-forwards
активирует один или несколько порт-функций, непосредственно обходя диалоговое окно порта-к-образной. @ k9scli.io/port-forwards
предварительно выбирает один или несколько порт-обработки при запуске диалогового окна порта-образа.
Значение аннотации приобретает container-name::[local-port:]container-port
ПРИМЕЧАНИЕ. В любом случае выше вы можете указать порт контейнера по имени или номеру в своей аннотации!
# Pod fred
apiVersion : v1
kind : Pod
metadata :
name : fred
annotations :
k9scli.io/auto-port-forwards : zorg::5556 # => will default to container zorg port 5556 and local port 5566. No port-forward dialog will be shown.
# Or...
k9scli.io/port-forwards : bozo::9090:p1 # => launches the port-forward dialog selecting default port-forward on container bozo port named p1(8081)
# mapping to local port 9090.
...
spec :
containers :
- name : zorg
ports :
- name : p1
containerPort : 5556
...
- name : bozo
ports :
- name : p1
containerPort : 8081
- name : p2
containerPort : 5555
...
Значение аннотации должно указать контейнер для пересылки, а также локальный порт и порт контейнера. Контейнерный порт может быть указан как номер порта или имя порта. Если локальный порт опущен, то локальный порт по умолчанию по умолчанию на номер порта контейнера. Вот несколько примеров:
bozo
с названием порта http. Если HTTP указывает номер порта 8080, то локальный порт также будет 8080.bozo
Картирование локального порта 9090-> http (8080)bozo
Mapping Local Port 9090-> 8080 Sneakcast v0.17.0 на пляже! - Ага! Звук сосет, но какая настройка!
Вы можете изменить, какие столбцы отображаются для данного ресурса с помощью пользовательских представлений. Чтобы выяснить эту функцию, вам нужно будет создать новый файл конфигурации, а именно $XDG_CONFIG_HOME/k9s/views.yaml
. Этот файл использует GVR (Group/версия/ресурс) для настройки соответствующих столбцов View Table. Если GVR не найден для представления, рендеринг по умолчанию займет во владение (т.е. то, что у нас есть сейчас). Широкая, добавит все оставшиеся столбцы, которые доступны на данном ресурсе после ваших пользовательских столбцов. Для загрузки вы можете редактировать файл конфигурации своих представлений и настроить свои представления ресурсов в прямом эфире!
Примечание: это экспериментально и, скорее всего, изменится, когда мы это изгоняем!
Вот пример конфигурации представлений, которая настраивает просмотры стручков и сервисов.
# $XDG_CONFIG_HOME/k9s/views.yaml
views :
v1/pods :
columns :
- AGE
- NAMESPACE
- NAME
- IP
- NODE
- STATUS
- READY
v1/services :
columns :
- AGE
- NAMESPACE
- NAME
- TYPE
- CLUSTER-IP
K9S позволяет вам расширить вашу командную строку и инструменты, определяя свои собственные команды кластера через плагины. K9S будет рассмотреть $XDG_CONFIG_HOME/k9s/plugins.yaml
чтобы найти все доступные плагины.
Плагин определяется следующим образом:
all
, чтобы предоставить этот ярлык для всех просмотров.K9S предоставляет вам дополнительные переменные среды, чтобы настроить аргументы ваших плагинов. В настоящее время доступные переменные среды следующие:
$RESOURCE_GROUP
- выбранная группа ресурсов$RESOURCE_VERSION
- выбранная версия API ресурса$RESOURCE_NAME
- выбранное имя ресурса$NAMESPACE
- выбранное пространство имен ресурсов$NAME
- Выбранное имя ресурса$CONTAINER
- текущий контейнер, если применимо$FILTER
- текущий фильтр, если таковые имеются$KUBECONFIG
- место Kubeconfig.$CLUSTER
Активное имя кластера$CONTEXT
Активное имя контекста$USER
активного пользователя$GROUPS
активные группы$POD
находясь в контейнере$COL-<RESOURCE_COLUMN_NAME>
Используйте заданное имя столбца для просмотренного ресурса. Должен быть префикс COL-
! Кудрявые брекеты могут использоваться для встроенной переменной среды в другую строку, или если имя столбца содержит специальные символы. (например ${NAME}-example
или ${COL-%CPU/L}
)
Это определяет плагин для просмотра журналов на выбранной стручке с использованием ctrl-l
в качестве ярлыка.
# $XDG_DATA_HOME/k9s/plugins.yaml
plugins :
# Defines a plugin to provide a `ctrl-l` shortcut to tail the logs while in pod view.
fred :
shortCut : Ctrl-L
override : false
overwriteOutput : false
confirm : false
dangerous : false
description : Pod logs
scopes :
- pods
command : kubectl
background : false
args :
- logs
- -f
- $NAME
- -n
- $NAMESPACE
- --context
- $CONTEXT
Примечание: это экспериментальная функция! Варианты и макет могут измениться в будущих выпусках K9S, поскольку эта функция затвердевает.
K9S интегрирует Eye из блестящего и супер талантливого Jaana Dogan. Hey
- это инструмент CLI для сравнения HTTP -конечных точек, похожих на AB Bench. Эта предварительная функция в настоящее время поддерживает сравнительные перепонки и сервисы (читать краску об этом намного свежо!).
Чтобы настроить порт-фарвард, вам нужно будет перейти к Podview, выберите POD и контейнер, который открывает заданный порт. Использование SHIFT-F
диалог подходит, чтобы позволить вам указать локальный порт для пересылки. После признания вы можете перейти к Portforward View (псевдоним pf
), в котором перечислены ваши активные портовые. Выбор порта и использования CTRL-B
будет запускать эталон в этой конечной точке HTTP. Чтобы просмотреть результаты ваших тестов, перейдите к представлению тестов ( be
). Теперь вы должны иметь возможность выбрать эталон и просмотреть детали статистики запуска, нажав <ENTER>
. Примечание. Порт-заработайте только в течение всего сеанса K9S и будет прекращен при выходе.
Первоначально тесты будут работать со следующими значениями по умолчанию:
Просмотр PortForward поддерживается новым файлом конфигурации K9S, а именно: $XDG_DATA_HOME/k9s/clusters/clusterX/contextY/benchmarks.yaml
. Каждый кластер, к которому вы подключаетесь, будет иметь свой собственный файл конфигурации скамейки, содержащий имя контекста K8S для кластера. Изменения в этом файле должны автоматически обновить представление PortForward, чтобы указать, как вы хотите запустить свои тесты.
Отчеты о результатах тестов хранятся в $XDG_STATE_HOME/k9s/clusters/clusterX/contextY
Вот образец конфигурации. Пожалуйста, имейте в виду, что этот файл, скорее всего, изменится в последующих выпусках!
# This file resides in $XDG_DATA_HOME/k9s/clusters/clusterX/contextY/benchmarks.yaml
benchmarks :
# Indicates the default concurrency and number of requests setting if a container or service rule does not match.
defaults :
# One concurrent connection
concurrency : 1
# Number of requests that will be sent to an endpoint
requests : 500
containers :
# Containers section allows you to configure your http container's endpoints and benchmarking settings.
# NOTE: the container ID syntax uses namespace/pod-name:container-name
default/nginx:nginx :
# Benchmark a container named nginx using POST HTTP verb using http://localhost:port/bozo URL and headers.
concurrency : 1
requests : 10000
http :
path : /bozo
method : POST
body :
{"fred":"blee"}
header :
Accept :
- text/html
Content-Type :
- application/json
services :
# Similarly you can Benchmark an HTTP service exposed either via NodePort, LoadBalancer types.
# Service ID is ns/svc-name
default/nginx :
# Set the concurrency level
concurrency : 5
# Number of requests to be sent
requests : 500
http :
method : GET
# This setting will depend on whether service is NodePort or LoadBalancer. NodePort may require vendor port tunneling setting.
# Set this to a node if NodePort or LB if applicable. IP or dns name.
host : A.B.C.D
path : /bumblebeetuna
auth :
user : jean-baptiste-emmanuel
password : Zorg!
В кластерах с поддержкой RBAC вам необходимо предоставить своим пользователям/группам возможности, чтобы они могли использовать K9s для изучения своего кластера Kubernetes. K9S нуждается в минимальных привилегиях считывания как на уровне кластера, так и на уровне пространства имен для отображения ресурсов и показателей.
Эти правила ниже являются просто предложениями. Вам нужно будет настроить их на основе вашей политики окружающей среды. Если вам нужно отредактировать/удалить ресурсы, потребуется дополнительный FU.
ПРИМЕЧАНИЕ! Доступ к кластеру/пространству имен может измениться в будущем по мере развития K9s. ПРИМЕЧАНИЕ! Мы ожидаем, что K9 будут продолжать работать даже в атрофированных кластерах/пространствах имен. Пожалуйста, подайте проблемы, если это не так!
---
# K9s Reader ClusterRole
kind : ClusterRole
apiVersion : rbac.authorization.k8s.io/v1
metadata :
name : k9s
rules :
# Grants RO access to cluster resources node and namespace
- apiGroups : [""]
resources : ["nodes", "namespaces"]
verbs : ["get", "list", "watch"]
# Grants RO access to RBAC resources
- apiGroups : ["rbac.authorization.k8s.io"]
resources : ["clusterroles", "roles", "clusterrolebindings", "rolebindings"]
verbs : ["get", "list", "watch"]
# Grants RO access to CRD resources
- apiGroups : ["apiextensions.k8s.io"]
resources : ["customresourcedefinitions"]
verbs : ["get", "list", "watch"]
# Grants RO access to metric server (if present)
- apiGroups : ["metrics.k8s.io"]
resources : ["nodes", "pods"]
verbs : ["get", "list", "watch"]
---
# Sample K9s user ClusterRoleBinding
apiVersion : rbac.authorization.k8s.io/v1
kind : ClusterRoleBinding
metadata :
name : k9s
subjects :
- kind : User
name : fernand
apiGroup : rbac.authorization.k8s.io
roleRef :
kind : ClusterRole
name : k9s
apiGroup : rbac.authorization.k8s.io
Если ваши пользователи ограничены определенными пространствами имен, K9S необходимо будет выполнять следующую роль, чтобы обеспечить доступ к чтению ресурсов с именами.
---
# K9s Reader Role (default namespace)
kind : Role
apiVersion : rbac.authorization.k8s.io/v1
metadata :
name : k9s
namespace : default
rules :
# Grants RO access to most namespaced resources
- apiGroups : ["", "apps", "autoscaling", "batch", "extensions"]
resources : ["*"]
verbs : ["get", "list", "watch"]
# Grants RO access to metric server
- apiGroups : ["metrics.k8s.io"]
resources : ["pods", "nodes"]
verbs :
- get
- list
- watch
---
# Sample K9s user RoleBinding
apiVersion : rbac.authorization.k8s.io/v1
kind : RoleBinding
metadata :
name : k9s
namespace : default
subjects :
- kind : User
name : fernand
apiGroup : rbac.authorization.k8s.io
roleRef :
kind : Role
name : k9s
apiGroup : rbac.authorization.k8s.io
Пример: Dracula Skin;)
Вы можете стилизовать K9s на основе вашего собственного чувства внешнего вида и стиля. Скины - это файлы YAML, которые позволяют пользователю изменить уровень презентации K9S. Смотрите этот каталог skins
Repo для примеров. По умолчанию вы можете по умолчанию, указав атрибут ui.skin. Вы также можете изменить скины K9S на основе контекста, который вы подключаете. В этом случае вы можете указать поле кожи на конфигурации кластера, как и skin: dracula
(просто имя файла кожи без расширения!) И скопировать эти skins/dracula.yaml
в $XDG_CONFIG_HOME/k9s/skins/
directory.
В случае, когда ваш кластер охватывает несколько контекстов, вы можете добавить конфигурацию контекста кожи в конфигурацию контекста. Это коллекция {context_name, кожа} кожи (см. Пример ниже!)
Цвета могут быть определены по имени или с помощью шестнадцатеричного представления. Из недавнего мы добавили цвет с именем default
чтобы указать прозрачный цвет фона, чтобы сохранить настройки цвета клеммного фона, если это необходимо.
Примечание. Это очень экспериментальная функция в настоящее время, больше будет добавлено/модифицировано, если эта функция имеет ноги, поэтому соответственно резьбу! Примечание: см. Скины K9S для списка доступных цветов.
Для кожи определенный контекст и предоставил файл in_the_navy.yaml
присутствует в вашем каталоге Skins.
# $XDG_DATA_HOME/k9s/clusters/clusterX/contextY/config.yaml
k9s :
cluster : clusterX
skin : in_the_navy
readOnly : false
namespace :
active : default
lockFavorites : false
favorites :
- kube-system
- default
view :
active : po
featureGates :
nodeShell : false
portForwardAddress : localhost
Вы также можете указать кожу по умолчанию для всех контекстов в файле конфигурации root K9S как SO:
# $XDG_CONFIG_HOME/k9s/config.yaml
k9s :
liveViewAutoRefresh : false
screenDumpDir : /tmp/dumps
refreshRate : 2
maxConnRetry : 5
readOnly : false
noExitOnCtrlC : false
ui :
enableMouse : false
headless : false
logoless : false
crumbsless : false
noIcons : false
# Toggles reactive UI. This option provide for watching on disk artifacts changes and update the UI live Defaults to false.
reactive : false
# By default all contexts wil use the dracula skin unless explicitly overridden in the context config file.
skin : dracula # => assumes the file skins/dracula.yaml is present in the $XDG_DATA_HOME/k9s/skins directory
defaultsToFullScreen : false
skipLatestRevCheck : false
disablePodCounting : false
shellPod :
image : busybox
namespace : default
limits :
cpu : 100m
memory : 100Mi
imageScans :
enable : false
exclusions :
namespaces : []
labels : {}
logger :
tail : 100
buffer : 5000
sinceSeconds : -1
textWrap : false
showTime : false
thresholds :
cpu :
critical : 90
warn : 70
memory :
critical : 90
warn : 70
# $XDG_DATA_HOME/k9s/skins/in_the_navy.yaml
# Skin InTheNavy!
k9s :
# General K9s styles
body :
fgColor : dodgerblue
bgColor : ' #ffffff '
logoColor : ' #0000ff '
# ClusterInfoView styles.
info :
fgColor : lightskyblue
sectionColor : steelblue
# Help panel styles
help :
fgColor : white
bgColor : black
keyColor : cyan
numKeyColor : blue
sectionColor : gray
frame :
# Borders styles.
border :
fgColor : dodgerblue
focusColor : aliceblue
# MenuView attributes and styles.
menu :
fgColor : darkblue
keyColor : cornflowerblue
# Used for favorite namespaces
numKeyColor : cadetblue
# CrumbView attributes for history navigation.
crumbs :
fgColor : white
bgColor : steelblue
activeColor : skyblue
# Resource status and update styles
status :
newColor : ' #00ff00 '
modifyColor : powderblue
addColor : lightskyblue
errorColor : indianred
highlightcolor : royalblue
killColor : slategray
completedColor : gray
# Border title styles.
title :
fgColor : aqua
bgColor : white
highlightColor : skyblue
counterColor : slateblue
filterColor : slategray
views :
# TableView attributes.
table :
fgColor : blue
bgColor : darkblue
cursorColor : aqua
# Header row styles.
header :
fgColor : white
bgColor : darkblue
sorterColor : orange
# YAML info styles.
yaml :
keyColor : steelblue
colonColor : blue
valueColor : royalblue
# Logs styles.
logs :
fgColor : lightskyblue
bgColor : black
indicator :
fgColor : dodgerblue
bgColor : black
toggleOnColor : limegreen
toggleOffColor : gray
Без вклада этих прекрасных людей этот проект был бы полным безумным!
Это все еще работает! Если что -то сломано или есть функция, которую вы хотите, подайте проблему и, если это так, отправьте PR!
K9s, скорее всего, взорвется, если ...
K9S находится на вершине многих проектов и библиотек с открытым исходным кодом. Наша искренняя признательность всем участникам OSS, которые работают по ночам и выходным, чтобы сделать этот проект реальностью!
Фернанд Галиана
Алексей Романенко
Нам всегда нравится слышать от людей, которые получают выгоду от нашей работы!
© 2023 Imhotep Software LLC. Все материалы, лицензированные в соответствии с Apache v2.0