Kubernetes 13 (k8s资源监控、Dashboard可视化部署)

一、k8s资源监控

  • Metrics-Server是集群核心监控数据的聚合器,用来替换之前的heapster。
    容器相关的 Metrics 主要来自于 kubelet 内置的 cAdvisor 服务,有了Metrics-Server之后,用户就可以通过标准的 Kubernetes API 来访问到这些监控数据。
    Metrics API 只可以查询当前的度量数据,并不保存历史数据。
    Metrics API URI 为 /apis/metrics.k8s.io/,在 k8s.io/metrics 维护。
    必须部署 metrics-server 才能使用该 API,metrics-server 通过调用 Kubelet Summary API 获取数据。
  • Metrics Server 并不是 kube-apiserver 的一部分,而是通过 Aggregator 这种插件机制,在独立部署的情况下同 kube-apiserver 一起统一对外服务的。
    kube-aggregator 其实就是一个根据 URL 选择具体的 API 后端的代理服务器。
    在这里插入图片描述
    Metrics-server属于Core metrics(核心指标),提供API metrics.k8s.io,仅提供Node和Pod的CPU和内存使用情况。而其他Custom Metrics(自定义指标)由Prometheus等组件来完成。

1.Metrics-server安装部署

建立用于存放相关资源清单文件的目录
请添加图片描述
真机将metrics-server.tar发送给server1
请添加图片描述
server1导入镜像,并上传至仓库
请添加图片描述
真机将components.yaml发送给server2
请添加图片描述
请添加图片描述
应用资源清单
请添加图片描述
发现没有就绪
请添加图片描述
查看日志
请添加图片描述

2.解决报错

修改清单配置,安全端口和容器端口修改为4443
请添加图片描述
请添加图片描述
应用配置
请添加图片描述
查看kube-system命名空间的pod信息,可以看到metrics-server处于运行状态但并未就绪
请添加图片描述
查看日志,报错1:x509: certificate signed by unknown authority;
显然缺少证书,Metric Server 支持一个参数 --kubelet-insecure-tls,可以跳过这一检查,然而官方也明确说了,这种方式不推荐生产使用。
请添加图片描述
此时metrics-server没有后端服务器
请添加图片描述
在master和各个节点上,启用TLS Bootstrap 证书签发;
添加之后,重启服务
请添加图片描述
请添加图片描述
请添加图片描述
再次应用资源清单创建pod,但是仍然为就绪;
提示tls内部错误,安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性。
请添加图片描述
查看证书,可以看到是pending状态;
当对三个节点都进行授权后
请添加图片描述
查看状态变为已授权
请添加图片描述
错误2:当出现 dial tcp: lookup server2 on 10.96.0.10:53: no such host
这是因为没有内网的DNS服务器,所以metrics-server无法解析节点名字。可以直接修改coredns的configmap,将各个节点的主机名加入到hosts中,这样所有Pod都可以从CoreDNS中解析各个节点的名字。

编辑coredns的cm
请添加图片描述
将各个节点的主机名加入到hosts中
请添加图片描述
修改完成后metrics-server正常运行
请添加图片描述
可以看到后端地址和端口
请添加图片描述
部署成功后,通过kubectl top node可以监控到所有节点的资源使用情况
请添加图片描述
查看 pod 的使用情况
请添加图片描述
请添加图片描述
使用以下命令查询,以验证安装是否成功,如果安装成功会返回一堆值
请添加图片描述

二、Dashboard部署(可视化)

  • Dashboard可以给用户提供一个可视化的 Web 界面来查看当前集群的各种信息。用户可以用 Kubernetes Dashboard 部署容器化的应用、监控应用的状态、执行故障排查任务以及管理 Kubernetes 各种资源。

首先在仓库创建新项目kubernetesui,方便管理镜像
请添加图片描述
下载所需要的配置文件:recommended.yaml
请添加图片描述
真机将dashboard.tar发送给server1
请添加图片描述
server1导入镜像并上传至仓库
请添加图片描述
请添加图片描述
修改配置文件中的镜像地址和版本
请添加图片描述
应用recommended.yaml文件,可以看到创建了新的ns和服务等
请添加图片描述
可以看到新创建的ns:kubernetes-dashboard
请添加图片描述
查看kubernetes-dashboard下的容器和服务是否正常运行;
注意:psp安全策略一定要禁掉,否则两个控制器起不来
请添加图片描述
查看svc服务
请添加图片描述
更改 kubernetes-dashboard 的 ClusterIP 为 loadbalance,使外部可以访问
请添加图片描述
请添加图片描述
修改完成后,可以看到其外部访问地址为172.25.36.11
请添加图片描述
查看metallb-system命名空间,有4个pod
请添加图片描述
根据暴露的ip网页访问:https://172.25.36.11,发现需要输入token才能认证
请添加图片描述
查看kubernetes-dashboard命名空间内的secrets,找到token
请添加图片描述
查看详细信息,把token复制,粘贴到网页中
请添加图片描述
请添加图片描述
认证成功后进入界面,不过有红色报错信息;
因为默认dashboard对集群没有操作权限,需要授权,接下来我们需要解决授权问题
请添加图片描述
通过查看dashboard的kubernetes-dashboard这个全局角色的详细信息,可以看到只有读权限(get list watch)
请添加图片描述
编辑rbac.yaml配置文件,在全局角色绑定中将cluster-admin的权限赋予kubernetes-dashboard,使其具有读写权限(cluster-admin是 Kubernetes 提供的预先定义好的 ClusterRole 来供用户直接使用)

kind: ClusterRoleBinding %全局角色绑定
name: cluster-admin %权限使用的是以前创建的cluster-admin,在里面有读写权限
name: kubernetes-dashboard %作用对象是kubernetes-dashboard
请添加图片描述
应用 rbac.yaml文件,可以看到权限是*,表示全开
请添加图片描述
在这里插入图片描述
现在重新测试访问,现在网页就没有报错了,可以查看到监控
请添加图片描述
查看控制器状态
请添加图片描述

三、Dashboard图形化控制k8s

使用图形化创建一个控制器
请添加图片描述
成功创建控制器
请添加图片描述
进入server2命令行也可以查看到刚创建的pod,查看其ip并测试访问
请添加图片描述
将镜像的v1版本升级成v2
请添加图片描述
测试修改成功
请添加图片描述
在Deployments菜单中,修改元数据
请添加图片描述
扩容到三个副本
请添加图片描述
此时有3个pod正在运行
请添加图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes 集群中部署 ZooKeeper,可以通过 YAML 文件定义一个 ZooKeeper 的 Deployment 和一个 Service,然后使用 kubectl apply 命令进行部署。 下面是一个示例 YAML 文件,用于在 Kubernetes 集群中部署一个 3 节点的 ZooKeeper: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: zookeeper spec: replicas: 3 selector: matchLabels: app: zookeeper template: metadata: labels: app: zookeeper spec: containers: - name: zookeeper image: zookeeper:3.5.8 ports: - containerPort: 2181 env: - name: ZOO_MY_ID valueFrom: fieldRef: fieldPath: metadata.uid - name: ZOO_SERVERS value: "server.1=zookeeper-0:2888:3888;2181 server.2=zookeeper-1:2888:3888;2181 server.3=zookeeper-2:2888:3888;2181" volumeMounts: - name: zookeeper-data mountPath: /data - name: zookeeper-datalog mountPath: /datalog volumes: - name: zookeeper-data emptyDir: {} - name: zookeeper-datalog emptyDir: {} --- apiVersion: v1 kind: Service metadata: name: zookeeper spec: selector: app: zookeeper ports: - name: client port: 2181 protocol: TCP targetPort: 2181 clusterIP: None ``` 这个 YAML 文件定义了一个 Deployment 和一个 Service。Deployment 中指定了 3 个副本,使用的镜像为 zookeeper:3.5.8。每个 ZooKeeper 节点会挂载两个空目录作为数据存储目录和事务日志目录。ZooKeeper 的配置通过环境变量 ZOO_MY_ID 和 ZOO_SERVERS 指定。ZOO_MY_ID 表示当前节点的 ID,可以使用 Kubernetes 中的 UID 来自动生成。ZOO_SERVERS 表示集群中所有节点的 ID、主机名、端口号等信息。 Service 中定义了一个名为 zookeeper 的 headless service,用于暴露 ZooKeeper 集群的 2181 端口,以供客户端连接。由于使用了 clusterIP: None,这个 Service 不会创建 ClusterIP,只会创建 Endpoints,用于将客户端请求转发到后端 ZooKeeper 节点。 将上述 YAML 文件保存为 zk.yaml,并使用 kubectl apply 命令进行部署: ``` kubectl apply -f zk.yaml ``` 部署完成后,可以使用 kubectl get 命令查看 ZooKeeper 的 Deployment 和 Service: ``` $ kubectl get deployment zookeeper NAME READY UP-TO-DATE AVAILABLE AGE zookeeper 3/3 3 3 2m $ kubectl get svc zookeeper NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE zookeeper ClusterIP None <none> 2181/TCP 2m ``` 如果需要可视化地管理 Kubernetes 集群和部署应用程序,也可以使用一些 Kubernetes Dashboard 工具,例如 Kubernetes Dashboard、KubeSphere 等。这些工具提供了一系列的图形化操作和监控界面,方便用户进行集群管理和应用程序部署

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值