Рубрики
Uncategorized

Найти имя хоста DNS для обслуживания Kubernetes

Кубернаны очень сложно! Если кто-то говорит, что это легко, не верь! Но мы можем узнать! 😎 там … Теги с Кубератусами, дежопами, микросервисами, обслуживаемыми.

Кубернаны очень сложно! Если кто-то говорит, что это легко, не верь! Но мы можем узнать! 😎

Там есть небольшой трюк, чтобы найти внутреннюю DNS для обслуживания.

Я создал услугу для базы данных кассандры, используя следующие YAML:

apiVersion: v1
kind: Pod
metadata:
  name: my-service
  labels:
    app: my-service
spec:
  containers:
  - name: my-service
    image: my-service
---
apiVersion: v1
kind: Service
metadata:
    name: my-service
spec:
  type: NodePort
  ports:
    - port: 8080
      targetPort: 8080
      nodePort: 30080
      protocol: TCP
  selector:
    app: my-service
---
apiVersion: v1
kind: Pod
metadata:
  name: cassandra-db
  labels:
    app: cassandra-db
spec:
  containers:
  - name: cassandra-db
    image: cassandra:3
---
apiVersion: v1
kind: Service
metadata:
  name: cassandra-db
spec:
  selector:
    app: cassandra-db
  type: ClusterIP
  ports:
    - port: TCP
      port: 7000

Поэтому у меня есть вопрос? Как я могу узнать, где я могу найти свою базу данных? Я использую кластерип, поэтому, если я перераспределите свою базу данных, она может измениться.

Таким образом, первый подход — не напрямую использовать свое имя хоста в базе данных/порт. Я должен получить это думать Переменные среды Отказ

Я должен найти Кассандра-БД Сервисное имя хоста.

Я должен создать POD в среде, чтобы получить доступ к топологии окружающей среды:

apiVersion: v1
kind: Pod
metadata:
  name: dnsutils
  namespace: default
spec:
  containers:
  - name: dnsutils
    image: gcr.io/kubernetes-e2e-test-images/dnsutils:1.3
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
  restartPolicy: Always

Примените созданный файл YAML:

$ kubectl apply -f dnsutils.yaml
pod/dnsutils created

Тогда я могу легко найти DNS с nslookup на Днсутилс :

$ kubectl exec -ti dnsutils -- nslookup cassandra-db
Server:         10.96.0.10
Address:        10.96.0.10#53

Name:   cassandra-db.default.svc.cluster.local
Address: 10.98.98.138

Легко?

Теперь, когда мне не нужен Днсутилс Струйте больше, я могу удалить его:

$ kubectl delete pod dnsutils
pod "dnsutils" deleted

Теперь мы можем использовать найденное значение в качестве переменной окружающей среды:

apiVersion: v1
kind: Pod
metadata:
  name: my-service
  labels:
    app: my-service
spec:
  containers:
  - name: my-service
    image: my-service
    env:
    - name: DATABASE_HOST
      value: "cassandra-db.default.svc.cluster.local"
    - name: DATABASE_PORT
      value: "7000"

Использование Kubernetes непросто, но мы можем узнать. Здесь мы можем найти простой способ найти, как мы можем получить доступ к услугам внутренних kubernetes dns.

Оригинал: «https://dev.to/vepo/finding-dns-for-kubernetes-service-3p0e»