Încerc să expun un serviciu într-un cluster Kubernetes simplu compus dintr-un singur lucrător și un maestru. În special, folosesc descriptorul de mai jos:
apiVersion: apps/v1
fel: Desfăşurare
metadate:
nume: mongodb-deployment
etichete:
aplicație: mongodb
specificație:
replici: 1
selector:
matchLabels:
aplicație: mongodb
șablon:
metadate:
etichete:
aplicație: mongodb
specificație:
containere:
- nume: mongodb
imagine: mongo
porturi:
- containerPort: 27017
---
apiVersion: v1
fel: Serviciu
metadate:
nume: mongodb-service
specificație:
selector:
aplicație: mongodb
porturi:
- protocol: TCP
port: 27017
targetPort: 27017
Apoi încerc să folosesc acest serviciu dintr-un alt pod:
apiVersion: apps/v1
fel: Desfăşurare
metadate:
nume: mongo-express
etichete:
aplicație: mongo-express
specificație:
replici: 1
selector:
matchLabels:
aplicație: mongo-express
șablon:
metadate:
etichete:
aplicație: mongo-express
specificație:
containere:
- nume: mongo-express
imagine: mongo-express
porturi:
- containerPort: 8081
env:
- nume: ME_CONFIG_MONGODB_SERVER
valoare: mongodb-service
Cu toate acestea, ceea ce primesc în celălalt pod mongo-express este că mongodb-service nu poate fi rezolvat. De fapt, dacă învârt un pod și încerc un wget simplu, aceasta este rezultatul:
$ wget http://mongodb-service/ -O-
--2021-06-23 13:31:08-- http://mongodb-service/
Rezolvarea mongodb-service (mongodb-service)... a eșuat: Numele sau serviciul nu se cunoaște.
wget: nu se poate rezolva adresa gazdei „mongodb-service”
În schimb, nslookup mongodb-service funcționează bine:
$ nslookup mongodb-service
Server: 10.96.0.10
Adresa: 10.96.0.10#53
Totuși, dacă încerc cu netcat, obțin asta:
$nc mongodb-service 27017
nc: getaddrinfo pentru gazda „mongodb-service” portul 27017: Numele sau serviciul nu sunt cunoscute
Deci se pare că getaddrinfo este cel care eșuează.
Cum as putea depana problema?