【发布时间】:2017-06-22 12:26:16
【问题描述】:
我正在尝试在 GCE 和 K8s 中使用 Consul 和 Registrator。除“注册器”外,一切正常。
这是我的部署:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
creationTimestamp: null
name: consul
spec:
replicas: 1
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
service: consul
spec:
restartPolicy: Always
containers:
- name: consul
image: eu.gcr.io/xxx/consul
ports:
- containerPort: 8300
protocol: TCP
- containerPort: 8400
protocol: TCP
- containerPort: 8500
protocol: TCP
- containerPort: 53
protocol: UDP
env:
- name: MY_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
args:
- -server
- -bootstrap
- -advertise=$(MY_POD_IP)
- name: registrator
args:
- -internal
- -ip=$(MY_POD_IP)
- consul://localhost:8500
env:
- name: MY_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
image: eu.gcr.io/xxx/registrator
volumeMounts:
- mountPath: /tmp/docker.sock
name: registrator-claim0
volumes:
- name: registrator-claim0
persistentVolumeClaim:
claimName: registrator-claim0
status: {}
在 docker-compose 中一切正常,但我对 K8s 和 GCE 还没有完全理解。感谢您的帮助!
【问题讨论】:
-
您能否解释一下为什么您更喜欢 consul/registrator 而不是内置的 Pod 标签/服务标签查询和端点来进行服务发现? Kubernetes 与 Compose 的不同之处在于它提供了集成方式来发现和负载平衡您的部署
-
在我的应用程序中,我使用 consul api 来查询他们必须与之通信的其他应用程序的主机和端口。我知道 K8s 使用 etcd,但我还没有使用过。
-
对于 k8s,您不直接与 etcd 对话,您有一个服务 API(但它是使用 DNS 抽象出来的)。它也是可插拔的,因此您可以使用 Linkerd 或其他任何东西。 consul 也必须有 k8s 控制器(所以你不需要注册器)
-
谢谢。让我了解linkerd。看起来很酷。
标签: kubernetes google-cloud-platform consul registrator