インストール、使用、カスタマイズ、ヒントについては、K9Sドキュメントサイトを参照してください。
K9S機能について仲間のK9sers
と話し合うのか、このツールのサポートを単に示したいですか?
K9Sは、Linux、MacOS、およびWindowsプラットフォームで入手できます。 Linux、Windows、Macのバイナリは、リリースページのTarballsとして利用できます。
MacosまたはLinuxのHomebrewを介して
brew install derailed/k9s/k9s
MacPorts経由
sudo port install k9s
LinuxのSnapを介して
snap install k9s --devmode
Arch Linuxで
pacman -S k9s
OpenSuse Linux Distributionについて
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
Windet for Windows経由
winget install k9s
Windows用のスクープ経由
scoop install k9s
窓用のチョコレートのように
choco install k9s
GOインストール経由
# NOTE: The dev version will be in effect!
go install github.com/derailed/k9s@latest
LinuxとMacosのWebi経由
curl -sS https://webinstall.dev/k9s | bash
LinuxおよびMacOSのPKGXを介して
pkgx k9s
Windis for Windowsを介して
curl.exe -A MS https://webinstall.dev/k9s | powershell
Dockerデスクトップ拡張機能として(Kubernetesサーバーに組み込まれたDockerデスクトップ用)
docker extension install spurin/k9s-dd-extension:latest
K9Sは現在、GO v1.23.x以上を使用しています。ソースからK9を構築するには、次のことが必要です。
レポをクローンします
実行可能ファイルを構築して実行します
make build && ./execs/k9s
KUBECONFIG
マウントすることにより、K9SをDockerコンテナとして実行できます。
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
以下を使用して、DockerFileからK9Sの独自のDocker画像を作成できます。
docker build -t k9s-docker:v0.0.1 .
最新の安定したkubectl
バージョンを取得して、 --build-arg
オプションを使用してdocker build
コマンドに渡すことができます。 --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
UI 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リソースをナビゲートします。
アクション | 指示 | コメント |
---|---|---|
アクティブなキーボードのニーモニックとヘルプを表示します | ? | |
利用可能なすべてのリソースエイリアスを表示します | ctrl-a | |
K9から保釈する | :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 and env = dev |
特定のコンテキストでポッドを表示します(新しいv0.30.0!) | : pod @ctx1⏎ | コンテキストCTX1ですべてのポッドを表示します。現在のK9Sコンテキストを切り替えます! |
フィルターを与えられたリソースビューを除外します | / filter⏎ | Regex2はIE `Fredをサポートしました |
逆の正規表現フィルター | / !フィルター | 一致しないものをすべて保持します。 |
ラベルでリソースビューをフィルターします | / -lラベルセレクター⏎ | |
ファジーフィルターが与えられたリソースを見つけます | / -fフィルター | |
視聴/コマンド/フィルターモードの保釈 | <esc> | |
記述、表示、編集、表示ログなどのキーマッピング... | d 、 v 、 e 、 l 、... | |
別のkubernetesコンテキストを表示して切り替える(ポッドビュー) | : ctx⏎ | |
別のkubernetesコンテキストを表示して直接切り替えるには(最後に使用されているビュー) | : ctx context-name⏎ | |
別のkubernetesネームスペースを表示して切り替える | : ns⏎ | |
保存されたすべてのリソースを表示します | : screendumpまたはsd⏎ | |
リソースを削除するには(タブと入力して確認) | ctrl-d | |
リソースを殺すには(確認ダイアログなし、kubectl deleteに相当します - now) | ctrl-k | |
パルスビューを起動します | : パルスまたはプー | |
Xrayビューを起動します | : Xray Resource [名前空間]⏎ | リソースは、PO、SVC、DP、RS、STS、DS、名前空間のいずれかです。 |
Popeyeビューを起動します | : ポパイまたはポップ | Popeyeを参照してください |
K9Sは、 k9s
ディレクトリ内のYAMLファイルとして構成を保持し、場所はオペレーティングシステムに依存します。 K9SはXDGを活用して、さまざまな構成ファイルをロードします。 OSのデフォルトの場所の詳細については、このリンクをご覧ください。まだ混乱している場合は、 k9s info
K9Sが構成をロードしている場所を明らかにします。または、 K9S_CONFIG_DIR
を設定して、K9Sにディレクトリの場所を指示して構成を引き出すことができます。
Unix | macos | Windows |
---|---|---|
~/.config/k9s | ~/Library/Application Support/k9s | %LOCALAPPDATA%k9s |
注:これはまだ流動的であり、リリース前の段階で変化します!
これで、 K9S_DEFAULT_PF_ADDRESS=abcd
使用して、すべてのクラスターをオーバーライドできるENV変数を設定することにより、コンテキストポートフォーワードのデフォルトアドレス構成をオーバーライドできます。
# $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は、Kubernetesクラスター消毒剤であるPopeyeと統合されています。 Popeye自体はspinach.yml
という構成を使用しますが、K9Sと統合する場合、クラスター固有のファイルは$XDG_CONFIG_HOME/share/k9s/clusters/clusterX/contextY/spinach.yml
という名前でなければなりません。これにより、クラスターごとに異なるほうれん草の構成を作成できます。
特定のクラスターでノデシェル機能ゲートを有効にすることにより、K9Sを使用すると、クラスターノードにシェルできます。有効になると、ノードビュー中にshell
メニューオプション用の新しいs
が表示されます。 K9Sは、特別なK9S_SHELL PODを使用して、選択したノードでポッドを起動します。さらに、愛するシェルツールでプリロードされたカスタムドッカーイメージを使用して、シェルポッドを改良することができます。デフォルトでは、K9SはBusybox画像を使用しますが、次のように構成できます。
または、 K9S_FEATURE_GATE_NODE_SHELL=true|false
を使用してすべてのクラスターをオーバーライドできるENV変数を設定することにより、コンテキスト構成をオーバーライドすることができます。
# $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では、自分のコマンドエイリアス(ShortNames)を定義してリソースにアクセスできます。 $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
、それぞれのコマンドをアクティブにします。
コマンドモードを入力して、リソース名またはエイリアスを入力することは、よく使用されるリソースを介してナビゲートするのは面倒です。ユーザーが独自の重要な組み合わせを定義して、お気に入りのリソースビューをアクティブ化できるホットキーを紹介しています。
さらに、 $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ショートカットリストの一部ではない場合、自分にとって意味のあるキーボードショートカットを選択できます。
同様に、ホットキーの環境変数の参照もサポートされています。使用可能な環境変数は、プラグインセクションの説明を参照できます。
注:この機能/構成は、将来のリリースで変更される可能性があります!
V0.25.0の時点で、 FastForwards
機能を活用して、ポートフォワードをデフォルトする方法をK9Sに伝えることができます。複数のコンテナまたはコンテナを扱っている状況では、複数のポートを露出させると、ほとんどの場合、どのコンテナ/ポートタプルが希望するように、ダイアログから目的のポートフォワードを指定するのは面倒です。これらのユースケースでは、次の注釈でマニフェストに注釈を付けることができます。
@ k9scli.io/auto-port-forwards
ポートフォワードダイアログをすべて一緒に直接バイパスする1つ以上のポートフォワードをアクティブにします。 @ k9scli.io/port-forwards
ポートフォワードダイアログを起動する際に、ポートフォワードを1つ以上選択します。
注釈値は、形状の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
にPFを作成します。 HTTPがポート番号8080を指定した場合、ローカルポートも8080になります。bozo
マッピングローカルポート9090-> HTTP(8080)bozo
マッピングローカルポート9090-> 8080 ビーチでスニークキャストv0.17.0! - うん!音は吸っていますが、なんと設定でしょう!
カスタムビューを介して特定のリソースに表示される列を変更できます。この機能を表現するには、新しい構成ファイル、つまり$XDG_CONFIG_HOME/k9s/views.yaml
を作成する必要があります。このファイルは、GVR(グループ/バージョン/リソース)を活用して、関連するテーブルビュー列を構成します。ビューの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-
でプレフィックスする必要があります! Curly Bracesを使用して、別の文字列に環境変数を埋め込むことができます。列名に特殊文字が含まれている場合。 (例${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は、華麗で非常に才能のあるJaana DoganからHeyを統合しています。 Hey
ABベンチと同様のHTTPエンドポイントをベンチマークするCLIツールです。この予備的な機能は現在、ベンチマークのポートフォワードとサービスをサポートしています(これについての塗料を読むのはとても新鮮です!)。
ポートフォワードをセットアップするには、PodViewに移動し、特定のポートを露出するポッドとコンテナを選択する必要があります。 SHIFT-F
の使用ダイアログが表示され、ローカルポートを指定できるようになります。確認されたら、アクティブなポートフォワードをリストアップするPortforward View(Alias pf
)に移動できます。ポートフォワードを選択し、 CTRL-B
使用すると、そのHTTPエンドポイントのベンチマークが実行されます。ベンチマーク実行の結果を表示するには、ベンチマークビュー(エイリアスbe
)に移動します。これで、ベンチマークを選択し、 <ENTER>
を押して実行統計の詳細を表示できるようになりました。注:ポートフォワードは、K9Sセッションの期間中にのみ持続し、終了時に終了します。
当初、ベンチマークは次のデフォルトで実行されます。
ポートフォワードビューは、新しいK9S構成ファイル、すなわち$XDG_DATA_HOME/k9s/clusters/clusterX/contextY/benchmarks.yaml
に裏付けられています。接続する各クラスターには、クラスターのK8Sコンテキストの名前が含まれている独自のベンチ構成ファイルがあります。このファイルの変更は、ベンチマークを実行する方法を示すために、ポートフォワードビューを自動的に更新する必要があります。
ベンチマーク結果レポートは$XDG_STATE_HOME/k9s/clusters/clusterX/contextY
に保存されます
サンプルベンチマークは次のとおりです。yaml設定。このファイルが後続のリリースで変更される可能性が高いことに注意してください!
# 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クラスターを探索できるように、ユーザー/グループの機能を提供する必要があります。 K9は、リソースとメトリックを表示するには、クラスターレベルと名前空間レベルの両方で最小限の読み取り特権を必要とします。
以下のこれらのルールは、単なる提案です。環境ポリシーに基づいてカスタマイズする必要があります。リソースを編集/削除する必要がある場合は、追加の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
例:ドラキュラスキン;)
あなた自身の外観とスタイルの感覚に基づいてK9をスタイリングできます。スキンはYAMLファイルであり、ユーザーがK9Sプレゼンテーションレイヤーを変更できるようにします。例については、このリポジトリskins
ディレクトリを参照してください。 ui.skin属性を指定することにより、デフォルトでK9をスキンできます。また、接続しているコンテキストに基づいてK9Sスキンを変更することもできます。この場合、クラスター構成別のスキンフィールドを指定しますskin: dracula
(拡張機能なしのスキンファイルの名前だけです!)を指定し、このレポジンskins/dracula.yaml
を$XDG_CONFIG_HOME/k9s/skins/
ディレクトリにコピーできます。
クラスターがいくつかのコンテキストにまたがる場合、コンテキスト構成にスキンコンテキスト構成を追加できます。これは{context_name、skin}のタプルのコレクションです(以下の例を参照してください!)
色は、名前または16進表現を使用して定義できます。最近では、必要に応じて端末の背景色設定を維持するために、透明な背景色を示すdefault
という名前の色を追加しました。
注:これは現時点では非常に実験的な機能であり、この機能に脚がある場合は追加/変更されます。注:利用可能な色のリストについては、K9Sスキンをご覧ください。
特定のコンテキストをスキンするために、 in_the_navy.yaml
スキンディレクトリに存在するファイルを提供します。
# $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
ルートK9S構成ファイルのすべてのコンテキストにデフォルトスキンを指定することもできます。
# $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
これらの優れた人々からの貢献がなければ、このプロジェクトは完全にDUDになります!
これはまだ進行中です!何かが壊れている場合、または必要な機能がある場合は、問題を提出してください。
K9Sはおそらく爆発するでしょう...
K9Sは、多くのオープンソースプロジェクトとライブラリの上に座っています。このプロジェクトを実現するために夜と週末に働くすべてのOSS貢献者に心から感謝します!
フェルナンド・ガリアナ
アレクセイ・ロマネンコ
私たちはいつも私たちの仕事の恩恵を受ける人々からの連絡を楽しんでいます!
©2023 iMhotep Software LLC。 Apache v2.0に基づいて認可されたすべての材料