Kubernetes K8S之Helm部署EFK日志分析系统

2023-11-10

Kubernetes K8S之Helm部署ELK日志分析系统;由于Logstash比较消耗资源,因此本次我们使用Fluentd实现日志收集(EFK)。

主机配置规划

服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟)
k8s-master CentOS7.7 2C/4G/20G 172.16.1.110 10.0.0.110
k8s-node01 CentOS7.7 2C/4G/20G 172.16.1.111 10.0.0.111
k8s-node02 CentOS7.7 2C/4G/20G 172.16.1.112 10.0.0.112

备注:由于EFK部署比较消耗内存;所以每台机器的内存最好大于等于4G。

ELK概述

ELK是Elasticsearch、Logstash、Kibana的简称,这三者是核心套件,但并非全部。

Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等接口,提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。

Logstash是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。

Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己数据定制仪表板的视图,还允许他们以特殊的方式查询和过滤数据。

由于Logstash比较消耗资源,因此本次我们使用Fluentd实现日志收集(EFK)。

EFK镜像下载

由于镜像都在国外,因此我们在国内下载镜像,然后tag为对应的镜像名称。执行如下脚本【集群所有机器都执行】:

[root@k8s-node02 software]# vim download_efk_image.sh 
#!/bin/sh

##### 在 master 节点和 worker 节点都要执行 【所有机器执行】

# 加载环境变量
. /etc/profile
. /etc/bashrc

# 变量设置
elasticsearch_iamge="elasticsearch-oss:6.7.0"
busybox_image="busybox:latest"
bats_image="bats:0.4.0"
fluentd_image="fluentd-elasticsearch:v2.3.2"
kibana_image="kibana-oss:6.7.0"

# 集群所有机器执行
# elasticsearch镜像下载
docker pull registry.cn-beijing.aliyuncs.com/google_registry/${elasticsearch_iamge}
docker tag  registry.cn-beijing.aliyuncs.com/google_registry/${elasticsearch_iamge} docker.elastic.co/elasticsearch/${elasticsearch_iamge}
docker rmi  registry.cn-beijing.aliyuncs.com/google_registry/${elasticsearch_iamge}
# busybox镜像下载
docker pull registry.cn-beijing.aliyuncs.com/google_registry/${busybox_image}
docker tag  registry.cn-beijing.aliyuncs.com/google_registry/${busybox_image} ${busybox_image}
docker rmi  registry.cn-beijing.aliyuncs.com/google_registry/${busybox_image}
# bats镜像下载
docker pull registry.cn-beijing.aliyuncs.com/google_registry/${bats_image}
docker tag  registry.cn-beijing.aliyuncs.com/google_registry/${bats_image} dduportal/${bats_image}
docker rmi  registry.cn-beijing.aliyuncs.com/google_registry/${bats_image}
# fluentd-elasticsearch镜像下载
docker pull registry.cn-beijing.aliyuncs.com/google_registry/${fluentd_image}
docker tag  registry.cn-beijing.aliyuncs.com/google_registry/${fluentd_image} gcr.io/google-containers/${fluentd_image}
docker rmi  registry.cn-beijing.aliyuncs.com/google_registry/${fluentd_image}
# kibana-oss镜像下载
docker pull registry.cn-beijing.aliyuncs.com/google_registry/${kibana_image}
docker tag  registry.cn-beijing.aliyuncs.com/google_registry/${kibana_image} docker.elastic.co/kibana/${kibana_image}
docker rmi  registry.cn-beijing.aliyuncs.com/google_registry/${kibana_image}

Elasticsearch部署

本次部署EFK,创建一个efk名称空间。

chart下载与配置修改

# 当前目录
[root@k8s-master efk]# pwd
/root/k8s_practice/efk
# 创建 efk 名称空间
[root@k8s-master efk]# kubectl create namespace efk
[root@k8s-master efk]# 
# ES版本查看,本次我们部署chart 1.30.0版本,ES 6.7.0版本
[root@k8s-master efk]# helm search stable/elasticsearch -l
NAME                         	CHART VERSION	APP VERSION	DESCRIPTION                                                 
stable/elasticsearch         	1.32.5       	6.8.6      	DEPRECATED Flexible and powerful open source, distributed...
stable/elasticsearch         	1.32.4       	6.8.6      	Flexible and powerful open source, distributed real-time ...
stable/elasticsearch         	1.32.3       	6.8.6      	Flexible and powerful open source, distributed real-time ...
………………
[root@k8s-master efk]# 
[root@k8s-master efk]# helm fetch stable/elasticsearch --version 1.30.0
[root@k8s-master efk]# tar xf elasticsearch-1.30.0.tgz
# 修改配置文件1
[root@k8s-master efk]# vim elasticsearch/values.yaml
initImage:
  repository: "busybox"
  tag: "latest"
  pullPolicy: "IfNotPresent"  # 从Always 改为IfNotPresent
………………
client:
  name: client
  replicas: 1  # 从2改为1,因为是在自己PC机操作的,内存有限
  serviceType: ClusterIP
………………
master:
  name: master
  exposeHttp: false
  replicas: 3   # 不要修改
  heapSize: "512m"
  persistence:
    enabled: false  # 没有多余的PVC,因此从true改为false
    accessMode: ReadWriteOnce
………………
data:
  name: data
  exposeHttp: false
  replicas: 1  # 从2改为1,因为是在自己PC机操作的,内存有限
  heapSize: "1024m"  # 从1536m改为1024m,因为是在自己PC机操作的,内存有限
  persistence:
    enabled: false  # 没有多余的PVC,因此从true改为false
    accessMode: ReadWriteOnce
[root@k8s-master efk]# 
# 修改配置文件2
[root@k8s-master efk]# vim elasticsearch/templates/client-deployment.yaml
apiVersion: apps/v1  # 从 apps/v1beta1 改为 apps/v1
kind: Deployment
………………
spec:
  replicas: {{ .Values.client.replicas }}
  # 添加信息 如下
  selector:
    matchLabels:
      app: {{ template "elasticsearch.name" . }}
      component: "{{ .Values.client.name }}"
      release: {{ .Release.Name }}
  # 添加信息 如上
[root@k8s-master efk]# 
# 修改配置文件3
[root@k8s-master efk]# vim elasticsearch/templates/data-statefulset.yaml
apiVersion: apps/v1  # 从 apps/v1beta1 改为 apps/v1
kind: StatefulSet
………………
spec:
  serviceName: {{ template "elasticsearch.data.fullname" . }}
  replicas: {{ .Values.data.replicas }}
  # 添加信息 如下
  selector:
    matchLabels:
      app: {{ template "elasticsearch.name" . }}
      component: "{{ .Values.data.name }}"
      release: {{ .Release.Name }}
      role: data
  # 添加信息 如上
[root@k8s-master efk]# 
# 修改配置文件4
[root@k8s-master efk]# vim elasticsearch/templates/master-statefulset.yaml 
apiVersion: apps/v1  # 从 apps/v1beta1 改为 apps/v1
kind: StatefulSet
………………
spec:
  serviceName: {{ template "elasticsearch.master.fullname" . }}
  replicas: {{ .Values.master.replicas }}
  # 添加信息 如下
  selector:
    matchLabels:
      app: {{ template "elasticsearch.name" . }}
      component: "{{ .Values.master.name }}"
      release: {{ .Release.Name }}
      role: master
  # 添加信息 如上
[root@k8s-master efk]# 

Elasticsearch部署

步骤如下:

# 当前目录
[root@k8s-master efk]# pwd
/root/k8s_practice/efk
# 部署ES
[root@k8s-master efk]# helm install --name es01 --namespace=efk elasticsearch/
[root@k8s-master efk]# 
# 状态查看
[root@k8s-master ~]# helm list
NAME          	REVISION	UPDATED                 	STATUS  	CHART                	APP VERSION	NAMESPACE  
es01          	1       	Sat Jul 25 12:18:50 2020	DEPLOYED	elasticsearch-1.30.0 	6.7.0      	efk 
[root@k8s-master efk]# 
# 等待一会儿后【估计几分钟】,查看pod状态信息如下
[root@k8s-master ~]# kubectl get deploy -n efk
NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
es01-elasticsearch-client   1/1     1            1           6m13s
[root@k8s-master ~]# 
[root@k8s-master ~]# kubectl get pod -n efk
NAME                                         READY   STATUS    RESTARTS   AGE
es01-elasticsearch-client-646f8f866d-rt2wp   1/1     Running   0          6m21s
es01-elasticsearch-data-0                    1/1     Running   0          6m21s
es01-elasticsearch-master-0                  1/1     Running   0          6m21s
es01-elasticsearch-master-1                  1/1     Running   0          5m30s
es01-elasticsearch-master-2                  1/1     Running   0          5m3s
[root@k8s-master efk]# 
[root@k8s-master efk]# kubectl get svc -n efk
NAME                           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
es01-elasticsearch-client      ClusterIP   10.100.237.152  <none>        9200/TCP   6m34s
es01-elasticsearch-discovery   ClusterIP   None            <none>        9300/TCP   6m42s
[root@k8s-master efk]# 
[root@k8s-master efk]# kubectl get sts -n efk
NAME                        READY   AGE
es01-elasticsearch-data     1/1     7m4s
es01-elasticsearch-master   3/3     7m4s
[root@k8s-master efk]# 

Elasticsearch访问

其中IP来源于ES的svc。

[root@k8s-master ~]# curl 10.100.237.152:9200/
{
  "name" : "es01-elasticsearch-client-646f8f866d-rt2wp",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "S4t_UDOuRye9mtK22VWxLw",
  "version" : {
    "number" : "6.7.0",
    "build_flavor" : "oss",
    "build_type" : "docker",
    "build_hash" : "8453f77",
    "build_date" : "2019-03-21T15:32:29.844721Z",
    "build_snapshot" : false,
    "lucene_version" : "7.7.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}
[root@k8s-master ~]# 
[root@k8s-master ~]# curl 10.100.237.152:9200/_cluster/health?pretty
{
  "cluster_name" : "elasticsearch",
  "status" : "green",   # 可见状态正常
  "timed_out" : false,
  "number_of_nodes" : 5,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

至此,elasticsearch部署完毕

elasticsearch-client域名获取

根据es01-elasticsearch-client的svc信息获取到es01-elasticsearch-client的域名;用于后面的fluentd 和kibana。

启动一个pod

[root@k8s-master test]# pwd
/root/k8s_practice/test
[root@k8s-master test]# cat myapp_demo.yaml
apiVersion: v1
kind: Pod
metadata:
  name: myapp-demo
  namespace: default
  labels:
    k8s-app: myapp
spec:
  containers:
  - name: myapp
    image: registry.cn-beijing.aliyuncs.com/google_registry/myapp:v1
    imagePullPolicy: IfNotPresent
    ports:
    - name: httpd
      containerPort: 80
      protocol: TCP
[root@k8s-master test]# 
[root@k8s-master test]# kubectl apply -f myapp_demo.yaml
pod/myapp-demo created
[root@k8s-master test]# 
[root@k8s-master test]# kubectl get pod -o wide
NAME         READY   STATUS    RESTARTS   AGE   IP            NODE         NOMINATED NODE   READINESS GATES
myapp-demo   1/1     Running   0          6s    10.244.2.84   k8s-node02   <none>           <none>

进入pod并得到elasticsearch-client域名信息

# 进入一个pod容器
[root@k8s-master test]# kubectl exec -it myapp-demo sh 
##### 格式 nslookup svc-cluster-ip
/ # nslookup 10.100.237.152
nslookup: can't resolve '(null)': Name does not resolve

Name:      10.100.237.152
Address 1: 10.100.237.152 es01-elasticsearch-client.efk.svc.cluster.local
/ # 
/ # 
### 通过ping判断域名是否通畅
/ # ping es01-elasticsearch-client.efk.svc.cluster.local
PING es01-elasticsearch-client.efk.svc.cluster.local (10.100.237.152): 56 data bytes
64 bytes from 10.100.237.152: seq=0 ttl=64 time=0.094 ms
64 bytes from 10.100.237.152: seq=1 ttl=64 time=0.081 ms
64 bytes from 10.100.237.152: seq=2 ttl=64 time=0.243 ms

由上可得,Service中es01-elasticsearch-client的域名为:es01-elasticsearch-client.efk.svc.cluster.local

Service的域名格式为:$(service name).$(namespace).svc.cluster.local,其中 cluster.local 指定的集群的域名

Fluentd部署

chart下载与配置修改

[root@k8s-master efk]# pwd
/root/k8s_practice/efk
[root@k8s-master efk]#
# fluentd版本信息查看
[root@k8s-master efk]# helm search stable/fluentd-elasticsearch -l
NAME                        	CHART VERSION	APP VERSION	DESCRIPTION                                                 
stable/fluentd-elasticsearch	2.0.7        	2.3.2      	DEPRECATED! - A Fluentd Helm chart for Kubernetes with El...
stable/fluentd-elasticsearch	2.0.6        	2.3.2      	A Fluentd Helm chart for Kubernetes with Elasticsearch ou...
stable/fluentd-elasticsearch	2.0.5        	2.3.2      	A Fluentd Helm chart for Kubernetes with Elasticsearch ou...
………………
# 获取fluentd-elasticsearch 并解压
[root@k8s-master efk]# helm fetch stable/fluentd-elasticsearch --version 2.0.7
[root@k8s-master efk]# tar xf fluentd-elasticsearch-2.0.7.tgz
# 配置修改
[root@k8s-master efk]# vim fluentd-elasticsearch/values.yaml
### 为什么使用域名而不是IP,因此每次重启ES的svc,对应IP都会改变。而域名是不变的
elasticsearch:
  host: 'es01-elasticsearch-client.efk.svc.cluster.local'   # 修改处,域名获取参见上文
  port: 9200
  scheme: 'http'
[root@k8s-master efk]# 

fluentd-elasticsearch部署

步骤如下:

################ 部署fluentd-elasticsearch
# 当前目录
[root@k8s-master efk]# pwd
/root/k8s_practice/efk
# 部署fluentd-elasticsearch
[root@k8s-master efk]# helm install --name fluentd-es01 --namespace=efk fluentd-elasticsearch
[root@k8s-master efk]# 
# 状态查看
[root@k8s-master efk]#  helm list
NAME          	REVISION	UPDATED                 	STATUS  	CHART                      	APP VERSION	NAMESPACE  
es01          	1       	Sat Jul 25 12:18:50 2020	DEPLOYED	elasticsearch-1.30.0       	6.7.0      	efk        
fluentd-es01  	1       	Sat Jul 25 12:36:01 2020	DEPLOYED	fluentd-elasticsearch-2.0.7	2.3.2      	efk
[root@k8s-master efk]# 
#查看pod状态信息如下
[root@k8s-master efk]# kubectl get ds -n efk
NAME                                 DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
fluentd-es01-fluentd-elasticsearch   2         2         2       2            2           <none>          113s
[root@k8s-master efk]# 
[root@k8s-master efk]# kubectl get pod -n efk -o wide
NAME                                         READY   STATUS    RESTARTS   AGE   IP             NODE         NOMINATED NODE   READINESS GATES
es01-elasticsearch-client-646f8f866d-rt2wp   1/1     Running   0          17m   10.244.2.57    k8s-node02   <none>           <none>
es01-elasticsearch-data-0                    1/1     Running   0          17m   10.244.2.58    k8s-node02   <none>           <none>
es01-elasticsearch-master-0                  1/1     Running   0          17m   10.244.4.241   k8s-node01   <none>           <none>
es01-elasticsearch-master-1                  1/1     Running   0          17m   10.244.2.59    k8s-node02   <none>           <none>
es01-elasticsearch-master-2                  1/1     Running   0          16m   10.244.4.242   k8s-node01   <none>           <none>
fluentd-es01-fluentd-elasticsearch-qnmf9     1/1     Running   0          43s   10.244.4.243   k8s-node01   <none>           <none>
fluentd-es01-fluentd-elasticsearch-xmw5f     1/1     Running   0          43s   10.244.2.60    k8s-node02   <none>           <none>

Kibana部署

kibana的主版本和大版本必须和elasticsearch(ES)一致,小版本可以不同;但两者版本最好一致,这样可以避免一些因版本不同导致的意外情况。

由于elasticsearch(ES)使用的是6.7.0,因此kibana我们也是用该版本。

chart下载与配置修改

[root@k8s-master efk]# pwd
/root/k8s_practice/efk
# 所有版本查看
[root@k8s-master efk]# helm search stable/kibana -l
NAME         	CHART VERSION	APP VERSION	DESCRIPTION                                                 
stable/kibana	3.2.7        	6.7.0      	Kibana is an open source data visualization plugin for El...
stable/kibana	3.2.6        	6.7.0      	Kibana is an open source data visualization plugin for El...
………………
# 获取kibana,并解压缩
[root@k8s-master efk]# helm fetch stable/kibana --version 3.2.7 
[root@k8s-master efk]# tar xf kibana-3.2.7.tgz
# 配置修改1
[root@k8s-master efk]# vim kibana/values.yaml
### 为什么使用域名而不是IP,因此每次重启ES的svc,对应IP都会改变。而域名是不变的
files:
  kibana.yml:
    ## Default Kibana configuration from kibana-docker.
    server.name: kibana
    server.host: "0"
    elasticsearch.url: http://es01-elasticsearch-client.efk.svc.cluster.local:9200   # 修改处,域名获取参见上文
………………
service:
  type: NodePort  # 修改内容  从ClusterIP改为NodePort
  externalPort: 443
  internalPort: 5601
  nodePort: 30601  # 添加处,Service端口范围:30000-32767
[root@k8s-master efk]# 
# 配置修改2
[root@k8s-master efk]# vim kibana/templates/deployment.yaml 
apiVersion: apps/v1   # 从 apps/v1beta1 改为 apps/v1
kind: Deployment
metadata:
………………
spec:
  replicas: {{ .Values.replicaCount }}
  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
  # 添加信息 如下
  selector:
    matchLabels:
      app: {{ template "kibana.name" . }}
      release: "{{ .Release.Name }}"
  # 添加信息 如上

kibana部署

步骤如下:

################ 部署kibana-oss
# 当前目录
[root@k8s-master efk]# pwd
/root/k8s_practice/efk
# 部署kibana-oss
[root@k8s-master efk]# helm install --name kibana01 --namespace=efk kibana
[root@k8s-master efk]#
# 状态查看
[root@k8s-master efk]# helm list
NAME          	REVISION	UPDATED                 	STATUS  	CHART                      	APP VERSION	NAMESPACE  
es01          	1       	Sat Jul 25 12:18:50 2020	DEPLOYED	elasticsearch-1.30.0       	6.7.0      	efk        
fluentd-es01  	1       	Sat Jul 25 12:36:01 2020	DEPLOYED	fluentd-elasticsearch-2.0.7	2.3.2      	efk        
kibana01      	1       	Sat Jul 25 12:38:18 2020	DEPLOYED	kibana-3.2.7               	6.7.0      	efk
[root@k8s-master efk]# 
#查看pod状态信息如下
[root@k8s-master efk]# kubectl get deploy -n efk
NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
es01-elasticsearch-client   1/1     1            1           19m
kibana01                    1/1     1            1           27s
[root@k8s-master efk]# 
[root@k8s-master efk]# kubectl get pod -n efk -o wide
NAME                                         READY   STATUS    RESTARTS   AGE     IP             NODE         NOMINATED NODE   READINESS GATES
es01-elasticsearch-client-646f8f866d-rt2wp   1/1     Running   0          20m     10.244.2.57    k8s-node02   <none>           <none>
es01-elasticsearch-data-0                    1/1     Running   0          20m     10.244.2.58    k8s-node02   <none>           <none>
es01-elasticsearch-master-0                  1/1     Running   0          20m     10.244.4.241   k8s-node01   <none>           <none>
es01-elasticsearch-master-1                  1/1     Running   0          19m     10.244.2.59    k8s-node02   <none>           <none>
es01-elasticsearch-master-2                  1/1     Running   0          19m     10.244.4.242   k8s-node01   <none>           <none>
fluentd-es01-fluentd-elasticsearch-qnmf9     1/1     Running   0          3m10s   10.244.4.243   k8s-node01   <none>           <none>
fluentd-es01-fluentd-elasticsearch-xmw5f     1/1     Running   0          3m10s   10.244.2.60    k8s-node02   <none>           <none>
kibana01-bc479f8c7-kr2n2                     1/1     Running   0          53s     10.244.4.244   k8s-node01   <none>           <none>
[root@k8s-master efk]# 
# 查看svc信息
[root@k8s-master efk]# kubectl get svc -n efk -o wide
NAME                           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE   SELECTOR
es01-elasticsearch-client      ClusterIP   10.100.237.152  <none>        9200/TCP        20m   app=elasticsearch,component=client,release=es01
es01-elasticsearch-discovery   ClusterIP   None            <none>        9300/TCP        20m   app=elasticsearch,component=master,release=es01
kibana01                       NodePort    10.101.200.177  <none>        443:30601/TCP   71s   app=kibana,release=kibana01

浏览器访问

http://172.16.1.110:30601/

页面访问

在这里插入图片描述

创建索引

在这里插入图片描述

在这里插入图片描述

数据查看

在这里插入图片描述

相关阅读

1、Kubernetes K8S之Helm部署、使用与示例

完毕!


———END———
如果觉得不错就关注下呗 (-^O^-) !

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kubernetes K8S之Helm部署EFK日志分析系统 的相关文章

随机推荐

  • vSphere Client(Vcenter)上传ISO镜像

    不少新手在ESXi上安装好虚拟机后 都要寻找浏览器的ios镜像 但同学们会在这里卡顿 找不到上传ios的路径 今天就来讲一讲 上传的问题 一 方法一 我初学时 一样在这里卡顿 找不到上传的路径 在网上搜索 确实找到了一种上传的方法 在这里转
  • keil编译后.c文件前面没有+号

    如下图 程序的 c文件前面没有 号 已经在show include file dependencies前面打勾了 看到下面的提示是编译出问题了 点击魔术棒 在Target Code Generation里面选择默认的编译器 然后重新编译 发
  • 三维目标检测新SOTA---ADFDetV2论文解读

    问题 本文提出了一种单阶段的三维目标检测算法 并在文中分析了二阶段三维目标检测算法的不必要性 其所提算法在waymo实时目标检测竞赛中取得了第一的成绩 其性能超过了所有单阶段和多阶段的目标检测算法 作者首先分析了二阶段目标检测算法主要有两个
  • LinuxC——分支语句

    在C程序中 我们经常会根据一个表达式的结果来执行不同的操作 这个时候我们就需要用到分支语句 本篇博客将介绍几种分支语句 一 if 语句 if语句的通用形式 if expression statement if语句的用法 首先对express
  • 我的第一个博客

    2018 10 13 16 00 54 注册了开源中国账号 这是我的第一篇博客 以下为收集来的网站 感谢原博主 原文 https blog csdn net X 1875 article details 80932618 utm sourc
  • Win32简单学习

    文章目录 win32常用调试方法 消息循环阻塞 窗口类型风格 绘图 菜单 多线程 原子操作 互斥 事件 信号量 win32常用调试方法 include
  • 自制操作系统(一)

    从今天开始制作一个操作系统 今天完成最基本的功能 输出hello world 计算机在读取磁盘的时候 首先从最初的一个扇区开始读盘 然后如果这最后2个字节不是55AA 计算机会认为这张盘上没有所需启动程序 就会报一个不能启动的错误 如果计算
  • python对文件的操作(一)序列化和反序列化

    1 文件操作 1 1 文件操作的流程 1 打开文件 得到文件句柄并赋值给变量 2 通过句柄对文件进行操作 3 关闭文件 1 2 从文件中读取数据 要使用文件中的信息 首先需要将信息读取到内存中 为此 那你可以一次读取文件的所有内容 也可以每
  • 私服搭建,一篇就够

    maven私服搭建 从部署到java项目使用 前言 什么是私服 优势 为什么要用私服 如何用 下载安装 启动配置 查看自己的启动内容 内部仓库定义 仓库类型说明 配置远程仓库 上传jar包 使用 前言 首先我们先来了解一些基本的概念 再来学
  • 连续两年增长超六成,边缘计算怎么这么火?

    数字经济蓬勃发展时代 边缘计算方兴未艾 近日 IDC发布的 IDC Market Glance 中国边缘基础设施 2Q22 报告显示 用户对于边缘服务与解决方案的强劲需求 为全球的边缘硬件厂商 边缘服务商等带来成长机遇 促使边缘计算加速形成
  • 有道报出: Encountered an improper argument解决办法

    概述 出现的症状 在打开有道云之后使用划词翻译第一次可以使用之后就不能使用了 报出Encountered an improper argument 截图当时没截上百度截上来了 up主的解决办法是 看看您的是不是最新版本的YoudaoDict
  • unity编辑器状态获取平台切换

    EditorUserBuildSettings activeBuildTarget
  • 自动加载br_netfilter模块

    在 etc sysctl conf中添加 net bridge bridge nf call ip6tables 1 net bridge bridge nf call iptables 1 执行sysctl p 时出现 root loca
  • vue组件间父子传值、祖父子孙传值和任意传值的5种方法,prop,emit,attrs,listeners以及中央事件总线

    文章目录 父子传值 prop 父向子传值 emit 子向父传值 祖父子孙传值 attrs 祖父向子孙传值 listeners 子孙向祖父传值 在这里插入图片描述 任意传值 中央事件总线 任意组件间传值 笔者今天自学vue组件间的传值时非常混
  • 加载预训练模型(autoModel)

    严格意义上讲 transformers 并不是 PyTorch 的一部分 然而 transformers 与 PyTorch 或 TensorFlow 结合的太紧密了 而且可以把 transformers 看成是 PyTorch 或 Ten
  • ZZULIOJ 2834: 小凯的书架

    2834 小凯的书架http acm zzuli edu cn problem php id 2834注意k大于n的情况 此题数据较大 注意输出输入的时候用scanf printf include
  • moviepy音视频剪辑:视频基类VideoClip子类DataVideoClip、UpdatedVideoClip、ImageClip、ColorClip、TextClip及使用案例

    前往老猿Python博文目录 一 概述 在 moviepy音视频剪辑 moviepy中的剪辑相关类及关系 介绍了剪辑相关类及关系 其中VideoClip有多个直接子类和间接子类 本文中将介绍的DataVideoClip UpdatedVid
  • conda 创建环境及运用

    终究是被现实击溃了 本来想着这种版本问题在本机上多配几个不同版本的 python 切换就完了 但是膜拜大佬的科研成果的同时又无法解决不同版本包的适配问题后 终究是顶不住了 没办法 只好把之前欠下的 conda 补一下了 本次以模型 bert
  • 浏览器的渲染机制

    转发至https www jianshu com p 05eb1b17b298 一 为什么要了解浏览器渲染页面的机制 主要还是性能的优化 了解浏览器如何进行加载 我们可以在引用外部样式文件 外部JS时 将它们放到合适的位置 是浏览器以最快的
  • Kubernetes K8S之Helm部署EFK日志分析系统

    Kubernetes K8S之Helm部署ELK日志分析系统 由于Logstash比较消耗资源 因此本次我们使用Fluentd实现日志收集 EFK 主机配置规划 服务器名称 hostname 系统版本 配置 内网IP 外网IP 模拟 k8s