У меня есть кластер kubernetes на GCP, в котором у меня есть служба эластичного поиска.
У меня есть стручок elasticsearch-0
, на котором запущен контейнер с док-станцией эластичного поиска.
~ ❯❯❯ kubectl describe pod elasticsearch-0
Name: elasticsearch-0
Namespace: default
Node: gke-jaeger-persistent-st-default-pool-xxxxx-phvx/10.166.0.4
Start Time: Mon, 07 Jan 2019 14:21:19 +0100
Labels: app=jaeger-elasticsearch
controller-revision-hash=elasticsearch-8684f69799
jaeger-infra=elasticsearch-replica
statefulset.kubernetes.io/pod-name=elasticsearch-0
Annotations: kubernetes.io/limit-ranger: LimitRanger plugin set: cpu request for container elasticsearch
Status: Running
IP: 10.36.2.27
Controlled By: StatefulSet/elasticsearch
Containers:
elasticsearch:
Container ID: docker://5212b8c223401355bd29a5639caea5097074a8a8101ceb10300f76465e4a6536
Image: docker.elastic.co/elasticsearch/elasticsearch:5.6.0
Image ID: docker-pullable://docker.elastic.co/elasticsearch/elasticsearch@sha256:f95e7d4256197a9bb866b166d9ad37963dc7c5764d6ae6400e551f4987a659d7
Port: <none>
Host Port: <none>
Command:
И мне нужен доступ к узлу, который управляет моим модулем, чтобы получить идентификатор контейнера моего контейнераasticsearch.
Я получаю имя своих экземпляров с помощью gcloud compute instances list
, и вхожу с помощью команды gcloud compute ssh <node-name> --zone=<zone-name>
, и я вхожу в док-контейнер эластичного поиска с правами root docker exec -it -u root containerID bash
(после этих шагов )
Мне нужно выполнить это, потому что мне нужно добавить новый mountPath с именем /jaeger-data
, чтобы связать его с постоянным утверждением тома, которое я подготовил.
Я вхожу в свой док-контейнер и создаю mountPath
[root@elasticsearch-0 elasticsearch]# mkdir /jaeger-data
[root@elasticsearch-0 elasticsearch]#
Но я вижу, что я постоянно отключаюсь от моего док-контейнера, потому что containerID
постоянно меняется.
Каждый раз, когда я вхожу в свой узел, чтобы получить команду containerID
с docker ps -a
, эта containerID
отличается, и при входе в новый контейнер, использующий новый идентификатор, мой /jaeger-data
mountPath не обнаруживается, это означает, что нет, может быть потому, что я вхожу в новый контейнер ...
В чем причина того, что мой containerID постоянно меняется?
Связано ли это с узлом Kubernetes, в котором есть мой модуль, в котором находится мой док-контейнер эластичный поиск?
Связан с Сервисом Ситуация?
Стручки Кубернетеса смертны. Они рождаются, и когда они умирают, они не воскресают. В частности, наборы реплик создают и уничтожают блоки динамически (например, при масштабировании или расширении). В то время как каждый модуль получает свой собственный IP-адрес, даже на эти IP-адреса нельзя полагаться как стабильные с течением времени. Это приводит к проблеме: если некоторый набор модулей (давайте назовем их бэкэндами) предоставляет функциональность другим модулям (давайте назовем их внешними интерфейсами) внутри кластера Kubernetes, как эти внешние интерфейсы узнают и отслеживают, какие внутренние компоненты находятся в этом наборе?
Ввод услуг.
Как мне разрешить эту ситуацию?
Мне нужно создать mountPath, чтобы связать его с моей elasticsearch-0
конфигурацией pod