#kubernetes #redis
#kubernetes #redis
Вопрос:
Я запустил модуль redis и создал сервис типа типа NodePort. Я вошел в модуль flask и использовал nslookup, чтобы найти redis.default, показанный ниже.
/ # nslookup redis.default
Server: 10.96.0.10
Address: 10.96.0.10#53
Name: redis.default.svc.cluster.local
Address: 10.98.129.45
/ # python3
Python 3.8.7 (default, Dec 26 2020, 08:45:55)
[GCC 10.2.1 20201203] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import redis
>>> redis_db = redis.StrictRedis(host="redis.default", port=6379, db=0)
>>> redis_db.ping()
результаты позже:
Traceback (most recent call last):
File "/usr/lib/python3.8/site-packages/redis/connection.py", line 559, in connect
sock = self._connect()
File "/usr/lib/python3.8/site-packages/redis/connection.py", line 615, in _connect
raise err
File "/usr/lib/python3.8/site-packages/redis/connection.py", line 603, in _connect
sock.connect(socket_address)
TimeoutError: [Errno 110] Operation timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.8/site-packages/redis/client.py", line 1378, in ping
return self.execute_command('PING')
File "/usr/lib/python3.8/site-packages/redis/client.py", line 898, in execute_command
conn = self.connection or pool.get_connection(command_name, **options)
File "/usr/lib/python3.8/site-packages/redis/connection.py", line 1192, in get_connection
connection.connect()
File "/usr/lib/python3.8/site-packages/redis/connection.py", line 563, in connect
raise ConnectionError(self._error_message(e))
redis.exceptions.ConnectionError: Error 110 connecting to redis.default:6379. Operation timed out.
но когда я пытаюсь выполнить пинг с терминала python внутри модуля flask, я не получаю никакого результата.
однако из-за пределов модуля я могу ввести запущенный redis с помощью redis-cli
# kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
flask NodePort 10.107.57.184 <none> 5000:32071/TCP 37m
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 100m
redis NodePort 10.98.129.45 <none> 6379:30667/TCP 8m14s
root@rockpix:/home/skumar/kfd-flask# redis-cli -h 192.168.5.165 -p 30667
192.168.5.165:30667> ping
PONG
192.168.5.165:30667>
где 192.168.5.165 — это модуль, на котором работает модуль.
Я также проверил внутри модуля redis :
# kubectl exec -it redis-85df5dd845-28xvk -- /bin/sh
/data # netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
/data # netstat -ltnp | grep redis
/data # netstat -ltnp | grep 6379
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN -
tcp 0 0 :::6379 :::* LISTEN -
the port number is correct.
Комментарии:
1. это другой вопрос, задающий разницу между IP-адресом модуля и IP-адресом кластера?
2.
selector:
Вероятно, это сделает подделкаService
, но поскольку вы практически не предоставили информации о своих объектах kubernetes, это всего лишь предположение3. Вы можете показать вывод
kubectl get ep
. Кстати, это192.168.5.165
IP-адрес узла?4. Да, узел запущен
5.вот результат kubectl get ep:
NAME ENDPOINTS AGE
flask 13h
kubernetes 192.168.5.164:6443 14h
redis 192.168.42.130:6379 11h