Мне нужно развернуть web (angularjs), API (node.js), Redis. Тем не менее, я получаю ошибку при достижении Redis в API (node.js) с помощью kubernetes.
[ioredis] Unhandled error event: Error: getaddrinfo ENOTFOUND redis redis:6379
at errnoException (dns.js:50:10)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:92:26)
Я пробовал множественную конфигурацию, но ничего не получалось.
const redis = new Redis('redis://redis:6379');
const redis = new Redis({ port: 6379, host: 'redis', connectTimeout: 10000 });
const client = redis.createClient(6379,"redis");
Кроме того, поскольку на стандартном образе redis отсутствует redis.conf, я добавил redis.conf и связал 0.0.0.0. в нем защищенный режим да. Я все еще получаю сообщение об ошибке.
Я поместил все контейнеры в одно развертывание, т.е. web, api, redis и создал службу, используя тип: балансировщик нагрузки. Я могу получить доступ к приложению, но получаю ошибку [ioredis].
Kubernetes version: 1.15.7
Cloud being used: (aws)
Installation method: kops
Host OS: ubuntu
Любые идеи и предложения по устранению ошибки redis. Какова лучшая стратегия развертывания? т.е. как веб, api, redis распространяться в k8s?
развертывание yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-deployment
labels:
app: app1
env: prod
spec:
selector:
matchLabels:
app: app1
env: prod
replicas: 3
template:
metadata:
labels:
app: app1
env: prod
spec:
containers:
- name: web-angular-nginx
image: xxxx.dkr.ecr.us-east-1.amazonaws.com/web
ports:
- containerPort: 8080
- name: api-nodejs
image: xxxx.dkr.ecr.us-east-1.amazonaws.com/api
ports:
- containerPort: 7000
- name: xxxx.dkr.ecr.us-east-1.amazonaws.com/redis
image: redis
ports:
- containerPort: 6379
Служба yaml
apiVersion: v1
kind: Service
metadata:
name: app-svc
labels:
app: app1
spec:
ports:
- port: 80
nodePort: 30001
protocol: TCP
selector:
app: app1
env: prod
type: LoadBalancer
Спасибо