Кубернаны очень сложно! Если кто-то говорит, что это легко, не верь! Но мы можем узнать! 😎
Там есть небольшой трюк, чтобы найти внутреннюю 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»