当前位置: 首页 > news >正文

consul 的安装与服务发现

1. helm 安装 consul 到 k8s

安装放在这里了:https://github.com/lianan2/installation/tree/master/consul-helm

consul 的常用命令:

# 查看集群状态
kubectl -n consul exec -it consul-server-0 -- consul operator raft list-peers
kubectl -n consul exec -it consul-server-0 -- consul members# 查看service状态
kubectl -n consul get endpoints consul-server# 测试dns
kubectl -n consul exec -it consul-server-0 -- nslookup consul-server.consul.svc.cluster.local

2. 服务注册

(1) 手动注册一个服务

kubectl -n consul exec consul-server-0 -- consul services register \-id="test-service-10.119.0.210-8080" \-name="test-service" \-address="10.119.0.210" \-port=8080 \-tag="test"

如果要通过 consul api 注册则是用:“github.com/hashicorp/consul/api”,可以看文档:Consul | Golang 中文文档-服务注册与发现

(2) 查看注册的服务信息

# 查看所有
kubectl -n consul exec -it consul-server-0 -- consul catalog services
# 查看某个服务
kubectl -n consul exec -it consul-server-0 -- curl http://127.0.0.1:8500/v1/catalog/service/test-service?pretty

(3) 注销服务

kubectl -n consul exec consul-server-0 -- consul services deregister -id=test-service-10.119.0.210-8080

3. 服务发现

服务注册好之后,就就可以以下地址访问:

<consul-agent>:8500/<service-name>

比如我的服务发现者使用的是 go-zero 框架,通过 consul 服务发现访问 test-service 这个 grpc 服务。

服务的 yaml 配置:

TestRpcConf:Target: consul://consul-server.consul.svc.cluster.local:8500/test-service?wait=3s

同时需要在代码里引用服务发现驱动,比如:

import "google.golang.org/grpc/resolver"

也可以使用自定义的驱动。

4. (可选) 配置 consul dns 

可以将 consul dns 配置到 coredns 中,就可以直接通过 dns 访问服务了。

(1) 查看 consul dns 的 ClusterIP

$ kubectl -n consul get svc consul-dns
NAME         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)         AGE
consul-dns   ClusterIP   10.98.197.1   <none>        53/TCP,53/UDP   109d

记下 consul-dns 的 IP

(2) 配置 kube coredns

# 编辑 coredns 的 configmap
kubectl -n kube-system edit configmap coredns # 在 .:53 的同级添加如下配置consul:53 {errorscache 30forward . 10.98.197.1   # consul-dns 的 IP}# 重启coredns
kubectl -n kube-system rollout restart deployment coredns

(3) 通过 dns 访问

这是就可以直接访问:

<注册的服务名>.service.consul:<服务端口号>

比如:

test-service.service.consul:8080

可以通过这个地址直接访问我的 grpc 服务:

# 进入任意一个 pod 
kubectl -n my-apps exec -it simple-server-548cc95f6f-d945z — sh# 调用 grpc 服务
grpcurl --plaintext test-service.service.consul:8080 list

http://www.dtcms.com/a/274775.html

相关文章:

  • MOSS-TTSD V2版 - 文本到语音对话生成 支持零样本多人语音克隆 一键整合包下载
  • 一文速览DeepSeek-R1的本地部署——可联网、可实现本地知识库问答(附教程)
  • OBB旋转框检测配置与训练全流程(基于 DOTA8 数据集)
  • 第3章 操作臂运动学(笔记总结)
  • Hangfire 调用报错解决方案总结
  • 经典的垃圾收集器!!!
  • day02-数组part02
  • day67—DFS—被围绕的区域(LeetCode-130)
  • 飞算JavaAI 实战笔记
  • Qt中QGraphicsView类应用解析:构建高效2D图形界面的核心技术
  • 迭代器(c++)、智能指针
  • 【C/C++】动态内存分配:从 C++98 裸指针到现代策略
  • PyTorch武侠演义 第一卷:初入江湖 第1章:武林新秀遇Tensor - 张量基础
  • 技术突破与落地应用:端到端 2.0 时代辅助驾驶TOP10 论文深度拆解系列【第九篇(排名不分先后)】
  • 飞书CEO谢欣:挑战巨头,打造AI新时代的Office
  • Rail开发日志_6
  • Python类型注解中的`Optional`:深入理解难点解析(进阶版)
  • EndNote快速入手指南
  • CDN 加速与安全防护:双剑合璧的技术协同
  • manifest.json只有源码视图没其他配置
  • Tomcat问题:启动脚本startup.bat中文乱码问题解决
  • 实现临界区互斥的基本方法
  • MyBatis 进阶:连接池、动态 SQL 与多表关联查询
  • 不可告人的秘密- 1.0版 (字符串加密解密工具)
  • c++26新功能—copyable_function
  • windows内核研究(系统调用 二)
  • vue使用printJS实现批量打印及单个打印 避免空白页
  • Kubernetes 高级调度
  • SSM与SpringBoot面试题
  • Gin 中常见参数解析方法