08--kubernetes可视化界面与Daemonset

news2024/9/22 17:25:57

前言:前几章写的内容太多了,后面打算写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.7

tag不改也可以,记得修改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-dashboard

2、搜索image:
没有docker tag的记得修改image

3、搜索kind: Deployment(有两个组件)
指定创建节点为k8s-node1(根据需要操作)
    spec:
      nodeName: k8s-node1

4、搜索kind: Service(只改第一个)
有多个svc,只需要修改dashboard的,本yaml内为标签k8s-app: kubernetes-dashboard
指定svc类型为NodePort,添加nodeport端口
spec:
  type: NodePort
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 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  # 角色类型:ClusterRole
  name: cluster-admin  # 绑定的角色名称(ClusterRole)
subjects:
- kind: ServiceAccount  # 绑定的主体类型:ServiceAccount
  name: 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-user
              kubernetes.io/service-account.uid: 9d5166be-d225-4395-a17b-3df11808b89f

Type:  kubernetes.io/service-account-token

Data
====
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: httpd
      containerPort: 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-daemonset
  labels:
    app: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: registry.cn-chengdu.aliyuncs.com/liumuquan_app/nginx:1.20.1
        ports:
        - name: nginx
          containerPort: 80
          hostPort: 8090
          protocol: 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同样支持热升级。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2085020.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

酶荧光底物;Ac-ESEN-AMC;Ac-Glu-Ser-Glu-Asn-AMC;CAS:896420-43-2

【Ac-ESEN-AMC 简介】 Ac-Glu-Ser-Glu-Asn-AMC 通常用作酶的荧光底物&#xff0c;特别是作为溶酶体处理酶&#xff08;Vacuolar Processing Enzyme, VPE&#xff09;的选择性底物。在生物化学研究中&#xff0c;这类底物可以用于检测和定量特定酶的活性&#xff0c;因为当底物被…

最新盘点!适合制造业的工单管理系统有哪些?

本文带大家盘点好用的工单管理系统&#xff1a; 易维帮助台、金万维帮我吧、青鸟云报修、沃丰科技 ServiceGo、泛微工单管理系统、致远互联工单管理系统、腾讯云智服工单系统、Zendesk、Freshdesk。 工单管理系统就如同企业的高效调度员。它能把企业的各种任务和问题安排得有条…

【Material-UI】深入解析 Rating 组件中的 Radio Group 实现及其自定义技巧

文章目录 一、Rating 组件及其 Radio Group 实现概述1. Rating 组件介绍2. Rating 组件的 Radio Group 实现 二、Rating 组件的实现代码解析1. 自定义图标的使用2. 样式定制 三、Rating 组件中的 Radio Group 行为详解1. highlightSelectedOnly 属性的作用2. 图标容器的自定义3…

【python实现弹出文本输入框并获取输入的值】

在 Python 中可以使用easygui库来实现弹出文本输入框并获取输入的值。以下是具体的实现方法&#xff1a; 首先确保你安装了easygui库&#xff0c;如果没有安装&#xff0c;可以使用以下命令进行安装&#xff1a; pip install easygui以下是代码示例&#xff1a; import easy…

【html+css 绚丽Loading】 000023 八卦旋涡珠

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽Loading&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495…

【Python系列】Jinja2 模板引擎

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

其实Python的代码迁移并没有想象中复杂

声明&#xff1a;此篇为 ai123.cn 原创文章&#xff0c;转载请标明出处链接&#xff1a;https://ai123.cn/2257.html 提到Python&#xff0c;相信各位码农们都遇到过代码迁移的难题。我在处理版本兼容性问题时常常遇到Python 2与Python 3的不兼容&#xff0c;这给代码迁移带来了…

中国各企业避税程度相关数据(1998-2022年)

避税程度可以通过多种方式衡量&#xff0c;其中包括了名义所得税率与实际所得税率的差额&#xff08;RATE&#xff09;、名义所得税率与实际税率之差的五年平均值&#xff08;LRATE&#xff09;、会计与税收差异&#xff08;BTD&#xff09;以及扣除应计利润影响之后的会计与税…

树莓派+艺术品,有没有搞头?

由树莓派&#xff08;Raspberry Pi&#xff09;驱动的这一令人着迷的艺术品在国际上大受欢迎 Sisyphus Industries 公司的旗舰产品——具有家具和互动艺术品双重功能的沙盘。这个产品需要结构紧凑、价格低廉的控制硬件。Raspberry Pi 通过高度可靠的硬件和宝贵的庞大社区提供了…

秋招突击——笔试整理——蚂蚁集团笔试整理

文章目录 引言正文第一题——算折扣个人实现 第二题个人实现错误实现一修改实现二 第三题个人实现 总结 引言 今天做了蚂蚁集团的笔试&#xff0c;踩了很多雷&#xff0c;这里整理一下&#xff0c;记录一下&#xff0c;防止下次再踩雷&#xff01; 正文 第一题——算折扣 题…

基于窄带物联网的矿车追踪定位系统(论文+源码+实物)

1.功能设计 鉴于智能物联网的大趋势&#xff0c;本次基于窄带物联网的矿车追踪定位系统应具备以下功能&#xff1a; &#xff08;1&#xff09;实现实时定位&#xff0c;真正实现矿车随时随地定位; &#xff08;2&#xff09;定位精度高&#xff0c;采用该系统可以实现矿车在…

ISSACSIM-docker安裝

ISSAC SIM安裝 SetUp必要库安装开发工具配置參考資料 SetUp docker login 需要设置密码&#xff0c;是属于 NGC 的密码&#xff08;和NVDIA 不是一个&#xff09;如下&#xff1a; 必要库安装 1&#xff1a; python-3.10 版本及相应库安装 python env 2&#xff1a;python…

3.3.1 Linux中断的使能与屏蔽

点击查看系列文章 》 Interrupt Pipeline系列文章大纲-CSDN博客 3.3.1 Linux中断的使能与屏蔽 3.3.1.1 中断使能与屏蔽的三重关卡 本章的主题是hard_local_irq_disable()&#xff0c;它是对中断的关闭操作。为了彻底搞清楚中断关闭的机制&#xff0c;这里先对Linux使能与屏蔽…

深入理解HTTP的doGet与doPost

深入理解HTTP的doGet与doPost 1、doGet方法2、doPost方法3、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Web开发中&#xff0c;HTTP的GET和POST请求通过Servlet的doGet和doPost方法实现&#xff0c;两者在处理方式和适用场景上有…

那些令人惊艳的产品细节

随着智能手机的普及和互联网的发展&#xff0c;互联网产品已经渐渐渗透到我们的生活当中。 小编打开手机数了一下&#xff0c;不下50个APP&#xff0c;五花八门&#xff0c;最基本的生活服务类的&#xff0c;娱乐类的&#xff0c;社交等等。大家都会面临的一个问题是&#xff…

矩阵分块乘法的证明

设A是一个的矩阵&#xff0c;B是一个的矩阵&#xff0c; &#xff0c; A和B的分块矩阵分别记为 和 &#xff0c; 证明. 证明&#xff1a;设 要证明&#xff0c;可以首先证AB和是同型矩阵&#xff0c;即证明是一个的矩阵&#xff0c;接着再证&#xff0c;可以把AB做一个与同样…

1.C语言(变量和常量)

一、变量和常量的概念 变量&#xff1a;可以变的量 常量&#xff1a;不可变的量 变量举例&#xff1a; 1.变量的分类 1.1 分为全局变量和局部变量 全局变量&#xff1a;大括号外定义的变量 局部变量&#xff1a;大括号内的变量 1.2注意&#xff1a; 注入在同一范围内&am…

MAC多版本Java环境变量切换

在Mac上切换不同版本的Java环境变量可以通过以下步骤进行&#xff1a; 1. 打开终端&#xff08;Terminal&#xff09;应用程序。 2. 使用vi或者nano等编辑器打开.zshrc文件。如果该文件不存在&#xff0c;可以创建一个新的文件。 3.使用命令查看当前电脑已安装的JAVA版本 /usr…

不改一行代码轻松玩转 Go 应用微服务治理

作者&#xff1a;赵源筱 Go 应用微服务治理简介 Go 语言具有简洁、高效、并发性强等特性&#xff0c;已经被广泛认为是构建微服务的理想选择之一。Go 语言作为构建 Kubernetes、Docker 的主要编程语言&#xff0c;目前不仅在云原生基础组件领域中被广泛使用&#xff0c;也逐渐…

深入浅出LangChain:从模型调用到Agents开发的全流程指南

2024最新LangChain全面解析:从基础组件到AI应用构建 LangChain、LangGraph、LangSmith:打造完整AI解决方案的利器 本文将对于LangChain的基本组件、用途、用法进行介绍。 LangChain、LangGraph以及LangSmith的组合&#xff0c;极大的简化了开发者构建AI应用、Agents、Tools的…