Добавить домен к именам узлов контейнера в Kubernetes StatefulSet

Я создал Kubernetes StatefulSet. В StatefulSet есть три модуля с именами mysql-0 , mysql-1 и mysql-2 , каждый с одним контейнером.

Если я "войдите" в контейнер в pod mysql-1 и введите hostname Я получаю ответ mysql-1 . Однако я хочу , чтобы контейнер думал, что его имя хоста - mysql-1.example.com . Другими словами, принудительно добавляйте домен к имени хоста.

Как мне получить StatefulSet, чтобы это произошло?

1
задан 18 July 2019 в 21:04
1 ответ

Согласно http://man7.org/ linux / man-pages / man7 / hostname.7.html :

Допустимые символы для имен хостов - это буквы ASCII (7) от a до z, цифры от 0 до 9 и дефис (-). Имя хоста не может начинаться с дефиса.

Вышеупомянутое также верно для поддоменов. Вот регулярное выражение, используемое для проверки: [a-z0-9] ([- a-z0-9] * [a-z0-9])?

Однако вы можете использовать имя хоста : и субдомен: поля в определении модуля, как описано здесь

ReplicaSet с указанными выше полями будет выглядеть так:

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: test-replica-set
  labels:
    app: guestbook
    tier: frontend
spec:
  replicas: 3
  selector:
    matchLabels:
      tier: frontend
  template:
    metadata:
      labels:
        tier: frontend
    spec:
      hostname: my-hostname
      subdomain: my-subdomain
      containers:
      - image: busybox:1.28
        command:
          - sleep
          - "3600"
        name: busybox1
        env:
        - name: HOSTNAME
          value: "whathever.domain.com"

Это работает следующим образом:

> kubectl exec test-replica-set-pz2kk -it -- hostname
my-hostname

Вы можете также получить имя домена DNS, добавив параметр -d , или имя FQDN, используя параметр -f . Это приведет к появлению доменных имен K8s для ваших модулей, как описано здесь .

Вы также можете ввести переменную среды в модуль и поместить туда свою информацию, как я сделал в примере выше.

> kubectl exec test-replica-set-pz2kk -it -- sh
/ # echo $HOSTNAME
whathever.domain.com
0
ответ дан 4 December 2019 в 02:49

Теги

Похожие вопросы