Consulte nuestro sitio de documentación de K9S para su instalación, uso, personalización y consejos.
¿Quieres discutir las funciones de K9S con tus compañeros K9sers
o simplemente mostrar tu apoyo a esta herramienta?
K9S está disponible en plataformas Linux, MacOS y Windows. Los binarios para Linux, Windows y Mac están disponibles como tarballs en la página de lanzamiento.
A través de HomeBrew para MacOS o Linux
brew install derailed/k9s/k9s
A través de MacPorts
sudo port install k9s
A través de Snap para Linux
snap install k9s --devmode
En Arch Linux
pacman -S k9s
En OpenSuse Linux Distribution
zypper install k9s
En FreeBSD
pkg install k9s
En 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
A través de Winget para Windows
winget install k9s
A través de SCOOP para Windows
scoop install k9s
A través de chocolate para ventanas
choco install k9s
A través de una instalación de Go
# NOTE: The dev version will be in effect!
go install github.com/derailed/k9s@latest
A través de Webi para Linux y MacOS
curl -sS https://webinstall.dev/k9s | bash
A través de PKGX para Linux y MacOS
pkgx k9s
A través de Webi para Windows
curl.exe -A MS https://webinstall.dev/k9s | powershell
Como una extensión de escritorio Docker (para el escritorio Docker incorporado en el servidor Kubernetes)
docker extension install spurin/k9s-dd-extension:latest
K9s está usando actualmente GO V1.23.x o superior. Para construir K9S desde la fuente, debe:
Clonar el repositorio
Construir y ejecutar el ejecutable
make build && ./execs/k9s
Puede ejecutar K9s como contenedor de Docker montando su KUBECONFIG
:
docker run --rm -it -v $KUBECONFIG :/root/.kube/config quay.io/derailed/k9s
Para la ruta predeterminada sería:
docker run --rm -it -v ~ /.kube/config:/root/.kube/config quay.io/derailed/k9s
Puede construir su propia imagen Docker de K9S desde Dockerfile con lo siguiente:
docker build -t k9s-docker:v0.0.1 .
Puede obtener la última versión estable kubectl
y pasarla al comando docker build
con la opción --build-arg
. Puede usar la opción --build-arg
para pasar cualquier versión kubectl
válida (como v1.18.0
o 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 .
Ejecute su contenedor:
docker run --rm -it -v ~ /.kube/config:/root/.kube/config k9s-docker:0.1
K9S utiliza el modo terminal de 256 colores. En el sistema NIX Asegúrese de que el término se establezca en consecuencia.
export TERM=xterm-256color
Para emitir comandos de edición de recursos, asegúrese de que su editor y Kube_Editor Env Vars estén configurados.
# Kubectl edit command will use this env var.
export KUBE_EDITOR=my_fav_editor
K9s prefiere versiones recientes de Kubernetes, es decir, 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 la naturaleza del UI K9S produce registros en una ubicación específica. Para ver los registros y activar el modo de depuración, use los siguientes 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
Puede anular el destino del archivo de registro predeterminado, ya sea con el argumento --logFile
:
k9s --logFile /tmp/k9s.log
less /tmp/k9s.log
O a través de la variable de entorno K9S_LOGS_DIR
:
K9S_LOGS_DIR=/var/log k9s
less /var/log/k9s.log
K9S utiliza alias para navegar la mayoría de los recursos de K8.
Acción | Dominio | Comentario |
---|---|---|
Mostrar mnemónicos de teclado activo y ayuda | ? | |
Mostrar todos los alias de recursos disponibles | ctrl-a | |
Para salir de K9s | :quit , :q , ctrl-c | |
Subir/volver a la vista anterior | esc | Si tienes migajas, esto irá al anterior |
Ver un recurso de Kubernetes utilizando singular/plural o de nombre corto | : Pod⏎ | Acepta alias singular, plural, de nombre corto o alias, es decir, vaina o vaina |
Ver un recurso de Kubernetes en un espacio de nombres | : Pod NS-X⏎ | |
Ver vainas filtradas (¡nuevos V0.30.0!) | : Pod /Fred⏎ | Ver todas las vainas filtradas por Fred |
Ver vainas etiquetadas (¡Nuevo V0.30.0!) | : pod App = Fred, Env = Dev⏎ | Ver todas las cápsulas con etiquetas Aplicación coincidente = Fred y env = Dev |
Ver vainas en un contexto dado (¡nuevo V0.30.0!) | : pod @ctx1⏎ | Ver todas las cápsulas en el contexto CTX1. ¡Cambia su contexto K9S actual! |
Filtrar una vista de recursos dada un filtro | / Filtro⏎ | Regex2 compatible con IE `Fred |
Filtro de regex inverso | / ! filtro⏎ | Mantenga todo lo que no coincida. |
Vista de recursos de filtro por etiquetas | / -L etiqueta -selector⏎ | |
Fuzzy encontrar un recurso dado un filtro | / -f filtro⏎ | |
Salga fuera de vista/comando/modo de filtro | <esc> | |
Mapeo clave para describir, ver, editar, ver registros, ... | d , v , e , l , ... | |
Para ver y cambiar a otro contexto de Kubernetes (Vista POD) | : ctx⏎ | |
Para ver y cambiar directamente a otro contexto de Kubernetes (última vista usada) | : ctx context-name⏎ | |
Para ver y cambiar a otro espacio de nombres de Kubernetes | : ns⏎ | |
Para ver todos los recursos guardados | : scentump o sd⏎ | |
Para eliminar un recurso (pestaña e ingrese para confirmar) | ctrl-d | |
Para matar un recurso (sin diálogo de confirmación, equivalente a kubectl eliminar --now) | ctrl-k | |
Vista de pulsos de lanzamiento | : pulsos o pu⏎ | |
Iniciar visualización xray | : xray recurso [espacio de nombres] ⏎ | El recurso puede ser uno de PO, SVC, DP, RS, STS, DS, el espacio de nombres es opcional |
Iniciar vista de Popeye | : Popeye o Pop⏎ | Ver Popeye |
K9S mantiene sus configuraciones como archivos YAML dentro de un directorio k9s
y la ubicación depende de su sistema operativo. K9s aprovecha XDG para cargar sus diversos archivos de configuración. Para obtener información sobre las ubicaciones predeterminadas para su sistema operativo, consulte este enlace. Si todavía está confundido, una k9s info
revelará de dónde está cargando K9s sus configuraciones. Alternativamente, puede configurar K9S_CONFIG_DIR
para decirle a K9S la ubicación del directorio para extraer sus configuraciones.
Desastre | macosa | Windows |
---|---|---|
~/.config/k9s | ~/Library/Application Support/k9s | %LOCALAPPDATA%k9s |
Nota: ¡Esto todavía está en flujo y cambiará mientras esté en la etapa previa al lanzamiento!
Ahora puede anular el contexto de la configuración de la dirección predeterminada de Portforward configurando una variable ENV que puede anular todos los clústeres de la dirección local de Portforward 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
K9S tiene integración con Popeye, que es un desinfectante de clúster de Kubernetes. Popeye utiliza una configuración llamada spinach.yml
, pero al integrar con K9s, el archivo específico de clúster debe ser un nombre $XDG_CONFIG_HOME/share/k9s/clusters/clusterX/contextY/spinach.yml
. Esto le permite tener una configuración de espinacas diferente por clúster.
Al habilitar la puerta de característica de nodeshell en un clúster dado, K9s le permite cubrir sus nodos de clúster. Una vez habilitado, tendrá una nueva opción de menú s
para shell
mientras está en la vista de nodo. K9S lanzará una POD en el nodo seleccionado utilizando una cápsula especial K9S_Shell. Además, puede refinar su vaina de shell utilizando una imagen de Docker personalizada precargada con las herramientas de shell que le encantan. Por defecto, K9S usa una imagen de BusyBox, pero puede configurarla de la siguiente manera:
Alternativamente, ahora puede anular la configuración de contexto estableciendo una variable ENV que puede anular todas las compuertas de shell de nodo Clusters 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
Luego en su archivo de configuración de clúster ...
# $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
En K9s, puede definir sus propios alias de comando (nombres cortos) para acceder a sus recursos. En su $HOME/.config/k9s
define un archivo llamado aliases.yaml
. Un alias K9S define pares de alias: GVR. Un GVR (grupo/versión/recurso) representa un identificador de recursos Kubernetes totalmente calificado. Aquí hay un ejemplo de un archivo 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 archivo de alias, ahora puede escribir :pp
o :crb
o :fred
para activar sus respectivos comandos.
Ingresar el modo de comando y escribir un nombre o alias de recurso podría ser engorroso para navegar a través de recursos a menudo usados. Estamos presentando teclas de acceso rápido que permiten a los usuarios definir su propia combinación clave para activar sus vistas de recursos favoritas.
Además, puede definir teclas de acceso rápido específicas de contexto agregando un archivo de configuración de nivel de contexto en $XDG_DATA_HOME/k9s/clusters/clusterX/contextY/hotkeys.yaml
Para superficie de las teclas de acceso rápido a nivel mundial, siga estos pasos:
Cree un archivo llamado $XDG_CONFIG_HOME/k9s/hotkeys.yaml
Agregue lo siguiente a sus hotkeys.yaml
. Puede usar el nombre del recurso/nombre corto para especificar un comando, es decir, escribirlo mientras está en 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
¿No te sientes tan caliente? ¿Sus teclas de acceso rápido personalizadas se enumerarán en la vista de ayuda ?
. Además, su archivo de teclas de acceso rápido se volverá a cargar automáticamente para que pueda usar fácilmente sus teclas de acceso rápido a medida que las define.
Puede elegir los atajos de teclado que tengan sentido para usted, siempre que no formen parte de la lista estándar de atajos de K9s.
Del mismo modo, también es compatible con las variables de entorno de referencia en teclas de acceso rápido. Las variables de entorno disponibles pueden referirse a la descripción en la sección de complementos.
Nota: ¡Esta característica/configuración podría cambiar en futuras versiones!
A partir de V0.25.0, puede aprovechar la función FastForwards
para decirle a K9S cómo predeterminar el puerto de porta. En situaciones en las que está tratando con múltiples contenedores o contenedores que exponen múltiples puertos, puede ser engorroso especificar el puerto deseado hacia adelante desde el cuadro de diálogo Como en la mayoría de los casos, ya sabe qué contenedor/tupla de puertos desea. Para estos casos de uso, ahora puede anotar sus manifiestas con las siguientes anotaciones:
@ k9scli.io/auto-port-forwards
activa uno o más puerto hacia adelante sin pasar por alto el cuadro de diálogo de puerto hacia adelante. @ k9scli.io/port-forwards
preelecciona uno o más puerto hacia adelante al iniciar el cuadro de diálogo de puerto.
El valor de anotación toma el container-name::[local-port:]container-port
Nota: ¡Para cualquiera de los casos anteriores, puede especificar el puerto del contenedor por nombre o número en su anotación!
# 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
...
El valor de anotación debe especificar un contenedor para reenviar a un puerto local y un puerto de contenedor. El puerto del contenedor puede especificarse como un número de puerto o nombre del puerto. Si se omite el puerto local, entonces el puerto local se debe por defecto al número de puerto del contenedor. Aquí hay algunos ejemplos:
bozo
con el nombre del puerto http. Si HTTP especifica el número de puerto 8080, entonces el puerto local también será 8080.bozo
Puerto local 9090-> HTTP (8080)bozo
Puerto local 9090-> 8080 Sneakcast V0.17.0 en la playa! - ¡Sí! El sonido es chupar, ¡pero qué escenario!
Puede cambiar qué columnas aparecen para un recurso dado a través de vistas personalizadas. Para producir esta función, deberá crear un nuevo archivo de configuración, a saber, $XDG_CONFIG_HOME/k9s/views.yaml
. Este archivo aprovecha GVR (grupo/versión/recurso) para configurar las columnas de vista de tabla asociadas. Si no se encuentra GVR para una vista, la representación predeterminada se hará cargo (es decir, lo que tenemos ahora). Ir de par en par agregará todas las columnas restantes que están disponibles en el recurso dado después de sus columnas personalizadas. ¡Para arrancar, puede editar el archivo de configuración de su visión y ajustar sus vistas de recursos en vivo!
Nota: ¡Esto es experimental y probablemente cambiará a medida que plancemos esto!
Aquí hay una configuración de vistas de muestra que personaliza las vistas de los pods y los servicios.
# $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 le permite extender su línea de comando y herramientas definiendo sus propios comandos de clúster a través de complementos. K9S verá $XDG_CONFIG_HOME/k9s/plugins.yaml
para localizar todos los complementos disponibles.
Un complemento se define de la siguiente manera:
all
para proporcionar este atajo para todas las vistas.K9S proporciona variables de entorno adicionales para que pueda personalizar sus argumentos de complementos. Actualmente, las variables de entorno disponibles son las siguientes:
$RESOURCE_GROUP
: el grupo de recursos seleccionado$RESOURCE_VERSION
: la versión de API de recursos seleccionada$RESOURCE_NAME
- el nombre de recurso seleccionado$NAMESPACE
- El espacio de nombres de recursos seleccionados$NAME
: el nombre de recurso seleccionado$CONTAINER
: el contenedor actual si corresponde$FILTER
: el filtro actual si lo hay$KUBECONFIG
- La ubicación de Kubeconfig.$CLUSTER
el nombre de clúster activo$CONTEXT
el nombre de contexto activo$USER
el usuario activo$GROUPS
los grupos activos$POD
mientras esté en una vista de contenedor$COL-<RESOURCE_COLUMN_NAME>
Use un nombre de columna dado para un recurso visto. Debe ser prefijado por COL-
! Los aparatos ortopédicos rizados se pueden usar para incrustar una variable de entorno dentro de otra cadena, o si el nombre de la columna contiene caracteres especiales. (por ejemplo, ${NAME}-example
o ${COL-%CPU/L}
)
Esto define un complemento para ver los registros en una cápsula seleccionada utilizando ctrl-l
as Fastcut.
# $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: ¡Esta es una característica experimental! Las opciones y el diseño pueden cambiar en futuras versiones de K9s a medida que esta característica se solidifica.
K9S integra a Hey de la brillante y súper talentosa Jaana Dogan. Hey
es una herramienta CLI para comparar puntos finales HTTP similares a AB Bench. Esta característica preliminar actualmente admite la evaluación comparativa de puertos y servicios (¡lea la pintura sobre esto es fresco!).
Para configurar un puerto hacia adelante, deberá navegar hasta el podview, seleccionar una vaina y un contenedor que exponga un puerto dado. Uso de SHIFT-F
Un diálogo surge para permitirle especificar un puerto local para reenviar. Una vez reconocido, puede navegar a la vista de Portforward (alias pf
) que enumera su puerto activo hacia adelante. Seleccionar un puerto hacia adelante y usar CTRL-B
ejecutará un punto de referencia en ese punto final HTTP. Para ver los resultados de sus ejecuciones de referencia, vaya a la vista de referencia (alias be
). Ahora debería poder seleccionar un punto de referencia y ver los detalles de las estadísticas de ejecución presionando <ENTER>
. Nota: El puerto de porción solo dura la duración de la sesión K9S y se terminará al salir.
Inicialmente, los puntos de referencia se ejecutarán con los siguientes valores predeterminados:
La vista Portforward está respaldada por un nuevo archivo de configuración de K9S, a saber: $XDG_DATA_HOME/k9s/clusters/clusterX/contextY/benchmarks.yaml
. Cada clúster al que se conecta tendrá su propio archivo de configuración de banco, que contiene el nombre del contexto K8S para el clúster. Los cambios en este archivo deben actualizar automáticamente la vista Portforward para indicar cómo desea ejecutar sus puntos de referencia.
Los informes de resultados de referencia se almacenan en $XDG_STATE_HOME/k9s/clusters/clusterX/contextY
Aquí hay un ejemplo de referencia. Configuración de Yaml. ¡Tenga en cuenta que este archivo probablemente cambiará en los lanzamientos posteriores!
# 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!
En los clústeres habilitados para RBAC, necesitaría dar a sus usuarios/grupos capacidades para que puedan usar K9 para explorar su clúster Kubernetes. K9S necesita privilegios de lectura mínima tanto a nivel de clúster como en el espacio de nombres para mostrar recursos y métricas.
Estas reglas a continuación son solo sugerencias. Deberá personalizarlos en función de sus políticas de entorno. Si necesita editar/eliminar recursos, será necesario extra FU.
¡NOTA! El acceso al clúster/espacio de nombres puede cambiar en el futuro a medida que evoluciona K9s. ¡NOTA! Esperamos que los K9 sigan funcionando incluso en clústeres/espacios de nombres atrofiados. ¡Presente los problemas si este no es el 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
Si sus usuarios están limitados a ciertos espacios de nombres, K9s deberá seguir el rol para permitir el acceso de lectura a los recursos con nombrados.
---
# 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
Ejemplo: Skin Drácula;)
Puedes diseñar K9 en función de tu propio sentido de look y estilo. Las pieles son archivos YAML, que permiten a un usuario cambiar la capa de presentación K9S. Vea este Directorio skins
Repo para ver ejemplos. Puede skin K9s de forma predeterminada especificando un atributo UI.skin. También puede cambiar las pieles de K9S en función del contexto que también está conectando. En este caso, puede especificar un campo de piel en su clúster Config, también conocido como skin: dracula
(¡solo el nombre del archivo de piel sin la extensión!) Y copiar esta repositorio skins/dracula.yaml
a $XDG_CONFIG_HOME/k9s/skins/
Directory.
En el caso de que su clúster abarque varios contextos, puede agregar una configuración de contexto de piel a su configuración de contexto. Esta es una colección de {context_name, skin} tuples (¡vea el ejemplo a continuación!)
Los colores se pueden definir por nombre o usar una representación hexadecimal. De reciente, hemos agregado un color llamado default
para indicar un color de fondo transparente para preservar la configuración de color de fondo terminal si así lo desea.
Nota: Esta es en gran medida una característica experimental en este momento, se agregará/modificará más si esta característica tiene piernas, ¡así que en consecuencia! Nota: Consulte las pieles de K9s para obtener una lista de colores disponibles.
Para cuidar un contexto específico y proporcionar el archivo in_the_navy.yaml
está presente en su directorio 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
También puede especificar una piel predeterminada para todos los contextos en el archivo de configuración de K9S Root como así:
# $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
Sin las contribuciones de estas buenas personas, ¡este proyecto sería un fracaso total!
¡Esto sigue funcionando en progreso! Si algo está roto o hay una característica que desea, por favor presente un problema y si así inclina envía un PR!
Los K9 probablemente explotan si ...
K9S se encuentra en la cima de muchos proyectos y bibliotecas de código abierto. ¡Nuestras sinceras apreciaciones a todos los contribuyentes de OSS que trabajan noches y fines de semana para hacer realidad este proyecto!
Fernand Galiana
Aleksei Romanenko
¡Siempre nos gusta escuchar a las personas que se benefician de nuestro trabajo!
© 2023 Imhotep Software LLC. Todos los materiales con licencia bajo Apache v2.0