- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser # Optional: Needed to run a remote script the first time
> irm get.scoop.sh | iex
scoop install helm
helm uninstall kibana
也不能彻底删除干净,再次启动的时候要换个名字了。
# 安装helm的chart的来源
helm repo add elastic https://helm.elastic.co
# 可以另外创建一个k8s的namespace
kubectl create namespace elastic-system
# 需要注意的是,如果docker desktop,k8s集群只有一个节点,默认是replicas=3
# 导致唯一在running状态下的pod elasticsearch-master-0一直不是ready状态
# 好像是还有一个pushto not ready的一个参数可以设置,但是效果我没有去看
# 所以务必加上 --set replicas=1, 否则kibana启动直接失败
helm install elasticsearch elastic/elasticsearch --set replicas=1 -n elastic-system
# 启动之后会得到一下的log打印出来
1. Watch all cluster members come up.
$ kubectl get pods --namespace=elastic-system -l app=elasticsearch-master -w
2. Retrieve elastic user's password.
$ kubectl get secrets --namespace=elastic-system elasticsearch-master-credentials -ojsonpath='{.data.password}' | base64 -d
3. Test cluster health using Helm test.
$ helm --namespace=elastic-system test elasticsearch
# kibana启动多了这个
3. Retrieve the kibana service account token.
$ kubectl get secrets --namespace=elastic-system kibana-kibana-es-token -ojsonpath='{.data.token}' | base64 -d
#第二个是为了获取kibana的用户elastic的密码的,可以看到还有elasticsearch-master-certs 的secret
#也可以通过base64解码,然后把内容生成3个证书文件
#这样就不用通过 k8s的拷贝命令, 来吧pod中的证书文件给复制下来了
kubectl cp elasticsearch-master-0:/usr/share/elasticsearch/config/certs ./certs
#第一个命令,是查看有没有elasticsearch的pod,处于running,并且ready的状态
# 其他多余的就不细说了。这一步是必要的过程
#elasticsearch的pod READY之后,可以启动kibana
helm install kibana elastic/kibana -n elastic-system
# 如果失败了重新来,需要改名字比如后面加数字,因为uninstall不干净,留了一个configmap,
# 就算删除之后,helm也提示名称重复,暂时不知道原因
# kubectl delete all -all 或者 kubectl delete all -n elastic-system也不行
helm uninstall kibana
helm install kibana2 elastic/kibana -n elastic-system
#另外说一句,虽然elasticsearch是作为stateful部署的,但是数据的持久化,还是靠的pvc
#否则一旦pod重启数据就没有了,这个helm的chart已经给我们写好了,如果需要额外配置,需要用values.yml添加需要修改的参数,然后启动
# 这个时候查看k8s中,可以看到elasticsearch已经有一个service是提供给kibana来通信的。
# 但是我们自己需要去访问kibana, 或者对elasticsearch发送请求,如curl或者客户端
# 就需要把kibana和elasticsearch暴露到节点之外。为了长期部署的方便,不建议使用port-forward
# --address 0.0.0.0这样其他局域网的机器也可以访问
kubectl port-forward service/kibana-kibana 5601:5601 --address 0.0.0.0 -n elastic-system
# 需要另外创建2个service, type是nodeport,但是nodeport的端口的范围是固定的30000到多少
# nodeport命令里面不知道怎么没有selector这个参数了,只能输出文件之后修改selector
# 这文件就不列出来了。查看label的方法如下
kubectl get pods -n elastic-system --show-labels
# 先导出文件,dry-run不能少,端口可以自己定义,我这里写了9200有点关系的32400
kubectl create service nodeport my-elasticsearch-service --tcp=9200:9200 --node-port=32400 -o yaml --dry-run=client > elasticsearchservice.yml
# 修改文件中的selector的部分
# 我就是因为少了-master导致ssl链接不上,排查了2天
把 app: my-elasticsearch-service 改成 app: elasticsearch-master
# 然后启动 apply create都可以
kubectl apply -f .\elasticsearchservice.yml
# 然后是kibana的service, 我选了和5601相近的32601
kubectl create service nodeport my-kibana-service --tcp=5601:5601 --node-port=32601 -o yaml --dry-run=client > kibanaservice.yml
# 然后启动
kubectl create -f .\kibanaservice.yml
# 看看elasticsearch和kibana是不是正常启动着,这个在上面的过程中就会看到
# 比如说docker desktop里面有没有elasticsearch和kibana的容器在运行着
# 通过kubectl get pod -n elasticsearch, 或者get service看看这些服务
# 连接kibana
# 在本机的话就是访问 localhost:32601就能看到kibana的登录页面
# 通过上面获得密码的方法就不用进elasticsearch去找密码了。我也不知道怎么找密码,暂时只知道怎么重置密码,密码在启动log里面
# 进elasticsearch的方法
kubectl exec -it elasticsearch-master-0 -n elastic-system -- /bin/bash
# 进kibana的方法
kubectl exec -it kibana-kibana-XXXpodname -n elastic-system -- /bin/bash
# 获取密码的方法
kubectl get secrets --namespace=elastic-system elasticsearch-master-credentials -ojsonpath='{.data.password}' | base64 -d
# 进去之后因为elasticsearch里面什么数据也没有,想要去创建index pattern,只会出现一个添加integration的界面,所以看不出这个pod的数据是持久的。
# 要验证这个elasticsearch的数据是持久的,可以添加一个用户。然后把docker关了重启,然后再登录进去
# 然后发现这个用户还在。这里我说的就比较模糊了。不细说的原因是因为我也没有对elk掌握的很深,elk知识,不是我两句话能说的清的。
# 然后看一下elasticsearch的数据现在没办法用index patten映射,可以先去dev tools里面加2条数据
# kibana据说是nodejs前端,devtools上发送的内容是不会直接去elasticsearch服务的,是有后台转发给elasticsearch
# 在kibana的dev tool的console随便加点不多的数据,可以随时删掉
POST products/_bulk
{"index":{"_id":1}}
{"name":"Wine - Maipo Valle Cabernet","price":152,"in_stock":38,"sold":47,"tags":["Beverage","Alcohol","Wine"],"description":"Aliquam augue quam, sollicitudin vitae, consectetuer eget, rutrum at, lorem. Integer tincidunt ante vel ipsum. Praesent blandit lacinia erat. Vestibulum sed magna at nunc commodo placerat. Praesent blandit. Nam nulla. Integer pede justo, lacinia eget, tincidunt eget, tempus vel, pede. Morbi porttitor lorem id ligula.","is_active":true,"created":"2004\/05\/13"}
{"index":{"_id":2}}
{"name":"Tart Shells - Savory","price":99,"in_stock":10,"sold":430,"tags":[],"description":"Pellentesque at nulla. Suspendisse potenti. Cras in purus eu magna vulputate luctus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus vestibulum sagittis sapien. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Etiam vel augue. Vestibulum rutrum rutrum neque. Aenean auctor gravida sem.","is_active":true,"created":"2007\/10\/14"}
# 添加好了之后,去kibana的dataviews那里就可以看到添加elasticsearch的index pattern。不再是啥也没有了。
# 在登录kibana的时候,也基本上验证了kibana成功连接上elasticsearch了。
# 连接elasticsearch
# 没有用到客户端,可以用nodejs, python,或者java
# 这里用curl试一下,如果是windows环境,要在git bash里面用curl命令,随便用的一个命令
# 改成自己的password
curl --insecure -u elastic:passwordXXXXXX -H "Content-Type:application/x-ndjson" -XGET 'https://localhost:32401/orders/_search?scroll=1m' -d '{ "query": { "match_all": {} } }'
# 返回没这个index, 随便找的命令,当然没有这个index
{"error":{"root_cause":[{"type":"index_not_found_exception","reason":"no such index [orders]","resource.type":"index_or_alias","resource.id":"orders","index_uuiuid":"_na_","index":"orders"}],"type":"index_not_found_exception","reason":"no such index [orders]","resource.type":"index_or_alias","resource.id":"orders","iexndex_uuid":"_na_","index":"orders"},"status":404}
# 在elasticsearch自己的pod上因为我当时去排查问题
curl --insecure --cacert config/cert/ca.crt -u elastic:passwordXXX -H "Content-Type:application/json" -XGET 'https://localhost:9200/orders/_search?scroll=1m' -d '{ "query": { "match_all": {} } }'
# 在kibana的pod上
# 在pod上都是正常的,所以是自己的service配错了
# charles或者用wireshark抓包抓不到dev tool的console的请求,才发现是前端的后台发送的请求
curl --insecure -u elastic:passwordXXXX -H "Content-Type:application/json" -XGET 'https://elasticsearch-master:9200/orders/_search?scroll=1m' -d '{ "query": { "match_all": {} } }'
helm install kibana elastic/kibana -f values.yaml
或者把这个git下载下来,然后在本地启动。helm的使用方法就不多说了。 最后此篇关于helm在k8s上部署Elasticsearch和Kibana的文章就讲到这里了,如果你想了解更多关于helm在k8s上部署Elasticsearch和Kibana的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我在这里有一个问题,我不知道这是否正常。 但是我认为这里有些湖,安装插件elasticsearch-head之后,我在浏览器中启动url“http://localhost:9200/_plugin/h
我写了这个 flex 搜索查询: es.search(index=['ind1'],doc_type=['doc']) 我得到以下结果: {'_shards': {'failed': 0, 'skip
在ElasticSearch.Net v.5中,存在一个属性 Elasticsearch.Net.RequestData.Path ,该属性在ElasticSearch.Net v.6中已成为depr
如何让 elasticsearch 应用新配置?我更改了文件 ~ES_HOME/config/elasticsearch.yml 中的一个字符串: # Disable HTTP completely:
我正在尝试使用以下分析器在 elastic serach 7.1 中实现部分子字符串搜索 PUT my_index-001 { "settings": { "analysis": {
假设一个 elasticsearch 服务器在很短的时间内接收到 100 个任务。有些任务很短,有些任务很耗时,有些任务是删除任务,有些是插入和搜索查询。 elasticsearch 是如何决定先运行
我需要根据日期过滤一组值(在此处添加字段),然后按 device_id 对其进行分组。所以我正在使用以下东西: { "aggs":{ "dates_between":{ "fi
我在 Elasticsearch 中有一个企业索引。索引中的每个文档代表一个业务,每个业务都有business_hours。我试图允许使用星期几和时间过滤营业时间。例如,我们希望能够进行过滤,以显示我
我有一个这样的过滤查询 query: { filtered: { query: { bool: { should: [{multi_match: {
Elasticsearch 相当新,所以可能不得不忍受我,我遇到了一个问题,如果我使用 20 个字符或更少的字符搜索文档,文档会出现,但是查询中同一个单词中的任何更多字符,我没有结果: 使用“苯氧甲基
我试图更好地理解 ElasticSearch 的内部结构,所以我想知道 ElasticSearch 在内部计算以下两种情况的术语统计信息的方式是否存在任何差异。 第一种情况是当我有这样的文件时: {
在我的 elasticsearch 索引中,我索引了一堆工作。为简单起见,我们只说它们是一堆职位。当人们在我的搜索引擎中输入职位时,我想“自动完成”可能的匹配。 我在这里调查了完成建议:http://
我在很多映射中使用多字段。在 Elastic Search 的文档中,指示应将多字段替换为“fields”参数。参见 http://www.elasticsearch.org/guide/en/ela
我有如下查询, query = { "query": {"query_string": {"query": "%s" % q}}, "filter":{"ids
我有一个Json数据 "hits": [ { "_index": "outboxprov1", "_type": "deleted-c
这可能是一个初学者的问题,但我对大小有一些疑问。 根据 Elasticsearch 规范,大小的最大值可以是 10000,我想在下面验证我的理解: 示例查询: GET testindex-2016.0
我在 Elastic Search 中发现了滚动功能,这看起来非常有趣。看了那么多文档,下面的问题我还是不清楚。 如果偏移量已经存在那么为什么要使用滚动? 即将到来的记录呢?假设它完成了所有数据的滚动
我有以下基于注释的 Elasticsearch 配置,我已将索引设置为不被分析,因为我不希望这些字段被标记化: @Document(indexName = "abc", type = "efg
我正在尝试在单个索引中创建多个类型。例如,我试图在host索引中创建两种类型(post,ytb),以便在它们之间创建父子关系。 PUT /ytb { "mappings": { "po
我尝试创建一个简单的模板,包括一些动态模板,但我似乎无法为文档编制索引。 我得到错误: 400 {"error":"MapperParsingException[mapping [_default_]
我是一名优秀的程序员,十分优秀!