Я пытаюсь использовать Consul
с Registrator
в GCE & K8s. Все запускается отлично, кроме «Регистратора».Получение консула и регистратора для работы в Кубернете
Вот мое развертывание:
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: {}
Вот бревенчатые выходы: Консул: Registrator:
В докер-компоновать все работает отлично, но я не получил моя голова полна вокруг K8s и GCE. Спасибо за помощь!
Не могли бы вы объяснить, почему вы предпочитаете консула/регистратора вместо встроенных запросов или конечных точек Lab Label/Service Label для обнаружения сервисов? Kubernetes отличается от Compose тем, что он предоставляет интегрированные способы обнаружения и балансировки ваших развертываний. –
В моих приложениях я использую consul api для запроса хостов и портов других приложений, с которыми им нужно общаться. Я знаю, что K8s использует etcd, но я еще не использовал его. – Tino
с k8s, с которым вы не разговариваете напрямую, у вас есть API-интерфейс служб (но он абстрагируется с использованием DNS). Он также подключается, поэтому вы можете использовать Linkerd или что-то еще. Также должны быть контроллеры k8s для консула (так что вам не нужен регистратор) –