我有一个在本地运行的minikube集群(v0.17.1),有两个部署:一个是Redis实例,另一个是试图连接到Redis实例的自定义应用程序。我的配置或多或少从官方文档和Kubernetes guestbook example复制/粘贴。Kubernetes不提供服务
服务定义和部署:
apiVersion: v1
kind: Service
metadata:
name: poller-redis
labels:
app: poller-redis
tier: backend
role: database
target: poller
spec:
selector:
app: poller
tier: backend
role: service
ports:
- port: 6379
targetPort: 6379
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: poller-redis
spec:
replicas: 1
template:
metadata:
labels:
app: poller-redis
tier: backend
role: database
target: poller
spec:
containers:
- name: poller-redis
image: gcr.io/jmen-1266/jmen-redis:a67b5f4bfd8ea8441ed66a8fcb6596f276017a1c
ports:
- containerPort: 6379
env:
- name: GET_HOSTS_FROM
value: dns
imagePullSecrets:
- name: gcr-json-key
应用程序部署:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: poller
spec:
replicas: 1
template:
metadata:
labels:
app: poller
tier: backend
role: service
spec:
containers:
- name: poller
image: gcr.io/jmen-1266/poller:a96a452292e894e46339309cc024cac67647cc25
imagePullPolicy: Always
imagePullSecrets:
- name: gcr-json-key
相关的(我希望)Kubernetes信息:
$ kubectl get services
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.0.0.1 <none> 443/TCP 24d
poller-redis 10.0.0.137 <none> 6379/TCP 20d
$ kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
poller 1 1 1 1 12d
poller-redis 1 1 1 1 4d
$ kubectl get endpoints
NAME ENDPOINTS AGE
kubernetes 10.0.2.15:8443 24d
poller-redis 172.17.0.7:6379 20d
里面的poller
吊舱(自定义应用程序),我为Redis创建了环境变量:
# env | grep REDIS
POLLER_REDIS_SERVICE_HOST=10.0.0.137
POLLER_REDIS_SERVICE_PORT=6379
POLLER_REDIS_PORT=tcp://10.0.0.137:6379
POLLER_REDIS_PORT_6379_TCP_ADDR=10.0.0.137
POLLER_REDIS_PORT_6379_TCP_PORT=6379
POLLER_REDIS_PORT_6379_TCP_PROTO=tcp
POLLER_REDIS_PORT_6379_TCP=tcp://10.0.0.137:6379
但是,如果我尝试连接到该端口,我不能。做类似:
nc -vz poller-redis 6379
失败。
我注意到,我无法通过它的ClusterIP访问Redis服务,但我可以通过运行Redis的pod的IP。
有什么想法吗?
如何设置你的redis?你是否正确设置了身份验证?你有没有尝试使用Redis客户端连接?在尝试重现您的问题时,我发现'nc'不起作用,但redis客户端可以正常工作,但返回'(错误)NOAUTH身份验证要求。“ – Rod
您是否已经部署了集群网络?像织网,法兰绒或类似的东西?你可以包含输出'kubectl get pod,svc,ep,deploy,rc --all-namespaces'吗?如果可以从另一个容器连接'10.0.0.137:6379'(不使用名称),你还可以测试吗? –