Consulte o site de documentação do K9S para instalação, uso, personalização e dicas.
Quer discutir os recursos do K9S com seus colegas K9sers
ou simplesmente mostrar seu apoio a esta ferramenta?
O K9S está disponível nas plataformas Linux, MacOS e Windows. Binários para Linux, Windows e Mac estão disponíveis como tarballs na página de lançamento.
Via homebrew para macOS ou linux
brew install derailed/k9s/k9s
Via macports
sudo port install k9s
Via Snap for Linux
snap install k9s --devmode
No Arch Linux
pacman -S k9s
Na distribuição do Linux OpenSuse
zypper install k9s
Em FreeBSD
pkg install k9s
No 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
Via winget para janelas
winget install k9s
Via Scoop for Windows
scoop install k9s
Via Chocolatey for Windows
choco install k9s
Via uma instalação
# NOTE: The dev version will be in effect!
go install github.com/derailed/k9s@latest
Via webi para Linux e MacOS
curl -sS https://webinstall.dev/k9s | bash
Via PKGX para Linux e MacOS
pkgx k9s
Via webi para windows
curl.exe -A MS https://webinstall.dev/k9s | powershell
Como uma extensão de desktop do Docker (para o Docker Desktop construído no servidor Kubernetes)
docker extension install spurin/k9s-dd-extension:latest
O K9S está atualmente usando o Go v1.23.x ou acima. Para construir os K9s a partir da fonte, você deve:
Clone o repo
Construir e executar o executável
make build && ./execs/k9s
Você pode executar o K9s como um contêiner do Docker montando seu KUBECONFIG
:
docker run --rm -it -v $KUBECONFIG :/root/.kube/config quay.io/derailed/k9s
Para o caminho padrão, seria:
docker run --rm -it -v ~ /.kube/config:/root/.kube/config quay.io/derailed/k9s
Você pode construir sua própria imagem do Docker de K9s a partir do Dockerfile com o seguinte:
docker build -t k9s-docker:v0.0.1 .
Você pode obter a mais recente versão kubectl
estável e passá-la para o comando docker build
com a opção --build-arg
. Você pode usar a opção --build-arg
para passar por qualquer versão válida kubectl
(como v1.18.0
ou 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 .
Execute seu contêiner:
docker run --rm -it -v ~ /.kube/config:/root/.kube/config k9s-docker:0.1
O K9S usa 256 Modo de terminal de cores. No `Nix System, verifique se o termo está definido de acordo.
export TERM=xterm-256color
Para emitir comandos de edição de recursos, verifique se o seu editor e o kube_editor Env vars estão definidos.
# Kubectl edit command will use this env var.
export KUBE_EDITOR=my_fav_editor
K9s prefere as versões recentes do Kubernetes, ou seja, 1.28+
K9S | cliente 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
Dada a natureza do UI K9s, produz logs para um local específico. Para visualizar os logs e ativar o modo de depuração, use os seguintes comandos:
# 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
Você pode substituir o destino do arquivo de log padrão com o argumento --logFile
:
k9s --logFile /tmp/k9s.log
less /tmp/k9s.log
Ou através da variável de ambiente K9S_LOGS_DIR
:
K9S_LOGS_DIR=/var/log k9s
less /var/log/k9s.log
O K9S usa aliases para navegar na maioria dos recursos do K8S.
Ação | Comando | Comentário |
---|---|---|
Mostre mnemônicos de teclado ativo e ajuda | ? | |
Mostrar todo o alias de recurso disponível | ctrl-a | |
Para sair dos K9s | :quit :q , ctrl-c | |
Para subir/voltar para a visão anterior | esc | Se você tiver migalhas, isso irá para o anterior |
Veja um recurso Kubernetes usando o singular/plural ou o nome de curta duração | : pod⏎ | Aceita singular, plural, nomes de curta duração ou vôs ou vagens |
Veja um recurso Kubernetes em um determinado espaço de nome | : pod ns-x⏎ | |
Exibir pods filtrados (novo v0.30.0!) | : Pod /Fred⏎ | Ver todos os pods filtrados por Fred |
Exibir vagens rotuladas (novo v0.30.0!) | : app app = Fred, Env = dev⏎ | Veja todos os pods com rótulos que correspondem ao aplicativo = Fred e Env = dev |
Veja os pods em um determinado contexto (novo v0.30.0!) | : pod @ctx1⏎ | Veja todos os pods no contexto ctx1. Muda o seu contexto atual do K9S! |
Filtrar uma visualização de recursos com um filtro | / filtro⏎ | Regex2 suportou o IE `Fred |
Filtro regex inverso | / ! filtro⏎ | Mantenha tudo o que não corresponde. |
Filtre a visualização de recursos por etiquetas | / -l etiqueta -seletor⏎ | |
Fuzzy Encontre um recurso com um filtro | / -f filtro⏎ | |
Fiança fora de vista/modo de comando/filtro | <esc> | |
Mapeamento de teclas para descrever, ver, editar, ver registros, ... | d , v , e , l , ... | |
Para visualizar e mudar para outro contexto de Kubernetes (View POD) | : ctx⏎ | |
Para visualizar e mudar diretamente para outro contexto de Kubernetes (última visualização usada) | : ctx context-name⏎ | |
Para visualizar e mudar para outro espaço de nome de Kubernetes | : ns⏎ | |
Para ver todos os recursos salvos | : screendump ou sd⏎ | |
Para excluir um recurso (guia e digite para confirmar) | ctrl-d | |
Para matar um recurso (sem diálogo de confirmação, equivalente a Kubectl delete -agora) | ctrl-k | |
Lançar os pulsos de visualização | : pulsos ou pu⏎ | |
Inicie o XRAY View | : Xray Resource [namespace] ⏎ | O recurso pode ser um dos namespace PO, SVC, DP, RS, STS, DS, é opcional |
Inicie a vista de Popeye | : Popeye ou pop⏎ | Veja Popeye |
O K9S mantém suas configurações como arquivos YAML dentro de um diretório k9s
e o local depende do seu sistema operacional. O K9S aproveita o XDG para carregar seus vários arquivos de configurações. Para obter informações sobre os locais padrão para o seu sistema operacional, consulte este link. Se você ainda estiver confundido, uma rápida k9s info
revelará de onde o K9S está carregando suas configurações. Como alternativa, você pode definir K9S_CONFIG_DIR
para informar ao K9S o local do diretório para extrair suas configurações.
Unix | macos | Windows |
---|---|---|
~/.config/k9s | ~/Library/Application Support/k9s | %LOCALAPPDATA%k9s |
NOTA: Isso ainda está em fluxo e mudará durante o estágio de pré-lançamento!
Agora você pode substituir a configuração de endereço padrão do porto de contexto definindo uma variável Env que pode substituir todos os clusters portforward Local Endereço usando 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
O K9S tem integração com Popeye, que é um desinfetante de cluster de Kubernetes. O próprio Popeye usa uma configuração chamada spinach.yml
, mas ao integrar com o K9S, o arquivo específico do cluster deve ser o nome $XDG_CONFIG_HOME/share/k9s/clusters/clusterX/contextY/spinach.yml
. Isso permite que você tenha uma configuração de espinafre diferente por cluster.
Ao ativar o portão do recurso Nodeshell em um determinado cluster, o K9S permite que você entre nos nós do cluster. Uma vez ativado, você terá uma opção de menu shell
s
estiver na visualização do nó. Os K9s lançarão um pod no nó selecionado usando uma vagem especial K9S_SHELL. Além disso, você pode refinar o seu shell Pod usando uma imagem personalizada do Docker pré -carregada com as ferramentas do shell que você ama. Por padrão, o K9S usa uma imagem BusyBox, mas você pode configurá -la da seguinte maneira:
Como alternativa, agora você pode substituir a configuração de contexto definindo uma variável Env que pode substituir todos os clusters Nó portão de shell usando 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
Então no seu arquivo de configuração de cluster ...
# $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
No K9S, você pode definir seus próprios aliases de comando (nomes shortnes) para acessar seus recursos. Em seu $HOME/.config/k9s
define um arquivo chamado aliases.yaml
. Um alias do K9S define pares de alias: GVR. Um GVR (grupo/versão/recurso) representa um identificador de recursos Kubernetes totalmente qualificado. Aqui está um exemplo de um arquivo de alias:
# $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
Usando este arquivo de aliases, agora você pode digitar :pp
ou :crb
ou :fred
para ativar seus respectivos comandos.
Digitar o modo de comando e digitar um nome ou pseudônimo de recurso, pode ser complicado para navegar por recursos frequentemente usados. Estamos introduzindo teclas de atalho que permitem que os usuários definam sua própria combinação de chaves para ativar suas visualizações favoritas de recursos.
Além disso, você pode definir teclas de atalho específicas do contexto, adicionando um arquivo de configuração no nível de contexto em $XDG_DATA_HOME/k9s/clusters/clusterX/contextY/hotkeys.yaml
Para surgir as teclas de atalho globalmente, siga estas etapas:
Crie um arquivo chamado $XDG_CONFIG_HOME/k9s/hotkeys.yaml
Adicione o seguinte às suas hotkeys.yaml
. Você pode usar o nome do recurso/nome curto para especificar um comando ie o mesmo que digitá -lo enquanto estiver no modo de comando.
# $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
Não está se sentindo tão quente? Suas teclas de atalho personalizadas serão listadas na visualização de ajuda ?
. Além disso, seu arquivo de teclas de atalho será automaticamente recarregado para que você possa usar prontamente suas teclas de atalho à medida que as definir.
Você pode escolher quaisquer atalhos de teclado que façam sentido para você, desde que não façam parte da lista de atalhos padrão do K9S.
Da mesma forma, também é suportado variáveis de ambiente de referência em teclas de atalho. As variáveis de ambiente disponíveis podem se referir à descrição na seção Plugins.
NOTA: Esse recurso/configuração pode mudar em lançamentos futuros!
A partir da v0.25.0, você pode aproveitar o recurso FastForwards
para informar aos K9s como padrão porta-forward. Em situações em que você está lidando com vários contêineres ou recipientes que expondo várias portas, pode ser complicado especificar a porta desejada a partir da caixa de diálogo, como na maioria dos casos, você já sabe qual recipiente/tupla de porta deseja. Para esses casos de uso, agora você pode anotar seus manifestos com as seguintes anotações:
@ k9scli.io/auto-port-forwards
ativa um ou mais port-forwards, ignorando diretamente a caixa de diálogo Port-forward. @ k9scli.io/port-forwards
pré-seleciona uma ou mais portas para iniciar a caixa de diálogo Port-forward.
O valor da anotação assume o container-name::[local-port:]container-port
Nota: Para qualquer um dos casos acima, você pode especificar a porta do contêiner por nome ou número em sua anotação!
# 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
...
O valor da anotação deve especificar um contêiner para encaminhar, bem como uma porta e porta de contêiner local. A porta do contêiner pode ser especificada como um número de porta ou nome da porta. Se a porta local for omitida, a porta local padrão do número da porta do contêiner. Aqui estão alguns exemplos:
bozo
com o nome da porta http. Se o HTTP especificar a porta número 8080, a porta local também será 8080.bozo
mapeando a porta local 9090-> http (8080)bozo
Mapeando Porta Local 9090-> 8080 Sneakcast v0.17.0 na praia! - Sim! O som está chupando, mas que configuração!
Você pode alterar quais colunas aparecem para um determinado recurso por meio de visualizações personalizadas. Para aparecer esse recurso, você precisará criar um novo arquivo de configuração, ou seja, $XDG_CONFIG_HOME/k9s/views.yaml
. Este arquivo aproveita GVR (grupo/versão/recurso) para configurar as colunas de exibição da tabela associadas. Se nenhum GVR for encontrado para uma visão, a renderização padrão assumirá o controle (ou seja, o que temos agora). A largura adicionará todas as colunas restantes disponíveis no recurso fornecido após as colunas personalizadas. Para inicializar, você pode editar o arquivo de configuração de suas visualizações e ajustar suas visualizações de recursos ao vivo!
Nota: Isso é experimental e provavelmente mudará à medida que resolvemos isso!
Aqui está uma configuração de vistas de amostra que personaliza as vistas e vistas de serviços.
# $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
O K9S permite estender sua linha de comando e ferramentas definindo seus próprios comandos de cluster por meio de plugins. Os K9s analisarão $XDG_CONFIG_HOME/k9s/plugins.yaml
para localizar todos os plugins disponíveis.
Um plugin é definido da seguinte maneira:
all
para fornecer este atalho para todas as visualizações.O K9S fornece variáveis de ambiente adicionais para você personalizar os argumentos dos plugins. Atualmente, as variáveis de ambiente disponíveis são as seguintes:
$RESOURCE_GROUP
- O grupo de recursos selecionado$RESOURCE_VERSION
- A versão da API de recurso selecionada$RESOURCE_NAME
- o nome do recurso selecionado$NAMESPACE
- o espaço de nome de recursos selecionado$NAME
- o nome de recurso selecionado$CONTAINER
- o contêiner atual, se aplicável$FILTER
- o filtro atual, se houver$KUBECONFIG
- O local Kubeconfig.$CLUSTER
o nome do cluster ativo$CONTEXT
o nome do contexto ativo$USER
o usuário ativo$GROUPS
Os grupos ativos$POD
enquanto estiver em uma visualização de contêiner$COL-<RESOURCE_COLUMN_NAME>
Use um determinado nome da coluna para um recurso visualizado. Deve ser prefixado por COL-
! Os aparelhos encaracolados podem ser usados para incorporar uma variável de ambiente dentro de outra string ou se o nome da coluna contiver caracteres especiais. (por exemplo ${NAME}-example
ou ${COL-%CPU/L}
)
Isso define um plug-in para visualizar logs em um POD selecionado usando ctrl-l
como atalho.
# $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
Nota: Este é um recurso experimental! As opções e o layout podem mudar nos lançamentos futuros do K9S, pois esse recurso solidifica.
O K9S integra Hey do brilhante e super talentoso Jaana Dogan. Hey
é uma ferramenta da CLI para comparar pontos de extremidade HTTP semelhantes ao Bench AB. Atualmente, esse recurso preliminar suporta o Benchmarking Port-Forwards and Services (leia a tinta sobre isso é muito fresco!).
Para configurar uma porta-forward, você precisará navegar para o PodView, selecione um pod e um contêiner que expõe uma determinada porta. Usando SHIFT-F
surge uma caixa de diálogo para permitir que você especifique uma porta local para encaminhar. Uma vez reconhecido, você pode navegar para o PortForward View (Alias pf
) listando sua porta ativa. Selecionar uma porta de porta e usar CTRL-B
executará uma referência nesse terminal HTTP. Para visualizar os resultados de suas execuções de referência, vá para a visualização de benchmarks (Alias be
). Agora você deve ser capaz de selecionar uma referência e visualizar os detalhes das estatísticas de execução pressionando <ENTER>
. NOTA: Porta-forwards duram apenas a duração da sessão do K9S e serão encerrados na saída.
Inicialmente, os benchmarks serão executados com os seguintes padrões:
A exibição PortForward é apoiada por um novo arquivo de configuração do K9S, a saber: $XDG_DATA_HOME/k9s/clusters/clusterX/contextY/benchmarks.yaml
. Cada cluster ao qual você se conecta terá seu próprio arquivo de configuração de bancada, contendo o nome do contexto K8S para o cluster. As alterações neste arquivo devem atualizar automaticamente a visualização do PortForward para indicar como você deseja executar seus benchmarks.
Os relatórios de resultados dos benchmarks são armazenados em $XDG_STATE_HOME/k9s/clusters/clusterX/contextY
Aqui está uma amostra de referência. Lembre -se de que esse arquivo provavelmente mudará nos lançamentos subsequentes!
# 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!
Nos clusters habilitados para o RBAC, você precisaria fornecer aos recursos de usuários/grupos para que eles possam usar o K9S para explorar seu cluster Kubernetes. O K9S precisa de privilégios de leitura minimamente, tanto no nível do cluster quanto no namespace, para exibir recursos e métricas.
Essas regras abaixo são apenas sugestões. Você precisará personalizá -los com base em suas políticas de ambiente. Se você precisar editar/excluir recursos, Fu extra será necessário.
OBSERVAÇÃO! O acesso ao cluster/namespace pode mudar no futuro à medida que o K9S evolui. OBSERVAÇÃO! Esperamos que os K9s continuem funcionando mesmo em grupos/namespaces atrofiados. Por favor, arquive problemas se não for esse o caso!
---
# 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
Se seus usuários estiverem restritos a determinados espaços para nome, os K9s precisarão seguir a função para permitir o acesso de leitura a recursos de espaço para o nome.
---
# 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
Exemplo: Drácula Skin;)
Você pode estilizar K9s com base no seu próprio senso de aparência e estilo. Skins são arquivos YAML, que permitem que um usuário altere a camada de apresentação do K9S. Veja este diretório skins
repositório para exemplos. Você pode pele K9s por padrão especificando um atributo ui.skin. Você também pode alterar as peles do K9S com base no contexto que também está se conectando. Nesse caso, você pode especificar um campo de pele em sua configuração de cluster, também conhecida como skin: dracula
(apenas o nome do arquivo de pele sem a extensão!) E copie esta repo skins/dracula.yaml
para $XDG_CONFIG_HOME/k9s/skins/
diretório.
No caso em que seu cluster abrange vários contextos, você pode adicionar uma configuração de contexto de pele à sua configuração de contexto. Esta é uma coleção de tuplas {context_name, pele} (por favor, veja o exemplo abaixo!)
As cores podem ser definidas por nome ou usando uma representação hexadecimal. De recentemente, adicionamos uma cor chamada default
para indicar uma cor de fundo transparente para preservar as configurações de cores de fundo do terminal, se desejar.
NOTA: Este é um recurso experimental neste momento, mais será adicionado/modificado se esse recurso tiver pernas, então thread de acordo! NOTA: Consulte o K9S Skins para obter uma lista de cores disponíveis.
Para esfolar um contexto específico e fornecer o arquivo in_the_navy.yaml
está presente no diretório de 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
Você também pode especificar uma pele padrão para todos os contextos no arquivo de configuração ROOT K9S como assim:
# $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
Sem as contribuições dessas pessoas finas, este projeto seria um fracasso!
Isso ainda está em andamento! Se algo estiver quebrado ou houver um recurso que você deseja, registre um problema e, se for indigno, envie um PR!
Os K9s provavelmente explodirão se ...
O K9S está no topo de muitos projetos e bibliotecas de código aberto. Nossas sinceras apreciações a todos os colaboradores da OSS que trabalham noites e fins de semana para tornar esse projeto uma realidade!
Fernand Galiana
Aleksei Romanenko
Sempre gostamos de ouvir pessoas que se beneficiam do nosso trabalho!
© 2023 IMHOTEP Software LLC. Todos os materiais licenciados no Apache v2.0