Я настроил простую службу CisterIP для повторного доступа, чтобы доступ к ней выполнялся службой php LoadBalancer внутри Кластера. Журнал php показывает ошибку тайм-аута соединения. Сервис Redis недоступен.
'production'.ERROR: Operation timed out {"exception":"[object] (RedisException(code: 0):
Operation timed out at /var/www/html/vendor/laravel/framework/src/Illuminate/Redis
/html/vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php(109):
Redis->connect('redis-svc', '6379', 0, '', 0, 0)
Мой сервис redis довольно прост, поэтому я не знаю, что пошло не так:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
io.kompose.service: redis
name: redis
spec:
replicas: 1
strategy: {}
template:
metadata:
labels:
io.kompose.service: redis
spec:
containers:
- image: redis:alpine
name: redis
resources: {}
ports:
- containerPort: 6379
restartPolicy: Always
status: {}
---
kind: Service
apiVersion: v1
metadata:
name: redis-svc
spec:
selector:
app: redis
ports:
- protocol: TCP
port: 6379
targetPort: 6379
type: ClusterIP
Я проверяю, запущен ли redis-svc, так почему другой сервис не может получить к нему доступ
kubectl get service redis-svc git:k8s*
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
redis-svc ClusterIP 10.101.164.225 <none> 6379/TCP 22m
Этот SO kubernetes не может пропинговать другой сервис сказал, что ping не работает с IP-адресом кластера сервиса (действительно), как я могу проверить, можно ли получить доступ к redis-svc или нет?
---- обновление ----
Мой первый вопрос был глупой ошибкой, но я до сих пор не знаю, как мне проверить, можно ли получить доступ к службе (по ее названию). Например, я изменил имя службы, чтобы оно совпадало с именем развертывания, и обнаружил, что php снова не удалось получить доступ к redis.
kubectl get endpoints
сейчас не помогло.
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: redis
...
status: {}
---
kind: Service
apiVersion: v1
metadata:
name: redis
...
Мой php - это еще одна служба, в которой env устанавливает имя службы Redis
spec:
containers:
- env:
- name: REDIS_HOST # the php code access this variable
value: redis-svc #changed to "redis" when redis service name changed to "redis"
----- обновление 2 ------
Причиной, по которой я могу установить в качестве имени моей службы redis значение "redis", является b / c " kubelet добавляет набор переменных среды для каждой активной службы ", поэтому с именем "redis" будет быть REDIS_PORT=tcp://10.101.210.23:6379
, который переписывает мой собственный REDIS_PORT=6379
Но мой PHP просто ожидал, что значение REDIS_PORT будет 6379