小阿轩yx-案例:Zabbix监控kubernetes云原生环境
小阿轩yx-案例:Zabbix监控kubernetes云原生环境
前言
传统监控的本质
- 就是收集、分析和使用信息来观察一段时间内监控对象的运行进度,并且进行相应的决策管理的过程,监控侧重于观察特定指标。
随着云原生时代的到来
- 我们对监控的功能提出了更多的要求,要实现这些功能,就要实现的云原生的“可观测性”。
- 可观测性是云原生时代必须具备的能力。
目前,“可观测性” 逐渐取代 “监控”,成为云原生技术领域最热门的话题之一。
Zabbix 新版本功能介绍
zabbix 新功能
- 是一个基于 web 界面的分布式系统监控的企业级开源软件。
- 可以监视各种系统与设备的参数,保障服务器及设备的安全运营。
Zabbix 6.0 LTS
- 新增 Kubernetes 监控功能,可以在 Kubernetes 系统从多个维度采集指标。
zabbix 特点
- 安装与配置简单。
- 可视化 web 管理界面。
- 免费开源。
- 支持中文。
- 自动发现。
- 分布式监控。
- 实时绘图。
zabbix 的主要功能
硬件监控
- 如交换机、路由器、打印机等。
系统监控
- 如 CPU、内存,磁盘。硬盘 IO,系统负载等。
服务监控
- 如 apache、nginx、tomcat、redis、TCP 连接数等。
性能监控
- 如网站性能,服务器性能,数据库性能。
日志监控
- 如访问日志,错误日志。
安全监控
- 如用户登录数,本地文件改动,passwd 文件变化。
网络监控
- 如端口,SMTP,网络使用率,网络入流量,网络出流量。
kubernetes 集群及组件监控模板
新版本的 zabbix 中
- 提供了专门针对 kubernetes 原生架构的监控模板,用户可以直接使用这些模板对 kubernetes 的原生组件进行监控。
模板名称 | 备注 |
Kubernetes API server by HTTP | K8S ApiServer 组件指标模板 |
Kubernetes cluster state by HTTP | k8S 集群指标模板 |
Kubernetes controller manager by HTTP | K8S ControllerManager 组件指标模板 |
Kubernetes kubelet by HTTP | K8S Kubelet 组件指标模板 |
Kubernetes nodes by HTTP | K8S 集群节点发现以及状态指标模板 |
Kubernetes scheduler by HTTP | K8S Scheduler 组件指标模板 |
K8S 节点基础信息指标模板
- 对 kubernetes 的主机进行监控的时候,仍然可以使用 Linux by zabbix agent 模板对集群中的各个主机进行晚上的监控。
模板名称 | 备注 |
Linux by Zabbix agent | OS Linux 系统监控模板 |
监控指标
- 云原生环境中,需要监控的指标很多
监控名称 | 监控对象 |
节点基础信息 | CPU、内存,磁盘 ,IO ,网络,system info等 |
集群指标 [组件] | Api Server 、controllerManage、SchedulerServer,、kubelet等 |
资源对象指标 | Daemonset、Deployment、Replicaset,Endpoint,Pod等 |
Pod 容器指标 | Container:Menory max usage,Pod CpU:User seconds等 |
Agentless
- 通过 Zabbix 内置的 “HTTP agent”,“Script” 两种类型的监控项,无需安装客户端,通过访问被监控端的 API 接口即可采集监控指标数据,主要用于K8S 集群、服务组件、pod 容器状态及性能指标的采集。
项目环境
设备列表
主机 | IP |
k8s-master | 192.168.10.101 |
k8s-node01 | 192.168.10.102 |
k8s-node02(zabbix server) | 192.168.10.103 |
mariadb-10、NFS | 192.168.10.108 |
案例拓扑图
数据库配置
关闭防火墙、内核机制(在108主机上)
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# vim /etc/sysconfig/selinux
##修改为永久关闭
SELINUX=disabled
将 mysql-8.0.31-linux 的源码包通过 Xftp 上传至主机108
用 bash 快速部署 mysql
[root@localhost ~]# bash mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz
NFS 配置
开启会话同步(101、102、103)
创建 NFS 存储目录
[root@k8s-master ~]# mkdir -p /nfs
[root@k8s-node01 ~]# mkdir -p /nfs
[root@k8s-node02 ~]# mkdir -p /nfs
安装 nfs 服务
[root@k8s-master ~]# yum -y install nfs-utils rpcbind
[root@k8s-node01 ~]# yum -y install nfs-utils rpcbind
[root@k8s-node02 ~]# yum -y install nfs-utils rpcbind
重定向配置文件
[root@k8s-master ~]# echo "/nfs *(rw,sync,no_root_squash)" >> /etc/exports
[root@k8s-node01 ~]# echo "/nfs *(rw,sync,no_root_squash)" >> /etc/exports
[root@k8s-node02 ~]# echo "/nfs *(rw,sync,no_root_squash)" >> /etc/exports
启动服务
[root@k8s-master ~]# systemctl start nfs && systemctl start rpcbind
[root@k8s-node01 ~]# systemctl start nfs && systemctl start rpcbind
[root@k8s-node02 ~]# systemctl start nfs && systemctl start rpcbind
设置开机自启
[root@k8s-master ~]# systemctl enable nfs-server && systemctl enable rpcbind
[root@k8s-node01 ~]# systemctl enable nfs-server && systemctl enable rpcbind
[root@k8s-node02 ~]# systemctl enable nfs-server && systemctl enable rpcbind
在所有 k8s 节点安装 nfs
[root@k8s-master ~]# yum -y install nfs-utils
[root@k8s-node01 ~]# yum -y install nfs-utils
[root@k8s-node02 ~]# yum -y install nfs-utils
- 所有节点都要安装 nfs-utils,否则无法使用 pv
安装 zabbix server 和 web
将镜像文件通过 Xftp 上传至master、node01、node02(101、102、103)
开启会话同步
进入镜像文件目录
[root@k8s-master ~]# cd images/
[root@k8s-node01 ~]# cd images/
[root@k8s-node02 ~]# cd images/
导入镜像
[root@k8s-master images]# bash imp_docker_img.sh
[root@k8s-node01 images]# bash imp_docker_img.sh
[root@k8s-node02 images]# bash imp_docker_img.sh
取消会话同步
创建动态 PV
编辑 nfs 的 yaml 文件
[root@localhost ~]# vim storageclass-nfs.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: managed-nfs-storage
provisioner: fuseim.pri/ifs
parameters:archiveOnDelete: "true"---
kind: ServiceAccount
apiVersion: v1
metadata:name: nfs-client-provisioner---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: nfs-client-provisioner-runner
rules:- apiGroups: [""]resources: ["persistentvolumes"]verbs: ["get", "list", "watch", "create", "delete"]- apiGroups: [""]resources: ["persistentvolumeclaims"]verbs: ["get", "list", "watch", "update"]- apiGroups: ["storage.k8s.io"]resources: ["storageclasses"]verbs: ["get", "list", "watch"]- apiGroups: [""]resources: ["events"]verbs: ["create", "update", "patch"]---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: run-nfs-client-provisioner
subjects:- kind: ServiceAccountname: nfs-client-provisionernamespace: default
roleRef:kind: ClusterRolename: nfs-client-provisioner-runnerapiGroup: rbac.authorization.k8s.io---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: leader-locking-nfs-client-provisioner
rules:- apiGroups: [""]resources: ["endpoints"]verbs: ["get", "list", "watch", "create", "update", "patch"]---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: leader-locking-nfs-client-provisioner
subjects:- kind: ServiceAccountname: nfs-client-provisionernamespace: default
roleRef:kind: Rolename: leader-locking-nfs-client-provisionerapiGroup: rbac.authorization.k8s.io---
apiVersion: v1
kind: ServiceAccount
metadata:name: nfs-client-provisioner---
kind: Deployment
apiVersion: apps/v1
metadata:name: nfs-client-provisioner
spec:replicas: 1strategy:type: Recreateselector:matchLabels:app: nfs-client-provisionertemplate:metadata:labels:app: nfs-client-provisionerspec:serviceAccountName: nfs-client-provisionercontainers:- name: nfs-client-provisionerimage: arawak/nfs-client-provisionervolumeMounts:- name: nfs-client-rootmountPath: /persistentvolumesenv:- name: PROVISIONER_NAMEvalue: fuseim.pri/ifs- name: NFS_SERVERvalue: 192.168.10.108 #指定nfs地址- name: NFS_PATHvalue: /nfsvolumes:- name: nfs-client-rootnfs:server: 192.168.10.108 #指定nfs地址path: /nfs
生成动态 PV
[root@localhost ~]# kubectl apply -f storageclass-nfs.yaml
安装 zabbix-server
编写 zabbix_server.yaml
[root@localhost ~]# zabbix-server.yaml
apiVersion: v1
kind: Namespace
metadata:name: zabbix
---
apiVersion: v1
kind: Service
metadata:name: zabbix-servernamespace: zabbixlabels:app: zabbix-server
spec:selector:app: zabbix-serverports:- name: zabbix-serverport: 10051nodePort: 30051type: NodePort---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: zabbix-scriptsnamespace: zabbix
spec:storageClassName: "managed-nfs-storage"accessModes:- ReadWriteManyresources:requests:storage: 1Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: zabbix-servername: zabbix-servernamespace: zabbix
spec:replicas: 1selector:matchLabels:app: zabbix-servertemplate:metadata:labels:app: zabbix-serverspec:nodeSelector:zabbix-server: "true"hostNetwork: truecontainers:- image: zabbix/zabbix-server-mysql:6.4.8-centosimagePullPolicy: IfNotPresentname: zabbix-server-mysqlvolumeMounts:- mountPath: /usr/lib/zabbix/alertscriptsname: zabbix-scriptsenv:- name: DB_SERVER_HOSTvalue: 192.168.10.108- name: DB_SERVER_PORTvalue: "3306"- name: MYSQL_DATABASEvalue: zabbix- name: MYSQL_USERvalue: zabbix- name: MYSQL_PASSWORDvalue: zabbix- name: ZBX_CACHESIZEvalue: "512M"- name: ZBX_HISTORYCACHESIZEvalue: "128M"- name: ZBX_HISTORYINDEXCACHESIZEvalue: "128M"- name: ZBX_TRENDCACHESIZEvalue: "128M"- name: ZBX_VALUECACHESIZEvalue: "256M"- name: ZBX_TIMEOUTvalue: "30"resources:requests:cpu: 500mmemory: 500Milimits:cpu: 1000mmemory: 1Givolumes:- name: zabbix-scriptspersistentVolumeClaim:claimName: zabbix-scripts
为 node02 节点设置标签
[root@localhost ~]# kubectl label node k8s-node02 zabbix-server=true
安装 zabbix-server
[root@localhost ~]# kubectl apply -f zabbix-server.yaml
查看 pod 状态
[root@localhost ~]# kubectl get pod -n zabbix
NAME READY STATUS RESTARTS AGE
zabbix-server-5f48d9d57d-rkr5p 1/1 Running 0 66s
部署 zabbix-web
编写 zabbix_web.yaml 文件
[root@localhost ~]# vim zabbix-web.yaml
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: zabbix-webname: zabbix-webnamespace: zabbix
spec:replicas: 1selector:matchLabels:app: zabbix-webtemplate:metadata:labels:app: zabbix-webspec:containers:- image: zabbix/zabbix-web-nginx-mysql:6.4.8-centosimagePullPolicy: IfNotPresentname: zabbix-web-nginx-mysqlenv:- name: DB_SERVER_HOSTvalue: 192.168.10.108- name: MYSQL_USERvalue: zabbix- name: MYSQL_PASSWORDvalue: zabbix- name: ZBX_SERVER_HOSTvalue: zabbix-server- name: PHP_TZvalue: Asia/shanghairesources:requests:cpu: 500mmemory: 500Milimits:cpu: 1000mmemory: 1Gi
---
apiVersion: v1
kind: Service
metadata:labels:app: zabbix-webname: zabbix-webnamespace: zabbix
spec:ports:- name: webport: 8080protocol: TCPtargetPort: 8080nodePort: 30008selector:app: zabbix-webtype: NodePort
安装 zabbix-web
[root@localhost ~]# kubectl apply -f zabbix-web.yaml
查看 pod 状态
[root@localhost ~]# kubectl get pod -n zabbix
NAME READY STATUS RESTARTS AGE
zabbix-server-5f48d9d57d-rkr5p 1/1 Running 0 66s
zabbix-web-55cd66f74f-9f284 1/1 Running 0 44s
访问 zabbix 的 web
查看 svc
[root@localhost ~]# kubectlget svc -n zabbix
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
zabbix-server NodePort 10.100.40.247 <none> 10051:30051/TCP 2m39s
zabbix-web NodePort 10.100.202.232 <none> 8080:30008/TCP 21s
登录 web
- 等待片刻后访问网站
- http://192.168.10.101:30008/
初始账号
- Admin
- zabbix
安装 zabbix proxy 和 agent
- 官方给我们提供了全套的容器化服务部署方式,这里采用官方提供的 Helm chart 来安装。
安装 helm 工具(如果有 helm,忽略此步)
- 将 zabbix-helm-chrt-1.3.4 源码包上传至 master(101)
解压
[root@localhost ~]# tar zxvf zabbix-helm-chrt-1.3.4.tgz
拷贝文件到指定目录下
[root@localhost ~]# cp linux-amd64/helm /usr/local/bin/helm
添加仓库(已有离线包,此步可忽略)
[root@localhost ~]# helm repo add zabbix-chart-6.2 https://cdn.zabbix.com/zabbix/integrations/kubernetes-helm/6.2/
查看列表
[root@localhost ~]# helm repo list
NAME URL
zabbix-chart-6.0 https://cdn.zabbix.com/zabbix/integrations/kubernetes-helm/6.4
搜索仓库中的 helm 包(已有离线包,此步可忽略)
[root@localhost ~]# helm search repo zabbix-chart-6.2
NAME CHART VERSION APP VERSION DESCRIPTION
zabbix-chart-6.0/zabbix-helm-chrt 1.3.4 6.0.21 A Helm chart for deploying ZAbbix agent and proxy
拉取 helm 包(已有离线包,此步可忽略)
[root@localhost ~]# helm pull zabbix-chart-6.2/zabbix-helm-chrt
配置 values.yaml
解压
[root@localhost ~]# tar zxvf zabbix-helm-chrt-1.3.4.tgz
进入目录
[root@localhost ~]# cd zabbix-helm-chrt
修改配置文件
[root@localhost zabbix-helm-chrt]# vim values.yaml
#修改以下内容
zabbixProxy:image:repository: zabbix/zabbix-proxy-sqlite3tag: 6.4.8-centospullPolicy: IfNotPresent- name: ZBX_SERVER_HOSTvalue: "192.168.10.103"
zabbixAgent:image:repository: zabbix/zabbix-agent2tag: 6.4.8-centospullPolicy: IfNotPresent- name: ZBX_SERVER_HOSTvalue: 0.0.0.0/0## Zabbix server port- name: ZBX_SERVER_PORTvalue: 10051- name: ZBX_PASSIVE_ALLOWvalue: true- name: ZBX_ACTIVE_ALLOWvalue: true
- zabbixProxy:
- tag: 6.4.8-centos
- value: "192.168.10.103"
- zabbixAgent:
- tag: 6.4.8-centos
- value: true
IP 地址为 zabbix server 主机的地址,我们是将 zabbix server 安装到了 node82 的节点上,此节点的 IP 地址为 192.168.10.103。
安装 Zabbix Chart
创建 zabbix agent 和 proxy 的命名空间
[root@localhost zabbix-helm-chrt]# kubectl create namespace monitoring
利用 helm 部署 agent 和 proxy 组件
[root@localhost zabbix-helm-chrt]# kubectl taint node k8s-master node-role.kubernetes.io/master:NoSchedule-
[root@localhost zabbix-helm-chrt]# helm install zabbix .--dependency-update -n monitoring
[root@localhost zabbix-helm-chrt]# kubectl taint node k8s-master node-role.kubernetes.io/master:NoSchedule
- 如果需要在 master 节点上安装 agent 程序,需要将 master 节点的污点去掉,本案例的 k8s 集群使用 kubeadm 安装,默认 master 节点为污点。
- 部署好后还可以再将 master 设置为污点。
查看安装结果
[root@localhost ~]# kubectl get pod -n monitoring
NAME READY STATUS RESTARTS AGE
zabbix-agent-78kvh 1/1 Running 0 20s
zabbix-agent-hxjns 1/1 Running 0 20s
zabbix-agent-lpw9j 1/1 Running 0 20s
zabbix-kube-state-metrics-6b588697b8-gw422 1/1 Running 0 20s
zabbix-proxy-59bcf6d9c4-44dt2 1/1 Running 0 20s
如果要卸载 helm 安装的程序,可以使用下面的命令
helm uninstall zabbix -n monitoring
验证安装结果
- 如果 proxy 和 agnet 正常安装,则会看到 zabbix server 主机已经处于正常的监控状态。
修改 UI 界面语言
- “Administration” --> “General”,找到 “Default language”,在下拉菜单中选择 “chinese(zh_CN)”,然后点击下方的 “update” 按钮,页面即可修改为中文界面。
在 Web 管理界面添加 proxy
添加 zabbix-proxy
- “管理” --> “Proxy”,在右上角点击 “创建 Proxy” 按钮,打开创建 proxy 的界面。
- 填写信息,其中 agnet 代理程序名称是在 value.yaml 中设置的 ZBX_HOSTNAME 的值,系统代理模式为主动式,代理地址不用填写。
等待一会,刷新一下页面,观察 proxy 的状态,如果不正常,Last seen 的位置会显示成红色的 Never 字样。
创建主机群组
- 创建主机群组,群组命名为 k8s Server
- “数据采集” --> “主机群组”,添加主机组。
节点状态监控
- 创建 k8s-node 主机,用于自动发现 K8S 各个节点主机
添加主机模板
- “数据采集” --> “主机”,创建主机 k8s-nodes,用于自动发现节点。
需要配置的信息
- 主机名:k8s-nodes
- 模板:Templates 下的Kubernetes nodes by HTTP
- 主机群组:K8S Server
- 代理程序检测:zabbix-proxy
- 已启用:true
为主机设置宏参数
配置信息宏变量表
宏变量 | 值 |
{$KUBE.API.ENDPOINT.URL} | https://192.168.10.101:6443/api |
{$KUBE.API.TOKEN} | 你的 Token 值 |
{$KUBE.NODES.ENDPOINT.NAME} | zabbix-zabbix-helm-chrt-agent |
获取 Token 值
kubectl get secret zabbix-service-account -n monitoring -o jsonpath={.data.token}base64 -d
获取endpoint
kubectl get ep -n monitoring
集群服务监控
添加主机模板
- “数据采集” --> “主机”,创建主机 k8s-cluster
- 关联模板 “Kubernetes cluster state by HTTP”,用于自动发现服务组件。
设置宏变量
- 需要填写的宏变量表
宏变量 | 值 |
{$KUBE.API.HOST} | 192.168.10.101 |
{$KUBE.API.PORT} | 6443 |
{$KUBE.API.TOKEN} | 你的Token值 |
{$KUBE.API.URL} | https://192.168.10.101:6443 |
{$KUBE.API_SERVER.PORT} | 6443 |
{$KUBE.API_SERVER.SCHEME} | https |
{$KUBE.CONTROLLER_MANAGER.PORT} | 10252 |
{$KUBE.CONTROLLER_MANAGER.SCHEME} | http |
{$KUBE.KUBELET.PORT} | 10250 |
{$KUBE.KUBELET.SCHEME} | https |
{$KUBE.SCHEDULER.PORT} | 10251 |
{$KUBE.SCHEDULER.SCHEME} | http |
{$KUBE.STATE.ENDPOINT.NAME} | zabbix-zabbix-helm-chrt-agent |
验证监控主机
- 因为没有使用 Linux by Zabbix agent 模板,所以集群服务相关的监控项,ZBX 为灰色的。
- 只要能査看到监控信息就是成功的。
- 如果想让其他的主机的 ZBX 也显示为绿色,可以单独给他们添加一个 Zabbix agent 模板,结果如图
查看监控数据
- “检测” --> “主机”,可以看到所有被检测的主机。
点击某一个主机或组件的 “最新数据”,可以看到对应的具体监控到的信息。
小阿轩yx-案例:Zabbix监控kubernetes云原生环境
相关文章:

小阿轩yx-案例:Zabbix监控kubernetes云原生环境
小阿轩yx-案例:Zabbix监控kubernetes云原生环境 前言 传统监控的本质 就是收集、分析和使用信息来观察一段时间内监控对象的运行进度,并且进行相应的决策管理的过程,监控侧重于观察特定指标。 随着云原生时代的到来 我们对监控的功能提出…...

量化交易的个人见解
程序化交易在国内兴起有些年数了,个人以为,程序化交易与量化投资的关系,在于两者侧重点有差别。程序化交易侧重于下单的动作是机器自动执行的,量化投资则侧重于投资分析的过程是通过一个量化模型来实现的,所以量化投资…...

Java集合(一)
目录 Java集合(一) 集合介绍 单列集合分类 Collection接口 创建Collection实现类对象 常用方法 迭代器 基本使用 迭代器的执行过程 迭代器底层原理 集合中的并发修改异常及原因分析 List接口 ArrayList类 介绍 常用方法 遍历集合 Array…...

车载软件架构 --- SOA设计与应用(下)
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…...

网络原理 IP协议与以太网协议
博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:MySQL数据库 JavaEE专栏:JavaEE 关注博主带你了解更多数据结构知识 目录 1.网络层 IP协议 1.IP协议格式 2.地址管理 2.1 IP地址 2.2 解决IP地址不够用的问题 2.3NAT网络地址转换 2.4网段划分 3.路由选择…...

k8s的安装
k8s的安装 1.创建主机,设置ip,hostname,关闭firewalld,selinux,NetworkManager 编号主机名称ip1k8s-master192.168.118.662k8s-node01192.168.118.773k8s-node02192.168.118.88 2.设置主机之间的ssh免密 [rootk8s-master ~]# ssh-keygen [rootk8s-ma…...

Qt中样式表常用的属性名称定义
Qt中,用好样式表,不但可以做出意想不到的酷炫效果,有时候也能减轻开发量,可能由于你不了解某些样式使用,想破脑袋通过代码实现的效果,反倒不如别人用样式,一两句样式脚本就搞定。 Qt中ÿ…...

React源码学习(一):如何学习React源码
本系列源码学习,是基于 v16.13.1,v17.x与v16.x区别并不太大! 一、如何正确的学习React源码? 找到Github,转到React仓库,fork / clone源码:React 查看Readme,在Documentation中有Cont…...

云计算服务的底层,虚拟化技术的实现原理
虚拟化技术: 一、 从cpu说起, intel和amd等cpu制造商 为了提高其cpu对 虚拟化程序的运算速度, 给cpu硬件里面 增加了指令集 VMLAUNCH, VMRESUME, VMEXIT, VMXOFF 这些指令集称为硬件辅助虚拟化技术的指令集。 ---------------------…...

大数据Flink(一百一十六):Flink SQL的时间属性
文章目录 Flink SQL的时间属性 一、Flink 三种时间属性简介 二、Flink 三种时间属性的应用场景 三、SQL 指定时间属性的两种方式 四、SQL 处理时间DDL定义 五、SQL 事件时间DDL定义 Flink SQL的时…...

Ansible自动化部署kubernetes集群
机器环境介绍 1.1. 机器信息介绍 IP hostname application CPU Memory 192.168.204.129 k8s-master01 etcd,kube-apiserver,kube-controller-manager,kube-scheduler,kubelet,kube-proxy,containerd 2C 4G 192.168.204.130 k8s-w…...

网络通信流程
目录 ♫IP地址 ♫子网掩码 ♫MAC地址 ♫相关设备 ♫ARP寻址 ♫网络通信流程 ♫IP地址 我们已经知道 IP 地址由网络号主机号组成,根据 IP 地址的不同可以有5钟划分网络号和主机号的方案: 其中,各类地址的表示范围是: 分类范围适用…...

数据结构一:绪论
(一)数据结构的基本概念 1.相关名词 【1】数据 1.信息的载体,描述客观事物 2.能被输入到计算机中 3.能被计算机程序识别和处理的符号的集合。 【2】数据元素 1.数据的一个“个体” 2.数据的基本单位 3.有时候也被称为元素、结点、顶点…...

使用OpenFeign在不同微服务之间传递用户信息时失败
文章目录 起因原因解决方法: 起因 从pay-service中实现下单时,会调用到user-service中的扣减余额。 因此这里需要在不同微服务之间传递用户信息。 但是user-service中始终从始至终拿不到user的信息。 原因 在pay-service中,不仅要Enable O…...

js中【Worker】相关知识点详细解读
什么是 JavaScript 中的 Worker? JavaScript 中的 Worker 是一个可以在后台线程中运行代码的 API,这样可以避免主线程(通常是 UI 线程)被阻塞。使用 Worker 时,JavaScript 可以在多线程环境中工作,解决了单…...

使用Apify加载Twitter消息以进行微调的完整指南
# 使用Apify加载Twitter消息以进行微调的完整指南## 引言在自然语言处理领域,微调模型以适应特定任务是提升模型性能的常见方法。本文将介绍如何使用Apify从Twitter导出聊天信息,以便进一步进行微调。## 主要内容### 使用Apify导出推文首先,我…...

【C++算法】滑动窗口
长度最小的子数组 题目链接: 209. 长度最小的子数组 - 力扣(LeetCode)https://leetcode.cn/problems/minimum-size-subarray-sum/description/ 算法原理 代码步骤: 设置left0,right0设置sum0,len0遍历l…...

(c++)猜数字(含根据当前时间生成伪随机数代码)
#include<iostream> #include<ctime>/*用srand((unsigned int)time(NULL));要包含这个头文件,如果没有这两个,rand()函数会一直生成42这个伪随机数。*/using namespace std;int main() {srand((unsigned int)time(NULL));//种子,…...

优化批处理流程:自定义BatchProcessorUtils的设计与应用
优化批处理流程:自定义BatchProcessorUtils的设计与应用 | 原创作者/编辑:凯哥Java | 分类:个人小工具类 在我们开发过程中,处理大量的数据集是一项常见的任务。特别是在数据库操作、文件处理或者…...

Framebuffer应用编程
目录 前言 LCD操作原理 涉及的 API 函数 open函数 ioctl 函数 mmap 函数 Framebuffer程序分析 源码 1.打开设备 2.获取LCD参数 3.映射Framebuffer 4.描点函数 5.随便画几个点 上机实验 前言 本文介绍LCD的操作原理和涉及到的API函数,分析Framebuffer…...

MongoDB根据字段内容长度查询语句
db.getCollection("qlzx_penalties_business_raw").find({$expr: {$lt: [{ $strLenCP: "$punish_name" }, 5]},"punish_name_type" : "机构", "source_data" : /中国/,})解释: 1-"source_data" : /中…...

Android中的单例模式
在Android开发中,单例模式(Singleton Pattern)是一种常用的设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。单例模式在需要控制资源访问、管理共享资源或配置信息的场景下特别有用。在Androi…...

python做游戏好用吗
Python做游戏是完全可以的,而且也非常简单,有一个专门针对游戏开发的平台(模块)—pygame,允许开发人员快速设计游戏而又摆脱了低级语言的束缚,下面我简单介绍一下这个模块的安装和使用: 1、首先…...

常用游戏运行库下载
包含以下资源: DirectX Repair.exe DirectX Repair(Enhanced Edition). vcredist C2013 x64.exe 微软常用运行库合集 下载链接...

(1)CLIP
CLIP 概述1. 训练与推理2. 最终效果与局限性3.后续应用3.1 DALL-E3.2 ActionCLIP3.3 CLIP-Event 概述 CLIP:contrastive language-image pretraining 利用文本的监督信号训练一个迁移能力特别强的视觉模型 传统的视觉模型,人工标注图像,那么…...

MongoDB高可用和分片集群知识
一、MongoDB实现高可用 1. MongoDB复制集(Replication Set) 在实际生产中,MongoDB要实现高可用,以免MongoDB单实例挂了,服务不可用。MongoDB实现高可用是以MongoDB复制集的形式实现,和集群部署概念相同,MongoDB复制集…...

【Python日志功能】一.日志基础与基本配置
文章目录 相关链接第一篇:日志基础与基本配置1 日志的概念与用途2 Python logging 模块介绍3 日志级别4 配置日志格式和输出位置4.1 配置日志格式4.2 配置输出位置 5 实验:基本日志配置和输出实验1:基本日志配置实验2:使用配置文件…...

深圳铨顺宏科技展邀您体验前沿人工智能技术
我们诚挚地邀请您参加即将举行的展会,探索RFID技术在资产与人员管理中的广泛应用。这些展会将为您提供一个深入了解前沿技术和创新解决方案的机会。 东莞台湾名品博览会(东莞台博会)展会时间:9月5日至8日。此次展会展示了来自台湾…...

Lombok:Java开发者的代码简化神器【后端 17】
Lombok:Java开发者的代码简化神器 在Java开发中,我们经常需要编写大量的样板代码,如getter、setter、equals、hashCode、toString等方法。这些代码虽然基础且必要,但往往占据了大量开发时间,且容易在属性变更时引发错误…...

[linux]GCC G++官方源码国内下载地址汇总
【GCC介绍】 GCC(GNU Compiler Collection,GNU编译器套件)是由GNU项目开发的一套编程语言编译器,也是GNU计划的关键部分。它最初作为GNU C Compiler(GNU C语言编译器)出现,但随着时间的推移&…...