[云原生] K9S:与 Kubernetes 集群交互的开源终端 UI

  • 推荐一款能够便捷地与 Kubenates 集群及其内服务交互的开源终端 UI 工具。

确实帮了我的大忙。

概述:K9s

简介

  • K9s 提供了一个终端 UI 来与您的 Kubernetes 集群进行交互。
  • 该项目的目的是使其更易于导航、观察和管理 您的应用程序在野外。
  • K9s 持续监视 Kubernetes 进行更改,并提供后续命令以与观察到的资源进行交互。
  • License : Apache 2.0

  • Kubernetes 是什么?

  • Kubernetes是一个容器编排平台,可以自动化地部署、扩展和管理容器化应用程序。
  • 它是一个开源项目,由Google开发并维护。
  • Kubernetes可以在多个云平台上运行,包括AWS、Azure和Google Cloud等。
  • Kubernetes支持多种容器运行时,包括Docker和rkt等。
  • Kubernetes还支持持久卷,可以为Pod提供数据存储服务。
  • Kubernetes网络是支持容器化应用动态和分布式特性的关键因素,您可以通过实施网络策略和服务来确保为Kubernetes集群建立一个稳健、安全和高效的环境。

安装篇

Step1 安装 on Windows 10

  • 下载、解压即安装

k9s.exe

  • 配置环境变量(K9S_HOME)【可选步骤,但强烈建议】

便于平时使用CMD命令k9s 即可调用启动

  • K9S_HOME
D:\Program\K9s\

  • Path 追加配置值
%K9S_HOME%

此时k9s已算是配置好了。现在,在自己的用户名文档下新建个.k9s文件夹,假定14218是我机器的用户名,如下图

  • 再顺便建个.kube的文件夹,后面会用到。

Step2 安装kubectl on Windows 10

  • 一键下载即安装

kubectl.exe

curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/windows/amd64/kubectl.exe

D:\Program\kubectl\kubectl.exe

  • 设置环境变量KUBECTL_HOME (可选步骤,强烈推荐)
KUBECTL_HOME 配置:
    D:\Program\kubectl\

Path 追加:
    %KUBECTL_HOME%
  • 查验使用
kubectl version

出现以下信息表示正确安装和设置.

Step3 下载集群的yaml文件

  • 登录远程服务器下载yaml配置文件

图3-1

图3-2

  • 到上述的.kube文件夹中新建文本并将红框中的内容粘贴进去,修改ip后保存为yaml格式。

为了好管理,我在其新建个config文件夹来存放不同集群的yaml

  • 接下来同样要将.kube下的yaml设置个环境变量(KUBECONFIG),如图

图3-3

图3-4

一定要设置个变量名相同的KUBECONFIG环境变量,指向.kube目录下的yaml文件,不设置或设置错的环境变量名会报找不到变量的错误。

更多的请看 https://k8smeetup.github.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/

  • 上面所有操作都做完后就可以直接在dos命令行中输入 kubectl get no 和其他kubectl等等命令来操作图-12中的集群了

图3-5

  • 或者直接输入k9s

图3-6

  • 运行命令后在.kube.k9s这两个文件夹中会多出图下文件

图3-7

图3-8

参考文献

功能使用篇

常用命令

  • 选择命名空间
ns {命名空间}
  • 服务列表
svc

查看K9S版本

k9s version

查看k93信息

  • linux 上
[root@localhost ~]# k9s info
 ____  __.________       
|    |/ _/   __   \______
|      < \____    /  ___/
|    |  \   /    /\___ \ 
|____|__ \ /____//____  >
        \/            \/ 

Configuration:   /root/.k9s/config.yml
Logs:            /tmp/k9s-root.log
Screen Dumps:    /tmp/k9s-screens-root
  • windows 上
C:\Users\xxx>k9s info
 ____  __.________
|    |/ _/   __   \______
|      < \____    /  ___/
|    |  \   /    /\___ \
|____|__ \ /____//____  >
        \/            \/

Version:           v0.32.7
Config:            C:\Users\xxx\AppData\Local\k9s\config.yaml
Custom Views:      C:\Users\xxx\AppData\Local\k9s\views.yaml
Plugins:           C:\Users\xxx\AppData\Local\k9s\plugins.yaml
Hotkeys:           C:\Users\xxx\AppData\Local\k9s\hotkeys.yaml
Aliases:           C:\Users\xxx\AppData\Local\k9s\aliases.yaml
Skins:             C:\Users\xxx\AppData\Local\k9s\skins
Context Configs:   C:\Users\xxx\AppData\Local\k9s\clusters
Logs:              C:\Users\xxx\AppData\Local\k9s\k9s.log
Benchmarks:        C:\Users\xxx\AppData\Local\k9s\benchmarks
ScreenDumps:       C:\Users\xxx\AppData\Local\k9s\screen-dumps

Deployments

deployments

Pods

Pods 管理

pods

  • CMD: kubectl get pods
C:\Users\XXX>kubectl get pods -n cluster-dev
NAME                                            READY   STATUS             RESTARTS          AGE
xxx-auth-67874bc759-m4mbj                       1/1     Running            0                 16h
xxx-auth-7f477678db-6jbw9                       0/1     Pending            0                 11h
xxx-gateway-64b4457677-6vhfj                    0/1     CrashLoopBackOff   139 (3m40s ago)   11h
xxx-gateway-7b9df8965b-gt4n9                    1/1     Running            0                 16h
xxx-platform-web-web-service-76c6458b94-wg9jc   1/1     Running            0                 4d19h
xxx-system-58c9d77d95-6xtvb                     1/1     Running            0                 46h
xxx-system-5cc9bd9ffd-bgfjg                     0/1     CrashLoopBackOff   139 (3m29s ago)   11h
xxxbackend-service-744d55cbdb-wtrdg             1/1     Running            0                 16h
xxxfile-server-594fbb6588-z4wl2                 1/1     Running            0                 16h
xxxfile-server-867f6f8ffb-qtjph                 0/1     CrashLoopBackOff   139 (2m4s ago)    11h
  • -n : 命名空间

单个 Pod 操作

  • k9s: 进入 Pod 内部
s

root@xxxbackend-service-677fxxxccff-krdqb:/# tail -500f ./logs/xxx-backend/xxx-backend-service.log

不安装 kubectl 时,将报错误:Shell exec failed: kubectl command is not in your path: exec: "kubectl": executable file not found in %PATH%

注意1:此命令依赖【kubectl
注意2:推荐 Windows Terminal ,而非 CMD。Terminal 的安装URL,参见【推荐文献】

  • 进入指定 Pod 的交互式 shell
C:\Users\xxx>kubectl -n cluster-uat exec -it xxxbackend-service-7cf7fbc5f4-5gcqj -- ls /logs
//略

C:\Users\xxx>kubectl -n cluster-uat exec -it xxxbackend-service-7cf7fbc5f4-5gcqj -- /bin/bash
...//Pod内的操作,略

root@xxxbackend-service-7cf7fbc5f4-5gcqj:/# exit
exit
command terminated with exit code 130
C:\Users\xxx>
  • 查看指定 Pod 的详细信息(提供Pod资源的状态、配置和事件、异常情况等)

CMD: kubectl -n {Namespace} describe pod {PodName}

  • 强制删除指定 Pod

CMD: kubectl delete pod {PODNAME} -n {NAMESPACE} --grace-period=0 --force

C:\Users\XXX> kubectl delete pod xxx-gateway-64b4457677-6vhfj -n cluster-dev --grace-period=0 --force
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
pod "xxx-gateway-64b4457677-6vhfj" force deleted

Logs

Y 推荐文献

  • K9s 【推荐】
  • Windows Terminal 【推荐此终端,而非CMD】

解压即安装

Kubernetes 安装部署 / K8s核心组件的解读: kubelet / kubeadm / kubectl

X 参考文献

posted @ 2025-04-07 23:47  千千寰宇  阅读(175)  评论(0)    收藏  举报