Получение IP в переменную env через DNS в kubernetes
Я пытаюсь разобраться с К8, идущими из docker compose
, Я хотел бы настроить мой первый модуль с двумя контейнерами, которые я поместил в реестр. Следующий вопрос:
Как мне получить IP через DNS в переменную окружения, чтобы регистратор мог подключиться к консулу? Смотрите контейнерный регистратор в args consul://consul:8500
, Консул должен быть изменен с env.
{
"kind": "Pod",
"apiVersion": "v1",
"metadata": {
"name": "service-discovery",
"labels": {
"name": "service-discovery"
}
},
"spec": {
"containers": [
{
"name": "consul",
"image": "eu.gcr.io/{myproject}/consul",
"args": [
"-server",
"-bootstrap",
"-advertise=$(MY_POD_IP)"
],
"env": [{
"name": "MY_POD_IP",
"valueFrom": {
"fieldRef": {
"fieldPath": "status.podIP"
}
}
}],
"imagePullPolicy": "IfNotPresent",
"ports": [
{
"containerPort": 8300,
"name": "server"
},
{
"containerPort": 8400,
"name": "alt-port"
},
{
"containerPort": 8500,
"name": "ui-port"
},
{
"containerPort": 53,
"name": "udp-port"
},
{
"containerPort": 8443,
"name": "https-port"
}
]
},
{
"name": "registrator",
"image": "eu.gcr.io/{myproject}/registrator",
"args": [
"-internal",
"-ip=$(MY_POD_IP)",
"consul://consul:8500"
],
"env": [{
"name": "MY_POD_IP",
"valueFrom": {
"fieldRef": {
"fieldPath": "status.podIP"
}
}
}],
"imagePullPolicy": "Always"
}
]
}
}
1 ответ
Предоставление модулей другим приложениям осуществляется с помощью службы в Кубернетесе. После того как вы определили службу, вы можете использовать переменные среды, связанные с этими службами, в ваших модулях. Экспонировать стручок напрямую не очень хорошая идея, так как стручки могут быть перенесены.
Например, при использовании такой службы:
apiVersion: v1
kind: Service
metadata:
name: consul
namespace: kube-system
labels:
name: consul
spec:
ports:
- name: http
port: 8500
- name: rpc
port: 8400
- name: serflan
port: 8301
- name: serfwan
port: 8302
- name: server
port: 8300
- name: consuldns
port: 8600
selector:
app: consul
Связанная переменная среды будет CONSUL_SERVICE_IP
В любом случае, кажется, что другие перестали использовать переменные окружения по некоторым причинам, как описано здесь.