我正在尝试通过 Kubernetes、helm chart、https: //www.consul.io/docs/k8s/helm 进行 Consul 设置
基于我的Kubernetes前知识:服务,通过Consul Agent使用Consul访问,在每台主机上运行并监听主机IP
现在,我通过 Helm chart 部署到 Kubernetes 集群。首先误解了这个设置中的术语,Consul Agent vs Client?我想是一样的
现在,设置:
Helm 图表配置(Terraform 片段),没有特定于客户端/代理及其服务:
global:
name: "consul"
datacenter: "${var.consul_config.datacenter}"
server:
storage: "${var.consul_config.storage}"
connect: false
syncCatalog:
enabled: true
default: true
k8sAllowNamespaces: ['*']
k8sDenyNamespaces: [${join(",", var.consul_config.k8sDenyNamespaces)}]
Pod、客户端/代理是 DaemonSet,不在主机网络模式下
kubectl get pods
NAME READY STATUS RESTARTS AGE
consul-8l587 1/1 Running 0 11h
consul-cfd8z 1/1 Running 0 11h
consul-server-0 1/1 Running 0 11h
consul-server-1 1/1 Running 0 11h
consul-server-2 1/1 Running 0 11h
consul-sync-catalog-8b688ff9b-klqrv 1/1 Running 0 11h
consul-vrmtp 1/1 Running 0 11h
服务
kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
consul ExternalName <none> consul.service.consul <none> 11h
consul-dns ClusterIP 172.20.124.238 <none> 53/TCP,53/UDP 11h
consul-server ClusterIP None <none> 8500/TCP,8301/TCP,8301/UDP,8302/TCP,8302/UDP,8300/TCP,8600/TCP,8600/UDP 11h
consul-ui ClusterIP 172.20.131.29 <none> 80/TCP 11h
问题 1服务在哪里,针对客户端(代理)pod,而不是服务器的 pod?我在掌舵图中错过了吗?
我的计划是,虽然我不打算使用主机(Kubernetes 节点)网络:
- 查找客户/代理服务或自己制作。因此,它将被 Consul 的用户使用。例如,我将为 Consul 模板的 Consul 模板 init pod 指定这个服务地址。在配置消费应用程序中
kubectl get pods --selector app=consul,component=client,release=consul
consul-8l587 1/1 Running 0 11h
consul-cfd8z 1/1 Running 0 11h
consul-vrmtp 1/1 Running 0 11h
- 可选:将在代理服务中添加一个 topologyKeys,因此每个消费者不会跨越主机边界
问题2是正确的方法吗?或者对于 Consul Kubernetes 部署来说是不同的