Полагаю, вы использовали этот урок на Github. Когда я развернул YAML, которые вы предоставили, я столкнулся со многими проблемами, с которыми я не мог связаться. В упомянутом руководстве вы можете найти информацию, что сначала вы должны создать Master Pod
.
. Мы будем использовать общее пространство имен сети для bootstrap нашего кластера Redis. В частности, самому первому стражу нужно знать, как найти хозяина (последующие стражи просто спрашивают первого стража). Поскольку все контейнеры в модуле Pod совместно используют пространство имен сети, сторож может просто посмотреть на $ (hostname -i): 6379.
Затем Service
и позже redis server
. После того, как все установлено, вы просто удалите этот модуль. Быстрые шаги для развертывания можно найти здесь
$ kubectl get svc,pods -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service/kubernetes ClusterIP 10.97.0.1 <none> 443/TCP 21h <none>
service/redis-sentinel ClusterIP 10.97.13.152 <none> 26379/TCP 71m redis-sentinel=true
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod/redis-6kb5p 1/1 Running 0 71m 10.32.2.7 gke-redis-default-pool-bc40bcaa-08sj <none> <none>
pod/redis-sentinel-qf9l8 1/1 Running 0 71m 10.32.1.5 gke-redis-default-pool-bc40bcaa-txmt <none> <none>
pod/redis-sentinel-rnsw6 1/1 Running 0 71m 10.32.2.8 gke-redis-default-pool-bc40bcaa-08sj <none> <none>
pod/redis-sentinel-sbn8f 1/1 Running 0 71m 10.32.1.7 gke-redis-default-pool-bc40bcaa-txmt <none> <none>
pod/redis-sq2g2 1/1 Running 0 71m 10.32.1.6 gke-redis-default-pool-bc40bcaa-txmt <none> <none>
pod/redis-wv5q2 1/1 Running 0 71m 10.32.1.8 gke-redis-default-pool-bc40bcaa-txmt <none> <none>
$ kubectl get ep
NAME ENDPOINTS AGE
redis-sentinel 10.32.1.5:26379,10.32.1.7:26379,10.32.2.8:26379 72m
Кроме того, вы также можете проверить это руководство, используя Redis 3.x.
Как подключиться
Чтобы запустить Redis container
, выполните команду
kubectl exec -ti <pod-name> -- redis-cli
$ kubectl exec -ti redis-6kb5p redis-cli
127.0.0.1:6379> info
# Server
redis_version:2.8.19
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:f308ca06a4d63700
Чтобы подключиться к redis
с помощью service
, необходимо ввести модуль.
$ kubectl exec -ti redis-sentinel-qf9l8 /bin/bash
Если вы проверите env
внутри этого контейнера, вы сможете найти некоторую конфигурацию kubernetes.
root@redis-sentinel-qf9l8:/data# env
HOSTNAME=redis-sentinel-qf9l8
REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-2.8.19.tar.gz
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT=tcp://10.97.0.1:443
TERM=xterm
KUBERNETES_SERVICE_PORT=443
KUBERNETES_SERVICE_HOST=10.97.0.1
REDIS_SENTINEL_PORT_26379_TCP_ADDR=10.97.13.152
REDIS_SENTINEL_SERVICE_HOST=10.97.13.152
Теперь на основе скрипта из здесь
master = $ (redis-cli -h $ {REDIS_SENTINEL_SERVICE_HOST} -p $ {REDIS_SENTINEL_SERVICE_PORT}
Вы можете подключиться к сервису с помощью Kubernetes envs.
root@redis-sentinel-qf9l8:/data# redis-cli -h ${REDIS_SENTINEL_SERVICE_HOST} -p ${REDIS_SENTINEL_SERVICE_PORT}
10.97.13.152:26379>
Или используя спецификацию c информация $ redis-cli -h <service-name> -p <service-port>
root@redis-sentinel-qf9l8:/data# redis-cli -h redis-sentinel -p 26379
redis-sentinel:26379>
В качестве дополнительной информации.
Вы не можете пропинговать service
с ClusterIP
, так как его виртуальный адрес управляется kube-proxy
демон. Более подробную информацию можно найти в официальных документах .