Kubernetes(k8s)-nacos-sentinel-rocketmq-zipkin-elasticsearch-redis-mysql
kubernetes 默认宿主机映射端口 30000-32767
,有些小伙伴,没有修改 kubernetes 的默认端口,
或者修改起来 比较麻烦,所以这里改为 把对外端口统一修改。
对外端口如下:
mariadb: 30306
elasticsearch: 30920 30930
kibana: 30601
logstash: 30621
grafana: 30300
jenkins: 30800
xxl-job: 30820
nacos: 30848
prometheus: 30909
redis: 30379
registry: 30500
rocketmq: 30876
rocketmq-ui: 30879
sentinel: 30280 30719
zipkin: 30411
系统:centos 7.6
内核: 5.1.9-1.el7.elrepo.x86_64
Kubernetes(K8s) 1.16.3
服务器IP:192.168.0.254
如果想要使用 请修改create.b.mariadb.start.sh
中 /etc/yum.repos.d/mariadb.repo
部分如下
[mariadb]
name = MariaDB
#baseurl = http://mirrors.aliyun.com/mariadb/yum/10.4/centos7-amd64/
baseurl = http://mirrors.aliyun.com/mariadb/yum/10.4/centos8-amd64/
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
enabled=1
gpgcheck=1
执行命令
dnf clean all && \
dnf makecache && \
dnf repolist && \
dnf -y install MariaDB-client --disablerepo=AppStream
如果更改了服务器IP 为其他IP,那么请全局全部替换成你改的IP
更改镜像策略为 如果本地有镜像, 则使用本地的镜像, 本地不存在时拉取镜像
find ./ -name "*yml" -type f -exec sed -i 's/imagePullPolicy: Always/imagePullPolicy: IfNotPresent/g' {} \;
请看 最近写的一篇文章,
https://blog.csdn.net/fenglailea/article/details/88745642
常用 k8s 命令
https://foxwho.blog.csdn.net/article/details/92137467
对CPU,内存都做了限制,请自行针对修改
没有使用持久化存储,这里直接使用宿主机存储,如有需要,请自行增加
请把项目放置到 /www/k8s/foxdev/
目录下,所有都是基于此目录
或者请看 下面一节的 拉取代码
复制以下整个命令
# 创建目录 ,且进入该目录,拉去 代码,设置 sh 末尾 的文件为 可执行文件
mkdir -p /www/k8s/ && cd /www/k8s/ && \
git clone https://github.com/foxiswho/k8s-nacos-sentinel-rocketmq-zipkin-elasticsearch-redis-mysql.git foxdev --depth=1 && \
cd foxdev && \
chmod +x *sh
根目录下执行
./all.start.sh
./all.stop.delete.sh
rocketmq 采用 server:1主,Broker:1主1从模式
带有 rocketmq-console web 简单管理界面
对外端口:
server:
宿主机IP:30876
ui:(console)
宿主机IP:30879
内部端口
server:
宿主机IP:9876
ui:(console)
宿主机IP:9879
Broker:(master)
宿主机IP:10909
Broker:(master)
宿主机IP:10911
Broker:(master)
宿主机IP:10912
Broker:(slave)
宿主机IP:10919
Broker:(slave)
宿主机IP:10921
Broker:(slave)
宿主机IP:10922
broker中3个端口说明
listenPort=10911
Broker 对外服务的监听端口haListenPort=10912
haService中使用 默认值为:listenPort + 1fastListenPort=10909
主要用于slave同步master listenPort - 2
XX-rc.yml
文件启动参数autoCreateTopicEnable=true
,表示 允许 Broker 自动创建Topic
执行命令时候,会自动创建 以下7个目录,部署时候要映射 pod内部目录
/www/k8s/foxdev/rocketmq/logs/
/www/k8s/foxdev/rocketmq/logs-b/
/www/k8s/foxdev/rocketmq/logs-b-s/
/www/k8s/foxdev/rocketmq/logs-ui/
/www/k8s/foxdev/rocketmq/store/
/www/k8s/foxdev/rocketmq/store-b/
/www/k8s/foxdev/rocketmq/store-b-s/
logs: server 日志目录 logs-b: Broker(master) 日志目录 logs-b-s: Broker(slave) 日志目录 logs-ui: console 日志目录
store: server store 目录 store-b: Broker(master) store 目录 store-b-s: Broker(slave) store 目录
直接执行 根目录
下 create.r.rocketmq.start.sh
即可
./create.r.rocketmq.start.sh
大约几分钟后,使用rocketmq或者访问浏览器http://192.168.0.254:30879
,即可看到 rocketmq-console
的管理界面
kubectl get svc,pod,cs,rc
或
kubectl get svc
kubectl get pod
kubectl get cs
kubectl get rc
采用 mariadb 最新 版本
暂时没有使用 主从,后期有空的时候再设置
生成容器镜像后,会自动导入nacos
数据库配置文件,
及创建 数据库nacos
用户和密码nacos
官方:
https://nacos.io/zh-cn/docs/what-is-nacos.html
端口 3306
对外端口:30306
账号/密码
root/root
nacos/nacos
nacos
为 nacos 服务注册发现 数据库
/www/k8s/foxdev/mariadb/data 数据库文件目录 /www/k8s/foxdev/mariadb/mariadb.conf.d 数据库自定义配置文件目录
直接执行 根目录
下 create.b.mariadb.start.sh
即可
./create.b.mariadb.start.sh
执行完成后,即可用 数据库管理软件,进行操作数据库了
编排文件 改动官方的编排的文件,去除了数据库主从备份,这里使用 mariadb 最新版数据库
所以,要先 生成 mariadb 才能 部署 nacos
端口 :8848
对外端口:30848
账号/密码
nacos/nacos
如何修改nacos 账号及密码,请看官方的
https://nacos.io/zh-cn/docs/console-guide.html
/www/k8s/foxdev/nacos/logs-nacos 日志目录
/www/k8s/foxdev/nacos/init.d/custom.properties 额外配置文件
直接执行 根目录
下 create.n.nacos.start.sh
即可
./create.n.nacos.start.sh
执行完成后,访问控制台网址即可操作naocs
配置了
http://192.168.0.254:30848/nacos
curl -X PUT 'http://192.168.0.254:30848/nacos/v1/ns/instance?serviceName=test.fox&ip=192.0.1.10&port=8080'
返回
ok
curl -X GET 'http://192.168.0.254:30848/nacos/v1/ns/instances?serviceName=test.fox'
curl -X POST "http://192.168.0.254:30848/nacos/v1/cs/configs?dataId=test.fox&group=test&content=helloWorld"
返回
true
在浏览器中查看配置列表
,
就会发现有一个新配置,DataId 为test.fox
,
Group为test
的配置,
点击编辑
,可以看到内容为helloWorld
curl -X GET "http://192.168.0.254:30848/nacos/v1/cs/configs?dataId=test.fox&group=test"
返回
helloWorld
采用 redis 最新 版本
官方 docker redis
https://hub.docker.com/_/redis
端口 6379
对外端口: 30379
/www/k8s/foxdev/redis/data 数据文件 /www/k8s/foxdev/redis/conf 配置文件目录
直接执行 根目录
下 create.r.redis.start.sh
即可
./create.r.redis.start.sh
执行完成后,即可用 redis 缓存了
当前版本已经安装了词库,词库内的配置文件,
默认没有启用映射(默认把它给注释掉),如需要自己配置,那么只要开启映射即可。
常用的词库
https://github.com/medcl/elasticsearch-analysis-ik
端口:9200
端口:9300
对外端口:30920
对外端口:30930
elasticsearch/logs 日志目录
elasticsearch/data 数据目录
如果你有更多的插件需要加载,那么 请自行配置相关目录
直接执行 根目录
下 create.elk.elasticsearch.start.sh
即可
./create.elk.elasticsearch.start.sh
执行完成后,即可用 elasticsearch 了
curl -XPUT http://192.168.0.254:30920/index
输出
{"acknowledged":true,"shards_acknowledged":true,"index":"index"}
curl -XPOST http://192.168.0.254:30920/index/_mapping -H 'Content-Type:application/json' -d'
{
"properties": {
"content": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
}
}
}'
输出
{"acknowledged":true}
curl -XPOST http://192.168.0.254:30920/index/_create/1?pretty -H 'Content-Type:application/json' -d'
{"content":"美国留给伊拉克的是个烂摊子吗"}
'
输出略
curl -XPOST http://192.168.0.254:30920/index/_create/2?pretty -H 'Content-Type:application/json' -d'
{"content":"公安部:各地校车将享最高路权"}
'
curl -XPOST http://192.168.0.254:30920/index/_create/3?pretty -H 'Content-Type:application/json' -d'
{"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}
'
curl -XPOST http://192.168.0.254:30920/index/_create/4?pretty -H 'Content-Type:application/json' -d'
{"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}
'
curl -XPOST http://192.168.0.254:30920/index/_create/5?pretty -H 'Content-Type:application/json' -d'
{"content":"考验特朗普的时候到了!美盟友率先出手,普京紧跟2记“重拳”"}
'
curl -XPOST http://192.168.0.254:30920/index/_search?pretty -H 'Content-Type:application/json' -d'
{
"query" : { "match" : { "content" : "中国" }},
"highlight" : {
"pre_tags" : ["<tag1>", "<tag2>"],
"post_tags" : ["</tag1>", "</tag2>"],
"fields" : {
"content" : {}
}
}
}
'
输出
{
"took" : 8,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : 0.6650044,
"hits" : [
{
"_index" : "index",
"_type" : "_doc",
"_id" : "3",
"_score" : 0.6650044,
"_source" : {
"content" : "中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"
},
"highlight" : {
"content" : [
"中韩渔警冲突调查:韩警平均每天扣1艘<tag1>中国</tag1>渔船"
]
}
},
{
"_index" : "index",
"_type" : "_doc",
"_id" : "4",
"_score" : 0.6308529,
"_source" : {
"content" : "中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"
},
"highlight" : {
"content" : [
"<tag1>中国</tag1>驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"
]
}
}
]
}
}
必须先 部署好 elasticsearch
官方 kibana docker 说明
https://www.elastic.co/guide/en/kibana/current/docker.html
端口 5601
对外端口:30601
直接执行 根目录
下 create.elk.kibana.start.sh
即可
./create.elk.kibana.start.sh
部署成功后就可以直接用浏览器访问了
http://192.168.0.254:30601
端口:8280 web
端口:8719 api server
对外端口:30280
对外端口:30719
用户名和密码: sentinel/sentinel
如果要自定义用户名和密码,请修改sentinel/cm.yml 中的相关参数
sentinel/logs 日志目录
直接执行 根目录
下 create.s.sentinel.start.sh
即可
./create.s.sentinel.start.sh
直接用浏览器访问
http://192.168.0.254:30280
https://github.com/openzipkin/zipkin
https://github.com/openzipkin/zipkin/tree/master/zipkin-server
使用 elasticsearch 作为数据存储
端口:9411
对外端口:30411
直接执行 根目录
下 create.z.zipkin.start.sh
即可
./create.z.zipkin.start.sh
直接用浏览器访问
http://192.168.0.254:30411
端口:3000
对外端口:30300
直接执行 根目录
下 create.g.grafana.start.sh
即可
./create.g.grafana.start.sh
直接用浏览器访问
http://192.168.0.254:30300
端口:9090
对外端口:30909
prometheus/conf/prometheus-cluster.yaml 配置文件
直接执行 根目录
下 create.p.prometheus.start.sh
即可
./create.p.prometheus.start.sh
直接用浏览器访问
http://192.168.0.254:30909
官方
https://github.com/kubernetes/ingress-nginx/blob/nginx-0.24.1/deploy/mandatory.yaml
版本: 0.24.1
端口:80
端口:443
直接执行 根目录
下 create.i.ingress.start.sh
即可
./create.i.ingress.start.sh
kubectl get pods --namespace=ingress-nginx --watch
或
kubectl get pods --namespace=ingress-nginx
kubectl get ingress
默认已经安装 nginx 测试案例
在 192.168.0.254
服务器中 设置 hosts
echo "192.168.0.254 test.nginx.ingress " >> /etc/hosts
在 192.168.0.254
测试使用
curl http://test.nginx.ingress
在本机使用
curl -v http://192.168.0.254 -H 'host: test.nginx.ingress'
http://www.xuxueli.com/xxl-job/
对外端口:30820
容器内端口 :8080
用户名密码:admin/123456
直接执行 根目录
下 create.job.xxl-job.start.sh
即可
./create.job.xxl-job.start.sh
直接用浏览器访问
http://192.168.0.254:30820/xxl-job-admin
kubectl get pods
官方文档
https://github.com/containous/traefik/
需要高版本的 Kubernetes(k8s) IngressRoute 的 自定义资源类型 才能使用
这里使用的是 k8s v1.16.3 或 更新版本
80 : 直接使用服务器80 端口 提供http 服务
5580 : traefik UI 界面
443 未开启,未配置,如需开启,请自行配置
./create.i.ingress.route.start.sh
kubectl apply -f traefik-rbac-middleware.yaml
kubectl apply -f traefik-deployment.yaml
#以下是案例
kubectl apply -f demo.yaml
kubectl apply -f demo-ingress-route.yaml
curl -x 192.168.0.254:80 http://your.domain.com/notls
返回
Hostname: whoami-bd6b677dc-gkhmh
IP: 127.0.0.1
IP: 10.244.0.191
RemoteAddr: 10.244.0.190:33406
GET /notls HTTP/1.1
Host: your.domain.com
User-Agent: curl/7.64.1
Accept: */*
Accept-Encoding: gzip
X-Forwarded-For: 10.244.0.1
X-Forwarded-Host: your.domain.com
X-Forwarded-Port: 80
X-Forwarded-Proto: http
X-Forwarded-Server: traefik-74dfb956c5-2zdl2
X-Real-Ip: 10.244.0.1
浏览器访问
http://192.168.0.254:5580