08--kubernetes可视化界面与Daemonset

2024-08-29 16:12

本文主要是介绍08--kubernetes可视化界面与Daemonset,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:前几章写的内容太多了,后面打算写k8s持久化篇幅也不小,这一章算作过度章节,内容简单一些,主要是K8S_web界面与Daemonset控制器。

1、Dashboard

Dashboard是一个图形化界面,用于汇总和展示来自不同数据源的关键信息。它通过图表、表格、图形等形式将数据可视化,使用户能够快速理解数据趋势和关键指标。

功能:

  1. 数据可视化:将数据以图表、仪表、地图等形式展示,使复杂的数据变得易于理解。
  2. 实时更新:许多Dashboard能够实时更新数据,提供最新的信息。
  3. 数据监控:监控关键指标和性能指标,及时发现异常或趋势。
  4. 自定义:用户可以根据需要自定义Dashboard的布局和内容,以关注特定的指标或数据。
  5. 互动性:提供过滤、搜索和钻取等功能,允许用户深入分析数据。
  6. 报告生成:支持生成报告和导出数据,方便进行进一步的分析或分享。

这里dashboard也是运行在k8s集群内部pod上运行的, 所以想使用web界面还需要使用nodeport方式暴露出来。本质上使用dashboard管理k8s集群是使用一个pod管理k8s,所以需要针对这个pod进行提权,这里就要引入另一个资源对象serviceacoount(sa),但sa刚创建出来时,权限仅限于访问apiserver,此时则需要创建一个clusterrole,通过创建clusterrole后赋予其权限,与sa绑定在一起,授予sa权限,这个绑定规则就是clusterrolebinding,创建pod后引用sa即可拥有对应的权限。

详细解释:

  • ServiceAccount 是 Pod 与 Kubernetes API 交互时使用的身份。你可以为 Pod 指定一个 ServiceAccount。

  • ClusterRole 定义了该 ServiceAccount 可以执行的操作权限,比如 getlistwatch 等,针对不同资源如 Pods、Services、Secrets 等。

  • ClusterRoleBinding 将定义好的 ClusterRole 权限绑定到指定的 ServiceAccount 上,使得该 ServiceAccount 可以执行 ClusterRole 中定义的操作。

 五种访问dashboard的方式(这里只演示最常使用的nodeport):

1. Nodport方式访问dashboard,service类型改为NodePort
2. loadbalancer方式,service类型改为loadbalacer
3. Ingress方式访问dashboard
4. API server方式访问 dashboard
5. kubectl proxy方式访问dashboard

1.1、Dashboard部署

部署文件下载地址:

文件原地址:https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml百度网盘链接:
链接: https://pan.baidu.com/s/1OwUFWpRSRML3f7i9JhyodA?pwd=gszm 提取码: gszm

 所需提前下载的镜像(拉取到node节点,可指定某个节点进行创建):

[root@k8s-node1 ~]# docker pull registry.cn-chengdu.aliyuncs.com/k8s_module_images/dashboard:v2.4.0
[root@k8s-node1 ~]# docker pull registry.cn-chengdu.aliyuncs.com/k8s_module_images/metrics-scraper:v1.0.7[root@k8s-node1 ~]# docker tag registry.cn-chengdu.aliyuncs.com/k8s_module_images/dashboard:v2.4.0 kubernetesui/dashboard:v2.4.0
[root@k8s-node1 ~]# docker tag registry.cn-chengdu.aliyuncs.com/k8s_module_images/metrics-scraper:v1.0.7 kubernetesui/metrics-scraper:v1.0.7tag不改也可以,记得修改yaml内的image项

修改命名空间为我们现在使用的kube-system

[root@k8s-master1 ~]# sed -i '/namespace/ s/kubernetes-dashboard/kube-system/g' recommended.yam

进入文件内部修改

1、命名空间创建部分添加注释
#apiVersion: v1
#kind: Namespace
#metadata:
#  name: kubernetes-dashboard2、搜索image:
没有docker tag的记得修改image3、搜索kind: Deployment(有两个组件)
指定创建节点为k8s-node1(根据需要操作)spec:nodeName: k8s-node14、搜索kind: Service(只改第一个)
有多个svc,只需要修改dashboard的,本yaml内为标签k8s-app: kubernetes-dashboard
指定svc类型为NodePort,添加nodeport端口
spec:type: NodePortports:- port: 443targetPort: 8443nodePort: 32123修改后文件为百度云链接内的recommended-finish.yaml

根据文件创建dashboard

[root@k8s-master1 ~]# kubectl apply -f recommended.yaml 
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created

检查创建情况

[root@k8s-master1 ~]# kubectl get pod -n kube-system

https访问node1的32123端口(注意浏览器安全策略,最高安全策略会强制拦截访问)

 至此搭建完成,下面演示token登录和使用

1.2、Dashboard使用

首先需要获取token

[root@k8s-master1 ~]# kubectl get clusterrole

以这个角色作为与我们sa绑定的clusterrole,上面运行yaml文件时也创建了clusterrole并有完整的sa和绑定关系,但是权限较小,所以这里采用权限较大的角色进行绑定。

创建sa和绑定关系的操作过程如下:

[root@k8s-master1 ~]# vim dashboard-adminuser.yaml
[root@k8s-master1 ~]# cat dashboard-adminuser.yaml
---
apiVersion: v1  # 指定 API 版本
kind: ServiceAccount  # 资源类型:ServiceAccount
metadata:name: admin-user  # ServiceAccount 的名称namespace: kube-system  # ServiceAccount 所在的命名空间
---
apiVersion: rbac.authorization.k8s.io/v1  # 指定 API 版本
kind: ClusterRoleBinding  # 资源类型:ClusterRoleBinding
metadata:name: admin-user  # ClusterRoleBinding 的名称
roleRef:apiGroup: rbac.authorization.k8s.io  # 指定 RBAC API 组kind: ClusterRole  # 角色类型:ClusterRolename: cluster-admin  # 绑定的角色名称(ClusterRole)
subjects:
- kind: ServiceAccount  # 绑定的主体类型:ServiceAccountname: admin-user  # 绑定的 ServiceAccount 名称namespace: kube-system  # 绑定的 ServiceAccount 所在的命名空间
[root@k8s-master1 ~]# kubectl apply -f dashboard-adminuser.yaml 
serviceaccount/admin-user created
clusterrolebinding.rbac.authorization.k8s.io/admin-user created

查看创建情况

[root@k8s-master1 ~]# kubectl get sa -n kube-system
NAME                                 SECRETS   AGE
admin-user                           1         72s

创建sa的时候会同步生成对应的secret(以sa名字为前缀)

[root@k8s-master1 ~]# kubectl get secret -n kube-system
NAME                                             TYPE                                  DATA   AGE
admin-user-token-5pvvm                           kubernetes.io/service-account-token   3      3m54s

查看该secret的详细信息可以获得token

[root@k8s-master1 ~]# kubectl describe secret admin-user-token-5pvvm -n kube-system
Name:         admin-user-token-5pvvm
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: admin-userkubernetes.io/service-account.uid: 9d5166be-d225-4395-a17b-3df11808b89fType:  kubernetes.io/service-account-tokenData
====
ca.crt:     1066 bytes
namespace:  11 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6ImtyaU9nanQxZTFrM1RaWDM2b21jOFdFQkIyRDBEM3NDWmJuVWs5U3o1QkUifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLTVwdnZtIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI5ZDUxNjZiZS1kMjI1LTQzOTUtYTE3Yi0zZGYxMTgwOGI4OWYiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06YWRtaW4tdXNlciJ9.rqn5RsVMU5DbAxLRbSR4qsUG_sHEEGQWdIW7KWMLw_MO3JgUrpPFEwBcMfupQq00ck_eX-c7PPbdh-8f5tUXxYxKDkPKwm8VF6Cuk4Q6TLdTUKFmqlZ8X9s-TZdsKIdwPwGkFQtzkMLVnqO8DxcQWZyAWg7Datahbp_pziEXRa1fgw_qnPfw_JyDs1jBUH3H2DLC7bMqeUmYejADeu3odX5hMJM0_ws33rV34Gq1eY1CQV6WuyHRKyZIR7Jj7fvoIz0nKqAE1qqDSMPOmd7tx2JYieL1wTTgegr-SZyUAVHm1jSimI3oSBp6I_Sen7QDBMH1oJgrDzUBzos1Uzabag

复制token,回到浏览器登录使用。进入dashboard界面

选择命名空间,查看对应资源对象

管理删除pod

 扩容deployment,其他资源对象同理

2、Daemonset

DaemonSet(ds) 确保全部(或者某些)节点上运行一个 Pod 的副本。当有节点加入集群时,会为他们新增一个 Pod。当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod(慎用!!!)

DaemonSet 的一些典型用法:
在每个节点上运行集群存储 DaemonSet,例如 glusterd、ceph。
在每个节点上运行日志收集 DaemonSet,例如 fluentd、logstash、filebeat。
在每个节点上运行监控 DaemonSet,例如 Prometheus Node Exporter、Flowmill、Sysdig 代理、collectd、Dynatrace OneAgent、AppDynamics 代理、Datadog 代理、New Relic 代理、Ganglia gmond 或者 Instana 代理。
一个简单的用法是在所有的节点上都启动一个 DaemonSet,并作为每种类型的 daemon 使用。

一个稍微复杂的用法是单独对每种 daemon 类型使用一种DaemonSet。这样有多个 DaemonSet,但具有不同的标识,并且对不同硬件类型具有不同的内存、CPU 要求。

查看当前集群已有的daemonset

[root@k8s-master1 deployment.yaml.d]# kubectl get daemonset -n kube-system
NAME              DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
kube-flannel-ds   3         3         3       3            3           <none>                   13d
kube-proxy        3         3         3       3            3           kubernetes.io/os=linux   13d

这里有三个的原因是,除两个node节点外,最初yaml文件设置master接受调度

DaemonSet 中的 Pod 可以使用 hostPort,从而可以通过node节点 IP 访问到 Pod;因为DaemonSet模式下Pod不会被调度到其他节点。

 ports:- name: httpdcontainerPort: 80#除非绝对必要,否则不要为 Pod 指定 hostPort。 将 Pod 绑定到hostPort时,它会限制 Pod 可以调度的位置数;DaemonSet除外#一般情况下 containerPort与hostPort值相同hostPort: 8090     #可以通过宿主机+hostPort的方式访问该Pod。例如:pod在/调度到了k8s-node02			                      【192.168.153.147】,那么该Pod可以通过192.168.153.147:8090方式进行访问。protocol: TCP

操作演示:

无需指定副本数量

[root@k8s-master1 ~]# mkdir daemonset.yaml.d
[root@k8s-master1 ~]# cd daemonset.yaml.d/
[root@k8s-master1 daemonset.yaml.d]# vim nginx-daemonset.yml 
[root@k8s-master1 daemonset.yaml.d]# cat nginx-daemonset.yml 
---
apiVersion: apps/v1
kind: DaemonSet
metadata:name: nginx-daemonsetlabels:app: nginx
spec:selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: registry.cn-chengdu.aliyuncs.com/liumuquan_app/nginx:1.20.1ports:- name: nginxcontainerPort: 80hostPort: 8090protocol: TCP

创建daemonset并查看

[root@k8s-master1 daemonset.yaml.d]# kubectl apply -f nginx-daemonset.yml 
daemonset.apps/nginx-daemonset created
[root@k8s-master1 daemonset.yaml.d]# kubectl get pod
NAME                    READY   STATUS    RESTARTS   AGE
nginx-daemonset-f4456   1/1     Running   0          16s
nginx-daemonset-h9ttq   1/1     Running   0          16s
[root@k8s-master1 daemonset.yaml.d]# kubectl get pod -o wide
NAME                    READY   STATUS    RESTARTS   AGE   IP            NODE        NOMINATED NODE   READINESS GATES
nginx-daemonset-f4456   1/1     Running   0          37s   10.244.1.37   k8s-node1   <none>           <none>
nginx-daemonset-h9ttq   1/1     Running   0          37s   10.244.2.23   k8s-node2   <none>           <none>

使用浏览器访问

 与deploy一样,daemonset同样支持热升级。

这篇关于08--kubernetes可视化界面与Daemonset的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1118335

相关文章

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略 1. 特权模式限制2. 宿主机资源隔离3. 用户和组管理4. 权限提升控制5. SELinux配置 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes的PodSecurityPolicy(PSP)是一个关键的安全特性,它在Pod创建之前实施安全策略,确保P

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

什么是Kubernetes PodSecurityPolicy?

@TOC 💖The Begin💖点点关注,收藏不迷路💖 1、什么是PodSecurityPolicy? PodSecurityPolicy(PSP)是Kubernetes中的一个安全特性,用于在Pod创建前进行安全策略检查,限制Pod的资源使用、运行权限等,提升集群安全性。 2、为什么需要它? 默认情况下,Kubernetes允许用户自由创建Pod,可能带来安全风险。

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

Python:豆瓣电影商业数据分析-爬取全数据【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】

**爬取豆瓣电影信息,分析近年电影行业的发展情况** 本文是完整的数据分析展现,代码有完整版,包含豆瓣电影爬取的具体方式【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】   最近MBA在学习《商业数据分析》,大实训作业给了数据要进行数据分析,所以先拿豆瓣电影练练手,网络上爬取豆瓣电影TOP250较多,但对于豆瓣电影全数据的爬取教程很少,所以我自己做一版。 目

kubernetes集群部署Zabbix监控平台

一、zabbix介绍 1.zabbix简介 Zabbix是一个基于Web界面的分布式系统监控的企业级开源软件。可以监视各种系统与设备的参数,保障服务器及设备的安全运营。 2.zabbix特点 (1)安装与配置简单。 (2)可视化web管理界面。 (3)免费开源。 (4)支持中文。 (5)自动发现。 (6)分布式监控。 (7)实时绘图。 3.zabbix的主要功能

【Kubernetes】常见面试题汇总(三)

目录 9.简述 Kubernetes 的缺点或当前的不足之处? 10.简述 Kubernetes 相关基础概念? 9.简述 Kubernetes 的缺点或当前的不足之处? Kubernetes 当前存在的缺点(不足)如下: ① 安装过程和配置相对困难复杂; ② 管理服务相对繁琐; ③ 运行和编译需要很多时间; ④ 它比其他替代品更昂贵; ⑤ 对于简单的应用程序来说,可能不

Science|癌症中三级淋巴结构的免疫调节作用与治疗潜力|顶刊精析·24-09-08

小罗碎碎念 Science文献精析 今天精析的这一篇综述,于2022-01-07发表于Science,主要讨论了癌症中的三级淋巴结构(Tertiary Lymphoid Structures, TLS)及其在肿瘤免疫反应中的作用。 作者类型作者姓名单位名称(中文)通讯作者介绍第一作者Ton N. Schumacher荷兰癌症研究所通讯作者之一通讯作者Daniela S. Thomm