K8s图形化工具

使用图形化界面高效管理K8s


同学们大家好,我们安装好了集群之后,就可以使用kubectl客户端工具,或者是一些图形化界面,去操作和管理我们的集群了。那我们接下来先用kubectl去操作一下我们的集群,对我们的集群有一个最基本的认知。

好,我们可以首先使用kubectl get nodes,来查看当前集群有哪些节点,一共有多少个节点。比如说现在有两个节点,并且它的状态是Ready的状态。注意它有一个角色,这个角色有一个control-plane,就说明它是一个主节点。如果是node或者是NN之类的标签,它可能就是一个从节点。OK,然后它是在24个小时之前创建的,然后它的版本是1.29.2。

如果你还想进一步地去看一下它的其他信息,可以在后面加一个-o yaml,可以看到它的IP地址,也就是我们节点的IP地址。你可以看到和当前这个节点IP地址是一样的。这个就是我们另外一个节点的IP地址,以及它的系统的版本,还有就是我们用的runtime的版本号是多少,以及用的是哪一个runtime,还有它的系统的内核,这些都是和我们的系统是一样的。我们可以看一下,版本号是一样的,系统的版本是一样的,以及我们的内核也是一样的。好,这个是查看节点的状态。

我们也可以去查看集群的信息,我们可以使用cluster-info,你可以看到当前的control plane是运行在这个端口号,以及它的服务地址码头,还有一些简单的信息。好,这两个比较简单,并不是特别重要。

还有一个就是我们可以使用kubectl get pods,来看一下当前集群运行了哪些pod。pod是什么东西呢?pod就是用来管理容器的,容器里面就是运行我们的程序。

好,来我们可以使用get pods,当然了也可以使用它的缩写get po。你可以发现它说”No resources found in default namespace”,也就是说我们的default命名空间下是没有资源的,因为K8s它是有命名空间限制的。所以我们并没有在当前的命名空间去创建一个资源,所以它是查看不出来的。

我们这个集群是使用kubeadm去安装的,把我们之前讲到的一些系统组件,以pod的方式运行在一个叫做kube-system的命名空间下。我们可以使用kubectl get pods -n kube-system,”-n”就是指定它的命名空间,我们可以回车,就可以看到我们之前讲过的一些组件了,比如说kube-apiserver、kube-controller-manager,还有我们的etcd以及我们的kube-scheduler,都是可以看到的。我们的kube-proxy也是可以看到的。另外就是我们之前讲过的一些coredns、metrics-server等组件也是可以看到的。

那我们的kubelet在哪呢?它是通过系统的进程启动的,因为我们要运行pod是必须要kubelet的,所以我们在安装集群的时候,就把kubelet先安装,然后再启动的。

OK,和get nodes有一个一样的参数,-o yaml,比如kubectl get pods -n kube-system -o yaml也可以看到pod更详细的信息,比如说pod的IP地址、pod运行在哪一个节点都是可以看到的。

这边有一个小的细节,就是我们可以看到pod的IP地址,它有172.16网段的,也有和我们宿主机一样网段的。这个是因为它运行方式不一样,所以导致它的IP地址是不一样的。

那什么情况下它是使用宿主机的IP地址,什么情况下使用这个地址呢?我们可以使用kubectl describe pod etcd -n kube-system,有一个参数叫做hostNetwork,在这如果说我们启动pod,加了这个参数之后,它会使用宿主机的网络进行启动我们的pod。所以你看到它的网络,就和我们的宿主机是一样的了。

OK,这是我们第二个需要了解的网段。第一个网段是我们刚才看到的get nodes -o yaml的是这个网段。第二个网段是我们pod的网段,它是172.16。注意我们要排除掉我们宿主机的网段,所以pod的网段就是172.16。另外一个网段是service的网段。

service是干什么用的,我们后面会讲到。我们可以先使用kubectl get services,可以看一下我们的service网段是10.96。所以在建集群的时候,这三个网段一定不能重复。

好,OK,那我们如果要查看整个集群的所有资源,比如查看所有的pods或者所有的services,那怎么办呢?我们可以使用kubectl get services –all-namespaces,就可以看到了。这是我们所有的、整个集群所有命名空间下所有的services。

这个就是我们使用kubectl的一些基本操作。那除了kubectl之外,还可以使用一些图形化的管理工具,对我们的集群进行管理,这样可能会更加简单而且高效。

我们在装集群的时候,已经装了一个多集群的管理平台了,叫做kuboard。你可以使用kubectl get services –all-namespaces看到当前有一个frontend的服务,它的端口号比如说是30820,就可以访问到它的图形界面了,然后就可以对集群进行管理。

如果你的集群没有去安装kuboard,你可以使用这条命令和这条命令去安装kuboard。注意这个不需要执行了,好吧。

OK,那我们接下来去访问一下NodePort。注意这是service的一种类型,我们后面也会讲到。NodePort它会在你所有的节点上启动一个端口号,叫做30820。然后通过任意节点的IP地址,然后加上服务的端口号,就可以访问到我们这个service对应的服务了。

我们可以把这个复制一下,然后打开浏览器粘贴进去。我们安装了kuboard之后,它的默认的用户名和密码是admin,我们可以输入admin admin,然后登录即可。

好,等登录之后,它是并没有接入任何的集群的。我们可以把我们需要管理的集群接入到kuboard当中。那怎么去接入呢?我们可以点击集群管理,然后点击添加集群。可以写个名字test1,然后集群名称就是测试集群。
好的,继续整理:

我们可以对我们的集群写个位置,因为kuboard是可以管理多个集群的,所以我们可以给每一个集群起一个名字,并且去标注它的位置,比如说北京朝阳区。

然后把我们的kubeconfig文件拿过来。kubeconfig文件,就是我们之前在安装的时候讲过的,如果要去操作我们的集群,那肯定是需要一个集群的认证文件的,就是在/etc/kubernetes目录下有一个admin.conf文件。如果是二进制安装的话,就找到对应的kubeconfig文件就可以了,名字可能不一样。

来,我们把kubeconfig文件内容复制一下,粘贴进kuboard的输入框,然后点击添加好。

在这里就可以看到我们的集群版本以及它的状态了。现在我们已经添加了一个集群了,我们可以点击它的ID,就可以展示当前集群有多少个资源,比如有多少个Pod、有多少个Deployment、有多少个DaemonSet、有多少个Service等等。

如果你有很多个集群的话,也可以按照同样的方式接入过来。假如说我们再添加一个prod环境,然后叫生产环境,然后它在北京海淀区,同样的方式输入一个kubeconfig。

因为我们现在没有第二个集群,所以我们用一个集群去模拟两个环境,注意它是一个集群,模拟两个环境。好,来点击添加就可以了。

也可以点击我们prod环境集群,一看到它当前的资源的状态。也可以点到我们的首页,可以看到当前接入kuboard所有集群的统计信息,比如你一共有多少个集群,以及它的状态是怎么样的,有多少个active,有多少个inactive,然后一共有多少个节点。我们测试环境有多少个节点,生产环境有多少个节点,以及其他的统计信息都是一样的。

接下来就可以看到集群当中的一些详情了,比如节点的列表和刚才使用kubectl是一样的。还有就是我们Pod的列表,你可以切换命名空间,可以看到当前的Pod状态,以及我们节点也是可以看到它的角色,还可以去添加节点标签都是可以的。

然后我们可以在这边也能看到节点的IP地址、所在的宿主机名称、它的状态都是可以看到的。

所以通过使用图形化的界面去管理我们的集群,会更加的方便高效,而且不容易出错。

那我们接下来就用图形化界面去生成我们的工作负载,或者是创建我们的资源。


kuboard 是什么?如何使用?


kuboard是一个方便使用的Kubernetes集群管理工具,提供了基于Web的用户界面,可以高效管理Kubernetes集群资源。

使用kuboard主要有以下几个方面:

  1. 集群管理
  • 导入集群:通过导入kubeconfig文件,将需要管理的Kubernetes集群接入kuboard中
  • 查看集群概览:可查看集群基本信息、节点数量、资源使用情况等
  1. 节点管理
  • 查看节点列表:可查看集群所有节点的状态、角色、系统信息等
  • 添加节点标签
  • 驱逐节点上的pods
  1. 工作负载管理
  • 部署各种工作负载:Deployment、StatefulSet、DaemonSet、Job、CronJob等
  • 编辑/删除工作负载YAML配置
  • 查看工作负载实例(pods)运行状态和日志
  1. 服务管理
  • 查看和管理集群内服务列表
  • 编辑服务参数(如类型、端口等)
  1. 存储管理
  • 查看存储卷(PV/PVC)列表
  • 创建/编辑存储卷
  1. 配置管理
  • 管理集群内各类配置(ConfigMaps、Secrets等)
  1. 日志收集
  • 收集集群内Pod运行日志并统一展示
  1. 监控告警
  • 对接Prometheus进行监控数据采集
  • 设置告警规则并推送通知

kuboard主要提供了一个基于Web的UI界面和可视化操作体验,对Kubenretes资源提供了完整的CRUD功能,大大降低了Kubernetes的学习和使用门槛,提高了集群管理效率。


如何安装使用?


kuboard可以通过以下几种方式安装和使用:

  1. 在线安装
    这种方式最为简单,适用于测试环境快速体验。在有外网环境的kubernetes集群上执行以下命令即可安装:
1
kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-instal-regular.yaml

安装完成后,通过访问任一节点的NodePort 32567端口,如 NodeIP:32567 即可访问kuboard界面。

  1. 离线安装
    如果环境没有外网,可以先在有外网的环境下载安装包,再拷贝到集群内部安装:
1
2
3
4
5
# 下载离线安装包
wget https://kuboard.cn/install-script/kuboard.yaml

# 安装
kubectl apply -f kuboard.yaml
  1. Source代码编译安装
    从github上获取kuboard源码,使用make命令进行编译安装:
1
2
3
4
5
6
git clone https://github.com/eip-work/kuboard-press
cd kuboard-press
make

# 安装
kubectl apply -f https://kuboard.cn/install-script/kuboard.yaml
  1. Helm安装
    使用Helm方式也可以很方便地在kubernetes集群上安装kuboard:
1
2
3
4
5
6
7
8
9
# 使用Kuboard Charts存储库
helm repo add kuboard https://charts.kuboard.cn
helm repo update

# 安装Kuboard
helm install kuboard/kuboard \
--set kubectl.enabled=true \
--set kuboard.server.insecureSkipTlsVerify=true \
--set kuboard.client.allowAll=true

无论使用哪种安装方式,kuboard都会以Deployment形式运行在kube-system命名空间下。

安装完成后,使用kubectl get svc -n kube-system找到名为kuboard的服务对应的CLUSTER-IP或NodePort,然后通过浏览器访问该IP:端口,即可打开kuboard界面, 默认管理员账户为 admin/Kuboard123