当前位置: 首页 > 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.lryc.cn/news/585053.html

相关文章:

  • Python PDFplumber详解:从入门到精通的PDF处理指南
  • Java 深入解析:JVM对象创建与内存机制全景图
  • mysql中的自增ID
  • k8s-高级调度(一)
  • cefSharp.WinForms.NETCore 138.xx (cef138/Chromium 138.0.7204.97) 升级测试体验
  • 《从依赖纠缠到接口协作:ASP.NET Core注入式开发指南》
  • tcp/quic 的滑动窗口
  • 基于ASP.NET+SQL Server实现(Web)企业进销存管理系统
  • 虹科分享 | 告别实体钥匙!数字钥匙正在重构你的用车体验
  • 大模型及agent开发6 OpenAI Assistant API 高阶应用 - 流式输出功能
  • 【Kubernetes】Ubuntu 24.04 安装 K3s v1.33.2+k3s
  • 上半年净利预增66%-97%,高增长的赛力斯该咋看?
  • windows配置python环境
  • 【面板数据】省级泰尔指数及城乡收入差距测算(1990-2024年)
  • MySQL 的语言体系
  • Tomasulo算法是什么?
  • PCB 层压板各向异性:对高级过孔建模的影响
  • AMTS AHTE | 具身智能成制造升级新引擎 灵途科技助力更强感知
  • 1965–2022年中国大陆高分辨率分部门用水数据集,包含:灌溉用水、工业制造用水、生活用水和火电冷却
  • MDSE模型驱动的软件工程和敏捷开发相结合的案例
  • 淘宝拍立淘接口技术解析:从原理到实践‌
  • 1.1.2 运算符与表达式——AI教你学Django
  • [WinForms] 如何为 .NET Framework 4.8 窗体程序添加自定义图标
  • 多租户架构下的多线程处理实践指南
  • 【网络】Linux 内核优化实战 - net.netfilter.nf_conntrack_max
  • 【网络】Linux 内核优化实战 - net.netfilter.nf_conntrack_buckets
  • 番外-linux系统运行.net framework 4.0的项目
  • 如何在报表开发工具FastReport .NET 中构建和连接 Firebird 插件?
  • 基于ASP.NET MVC+SQLite开发的一套(Web)图书管理系统
  • 游戏开发日记